From 80b5ba66f23282f62e38eee8795c6fe12506fb12 Mon Sep 17 00:00:00 2001 From: Konstantin Baierer <unixprog@gmail.com> Date: Thu, 24 Oct 2019 20:42:03 +0200 Subject: [PATCH] webapp: filtering projects, WIP modals --- webapp/dist/build.js | 386 ++++++++++++++--------------- webapp/src/App.vue | 23 +- webapp/src/OcrdProjectList.vue | 32 ++- webapp/src/OcrdProjectListItem.vue | 8 +- webapp/src/main.js | 2 +- 5 files changed, 253 insertions(+), 198 deletions(-) diff --git a/webapp/dist/build.js b/webapp/dist/build.js index a0c062c..138013c 100644 --- a/webapp/dist/build.js +++ b/webapp/dist/build.js @@ -60,7 +60,7 @@ /******/ __webpack_require__.p = "/dist/"; /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 223); +/******/ return __webpack_require__(__webpack_require__.s = 225); /******/ }) /************************************************************************/ /******/ ([ @@ -96,7 +96,7 @@ eval("/* unused harmony export checkMultipleVue */\n/* harmony export (binding) /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export getConfig */\n/* unused harmony export getConfigValue */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return getComponentConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return getBreakpoints; });\n/* unused harmony export getBreakpointsCached */\n/* unused harmony export getBreakpointsUp */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return getBreakpointsUpCached; });\n/* unused harmony export getBreakpointsDown */\n/* unused harmony export getBreakpointsDownCached */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__clone_deep__ = __webpack_require__(52);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__get__ = __webpack_require__(33);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__memoize__ = __webpack_require__(53);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__config_defaults__ = __webpack_require__(99);\n\n\n\n\n // --- Constants ---\n\nvar PROP_NAME = '$bvConfig';\nvar VueProto = __WEBPACK_IMPORTED_MODULE_0__vue__[\"a\" /* default */].prototype; // --- Getter methods ---\n// All methods return a deep clone (immutable) copy of the config\n// value, to prevent mutation of the user config object.\n// Get the current user config. For testing purposes only\n\nvar getConfig = function getConfig() {\n return VueProto[PROP_NAME] ? VueProto[PROP_NAME].getConfig() : {};\n}; // Method to grab a config value based on a dotted/array notation key\n\nvar getConfigValue = function getConfigValue(key) {\n return VueProto[PROP_NAME] ? VueProto[PROP_NAME].getConfigValue(key) : Object(__WEBPACK_IMPORTED_MODULE_1__clone_deep__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_2__get__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_4__config_defaults__[\"a\" /* default */], key));\n}; // Method to grab a config value for a particular component\n\nvar getComponentConfig = function getComponentConfig(cmpName) {\n var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n // Return the particular config value for key for if specified,\n // otherwise we return the full config (or an empty object if not found)\n return key ? getConfigValue(\"\".concat(cmpName, \".\").concat(key)) : getConfigValue(cmpName) || {};\n}; // Convenience method for getting all breakpoint names\n\nvar getBreakpoints = function getBreakpoints() {\n return getConfigValue('breakpoints');\n}; // Private function for caching / locking-in breakpoint names\n\nvar _getBreakpointsCached = Object(__WEBPACK_IMPORTED_MODULE_3__memoize__[\"a\" /* default */])(function () {\n return getBreakpoints();\n}); // Convenience method for getting all breakpoint names.\n// Caches the results after first access.\n\n\nvar getBreakpointsCached = function getBreakpointsCached() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__clone_deep__[\"a\" /* default */])(_getBreakpointsCached());\n}; // Convenience method for getting breakpoints with\n// the smallest breakpoint set as ''.\n// Useful for components that create breakpoint specific props.\n\nvar getBreakpointsUp = function getBreakpointsUp() {\n var breakpoints = getBreakpoints();\n breakpoints[0] = '';\n return breakpoints;\n}; // Convenience method for getting breakpoints with\n// the smallest breakpoint set as ''.\n// Useful for components that create breakpoint specific props.\n// Caches the results after first access.\n\nvar getBreakpointsUpCached = Object(__WEBPACK_IMPORTED_MODULE_3__memoize__[\"a\" /* default */])(function () {\n var breakpoints = getBreakpointsCached();\n breakpoints[0] = '';\n return breakpoints;\n}); // Convenience method for getting breakpoints with\n// the largest breakpoint set as ''.\n// Useful for components that create breakpoint specific props.\n\nvar getBreakpointsDown = function getBreakpointsDown() {\n var breakpoints = getBreakpoints();\n breakpoints[breakpoints.length - 1] = '';\n return breakpoints;\n}; // Convenience method for getting breakpoints with\n// the largest breakpoint set as ''.\n// Useful for components that create breakpoint specific props.\n// Caches the results after first access.\n\n/* istanbul ignore next: we don't use this method anywhere, yet */\n\nvar getBreakpointsDownCached = function getBreakpointsDownCached()\n/* istanbul ignore next */\n{\n var breakpoints = getBreakpointsCached();\n breakpoints[breakpoints.length - 1] = '';\n return breakpoints;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvY29uZmlnLmpzPzUwNGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF3QjtBQUNhO0FBQ2I7QUFDUTtBQUNTOztBQUV6QztBQUNBLGVBQWUscURBQUcsV0FBVztBQUM3QjtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLEVBQUU7O0FBRUs7QUFDUCx5RUFBeUUsb0VBQVMsQ0FBQyw2REFBRyxDQUFDLGlFQUFRO0FBQy9GLEVBQUU7O0FBRUs7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUs7QUFDUDtBQUNBLEVBQUU7O0FBRUYsNEJBQTRCLGlFQUFPO0FBQ25DO0FBQ0EsQ0FBQyxFQUFFO0FBQ0g7OztBQUdPO0FBQ1AsU0FBUyxvRUFBUztBQUNsQixFQUFFO0FBQ0Y7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7O0FBRU8sNkJBQTZCLGlFQUFPO0FBQzNDO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRTtBQUNIO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBOztBQUVBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJy4vdnVlJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnLi9jbG9uZS1kZWVwJztcbmltcG9ydCBnZXQgZnJvbSAnLi9nZXQnO1xuaW1wb3J0IG1lbW9pemUgZnJvbSAnLi9tZW1vaXplJztcbmltcG9ydCBERUZBVUxUUyBmcm9tICcuL2NvbmZpZy1kZWZhdWx0cyc7IC8vIC0tLSBDb25zdGFudHMgLS0tXG5cbnZhciBQUk9QX05BTUUgPSAnJGJ2Q29uZmlnJztcbnZhciBWdWVQcm90byA9IFZ1ZS5wcm90b3R5cGU7IC8vIC0tLSBHZXR0ZXIgbWV0aG9kcyAtLS1cbi8vIEFsbCBtZXRob2RzIHJldHVybiBhIGRlZXAgY2xvbmUgKGltbXV0YWJsZSkgY29weSBvZiB0aGUgY29uZmlnXG4vLyB2YWx1ZSwgdG8gcHJldmVudCBtdXRhdGlvbiBvZiB0aGUgdXNlciBjb25maWcgb2JqZWN0LlxuLy8gR2V0IHRoZSBjdXJyZW50IHVzZXIgY29uZmlnLiBGb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5XG5cbmV4cG9ydCB2YXIgZ2V0Q29uZmlnID0gZnVuY3Rpb24gZ2V0Q29uZmlnKCkge1xuICByZXR1cm4gVnVlUHJvdG9bUFJPUF9OQU1FXSA/IFZ1ZVByb3RvW1BST1BfTkFNRV0uZ2V0Q29uZmlnKCkgOiB7fTtcbn07IC8vIE1ldGhvZCB0byBncmFiIGEgY29uZmlnIHZhbHVlIGJhc2VkIG9uIGEgZG90dGVkL2FycmF5IG5vdGF0aW9uIGtleVxuXG5leHBvcnQgdmFyIGdldENvbmZpZ1ZhbHVlID0gZnVuY3Rpb24gZ2V0Q29uZmlnVmFsdWUoa2V5KSB7XG4gIHJldHVybiBWdWVQcm90b1tQUk9QX05BTUVdID8gVnVlUHJvdG9bUFJPUF9OQU1FXS5nZXRDb25maWdWYWx1ZShrZXkpIDogY2xvbmVEZWVwKGdldChERUZBVUxUUywga2V5KSk7XG59OyAvLyBNZXRob2QgdG8gZ3JhYiBhIGNvbmZpZyB2YWx1ZSBmb3IgYSBwYXJ0aWN1bGFyIGNvbXBvbmVudFxuXG5leHBvcnQgdmFyIGdldENvbXBvbmVudENvbmZpZyA9IGZ1bmN0aW9uIGdldENvbXBvbmVudENvbmZpZyhjbXBOYW1lKSB7XG4gIHZhciBrZXkgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IG51bGw7XG4gIC8vIFJldHVybiB0aGUgcGFydGljdWxhciBjb25maWcgdmFsdWUgZm9yIGtleSBmb3IgaWYgc3BlY2lmaWVkLFxuICAvLyBvdGhlcndpc2Ugd2UgcmV0dXJuIHRoZSBmdWxsIGNvbmZpZyAob3IgYW4gZW1wdHkgb2JqZWN0IGlmIG5vdCBmb3VuZClcbiAgcmV0dXJuIGtleSA/IGdldENvbmZpZ1ZhbHVlKFwiXCIuY29uY2F0KGNtcE5hbWUsIFwiLlwiKS5jb25jYXQoa2V5KSkgOiBnZXRDb25maWdWYWx1ZShjbXBOYW1lKSB8fCB7fTtcbn07IC8vIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgZ2V0dGluZyBhbGwgYnJlYWtwb2ludCBuYW1lc1xuXG5leHBvcnQgdmFyIGdldEJyZWFrcG9pbnRzID0gZnVuY3Rpb24gZ2V0QnJlYWtwb2ludHMoKSB7XG4gIHJldHVybiBnZXRDb25maWdWYWx1ZSgnYnJlYWtwb2ludHMnKTtcbn07IC8vIFByaXZhdGUgZnVuY3Rpb24gZm9yIGNhY2hpbmcgLyBsb2NraW5nLWluIGJyZWFrcG9pbnQgbmFtZXNcblxudmFyIF9nZXRCcmVha3BvaW50c0NhY2hlZCA9IG1lbW9pemUoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZ2V0QnJlYWtwb2ludHMoKTtcbn0pOyAvLyBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGdldHRpbmcgYWxsIGJyZWFrcG9pbnQgbmFtZXMuXG4vLyBDYWNoZXMgdGhlIHJlc3VsdHMgYWZ0ZXIgZmlyc3QgYWNjZXNzLlxuXG5cbmV4cG9ydCB2YXIgZ2V0QnJlYWtwb2ludHNDYWNoZWQgPSBmdW5jdGlvbiBnZXRCcmVha3BvaW50c0NhY2hlZCgpIHtcbiAgcmV0dXJuIGNsb25lRGVlcChfZ2V0QnJlYWtwb2ludHNDYWNoZWQoKSk7XG59OyAvLyBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGdldHRpbmcgYnJlYWtwb2ludHMgd2l0aFxuLy8gdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQgc2V0IGFzICcnLlxuLy8gVXNlZnVsIGZvciBjb21wb25lbnRzIHRoYXQgY3JlYXRlIGJyZWFrcG9pbnQgc3BlY2lmaWMgcHJvcHMuXG5cbmV4cG9ydCB2YXIgZ2V0QnJlYWtwb2ludHNVcCA9IGZ1bmN0aW9uIGdldEJyZWFrcG9pbnRzVXAoKSB7XG4gIHZhciBicmVha3BvaW50cyA9IGdldEJyZWFrcG9pbnRzKCk7XG4gIGJyZWFrcG9pbnRzWzBdID0gJyc7XG4gIHJldHVybiBicmVha3BvaW50cztcbn07IC8vIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgZ2V0dGluZyBicmVha3BvaW50cyB3aXRoXG4vLyB0aGUgc21hbGxlc3QgYnJlYWtwb2ludCBzZXQgYXMgJycuXG4vLyBVc2VmdWwgZm9yIGNvbXBvbmVudHMgdGhhdCBjcmVhdGUgYnJlYWtwb2ludCBzcGVjaWZpYyBwcm9wcy5cbi8vIENhY2hlcyB0aGUgcmVzdWx0cyBhZnRlciBmaXJzdCBhY2Nlc3MuXG5cbmV4cG9ydCB2YXIgZ2V0QnJlYWtwb2ludHNVcENhY2hlZCA9IG1lbW9pemUoZnVuY3Rpb24gKCkge1xuICB2YXIgYnJlYWtwb2ludHMgPSBnZXRCcmVha3BvaW50c0NhY2hlZCgpO1xuICBicmVha3BvaW50c1swXSA9ICcnO1xuICByZXR1cm4gYnJlYWtwb2ludHM7XG59KTsgLy8gQ29udmVuaWVuY2UgbWV0aG9kIGZvciBnZXR0aW5nIGJyZWFrcG9pbnRzIHdpdGhcbi8vIHRoZSBsYXJnZXN0IGJyZWFrcG9pbnQgc2V0IGFzICcnLlxuLy8gVXNlZnVsIGZvciBjb21wb25lbnRzIHRoYXQgY3JlYXRlIGJyZWFrcG9pbnQgc3BlY2lmaWMgcHJvcHMuXG5cbmV4cG9ydCB2YXIgZ2V0QnJlYWtwb2ludHNEb3duID0gZnVuY3Rpb24gZ2V0QnJlYWtwb2ludHNEb3duKCkge1xuICB2YXIgYnJlYWtwb2ludHMgPSBnZXRCcmVha3BvaW50cygpO1xuICBicmVha3BvaW50c1ticmVha3BvaW50cy5sZW5ndGggLSAxXSA9ICcnO1xuICByZXR1cm4gYnJlYWtwb2ludHM7XG59OyAvLyBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGdldHRpbmcgYnJlYWtwb2ludHMgd2l0aFxuLy8gdGhlIGxhcmdlc3QgYnJlYWtwb2ludCBzZXQgYXMgJycuXG4vLyBVc2VmdWwgZm9yIGNvbXBvbmVudHMgdGhhdCBjcmVhdGUgYnJlYWtwb2ludCBzcGVjaWZpYyBwcm9wcy5cbi8vIENhY2hlcyB0aGUgcmVzdWx0cyBhZnRlciBmaXJzdCBhY2Nlc3MuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiB3ZSBkb24ndCB1c2UgdGhpcyBtZXRob2QgYW55d2hlcmUsIHlldCAqL1xuXG5leHBvcnQgdmFyIGdldEJyZWFrcG9pbnRzRG93bkNhY2hlZCA9IGZ1bmN0aW9uIGdldEJyZWFrcG9pbnRzRG93bkNhY2hlZCgpXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xue1xuICB2YXIgYnJlYWtwb2ludHMgPSBnZXRCcmVha3BvaW50c0NhY2hlZCgpO1xuICBicmVha3BvaW50c1ticmVha3BvaW50cy5sZW5ndGggLSAxXSA9ICcnO1xuICByZXR1cm4gYnJlYWtwb2ludHM7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL3V0aWxzL2NvbmZpZy5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///4\n"); +eval("/* unused harmony export getConfig */\n/* unused harmony export getConfigValue */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return getComponentConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return getBreakpoints; });\n/* unused harmony export getBreakpointsCached */\n/* unused harmony export getBreakpointsUp */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return getBreakpointsUpCached; });\n/* unused harmony export getBreakpointsDown */\n/* unused harmony export getBreakpointsDownCached */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__clone_deep__ = __webpack_require__(52);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__get__ = __webpack_require__(33);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__memoize__ = __webpack_require__(53);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__config_defaults__ = __webpack_require__(101);\n\n\n\n\n // --- Constants ---\n\nvar PROP_NAME = '$bvConfig';\nvar VueProto = __WEBPACK_IMPORTED_MODULE_0__vue__[\"a\" /* default */].prototype; // --- Getter methods ---\n// All methods return a deep clone (immutable) copy of the config\n// value, to prevent mutation of the user config object.\n// Get the current user config. For testing purposes only\n\nvar getConfig = function getConfig() {\n return VueProto[PROP_NAME] ? VueProto[PROP_NAME].getConfig() : {};\n}; // Method to grab a config value based on a dotted/array notation key\n\nvar getConfigValue = function getConfigValue(key) {\n return VueProto[PROP_NAME] ? VueProto[PROP_NAME].getConfigValue(key) : Object(__WEBPACK_IMPORTED_MODULE_1__clone_deep__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_2__get__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_4__config_defaults__[\"a\" /* default */], key));\n}; // Method to grab a config value for a particular component\n\nvar getComponentConfig = function getComponentConfig(cmpName) {\n var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n // Return the particular config value for key for if specified,\n // otherwise we return the full config (or an empty object if not found)\n return key ? getConfigValue(\"\".concat(cmpName, \".\").concat(key)) : getConfigValue(cmpName) || {};\n}; // Convenience method for getting all breakpoint names\n\nvar getBreakpoints = function getBreakpoints() {\n return getConfigValue('breakpoints');\n}; // Private function for caching / locking-in breakpoint names\n\nvar _getBreakpointsCached = Object(__WEBPACK_IMPORTED_MODULE_3__memoize__[\"a\" /* default */])(function () {\n return getBreakpoints();\n}); // Convenience method for getting all breakpoint names.\n// Caches the results after first access.\n\n\nvar getBreakpointsCached = function getBreakpointsCached() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__clone_deep__[\"a\" /* default */])(_getBreakpointsCached());\n}; // Convenience method for getting breakpoints with\n// the smallest breakpoint set as ''.\n// Useful for components that create breakpoint specific props.\n\nvar getBreakpointsUp = function getBreakpointsUp() {\n var breakpoints = getBreakpoints();\n breakpoints[0] = '';\n return breakpoints;\n}; // Convenience method for getting breakpoints with\n// the smallest breakpoint set as ''.\n// Useful for components that create breakpoint specific props.\n// Caches the results after first access.\n\nvar getBreakpointsUpCached = Object(__WEBPACK_IMPORTED_MODULE_3__memoize__[\"a\" /* default */])(function () {\n var breakpoints = getBreakpointsCached();\n breakpoints[0] = '';\n return breakpoints;\n}); // Convenience method for getting breakpoints with\n// the largest breakpoint set as ''.\n// Useful for components that create breakpoint specific props.\n\nvar getBreakpointsDown = function getBreakpointsDown() {\n var breakpoints = getBreakpoints();\n breakpoints[breakpoints.length - 1] = '';\n return breakpoints;\n}; // Convenience method for getting breakpoints with\n// the largest breakpoint set as ''.\n// Useful for components that create breakpoint specific props.\n// Caches the results after first access.\n\n/* istanbul ignore next: we don't use this method anywhere, yet */\n\nvar getBreakpointsDownCached = function getBreakpointsDownCached()\n/* istanbul ignore next */\n{\n var breakpoints = getBreakpointsCached();\n breakpoints[breakpoints.length - 1] = '';\n return breakpoints;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvY29uZmlnLmpzPzUwNGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF3QjtBQUNhO0FBQ2I7QUFDUTtBQUNTOztBQUV6QztBQUNBLGVBQWUscURBQUcsV0FBVztBQUM3QjtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLEVBQUU7O0FBRUs7QUFDUCx5RUFBeUUsb0VBQVMsQ0FBQyw2REFBRyxDQUFDLGlFQUFRO0FBQy9GLEVBQUU7O0FBRUs7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUs7QUFDUDtBQUNBLEVBQUU7O0FBRUYsNEJBQTRCLGlFQUFPO0FBQ25DO0FBQ0EsQ0FBQyxFQUFFO0FBQ0g7OztBQUdPO0FBQ1AsU0FBUyxvRUFBUztBQUNsQixFQUFFO0FBQ0Y7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7O0FBRU8sNkJBQTZCLGlFQUFPO0FBQzNDO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRTtBQUNIO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBOztBQUVBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJy4vdnVlJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnLi9jbG9uZS1kZWVwJztcbmltcG9ydCBnZXQgZnJvbSAnLi9nZXQnO1xuaW1wb3J0IG1lbW9pemUgZnJvbSAnLi9tZW1vaXplJztcbmltcG9ydCBERUZBVUxUUyBmcm9tICcuL2NvbmZpZy1kZWZhdWx0cyc7IC8vIC0tLSBDb25zdGFudHMgLS0tXG5cbnZhciBQUk9QX05BTUUgPSAnJGJ2Q29uZmlnJztcbnZhciBWdWVQcm90byA9IFZ1ZS5wcm90b3R5cGU7IC8vIC0tLSBHZXR0ZXIgbWV0aG9kcyAtLS1cbi8vIEFsbCBtZXRob2RzIHJldHVybiBhIGRlZXAgY2xvbmUgKGltbXV0YWJsZSkgY29weSBvZiB0aGUgY29uZmlnXG4vLyB2YWx1ZSwgdG8gcHJldmVudCBtdXRhdGlvbiBvZiB0aGUgdXNlciBjb25maWcgb2JqZWN0LlxuLy8gR2V0IHRoZSBjdXJyZW50IHVzZXIgY29uZmlnLiBGb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5XG5cbmV4cG9ydCB2YXIgZ2V0Q29uZmlnID0gZnVuY3Rpb24gZ2V0Q29uZmlnKCkge1xuICByZXR1cm4gVnVlUHJvdG9bUFJPUF9OQU1FXSA/IFZ1ZVByb3RvW1BST1BfTkFNRV0uZ2V0Q29uZmlnKCkgOiB7fTtcbn07IC8vIE1ldGhvZCB0byBncmFiIGEgY29uZmlnIHZhbHVlIGJhc2VkIG9uIGEgZG90dGVkL2FycmF5IG5vdGF0aW9uIGtleVxuXG5leHBvcnQgdmFyIGdldENvbmZpZ1ZhbHVlID0gZnVuY3Rpb24gZ2V0Q29uZmlnVmFsdWUoa2V5KSB7XG4gIHJldHVybiBWdWVQcm90b1tQUk9QX05BTUVdID8gVnVlUHJvdG9bUFJPUF9OQU1FXS5nZXRDb25maWdWYWx1ZShrZXkpIDogY2xvbmVEZWVwKGdldChERUZBVUxUUywga2V5KSk7XG59OyAvLyBNZXRob2QgdG8gZ3JhYiBhIGNvbmZpZyB2YWx1ZSBmb3IgYSBwYXJ0aWN1bGFyIGNvbXBvbmVudFxuXG5leHBvcnQgdmFyIGdldENvbXBvbmVudENvbmZpZyA9IGZ1bmN0aW9uIGdldENvbXBvbmVudENvbmZpZyhjbXBOYW1lKSB7XG4gIHZhciBrZXkgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IG51bGw7XG4gIC8vIFJldHVybiB0aGUgcGFydGljdWxhciBjb25maWcgdmFsdWUgZm9yIGtleSBmb3IgaWYgc3BlY2lmaWVkLFxuICAvLyBvdGhlcndpc2Ugd2UgcmV0dXJuIHRoZSBmdWxsIGNvbmZpZyAob3IgYW4gZW1wdHkgb2JqZWN0IGlmIG5vdCBmb3VuZClcbiAgcmV0dXJuIGtleSA/IGdldENvbmZpZ1ZhbHVlKFwiXCIuY29uY2F0KGNtcE5hbWUsIFwiLlwiKS5jb25jYXQoa2V5KSkgOiBnZXRDb25maWdWYWx1ZShjbXBOYW1lKSB8fCB7fTtcbn07IC8vIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgZ2V0dGluZyBhbGwgYnJlYWtwb2ludCBuYW1lc1xuXG5leHBvcnQgdmFyIGdldEJyZWFrcG9pbnRzID0gZnVuY3Rpb24gZ2V0QnJlYWtwb2ludHMoKSB7XG4gIHJldHVybiBnZXRDb25maWdWYWx1ZSgnYnJlYWtwb2ludHMnKTtcbn07IC8vIFByaXZhdGUgZnVuY3Rpb24gZm9yIGNhY2hpbmcgLyBsb2NraW5nLWluIGJyZWFrcG9pbnQgbmFtZXNcblxudmFyIF9nZXRCcmVha3BvaW50c0NhY2hlZCA9IG1lbW9pemUoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZ2V0QnJlYWtwb2ludHMoKTtcbn0pOyAvLyBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGdldHRpbmcgYWxsIGJyZWFrcG9pbnQgbmFtZXMuXG4vLyBDYWNoZXMgdGhlIHJlc3VsdHMgYWZ0ZXIgZmlyc3QgYWNjZXNzLlxuXG5cbmV4cG9ydCB2YXIgZ2V0QnJlYWtwb2ludHNDYWNoZWQgPSBmdW5jdGlvbiBnZXRCcmVha3BvaW50c0NhY2hlZCgpIHtcbiAgcmV0dXJuIGNsb25lRGVlcChfZ2V0QnJlYWtwb2ludHNDYWNoZWQoKSk7XG59OyAvLyBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGdldHRpbmcgYnJlYWtwb2ludHMgd2l0aFxuLy8gdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQgc2V0IGFzICcnLlxuLy8gVXNlZnVsIGZvciBjb21wb25lbnRzIHRoYXQgY3JlYXRlIGJyZWFrcG9pbnQgc3BlY2lmaWMgcHJvcHMuXG5cbmV4cG9ydCB2YXIgZ2V0QnJlYWtwb2ludHNVcCA9IGZ1bmN0aW9uIGdldEJyZWFrcG9pbnRzVXAoKSB7XG4gIHZhciBicmVha3BvaW50cyA9IGdldEJyZWFrcG9pbnRzKCk7XG4gIGJyZWFrcG9pbnRzWzBdID0gJyc7XG4gIHJldHVybiBicmVha3BvaW50cztcbn07IC8vIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgZ2V0dGluZyBicmVha3BvaW50cyB3aXRoXG4vLyB0aGUgc21hbGxlc3QgYnJlYWtwb2ludCBzZXQgYXMgJycuXG4vLyBVc2VmdWwgZm9yIGNvbXBvbmVudHMgdGhhdCBjcmVhdGUgYnJlYWtwb2ludCBzcGVjaWZpYyBwcm9wcy5cbi8vIENhY2hlcyB0aGUgcmVzdWx0cyBhZnRlciBmaXJzdCBhY2Nlc3MuXG5cbmV4cG9ydCB2YXIgZ2V0QnJlYWtwb2ludHNVcENhY2hlZCA9IG1lbW9pemUoZnVuY3Rpb24gKCkge1xuICB2YXIgYnJlYWtwb2ludHMgPSBnZXRCcmVha3BvaW50c0NhY2hlZCgpO1xuICBicmVha3BvaW50c1swXSA9ICcnO1xuICByZXR1cm4gYnJlYWtwb2ludHM7XG59KTsgLy8gQ29udmVuaWVuY2UgbWV0aG9kIGZvciBnZXR0aW5nIGJyZWFrcG9pbnRzIHdpdGhcbi8vIHRoZSBsYXJnZXN0IGJyZWFrcG9pbnQgc2V0IGFzICcnLlxuLy8gVXNlZnVsIGZvciBjb21wb25lbnRzIHRoYXQgY3JlYXRlIGJyZWFrcG9pbnQgc3BlY2lmaWMgcHJvcHMuXG5cbmV4cG9ydCB2YXIgZ2V0QnJlYWtwb2ludHNEb3duID0gZnVuY3Rpb24gZ2V0QnJlYWtwb2ludHNEb3duKCkge1xuICB2YXIgYnJlYWtwb2ludHMgPSBnZXRCcmVha3BvaW50cygpO1xuICBicmVha3BvaW50c1ticmVha3BvaW50cy5sZW5ndGggLSAxXSA9ICcnO1xuICByZXR1cm4gYnJlYWtwb2ludHM7XG59OyAvLyBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGdldHRpbmcgYnJlYWtwb2ludHMgd2l0aFxuLy8gdGhlIGxhcmdlc3QgYnJlYWtwb2ludCBzZXQgYXMgJycuXG4vLyBVc2VmdWwgZm9yIGNvbXBvbmVudHMgdGhhdCBjcmVhdGUgYnJlYWtwb2ludCBzcGVjaWZpYyBwcm9wcy5cbi8vIENhY2hlcyB0aGUgcmVzdWx0cyBhZnRlciBmaXJzdCBhY2Nlc3MuXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiB3ZSBkb24ndCB1c2UgdGhpcyBtZXRob2QgYW55d2hlcmUsIHlldCAqL1xuXG5leHBvcnQgdmFyIGdldEJyZWFrcG9pbnRzRG93bkNhY2hlZCA9IGZ1bmN0aW9uIGdldEJyZWFrcG9pbnRzRG93bkNhY2hlZCgpXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xue1xuICB2YXIgYnJlYWtwb2ludHMgPSBnZXRCcmVha3BvaW50c0NhY2hlZCgpO1xuICBicmVha3BvaW50c1ticmVha3BvaW50cy5sZW5ndGggLSAxXSA9ICcnO1xuICByZXR1cm4gYnJlYWtwb2ludHM7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL3V0aWxzL2NvbmZpZy5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///4\n"); /***/ }), /* 5 */ @@ -166,14 +166,14 @@ eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return propsFactory; });\n/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BLink; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_router__ = __webpack_require__(105);\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 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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n/**\n * The Link component is used in many other BV components.\n * As such, sharing its props makes supporting all its features easier.\n * However, some components need to modify the defaults for their own purpose.\n * Prefer sharing a fresh copy of the props to ensure mutations\n * do not affect other component references to the props.\n *\n * https://github.com/vuejs/vue-router/blob/dev/src/components/link.js\n * @return {{}}\n */\n\nvar propsFactory = function propsFactory() {\n return {\n href: {\n type: String,\n default: null\n },\n rel: {\n type: String,\n default: null\n },\n target: {\n type: String,\n default: '_self'\n },\n active: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n // router-link specific props\n to: {\n type: [String, Object],\n default: null\n },\n append: {\n type: Boolean,\n default: false\n },\n replace: {\n type: Boolean,\n default: false\n },\n event: {\n type: [String, Array],\n default: 'click'\n },\n activeClass: {\n type: String // default: undefined\n\n },\n exact: {\n type: Boolean,\n default: false\n },\n exactActiveClass: {\n type: String // default: undefined\n\n },\n routerTag: {\n type: String,\n default: 'a'\n },\n // nuxt-link specific prop(s)\n noPrefetch: {\n type: Boolean,\n default: false\n }\n };\n};\nvar props = propsFactory(); // @vue/component\n\nvar BLink =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BLink',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_normalize_slot__[\"a\" /* default */]],\n inheritAttrs: false,\n props: propsFactory(),\n computed: {\n computedTag: function computedTag() {\n // We don't pass `this` as the first arg as we need reactivity of the props\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_router__[\"c\" /* computeTag */])({\n to: this.to,\n disabled: this.disabled\n }, this);\n },\n isRouterLink: function isRouterLink() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_router__[\"d\" /* isRouterLink */])(this.computedTag);\n },\n computedRel: function computedRel() {\n // We don't pass `this` as the first arg as we need reactivity of the props\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_router__[\"b\" /* computeRel */])({\n target: this.target,\n rel: this.rel\n });\n },\n computedHref: function computedHref() {\n // We don't pass `this` as the first arg as we need reactivity of the props\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_router__[\"a\" /* computeHref */])({\n to: this.to,\n href: this.href\n }, this.computedTag);\n },\n computedProps: function computedProps() {\n return this.isRouterLink ? _objectSpread({}, this.$props, {\n tag: this.routerTag\n }) : {};\n }\n },\n methods: {\n onClick: function onClick(evt) {\n var _arguments = arguments;\n var evtIsEvent = Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"d\" /* isEvent */])(evt);\n var isRouterLink = this.isRouterLink;\n var suppliedHandler = this.$listeners.click;\n\n if (evtIsEvent && this.disabled) {\n // Stop event from bubbling up\n evt.stopPropagation(); // Kill the event loop attached to this specific `EventTarget`\n // Needed to prevent `vue-router` for doing it's thing\n\n evt.stopImmediatePropagation();\n } else {\n /* istanbul ignore next: difficult to test, but we know it works */\n if (isRouterLink && evt.currentTarget.__vue__) {\n // Router links do not emit instance `click` events, so we\n // add in an $emit('click', evt) on it's vue instance\n evt.currentTarget.__vue__.$emit('click', evt);\n } // Call the suppliedHandler(s), if any provided\n\n\n Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"b\" /* concat */])(suppliedHandler).filter(function (h) {\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"f\" /* isFunction */])(h);\n }).forEach(function (handler) {\n handler.apply(void 0, _toConsumableArray(_arguments));\n }); // Emit the global $root click event\n\n this.$root.$emit('clicked::link', evt);\n } // Stop scroll-to-top behavior or navigation on\n // regular links when href is just '#'\n\n\n if (evtIsEvent && (this.disabled || !isRouterLink && this.computedHref === '#')) {\n evt.preventDefault();\n }\n },\n focus: function focus() {\n if (this.$el && this.$el.focus) {\n this.$el.focus();\n }\n },\n blur: function blur() {\n if (this.$el && this.$el.blur) {\n this.$el.blur();\n }\n }\n },\n render: function render(h) {\n var tag = this.computedTag;\n var rel = this.computedRel;\n var href = this.computedHref;\n var isRouterLink = this.isRouterLink;\n var componentData = {\n class: {\n active: this.active,\n disabled: this.disabled\n },\n attrs: _objectSpread({}, this.$attrs, {\n rel: rel,\n target: this.target,\n tabindex: this.disabled ? '-1' : Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"n\" /* isUndefined */])(this.$attrs.tabindex) ? null : this.$attrs.tabindex,\n 'aria-disabled': this.disabled ? 'true' : null\n }),\n props: this.computedProps\n }; // Add the event handlers. We must use `navtiveOn` for\n // `<router-link>`/`<nuxt-link>` instead of `on`\n\n componentData[isRouterLink ? 'nativeOn' : 'on'] = _objectSpread({}, this.$listeners, {\n // We want to overwrite any click handler since our callback\n // will invoke the user supplied handler(s) if `!this.disabled`\n click: this.onClick\n }); // If href attribute exists on <router-link> (even undefined or null) it fails working on\n // SSR, so we explicitly add it here if needed (i.e. if computedHref() is truthy)\n\n if (href) {\n componentData.attrs.href = href;\n } else {\n // Ensure the prop HREF does not exist for router links\n delete componentData.props.href;\n }\n\n return h(tag, componentData, this.normalizeSlot('default'));\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9saW5rL2xpbmsuanM/ODQ5NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsa0NBQWtDLGlGQUFpRjs7QUFFbkgsK0JBQStCLHdFQUF3RTs7QUFFdkcsaUNBQWlDLCtIQUErSDs7QUFFaEssa0NBQWtDLDBCQUEwQiw4Q0FBOEMsZ0JBQWdCLE9BQU8sa0JBQWtCLEVBQUUsYUFBYSxFQUFFOztBQUVwSywwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQzJCO0FBQ2xCO0FBQzRCO0FBQ2lDO0FBQ3hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTywyQkFBMkI7O0FBRTNCO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0EsV0FBVyx1RUFBa0I7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEseUVBQVU7QUFDdkI7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxhQUFhLDJFQUFhO0FBQzFCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsYUFBYSx5RUFBVTtBQUN2QjtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsYUFBYSwwRUFBVztBQUN4QjtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLGlEQUFpRDtBQUNqRDtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsdUVBQU87QUFDOUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCOztBQUVBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOzs7QUFHVCxRQUFRLG9FQUFNO0FBQ2QsaUJBQWlCLDBFQUFVO0FBQzNCLFNBQVM7QUFDVDtBQUNBLFNBQVMsRUFBRTs7QUFFWDtBQUNBLE9BQU87QUFDUDs7O0FBR0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0EseUNBQXlDLDJFQUFXO0FBQ3BEO0FBQ0EsT0FBTztBQUNQO0FBQ0EsTUFBTTtBQUNOOztBQUVBLHNFQUFzRTtBQUN0RTtBQUNBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7QUFDUDs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNC5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHsgcmV0dXJuIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfbm9uSXRlcmFibGVTcHJlYWQoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKTsgfVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHsgaWYgKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoaXRlcikgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGl0ZXIpID09PSBcIltvYmplY3QgQXJndW1lbnRzXVwiKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfSB9XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhzb3VyY2UsIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JztcbmltcG9ydCB7IGNvbmNhdCB9IGZyb20gJy4uLy4uL3V0aWxzL2FycmF5JztcbmltcG9ydCB7IGlzRXZlbnQsIGlzRnVuY3Rpb24sIGlzVW5kZWZpbmVkIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgeyBjb21wdXRlSHJlZiwgY29tcHV0ZVJlbCwgY29tcHV0ZVRhZywgaXNSb3V0ZXJMaW5rIGFzIF9pc1JvdXRlckxpbmsgfSBmcm9tICcuLi8uLi91dGlscy9yb3V0ZXInO1xuLyoqXG4gKiBUaGUgTGluayBjb21wb25lbnQgaXMgdXNlZCBpbiBtYW55IG90aGVyIEJWIGNvbXBvbmVudHMuXG4gKiBBcyBzdWNoLCBzaGFyaW5nIGl0cyBwcm9wcyBtYWtlcyBzdXBwb3J0aW5nIGFsbCBpdHMgZmVhdHVyZXMgZWFzaWVyLlxuICogSG93ZXZlciwgc29tZSBjb21wb25lbnRzIG5lZWQgdG8gbW9kaWZ5IHRoZSBkZWZhdWx0cyBmb3IgdGhlaXIgb3duIHB1cnBvc2UuXG4gKiBQcmVmZXIgc2hhcmluZyBhIGZyZXNoIGNvcHkgb2YgdGhlIHByb3BzIHRvIGVuc3VyZSBtdXRhdGlvbnNcbiAqIGRvIG5vdCBhZmZlY3Qgb3RoZXIgY29tcG9uZW50IHJlZmVyZW5jZXMgdG8gdGhlIHByb3BzLlxuICpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy92dWUtcm91dGVyL2Jsb2IvZGV2L3NyYy9jb21wb25lbnRzL2xpbmsuanNcbiAqIEByZXR1cm4ge3t9fVxuICovXG5cbmV4cG9ydCB2YXIgcHJvcHNGYWN0b3J5ID0gZnVuY3Rpb24gcHJvcHNGYWN0b3J5KCkge1xuICByZXR1cm4ge1xuICAgIGhyZWY6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIHJlbDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgdGFyZ2V0OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnX3NlbGYnXG4gICAgfSxcbiAgICBhY3RpdmU6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgZGlzYWJsZWQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgLy8gcm91dGVyLWxpbmsgc3BlY2lmaWMgcHJvcHNcbiAgICB0bzoge1xuICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIGFwcGVuZDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICByZXBsYWNlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGV2ZW50OiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBBcnJheV0sXG4gICAgICBkZWZhdWx0OiAnY2xpY2snXG4gICAgfSxcbiAgICBhY3RpdmVDbGFzczoge1xuICAgICAgdHlwZTogU3RyaW5nIC8vIGRlZmF1bHQ6IHVuZGVmaW5lZFxuXG4gICAgfSxcbiAgICBleGFjdDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBleGFjdEFjdGl2ZUNsYXNzOiB7XG4gICAgICB0eXBlOiBTdHJpbmcgLy8gZGVmYXVsdDogdW5kZWZpbmVkXG5cbiAgICB9LFxuICAgIHJvdXRlclRhZzoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2EnXG4gICAgfSxcbiAgICAvLyBudXh0LWxpbmsgc3BlY2lmaWMgcHJvcChzKVxuICAgIG5vUHJlZmV0Y2g6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfTtcbn07XG5leHBvcnQgdmFyIHByb3BzID0gcHJvcHNGYWN0b3J5KCk7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkxpbmsgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCTGluaycsXG4gIG1peGluczogW25vcm1hbGl6ZVNsb3RNaXhpbl0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHByb3BzOiBwcm9wc0ZhY3RvcnkoKSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBjb21wdXRlZFRhZzogZnVuY3Rpb24gY29tcHV0ZWRUYWcoKSB7XG4gICAgICAvLyBXZSBkb24ndCBwYXNzIGB0aGlzYCBhcyB0aGUgZmlyc3QgYXJnIGFzIHdlIG5lZWQgcmVhY3Rpdml0eSBvZiB0aGUgcHJvcHNcbiAgICAgIHJldHVybiBjb21wdXRlVGFnKHtcbiAgICAgICAgdG86IHRoaXMudG8sXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkXG4gICAgICB9LCB0aGlzKTtcbiAgICB9LFxuICAgIGlzUm91dGVyTGluazogZnVuY3Rpb24gaXNSb3V0ZXJMaW5rKCkge1xuICAgICAgcmV0dXJuIF9pc1JvdXRlckxpbmsodGhpcy5jb21wdXRlZFRhZyk7XG4gICAgfSxcbiAgICBjb21wdXRlZFJlbDogZnVuY3Rpb24gY29tcHV0ZWRSZWwoKSB7XG4gICAgICAvLyBXZSBkb24ndCBwYXNzIGB0aGlzYCBhcyB0aGUgZmlyc3QgYXJnIGFzIHdlIG5lZWQgcmVhY3Rpdml0eSBvZiB0aGUgcHJvcHNcbiAgICAgIHJldHVybiBjb21wdXRlUmVsKHtcbiAgICAgICAgdGFyZ2V0OiB0aGlzLnRhcmdldCxcbiAgICAgICAgcmVsOiB0aGlzLnJlbFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBjb21wdXRlZEhyZWY6IGZ1bmN0aW9uIGNvbXB1dGVkSHJlZigpIHtcbiAgICAgIC8vIFdlIGRvbid0IHBhc3MgYHRoaXNgIGFzIHRoZSBmaXJzdCBhcmcgYXMgd2UgbmVlZCByZWFjdGl2aXR5IG9mIHRoZSBwcm9wc1xuICAgICAgcmV0dXJuIGNvbXB1dGVIcmVmKHtcbiAgICAgICAgdG86IHRoaXMudG8sXG4gICAgICAgIGhyZWY6IHRoaXMuaHJlZlxuICAgICAgfSwgdGhpcy5jb21wdXRlZFRhZyk7XG4gICAgfSxcbiAgICBjb21wdXRlZFByb3BzOiBmdW5jdGlvbiBjb21wdXRlZFByb3BzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNSb3V0ZXJMaW5rID8gX29iamVjdFNwcmVhZCh7fSwgdGhpcy4kcHJvcHMsIHtcbiAgICAgICAgdGFnOiB0aGlzLnJvdXRlclRhZ1xuICAgICAgfSkgOiB7fTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKGV2dCkge1xuICAgICAgdmFyIF9hcmd1bWVudHMgPSBhcmd1bWVudHM7XG4gICAgICB2YXIgZXZ0SXNFdmVudCA9IGlzRXZlbnQoZXZ0KTtcbiAgICAgIHZhciBpc1JvdXRlckxpbmsgPSB0aGlzLmlzUm91dGVyTGluaztcbiAgICAgIHZhciBzdXBwbGllZEhhbmRsZXIgPSB0aGlzLiRsaXN0ZW5lcnMuY2xpY2s7XG5cbiAgICAgIGlmIChldnRJc0V2ZW50ICYmIHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgLy8gU3RvcCBldmVudCBmcm9tIGJ1YmJsaW5nIHVwXG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gS2lsbCB0aGUgZXZlbnQgbG9vcCBhdHRhY2hlZCB0byB0aGlzIHNwZWNpZmljIGBFdmVudFRhcmdldGBcbiAgICAgICAgLy8gTmVlZGVkIHRvIHByZXZlbnQgYHZ1ZS1yb3V0ZXJgIGZvciBkb2luZyBpdCdzIHRoaW5nXG5cbiAgICAgICAgZXZ0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGRpZmZpY3VsdCB0byB0ZXN0LCBidXQgd2Uga25vdyBpdCB3b3JrcyAqL1xuICAgICAgICBpZiAoaXNSb3V0ZXJMaW5rICYmIGV2dC5jdXJyZW50VGFyZ2V0Ll9fdnVlX18pIHtcbiAgICAgICAgICAvLyBSb3V0ZXIgbGlua3MgZG8gbm90IGVtaXQgaW5zdGFuY2UgYGNsaWNrYCBldmVudHMsIHNvIHdlXG4gICAgICAgICAgLy8gYWRkIGluIGFuICRlbWl0KCdjbGljaycsIGV2dCkgb24gaXQncyB2dWUgaW5zdGFuY2VcbiAgICAgICAgICBldnQuY3VycmVudFRhcmdldC5fX3Z1ZV9fLiRlbWl0KCdjbGljaycsIGV2dCk7XG4gICAgICAgIH0gLy8gQ2FsbCB0aGUgc3VwcGxpZWRIYW5kbGVyKHMpLCBpZiBhbnkgcHJvdmlkZWRcblxuXG4gICAgICAgIGNvbmNhdChzdXBwbGllZEhhbmRsZXIpLmZpbHRlcihmdW5jdGlvbiAoaCkge1xuICAgICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKGgpO1xuICAgICAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uIChoYW5kbGVyKSB7XG4gICAgICAgICAgaGFuZGxlci5hcHBseSh2b2lkIDAsIF90b0NvbnN1bWFibGVBcnJheShfYXJndW1lbnRzKSk7XG4gICAgICAgIH0pOyAvLyBFbWl0IHRoZSBnbG9iYWwgJHJvb3QgY2xpY2sgZXZlbnRcblxuICAgICAgICB0aGlzLiRyb290LiRlbWl0KCdjbGlja2VkOjpsaW5rJywgZXZ0KTtcbiAgICAgIH0gLy8gU3RvcCBzY3JvbGwtdG8tdG9wIGJlaGF2aW9yIG9yIG5hdmlnYXRpb24gb25cbiAgICAgIC8vIHJlZ3VsYXIgbGlua3Mgd2hlbiBocmVmIGlzIGp1c3QgJyMnXG5cblxuICAgICAgaWYgKGV2dElzRXZlbnQgJiYgKHRoaXMuZGlzYWJsZWQgfHwgIWlzUm91dGVyTGluayAmJiB0aGlzLmNvbXB1dGVkSHJlZiA9PT0gJyMnKSkge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGZvY3VzOiBmdW5jdGlvbiBmb2N1cygpIHtcbiAgICAgIGlmICh0aGlzLiRlbCAmJiB0aGlzLiRlbC5mb2N1cykge1xuICAgICAgICB0aGlzLiRlbC5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sXG4gICAgYmx1cjogZnVuY3Rpb24gYmx1cigpIHtcbiAgICAgIGlmICh0aGlzLiRlbCAmJiB0aGlzLiRlbC5ibHVyKSB7XG4gICAgICAgIHRoaXMuJGVsLmJsdXIoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgdGFnID0gdGhpcy5jb21wdXRlZFRhZztcbiAgICB2YXIgcmVsID0gdGhpcy5jb21wdXRlZFJlbDtcbiAgICB2YXIgaHJlZiA9IHRoaXMuY29tcHV0ZWRIcmVmO1xuICAgIHZhciBpc1JvdXRlckxpbmsgPSB0aGlzLmlzUm91dGVyTGluaztcbiAgICB2YXIgY29tcG9uZW50RGF0YSA9IHtcbiAgICAgIGNsYXNzOiB7XG4gICAgICAgIGFjdGl2ZTogdGhpcy5hY3RpdmUsXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkXG4gICAgICB9LFxuICAgICAgYXR0cnM6IF9vYmplY3RTcHJlYWQoe30sIHRoaXMuJGF0dHJzLCB7XG4gICAgICAgIHJlbDogcmVsLFxuICAgICAgICB0YXJnZXQ6IHRoaXMudGFyZ2V0LFxuICAgICAgICB0YWJpbmRleDogdGhpcy5kaXNhYmxlZCA/ICctMScgOiBpc1VuZGVmaW5lZCh0aGlzLiRhdHRycy50YWJpbmRleCkgPyBudWxsIDogdGhpcy4kYXR0cnMudGFiaW5kZXgsXG4gICAgICAgICdhcmlhLWRpc2FibGVkJzogdGhpcy5kaXNhYmxlZCA/ICd0cnVlJyA6IG51bGxcbiAgICAgIH0pLFxuICAgICAgcHJvcHM6IHRoaXMuY29tcHV0ZWRQcm9wc1xuICAgIH07IC8vIEFkZCB0aGUgZXZlbnQgaGFuZGxlcnMuIFdlIG11c3QgdXNlIGBuYXZ0aXZlT25gIGZvclxuICAgIC8vIGA8cm91dGVyLWxpbms+YC9gPG51eHQtbGluaz5gIGluc3RlYWQgb2YgYG9uYFxuXG4gICAgY29tcG9uZW50RGF0YVtpc1JvdXRlckxpbmsgPyAnbmF0aXZlT24nIDogJ29uJ10gPSBfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLiRsaXN0ZW5lcnMsIHtcbiAgICAgIC8vIFdlIHdhbnQgdG8gb3ZlcndyaXRlIGFueSBjbGljayBoYW5kbGVyIHNpbmNlIG91ciBjYWxsYmFja1xuICAgICAgLy8gd2lsbCBpbnZva2UgdGhlIHVzZXIgc3VwcGxpZWQgaGFuZGxlcihzKSBpZiBgIXRoaXMuZGlzYWJsZWRgXG4gICAgICBjbGljazogdGhpcy5vbkNsaWNrXG4gICAgfSk7IC8vIElmIGhyZWYgYXR0cmlidXRlIGV4aXN0cyBvbiA8cm91dGVyLWxpbms+IChldmVuIHVuZGVmaW5lZCBvciBudWxsKSBpdCBmYWlscyB3b3JraW5nIG9uXG4gICAgLy8gU1NSLCBzbyB3ZSBleHBsaWNpdGx5IGFkZCBpdCBoZXJlIGlmIG5lZWRlZCAoaS5lLiBpZiBjb21wdXRlZEhyZWYoKSBpcyB0cnV0aHkpXG5cbiAgICBpZiAoaHJlZikge1xuICAgICAgY29tcG9uZW50RGF0YS5hdHRycy5ocmVmID0gaHJlZjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRW5zdXJlIHRoZSBwcm9wIEhSRUYgZG9lcyBub3QgZXhpc3QgZm9yIHJvdXRlciBsaW5rc1xuICAgICAgZGVsZXRlIGNvbXBvbmVudERhdGEucHJvcHMuaHJlZjtcbiAgICB9XG5cbiAgICByZXR1cm4gaCh0YWcsIGNvbXBvbmVudERhdGEsIHRoaXMubm9ybWFsaXplU2xvdCgnZGVmYXVsdCcpKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9saW5rL2xpbmsuanNcbi8vIG1vZHVsZSBpZCA9IDE0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///14\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return propsFactory; });\n/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BLink; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_router__ = __webpack_require__(107);\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 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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n/**\n * The Link component is used in many other BV components.\n * As such, sharing its props makes supporting all its features easier.\n * However, some components need to modify the defaults for their own purpose.\n * Prefer sharing a fresh copy of the props to ensure mutations\n * do not affect other component references to the props.\n *\n * https://github.com/vuejs/vue-router/blob/dev/src/components/link.js\n * @return {{}}\n */\n\nvar propsFactory = function propsFactory() {\n return {\n href: {\n type: String,\n default: null\n },\n rel: {\n type: String,\n default: null\n },\n target: {\n type: String,\n default: '_self'\n },\n active: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n // router-link specific props\n to: {\n type: [String, Object],\n default: null\n },\n append: {\n type: Boolean,\n default: false\n },\n replace: {\n type: Boolean,\n default: false\n },\n event: {\n type: [String, Array],\n default: 'click'\n },\n activeClass: {\n type: String // default: undefined\n\n },\n exact: {\n type: Boolean,\n default: false\n },\n exactActiveClass: {\n type: String // default: undefined\n\n },\n routerTag: {\n type: String,\n default: 'a'\n },\n // nuxt-link specific prop(s)\n noPrefetch: {\n type: Boolean,\n default: false\n }\n };\n};\nvar props = propsFactory(); // @vue/component\n\nvar BLink =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BLink',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_normalize_slot__[\"a\" /* default */]],\n inheritAttrs: false,\n props: propsFactory(),\n computed: {\n computedTag: function computedTag() {\n // We don't pass `this` as the first arg as we need reactivity of the props\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_router__[\"c\" /* computeTag */])({\n to: this.to,\n disabled: this.disabled\n }, this);\n },\n isRouterLink: function isRouterLink() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_router__[\"d\" /* isRouterLink */])(this.computedTag);\n },\n computedRel: function computedRel() {\n // We don't pass `this` as the first arg as we need reactivity of the props\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_router__[\"b\" /* computeRel */])({\n target: this.target,\n rel: this.rel\n });\n },\n computedHref: function computedHref() {\n // We don't pass `this` as the first arg as we need reactivity of the props\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_router__[\"a\" /* computeHref */])({\n to: this.to,\n href: this.href\n }, this.computedTag);\n },\n computedProps: function computedProps() {\n return this.isRouterLink ? _objectSpread({}, this.$props, {\n tag: this.routerTag\n }) : {};\n }\n },\n methods: {\n onClick: function onClick(evt) {\n var _arguments = arguments;\n var evtIsEvent = Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"d\" /* isEvent */])(evt);\n var isRouterLink = this.isRouterLink;\n var suppliedHandler = this.$listeners.click;\n\n if (evtIsEvent && this.disabled) {\n // Stop event from bubbling up\n evt.stopPropagation(); // Kill the event loop attached to this specific `EventTarget`\n // Needed to prevent `vue-router` for doing it's thing\n\n evt.stopImmediatePropagation();\n } else {\n /* istanbul ignore next: difficult to test, but we know it works */\n if (isRouterLink && evt.currentTarget.__vue__) {\n // Router links do not emit instance `click` events, so we\n // add in an $emit('click', evt) on it's vue instance\n evt.currentTarget.__vue__.$emit('click', evt);\n } // Call the suppliedHandler(s), if any provided\n\n\n Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"b\" /* concat */])(suppliedHandler).filter(function (h) {\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"f\" /* isFunction */])(h);\n }).forEach(function (handler) {\n handler.apply(void 0, _toConsumableArray(_arguments));\n }); // Emit the global $root click event\n\n this.$root.$emit('clicked::link', evt);\n } // Stop scroll-to-top behavior or navigation on\n // regular links when href is just '#'\n\n\n if (evtIsEvent && (this.disabled || !isRouterLink && this.computedHref === '#')) {\n evt.preventDefault();\n }\n },\n focus: function focus() {\n if (this.$el && this.$el.focus) {\n this.$el.focus();\n }\n },\n blur: function blur() {\n if (this.$el && this.$el.blur) {\n this.$el.blur();\n }\n }\n },\n render: function render(h) {\n var tag = this.computedTag;\n var rel = this.computedRel;\n var href = this.computedHref;\n var isRouterLink = this.isRouterLink;\n var componentData = {\n class: {\n active: this.active,\n disabled: this.disabled\n },\n attrs: _objectSpread({}, this.$attrs, {\n rel: rel,\n target: this.target,\n tabindex: this.disabled ? '-1' : Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"n\" /* isUndefined */])(this.$attrs.tabindex) ? null : this.$attrs.tabindex,\n 'aria-disabled': this.disabled ? 'true' : null\n }),\n props: this.computedProps\n }; // Add the event handlers. We must use `navtiveOn` for\n // `<router-link>`/`<nuxt-link>` instead of `on`\n\n componentData[isRouterLink ? 'nativeOn' : 'on'] = _objectSpread({}, this.$listeners, {\n // We want to overwrite any click handler since our callback\n // will invoke the user supplied handler(s) if `!this.disabled`\n click: this.onClick\n }); // If href attribute exists on <router-link> (even undefined or null) it fails working on\n // SSR, so we explicitly add it here if needed (i.e. if computedHref() is truthy)\n\n if (href) {\n componentData.attrs.href = href;\n } else {\n // Ensure the prop HREF does not exist for router links\n delete componentData.props.href;\n }\n\n return h(tag, componentData, this.normalizeSlot('default'));\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9saW5rL2xpbmsuanM/ODQ5NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsa0NBQWtDLGlGQUFpRjs7QUFFbkgsK0JBQStCLHdFQUF3RTs7QUFFdkcsaUNBQWlDLCtIQUErSDs7QUFFaEssa0NBQWtDLDBCQUEwQiw4Q0FBOEMsZ0JBQWdCLE9BQU8sa0JBQWtCLEVBQUUsYUFBYSxFQUFFOztBQUVwSywwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQzJCO0FBQ2xCO0FBQzRCO0FBQ2lDO0FBQ3hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTywyQkFBMkI7O0FBRTNCO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0EsV0FBVyx1RUFBa0I7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEseUVBQVU7QUFDdkI7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxhQUFhLDJFQUFhO0FBQzFCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsYUFBYSx5RUFBVTtBQUN2QjtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsYUFBYSwwRUFBVztBQUN4QjtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLGlEQUFpRDtBQUNqRDtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsdUVBQU87QUFDOUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCOztBQUVBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOzs7QUFHVCxRQUFRLG9FQUFNO0FBQ2QsaUJBQWlCLDBFQUFVO0FBQzNCLFNBQVM7QUFDVDtBQUNBLFNBQVMsRUFBRTs7QUFFWDtBQUNBLE9BQU87QUFDUDs7O0FBR0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0EseUNBQXlDLDJFQUFXO0FBQ3BEO0FBQ0EsT0FBTztBQUNQO0FBQ0EsTUFBTTtBQUNOOztBQUVBLHNFQUFzRTtBQUN0RTtBQUNBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7QUFDUDs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNC5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHsgcmV0dXJuIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfbm9uSXRlcmFibGVTcHJlYWQoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKTsgfVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHsgaWYgKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoaXRlcikgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGl0ZXIpID09PSBcIltvYmplY3QgQXJndW1lbnRzXVwiKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfSB9XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhzb3VyY2UsIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JztcbmltcG9ydCB7IGNvbmNhdCB9IGZyb20gJy4uLy4uL3V0aWxzL2FycmF5JztcbmltcG9ydCB7IGlzRXZlbnQsIGlzRnVuY3Rpb24sIGlzVW5kZWZpbmVkIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgeyBjb21wdXRlSHJlZiwgY29tcHV0ZVJlbCwgY29tcHV0ZVRhZywgaXNSb3V0ZXJMaW5rIGFzIF9pc1JvdXRlckxpbmsgfSBmcm9tICcuLi8uLi91dGlscy9yb3V0ZXInO1xuLyoqXG4gKiBUaGUgTGluayBjb21wb25lbnQgaXMgdXNlZCBpbiBtYW55IG90aGVyIEJWIGNvbXBvbmVudHMuXG4gKiBBcyBzdWNoLCBzaGFyaW5nIGl0cyBwcm9wcyBtYWtlcyBzdXBwb3J0aW5nIGFsbCBpdHMgZmVhdHVyZXMgZWFzaWVyLlxuICogSG93ZXZlciwgc29tZSBjb21wb25lbnRzIG5lZWQgdG8gbW9kaWZ5IHRoZSBkZWZhdWx0cyBmb3IgdGhlaXIgb3duIHB1cnBvc2UuXG4gKiBQcmVmZXIgc2hhcmluZyBhIGZyZXNoIGNvcHkgb2YgdGhlIHByb3BzIHRvIGVuc3VyZSBtdXRhdGlvbnNcbiAqIGRvIG5vdCBhZmZlY3Qgb3RoZXIgY29tcG9uZW50IHJlZmVyZW5jZXMgdG8gdGhlIHByb3BzLlxuICpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy92dWUtcm91dGVyL2Jsb2IvZGV2L3NyYy9jb21wb25lbnRzL2xpbmsuanNcbiAqIEByZXR1cm4ge3t9fVxuICovXG5cbmV4cG9ydCB2YXIgcHJvcHNGYWN0b3J5ID0gZnVuY3Rpb24gcHJvcHNGYWN0b3J5KCkge1xuICByZXR1cm4ge1xuICAgIGhyZWY6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIHJlbDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgdGFyZ2V0OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnX3NlbGYnXG4gICAgfSxcbiAgICBhY3RpdmU6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgZGlzYWJsZWQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgLy8gcm91dGVyLWxpbmsgc3BlY2lmaWMgcHJvcHNcbiAgICB0bzoge1xuICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIGFwcGVuZDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICByZXBsYWNlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGV2ZW50OiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBBcnJheV0sXG4gICAgICBkZWZhdWx0OiAnY2xpY2snXG4gICAgfSxcbiAgICBhY3RpdmVDbGFzczoge1xuICAgICAgdHlwZTogU3RyaW5nIC8vIGRlZmF1bHQ6IHVuZGVmaW5lZFxuXG4gICAgfSxcbiAgICBleGFjdDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBleGFjdEFjdGl2ZUNsYXNzOiB7XG4gICAgICB0eXBlOiBTdHJpbmcgLy8gZGVmYXVsdDogdW5kZWZpbmVkXG5cbiAgICB9LFxuICAgIHJvdXRlclRhZzoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2EnXG4gICAgfSxcbiAgICAvLyBudXh0LWxpbmsgc3BlY2lmaWMgcHJvcChzKVxuICAgIG5vUHJlZmV0Y2g6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfTtcbn07XG5leHBvcnQgdmFyIHByb3BzID0gcHJvcHNGYWN0b3J5KCk7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkxpbmsgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCTGluaycsXG4gIG1peGluczogW25vcm1hbGl6ZVNsb3RNaXhpbl0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHByb3BzOiBwcm9wc0ZhY3RvcnkoKSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBjb21wdXRlZFRhZzogZnVuY3Rpb24gY29tcHV0ZWRUYWcoKSB7XG4gICAgICAvLyBXZSBkb24ndCBwYXNzIGB0aGlzYCBhcyB0aGUgZmlyc3QgYXJnIGFzIHdlIG5lZWQgcmVhY3Rpdml0eSBvZiB0aGUgcHJvcHNcbiAgICAgIHJldHVybiBjb21wdXRlVGFnKHtcbiAgICAgICAgdG86IHRoaXMudG8sXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkXG4gICAgICB9LCB0aGlzKTtcbiAgICB9LFxuICAgIGlzUm91dGVyTGluazogZnVuY3Rpb24gaXNSb3V0ZXJMaW5rKCkge1xuICAgICAgcmV0dXJuIF9pc1JvdXRlckxpbmsodGhpcy5jb21wdXRlZFRhZyk7XG4gICAgfSxcbiAgICBjb21wdXRlZFJlbDogZnVuY3Rpb24gY29tcHV0ZWRSZWwoKSB7XG4gICAgICAvLyBXZSBkb24ndCBwYXNzIGB0aGlzYCBhcyB0aGUgZmlyc3QgYXJnIGFzIHdlIG5lZWQgcmVhY3Rpdml0eSBvZiB0aGUgcHJvcHNcbiAgICAgIHJldHVybiBjb21wdXRlUmVsKHtcbiAgICAgICAgdGFyZ2V0OiB0aGlzLnRhcmdldCxcbiAgICAgICAgcmVsOiB0aGlzLnJlbFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBjb21wdXRlZEhyZWY6IGZ1bmN0aW9uIGNvbXB1dGVkSHJlZigpIHtcbiAgICAgIC8vIFdlIGRvbid0IHBhc3MgYHRoaXNgIGFzIHRoZSBmaXJzdCBhcmcgYXMgd2UgbmVlZCByZWFjdGl2aXR5IG9mIHRoZSBwcm9wc1xuICAgICAgcmV0dXJuIGNvbXB1dGVIcmVmKHtcbiAgICAgICAgdG86IHRoaXMudG8sXG4gICAgICAgIGhyZWY6IHRoaXMuaHJlZlxuICAgICAgfSwgdGhpcy5jb21wdXRlZFRhZyk7XG4gICAgfSxcbiAgICBjb21wdXRlZFByb3BzOiBmdW5jdGlvbiBjb21wdXRlZFByb3BzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNSb3V0ZXJMaW5rID8gX29iamVjdFNwcmVhZCh7fSwgdGhpcy4kcHJvcHMsIHtcbiAgICAgICAgdGFnOiB0aGlzLnJvdXRlclRhZ1xuICAgICAgfSkgOiB7fTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKGV2dCkge1xuICAgICAgdmFyIF9hcmd1bWVudHMgPSBhcmd1bWVudHM7XG4gICAgICB2YXIgZXZ0SXNFdmVudCA9IGlzRXZlbnQoZXZ0KTtcbiAgICAgIHZhciBpc1JvdXRlckxpbmsgPSB0aGlzLmlzUm91dGVyTGluaztcbiAgICAgIHZhciBzdXBwbGllZEhhbmRsZXIgPSB0aGlzLiRsaXN0ZW5lcnMuY2xpY2s7XG5cbiAgICAgIGlmIChldnRJc0V2ZW50ICYmIHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgLy8gU3RvcCBldmVudCBmcm9tIGJ1YmJsaW5nIHVwXG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gS2lsbCB0aGUgZXZlbnQgbG9vcCBhdHRhY2hlZCB0byB0aGlzIHNwZWNpZmljIGBFdmVudFRhcmdldGBcbiAgICAgICAgLy8gTmVlZGVkIHRvIHByZXZlbnQgYHZ1ZS1yb3V0ZXJgIGZvciBkb2luZyBpdCdzIHRoaW5nXG5cbiAgICAgICAgZXZ0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGRpZmZpY3VsdCB0byB0ZXN0LCBidXQgd2Uga25vdyBpdCB3b3JrcyAqL1xuICAgICAgICBpZiAoaXNSb3V0ZXJMaW5rICYmIGV2dC5jdXJyZW50VGFyZ2V0Ll9fdnVlX18pIHtcbiAgICAgICAgICAvLyBSb3V0ZXIgbGlua3MgZG8gbm90IGVtaXQgaW5zdGFuY2UgYGNsaWNrYCBldmVudHMsIHNvIHdlXG4gICAgICAgICAgLy8gYWRkIGluIGFuICRlbWl0KCdjbGljaycsIGV2dCkgb24gaXQncyB2dWUgaW5zdGFuY2VcbiAgICAgICAgICBldnQuY3VycmVudFRhcmdldC5fX3Z1ZV9fLiRlbWl0KCdjbGljaycsIGV2dCk7XG4gICAgICAgIH0gLy8gQ2FsbCB0aGUgc3VwcGxpZWRIYW5kbGVyKHMpLCBpZiBhbnkgcHJvdmlkZWRcblxuXG4gICAgICAgIGNvbmNhdChzdXBwbGllZEhhbmRsZXIpLmZpbHRlcihmdW5jdGlvbiAoaCkge1xuICAgICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKGgpO1xuICAgICAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uIChoYW5kbGVyKSB7XG4gICAgICAgICAgaGFuZGxlci5hcHBseSh2b2lkIDAsIF90b0NvbnN1bWFibGVBcnJheShfYXJndW1lbnRzKSk7XG4gICAgICAgIH0pOyAvLyBFbWl0IHRoZSBnbG9iYWwgJHJvb3QgY2xpY2sgZXZlbnRcblxuICAgICAgICB0aGlzLiRyb290LiRlbWl0KCdjbGlja2VkOjpsaW5rJywgZXZ0KTtcbiAgICAgIH0gLy8gU3RvcCBzY3JvbGwtdG8tdG9wIGJlaGF2aW9yIG9yIG5hdmlnYXRpb24gb25cbiAgICAgIC8vIHJlZ3VsYXIgbGlua3Mgd2hlbiBocmVmIGlzIGp1c3QgJyMnXG5cblxuICAgICAgaWYgKGV2dElzRXZlbnQgJiYgKHRoaXMuZGlzYWJsZWQgfHwgIWlzUm91dGVyTGluayAmJiB0aGlzLmNvbXB1dGVkSHJlZiA9PT0gJyMnKSkge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGZvY3VzOiBmdW5jdGlvbiBmb2N1cygpIHtcbiAgICAgIGlmICh0aGlzLiRlbCAmJiB0aGlzLiRlbC5mb2N1cykge1xuICAgICAgICB0aGlzLiRlbC5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sXG4gICAgYmx1cjogZnVuY3Rpb24gYmx1cigpIHtcbiAgICAgIGlmICh0aGlzLiRlbCAmJiB0aGlzLiRlbC5ibHVyKSB7XG4gICAgICAgIHRoaXMuJGVsLmJsdXIoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgdGFnID0gdGhpcy5jb21wdXRlZFRhZztcbiAgICB2YXIgcmVsID0gdGhpcy5jb21wdXRlZFJlbDtcbiAgICB2YXIgaHJlZiA9IHRoaXMuY29tcHV0ZWRIcmVmO1xuICAgIHZhciBpc1JvdXRlckxpbmsgPSB0aGlzLmlzUm91dGVyTGluaztcbiAgICB2YXIgY29tcG9uZW50RGF0YSA9IHtcbiAgICAgIGNsYXNzOiB7XG4gICAgICAgIGFjdGl2ZTogdGhpcy5hY3RpdmUsXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkXG4gICAgICB9LFxuICAgICAgYXR0cnM6IF9vYmplY3RTcHJlYWQoe30sIHRoaXMuJGF0dHJzLCB7XG4gICAgICAgIHJlbDogcmVsLFxuICAgICAgICB0YXJnZXQ6IHRoaXMudGFyZ2V0LFxuICAgICAgICB0YWJpbmRleDogdGhpcy5kaXNhYmxlZCA/ICctMScgOiBpc1VuZGVmaW5lZCh0aGlzLiRhdHRycy50YWJpbmRleCkgPyBudWxsIDogdGhpcy4kYXR0cnMudGFiaW5kZXgsXG4gICAgICAgICdhcmlhLWRpc2FibGVkJzogdGhpcy5kaXNhYmxlZCA/ICd0cnVlJyA6IG51bGxcbiAgICAgIH0pLFxuICAgICAgcHJvcHM6IHRoaXMuY29tcHV0ZWRQcm9wc1xuICAgIH07IC8vIEFkZCB0aGUgZXZlbnQgaGFuZGxlcnMuIFdlIG11c3QgdXNlIGBuYXZ0aXZlT25gIGZvclxuICAgIC8vIGA8cm91dGVyLWxpbms+YC9gPG51eHQtbGluaz5gIGluc3RlYWQgb2YgYG9uYFxuXG4gICAgY29tcG9uZW50RGF0YVtpc1JvdXRlckxpbmsgPyAnbmF0aXZlT24nIDogJ29uJ10gPSBfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLiRsaXN0ZW5lcnMsIHtcbiAgICAgIC8vIFdlIHdhbnQgdG8gb3ZlcndyaXRlIGFueSBjbGljayBoYW5kbGVyIHNpbmNlIG91ciBjYWxsYmFja1xuICAgICAgLy8gd2lsbCBpbnZva2UgdGhlIHVzZXIgc3VwcGxpZWQgaGFuZGxlcihzKSBpZiBgIXRoaXMuZGlzYWJsZWRgXG4gICAgICBjbGljazogdGhpcy5vbkNsaWNrXG4gICAgfSk7IC8vIElmIGhyZWYgYXR0cmlidXRlIGV4aXN0cyBvbiA8cm91dGVyLWxpbms+IChldmVuIHVuZGVmaW5lZCBvciBudWxsKSBpdCBmYWlscyB3b3JraW5nIG9uXG4gICAgLy8gU1NSLCBzbyB3ZSBleHBsaWNpdGx5IGFkZCBpdCBoZXJlIGlmIG5lZWRlZCAoaS5lLiBpZiBjb21wdXRlZEhyZWYoKSBpcyB0cnV0aHkpXG5cbiAgICBpZiAoaHJlZikge1xuICAgICAgY29tcG9uZW50RGF0YS5hdHRycy5ocmVmID0gaHJlZjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRW5zdXJlIHRoZSBwcm9wIEhSRUYgZG9lcyBub3QgZXhpc3QgZm9yIHJvdXRlciBsaW5rc1xuICAgICAgZGVsZXRlIGNvbXBvbmVudERhdGEucHJvcHMuaHJlZjtcbiAgICB9XG5cbiAgICByZXR1cm4gaCh0YWcsIGNvbXBvbmVudERhdGEsIHRoaXMubm9ybWFsaXplU2xvdCgnZGVmYXVsdCcpKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9saW5rL2xpbmsuanNcbi8vIG1vZHVsZSBpZCA9IDE0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///14\n"); /***/ }), /* 15 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__identity__ = __webpack_require__(104);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__object__ = __webpack_require__(8);\n\n\n\n/**\n * Given an array of properties or an object of property keys,\n * plucks all the values off the target object, returning a new object\n * that has props that reference the original prop values\n *\n * @param {{}|string[]} keysToPluck\n * @param {{}} objToPluck\n * @param {Function} transformFn\n * @return {{}}\n */\n\nvar pluckProps = function pluckProps(keysToPluck, objToPluck) {\n var transformFn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : __WEBPACK_IMPORTED_MODULE_0__identity__[\"a\" /* default */];\n return (Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"a\" /* isArray */])(keysToPluck) ? keysToPluck.slice() : Object(__WEBPACK_IMPORTED_MODULE_2__object__[\"j\" /* keys */])(keysToPluck)).reduce(function (memo, prop) {\n memo[transformFn(prop)] = objToPluck[prop];\n return memo;\n }, {});\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (pluckProps);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvcGx1Y2stcHJvcHMuanM/Y2FhYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDRTtBQUNKO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFVBQVU7QUFDdkIsY0FBYztBQUNkLFdBQVcsU0FBUztBQUNwQjtBQUNBOztBQUVBO0FBQ0Esd0ZBQXdGLDBEQUFRO0FBQ2hHLFVBQVUsaUVBQU8sc0NBQXNDLDZEQUFJO0FBQzNEO0FBQ0E7QUFDQSxHQUFHLElBQUk7QUFDUDs7QUFFZSxtRUFBVSIsImZpbGUiOiIxNS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpZGVudGl0eSBmcm9tICcuL2lkZW50aXR5JztcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICcuL2luc3BlY3QnO1xuaW1wb3J0IHsga2V5cyB9IGZyb20gJy4vb2JqZWN0Jztcbi8qKlxuICogR2l2ZW4gYW4gYXJyYXkgb2YgcHJvcGVydGllcyBvciBhbiBvYmplY3Qgb2YgcHJvcGVydHkga2V5cyxcbiAqIHBsdWNrcyBhbGwgdGhlIHZhbHVlcyBvZmYgdGhlIHRhcmdldCBvYmplY3QsIHJldHVybmluZyBhIG5ldyBvYmplY3RcbiAqIHRoYXQgaGFzIHByb3BzIHRoYXQgcmVmZXJlbmNlIHRoZSBvcmlnaW5hbCBwcm9wIHZhbHVlc1xuICpcbiAqIEBwYXJhbSB7e318c3RyaW5nW119IGtleXNUb1BsdWNrXG4gKiBAcGFyYW0ge3t9fSBvYmpUb1BsdWNrXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm1GblxuICogQHJldHVybiB7e319XG4gKi9cblxudmFyIHBsdWNrUHJvcHMgPSBmdW5jdGlvbiBwbHVja1Byb3BzKGtleXNUb1BsdWNrLCBvYmpUb1BsdWNrKSB7XG4gIHZhciB0cmFuc2Zvcm1GbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogaWRlbnRpdHk7XG4gIHJldHVybiAoaXNBcnJheShrZXlzVG9QbHVjaykgPyBrZXlzVG9QbHVjay5zbGljZSgpIDoga2V5cyhrZXlzVG9QbHVjaykpLnJlZHVjZShmdW5jdGlvbiAobWVtbywgcHJvcCkge1xuICAgIG1lbW9bdHJhbnNmb3JtRm4ocHJvcCldID0gb2JqVG9QbHVja1twcm9wXTtcbiAgICByZXR1cm4gbWVtbztcbiAgfSwge30pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgcGx1Y2tQcm9wcztcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS91dGlscy9wbHVjay1wcm9wcy5qc1xuLy8gbW9kdWxlIGlkID0gMTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///15\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__identity__ = __webpack_require__(106);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__object__ = __webpack_require__(8);\n\n\n\n/**\n * Given an array of properties or an object of property keys,\n * plucks all the values off the target object, returning a new object\n * that has props that reference the original prop values\n *\n * @param {{}|string[]} keysToPluck\n * @param {{}} objToPluck\n * @param {Function} transformFn\n * @return {{}}\n */\n\nvar pluckProps = function pluckProps(keysToPluck, objToPluck) {\n var transformFn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : __WEBPACK_IMPORTED_MODULE_0__identity__[\"a\" /* default */];\n return (Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"a\" /* isArray */])(keysToPluck) ? keysToPluck.slice() : Object(__WEBPACK_IMPORTED_MODULE_2__object__[\"j\" /* keys */])(keysToPluck)).reduce(function (memo, prop) {\n memo[transformFn(prop)] = objToPluck[prop];\n return memo;\n }, {});\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (pluckProps);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvcGx1Y2stcHJvcHMuanM/Y2FhYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDRTtBQUNKO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFVBQVU7QUFDdkIsY0FBYztBQUNkLFdBQVcsU0FBUztBQUNwQjtBQUNBOztBQUVBO0FBQ0Esd0ZBQXdGLDBEQUFRO0FBQ2hHLFVBQVUsaUVBQU8sc0NBQXNDLDZEQUFJO0FBQzNEO0FBQ0E7QUFDQSxHQUFHLElBQUk7QUFDUDs7QUFFZSxtRUFBVSIsImZpbGUiOiIxNS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpZGVudGl0eSBmcm9tICcuL2lkZW50aXR5JztcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICcuL2luc3BlY3QnO1xuaW1wb3J0IHsga2V5cyB9IGZyb20gJy4vb2JqZWN0Jztcbi8qKlxuICogR2l2ZW4gYW4gYXJyYXkgb2YgcHJvcGVydGllcyBvciBhbiBvYmplY3Qgb2YgcHJvcGVydHkga2V5cyxcbiAqIHBsdWNrcyBhbGwgdGhlIHZhbHVlcyBvZmYgdGhlIHRhcmdldCBvYmplY3QsIHJldHVybmluZyBhIG5ldyBvYmplY3RcbiAqIHRoYXQgaGFzIHByb3BzIHRoYXQgcmVmZXJlbmNlIHRoZSBvcmlnaW5hbCBwcm9wIHZhbHVlc1xuICpcbiAqIEBwYXJhbSB7e318c3RyaW5nW119IGtleXNUb1BsdWNrXG4gKiBAcGFyYW0ge3t9fSBvYmpUb1BsdWNrXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm1GblxuICogQHJldHVybiB7e319XG4gKi9cblxudmFyIHBsdWNrUHJvcHMgPSBmdW5jdGlvbiBwbHVja1Byb3BzKGtleXNUb1BsdWNrLCBvYmpUb1BsdWNrKSB7XG4gIHZhciB0cmFuc2Zvcm1GbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogaWRlbnRpdHk7XG4gIHJldHVybiAoaXNBcnJheShrZXlzVG9QbHVjaykgPyBrZXlzVG9QbHVjay5zbGljZSgpIDoga2V5cyhrZXlzVG9QbHVjaykpLnJlZHVjZShmdW5jdGlvbiAobWVtbywgcHJvcCkge1xuICAgIG1lbW9bdHJhbnNmb3JtRm4ocHJvcCldID0gb2JqVG9QbHVja1twcm9wXTtcbiAgICByZXR1cm4gbWVtbztcbiAgfSwge30pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgcGx1Y2tQcm9wcztcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS91dGlscy9wbHVjay1wcm9wcy5qc1xuLy8gbW9kdWxlIGlkID0gMTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///15\n"); /***/ }), /* 16 */ @@ -227,7 +227,7 @@ eval("/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAu /* 23 */ /***/ (function(module, exports, __webpack_require__) { -eval("/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\nvar listToStyles = __webpack_require__(229)\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nmodule.exports = function (parentId, list, _isProduction, _options) {\n isProduction = _isProduction\n\n options = _options || {}\n\n var styles = listToStyles(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = listToStyles(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n if (options.ssrId) {\n styleElement.setAttribute(ssrIdKey, obj.id)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzP2FlMzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsaUJBQWlCO0FBQzNCO0FBQ0E7O0FBRUEsbUJBQW1CLG1CQUFPLENBQUMsR0FBZ0I7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLG1CQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxtQkFBbUIsc0JBQXNCO0FBQ3pDO0FBQ0E7QUFDQSx1QkFBdUIsMkJBQTJCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLG1CQUFtQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiwyQkFBMkI7QUFDaEQ7QUFDQTtBQUNBLFlBQVksdUJBQXVCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxxQkFBcUIsdUJBQXVCO0FBQzVDO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlEO0FBQ3pEOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjIzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuICBNb2RpZmllZCBieSBFdmFuIFlvdSBAeXl4OTkwODAzXG4qL1xuXG52YXIgaGFzRG9jdW1lbnQgPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnXG5cbmlmICh0eXBlb2YgREVCVUcgIT09ICd1bmRlZmluZWQnICYmIERFQlVHKSB7XG4gIGlmICghaGFzRG9jdW1lbnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ3Z1ZS1zdHlsZS1sb2FkZXIgY2Fubm90IGJlIHVzZWQgaW4gYSBub24tYnJvd3NlciBlbnZpcm9ubWVudC4gJyArXG4gICAgXCJVc2UgeyB0YXJnZXQ6ICdub2RlJyB9IGluIHlvdXIgV2VicGFjayBjb25maWcgdG8gaW5kaWNhdGUgYSBzZXJ2ZXItcmVuZGVyaW5nIGVudmlyb25tZW50LlwiXG4gICkgfVxufVxuXG52YXIgbGlzdFRvU3R5bGVzID0gcmVxdWlyZSgnLi9saXN0VG9TdHlsZXMnKVxuXG4vKlxudHlwZSBTdHlsZU9iamVjdCA9IHtcbiAgaWQ6IG51bWJlcjtcbiAgcGFydHM6IEFycmF5PFN0eWxlT2JqZWN0UGFydD5cbn1cblxudHlwZSBTdHlsZU9iamVjdFBhcnQgPSB7XG4gIGNzczogc3RyaW5nO1xuICBtZWRpYTogc3RyaW5nO1xuICBzb3VyY2VNYXA6ID9zdHJpbmdcbn1cbiovXG5cbnZhciBzdHlsZXNJbkRvbSA9IHsvKlxuICBbaWQ6IG51bWJlcl06IHtcbiAgICBpZDogbnVtYmVyLFxuICAgIHJlZnM6IG51bWJlcixcbiAgICBwYXJ0czogQXJyYXk8KG9iaj86IFN0eWxlT2JqZWN0UGFydCkgPT4gdm9pZD5cbiAgfVxuKi99XG5cbnZhciBoZWFkID0gaGFzRG9jdW1lbnQgJiYgKGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXSlcbnZhciBzaW5nbGV0b25FbGVtZW50ID0gbnVsbFxudmFyIHNpbmdsZXRvbkNvdW50ZXIgPSAwXG52YXIgaXNQcm9kdWN0aW9uID0gZmFsc2VcbnZhciBub29wID0gZnVuY3Rpb24gKCkge31cbnZhciBvcHRpb25zID0gbnVsbFxudmFyIHNzcklkS2V5ID0gJ2RhdGEtdnVlLXNzci1pZCdcblxuLy8gRm9yY2Ugc2luZ2xlLXRhZyBzb2x1dGlvbiBvbiBJRTYtOSwgd2hpY2ggaGFzIGEgaGFyZCBsaW1pdCBvbiB0aGUgIyBvZiA8c3R5bGU+XG4vLyB0YWdzIGl0IHdpbGwgYWxsb3cgb24gYSBwYWdlXG52YXIgaXNPbGRJRSA9IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC9tc2llIFs2LTldXFxiLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSlcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocGFyZW50SWQsIGxpc3QsIF9pc1Byb2R1Y3Rpb24sIF9vcHRpb25zKSB7XG4gIGlzUHJvZHVjdGlvbiA9IF9pc1Byb2R1Y3Rpb25cblxuICBvcHRpb25zID0gX29wdGlvbnMgfHwge31cblxuICB2YXIgc3R5bGVzID0gbGlzdFRvU3R5bGVzKHBhcmVudElkLCBsaXN0KVxuICBhZGRTdHlsZXNUb0RvbShzdHlsZXMpXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZSAobmV3TGlzdCkge1xuICAgIHZhciBtYXlSZW1vdmUgPSBbXVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaXRlbSA9IHN0eWxlc1tpXVxuICAgICAgdmFyIGRvbVN0eWxlID0gc3R5bGVzSW5Eb21baXRlbS5pZF1cbiAgICAgIGRvbVN0eWxlLnJlZnMtLVxuICAgICAgbWF5UmVtb3ZlLnB1c2goZG9tU3R5bGUpXG4gICAgfVxuICAgIGlmIChuZXdMaXN0KSB7XG4gICAgICBzdHlsZXMgPSBsaXN0VG9TdHlsZXMocGFyZW50SWQsIG5ld0xpc3QpXG4gICAgICBhZGRTdHlsZXNUb0RvbShzdHlsZXMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlcyA9IFtdXG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF5UmVtb3ZlLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZG9tU3R5bGUgPSBtYXlSZW1vdmVbaV1cbiAgICAgIGlmIChkb21TdHlsZS5yZWZzID09PSAwKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZG9tU3R5bGUucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBkb21TdHlsZS5wYXJ0c1tqXSgpXG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlIHN0eWxlc0luRG9tW2RvbVN0eWxlLmlkXVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRTdHlsZXNUb0RvbSAoc3R5bGVzIC8qIEFycmF5PFN0eWxlT2JqZWN0PiAqLykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gc3R5bGVzW2ldXG4gICAgdmFyIGRvbVN0eWxlID0gc3R5bGVzSW5Eb21baXRlbS5pZF1cbiAgICBpZiAoZG9tU3R5bGUpIHtcbiAgICAgIGRvbVN0eWxlLnJlZnMrK1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBkb21TdHlsZS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICBkb21TdHlsZS5wYXJ0c1tqXShpdGVtLnBhcnRzW2pdKVxuICAgICAgfVxuICAgICAgZm9yICg7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGRvbVN0eWxlLnBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSkpXG4gICAgICB9XG4gICAgICBpZiAoZG9tU3R5bGUucGFydHMubGVuZ3RoID4gaXRlbS5wYXJ0cy5sZW5ndGgpIHtcbiAgICAgICAgZG9tU3R5bGUucGFydHMubGVuZ3RoID0gaXRlbS5wYXJ0cy5sZW5ndGhcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBhcnRzID0gW11cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaXRlbS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICBwYXJ0cy5wdXNoKGFkZFN0eWxlKGl0ZW0ucGFydHNbal0pKVxuICAgICAgfVxuICAgICAgc3R5bGVzSW5Eb21baXRlbS5pZF0gPSB7IGlkOiBpdGVtLmlkLCByZWZzOiAxLCBwYXJ0czogcGFydHMgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTdHlsZUVsZW1lbnQgKCkge1xuICB2YXIgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKVxuICBzdHlsZUVsZW1lbnQudHlwZSA9ICd0ZXh0L2NzcydcbiAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpXG4gIHJldHVybiBzdHlsZUVsZW1lbnRcbn1cblxuZnVuY3Rpb24gYWRkU3R5bGUgKG9iaiAvKiBTdHlsZU9iamVjdFBhcnQgKi8pIHtcbiAgdmFyIHVwZGF0ZSwgcmVtb3ZlXG4gIHZhciBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzdHlsZVsnICsgc3NySWRLZXkgKyAnfj1cIicgKyBvYmouaWQgKyAnXCJdJylcblxuICBpZiAoc3R5bGVFbGVtZW50KSB7XG4gICAgaWYgKGlzUHJvZHVjdGlvbikge1xuICAgICAgLy8gaGFzIFNTUiBzdHlsZXMgYW5kIGluIHByb2R1Y3Rpb24gbW9kZS5cbiAgICAgIC8vIHNpbXBseSBkbyBub3RoaW5nLlxuICAgICAgcmV0dXJuIG5vb3BcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaGFzIFNTUiBzdHlsZXMgYnV0IGluIGRldiBtb2RlLlxuICAgICAgLy8gZm9yIHNvbWUgcmVhc29uIENocm9tZSBjYW4ndCBoYW5kbGUgc291cmNlIG1hcCBpbiBzZXJ2ZXItcmVuZGVyZWRcbiAgICAgIC8vIHN0eWxlIHRhZ3MgLSBzb3VyY2UgbWFwcyBpbiA8c3R5bGU+IG9ubHkgd29ya3MgaWYgdGhlIHN0eWxlIHRhZyBpc1xuICAgICAgLy8gY3JlYXRlZCBhbmQgaW5zZXJ0ZWQgZHluYW1pY2FsbHkuIFNvIHdlIHJlbW92ZSB0aGUgc2VydmVyIHJlbmRlcmVkXG4gICAgICAvLyBzdHlsZXMgYW5kIGluamVjdCBuZXcgb25lcy5cbiAgICAgIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudClcbiAgICB9XG4gIH1cblxuICBpZiAoaXNPbGRJRSkge1xuICAgIC8vIHVzZSBzaW5nbGV0b24gbW9kZSBmb3IgSUU5LlxuICAgIHZhciBzdHlsZUluZGV4ID0gc2luZ2xldG9uQ291bnRlcisrXG4gICAgc3R5bGVFbGVtZW50ID0gc2luZ2xldG9uRWxlbWVudCB8fCAoc2luZ2xldG9uRWxlbWVudCA9IGNyZWF0ZVN0eWxlRWxlbWVudCgpKVxuICAgIHVwZGF0ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZUVsZW1lbnQsIHN0eWxlSW5kZXgsIGZhbHNlKVxuICAgIHJlbW92ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZUVsZW1lbnQsIHN0eWxlSW5kZXgsIHRydWUpXG4gIH0gZWxzZSB7XG4gICAgLy8gdXNlIG11bHRpLXN0eWxlLXRhZyBtb2RlIGluIGFsbCBvdGhlciBjYXNlc1xuICAgIHN0eWxlRWxlbWVudCA9IGNyZWF0ZVN0eWxlRWxlbWVudCgpXG4gICAgdXBkYXRlID0gYXBwbHlUb1RhZy5iaW5kKG51bGwsIHN0eWxlRWxlbWVudClcbiAgICByZW1vdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpXG4gICAgfVxuICB9XG5cbiAgdXBkYXRlKG9iailcblxuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlU3R5bGUgKG5ld09iaiAvKiBTdHlsZU9iamVjdFBhcnQgKi8pIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJlxuICAgICAgICAgIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmXG4gICAgICAgICAgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHVwZGF0ZShvYmogPSBuZXdPYmopXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZSgpXG4gICAgfVxuICB9XG59XG5cbnZhciByZXBsYWNlVGV4dCA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciB0ZXh0U3RvcmUgPSBbXVxuXG4gIHJldHVybiBmdW5jdGlvbiAoaW5kZXgsIHJlcGxhY2VtZW50KSB7XG4gICAgdGV4dFN0b3JlW2luZGV4XSA9IHJlcGxhY2VtZW50XG4gICAgcmV0dXJuIHRleHRTdG9yZS5maWx0ZXIoQm9vbGVhbikuam9pbignXFxuJylcbiAgfVxufSkoKVxuXG5mdW5jdGlvbiBhcHBseVRvU2luZ2xldG9uVGFnIChzdHlsZUVsZW1lbnQsIGluZGV4LCByZW1vdmUsIG9iaikge1xuICB2YXIgY3NzID0gcmVtb3ZlID8gJycgOiBvYmouY3NzXG5cbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IHJlcGxhY2VUZXh0KGluZGV4LCBjc3MpXG4gIH0gZWxzZSB7XG4gICAgdmFyIGNzc05vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpXG4gICAgdmFyIGNoaWxkTm9kZXMgPSBzdHlsZUVsZW1lbnQuY2hpbGROb2Rlc1xuICAgIGlmIChjaGlsZE5vZGVzW2luZGV4XSkgc3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKGNoaWxkTm9kZXNbaW5kZXhdKVxuICAgIGlmIChjaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgc3R5bGVFbGVtZW50Lmluc2VydEJlZm9yZShjc3NOb2RlLCBjaGlsZE5vZGVzW2luZGV4XSlcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGNzc05vZGUpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFwcGx5VG9UYWcgKHN0eWxlRWxlbWVudCwgb2JqKSB7XG4gIHZhciBjc3MgPSBvYmouY3NzXG4gIHZhciBtZWRpYSA9IG9iai5tZWRpYVxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcFxuXG4gIGlmIChtZWRpYSkge1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ21lZGlhJywgbWVkaWEpXG4gIH1cbiAgaWYgKG9wdGlvbnMuc3NySWQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKHNzcklkS2V5LCBvYmouaWQpXG4gIH1cblxuICBpZiAoc291cmNlTWFwKSB7XG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9kZXZ0b29scy9kb2NzL2phdmFzY3JpcHQtZGVidWdnaW5nXG4gICAgLy8gdGhpcyBtYWtlcyBzb3VyY2UgbWFwcyBpbnNpZGUgc3R5bGUgdGFncyB3b3JrIHByb3Blcmx5IGluIENocm9tZVxuICAgIGNzcyArPSAnXFxuLyojIHNvdXJjZVVSTD0nICsgc291cmNlTWFwLnNvdXJjZXNbMF0gKyAnICovJ1xuICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI2NjAzODc1XG4gICAgY3NzICs9ICdcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LCcgKyBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpICsgJyAqLydcbiAgfVxuXG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3NcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZClcbiAgICB9XG4gICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlc0NsaWVudC5qc1xuLy8gbW9kdWxlIGlkID0gMjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///23\n"); +eval("/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\nvar listToStyles = __webpack_require__(231)\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nmodule.exports = function (parentId, list, _isProduction, _options) {\n isProduction = _isProduction\n\n options = _options || {}\n\n var styles = listToStyles(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = listToStyles(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n if (options.ssrId) {\n styleElement.setAttribute(ssrIdKey, obj.id)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzP2FlMzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsaUJBQWlCO0FBQzNCO0FBQ0E7O0FBRUEsbUJBQW1CLG1CQUFPLENBQUMsR0FBZ0I7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLG1CQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxtQkFBbUIsc0JBQXNCO0FBQ3pDO0FBQ0E7QUFDQSx1QkFBdUIsMkJBQTJCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLG1CQUFtQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiwyQkFBMkI7QUFDaEQ7QUFDQTtBQUNBLFlBQVksdUJBQXVCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxxQkFBcUIsdUJBQXVCO0FBQzVDO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlEO0FBQ3pEOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjIzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuICBNb2RpZmllZCBieSBFdmFuIFlvdSBAeXl4OTkwODAzXG4qL1xuXG52YXIgaGFzRG9jdW1lbnQgPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnXG5cbmlmICh0eXBlb2YgREVCVUcgIT09ICd1bmRlZmluZWQnICYmIERFQlVHKSB7XG4gIGlmICghaGFzRG9jdW1lbnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ3Z1ZS1zdHlsZS1sb2FkZXIgY2Fubm90IGJlIHVzZWQgaW4gYSBub24tYnJvd3NlciBlbnZpcm9ubWVudC4gJyArXG4gICAgXCJVc2UgeyB0YXJnZXQ6ICdub2RlJyB9IGluIHlvdXIgV2VicGFjayBjb25maWcgdG8gaW5kaWNhdGUgYSBzZXJ2ZXItcmVuZGVyaW5nIGVudmlyb25tZW50LlwiXG4gICkgfVxufVxuXG52YXIgbGlzdFRvU3R5bGVzID0gcmVxdWlyZSgnLi9saXN0VG9TdHlsZXMnKVxuXG4vKlxudHlwZSBTdHlsZU9iamVjdCA9IHtcbiAgaWQ6IG51bWJlcjtcbiAgcGFydHM6IEFycmF5PFN0eWxlT2JqZWN0UGFydD5cbn1cblxudHlwZSBTdHlsZU9iamVjdFBhcnQgPSB7XG4gIGNzczogc3RyaW5nO1xuICBtZWRpYTogc3RyaW5nO1xuICBzb3VyY2VNYXA6ID9zdHJpbmdcbn1cbiovXG5cbnZhciBzdHlsZXNJbkRvbSA9IHsvKlxuICBbaWQ6IG51bWJlcl06IHtcbiAgICBpZDogbnVtYmVyLFxuICAgIHJlZnM6IG51bWJlcixcbiAgICBwYXJ0czogQXJyYXk8KG9iaj86IFN0eWxlT2JqZWN0UGFydCkgPT4gdm9pZD5cbiAgfVxuKi99XG5cbnZhciBoZWFkID0gaGFzRG9jdW1lbnQgJiYgKGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXSlcbnZhciBzaW5nbGV0b25FbGVtZW50ID0gbnVsbFxudmFyIHNpbmdsZXRvbkNvdW50ZXIgPSAwXG52YXIgaXNQcm9kdWN0aW9uID0gZmFsc2VcbnZhciBub29wID0gZnVuY3Rpb24gKCkge31cbnZhciBvcHRpb25zID0gbnVsbFxudmFyIHNzcklkS2V5ID0gJ2RhdGEtdnVlLXNzci1pZCdcblxuLy8gRm9yY2Ugc2luZ2xlLXRhZyBzb2x1dGlvbiBvbiBJRTYtOSwgd2hpY2ggaGFzIGEgaGFyZCBsaW1pdCBvbiB0aGUgIyBvZiA8c3R5bGU+XG4vLyB0YWdzIGl0IHdpbGwgYWxsb3cgb24gYSBwYWdlXG52YXIgaXNPbGRJRSA9IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC9tc2llIFs2LTldXFxiLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSlcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocGFyZW50SWQsIGxpc3QsIF9pc1Byb2R1Y3Rpb24sIF9vcHRpb25zKSB7XG4gIGlzUHJvZHVjdGlvbiA9IF9pc1Byb2R1Y3Rpb25cblxuICBvcHRpb25zID0gX29wdGlvbnMgfHwge31cblxuICB2YXIgc3R5bGVzID0gbGlzdFRvU3R5bGVzKHBhcmVudElkLCBsaXN0KVxuICBhZGRTdHlsZXNUb0RvbShzdHlsZXMpXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZSAobmV3TGlzdCkge1xuICAgIHZhciBtYXlSZW1vdmUgPSBbXVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaXRlbSA9IHN0eWxlc1tpXVxuICAgICAgdmFyIGRvbVN0eWxlID0gc3R5bGVzSW5Eb21baXRlbS5pZF1cbiAgICAgIGRvbVN0eWxlLnJlZnMtLVxuICAgICAgbWF5UmVtb3ZlLnB1c2goZG9tU3R5bGUpXG4gICAgfVxuICAgIGlmIChuZXdMaXN0KSB7XG4gICAgICBzdHlsZXMgPSBsaXN0VG9TdHlsZXMocGFyZW50SWQsIG5ld0xpc3QpXG4gICAgICBhZGRTdHlsZXNUb0RvbShzdHlsZXMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlcyA9IFtdXG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF5UmVtb3ZlLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZG9tU3R5bGUgPSBtYXlSZW1vdmVbaV1cbiAgICAgIGlmIChkb21TdHlsZS5yZWZzID09PSAwKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZG9tU3R5bGUucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBkb21TdHlsZS5wYXJ0c1tqXSgpXG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlIHN0eWxlc0luRG9tW2RvbVN0eWxlLmlkXVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRTdHlsZXNUb0RvbSAoc3R5bGVzIC8qIEFycmF5PFN0eWxlT2JqZWN0PiAqLykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gc3R5bGVzW2ldXG4gICAgdmFyIGRvbVN0eWxlID0gc3R5bGVzSW5Eb21baXRlbS5pZF1cbiAgICBpZiAoZG9tU3R5bGUpIHtcbiAgICAgIGRvbVN0eWxlLnJlZnMrK1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBkb21TdHlsZS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICBkb21TdHlsZS5wYXJ0c1tqXShpdGVtLnBhcnRzW2pdKVxuICAgICAgfVxuICAgICAgZm9yICg7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGRvbVN0eWxlLnBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSkpXG4gICAgICB9XG4gICAgICBpZiAoZG9tU3R5bGUucGFydHMubGVuZ3RoID4gaXRlbS5wYXJ0cy5sZW5ndGgpIHtcbiAgICAgICAgZG9tU3R5bGUucGFydHMubGVuZ3RoID0gaXRlbS5wYXJ0cy5sZW5ndGhcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBhcnRzID0gW11cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaXRlbS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICBwYXJ0cy5wdXNoKGFkZFN0eWxlKGl0ZW0ucGFydHNbal0pKVxuICAgICAgfVxuICAgICAgc3R5bGVzSW5Eb21baXRlbS5pZF0gPSB7IGlkOiBpdGVtLmlkLCByZWZzOiAxLCBwYXJ0czogcGFydHMgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTdHlsZUVsZW1lbnQgKCkge1xuICB2YXIgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKVxuICBzdHlsZUVsZW1lbnQudHlwZSA9ICd0ZXh0L2NzcydcbiAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpXG4gIHJldHVybiBzdHlsZUVsZW1lbnRcbn1cblxuZnVuY3Rpb24gYWRkU3R5bGUgKG9iaiAvKiBTdHlsZU9iamVjdFBhcnQgKi8pIHtcbiAgdmFyIHVwZGF0ZSwgcmVtb3ZlXG4gIHZhciBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzdHlsZVsnICsgc3NySWRLZXkgKyAnfj1cIicgKyBvYmouaWQgKyAnXCJdJylcblxuICBpZiAoc3R5bGVFbGVtZW50KSB7XG4gICAgaWYgKGlzUHJvZHVjdGlvbikge1xuICAgICAgLy8gaGFzIFNTUiBzdHlsZXMgYW5kIGluIHByb2R1Y3Rpb24gbW9kZS5cbiAgICAgIC8vIHNpbXBseSBkbyBub3RoaW5nLlxuICAgICAgcmV0dXJuIG5vb3BcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaGFzIFNTUiBzdHlsZXMgYnV0IGluIGRldiBtb2RlLlxuICAgICAgLy8gZm9yIHNvbWUgcmVhc29uIENocm9tZSBjYW4ndCBoYW5kbGUgc291cmNlIG1hcCBpbiBzZXJ2ZXItcmVuZGVyZWRcbiAgICAgIC8vIHN0eWxlIHRhZ3MgLSBzb3VyY2UgbWFwcyBpbiA8c3R5bGU+IG9ubHkgd29ya3MgaWYgdGhlIHN0eWxlIHRhZyBpc1xuICAgICAgLy8gY3JlYXRlZCBhbmQgaW5zZXJ0ZWQgZHluYW1pY2FsbHkuIFNvIHdlIHJlbW92ZSB0aGUgc2VydmVyIHJlbmRlcmVkXG4gICAgICAvLyBzdHlsZXMgYW5kIGluamVjdCBuZXcgb25lcy5cbiAgICAgIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudClcbiAgICB9XG4gIH1cblxuICBpZiAoaXNPbGRJRSkge1xuICAgIC8vIHVzZSBzaW5nbGV0b24gbW9kZSBmb3IgSUU5LlxuICAgIHZhciBzdHlsZUluZGV4ID0gc2luZ2xldG9uQ291bnRlcisrXG4gICAgc3R5bGVFbGVtZW50ID0gc2luZ2xldG9uRWxlbWVudCB8fCAoc2luZ2xldG9uRWxlbWVudCA9IGNyZWF0ZVN0eWxlRWxlbWVudCgpKVxuICAgIHVwZGF0ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZUVsZW1lbnQsIHN0eWxlSW5kZXgsIGZhbHNlKVxuICAgIHJlbW92ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZUVsZW1lbnQsIHN0eWxlSW5kZXgsIHRydWUpXG4gIH0gZWxzZSB7XG4gICAgLy8gdXNlIG11bHRpLXN0eWxlLXRhZyBtb2RlIGluIGFsbCBvdGhlciBjYXNlc1xuICAgIHN0eWxlRWxlbWVudCA9IGNyZWF0ZVN0eWxlRWxlbWVudCgpXG4gICAgdXBkYXRlID0gYXBwbHlUb1RhZy5iaW5kKG51bGwsIHN0eWxlRWxlbWVudClcbiAgICByZW1vdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpXG4gICAgfVxuICB9XG5cbiAgdXBkYXRlKG9iailcblxuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlU3R5bGUgKG5ld09iaiAvKiBTdHlsZU9iamVjdFBhcnQgKi8pIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJlxuICAgICAgICAgIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmXG4gICAgICAgICAgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHVwZGF0ZShvYmogPSBuZXdPYmopXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZSgpXG4gICAgfVxuICB9XG59XG5cbnZhciByZXBsYWNlVGV4dCA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciB0ZXh0U3RvcmUgPSBbXVxuXG4gIHJldHVybiBmdW5jdGlvbiAoaW5kZXgsIHJlcGxhY2VtZW50KSB7XG4gICAgdGV4dFN0b3JlW2luZGV4XSA9IHJlcGxhY2VtZW50XG4gICAgcmV0dXJuIHRleHRTdG9yZS5maWx0ZXIoQm9vbGVhbikuam9pbignXFxuJylcbiAgfVxufSkoKVxuXG5mdW5jdGlvbiBhcHBseVRvU2luZ2xldG9uVGFnIChzdHlsZUVsZW1lbnQsIGluZGV4LCByZW1vdmUsIG9iaikge1xuICB2YXIgY3NzID0gcmVtb3ZlID8gJycgOiBvYmouY3NzXG5cbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IHJlcGxhY2VUZXh0KGluZGV4LCBjc3MpXG4gIH0gZWxzZSB7XG4gICAgdmFyIGNzc05vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpXG4gICAgdmFyIGNoaWxkTm9kZXMgPSBzdHlsZUVsZW1lbnQuY2hpbGROb2Rlc1xuICAgIGlmIChjaGlsZE5vZGVzW2luZGV4XSkgc3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKGNoaWxkTm9kZXNbaW5kZXhdKVxuICAgIGlmIChjaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgc3R5bGVFbGVtZW50Lmluc2VydEJlZm9yZShjc3NOb2RlLCBjaGlsZE5vZGVzW2luZGV4XSlcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGNzc05vZGUpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFwcGx5VG9UYWcgKHN0eWxlRWxlbWVudCwgb2JqKSB7XG4gIHZhciBjc3MgPSBvYmouY3NzXG4gIHZhciBtZWRpYSA9IG9iai5tZWRpYVxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcFxuXG4gIGlmIChtZWRpYSkge1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ21lZGlhJywgbWVkaWEpXG4gIH1cbiAgaWYgKG9wdGlvbnMuc3NySWQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKHNzcklkS2V5LCBvYmouaWQpXG4gIH1cblxuICBpZiAoc291cmNlTWFwKSB7XG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9kZXZ0b29scy9kb2NzL2phdmFzY3JpcHQtZGVidWdnaW5nXG4gICAgLy8gdGhpcyBtYWtlcyBzb3VyY2UgbWFwcyBpbnNpZGUgc3R5bGUgdGFncyB3b3JrIHByb3Blcmx5IGluIENocm9tZVxuICAgIGNzcyArPSAnXFxuLyojIHNvdXJjZVVSTD0nICsgc291cmNlTWFwLnNvdXJjZXNbMF0gKyAnICovJ1xuICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI2NjAzODc1XG4gICAgY3NzICs9ICdcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LCcgKyBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpICsgJyAqLydcbiAgfVxuXG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3NcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZClcbiAgICB9XG4gICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlc0NsaWVudC5qc1xuLy8gbW9kdWxlIGlkID0gMjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///23\n"); /***/ }), /* 24 */ @@ -316,7 +316,7 @@ eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__upper_first__ = __we /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__identity__ = __webpack_require__(104);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__inspect__ = __webpack_require__(1);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n/**\n * Copies props from one array/object to a new array/object. Prop values\n * are also cloned as new references to prevent possible mutation of original\n * prop object values. Optionally accepts a function to transform the prop name.\n *\n * @param {[]|{}} props\n * @param {Function} transformFn\n */\n\nvar copyProps = function copyProps(props) {\n var transformFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : __WEBPACK_IMPORTED_MODULE_0__identity__[\"a\" /* default */];\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"a\" /* isArray */])(props)) {\n return props.map(transformFn);\n } // Props as an object.\n\n\n var copied = {};\n\n for (var prop in props) {\n /* istanbul ignore else */\n // eslint-disable-next-line no-prototype-builtins\n if (props.hasOwnProperty(prop)) {\n // If the prop value is an object, do a shallow clone to prevent\n // potential mutations to the original object.\n copied[transformFn(prop)] = Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"i\" /* isObject */])(props[prop]) ? _objectSpread({}, props[prop]) : props[prop];\n }\n }\n\n return copied;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (copyProps);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvY29weS1wcm9wcy5qcz81MGUyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ1k7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEI7O0FBRUE7QUFDQSx3RkFBd0YsMERBQVE7O0FBRWhHLE1BQU0saUVBQU87QUFDYjtBQUNBLEdBQUc7OztBQUdIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxrRUFBUSxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBOztBQUVlLGtFQUFTIiwiZmlsZSI6IjM2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IGlkZW50aXR5IGZyb20gJy4vaWRlbnRpdHknO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNPYmplY3QgfSBmcm9tICcuL2luc3BlY3QnO1xuLyoqXG4gKiBDb3BpZXMgcHJvcHMgZnJvbSBvbmUgYXJyYXkvb2JqZWN0IHRvIGEgbmV3IGFycmF5L29iamVjdC4gUHJvcCB2YWx1ZXNcbiAqIGFyZSBhbHNvIGNsb25lZCBhcyBuZXcgcmVmZXJlbmNlcyB0byBwcmV2ZW50IHBvc3NpYmxlIG11dGF0aW9uIG9mIG9yaWdpbmFsXG4gKiBwcm9wIG9iamVjdCB2YWx1ZXMuIE9wdGlvbmFsbHkgYWNjZXB0cyBhIGZ1bmN0aW9uIHRvIHRyYW5zZm9ybSB0aGUgcHJvcCBuYW1lLlxuICpcbiAqIEBwYXJhbSB7W118e319IHByb3BzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm1GblxuICovXG5cbnZhciBjb3B5UHJvcHMgPSBmdW5jdGlvbiBjb3B5UHJvcHMocHJvcHMpIHtcbiAgdmFyIHRyYW5zZm9ybUZuID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBpZGVudGl0eTtcblxuICBpZiAoaXNBcnJheShwcm9wcykpIHtcbiAgICByZXR1cm4gcHJvcHMubWFwKHRyYW5zZm9ybUZuKTtcbiAgfSAvLyBQcm9wcyBhcyBhbiBvYmplY3QuXG5cblxuICB2YXIgY29waWVkID0ge307XG5cbiAgZm9yICh2YXIgcHJvcCBpbiBwcm9wcykge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgIGlmIChwcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgLy8gSWYgdGhlIHByb3AgdmFsdWUgaXMgYW4gb2JqZWN0LCBkbyBhIHNoYWxsb3cgY2xvbmUgdG8gcHJldmVudFxuICAgICAgLy8gcG90ZW50aWFsIG11dGF0aW9ucyB0byB0aGUgb3JpZ2luYWwgb2JqZWN0LlxuICAgICAgY29waWVkW3RyYW5zZm9ybUZuKHByb3ApXSA9IGlzT2JqZWN0KHByb3BzW3Byb3BdKSA/IF9vYmplY3RTcHJlYWQoe30sIHByb3BzW3Byb3BdKSA6IHByb3BzW3Byb3BdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb3BpZWQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb3B5UHJvcHM7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvY29weS1wcm9wcy5qc1xuLy8gbW9kdWxlIGlkID0gMzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///36\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__identity__ = __webpack_require__(106);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__inspect__ = __webpack_require__(1);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n/**\n * Copies props from one array/object to a new array/object. Prop values\n * are also cloned as new references to prevent possible mutation of original\n * prop object values. Optionally accepts a function to transform the prop name.\n *\n * @param {[]|{}} props\n * @param {Function} transformFn\n */\n\nvar copyProps = function copyProps(props) {\n var transformFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : __WEBPACK_IMPORTED_MODULE_0__identity__[\"a\" /* default */];\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"a\" /* isArray */])(props)) {\n return props.map(transformFn);\n } // Props as an object.\n\n\n var copied = {};\n\n for (var prop in props) {\n /* istanbul ignore else */\n // eslint-disable-next-line no-prototype-builtins\n if (props.hasOwnProperty(prop)) {\n // If the prop value is an object, do a shallow clone to prevent\n // potential mutations to the original object.\n copied[transformFn(prop)] = Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"i\" /* isObject */])(props[prop]) ? _objectSpread({}, props[prop]) : props[prop];\n }\n }\n\n return copied;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (copyProps);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvY29weS1wcm9wcy5qcz81MGUyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ1k7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEI7O0FBRUE7QUFDQSx3RkFBd0YsMERBQVE7O0FBRWhHLE1BQU0saUVBQU87QUFDYjtBQUNBLEdBQUc7OztBQUdIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxrRUFBUSxnQ0FBZ0M7QUFDMUU7QUFDQTs7QUFFQTtBQUNBOztBQUVlLGtFQUFTIiwiZmlsZSI6IjM2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IGlkZW50aXR5IGZyb20gJy4vaWRlbnRpdHknO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNPYmplY3QgfSBmcm9tICcuL2luc3BlY3QnO1xuLyoqXG4gKiBDb3BpZXMgcHJvcHMgZnJvbSBvbmUgYXJyYXkvb2JqZWN0IHRvIGEgbmV3IGFycmF5L29iamVjdC4gUHJvcCB2YWx1ZXNcbiAqIGFyZSBhbHNvIGNsb25lZCBhcyBuZXcgcmVmZXJlbmNlcyB0byBwcmV2ZW50IHBvc3NpYmxlIG11dGF0aW9uIG9mIG9yaWdpbmFsXG4gKiBwcm9wIG9iamVjdCB2YWx1ZXMuIE9wdGlvbmFsbHkgYWNjZXB0cyBhIGZ1bmN0aW9uIHRvIHRyYW5zZm9ybSB0aGUgcHJvcCBuYW1lLlxuICpcbiAqIEBwYXJhbSB7W118e319IHByb3BzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm1GblxuICovXG5cbnZhciBjb3B5UHJvcHMgPSBmdW5jdGlvbiBjb3B5UHJvcHMocHJvcHMpIHtcbiAgdmFyIHRyYW5zZm9ybUZuID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBpZGVudGl0eTtcblxuICBpZiAoaXNBcnJheShwcm9wcykpIHtcbiAgICByZXR1cm4gcHJvcHMubWFwKHRyYW5zZm9ybUZuKTtcbiAgfSAvLyBQcm9wcyBhcyBhbiBvYmplY3QuXG5cblxuICB2YXIgY29waWVkID0ge307XG5cbiAgZm9yICh2YXIgcHJvcCBpbiBwcm9wcykge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgIGlmIChwcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgLy8gSWYgdGhlIHByb3AgdmFsdWUgaXMgYW4gb2JqZWN0LCBkbyBhIHNoYWxsb3cgY2xvbmUgdG8gcHJldmVudFxuICAgICAgLy8gcG90ZW50aWFsIG11dGF0aW9ucyB0byB0aGUgb3JpZ2luYWwgb2JqZWN0LlxuICAgICAgY29waWVkW3RyYW5zZm9ybUZuKHByb3ApXSA9IGlzT2JqZWN0KHByb3BzW3Byb3BdKSA/IF9vYmplY3RTcHJlYWQoe30sIHByb3BzW3Byb3BdKSA6IHByb3BzW3Byb3BdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb3BpZWQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb3B5UHJvcHM7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvY29weS1wcm9wcy5qc1xuLy8gbW9kdWxlIGlkID0gMzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///36\n"); /***/ }), /* 37 */ @@ -344,7 +344,7 @@ eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__dom__ = __webpack_re /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return DropdownPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__dropdown__ = __webpack_require__(65);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__dropdown_item__ = __webpack_require__(126);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__dropdown_item_button__ = __webpack_require__(127);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__dropdown_header__ = __webpack_require__(128);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__dropdown_divider__ = __webpack_require__(129);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__dropdown_form__ = __webpack_require__(130);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__dropdown_text__ = __webpack_require__(131);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__dropdown_group__ = __webpack_require__(132);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BDropdown */\n/* unused harmony reexport BDropdownItem */\n/* unused harmony reexport BDropdownItemButton */\n/* unused harmony reexport BDropdownHeader */\n/* unused harmony reexport BDropdownDivider */\n/* unused harmony reexport BDropdownForm */\n/* unused harmony reexport BDropdownText */\n/* unused harmony reexport BDropdownGroup */\n\n\n\n\n\n\n\n\n\nvar DropdownPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_8__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BDropdown: __WEBPACK_IMPORTED_MODULE_0__dropdown__[\"a\" /* BDropdown */],\n BDd: __WEBPACK_IMPORTED_MODULE_0__dropdown__[\"a\" /* BDropdown */],\n BDropdownItem: __WEBPACK_IMPORTED_MODULE_1__dropdown_item__[\"a\" /* BDropdownItem */],\n BDdItem: __WEBPACK_IMPORTED_MODULE_1__dropdown_item__[\"a\" /* BDropdownItem */],\n BDropdownItemButton: __WEBPACK_IMPORTED_MODULE_2__dropdown_item_button__[\"a\" /* BDropdownItemButton */],\n BDropdownItemBtn: __WEBPACK_IMPORTED_MODULE_2__dropdown_item_button__[\"a\" /* BDropdownItemButton */],\n BDdItemButton: __WEBPACK_IMPORTED_MODULE_2__dropdown_item_button__[\"a\" /* BDropdownItemButton */],\n BDdItemBtn: __WEBPACK_IMPORTED_MODULE_2__dropdown_item_button__[\"a\" /* BDropdownItemButton */],\n BDropdownHeader: __WEBPACK_IMPORTED_MODULE_3__dropdown_header__[\"a\" /* BDropdownHeader */],\n BDdHeader: __WEBPACK_IMPORTED_MODULE_3__dropdown_header__[\"a\" /* BDropdownHeader */],\n BDropdownDivider: __WEBPACK_IMPORTED_MODULE_4__dropdown_divider__[\"a\" /* BDropdownDivider */],\n BDdDivider: __WEBPACK_IMPORTED_MODULE_4__dropdown_divider__[\"a\" /* BDropdownDivider */],\n BDropdownForm: __WEBPACK_IMPORTED_MODULE_5__dropdown_form__[\"a\" /* BDropdownForm */],\n BDdForm: __WEBPACK_IMPORTED_MODULE_5__dropdown_form__[\"a\" /* BDropdownForm */],\n BDropdownText: __WEBPACK_IMPORTED_MODULE_6__dropdown_text__[\"a\" /* BDropdownText */],\n BDdText: __WEBPACK_IMPORTED_MODULE_6__dropdown_text__[\"a\" /* BDropdownText */],\n BDropdownGroup: __WEBPACK_IMPORTED_MODULE_7__dropdown_group__[\"a\" /* BDropdownGroup */],\n BDdGroup: __WEBPACK_IMPORTED_MODULE_7__dropdown_group__[\"a\" /* BDropdownGroup */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9pbmRleC5qcz8yMzA0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF1QztBQUNTO0FBQ2E7QUFDVDtBQUNFO0FBQ047QUFDQTtBQUNFO0FBQ0U7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxlQUFlLDREQUFTO0FBQ3hCLFNBQVMsNERBQVM7QUFDbEIsbUJBQW1CLHFFQUFhO0FBQ2hDLGFBQWEscUVBQWE7QUFDMUIseUJBQXlCLGtGQUFtQjtBQUM1QyxzQkFBc0Isa0ZBQW1CO0FBQ3pDLG1CQUFtQixrRkFBbUI7QUFDdEMsZ0JBQWdCLGtGQUFtQjtBQUNuQyxxQkFBcUIseUVBQWU7QUFDcEMsZUFBZSx5RUFBZTtBQUM5QixzQkFBc0IsMkVBQWdCO0FBQ3RDLGdCQUFnQiwyRUFBZ0I7QUFDaEMsbUJBQW1CLHFFQUFhO0FBQ2hDLGFBQWEscUVBQWE7QUFDMUIsbUJBQW1CLHFFQUFhO0FBQ2hDLGFBQWEscUVBQWE7QUFDMUIsb0JBQW9CLHVFQUFjO0FBQ2xDLGNBQWMsdUVBQWM7QUFDNUI7QUFDQSxDQUFDIiwiZmlsZSI6IjQwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkRyb3Bkb3duIH0gZnJvbSAnLi9kcm9wZG93bic7XG5pbXBvcnQgeyBCRHJvcGRvd25JdGVtIH0gZnJvbSAnLi9kcm9wZG93bi1pdGVtJztcbmltcG9ydCB7IEJEcm9wZG93bkl0ZW1CdXR0b24gfSBmcm9tICcuL2Ryb3Bkb3duLWl0ZW0tYnV0dG9uJztcbmltcG9ydCB7IEJEcm9wZG93bkhlYWRlciB9IGZyb20gJy4vZHJvcGRvd24taGVhZGVyJztcbmltcG9ydCB7IEJEcm9wZG93bkRpdmlkZXIgfSBmcm9tICcuL2Ryb3Bkb3duLWRpdmlkZXInO1xuaW1wb3J0IHsgQkRyb3Bkb3duRm9ybSB9IGZyb20gJy4vZHJvcGRvd24tZm9ybSc7XG5pbXBvcnQgeyBCRHJvcGRvd25UZXh0IH0gZnJvbSAnLi9kcm9wZG93bi10ZXh0JztcbmltcG9ydCB7IEJEcm9wZG93bkdyb3VwIH0gZnJvbSAnLi9kcm9wZG93bi1ncm91cCc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgRHJvcGRvd25QbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCRHJvcGRvd246IEJEcm9wZG93bixcbiAgICBCRGQ6IEJEcm9wZG93bixcbiAgICBCRHJvcGRvd25JdGVtOiBCRHJvcGRvd25JdGVtLFxuICAgIEJEZEl0ZW06IEJEcm9wZG93bkl0ZW0sXG4gICAgQkRyb3Bkb3duSXRlbUJ1dHRvbjogQkRyb3Bkb3duSXRlbUJ1dHRvbixcbiAgICBCRHJvcGRvd25JdGVtQnRuOiBCRHJvcGRvd25JdGVtQnV0dG9uLFxuICAgIEJEZEl0ZW1CdXR0b246IEJEcm9wZG93bkl0ZW1CdXR0b24sXG4gICAgQkRkSXRlbUJ0bjogQkRyb3Bkb3duSXRlbUJ1dHRvbixcbiAgICBCRHJvcGRvd25IZWFkZXI6IEJEcm9wZG93bkhlYWRlcixcbiAgICBCRGRIZWFkZXI6IEJEcm9wZG93bkhlYWRlcixcbiAgICBCRHJvcGRvd25EaXZpZGVyOiBCRHJvcGRvd25EaXZpZGVyLFxuICAgIEJEZERpdmlkZXI6IEJEcm9wZG93bkRpdmlkZXIsXG4gICAgQkRyb3Bkb3duRm9ybTogQkRyb3Bkb3duRm9ybSxcbiAgICBCRGRGb3JtOiBCRHJvcGRvd25Gb3JtLFxuICAgIEJEcm9wZG93blRleHQ6IEJEcm9wZG93blRleHQsXG4gICAgQkRkVGV4dDogQkRyb3Bkb3duVGV4dCxcbiAgICBCRHJvcGRvd25Hcm91cDogQkRyb3Bkb3duR3JvdXAsXG4gICAgQkRkR3JvdXA6IEJEcm9wZG93bkdyb3VwXG4gIH1cbn0pO1xuZXhwb3J0IHsgRHJvcGRvd25QbHVnaW4sIEJEcm9wZG93biwgQkRyb3Bkb3duSXRlbSwgQkRyb3Bkb3duSXRlbUJ1dHRvbiwgQkRyb3Bkb3duSGVhZGVyLCBCRHJvcGRvd25EaXZpZGVyLCBCRHJvcGRvd25Gb3JtLCBCRHJvcGRvd25UZXh0LCBCRHJvcGRvd25Hcm91cCB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvZHJvcGRvd24vaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDQwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///40\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return DropdownPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__dropdown__ = __webpack_require__(65);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__dropdown_item__ = __webpack_require__(128);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__dropdown_item_button__ = __webpack_require__(129);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__dropdown_header__ = __webpack_require__(130);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__dropdown_divider__ = __webpack_require__(131);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__dropdown_form__ = __webpack_require__(132);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__dropdown_text__ = __webpack_require__(133);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__dropdown_group__ = __webpack_require__(134);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BDropdown */\n/* unused harmony reexport BDropdownItem */\n/* unused harmony reexport BDropdownItemButton */\n/* unused harmony reexport BDropdownHeader */\n/* unused harmony reexport BDropdownDivider */\n/* unused harmony reexport BDropdownForm */\n/* unused harmony reexport BDropdownText */\n/* unused harmony reexport BDropdownGroup */\n\n\n\n\n\n\n\n\n\nvar DropdownPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_8__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BDropdown: __WEBPACK_IMPORTED_MODULE_0__dropdown__[\"a\" /* BDropdown */],\n BDd: __WEBPACK_IMPORTED_MODULE_0__dropdown__[\"a\" /* BDropdown */],\n BDropdownItem: __WEBPACK_IMPORTED_MODULE_1__dropdown_item__[\"a\" /* BDropdownItem */],\n BDdItem: __WEBPACK_IMPORTED_MODULE_1__dropdown_item__[\"a\" /* BDropdownItem */],\n BDropdownItemButton: __WEBPACK_IMPORTED_MODULE_2__dropdown_item_button__[\"a\" /* BDropdownItemButton */],\n BDropdownItemBtn: __WEBPACK_IMPORTED_MODULE_2__dropdown_item_button__[\"a\" /* BDropdownItemButton */],\n BDdItemButton: __WEBPACK_IMPORTED_MODULE_2__dropdown_item_button__[\"a\" /* BDropdownItemButton */],\n BDdItemBtn: __WEBPACK_IMPORTED_MODULE_2__dropdown_item_button__[\"a\" /* BDropdownItemButton */],\n BDropdownHeader: __WEBPACK_IMPORTED_MODULE_3__dropdown_header__[\"a\" /* BDropdownHeader */],\n BDdHeader: __WEBPACK_IMPORTED_MODULE_3__dropdown_header__[\"a\" /* BDropdownHeader */],\n BDropdownDivider: __WEBPACK_IMPORTED_MODULE_4__dropdown_divider__[\"a\" /* BDropdownDivider */],\n BDdDivider: __WEBPACK_IMPORTED_MODULE_4__dropdown_divider__[\"a\" /* BDropdownDivider */],\n BDropdownForm: __WEBPACK_IMPORTED_MODULE_5__dropdown_form__[\"a\" /* BDropdownForm */],\n BDdForm: __WEBPACK_IMPORTED_MODULE_5__dropdown_form__[\"a\" /* BDropdownForm */],\n BDropdownText: __WEBPACK_IMPORTED_MODULE_6__dropdown_text__[\"a\" /* BDropdownText */],\n BDdText: __WEBPACK_IMPORTED_MODULE_6__dropdown_text__[\"a\" /* BDropdownText */],\n BDropdownGroup: __WEBPACK_IMPORTED_MODULE_7__dropdown_group__[\"a\" /* BDropdownGroup */],\n BDdGroup: __WEBPACK_IMPORTED_MODULE_7__dropdown_group__[\"a\" /* BDropdownGroup */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9pbmRleC5qcz8yMzA0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF1QztBQUNTO0FBQ2E7QUFDVDtBQUNFO0FBQ047QUFDQTtBQUNFO0FBQ0U7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxlQUFlLDREQUFTO0FBQ3hCLFNBQVMsNERBQVM7QUFDbEIsbUJBQW1CLHFFQUFhO0FBQ2hDLGFBQWEscUVBQWE7QUFDMUIseUJBQXlCLGtGQUFtQjtBQUM1QyxzQkFBc0Isa0ZBQW1CO0FBQ3pDLG1CQUFtQixrRkFBbUI7QUFDdEMsZ0JBQWdCLGtGQUFtQjtBQUNuQyxxQkFBcUIseUVBQWU7QUFDcEMsZUFBZSx5RUFBZTtBQUM5QixzQkFBc0IsMkVBQWdCO0FBQ3RDLGdCQUFnQiwyRUFBZ0I7QUFDaEMsbUJBQW1CLHFFQUFhO0FBQ2hDLGFBQWEscUVBQWE7QUFDMUIsbUJBQW1CLHFFQUFhO0FBQ2hDLGFBQWEscUVBQWE7QUFDMUIsb0JBQW9CLHVFQUFjO0FBQ2xDLGNBQWMsdUVBQWM7QUFDNUI7QUFDQSxDQUFDIiwiZmlsZSI6IjQwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkRyb3Bkb3duIH0gZnJvbSAnLi9kcm9wZG93bic7XG5pbXBvcnQgeyBCRHJvcGRvd25JdGVtIH0gZnJvbSAnLi9kcm9wZG93bi1pdGVtJztcbmltcG9ydCB7IEJEcm9wZG93bkl0ZW1CdXR0b24gfSBmcm9tICcuL2Ryb3Bkb3duLWl0ZW0tYnV0dG9uJztcbmltcG9ydCB7IEJEcm9wZG93bkhlYWRlciB9IGZyb20gJy4vZHJvcGRvd24taGVhZGVyJztcbmltcG9ydCB7IEJEcm9wZG93bkRpdmlkZXIgfSBmcm9tICcuL2Ryb3Bkb3duLWRpdmlkZXInO1xuaW1wb3J0IHsgQkRyb3Bkb3duRm9ybSB9IGZyb20gJy4vZHJvcGRvd24tZm9ybSc7XG5pbXBvcnQgeyBCRHJvcGRvd25UZXh0IH0gZnJvbSAnLi9kcm9wZG93bi10ZXh0JztcbmltcG9ydCB7IEJEcm9wZG93bkdyb3VwIH0gZnJvbSAnLi9kcm9wZG93bi1ncm91cCc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgRHJvcGRvd25QbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCRHJvcGRvd246IEJEcm9wZG93bixcbiAgICBCRGQ6IEJEcm9wZG93bixcbiAgICBCRHJvcGRvd25JdGVtOiBCRHJvcGRvd25JdGVtLFxuICAgIEJEZEl0ZW06IEJEcm9wZG93bkl0ZW0sXG4gICAgQkRyb3Bkb3duSXRlbUJ1dHRvbjogQkRyb3Bkb3duSXRlbUJ1dHRvbixcbiAgICBCRHJvcGRvd25JdGVtQnRuOiBCRHJvcGRvd25JdGVtQnV0dG9uLFxuICAgIEJEZEl0ZW1CdXR0b246IEJEcm9wZG93bkl0ZW1CdXR0b24sXG4gICAgQkRkSXRlbUJ0bjogQkRyb3Bkb3duSXRlbUJ1dHRvbixcbiAgICBCRHJvcGRvd25IZWFkZXI6IEJEcm9wZG93bkhlYWRlcixcbiAgICBCRGRIZWFkZXI6IEJEcm9wZG93bkhlYWRlcixcbiAgICBCRHJvcGRvd25EaXZpZGVyOiBCRHJvcGRvd25EaXZpZGVyLFxuICAgIEJEZERpdmlkZXI6IEJEcm9wZG93bkRpdmlkZXIsXG4gICAgQkRyb3Bkb3duRm9ybTogQkRyb3Bkb3duRm9ybSxcbiAgICBCRGRGb3JtOiBCRHJvcGRvd25Gb3JtLFxuICAgIEJEcm9wZG93blRleHQ6IEJEcm9wZG93blRleHQsXG4gICAgQkRkVGV4dDogQkRyb3Bkb3duVGV4dCxcbiAgICBCRHJvcGRvd25Hcm91cDogQkRyb3Bkb3duR3JvdXAsXG4gICAgQkRkR3JvdXA6IEJEcm9wZG93bkdyb3VwXG4gIH1cbn0pO1xuZXhwb3J0IHsgRHJvcGRvd25QbHVnaW4sIEJEcm9wZG93biwgQkRyb3Bkb3duSXRlbSwgQkRyb3Bkb3duSXRlbUJ1dHRvbiwgQkRyb3Bkb3duSGVhZGVyLCBCRHJvcGRvd25EaXZpZGVyLCBCRHJvcGRvd25Gb3JtLCBCRHJvcGRvd25UZXh0LCBCRHJvcGRvd25Hcm91cCB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvZHJvcGRvd24vaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDQwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///40\n"); /***/ }), /* 41 */ @@ -414,7 +414,7 @@ eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* WEBPACK VAR INJECTION */(function(process, global, setImmediate) {/*!\n * Vue.js v2.6.10\n * (c) 2014-2019 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Generate a string containing static keys from compiler modules.\n */\nfunction genStaticKeys (modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || [])\n }, []).join(',')\n}\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Techinically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n toggleObserving(false);\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive$$1(vm, key, result[key]);\n }\n });\n toggleObserving(true);\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject)\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n // #6574 in case the inject object is observed...\n if (key === '__ob__') { continue }\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && hasOwn(source._provided, provideKey)) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n if (!children || !children.length) {\n return {}\n }\n var slots = {};\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.fnContext === context) &&\n data && data.slot != null\n ) {\n var name = data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n } else {\n slot.push(child);\n }\n } else {\n (slots.default || (slots.default = [])).push(child);\n }\n }\n // ignore slots that contains only whitespace\n for (var name$1 in slots) {\n if (slots[name$1].every(isWhitespace)) {\n delete slots[name$1];\n }\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\n/* */\n\nfunction normalizeScopedSlots (\n slots,\n normalSlots,\n prevSlots\n) {\n var res;\n var hasNormalSlots = Object.keys(normalSlots).length > 0;\n var isStable = slots ? !!slots.$stable : !hasNormalSlots;\n var key = slots && slots.$key;\n if (!slots) {\n res = {};\n } else if (slots._normalized) {\n // fast path 1: child component re-render only, parent did not change\n return slots._normalized\n } else if (\n isStable &&\n prevSlots &&\n prevSlots !== emptyObject &&\n key === prevSlots.$key &&\n !hasNormalSlots &&\n !prevSlots.$hasNormal\n ) {\n // fast path 2: stable scoped slots w/ no normal slots to proxy,\n // only need to normalize once\n return prevSlots\n } else {\n res = {};\n for (var key$1 in slots) {\n if (slots[key$1] && key$1[0] !== '$') {\n res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n }\n }\n }\n // expose normal slots on scopedSlots\n for (var key$2 in normalSlots) {\n if (!(key$2 in res)) {\n res[key$2] = proxyNormalSlot(normalSlots, key$2);\n }\n }\n // avoriaz seems to mock a non-extensible $scopedSlots object\n // and when that is passed down this would cause an error\n if (slots && Object.isExtensible(slots)) {\n (slots)._normalized = res;\n }\n def(res, '$stable', isStable);\n def(res, '$key', key);\n def(res, '$hasNormal', hasNormalSlots);\n return res\n}\n\nfunction normalizeScopedSlot(normalSlots, key, fn) {\n var normalized = function () {\n var res = arguments.length ? fn.apply(null, arguments) : fn({});\n res = res && typeof res === 'object' && !Array.isArray(res)\n ? [res] // single vnode\n : normalizeChildren(res);\n return res && (\n res.length === 0 ||\n (res.length === 1 && res[0].isComment) // #9658\n ) ? undefined\n : res\n };\n // this is a slot using the new v-slot syntax without scope. although it is\n // compiled as a scoped slot, render fn users would expect it to be present\n // on this.$slots because the usage is semantically a normal slot.\n if (fn.proxy) {\n Object.defineProperty(normalSlots, key, {\n get: normalized,\n enumerable: true,\n configurable: true\n });\n }\n return normalized\n}\n\nfunction proxyNormalSlot(slots, key) {\n return function () { return slots[key]; }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n if (hasSymbol && val[Symbol.iterator]) {\n ret = [];\n var iterator = val[Symbol.iterator]();\n var result = iterator.next();\n while (!result.done) {\n ret.push(render(result.value, ret.length));\n result = iterator.next();\n }\n } else {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n }\n if (!isDef(ret)) {\n ret = [];\n }\n (ret)._isVList = true;\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n nodes = scopedSlotFn(props) || fallback;\n } else {\n nodes = this.$slots[name] || fallback;\n }\n\n var target = props && props.slot;\n if (target) {\n return this.$createElement('template', { slot: target }, nodes)\n } else {\n return nodes\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\nfunction isKeyNotMatch (expect, actual) {\n if (Array.isArray(expect)) {\n return expect.indexOf(actual) === -1\n } else {\n return expect !== actual\n }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInKeyCode,\n eventKeyName,\n builtInKeyName\n) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName)\n } else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n var camelizedKey = camelize(key);\n var hyphenatedKey = hyphenate(key);\n if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n if (tree && !isInFor) {\n return tree\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = this.$options.staticRenderFns[index].call(\n this._renderProxy,\n null,\n this // for render fns generated for functional component templates\n );\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res,\n // the following are added in 2.6\n hasDynamicKeys,\n contentHashKey\n) {\n res = res || { $stable: !hasDynamicKeys };\n for (var i = 0; i < fns.length; i++) {\n var slot = fns[i];\n if (Array.isArray(slot)) {\n resolveScopedSlots(slot, res, hasDynamicKeys);\n } else if (slot) {\n // marker for reverse proxying v-slot without scope on this.$slots\n if (slot.proxy) {\n slot.fn.proxy = true;\n }\n res[slot.key] = slot.fn;\n }\n }\n if (contentHashKey) {\n (res).$key = contentHashKey;\n }\n return res\n}\n\n/* */\n\nfunction bindDynamicKeys (baseObj, values) {\n for (var i = 0; i < values.length; i += 2) {\n var key = values[i];\n if (typeof key === 'string' && key) {\n baseObj[values[i]] = values[i + 1];\n } else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n // null is a speical value for explicitly removing a binding\n warn(\n (\"Invalid value for dynamic directive argument (expected string or null): \" + key),\n this\n );\n }\n }\n return baseObj\n}\n\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier (value, symbol) {\n return typeof value === 'string' ? symbol + value : value\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n target._d = bindDynamicKeys;\n target._p = prependModifier;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var this$1 = this;\n\n var options = Ctor.options;\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm;\n if (hasOwn(parent, '_uid')) {\n contextVm = Object.create(parent);\n // $flow-disable-line\n contextVm._original = parent;\n } else {\n // the context vm passed in is a functional context as well.\n // in this case we want to make sure we are able to get a hold to the\n // real context instance.\n contextVm = parent;\n // $flow-disable-line\n parent = parent._original;\n }\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () {\n if (!this$1.$slots) {\n normalizeScopedSlots(\n data.scopedSlots,\n this$1.$slots = resolveSlots(children, parent)\n );\n }\n return this$1.$slots\n };\n\n Object.defineProperty(this, 'scopedSlots', ({\n enumerable: true,\n get: function get () {\n return normalizeScopedSlots(data.scopedSlots, this.slots())\n }\n }));\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode && !Array.isArray(vnode)) {\n vnode.fnScopeId = options._scopeId;\n vnode.fnContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)\n } else if (Array.isArray(vnode)) {\n var vnodes = normalizeChildren(vnode) || [];\n var res = new Array(vnodes.length);\n for (var i = 0; i < vnodes.length; i++) {\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n }\n return res\n }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {\n // #7817 clone node before setting fnContext, otherwise if the node is reused\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\n // that should not be matched to match.\n var clone = cloneVNode(vnode);\n clone.fnContext = contextVm;\n clone.fnOptions = options;\n if (process.env.NODE_ENV !== 'production') {\n (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n }\n if (data.slot) {\n (clone.data || (clone.data = {})).slot = data.slot;\n }\n return clone\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (vnode, hydrating) {\n if (\n vnode.componentInstance &&\n !vnode.componentInstance._isDestroyed &&\n vnode.data.keepAlive\n ) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n } else {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // install component management hooks onto the placeholder node\n installComponentHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent // activeInstance in lifecycle state\n) {\n var options = {\n _isComponent: true,\n _parentVnode: vnode,\n parent: parent\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n var hooks = data.hook || (data.hook = {});\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var existing = hooks[key];\n var toMerge = componentVNodeHooks[key];\n if (existing !== toMerge && !(existing && existing._merged)) {\n hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n }\n }\n}\n\nfunction mergeHook$1 (f1, f2) {\n var merged = function (a, b) {\n // flow complains about extra args which is why we use any\n f1(a, b);\n f2(a, b);\n };\n merged._merged = true;\n return merged\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input'\n ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n var existing = on[event];\n var callback = data.model.callback;\n if (isDef(existing)) {\n if (\n Array.isArray(existing)\n ? existing.indexOf(callback) === -1\n : existing !== callback\n ) {\n on[event] = [callback].concat(existing);\n }\n } else {\n on[event] = callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (process.env.NODE_ENV !== 'production' &&\n isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (Array.isArray(vnode)) {\n return vnode\n } else if (isDef(vnode)) {\n if (isDef(ns)) { applyNS(vnode, ns); }\n if (isDef(data)) { registerDeepBindings(data); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (\n isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n if (isObject(data.style)) {\n traverse(data.style);\n }\n if (isObject(data.class)) {\n traverse(data.class);\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n vm._staticTrees = null; // v-once cached trees\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nvar currentRenderingInstance = null;\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n if (_parentVnode) {\n vm.$scopedSlots = normalizeScopedSlots(\n _parentVnode.data.scopedSlots,\n vm.$slots,\n vm.$scopedSlots\n );\n }\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n // There's no need to maintain a stack becaues all render fns are called\n // separately from one another. Nested component's render fns are called\n // when parent component is patched.\n currentRenderingInstance = vm;\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } finally {\n currentRenderingInstance = null;\n }\n // if the returned array contains only a single node, allow it\n if (Array.isArray(vnode) && vnode.length === 1) {\n vnode = vnode[0];\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n var owner = currentRenderingInstance;\n if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n // already pending\n factory.owners.push(owner);\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (owner && !isDef(factory.owners)) {\n var owners = factory.owners = [owner];\n var sync = true;\n var timerLoading = null;\n var timerTimeout = null\n\n ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });\n\n var forceRender = function (renderCompleted) {\n for (var i = 0, l = owners.length; i < l; i++) {\n (owners[i]).$forceUpdate();\n }\n\n if (renderCompleted) {\n owners.length = 0;\n if (timerLoading !== null) {\n clearTimeout(timerLoading);\n timerLoading = null;\n }\n if (timerTimeout !== null) {\n clearTimeout(timerTimeout);\n timerTimeout = null;\n }\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender(true);\n } else {\n owners.length = 0;\n }\n });\n\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender(true);\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (isPromise(res)) {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isPromise(res.component)) {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n timerLoading = setTimeout(function () {\n timerLoading = null;\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender(false);\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n timerTimeout = setTimeout(function () {\n timerTimeout = null;\n if (isUndef(factory.resolved)) {\n reject(\n process.env.NODE_ENV !== 'production'\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn) {\n target.$on(event, fn);\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction createOnceHandler (event, fn) {\n var _target = target;\n return function onceHandler () {\n var res = fn.apply(null, arguments);\n if (res !== null) {\n _target.$off(event, onceHandler);\n }\n }\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n vm.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n vm.$off(event[i$1], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (!fn) {\n vm._events[event] = null;\n return vm\n }\n // specific handler\n var cb;\n var i = cbs.length;\n while (i--) {\n cb = cbs[i];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n var info = \"event handler for \\\"\" + event + \"\\\"\";\n for (var i = 0, l = cbs.length; i < l; i++) {\n invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n }\n }\n return vm\n };\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n return function () {\n activeInstance = prevActiveInstance;\n }\n}\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var restoreActiveInstance = setActiveInstance(vm);\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n restoreActiveInstance();\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction mountComponent (\n vm,\n el,\n hydrating\n) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((\"vue \" + name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n // we set this to vm._watcher inside the watcher's constructor\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n // component's mounted hook), which relies on vm._watcher being already defined\n new Watcher(vm, updateComponent, noop, {\n before: function before () {\n if (vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'beforeUpdate');\n }\n }\n }, true /* isRenderWatcher */);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren.\n\n // check if there are dynamic scopedSlots (hand-written or compiled but with\n // dynamic slot names). Static scoped slots compiled from template has the\n // \"$stable\" marker.\n var newScopedSlots = parentVnode.data.scopedSlots;\n var oldScopedSlots = vm.$scopedSlots;\n var hasDynamicScopedSlot = !!(\n (newScopedSlots && !newScopedSlots.$stable) ||\n (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)\n );\n\n // Any static slot children from the parent may have changed during parent's\n // update. Dynamic scoped slots may also have changed. In such cases, a forced\n // update is necessary to ensure correctness.\n var needsForceUpdate = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n hasDynamicScopedSlot\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = parentVnode.data.attrs || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n toggleObserving(false);\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n var propOptions = vm.$options.props; // wtf flow?\n props[key] = validateProp(key, propOptions, propsData, vm);\n }\n toggleObserving(true);\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n\n // update listeners\n listeners = listeners || emptyObject;\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n\n // resolve slots + force update if has children\n if (needsForceUpdate) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n var info = hook + \" hook\";\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n popTarget();\n}\n\n/* */\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n// Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\nvar currentFlushTimestamp = 0;\n\n// Async edge case fix requires storing an event listener's attach timestamp.\nvar getNow = Date.now;\n\n// Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\nif (inBrowser && !isIE) {\n var performance = window.performance;\n if (\n performance &&\n typeof performance.now === 'function' &&\n getNow() > document.createEvent('Event').timeStamp\n ) {\n // if the event timestamp, although evaluated AFTER the Date.now(), is\n // smaller than it, it means the event is using a hi-res timestamp,\n // and we need to use the hi-res version for event listener timestamps as\n // well.\n getNow = function () { return performance.now(); };\n }\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n currentFlushTimestamp = getNow();\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n if (watcher.before) {\n watcher.before();\n }\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n flushSchedulerQueue();\n return\n }\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\n\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options,\n isRenderWatcher\n) {\n this.vm = vm;\n if (isRenderWatcher) {\n vm._watcher = this;\n }\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n this.before = options.before;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production'\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = noop;\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var i = this.deps.length;\n while (i--) {\n var dep = this.deps[i];\n if (!this.newDepIds.has(dep.id)) {\n dep.removeSub(this);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var i = this.deps.length;\n while (i--) {\n this.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this.deps[i].removeSub(this);\n }\n this.active = false;\n }\n};\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n if (!isRoot) {\n toggleObserving(false);\n }\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive$$1(props, key, value, function () {\n if (!isRoot && !isUpdatingChildComponent) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive$$1(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n toggleObserving(true);\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n // #7573 disable dep collection when invoking data getters\n pushTarget();\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n } finally {\n popTarget();\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n // $flow-disable-line\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : createGetterInvoker(userDef);\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : createGetterInvoker(userDef.get)\n : noop;\n sharedPropertyDefinition.set = userDef.set || noop;\n }\n if (process.env.NODE_ENV !== 'production' &&\n sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction createGetterInvoker(fn) {\n return function computedGetter () {\n return fn.call(this, this)\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof methods[key] !== 'function') {\n warn(\n \"Method \\\"\" + key + \"\\\" has type \\\"\" + (typeof methods[key]) + \"\\\" in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n expOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function () {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n try {\n cb.call(vm, watcher.value);\n } catch (error) {\n handleError(error, vm, (\"callback for immediate watcher \\\"\" + (watcher.expression) + \"\\\"\"));\n }\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$3++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n var parentVnode = options._parentVnode;\n opts.parent = options.parent;\n opts._parentVnode = parentVnode;\n\n var vnodeComponentOptions = parentVnode.componentOptions;\n opts.propsData = vnodeComponentOptions.propsData;\n opts._parentListeners = vnodeComponentOptions.listeners;\n opts._renderChildren = vnodeComponentOptions.children;\n opts._componentTag = vnodeComponentOptions.tag;\n\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = latest[key];\n }\n }\n return modified\n}\n\nfunction Vue (options) {\n if (process.env.NODE_ENV !== 'production' &&\n !(this instanceof Vue)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production' && name) {\n validateComponentName(name);\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && type === 'component') {\n validateComponentName(id);\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\n\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var cached$$1 = cache[key];\n if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n for (var key in this.cache) {\n pruneCacheEntry(this.cache, key, this.keys);\n }\n },\n\n mounted: function mounted () {\n var this$1 = this;\n\n this.$watch('include', function (val) {\n pruneCache(this$1, function (name) { return matches(val, name); });\n });\n this.$watch('exclude', function (val) {\n pruneCache(this$1, function (name) { return !matches(val, name); });\n });\n },\n\n render: function render () {\n var slot = this.$slots.default;\n var vnode = getFirstComponentChild(slot);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n var ref = this;\n var include = ref.include;\n var exclude = ref.exclude;\n if (\n // not included\n (include && (!name || !matches(include, name))) ||\n // excluded\n (exclude && name && matches(exclude, name))\n ) {\n return vnode\n }\n\n var ref$1 = this;\n var cache = ref$1.cache;\n var keys = ref$1.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode || (slot && slot[0])\n }\n};\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n};\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive$$1\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n // 2.6 explicit observable API\n Vue.observable = function (obj) {\n observe(obj);\n return obj\n };\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n value: FunctionalRenderContext\n});\n\nVue.version = '2.6.10';\n\n/* */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\n\nvar convertEnumeratedValue = function (key, value) {\n return isFalsyAttrValue(value) || value === 'false'\n ? 'false'\n // allow arbitrary string value for contenteditable\n : key === 'contenteditable' && isValidContentEditableValue(value)\n ? value\n : 'true'\n};\n\nvar isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,translate,' +\n 'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n return val == null || val === false\n};\n\n/* */\n\nfunction genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode && childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode && parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n}\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n);\n\nvar isPreTag = function (tag) { return tag === 'pre'; };\n\nvar isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n}\n\n/* */\n\nfunction createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode (node) {\n return node.parentNode\n}\n\nfunction nextSibling (node) {\n return node.nextSibling\n}\n\nfunction tagName (node) {\n return node.tagName\n}\n\nfunction setTextContent (node, text) {\n node.textContent = text;\n}\n\nfunction setStyleScope (node, scopeId) {\n node.setAttribute(scopeId, '');\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n createElement: createElement$1,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n setStyleScope: setStyleScope\n});\n\n/* */\n\nvar ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n};\n\nfunction registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!isDef(key)) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n return (\n a.key === b.key && (\n (\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n ) || (\n isTrue(a.isAsyncPlaceholder) &&\n a.asyncFactory === b.asyncFactory &&\n isUndef(b.asyncFactory.error)\n )\n )\n )\n}\n\nfunction sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n}\n\nfunction createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove$$1 () {\n if (--remove$$1.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove$$1.listeners = listeners;\n return remove$$1\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n function isUnknownElement$$1 (vnode, inVPre) {\n return (\n !inVPre &&\n !vnode.ns &&\n !(\n config.ignoredElements.length &&\n config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore)\n ? ignore.test(vnode.tag)\n : ignore === vnode.tag\n })\n ) &&\n config.isUnknownElement(vnode.tag)\n )\n }\n\n var creatingElmInVPre = 0;\n\n function createElm (\n vnode,\n insertedVnodeQueue,\n parentElm,\n refElm,\n nested,\n ownerArray,\n index\n ) {\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // This vnode was used in a previous render!\n // now it's used as a new node, overwriting its elm would cause\n // potential patch errors down the road when it's used as an insertion\n // reference node. Instead, we clone the node on-demand before creating\n // associated DOM element for it.\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n if (process.env.NODE_ENV !== 'production') {\n if (data && data.pre) {\n creatingElmInVPre++;\n }\n if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n creatingElmInVPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n insert(parentElm, vnode.elm, refElm);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (nodeOps.parentNode(ref$$1) === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(children);\n }\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n if (isDef(i = vnode.fnScopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n } else {\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n ancestor = ancestor.parent;\n }\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n i !== vnode.fnContext &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(newCh);\n }\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key)\n ? oldKeyToIdx[newStartVnode.key]\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n } else {\n vnodeToMove = oldCh[idxInOld];\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function checkDuplicateKeys (children) {\n var seenKeys = {};\n for (var i = 0; i < children.length; i++) {\n var vnode = children[i];\n var key = vnode.key;\n if (isDef(key)) {\n if (seenKeys[key]) {\n warn(\n (\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\"),\n vnode.context\n );\n } else {\n seenKeys[key] = true;\n }\n }\n }\n }\n\n function findIdxInOld (node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n if (isDef(c) && sameVnode(node, c)) { return i }\n }\n }\n\n function patchVnode (\n oldVnode,\n vnode,\n insertedVnodeQueue,\n ownerArray,\n index,\n removeOnly\n ) {\n if (oldVnode === vnode) {\n return\n }\n\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // clone reused vnode\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n return\n }\n\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(ch);\n }\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var hydrationBailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n // Note: style is excluded because it relies on initial clone for future\n // deep updates (#7063).\n var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {\n var i;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n inVPre = inVPre || (data && data.pre);\n vnode.elm = elm;\n\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.isAsyncPlaceholder = true;\n return true\n }\n // assert node match\n if (process.env.NODE_ENV !== 'production') {\n if (!assertNodeMatch(elm, vnode, inVPre)) {\n return false\n }\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n return false\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n }\n if (isDef(data)) {\n var fullInvoke = false;\n for (var key in data) {\n if (!isRenderedModule(key)) {\n fullInvoke = true;\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n if (!fullInvoke && data['class']) {\n // ensure collecting deps for deep class bindings for future updates\n traverse(data['class']);\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode, inVPre) {\n if (isDef(vnode.tag)) {\n return vnode.tag.indexOf('vue-component') === 0 || (\n !isUnknownElement$$1(vnode, inVPre) &&\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm = nodeOps.parentNode(oldElm);\n\n // create new node\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm,\n nodeOps.nextSibling(oldElm)\n );\n\n // update parent placeholder node element, recursively\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n // destroy old node\n if (isDef(parentElm)) {\n removeVnodes(parentElm, [oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n dir.oldArg = oldDir.arg;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n // $flow-disable-line\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n // $flow-disable-line\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n];\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for <iframe>,\n // but Flash expects a value of \"true\" when used on <embed> tag\n value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n ? 'true'\n : key;\n el.setAttribute(key, value);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, convertEnumeratedValue(key, value));\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n baseSetAttr(el, key, value);\n }\n}\n\nfunction baseSetAttr (el, key, value) {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // #7138: IE10 & 11 fires input event when setting placeholder on\n // <textarea>... block the first input event and remove the blocker\n // immediately.\n /* istanbul ignore if */\n if (\n isIE && !isIE9 &&\n el.tagName === 'TEXTAREA' &&\n key === 'placeholder' && value !== '' && !el.__ieph\n ) {\n var blocker = function (e) {\n e.stopImmediatePropagation();\n el.removeEventListener('input', blocker);\n };\n el.addEventListener('input', blocker);\n // $flow-disable-line\n el.__ieph = true; /* IE placeholder patched */\n }\n el.setAttribute(key, value);\n }\n}\n\nvar attrs = {\n create: updateAttrs,\n update: updateAttrs\n};\n\n/* */\n\nfunction updateClass (oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n if (\n isUndef(data.staticClass) &&\n isUndef(data.class) && (\n isUndef(oldData) || (\n isUndef(oldData.staticClass) &&\n isUndef(oldData.class)\n )\n )\n ) {\n return\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n}\n\nvar klass = {\n create: updateClass,\n update: updateClass\n};\n\n/* */\n\nvar validDivisionCharRE = /[\\w).+\\-_$\\]]/;\n\nfunction parseFilters (exp) {\n var inSingle = false;\n var inDouble = false;\n var inTemplateString = false;\n var inRegex = false;\n var curly = 0;\n var square = 0;\n var paren = 0;\n var lastFilterIndex = 0;\n var c, prev, i, expression, filters;\n\n for (i = 0; i < exp.length; i++) {\n prev = c;\n c = exp.charCodeAt(i);\n if (inSingle) {\n if (c === 0x27 && prev !== 0x5C) { inSingle = false; }\n } else if (inDouble) {\n if (c === 0x22 && prev !== 0x5C) { inDouble = false; }\n } else if (inTemplateString) {\n if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }\n } else if (inRegex) {\n if (c === 0x2f && prev !== 0x5C) { inRegex = false; }\n } else if (\n c === 0x7C && // pipe\n exp.charCodeAt(i + 1) !== 0x7C &&\n exp.charCodeAt(i - 1) !== 0x7C &&\n !curly && !square && !paren\n ) {\n if (expression === undefined) {\n // first filter, end of expression\n lastFilterIndex = i + 1;\n expression = exp.slice(0, i).trim();\n } else {\n pushFilter();\n }\n } else {\n switch (c) {\n case 0x22: inDouble = true; break // \"\n case 0x27: inSingle = true; break // '\n case 0x60: inTemplateString = true; break // `\n case 0x28: paren++; break // (\n case 0x29: paren--; break // )\n case 0x5B: square++; break // [\n case 0x5D: square--; break // ]\n case 0x7B: curly++; break // {\n case 0x7D: curly--; break // }\n }\n if (c === 0x2f) { // /\n var j = i - 1;\n var p = (void 0);\n // find first non-whitespace prev char\n for (; j >= 0; j--) {\n p = exp.charAt(j);\n if (p !== ' ') { break }\n }\n if (!p || !validDivisionCharRE.test(p)) {\n inRegex = true;\n }\n }\n }\n }\n\n if (expression === undefined) {\n expression = exp.slice(0, i).trim();\n } else if (lastFilterIndex !== 0) {\n pushFilter();\n }\n\n function pushFilter () {\n (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());\n lastFilterIndex = i + 1;\n }\n\n if (filters) {\n for (i = 0; i < filters.length; i++) {\n expression = wrapFilter(expression, filters[i]);\n }\n }\n\n return expression\n}\n\nfunction wrapFilter (exp, filter) {\n var i = filter.indexOf('(');\n if (i < 0) {\n // _f: resolveFilter\n return (\"_f(\\\"\" + filter + \"\\\")(\" + exp + \")\")\n } else {\n var name = filter.slice(0, i);\n var args = filter.slice(i + 1);\n return (\"_f(\\\"\" + name + \"\\\")(\" + exp + (args !== ')' ? ',' + args : args))\n }\n}\n\n/* */\n\n\n\n/* eslint-disable no-unused-vars */\nfunction baseWarn (msg, range) {\n console.error((\"[Vue compiler]: \" + msg));\n}\n/* eslint-enable no-unused-vars */\n\nfunction pluckModuleFunction (\n modules,\n key\n) {\n return modules\n ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; })\n : []\n}\n\nfunction addProp (el, name, value, range, dynamic) {\n (el.props || (el.props = [])).push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));\n el.plain = false;\n}\n\nfunction addAttr (el, name, value, range, dynamic) {\n var attrs = dynamic\n ? (el.dynamicAttrs || (el.dynamicAttrs = []))\n : (el.attrs || (el.attrs = []));\n attrs.push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));\n el.plain = false;\n}\n\n// add a raw attr (use this in preTransforms)\nfunction addRawAttr (el, name, value, range) {\n el.attrsMap[name] = value;\n el.attrsList.push(rangeSetItem({ name: name, value: value }, range));\n}\n\nfunction addDirective (\n el,\n name,\n rawName,\n value,\n arg,\n isDynamicArg,\n modifiers,\n range\n) {\n (el.directives || (el.directives = [])).push(rangeSetItem({\n name: name,\n rawName: rawName,\n value: value,\n arg: arg,\n isDynamicArg: isDynamicArg,\n modifiers: modifiers\n }, range));\n el.plain = false;\n}\n\nfunction prependModifierMarker (symbol, name, dynamic) {\n return dynamic\n ? (\"_p(\" + name + \",\\\"\" + symbol + \"\\\")\")\n : symbol + name // mark the event as captured\n}\n\nfunction addHandler (\n el,\n name,\n value,\n modifiers,\n important,\n warn,\n range,\n dynamic\n) {\n modifiers = modifiers || emptyObject;\n // warn prevent and passive modifier\n /* istanbul ignore if */\n if (\n process.env.NODE_ENV !== 'production' && warn &&\n modifiers.prevent && modifiers.passive\n ) {\n warn(\n 'passive and prevent can\\'t be used together. ' +\n 'Passive handler can\\'t prevent default event.',\n range\n );\n }\n\n // normalize click.right and click.middle since they don't actually fire\n // this is technically browser-specific, but at least for now browsers are\n // the only target envs that have right/middle clicks.\n if (modifiers.right) {\n if (dynamic) {\n name = \"(\" + name + \")==='click'?'contextmenu':(\" + name + \")\";\n } else if (name === 'click') {\n name = 'contextmenu';\n delete modifiers.right;\n }\n } else if (modifiers.middle) {\n if (dynamic) {\n name = \"(\" + name + \")==='click'?'mouseup':(\" + name + \")\";\n } else if (name === 'click') {\n name = 'mouseup';\n }\n }\n\n // check capture modifier\n if (modifiers.capture) {\n delete modifiers.capture;\n name = prependModifierMarker('!', name, dynamic);\n }\n if (modifiers.once) {\n delete modifiers.once;\n name = prependModifierMarker('~', name, dynamic);\n }\n /* istanbul ignore if */\n if (modifiers.passive) {\n delete modifiers.passive;\n name = prependModifierMarker('&', name, dynamic);\n }\n\n var events;\n if (modifiers.native) {\n delete modifiers.native;\n events = el.nativeEvents || (el.nativeEvents = {});\n } else {\n events = el.events || (el.events = {});\n }\n\n var newHandler = rangeSetItem({ value: value.trim(), dynamic: dynamic }, range);\n if (modifiers !== emptyObject) {\n newHandler.modifiers = modifiers;\n }\n\n var handlers = events[name];\n /* istanbul ignore if */\n if (Array.isArray(handlers)) {\n important ? handlers.unshift(newHandler) : handlers.push(newHandler);\n } else if (handlers) {\n events[name] = important ? [newHandler, handlers] : [handlers, newHandler];\n } else {\n events[name] = newHandler;\n }\n\n el.plain = false;\n}\n\nfunction getRawBindingAttr (\n el,\n name\n) {\n return el.rawAttrsMap[':' + name] ||\n el.rawAttrsMap['v-bind:' + name] ||\n el.rawAttrsMap[name]\n}\n\nfunction getBindingAttr (\n el,\n name,\n getStatic\n) {\n var dynamicValue =\n getAndRemoveAttr(el, ':' + name) ||\n getAndRemoveAttr(el, 'v-bind:' + name);\n if (dynamicValue != null) {\n return parseFilters(dynamicValue)\n } else if (getStatic !== false) {\n var staticValue = getAndRemoveAttr(el, name);\n if (staticValue != null) {\n return JSON.stringify(staticValue)\n }\n }\n}\n\n// note: this only removes the attr from the Array (attrsList) so that it\n// doesn't get processed by processAttrs.\n// By default it does NOT remove it from the map (attrsMap) because the map is\n// needed during codegen.\nfunction getAndRemoveAttr (\n el,\n name,\n removeFromMap\n) {\n var val;\n if ((val = el.attrsMap[name]) != null) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n if (list[i].name === name) {\n list.splice(i, 1);\n break\n }\n }\n }\n if (removeFromMap) {\n delete el.attrsMap[name];\n }\n return val\n}\n\nfunction getAndRemoveAttrByRegex (\n el,\n name\n) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n var attr = list[i];\n if (name.test(attr.name)) {\n list.splice(i, 1);\n return attr\n }\n }\n}\n\nfunction rangeSetItem (\n item,\n range\n) {\n if (range) {\n if (range.start != null) {\n item.start = range.start;\n }\n if (range.end != null) {\n item.end = range.end;\n }\n }\n return item\n}\n\n/* */\n\n/**\n * Cross-platform code generation for component v-model\n */\nfunction genComponentModel (\n el,\n value,\n modifiers\n) {\n var ref = modifiers || {};\n var number = ref.number;\n var trim = ref.trim;\n\n var baseValueExpression = '$$v';\n var valueExpression = baseValueExpression;\n if (trim) {\n valueExpression =\n \"(typeof \" + baseValueExpression + \" === 'string'\" +\n \"? \" + baseValueExpression + \".trim()\" +\n \": \" + baseValueExpression + \")\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n var assignment = genAssignmentCode(value, valueExpression);\n\n el.model = {\n value: (\"(\" + value + \")\"),\n expression: JSON.stringify(value),\n callback: (\"function (\" + baseValueExpression + \") {\" + assignment + \"}\")\n };\n}\n\n/**\n * Cross-platform codegen helper for generating v-model value assignment code.\n */\nfunction genAssignmentCode (\n value,\n assignment\n) {\n var res = parseModel(value);\n if (res.key === null) {\n return (value + \"=\" + assignment)\n } else {\n return (\"$set(\" + (res.exp) + \", \" + (res.key) + \", \" + assignment + \")\")\n }\n}\n\n/**\n * Parse a v-model expression into a base path and a final key segment.\n * Handles both dot-path and possible square brackets.\n *\n * Possible cases:\n *\n * - test\n * - test[key]\n * - test[test1[key]]\n * - test[\"a\"][key]\n * - xxx.test[a[a].test1[key]]\n * - test.xxx.a[\"asa\"][test1[key]]\n *\n */\n\nvar len, str, chr, index$1, expressionPos, expressionEndPos;\n\n\n\nfunction parseModel (val) {\n // Fix https://github.com/vuejs/vue/pull/7730\n // allow v-model=\"obj.val \" (trailing whitespace)\n val = val.trim();\n len = val.length;\n\n if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {\n index$1 = val.lastIndexOf('.');\n if (index$1 > -1) {\n return {\n exp: val.slice(0, index$1),\n key: '\"' + val.slice(index$1 + 1) + '\"'\n }\n } else {\n return {\n exp: val,\n key: null\n }\n }\n }\n\n str = val;\n index$1 = expressionPos = expressionEndPos = 0;\n\n while (!eof()) {\n chr = next();\n /* istanbul ignore if */\n if (isStringStart(chr)) {\n parseString(chr);\n } else if (chr === 0x5B) {\n parseBracket(chr);\n }\n }\n\n return {\n exp: val.slice(0, expressionPos),\n key: val.slice(expressionPos + 1, expressionEndPos)\n }\n}\n\nfunction next () {\n return str.charCodeAt(++index$1)\n}\n\nfunction eof () {\n return index$1 >= len\n}\n\nfunction isStringStart (chr) {\n return chr === 0x22 || chr === 0x27\n}\n\nfunction parseBracket (chr) {\n var inBracket = 1;\n expressionPos = index$1;\n while (!eof()) {\n chr = next();\n if (isStringStart(chr)) {\n parseString(chr);\n continue\n }\n if (chr === 0x5B) { inBracket++; }\n if (chr === 0x5D) { inBracket--; }\n if (inBracket === 0) {\n expressionEndPos = index$1;\n break\n }\n }\n}\n\nfunction parseString (chr) {\n var stringQuote = chr;\n while (!eof()) {\n chr = next();\n if (chr === stringQuote) {\n break\n }\n }\n}\n\n/* */\n\nvar warn$1;\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\nfunction model (\n el,\n dir,\n _warn\n) {\n warn$1 = _warn;\n var value = dir.value;\n var modifiers = dir.modifiers;\n var tag = el.tag;\n var type = el.attrsMap.type;\n\n if (process.env.NODE_ENV !== 'production') {\n // inputs with type=\"file\" are read only and setting the input's\n // value will throw an error.\n if (tag === 'input' && type === 'file') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\" type=\\\"file\\\">:\\n\" +\n \"File inputs are read only. Use a v-on:change listener instead.\",\n el.rawAttrsMap['v-model']\n );\n }\n }\n\n if (el.component) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (tag === 'select') {\n genSelect(el, value, modifiers);\n } else if (tag === 'input' && type === 'checkbox') {\n genCheckboxModel(el, value, modifiers);\n } else if (tag === 'input' && type === 'radio') {\n genRadioModel(el, value, modifiers);\n } else if (tag === 'input' || tag === 'textarea') {\n genDefaultModel(el, value, modifiers);\n } else if (!config.isReservedTag(tag)) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (process.env.NODE_ENV !== 'production') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"v-model is not supported on this element type. \" +\n 'If you are working with contenteditable, it\\'s recommended to ' +\n 'wrap a library dedicated for that purpose inside a custom component.',\n el.rawAttrsMap['v-model']\n );\n }\n\n // ensure runtime directive metadata\n return true\n}\n\nfunction genCheckboxModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';\n var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';\n addProp(el, 'checked',\n \"Array.isArray(\" + value + \")\" +\n \"?_i(\" + value + \",\" + valueBinding + \")>-1\" + (\n trueValueBinding === 'true'\n ? (\":(\" + value + \")\")\n : (\":_q(\" + value + \",\" + trueValueBinding + \")\")\n )\n );\n addHandler(el, 'change',\n \"var $$a=\" + value + \",\" +\n '$$el=$event.target,' +\n \"$$c=$$el.checked?(\" + trueValueBinding + \"):(\" + falseValueBinding + \");\" +\n 'if(Array.isArray($$a)){' +\n \"var $$v=\" + (number ? '_n(' + valueBinding + ')' : valueBinding) + \",\" +\n '$$i=_i($$a,$$v);' +\n \"if($$el.checked){$$i<0&&(\" + (genAssignmentCode(value, '$$a.concat([$$v])')) + \")}\" +\n \"else{$$i>-1&&(\" + (genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))')) + \")}\" +\n \"}else{\" + (genAssignmentCode(value, '$$c')) + \"}\",\n null, true\n );\n}\n\nfunction genRadioModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n valueBinding = number ? (\"_n(\" + valueBinding + \")\") : valueBinding;\n addProp(el, 'checked', (\"_q(\" + value + \",\" + valueBinding + \")\"));\n addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);\n}\n\nfunction genSelect (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var selectedVal = \"Array.prototype.filter\" +\n \".call($event.target.options,function(o){return o.selected})\" +\n \".map(function(o){var val = \\\"_value\\\" in o ? o._value : o.value;\" +\n \"return \" + (number ? '_n(val)' : 'val') + \"})\";\n\n var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';\n var code = \"var $$selectedVal = \" + selectedVal + \";\";\n code = code + \" \" + (genAssignmentCode(value, assignment));\n addHandler(el, 'change', code, null, true);\n}\n\nfunction genDefaultModel (\n el,\n value,\n modifiers\n) {\n var type = el.attrsMap.type;\n\n // warn if v-bind:value conflicts with v-model\n // except for inputs with v-bind:type\n if (process.env.NODE_ENV !== 'production') {\n var value$1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value'];\n var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];\n if (value$1 && !typeBinding) {\n var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value';\n warn$1(\n binding + \"=\\\"\" + value$1 + \"\\\" conflicts with v-model on the same element \" +\n 'because the latter already expands to a value binding internally',\n el.rawAttrsMap[binding]\n );\n }\n }\n\n var ref = modifiers || {};\n var lazy = ref.lazy;\n var number = ref.number;\n var trim = ref.trim;\n var needCompositionGuard = !lazy && type !== 'range';\n var event = lazy\n ? 'change'\n : type === 'range'\n ? RANGE_TOKEN\n : 'input';\n\n var valueExpression = '$event.target.value';\n if (trim) {\n valueExpression = \"$event.target.value.trim()\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n\n var code = genAssignmentCode(value, valueExpression);\n if (needCompositionGuard) {\n code = \"if($event.target.composing)return;\" + code;\n }\n\n addProp(el, 'value', (\"(\" + value + \")\"));\n addHandler(el, event, code, null, true);\n if (trim || number) {\n addHandler(el, 'blur', '$forceUpdate()');\n }\n}\n\n/* */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n var event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n }\n // This was originally intended to fix #4521 but no longer necessary\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n /* istanbul ignore if */\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n}\n\nvar target$1;\n\nfunction createOnceHandler$1 (event, handler, capture) {\n var _target = target$1; // save current target element in closure\n return function onceHandler () {\n var res = handler.apply(null, arguments);\n if (res !== null) {\n remove$2(event, onceHandler, capture, _target);\n }\n }\n}\n\n// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp\n// implementation and does not fire microtasks in between event propagation, so\n// safe to exclude.\nvar useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);\n\nfunction add$1 (\n name,\n handler,\n capture,\n passive\n) {\n // async edge case #6566: inner click event triggers patch, event handler\n // attached to outer element during patch, and triggered again. This\n // happens because browsers fire microtask ticks between event propagation.\n // the solution is simple: we save the timestamp when a handler is attached,\n // and the handler would only fire if the event passed to it was fired\n // AFTER it was attached.\n if (useMicrotaskFix) {\n var attachedTimestamp = currentFlushTimestamp;\n var original = handler;\n handler = original._wrapper = function (e) {\n if (\n // no bubbling, should always fire.\n // this is just a safety net in case event.timeStamp is unreliable in\n // certain weird environments...\n e.target === e.currentTarget ||\n // event is fired after handler attachment\n e.timeStamp >= attachedTimestamp ||\n // bail for environments that have buggy event.timeStamp implementations\n // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState\n // #9681 QtWebEngine event.timeStamp is negative value\n e.timeStamp <= 0 ||\n // #9448 bail if event is fired in another document in a multi-page\n // electron/nw.js app, since event.timeStamp will be using a different\n // starting reference\n e.target.ownerDocument !== document\n ) {\n return original.apply(this, arguments)\n }\n };\n }\n target$1.addEventListener(\n name,\n handler,\n supportsPassive\n ? { capture: capture, passive: passive }\n : capture\n );\n}\n\nfunction remove$2 (\n name,\n handler,\n capture,\n _target\n) {\n (_target || target$1).removeEventListener(\n name,\n handler._wrapper || handler,\n capture\n );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context);\n target$1 = undefined;\n}\n\nvar events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n};\n\n/* */\n\nvar svgContainer;\n\nfunction updateDOMProps (oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return\n }\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (!(key in props)) {\n elm[key] = '';\n }\n }\n\n for (key in props) {\n cur = props[key];\n // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) { vnode.children.length = 0; }\n if (cur === oldProps[key]) { continue }\n // #6601 work around Chrome version <= 55 bug where single textNode\n // replaced by innerHTML/textContent retains its parentNode property\n if (elm.childNodes.length === 1) {\n elm.removeChild(elm.childNodes[0]);\n }\n }\n\n if (key === 'value' && elm.tagName !== 'PROGRESS') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n var strCur = isUndef(cur) ? '' : String(cur);\n if (shouldUpdateValue(elm, strCur)) {\n elm.value = strCur;\n }\n } else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {\n // IE doesn't support innerHTML for SVG elements\n svgContainer = svgContainer || document.createElement('div');\n svgContainer.innerHTML = \"<svg>\" + cur + \"</svg>\";\n var svg = svgContainer.firstChild;\n while (elm.firstChild) {\n elm.removeChild(elm.firstChild);\n }\n while (svg.firstChild) {\n elm.appendChild(svg.firstChild);\n }\n } else if (\n // skip the update if old and new VDOM state is the same.\n // `value` is handled separately because the DOM value may be temporarily\n // out of sync with VDOM state due to focus, composition and modifiers.\n // This #4521 by skipping the unnecesarry `checked` update.\n cur !== oldProps[key]\n ) {\n // some property updates can throw\n // e.g. `value` on <progress> w/ non-finite value\n try {\n elm[key] = cur;\n } catch (e) {}\n }\n }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n return (!elm.composing && (\n elm.tagName === 'OPTION' ||\n isNotInFocusAndDirty(elm, checkVal) ||\n isDirtyWithModifiers(elm, checkVal)\n ))\n}\n\nfunction isNotInFocusAndDirty (elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is\n // not equal to the updated value\n var notInFocus = true;\n // #6157\n // work around IE bug when accessing document.activeElement in an iframe\n try { notInFocus = document.activeElement !== elm; } catch (e) {}\n return notInFocus && elm.value !== checkVal\n}\n\nfunction isDirtyWithModifiers (elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n if (isDef(modifiers)) {\n if (modifiers.number) {\n return toNumber(value) !== toNumber(newVal)\n }\n if (modifiers.trim) {\n return value.trim() !== newVal.trim()\n }\n }\n return value !== newVal\n}\n\nvar domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n};\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n var style = normalizeStyleBinding(data.style);\n // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n return data.staticStyle\n ? extend(data.staticStyle, style)\n : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n if (\n childNode && childNode.data &&\n (styleData = normalizeStyleData(childNode.data))\n ) {\n extend(res, styleData);\n }\n }\n }\n\n if ((styleData = normalizeStyleData(vnode.data))) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n while ((parentNode = parentNode.parent)) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n return res\n}\n\n/* */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n emptyStyle = emptyStyle || document.createElement('div').style;\n prop = camelize(prop);\n if (prop !== 'filter' && (prop in emptyStyle)) {\n return prop\n }\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < vendorNames.length; i++) {\n var name = vendorNames[i] + capName;\n if (name in emptyStyle) {\n return name\n }\n }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) &&\n isUndef(oldData.staticStyle) && isUndef(oldData.style)\n ) {\n return\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n var oldStyle = oldStaticStyle || oldStyleBinding;\n\n var style = normalizeStyleBinding(vnode.data.style) || {};\n\n // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likely wants\n // to mutate it.\n vnode.data.normalizedStyle = isDef(style.__ob__)\n ? extend({}, style)\n : style;\n\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n for (name in newStyle) {\n cur = newStyle[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n}\n\nvar style = {\n create: updateStyle,\n update: updateStyle\n};\n\n/* */\n\nvar whitespaceRE = /\\s+/;\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); });\n } else {\n el.classList.remove(cls);\n }\n if (!el.classList.length) {\n el.removeAttribute('class');\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n cur = cur.trim();\n if (cur) {\n el.setAttribute('class', cur);\n } else {\n el.removeAttribute('class');\n }\n }\n}\n\n/* */\n\nfunction resolveTransition (def$$1) {\n if (!def$$1) {\n return\n }\n /* istanbul ignore else */\n if (typeof def$$1 === 'object') {\n var res = {};\n if (def$$1.css !== false) {\n extend(res, autoCssTransition(def$$1.name || 'v'));\n }\n extend(res, def$$1);\n return res\n } else if (typeof def$$1 === 'string') {\n return autoCssTransition(def$$1)\n }\n}\n\nvar autoCssTransition = cached(function (name) {\n return {\n enterClass: (name + \"-enter\"),\n enterToClass: (name + \"-enter-to\"),\n enterActiveClass: (name + \"-enter-active\"),\n leaveClass: (name + \"-leave\"),\n leaveToClass: (name + \"-leave-to\"),\n leaveActiveClass: (name + \"-leave-active\")\n }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined &&\n window.onwebkittransitionend !== undefined\n ) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined &&\n window.onwebkitanimationend !== undefined\n ) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n ? window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout\n : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n raf(function () {\n raf(fn);\n });\n}\n\nfunction addTransitionClass (el, cls) {\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n if (transitionClasses.indexOf(cls) < 0) {\n transitionClasses.push(cls);\n addClass(el, cls);\n }\n}\n\nfunction removeTransitionClass (el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n el,\n expectedType,\n cb\n) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n if (!type) { return cb() }\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function () {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function (e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n var styles = window.getComputedStyle(el);\n // JSDOM may return undefined for transition properties\n var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\n var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\n var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n var hasTransform =\n type === TRANSITION &&\n transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n }\n}\n\nfunction getTimeout (delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i])\n }))\n}\n\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\n// in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\n// as a floor function) causing unexpected behaviors\nfunction toMs (s) {\n return Number(s.slice(0, -1).replace(',', '.')) * 1000\n}\n\n/* */\n\nfunction enter (vnode, toggleDisplay) {\n var el = vnode.elm;\n\n // call leave callback now\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return\n }\n\n /* istanbul ignore if */\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration;\n\n // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n while (transitionNode && transitionNode.parent) {\n context = transitionNode.context;\n transitionNode = transitionNode.parent;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return\n }\n\n var startClass = isAppear && appearClass\n ? appearClass\n : enterClass;\n var activeClass = isAppear && appearActiveClass\n ? appearActiveClass\n : enterActiveClass;\n var toClass = isAppear && appearToClass\n ? appearToClass\n : enterToClass;\n\n var beforeEnterHook = isAppear\n ? (beforeAppear || beforeEnter)\n : beforeEnter;\n var enterHook = isAppear\n ? (typeof appear === 'function' ? appear : enter)\n : enter;\n var afterEnterHook = isAppear\n ? (afterAppear || afterEnter)\n : afterEnter;\n var enterCancelledHook = isAppear\n ? (appearCancelled || enterCancelled)\n : enterCancelled;\n\n var explicitEnterDuration = toNumber(\n isObject(duration)\n ? duration.enter\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode, 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n if (pendingNode &&\n pendingNode.tag === vnode.tag &&\n pendingNode.elm._leaveCb\n ) {\n pendingNode.elm._leaveCb();\n }\n enterHook && enterHook(el, cb);\n });\n }\n\n // start enter transition\n beforeEnterHook && beforeEnterHook(el);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n removeTransitionClass(el, startClass);\n if (!cb.cancelled) {\n addTransitionClass(el, toClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n}\n\nfunction leave (vnode, rm) {\n var el = vnode.elm;\n\n // call enter callback now\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data) || el.nodeType !== 1) {\n return rm()\n }\n\n /* istanbul ignore if */\n if (isDef(el._leaveCb)) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n\n var explicitLeaveDuration = toNumber(\n isObject(duration)\n ? duration.leave\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave () {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return\n }\n // record leaving element\n if (!vnode.data.show && el.parentNode) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n }\n beforeLeave && beforeLeave(el);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled) {\n addTransitionClass(el, leaveToClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n leave && leave(el, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\n \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n \"got \" + (JSON.stringify(val)) + \".\",\n vnode.context\n );\n } else if (isNaN(val)) {\n warn(\n \"<transition> explicit \" + name + \" duration is NaN - \" +\n 'the duration expression might be incorrect.',\n vnode.context\n );\n }\n}\n\nfunction isValidDuration (val) {\n return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n if (isUndef(fn)) {\n return false\n }\n var invokerFns = fn.fns;\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(\n Array.isArray(invokerFns)\n ? invokerFns[0]\n : invokerFns\n )\n } else {\n return (fn._length || fn.length) > 1\n }\n}\n\nfunction _enter (_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n}\n\nvar transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1 (vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n} : {};\n\nvar platformModules = [\n attrs,\n klass,\n events,\n domProps,\n style,\n transition\n];\n\n/* */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n}\n\nvar directive = {\n inserted: function inserted (el, binding, vnode, oldVnode) {\n if (vnode.tag === 'select') {\n // #6903\n if (oldVnode.elm && !oldVnode.elm._vOptions) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n directive.componentUpdated(el, binding, vnode);\n });\n } else {\n setSelected(el, binding, vnode.context);\n }\n el._vOptions = [].map.call(el.options, getValue);\n } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n el._vModifiers = binding.modifiers;\n if (!binding.modifiers.lazy) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n el.addEventListener('change', onCompositionEnd);\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n\n componentUpdated: function componentUpdated (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n var prevOptions = el._vOptions;\n var curOptions = el._vOptions = [].map.call(el.options, getValue);\n if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n // trigger change event if\n // no matching option found for at least one value\n var needReset = el.multiple\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n }\n};\n\nfunction setSelected (el, binding, vm) {\n actuallySetSelected(el, binding, vm);\n /* istanbul ignore if */\n if (isIE || isEdge) {\n setTimeout(function () {\n actuallySetSelected(el, binding, vm);\n }, 0);\n }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n if (isMultiple && !Array.isArray(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n vm\n );\n return\n }\n var selected, option;\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n return\n }\n }\n }\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n}\n\nfunction hasNoMatchingOption (value, options) {\n return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n return '_value' in option\n ? option._value\n : option.value\n}\n\nfunction onCompositionStart (e) {\n e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) { return }\n e.target.composing = false;\n trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\n\n/* */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n ? locateNode(vnode.componentInstance._vnode)\n : vnode\n}\n\nvar show = {\n bind: function bind (el, ref, vnode) {\n var value = ref.value;\n\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay =\n el.style.display === 'none' ? '' : el.style.display;\n if (value && transition$$1) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n\n update: function update (el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n\n /* istanbul ignore if */\n if (!value === !oldValue) { return }\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n if (transition$$1) {\n vnode.data.show = true;\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n\n unbind: function unbind (\n el,\n binding,\n vnode,\n oldVnode,\n isDestroy\n ) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n};\n\nvar platformDirectives = {\n model: directive,\n show: show\n};\n\n/* */\n\nvar transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children))\n } else {\n return vnode\n }\n}\n\nfunction extractTransitionData (comp) {\n var data = {};\n var options = comp.$options;\n // props\n for (var key in options.propsData) {\n data[key] = comp[key];\n }\n // events.\n // extract listeners and pass them directly to the transition methods\n var listeners = options._parentListeners;\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n return data\n}\n\nfunction placeholder (h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n })\n }\n}\n\nfunction hasParentTransition (vnode) {\n while ((vnode = vnode.parent)) {\n if (vnode.data.transition) {\n return true\n }\n }\n}\n\nfunction isSameChild (child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };\n\nvar isVShowDirective = function (d) { return d.name === 'show'; };\n\nvar Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n\n render: function render (h) {\n var this$1 = this;\n\n var children = this.$slots.default;\n if (!children) {\n return\n }\n\n // filter out text nodes (possible whitespaces)\n children = children.filter(isNotTextNode);\n /* istanbul ignore if */\n if (!children.length) {\n return\n }\n\n // warn multiple elements\n if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n warn(\n '<transition> can only be used on a single element. Use ' +\n '<transition-group> for lists.',\n this.$parent\n );\n }\n\n var mode = this.mode;\n\n // warn invalid mode\n if (process.env.NODE_ENV !== 'production' &&\n mode && mode !== 'in-out' && mode !== 'out-in'\n ) {\n warn(\n 'invalid <transition> mode: ' + mode,\n this.$parent\n );\n }\n\n var rawChild = children[0];\n\n // if this is a component root node and the component's\n // parent container node also has transition, skip.\n if (hasParentTransition(this.$vnode)) {\n return rawChild\n }\n\n // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n if (!child) {\n return rawChild\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild)\n }\n\n // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n var id = \"__transition-\" + (this._uid) + \"-\";\n child.key = child.key == null\n ? child.isComment\n ? id + 'comment'\n : id + child.tag\n : isPrimitive(child.key)\n ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n : child.key;\n\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild);\n\n // mark v-show\n // so that the transition module can hand over the control to the directive\n if (child.data.directives && child.data.directives.some(isVShowDirective)) {\n child.data.show = true;\n }\n\n if (\n oldChild &&\n oldChild.data &&\n !isSameChild(child, oldChild) &&\n !isAsyncPlaceholder(oldChild) &&\n // #6687 component root is a comment node\n !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)\n ) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild.data.transition = extend({}, data);\n // handle transition mode\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild)\n } else if (mode === 'in-out') {\n if (isAsyncPlaceholder(child)) {\n return oldRawChild\n }\n var delayedLeave;\n var performLeave = function () { delayedLeave(); };\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n }\n }\n\n return rawChild\n }\n};\n\n/* */\n\nvar props = extend({\n tag: String,\n moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n props: props,\n\n beforeMount: function beforeMount () {\n var this$1 = this;\n\n var update = this._update;\n this._update = function (vnode, hydrating) {\n var restoreActiveInstance = setActiveInstance(this$1);\n // force removing pass\n this$1.__patch__(\n this$1._vnode,\n this$1.kept,\n false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n this$1._vnode = this$1.kept;\n restoreActiveInstance();\n update.call(this$1, vnode, hydrating);\n };\n },\n\n render: function render (h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c\n ;(c.data || (c.data = {})).transition = transitionData;\n } else if (process.env.NODE_ENV !== 'production') {\n var opts = c.componentOptions;\n var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children)\n },\n\n updated: function updated () {\n var children = this.prevChildren;\n var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return\n }\n\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation);\n\n // force reflow to put everything in position\n // assign to this to avoid being removed in tree-shaking\n // $flow-disable-line\n this._reflow = document.body.offsetHeight;\n\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n if (e && e.target !== el) {\n return\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n\n methods: {\n hasMove: function hasMove (el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false\n }\n /* istanbul ignore if */\n if (this._hasMove) {\n return this._hasMove\n }\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n var clone = el.cloneNode();\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n }\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return (this._hasMove = info.hasTransform)\n }\n }\n};\n\nfunction callPendingCbs (c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n}\n\nfunction recordPosition (c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n}\n\nvar platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n};\n\n/* */\n\n// install platform specific utils\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents);\n\n// install platform patch function\nVue.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nif (inBrowser) {\n setTimeout(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue);\n } else if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test'\n ) {\n console[console.info ? 'info' : 'log'](\n 'Download the Vue Devtools extension for a better development experience:\\n' +\n 'https://github.com/vuejs/vue-devtools'\n );\n }\n }\n if (process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n config.productionTip !== false &&\n typeof console !== 'undefined'\n ) {\n console[console.info ? 'info' : 'log'](\n \"You are running Vue in development mode.\\n\" +\n \"Make sure to turn on production mode when deploying for production.\\n\" +\n \"See more tips at https://vuejs.org/guide/deployment.html\"\n );\n }\n }, 0);\n}\n\n/* */\n\nvar defaultTagRE = /\\{\\{((?:.|\\r?\\n)+?)\\}\\}/g;\nvar regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\n\nvar buildRegex = cached(function (delimiters) {\n var open = delimiters[0].replace(regexEscapeRE, '\\\\$&');\n var close = delimiters[1].replace(regexEscapeRE, '\\\\$&');\n return new RegExp(open + '((?:.|\\\\n)+?)' + close, 'g')\n});\n\n\n\nfunction parseText (\n text,\n delimiters\n) {\n var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;\n if (!tagRE.test(text)) {\n return\n }\n var tokens = [];\n var rawTokens = [];\n var lastIndex = tagRE.lastIndex = 0;\n var match, index, tokenValue;\n while ((match = tagRE.exec(text))) {\n index = match.index;\n // push text token\n if (index > lastIndex) {\n rawTokens.push(tokenValue = text.slice(lastIndex, index));\n tokens.push(JSON.stringify(tokenValue));\n }\n // tag token\n var exp = parseFilters(match[1].trim());\n tokens.push((\"_s(\" + exp + \")\"));\n rawTokens.push({ '@binding': exp });\n lastIndex = index + match[0].length;\n }\n if (lastIndex < text.length) {\n rawTokens.push(tokenValue = text.slice(lastIndex));\n tokens.push(JSON.stringify(tokenValue));\n }\n return {\n expression: tokens.join('+'),\n tokens: rawTokens\n }\n}\n\n/* */\n\nfunction transformNode (el, options) {\n var warn = options.warn || baseWarn;\n var staticClass = getAndRemoveAttr(el, 'class');\n if (process.env.NODE_ENV !== 'production' && staticClass) {\n var res = parseText(staticClass, options.delimiters);\n if (res) {\n warn(\n \"class=\\\"\" + staticClass + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div class=\"{{ val }}\">, use <div :class=\"val\">.',\n el.rawAttrsMap['class']\n );\n }\n }\n if (staticClass) {\n el.staticClass = JSON.stringify(staticClass);\n }\n var classBinding = getBindingAttr(el, 'class', false /* getStatic */);\n if (classBinding) {\n el.classBinding = classBinding;\n }\n}\n\nfunction genData (el) {\n var data = '';\n if (el.staticClass) {\n data += \"staticClass:\" + (el.staticClass) + \",\";\n }\n if (el.classBinding) {\n data += \"class:\" + (el.classBinding) + \",\";\n }\n return data\n}\n\nvar klass$1 = {\n staticKeys: ['staticClass'],\n transformNode: transformNode,\n genData: genData\n};\n\n/* */\n\nfunction transformNode$1 (el, options) {\n var warn = options.warn || baseWarn;\n var staticStyle = getAndRemoveAttr(el, 'style');\n if (staticStyle) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n var res = parseText(staticStyle, options.delimiters);\n if (res) {\n warn(\n \"style=\\\"\" + staticStyle + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div style=\"{{ val }}\">, use <div :style=\"val\">.',\n el.rawAttrsMap['style']\n );\n }\n }\n el.staticStyle = JSON.stringify(parseStyleText(staticStyle));\n }\n\n var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);\n if (styleBinding) {\n el.styleBinding = styleBinding;\n }\n}\n\nfunction genData$1 (el) {\n var data = '';\n if (el.staticStyle) {\n data += \"staticStyle:\" + (el.staticStyle) + \",\";\n }\n if (el.styleBinding) {\n data += \"style:(\" + (el.styleBinding) + \"),\";\n }\n return data\n}\n\nvar style$1 = {\n staticKeys: ['staticStyle'],\n transformNode: transformNode$1,\n genData: genData$1\n};\n\n/* */\n\nvar decoder;\n\nvar he = {\n decode: function decode (html) {\n decoder = decoder || document.createElement('div');\n decoder.innerHTML = html;\n return decoder.textContent\n }\n};\n\n/* */\n\nvar isUnaryTag = makeMap(\n 'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +\n 'link,meta,param,source,track,wbr'\n);\n\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\nvar canBeLeftOpenTag = makeMap(\n 'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'\n);\n\n// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3\n// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content\nvar isNonPhrasingTag = makeMap(\n 'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +\n 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +\n 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +\n 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +\n 'title,tr,track'\n);\n\n/**\n * Not type-checking this file because it's mostly vendor code.\n */\n\n// Regular Expressions for parsing tags and attributes\nvar attribute = /^\\s*([^\\s\"'<>\\/=]+)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\nvar dynamicArgAttribute = /^\\s*((?:v-[\\w-]+:|@|:|#)\\[[^=]+\\][^\\s\"'<>\\/=]*)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\nvar ncname = \"[a-zA-Z_][\\\\-\\\\.0-9_a-zA-Z\" + (unicodeRegExp.source) + \"]*\";\nvar qnameCapture = \"((?:\" + ncname + \"\\\\:)?\" + ncname + \")\";\nvar startTagOpen = new RegExp((\"^<\" + qnameCapture));\nvar startTagClose = /^\\s*(\\/?)>/;\nvar endTag = new RegExp((\"^<\\\\/\" + qnameCapture + \"[^>]*>\"));\nvar doctype = /^<!DOCTYPE [^>]+>/i;\n// #7298: escape - to avoid being pased as HTML comment when inlined in page\nvar comment = /^<!\\--/;\nvar conditionalComment = /^<!\\[/;\n\n// Special Elements (can contain anything)\nvar isPlainTextElement = makeMap('script,style,textarea', true);\nvar reCache = {};\n\nvar decodingMap = {\n '<': '<',\n '>': '>',\n '"': '\"',\n '&': '&',\n ' ': '\\n',\n '	': '\\t',\n ''': \"'\"\n};\nvar encodedAttr = /&(?:lt|gt|quot|amp|#39);/g;\nvar encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g;\n\n// #5992\nvar isIgnoreNewlineTag = makeMap('pre,textarea', true);\nvar shouldIgnoreFirstNewline = function (tag, html) { return tag && isIgnoreNewlineTag(tag) && html[0] === '\\n'; };\n\nfunction decodeAttr (value, shouldDecodeNewlines) {\n var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;\n return value.replace(re, function (match) { return decodingMap[match]; })\n}\n\nfunction parseHTML (html, options) {\n var stack = [];\n var expectHTML = options.expectHTML;\n var isUnaryTag$$1 = options.isUnaryTag || no;\n var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no;\n var index = 0;\n var last, lastTag;\n while (html) {\n last = html;\n // Make sure we're not in a plaintext content element like script/style\n if (!lastTag || !isPlainTextElement(lastTag)) {\n var textEnd = html.indexOf('<');\n if (textEnd === 0) {\n // Comment:\n if (comment.test(html)) {\n var commentEnd = html.indexOf('-->');\n\n if (commentEnd >= 0) {\n if (options.shouldKeepComment) {\n options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3);\n }\n advance(commentEnd + 3);\n continue\n }\n }\n\n // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment\n if (conditionalComment.test(html)) {\n var conditionalEnd = html.indexOf(']>');\n\n if (conditionalEnd >= 0) {\n advance(conditionalEnd + 2);\n continue\n }\n }\n\n // Doctype:\n var doctypeMatch = html.match(doctype);\n if (doctypeMatch) {\n advance(doctypeMatch[0].length);\n continue\n }\n\n // End tag:\n var endTagMatch = html.match(endTag);\n if (endTagMatch) {\n var curIndex = index;\n advance(endTagMatch[0].length);\n parseEndTag(endTagMatch[1], curIndex, index);\n continue\n }\n\n // Start tag:\n var startTagMatch = parseStartTag();\n if (startTagMatch) {\n handleStartTag(startTagMatch);\n if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) {\n advance(1);\n }\n continue\n }\n }\n\n var text = (void 0), rest = (void 0), next = (void 0);\n if (textEnd >= 0) {\n rest = html.slice(textEnd);\n while (\n !endTag.test(rest) &&\n !startTagOpen.test(rest) &&\n !comment.test(rest) &&\n !conditionalComment.test(rest)\n ) {\n // < in plain text, be forgiving and treat it as text\n next = rest.indexOf('<', 1);\n if (next < 0) { break }\n textEnd += next;\n rest = html.slice(textEnd);\n }\n text = html.substring(0, textEnd);\n }\n\n if (textEnd < 0) {\n text = html;\n }\n\n if (text) {\n advance(text.length);\n }\n\n if (options.chars && text) {\n options.chars(text, index - text.length, index);\n }\n } else {\n var endTagLength = 0;\n var stackedTag = lastTag.toLowerCase();\n var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\\\s\\\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));\n var rest$1 = html.replace(reStackedTag, function (all, text, endTag) {\n endTagLength = endTag.length;\n if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') {\n text = text\n .replace(/<!\\--([\\s\\S]*?)-->/g, '$1') // #7298\n .replace(/<!\\[CDATA\\[([\\s\\S]*?)]]>/g, '$1');\n }\n if (shouldIgnoreFirstNewline(stackedTag, text)) {\n text = text.slice(1);\n }\n if (options.chars) {\n options.chars(text);\n }\n return ''\n });\n index += html.length - rest$1.length;\n html = rest$1;\n parseEndTag(stackedTag, index - endTagLength, index);\n }\n\n if (html === last) {\n options.chars && options.chars(html);\n if (process.env.NODE_ENV !== 'production' && !stack.length && options.warn) {\n options.warn((\"Mal-formatted tag at end of template: \\\"\" + html + \"\\\"\"), { start: index + html.length });\n }\n break\n }\n }\n\n // Clean up any remaining tags\n parseEndTag();\n\n function advance (n) {\n index += n;\n html = html.substring(n);\n }\n\n function parseStartTag () {\n var start = html.match(startTagOpen);\n if (start) {\n var match = {\n tagName: start[1],\n attrs: [],\n start: index\n };\n advance(start[0].length);\n var end, attr;\n while (!(end = html.match(startTagClose)) && (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {\n attr.start = index;\n advance(attr[0].length);\n attr.end = index;\n match.attrs.push(attr);\n }\n if (end) {\n match.unarySlash = end[1];\n advance(end[0].length);\n match.end = index;\n return match\n }\n }\n }\n\n function handleStartTag (match) {\n var tagName = match.tagName;\n var unarySlash = match.unarySlash;\n\n if (expectHTML) {\n if (lastTag === 'p' && isNonPhrasingTag(tagName)) {\n parseEndTag(lastTag);\n }\n if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) {\n parseEndTag(tagName);\n }\n }\n\n var unary = isUnaryTag$$1(tagName) || !!unarySlash;\n\n var l = match.attrs.length;\n var attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n var args = match.attrs[i];\n var value = args[3] || args[4] || args[5] || '';\n var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href'\n ? options.shouldDecodeNewlinesForHref\n : options.shouldDecodeNewlines;\n attrs[i] = {\n name: args[1],\n value: decodeAttr(value, shouldDecodeNewlines)\n };\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n attrs[i].start = args.start + args[0].match(/^\\s*/).length;\n attrs[i].end = args.end;\n }\n }\n\n if (!unary) {\n stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs, start: match.start, end: match.end });\n lastTag = tagName;\n }\n\n if (options.start) {\n options.start(tagName, attrs, unary, match.start, match.end);\n }\n }\n\n function parseEndTag (tagName, start, end) {\n var pos, lowerCasedTagName;\n if (start == null) { start = index; }\n if (end == null) { end = index; }\n\n // Find the closest opened tag of the same type\n if (tagName) {\n lowerCasedTagName = tagName.toLowerCase();\n for (pos = stack.length - 1; pos >= 0; pos--) {\n if (stack[pos].lowerCasedTag === lowerCasedTagName) {\n break\n }\n }\n } else {\n // If no tag name is provided, clean shop\n pos = 0;\n }\n\n if (pos >= 0) {\n // Close all the open elements, up the stack\n for (var i = stack.length - 1; i >= pos; i--) {\n if (process.env.NODE_ENV !== 'production' &&\n (i > pos || !tagName) &&\n options.warn\n ) {\n options.warn(\n (\"tag <\" + (stack[i].tag) + \"> has no matching end tag.\"),\n { start: stack[i].start, end: stack[i].end }\n );\n }\n if (options.end) {\n options.end(stack[i].tag, start, end);\n }\n }\n\n // Remove the open elements from the stack\n stack.length = pos;\n lastTag = pos && stack[pos - 1].tag;\n } else if (lowerCasedTagName === 'br') {\n if (options.start) {\n options.start(tagName, [], true, start, end);\n }\n } else if (lowerCasedTagName === 'p') {\n if (options.start) {\n options.start(tagName, [], false, start, end);\n }\n if (options.end) {\n options.end(tagName, start, end);\n }\n }\n }\n}\n\n/* */\n\nvar onRE = /^@|^v-on:/;\nvar dirRE = /^v-|^@|^:/;\nvar forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/;\nvar forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\nvar stripParensRE = /^\\(|\\)$/g;\nvar dynamicArgRE = /^\\[.*\\]$/;\n\nvar argRE = /:(.*)$/;\nvar bindRE = /^:|^\\.|^v-bind:/;\nvar modifierRE = /\\.[^.\\]]+(?=[^\\]]*$)/g;\n\nvar slotRE = /^v-slot(:|$)|^#/;\n\nvar lineBreakRE = /[\\r\\n]/;\nvar whitespaceRE$1 = /\\s+/g;\n\nvar invalidAttributeRE = /[\\s\"'<>\\/=]/;\n\nvar decodeHTMLCached = cached(he.decode);\n\nvar emptySlotScopeToken = \"_empty_\";\n\n// configurable state\nvar warn$2;\nvar delimiters;\nvar transforms;\nvar preTransforms;\nvar postTransforms;\nvar platformIsPreTag;\nvar platformMustUseProp;\nvar platformGetTagNamespace;\nvar maybeComponent;\n\nfunction createASTElement (\n tag,\n attrs,\n parent\n) {\n return {\n type: 1,\n tag: tag,\n attrsList: attrs,\n attrsMap: makeAttrsMap(attrs),\n rawAttrsMap: {},\n parent: parent,\n children: []\n }\n}\n\n/**\n * Convert HTML string to AST.\n */\nfunction parse (\n template,\n options\n) {\n warn$2 = options.warn || baseWarn;\n\n platformIsPreTag = options.isPreTag || no;\n platformMustUseProp = options.mustUseProp || no;\n platformGetTagNamespace = options.getTagNamespace || no;\n var isReservedTag = options.isReservedTag || no;\n maybeComponent = function (el) { return !!el.component || !isReservedTag(el.tag); };\n\n transforms = pluckModuleFunction(options.modules, 'transformNode');\n preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');\n postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');\n\n delimiters = options.delimiters;\n\n var stack = [];\n var preserveWhitespace = options.preserveWhitespace !== false;\n var whitespaceOption = options.whitespace;\n var root;\n var currentParent;\n var inVPre = false;\n var inPre = false;\n var warned = false;\n\n function warnOnce (msg, range) {\n if (!warned) {\n warned = true;\n warn$2(msg, range);\n }\n }\n\n function closeElement (element) {\n trimEndingWhitespace(element);\n if (!inVPre && !element.processed) {\n element = processElement(element, options);\n }\n // tree management\n if (!stack.length && element !== root) {\n // allow root elements with v-if, v-else-if and v-else\n if (root.if && (element.elseif || element.else)) {\n if (process.env.NODE_ENV !== 'production') {\n checkRootConstraints(element);\n }\n addIfCondition(root, {\n exp: element.elseif,\n block: element\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warnOnce(\n \"Component template should contain exactly one root element. \" +\n \"If you are using v-if on multiple elements, \" +\n \"use v-else-if to chain them instead.\",\n { start: element.start }\n );\n }\n }\n if (currentParent && !element.forbidden) {\n if (element.elseif || element.else) {\n processIfConditions(element, currentParent);\n } else {\n if (element.slotScope) {\n // scoped slot\n // keep it in the children list so that v-else(-if) conditions can\n // find it as the prev node.\n var name = element.slotTarget || '\"default\"'\n ;(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;\n }\n currentParent.children.push(element);\n element.parent = currentParent;\n }\n }\n\n // final children cleanup\n // filter out scoped slots\n element.children = element.children.filter(function (c) { return !(c).slotScope; });\n // remove trailing whitespace node again\n trimEndingWhitespace(element);\n\n // check pre state\n if (element.pre) {\n inVPre = false;\n }\n if (platformIsPreTag(element.tag)) {\n inPre = false;\n }\n // apply post-transforms\n for (var i = 0; i < postTransforms.length; i++) {\n postTransforms[i](element, options);\n }\n }\n\n function trimEndingWhitespace (el) {\n // remove trailing whitespace node\n if (!inPre) {\n var lastNode;\n while (\n (lastNode = el.children[el.children.length - 1]) &&\n lastNode.type === 3 &&\n lastNode.text === ' '\n ) {\n el.children.pop();\n }\n }\n }\n\n function checkRootConstraints (el) {\n if (el.tag === 'slot' || el.tag === 'template') {\n warnOnce(\n \"Cannot use <\" + (el.tag) + \"> as component root element because it may \" +\n 'contain multiple nodes.',\n { start: el.start }\n );\n }\n if (el.attrsMap.hasOwnProperty('v-for')) {\n warnOnce(\n 'Cannot use v-for on stateful component root element because ' +\n 'it renders multiple elements.',\n el.rawAttrsMap['v-for']\n );\n }\n }\n\n parseHTML(template, {\n warn: warn$2,\n expectHTML: options.expectHTML,\n isUnaryTag: options.isUnaryTag,\n canBeLeftOpenTag: options.canBeLeftOpenTag,\n shouldDecodeNewlines: options.shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,\n shouldKeepComment: options.comments,\n outputSourceRange: options.outputSourceRange,\n start: function start (tag, attrs, unary, start$1, end) {\n // check namespace.\n // inherit parent ns if there is one\n var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);\n\n // handle IE svg bug\n /* istanbul ignore if */\n if (isIE && ns === 'svg') {\n attrs = guardIESVGBug(attrs);\n }\n\n var element = createASTElement(tag, attrs, currentParent);\n if (ns) {\n element.ns = ns;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (options.outputSourceRange) {\n element.start = start$1;\n element.end = end;\n element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {\n cumulated[attr.name] = attr;\n return cumulated\n }, {});\n }\n attrs.forEach(function (attr) {\n if (invalidAttributeRE.test(attr.name)) {\n warn$2(\n \"Invalid dynamic argument expression: attribute names cannot contain \" +\n \"spaces, quotes, <, >, / or =.\",\n {\n start: attr.start + attr.name.indexOf(\"[\"),\n end: attr.start + attr.name.length\n }\n );\n }\n });\n }\n\n if (isForbiddenTag(element) && !isServerRendering()) {\n element.forbidden = true;\n process.env.NODE_ENV !== 'production' && warn$2(\n 'Templates should only be responsible for mapping the state to the ' +\n 'UI. Avoid placing tags with side-effects in your templates, such as ' +\n \"<\" + tag + \">\" + ', as they will not be parsed.',\n { start: element.start }\n );\n }\n\n // apply pre-transforms\n for (var i = 0; i < preTransforms.length; i++) {\n element = preTransforms[i](element, options) || element;\n }\n\n if (!inVPre) {\n processPre(element);\n if (element.pre) {\n inVPre = true;\n }\n }\n if (platformIsPreTag(element.tag)) {\n inPre = true;\n }\n if (inVPre) {\n processRawAttrs(element);\n } else if (!element.processed) {\n // structural directives\n processFor(element);\n processIf(element);\n processOnce(element);\n }\n\n if (!root) {\n root = element;\n if (process.env.NODE_ENV !== 'production') {\n checkRootConstraints(root);\n }\n }\n\n if (!unary) {\n currentParent = element;\n stack.push(element);\n } else {\n closeElement(element);\n }\n },\n\n end: function end (tag, start, end$1) {\n var element = stack[stack.length - 1];\n // pop stack\n stack.length -= 1;\n currentParent = stack[stack.length - 1];\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n element.end = end$1;\n }\n closeElement(element);\n },\n\n chars: function chars (text, start, end) {\n if (!currentParent) {\n if (process.env.NODE_ENV !== 'production') {\n if (text === template) {\n warnOnce(\n 'Component template requires a root element, rather than just text.',\n { start: start }\n );\n } else if ((text = text.trim())) {\n warnOnce(\n (\"text \\\"\" + text + \"\\\" outside root element will be ignored.\"),\n { start: start }\n );\n }\n }\n return\n }\n // IE textarea placeholder bug\n /* istanbul ignore if */\n if (isIE &&\n currentParent.tag === 'textarea' &&\n currentParent.attrsMap.placeholder === text\n ) {\n return\n }\n var children = currentParent.children;\n if (inPre || text.trim()) {\n text = isTextTag(currentParent) ? text : decodeHTMLCached(text);\n } else if (!children.length) {\n // remove the whitespace-only node right after an opening tag\n text = '';\n } else if (whitespaceOption) {\n if (whitespaceOption === 'condense') {\n // in condense mode, remove the whitespace node if it contains\n // line break, otherwise condense to a single space\n text = lineBreakRE.test(text) ? '' : ' ';\n } else {\n text = ' ';\n }\n } else {\n text = preserveWhitespace ? ' ' : '';\n }\n if (text) {\n if (!inPre && whitespaceOption === 'condense') {\n // condense consecutive whitespaces into single space\n text = text.replace(whitespaceRE$1, ' ');\n }\n var res;\n var child;\n if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {\n child = {\n type: 2,\n expression: res.expression,\n tokens: res.tokens,\n text: text\n };\n } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') {\n child = {\n type: 3,\n text: text\n };\n }\n if (child) {\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n child.start = start;\n child.end = end;\n }\n children.push(child);\n }\n }\n },\n comment: function comment (text, start, end) {\n // adding anyting as a sibling to the root node is forbidden\n // comments should still be allowed, but ignored\n if (currentParent) {\n var child = {\n type: 3,\n text: text,\n isComment: true\n };\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n child.start = start;\n child.end = end;\n }\n currentParent.children.push(child);\n }\n }\n });\n return root\n}\n\nfunction processPre (el) {\n if (getAndRemoveAttr(el, 'v-pre') != null) {\n el.pre = true;\n }\n}\n\nfunction processRawAttrs (el) {\n var list = el.attrsList;\n var len = list.length;\n if (len) {\n var attrs = el.attrs = new Array(len);\n for (var i = 0; i < len; i++) {\n attrs[i] = {\n name: list[i].name,\n value: JSON.stringify(list[i].value)\n };\n if (list[i].start != null) {\n attrs[i].start = list[i].start;\n attrs[i].end = list[i].end;\n }\n }\n } else if (!el.pre) {\n // non root node in pre blocks with no attributes\n el.plain = true;\n }\n}\n\nfunction processElement (\n element,\n options\n) {\n processKey(element);\n\n // determine whether this is a plain element after\n // removing structural attributes\n element.plain = (\n !element.key &&\n !element.scopedSlots &&\n !element.attrsList.length\n );\n\n processRef(element);\n processSlotContent(element);\n processSlotOutlet(element);\n processComponent(element);\n for (var i = 0; i < transforms.length; i++) {\n element = transforms[i](element, options) || element;\n }\n processAttrs(element);\n return element\n}\n\nfunction processKey (el) {\n var exp = getBindingAttr(el, 'key');\n if (exp) {\n if (process.env.NODE_ENV !== 'production') {\n if (el.tag === 'template') {\n warn$2(\n \"<template> cannot be keyed. Place the key on real elements instead.\",\n getRawBindingAttr(el, 'key')\n );\n }\n if (el.for) {\n var iterator = el.iterator2 || el.iterator1;\n var parent = el.parent;\n if (iterator && iterator === exp && parent && parent.tag === 'transition-group') {\n warn$2(\n \"Do not use v-for index as key on <transition-group> children, \" +\n \"this is the same as not using keys.\",\n getRawBindingAttr(el, 'key'),\n true /* tip */\n );\n }\n }\n }\n el.key = exp;\n }\n}\n\nfunction processRef (el) {\n var ref = getBindingAttr(el, 'ref');\n if (ref) {\n el.ref = ref;\n el.refInFor = checkInFor(el);\n }\n}\n\nfunction processFor (el) {\n var exp;\n if ((exp = getAndRemoveAttr(el, 'v-for'))) {\n var res = parseFor(exp);\n if (res) {\n extend(el, res);\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n (\"Invalid v-for expression: \" + exp),\n el.rawAttrsMap['v-for']\n );\n }\n }\n}\n\n\n\nfunction parseFor (exp) {\n var inMatch = exp.match(forAliasRE);\n if (!inMatch) { return }\n var res = {};\n res.for = inMatch[2].trim();\n var alias = inMatch[1].trim().replace(stripParensRE, '');\n var iteratorMatch = alias.match(forIteratorRE);\n if (iteratorMatch) {\n res.alias = alias.replace(forIteratorRE, '').trim();\n res.iterator1 = iteratorMatch[1].trim();\n if (iteratorMatch[2]) {\n res.iterator2 = iteratorMatch[2].trim();\n }\n } else {\n res.alias = alias;\n }\n return res\n}\n\nfunction processIf (el) {\n var exp = getAndRemoveAttr(el, 'v-if');\n if (exp) {\n el.if = exp;\n addIfCondition(el, {\n exp: exp,\n block: el\n });\n } else {\n if (getAndRemoveAttr(el, 'v-else') != null) {\n el.else = true;\n }\n var elseif = getAndRemoveAttr(el, 'v-else-if');\n if (elseif) {\n el.elseif = elseif;\n }\n }\n}\n\nfunction processIfConditions (el, parent) {\n var prev = findPrevElement(parent.children);\n if (prev && prev.if) {\n addIfCondition(prev, {\n exp: el.elseif,\n block: el\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n \"v-\" + (el.elseif ? ('else-if=\"' + el.elseif + '\"') : 'else') + \" \" +\n \"used on element <\" + (el.tag) + \"> without corresponding v-if.\",\n el.rawAttrsMap[el.elseif ? 'v-else-if' : 'v-else']\n );\n }\n}\n\nfunction findPrevElement (children) {\n var i = children.length;\n while (i--) {\n if (children[i].type === 1) {\n return children[i]\n } else {\n if (process.env.NODE_ENV !== 'production' && children[i].text !== ' ') {\n warn$2(\n \"text \\\"\" + (children[i].text.trim()) + \"\\\" between v-if and v-else(-if) \" +\n \"will be ignored.\",\n children[i]\n );\n }\n children.pop();\n }\n }\n}\n\nfunction addIfCondition (el, condition) {\n if (!el.ifConditions) {\n el.ifConditions = [];\n }\n el.ifConditions.push(condition);\n}\n\nfunction processOnce (el) {\n var once$$1 = getAndRemoveAttr(el, 'v-once');\n if (once$$1 != null) {\n el.once = true;\n }\n}\n\n// handle content being passed to a component as slot,\n// e.g. <template slot=\"xxx\">, <div slot-scope=\"xxx\">\nfunction processSlotContent (el) {\n var slotScope;\n if (el.tag === 'template') {\n slotScope = getAndRemoveAttr(el, 'scope');\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && slotScope) {\n warn$2(\n \"the \\\"scope\\\" attribute for scoped slots have been deprecated and \" +\n \"replaced by \\\"slot-scope\\\" since 2.5. The new \\\"slot-scope\\\" attribute \" +\n \"can also be used on plain elements in addition to <template> to \" +\n \"denote scoped slots.\",\n el.rawAttrsMap['scope'],\n true\n );\n }\n el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');\n } else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && el.attrsMap['v-for']) {\n warn$2(\n \"Ambiguous combined usage of slot-scope and v-for on <\" + (el.tag) + \"> \" +\n \"(v-for takes higher priority). Use a wrapper <template> for the \" +\n \"scoped slot to make it clearer.\",\n el.rawAttrsMap['slot-scope'],\n true\n );\n }\n el.slotScope = slotScope;\n }\n\n // slot=\"xxx\"\n var slotTarget = getBindingAttr(el, 'slot');\n if (slotTarget) {\n el.slotTarget = slotTarget === '\"\"' ? '\"default\"' : slotTarget;\n el.slotTargetDynamic = !!(el.attrsMap[':slot'] || el.attrsMap['v-bind:slot']);\n // preserve slot as an attribute for native shadow DOM compat\n // only for non-scoped slots.\n if (el.tag !== 'template' && !el.slotScope) {\n addAttr(el, 'slot', slotTarget, getRawBindingAttr(el, 'slot'));\n }\n }\n\n // 2.6 v-slot syntax\n {\n if (el.tag === 'template') {\n // v-slot on <template>\n var slotBinding = getAndRemoveAttrByRegex(el, slotRE);\n if (slotBinding) {\n if (process.env.NODE_ENV !== 'production') {\n if (el.slotTarget || el.slotScope) {\n warn$2(\n \"Unexpected mixed usage of different slot syntaxes.\",\n el\n );\n }\n if (el.parent && !maybeComponent(el.parent)) {\n warn$2(\n \"<template v-slot> can only appear at the root level inside \" +\n \"the receiving the component\",\n el\n );\n }\n }\n var ref = getSlotName(slotBinding);\n var name = ref.name;\n var dynamic = ref.dynamic;\n el.slotTarget = name;\n el.slotTargetDynamic = dynamic;\n el.slotScope = slotBinding.value || emptySlotScopeToken; // force it into a scoped slot for perf\n }\n } else {\n // v-slot on component, denotes default slot\n var slotBinding$1 = getAndRemoveAttrByRegex(el, slotRE);\n if (slotBinding$1) {\n if (process.env.NODE_ENV !== 'production') {\n if (!maybeComponent(el)) {\n warn$2(\n \"v-slot can only be used on components or <template>.\",\n slotBinding$1\n );\n }\n if (el.slotScope || el.slotTarget) {\n warn$2(\n \"Unexpected mixed usage of different slot syntaxes.\",\n el\n );\n }\n if (el.scopedSlots) {\n warn$2(\n \"To avoid scope ambiguity, the default slot should also use \" +\n \"<template> syntax when there are other named slots.\",\n slotBinding$1\n );\n }\n }\n // add the component's children to its default slot\n var slots = el.scopedSlots || (el.scopedSlots = {});\n var ref$1 = getSlotName(slotBinding$1);\n var name$1 = ref$1.name;\n var dynamic$1 = ref$1.dynamic;\n var slotContainer = slots[name$1] = createASTElement('template', [], el);\n slotContainer.slotTarget = name$1;\n slotContainer.slotTargetDynamic = dynamic$1;\n slotContainer.children = el.children.filter(function (c) {\n if (!c.slotScope) {\n c.parent = slotContainer;\n return true\n }\n });\n slotContainer.slotScope = slotBinding$1.value || emptySlotScopeToken;\n // remove children as they are returned from scopedSlots now\n el.children = [];\n // mark el non-plain so data gets generated\n el.plain = false;\n }\n }\n }\n}\n\nfunction getSlotName (binding) {\n var name = binding.name.replace(slotRE, '');\n if (!name) {\n if (binding.name[0] !== '#') {\n name = 'default';\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n \"v-slot shorthand syntax requires a slot name.\",\n binding\n );\n }\n }\n return dynamicArgRE.test(name)\n // dynamic [name]\n ? { name: name.slice(1, -1), dynamic: true }\n // static name\n : { name: (\"\\\"\" + name + \"\\\"\"), dynamic: false }\n}\n\n// handle <slot/> outlets\nfunction processSlotOutlet (el) {\n if (el.tag === 'slot') {\n el.slotName = getBindingAttr(el, 'name');\n if (process.env.NODE_ENV !== 'production' && el.key) {\n warn$2(\n \"`key` does not work on <slot> because slots are abstract outlets \" +\n \"and can possibly expand into multiple elements. \" +\n \"Use the key on a wrapping element instead.\",\n getRawBindingAttr(el, 'key')\n );\n }\n }\n}\n\nfunction processComponent (el) {\n var binding;\n if ((binding = getBindingAttr(el, 'is'))) {\n el.component = binding;\n }\n if (getAndRemoveAttr(el, 'inline-template') != null) {\n el.inlineTemplate = true;\n }\n}\n\nfunction processAttrs (el) {\n var list = el.attrsList;\n var i, l, name, rawName, value, modifiers, syncGen, isDynamic;\n for (i = 0, l = list.length; i < l; i++) {\n name = rawName = list[i].name;\n value = list[i].value;\n if (dirRE.test(name)) {\n // mark element as dynamic\n el.hasBindings = true;\n // modifiers\n modifiers = parseModifiers(name.replace(dirRE, ''));\n // support .foo shorthand syntax for the .prop modifier\n if (modifiers) {\n name = name.replace(modifierRE, '');\n }\n if (bindRE.test(name)) { // v-bind\n name = name.replace(bindRE, '');\n value = parseFilters(value);\n isDynamic = dynamicArgRE.test(name);\n if (isDynamic) {\n name = name.slice(1, -1);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n value.trim().length === 0\n ) {\n warn$2(\n (\"The value for a v-bind expression cannot be empty. Found in \\\"v-bind:\" + name + \"\\\"\")\n );\n }\n if (modifiers) {\n if (modifiers.prop && !isDynamic) {\n name = camelize(name);\n if (name === 'innerHtml') { name = 'innerHTML'; }\n }\n if (modifiers.camel && !isDynamic) {\n name = camelize(name);\n }\n if (modifiers.sync) {\n syncGen = genAssignmentCode(value, \"$event\");\n if (!isDynamic) {\n addHandler(\n el,\n (\"update:\" + (camelize(name))),\n syncGen,\n null,\n false,\n warn$2,\n list[i]\n );\n if (hyphenate(name) !== camelize(name)) {\n addHandler(\n el,\n (\"update:\" + (hyphenate(name))),\n syncGen,\n null,\n false,\n warn$2,\n list[i]\n );\n }\n } else {\n // handler w/ dynamic event name\n addHandler(\n el,\n (\"\\\"update:\\\"+(\" + name + \")\"),\n syncGen,\n null,\n false,\n warn$2,\n list[i],\n true // dynamic\n );\n }\n }\n }\n if ((modifiers && modifiers.prop) || (\n !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name)\n )) {\n addProp(el, name, value, list[i], isDynamic);\n } else {\n addAttr(el, name, value, list[i], isDynamic);\n }\n } else if (onRE.test(name)) { // v-on\n name = name.replace(onRE, '');\n isDynamic = dynamicArgRE.test(name);\n if (isDynamic) {\n name = name.slice(1, -1);\n }\n addHandler(el, name, value, modifiers, false, warn$2, list[i], isDynamic);\n } else { // normal directives\n name = name.replace(dirRE, '');\n // parse arg\n var argMatch = name.match(argRE);\n var arg = argMatch && argMatch[1];\n isDynamic = false;\n if (arg) {\n name = name.slice(0, -(arg.length + 1));\n if (dynamicArgRE.test(arg)) {\n arg = arg.slice(1, -1);\n isDynamic = true;\n }\n }\n addDirective(el, name, rawName, value, arg, isDynamic, modifiers, list[i]);\n if (process.env.NODE_ENV !== 'production' && name === 'model') {\n checkForAliasModel(el, value);\n }\n }\n } else {\n // literal attribute\n if (process.env.NODE_ENV !== 'production') {\n var res = parseText(value, delimiters);\n if (res) {\n warn$2(\n name + \"=\\\"\" + value + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div id=\"{{ val }}\">, use <div :id=\"val\">.',\n list[i]\n );\n }\n }\n addAttr(el, name, JSON.stringify(value), list[i]);\n // #6887 firefox doesn't update muted state if set via attribute\n // even immediately after element creation\n if (!el.component &&\n name === 'muted' &&\n platformMustUseProp(el.tag, el.attrsMap.type, name)) {\n addProp(el, name, 'true', list[i]);\n }\n }\n }\n}\n\nfunction checkInFor (el) {\n var parent = el;\n while (parent) {\n if (parent.for !== undefined) {\n return true\n }\n parent = parent.parent;\n }\n return false\n}\n\nfunction parseModifiers (name) {\n var match = name.match(modifierRE);\n if (match) {\n var ret = {};\n match.forEach(function (m) { ret[m.slice(1)] = true; });\n return ret\n }\n}\n\nfunction makeAttrsMap (attrs) {\n var map = {};\n for (var i = 0, l = attrs.length; i < l; i++) {\n if (\n process.env.NODE_ENV !== 'production' &&\n map[attrs[i].name] && !isIE && !isEdge\n ) {\n warn$2('duplicate attribute: ' + attrs[i].name, attrs[i]);\n }\n map[attrs[i].name] = attrs[i].value;\n }\n return map\n}\n\n// for script (e.g. type=\"x/template\") or style, do not decode content\nfunction isTextTag (el) {\n return el.tag === 'script' || el.tag === 'style'\n}\n\nfunction isForbiddenTag (el) {\n return (\n el.tag === 'style' ||\n (el.tag === 'script' && (\n !el.attrsMap.type ||\n el.attrsMap.type === 'text/javascript'\n ))\n )\n}\n\nvar ieNSBug = /^xmlns:NS\\d+/;\nvar ieNSPrefix = /^NS\\d+:/;\n\n/* istanbul ignore next */\nfunction guardIESVGBug (attrs) {\n var res = [];\n for (var i = 0; i < attrs.length; i++) {\n var attr = attrs[i];\n if (!ieNSBug.test(attr.name)) {\n attr.name = attr.name.replace(ieNSPrefix, '');\n res.push(attr);\n }\n }\n return res\n}\n\nfunction checkForAliasModel (el, value) {\n var _el = el;\n while (_el) {\n if (_el.for && _el.alias === value) {\n warn$2(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"You are binding v-model directly to a v-for iteration alias. \" +\n \"This will not be able to modify the v-for source array because \" +\n \"writing to the alias is like modifying a function local variable. \" +\n \"Consider using an array of objects and use v-model on an object property instead.\",\n el.rawAttrsMap['v-model']\n );\n }\n _el = _el.parent;\n }\n}\n\n/* */\n\nfunction preTransformNode (el, options) {\n if (el.tag === 'input') {\n var map = el.attrsMap;\n if (!map['v-model']) {\n return\n }\n\n var typeBinding;\n if (map[':type'] || map['v-bind:type']) {\n typeBinding = getBindingAttr(el, 'type');\n }\n if (!map.type && !typeBinding && map['v-bind']) {\n typeBinding = \"(\" + (map['v-bind']) + \").type\";\n }\n\n if (typeBinding) {\n var ifCondition = getAndRemoveAttr(el, 'v-if', true);\n var ifConditionExtra = ifCondition ? (\"&&(\" + ifCondition + \")\") : \"\";\n var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;\n var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true);\n // 1. checkbox\n var branch0 = cloneASTElement(el);\n // process for on the main node\n processFor(branch0);\n addRawAttr(branch0, 'type', 'checkbox');\n processElement(branch0, options);\n branch0.processed = true; // prevent it from double-processed\n branch0.if = \"(\" + typeBinding + \")==='checkbox'\" + ifConditionExtra;\n addIfCondition(branch0, {\n exp: branch0.if,\n block: branch0\n });\n // 2. add radio else-if condition\n var branch1 = cloneASTElement(el);\n getAndRemoveAttr(branch1, 'v-for', true);\n addRawAttr(branch1, 'type', 'radio');\n processElement(branch1, options);\n addIfCondition(branch0, {\n exp: \"(\" + typeBinding + \")==='radio'\" + ifConditionExtra,\n block: branch1\n });\n // 3. other\n var branch2 = cloneASTElement(el);\n getAndRemoveAttr(branch2, 'v-for', true);\n addRawAttr(branch2, ':type', typeBinding);\n processElement(branch2, options);\n addIfCondition(branch0, {\n exp: ifCondition,\n block: branch2\n });\n\n if (hasElse) {\n branch0.else = true;\n } else if (elseIfCondition) {\n branch0.elseif = elseIfCondition;\n }\n\n return branch0\n }\n }\n}\n\nfunction cloneASTElement (el) {\n return createASTElement(el.tag, el.attrsList.slice(), el.parent)\n}\n\nvar model$1 = {\n preTransformNode: preTransformNode\n};\n\nvar modules$1 = [\n klass$1,\n style$1,\n model$1\n];\n\n/* */\n\nfunction text (el, dir) {\n if (dir.value) {\n addProp(el, 'textContent', (\"_s(\" + (dir.value) + \")\"), dir);\n }\n}\n\n/* */\n\nfunction html (el, dir) {\n if (dir.value) {\n addProp(el, 'innerHTML', (\"_s(\" + (dir.value) + \")\"), dir);\n }\n}\n\nvar directives$1 = {\n model: model,\n text: text,\n html: html\n};\n\n/* */\n\nvar baseOptions = {\n expectHTML: true,\n modules: modules$1,\n directives: directives$1,\n isPreTag: isPreTag,\n isUnaryTag: isUnaryTag,\n mustUseProp: mustUseProp,\n canBeLeftOpenTag: canBeLeftOpenTag,\n isReservedTag: isReservedTag,\n getTagNamespace: getTagNamespace,\n staticKeys: genStaticKeys(modules$1)\n};\n\n/* */\n\nvar isStaticKey;\nvar isPlatformReservedTag;\n\nvar genStaticKeysCached = cached(genStaticKeys$1);\n\n/**\n * Goal of the optimizer: walk the generated template AST tree\n * and detect sub-trees that are purely static, i.e. parts of\n * the DOM that never needs to change.\n *\n * Once we detect these sub-trees, we can:\n *\n * 1. Hoist them into constants, so that we no longer need to\n * create fresh nodes for them on each re-render;\n * 2. Completely skip them in the patching process.\n */\nfunction optimize (root, options) {\n if (!root) { return }\n isStaticKey = genStaticKeysCached(options.staticKeys || '');\n isPlatformReservedTag = options.isReservedTag || no;\n // first pass: mark all non-static nodes.\n markStatic$1(root);\n // second pass: mark static roots.\n markStaticRoots(root, false);\n}\n\nfunction genStaticKeys$1 (keys) {\n return makeMap(\n 'type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' +\n (keys ? ',' + keys : '')\n )\n}\n\nfunction markStatic$1 (node) {\n node.static = isStatic(node);\n if (node.type === 1) {\n // do not make component slot content static. this avoids\n // 1. components not able to mutate slot nodes\n // 2. static slot content fails for hot-reloading\n if (\n !isPlatformReservedTag(node.tag) &&\n node.tag !== 'slot' &&\n node.attrsMap['inline-template'] == null\n ) {\n return\n }\n for (var i = 0, l = node.children.length; i < l; i++) {\n var child = node.children[i];\n markStatic$1(child);\n if (!child.static) {\n node.static = false;\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n var block = node.ifConditions[i$1].block;\n markStatic$1(block);\n if (!block.static) {\n node.static = false;\n }\n }\n }\n }\n}\n\nfunction markStaticRoots (node, isInFor) {\n if (node.type === 1) {\n if (node.static || node.once) {\n node.staticInFor = isInFor;\n }\n // For a node to qualify as a static root, it should have children that\n // are not just static text. Otherwise the cost of hoisting out will\n // outweigh the benefits and it's better off to just always render it fresh.\n if (node.static && node.children.length && !(\n node.children.length === 1 &&\n node.children[0].type === 3\n )) {\n node.staticRoot = true;\n return\n } else {\n node.staticRoot = false;\n }\n if (node.children) {\n for (var i = 0, l = node.children.length; i < l; i++) {\n markStaticRoots(node.children[i], isInFor || !!node.for);\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n markStaticRoots(node.ifConditions[i$1].block, isInFor);\n }\n }\n }\n}\n\nfunction isStatic (node) {\n if (node.type === 2) { // expression\n return false\n }\n if (node.type === 3) { // text\n return true\n }\n return !!(node.pre || (\n !node.hasBindings && // no dynamic bindings\n !node.if && !node.for && // not v-if or v-for or v-else\n !isBuiltInTag(node.tag) && // not a built-in\n isPlatformReservedTag(node.tag) && // not a component\n !isDirectChildOfTemplateFor(node) &&\n Object.keys(node).every(isStaticKey)\n ))\n}\n\nfunction isDirectChildOfTemplateFor (node) {\n while (node.parent) {\n node = node.parent;\n if (node.tag !== 'template') {\n return false\n }\n if (node.for) {\n return true\n }\n }\n return false\n}\n\n/* */\n\nvar fnExpRE = /^([\\w$_]+|\\([^)]*?\\))\\s*=>|^function\\s*(?:[\\w$]+)?\\s*\\(/;\nvar fnInvokeRE = /\\([^)]*?\\);*$/;\nvar simplePathRE = /^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['[^']*?']|\\[\"[^\"]*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*$/;\n\n// KeyboardEvent.keyCode aliases\nvar keyCodes = {\n esc: 27,\n tab: 9,\n enter: 13,\n space: 32,\n up: 38,\n left: 37,\n right: 39,\n down: 40,\n 'delete': [8, 46]\n};\n\n// KeyboardEvent.key aliases\nvar keyNames = {\n // #7880: IE11 and Edge use `Esc` for Escape key name.\n esc: ['Esc', 'Escape'],\n tab: 'Tab',\n enter: 'Enter',\n // #9112: IE11 uses `Spacebar` for Space key name.\n space: [' ', 'Spacebar'],\n // #7806: IE11 uses key names without `Arrow` prefix for arrow keys.\n up: ['Up', 'ArrowUp'],\n left: ['Left', 'ArrowLeft'],\n right: ['Right', 'ArrowRight'],\n down: ['Down', 'ArrowDown'],\n // #9112: IE11 uses `Del` for Delete key name.\n 'delete': ['Backspace', 'Delete', 'Del']\n};\n\n// #4868: modifiers that prevent the execution of the listener\n// need to explicitly return null so that we can determine whether to remove\n// the listener for .once\nvar genGuard = function (condition) { return (\"if(\" + condition + \")return null;\"); };\n\nvar modifierCode = {\n stop: '$event.stopPropagation();',\n prevent: '$event.preventDefault();',\n self: genGuard(\"$event.target !== $event.currentTarget\"),\n ctrl: genGuard(\"!$event.ctrlKey\"),\n shift: genGuard(\"!$event.shiftKey\"),\n alt: genGuard(\"!$event.altKey\"),\n meta: genGuard(\"!$event.metaKey\"),\n left: genGuard(\"'button' in $event && $event.button !== 0\"),\n middle: genGuard(\"'button' in $event && $event.button !== 1\"),\n right: genGuard(\"'button' in $event && $event.button !== 2\")\n};\n\nfunction genHandlers (\n events,\n isNative\n) {\n var prefix = isNative ? 'nativeOn:' : 'on:';\n var staticHandlers = \"\";\n var dynamicHandlers = \"\";\n for (var name in events) {\n var handlerCode = genHandler(events[name]);\n if (events[name] && events[name].dynamic) {\n dynamicHandlers += name + \",\" + handlerCode + \",\";\n } else {\n staticHandlers += \"\\\"\" + name + \"\\\":\" + handlerCode + \",\";\n }\n }\n staticHandlers = \"{\" + (staticHandlers.slice(0, -1)) + \"}\";\n if (dynamicHandlers) {\n return prefix + \"_d(\" + staticHandlers + \",[\" + (dynamicHandlers.slice(0, -1)) + \"])\"\n } else {\n return prefix + staticHandlers\n }\n}\n\nfunction genHandler (handler) {\n if (!handler) {\n return 'function(){}'\n }\n\n if (Array.isArray(handler)) {\n return (\"[\" + (handler.map(function (handler) { return genHandler(handler); }).join(',')) + \"]\")\n }\n\n var isMethodPath = simplePathRE.test(handler.value);\n var isFunctionExpression = fnExpRE.test(handler.value);\n var isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, ''));\n\n if (!handler.modifiers) {\n if (isMethodPath || isFunctionExpression) {\n return handler.value\n }\n return (\"function($event){\" + (isFunctionInvocation ? (\"return \" + (handler.value)) : handler.value) + \"}\") // inline statement\n } else {\n var code = '';\n var genModifierCode = '';\n var keys = [];\n for (var key in handler.modifiers) {\n if (modifierCode[key]) {\n genModifierCode += modifierCode[key];\n // left/right\n if (keyCodes[key]) {\n keys.push(key);\n }\n } else if (key === 'exact') {\n var modifiers = (handler.modifiers);\n genModifierCode += genGuard(\n ['ctrl', 'shift', 'alt', 'meta']\n .filter(function (keyModifier) { return !modifiers[keyModifier]; })\n .map(function (keyModifier) { return (\"$event.\" + keyModifier + \"Key\"); })\n .join('||')\n );\n } else {\n keys.push(key);\n }\n }\n if (keys.length) {\n code += genKeyFilter(keys);\n }\n // Make sure modifiers like prevent and stop get executed after key filtering\n if (genModifierCode) {\n code += genModifierCode;\n }\n var handlerCode = isMethodPath\n ? (\"return \" + (handler.value) + \"($event)\")\n : isFunctionExpression\n ? (\"return (\" + (handler.value) + \")($event)\")\n : isFunctionInvocation\n ? (\"return \" + (handler.value))\n : handler.value;\n return (\"function($event){\" + code + handlerCode + \"}\")\n }\n}\n\nfunction genKeyFilter (keys) {\n return (\n // make sure the key filters only apply to KeyboardEvents\n // #9441: can't use 'keyCode' in $event because Chrome autofill fires fake\n // key events that do not have keyCode property...\n \"if(!$event.type.indexOf('key')&&\" +\n (keys.map(genFilterCode).join('&&')) + \")return null;\"\n )\n}\n\nfunction genFilterCode (key) {\n var keyVal = parseInt(key, 10);\n if (keyVal) {\n return (\"$event.keyCode!==\" + keyVal)\n }\n var keyCode = keyCodes[key];\n var keyName = keyNames[key];\n return (\n \"_k($event.keyCode,\" +\n (JSON.stringify(key)) + \",\" +\n (JSON.stringify(keyCode)) + \",\" +\n \"$event.key,\" +\n \"\" + (JSON.stringify(keyName)) +\n \")\"\n )\n}\n\n/* */\n\nfunction on (el, dir) {\n if (process.env.NODE_ENV !== 'production' && dir.modifiers) {\n warn(\"v-on without argument does not support modifiers.\");\n }\n el.wrapListeners = function (code) { return (\"_g(\" + code + \",\" + (dir.value) + \")\"); };\n}\n\n/* */\n\nfunction bind$1 (el, dir) {\n el.wrapData = function (code) {\n return (\"_b(\" + code + \",'\" + (el.tag) + \"',\" + (dir.value) + \",\" + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + \")\")\n };\n}\n\n/* */\n\nvar baseDirectives = {\n on: on,\n bind: bind$1,\n cloak: noop\n};\n\n/* */\n\n\n\n\n\nvar CodegenState = function CodegenState (options) {\n this.options = options;\n this.warn = options.warn || baseWarn;\n this.transforms = pluckModuleFunction(options.modules, 'transformCode');\n this.dataGenFns = pluckModuleFunction(options.modules, 'genData');\n this.directives = extend(extend({}, baseDirectives), options.directives);\n var isReservedTag = options.isReservedTag || no;\n this.maybeComponent = function (el) { return !!el.component || !isReservedTag(el.tag); };\n this.onceId = 0;\n this.staticRenderFns = [];\n this.pre = false;\n};\n\n\n\nfunction generate (\n ast,\n options\n) {\n var state = new CodegenState(options);\n var code = ast ? genElement(ast, state) : '_c(\"div\")';\n return {\n render: (\"with(this){return \" + code + \"}\"),\n staticRenderFns: state.staticRenderFns\n }\n}\n\nfunction genElement (el, state) {\n if (el.parent) {\n el.pre = el.pre || el.parent.pre;\n }\n\n if (el.staticRoot && !el.staticProcessed) {\n return genStatic(el, state)\n } else if (el.once && !el.onceProcessed) {\n return genOnce(el, state)\n } else if (el.for && !el.forProcessed) {\n return genFor(el, state)\n } else if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.tag === 'template' && !el.slotTarget && !state.pre) {\n return genChildren(el, state) || 'void 0'\n } else if (el.tag === 'slot') {\n return genSlot(el, state)\n } else {\n // component or element\n var code;\n if (el.component) {\n code = genComponent(el.component, el, state);\n } else {\n var data;\n if (!el.plain || (el.pre && state.maybeComponent(el))) {\n data = genData$2(el, state);\n }\n\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n code = \"_c('\" + (el.tag) + \"'\" + (data ? (\",\" + data) : '') + (children ? (\",\" + children) : '') + \")\";\n }\n // module transforms\n for (var i = 0; i < state.transforms.length; i++) {\n code = state.transforms[i](el, code);\n }\n return code\n }\n}\n\n// hoist static sub-trees out\nfunction genStatic (el, state) {\n el.staticProcessed = true;\n // Some elements (templates) need to behave differently inside of a v-pre\n // node. All pre nodes are static roots, so we can use this as a location to\n // wrap a state change and reset it upon exiting the pre node.\n var originalPreState = state.pre;\n if (el.pre) {\n state.pre = el.pre;\n }\n state.staticRenderFns.push((\"with(this){return \" + (genElement(el, state)) + \"}\"));\n state.pre = originalPreState;\n return (\"_m(\" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + \")\")\n}\n\n// v-once\nfunction genOnce (el, state) {\n el.onceProcessed = true;\n if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.staticInFor) {\n var key = '';\n var parent = el.parent;\n while (parent) {\n if (parent.for) {\n key = parent.key;\n break\n }\n parent = parent.parent;\n }\n if (!key) {\n process.env.NODE_ENV !== 'production' && state.warn(\n \"v-once can only be used inside v-for that is keyed. \",\n el.rawAttrsMap['v-once']\n );\n return genElement(el, state)\n }\n return (\"_o(\" + (genElement(el, state)) + \",\" + (state.onceId++) + \",\" + key + \")\")\n } else {\n return genStatic(el, state)\n }\n}\n\nfunction genIf (\n el,\n state,\n altGen,\n altEmpty\n) {\n el.ifProcessed = true; // avoid recursion\n return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)\n}\n\nfunction genIfConditions (\n conditions,\n state,\n altGen,\n altEmpty\n) {\n if (!conditions.length) {\n return altEmpty || '_e()'\n }\n\n var condition = conditions.shift();\n if (condition.exp) {\n return (\"(\" + (condition.exp) + \")?\" + (genTernaryExp(condition.block)) + \":\" + (genIfConditions(conditions, state, altGen, altEmpty)))\n } else {\n return (\"\" + (genTernaryExp(condition.block)))\n }\n\n // v-if with v-once should generate code like (a)?_m(0):_m(1)\n function genTernaryExp (el) {\n return altGen\n ? altGen(el, state)\n : el.once\n ? genOnce(el, state)\n : genElement(el, state)\n }\n}\n\nfunction genFor (\n el,\n state,\n altGen,\n altHelper\n) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n\n if (process.env.NODE_ENV !== 'production' &&\n state.maybeComponent(el) &&\n el.tag !== 'slot' &&\n el.tag !== 'template' &&\n !el.key\n ) {\n state.warn(\n \"<\" + (el.tag) + \" v-for=\\\"\" + alias + \" in \" + exp + \"\\\">: component lists rendered with \" +\n \"v-for should have explicit keys. \" +\n \"See https://vuejs.org/guide/list.html#key for more info.\",\n el.rawAttrsMap['v-for'],\n true /* tip */\n );\n }\n\n el.forProcessed = true; // avoid recursion\n return (altHelper || '_l') + \"((\" + exp + \"),\" +\n \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n \"return \" + ((altGen || genElement)(el, state)) +\n '})'\n}\n\nfunction genData$2 (el, state) {\n var data = '{';\n\n // directives first.\n // directives may mutate the el's other properties before they are generated.\n var dirs = genDirectives(el, state);\n if (dirs) { data += dirs + ','; }\n\n // key\n if (el.key) {\n data += \"key:\" + (el.key) + \",\";\n }\n // ref\n if (el.ref) {\n data += \"ref:\" + (el.ref) + \",\";\n }\n if (el.refInFor) {\n data += \"refInFor:true,\";\n }\n // pre\n if (el.pre) {\n data += \"pre:true,\";\n }\n // record original tag name for components using \"is\" attribute\n if (el.component) {\n data += \"tag:\\\"\" + (el.tag) + \"\\\",\";\n }\n // module data generation functions\n for (var i = 0; i < state.dataGenFns.length; i++) {\n data += state.dataGenFns[i](el);\n }\n // attributes\n if (el.attrs) {\n data += \"attrs:\" + (genProps(el.attrs)) + \",\";\n }\n // DOM props\n if (el.props) {\n data += \"domProps:\" + (genProps(el.props)) + \",\";\n }\n // event handlers\n if (el.events) {\n data += (genHandlers(el.events, false)) + \",\";\n }\n if (el.nativeEvents) {\n data += (genHandlers(el.nativeEvents, true)) + \",\";\n }\n // slot target\n // only for non-scoped slots\n if (el.slotTarget && !el.slotScope) {\n data += \"slot:\" + (el.slotTarget) + \",\";\n }\n // scoped slots\n if (el.scopedSlots) {\n data += (genScopedSlots(el, el.scopedSlots, state)) + \",\";\n }\n // component v-model\n if (el.model) {\n data += \"model:{value:\" + (el.model.value) + \",callback:\" + (el.model.callback) + \",expression:\" + (el.model.expression) + \"},\";\n }\n // inline-template\n if (el.inlineTemplate) {\n var inlineTemplate = genInlineTemplate(el, state);\n if (inlineTemplate) {\n data += inlineTemplate + \",\";\n }\n }\n data = data.replace(/,$/, '') + '}';\n // v-bind dynamic argument wrap\n // v-bind with dynamic arguments must be applied using the same v-bind object\n // merge helper so that class/style/mustUseProp attrs are handled correctly.\n if (el.dynamicAttrs) {\n data = \"_b(\" + data + \",\\\"\" + (el.tag) + \"\\\",\" + (genProps(el.dynamicAttrs)) + \")\";\n }\n // v-bind data wrap\n if (el.wrapData) {\n data = el.wrapData(data);\n }\n // v-on data wrap\n if (el.wrapListeners) {\n data = el.wrapListeners(data);\n }\n return data\n}\n\nfunction genDirectives (el, state) {\n var dirs = el.directives;\n if (!dirs) { return }\n var res = 'directives:[';\n var hasRuntime = false;\n var i, l, dir, needRuntime;\n for (i = 0, l = dirs.length; i < l; i++) {\n dir = dirs[i];\n needRuntime = true;\n var gen = state.directives[dir.name];\n if (gen) {\n // compile-time directive that manipulates AST.\n // returns true if it also needs a runtime counterpart.\n needRuntime = !!gen(el, dir, state.warn);\n }\n if (needRuntime) {\n hasRuntime = true;\n res += \"{name:\\\"\" + (dir.name) + \"\\\",rawName:\\\"\" + (dir.rawName) + \"\\\"\" + (dir.value ? (\",value:(\" + (dir.value) + \"),expression:\" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (\",arg:\" + (dir.isDynamicArg ? dir.arg : (\"\\\"\" + (dir.arg) + \"\\\"\"))) : '') + (dir.modifiers ? (\",modifiers:\" + (JSON.stringify(dir.modifiers))) : '') + \"},\";\n }\n }\n if (hasRuntime) {\n return res.slice(0, -1) + ']'\n }\n}\n\nfunction genInlineTemplate (el, state) {\n var ast = el.children[0];\n if (process.env.NODE_ENV !== 'production' && (\n el.children.length !== 1 || ast.type !== 1\n )) {\n state.warn(\n 'Inline-template components must have exactly one child element.',\n { start: el.start }\n );\n }\n if (ast && ast.type === 1) {\n var inlineRenderFns = generate(ast, state.options);\n return (\"inlineTemplate:{render:function(){\" + (inlineRenderFns.render) + \"},staticRenderFns:[\" + (inlineRenderFns.staticRenderFns.map(function (code) { return (\"function(){\" + code + \"}\"); }).join(',')) + \"]}\")\n }\n}\n\nfunction genScopedSlots (\n el,\n slots,\n state\n) {\n // by default scoped slots are considered \"stable\", this allows child\n // components with only scoped slots to skip forced updates from parent.\n // but in some cases we have to bail-out of this optimization\n // for example if the slot contains dynamic names, has v-if or v-for on them...\n var needsForceUpdate = el.for || Object.keys(slots).some(function (key) {\n var slot = slots[key];\n return (\n slot.slotTargetDynamic ||\n slot.if ||\n slot.for ||\n containsSlotChild(slot) // is passing down slot from parent which may be dynamic\n )\n });\n\n // #9534: if a component with scoped slots is inside a conditional branch,\n // it's possible for the same component to be reused but with different\n // compiled slot content. To avoid that, we generate a unique key based on\n // the generated code of all the slot contents.\n var needsKey = !!el.if;\n\n // OR when it is inside another scoped slot or v-for (the reactivity may be\n // disconnected due to the intermediate scope variable)\n // #9438, #9506\n // TODO: this can be further optimized by properly analyzing in-scope bindings\n // and skip force updating ones that do not actually use scope variables.\n if (!needsForceUpdate) {\n var parent = el.parent;\n while (parent) {\n if (\n (parent.slotScope && parent.slotScope !== emptySlotScopeToken) ||\n parent.for\n ) {\n needsForceUpdate = true;\n break\n }\n if (parent.if) {\n needsKey = true;\n }\n parent = parent.parent;\n }\n }\n\n var generatedSlots = Object.keys(slots)\n .map(function (key) { return genScopedSlot(slots[key], state); })\n .join(',');\n\n return (\"scopedSlots:_u([\" + generatedSlots + \"]\" + (needsForceUpdate ? \",null,true\" : \"\") + (!needsForceUpdate && needsKey ? (\",null,false,\" + (hash(generatedSlots))) : \"\") + \")\")\n}\n\nfunction hash(str) {\n var hash = 5381;\n var i = str.length;\n while(i) {\n hash = (hash * 33) ^ str.charCodeAt(--i);\n }\n return hash >>> 0\n}\n\nfunction containsSlotChild (el) {\n if (el.type === 1) {\n if (el.tag === 'slot') {\n return true\n }\n return el.children.some(containsSlotChild)\n }\n return false\n}\n\nfunction genScopedSlot (\n el,\n state\n) {\n var isLegacySyntax = el.attrsMap['slot-scope'];\n if (el.if && !el.ifProcessed && !isLegacySyntax) {\n return genIf(el, state, genScopedSlot, \"null\")\n }\n if (el.for && !el.forProcessed) {\n return genFor(el, state, genScopedSlot)\n }\n var slotScope = el.slotScope === emptySlotScopeToken\n ? \"\"\n : String(el.slotScope);\n var fn = \"function(\" + slotScope + \"){\" +\n \"return \" + (el.tag === 'template'\n ? el.if && isLegacySyntax\n ? (\"(\" + (el.if) + \")?\" + (genChildren(el, state) || 'undefined') + \":undefined\")\n : genChildren(el, state) || 'undefined'\n : genElement(el, state)) + \"}\";\n // reverse proxy v-slot without scope on this.$slots\n var reverseProxy = slotScope ? \"\" : \",proxy:true\";\n return (\"{key:\" + (el.slotTarget || \"\\\"default\\\"\") + \",fn:\" + fn + reverseProxy + \"}\")\n}\n\nfunction genChildren (\n el,\n state,\n checkSkip,\n altGenElement,\n altGenNode\n) {\n var children = el.children;\n if (children.length) {\n var el$1 = children[0];\n // optimize single v-for\n if (children.length === 1 &&\n el$1.for &&\n el$1.tag !== 'template' &&\n el$1.tag !== 'slot'\n ) {\n var normalizationType = checkSkip\n ? state.maybeComponent(el$1) ? \",1\" : \",0\"\n : \"\";\n return (\"\" + ((altGenElement || genElement)(el$1, state)) + normalizationType)\n }\n var normalizationType$1 = checkSkip\n ? getNormalizationType(children, state.maybeComponent)\n : 0;\n var gen = altGenNode || genNode;\n return (\"[\" + (children.map(function (c) { return gen(c, state); }).join(',')) + \"]\" + (normalizationType$1 ? (\",\" + normalizationType$1) : ''))\n }\n}\n\n// determine the normalization needed for the children array.\n// 0: no normalization needed\n// 1: simple normalization needed (possible 1-level deep nested array)\n// 2: full normalization needed\nfunction getNormalizationType (\n children,\n maybeComponent\n) {\n var res = 0;\n for (var i = 0; i < children.length; i++) {\n var el = children[i];\n if (el.type !== 1) {\n continue\n }\n if (needsNormalization(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {\n res = 2;\n break\n }\n if (maybeComponent(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {\n res = 1;\n }\n }\n return res\n}\n\nfunction needsNormalization (el) {\n return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'\n}\n\nfunction genNode (node, state) {\n if (node.type === 1) {\n return genElement(node, state)\n } else if (node.type === 3 && node.isComment) {\n return genComment(node)\n } else {\n return genText(node)\n }\n}\n\nfunction genText (text) {\n return (\"_v(\" + (text.type === 2\n ? text.expression // no need for () because already wrapped in _s()\n : transformSpecialNewlines(JSON.stringify(text.text))) + \")\")\n}\n\nfunction genComment (comment) {\n return (\"_e(\" + (JSON.stringify(comment.text)) + \")\")\n}\n\nfunction genSlot (el, state) {\n var slotName = el.slotName || '\"default\"';\n var children = genChildren(el, state);\n var res = \"_t(\" + slotName + (children ? (\",\" + children) : '');\n var attrs = el.attrs || el.dynamicAttrs\n ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map(function (attr) { return ({\n // slot props are camelized\n name: camelize(attr.name),\n value: attr.value,\n dynamic: attr.dynamic\n }); }))\n : null;\n var bind$$1 = el.attrsMap['v-bind'];\n if ((attrs || bind$$1) && !children) {\n res += \",null\";\n }\n if (attrs) {\n res += \",\" + attrs;\n }\n if (bind$$1) {\n res += (attrs ? '' : ',null') + \",\" + bind$$1;\n }\n return res + ')'\n}\n\n// componentName is el.component, take it as argument to shun flow's pessimistic refinement\nfunction genComponent (\n componentName,\n el,\n state\n) {\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n return (\"_c(\" + componentName + \",\" + (genData$2(el, state)) + (children ? (\",\" + children) : '') + \")\")\n}\n\nfunction genProps (props) {\n var staticProps = \"\";\n var dynamicProps = \"\";\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n var value = transformSpecialNewlines(prop.value);\n if (prop.dynamic) {\n dynamicProps += (prop.name) + \",\" + value + \",\";\n } else {\n staticProps += \"\\\"\" + (prop.name) + \"\\\":\" + value + \",\";\n }\n }\n staticProps = \"{\" + (staticProps.slice(0, -1)) + \"}\";\n if (dynamicProps) {\n return (\"_d(\" + staticProps + \",[\" + (dynamicProps.slice(0, -1)) + \"])\")\n } else {\n return staticProps\n }\n}\n\n// #3895, #4268\nfunction transformSpecialNewlines (text) {\n return text\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n}\n\n/* */\n\n\n\n// these keywords should not appear inside expressions, but operators like\n// typeof, instanceof and in are allowed\nvar prohibitedKeywordRE = new RegExp('\\\\b' + (\n 'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +\n 'super,throw,while,yield,delete,export,import,return,switch,default,' +\n 'extends,finally,continue,debugger,function,arguments'\n).split(',').join('\\\\b|\\\\b') + '\\\\b');\n\n// these unary operators should not be used as property/method names\nvar unaryOperatorsRE = new RegExp('\\\\b' + (\n 'delete,typeof,void'\n).split(',').join('\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b') + '\\\\s*\\\\([^\\\\)]*\\\\)');\n\n// strip strings in expressions\nvar stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\n\n// detect problematic expressions in a template\nfunction detectErrors (ast, warn) {\n if (ast) {\n checkNode(ast, warn);\n }\n}\n\nfunction checkNode (node, warn) {\n if (node.type === 1) {\n for (var name in node.attrsMap) {\n if (dirRE.test(name)) {\n var value = node.attrsMap[name];\n if (value) {\n var range = node.rawAttrsMap[name];\n if (name === 'v-for') {\n checkFor(node, (\"v-for=\\\"\" + value + \"\\\"\"), warn, range);\n } else if (onRE.test(name)) {\n checkEvent(value, (name + \"=\\\"\" + value + \"\\\"\"), warn, range);\n } else {\n checkExpression(value, (name + \"=\\\"\" + value + \"\\\"\"), warn, range);\n }\n }\n }\n }\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n checkNode(node.children[i], warn);\n }\n }\n } else if (node.type === 2) {\n checkExpression(node.expression, node.text, warn, node);\n }\n}\n\nfunction checkEvent (exp, text, warn, range) {\n var stipped = exp.replace(stripStringRE, '');\n var keywordMatch = stipped.match(unaryOperatorsRE);\n if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') {\n warn(\n \"avoid using JavaScript unary operator as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\" in expression \" + (text.trim()),\n range\n );\n }\n checkExpression(exp, text, warn, range);\n}\n\nfunction checkFor (node, text, warn, range) {\n checkExpression(node.for || '', text, warn, range);\n checkIdentifier(node.alias, 'v-for alias', text, warn, range);\n checkIdentifier(node.iterator1, 'v-for iterator', text, warn, range);\n checkIdentifier(node.iterator2, 'v-for iterator', text, warn, range);\n}\n\nfunction checkIdentifier (\n ident,\n type,\n text,\n warn,\n range\n) {\n if (typeof ident === 'string') {\n try {\n new Function((\"var \" + ident + \"=_\"));\n } catch (e) {\n warn((\"invalid \" + type + \" \\\"\" + ident + \"\\\" in expression: \" + (text.trim())), range);\n }\n }\n}\n\nfunction checkExpression (exp, text, warn, range) {\n try {\n new Function((\"return \" + exp));\n } catch (e) {\n var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);\n if (keywordMatch) {\n warn(\n \"avoid using JavaScript keyword as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\"\\n Raw expression: \" + (text.trim()),\n range\n );\n } else {\n warn(\n \"invalid expression: \" + (e.message) + \" in\\n\\n\" +\n \" \" + exp + \"\\n\\n\" +\n \" Raw expression: \" + (text.trim()) + \"\\n\",\n range\n );\n }\n }\n}\n\n/* */\n\nvar range = 2;\n\nfunction generateCodeFrame (\n source,\n start,\n end\n) {\n if ( start === void 0 ) start = 0;\n if ( end === void 0 ) end = source.length;\n\n var lines = source.split(/\\r?\\n/);\n var count = 0;\n var res = [];\n for (var i = 0; i < lines.length; i++) {\n count += lines[i].length + 1;\n if (count >= start) {\n for (var j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length) { continue }\n res.push((\"\" + (j + 1) + (repeat$1(\" \", 3 - String(j + 1).length)) + \"| \" + (lines[j])));\n var lineLength = lines[j].length;\n if (j === i) {\n // push underline\n var pad = start - (count - lineLength) + 1;\n var length = end > count ? lineLength - pad : end - start;\n res.push(\" | \" + repeat$1(\" \", pad) + repeat$1(\"^\", length));\n } else if (j > i) {\n if (end > count) {\n var length$1 = Math.min(end - count, lineLength);\n res.push(\" | \" + repeat$1(\"^\", length$1));\n }\n count += lineLength + 1;\n }\n }\n break\n }\n }\n return res.join('\\n')\n}\n\nfunction repeat$1 (str, n) {\n var result = '';\n if (n > 0) {\n while (true) { // eslint-disable-line\n if (n & 1) { result += str; }\n n >>>= 1;\n if (n <= 0) { break }\n str += str;\n }\n }\n return result\n}\n\n/* */\n\n\n\nfunction createFunction (code, errors) {\n try {\n return new Function(code)\n } catch (err) {\n errors.push({ err: err, code: code });\n return noop\n }\n}\n\nfunction createCompileToFunctionFn (compile) {\n var cache = Object.create(null);\n\n return function compileToFunctions (\n template,\n options,\n vm\n ) {\n options = extend({}, options);\n var warn$$1 = options.warn || warn;\n delete options.warn;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n // detect possible CSP restriction\n try {\n new Function('return 1');\n } catch (e) {\n if (e.toString().match(/unsafe-eval|CSP/)) {\n warn$$1(\n 'It seems you are using the standalone build of Vue.js in an ' +\n 'environment with Content Security Policy that prohibits unsafe-eval. ' +\n 'The template compiler cannot work in this environment. Consider ' +\n 'relaxing the policy to allow unsafe-eval or pre-compiling your ' +\n 'templates into render functions.'\n );\n }\n }\n }\n\n // check cache\n var key = options.delimiters\n ? String(options.delimiters) + template\n : template;\n if (cache[key]) {\n return cache[key]\n }\n\n // compile\n var compiled = compile(template, options);\n\n // check compilation errors/tips\n if (process.env.NODE_ENV !== 'production') {\n if (compiled.errors && compiled.errors.length) {\n if (options.outputSourceRange) {\n compiled.errors.forEach(function (e) {\n warn$$1(\n \"Error compiling template:\\n\\n\" + (e.msg) + \"\\n\\n\" +\n generateCodeFrame(template, e.start, e.end),\n vm\n );\n });\n } else {\n warn$$1(\n \"Error compiling template:\\n\\n\" + template + \"\\n\\n\" +\n compiled.errors.map(function (e) { return (\"- \" + e); }).join('\\n') + '\\n',\n vm\n );\n }\n }\n if (compiled.tips && compiled.tips.length) {\n if (options.outputSourceRange) {\n compiled.tips.forEach(function (e) { return tip(e.msg, vm); });\n } else {\n compiled.tips.forEach(function (msg) { return tip(msg, vm); });\n }\n }\n }\n\n // turn code into functions\n var res = {};\n var fnGenErrors = [];\n res.render = createFunction(compiled.render, fnGenErrors);\n res.staticRenderFns = compiled.staticRenderFns.map(function (code) {\n return createFunction(code, fnGenErrors)\n });\n\n // check function generation errors.\n // this should only happen if there is a bug in the compiler itself.\n // mostly for codegen development use\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {\n warn$$1(\n \"Failed to generate render function:\\n\\n\" +\n fnGenErrors.map(function (ref) {\n var err = ref.err;\n var code = ref.code;\n\n return ((err.toString()) + \" in\\n\\n\" + code + \"\\n\");\n }).join('\\n'),\n vm\n );\n }\n }\n\n return (cache[key] = res)\n }\n}\n\n/* */\n\nfunction createCompilerCreator (baseCompile) {\n return function createCompiler (baseOptions) {\n function compile (\n template,\n options\n ) {\n var finalOptions = Object.create(baseOptions);\n var errors = [];\n var tips = [];\n\n var warn = function (msg, range, tip) {\n (tip ? tips : errors).push(msg);\n };\n\n if (options) {\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n // $flow-disable-line\n var leadingSpaceLength = template.match(/^\\s*/)[0].length;\n\n warn = function (msg, range, tip) {\n var data = { msg: msg };\n if (range) {\n if (range.start != null) {\n data.start = range.start + leadingSpaceLength;\n }\n if (range.end != null) {\n data.end = range.end + leadingSpaceLength;\n }\n }\n (tip ? tips : errors).push(data);\n };\n }\n // merge custom modules\n if (options.modules) {\n finalOptions.modules =\n (baseOptions.modules || []).concat(options.modules);\n }\n // merge custom directives\n if (options.directives) {\n finalOptions.directives = extend(\n Object.create(baseOptions.directives || null),\n options.directives\n );\n }\n // copy other options\n for (var key in options) {\n if (key !== 'modules' && key !== 'directives') {\n finalOptions[key] = options[key];\n }\n }\n }\n\n finalOptions.warn = warn;\n\n var compiled = baseCompile(template.trim(), finalOptions);\n if (process.env.NODE_ENV !== 'production') {\n detectErrors(compiled.ast, warn);\n }\n compiled.errors = errors;\n compiled.tips = tips;\n return compiled\n }\n\n return {\n compile: compile,\n compileToFunctions: createCompileToFunctionFn(compile)\n }\n }\n}\n\n/* */\n\n// `createCompilerCreator` allows creating compilers that use alternative\n// parser/optimizer/codegen, e.g the SSR optimizing compiler.\n// Here we just export a default compiler using the default parts.\nvar createCompiler = createCompilerCreator(function baseCompile (\n template,\n options\n) {\n var ast = parse(template.trim(), options);\n if (options.optimize !== false) {\n optimize(ast, options);\n }\n var code = generate(ast, options);\n return {\n ast: ast,\n render: code.render,\n staticRenderFns: code.staticRenderFns\n }\n});\n\n/* */\n\nvar ref$1 = createCompiler(baseOptions);\nvar compile = ref$1.compile;\nvar compileToFunctions = ref$1.compileToFunctions;\n\n/* */\n\n// check whether current browser encodes a char inside attribute values\nvar div;\nfunction getShouldDecode (href) {\n div = div || document.createElement('div');\n div.innerHTML = href ? \"<a href=\\\"\\n\\\"/>\" : \"<div a=\\\"\\n\\\"/>\";\n return div.innerHTML.indexOf(' ') > 0\n}\n\n// #3663: IE encodes newlines inside attribute values while other browsers don't\nvar shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false;\n// #6828: chrome encodes content in a[href]\nvar shouldDecodeNewlinesForHref = inBrowser ? getShouldDecode(true) : false;\n\n/* */\n\nvar idToTemplate = cached(function (id) {\n var el = query(id);\n return el && el.innerHTML\n});\n\nvar mount = Vue.prototype.$mount;\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && query(el);\n\n /* istanbul ignore if */\n if (el === document.body || el === document.documentElement) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Do not mount Vue to <html> or <body> - mount to normal elements instead.\"\n );\n return this\n }\n\n var options = this.$options;\n // resolve template/el and convert to render function\n if (!options.render) {\n var template = options.template;\n if (template) {\n if (typeof template === 'string') {\n if (template.charAt(0) === '#') {\n template = idToTemplate(template);\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && !template) {\n warn(\n (\"Template element not found or is empty: \" + (options.template)),\n this\n );\n }\n }\n } else if (template.nodeType) {\n template = template.innerHTML;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn('invalid template option:' + template, this);\n }\n return this\n }\n } else if (el) {\n template = getOuterHTML(el);\n }\n if (template) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile');\n }\n\n var ref = compileToFunctions(template, {\n outputSourceRange: process.env.NODE_ENV !== 'production',\n shouldDecodeNewlines: shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,\n delimiters: options.delimiters,\n comments: options.comments\n }, this);\n var render = ref.render;\n var staticRenderFns = ref.staticRenderFns;\n options.render = render;\n options.staticRenderFns = staticRenderFns;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile end');\n measure((\"vue \" + (this._name) + \" compile\"), 'compile', 'compile end');\n }\n }\n }\n return mount.call(this, el, hydrating)\n};\n\n/**\n * Get outerHTML of elements, taking care\n * of SVG elements in IE as well.\n */\nfunction getOuterHTML (el) {\n if (el.outerHTML) {\n return el.outerHTML\n } else {\n var container = document.createElement('div');\n container.appendChild(el.cloneNode(true));\n return container.innerHTML\n }\n}\n\nVue.compile = compileToFunctions;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Vue);\n\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(51), __webpack_require__(25), __webpack_require__(224).setImmediate))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlL2Rpc3QvdnVlLmVzbS5qcz9lZmViIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtDQUFrQzs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsaUJBQWlCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiwrQkFBK0I7QUFDckQsc0JBQXNCLGlCQUFpQjtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRCxpQ0FBaUMsRUFBRTtBQUNyRixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGdCQUFnQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixjQUFjOztBQUUzQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsVUFBVTs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGdCQUFnQjtBQUNqQyxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIscUJBQXFCO0FBQ3hDLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssR0FBRztBQUNSO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDLHVDQUF1Qyx3QkFBd0IsRUFBRTtBQUNqRSwwQkFBMEI7O0FBRTFCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLFlBQVk7QUFDcEMsa0JBQWtCLFlBQVk7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0Esd0NBQXdDLEVBQUU7QUFDMUM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0Isb0JBQW9CLEVBQUU7QUFDckQ7QUFDQSxrQ0FBa0MsT0FBTztBQUN6QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEIsU0FBUyxxQkFBcUI7O0FBRXhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMkJBQTJCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxDQUFDOztBQUVEOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixpQkFBaUI7QUFDbEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLE9BQU87QUFDMUM7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsT0FBTztBQUN6QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELE9BQU87QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixpQkFBaUI7QUFDbEM7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQixrQkFBa0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLHVCQUF1QjtBQUN6RCxpQ0FBaUMsc0JBQXNCO0FBQ3ZEO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0EsaUJBQWlCLHVCQUF1QjtBQUN4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0EsbUJBQW1CLG1CQUFtQjtBQUN0QywrQkFBK0I7QUFDL0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLFlBQVk7QUFDOUIsV0FBVztBQUNYO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLE9BQU87QUFDckQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBLG9DQUFvQztBQUNwQztBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDJCQUEyQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QyxTQUFTO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZDQUE2QyxxQ0FBcUMsRUFBRTtBQUNwRjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsb0NBQW9DLHlDQUF5QyxFQUFFO0FBQy9FOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLGtCQUFrQjtBQUMzQztBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixzREFBc0QsRUFBRTtBQUN0RjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsbUJBQW1CO0FBQ3BDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isa0JBQWtCO0FBQ2xDO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQix1QkFBdUI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsaUNBQWlDO0FBQ25FLGNBQWMsNkJBQTZCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxpQ0FBaUM7QUFDbkUsY0FBYyw2QkFBNkI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHlCQUF5QjtBQUMxQyxHQUFHO0FBQ0g7QUFDQTtBQUNBLGlCQUFpQiwrQkFBK0I7QUFDaEQ7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLG1CQUFtQjtBQUN4QztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixxQkFBcUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEscUJBQXFCO0FBQ2xDO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLE9BQU87QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtFQUFrRTtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUFzQixtQkFBbUI7QUFDekM7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsT0FBTztBQUN0QztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZUFBZSxTQUFTO0FBQ3hCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0Esa0NBQWtDLE9BQU87QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0Q0FBNEMsZUFBZTtBQUMzRCxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xELDRDQUE0QztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQixpQkFBaUIsZ0JBQWdCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxpQkFBaUIsbUJBQW1CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILHFDQUFxQyxnRUFBZ0U7QUFDckc7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILDRCQUE0QiwrQkFBK0I7QUFDM0QsNEJBQTRCLCtCQUErQjtBQUMzRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRDtBQUNsRDtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLHVGQUF1RjtBQUM1RjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBDQUEwQztBQUMxQyxpQkFBaUIseUJBQXlCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLCtCQUErQjtBQUNsQyxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsb0JBQW9CLG9CQUFvQjtBQUN4QyxzQkFBc0IsNEJBQTRCO0FBQ2xEO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLE9BQU87QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsbUJBQW1CO0FBQ25CLHlCQUF5QjtBQUN6QjtBQUNBLHFEQUFxRDtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyw2Q0FBNkM7QUFDOUU7QUFDQTtBQUNBLDZDQUE2Qyw0Q0FBNEM7O0FBRXpGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEtBQUssMkNBQTJDLDhCQUE4QixFQUFFOztBQUVoRjtBQUNBLHdDQUF3QyxPQUFPO0FBQy9DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUIscUJBQXFCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLE9BQU87QUFDOUM7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLFNBQVM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQkFBMEI7O0FBRTFCLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBLDBDQUEwQztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix5QkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIseUJBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLE9BQU87QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsMEJBQTBCO0FBQ3BEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixvQkFBb0IsRUFBRTs7QUFFcEQ7QUFDQTtBQUNBLGlCQUFpQixzQkFBc0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQixrQkFBa0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7QUFJQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMkJBQTJCO0FBQzlDLHFCQUFxQiwrQkFBK0I7QUFDcEQ7QUFDQTtBQUNBLEdBQUc7QUFDSCx5QkFBeUI7QUFDekI7QUFDQSxzQkFBc0IsaUNBQWlDO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLDhCQUE4Qjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsb0JBQW9CO0FBQ3pDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0Esb0JBQW9CO0FBQ3BCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsZUFBZTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzRUFBc0U7QUFDdEU7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBOzs7O0FBSUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0EsMENBQTBDLDJCQUEyQixFQUFFO0FBQ3ZFLEtBQUs7QUFDTDtBQUNBLDBDQUEwQyw0QkFBNEIsRUFBRTtBQUN4RSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLGVBQWU7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsT0FBTztBQUMxQztBQUNBLGdCQUFnQixZQUFZO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsWUFBWTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsK0JBQStCLHNCQUFzQjs7QUFFckQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQjs7QUFFcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdDQUFnQzs7QUFFaEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsYUFBYTtBQUNqQztBQUNBLHFCQUFxQixjQUFjO0FBQ25DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxhQUFhLGtCQUFrQjtBQUMvQjtBQUNBLGVBQWUsb0JBQW9CO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyREFBMkQ7QUFDM0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix5QkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIscUJBQXFCO0FBQzFDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQix5QkFBeUI7QUFDOUM7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBLDRCQUE0Qiw0QkFBNEI7QUFDeEQsNEJBQTRCLGdDQUFnQztBQUM1RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVLG9CQUFvQjtBQUM5QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQsVUFBVTtBQUNuRSxpQkFBaUIsd0JBQXdCLE9BQU8sdUJBQXVCO0FBQ3ZFO0FBQ0E7QUFDQSxpQkFBaUIsMkJBQTJCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVSxvQkFBb0I7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsT0FBTztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsdUJBQXVCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTyxrREFBa0Q7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLGtEQUFrRDtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxtQ0FBbUMsZ0VBQWdFO0FBQ25HO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1QkFBdUIsU0FBUztBQUNoQztBQUNBLDJDQUEyQztBQUMzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQix1QkFBdUIsT0FBTyxnQ0FBZ0M7QUFDL0Usd0RBQXdELG9CQUFvQjtBQUM1RTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsZ0VBQWdFO0FBQzNGLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsaUNBQWlDO0FBQ3BFO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsMkRBQTJELG9CQUFvQjtBQUMvRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wscUJBQXFCLGtCQUFrQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNELGdDQUFnQztBQUN0RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsdUJBQXVCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRCQUE0Qiw2QkFBNkI7QUFDekQ7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQix3QkFBd0I7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IseUJBQXlCO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMseUJBQXlCO0FBQzFEO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQiwyQkFBMkI7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQiw4QkFBOEI7QUFDbkQ7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlCQUFpQjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNEVBQTRFO0FBQzVFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QztBQUN4Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsYUFBYSxnQkFBZ0I7QUFDN0I7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLGtCQUFrQjtBQUMxRCxLQUFLO0FBQ0wsd0NBQXdDLGtCQUFrQjtBQUMxRCxLQUFLO0FBQ0wsd0NBQXdDLDBCQUEwQjtBQUNsRSxLQUFLO0FBQ0wsd0NBQXdDLGlCQUFpQjtBQUN6RCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxtQ0FBbUM7QUFDbkMsbUNBQW1DO0FBQ25DLDJDQUEyQztBQUMzQywyQkFBMkI7QUFDM0IsMkJBQTJCO0FBQzNCLDRCQUE0QjtBQUM1Qiw0QkFBNEI7QUFDNUIsMkJBQTJCO0FBQzNCLDJCQUEyQjtBQUMzQjtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEI7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZUFBZSxvQkFBb0I7QUFDbkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLGVBQWUsRUFBRSx1QkFBdUIsVUFBVSxFQUFFO0FBQ3BGO0FBQ0E7O0FBRUE7QUFDQSxtREFBbUQsNkNBQTZDO0FBQ2hHO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsNkNBQTZDO0FBQ3hFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLDJCQUEyQjtBQUM3RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQ7QUFDckQsR0FBRztBQUNILHlDQUF5QztBQUN6Qzs7QUFFQSxpQ0FBaUMsd0NBQXdDO0FBQ3pFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLE9BQU87QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLE9BQU87QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0QsbUJBQW1CO0FBQzNFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGFBQWE7QUFDcEMsdUJBQXVCLGFBQWE7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUZBQWlGO0FBQ2pGLDRCQUE0QjtBQUM1QjtBQUNBLDJCQUEyQjtBQUMzQix3QkFBd0IsaUVBQWlFO0FBQ3pGLFlBQVksMEZBQTBGO0FBQ3RHLE1BQU0sS0FBSywwQ0FBMEM7QUFDckQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsa0JBQWtCO0FBQy9ELHNCQUFzQiwrQ0FBK0M7QUFDckUsaURBQWlEOztBQUVqRDtBQUNBLHNEQUFzRDtBQUN0RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDhDQUE4QztBQUM5Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsMkJBQTJCO0FBQ3RELGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyw2Q0FBNkMsRUFBRTtBQUN0RDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLHVDQUF1QyxTQUFTO0FBQ2hEO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQix3QkFBd0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELDRCQUE0QixFQUFFO0FBQ2xGLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELCtCQUErQixFQUFFO0FBQ3JGLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsYUFBYTs7QUFFM0Q7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQ7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGlDQUFpQyxxQ0FBcUM7O0FBRXRFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyx1Q0FBdUMsRUFBRTtBQUNwRjtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsMkNBQTJDLEVBQUU7QUFDMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0MsT0FBTztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUNBQXFDLDhCQUE4QixFQUFFO0FBQ3JFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsa0NBQWtDLHVDQUF1Qzs7QUFFekUscUNBQXFDLDBCQUEwQjs7QUFFL0Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw4Q0FBOEM7QUFDOUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0RBQXdEO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLGdCQUFnQjtBQUN4RDtBQUNBO0FBQ0EsZ0VBQWdFLHNCQUFzQixFQUFFO0FBQ3hGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQix3QkFBd0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsdUJBQXVCO0FBQ2xDLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDJCQUEyQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCx5QkFBeUIsRUFBRTtBQUNqRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7O0FBRUEsc0JBQXNCLEVBQUUsaUJBQWlCLEVBQUU7QUFDM0MsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7QUFJRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixrQkFBa0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxPQUFPO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxPQUFPO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1AsT0FBTztBQUNQLFNBQVM7QUFDVCxRQUFRO0FBQ1IsUUFBUTtBQUNSLE9BQU87QUFDUCxRQUFRO0FBQ1I7QUFDQSwyQ0FBMkM7QUFDM0MsOERBQThEOztBQUU5RDtBQUNBO0FBQ0EscURBQXFELDJEQUEyRDs7QUFFaEg7QUFDQTtBQUNBLDZDQUE2QywyQkFBMkIsRUFBRTtBQUMxRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtGQUFrRiw2QkFBNkI7QUFDL0c7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IsdUdBQXVHO0FBQ3pIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QixlQUFlO0FBQ3ZDLHNCQUFzQixhQUFhOztBQUVuQztBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsVUFBVTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9DQUFvQyxVQUFVO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGVBQWU7QUFDM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLGlEQUFpRDs7QUFFbkY7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLDZEQUE2RDtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw2REFBNkQsdUJBQXVCLEVBQUU7QUFDdEY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDJCQUEyQjtBQUM5QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxJQUFJO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0EscUJBQXFCLDBCQUEwQjtBQUMvQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFNBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsdUJBQXVCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRTtBQUNoRTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRDtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLE9BQU87QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLG9CQUFvQjtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPLDRCQUE0QjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLE9BQU87QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsT0FBTztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msd0JBQXdCLEVBQUU7QUFDMUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQ0FBbUMsT0FBTztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsT0FBTztBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCxXQUFXO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxPQUFPO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXVELFdBQVc7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsNkJBQTZCO0FBQzdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsMkNBQTJDLEdBQUc7O0FBRW5GO0FBQ0Esa0NBQWtDO0FBQ2xDLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0NBQXNDO0FBQzNEO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7O0FBRUE7QUFDQSxtREFBbUQsNEJBQTRCLEVBQUU7QUFDakY7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLCtFQUErRTtBQUM3RyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLGdDQUFnQyxFQUFFO0FBQzlFLHlDQUF5QywwQ0FBMEMsRUFBRTtBQUNyRjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsMkJBQTJCO0FBQ3pEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlEO0FBQ3pEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsaURBQWlEO0FBQ3ZGOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBLHVDQUF1QyxpREFBaUQ7QUFDeEY7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixvQkFBb0I7QUFDN0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsNkJBQTZCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsdUNBQXVDO0FBQ2pGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUI7QUFDekI7QUFDQSxxREFBcUQ7QUFDckQ7QUFDQSxNQUFNO0FBQ047O0FBRUE7QUFDQSxlQUFlOztBQUVmO0FBQ0E7QUFDQTtBQUNBLGFBQWEsb0JBQW9COztBQUVqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDZCQUE2QjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiw2R0FBNkc7QUFDakk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixPQUFPO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzVUFBc1U7QUFDclY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGtCQUFrQixpQ0FBaUMsNEVBQTRFLHFCQUFxQixhQUFhLEdBQUcsRUFBRSxrQkFBa0I7QUFDck47QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlCQUF5Qix5Q0FBeUMsRUFBRTtBQUNwRTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBLFlBQVksMEVBQTBFO0FBQ3RGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLHNCQUFzQixFQUFFO0FBQ3RFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHFCQUFxQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0RBQStELG9DQUFvQyxFQUFFO0FBQ3JHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0RBQStELGdDQUFnQyxFQUFFO0FBQ2pHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1GQUFtRjtBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sRUFBRSxFQUFFO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixrQkFBa0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG1DQUFtQztBQUNyRDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZFQUE2RSxHQUFHOztBQUVoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiwwQkFBMEI7QUFDL0M7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGtCQUFrQjtBQUNuQztBQUNBO0FBQ0EsNkJBQTZCLCtCQUErQjtBQUM1RCx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQixrQkFBa0IsZUFBZTtBQUNqQztBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILGlCQUFpQix1QkFBdUI7QUFDeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBO0FBQ0EsOENBQThDLG1CQUFtQixFQUFFO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4Qyx1QkFBdUIsRUFBRTtBQUN2RSxTQUFTO0FBQ1QsZ0RBQWdELHFCQUFxQixFQUFFO0FBQ3ZFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVlLGtFQUFHLEVBQUMiLCJmaWxlIjoiNTAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIFZ1ZS5qcyB2Mi42LjEwXG4gKiAoYykgMjAxNC0yMDE5IEV2YW4gWW91XG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cbi8qICAqL1xuXG52YXIgZW1wdHlPYmplY3QgPSBPYmplY3QuZnJlZXplKHt9KTtcblxuLy8gVGhlc2UgaGVscGVycyBwcm9kdWNlIGJldHRlciBWTSBjb2RlIGluIEpTIGVuZ2luZXMgZHVlIHRvIHRoZWlyXG4vLyBleHBsaWNpdG5lc3MgYW5kIGZ1bmN0aW9uIGlubGluaW5nLlxuZnVuY3Rpb24gaXNVbmRlZiAodikge1xuICByZXR1cm4gdiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGxcbn1cblxuZnVuY3Rpb24gaXNEZWYgKHYpIHtcbiAgcmV0dXJuIHYgIT09IHVuZGVmaW5lZCAmJiB2ICE9PSBudWxsXG59XG5cbmZ1bmN0aW9uIGlzVHJ1ZSAodikge1xuICByZXR1cm4gdiA9PT0gdHJ1ZVxufVxuXG5mdW5jdGlvbiBpc0ZhbHNlICh2KSB7XG4gIHJldHVybiB2ID09PSBmYWxzZVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHZhbHVlIGlzIHByaW1pdGl2ZS5cbiAqL1xuZnVuY3Rpb24gaXNQcmltaXRpdmUgKHZhbHVlKSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHxcbiAgICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdzeW1ib2wnIHx8XG4gICAgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbidcbiAgKVxufVxuXG4vKipcbiAqIFF1aWNrIG9iamVjdCBjaGVjayAtIHRoaXMgaXMgcHJpbWFyaWx5IHVzZWQgdG8gdGVsbFxuICogT2JqZWN0cyBmcm9tIHByaW1pdGl2ZSB2YWx1ZXMgd2hlbiB3ZSBrbm93IHRoZSB2YWx1ZVxuICogaXMgYSBKU09OLWNvbXBsaWFudCB0eXBlLlxuICovXG5mdW5jdGlvbiBpc09iamVjdCAob2JqKSB7XG4gIHJldHVybiBvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCdcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHJhdyB0eXBlIHN0cmluZyBvZiBhIHZhbHVlLCBlLmcuLCBbb2JqZWN0IE9iamVjdF0uXG4gKi9cbnZhciBfdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG5mdW5jdGlvbiB0b1Jhd1R5cGUgKHZhbHVlKSB7XG4gIHJldHVybiBfdG9TdHJpbmcuY2FsbCh2YWx1ZSkuc2xpY2UoOCwgLTEpXG59XG5cbi8qKlxuICogU3RyaWN0IG9iamVjdCB0eXBlIGNoZWNrLiBPbmx5IHJldHVybnMgdHJ1ZVxuICogZm9yIHBsYWluIEphdmFTY3JpcHQgb2JqZWN0cy5cbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCAob2JqKSB7XG4gIHJldHVybiBfdG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBPYmplY3RdJ1xufVxuXG5mdW5jdGlvbiBpc1JlZ0V4cCAodikge1xuICByZXR1cm4gX3RvU3RyaW5nLmNhbGwodikgPT09ICdbb2JqZWN0IFJlZ0V4cF0nXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdmFsIGlzIGEgdmFsaWQgYXJyYXkgaW5kZXguXG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRBcnJheUluZGV4ICh2YWwpIHtcbiAgdmFyIG4gPSBwYXJzZUZsb2F0KFN0cmluZyh2YWwpKTtcbiAgcmV0dXJuIG4gPj0gMCAmJiBNYXRoLmZsb29yKG4pID09PSBuICYmIGlzRmluaXRlKHZhbClcbn1cblxuZnVuY3Rpb24gaXNQcm9taXNlICh2YWwpIHtcbiAgcmV0dXJuIChcbiAgICBpc0RlZih2YWwpICYmXG4gICAgdHlwZW9mIHZhbC50aGVuID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIHZhbC5jYXRjaCA9PT0gJ2Z1bmN0aW9uJ1xuICApXG59XG5cbi8qKlxuICogQ29udmVydCBhIHZhbHVlIHRvIGEgc3RyaW5nIHRoYXQgaXMgYWN0dWFsbHkgcmVuZGVyZWQuXG4gKi9cbmZ1bmN0aW9uIHRvU3RyaW5nICh2YWwpIHtcbiAgcmV0dXJuIHZhbCA9PSBudWxsXG4gICAgPyAnJ1xuICAgIDogQXJyYXkuaXNBcnJheSh2YWwpIHx8IChpc1BsYWluT2JqZWN0KHZhbCkgJiYgdmFsLnRvU3RyaW5nID09PSBfdG9TdHJpbmcpXG4gICAgICA/IEpTT04uc3RyaW5naWZ5KHZhbCwgbnVsbCwgMilcbiAgICAgIDogU3RyaW5nKHZhbClcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGFuIGlucHV0IHZhbHVlIHRvIGEgbnVtYmVyIGZvciBwZXJzaXN0ZW5jZS5cbiAqIElmIHRoZSBjb252ZXJzaW9uIGZhaWxzLCByZXR1cm4gb3JpZ2luYWwgc3RyaW5nLlxuICovXG5mdW5jdGlvbiB0b051bWJlciAodmFsKSB7XG4gIHZhciBuID0gcGFyc2VGbG9hdCh2YWwpO1xuICByZXR1cm4gaXNOYU4obikgPyB2YWwgOiBuXG59XG5cbi8qKlxuICogTWFrZSBhIG1hcCBhbmQgcmV0dXJuIGEgZnVuY3Rpb24gZm9yIGNoZWNraW5nIGlmIGEga2V5XG4gKiBpcyBpbiB0aGF0IG1hcC5cbiAqL1xuZnVuY3Rpb24gbWFrZU1hcCAoXG4gIHN0cixcbiAgZXhwZWN0c0xvd2VyQ2FzZVxuKSB7XG4gIHZhciBtYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB2YXIgbGlzdCA9IHN0ci5zcGxpdCgnLCcpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBtYXBbbGlzdFtpXV0gPSB0cnVlO1xuICB9XG4gIHJldHVybiBleHBlY3RzTG93ZXJDYXNlXG4gICAgPyBmdW5jdGlvbiAodmFsKSB7IHJldHVybiBtYXBbdmFsLnRvTG93ZXJDYXNlKCldOyB9XG4gICAgOiBmdW5jdGlvbiAodmFsKSB7IHJldHVybiBtYXBbdmFsXTsgfVxufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgdGFnIGlzIGEgYnVpbHQtaW4gdGFnLlxuICovXG52YXIgaXNCdWlsdEluVGFnID0gbWFrZU1hcCgnc2xvdCxjb21wb25lbnQnLCB0cnVlKTtcblxuLyoqXG4gKiBDaGVjayBpZiBhbiBhdHRyaWJ1dGUgaXMgYSByZXNlcnZlZCBhdHRyaWJ1dGUuXG4gKi9cbnZhciBpc1Jlc2VydmVkQXR0cmlidXRlID0gbWFrZU1hcCgna2V5LHJlZixzbG90LHNsb3Qtc2NvcGUsaXMnKTtcblxuLyoqXG4gKiBSZW1vdmUgYW4gaXRlbSBmcm9tIGFuIGFycmF5LlxuICovXG5mdW5jdGlvbiByZW1vdmUgKGFyciwgaXRlbSkge1xuICBpZiAoYXJyLmxlbmd0aCkge1xuICAgIHZhciBpbmRleCA9IGFyci5pbmRleE9mKGl0ZW0pO1xuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gYXJyLnNwbGljZShpbmRleCwgMSlcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIGFuIG9iamVjdCBoYXMgdGhlIHByb3BlcnR5LlxuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuZnVuY3Rpb24gaGFzT3duIChvYmosIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSlcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBjYWNoZWQgdmVyc2lvbiBvZiBhIHB1cmUgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNhY2hlZCAoZm4pIHtcbiAgdmFyIGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuIChmdW5jdGlvbiBjYWNoZWRGbiAoc3RyKSB7XG4gICAgdmFyIGhpdCA9IGNhY2hlW3N0cl07XG4gICAgcmV0dXJuIGhpdCB8fCAoY2FjaGVbc3RyXSA9IGZuKHN0cikpXG4gIH0pXG59XG5cbi8qKlxuICogQ2FtZWxpemUgYSBoeXBoZW4tZGVsaW1pdGVkIHN0cmluZy5cbiAqL1xudmFyIGNhbWVsaXplUkUgPSAvLShcXHcpL2c7XG52YXIgY2FtZWxpemUgPSBjYWNoZWQoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoY2FtZWxpemVSRSwgZnVuY3Rpb24gKF8sIGMpIHsgcmV0dXJuIGMgPyBjLnRvVXBwZXJDYXNlKCkgOiAnJzsgfSlcbn0pO1xuXG4vKipcbiAqIENhcGl0YWxpemUgYSBzdHJpbmcuXG4gKi9cbnZhciBjYXBpdGFsaXplID0gY2FjaGVkKGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKVxufSk7XG5cbi8qKlxuICogSHlwaGVuYXRlIGEgY2FtZWxDYXNlIHN0cmluZy5cbiAqL1xudmFyIGh5cGhlbmF0ZVJFID0gL1xcQihbQS1aXSkvZztcbnZhciBoeXBoZW5hdGUgPSBjYWNoZWQoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoaHlwaGVuYXRlUkUsICctJDEnKS50b0xvd2VyQ2FzZSgpXG59KTtcblxuLyoqXG4gKiBTaW1wbGUgYmluZCBwb2x5ZmlsbCBmb3IgZW52aXJvbm1lbnRzIHRoYXQgZG8gbm90IHN1cHBvcnQgaXQsXG4gKiBlLmcuLCBQaGFudG9tSlMgMS54LiBUZWNobmljYWxseSwgd2UgZG9uJ3QgbmVlZCB0aGlzIGFueW1vcmVcbiAqIHNpbmNlIG5hdGl2ZSBiaW5kIGlzIG5vdyBwZXJmb3JtYW50IGVub3VnaCBpbiBtb3N0IGJyb3dzZXJzLlxuICogQnV0IHJlbW92aW5nIGl0IHdvdWxkIG1lYW4gYnJlYWtpbmcgY29kZSB0aGF0IHdhcyBhYmxlIHRvIHJ1biBpblxuICogUGhhbnRvbUpTIDEueCwgc28gdGhpcyBtdXN0IGJlIGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gKi9cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIHBvbHlmaWxsQmluZCAoZm4sIGN0eCkge1xuICBmdW5jdGlvbiBib3VuZEZuIChhKSB7XG4gICAgdmFyIGwgPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHJldHVybiBsXG4gICAgICA/IGwgPiAxXG4gICAgICAgID8gZm4uYXBwbHkoY3R4LCBhcmd1bWVudHMpXG4gICAgICAgIDogZm4uY2FsbChjdHgsIGEpXG4gICAgICA6IGZuLmNhbGwoY3R4KVxuICB9XG5cbiAgYm91bmRGbi5fbGVuZ3RoID0gZm4ubGVuZ3RoO1xuICByZXR1cm4gYm91bmRGblxufVxuXG5mdW5jdGlvbiBuYXRpdmVCaW5kIChmbiwgY3R4KSB7XG4gIHJldHVybiBmbi5iaW5kKGN0eClcbn1cblxudmFyIGJpbmQgPSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZFxuICA/IG5hdGl2ZUJpbmRcbiAgOiBwb2x5ZmlsbEJpbmQ7XG5cbi8qKlxuICogQ29udmVydCBhbiBBcnJheS1saWtlIG9iamVjdCB0byBhIHJlYWwgQXJyYXkuXG4gKi9cbmZ1bmN0aW9uIHRvQXJyYXkgKGxpc3QsIHN0YXJ0KSB7XG4gIHN0YXJ0ID0gc3RhcnQgfHwgMDtcbiAgdmFyIGkgPSBsaXN0Lmxlbmd0aCAtIHN0YXJ0O1xuICB2YXIgcmV0ID0gbmV3IEFycmF5KGkpO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgcmV0W2ldID0gbGlzdFtpICsgc3RhcnRdO1xuICB9XG4gIHJldHVybiByZXRcbn1cblxuLyoqXG4gKiBNaXggcHJvcGVydGllcyBpbnRvIHRhcmdldCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGV4dGVuZCAodG8sIF9mcm9tKSB7XG4gIGZvciAodmFyIGtleSBpbiBfZnJvbSkge1xuICAgIHRvW2tleV0gPSBfZnJvbVtrZXldO1xuICB9XG4gIHJldHVybiB0b1xufVxuXG4vKipcbiAqIE1lcmdlIGFuIEFycmF5IG9mIE9iamVjdHMgaW50byBhIHNpbmdsZSBPYmplY3QuXG4gKi9cbmZ1bmN0aW9uIHRvT2JqZWN0IChhcnIpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChhcnJbaV0pIHtcbiAgICAgIGV4dGVuZChyZXMsIGFycltpXSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cblxuLyoqXG4gKiBQZXJmb3JtIG5vIG9wZXJhdGlvbi5cbiAqIFN0dWJiaW5nIGFyZ3MgdG8gbWFrZSBGbG93IGhhcHB5IHdpdGhvdXQgbGVhdmluZyB1c2VsZXNzIHRyYW5zcGlsZWQgY29kZVxuICogd2l0aCAuLi5yZXN0IChodHRwczovL2Zsb3cub3JnL2Jsb2cvMjAxNy8wNS8wNy9TdHJpY3QtRnVuY3Rpb24tQ2FsbC1Bcml0eS8pLlxuICovXG5mdW5jdGlvbiBub29wIChhLCBiLCBjKSB7fVxuXG4vKipcbiAqIEFsd2F5cyByZXR1cm4gZmFsc2UuXG4gKi9cbnZhciBubyA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7IHJldHVybiBmYWxzZTsgfTtcblxuLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtdmFycyAqL1xuXG4vKipcbiAqIFJldHVybiB0aGUgc2FtZSB2YWx1ZS5cbiAqL1xudmFyIGlkZW50aXR5ID0gZnVuY3Rpb24gKF8pIHsgcmV0dXJuIF87IH07XG5cbi8qKlxuICogR2VuZXJhdGUgYSBzdHJpbmcgY29udGFpbmluZyBzdGF0aWMga2V5cyBmcm9tIGNvbXBpbGVyIG1vZHVsZXMuXG4gKi9cbmZ1bmN0aW9uIGdlblN0YXRpY0tleXMgKG1vZHVsZXMpIHtcbiAgcmV0dXJuIG1vZHVsZXMucmVkdWNlKGZ1bmN0aW9uIChrZXlzLCBtKSB7XG4gICAgcmV0dXJuIGtleXMuY29uY2F0KG0uc3RhdGljS2V5cyB8fCBbXSlcbiAgfSwgW10pLmpvaW4oJywnKVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHR3byB2YWx1ZXMgYXJlIGxvb3NlbHkgZXF1YWwgLSB0aGF0IGlzLFxuICogaWYgdGhleSBhcmUgcGxhaW4gb2JqZWN0cywgZG8gdGhleSBoYXZlIHRoZSBzYW1lIHNoYXBlP1xuICovXG5mdW5jdGlvbiBsb29zZUVxdWFsIChhLCBiKSB7XG4gIGlmIChhID09PSBiKSB7IHJldHVybiB0cnVlIH1cbiAgdmFyIGlzT2JqZWN0QSA9IGlzT2JqZWN0KGEpO1xuICB2YXIgaXNPYmplY3RCID0gaXNPYmplY3QoYik7XG4gIGlmIChpc09iamVjdEEgJiYgaXNPYmplY3RCKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBpc0FycmF5QSA9IEFycmF5LmlzQXJyYXkoYSk7XG4gICAgICB2YXIgaXNBcnJheUIgPSBBcnJheS5pc0FycmF5KGIpO1xuICAgICAgaWYgKGlzQXJyYXlBICYmIGlzQXJyYXlCKSB7XG4gICAgICAgIHJldHVybiBhLmxlbmd0aCA9PT0gYi5sZW5ndGggJiYgYS5ldmVyeShmdW5jdGlvbiAoZSwgaSkge1xuICAgICAgICAgIHJldHVybiBsb29zZUVxdWFsKGUsIGJbaV0pXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBEYXRlICYmIGIgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIHJldHVybiBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKClcbiAgICAgIH0gZWxzZSBpZiAoIWlzQXJyYXlBICYmICFpc0FycmF5Qikge1xuICAgICAgICB2YXIga2V5c0EgPSBPYmplY3Qua2V5cyhhKTtcbiAgICAgICAgdmFyIGtleXNCID0gT2JqZWN0LmtleXMoYik7XG4gICAgICAgIHJldHVybiBrZXlzQS5sZW5ndGggPT09IGtleXNCLmxlbmd0aCAmJiBrZXlzQS5ldmVyeShmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgcmV0dXJuIGxvb3NlRXF1YWwoYVtrZXldLCBiW2tleV0pXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9IGVsc2UgaWYgKCFpc09iamVjdEEgJiYgIWlzT2JqZWN0Qikge1xuICAgIHJldHVybiBTdHJpbmcoYSkgPT09IFN0cmluZyhiKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBmaXJzdCBpbmRleCBhdCB3aGljaCBhIGxvb3NlbHkgZXF1YWwgdmFsdWUgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgYXJyYXkgKGlmIHZhbHVlIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGUgYXJyYXkgbXVzdFxuICogY29udGFpbiBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgc2hhcGUpLCBvciAtMSBpZiBpdCBpcyBub3QgcHJlc2VudC5cbiAqL1xuZnVuY3Rpb24gbG9vc2VJbmRleE9mIChhcnIsIHZhbCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChsb29zZUVxdWFsKGFycltpXSwgdmFsKSkgeyByZXR1cm4gaSB9XG4gIH1cbiAgcmV0dXJuIC0xXG59XG5cbi8qKlxuICogRW5zdXJlIGEgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgb25jZS5cbiAqL1xuZnVuY3Rpb24gb25jZSAoZm4pIHtcbiAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmICghY2FsbGVkKSB7XG4gICAgICBjYWxsZWQgPSB0cnVlO1xuICAgICAgZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIFNTUl9BVFRSID0gJ2RhdGEtc2VydmVyLXJlbmRlcmVkJztcblxudmFyIEFTU0VUX1RZUEVTID0gW1xuICAnY29tcG9uZW50JyxcbiAgJ2RpcmVjdGl2ZScsXG4gICdmaWx0ZXInXG5dO1xuXG52YXIgTElGRUNZQ0xFX0hPT0tTID0gW1xuICAnYmVmb3JlQ3JlYXRlJyxcbiAgJ2NyZWF0ZWQnLFxuICAnYmVmb3JlTW91bnQnLFxuICAnbW91bnRlZCcsXG4gICdiZWZvcmVVcGRhdGUnLFxuICAndXBkYXRlZCcsXG4gICdiZWZvcmVEZXN0cm95JyxcbiAgJ2Rlc3Ryb3llZCcsXG4gICdhY3RpdmF0ZWQnLFxuICAnZGVhY3RpdmF0ZWQnLFxuICAnZXJyb3JDYXB0dXJlZCcsXG4gICdzZXJ2ZXJQcmVmZXRjaCdcbl07XG5cbi8qICAqL1xuXG5cblxudmFyIGNvbmZpZyA9ICh7XG4gIC8qKlxuICAgKiBPcHRpb24gbWVyZ2Ugc3RyYXRlZ2llcyAodXNlZCBpbiBjb3JlL3V0aWwvb3B0aW9ucylcbiAgICovXG4gIC8vICRmbG93LWRpc2FibGUtbGluZVxuICBvcHRpb25NZXJnZVN0cmF0ZWdpZXM6IE9iamVjdC5jcmVhdGUobnVsbCksXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc3VwcHJlc3Mgd2FybmluZ3MuXG4gICAqL1xuICBzaWxlbnQ6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBTaG93IHByb2R1Y3Rpb24gbW9kZSB0aXAgbWVzc2FnZSBvbiBib290P1xuICAgKi9cbiAgcHJvZHVjdGlvblRpcDogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyxcblxuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgZGV2dG9vbHNcbiAgICovXG4gIGRldnRvb2xzOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlY29yZCBwZXJmXG4gICAqL1xuICBwZXJmb3JtYW5jZTogZmFsc2UsXG5cbiAgLyoqXG4gICAqIEVycm9yIGhhbmRsZXIgZm9yIHdhdGNoZXIgZXJyb3JzXG4gICAqL1xuICBlcnJvckhhbmRsZXI6IG51bGwsXG5cbiAgLyoqXG4gICAqIFdhcm4gaGFuZGxlciBmb3Igd2F0Y2hlciB3YXJuc1xuICAgKi9cbiAgd2FybkhhbmRsZXI6IG51bGwsXG5cbiAgLyoqXG4gICAqIElnbm9yZSBjZXJ0YWluIGN1c3RvbSBlbGVtZW50c1xuICAgKi9cbiAgaWdub3JlZEVsZW1lbnRzOiBbXSxcblxuICAvKipcbiAgICogQ3VzdG9tIHVzZXIga2V5IGFsaWFzZXMgZm9yIHYtb25cbiAgICovXG4gIC8vICRmbG93LWRpc2FibGUtbGluZVxuICBrZXlDb2RlczogT2JqZWN0LmNyZWF0ZShudWxsKSxcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSB0YWcgaXMgcmVzZXJ2ZWQgc28gdGhhdCBpdCBjYW5ub3QgYmUgcmVnaXN0ZXJlZCBhcyBhXG4gICAqIGNvbXBvbmVudC4gVGhpcyBpcyBwbGF0Zm9ybS1kZXBlbmRlbnQgYW5kIG1heSBiZSBvdmVyd3JpdHRlbi5cbiAgICovXG4gIGlzUmVzZXJ2ZWRUYWc6IG5vLFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhdHRyaWJ1dGUgaXMgcmVzZXJ2ZWQgc28gdGhhdCBpdCBjYW5ub3QgYmUgdXNlZCBhcyBhIGNvbXBvbmVudFxuICAgKiBwcm9wLiBUaGlzIGlzIHBsYXRmb3JtLWRlcGVuZGVudCBhbmQgbWF5IGJlIG92ZXJ3cml0dGVuLlxuICAgKi9cbiAgaXNSZXNlcnZlZEF0dHI6IG5vLFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIHRhZyBpcyBhbiB1bmtub3duIGVsZW1lbnQuXG4gICAqIFBsYXRmb3JtLWRlcGVuZGVudC5cbiAgICovXG4gIGlzVW5rbm93bkVsZW1lbnQ6IG5vLFxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG5hbWVzcGFjZSBvZiBhbiBlbGVtZW50XG4gICAqL1xuICBnZXRUYWdOYW1lc3BhY2U6IG5vb3AsXG5cbiAgLyoqXG4gICAqIFBhcnNlIHRoZSByZWFsIHRhZyBuYW1lIGZvciB0aGUgc3BlY2lmaWMgcGxhdGZvcm0uXG4gICAqL1xuICBwYXJzZVBsYXRmb3JtVGFnTmFtZTogaWRlbnRpdHksXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGF0dHJpYnV0ZSBtdXN0IGJlIGJvdW5kIHVzaW5nIHByb3BlcnR5LCBlLmcuIHZhbHVlXG4gICAqIFBsYXRmb3JtLWRlcGVuZGVudC5cbiAgICovXG4gIG11c3RVc2VQcm9wOiBubyxcblxuICAvKipcbiAgICogUGVyZm9ybSB1cGRhdGVzIGFzeW5jaHJvbm91c2x5LiBJbnRlbmRlZCB0byBiZSB1c2VkIGJ5IFZ1ZSBUZXN0IFV0aWxzXG4gICAqIFRoaXMgd2lsbCBzaWduaWZpY2FudGx5IHJlZHVjZSBwZXJmb3JtYW5jZSBpZiBzZXQgdG8gZmFsc2UuXG4gICAqL1xuICBhc3luYzogdHJ1ZSxcblxuICAvKipcbiAgICogRXhwb3NlZCBmb3IgbGVnYWN5IHJlYXNvbnNcbiAgICovXG4gIF9saWZlY3ljbGVIb29rczogTElGRUNZQ0xFX0hPT0tTXG59KTtcblxuLyogICovXG5cbi8qKlxuICogdW5pY29kZSBsZXR0ZXJzIHVzZWQgZm9yIHBhcnNpbmcgaHRtbCB0YWdzLCBjb21wb25lbnQgbmFtZXMgYW5kIHByb3BlcnR5IHBhdGhzLlxuICogdXNpbmcgaHR0cHM6Ly93d3cudzMub3JnL1RSL2h0bWw1My9zZW1hbnRpY3Mtc2NyaXB0aW5nLmh0bWwjcG90ZW50aWFsY3VzdG9tZWxlbWVudG5hbWVcbiAqIHNraXBwaW5nIFxcdTEwMDAwLVxcdUVGRkZGIGR1ZSB0byBpdCBmcmVlemluZyB1cCBQaGFudG9tSlNcbiAqL1xudmFyIHVuaWNvZGVSZWdFeHAgPSAvYS16QS1aXFx1MDBCN1xcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwM0YtXFx1MjA0MFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRC87XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzdHJpbmcgc3RhcnRzIHdpdGggJCBvciBfXG4gKi9cbmZ1bmN0aW9uIGlzUmVzZXJ2ZWQgKHN0cikge1xuICB2YXIgYyA9IChzdHIgKyAnJykuY2hhckNvZGVBdCgwKTtcbiAgcmV0dXJuIGMgPT09IDB4MjQgfHwgYyA9PT0gMHg1RlxufVxuXG4vKipcbiAqIERlZmluZSBhIHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiBkZWYgKG9iaiwga2V5LCB2YWwsIGVudW1lcmFibGUpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgdmFsdWU6IHZhbCxcbiAgICBlbnVtZXJhYmxlOiAhIWVudW1lcmFibGUsXG4gICAgd3JpdGFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuXG4vKipcbiAqIFBhcnNlIHNpbXBsZSBwYXRoLlxuICovXG52YXIgYmFpbFJFID0gbmV3IFJlZ0V4cCgoXCJbXlwiICsgKHVuaWNvZGVSZWdFeHAuc291cmNlKSArIFwiLiRfXFxcXGRdXCIpKTtcbmZ1bmN0aW9uIHBhcnNlUGF0aCAocGF0aCkge1xuICBpZiAoYmFpbFJFLnRlc3QocGF0aCkpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgc2VnbWVudHMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gIHJldHVybiBmdW5jdGlvbiAob2JqKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFvYmopIHsgcmV0dXJuIH1cbiAgICAgIG9iaiA9IG9ialtzZWdtZW50c1tpXV07XG4gICAgfVxuICAgIHJldHVybiBvYmpcbiAgfVxufVxuXG4vKiAgKi9cblxuLy8gY2FuIHdlIHVzZSBfX3Byb3RvX18/XG52YXIgaGFzUHJvdG8gPSAnX19wcm90b19fJyBpbiB7fTtcblxuLy8gQnJvd3NlciBlbnZpcm9ubWVudCBzbmlmZmluZ1xudmFyIGluQnJvd3NlciA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xudmFyIGluV2VleCA9IHR5cGVvZiBXWEVudmlyb25tZW50ICE9PSAndW5kZWZpbmVkJyAmJiAhIVdYRW52aXJvbm1lbnQucGxhdGZvcm07XG52YXIgd2VleFBsYXRmb3JtID0gaW5XZWV4ICYmIFdYRW52aXJvbm1lbnQucGxhdGZvcm0udG9Mb3dlckNhc2UoKTtcbnZhciBVQSA9IGluQnJvd3NlciAmJiB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xudmFyIGlzSUUgPSBVQSAmJiAvbXNpZXx0cmlkZW50Ly50ZXN0KFVBKTtcbnZhciBpc0lFOSA9IFVBICYmIFVBLmluZGV4T2YoJ21zaWUgOS4wJykgPiAwO1xudmFyIGlzRWRnZSA9IFVBICYmIFVBLmluZGV4T2YoJ2VkZ2UvJykgPiAwO1xudmFyIGlzQW5kcm9pZCA9IChVQSAmJiBVQS5pbmRleE9mKCdhbmRyb2lkJykgPiAwKSB8fCAod2VleFBsYXRmb3JtID09PSAnYW5kcm9pZCcpO1xudmFyIGlzSU9TID0gKFVBICYmIC9pcGhvbmV8aXBhZHxpcG9kfGlvcy8udGVzdChVQSkpIHx8ICh3ZWV4UGxhdGZvcm0gPT09ICdpb3MnKTtcbnZhciBpc0Nocm9tZSA9IFVBICYmIC9jaHJvbWVcXC9cXGQrLy50ZXN0KFVBKSAmJiAhaXNFZGdlO1xudmFyIGlzUGhhbnRvbUpTID0gVUEgJiYgL3BoYW50b21qcy8udGVzdChVQSk7XG52YXIgaXNGRiA9IFVBICYmIFVBLm1hdGNoKC9maXJlZm94XFwvKFxcZCspLyk7XG5cbi8vIEZpcmVmb3ggaGFzIGEgXCJ3YXRjaFwiIGZ1bmN0aW9uIG9uIE9iamVjdC5wcm90b3R5cGUuLi5cbnZhciBuYXRpdmVXYXRjaCA9ICh7fSkud2F0Y2g7XG5cbnZhciBzdXBwb3J0c1Bhc3NpdmUgPSBmYWxzZTtcbmlmIChpbkJyb3dzZXIpIHtcbiAgdHJ5IHtcbiAgICB2YXIgb3B0cyA9IHt9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvcHRzLCAncGFzc2l2ZScsICh7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCAoKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHN1cHBvcnRzUGFzc2l2ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSkpOyAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvMjg1XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Rlc3QtcGFzc2l2ZScsIG51bGwsIG9wdHMpO1xuICB9IGNhdGNoIChlKSB7fVxufVxuXG4vLyB0aGlzIG5lZWRzIHRvIGJlIGxhenktZXZhbGVkIGJlY2F1c2UgdnVlIG1heSBiZSByZXF1aXJlZCBiZWZvcmVcbi8vIHZ1ZS1zZXJ2ZXItcmVuZGVyZXIgY2FuIHNldCBWVUVfRU5WXG52YXIgX2lzU2VydmVyO1xudmFyIGlzU2VydmVyUmVuZGVyaW5nID0gZnVuY3Rpb24gKCkge1xuICBpZiAoX2lzU2VydmVyID09PSB1bmRlZmluZWQpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIWluQnJvd3NlciAmJiAhaW5XZWV4ICYmIHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBkZXRlY3QgcHJlc2VuY2Ugb2YgdnVlLXNlcnZlci1yZW5kZXJlciBhbmQgYXZvaWRcbiAgICAgIC8vIFdlYnBhY2sgc2hpbW1pbmcgdGhlIHByb2Nlc3NcbiAgICAgIF9pc1NlcnZlciA9IGdsb2JhbFsncHJvY2VzcyddICYmIGdsb2JhbFsncHJvY2VzcyddLmVudi5WVUVfRU5WID09PSAnc2VydmVyJztcbiAgICB9IGVsc2Uge1xuICAgICAgX2lzU2VydmVyID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiBfaXNTZXJ2ZXJcbn07XG5cbi8vIGRldGVjdCBkZXZ0b29sc1xudmFyIGRldnRvb2xzID0gaW5Ccm93c2VyICYmIHdpbmRvdy5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gaXNOYXRpdmUgKEN0b3IpIHtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09PSAnZnVuY3Rpb24nICYmIC9uYXRpdmUgY29kZS8udGVzdChDdG9yLnRvU3RyaW5nKCkpXG59XG5cbnZhciBoYXNTeW1ib2wgPVxuICB0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShTeW1ib2wpICYmXG4gIHR5cGVvZiBSZWZsZWN0ICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShSZWZsZWN0Lm93bktleXMpO1xuXG52YXIgX1NldDtcbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqLyAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbmlmICh0eXBlb2YgU2V0ICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShTZXQpKSB7XG4gIC8vIHVzZSBuYXRpdmUgU2V0IHdoZW4gYXZhaWxhYmxlLlxuICBfU2V0ID0gU2V0O1xufSBlbHNlIHtcbiAgLy8gYSBub24tc3RhbmRhcmQgU2V0IHBvbHlmaWxsIHRoYXQgb25seSB3b3JrcyB3aXRoIHByaW1pdGl2ZSBrZXlzLlxuICBfU2V0ID0gLypAX19QVVJFX18qLyhmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU2V0ICgpIHtcbiAgICAgIHRoaXMuc2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB9XG4gICAgU2V0LnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiBoYXMgKGtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0W2tleV0gPT09IHRydWVcbiAgICB9O1xuICAgIFNldC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChrZXkpIHtcbiAgICAgIHRoaXMuc2V0W2tleV0gPSB0cnVlO1xuICAgIH07XG4gICAgU2V0LnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uIGNsZWFyICgpIHtcbiAgICAgIHRoaXMuc2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIFNldDtcbiAgfSgpKTtcbn1cblxuLyogICovXG5cbnZhciB3YXJuID0gbm9vcDtcbnZhciB0aXAgPSBub29wO1xudmFyIGdlbmVyYXRlQ29tcG9uZW50VHJhY2UgPSAobm9vcCk7IC8vIHdvcmsgYXJvdW5kIGZsb3cgY2hlY2tcbnZhciBmb3JtYXRDb21wb25lbnROYW1lID0gKG5vb3ApO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgaGFzQ29uc29sZSA9IHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJztcbiAgdmFyIGNsYXNzaWZ5UkUgPSAvKD86XnxbLV9dKShcXHcpL2c7XG4gIHZhciBjbGFzc2lmeSA9IGZ1bmN0aW9uIChzdHIpIHsgcmV0dXJuIHN0clxuICAgIC5yZXBsYWNlKGNsYXNzaWZ5UkUsIGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLnRvVXBwZXJDYXNlKCk7IH0pXG4gICAgLnJlcGxhY2UoL1stX10vZywgJycpOyB9O1xuXG4gIHdhcm4gPSBmdW5jdGlvbiAobXNnLCB2bSkge1xuICAgIHZhciB0cmFjZSA9IHZtID8gZ2VuZXJhdGVDb21wb25lbnRUcmFjZSh2bSkgOiAnJztcblxuICAgIGlmIChjb25maWcud2FybkhhbmRsZXIpIHtcbiAgICAgIGNvbmZpZy53YXJuSGFuZGxlci5jYWxsKG51bGwsIG1zZywgdm0sIHRyYWNlKTtcbiAgICB9IGVsc2UgaWYgKGhhc0NvbnNvbGUgJiYgKCFjb25maWcuc2lsZW50KSkge1xuICAgICAgY29uc29sZS5lcnJvcigoXCJbVnVlIHdhcm5dOiBcIiArIG1zZyArIHRyYWNlKSk7XG4gICAgfVxuICB9O1xuXG4gIHRpcCA9IGZ1bmN0aW9uIChtc2csIHZtKSB7XG4gICAgaWYgKGhhc0NvbnNvbGUgJiYgKCFjb25maWcuc2lsZW50KSkge1xuICAgICAgY29uc29sZS53YXJuKFwiW1Z1ZSB0aXBdOiBcIiArIG1zZyArIChcbiAgICAgICAgdm0gPyBnZW5lcmF0ZUNvbXBvbmVudFRyYWNlKHZtKSA6ICcnXG4gICAgICApKTtcbiAgICB9XG4gIH07XG5cbiAgZm9ybWF0Q29tcG9uZW50TmFtZSA9IGZ1bmN0aW9uICh2bSwgaW5jbHVkZUZpbGUpIHtcbiAgICBpZiAodm0uJHJvb3QgPT09IHZtKSB7XG4gICAgICByZXR1cm4gJzxSb290PidcbiAgICB9XG4gICAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygdm0gPT09ICdmdW5jdGlvbicgJiYgdm0uY2lkICE9IG51bGxcbiAgICAgID8gdm0ub3B0aW9uc1xuICAgICAgOiB2bS5faXNWdWVcbiAgICAgICAgPyB2bS4kb3B0aW9ucyB8fCB2bS5jb25zdHJ1Y3Rvci5vcHRpb25zXG4gICAgICAgIDogdm07XG4gICAgdmFyIG5hbWUgPSBvcHRpb25zLm5hbWUgfHwgb3B0aW9ucy5fY29tcG9uZW50VGFnO1xuICAgIHZhciBmaWxlID0gb3B0aW9ucy5fX2ZpbGU7XG4gICAgaWYgKCFuYW1lICYmIGZpbGUpIHtcbiAgICAgIHZhciBtYXRjaCA9IGZpbGUubWF0Y2goLyhbXi9cXFxcXSspXFwudnVlJC8pO1xuICAgICAgbmFtZSA9IG1hdGNoICYmIG1hdGNoWzFdO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAobmFtZSA/IChcIjxcIiArIChjbGFzc2lmeShuYW1lKSkgKyBcIj5cIikgOiBcIjxBbm9ueW1vdXM+XCIpICtcbiAgICAgIChmaWxlICYmIGluY2x1ZGVGaWxlICE9PSBmYWxzZSA/IChcIiBhdCBcIiArIGZpbGUpIDogJycpXG4gICAgKVxuICB9O1xuXG4gIHZhciByZXBlYXQgPSBmdW5jdGlvbiAoc3RyLCBuKSB7XG4gICAgdmFyIHJlcyA9ICcnO1xuICAgIHdoaWxlIChuKSB7XG4gICAgICBpZiAobiAlIDIgPT09IDEpIHsgcmVzICs9IHN0cjsgfVxuICAgICAgaWYgKG4gPiAxKSB7IHN0ciArPSBzdHI7IH1cbiAgICAgIG4gPj49IDE7XG4gICAgfVxuICAgIHJldHVybiByZXNcbiAgfTtcblxuICBnZW5lcmF0ZUNvbXBvbmVudFRyYWNlID0gZnVuY3Rpb24gKHZtKSB7XG4gICAgaWYgKHZtLl9pc1Z1ZSAmJiB2bS4kcGFyZW50KSB7XG4gICAgICB2YXIgdHJlZSA9IFtdO1xuICAgICAgdmFyIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZSA9IDA7XG4gICAgICB3aGlsZSAodm0pIHtcbiAgICAgICAgaWYgKHRyZWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHZhciBsYXN0ID0gdHJlZVt0cmVlLmxlbmd0aCAtIDFdO1xuICAgICAgICAgIGlmIChsYXN0LmNvbnN0cnVjdG9yID09PSB2bS5jb25zdHJ1Y3Rvcikge1xuICAgICAgICAgICAgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlKys7XG4gICAgICAgICAgICB2bSA9IHZtLiRwYXJlbnQ7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlID4gMCkge1xuICAgICAgICAgICAgdHJlZVt0cmVlLmxlbmd0aCAtIDFdID0gW2xhc3QsIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZV07XG4gICAgICAgICAgICBjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2UgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0cmVlLnB1c2godm0pO1xuICAgICAgICB2bSA9IHZtLiRwYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gJ1xcblxcbmZvdW5kIGluXFxuXFxuJyArIHRyZWVcbiAgICAgICAgLm1hcChmdW5jdGlvbiAodm0sIGkpIHsgcmV0dXJuIChcIlwiICsgKGkgPT09IDAgPyAnLS0tPiAnIDogcmVwZWF0KCcgJywgNSArIGkgKiAyKSkgKyAoQXJyYXkuaXNBcnJheSh2bSlcbiAgICAgICAgICAgID8gKChmb3JtYXRDb21wb25lbnROYW1lKHZtWzBdKSkgKyBcIi4uLiAoXCIgKyAodm1bMV0pICsgXCIgcmVjdXJzaXZlIGNhbGxzKVwiKVxuICAgICAgICAgICAgOiBmb3JtYXRDb21wb25lbnROYW1lKHZtKSkpOyB9KVxuICAgICAgICAuam9pbignXFxuJylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChcIlxcblxcbihmb3VuZCBpbiBcIiArIChmb3JtYXRDb21wb25lbnROYW1lKHZtKSkgKyBcIilcIilcbiAgICB9XG4gIH07XG59XG5cbi8qICAqL1xuXG52YXIgdWlkID0gMDtcblxuLyoqXG4gKiBBIGRlcCBpcyBhbiBvYnNlcnZhYmxlIHRoYXQgY2FuIGhhdmUgbXVsdGlwbGVcbiAqIGRpcmVjdGl2ZXMgc3Vic2NyaWJpbmcgdG8gaXQuXG4gKi9cbnZhciBEZXAgPSBmdW5jdGlvbiBEZXAgKCkge1xuICB0aGlzLmlkID0gdWlkKys7XG4gIHRoaXMuc3VicyA9IFtdO1xufTtcblxuRGVwLnByb3RvdHlwZS5hZGRTdWIgPSBmdW5jdGlvbiBhZGRTdWIgKHN1Yikge1xuICB0aGlzLnN1YnMucHVzaChzdWIpO1xufTtcblxuRGVwLnByb3RvdHlwZS5yZW1vdmVTdWIgPSBmdW5jdGlvbiByZW1vdmVTdWIgKHN1Yikge1xuICByZW1vdmUodGhpcy5zdWJzLCBzdWIpO1xufTtcblxuRGVwLnByb3RvdHlwZS5kZXBlbmQgPSBmdW5jdGlvbiBkZXBlbmQgKCkge1xuICBpZiAoRGVwLnRhcmdldCkge1xuICAgIERlcC50YXJnZXQuYWRkRGVwKHRoaXMpO1xuICB9XG59O1xuXG5EZXAucHJvdG90eXBlLm5vdGlmeSA9IGZ1bmN0aW9uIG5vdGlmeSAoKSB7XG4gIC8vIHN0YWJpbGl6ZSB0aGUgc3Vic2NyaWJlciBsaXN0IGZpcnN0XG4gIHZhciBzdWJzID0gdGhpcy5zdWJzLnNsaWNlKCk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFjb25maWcuYXN5bmMpIHtcbiAgICAvLyBzdWJzIGFyZW4ndCBzb3J0ZWQgaW4gc2NoZWR1bGVyIGlmIG5vdCBydW5uaW5nIGFzeW5jXG4gICAgLy8gd2UgbmVlZCB0byBzb3J0IHRoZW0gbm93IHRvIG1ha2Ugc3VyZSB0aGV5IGZpcmUgaW4gY29ycmVjdFxuICAgIC8vIG9yZGVyXG4gICAgc3Vicy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLmlkIC0gYi5pZDsgfSk7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBzdWJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHN1YnNbaV0udXBkYXRlKCk7XG4gIH1cbn07XG5cbi8vIFRoZSBjdXJyZW50IHRhcmdldCB3YXRjaGVyIGJlaW5nIGV2YWx1YXRlZC5cbi8vIFRoaXMgaXMgZ2xvYmFsbHkgdW5pcXVlIGJlY2F1c2Ugb25seSBvbmUgd2F0Y2hlclxuLy8gY2FuIGJlIGV2YWx1YXRlZCBhdCBhIHRpbWUuXG5EZXAudGFyZ2V0ID0gbnVsbDtcbnZhciB0YXJnZXRTdGFjayA9IFtdO1xuXG5mdW5jdGlvbiBwdXNoVGFyZ2V0ICh0YXJnZXQpIHtcbiAgdGFyZ2V0U3RhY2sucHVzaCh0YXJnZXQpO1xuICBEZXAudGFyZ2V0ID0gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBwb3BUYXJnZXQgKCkge1xuICB0YXJnZXRTdGFjay5wb3AoKTtcbiAgRGVwLnRhcmdldCA9IHRhcmdldFN0YWNrW3RhcmdldFN0YWNrLmxlbmd0aCAtIDFdO1xufVxuXG4vKiAgKi9cblxudmFyIFZOb2RlID0gZnVuY3Rpb24gVk5vZGUgKFxuICB0YWcsXG4gIGRhdGEsXG4gIGNoaWxkcmVuLFxuICB0ZXh0LFxuICBlbG0sXG4gIGNvbnRleHQsXG4gIGNvbXBvbmVudE9wdGlvbnMsXG4gIGFzeW5jRmFjdG9yeVxuKSB7XG4gIHRoaXMudGFnID0gdGFnO1xuICB0aGlzLmRhdGEgPSBkYXRhO1xuICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIHRoaXMudGV4dCA9IHRleHQ7XG4gIHRoaXMuZWxtID0gZWxtO1xuICB0aGlzLm5zID0gdW5kZWZpbmVkO1xuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLmZuQ29udGV4dCA9IHVuZGVmaW5lZDtcbiAgdGhpcy5mbk9wdGlvbnMgPSB1bmRlZmluZWQ7XG4gIHRoaXMuZm5TY29wZUlkID0gdW5kZWZpbmVkO1xuICB0aGlzLmtleSA9IGRhdGEgJiYgZGF0YS5rZXk7XG4gIHRoaXMuY29tcG9uZW50T3B0aW9ucyA9IGNvbXBvbmVudE9wdGlvbnM7XG4gIHRoaXMuY29tcG9uZW50SW5zdGFuY2UgPSB1bmRlZmluZWQ7XG4gIHRoaXMucGFyZW50ID0gdW5kZWZpbmVkO1xuICB0aGlzLnJhdyA9IGZhbHNlO1xuICB0aGlzLmlzU3RhdGljID0gZmFsc2U7XG4gIHRoaXMuaXNSb290SW5zZXJ0ID0gdHJ1ZTtcbiAgdGhpcy5pc0NvbW1lbnQgPSBmYWxzZTtcbiAgdGhpcy5pc0Nsb25lZCA9IGZhbHNlO1xuICB0aGlzLmlzT25jZSA9IGZhbHNlO1xuICB0aGlzLmFzeW5jRmFjdG9yeSA9IGFzeW5jRmFjdG9yeTtcbiAgdGhpcy5hc3luY01ldGEgPSB1bmRlZmluZWQ7XG4gIHRoaXMuaXNBc3luY1BsYWNlaG9sZGVyID0gZmFsc2U7XG59O1xuXG52YXIgcHJvdG90eXBlQWNjZXNzb3JzID0geyBjaGlsZDogeyBjb25maWd1cmFibGU6IHRydWUgfSB9O1xuXG4vLyBERVBSRUNBVEVEOiBhbGlhcyBmb3IgY29tcG9uZW50SW5zdGFuY2UgZm9yIGJhY2t3YXJkcyBjb21wYXQuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xucHJvdG90eXBlQWNjZXNzb3JzLmNoaWxkLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuY29tcG9uZW50SW5zdGFuY2Vcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBWTm9kZS5wcm90b3R5cGUsIHByb3RvdHlwZUFjY2Vzc29ycyApO1xuXG52YXIgY3JlYXRlRW1wdHlWTm9kZSA9IGZ1bmN0aW9uICh0ZXh0KSB7XG4gIGlmICggdGV4dCA9PT0gdm9pZCAwICkgdGV4dCA9ICcnO1xuXG4gIHZhciBub2RlID0gbmV3IFZOb2RlKCk7XG4gIG5vZGUudGV4dCA9IHRleHQ7XG4gIG5vZGUuaXNDb21tZW50ID0gdHJ1ZTtcbiAgcmV0dXJuIG5vZGVcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZVRleHRWTm9kZSAodmFsKSB7XG4gIHJldHVybiBuZXcgVk5vZGUodW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgU3RyaW5nKHZhbCkpXG59XG5cbi8vIG9wdGltaXplZCBzaGFsbG93IGNsb25lXG4vLyB1c2VkIGZvciBzdGF0aWMgbm9kZXMgYW5kIHNsb3Qgbm9kZXMgYmVjYXVzZSB0aGV5IG1heSBiZSByZXVzZWQgYWNyb3NzXG4vLyBtdWx0aXBsZSByZW5kZXJzLCBjbG9uaW5nIHRoZW0gYXZvaWRzIGVycm9ycyB3aGVuIERPTSBtYW5pcHVsYXRpb25zIHJlbHlcbi8vIG9uIHRoZWlyIGVsbSByZWZlcmVuY2UuXG5mdW5jdGlvbiBjbG9uZVZOb2RlICh2bm9kZSkge1xuICB2YXIgY2xvbmVkID0gbmV3IFZOb2RlKFxuICAgIHZub2RlLnRhZyxcbiAgICB2bm9kZS5kYXRhLFxuICAgIC8vICM3OTc1XG4gICAgLy8gY2xvbmUgY2hpbGRyZW4gYXJyYXkgdG8gYXZvaWQgbXV0YXRpbmcgb3JpZ2luYWwgaW4gY2FzZSBvZiBjbG9uaW5nXG4gICAgLy8gYSBjaGlsZC5cbiAgICB2bm9kZS5jaGlsZHJlbiAmJiB2bm9kZS5jaGlsZHJlbi5zbGljZSgpLFxuICAgIHZub2RlLnRleHQsXG4gICAgdm5vZGUuZWxtLFxuICAgIHZub2RlLmNvbnRleHQsXG4gICAgdm5vZGUuY29tcG9uZW50T3B0aW9ucyxcbiAgICB2bm9kZS5hc3luY0ZhY3RvcnlcbiAgKTtcbiAgY2xvbmVkLm5zID0gdm5vZGUubnM7XG4gIGNsb25lZC5pc1N0YXRpYyA9IHZub2RlLmlzU3RhdGljO1xuICBjbG9uZWQua2V5ID0gdm5vZGUua2V5O1xuICBjbG9uZWQuaXNDb21tZW50ID0gdm5vZGUuaXNDb21tZW50O1xuICBjbG9uZWQuZm5Db250ZXh0ID0gdm5vZGUuZm5Db250ZXh0O1xuICBjbG9uZWQuZm5PcHRpb25zID0gdm5vZGUuZm5PcHRpb25zO1xuICBjbG9uZWQuZm5TY29wZUlkID0gdm5vZGUuZm5TY29wZUlkO1xuICBjbG9uZWQuYXN5bmNNZXRhID0gdm5vZGUuYXN5bmNNZXRhO1xuICBjbG9uZWQuaXNDbG9uZWQgPSB0cnVlO1xuICByZXR1cm4gY2xvbmVkXG59XG5cbi8qXG4gKiBub3QgdHlwZSBjaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBmbG93IGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGhcbiAqIGR5bmFtaWNhbGx5IGFjY2Vzc2luZyBtZXRob2RzIG9uIEFycmF5IHByb3RvdHlwZVxuICovXG5cbnZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xudmFyIGFycmF5TWV0aG9kcyA9IE9iamVjdC5jcmVhdGUoYXJyYXlQcm90byk7XG5cbnZhciBtZXRob2RzVG9QYXRjaCA9IFtcbiAgJ3B1c2gnLFxuICAncG9wJyxcbiAgJ3NoaWZ0JyxcbiAgJ3Vuc2hpZnQnLFxuICAnc3BsaWNlJyxcbiAgJ3NvcnQnLFxuICAncmV2ZXJzZSdcbl07XG5cbi8qKlxuICogSW50ZXJjZXB0IG11dGF0aW5nIG1ldGhvZHMgYW5kIGVtaXQgZXZlbnRzXG4gKi9cbm1ldGhvZHNUb1BhdGNoLmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuICAvLyBjYWNoZSBvcmlnaW5hbCBtZXRob2RcbiAgdmFyIG9yaWdpbmFsID0gYXJyYXlQcm90b1ttZXRob2RdO1xuICBkZWYoYXJyYXlNZXRob2RzLCBtZXRob2QsIGZ1bmN0aW9uIG11dGF0b3IgKCkge1xuICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gXTtcblxuICAgIHZhciByZXN1bHQgPSBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB2YXIgb2IgPSB0aGlzLl9fb2JfXztcbiAgICB2YXIgaW5zZXJ0ZWQ7XG4gICAgc3dpdGNoIChtZXRob2QpIHtcbiAgICAgIGNhc2UgJ3B1c2gnOlxuICAgICAgY2FzZSAndW5zaGlmdCc6XG4gICAgICAgIGluc2VydGVkID0gYXJncztcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3NwbGljZSc6XG4gICAgICAgIGluc2VydGVkID0gYXJncy5zbGljZSgyKTtcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gICAgaWYgKGluc2VydGVkKSB7IG9iLm9ic2VydmVBcnJheShpbnNlcnRlZCk7IH1cbiAgICAvLyBub3RpZnkgY2hhbmdlXG4gICAgb2IuZGVwLm5vdGlmeSgpO1xuICAgIHJldHVybiByZXN1bHRcbiAgfSk7XG59KTtcblxuLyogICovXG5cbnZhciBhcnJheUtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhhcnJheU1ldGhvZHMpO1xuXG4vKipcbiAqIEluIHNvbWUgY2FzZXMgd2UgbWF5IHdhbnQgdG8gZGlzYWJsZSBvYnNlcnZhdGlvbiBpbnNpZGUgYSBjb21wb25lbnQnc1xuICogdXBkYXRlIGNvbXB1dGF0aW9uLlxuICovXG52YXIgc2hvdWxkT2JzZXJ2ZSA9IHRydWU7XG5cbmZ1bmN0aW9uIHRvZ2dsZU9ic2VydmluZyAodmFsdWUpIHtcbiAgc2hvdWxkT2JzZXJ2ZSA9IHZhbHVlO1xufVxuXG4vKipcbiAqIE9ic2VydmVyIGNsYXNzIHRoYXQgaXMgYXR0YWNoZWQgdG8gZWFjaCBvYnNlcnZlZFxuICogb2JqZWN0LiBPbmNlIGF0dGFjaGVkLCB0aGUgb2JzZXJ2ZXIgY29udmVydHMgdGhlIHRhcmdldFxuICogb2JqZWN0J3MgcHJvcGVydHkga2V5cyBpbnRvIGdldHRlci9zZXR0ZXJzIHRoYXRcbiAqIGNvbGxlY3QgZGVwZW5kZW5jaWVzIGFuZCBkaXNwYXRjaCB1cGRhdGVzLlxuICovXG52YXIgT2JzZXJ2ZXIgPSBmdW5jdGlvbiBPYnNlcnZlciAodmFsdWUpIHtcbiAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB0aGlzLmRlcCA9IG5ldyBEZXAoKTtcbiAgdGhpcy52bUNvdW50ID0gMDtcbiAgZGVmKHZhbHVlLCAnX19vYl9fJywgdGhpcyk7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGlmIChoYXNQcm90bykge1xuICAgICAgcHJvdG9BdWdtZW50KHZhbHVlLCBhcnJheU1ldGhvZHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb3B5QXVnbWVudCh2YWx1ZSwgYXJyYXlNZXRob2RzLCBhcnJheUtleXMpO1xuICAgIH1cbiAgICB0aGlzLm9ic2VydmVBcnJheSh2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy53YWxrKHZhbHVlKTtcbiAgfVxufTtcblxuLyoqXG4gKiBXYWxrIHRocm91Z2ggYWxsIHByb3BlcnRpZXMgYW5kIGNvbnZlcnQgdGhlbSBpbnRvXG4gKiBnZXR0ZXIvc2V0dGVycy4gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW5cbiAqIHZhbHVlIHR5cGUgaXMgT2JqZWN0LlxuICovXG5PYnNlcnZlci5wcm90b3R5cGUud2FsayA9IGZ1bmN0aW9uIHdhbGsgKG9iaikge1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGRlZmluZVJlYWN0aXZlJCQxKG9iaiwga2V5c1tpXSk7XG4gIH1cbn07XG5cbi8qKlxuICogT2JzZXJ2ZSBhIGxpc3Qgb2YgQXJyYXkgaXRlbXMuXG4gKi9cbk9ic2VydmVyLnByb3RvdHlwZS5vYnNlcnZlQXJyYXkgPSBmdW5jdGlvbiBvYnNlcnZlQXJyYXkgKGl0ZW1zKSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0gaXRlbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgb2JzZXJ2ZShpdGVtc1tpXSk7XG4gIH1cbn07XG5cbi8vIGhlbHBlcnNcblxuLyoqXG4gKiBBdWdtZW50IGEgdGFyZ2V0IE9iamVjdCBvciBBcnJheSBieSBpbnRlcmNlcHRpbmdcbiAqIHRoZSBwcm90b3R5cGUgY2hhaW4gdXNpbmcgX19wcm90b19fXG4gKi9cbmZ1bmN0aW9uIHByb3RvQXVnbWVudCAodGFyZ2V0LCBzcmMpIHtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cbiAgdGFyZ2V0Ll9fcHJvdG9fXyA9IHNyYztcbiAgLyogZXNsaW50LWVuYWJsZSBuby1wcm90byAqL1xufVxuXG4vKipcbiAqIEF1Z21lbnQgYSB0YXJnZXQgT2JqZWN0IG9yIEFycmF5IGJ5IGRlZmluaW5nXG4gKiBoaWRkZW4gcHJvcGVydGllcy5cbiAqL1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIGNvcHlBdWdtZW50ICh0YXJnZXQsIHNyYywga2V5cykge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgZGVmKHRhcmdldCwga2V5LCBzcmNba2V5XSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYnNlcnZlciBpbnN0YW5jZSBmb3IgYSB2YWx1ZSxcbiAqIHJldHVybnMgdGhlIG5ldyBvYnNlcnZlciBpZiBzdWNjZXNzZnVsbHkgb2JzZXJ2ZWQsXG4gKiBvciB0aGUgZXhpc3Rpbmcgb2JzZXJ2ZXIgaWYgdGhlIHZhbHVlIGFscmVhZHkgaGFzIG9uZS5cbiAqL1xuZnVuY3Rpb24gb2JzZXJ2ZSAodmFsdWUsIGFzUm9vdERhdGEpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBWTm9kZSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBvYjtcbiAgaWYgKGhhc093bih2YWx1ZSwgJ19fb2JfXycpICYmIHZhbHVlLl9fb2JfXyBpbnN0YW5jZW9mIE9ic2VydmVyKSB7XG4gICAgb2IgPSB2YWx1ZS5fX29iX187XG4gIH0gZWxzZSBpZiAoXG4gICAgc2hvdWxkT2JzZXJ2ZSAmJlxuICAgICFpc1NlcnZlclJlbmRlcmluZygpICYmXG4gICAgKEFycmF5LmlzQXJyYXkodmFsdWUpIHx8IGlzUGxhaW5PYmplY3QodmFsdWUpKSAmJlxuICAgIE9iamVjdC5pc0V4dGVuc2libGUodmFsdWUpICYmXG4gICAgIXZhbHVlLl9pc1Z1ZVxuICApIHtcbiAgICBvYiA9IG5ldyBPYnNlcnZlcih2YWx1ZSk7XG4gIH1cbiAgaWYgKGFzUm9vdERhdGEgJiYgb2IpIHtcbiAgICBvYi52bUNvdW50Kys7XG4gIH1cbiAgcmV0dXJuIG9iXG59XG5cbi8qKlxuICogRGVmaW5lIGEgcmVhY3RpdmUgcHJvcGVydHkgb24gYW4gT2JqZWN0LlxuICovXG5mdW5jdGlvbiBkZWZpbmVSZWFjdGl2ZSQkMSAoXG4gIG9iaixcbiAga2V5LFxuICB2YWwsXG4gIGN1c3RvbVNldHRlcixcbiAgc2hhbGxvd1xuKSB7XG4gIHZhciBkZXAgPSBuZXcgRGVwKCk7XG5cbiAgdmFyIHByb3BlcnR5ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSk7XG4gIGlmIChwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5jb25maWd1cmFibGUgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBjYXRlciBmb3IgcHJlLWRlZmluZWQgZ2V0dGVyL3NldHRlcnNcbiAgdmFyIGdldHRlciA9IHByb3BlcnR5ICYmIHByb3BlcnR5LmdldDtcbiAgdmFyIHNldHRlciA9IHByb3BlcnR5ICYmIHByb3BlcnR5LnNldDtcbiAgaWYgKCghZ2V0dGVyIHx8IHNldHRlcikgJiYgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgIHZhbCA9IG9ialtrZXldO1xuICB9XG5cbiAgdmFyIGNoaWxkT2IgPSAhc2hhbGxvdyAmJiBvYnNlcnZlKHZhbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gcmVhY3RpdmVHZXR0ZXIgKCkge1xuICAgICAgdmFyIHZhbHVlID0gZ2V0dGVyID8gZ2V0dGVyLmNhbGwob2JqKSA6IHZhbDtcbiAgICAgIGlmIChEZXAudGFyZ2V0KSB7XG4gICAgICAgIGRlcC5kZXBlbmQoKTtcbiAgICAgICAgaWYgKGNoaWxkT2IpIHtcbiAgICAgICAgICBjaGlsZE9iLmRlcC5kZXBlbmQoKTtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGRlcGVuZEFycmF5KHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiByZWFjdGl2ZVNldHRlciAobmV3VmFsKSB7XG4gICAgICB2YXIgdmFsdWUgPSBnZXR0ZXIgPyBnZXR0ZXIuY2FsbChvYmopIDogdmFsO1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlICovXG4gICAgICBpZiAobmV3VmFsID09PSB2YWx1ZSB8fCAobmV3VmFsICE9PSBuZXdWYWwgJiYgdmFsdWUgIT09IHZhbHVlKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tc2VsZi1jb21wYXJlICovXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjdXN0b21TZXR0ZXIpIHtcbiAgICAgICAgY3VzdG9tU2V0dGVyKCk7XG4gICAgICB9XG4gICAgICAvLyAjNzk4MTogZm9yIGFjY2Vzc29yIHByb3BlcnRpZXMgd2l0aG91dCBzZXR0ZXJcbiAgICAgIGlmIChnZXR0ZXIgJiYgIXNldHRlcikgeyByZXR1cm4gfVxuICAgICAgaWYgKHNldHRlcikge1xuICAgICAgICBzZXR0ZXIuY2FsbChvYmosIG5ld1ZhbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWwgPSBuZXdWYWw7XG4gICAgICB9XG4gICAgICBjaGlsZE9iID0gIXNoYWxsb3cgJiYgb2JzZXJ2ZShuZXdWYWwpO1xuICAgICAgZGVwLm5vdGlmeSgpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogU2V0IGEgcHJvcGVydHkgb24gYW4gb2JqZWN0LiBBZGRzIHRoZSBuZXcgcHJvcGVydHkgYW5kXG4gKiB0cmlnZ2VycyBjaGFuZ2Ugbm90aWZpY2F0aW9uIGlmIHRoZSBwcm9wZXJ0eSBkb2Vzbid0XG4gKiBhbHJlYWR5IGV4aXN0LlxuICovXG5mdW5jdGlvbiBzZXQgKHRhcmdldCwga2V5LCB2YWwpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAoaXNVbmRlZih0YXJnZXQpIHx8IGlzUHJpbWl0aXZlKHRhcmdldCkpXG4gICkge1xuICAgIHdhcm4oKFwiQ2Fubm90IHNldCByZWFjdGl2ZSBwcm9wZXJ0eSBvbiB1bmRlZmluZWQsIG51bGwsIG9yIHByaW1pdGl2ZSB2YWx1ZTogXCIgKyAoKHRhcmdldCkpKSk7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSAmJiBpc1ZhbGlkQXJyYXlJbmRleChrZXkpKSB7XG4gICAgdGFyZ2V0Lmxlbmd0aCA9IE1hdGgubWF4KHRhcmdldC5sZW5ndGgsIGtleSk7XG4gICAgdGFyZ2V0LnNwbGljZShrZXksIDEsIHZhbCk7XG4gICAgcmV0dXJuIHZhbFxuICB9XG4gIGlmIChrZXkgaW4gdGFyZ2V0ICYmICEoa2V5IGluIE9iamVjdC5wcm90b3R5cGUpKSB7XG4gICAgdGFyZ2V0W2tleV0gPSB2YWw7XG4gICAgcmV0dXJuIHZhbFxuICB9XG4gIHZhciBvYiA9ICh0YXJnZXQpLl9fb2JfXztcbiAgaWYgKHRhcmdldC5faXNWdWUgfHwgKG9iICYmIG9iLnZtQ291bnQpKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgJ0F2b2lkIGFkZGluZyByZWFjdGl2ZSBwcm9wZXJ0aWVzIHRvIGEgVnVlIGluc3RhbmNlIG9yIGl0cyByb290ICRkYXRhICcgK1xuICAgICAgJ2F0IHJ1bnRpbWUgLSBkZWNsYXJlIGl0IHVwZnJvbnQgaW4gdGhlIGRhdGEgb3B0aW9uLidcbiAgICApO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICBpZiAoIW9iKSB7XG4gICAgdGFyZ2V0W2tleV0gPSB2YWw7XG4gICAgcmV0dXJuIHZhbFxuICB9XG4gIGRlZmluZVJlYWN0aXZlJCQxKG9iLnZhbHVlLCBrZXksIHZhbCk7XG4gIG9iLmRlcC5ub3RpZnkoKTtcbiAgcmV0dXJuIHZhbFxufVxuXG4vKipcbiAqIERlbGV0ZSBhIHByb3BlcnR5IGFuZCB0cmlnZ2VyIGNoYW5nZSBpZiBuZWNlc3NhcnkuXG4gKi9cbmZ1bmN0aW9uIGRlbCAodGFyZ2V0LCBrZXkpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAoaXNVbmRlZih0YXJnZXQpIHx8IGlzUHJpbWl0aXZlKHRhcmdldCkpXG4gICkge1xuICAgIHdhcm4oKFwiQ2Fubm90IGRlbGV0ZSByZWFjdGl2ZSBwcm9wZXJ0eSBvbiB1bmRlZmluZWQsIG51bGwsIG9yIHByaW1pdGl2ZSB2YWx1ZTogXCIgKyAoKHRhcmdldCkpKSk7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSAmJiBpc1ZhbGlkQXJyYXlJbmRleChrZXkpKSB7XG4gICAgdGFyZ2V0LnNwbGljZShrZXksIDEpO1xuICAgIHJldHVyblxuICB9XG4gIHZhciBvYiA9ICh0YXJnZXQpLl9fb2JfXztcbiAgaWYgKHRhcmdldC5faXNWdWUgfHwgKG9iICYmIG9iLnZtQ291bnQpKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgJ0F2b2lkIGRlbGV0aW5nIHByb3BlcnRpZXMgb24gYSBWdWUgaW5zdGFuY2Ugb3IgaXRzIHJvb3QgJGRhdGEgJyArXG4gICAgICAnLSBqdXN0IHNldCBpdCB0byBudWxsLidcbiAgICApO1xuICAgIHJldHVyblxuICB9XG4gIGlmICghaGFzT3duKHRhcmdldCwga2V5KSkge1xuICAgIHJldHVyblxuICB9XG4gIGRlbGV0ZSB0YXJnZXRba2V5XTtcbiAgaWYgKCFvYikge1xuICAgIHJldHVyblxuICB9XG4gIG9iLmRlcC5ub3RpZnkoKTtcbn1cblxuLyoqXG4gKiBDb2xsZWN0IGRlcGVuZGVuY2llcyBvbiBhcnJheSBlbGVtZW50cyB3aGVuIHRoZSBhcnJheSBpcyB0b3VjaGVkLCBzaW5jZVxuICogd2UgY2Fubm90IGludGVyY2VwdCBhcnJheSBlbGVtZW50IGFjY2VzcyBsaWtlIHByb3BlcnR5IGdldHRlcnMuXG4gKi9cbmZ1bmN0aW9uIGRlcGVuZEFycmF5ICh2YWx1ZSkge1xuICBmb3IgKHZhciBlID0gKHZvaWQgMCksIGkgPSAwLCBsID0gdmFsdWUubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZSA9IHZhbHVlW2ldO1xuICAgIGUgJiYgZS5fX29iX18gJiYgZS5fX29iX18uZGVwLmRlcGVuZCgpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSB7XG4gICAgICBkZXBlbmRBcnJheShlKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogT3B0aW9uIG92ZXJ3cml0aW5nIHN0cmF0ZWdpZXMgYXJlIGZ1bmN0aW9ucyB0aGF0IGhhbmRsZVxuICogaG93IHRvIG1lcmdlIGEgcGFyZW50IG9wdGlvbiB2YWx1ZSBhbmQgYSBjaGlsZCBvcHRpb25cbiAqIHZhbHVlIGludG8gdGhlIGZpbmFsIHZhbHVlLlxuICovXG52YXIgc3RyYXRzID0gY29uZmlnLm9wdGlvbk1lcmdlU3RyYXRlZ2llcztcblxuLyoqXG4gKiBPcHRpb25zIHdpdGggcmVzdHJpY3Rpb25zXG4gKi9cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHN0cmF0cy5lbCA9IHN0cmF0cy5wcm9wc0RhdGEgPSBmdW5jdGlvbiAocGFyZW50LCBjaGlsZCwgdm0sIGtleSkge1xuICAgIGlmICghdm0pIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIFwib3B0aW9uIFxcXCJcIiArIGtleSArIFwiXFxcIiBjYW4gb25seSBiZSB1c2VkIGR1cmluZyBpbnN0YW5jZSBcIiArXG4gICAgICAgICdjcmVhdGlvbiB3aXRoIHRoZSBgbmV3YCBrZXl3b3JkLidcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBkZWZhdWx0U3RyYXQocGFyZW50LCBjaGlsZClcbiAgfTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgdGhhdCByZWN1cnNpdmVseSBtZXJnZXMgdHdvIGRhdGEgb2JqZWN0cyB0b2dldGhlci5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VEYXRhICh0bywgZnJvbSkge1xuICBpZiAoIWZyb20pIHsgcmV0dXJuIHRvIH1cbiAgdmFyIGtleSwgdG9WYWwsIGZyb21WYWw7XG5cbiAgdmFyIGtleXMgPSBoYXNTeW1ib2xcbiAgICA/IFJlZmxlY3Qub3duS2V5cyhmcm9tKVxuICAgIDogT2JqZWN0LmtleXMoZnJvbSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAga2V5ID0ga2V5c1tpXTtcbiAgICAvLyBpbiBjYXNlIHRoZSBvYmplY3QgaXMgYWxyZWFkeSBvYnNlcnZlZC4uLlxuICAgIGlmIChrZXkgPT09ICdfX29iX18nKSB7IGNvbnRpbnVlIH1cbiAgICB0b1ZhbCA9IHRvW2tleV07XG4gICAgZnJvbVZhbCA9IGZyb21ba2V5XTtcbiAgICBpZiAoIWhhc093bih0bywga2V5KSkge1xuICAgICAgc2V0KHRvLCBrZXksIGZyb21WYWwpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0b1ZhbCAhPT0gZnJvbVZhbCAmJlxuICAgICAgaXNQbGFpbk9iamVjdCh0b1ZhbCkgJiZcbiAgICAgIGlzUGxhaW5PYmplY3QoZnJvbVZhbClcbiAgICApIHtcbiAgICAgIG1lcmdlRGF0YSh0b1ZhbCwgZnJvbVZhbCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0b1xufVxuXG4vKipcbiAqIERhdGFcbiAqL1xuZnVuY3Rpb24gbWVyZ2VEYXRhT3JGbiAoXG4gIHBhcmVudFZhbCxcbiAgY2hpbGRWYWwsXG4gIHZtXG4pIHtcbiAgaWYgKCF2bSkge1xuICAgIC8vIGluIGEgVnVlLmV4dGVuZCBtZXJnZSwgYm90aCBzaG91bGQgYmUgZnVuY3Rpb25zXG4gICAgaWYgKCFjaGlsZFZhbCkge1xuICAgICAgcmV0dXJuIHBhcmVudFZhbFxuICAgIH1cbiAgICBpZiAoIXBhcmVudFZhbCkge1xuICAgICAgcmV0dXJuIGNoaWxkVmFsXG4gICAgfVxuICAgIC8vIHdoZW4gcGFyZW50VmFsICYgY2hpbGRWYWwgYXJlIGJvdGggcHJlc2VudCxcbiAgICAvLyB3ZSBuZWVkIHRvIHJldHVybiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGVcbiAgICAvLyBtZXJnZWQgcmVzdWx0IG9mIGJvdGggZnVuY3Rpb25zLi4uIG5vIG5lZWQgdG9cbiAgICAvLyBjaGVjayBpZiBwYXJlbnRWYWwgaXMgYSBmdW5jdGlvbiBoZXJlIGJlY2F1c2VcbiAgICAvLyBpdCBoYXMgdG8gYmUgYSBmdW5jdGlvbiB0byBwYXNzIHByZXZpb3VzIG1lcmdlcy5cbiAgICByZXR1cm4gZnVuY3Rpb24gbWVyZ2VkRGF0YUZuICgpIHtcbiAgICAgIHJldHVybiBtZXJnZURhdGEoXG4gICAgICAgIHR5cGVvZiBjaGlsZFZhbCA9PT0gJ2Z1bmN0aW9uJyA/IGNoaWxkVmFsLmNhbGwodGhpcywgdGhpcykgOiBjaGlsZFZhbCxcbiAgICAgICAgdHlwZW9mIHBhcmVudFZhbCA9PT0gJ2Z1bmN0aW9uJyA/IHBhcmVudFZhbC5jYWxsKHRoaXMsIHRoaXMpIDogcGFyZW50VmFsXG4gICAgICApXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZWRJbnN0YW5jZURhdGFGbiAoKSB7XG4gICAgICAvLyBpbnN0YW5jZSBtZXJnZVxuICAgICAgdmFyIGluc3RhbmNlRGF0YSA9IHR5cGVvZiBjaGlsZFZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IGNoaWxkVmFsLmNhbGwodm0sIHZtKVxuICAgICAgICA6IGNoaWxkVmFsO1xuICAgICAgdmFyIGRlZmF1bHREYXRhID0gdHlwZW9mIHBhcmVudFZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IHBhcmVudFZhbC5jYWxsKHZtLCB2bSlcbiAgICAgICAgOiBwYXJlbnRWYWw7XG4gICAgICBpZiAoaW5zdGFuY2VEYXRhKSB7XG4gICAgICAgIHJldHVybiBtZXJnZURhdGEoaW5zdGFuY2VEYXRhLCBkZWZhdWx0RGF0YSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0RGF0YVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5zdHJhdHMuZGF0YSA9IGZ1bmN0aW9uIChcbiAgcGFyZW50VmFsLFxuICBjaGlsZFZhbCxcbiAgdm1cbikge1xuICBpZiAoIXZtKSB7XG4gICAgaWYgKGNoaWxkVmFsICYmIHR5cGVvZiBjaGlsZFZhbCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAnVGhlIFwiZGF0YVwiIG9wdGlvbiBzaG91bGQgYmUgYSBmdW5jdGlvbiAnICtcbiAgICAgICAgJ3RoYXQgcmV0dXJucyBhIHBlci1pbnN0YW5jZSB2YWx1ZSBpbiBjb21wb25lbnQgJyArXG4gICAgICAgICdkZWZpbml0aW9ucy4nLFxuICAgICAgICB2bVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHBhcmVudFZhbFxuICAgIH1cbiAgICByZXR1cm4gbWVyZ2VEYXRhT3JGbihwYXJlbnRWYWwsIGNoaWxkVmFsKVxuICB9XG5cbiAgcmV0dXJuIG1lcmdlRGF0YU9yRm4ocGFyZW50VmFsLCBjaGlsZFZhbCwgdm0pXG59O1xuXG4vKipcbiAqIEhvb2tzIGFuZCBwcm9wcyBhcmUgbWVyZ2VkIGFzIGFycmF5cy5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VIb29rIChcbiAgcGFyZW50VmFsLFxuICBjaGlsZFZhbFxuKSB7XG4gIHZhciByZXMgPSBjaGlsZFZhbFxuICAgID8gcGFyZW50VmFsXG4gICAgICA/IHBhcmVudFZhbC5jb25jYXQoY2hpbGRWYWwpXG4gICAgICA6IEFycmF5LmlzQXJyYXkoY2hpbGRWYWwpXG4gICAgICAgID8gY2hpbGRWYWxcbiAgICAgICAgOiBbY2hpbGRWYWxdXG4gICAgOiBwYXJlbnRWYWw7XG4gIHJldHVybiByZXNcbiAgICA/IGRlZHVwZUhvb2tzKHJlcylcbiAgICA6IHJlc1xufVxuXG5mdW5jdGlvbiBkZWR1cGVIb29rcyAoaG9va3MpIHtcbiAgdmFyIHJlcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGhvb2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHJlcy5pbmRleE9mKGhvb2tzW2ldKSA9PT0gLTEpIHtcbiAgICAgIHJlcy5wdXNoKGhvb2tzW2ldKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5MSUZFQ1lDTEVfSE9PS1MuZm9yRWFjaChmdW5jdGlvbiAoaG9vaykge1xuICBzdHJhdHNbaG9va10gPSBtZXJnZUhvb2s7XG59KTtcblxuLyoqXG4gKiBBc3NldHNcbiAqXG4gKiBXaGVuIGEgdm0gaXMgcHJlc2VudCAoaW5zdGFuY2UgY3JlYXRpb24pLCB3ZSBuZWVkIHRvIGRvXG4gKiBhIHRocmVlLXdheSBtZXJnZSBiZXR3ZWVuIGNvbnN0cnVjdG9yIG9wdGlvbnMsIGluc3RhbmNlXG4gKiBvcHRpb25zIGFuZCBwYXJlbnQgb3B0aW9ucy5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VBc3NldHMgKFxuICBwYXJlbnRWYWwsXG4gIGNoaWxkVmFsLFxuICB2bSxcbiAga2V5XG4pIHtcbiAgdmFyIHJlcyA9IE9iamVjdC5jcmVhdGUocGFyZW50VmFsIHx8IG51bGwpO1xuICBpZiAoY2hpbGRWYWwpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGFzc2VydE9iamVjdFR5cGUoa2V5LCBjaGlsZFZhbCwgdm0pO1xuICAgIHJldHVybiBleHRlbmQocmVzLCBjaGlsZFZhbClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVzXG4gIH1cbn1cblxuQVNTRVRfVFlQRVMuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xuICBzdHJhdHNbdHlwZSArICdzJ10gPSBtZXJnZUFzc2V0cztcbn0pO1xuXG4vKipcbiAqIFdhdGNoZXJzLlxuICpcbiAqIFdhdGNoZXJzIGhhc2hlcyBzaG91bGQgbm90IG92ZXJ3cml0ZSBvbmVcbiAqIGFub3RoZXIsIHNvIHdlIG1lcmdlIHRoZW0gYXMgYXJyYXlzLlxuICovXG5zdHJhdHMud2F0Y2ggPSBmdW5jdGlvbiAoXG4gIHBhcmVudFZhbCxcbiAgY2hpbGRWYWwsXG4gIHZtLFxuICBrZXlcbikge1xuICAvLyB3b3JrIGFyb3VuZCBGaXJlZm94J3MgT2JqZWN0LnByb3RvdHlwZS53YXRjaC4uLlxuICBpZiAocGFyZW50VmFsID09PSBuYXRpdmVXYXRjaCkgeyBwYXJlbnRWYWwgPSB1bmRlZmluZWQ7IH1cbiAgaWYgKGNoaWxkVmFsID09PSBuYXRpdmVXYXRjaCkgeyBjaGlsZFZhbCA9IHVuZGVmaW5lZDsgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKCFjaGlsZFZhbCkgeyByZXR1cm4gT2JqZWN0LmNyZWF0ZShwYXJlbnRWYWwgfHwgbnVsbCkgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGFzc2VydE9iamVjdFR5cGUoa2V5LCBjaGlsZFZhbCwgdm0pO1xuICB9XG4gIGlmICghcGFyZW50VmFsKSB7IHJldHVybiBjaGlsZFZhbCB9XG4gIHZhciByZXQgPSB7fTtcbiAgZXh0ZW5kKHJldCwgcGFyZW50VmFsKTtcbiAgZm9yICh2YXIga2V5JDEgaW4gY2hpbGRWYWwpIHtcbiAgICB2YXIgcGFyZW50ID0gcmV0W2tleSQxXTtcbiAgICB2YXIgY2hpbGQgPSBjaGlsZFZhbFtrZXkkMV07XG4gICAgaWYgKHBhcmVudCAmJiAhQXJyYXkuaXNBcnJheShwYXJlbnQpKSB7XG4gICAgICBwYXJlbnQgPSBbcGFyZW50XTtcbiAgICB9XG4gICAgcmV0W2tleSQxXSA9IHBhcmVudFxuICAgICAgPyBwYXJlbnQuY29uY2F0KGNoaWxkKVxuICAgICAgOiBBcnJheS5pc0FycmF5KGNoaWxkKSA/IGNoaWxkIDogW2NoaWxkXTtcbiAgfVxuICByZXR1cm4gcmV0XG59O1xuXG4vKipcbiAqIE90aGVyIG9iamVjdCBoYXNoZXMuXG4gKi9cbnN0cmF0cy5wcm9wcyA9XG5zdHJhdHMubWV0aG9kcyA9XG5zdHJhdHMuaW5qZWN0ID1cbnN0cmF0cy5jb21wdXRlZCA9IGZ1bmN0aW9uIChcbiAgcGFyZW50VmFsLFxuICBjaGlsZFZhbCxcbiAgdm0sXG4gIGtleVxuKSB7XG4gIGlmIChjaGlsZFZhbCAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgYXNzZXJ0T2JqZWN0VHlwZShrZXksIGNoaWxkVmFsLCB2bSk7XG4gIH1cbiAgaWYgKCFwYXJlbnRWYWwpIHsgcmV0dXJuIGNoaWxkVmFsIH1cbiAgdmFyIHJldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGV4dGVuZChyZXQsIHBhcmVudFZhbCk7XG4gIGlmIChjaGlsZFZhbCkgeyBleHRlbmQocmV0LCBjaGlsZFZhbCk7IH1cbiAgcmV0dXJuIHJldFxufTtcbnN0cmF0cy5wcm92aWRlID0gbWVyZ2VEYXRhT3JGbjtcblxuLyoqXG4gKiBEZWZhdWx0IHN0cmF0ZWd5LlxuICovXG52YXIgZGVmYXVsdFN0cmF0ID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgcmV0dXJuIGNoaWxkVmFsID09PSB1bmRlZmluZWRcbiAgICA/IHBhcmVudFZhbFxuICAgIDogY2hpbGRWYWxcbn07XG5cbi8qKlxuICogVmFsaWRhdGUgY29tcG9uZW50IG5hbWVzXG4gKi9cbmZ1bmN0aW9uIGNoZWNrQ29tcG9uZW50cyAob3B0aW9ucykge1xuICBmb3IgKHZhciBrZXkgaW4gb3B0aW9ucy5jb21wb25lbnRzKSB7XG4gICAgdmFsaWRhdGVDb21wb25lbnROYW1lKGtleSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVDb21wb25lbnROYW1lIChuYW1lKSB7XG4gIGlmICghbmV3IFJlZ0V4cCgoXCJeW2EtekEtWl1bXFxcXC1cXFxcLjAtOV9cIiArICh1bmljb2RlUmVnRXhwLnNvdXJjZSkgKyBcIl0qJFwiKSkudGVzdChuYW1lKSkge1xuICAgIHdhcm4oXG4gICAgICAnSW52YWxpZCBjb21wb25lbnQgbmFtZTogXCInICsgbmFtZSArICdcIi4gQ29tcG9uZW50IG5hbWVzICcgK1xuICAgICAgJ3Nob3VsZCBjb25mb3JtIHRvIHZhbGlkIGN1c3RvbSBlbGVtZW50IG5hbWUgaW4gaHRtbDUgc3BlY2lmaWNhdGlvbi4nXG4gICAgKTtcbiAgfVxuICBpZiAoaXNCdWlsdEluVGFnKG5hbWUpIHx8IGNvbmZpZy5pc1Jlc2VydmVkVGFnKG5hbWUpKSB7XG4gICAgd2FybihcbiAgICAgICdEbyBub3QgdXNlIGJ1aWx0LWluIG9yIHJlc2VydmVkIEhUTUwgZWxlbWVudHMgYXMgY29tcG9uZW50ICcgK1xuICAgICAgJ2lkOiAnICsgbmFtZVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBFbnN1cmUgYWxsIHByb3BzIG9wdGlvbiBzeW50YXggYXJlIG5vcm1hbGl6ZWQgaW50byB0aGVcbiAqIE9iamVjdC1iYXNlZCBmb3JtYXQuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVByb3BzIChvcHRpb25zLCB2bSkge1xuICB2YXIgcHJvcHMgPSBvcHRpb25zLnByb3BzO1xuICBpZiAoIXByb3BzKSB7IHJldHVybiB9XG4gIHZhciByZXMgPSB7fTtcbiAgdmFyIGksIHZhbCwgbmFtZTtcbiAgaWYgKEFycmF5LmlzQXJyYXkocHJvcHMpKSB7XG4gICAgaSA9IHByb3BzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB2YWwgPSBwcm9wc1tpXTtcbiAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgICAgICBuYW1lID0gY2FtZWxpemUodmFsKTtcbiAgICAgICAgcmVzW25hbWVdID0geyB0eXBlOiBudWxsIH07XG4gICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgd2FybigncHJvcHMgbXVzdCBiZSBzdHJpbmdzIHdoZW4gdXNpbmcgYXJyYXkgc3ludGF4LicpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHByb3BzKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wcykge1xuICAgICAgdmFsID0gcHJvcHNba2V5XTtcbiAgICAgIG5hbWUgPSBjYW1lbGl6ZShrZXkpO1xuICAgICAgcmVzW25hbWVdID0gaXNQbGFpbk9iamVjdCh2YWwpXG4gICAgICAgID8gdmFsXG4gICAgICAgIDogeyB0eXBlOiB2YWwgfTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4oXG4gICAgICBcIkludmFsaWQgdmFsdWUgZm9yIG9wdGlvbiBcXFwicHJvcHNcXFwiOiBleHBlY3RlZCBhbiBBcnJheSBvciBhbiBPYmplY3QsIFwiICtcbiAgICAgIFwiYnV0IGdvdCBcIiArICh0b1Jhd1R5cGUocHJvcHMpKSArIFwiLlwiLFxuICAgICAgdm1cbiAgICApO1xuICB9XG4gIG9wdGlvbnMucHJvcHMgPSByZXM7XG59XG5cbi8qKlxuICogTm9ybWFsaXplIGFsbCBpbmplY3Rpb25zIGludG8gT2JqZWN0LWJhc2VkIGZvcm1hdFxuICovXG5mdW5jdGlvbiBub3JtYWxpemVJbmplY3QgKG9wdGlvbnMsIHZtKSB7XG4gIHZhciBpbmplY3QgPSBvcHRpb25zLmluamVjdDtcbiAgaWYgKCFpbmplY3QpIHsgcmV0dXJuIH1cbiAgdmFyIG5vcm1hbGl6ZWQgPSBvcHRpb25zLmluamVjdCA9IHt9O1xuICBpZiAoQXJyYXkuaXNBcnJheShpbmplY3QpKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbmplY3QubGVuZ3RoOyBpKyspIHtcbiAgICAgIG5vcm1hbGl6ZWRbaW5qZWN0W2ldXSA9IHsgZnJvbTogaW5qZWN0W2ldIH07XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QoaW5qZWN0KSkge1xuICAgIGZvciAodmFyIGtleSBpbiBpbmplY3QpIHtcbiAgICAgIHZhciB2YWwgPSBpbmplY3Rba2V5XTtcbiAgICAgIG5vcm1hbGl6ZWRba2V5XSA9IGlzUGxhaW5PYmplY3QodmFsKVxuICAgICAgICA/IGV4dGVuZCh7IGZyb206IGtleSB9LCB2YWwpXG4gICAgICAgIDogeyBmcm9tOiB2YWwgfTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4oXG4gICAgICBcIkludmFsaWQgdmFsdWUgZm9yIG9wdGlvbiBcXFwiaW5qZWN0XFxcIjogZXhwZWN0ZWQgYW4gQXJyYXkgb3IgYW4gT2JqZWN0LCBcIiArXG4gICAgICBcImJ1dCBnb3QgXCIgKyAodG9SYXdUeXBlKGluamVjdCkpICsgXCIuXCIsXG4gICAgICB2bVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgcmF3IGZ1bmN0aW9uIGRpcmVjdGl2ZXMgaW50byBvYmplY3QgZm9ybWF0LlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVEaXJlY3RpdmVzIChvcHRpb25zKSB7XG4gIHZhciBkaXJzID0gb3B0aW9ucy5kaXJlY3RpdmVzO1xuICBpZiAoZGlycykge1xuICAgIGZvciAodmFyIGtleSBpbiBkaXJzKSB7XG4gICAgICB2YXIgZGVmJCQxID0gZGlyc1trZXldO1xuICAgICAgaWYgKHR5cGVvZiBkZWYkJDEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgZGlyc1trZXldID0geyBiaW5kOiBkZWYkJDEsIHVwZGF0ZTogZGVmJCQxIH07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydE9iamVjdFR5cGUgKG5hbWUsIHZhbHVlLCB2bSkge1xuICBpZiAoIWlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgd2FybihcbiAgICAgIFwiSW52YWxpZCB2YWx1ZSBmb3Igb3B0aW9uIFxcXCJcIiArIG5hbWUgKyBcIlxcXCI6IGV4cGVjdGVkIGFuIE9iamVjdCwgXCIgK1xuICAgICAgXCJidXQgZ290IFwiICsgKHRvUmF3VHlwZSh2YWx1ZSkpICsgXCIuXCIsXG4gICAgICB2bVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBNZXJnZSB0d28gb3B0aW9uIG9iamVjdHMgaW50byBhIG5ldyBvbmUuXG4gKiBDb3JlIHV0aWxpdHkgdXNlZCBpbiBib3RoIGluc3RhbnRpYXRpb24gYW5kIGluaGVyaXRhbmNlLlxuICovXG5mdW5jdGlvbiBtZXJnZU9wdGlvbnMgKFxuICBwYXJlbnQsXG4gIGNoaWxkLFxuICB2bVxuKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY2hlY2tDb21wb25lbnRzKGNoaWxkKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgY2hpbGQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjaGlsZCA9IGNoaWxkLm9wdGlvbnM7XG4gIH1cblxuICBub3JtYWxpemVQcm9wcyhjaGlsZCwgdm0pO1xuICBub3JtYWxpemVJbmplY3QoY2hpbGQsIHZtKTtcbiAgbm9ybWFsaXplRGlyZWN0aXZlcyhjaGlsZCk7XG5cbiAgLy8gQXBwbHkgZXh0ZW5kcyBhbmQgbWl4aW5zIG9uIHRoZSBjaGlsZCBvcHRpb25zLFxuICAvLyBidXQgb25seSBpZiBpdCBpcyBhIHJhdyBvcHRpb25zIG9iamVjdCB0aGF0IGlzbid0XG4gIC8vIHRoZSByZXN1bHQgb2YgYW5vdGhlciBtZXJnZU9wdGlvbnMgY2FsbC5cbiAgLy8gT25seSBtZXJnZWQgb3B0aW9ucyBoYXMgdGhlIF9iYXNlIHByb3BlcnR5LlxuICBpZiAoIWNoaWxkLl9iYXNlKSB7XG4gICAgaWYgKGNoaWxkLmV4dGVuZHMpIHtcbiAgICAgIHBhcmVudCA9IG1lcmdlT3B0aW9ucyhwYXJlbnQsIGNoaWxkLmV4dGVuZHMsIHZtKTtcbiAgICB9XG4gICAgaWYgKGNoaWxkLm1peGlucykge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjaGlsZC5taXhpbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHBhcmVudCA9IG1lcmdlT3B0aW9ucyhwYXJlbnQsIGNoaWxkLm1peGluc1tpXSwgdm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBvcHRpb25zID0ge307XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIHBhcmVudCkge1xuICAgIG1lcmdlRmllbGQoa2V5KTtcbiAgfVxuICBmb3IgKGtleSBpbiBjaGlsZCkge1xuICAgIGlmICghaGFzT3duKHBhcmVudCwga2V5KSkge1xuICAgICAgbWVyZ2VGaWVsZChrZXkpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBtZXJnZUZpZWxkIChrZXkpIHtcbiAgICB2YXIgc3RyYXQgPSBzdHJhdHNba2V5XSB8fCBkZWZhdWx0U3RyYXQ7XG4gICAgb3B0aW9uc1trZXldID0gc3RyYXQocGFyZW50W2tleV0sIGNoaWxkW2tleV0sIHZtLCBrZXkpO1xuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbi8qKlxuICogUmVzb2x2ZSBhbiBhc3NldC5cbiAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBiZWNhdXNlIGNoaWxkIGluc3RhbmNlcyBuZWVkIGFjY2Vzc1xuICogdG8gYXNzZXRzIGRlZmluZWQgaW4gaXRzIGFuY2VzdG9yIGNoYWluLlxuICovXG5mdW5jdGlvbiByZXNvbHZlQXNzZXQgKFxuICBvcHRpb25zLFxuICB0eXBlLFxuICBpZCxcbiAgd2Fybk1pc3Npbmdcbikge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHR5cGVvZiBpZCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgYXNzZXRzID0gb3B0aW9uc1t0eXBlXTtcbiAgLy8gY2hlY2sgbG9jYWwgcmVnaXN0cmF0aW9uIHZhcmlhdGlvbnMgZmlyc3RcbiAgaWYgKGhhc093bihhc3NldHMsIGlkKSkgeyByZXR1cm4gYXNzZXRzW2lkXSB9XG4gIHZhciBjYW1lbGl6ZWRJZCA9IGNhbWVsaXplKGlkKTtcbiAgaWYgKGhhc093bihhc3NldHMsIGNhbWVsaXplZElkKSkgeyByZXR1cm4gYXNzZXRzW2NhbWVsaXplZElkXSB9XG4gIHZhciBQYXNjYWxDYXNlSWQgPSBjYXBpdGFsaXplKGNhbWVsaXplZElkKTtcbiAgaWYgKGhhc093bihhc3NldHMsIFBhc2NhbENhc2VJZCkpIHsgcmV0dXJuIGFzc2V0c1tQYXNjYWxDYXNlSWRdIH1cbiAgLy8gZmFsbGJhY2sgdG8gcHJvdG90eXBlIGNoYWluXG4gIHZhciByZXMgPSBhc3NldHNbaWRdIHx8IGFzc2V0c1tjYW1lbGl6ZWRJZF0gfHwgYXNzZXRzW1Bhc2NhbENhc2VJZF07XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm5NaXNzaW5nICYmICFyZXMpIHtcbiAgICB3YXJuKFxuICAgICAgJ0ZhaWxlZCB0byByZXNvbHZlICcgKyB0eXBlLnNsaWNlKDAsIC0xKSArICc6ICcgKyBpZCxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cblxuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3AgKFxuICBrZXksXG4gIHByb3BPcHRpb25zLFxuICBwcm9wc0RhdGEsXG4gIHZtXG4pIHtcbiAgdmFyIHByb3AgPSBwcm9wT3B0aW9uc1trZXldO1xuICB2YXIgYWJzZW50ID0gIWhhc093bihwcm9wc0RhdGEsIGtleSk7XG4gIHZhciB2YWx1ZSA9IHByb3BzRGF0YVtrZXldO1xuICAvLyBib29sZWFuIGNhc3RpbmdcbiAgdmFyIGJvb2xlYW5JbmRleCA9IGdldFR5cGVJbmRleChCb29sZWFuLCBwcm9wLnR5cGUpO1xuICBpZiAoYm9vbGVhbkluZGV4ID4gLTEpIHtcbiAgICBpZiAoYWJzZW50ICYmICFoYXNPd24ocHJvcCwgJ2RlZmF1bHQnKSkge1xuICAgICAgdmFsdWUgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gaHlwaGVuYXRlKGtleSkpIHtcbiAgICAgIC8vIG9ubHkgY2FzdCBlbXB0eSBzdHJpbmcgLyBzYW1lIG5hbWUgdG8gYm9vbGVhbiBpZlxuICAgICAgLy8gYm9vbGVhbiBoYXMgaGlnaGVyIHByaW9yaXR5XG4gICAgICB2YXIgc3RyaW5nSW5kZXggPSBnZXRUeXBlSW5kZXgoU3RyaW5nLCBwcm9wLnR5cGUpO1xuICAgICAgaWYgKHN0cmluZ0luZGV4IDwgMCB8fCBib29sZWFuSW5kZXggPCBzdHJpbmdJbmRleCkge1xuICAgICAgICB2YWx1ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIGNoZWNrIGRlZmF1bHQgdmFsdWVcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICB2YWx1ZSA9IGdldFByb3BEZWZhdWx0VmFsdWUodm0sIHByb3AsIGtleSk7XG4gICAgLy8gc2luY2UgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYSBmcmVzaCBjb3B5LFxuICAgIC8vIG1ha2Ugc3VyZSB0byBvYnNlcnZlIGl0LlxuICAgIHZhciBwcmV2U2hvdWxkT2JzZXJ2ZSA9IHNob3VsZE9ic2VydmU7XG4gICAgdG9nZ2xlT2JzZXJ2aW5nKHRydWUpO1xuICAgIG9ic2VydmUodmFsdWUpO1xuICAgIHRvZ2dsZU9ic2VydmluZyhwcmV2U2hvdWxkT2JzZXJ2ZSk7XG4gIH1cbiAgaWYgKFxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAvLyBza2lwIHZhbGlkYXRpb24gZm9yIHdlZXggcmVjeWNsZS1saXN0IGNoaWxkIGNvbXBvbmVudCBwcm9wc1xuICAgICEoZmFsc2UpXG4gICkge1xuICAgIGFzc2VydFByb3AocHJvcCwga2V5LCB2YWx1ZSwgdm0sIGFic2VudCk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlXG59XG5cbi8qKlxuICogR2V0IHRoZSBkZWZhdWx0IHZhbHVlIG9mIGEgcHJvcC5cbiAqL1xuZnVuY3Rpb24gZ2V0UHJvcERlZmF1bHRWYWx1ZSAodm0sIHByb3AsIGtleSkge1xuICAvLyBubyBkZWZhdWx0LCByZXR1cm4gdW5kZWZpbmVkXG4gIGlmICghaGFzT3duKHByb3AsICdkZWZhdWx0JykpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbiAgdmFyIGRlZiA9IHByb3AuZGVmYXVsdDtcbiAgLy8gd2FybiBhZ2FpbnN0IG5vbi1mYWN0b3J5IGRlZmF1bHRzIGZvciBPYmplY3QgJiBBcnJheVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBpc09iamVjdChkZWYpKSB7XG4gICAgd2FybihcbiAgICAgICdJbnZhbGlkIGRlZmF1bHQgdmFsdWUgZm9yIHByb3AgXCInICsga2V5ICsgJ1wiOiAnICtcbiAgICAgICdQcm9wcyB3aXRoIHR5cGUgT2JqZWN0L0FycmF5IG11c3QgdXNlIGEgZmFjdG9yeSBmdW5jdGlvbiAnICtcbiAgICAgICd0byByZXR1cm4gdGhlIGRlZmF1bHQgdmFsdWUuJyxcbiAgICAgIHZtXG4gICAgKTtcbiAgfVxuICAvLyB0aGUgcmF3IHByb3AgdmFsdWUgd2FzIGFsc28gdW5kZWZpbmVkIGZyb20gcHJldmlvdXMgcmVuZGVyLFxuICAvLyByZXR1cm4gcHJldmlvdXMgZGVmYXVsdCB2YWx1ZSB0byBhdm9pZCB1bm5lY2Vzc2FyeSB3YXRjaGVyIHRyaWdnZXJcbiAgaWYgKHZtICYmIHZtLiRvcHRpb25zLnByb3BzRGF0YSAmJlxuICAgIHZtLiRvcHRpb25zLnByb3BzRGF0YVtrZXldID09PSB1bmRlZmluZWQgJiZcbiAgICB2bS5fcHJvcHNba2V5XSAhPT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybiB2bS5fcHJvcHNba2V5XVxuICB9XG4gIC8vIGNhbGwgZmFjdG9yeSBmdW5jdGlvbiBmb3Igbm9uLUZ1bmN0aW9uIHR5cGVzXG4gIC8vIGEgdmFsdWUgaXMgRnVuY3Rpb24gaWYgaXRzIHByb3RvdHlwZSBpcyBmdW5jdGlvbiBldmVuIGFjcm9zcyBkaWZmZXJlbnQgZXhlY3V0aW9uIGNvbnRleHRcbiAgcmV0dXJuIHR5cGVvZiBkZWYgPT09ICdmdW5jdGlvbicgJiYgZ2V0VHlwZShwcm9wLnR5cGUpICE9PSAnRnVuY3Rpb24nXG4gICAgPyBkZWYuY2FsbCh2bSlcbiAgICA6IGRlZlxufVxuXG4vKipcbiAqIEFzc2VydCB3aGV0aGVyIGEgcHJvcCBpcyB2YWxpZC5cbiAqL1xuZnVuY3Rpb24gYXNzZXJ0UHJvcCAoXG4gIHByb3AsXG4gIG5hbWUsXG4gIHZhbHVlLFxuICB2bSxcbiAgYWJzZW50XG4pIHtcbiAgaWYgKHByb3AucmVxdWlyZWQgJiYgYWJzZW50KSB7XG4gICAgd2FybihcbiAgICAgICdNaXNzaW5nIHJlcXVpcmVkIHByb3A6IFwiJyArIG5hbWUgKyAnXCInLFxuICAgICAgdm1cbiAgICApO1xuICAgIHJldHVyblxuICB9XG4gIGlmICh2YWx1ZSA9PSBudWxsICYmICFwcm9wLnJlcXVpcmVkKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHR5cGUgPSBwcm9wLnR5cGU7XG4gIHZhciB2YWxpZCA9ICF0eXBlIHx8IHR5cGUgPT09IHRydWU7XG4gIHZhciBleHBlY3RlZFR5cGVzID0gW107XG4gIGlmICh0eXBlKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHR5cGUpKSB7XG4gICAgICB0eXBlID0gW3R5cGVdO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGUubGVuZ3RoICYmICF2YWxpZDsgaSsrKSB7XG4gICAgICB2YXIgYXNzZXJ0ZWRUeXBlID0gYXNzZXJ0VHlwZSh2YWx1ZSwgdHlwZVtpXSk7XG4gICAgICBleHBlY3RlZFR5cGVzLnB1c2goYXNzZXJ0ZWRUeXBlLmV4cGVjdGVkVHlwZSB8fCAnJyk7XG4gICAgICB2YWxpZCA9IGFzc2VydGVkVHlwZS52YWxpZDtcbiAgICB9XG4gIH1cblxuICBpZiAoIXZhbGlkKSB7XG4gICAgd2FybihcbiAgICAgIGdldEludmFsaWRUeXBlTWVzc2FnZShuYW1lLCB2YWx1ZSwgZXhwZWN0ZWRUeXBlcyksXG4gICAgICB2bVxuICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHZhbGlkYXRvciA9IHByb3AudmFsaWRhdG9yO1xuICBpZiAodmFsaWRhdG9yKSB7XG4gICAgaWYgKCF2YWxpZGF0b3IodmFsdWUpKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnSW52YWxpZCBwcm9wOiBjdXN0b20gdmFsaWRhdG9yIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcIicgKyBuYW1lICsgJ1wiLicsXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG52YXIgc2ltcGxlQ2hlY2tSRSA9IC9eKFN0cmluZ3xOdW1iZXJ8Qm9vbGVhbnxGdW5jdGlvbnxTeW1ib2wpJC87XG5cbmZ1bmN0aW9uIGFzc2VydFR5cGUgKHZhbHVlLCB0eXBlKSB7XG4gIHZhciB2YWxpZDtcbiAgdmFyIGV4cGVjdGVkVHlwZSA9IGdldFR5cGUodHlwZSk7XG4gIGlmIChzaW1wbGVDaGVja1JFLnRlc3QoZXhwZWN0ZWRUeXBlKSkge1xuICAgIHZhciB0ID0gdHlwZW9mIHZhbHVlO1xuICAgIHZhbGlkID0gdCA9PT0gZXhwZWN0ZWRUeXBlLnRvTG93ZXJDYXNlKCk7XG4gICAgLy8gZm9yIHByaW1pdGl2ZSB3cmFwcGVyIG9iamVjdHNcbiAgICBpZiAoIXZhbGlkICYmIHQgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YWxpZCA9IHZhbHVlIGluc3RhbmNlb2YgdHlwZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSAnT2JqZWN0Jykge1xuICAgIHZhbGlkID0gaXNQbGFpbk9iamVjdCh2YWx1ZSk7XG4gIH0gZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSAnQXJyYXknKSB7XG4gICAgdmFsaWQgPSBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB2YWxpZCA9IHZhbHVlIGluc3RhbmNlb2YgdHlwZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHZhbGlkOiB2YWxpZCxcbiAgICBleHBlY3RlZFR5cGU6IGV4cGVjdGVkVHlwZVxuICB9XG59XG5cbi8qKlxuICogVXNlIGZ1bmN0aW9uIHN0cmluZyBuYW1lIHRvIGNoZWNrIGJ1aWx0LWluIHR5cGVzLFxuICogYmVjYXVzZSBhIHNpbXBsZSBlcXVhbGl0eSBjaGVjayB3aWxsIGZhaWwgd2hlbiBydW5uaW5nXG4gKiBhY3Jvc3MgZGlmZmVyZW50IHZtcyAvIGlmcmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGdldFR5cGUgKGZuKSB7XG4gIHZhciBtYXRjaCA9IGZuICYmIGZuLnRvU3RyaW5nKCkubWF0Y2goL15cXHMqZnVuY3Rpb24gKFxcdyspLyk7XG4gIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogJydcbn1cblxuZnVuY3Rpb24gaXNTYW1lVHlwZSAoYSwgYikge1xuICByZXR1cm4gZ2V0VHlwZShhKSA9PT0gZ2V0VHlwZShiKVxufVxuXG5mdW5jdGlvbiBnZXRUeXBlSW5kZXggKHR5cGUsIGV4cGVjdGVkVHlwZXMpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGV4cGVjdGVkVHlwZXMpKSB7XG4gICAgcmV0dXJuIGlzU2FtZVR5cGUoZXhwZWN0ZWRUeXBlcywgdHlwZSkgPyAwIDogLTFcbiAgfVxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gZXhwZWN0ZWRUeXBlcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChpc1NhbWVUeXBlKGV4cGVjdGVkVHlwZXNbaV0sIHR5cGUpKSB7XG4gICAgICByZXR1cm4gaVxuICAgIH1cbiAgfVxuICByZXR1cm4gLTFcbn1cblxuZnVuY3Rpb24gZ2V0SW52YWxpZFR5cGVNZXNzYWdlIChuYW1lLCB2YWx1ZSwgZXhwZWN0ZWRUeXBlcykge1xuICB2YXIgbWVzc2FnZSA9IFwiSW52YWxpZCBwcm9wOiB0eXBlIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcXFwiXCIgKyBuYW1lICsgXCJcXFwiLlwiICtcbiAgICBcIiBFeHBlY3RlZCBcIiArIChleHBlY3RlZFR5cGVzLm1hcChjYXBpdGFsaXplKS5qb2luKCcsICcpKTtcbiAgdmFyIGV4cGVjdGVkVHlwZSA9IGV4cGVjdGVkVHlwZXNbMF07XG4gIHZhciByZWNlaXZlZFR5cGUgPSB0b1Jhd1R5cGUodmFsdWUpO1xuICB2YXIgZXhwZWN0ZWRWYWx1ZSA9IHN0eWxlVmFsdWUodmFsdWUsIGV4cGVjdGVkVHlwZSk7XG4gIHZhciByZWNlaXZlZFZhbHVlID0gc3R5bGVWYWx1ZSh2YWx1ZSwgcmVjZWl2ZWRUeXBlKTtcbiAgLy8gY2hlY2sgaWYgd2UgbmVlZCB0byBzcGVjaWZ5IGV4cGVjdGVkIHZhbHVlXG4gIGlmIChleHBlY3RlZFR5cGVzLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgaXNFeHBsaWNhYmxlKGV4cGVjdGVkVHlwZSkgJiZcbiAgICAgICFpc0Jvb2xlYW4oZXhwZWN0ZWRUeXBlLCByZWNlaXZlZFR5cGUpKSB7XG4gICAgbWVzc2FnZSArPSBcIiB3aXRoIHZhbHVlIFwiICsgZXhwZWN0ZWRWYWx1ZTtcbiAgfVxuICBtZXNzYWdlICs9IFwiLCBnb3QgXCIgKyByZWNlaXZlZFR5cGUgKyBcIiBcIjtcbiAgLy8gY2hlY2sgaWYgd2UgbmVlZCB0byBzcGVjaWZ5IHJlY2VpdmVkIHZhbHVlXG4gIGlmIChpc0V4cGxpY2FibGUocmVjZWl2ZWRUeXBlKSkge1xuICAgIG1lc3NhZ2UgKz0gXCJ3aXRoIHZhbHVlIFwiICsgcmVjZWl2ZWRWYWx1ZSArIFwiLlwiO1xuICB9XG4gIHJldHVybiBtZXNzYWdlXG59XG5cbmZ1bmN0aW9uIHN0eWxlVmFsdWUgKHZhbHVlLCB0eXBlKSB7XG4gIGlmICh0eXBlID09PSAnU3RyaW5nJykge1xuICAgIHJldHVybiAoXCJcXFwiXCIgKyB2YWx1ZSArIFwiXFxcIlwiKVxuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdOdW1iZXInKSB7XG4gICAgcmV0dXJuIChcIlwiICsgKE51bWJlcih2YWx1ZSkpKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiAoXCJcIiArIHZhbHVlKVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzRXhwbGljYWJsZSAodmFsdWUpIHtcbiAgdmFyIGV4cGxpY2l0VHlwZXMgPSBbJ3N0cmluZycsICdudW1iZXInLCAnYm9vbGVhbiddO1xuICByZXR1cm4gZXhwbGljaXRUeXBlcy5zb21lKGZ1bmN0aW9uIChlbGVtKSB7IHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBlbGVtOyB9KVxufVxuXG5mdW5jdGlvbiBpc0Jvb2xlYW4gKCkge1xuICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuXG4gIHJldHVybiBhcmdzLnNvbWUoZnVuY3Rpb24gKGVsZW0pIHsgcmV0dXJuIGVsZW0udG9Mb3dlckNhc2UoKSA9PT0gJ2Jvb2xlYW4nOyB9KVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaGFuZGxlRXJyb3IgKGVyciwgdm0sIGluZm8pIHtcbiAgLy8gRGVhY3RpdmF0ZSBkZXBzIHRyYWNraW5nIHdoaWxlIHByb2Nlc3NpbmcgZXJyb3IgaGFuZGxlciB0byBhdm9pZCBwb3NzaWJsZSBpbmZpbml0ZSByZW5kZXJpbmcuXG4gIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZXgvaXNzdWVzLzE1MDVcbiAgcHVzaFRhcmdldCgpO1xuICB0cnkge1xuICAgIGlmICh2bSkge1xuICAgICAgdmFyIGN1ciA9IHZtO1xuICAgICAgd2hpbGUgKChjdXIgPSBjdXIuJHBhcmVudCkpIHtcbiAgICAgICAgdmFyIGhvb2tzID0gY3VyLiRvcHRpb25zLmVycm9yQ2FwdHVyZWQ7XG4gICAgICAgIGlmIChob29rcykge1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaG9va3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHZhciBjYXB0dXJlID0gaG9va3NbaV0uY2FsbChjdXIsIGVyciwgdm0sIGluZm8pID09PSBmYWxzZTtcbiAgICAgICAgICAgICAgaWYgKGNhcHR1cmUpIHsgcmV0dXJuIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgZ2xvYmFsSGFuZGxlRXJyb3IoZSwgY3VyLCAnZXJyb3JDYXB0dXJlZCBob29rJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGdsb2JhbEhhbmRsZUVycm9yKGVyciwgdm0sIGluZm8pO1xuICB9IGZpbmFsbHkge1xuICAgIHBvcFRhcmdldCgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGludm9rZVdpdGhFcnJvckhhbmRsaW5nIChcbiAgaGFuZGxlcixcbiAgY29udGV4dCxcbiAgYXJncyxcbiAgdm0sXG4gIGluZm9cbikge1xuICB2YXIgcmVzO1xuICB0cnkge1xuICAgIHJlcyA9IGFyZ3MgPyBoYW5kbGVyLmFwcGx5KGNvbnRleHQsIGFyZ3MpIDogaGFuZGxlci5jYWxsKGNvbnRleHQpO1xuICAgIGlmIChyZXMgJiYgIXJlcy5faXNWdWUgJiYgaXNQcm9taXNlKHJlcykgJiYgIXJlcy5faGFuZGxlZCkge1xuICAgICAgcmVzLmNhdGNoKGZ1bmN0aW9uIChlKSB7IHJldHVybiBoYW5kbGVFcnJvcihlLCB2bSwgaW5mbyArIFwiIChQcm9taXNlL2FzeW5jKVwiKTsgfSk7XG4gICAgICAvLyBpc3N1ZSAjOTUxMVxuICAgICAgLy8gYXZvaWQgY2F0Y2ggdHJpZ2dlcmluZyBtdWx0aXBsZSB0aW1lcyB3aGVuIG5lc3RlZCBjYWxsc1xuICAgICAgcmVzLl9oYW5kbGVkID0gdHJ1ZTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBoYW5kbGVFcnJvcihlLCB2bSwgaW5mbyk7XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBnbG9iYWxIYW5kbGVFcnJvciAoZXJyLCB2bSwgaW5mbykge1xuICBpZiAoY29uZmlnLmVycm9ySGFuZGxlcikge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY29uZmlnLmVycm9ySGFuZGxlci5jYWxsKG51bGwsIGVyciwgdm0sIGluZm8pXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gaWYgdGhlIHVzZXIgaW50ZW50aW9uYWxseSB0aHJvd3MgdGhlIG9yaWdpbmFsIGVycm9yIGluIHRoZSBoYW5kbGVyLFxuICAgICAgLy8gZG8gbm90IGxvZyBpdCB0d2ljZVxuICAgICAgaWYgKGUgIT09IGVycikge1xuICAgICAgICBsb2dFcnJvcihlLCBudWxsLCAnY29uZmlnLmVycm9ySGFuZGxlcicpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBsb2dFcnJvcihlcnIsIHZtLCBpbmZvKTtcbn1cblxuZnVuY3Rpb24gbG9nRXJyb3IgKGVyciwgdm0sIGluZm8pIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB3YXJuKChcIkVycm9yIGluIFwiICsgaW5mbyArIFwiOiBcXFwiXCIgKyAoZXJyLnRvU3RyaW5nKCkpICsgXCJcXFwiXCIpLCB2bSk7XG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKChpbkJyb3dzZXIgfHwgaW5XZWV4KSAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgZXJyXG4gIH1cbn1cblxuLyogICovXG5cbnZhciBpc1VzaW5nTWljcm9UYXNrID0gZmFsc2U7XG5cbnZhciBjYWxsYmFja3MgPSBbXTtcbnZhciBwZW5kaW5nID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGZsdXNoQ2FsbGJhY2tzICgpIHtcbiAgcGVuZGluZyA9IGZhbHNlO1xuICB2YXIgY29waWVzID0gY2FsbGJhY2tzLnNsaWNlKDApO1xuICBjYWxsYmFja3MubGVuZ3RoID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3BpZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb3BpZXNbaV0oKTtcbiAgfVxufVxuXG4vLyBIZXJlIHdlIGhhdmUgYXN5bmMgZGVmZXJyaW5nIHdyYXBwZXJzIHVzaW5nIG1pY3JvdGFza3MuXG4vLyBJbiAyLjUgd2UgdXNlZCAobWFjcm8pIHRhc2tzIChpbiBjb21iaW5hdGlvbiB3aXRoIG1pY3JvdGFza3MpLlxuLy8gSG93ZXZlciwgaXQgaGFzIHN1YnRsZSBwcm9ibGVtcyB3aGVuIHN0YXRlIGlzIGNoYW5nZWQgcmlnaHQgYmVmb3JlIHJlcGFpbnRcbi8vIChlLmcuICM2ODEzLCBvdXQtaW4gdHJhbnNpdGlvbnMpLlxuLy8gQWxzbywgdXNpbmcgKG1hY3JvKSB0YXNrcyBpbiBldmVudCBoYW5kbGVyIHdvdWxkIGNhdXNlIHNvbWUgd2VpcmQgYmVoYXZpb3JzXG4vLyB0aGF0IGNhbm5vdCBiZSBjaXJjdW12ZW50ZWQgKGUuZy4gIzcxMDksICM3MTUzLCAjNzU0NiwgIzc4MzQsICM4MTA5KS5cbi8vIFNvIHdlIG5vdyB1c2UgbWljcm90YXNrcyBldmVyeXdoZXJlLCBhZ2Fpbi5cbi8vIEEgbWFqb3IgZHJhd2JhY2sgb2YgdGhpcyB0cmFkZW9mZiBpcyB0aGF0IHRoZXJlIGFyZSBzb21lIHNjZW5hcmlvc1xuLy8gd2hlcmUgbWljcm90YXNrcyBoYXZlIHRvbyBoaWdoIGEgcHJpb3JpdHkgYW5kIGZpcmUgaW4gYmV0d2VlbiBzdXBwb3NlZGx5XG4vLyBzZXF1ZW50aWFsIGV2ZW50cyAoZS5nLiAjNDUyMSwgIzY2OTAsIHdoaWNoIGhhdmUgd29ya2Fyb3VuZHMpXG4vLyBvciBldmVuIGJldHdlZW4gYnViYmxpbmcgb2YgdGhlIHNhbWUgZXZlbnQgKCM2NTY2KS5cbnZhciB0aW1lckZ1bmM7XG5cbi8vIFRoZSBuZXh0VGljayBiZWhhdmlvciBsZXZlcmFnZXMgdGhlIG1pY3JvdGFzayBxdWV1ZSwgd2hpY2ggY2FuIGJlIGFjY2Vzc2VkXG4vLyB2aWEgZWl0aGVyIG5hdGl2ZSBQcm9taXNlLnRoZW4gb3IgTXV0YXRpb25PYnNlcnZlci5cbi8vIE11dGF0aW9uT2JzZXJ2ZXIgaGFzIHdpZGVyIHN1cHBvcnQsIGhvd2V2ZXIgaXQgaXMgc2VyaW91c2x5IGJ1Z2dlZCBpblxuLy8gVUlXZWJWaWV3IGluIGlPUyA+PSA5LjMuMyB3aGVuIHRyaWdnZXJlZCBpbiB0b3VjaCBldmVudCBoYW5kbGVycy4gSXRcbi8vIGNvbXBsZXRlbHkgc3RvcHMgd29ya2luZyBhZnRlciB0cmlnZ2VyaW5nIGEgZmV3IHRpbWVzLi4uIHNvLCBpZiBuYXRpdmVcbi8vIFByb21pc2UgaXMgYXZhaWxhYmxlLCB3ZSB3aWxsIHVzZSBpdDpcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0LCAkZmxvdy1kaXNhYmxlLWxpbmUgKi9cbmlmICh0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNOYXRpdmUoUHJvbWlzZSkpIHtcbiAgdmFyIHAgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgdGltZXJGdW5jID0gZnVuY3Rpb24gKCkge1xuICAgIHAudGhlbihmbHVzaENhbGxiYWNrcyk7XG4gICAgLy8gSW4gcHJvYmxlbWF0aWMgVUlXZWJWaWV3cywgUHJvbWlzZS50aGVuIGRvZXNuJ3QgY29tcGxldGVseSBicmVhaywgYnV0XG4gICAgLy8gaXQgY2FuIGdldCBzdHVjayBpbiBhIHdlaXJkIHN0YXRlIHdoZXJlIGNhbGxiYWNrcyBhcmUgcHVzaGVkIGludG8gdGhlXG4gICAgLy8gbWljcm90YXNrIHF1ZXVlIGJ1dCB0aGUgcXVldWUgaXNuJ3QgYmVpbmcgZmx1c2hlZCwgdW50aWwgdGhlIGJyb3dzZXJcbiAgICAvLyBuZWVkcyB0byBkbyBzb21lIG90aGVyIHdvcmssIGUuZy4gaGFuZGxlIGEgdGltZXIuIFRoZXJlZm9yZSB3ZSBjYW5cbiAgICAvLyBcImZvcmNlXCIgdGhlIG1pY3JvdGFzayBxdWV1ZSB0byBiZSBmbHVzaGVkIGJ5IGFkZGluZyBhbiBlbXB0eSB0aW1lci5cbiAgICBpZiAoaXNJT1MpIHsgc2V0VGltZW91dChub29wKTsgfVxuICB9O1xuICBpc1VzaW5nTWljcm9UYXNrID0gdHJ1ZTtcbn0gZWxzZSBpZiAoIWlzSUUgJiYgdHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXIgIT09ICd1bmRlZmluZWQnICYmIChcbiAgaXNOYXRpdmUoTXV0YXRpb25PYnNlcnZlcikgfHxcbiAgLy8gUGhhbnRvbUpTIGFuZCBpT1MgNy54XG4gIE11dGF0aW9uT2JzZXJ2ZXIudG9TdHJpbmcoKSA9PT0gJ1tvYmplY3QgTXV0YXRpb25PYnNlcnZlckNvbnN0cnVjdG9yXSdcbikpIHtcbiAgLy8gVXNlIE11dGF0aW9uT2JzZXJ2ZXIgd2hlcmUgbmF0aXZlIFByb21pc2UgaXMgbm90IGF2YWlsYWJsZSxcbiAgLy8gZS5nLiBQaGFudG9tSlMsIGlPUzcsIEFuZHJvaWQgNC40XG4gIC8vICgjNjQ2NiBNdXRhdGlvbk9ic2VydmVyIGlzIHVucmVsaWFibGUgaW4gSUUxMSlcbiAgdmFyIGNvdW50ZXIgPSAxO1xuICB2YXIgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmbHVzaENhbGxiYWNrcyk7XG4gIHZhciB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFN0cmluZyhjb3VudGVyKSk7XG4gIG9ic2VydmVyLm9ic2VydmUodGV4dE5vZGUsIHtcbiAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlXG4gIH0pO1xuICB0aW1lckZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgY291bnRlciA9IChjb3VudGVyICsgMSkgJSAyO1xuICAgIHRleHROb2RlLmRhdGEgPSBTdHJpbmcoY291bnRlcik7XG4gIH07XG4gIGlzVXNpbmdNaWNyb1Rhc2sgPSB0cnVlO1xufSBlbHNlIGlmICh0eXBlb2Ygc2V0SW1tZWRpYXRlICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShzZXRJbW1lZGlhdGUpKSB7XG4gIC8vIEZhbGxiYWNrIHRvIHNldEltbWVkaWF0ZS5cbiAgLy8gVGVjaGluaWNhbGx5IGl0IGxldmVyYWdlcyB0aGUgKG1hY3JvKSB0YXNrIHF1ZXVlLFxuICAvLyBidXQgaXQgaXMgc3RpbGwgYSBiZXR0ZXIgY2hvaWNlIHRoYW4gc2V0VGltZW91dC5cbiAgdGltZXJGdW5jID0gZnVuY3Rpb24gKCkge1xuICAgIHNldEltbWVkaWF0ZShmbHVzaENhbGxiYWNrcyk7XG4gIH07XG59IGVsc2Uge1xuICAvLyBGYWxsYmFjayB0byBzZXRUaW1lb3V0LlxuICB0aW1lckZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgc2V0VGltZW91dChmbHVzaENhbGxiYWNrcywgMCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIG5leHRUaWNrIChjYiwgY3R4KSB7XG4gIHZhciBfcmVzb2x2ZTtcbiAgY2FsbGJhY2tzLnB1c2goZnVuY3Rpb24gKCkge1xuICAgIGlmIChjYikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY2IuY2FsbChjdHgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBoYW5kbGVFcnJvcihlLCBjdHgsICduZXh0VGljaycpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoX3Jlc29sdmUpIHtcbiAgICAgIF9yZXNvbHZlKGN0eCk7XG4gICAgfVxuICB9KTtcbiAgaWYgKCFwZW5kaW5nKSB7XG4gICAgcGVuZGluZyA9IHRydWU7XG4gICAgdGltZXJGdW5jKCk7XG4gIH1cbiAgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gIGlmICghY2IgJiYgdHlwZW9mIFByb21pc2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgfSlcbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIG1hcms7XG52YXIgbWVhc3VyZTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIHBlcmYgPSBpbkJyb3dzZXIgJiYgd2luZG93LnBlcmZvcm1hbmNlO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKFxuICAgIHBlcmYgJiZcbiAgICBwZXJmLm1hcmsgJiZcbiAgICBwZXJmLm1lYXN1cmUgJiZcbiAgICBwZXJmLmNsZWFyTWFya3MgJiZcbiAgICBwZXJmLmNsZWFyTWVhc3VyZXNcbiAgKSB7XG4gICAgbWFyayA9IGZ1bmN0aW9uICh0YWcpIHsgcmV0dXJuIHBlcmYubWFyayh0YWcpOyB9O1xuICAgIG1lYXN1cmUgPSBmdW5jdGlvbiAobmFtZSwgc3RhcnRUYWcsIGVuZFRhZykge1xuICAgICAgcGVyZi5tZWFzdXJlKG5hbWUsIHN0YXJ0VGFnLCBlbmRUYWcpO1xuICAgICAgcGVyZi5jbGVhck1hcmtzKHN0YXJ0VGFnKTtcbiAgICAgIHBlcmYuY2xlYXJNYXJrcyhlbmRUYWcpO1xuICAgICAgLy8gcGVyZi5jbGVhck1lYXN1cmVzKG5hbWUpXG4gICAgfTtcbiAgfVxufVxuXG4vKiBub3QgdHlwZSBjaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBmbG93IGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGggUHJveHkgKi9cblxudmFyIGluaXRQcm94eTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGFsbG93ZWRHbG9iYWxzID0gbWFrZU1hcChcbiAgICAnSW5maW5pdHksdW5kZWZpbmVkLE5hTixpc0Zpbml0ZSxpc05hTiwnICtcbiAgICAncGFyc2VGbG9hdCxwYXJzZUludCxkZWNvZGVVUkksZGVjb2RlVVJJQ29tcG9uZW50LGVuY29kZVVSSSxlbmNvZGVVUklDb21wb25lbnQsJyArXG4gICAgJ01hdGgsTnVtYmVyLERhdGUsQXJyYXksT2JqZWN0LEJvb2xlYW4sU3RyaW5nLFJlZ0V4cCxNYXAsU2V0LEpTT04sSW50bCwnICtcbiAgICAncmVxdWlyZScgLy8gZm9yIFdlYnBhY2svQnJvd3NlcmlmeVxuICApO1xuXG4gIHZhciB3YXJuTm9uUHJlc2VudCA9IGZ1bmN0aW9uICh0YXJnZXQsIGtleSkge1xuICAgIHdhcm4oXG4gICAgICBcIlByb3BlcnR5IG9yIG1ldGhvZCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgbm90IGRlZmluZWQgb24gdGhlIGluc3RhbmNlIGJ1dCBcIiArXG4gICAgICAncmVmZXJlbmNlZCBkdXJpbmcgcmVuZGVyLiBNYWtlIHN1cmUgdGhhdCB0aGlzIHByb3BlcnR5IGlzIHJlYWN0aXZlLCAnICtcbiAgICAgICdlaXRoZXIgaW4gdGhlIGRhdGEgb3B0aW9uLCBvciBmb3IgY2xhc3MtYmFzZWQgY29tcG9uZW50cywgYnkgJyArXG4gICAgICAnaW5pdGlhbGl6aW5nIHRoZSBwcm9wZXJ0eS4gJyArXG4gICAgICAnU2VlOiBodHRwczovL3Z1ZWpzLm9yZy92Mi9ndWlkZS9yZWFjdGl2aXR5Lmh0bWwjRGVjbGFyaW5nLVJlYWN0aXZlLVByb3BlcnRpZXMuJyxcbiAgICAgIHRhcmdldFxuICAgICk7XG4gIH07XG5cbiAgdmFyIHdhcm5SZXNlcnZlZFByZWZpeCA9IGZ1bmN0aW9uICh0YXJnZXQsIGtleSkge1xuICAgIHdhcm4oXG4gICAgICBcIlByb3BlcnR5IFxcXCJcIiArIGtleSArIFwiXFxcIiBtdXN0IGJlIGFjY2Vzc2VkIHdpdGggXFxcIiRkYXRhLlwiICsga2V5ICsgXCJcXFwiIGJlY2F1c2UgXCIgK1xuICAgICAgJ3Byb3BlcnRpZXMgc3RhcnRpbmcgd2l0aCBcIiRcIiBvciBcIl9cIiBhcmUgbm90IHByb3hpZWQgaW4gdGhlIFZ1ZSBpbnN0YW5jZSB0byAnICtcbiAgICAgICdwcmV2ZW50IGNvbmZsaWN0cyB3aXRoIFZ1ZSBpbnRlcm5hbHMnICtcbiAgICAgICdTZWU6IGh0dHBzOi8vdnVlanMub3JnL3YyL2FwaS8jZGF0YScsXG4gICAgICB0YXJnZXRcbiAgICApO1xuICB9O1xuXG4gIHZhciBoYXNQcm94eSA9XG4gICAgdHlwZW9mIFByb3h5ICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShQcm94eSk7XG5cbiAgaWYgKGhhc1Byb3h5KSB7XG4gICAgdmFyIGlzQnVpbHRJbk1vZGlmaWVyID0gbWFrZU1hcCgnc3RvcCxwcmV2ZW50LHNlbGYsY3RybCxzaGlmdCxhbHQsbWV0YSxleGFjdCcpO1xuICAgIGNvbmZpZy5rZXlDb2RlcyA9IG5ldyBQcm94eShjb25maWcua2V5Q29kZXMsIHtcbiAgICAgIHNldDogZnVuY3Rpb24gc2V0ICh0YXJnZXQsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzQnVpbHRJbk1vZGlmaWVyKGtleSkpIHtcbiAgICAgICAgICB3YXJuKChcIkF2b2lkIG92ZXJ3cml0aW5nIGJ1aWx0LWluIG1vZGlmaWVyIGluIGNvbmZpZy5rZXlDb2RlczogLlwiICsga2V5KSk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB2YXIgaGFzSGFuZGxlciA9IHtcbiAgICBoYXM6IGZ1bmN0aW9uIGhhcyAodGFyZ2V0LCBrZXkpIHtcbiAgICAgIHZhciBoYXMgPSBrZXkgaW4gdGFyZ2V0O1xuICAgICAgdmFyIGlzQWxsb3dlZCA9IGFsbG93ZWRHbG9iYWxzKGtleSkgfHxcbiAgICAgICAgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnICYmIGtleS5jaGFyQXQoMCkgPT09ICdfJyAmJiAhKGtleSBpbiB0YXJnZXQuJGRhdGEpKTtcbiAgICAgIGlmICghaGFzICYmICFpc0FsbG93ZWQpIHtcbiAgICAgICAgaWYgKGtleSBpbiB0YXJnZXQuJGRhdGEpIHsgd2FyblJlc2VydmVkUHJlZml4KHRhcmdldCwga2V5KTsgfVxuICAgICAgICBlbHNlIHsgd2Fybk5vblByZXNlbnQodGFyZ2V0LCBrZXkpOyB9XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFzIHx8ICFpc0FsbG93ZWRcbiAgICB9XG4gIH07XG5cbiAgdmFyIGdldEhhbmRsZXIgPSB7XG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQgKHRhcmdldCwga2V5KSB7XG4gICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycgJiYgIShrZXkgaW4gdGFyZ2V0KSkge1xuICAgICAgICBpZiAoa2V5IGluIHRhcmdldC4kZGF0YSkgeyB3YXJuUmVzZXJ2ZWRQcmVmaXgodGFyZ2V0LCBrZXkpOyB9XG4gICAgICAgIGVsc2UgeyB3YXJuTm9uUHJlc2VudCh0YXJnZXQsIGtleSk7IH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0YXJnZXRba2V5XVxuICAgIH1cbiAgfTtcblxuICBpbml0UHJveHkgPSBmdW5jdGlvbiBpbml0UHJveHkgKHZtKSB7XG4gICAgaWYgKGhhc1Byb3h5KSB7XG4gICAgICAvLyBkZXRlcm1pbmUgd2hpY2ggcHJveHkgaGFuZGxlciB0byB1c2VcbiAgICAgIHZhciBvcHRpb25zID0gdm0uJG9wdGlvbnM7XG4gICAgICB2YXIgaGFuZGxlcnMgPSBvcHRpb25zLnJlbmRlciAmJiBvcHRpb25zLnJlbmRlci5fd2l0aFN0cmlwcGVkXG4gICAgICAgID8gZ2V0SGFuZGxlclxuICAgICAgICA6IGhhc0hhbmRsZXI7XG4gICAgICB2bS5fcmVuZGVyUHJveHkgPSBuZXcgUHJveHkodm0sIGhhbmRsZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uX3JlbmRlclByb3h5ID0gdm07XG4gICAgfVxuICB9O1xufVxuXG4vKiAgKi9cblxudmFyIHNlZW5PYmplY3RzID0gbmV3IF9TZXQoKTtcblxuLyoqXG4gKiBSZWN1cnNpdmVseSB0cmF2ZXJzZSBhbiBvYmplY3QgdG8gZXZva2UgYWxsIGNvbnZlcnRlZFxuICogZ2V0dGVycywgc28gdGhhdCBldmVyeSBuZXN0ZWQgcHJvcGVydHkgaW5zaWRlIHRoZSBvYmplY3RcbiAqIGlzIGNvbGxlY3RlZCBhcyBhIFwiZGVlcFwiIGRlcGVuZGVuY3kuXG4gKi9cbmZ1bmN0aW9uIHRyYXZlcnNlICh2YWwpIHtcbiAgX3RyYXZlcnNlKHZhbCwgc2Vlbk9iamVjdHMpO1xuICBzZWVuT2JqZWN0cy5jbGVhcigpO1xufVxuXG5mdW5jdGlvbiBfdHJhdmVyc2UgKHZhbCwgc2Vlbikge1xuICB2YXIgaSwga2V5cztcbiAgdmFyIGlzQSA9IEFycmF5LmlzQXJyYXkodmFsKTtcbiAgaWYgKCghaXNBICYmICFpc09iamVjdCh2YWwpKSB8fCBPYmplY3QuaXNGcm96ZW4odmFsKSB8fCB2YWwgaW5zdGFuY2VvZiBWTm9kZSkge1xuICAgIHJldHVyblxuICB9XG4gIGlmICh2YWwuX19vYl9fKSB7XG4gICAgdmFyIGRlcElkID0gdmFsLl9fb2JfXy5kZXAuaWQ7XG4gICAgaWYgKHNlZW4uaGFzKGRlcElkKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNlZW4uYWRkKGRlcElkKTtcbiAgfVxuICBpZiAoaXNBKSB7XG4gICAgaSA9IHZhbC5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkgeyBfdHJhdmVyc2UodmFsW2ldLCBzZWVuKTsgfVxuICB9IGVsc2Uge1xuICAgIGtleXMgPSBPYmplY3Qua2V5cyh2YWwpO1xuICAgIGkgPSBrZXlzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7IF90cmF2ZXJzZSh2YWxba2V5c1tpXV0sIHNlZW4pOyB9XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBub3JtYWxpemVFdmVudCA9IGNhY2hlZChmdW5jdGlvbiAobmFtZSkge1xuICB2YXIgcGFzc2l2ZSA9IG5hbWUuY2hhckF0KDApID09PSAnJic7XG4gIG5hbWUgPSBwYXNzaXZlID8gbmFtZS5zbGljZSgxKSA6IG5hbWU7XG4gIHZhciBvbmNlJCQxID0gbmFtZS5jaGFyQXQoMCkgPT09ICd+JzsgLy8gUHJlZml4ZWQgbGFzdCwgY2hlY2tlZCBmaXJzdFxuICBuYW1lID0gb25jZSQkMSA/IG5hbWUuc2xpY2UoMSkgOiBuYW1lO1xuICB2YXIgY2FwdHVyZSA9IG5hbWUuY2hhckF0KDApID09PSAnISc7XG4gIG5hbWUgPSBjYXB0dXJlID8gbmFtZS5zbGljZSgxKSA6IG5hbWU7XG4gIHJldHVybiB7XG4gICAgbmFtZTogbmFtZSxcbiAgICBvbmNlOiBvbmNlJCQxLFxuICAgIGNhcHR1cmU6IGNhcHR1cmUsXG4gICAgcGFzc2l2ZTogcGFzc2l2ZVxuICB9XG59KTtcblxuZnVuY3Rpb24gY3JlYXRlRm5JbnZva2VyIChmbnMsIHZtKSB7XG4gIGZ1bmN0aW9uIGludm9rZXIgKCkge1xuICAgIHZhciBhcmd1bWVudHMkMSA9IGFyZ3VtZW50cztcblxuICAgIHZhciBmbnMgPSBpbnZva2VyLmZucztcbiAgICBpZiAoQXJyYXkuaXNBcnJheShmbnMpKSB7XG4gICAgICB2YXIgY2xvbmVkID0gZm5zLnNsaWNlKCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNsb25lZC5sZW5ndGg7IGkrKykge1xuICAgICAgICBpbnZva2VXaXRoRXJyb3JIYW5kbGluZyhjbG9uZWRbaV0sIG51bGwsIGFyZ3VtZW50cyQxLCB2bSwgXCJ2LW9uIGhhbmRsZXJcIik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJldHVybiBoYW5kbGVyIHJldHVybiB2YWx1ZSBmb3Igc2luZ2xlIGhhbmRsZXJzXG4gICAgICByZXR1cm4gaW52b2tlV2l0aEVycm9ySGFuZGxpbmcoZm5zLCBudWxsLCBhcmd1bWVudHMsIHZtLCBcInYtb24gaGFuZGxlclwiKVxuICAgIH1cbiAgfVxuICBpbnZva2VyLmZucyA9IGZucztcbiAgcmV0dXJuIGludm9rZXJcbn1cblxuZnVuY3Rpb24gdXBkYXRlTGlzdGVuZXJzIChcbiAgb24sXG4gIG9sZE9uLFxuICBhZGQsXG4gIHJlbW92ZSQkMSxcbiAgY3JlYXRlT25jZUhhbmRsZXIsXG4gIHZtXG4pIHtcbiAgdmFyIG5hbWUsIGRlZiQkMSwgY3VyLCBvbGQsIGV2ZW50O1xuICBmb3IgKG5hbWUgaW4gb24pIHtcbiAgICBkZWYkJDEgPSBjdXIgPSBvbltuYW1lXTtcbiAgICBvbGQgPSBvbGRPbltuYW1lXTtcbiAgICBldmVudCA9IG5vcm1hbGl6ZUV2ZW50KG5hbWUpO1xuICAgIGlmIChpc1VuZGVmKGN1cikpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgXCJJbnZhbGlkIGhhbmRsZXIgZm9yIGV2ZW50IFxcXCJcIiArIChldmVudC5uYW1lKSArIFwiXFxcIjogZ290IFwiICsgU3RyaW5nKGN1ciksXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoaXNVbmRlZihvbGQpKSB7XG4gICAgICBpZiAoaXNVbmRlZihjdXIuZm5zKSkge1xuICAgICAgICBjdXIgPSBvbltuYW1lXSA9IGNyZWF0ZUZuSW52b2tlcihjdXIsIHZtKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1RydWUoZXZlbnQub25jZSkpIHtcbiAgICAgICAgY3VyID0gb25bbmFtZV0gPSBjcmVhdGVPbmNlSGFuZGxlcihldmVudC5uYW1lLCBjdXIsIGV2ZW50LmNhcHR1cmUpO1xuICAgICAgfVxuICAgICAgYWRkKGV2ZW50Lm5hbWUsIGN1ciwgZXZlbnQuY2FwdHVyZSwgZXZlbnQucGFzc2l2ZSwgZXZlbnQucGFyYW1zKTtcbiAgICB9IGVsc2UgaWYgKGN1ciAhPT0gb2xkKSB7XG4gICAgICBvbGQuZm5zID0gY3VyO1xuICAgICAgb25bbmFtZV0gPSBvbGQ7XG4gICAgfVxuICB9XG4gIGZvciAobmFtZSBpbiBvbGRPbikge1xuICAgIGlmIChpc1VuZGVmKG9uW25hbWVdKSkge1xuICAgICAgZXZlbnQgPSBub3JtYWxpemVFdmVudChuYW1lKTtcbiAgICAgIHJlbW92ZSQkMShldmVudC5uYW1lLCBvbGRPbltuYW1lXSwgZXZlbnQuY2FwdHVyZSk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBtZXJnZVZOb2RlSG9vayAoZGVmLCBob29rS2V5LCBob29rKSB7XG4gIGlmIChkZWYgaW5zdGFuY2VvZiBWTm9kZSkge1xuICAgIGRlZiA9IGRlZi5kYXRhLmhvb2sgfHwgKGRlZi5kYXRhLmhvb2sgPSB7fSk7XG4gIH1cbiAgdmFyIGludm9rZXI7XG4gIHZhciBvbGRIb29rID0gZGVmW2hvb2tLZXldO1xuXG4gIGZ1bmN0aW9uIHdyYXBwZWRIb29rICgpIHtcbiAgICBob29rLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgLy8gaW1wb3J0YW50OiByZW1vdmUgbWVyZ2VkIGhvb2sgdG8gZW5zdXJlIGl0J3MgY2FsbGVkIG9ubHkgb25jZVxuICAgIC8vIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrXG4gICAgcmVtb3ZlKGludm9rZXIuZm5zLCB3cmFwcGVkSG9vayk7XG4gIH1cblxuICBpZiAoaXNVbmRlZihvbGRIb29rKSkge1xuICAgIC8vIG5vIGV4aXN0aW5nIGhvb2tcbiAgICBpbnZva2VyID0gY3JlYXRlRm5JbnZva2VyKFt3cmFwcGVkSG9va10pO1xuICB9IGVsc2Uge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpc0RlZihvbGRIb29rLmZucykgJiYgaXNUcnVlKG9sZEhvb2subWVyZ2VkKSkge1xuICAgICAgLy8gYWxyZWFkeSBhIG1lcmdlZCBpbnZva2VyXG4gICAgICBpbnZva2VyID0gb2xkSG9vaztcbiAgICAgIGludm9rZXIuZm5zLnB1c2god3JhcHBlZEhvb2spO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBleGlzdGluZyBwbGFpbiBob29rXG4gICAgICBpbnZva2VyID0gY3JlYXRlRm5JbnZva2VyKFtvbGRIb29rLCB3cmFwcGVkSG9va10pO1xuICAgIH1cbiAgfVxuXG4gIGludm9rZXIubWVyZ2VkID0gdHJ1ZTtcbiAgZGVmW2hvb2tLZXldID0gaW52b2tlcjtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGV4dHJhY3RQcm9wc0Zyb21WTm9kZURhdGEgKFxuICBkYXRhLFxuICBDdG9yLFxuICB0YWdcbikge1xuICAvLyB3ZSBhcmUgb25seSBleHRyYWN0aW5nIHJhdyB2YWx1ZXMgaGVyZS5cbiAgLy8gdmFsaWRhdGlvbiBhbmQgZGVmYXVsdCB2YWx1ZXMgYXJlIGhhbmRsZWQgaW4gdGhlIGNoaWxkXG4gIC8vIGNvbXBvbmVudCBpdHNlbGYuXG4gIHZhciBwcm9wT3B0aW9ucyA9IEN0b3Iub3B0aW9ucy5wcm9wcztcbiAgaWYgKGlzVW5kZWYocHJvcE9wdGlvbnMpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgYXR0cnMgPSBkYXRhLmF0dHJzO1xuICB2YXIgcHJvcHMgPSBkYXRhLnByb3BzO1xuICBpZiAoaXNEZWYoYXR0cnMpIHx8IGlzRGVmKHByb3BzKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wT3B0aW9ucykge1xuICAgICAgdmFyIGFsdEtleSA9IGh5cGhlbmF0ZShrZXkpO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFyIGtleUluTG93ZXJDYXNlID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBrZXkgIT09IGtleUluTG93ZXJDYXNlICYmXG4gICAgICAgICAgYXR0cnMgJiYgaGFzT3duKGF0dHJzLCBrZXlJbkxvd2VyQ2FzZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGlwKFxuICAgICAgICAgICAgXCJQcm9wIFxcXCJcIiArIGtleUluTG93ZXJDYXNlICsgXCJcXFwiIGlzIHBhc3NlZCB0byBjb21wb25lbnQgXCIgK1xuICAgICAgICAgICAgKGZvcm1hdENvbXBvbmVudE5hbWUodGFnIHx8IEN0b3IpKSArIFwiLCBidXQgdGhlIGRlY2xhcmVkIHByb3AgbmFtZSBpc1wiICtcbiAgICAgICAgICAgIFwiIFxcXCJcIiArIGtleSArIFwiXFxcIi4gXCIgK1xuICAgICAgICAgICAgXCJOb3RlIHRoYXQgSFRNTCBhdHRyaWJ1dGVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlIGFuZCBjYW1lbENhc2VkIFwiICtcbiAgICAgICAgICAgIFwicHJvcHMgbmVlZCB0byB1c2UgdGhlaXIga2ViYWItY2FzZSBlcXVpdmFsZW50cyB3aGVuIHVzaW5nIGluLURPTSBcIiArXG4gICAgICAgICAgICBcInRlbXBsYXRlcy4gWW91IHNob3VsZCBwcm9iYWJseSB1c2UgXFxcIlwiICsgYWx0S2V5ICsgXCJcXFwiIGluc3RlYWQgb2YgXFxcIlwiICsga2V5ICsgXCJcXFwiLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2hlY2tQcm9wKHJlcywgcHJvcHMsIGtleSwgYWx0S2V5LCB0cnVlKSB8fFxuICAgICAgY2hlY2tQcm9wKHJlcywgYXR0cnMsIGtleSwgYWx0S2V5LCBmYWxzZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gY2hlY2tQcm9wIChcbiAgcmVzLFxuICBoYXNoLFxuICBrZXksXG4gIGFsdEtleSxcbiAgcHJlc2VydmVcbikge1xuICBpZiAoaXNEZWYoaGFzaCkpIHtcbiAgICBpZiAoaGFzT3duKGhhc2gsIGtleSkpIHtcbiAgICAgIHJlc1trZXldID0gaGFzaFtrZXldO1xuICAgICAgaWYgKCFwcmVzZXJ2ZSkge1xuICAgICAgICBkZWxldGUgaGFzaFtrZXldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGVsc2UgaWYgKGhhc093bihoYXNoLCBhbHRLZXkpKSB7XG4gICAgICByZXNba2V5XSA9IGhhc2hbYWx0S2V5XTtcbiAgICAgIGlmICghcHJlc2VydmUpIHtcbiAgICAgICAgZGVsZXRlIGhhc2hbYWx0S2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG4vKiAgKi9cblxuLy8gVGhlIHRlbXBsYXRlIGNvbXBpbGVyIGF0dGVtcHRzIHRvIG1pbmltaXplIHRoZSBuZWVkIGZvciBub3JtYWxpemF0aW9uIGJ5XG4vLyBzdGF0aWNhbGx5IGFuYWx5emluZyB0aGUgdGVtcGxhdGUgYXQgY29tcGlsZSB0aW1lLlxuLy9cbi8vIEZvciBwbGFpbiBIVE1MIG1hcmt1cCwgbm9ybWFsaXphdGlvbiBjYW4gYmUgY29tcGxldGVseSBza2lwcGVkIGJlY2F1c2UgdGhlXG4vLyBnZW5lcmF0ZWQgcmVuZGVyIGZ1bmN0aW9uIGlzIGd1YXJhbnRlZWQgdG8gcmV0dXJuIEFycmF5PFZOb2RlPi4gVGhlcmUgYXJlXG4vLyB0d28gY2FzZXMgd2hlcmUgZXh0cmEgbm9ybWFsaXphdGlvbiBpcyBuZWVkZWQ6XG5cbi8vIDEuIFdoZW4gdGhlIGNoaWxkcmVuIGNvbnRhaW5zIGNvbXBvbmVudHMgLSBiZWNhdXNlIGEgZnVuY3Rpb25hbCBjb21wb25lbnRcbi8vIG1heSByZXR1cm4gYW4gQXJyYXkgaW5zdGVhZCBvZiBhIHNpbmdsZSByb290LiBJbiB0aGlzIGNhc2UsIGp1c3QgYSBzaW1wbGVcbi8vIG5vcm1hbGl6YXRpb24gaXMgbmVlZGVkIC0gaWYgYW55IGNoaWxkIGlzIGFuIEFycmF5LCB3ZSBmbGF0dGVuIHRoZSB3aG9sZVxuLy8gdGhpbmcgd2l0aCBBcnJheS5wcm90b3R5cGUuY29uY2F0LiBJdCBpcyBndWFyYW50ZWVkIHRvIGJlIG9ubHkgMS1sZXZlbCBkZWVwXG4vLyBiZWNhdXNlIGZ1bmN0aW9uYWwgY29tcG9uZW50cyBhbHJlYWR5IG5vcm1hbGl6ZSB0aGVpciBvd24gY2hpbGRyZW4uXG5mdW5jdGlvbiBzaW1wbGVOb3JtYWxpemVDaGlsZHJlbiAoY2hpbGRyZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuW2ldKSkge1xuICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sIGNoaWxkcmVuKVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2hpbGRyZW5cbn1cblxuLy8gMi4gV2hlbiB0aGUgY2hpbGRyZW4gY29udGFpbnMgY29uc3RydWN0cyB0aGF0IGFsd2F5cyBnZW5lcmF0ZWQgbmVzdGVkIEFycmF5cyxcbi8vIGUuZy4gPHRlbXBsYXRlPiwgPHNsb3Q+LCB2LWZvciwgb3Igd2hlbiB0aGUgY2hpbGRyZW4gaXMgcHJvdmlkZWQgYnkgdXNlclxuLy8gd2l0aCBoYW5kLXdyaXR0ZW4gcmVuZGVyIGZ1bmN0aW9ucyAvIEpTWC4gSW4gc3VjaCBjYXNlcyBhIGZ1bGwgbm9ybWFsaXphdGlvblxuLy8gaXMgbmVlZGVkIHRvIGNhdGVyIHRvIGFsbCBwb3NzaWJsZSB0eXBlcyBvZiBjaGlsZHJlbiB2YWx1ZXMuXG5mdW5jdGlvbiBub3JtYWxpemVDaGlsZHJlbiAoY2hpbGRyZW4pIHtcbiAgcmV0dXJuIGlzUHJpbWl0aXZlKGNoaWxkcmVuKVxuICAgID8gW2NyZWF0ZVRleHRWTm9kZShjaGlsZHJlbildXG4gICAgOiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKVxuICAgICAgPyBub3JtYWxpemVBcnJheUNoaWxkcmVuKGNoaWxkcmVuKVxuICAgICAgOiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gaXNUZXh0Tm9kZSAobm9kZSkge1xuICByZXR1cm4gaXNEZWYobm9kZSkgJiYgaXNEZWYobm9kZS50ZXh0KSAmJiBpc0ZhbHNlKG5vZGUuaXNDb21tZW50KVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVBcnJheUNoaWxkcmVuIChjaGlsZHJlbiwgbmVzdGVkSW5kZXgpIHtcbiAgdmFyIHJlcyA9IFtdO1xuICB2YXIgaSwgYywgbGFzdEluZGV4LCBsYXN0O1xuICBmb3IgKGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICBjID0gY2hpbGRyZW5baV07XG4gICAgaWYgKGlzVW5kZWYoYykgfHwgdHlwZW9mIGMgPT09ICdib29sZWFuJykgeyBjb250aW51ZSB9XG4gICAgbGFzdEluZGV4ID0gcmVzLmxlbmd0aCAtIDE7XG4gICAgbGFzdCA9IHJlc1tsYXN0SW5kZXhdO1xuICAgIC8vICBuZXN0ZWRcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjKSkge1xuICAgICAgaWYgKGMubGVuZ3RoID4gMCkge1xuICAgICAgICBjID0gbm9ybWFsaXplQXJyYXlDaGlsZHJlbihjLCAoKG5lc3RlZEluZGV4IHx8ICcnKSArIFwiX1wiICsgaSkpO1xuICAgICAgICAvLyBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzXG4gICAgICAgIGlmIChpc1RleHROb2RlKGNbMF0pICYmIGlzVGV4dE5vZGUobGFzdCkpIHtcbiAgICAgICAgICByZXNbbGFzdEluZGV4XSA9IGNyZWF0ZVRleHRWTm9kZShsYXN0LnRleHQgKyAoY1swXSkudGV4dCk7XG4gICAgICAgICAgYy5zaGlmdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5wdXNoLmFwcGx5KHJlcywgYyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1ByaW1pdGl2ZShjKSkge1xuICAgICAgaWYgKGlzVGV4dE5vZGUobGFzdCkpIHtcbiAgICAgICAgLy8gbWVyZ2UgYWRqYWNlbnQgdGV4dCBub2Rlc1xuICAgICAgICAvLyB0aGlzIGlzIG5lY2Vzc2FyeSBmb3IgU1NSIGh5ZHJhdGlvbiBiZWNhdXNlIHRleHQgbm9kZXMgYXJlXG4gICAgICAgIC8vIGVzc2VudGlhbGx5IG1lcmdlZCB3aGVuIHJlbmRlcmVkIHRvIEhUTUwgc3RyaW5nc1xuICAgICAgICByZXNbbGFzdEluZGV4XSA9IGNyZWF0ZVRleHRWTm9kZShsYXN0LnRleHQgKyBjKTtcbiAgICAgIH0gZWxzZSBpZiAoYyAhPT0gJycpIHtcbiAgICAgICAgLy8gY29udmVydCBwcmltaXRpdmUgdG8gdm5vZGVcbiAgICAgICAgcmVzLnB1c2goY3JlYXRlVGV4dFZOb2RlKGMpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzVGV4dE5vZGUoYykgJiYgaXNUZXh0Tm9kZShsYXN0KSkge1xuICAgICAgICAvLyBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzXG4gICAgICAgIHJlc1tsYXN0SW5kZXhdID0gY3JlYXRlVGV4dFZOb2RlKGxhc3QudGV4dCArIGMudGV4dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBkZWZhdWx0IGtleSBmb3IgbmVzdGVkIGFycmF5IGNoaWxkcmVuIChsaWtlbHkgZ2VuZXJhdGVkIGJ5IHYtZm9yKVxuICAgICAgICBpZiAoaXNUcnVlKGNoaWxkcmVuLl9pc1ZMaXN0KSAmJlxuICAgICAgICAgIGlzRGVmKGMudGFnKSAmJlxuICAgICAgICAgIGlzVW5kZWYoYy5rZXkpICYmXG4gICAgICAgICAgaXNEZWYobmVzdGVkSW5kZXgpKSB7XG4gICAgICAgICAgYy5rZXkgPSBcIl9fdmxpc3RcIiArIG5lc3RlZEluZGV4ICsgXCJfXCIgKyBpICsgXCJfX1wiO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5wdXNoKGMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0UHJvdmlkZSAodm0pIHtcbiAgdmFyIHByb3ZpZGUgPSB2bS4kb3B0aW9ucy5wcm92aWRlO1xuICBpZiAocHJvdmlkZSkge1xuICAgIHZtLl9wcm92aWRlZCA9IHR5cGVvZiBwcm92aWRlID09PSAnZnVuY3Rpb24nXG4gICAgICA/IHByb3ZpZGUuY2FsbCh2bSlcbiAgICAgIDogcHJvdmlkZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0SW5qZWN0aW9ucyAodm0pIHtcbiAgdmFyIHJlc3VsdCA9IHJlc29sdmVJbmplY3Qodm0uJG9wdGlvbnMuaW5qZWN0LCB2bSk7XG4gIGlmIChyZXN1bHQpIHtcbiAgICB0b2dnbGVPYnNlcnZpbmcoZmFsc2UpO1xuICAgIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgZGVmaW5lUmVhY3RpdmUkJDEodm0sIGtleSwgcmVzdWx0W2tleV0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgXCJBdm9pZCBtdXRhdGluZyBhbiBpbmplY3RlZCB2YWx1ZSBkaXJlY3RseSBzaW5jZSB0aGUgY2hhbmdlcyB3aWxsIGJlIFwiICtcbiAgICAgICAgICAgIFwib3ZlcndyaXR0ZW4gd2hlbmV2ZXIgdGhlIHByb3ZpZGVkIGNvbXBvbmVudCByZS1yZW5kZXJzLiBcIiArXG4gICAgICAgICAgICBcImluamVjdGlvbiBiZWluZyBtdXRhdGVkOiBcXFwiXCIgKyBrZXkgKyBcIlxcXCJcIixcbiAgICAgICAgICAgIHZtXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWZpbmVSZWFjdGl2ZSQkMSh2bSwga2V5LCByZXN1bHRba2V5XSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdG9nZ2xlT2JzZXJ2aW5nKHRydWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVJbmplY3QgKGluamVjdCwgdm0pIHtcbiAgaWYgKGluamVjdCkge1xuICAgIC8vIGluamVjdCBpcyA6YW55IGJlY2F1c2UgZmxvdyBpcyBub3Qgc21hcnQgZW5vdWdoIHRvIGZpZ3VyZSBvdXQgY2FjaGVkXG4gICAgdmFyIHJlc3VsdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdmFyIGtleXMgPSBoYXNTeW1ib2xcbiAgICAgID8gUmVmbGVjdC5vd25LZXlzKGluamVjdClcbiAgICAgIDogT2JqZWN0LmtleXMoaW5qZWN0KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgICAvLyAjNjU3NCBpbiBjYXNlIHRoZSBpbmplY3Qgb2JqZWN0IGlzIG9ic2VydmVkLi4uXG4gICAgICBpZiAoa2V5ID09PSAnX19vYl9fJykgeyBjb250aW51ZSB9XG4gICAgICB2YXIgcHJvdmlkZUtleSA9IGluamVjdFtrZXldLmZyb207XG4gICAgICB2YXIgc291cmNlID0gdm07XG4gICAgICB3aGlsZSAoc291cmNlKSB7XG4gICAgICAgIGlmIChzb3VyY2UuX3Byb3ZpZGVkICYmIGhhc093bihzb3VyY2UuX3Byb3ZpZGVkLCBwcm92aWRlS2V5KSkge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gc291cmNlLl9wcm92aWRlZFtwcm92aWRlS2V5XTtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIHNvdXJjZSA9IHNvdXJjZS4kcGFyZW50O1xuICAgICAgfVxuICAgICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgICAgaWYgKCdkZWZhdWx0JyBpbiBpbmplY3Rba2V5XSkge1xuICAgICAgICAgIHZhciBwcm92aWRlRGVmYXVsdCA9IGluamVjdFtrZXldLmRlZmF1bHQ7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSB0eXBlb2YgcHJvdmlkZURlZmF1bHQgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgID8gcHJvdmlkZURlZmF1bHQuY2FsbCh2bSlcbiAgICAgICAgICAgIDogcHJvdmlkZURlZmF1bHQ7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHdhcm4oKFwiSW5qZWN0aW9uIFxcXCJcIiArIGtleSArIFwiXFxcIiBub3QgZm91bmRcIiksIHZtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cbn1cblxuLyogICovXG5cblxuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZXNvbHZpbmcgcmF3IGNoaWxkcmVuIFZOb2RlcyBpbnRvIGEgc2xvdCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVTbG90cyAoXG4gIGNoaWxkcmVuLFxuICBjb250ZXh0XG4pIHtcbiAgaWYgKCFjaGlsZHJlbiB8fCAhY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHt9XG4gIH1cbiAgdmFyIHNsb3RzID0ge307XG4gIGZvciAodmFyIGkgPSAwLCBsID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgdmFyIGRhdGEgPSBjaGlsZC5kYXRhO1xuICAgIC8vIHJlbW92ZSBzbG90IGF0dHJpYnV0ZSBpZiB0aGUgbm9kZSBpcyByZXNvbHZlZCBhcyBhIFZ1ZSBzbG90IG5vZGVcbiAgICBpZiAoZGF0YSAmJiBkYXRhLmF0dHJzICYmIGRhdGEuYXR0cnMuc2xvdCkge1xuICAgICAgZGVsZXRlIGRhdGEuYXR0cnMuc2xvdDtcbiAgICB9XG4gICAgLy8gbmFtZWQgc2xvdHMgc2hvdWxkIG9ubHkgYmUgcmVzcGVjdGVkIGlmIHRoZSB2bm9kZSB3YXMgcmVuZGVyZWQgaW4gdGhlXG4gICAgLy8gc2FtZSBjb250ZXh0LlxuICAgIGlmICgoY2hpbGQuY29udGV4dCA9PT0gY29udGV4dCB8fCBjaGlsZC5mbkNvbnRleHQgPT09IGNvbnRleHQpICYmXG4gICAgICBkYXRhICYmIGRhdGEuc2xvdCAhPSBudWxsXG4gICAgKSB7XG4gICAgICB2YXIgbmFtZSA9IGRhdGEuc2xvdDtcbiAgICAgIHZhciBzbG90ID0gKHNsb3RzW25hbWVdIHx8IChzbG90c1tuYW1lXSA9IFtdKSk7XG4gICAgICBpZiAoY2hpbGQudGFnID09PSAndGVtcGxhdGUnKSB7XG4gICAgICAgIHNsb3QucHVzaC5hcHBseShzbG90LCBjaGlsZC5jaGlsZHJlbiB8fCBbXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzbG90LnB1c2goY2hpbGQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAoc2xvdHMuZGVmYXVsdCB8fCAoc2xvdHMuZGVmYXVsdCA9IFtdKSkucHVzaChjaGlsZCk7XG4gICAgfVxuICB9XG4gIC8vIGlnbm9yZSBzbG90cyB0aGF0IGNvbnRhaW5zIG9ubHkgd2hpdGVzcGFjZVxuICBmb3IgKHZhciBuYW1lJDEgaW4gc2xvdHMpIHtcbiAgICBpZiAoc2xvdHNbbmFtZSQxXS5ldmVyeShpc1doaXRlc3BhY2UpKSB7XG4gICAgICBkZWxldGUgc2xvdHNbbmFtZSQxXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHNsb3RzXG59XG5cbmZ1bmN0aW9uIGlzV2hpdGVzcGFjZSAobm9kZSkge1xuICByZXR1cm4gKG5vZGUuaXNDb21tZW50ICYmICFub2RlLmFzeW5jRmFjdG9yeSkgfHwgbm9kZS50ZXh0ID09PSAnICdcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVNjb3BlZFNsb3RzIChcbiAgc2xvdHMsXG4gIG5vcm1hbFNsb3RzLFxuICBwcmV2U2xvdHNcbikge1xuICB2YXIgcmVzO1xuICB2YXIgaGFzTm9ybWFsU2xvdHMgPSBPYmplY3Qua2V5cyhub3JtYWxTbG90cykubGVuZ3RoID4gMDtcbiAgdmFyIGlzU3RhYmxlID0gc2xvdHMgPyAhIXNsb3RzLiRzdGFibGUgOiAhaGFzTm9ybWFsU2xvdHM7XG4gIHZhciBrZXkgPSBzbG90cyAmJiBzbG90cy4ka2V5O1xuICBpZiAoIXNsb3RzKSB7XG4gICAgcmVzID0ge307XG4gIH0gZWxzZSBpZiAoc2xvdHMuX25vcm1hbGl6ZWQpIHtcbiAgICAvLyBmYXN0IHBhdGggMTogY2hpbGQgY29tcG9uZW50IHJlLXJlbmRlciBvbmx5LCBwYXJlbnQgZGlkIG5vdCBjaGFuZ2VcbiAgICByZXR1cm4gc2xvdHMuX25vcm1hbGl6ZWRcbiAgfSBlbHNlIGlmIChcbiAgICBpc1N0YWJsZSAmJlxuICAgIHByZXZTbG90cyAmJlxuICAgIHByZXZTbG90cyAhPT0gZW1wdHlPYmplY3QgJiZcbiAgICBrZXkgPT09IHByZXZTbG90cy4ka2V5ICYmXG4gICAgIWhhc05vcm1hbFNsb3RzICYmXG4gICAgIXByZXZTbG90cy4kaGFzTm9ybWFsXG4gICkge1xuICAgIC8vIGZhc3QgcGF0aCAyOiBzdGFibGUgc2NvcGVkIHNsb3RzIHcvIG5vIG5vcm1hbCBzbG90cyB0byBwcm94eSxcbiAgICAvLyBvbmx5IG5lZWQgdG8gbm9ybWFsaXplIG9uY2VcbiAgICByZXR1cm4gcHJldlNsb3RzXG4gIH0gZWxzZSB7XG4gICAgcmVzID0ge307XG4gICAgZm9yICh2YXIga2V5JDEgaW4gc2xvdHMpIHtcbiAgICAgIGlmIChzbG90c1trZXkkMV0gJiYga2V5JDFbMF0gIT09ICckJykge1xuICAgICAgICByZXNba2V5JDFdID0gbm9ybWFsaXplU2NvcGVkU2xvdChub3JtYWxTbG90cywga2V5JDEsIHNsb3RzW2tleSQxXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIGV4cG9zZSBub3JtYWwgc2xvdHMgb24gc2NvcGVkU2xvdHNcbiAgZm9yICh2YXIga2V5JDIgaW4gbm9ybWFsU2xvdHMpIHtcbiAgICBpZiAoIShrZXkkMiBpbiByZXMpKSB7XG4gICAgICByZXNba2V5JDJdID0gcHJveHlOb3JtYWxTbG90KG5vcm1hbFNsb3RzLCBrZXkkMik7XG4gICAgfVxuICB9XG4gIC8vIGF2b3JpYXogc2VlbXMgdG8gbW9jayBhIG5vbi1leHRlbnNpYmxlICRzY29wZWRTbG90cyBvYmplY3RcbiAgLy8gYW5kIHdoZW4gdGhhdCBpcyBwYXNzZWQgZG93biB0aGlzIHdvdWxkIGNhdXNlIGFuIGVycm9yXG4gIGlmIChzbG90cyAmJiBPYmplY3QuaXNFeHRlbnNpYmxlKHNsb3RzKSkge1xuICAgIChzbG90cykuX25vcm1hbGl6ZWQgPSByZXM7XG4gIH1cbiAgZGVmKHJlcywgJyRzdGFibGUnLCBpc1N0YWJsZSk7XG4gIGRlZihyZXMsICcka2V5Jywga2V5KTtcbiAgZGVmKHJlcywgJyRoYXNOb3JtYWwnLCBoYXNOb3JtYWxTbG90cyk7XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplU2NvcGVkU2xvdChub3JtYWxTbG90cywga2V5LCBmbikge1xuICB2YXIgbm9ybWFsaXplZCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzID0gYXJndW1lbnRzLmxlbmd0aCA/IGZuLmFwcGx5KG51bGwsIGFyZ3VtZW50cykgOiBmbih7fSk7XG4gICAgcmVzID0gcmVzICYmIHR5cGVvZiByZXMgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHJlcylcbiAgICAgID8gW3Jlc10gLy8gc2luZ2xlIHZub2RlXG4gICAgICA6IG5vcm1hbGl6ZUNoaWxkcmVuKHJlcyk7XG4gICAgcmV0dXJuIHJlcyAmJiAoXG4gICAgICByZXMubGVuZ3RoID09PSAwIHx8XG4gICAgICAocmVzLmxlbmd0aCA9PT0gMSAmJiByZXNbMF0uaXNDb21tZW50KSAvLyAjOTY1OFxuICAgICkgPyB1bmRlZmluZWRcbiAgICAgIDogcmVzXG4gIH07XG4gIC8vIHRoaXMgaXMgYSBzbG90IHVzaW5nIHRoZSBuZXcgdi1zbG90IHN5bnRheCB3aXRob3V0IHNjb3BlLiBhbHRob3VnaCBpdCBpc1xuICAvLyBjb21waWxlZCBhcyBhIHNjb3BlZCBzbG90LCByZW5kZXIgZm4gdXNlcnMgd291bGQgZXhwZWN0IGl0IHRvIGJlIHByZXNlbnRcbiAgLy8gb24gdGhpcy4kc2xvdHMgYmVjYXVzZSB0aGUgdXNhZ2UgaXMgc2VtYW50aWNhbGx5IGEgbm9ybWFsIHNsb3QuXG4gIGlmIChmbi5wcm94eSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShub3JtYWxTbG90cywga2V5LCB7XG4gICAgICBnZXQ6IG5vcm1hbGl6ZWQsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIG5vcm1hbGl6ZWRcbn1cblxuZnVuY3Rpb24gcHJveHlOb3JtYWxTbG90KHNsb3RzLCBrZXkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNsb3RzW2tleV07IH1cbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlbmRlcmluZyB2LWZvciBsaXN0cy5cbiAqL1xuZnVuY3Rpb24gcmVuZGVyTGlzdCAoXG4gIHZhbCxcbiAgcmVuZGVyXG4pIHtcbiAgdmFyIHJldCwgaSwgbCwga2V5cywga2V5O1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpIHx8IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0ID0gbmV3IEFycmF5KHZhbC5sZW5ndGgpO1xuICAgIGZvciAoaSA9IDAsIGwgPSB2YWwubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICByZXRbaV0gPSByZW5kZXIodmFsW2ldLCBpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICByZXQgPSBuZXcgQXJyYXkodmFsKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdmFsOyBpKyspIHtcbiAgICAgIHJldFtpXSA9IHJlbmRlcihpICsgMSwgaSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KHZhbCkpIHtcbiAgICBpZiAoaGFzU3ltYm9sICYmIHZhbFtTeW1ib2wuaXRlcmF0b3JdKSB7XG4gICAgICByZXQgPSBbXTtcbiAgICAgIHZhciBpdGVyYXRvciA9IHZhbFtTeW1ib2wuaXRlcmF0b3JdKCk7XG4gICAgICB2YXIgcmVzdWx0ID0gaXRlcmF0b3IubmV4dCgpO1xuICAgICAgd2hpbGUgKCFyZXN1bHQuZG9uZSkge1xuICAgICAgICByZXQucHVzaChyZW5kZXIocmVzdWx0LnZhbHVlLCByZXQubGVuZ3RoKSk7XG4gICAgICAgIHJlc3VsdCA9IGl0ZXJhdG9yLm5leHQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAga2V5cyA9IE9iamVjdC5rZXlzKHZhbCk7XG4gICAgICByZXQgPSBuZXcgQXJyYXkoa2V5cy5sZW5ndGgpO1xuICAgICAgZm9yIChpID0gMCwgbCA9IGtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICAgIHJldFtpXSA9IHJlbmRlcih2YWxba2V5XSwga2V5LCBpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCFpc0RlZihyZXQpKSB7XG4gICAgcmV0ID0gW107XG4gIH1cbiAgKHJldCkuX2lzVkxpc3QgPSB0cnVlO1xuICByZXR1cm4gcmV0XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZW5kZXJpbmcgPHNsb3Q+XG4gKi9cbmZ1bmN0aW9uIHJlbmRlclNsb3QgKFxuICBuYW1lLFxuICBmYWxsYmFjayxcbiAgcHJvcHMsXG4gIGJpbmRPYmplY3Rcbikge1xuICB2YXIgc2NvcGVkU2xvdEZuID0gdGhpcy4kc2NvcGVkU2xvdHNbbmFtZV07XG4gIHZhciBub2RlcztcbiAgaWYgKHNjb3BlZFNsb3RGbikgeyAvLyBzY29wZWQgc2xvdFxuICAgIHByb3BzID0gcHJvcHMgfHwge307XG4gICAgaWYgKGJpbmRPYmplY3QpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFpc09iamVjdChiaW5kT2JqZWN0KSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdzbG90IHYtYmluZCB3aXRob3V0IGFyZ3VtZW50IGV4cGVjdHMgYW4gT2JqZWN0JyxcbiAgICAgICAgICB0aGlzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBwcm9wcyA9IGV4dGVuZChleHRlbmQoe30sIGJpbmRPYmplY3QpLCBwcm9wcyk7XG4gICAgfVxuICAgIG5vZGVzID0gc2NvcGVkU2xvdEZuKHByb3BzKSB8fCBmYWxsYmFjaztcbiAgfSBlbHNlIHtcbiAgICBub2RlcyA9IHRoaXMuJHNsb3RzW25hbWVdIHx8IGZhbGxiYWNrO1xuICB9XG5cbiAgdmFyIHRhcmdldCA9IHByb3BzICYmIHByb3BzLnNsb3Q7XG4gIGlmICh0YXJnZXQpIHtcbiAgICByZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudCgndGVtcGxhdGUnLCB7IHNsb3Q6IHRhcmdldCB9LCBub2RlcylcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbm9kZXNcbiAgfVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVzb2x2aW5nIGZpbHRlcnNcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUZpbHRlciAoaWQpIHtcbiAgcmV0dXJuIHJlc29sdmVBc3NldCh0aGlzLiRvcHRpb25zLCAnZmlsdGVycycsIGlkLCB0cnVlKSB8fCBpZGVudGl0eVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaXNLZXlOb3RNYXRjaCAoZXhwZWN0LCBhY3R1YWwpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZXhwZWN0KSkge1xuICAgIHJldHVybiBleHBlY3QuaW5kZXhPZihhY3R1YWwpID09PSAtMVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBleHBlY3QgIT09IGFjdHVhbFxuICB9XG59XG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIGNoZWNraW5nIGtleUNvZGVzIGZyb20gY29uZmlnLlxuICogZXhwb3NlZCBhcyBWdWUucHJvdG90eXBlLl9rXG4gKiBwYXNzaW5nIGluIGV2ZW50S2V5TmFtZSBhcyBsYXN0IGFyZ3VtZW50IHNlcGFyYXRlbHkgZm9yIGJhY2t3YXJkcyBjb21wYXRcbiAqL1xuZnVuY3Rpb24gY2hlY2tLZXlDb2RlcyAoXG4gIGV2ZW50S2V5Q29kZSxcbiAga2V5LFxuICBidWlsdEluS2V5Q29kZSxcbiAgZXZlbnRLZXlOYW1lLFxuICBidWlsdEluS2V5TmFtZVxuKSB7XG4gIHZhciBtYXBwZWRLZXlDb2RlID0gY29uZmlnLmtleUNvZGVzW2tleV0gfHwgYnVpbHRJbktleUNvZGU7XG4gIGlmIChidWlsdEluS2V5TmFtZSAmJiBldmVudEtleU5hbWUgJiYgIWNvbmZpZy5rZXlDb2Rlc1trZXldKSB7XG4gICAgcmV0dXJuIGlzS2V5Tm90TWF0Y2goYnVpbHRJbktleU5hbWUsIGV2ZW50S2V5TmFtZSlcbiAgfSBlbHNlIGlmIChtYXBwZWRLZXlDb2RlKSB7XG4gICAgcmV0dXJuIGlzS2V5Tm90TWF0Y2gobWFwcGVkS2V5Q29kZSwgZXZlbnRLZXlDb2RlKVxuICB9IGVsc2UgaWYgKGV2ZW50S2V5TmFtZSkge1xuICAgIHJldHVybiBoeXBoZW5hdGUoZXZlbnRLZXlOYW1lKSAhPT0ga2V5XG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIG1lcmdpbmcgdi1iaW5kPVwib2JqZWN0XCIgaW50byBhIFZOb2RlJ3MgZGF0YS5cbiAqL1xuZnVuY3Rpb24gYmluZE9iamVjdFByb3BzIChcbiAgZGF0YSxcbiAgdGFnLFxuICB2YWx1ZSxcbiAgYXNQcm9wLFxuICBpc1N5bmNcbikge1xuICBpZiAodmFsdWUpIHtcbiAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAndi1iaW5kIHdpdGhvdXQgYXJndW1lbnQgZXhwZWN0cyBhbiBPYmplY3Qgb3IgQXJyYXkgdmFsdWUnLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUgPSB0b09iamVjdCh2YWx1ZSk7XG4gICAgICB9XG4gICAgICB2YXIgaGFzaDtcbiAgICAgIHZhciBsb29wID0gZnVuY3Rpb24gKCBrZXkgKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBrZXkgPT09ICdjbGFzcycgfHxcbiAgICAgICAgICBrZXkgPT09ICdzdHlsZScgfHxcbiAgICAgICAgICBpc1Jlc2VydmVkQXR0cmlidXRlKGtleSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgaGFzaCA9IGRhdGE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHR5cGUgPSBkYXRhLmF0dHJzICYmIGRhdGEuYXR0cnMudHlwZTtcbiAgICAgICAgICBoYXNoID0gYXNQcm9wIHx8IGNvbmZpZy5tdXN0VXNlUHJvcCh0YWcsIHR5cGUsIGtleSlcbiAgICAgICAgICAgID8gZGF0YS5kb21Qcm9wcyB8fCAoZGF0YS5kb21Qcm9wcyA9IHt9KVxuICAgICAgICAgICAgOiBkYXRhLmF0dHJzIHx8IChkYXRhLmF0dHJzID0ge30pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjYW1lbGl6ZWRLZXkgPSBjYW1lbGl6ZShrZXkpO1xuICAgICAgICB2YXIgaHlwaGVuYXRlZEtleSA9IGh5cGhlbmF0ZShrZXkpO1xuICAgICAgICBpZiAoIShjYW1lbGl6ZWRLZXkgaW4gaGFzaCkgJiYgIShoeXBoZW5hdGVkS2V5IGluIGhhc2gpKSB7XG4gICAgICAgICAgaGFzaFtrZXldID0gdmFsdWVba2V5XTtcblxuICAgICAgICAgIGlmIChpc1N5bmMpIHtcbiAgICAgICAgICAgIHZhciBvbiA9IGRhdGEub24gfHwgKGRhdGEub24gPSB7fSk7XG4gICAgICAgICAgICBvblsoXCJ1cGRhdGU6XCIgKyBrZXkpXSA9IGZ1bmN0aW9uICgkZXZlbnQpIHtcbiAgICAgICAgICAgICAgdmFsdWVba2V5XSA9ICRldmVudDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIGxvb3AoIGtleSApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVuZGVyaW5nIHN0YXRpYyB0cmVlcy5cbiAqL1xuZnVuY3Rpb24gcmVuZGVyU3RhdGljIChcbiAgaW5kZXgsXG4gIGlzSW5Gb3Jcbikge1xuICB2YXIgY2FjaGVkID0gdGhpcy5fc3RhdGljVHJlZXMgfHwgKHRoaXMuX3N0YXRpY1RyZWVzID0gW10pO1xuICB2YXIgdHJlZSA9IGNhY2hlZFtpbmRleF07XG4gIC8vIGlmIGhhcyBhbHJlYWR5LXJlbmRlcmVkIHN0YXRpYyB0cmVlIGFuZCBub3QgaW5zaWRlIHYtZm9yLFxuICAvLyB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUgdHJlZS5cbiAgaWYgKHRyZWUgJiYgIWlzSW5Gb3IpIHtcbiAgICByZXR1cm4gdHJlZVxuICB9XG4gIC8vIG90aGVyd2lzZSwgcmVuZGVyIGEgZnJlc2ggdHJlZS5cbiAgdHJlZSA9IGNhY2hlZFtpbmRleF0gPSB0aGlzLiRvcHRpb25zLnN0YXRpY1JlbmRlckZuc1tpbmRleF0uY2FsbChcbiAgICB0aGlzLl9yZW5kZXJQcm94eSxcbiAgICBudWxsLFxuICAgIHRoaXMgLy8gZm9yIHJlbmRlciBmbnMgZ2VuZXJhdGVkIGZvciBmdW5jdGlvbmFsIGNvbXBvbmVudCB0ZW1wbGF0ZXNcbiAgKTtcbiAgbWFya1N0YXRpYyh0cmVlLCAoXCJfX3N0YXRpY19fXCIgKyBpbmRleCksIGZhbHNlKTtcbiAgcmV0dXJuIHRyZWVcbn1cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3Igdi1vbmNlLlxuICogRWZmZWN0aXZlbHkgaXQgbWVhbnMgbWFya2luZyB0aGUgbm9kZSBhcyBzdGF0aWMgd2l0aCBhIHVuaXF1ZSBrZXkuXG4gKi9cbmZ1bmN0aW9uIG1hcmtPbmNlIChcbiAgdHJlZSxcbiAgaW5kZXgsXG4gIGtleVxuKSB7XG4gIG1hcmtTdGF0aWModHJlZSwgKFwiX19vbmNlX19cIiArIGluZGV4ICsgKGtleSA/IChcIl9cIiArIGtleSkgOiBcIlwiKSksIHRydWUpO1xuICByZXR1cm4gdHJlZVxufVxuXG5mdW5jdGlvbiBtYXJrU3RhdGljIChcbiAgdHJlZSxcbiAga2V5LFxuICBpc09uY2Vcbikge1xuICBpZiAoQXJyYXkuaXNBcnJheSh0cmVlKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHJlZS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRyZWVbaV0gJiYgdHlwZW9mIHRyZWVbaV0gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG1hcmtTdGF0aWNOb2RlKHRyZWVbaV0sIChrZXkgKyBcIl9cIiArIGkpLCBpc09uY2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBtYXJrU3RhdGljTm9kZSh0cmVlLCBrZXksIGlzT25jZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFya1N0YXRpY05vZGUgKG5vZGUsIGtleSwgaXNPbmNlKSB7XG4gIG5vZGUuaXNTdGF0aWMgPSB0cnVlO1xuICBub2RlLmtleSA9IGtleTtcbiAgbm9kZS5pc09uY2UgPSBpc09uY2U7XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBiaW5kT2JqZWN0TGlzdGVuZXJzIChkYXRhLCB2YWx1ZSkge1xuICBpZiAodmFsdWUpIHtcbiAgICBpZiAoIWlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICd2LW9uIHdpdGhvdXQgYXJndW1lbnQgZXhwZWN0cyBhbiBPYmplY3QgdmFsdWUnLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgb24gPSBkYXRhLm9uID0gZGF0YS5vbiA/IGV4dGVuZCh7fSwgZGF0YS5vbikgOiB7fTtcbiAgICAgIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgICAgICB2YXIgZXhpc3RpbmcgPSBvbltrZXldO1xuICAgICAgICB2YXIgb3VycyA9IHZhbHVlW2tleV07XG4gICAgICAgIG9uW2tleV0gPSBleGlzdGluZyA/IFtdLmNvbmNhdChleGlzdGluZywgb3VycykgOiBvdXJzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gcmVzb2x2ZVNjb3BlZFNsb3RzIChcbiAgZm5zLCAvLyBzZWUgZmxvdy92bm9kZVxuICByZXMsXG4gIC8vIHRoZSBmb2xsb3dpbmcgYXJlIGFkZGVkIGluIDIuNlxuICBoYXNEeW5hbWljS2V5cyxcbiAgY29udGVudEhhc2hLZXlcbikge1xuICByZXMgPSByZXMgfHwgeyAkc3RhYmxlOiAhaGFzRHluYW1pY0tleXMgfTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBmbnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc2xvdCA9IGZuc1tpXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzbG90KSkge1xuICAgICAgcmVzb2x2ZVNjb3BlZFNsb3RzKHNsb3QsIHJlcywgaGFzRHluYW1pY0tleXMpO1xuICAgIH0gZWxzZSBpZiAoc2xvdCkge1xuICAgICAgLy8gbWFya2VyIGZvciByZXZlcnNlIHByb3h5aW5nIHYtc2xvdCB3aXRob3V0IHNjb3BlIG9uIHRoaXMuJHNsb3RzXG4gICAgICBpZiAoc2xvdC5wcm94eSkge1xuICAgICAgICBzbG90LmZuLnByb3h5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJlc1tzbG90LmtleV0gPSBzbG90LmZuO1xuICAgIH1cbiAgfVxuICBpZiAoY29udGVudEhhc2hLZXkpIHtcbiAgICAocmVzKS4ka2V5ID0gY29udGVudEhhc2hLZXk7XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gYmluZER5bmFtaWNLZXlzIChiYXNlT2JqLCB2YWx1ZXMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIga2V5ID0gdmFsdWVzW2ldO1xuICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyAmJiBrZXkpIHtcbiAgICAgIGJhc2VPYmpbdmFsdWVzW2ldXSA9IHZhbHVlc1tpICsgMV07XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGtleSAhPT0gJycgJiYga2V5ICE9PSBudWxsKSB7XG4gICAgICAvLyBudWxsIGlzIGEgc3BlaWNhbCB2YWx1ZSBmb3IgZXhwbGljaXRseSByZW1vdmluZyBhIGJpbmRpbmdcbiAgICAgIHdhcm4oXG4gICAgICAgIChcIkludmFsaWQgdmFsdWUgZm9yIGR5bmFtaWMgZGlyZWN0aXZlIGFyZ3VtZW50IChleHBlY3RlZCBzdHJpbmcgb3IgbnVsbCk6IFwiICsga2V5KSxcbiAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGJhc2VPYmpcbn1cblxuLy8gaGVscGVyIHRvIGR5bmFtaWNhbGx5IGFwcGVuZCBtb2RpZmllciBydW50aW1lIG1hcmtlcnMgdG8gZXZlbnQgbmFtZXMuXG4vLyBlbnN1cmUgb25seSBhcHBlbmQgd2hlbiB2YWx1ZSBpcyBhbHJlYWR5IHN0cmluZywgb3RoZXJ3aXNlIGl0IHdpbGwgYmUgY2FzdFxuLy8gdG8gc3RyaW5nIGFuZCBjYXVzZSB0aGUgdHlwZSBjaGVjayB0byBtaXNzLlxuZnVuY3Rpb24gcHJlcGVuZE1vZGlmaWVyICh2YWx1ZSwgc3ltYm9sKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gc3ltYm9sICsgdmFsdWUgOiB2YWx1ZVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5zdGFsbFJlbmRlckhlbHBlcnMgKHRhcmdldCkge1xuICB0YXJnZXQuX28gPSBtYXJrT25jZTtcbiAgdGFyZ2V0Ll9uID0gdG9OdW1iZXI7XG4gIHRhcmdldC5fcyA9IHRvU3RyaW5nO1xuICB0YXJnZXQuX2wgPSByZW5kZXJMaXN0O1xuICB0YXJnZXQuX3QgPSByZW5kZXJTbG90O1xuICB0YXJnZXQuX3EgPSBsb29zZUVxdWFsO1xuICB0YXJnZXQuX2kgPSBsb29zZUluZGV4T2Y7XG4gIHRhcmdldC5fbSA9IHJlbmRlclN0YXRpYztcbiAgdGFyZ2V0Ll9mID0gcmVzb2x2ZUZpbHRlcjtcbiAgdGFyZ2V0Ll9rID0gY2hlY2tLZXlDb2RlcztcbiAgdGFyZ2V0Ll9iID0gYmluZE9iamVjdFByb3BzO1xuICB0YXJnZXQuX3YgPSBjcmVhdGVUZXh0Vk5vZGU7XG4gIHRhcmdldC5fZSA9IGNyZWF0ZUVtcHR5Vk5vZGU7XG4gIHRhcmdldC5fdSA9IHJlc29sdmVTY29wZWRTbG90cztcbiAgdGFyZ2V0Ll9nID0gYmluZE9iamVjdExpc3RlbmVycztcbiAgdGFyZ2V0Ll9kID0gYmluZER5bmFtaWNLZXlzO1xuICB0YXJnZXQuX3AgPSBwcmVwZW5kTW9kaWZpZXI7XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBGdW5jdGlvbmFsUmVuZGVyQ29udGV4dCAoXG4gIGRhdGEsXG4gIHByb3BzLFxuICBjaGlsZHJlbixcbiAgcGFyZW50LFxuICBDdG9yXG4pIHtcbiAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgdmFyIG9wdGlvbnMgPSBDdG9yLm9wdGlvbnM7XG4gIC8vIGVuc3VyZSB0aGUgY3JlYXRlRWxlbWVudCBmdW5jdGlvbiBpbiBmdW5jdGlvbmFsIGNvbXBvbmVudHNcbiAgLy8gZ2V0cyBhIHVuaXF1ZSBjb250ZXh0IC0gdGhpcyBpcyBuZWNlc3NhcnkgZm9yIGNvcnJlY3QgbmFtZWQgc2xvdCBjaGVja1xuICB2YXIgY29udGV4dFZtO1xuICBpZiAoaGFzT3duKHBhcmVudCwgJ191aWQnKSkge1xuICAgIGNvbnRleHRWbSA9IE9iamVjdC5jcmVhdGUocGFyZW50KTtcbiAgICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgICBjb250ZXh0Vm0uX29yaWdpbmFsID0gcGFyZW50O1xuICB9IGVsc2Uge1xuICAgIC8vIHRoZSBjb250ZXh0IHZtIHBhc3NlZCBpbiBpcyBhIGZ1bmN0aW9uYWwgY29udGV4dCBhcyB3ZWxsLlxuICAgIC8vIGluIHRoaXMgY2FzZSB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBhcmUgYWJsZSB0byBnZXQgYSBob2xkIHRvIHRoZVxuICAgIC8vIHJlYWwgY29udGV4dCBpbnN0YW5jZS5cbiAgICBjb250ZXh0Vm0gPSBwYXJlbnQ7XG4gICAgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gICAgcGFyZW50ID0gcGFyZW50Ll9vcmlnaW5hbDtcbiAgfVxuICB2YXIgaXNDb21waWxlZCA9IGlzVHJ1ZShvcHRpb25zLl9jb21waWxlZCk7XG4gIHZhciBuZWVkTm9ybWFsaXphdGlvbiA9ICFpc0NvbXBpbGVkO1xuXG4gIHRoaXMuZGF0YSA9IGRhdGE7XG4gIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgdGhpcy5saXN0ZW5lcnMgPSBkYXRhLm9uIHx8IGVtcHR5T2JqZWN0O1xuICB0aGlzLmluamVjdGlvbnMgPSByZXNvbHZlSW5qZWN0KG9wdGlvbnMuaW5qZWN0LCBwYXJlbnQpO1xuICB0aGlzLnNsb3RzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcyQxLiRzbG90cykge1xuICAgICAgbm9ybWFsaXplU2NvcGVkU2xvdHMoXG4gICAgICAgIGRhdGEuc2NvcGVkU2xvdHMsXG4gICAgICAgIHRoaXMkMS4kc2xvdHMgPSByZXNvbHZlU2xvdHMoY2hpbGRyZW4sIHBhcmVudClcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzJDEuJHNsb3RzXG4gIH07XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdzY29wZWRTbG90cycsICh7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCAoKSB7XG4gICAgICByZXR1cm4gbm9ybWFsaXplU2NvcGVkU2xvdHMoZGF0YS5zY29wZWRTbG90cywgdGhpcy5zbG90cygpKVxuICAgIH1cbiAgfSkpO1xuXG4gIC8vIHN1cHBvcnQgZm9yIGNvbXBpbGVkIGZ1bmN0aW9uYWwgdGVtcGxhdGVcbiAgaWYgKGlzQ29tcGlsZWQpIHtcbiAgICAvLyBleHBvc2luZyAkb3B0aW9ucyBmb3IgcmVuZGVyU3RhdGljKClcbiAgICB0aGlzLiRvcHRpb25zID0gb3B0aW9ucztcbiAgICAvLyBwcmUtcmVzb2x2ZSBzbG90cyBmb3IgcmVuZGVyU2xvdCgpXG4gICAgdGhpcy4kc2xvdHMgPSB0aGlzLnNsb3RzKCk7XG4gICAgdGhpcy4kc2NvcGVkU2xvdHMgPSBub3JtYWxpemVTY29wZWRTbG90cyhkYXRhLnNjb3BlZFNsb3RzLCB0aGlzLiRzbG90cyk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5fc2NvcGVJZCkge1xuICAgIHRoaXMuX2MgPSBmdW5jdGlvbiAoYSwgYiwgYywgZCkge1xuICAgICAgdmFyIHZub2RlID0gY3JlYXRlRWxlbWVudChjb250ZXh0Vm0sIGEsIGIsIGMsIGQsIG5lZWROb3JtYWxpemF0aW9uKTtcbiAgICAgIGlmICh2bm9kZSAmJiAhQXJyYXkuaXNBcnJheSh2bm9kZSkpIHtcbiAgICAgICAgdm5vZGUuZm5TY29wZUlkID0gb3B0aW9ucy5fc2NvcGVJZDtcbiAgICAgICAgdm5vZGUuZm5Db250ZXh0ID0gcGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZub2RlXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9jID0gZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHsgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoY29udGV4dFZtLCBhLCBiLCBjLCBkLCBuZWVkTm9ybWFsaXphdGlvbik7IH07XG4gIH1cbn1cblxuaW5zdGFsbFJlbmRlckhlbHBlcnMoRnVuY3Rpb25hbFJlbmRlckNvbnRleHQucHJvdG90eXBlKTtcblxuZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb25hbENvbXBvbmVudCAoXG4gIEN0b3IsXG4gIHByb3BzRGF0YSxcbiAgZGF0YSxcbiAgY29udGV4dFZtLFxuICBjaGlsZHJlblxuKSB7XG4gIHZhciBvcHRpb25zID0gQ3Rvci5vcHRpb25zO1xuICB2YXIgcHJvcHMgPSB7fTtcbiAgdmFyIHByb3BPcHRpb25zID0gb3B0aW9ucy5wcm9wcztcbiAgaWYgKGlzRGVmKHByb3BPcHRpb25zKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wT3B0aW9ucykge1xuICAgICAgcHJvcHNba2V5XSA9IHZhbGlkYXRlUHJvcChrZXksIHByb3BPcHRpb25zLCBwcm9wc0RhdGEgfHwgZW1wdHlPYmplY3QpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoaXNEZWYoZGF0YS5hdHRycykpIHsgbWVyZ2VQcm9wcyhwcm9wcywgZGF0YS5hdHRycyk7IH1cbiAgICBpZiAoaXNEZWYoZGF0YS5wcm9wcykpIHsgbWVyZ2VQcm9wcyhwcm9wcywgZGF0YS5wcm9wcyk7IH1cbiAgfVxuXG4gIHZhciByZW5kZXJDb250ZXh0ID0gbmV3IEZ1bmN0aW9uYWxSZW5kZXJDb250ZXh0KFxuICAgIGRhdGEsXG4gICAgcHJvcHMsXG4gICAgY2hpbGRyZW4sXG4gICAgY29udGV4dFZtLFxuICAgIEN0b3JcbiAgKTtcblxuICB2YXIgdm5vZGUgPSBvcHRpb25zLnJlbmRlci5jYWxsKG51bGwsIHJlbmRlckNvbnRleHQuX2MsIHJlbmRlckNvbnRleHQpO1xuXG4gIGlmICh2bm9kZSBpbnN0YW5jZW9mIFZOb2RlKSB7XG4gICAgcmV0dXJuIGNsb25lQW5kTWFya0Z1bmN0aW9uYWxSZXN1bHQodm5vZGUsIGRhdGEsIHJlbmRlckNvbnRleHQucGFyZW50LCBvcHRpb25zLCByZW5kZXJDb250ZXh0KVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodm5vZGUpKSB7XG4gICAgdmFyIHZub2RlcyA9IG5vcm1hbGl6ZUNoaWxkcmVuKHZub2RlKSB8fCBbXTtcbiAgICB2YXIgcmVzID0gbmV3IEFycmF5KHZub2Rlcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdm5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICByZXNbaV0gPSBjbG9uZUFuZE1hcmtGdW5jdGlvbmFsUmVzdWx0KHZub2Rlc1tpXSwgZGF0YSwgcmVuZGVyQ29udGV4dC5wYXJlbnQsIG9wdGlvbnMsIHJlbmRlckNvbnRleHQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzXG4gIH1cbn1cblxuZnVuY3Rpb24gY2xvbmVBbmRNYXJrRnVuY3Rpb25hbFJlc3VsdCAodm5vZGUsIGRhdGEsIGNvbnRleHRWbSwgb3B0aW9ucywgcmVuZGVyQ29udGV4dCkge1xuICAvLyAjNzgxNyBjbG9uZSBub2RlIGJlZm9yZSBzZXR0aW5nIGZuQ29udGV4dCwgb3RoZXJ3aXNlIGlmIHRoZSBub2RlIGlzIHJldXNlZFxuICAvLyAoZS5nLiBpdCB3YXMgZnJvbSBhIGNhY2hlZCBub3JtYWwgc2xvdCkgdGhlIGZuQ29udGV4dCBjYXVzZXMgbmFtZWQgc2xvdHNcbiAgLy8gdGhhdCBzaG91bGQgbm90IGJlIG1hdGNoZWQgdG8gbWF0Y2guXG4gIHZhciBjbG9uZSA9IGNsb25lVk5vZGUodm5vZGUpO1xuICBjbG9uZS5mbkNvbnRleHQgPSBjb250ZXh0Vm07XG4gIGNsb25lLmZuT3B0aW9ucyA9IG9wdGlvbnM7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgKGNsb25lLmRldnRvb2xzTWV0YSA9IGNsb25lLmRldnRvb2xzTWV0YSB8fCB7fSkucmVuZGVyQ29udGV4dCA9IHJlbmRlckNvbnRleHQ7XG4gIH1cbiAgaWYgKGRhdGEuc2xvdCkge1xuICAgIChjbG9uZS5kYXRhIHx8IChjbG9uZS5kYXRhID0ge30pKS5zbG90ID0gZGF0YS5zbG90O1xuICB9XG4gIHJldHVybiBjbG9uZVxufVxuXG5mdW5jdGlvbiBtZXJnZVByb3BzICh0bywgZnJvbSkge1xuICBmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuICAgIHRvW2NhbWVsaXplKGtleSldID0gZnJvbVtrZXldO1xuICB9XG59XG5cbi8qICAqL1xuXG4vKiAgKi9cblxuLyogICovXG5cbi8qICAqL1xuXG4vLyBpbmxpbmUgaG9va3MgdG8gYmUgaW52b2tlZCBvbiBjb21wb25lbnQgVk5vZGVzIGR1cmluZyBwYXRjaFxudmFyIGNvbXBvbmVudFZOb2RlSG9va3MgPSB7XG4gIGluaXQ6IGZ1bmN0aW9uIGluaXQgKHZub2RlLCBoeWRyYXRpbmcpIHtcbiAgICBpZiAoXG4gICAgICB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSAmJlxuICAgICAgIXZub2RlLmNvbXBvbmVudEluc3RhbmNlLl9pc0Rlc3Ryb3llZCAmJlxuICAgICAgdm5vZGUuZGF0YS5rZWVwQWxpdmVcbiAgICApIHtcbiAgICAgIC8vIGtlcHQtYWxpdmUgY29tcG9uZW50cywgdHJlYXQgYXMgYSBwYXRjaFxuICAgICAgdmFyIG1vdW50ZWROb2RlID0gdm5vZGU7IC8vIHdvcmsgYXJvdW5kIGZsb3dcbiAgICAgIGNvbXBvbmVudFZOb2RlSG9va3MucHJlcGF0Y2gobW91bnRlZE5vZGUsIG1vdW50ZWROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGNoaWxkID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgPSBjcmVhdGVDb21wb25lbnRJbnN0YW5jZUZvclZub2RlKFxuICAgICAgICB2bm9kZSxcbiAgICAgICAgYWN0aXZlSW5zdGFuY2VcbiAgICAgICk7XG4gICAgICBjaGlsZC4kbW91bnQoaHlkcmF0aW5nID8gdm5vZGUuZWxtIDogdW5kZWZpbmVkLCBoeWRyYXRpbmcpO1xuICAgIH1cbiAgfSxcblxuICBwcmVwYXRjaDogZnVuY3Rpb24gcHJlcGF0Y2ggKG9sZFZub2RlLCB2bm9kZSkge1xuICAgIHZhciBvcHRpb25zID0gdm5vZGUuY29tcG9uZW50T3B0aW9ucztcbiAgICB2YXIgY2hpbGQgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IG9sZFZub2RlLmNvbXBvbmVudEluc3RhbmNlO1xuICAgIHVwZGF0ZUNoaWxkQ29tcG9uZW50KFxuICAgICAgY2hpbGQsXG4gICAgICBvcHRpb25zLnByb3BzRGF0YSwgLy8gdXBkYXRlZCBwcm9wc1xuICAgICAgb3B0aW9ucy5saXN0ZW5lcnMsIC8vIHVwZGF0ZWQgbGlzdGVuZXJzXG4gICAgICB2bm9kZSwgLy8gbmV3IHBhcmVudCB2bm9kZVxuICAgICAgb3B0aW9ucy5jaGlsZHJlbiAvLyBuZXcgY2hpbGRyZW5cbiAgICApO1xuICB9LFxuXG4gIGluc2VydDogZnVuY3Rpb24gaW5zZXJ0ICh2bm9kZSkge1xuICAgIHZhciBjb250ZXh0ID0gdm5vZGUuY29udGV4dDtcbiAgICB2YXIgY29tcG9uZW50SW5zdGFuY2UgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICBpZiAoIWNvbXBvbmVudEluc3RhbmNlLl9pc01vdW50ZWQpIHtcbiAgICAgIGNvbXBvbmVudEluc3RhbmNlLl9pc01vdW50ZWQgPSB0cnVlO1xuICAgICAgY2FsbEhvb2soY29tcG9uZW50SW5zdGFuY2UsICdtb3VudGVkJyk7XG4gICAgfVxuICAgIGlmICh2bm9kZS5kYXRhLmtlZXBBbGl2ZSkge1xuICAgICAgaWYgKGNvbnRleHQuX2lzTW91bnRlZCkge1xuICAgICAgICAvLyB2dWUtcm91dGVyIzEyMTJcbiAgICAgICAgLy8gRHVyaW5nIHVwZGF0ZXMsIGEga2VwdC1hbGl2ZSBjb21wb25lbnQncyBjaGlsZCBjb21wb25lbnRzIG1heVxuICAgICAgICAvLyBjaGFuZ2UsIHNvIGRpcmVjdGx5IHdhbGtpbmcgdGhlIHRyZWUgaGVyZSBtYXkgY2FsbCBhY3RpdmF0ZWQgaG9va3NcbiAgICAgICAgLy8gb24gaW5jb3JyZWN0IGNoaWxkcmVuLiBJbnN0ZWFkIHdlIHB1c2ggdGhlbSBpbnRvIGEgcXVldWUgd2hpY2ggd2lsbFxuICAgICAgICAvLyBiZSBwcm9jZXNzZWQgYWZ0ZXIgdGhlIHdob2xlIHBhdGNoIHByb2Nlc3MgZW5kZWQuXG4gICAgICAgIHF1ZXVlQWN0aXZhdGVkQ29tcG9uZW50KGNvbXBvbmVudEluc3RhbmNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQoY29tcG9uZW50SW5zdGFuY2UsIHRydWUgLyogZGlyZWN0ICovKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSAodm5vZGUpIHtcbiAgICB2YXIgY29tcG9uZW50SW5zdGFuY2UgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICBpZiAoIWNvbXBvbmVudEluc3RhbmNlLl9pc0Rlc3Ryb3llZCkge1xuICAgICAgaWYgKCF2bm9kZS5kYXRhLmtlZXBBbGl2ZSkge1xuICAgICAgICBjb21wb25lbnRJbnN0YW5jZS4kZGVzdHJveSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVhY3RpdmF0ZUNoaWxkQ29tcG9uZW50KGNvbXBvbmVudEluc3RhbmNlLCB0cnVlIC8qIGRpcmVjdCAqLyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG52YXIgaG9va3NUb01lcmdlID0gT2JqZWN0LmtleXMoY29tcG9uZW50Vk5vZGVIb29rcyk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudCAoXG4gIEN0b3IsXG4gIGRhdGEsXG4gIGNvbnRleHQsXG4gIGNoaWxkcmVuLFxuICB0YWdcbikge1xuICBpZiAoaXNVbmRlZihDdG9yKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGJhc2VDdG9yID0gY29udGV4dC4kb3B0aW9ucy5fYmFzZTtcblxuICAvLyBwbGFpbiBvcHRpb25zIG9iamVjdDogdHVybiBpdCBpbnRvIGEgY29uc3RydWN0b3JcbiAgaWYgKGlzT2JqZWN0KEN0b3IpKSB7XG4gICAgQ3RvciA9IGJhc2VDdG9yLmV4dGVuZChDdG9yKTtcbiAgfVxuXG4gIC8vIGlmIGF0IHRoaXMgc3RhZ2UgaXQncyBub3QgYSBjb25zdHJ1Y3RvciBvciBhbiBhc3luYyBjb21wb25lbnQgZmFjdG9yeSxcbiAgLy8gcmVqZWN0LlxuICBpZiAodHlwZW9mIEN0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FybigoXCJJbnZhbGlkIENvbXBvbmVudCBkZWZpbml0aW9uOiBcIiArIChTdHJpbmcoQ3RvcikpKSwgY29udGV4dCk7XG4gICAgfVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gYXN5bmMgY29tcG9uZW50XG4gIHZhciBhc3luY0ZhY3Rvcnk7XG4gIGlmIChpc1VuZGVmKEN0b3IuY2lkKSkge1xuICAgIGFzeW5jRmFjdG9yeSA9IEN0b3I7XG4gICAgQ3RvciA9IHJlc29sdmVBc3luY0NvbXBvbmVudChhc3luY0ZhY3RvcnksIGJhc2VDdG9yKTtcbiAgICBpZiAoQ3RvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyByZXR1cm4gYSBwbGFjZWhvbGRlciBub2RlIGZvciBhc3luYyBjb21wb25lbnQsIHdoaWNoIGlzIHJlbmRlcmVkXG4gICAgICAvLyBhcyBhIGNvbW1lbnQgbm9kZSBidXQgcHJlc2VydmVzIGFsbCB0aGUgcmF3IGluZm9ybWF0aW9uIGZvciB0aGUgbm9kZS5cbiAgICAgIC8vIHRoZSBpbmZvcm1hdGlvbiB3aWxsIGJlIHVzZWQgZm9yIGFzeW5jIHNlcnZlci1yZW5kZXJpbmcgYW5kIGh5ZHJhdGlvbi5cbiAgICAgIHJldHVybiBjcmVhdGVBc3luY1BsYWNlaG9sZGVyKFxuICAgICAgICBhc3luY0ZhY3RvcnksXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICB0YWdcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBkYXRhID0gZGF0YSB8fCB7fTtcblxuICAvLyByZXNvbHZlIGNvbnN0cnVjdG9yIG9wdGlvbnMgaW4gY2FzZSBnbG9iYWwgbWl4aW5zIGFyZSBhcHBsaWVkIGFmdGVyXG4gIC8vIGNvbXBvbmVudCBjb25zdHJ1Y3RvciBjcmVhdGlvblxuICByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zKEN0b3IpO1xuXG4gIC8vIHRyYW5zZm9ybSBjb21wb25lbnQgdi1tb2RlbCBkYXRhIGludG8gcHJvcHMgJiBldmVudHNcbiAgaWYgKGlzRGVmKGRhdGEubW9kZWwpKSB7XG4gICAgdHJhbnNmb3JtTW9kZWwoQ3Rvci5vcHRpb25zLCBkYXRhKTtcbiAgfVxuXG4gIC8vIGV4dHJhY3QgcHJvcHNcbiAgdmFyIHByb3BzRGF0YSA9IGV4dHJhY3RQcm9wc0Zyb21WTm9kZURhdGEoZGF0YSwgQ3RvciwgdGFnKTtcblxuICAvLyBmdW5jdGlvbmFsIGNvbXBvbmVudFxuICBpZiAoaXNUcnVlKEN0b3Iub3B0aW9ucy5mdW5jdGlvbmFsKSkge1xuICAgIHJldHVybiBjcmVhdGVGdW5jdGlvbmFsQ29tcG9uZW50KEN0b3IsIHByb3BzRGF0YSwgZGF0YSwgY29udGV4dCwgY2hpbGRyZW4pXG4gIH1cblxuICAvLyBleHRyYWN0IGxpc3RlbmVycywgc2luY2UgdGhlc2UgbmVlZHMgdG8gYmUgdHJlYXRlZCBhc1xuICAvLyBjaGlsZCBjb21wb25lbnQgbGlzdGVuZXJzIGluc3RlYWQgb2YgRE9NIGxpc3RlbmVyc1xuICB2YXIgbGlzdGVuZXJzID0gZGF0YS5vbjtcbiAgLy8gcmVwbGFjZSB3aXRoIGxpc3RlbmVycyB3aXRoIC5uYXRpdmUgbW9kaWZpZXJcbiAgLy8gc28gaXQgZ2V0cyBwcm9jZXNzZWQgZHVyaW5nIHBhcmVudCBjb21wb25lbnQgcGF0Y2guXG4gIGRhdGEub24gPSBkYXRhLm5hdGl2ZU9uO1xuXG4gIGlmIChpc1RydWUoQ3Rvci5vcHRpb25zLmFic3RyYWN0KSkge1xuICAgIC8vIGFic3RyYWN0IGNvbXBvbmVudHMgZG8gbm90IGtlZXAgYW55dGhpbmdcbiAgICAvLyBvdGhlciB0aGFuIHByb3BzICYgbGlzdGVuZXJzICYgc2xvdFxuXG4gICAgLy8gd29yayBhcm91bmQgZmxvd1xuICAgIHZhciBzbG90ID0gZGF0YS5zbG90O1xuICAgIGRhdGEgPSB7fTtcbiAgICBpZiAoc2xvdCkge1xuICAgICAgZGF0YS5zbG90ID0gc2xvdDtcbiAgICB9XG4gIH1cblxuICAvLyBpbnN0YWxsIGNvbXBvbmVudCBtYW5hZ2VtZW50IGhvb2tzIG9udG8gdGhlIHBsYWNlaG9sZGVyIG5vZGVcbiAgaW5zdGFsbENvbXBvbmVudEhvb2tzKGRhdGEpO1xuXG4gIC8vIHJldHVybiBhIHBsYWNlaG9sZGVyIHZub2RlXG4gIHZhciBuYW1lID0gQ3Rvci5vcHRpb25zLm5hbWUgfHwgdGFnO1xuICB2YXIgdm5vZGUgPSBuZXcgVk5vZGUoXG4gICAgKFwidnVlLWNvbXBvbmVudC1cIiArIChDdG9yLmNpZCkgKyAobmFtZSA/IChcIi1cIiArIG5hbWUpIDogJycpKSxcbiAgICBkYXRhLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb250ZXh0LFxuICAgIHsgQ3RvcjogQ3RvciwgcHJvcHNEYXRhOiBwcm9wc0RhdGEsIGxpc3RlbmVyczogbGlzdGVuZXJzLCB0YWc6IHRhZywgY2hpbGRyZW46IGNoaWxkcmVuIH0sXG4gICAgYXN5bmNGYWN0b3J5XG4gICk7XG5cbiAgcmV0dXJuIHZub2RlXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudEluc3RhbmNlRm9yVm5vZGUgKFxuICB2bm9kZSwgLy8gd2Uga25vdyBpdCdzIE1vdW50ZWRDb21wb25lbnRWTm9kZSBidXQgZmxvdyBkb2Vzbid0XG4gIHBhcmVudCAvLyBhY3RpdmVJbnN0YW5jZSBpbiBsaWZlY3ljbGUgc3RhdGVcbikge1xuICB2YXIgb3B0aW9ucyA9IHtcbiAgICBfaXNDb21wb25lbnQ6IHRydWUsXG4gICAgX3BhcmVudFZub2RlOiB2bm9kZSxcbiAgICBwYXJlbnQ6IHBhcmVudFxuICB9O1xuICAvLyBjaGVjayBpbmxpbmUtdGVtcGxhdGUgcmVuZGVyIGZ1bmN0aW9uc1xuICB2YXIgaW5saW5lVGVtcGxhdGUgPSB2bm9kZS5kYXRhLmlubGluZVRlbXBsYXRlO1xuICBpZiAoaXNEZWYoaW5saW5lVGVtcGxhdGUpKSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSBpbmxpbmVUZW1wbGF0ZS5yZW5kZXI7XG4gICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBpbmxpbmVUZW1wbGF0ZS5zdGF0aWNSZW5kZXJGbnM7XG4gIH1cbiAgcmV0dXJuIG5ldyB2bm9kZS5jb21wb25lbnRPcHRpb25zLkN0b3Iob3B0aW9ucylcbn1cblxuZnVuY3Rpb24gaW5zdGFsbENvbXBvbmVudEhvb2tzIChkYXRhKSB7XG4gIHZhciBob29rcyA9IGRhdGEuaG9vayB8fCAoZGF0YS5ob29rID0ge30pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGhvb2tzVG9NZXJnZS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBob29rc1RvTWVyZ2VbaV07XG4gICAgdmFyIGV4aXN0aW5nID0gaG9va3Nba2V5XTtcbiAgICB2YXIgdG9NZXJnZSA9IGNvbXBvbmVudFZOb2RlSG9va3Nba2V5XTtcbiAgICBpZiAoZXhpc3RpbmcgIT09IHRvTWVyZ2UgJiYgIShleGlzdGluZyAmJiBleGlzdGluZy5fbWVyZ2VkKSkge1xuICAgICAgaG9va3Nba2V5XSA9IGV4aXN0aW5nID8gbWVyZ2VIb29rJDEodG9NZXJnZSwgZXhpc3RpbmcpIDogdG9NZXJnZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VIb29rJDEgKGYxLCBmMikge1xuICB2YXIgbWVyZ2VkID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAvLyBmbG93IGNvbXBsYWlucyBhYm91dCBleHRyYSBhcmdzIHdoaWNoIGlzIHdoeSB3ZSB1c2UgYW55XG4gICAgZjEoYSwgYik7XG4gICAgZjIoYSwgYik7XG4gIH07XG4gIG1lcmdlZC5fbWVyZ2VkID0gdHJ1ZTtcbiAgcmV0dXJuIG1lcmdlZFxufVxuXG4vLyB0cmFuc2Zvcm0gY29tcG9uZW50IHYtbW9kZWwgaW5mbyAodmFsdWUgYW5kIGNhbGxiYWNrKSBpbnRvXG4vLyBwcm9wIGFuZCBldmVudCBoYW5kbGVyIHJlc3BlY3RpdmVseS5cbmZ1bmN0aW9uIHRyYW5zZm9ybU1vZGVsIChvcHRpb25zLCBkYXRhKSB7XG4gIHZhciBwcm9wID0gKG9wdGlvbnMubW9kZWwgJiYgb3B0aW9ucy5tb2RlbC5wcm9wKSB8fCAndmFsdWUnO1xuICB2YXIgZXZlbnQgPSAob3B0aW9ucy5tb2RlbCAmJiBvcHRpb25zLm1vZGVsLmV2ZW50KSB8fCAnaW5wdXQnXG4gIDsoZGF0YS5hdHRycyB8fCAoZGF0YS5hdHRycyA9IHt9KSlbcHJvcF0gPSBkYXRhLm1vZGVsLnZhbHVlO1xuICB2YXIgb24gPSBkYXRhLm9uIHx8IChkYXRhLm9uID0ge30pO1xuICB2YXIgZXhpc3RpbmcgPSBvbltldmVudF07XG4gIHZhciBjYWxsYmFjayA9IGRhdGEubW9kZWwuY2FsbGJhY2s7XG4gIGlmIChpc0RlZihleGlzdGluZykpIHtcbiAgICBpZiAoXG4gICAgICBBcnJheS5pc0FycmF5KGV4aXN0aW5nKVxuICAgICAgICA/IGV4aXN0aW5nLmluZGV4T2YoY2FsbGJhY2spID09PSAtMVxuICAgICAgICA6IGV4aXN0aW5nICE9PSBjYWxsYmFja1xuICAgICkge1xuICAgICAgb25bZXZlbnRdID0gW2NhbGxiYWNrXS5jb25jYXQoZXhpc3RpbmcpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBvbltldmVudF0gPSBjYWxsYmFjaztcbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIFNJTVBMRV9OT1JNQUxJWkUgPSAxO1xudmFyIEFMV0FZU19OT1JNQUxJWkUgPSAyO1xuXG4vLyB3cmFwcGVyIGZ1bmN0aW9uIGZvciBwcm92aWRpbmcgYSBtb3JlIGZsZXhpYmxlIGludGVyZmFjZVxuLy8gd2l0aG91dCBnZXR0aW5nIHllbGxlZCBhdCBieSBmbG93XG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50IChcbiAgY29udGV4dCxcbiAgdGFnLFxuICBkYXRhLFxuICBjaGlsZHJlbixcbiAgbm9ybWFsaXphdGlvblR5cGUsXG4gIGFsd2F5c05vcm1hbGl6ZVxuKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGRhdGEpIHx8IGlzUHJpbWl0aXZlKGRhdGEpKSB7XG4gICAgbm9ybWFsaXphdGlvblR5cGUgPSBjaGlsZHJlbjtcbiAgICBjaGlsZHJlbiA9IGRhdGE7XG4gICAgZGF0YSA9IHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoaXNUcnVlKGFsd2F5c05vcm1hbGl6ZSkpIHtcbiAgICBub3JtYWxpemF0aW9uVHlwZSA9IEFMV0FZU19OT1JNQUxJWkU7XG4gIH1cbiAgcmV0dXJuIF9jcmVhdGVFbGVtZW50KGNvbnRleHQsIHRhZywgZGF0YSwgY2hpbGRyZW4sIG5vcm1hbGl6YXRpb25UeXBlKVxufVxuXG5mdW5jdGlvbiBfY3JlYXRlRWxlbWVudCAoXG4gIGNvbnRleHQsXG4gIHRhZyxcbiAgZGF0YSxcbiAgY2hpbGRyZW4sXG4gIG5vcm1hbGl6YXRpb25UeXBlXG4pIHtcbiAgaWYgKGlzRGVmKGRhdGEpICYmIGlzRGVmKChkYXRhKS5fX29iX18pKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgXCJBdm9pZCB1c2luZyBvYnNlcnZlZCBkYXRhIG9iamVjdCBhcyB2bm9kZSBkYXRhOiBcIiArIChKU09OLnN0cmluZ2lmeShkYXRhKSkgKyBcIlxcblwiICtcbiAgICAgICdBbHdheXMgY3JlYXRlIGZyZXNoIHZub2RlIGRhdGEgb2JqZWN0cyBpbiBlYWNoIHJlbmRlciEnLFxuICAgICAgY29udGV4dFxuICAgICk7XG4gICAgcmV0dXJuIGNyZWF0ZUVtcHR5Vk5vZGUoKVxuICB9XG4gIC8vIG9iamVjdCBzeW50YXggaW4gdi1iaW5kXG4gIGlmIChpc0RlZihkYXRhKSAmJiBpc0RlZihkYXRhLmlzKSkge1xuICAgIHRhZyA9IGRhdGEuaXM7XG4gIH1cbiAgaWYgKCF0YWcpIHtcbiAgICAvLyBpbiBjYXNlIG9mIGNvbXBvbmVudCA6aXMgc2V0IHRvIGZhbHN5IHZhbHVlXG4gICAgcmV0dXJuIGNyZWF0ZUVtcHR5Vk5vZGUoKVxuICB9XG4gIC8vIHdhcm4gYWdhaW5zdCBub24tcHJpbWl0aXZlIGtleVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgIGlzRGVmKGRhdGEpICYmIGlzRGVmKGRhdGEua2V5KSAmJiAhaXNQcmltaXRpdmUoZGF0YS5rZXkpXG4gICkge1xuICAgIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdBdm9pZCB1c2luZyBub24tcHJpbWl0aXZlIHZhbHVlIGFzIGtleSwgJyArXG4gICAgICAgICd1c2Ugc3RyaW5nL251bWJlciB2YWx1ZSBpbnN0ZWFkLicsXG4gICAgICAgIGNvbnRleHRcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIC8vIHN1cHBvcnQgc2luZ2xlIGZ1bmN0aW9uIGNoaWxkcmVuIGFzIGRlZmF1bHQgc2NvcGVkIHNsb3RcbiAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmXG4gICAgdHlwZW9mIGNoaWxkcmVuWzBdID09PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIGRhdGEgPSBkYXRhIHx8IHt9O1xuICAgIGRhdGEuc2NvcGVkU2xvdHMgPSB7IGRlZmF1bHQ6IGNoaWxkcmVuWzBdIH07XG4gICAgY2hpbGRyZW4ubGVuZ3RoID0gMDtcbiAgfVxuICBpZiAobm9ybWFsaXphdGlvblR5cGUgPT09IEFMV0FZU19OT1JNQUxJWkUpIHtcbiAgICBjaGlsZHJlbiA9IG5vcm1hbGl6ZUNoaWxkcmVuKGNoaWxkcmVuKTtcbiAgfSBlbHNlIGlmIChub3JtYWxpemF0aW9uVHlwZSA9PT0gU0lNUExFX05PUk1BTElaRSkge1xuICAgIGNoaWxkcmVuID0gc2ltcGxlTm9ybWFsaXplQ2hpbGRyZW4oY2hpbGRyZW4pO1xuICB9XG4gIHZhciB2bm9kZSwgbnM7XG4gIGlmICh0eXBlb2YgdGFnID09PSAnc3RyaW5nJykge1xuICAgIHZhciBDdG9yO1xuICAgIG5zID0gKGNvbnRleHQuJHZub2RlICYmIGNvbnRleHQuJHZub2RlLm5zKSB8fCBjb25maWcuZ2V0VGFnTmFtZXNwYWNlKHRhZyk7XG4gICAgaWYgKGNvbmZpZy5pc1Jlc2VydmVkVGFnKHRhZykpIHtcbiAgICAgIC8vIHBsYXRmb3JtIGJ1aWx0LWluIGVsZW1lbnRzXG4gICAgICB2bm9kZSA9IG5ldyBWTm9kZShcbiAgICAgICAgY29uZmlnLnBhcnNlUGxhdGZvcm1UYWdOYW1lKHRhZyksIGRhdGEsIGNoaWxkcmVuLFxuICAgICAgICB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29udGV4dFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKCghZGF0YSB8fCAhZGF0YS5wcmUpICYmIGlzRGVmKEN0b3IgPSByZXNvbHZlQXNzZXQoY29udGV4dC4kb3B0aW9ucywgJ2NvbXBvbmVudHMnLCB0YWcpKSkge1xuICAgICAgLy8gY29tcG9uZW50XG4gICAgICB2bm9kZSA9IGNyZWF0ZUNvbXBvbmVudChDdG9yLCBkYXRhLCBjb250ZXh0LCBjaGlsZHJlbiwgdGFnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdW5rbm93biBvciB1bmxpc3RlZCBuYW1lc3BhY2VkIGVsZW1lbnRzXG4gICAgICAvLyBjaGVjayBhdCBydW50aW1lIGJlY2F1c2UgaXQgbWF5IGdldCBhc3NpZ25lZCBhIG5hbWVzcGFjZSB3aGVuIGl0c1xuICAgICAgLy8gcGFyZW50IG5vcm1hbGl6ZXMgY2hpbGRyZW5cbiAgICAgIHZub2RlID0gbmV3IFZOb2RlKFxuICAgICAgICB0YWcsIGRhdGEsIGNoaWxkcmVuLFxuICAgICAgICB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29udGV4dFxuICAgICAgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gZGlyZWN0IGNvbXBvbmVudCBvcHRpb25zIC8gY29uc3RydWN0b3JcbiAgICB2bm9kZSA9IGNyZWF0ZUNvbXBvbmVudCh0YWcsIGRhdGEsIGNvbnRleHQsIGNoaWxkcmVuKTtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheSh2bm9kZSkpIHtcbiAgICByZXR1cm4gdm5vZGVcbiAgfSBlbHNlIGlmIChpc0RlZih2bm9kZSkpIHtcbiAgICBpZiAoaXNEZWYobnMpKSB7IGFwcGx5TlModm5vZGUsIG5zKTsgfVxuICAgIGlmIChpc0RlZihkYXRhKSkgeyByZWdpc3RlckRlZXBCaW5kaW5ncyhkYXRhKTsgfVxuICAgIHJldHVybiB2bm9kZVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBjcmVhdGVFbXB0eVZOb2RlKClcbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseU5TICh2bm9kZSwgbnMsIGZvcmNlKSB7XG4gIHZub2RlLm5zID0gbnM7XG4gIGlmICh2bm9kZS50YWcgPT09ICdmb3JlaWduT2JqZWN0Jykge1xuICAgIC8vIHVzZSBkZWZhdWx0IG5hbWVzcGFjZSBpbnNpZGUgZm9yZWlnbk9iamVjdFxuICAgIG5zID0gdW5kZWZpbmVkO1xuICAgIGZvcmNlID0gdHJ1ZTtcbiAgfVxuICBpZiAoaXNEZWYodm5vZGUuY2hpbGRyZW4pKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSB2bm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBjaGlsZCA9IHZub2RlLmNoaWxkcmVuW2ldO1xuICAgICAgaWYgKGlzRGVmKGNoaWxkLnRhZykgJiYgKFxuICAgICAgICBpc1VuZGVmKGNoaWxkLm5zKSB8fCAoaXNUcnVlKGZvcmNlKSAmJiBjaGlsZC50YWcgIT09ICdzdmcnKSkpIHtcbiAgICAgICAgYXBwbHlOUyhjaGlsZCwgbnMsIGZvcmNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gcmVmICM1MzE4XG4vLyBuZWNlc3NhcnkgdG8gZW5zdXJlIHBhcmVudCByZS1yZW5kZXIgd2hlbiBkZWVwIGJpbmRpbmdzIGxpa2UgOnN0eWxlIGFuZFxuLy8gOmNsYXNzIGFyZSB1c2VkIG9uIHNsb3Qgbm9kZXNcbmZ1bmN0aW9uIHJlZ2lzdGVyRGVlcEJpbmRpbmdzIChkYXRhKSB7XG4gIGlmIChpc09iamVjdChkYXRhLnN0eWxlKSkge1xuICAgIHRyYXZlcnNlKGRhdGEuc3R5bGUpO1xuICB9XG4gIGlmIChpc09iamVjdChkYXRhLmNsYXNzKSkge1xuICAgIHRyYXZlcnNlKGRhdGEuY2xhc3MpO1xuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0UmVuZGVyICh2bSkge1xuICB2bS5fdm5vZGUgPSBudWxsOyAvLyB0aGUgcm9vdCBvZiB0aGUgY2hpbGQgdHJlZVxuICB2bS5fc3RhdGljVHJlZXMgPSBudWxsOyAvLyB2LW9uY2UgY2FjaGVkIHRyZWVzXG4gIHZhciBvcHRpb25zID0gdm0uJG9wdGlvbnM7XG4gIHZhciBwYXJlbnRWbm9kZSA9IHZtLiR2bm9kZSA9IG9wdGlvbnMuX3BhcmVudFZub2RlOyAvLyB0aGUgcGxhY2Vob2xkZXIgbm9kZSBpbiBwYXJlbnQgdHJlZVxuICB2YXIgcmVuZGVyQ29udGV4dCA9IHBhcmVudFZub2RlICYmIHBhcmVudFZub2RlLmNvbnRleHQ7XG4gIHZtLiRzbG90cyA9IHJlc29sdmVTbG90cyhvcHRpb25zLl9yZW5kZXJDaGlsZHJlbiwgcmVuZGVyQ29udGV4dCk7XG4gIHZtLiRzY29wZWRTbG90cyA9IGVtcHR5T2JqZWN0O1xuICAvLyBiaW5kIHRoZSBjcmVhdGVFbGVtZW50IGZuIHRvIHRoaXMgaW5zdGFuY2VcbiAgLy8gc28gdGhhdCB3ZSBnZXQgcHJvcGVyIHJlbmRlciBjb250ZXh0IGluc2lkZSBpdC5cbiAgLy8gYXJncyBvcmRlcjogdGFnLCBkYXRhLCBjaGlsZHJlbiwgbm9ybWFsaXphdGlvblR5cGUsIGFsd2F5c05vcm1hbGl6ZVxuICAvLyBpbnRlcm5hbCB2ZXJzaW9uIGlzIHVzZWQgYnkgcmVuZGVyIGZ1bmN0aW9ucyBjb21waWxlZCBmcm9tIHRlbXBsYXRlc1xuICB2bS5fYyA9IGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7IHJldHVybiBjcmVhdGVFbGVtZW50KHZtLCBhLCBiLCBjLCBkLCBmYWxzZSk7IH07XG4gIC8vIG5vcm1hbGl6YXRpb24gaXMgYWx3YXlzIGFwcGxpZWQgZm9yIHRoZSBwdWJsaWMgdmVyc2lvbiwgdXNlZCBpblxuICAvLyB1c2VyLXdyaXR0ZW4gcmVuZGVyIGZ1bmN0aW9ucy5cbiAgdm0uJGNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAoYSwgYiwgYywgZCkgeyByZXR1cm4gY3JlYXRlRWxlbWVudCh2bSwgYSwgYiwgYywgZCwgdHJ1ZSk7IH07XG5cbiAgLy8gJGF0dHJzICYgJGxpc3RlbmVycyBhcmUgZXhwb3NlZCBmb3IgZWFzaWVyIEhPQyBjcmVhdGlvbi5cbiAgLy8gdGhleSBuZWVkIHRvIGJlIHJlYWN0aXZlIHNvIHRoYXQgSE9DcyB1c2luZyB0aGVtIGFyZSBhbHdheXMgdXBkYXRlZFxuICB2YXIgcGFyZW50RGF0YSA9IHBhcmVudFZub2RlICYmIHBhcmVudFZub2RlLmRhdGE7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBkZWZpbmVSZWFjdGl2ZSQkMSh2bSwgJyRhdHRycycsIHBhcmVudERhdGEgJiYgcGFyZW50RGF0YS5hdHRycyB8fCBlbXB0eU9iamVjdCwgZnVuY3Rpb24gKCkge1xuICAgICAgIWlzVXBkYXRpbmdDaGlsZENvbXBvbmVudCAmJiB3YXJuKFwiJGF0dHJzIGlzIHJlYWRvbmx5LlwiLCB2bSk7XG4gICAgfSwgdHJ1ZSk7XG4gICAgZGVmaW5lUmVhY3RpdmUkJDEodm0sICckbGlzdGVuZXJzJywgb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzIHx8IGVtcHR5T2JqZWN0LCBmdW5jdGlvbiAoKSB7XG4gICAgICAhaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50ICYmIHdhcm4oXCIkbGlzdGVuZXJzIGlzIHJlYWRvbmx5LlwiLCB2bSk7XG4gICAgfSwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgZGVmaW5lUmVhY3RpdmUkJDEodm0sICckYXR0cnMnLCBwYXJlbnREYXRhICYmIHBhcmVudERhdGEuYXR0cnMgfHwgZW1wdHlPYmplY3QsIG51bGwsIHRydWUpO1xuICAgIGRlZmluZVJlYWN0aXZlJCQxKHZtLCAnJGxpc3RlbmVycycsIG9wdGlvbnMuX3BhcmVudExpc3RlbmVycyB8fCBlbXB0eU9iamVjdCwgbnVsbCwgdHJ1ZSk7XG4gIH1cbn1cblxudmFyIGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSA9IG51bGw7XG5cbmZ1bmN0aW9uIHJlbmRlck1peGluIChWdWUpIHtcbiAgLy8gaW5zdGFsbCBydW50aW1lIGNvbnZlbmllbmNlIGhlbHBlcnNcbiAgaW5zdGFsbFJlbmRlckhlbHBlcnMoVnVlLnByb3RvdHlwZSk7XG5cbiAgVnVlLnByb3RvdHlwZS4kbmV4dFRpY2sgPSBmdW5jdGlvbiAoZm4pIHtcbiAgICByZXR1cm4gbmV4dFRpY2soZm4sIHRoaXMpXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS5fcmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgdmFyIHJlZiA9IHZtLiRvcHRpb25zO1xuICAgIHZhciByZW5kZXIgPSByZWYucmVuZGVyO1xuICAgIHZhciBfcGFyZW50Vm5vZGUgPSByZWYuX3BhcmVudFZub2RlO1xuXG4gICAgaWYgKF9wYXJlbnRWbm9kZSkge1xuICAgICAgdm0uJHNjb3BlZFNsb3RzID0gbm9ybWFsaXplU2NvcGVkU2xvdHMoXG4gICAgICAgIF9wYXJlbnRWbm9kZS5kYXRhLnNjb3BlZFNsb3RzLFxuICAgICAgICB2bS4kc2xvdHMsXG4gICAgICAgIHZtLiRzY29wZWRTbG90c1xuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBzZXQgcGFyZW50IHZub2RlLiB0aGlzIGFsbG93cyByZW5kZXIgZnVuY3Rpb25zIHRvIGhhdmUgYWNjZXNzXG4gICAgLy8gdG8gdGhlIGRhdGEgb24gdGhlIHBsYWNlaG9sZGVyIG5vZGUuXG4gICAgdm0uJHZub2RlID0gX3BhcmVudFZub2RlO1xuICAgIC8vIHJlbmRlciBzZWxmXG4gICAgdmFyIHZub2RlO1xuICAgIHRyeSB7XG4gICAgICAvLyBUaGVyZSdzIG5vIG5lZWQgdG8gbWFpbnRhaW4gYSBzdGFjayBiZWNhdWVzIGFsbCByZW5kZXIgZm5zIGFyZSBjYWxsZWRcbiAgICAgIC8vIHNlcGFyYXRlbHkgZnJvbSBvbmUgYW5vdGhlci4gTmVzdGVkIGNvbXBvbmVudCdzIHJlbmRlciBmbnMgYXJlIGNhbGxlZFxuICAgICAgLy8gd2hlbiBwYXJlbnQgY29tcG9uZW50IGlzIHBhdGNoZWQuXG4gICAgICBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UgPSB2bTtcbiAgICAgIHZub2RlID0gcmVuZGVyLmNhbGwodm0uX3JlbmRlclByb3h5LCB2bS4kY3JlYXRlRWxlbWVudCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sIFwicmVuZGVyXCIpO1xuICAgICAgLy8gcmV0dXJuIGVycm9yIHJlbmRlciByZXN1bHQsXG4gICAgICAvLyBvciBwcmV2aW91cyB2bm9kZSB0byBwcmV2ZW50IHJlbmRlciBlcnJvciBjYXVzaW5nIGJsYW5rIGNvbXBvbmVudFxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHZtLiRvcHRpb25zLnJlbmRlckVycm9yKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdm5vZGUgPSB2bS4kb3B0aW9ucy5yZW5kZXJFcnJvci5jYWxsKHZtLl9yZW5kZXJQcm94eSwgdm0uJGNyZWF0ZUVsZW1lbnQsIGUpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sIFwicmVuZGVyRXJyb3JcIik7XG4gICAgICAgICAgdm5vZGUgPSB2bS5fdm5vZGU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZub2RlID0gdm0uX3Zub2RlO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UgPSBudWxsO1xuICAgIH1cbiAgICAvLyBpZiB0aGUgcmV0dXJuZWQgYXJyYXkgY29udGFpbnMgb25seSBhIHNpbmdsZSBub2RlLCBhbGxvdyBpdFxuICAgIGlmIChBcnJheS5pc0FycmF5KHZub2RlKSAmJiB2bm9kZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHZub2RlID0gdm5vZGVbMF07XG4gICAgfVxuICAgIC8vIHJldHVybiBlbXB0eSB2bm9kZSBpbiBjYXNlIHRoZSByZW5kZXIgZnVuY3Rpb24gZXJyb3JlZCBvdXRcbiAgICBpZiAoISh2bm9kZSBpbnN0YW5jZW9mIFZOb2RlKSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgQXJyYXkuaXNBcnJheSh2bm9kZSkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnTXVsdGlwbGUgcm9vdCBub2RlcyByZXR1cm5lZCBmcm9tIHJlbmRlciBmdW5jdGlvbi4gUmVuZGVyIGZ1bmN0aW9uICcgK1xuICAgICAgICAgICdzaG91bGQgcmV0dXJuIGEgc2luZ2xlIHJvb3Qgbm9kZS4nLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB2bm9kZSA9IGNyZWF0ZUVtcHR5Vk5vZGUoKTtcbiAgICB9XG4gICAgLy8gc2V0IHBhcmVudFxuICAgIHZub2RlLnBhcmVudCA9IF9wYXJlbnRWbm9kZTtcbiAgICByZXR1cm4gdm5vZGVcbiAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGVuc3VyZUN0b3IgKGNvbXAsIGJhc2UpIHtcbiAgaWYgKFxuICAgIGNvbXAuX19lc01vZHVsZSB8fFxuICAgIChoYXNTeW1ib2wgJiYgY29tcFtTeW1ib2wudG9TdHJpbmdUYWddID09PSAnTW9kdWxlJylcbiAgKSB7XG4gICAgY29tcCA9IGNvbXAuZGVmYXVsdDtcbiAgfVxuICByZXR1cm4gaXNPYmplY3QoY29tcClcbiAgICA/IGJhc2UuZXh0ZW5kKGNvbXApXG4gICAgOiBjb21wXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUFzeW5jUGxhY2Vob2xkZXIgKFxuICBmYWN0b3J5LFxuICBkYXRhLFxuICBjb250ZXh0LFxuICBjaGlsZHJlbixcbiAgdGFnXG4pIHtcbiAgdmFyIG5vZGUgPSBjcmVhdGVFbXB0eVZOb2RlKCk7XG4gIG5vZGUuYXN5bmNGYWN0b3J5ID0gZmFjdG9yeTtcbiAgbm9kZS5hc3luY01ldGEgPSB7IGRhdGE6IGRhdGEsIGNvbnRleHQ6IGNvbnRleHQsIGNoaWxkcmVuOiBjaGlsZHJlbiwgdGFnOiB0YWcgfTtcbiAgcmV0dXJuIG5vZGVcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUFzeW5jQ29tcG9uZW50IChcbiAgZmFjdG9yeSxcbiAgYmFzZUN0b3Jcbikge1xuICBpZiAoaXNUcnVlKGZhY3RvcnkuZXJyb3IpICYmIGlzRGVmKGZhY3RvcnkuZXJyb3JDb21wKSkge1xuICAgIHJldHVybiBmYWN0b3J5LmVycm9yQ29tcFxuICB9XG5cbiAgaWYgKGlzRGVmKGZhY3RvcnkucmVzb2x2ZWQpKSB7XG4gICAgcmV0dXJuIGZhY3RvcnkucmVzb2x2ZWRcbiAgfVxuXG4gIHZhciBvd25lciA9IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZTtcbiAgaWYgKG93bmVyICYmIGlzRGVmKGZhY3Rvcnkub3duZXJzKSAmJiBmYWN0b3J5Lm93bmVycy5pbmRleE9mKG93bmVyKSA9PT0gLTEpIHtcbiAgICAvLyBhbHJlYWR5IHBlbmRpbmdcbiAgICBmYWN0b3J5Lm93bmVycy5wdXNoKG93bmVyKTtcbiAgfVxuXG4gIGlmIChpc1RydWUoZmFjdG9yeS5sb2FkaW5nKSAmJiBpc0RlZihmYWN0b3J5LmxvYWRpbmdDb21wKSkge1xuICAgIHJldHVybiBmYWN0b3J5LmxvYWRpbmdDb21wXG4gIH1cblxuICBpZiAob3duZXIgJiYgIWlzRGVmKGZhY3Rvcnkub3duZXJzKSkge1xuICAgIHZhciBvd25lcnMgPSBmYWN0b3J5Lm93bmVycyA9IFtvd25lcl07XG4gICAgdmFyIHN5bmMgPSB0cnVlO1xuICAgIHZhciB0aW1lckxvYWRpbmcgPSBudWxsO1xuICAgIHZhciB0aW1lclRpbWVvdXQgPSBudWxsXG5cbiAgICA7KG93bmVyKS4kb24oJ2hvb2s6ZGVzdHJveWVkJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVtb3ZlKG93bmVycywgb3duZXIpOyB9KTtcblxuICAgIHZhciBmb3JjZVJlbmRlciA9IGZ1bmN0aW9uIChyZW5kZXJDb21wbGV0ZWQpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gb3duZXJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAob3duZXJzW2ldKS4kZm9yY2VVcGRhdGUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlbmRlckNvbXBsZXRlZCkge1xuICAgICAgICBvd25lcnMubGVuZ3RoID0gMDtcbiAgICAgICAgaWYgKHRpbWVyTG9hZGluZyAhPT0gbnVsbCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lckxvYWRpbmcpO1xuICAgICAgICAgIHRpbWVyTG9hZGluZyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRpbWVyVGltZW91dCAhPT0gbnVsbCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lclRpbWVvdXQpO1xuICAgICAgICAgIHRpbWVyVGltZW91dCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIHJlc29sdmUgPSBvbmNlKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIC8vIGNhY2hlIHJlc29sdmVkXG4gICAgICBmYWN0b3J5LnJlc29sdmVkID0gZW5zdXJlQ3RvcihyZXMsIGJhc2VDdG9yKTtcbiAgICAgIC8vIGludm9rZSBjYWxsYmFja3Mgb25seSBpZiB0aGlzIGlzIG5vdCBhIHN5bmNocm9ub3VzIHJlc29sdmVcbiAgICAgIC8vIChhc3luYyByZXNvbHZlcyBhcmUgc2hpbW1lZCBhcyBzeW5jaHJvbm91cyBkdXJpbmcgU1NSKVxuICAgICAgaWYgKCFzeW5jKSB7XG4gICAgICAgIGZvcmNlUmVuZGVyKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3duZXJzLmxlbmd0aCA9IDA7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB2YXIgcmVqZWN0ID0gb25jZShmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgIFwiRmFpbGVkIHRvIHJlc29sdmUgYXN5bmMgY29tcG9uZW50OiBcIiArIChTdHJpbmcoZmFjdG9yeSkpICtcbiAgICAgICAgKHJlYXNvbiA/IChcIlxcblJlYXNvbjogXCIgKyByZWFzb24pIDogJycpXG4gICAgICApO1xuICAgICAgaWYgKGlzRGVmKGZhY3RvcnkuZXJyb3JDb21wKSkge1xuICAgICAgICBmYWN0b3J5LmVycm9yID0gdHJ1ZTtcbiAgICAgICAgZm9yY2VSZW5kZXIodHJ1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB2YXIgcmVzID0gZmFjdG9yeShyZXNvbHZlLCByZWplY3QpO1xuXG4gICAgaWYgKGlzT2JqZWN0KHJlcykpIHtcbiAgICAgIGlmIChpc1Byb21pc2UocmVzKSkge1xuICAgICAgICAvLyAoKSA9PiBQcm9taXNlXG4gICAgICAgIGlmIChpc1VuZGVmKGZhY3RvcnkucmVzb2x2ZWQpKSB7XG4gICAgICAgICAgcmVzLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc1Byb21pc2UocmVzLmNvbXBvbmVudCkpIHtcbiAgICAgICAgcmVzLmNvbXBvbmVudC50aGVuKHJlc29sdmUsIHJlamVjdCk7XG5cbiAgICAgICAgaWYgKGlzRGVmKHJlcy5lcnJvcikpIHtcbiAgICAgICAgICBmYWN0b3J5LmVycm9yQ29tcCA9IGVuc3VyZUN0b3IocmVzLmVycm9yLCBiYXNlQ3Rvcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEZWYocmVzLmxvYWRpbmcpKSB7XG4gICAgICAgICAgZmFjdG9yeS5sb2FkaW5nQ29tcCA9IGVuc3VyZUN0b3IocmVzLmxvYWRpbmcsIGJhc2VDdG9yKTtcbiAgICAgICAgICBpZiAocmVzLmRlbGF5ID09PSAwKSB7XG4gICAgICAgICAgICBmYWN0b3J5LmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aW1lckxvYWRpbmcgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgdGltZXJMb2FkaW5nID0gbnVsbDtcbiAgICAgICAgICAgICAgaWYgKGlzVW5kZWYoZmFjdG9yeS5yZXNvbHZlZCkgJiYgaXNVbmRlZihmYWN0b3J5LmVycm9yKSkge1xuICAgICAgICAgICAgICAgIGZhY3RvcnkubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgZm9yY2VSZW5kZXIoZmFsc2UpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCByZXMuZGVsYXkgfHwgMjAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEZWYocmVzLnRpbWVvdXQpKSB7XG4gICAgICAgICAgdGltZXJUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aW1lclRpbWVvdXQgPSBudWxsO1xuICAgICAgICAgICAgaWYgKGlzVW5kZWYoZmFjdG9yeS5yZXNvbHZlZCkpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbidcbiAgICAgICAgICAgICAgICAgID8gKFwidGltZW91dCAoXCIgKyAocmVzLnRpbWVvdXQpICsgXCJtcylcIilcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIHJlcy50aW1lb3V0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHN5bmMgPSBmYWxzZTtcbiAgICAvLyByZXR1cm4gaW4gY2FzZSByZXNvbHZlZCBzeW5jaHJvbm91c2x5XG4gICAgcmV0dXJuIGZhY3RvcnkubG9hZGluZ1xuICAgICAgPyBmYWN0b3J5LmxvYWRpbmdDb21wXG4gICAgICA6IGZhY3RvcnkucmVzb2x2ZWRcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaXNBc3luY1BsYWNlaG9sZGVyIChub2RlKSB7XG4gIHJldHVybiBub2RlLmlzQ29tbWVudCAmJiBub2RlLmFzeW5jRmFjdG9yeVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gZ2V0Rmlyc3RDb21wb25lbnRDaGlsZCAoY2hpbGRyZW4pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGMgPSBjaGlsZHJlbltpXTtcbiAgICAgIGlmIChpc0RlZihjKSAmJiAoaXNEZWYoYy5jb21wb25lbnRPcHRpb25zKSB8fCBpc0FzeW5jUGxhY2Vob2xkZXIoYykpKSB7XG4gICAgICAgIHJldHVybiBjXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdEV2ZW50cyAodm0pIHtcbiAgdm0uX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZtLl9oYXNIb29rRXZlbnQgPSBmYWxzZTtcbiAgLy8gaW5pdCBwYXJlbnQgYXR0YWNoZWQgZXZlbnRzXG4gIHZhciBsaXN0ZW5lcnMgPSB2bS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xuICBpZiAobGlzdGVuZXJzKSB7XG4gICAgdXBkYXRlQ29tcG9uZW50TGlzdGVuZXJzKHZtLCBsaXN0ZW5lcnMpO1xuICB9XG59XG5cbnZhciB0YXJnZXQ7XG5cbmZ1bmN0aW9uIGFkZCAoZXZlbnQsIGZuKSB7XG4gIHRhcmdldC4kb24oZXZlbnQsIGZuKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlJDEgKGV2ZW50LCBmbikge1xuICB0YXJnZXQuJG9mZihldmVudCwgZm4pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVPbmNlSGFuZGxlciAoZXZlbnQsIGZuKSB7XG4gIHZhciBfdGFyZ2V0ID0gdGFyZ2V0O1xuICByZXR1cm4gZnVuY3Rpb24gb25jZUhhbmRsZXIgKCkge1xuICAgIHZhciByZXMgPSBmbi5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgIGlmIChyZXMgIT09IG51bGwpIHtcbiAgICAgIF90YXJnZXQuJG9mZihldmVudCwgb25jZUhhbmRsZXIpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVDb21wb25lbnRMaXN0ZW5lcnMgKFxuICB2bSxcbiAgbGlzdGVuZXJzLFxuICBvbGRMaXN0ZW5lcnNcbikge1xuICB0YXJnZXQgPSB2bTtcbiAgdXBkYXRlTGlzdGVuZXJzKGxpc3RlbmVycywgb2xkTGlzdGVuZXJzIHx8IHt9LCBhZGQsIHJlbW92ZSQxLCBjcmVhdGVPbmNlSGFuZGxlciwgdm0pO1xuICB0YXJnZXQgPSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGV2ZW50c01peGluIChWdWUpIHtcbiAgdmFyIGhvb2tSRSA9IC9eaG9vazovO1xuICBWdWUucHJvdG90eXBlLiRvbiA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGV2ZW50KSkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBldmVudC5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgdm0uJG9uKGV2ZW50W2ldLCBmbik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICh2bS5fZXZlbnRzW2V2ZW50XSB8fCAodm0uX2V2ZW50c1tldmVudF0gPSBbXSkpLnB1c2goZm4pO1xuICAgICAgLy8gb3B0aW1pemUgaG9vazpldmVudCBjb3N0IGJ5IHVzaW5nIGEgYm9vbGVhbiBmbGFnIG1hcmtlZCBhdCByZWdpc3RyYXRpb25cbiAgICAgIC8vIGluc3RlYWQgb2YgYSBoYXNoIGxvb2t1cFxuICAgICAgaWYgKGhvb2tSRS50ZXN0KGV2ZW50KSkge1xuICAgICAgICB2bS5faGFzSG9va0V2ZW50ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZtXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kb25jZSA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGZ1bmN0aW9uIG9uICgpIHtcbiAgICAgIHZtLiRvZmYoZXZlbnQsIG9uKTtcbiAgICAgIGZuLmFwcGx5KHZtLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgICBvbi5mbiA9IGZuO1xuICAgIHZtLiRvbihldmVudCwgb24pO1xuICAgIHJldHVybiB2bVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJG9mZiA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIC8vIGFsbFxuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgdm0uX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4gICAgLy8gYXJyYXkgb2YgZXZlbnRzXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXZlbnQpKSB7XG4gICAgICBmb3IgKHZhciBpJDEgPSAwLCBsID0gZXZlbnQubGVuZ3RoOyBpJDEgPCBsOyBpJDErKykge1xuICAgICAgICB2bS4kb2ZmKGV2ZW50W2kkMV0sIGZuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICAvLyBzcGVjaWZpYyBldmVudFxuICAgIHZhciBjYnMgPSB2bS5fZXZlbnRzW2V2ZW50XTtcbiAgICBpZiAoIWNicykge1xuICAgICAgcmV0dXJuIHZtXG4gICAgfVxuICAgIGlmICghZm4pIHtcbiAgICAgIHZtLl9ldmVudHNbZXZlbnRdID0gbnVsbDtcbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICAvLyBzcGVjaWZpYyBoYW5kbGVyXG4gICAgdmFyIGNiO1xuICAgIHZhciBpID0gY2JzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICBjYiA9IGNic1tpXTtcbiAgICAgIGlmIChjYiA9PT0gZm4gfHwgY2IuZm4gPT09IGZuKSB7XG4gICAgICAgIGNicy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2bVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJGVtaXQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgbG93ZXJDYXNlRXZlbnQgPSBldmVudC50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKGxvd2VyQ2FzZUV2ZW50ICE9PSBldmVudCAmJiB2bS5fZXZlbnRzW2xvd2VyQ2FzZUV2ZW50XSkge1xuICAgICAgICB0aXAoXG4gICAgICAgICAgXCJFdmVudCBcXFwiXCIgKyBsb3dlckNhc2VFdmVudCArIFwiXFxcIiBpcyBlbWl0dGVkIGluIGNvbXBvbmVudCBcIiArXG4gICAgICAgICAgKGZvcm1hdENvbXBvbmVudE5hbWUodm0pKSArIFwiIGJ1dCB0aGUgaGFuZGxlciBpcyByZWdpc3RlcmVkIGZvciBcXFwiXCIgKyBldmVudCArIFwiXFxcIi4gXCIgK1xuICAgICAgICAgIFwiTm90ZSB0aGF0IEhUTUwgYXR0cmlidXRlcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgeW91IGNhbm5vdCB1c2UgXCIgK1xuICAgICAgICAgIFwidi1vbiB0byBsaXN0ZW4gdG8gY2FtZWxDYXNlIGV2ZW50cyB3aGVuIHVzaW5nIGluLURPTSB0ZW1wbGF0ZXMuIFwiICtcbiAgICAgICAgICBcIllvdSBzaG91bGQgcHJvYmFibHkgdXNlIFxcXCJcIiArIChoeXBoZW5hdGUoZXZlbnQpKSArIFwiXFxcIiBpbnN0ZWFkIG9mIFxcXCJcIiArIGV2ZW50ICsgXCJcXFwiLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBjYnMgPSB2bS5fZXZlbnRzW2V2ZW50XTtcbiAgICBpZiAoY2JzKSB7XG4gICAgICBjYnMgPSBjYnMubGVuZ3RoID4gMSA/IHRvQXJyYXkoY2JzKSA6IGNicztcbiAgICAgIHZhciBhcmdzID0gdG9BcnJheShhcmd1bWVudHMsIDEpO1xuICAgICAgdmFyIGluZm8gPSBcImV2ZW50IGhhbmRsZXIgZm9yIFxcXCJcIiArIGV2ZW50ICsgXCJcXFwiXCI7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNicy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaW52b2tlV2l0aEVycm9ySGFuZGxpbmcoY2JzW2ldLCB2bSwgYXJncywgdm0sIGluZm8pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdm1cbiAgfTtcbn1cblxuLyogICovXG5cbnZhciBhY3RpdmVJbnN0YW5jZSA9IG51bGw7XG52YXIgaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50ID0gZmFsc2U7XG5cbmZ1bmN0aW9uIHNldEFjdGl2ZUluc3RhbmNlKHZtKSB7XG4gIHZhciBwcmV2QWN0aXZlSW5zdGFuY2UgPSBhY3RpdmVJbnN0YW5jZTtcbiAgYWN0aXZlSW5zdGFuY2UgPSB2bTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBhY3RpdmVJbnN0YW5jZSA9IHByZXZBY3RpdmVJbnN0YW5jZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0TGlmZWN5Y2xlICh2bSkge1xuICB2YXIgb3B0aW9ucyA9IHZtLiRvcHRpb25zO1xuXG4gIC8vIGxvY2F0ZSBmaXJzdCBub24tYWJzdHJhY3QgcGFyZW50XG4gIHZhciBwYXJlbnQgPSBvcHRpb25zLnBhcmVudDtcbiAgaWYgKHBhcmVudCAmJiAhb3B0aW9ucy5hYnN0cmFjdCkge1xuICAgIHdoaWxlIChwYXJlbnQuJG9wdGlvbnMuYWJzdHJhY3QgJiYgcGFyZW50LiRwYXJlbnQpIHtcbiAgICAgIHBhcmVudCA9IHBhcmVudC4kcGFyZW50O1xuICAgIH1cbiAgICBwYXJlbnQuJGNoaWxkcmVuLnB1c2godm0pO1xuICB9XG5cbiAgdm0uJHBhcmVudCA9IHBhcmVudDtcbiAgdm0uJHJvb3QgPSBwYXJlbnQgPyBwYXJlbnQuJHJvb3QgOiB2bTtcblxuICB2bS4kY2hpbGRyZW4gPSBbXTtcbiAgdm0uJHJlZnMgPSB7fTtcblxuICB2bS5fd2F0Y2hlciA9IG51bGw7XG4gIHZtLl9pbmFjdGl2ZSA9IG51bGw7XG4gIHZtLl9kaXJlY3RJbmFjdGl2ZSA9IGZhbHNlO1xuICB2bS5faXNNb3VudGVkID0gZmFsc2U7XG4gIHZtLl9pc0Rlc3Ryb3llZCA9IGZhbHNlO1xuICB2bS5faXNCZWluZ0Rlc3Ryb3llZCA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBsaWZlY3ljbGVNaXhpbiAoVnVlKSB7XG4gIFZ1ZS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uICh2bm9kZSwgaHlkcmF0aW5nKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICB2YXIgcHJldkVsID0gdm0uJGVsO1xuICAgIHZhciBwcmV2Vm5vZGUgPSB2bS5fdm5vZGU7XG4gICAgdmFyIHJlc3RvcmVBY3RpdmVJbnN0YW5jZSA9IHNldEFjdGl2ZUluc3RhbmNlKHZtKTtcbiAgICB2bS5fdm5vZGUgPSB2bm9kZTtcbiAgICAvLyBWdWUucHJvdG90eXBlLl9fcGF0Y2hfXyBpcyBpbmplY3RlZCBpbiBlbnRyeSBwb2ludHNcbiAgICAvLyBiYXNlZCBvbiB0aGUgcmVuZGVyaW5nIGJhY2tlbmQgdXNlZC5cbiAgICBpZiAoIXByZXZWbm9kZSkge1xuICAgICAgLy8gaW5pdGlhbCByZW5kZXJcbiAgICAgIHZtLiRlbCA9IHZtLl9fcGF0Y2hfXyh2bS4kZWwsIHZub2RlLCBoeWRyYXRpbmcsIGZhbHNlIC8qIHJlbW92ZU9ubHkgKi8pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB1cGRhdGVzXG4gICAgICB2bS4kZWwgPSB2bS5fX3BhdGNoX18ocHJldlZub2RlLCB2bm9kZSk7XG4gICAgfVxuICAgIHJlc3RvcmVBY3RpdmVJbnN0YW5jZSgpO1xuICAgIC8vIHVwZGF0ZSBfX3Z1ZV9fIHJlZmVyZW5jZVxuICAgIGlmIChwcmV2RWwpIHtcbiAgICAgIHByZXZFbC5fX3Z1ZV9fID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHZtLiRlbCkge1xuICAgICAgdm0uJGVsLl9fdnVlX18gPSB2bTtcbiAgICB9XG4gICAgLy8gaWYgcGFyZW50IGlzIGFuIEhPQywgdXBkYXRlIGl0cyAkZWwgYXMgd2VsbFxuICAgIGlmICh2bS4kdm5vZGUgJiYgdm0uJHBhcmVudCAmJiB2bS4kdm5vZGUgPT09IHZtLiRwYXJlbnQuX3Zub2RlKSB7XG4gICAgICB2bS4kcGFyZW50LiRlbCA9IHZtLiRlbDtcbiAgICB9XG4gICAgLy8gdXBkYXRlZCBob29rIGlzIGNhbGxlZCBieSB0aGUgc2NoZWR1bGVyIHRvIGVuc3VyZSB0aGF0IGNoaWxkcmVuIGFyZVxuICAgIC8vIHVwZGF0ZWQgaW4gYSBwYXJlbnQncyB1cGRhdGVkIGhvb2suXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAodm0uX3dhdGNoZXIpIHtcbiAgICAgIHZtLl93YXRjaGVyLnVwZGF0ZSgpO1xuICAgIH1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRkZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl9pc0JlaW5nRGVzdHJveWVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FsbEhvb2sodm0sICdiZWZvcmVEZXN0cm95Jyk7XG4gICAgdm0uX2lzQmVpbmdEZXN0cm95ZWQgPSB0cnVlO1xuICAgIC8vIHJlbW92ZSBzZWxmIGZyb20gcGFyZW50XG4gICAgdmFyIHBhcmVudCA9IHZtLiRwYXJlbnQ7XG4gICAgaWYgKHBhcmVudCAmJiAhcGFyZW50Ll9pc0JlaW5nRGVzdHJveWVkICYmICF2bS4kb3B0aW9ucy5hYnN0cmFjdCkge1xuICAgICAgcmVtb3ZlKHBhcmVudC4kY2hpbGRyZW4sIHZtKTtcbiAgICB9XG4gICAgLy8gdGVhcmRvd24gd2F0Y2hlcnNcbiAgICBpZiAodm0uX3dhdGNoZXIpIHtcbiAgICAgIHZtLl93YXRjaGVyLnRlYXJkb3duKCk7XG4gICAgfVxuICAgIHZhciBpID0gdm0uX3dhdGNoZXJzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB2bS5fd2F0Y2hlcnNbaV0udGVhcmRvd24oKTtcbiAgICB9XG4gICAgLy8gcmVtb3ZlIHJlZmVyZW5jZSBmcm9tIGRhdGEgb2JcbiAgICAvLyBmcm96ZW4gb2JqZWN0IG1heSBub3QgaGF2ZSBvYnNlcnZlci5cbiAgICBpZiAodm0uX2RhdGEuX19vYl9fKSB7XG4gICAgICB2bS5fZGF0YS5fX29iX18udm1Db3VudC0tO1xuICAgIH1cbiAgICAvLyBjYWxsIHRoZSBsYXN0IGhvb2suLi5cbiAgICB2bS5faXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgIC8vIGludm9rZSBkZXN0cm95IGhvb2tzIG9uIGN1cnJlbnQgcmVuZGVyZWQgdHJlZVxuICAgIHZtLl9fcGF0Y2hfXyh2bS5fdm5vZGUsIG51bGwpO1xuICAgIC8vIGZpcmUgZGVzdHJveWVkIGhvb2tcbiAgICBjYWxsSG9vayh2bSwgJ2Rlc3Ryb3llZCcpO1xuICAgIC8vIHR1cm4gb2ZmIGFsbCBpbnN0YW5jZSBsaXN0ZW5lcnMuXG4gICAgdm0uJG9mZigpO1xuICAgIC8vIHJlbW92ZSBfX3Z1ZV9fIHJlZmVyZW5jZVxuICAgIGlmICh2bS4kZWwpIHtcbiAgICAgIHZtLiRlbC5fX3Z1ZV9fID0gbnVsbDtcbiAgICB9XG4gICAgLy8gcmVsZWFzZSBjaXJjdWxhciByZWZlcmVuY2UgKCM2NzU5KVxuICAgIGlmICh2bS4kdm5vZGUpIHtcbiAgICAgIHZtLiR2bm9kZS5wYXJlbnQgPSBudWxsO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gbW91bnRDb21wb25lbnQgKFxuICB2bSxcbiAgZWwsXG4gIGh5ZHJhdGluZ1xuKSB7XG4gIHZtLiRlbCA9IGVsO1xuICBpZiAoIXZtLiRvcHRpb25zLnJlbmRlcikge1xuICAgIHZtLiRvcHRpb25zLnJlbmRlciA9IGNyZWF0ZUVtcHR5Vk5vZGU7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKCh2bS4kb3B0aW9ucy50ZW1wbGF0ZSAmJiB2bS4kb3B0aW9ucy50ZW1wbGF0ZS5jaGFyQXQoMCkgIT09ICcjJykgfHxcbiAgICAgICAgdm0uJG9wdGlvbnMuZWwgfHwgZWwpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnWW91IGFyZSB1c2luZyB0aGUgcnVudGltZS1vbmx5IGJ1aWxkIG9mIFZ1ZSB3aGVyZSB0aGUgdGVtcGxhdGUgJyArXG4gICAgICAgICAgJ2NvbXBpbGVyIGlzIG5vdCBhdmFpbGFibGUuIEVpdGhlciBwcmUtY29tcGlsZSB0aGUgdGVtcGxhdGVzIGludG8gJyArXG4gICAgICAgICAgJ3JlbmRlciBmdW5jdGlvbnMsIG9yIHVzZSB0aGUgY29tcGlsZXItaW5jbHVkZWQgYnVpbGQuJyxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnRmFpbGVkIHRvIG1vdW50IGNvbXBvbmVudDogdGVtcGxhdGUgb3IgcmVuZGVyIGZ1bmN0aW9uIG5vdCBkZWZpbmVkLicsXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY2FsbEhvb2sodm0sICdiZWZvcmVNb3VudCcpO1xuXG4gIHZhciB1cGRhdGVDb21wb25lbnQ7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjb25maWcucGVyZm9ybWFuY2UgJiYgbWFyaykge1xuICAgIHVwZGF0ZUNvbXBvbmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBuYW1lID0gdm0uX25hbWU7XG4gICAgICB2YXIgaWQgPSB2bS5fdWlkO1xuICAgICAgdmFyIHN0YXJ0VGFnID0gXCJ2dWUtcGVyZi1zdGFydDpcIiArIGlkO1xuICAgICAgdmFyIGVuZFRhZyA9IFwidnVlLXBlcmYtZW5kOlwiICsgaWQ7XG5cbiAgICAgIG1hcmsoc3RhcnRUYWcpO1xuICAgICAgdmFyIHZub2RlID0gdm0uX3JlbmRlcigpO1xuICAgICAgbWFyayhlbmRUYWcpO1xuICAgICAgbWVhc3VyZSgoXCJ2dWUgXCIgKyBuYW1lICsgXCIgcmVuZGVyXCIpLCBzdGFydFRhZywgZW5kVGFnKTtcblxuICAgICAgbWFyayhzdGFydFRhZyk7XG4gICAgICB2bS5fdXBkYXRlKHZub2RlLCBoeWRyYXRpbmcpO1xuICAgICAgbWFyayhlbmRUYWcpO1xuICAgICAgbWVhc3VyZSgoXCJ2dWUgXCIgKyBuYW1lICsgXCIgcGF0Y2hcIiksIHN0YXJ0VGFnLCBlbmRUYWcpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgdXBkYXRlQ29tcG9uZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdm0uX3VwZGF0ZSh2bS5fcmVuZGVyKCksIGh5ZHJhdGluZyk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIHdlIHNldCB0aGlzIHRvIHZtLl93YXRjaGVyIGluc2lkZSB0aGUgd2F0Y2hlcidzIGNvbnN0cnVjdG9yXG4gIC8vIHNpbmNlIHRoZSB3YXRjaGVyJ3MgaW5pdGlhbCBwYXRjaCBtYXkgY2FsbCAkZm9yY2VVcGRhdGUgKGUuZy4gaW5zaWRlIGNoaWxkXG4gIC8vIGNvbXBvbmVudCdzIG1vdW50ZWQgaG9vayksIHdoaWNoIHJlbGllcyBvbiB2bS5fd2F0Y2hlciBiZWluZyBhbHJlYWR5IGRlZmluZWRcbiAgbmV3IFdhdGNoZXIodm0sIHVwZGF0ZUNvbXBvbmVudCwgbm9vcCwge1xuICAgIGJlZm9yZTogZnVuY3Rpb24gYmVmb3JlICgpIHtcbiAgICAgIGlmICh2bS5faXNNb3VudGVkICYmICF2bS5faXNEZXN0cm95ZWQpIHtcbiAgICAgICAgY2FsbEhvb2sodm0sICdiZWZvcmVVcGRhdGUnKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHRydWUgLyogaXNSZW5kZXJXYXRjaGVyICovKTtcbiAgaHlkcmF0aW5nID0gZmFsc2U7XG5cbiAgLy8gbWFudWFsbHkgbW91bnRlZCBpbnN0YW5jZSwgY2FsbCBtb3VudGVkIG9uIHNlbGZcbiAgLy8gbW91bnRlZCBpcyBjYWxsZWQgZm9yIHJlbmRlci1jcmVhdGVkIGNoaWxkIGNvbXBvbmVudHMgaW4gaXRzIGluc2VydGVkIGhvb2tcbiAgaWYgKHZtLiR2bm9kZSA9PSBudWxsKSB7XG4gICAgdm0uX2lzTW91bnRlZCA9IHRydWU7XG4gICAgY2FsbEhvb2sodm0sICdtb3VudGVkJyk7XG4gIH1cbiAgcmV0dXJuIHZtXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUNoaWxkQ29tcG9uZW50IChcbiAgdm0sXG4gIHByb3BzRGF0YSxcbiAgbGlzdGVuZXJzLFxuICBwYXJlbnRWbm9kZSxcbiAgcmVuZGVyQ2hpbGRyZW5cbikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlzVXBkYXRpbmdDaGlsZENvbXBvbmVudCA9IHRydWU7XG4gIH1cblxuICAvLyBkZXRlcm1pbmUgd2hldGhlciBjb21wb25lbnQgaGFzIHNsb3QgY2hpbGRyZW5cbiAgLy8gd2UgbmVlZCB0byBkbyB0aGlzIGJlZm9yZSBvdmVyd3JpdGluZyAkb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW4uXG5cbiAgLy8gY2hlY2sgaWYgdGhlcmUgYXJlIGR5bmFtaWMgc2NvcGVkU2xvdHMgKGhhbmQtd3JpdHRlbiBvciBjb21waWxlZCBidXQgd2l0aFxuICAvLyBkeW5hbWljIHNsb3QgbmFtZXMpLiBTdGF0aWMgc2NvcGVkIHNsb3RzIGNvbXBpbGVkIGZyb20gdGVtcGxhdGUgaGFzIHRoZVxuICAvLyBcIiRzdGFibGVcIiBtYXJrZXIuXG4gIHZhciBuZXdTY29wZWRTbG90cyA9IHBhcmVudFZub2RlLmRhdGEuc2NvcGVkU2xvdHM7XG4gIHZhciBvbGRTY29wZWRTbG90cyA9IHZtLiRzY29wZWRTbG90cztcbiAgdmFyIGhhc0R5bmFtaWNTY29wZWRTbG90ID0gISEoXG4gICAgKG5ld1Njb3BlZFNsb3RzICYmICFuZXdTY29wZWRTbG90cy4kc3RhYmxlKSB8fFxuICAgIChvbGRTY29wZWRTbG90cyAhPT0gZW1wdHlPYmplY3QgJiYgIW9sZFNjb3BlZFNsb3RzLiRzdGFibGUpIHx8XG4gICAgKG5ld1Njb3BlZFNsb3RzICYmIHZtLiRzY29wZWRTbG90cy4ka2V5ICE9PSBuZXdTY29wZWRTbG90cy4ka2V5KVxuICApO1xuXG4gIC8vIEFueSBzdGF0aWMgc2xvdCBjaGlsZHJlbiBmcm9tIHRoZSBwYXJlbnQgbWF5IGhhdmUgY2hhbmdlZCBkdXJpbmcgcGFyZW50J3NcbiAgLy8gdXBkYXRlLiBEeW5hbWljIHNjb3BlZCBzbG90cyBtYXkgYWxzbyBoYXZlIGNoYW5nZWQuIEluIHN1Y2ggY2FzZXMsIGEgZm9yY2VkXG4gIC8vIHVwZGF0ZSBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIGNvcnJlY3RuZXNzLlxuICB2YXIgbmVlZHNGb3JjZVVwZGF0ZSA9ICEhKFxuICAgIHJlbmRlckNoaWxkcmVuIHx8ICAgICAgICAgICAgICAgLy8gaGFzIG5ldyBzdGF0aWMgc2xvdHNcbiAgICB2bS4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW4gfHwgIC8vIGhhcyBvbGQgc3RhdGljIHNsb3RzXG4gICAgaGFzRHluYW1pY1Njb3BlZFNsb3RcbiAgKTtcblxuICB2bS4kb3B0aW9ucy5fcGFyZW50Vm5vZGUgPSBwYXJlbnRWbm9kZTtcbiAgdm0uJHZub2RlID0gcGFyZW50Vm5vZGU7IC8vIHVwZGF0ZSB2bSdzIHBsYWNlaG9sZGVyIG5vZGUgd2l0aG91dCByZS1yZW5kZXJcblxuICBpZiAodm0uX3Zub2RlKSB7IC8vIHVwZGF0ZSBjaGlsZCB0cmVlJ3MgcGFyZW50XG4gICAgdm0uX3Zub2RlLnBhcmVudCA9IHBhcmVudFZub2RlO1xuICB9XG4gIHZtLiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbiA9IHJlbmRlckNoaWxkcmVuO1xuXG4gIC8vIHVwZGF0ZSAkYXR0cnMgYW5kICRsaXN0ZW5lcnMgaGFzaFxuICAvLyB0aGVzZSBhcmUgYWxzbyByZWFjdGl2ZSBzbyB0aGV5IG1heSB0cmlnZ2VyIGNoaWxkIHVwZGF0ZSBpZiB0aGUgY2hpbGRcbiAgLy8gdXNlZCB0aGVtIGR1cmluZyByZW5kZXJcbiAgdm0uJGF0dHJzID0gcGFyZW50Vm5vZGUuZGF0YS5hdHRycyB8fCBlbXB0eU9iamVjdDtcbiAgdm0uJGxpc3RlbmVycyA9IGxpc3RlbmVycyB8fCBlbXB0eU9iamVjdDtcblxuICAvLyB1cGRhdGUgcHJvcHNcbiAgaWYgKHByb3BzRGF0YSAmJiB2bS4kb3B0aW9ucy5wcm9wcykge1xuICAgIHRvZ2dsZU9ic2VydmluZyhmYWxzZSk7XG4gICAgdmFyIHByb3BzID0gdm0uX3Byb3BzO1xuICAgIHZhciBwcm9wS2V5cyA9IHZtLiRvcHRpb25zLl9wcm9wS2V5cyB8fCBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIga2V5ID0gcHJvcEtleXNbaV07XG4gICAgICB2YXIgcHJvcE9wdGlvbnMgPSB2bS4kb3B0aW9ucy5wcm9wczsgLy8gd3RmIGZsb3c/XG4gICAgICBwcm9wc1trZXldID0gdmFsaWRhdGVQcm9wKGtleSwgcHJvcE9wdGlvbnMsIHByb3BzRGF0YSwgdm0pO1xuICAgIH1cbiAgICB0b2dnbGVPYnNlcnZpbmcodHJ1ZSk7XG4gICAgLy8ga2VlcCBhIGNvcHkgb2YgcmF3IHByb3BzRGF0YVxuICAgIHZtLiRvcHRpb25zLnByb3BzRGF0YSA9IHByb3BzRGF0YTtcbiAgfVxuXG4gIC8vIHVwZGF0ZSBsaXN0ZW5lcnNcbiAgbGlzdGVuZXJzID0gbGlzdGVuZXJzIHx8IGVtcHR5T2JqZWN0O1xuICB2YXIgb2xkTGlzdGVuZXJzID0gdm0uJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycztcbiAgdm0uJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycyA9IGxpc3RlbmVycztcbiAgdXBkYXRlQ29tcG9uZW50TGlzdGVuZXJzKHZtLCBsaXN0ZW5lcnMsIG9sZExpc3RlbmVycyk7XG5cbiAgLy8gcmVzb2x2ZSBzbG90cyArIGZvcmNlIHVwZGF0ZSBpZiBoYXMgY2hpbGRyZW5cbiAgaWYgKG5lZWRzRm9yY2VVcGRhdGUpIHtcbiAgICB2bS4kc2xvdHMgPSByZXNvbHZlU2xvdHMocmVuZGVyQ2hpbGRyZW4sIHBhcmVudFZub2RlLmNvbnRleHQpO1xuICAgIHZtLiRmb3JjZVVwZGF0ZSgpO1xuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpc1VwZGF0aW5nQ2hpbGRDb21wb25lbnQgPSBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0luSW5hY3RpdmVUcmVlICh2bSkge1xuICB3aGlsZSAodm0gJiYgKHZtID0gdm0uJHBhcmVudCkpIHtcbiAgICBpZiAodm0uX2luYWN0aXZlKSB7IHJldHVybiB0cnVlIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gYWN0aXZhdGVDaGlsZENvbXBvbmVudCAodm0sIGRpcmVjdCkge1xuICBpZiAoZGlyZWN0KSB7XG4gICAgdm0uX2RpcmVjdEluYWN0aXZlID0gZmFsc2U7XG4gICAgaWYgKGlzSW5JbmFjdGl2ZVRyZWUodm0pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gIH0gZWxzZSBpZiAodm0uX2RpcmVjdEluYWN0aXZlKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKHZtLl9pbmFjdGl2ZSB8fCB2bS5faW5hY3RpdmUgPT09IG51bGwpIHtcbiAgICB2bS5faW5hY3RpdmUgPSBmYWxzZTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZtLiRjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgYWN0aXZhdGVDaGlsZENvbXBvbmVudCh2bS4kY2hpbGRyZW5baV0pO1xuICAgIH1cbiAgICBjYWxsSG9vayh2bSwgJ2FjdGl2YXRlZCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRlYWN0aXZhdGVDaGlsZENvbXBvbmVudCAodm0sIGRpcmVjdCkge1xuICBpZiAoZGlyZWN0KSB7XG4gICAgdm0uX2RpcmVjdEluYWN0aXZlID0gdHJ1ZTtcbiAgICBpZiAoaXNJbkluYWN0aXZlVHJlZSh2bSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuICBpZiAoIXZtLl9pbmFjdGl2ZSkge1xuICAgIHZtLl9pbmFjdGl2ZSA9IHRydWU7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2bS4kY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlYWN0aXZhdGVDaGlsZENvbXBvbmVudCh2bS4kY2hpbGRyZW5baV0pO1xuICAgIH1cbiAgICBjYWxsSG9vayh2bSwgJ2RlYWN0aXZhdGVkJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsbEhvb2sgKHZtLCBob29rKSB7XG4gIC8vICM3NTczIGRpc2FibGUgZGVwIGNvbGxlY3Rpb24gd2hlbiBpbnZva2luZyBsaWZlY3ljbGUgaG9va3NcbiAgcHVzaFRhcmdldCgpO1xuICB2YXIgaGFuZGxlcnMgPSB2bS4kb3B0aW9uc1tob29rXTtcbiAgdmFyIGluZm8gPSBob29rICsgXCIgaG9va1wiO1xuICBpZiAoaGFuZGxlcnMpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgaiA9IGhhbmRsZXJzLmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgaW52b2tlV2l0aEVycm9ySGFuZGxpbmcoaGFuZGxlcnNbaV0sIHZtLCBudWxsLCB2bSwgaW5mbyk7XG4gICAgfVxuICB9XG4gIGlmICh2bS5faGFzSG9va0V2ZW50KSB7XG4gICAgdm0uJGVtaXQoJ2hvb2s6JyArIGhvb2spO1xuICB9XG4gIHBvcFRhcmdldCgpO1xufVxuXG4vKiAgKi9cblxudmFyIE1BWF9VUERBVEVfQ09VTlQgPSAxMDA7XG5cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGFjdGl2YXRlZENoaWxkcmVuID0gW107XG52YXIgaGFzID0ge307XG52YXIgY2lyY3VsYXIgPSB7fTtcbnZhciB3YWl0aW5nID0gZmFsc2U7XG52YXIgZmx1c2hpbmcgPSBmYWxzZTtcbnZhciBpbmRleCA9IDA7XG5cbi8qKlxuICogUmVzZXQgdGhlIHNjaGVkdWxlcidzIHN0YXRlLlxuICovXG5mdW5jdGlvbiByZXNldFNjaGVkdWxlclN0YXRlICgpIHtcbiAgaW5kZXggPSBxdWV1ZS5sZW5ndGggPSBhY3RpdmF0ZWRDaGlsZHJlbi5sZW5ndGggPSAwO1xuICBoYXMgPSB7fTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjaXJjdWxhciA9IHt9O1xuICB9XG4gIHdhaXRpbmcgPSBmbHVzaGluZyA9IGZhbHNlO1xufVxuXG4vLyBBc3luYyBlZGdlIGNhc2UgIzY1NjYgcmVxdWlyZXMgc2F2aW5nIHRoZSB0aW1lc3RhbXAgd2hlbiBldmVudCBsaXN0ZW5lcnMgYXJlXG4vLyBhdHRhY2hlZC4gSG93ZXZlciwgY2FsbGluZyBwZXJmb3JtYW5jZS5ub3coKSBoYXMgYSBwZXJmIG92ZXJoZWFkIGVzcGVjaWFsbHlcbi8vIGlmIHRoZSBwYWdlIGhhcyB0aG91c2FuZHMgb2YgZXZlbnQgbGlzdGVuZXJzLiBJbnN0ZWFkLCB3ZSB0YWtlIGEgdGltZXN0YW1wXG4vLyBldmVyeSB0aW1lIHRoZSBzY2hlZHVsZXIgZmx1c2hlcyBhbmQgdXNlIHRoYXQgZm9yIGFsbCBldmVudCBsaXN0ZW5lcnNcbi8vIGF0dGFjaGVkIGR1cmluZyB0aGF0IGZsdXNoLlxudmFyIGN1cnJlbnRGbHVzaFRpbWVzdGFtcCA9IDA7XG5cbi8vIEFzeW5jIGVkZ2UgY2FzZSBmaXggcmVxdWlyZXMgc3RvcmluZyBhbiBldmVudCBsaXN0ZW5lcidzIGF0dGFjaCB0aW1lc3RhbXAuXG52YXIgZ2V0Tm93ID0gRGF0ZS5ub3c7XG5cbi8vIERldGVybWluZSB3aGF0IGV2ZW50IHRpbWVzdGFtcCB0aGUgYnJvd3NlciBpcyB1c2luZy4gQW5ub3lpbmdseSwgdGhlXG4vLyB0aW1lc3RhbXAgY2FuIGVpdGhlciBiZSBoaS1yZXMgKHJlbGF0aXZlIHRvIHBhZ2UgbG9hZCkgb3IgbG93LXJlc1xuLy8gKHJlbGF0aXZlIHRvIFVOSVggZXBvY2gpLCBzbyBpbiBvcmRlciB0byBjb21wYXJlIHRpbWUgd2UgaGF2ZSB0byB1c2UgdGhlXG4vLyBzYW1lIHRpbWVzdGFtcCB0eXBlIHdoZW4gc2F2aW5nIHRoZSBmbHVzaCB0aW1lc3RhbXAuXG4vLyBBbGwgSUUgdmVyc2lvbnMgdXNlIGxvdy1yZXMgZXZlbnQgdGltZXN0YW1wcywgYW5kIGhhdmUgcHJvYmxlbWF0aWMgY2xvY2tcbi8vIGltcGxlbWVudGF0aW9ucyAoIzk2MzIpXG5pZiAoaW5Ccm93c2VyICYmICFpc0lFKSB7XG4gIHZhciBwZXJmb3JtYW5jZSA9IHdpbmRvdy5wZXJmb3JtYW5jZTtcbiAgaWYgKFxuICAgIHBlcmZvcm1hbmNlICYmXG4gICAgdHlwZW9mIHBlcmZvcm1hbmNlLm5vdyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIGdldE5vdygpID4gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50JykudGltZVN0YW1wXG4gICkge1xuICAgIC8vIGlmIHRoZSBldmVudCB0aW1lc3RhbXAsIGFsdGhvdWdoIGV2YWx1YXRlZCBBRlRFUiB0aGUgRGF0ZS5ub3coKSwgaXNcbiAgICAvLyBzbWFsbGVyIHRoYW4gaXQsIGl0IG1lYW5zIHRoZSBldmVudCBpcyB1c2luZyBhIGhpLXJlcyB0aW1lc3RhbXAsXG4gICAgLy8gYW5kIHdlIG5lZWQgdG8gdXNlIHRoZSBoaS1yZXMgdmVyc2lvbiBmb3IgZXZlbnQgbGlzdGVuZXIgdGltZXN0YW1wcyBhc1xuICAgIC8vIHdlbGwuXG4gICAgZ2V0Tm93ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcGVyZm9ybWFuY2Uubm93KCk7IH07XG4gIH1cbn1cblxuLyoqXG4gKiBGbHVzaCBib3RoIHF1ZXVlcyBhbmQgcnVuIHRoZSB3YXRjaGVycy5cbiAqL1xuZnVuY3Rpb24gZmx1c2hTY2hlZHVsZXJRdWV1ZSAoKSB7XG4gIGN1cnJlbnRGbHVzaFRpbWVzdGFtcCA9IGdldE5vdygpO1xuICBmbHVzaGluZyA9IHRydWU7XG4gIHZhciB3YXRjaGVyLCBpZDtcblxuICAvLyBTb3J0IHF1ZXVlIGJlZm9yZSBmbHVzaC5cbiAgLy8gVGhpcyBlbnN1cmVzIHRoYXQ6XG4gIC8vIDEuIENvbXBvbmVudHMgYXJlIHVwZGF0ZWQgZnJvbSBwYXJlbnQgdG8gY2hpbGQuIChiZWNhdXNlIHBhcmVudCBpcyBhbHdheXNcbiAgLy8gICAgY3JlYXRlZCBiZWZvcmUgdGhlIGNoaWxkKVxuICAvLyAyLiBBIGNvbXBvbmVudCdzIHVzZXIgd2F0Y2hlcnMgYXJlIHJ1biBiZWZvcmUgaXRzIHJlbmRlciB3YXRjaGVyIChiZWNhdXNlXG4gIC8vICAgIHVzZXIgd2F0Y2hlcnMgYXJlIGNyZWF0ZWQgYmVmb3JlIHRoZSByZW5kZXIgd2F0Y2hlcilcbiAgLy8gMy4gSWYgYSBjb21wb25lbnQgaXMgZGVzdHJveWVkIGR1cmluZyBhIHBhcmVudCBjb21wb25lbnQncyB3YXRjaGVyIHJ1bixcbiAgLy8gICAgaXRzIHdhdGNoZXJzIGNhbiBiZSBza2lwcGVkLlxuICBxdWV1ZS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLmlkIC0gYi5pZDsgfSk7XG5cbiAgLy8gZG8gbm90IGNhY2hlIGxlbmd0aCBiZWNhdXNlIG1vcmUgd2F0Y2hlcnMgbWlnaHQgYmUgcHVzaGVkXG4gIC8vIGFzIHdlIHJ1biBleGlzdGluZyB3YXRjaGVyc1xuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBxdWV1ZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICB3YXRjaGVyID0gcXVldWVbaW5kZXhdO1xuICAgIGlmICh3YXRjaGVyLmJlZm9yZSkge1xuICAgICAgd2F0Y2hlci5iZWZvcmUoKTtcbiAgICB9XG4gICAgaWQgPSB3YXRjaGVyLmlkO1xuICAgIGhhc1tpZF0gPSBudWxsO1xuICAgIHdhdGNoZXIucnVuKCk7XG4gICAgLy8gaW4gZGV2IGJ1aWxkLCBjaGVjayBhbmQgc3RvcCBjaXJjdWxhciB1cGRhdGVzLlxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGhhc1tpZF0gIT0gbnVsbCkge1xuICAgICAgY2lyY3VsYXJbaWRdID0gKGNpcmN1bGFyW2lkXSB8fCAwKSArIDE7XG4gICAgICBpZiAoY2lyY3VsYXJbaWRdID4gTUFYX1VQREFURV9DT1VOVCkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdZb3UgbWF5IGhhdmUgYW4gaW5maW5pdGUgdXBkYXRlIGxvb3AgJyArIChcbiAgICAgICAgICAgIHdhdGNoZXIudXNlclxuICAgICAgICAgICAgICA/IChcImluIHdhdGNoZXIgd2l0aCBleHByZXNzaW9uIFxcXCJcIiArICh3YXRjaGVyLmV4cHJlc3Npb24pICsgXCJcXFwiXCIpXG4gICAgICAgICAgICAgIDogXCJpbiBhIGNvbXBvbmVudCByZW5kZXIgZnVuY3Rpb24uXCJcbiAgICAgICAgICApLFxuICAgICAgICAgIHdhdGNoZXIudm1cbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBrZWVwIGNvcGllcyBvZiBwb3N0IHF1ZXVlcyBiZWZvcmUgcmVzZXR0aW5nIHN0YXRlXG4gIHZhciBhY3RpdmF0ZWRRdWV1ZSA9IGFjdGl2YXRlZENoaWxkcmVuLnNsaWNlKCk7XG4gIHZhciB1cGRhdGVkUXVldWUgPSBxdWV1ZS5zbGljZSgpO1xuXG4gIHJlc2V0U2NoZWR1bGVyU3RhdGUoKTtcblxuICAvLyBjYWxsIGNvbXBvbmVudCB1cGRhdGVkIGFuZCBhY3RpdmF0ZWQgaG9va3NcbiAgY2FsbEFjdGl2YXRlZEhvb2tzKGFjdGl2YXRlZFF1ZXVlKTtcbiAgY2FsbFVwZGF0ZWRIb29rcyh1cGRhdGVkUXVldWUpO1xuXG4gIC8vIGRldnRvb2wgaG9va1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGRldnRvb2xzICYmIGNvbmZpZy5kZXZ0b29scykge1xuICAgIGRldnRvb2xzLmVtaXQoJ2ZsdXNoJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsbFVwZGF0ZWRIb29rcyAocXVldWUpIHtcbiAgdmFyIGkgPSBxdWV1ZS5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICB2YXIgd2F0Y2hlciA9IHF1ZXVlW2ldO1xuICAgIHZhciB2bSA9IHdhdGNoZXIudm07XG4gICAgaWYgKHZtLl93YXRjaGVyID09PSB3YXRjaGVyICYmIHZtLl9pc01vdW50ZWQgJiYgIXZtLl9pc0Rlc3Ryb3llZCkge1xuICAgICAgY2FsbEhvb2sodm0sICd1cGRhdGVkJyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUXVldWUgYSBrZXB0LWFsaXZlIGNvbXBvbmVudCB0aGF0IHdhcyBhY3RpdmF0ZWQgZHVyaW5nIHBhdGNoLlxuICogVGhlIHF1ZXVlIHdpbGwgYmUgcHJvY2Vzc2VkIGFmdGVyIHRoZSBlbnRpcmUgdHJlZSBoYXMgYmVlbiBwYXRjaGVkLlxuICovXG5mdW5jdGlvbiBxdWV1ZUFjdGl2YXRlZENvbXBvbmVudCAodm0pIHtcbiAgLy8gc2V0dGluZyBfaW5hY3RpdmUgdG8gZmFsc2UgaGVyZSBzbyB0aGF0IGEgcmVuZGVyIGZ1bmN0aW9uIGNhblxuICAvLyByZWx5IG9uIGNoZWNraW5nIHdoZXRoZXIgaXQncyBpbiBhbiBpbmFjdGl2ZSB0cmVlIChlLmcuIHJvdXRlci12aWV3KVxuICB2bS5faW5hY3RpdmUgPSBmYWxzZTtcbiAgYWN0aXZhdGVkQ2hpbGRyZW4ucHVzaCh2bSk7XG59XG5cbmZ1bmN0aW9uIGNhbGxBY3RpdmF0ZWRIb29rcyAocXVldWUpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xuICAgIHF1ZXVlW2ldLl9pbmFjdGl2ZSA9IHRydWU7XG4gICAgYWN0aXZhdGVDaGlsZENvbXBvbmVudChxdWV1ZVtpXSwgdHJ1ZSAvKiB0cnVlICovKTtcbiAgfVxufVxuXG4vKipcbiAqIFB1c2ggYSB3YXRjaGVyIGludG8gdGhlIHdhdGNoZXIgcXVldWUuXG4gKiBKb2JzIHdpdGggZHVwbGljYXRlIElEcyB3aWxsIGJlIHNraXBwZWQgdW5sZXNzIGl0J3NcbiAqIHB1c2hlZCB3aGVuIHRoZSBxdWV1ZSBpcyBiZWluZyBmbHVzaGVkLlxuICovXG5mdW5jdGlvbiBxdWV1ZVdhdGNoZXIgKHdhdGNoZXIpIHtcbiAgdmFyIGlkID0gd2F0Y2hlci5pZDtcbiAgaWYgKGhhc1tpZF0gPT0gbnVsbCkge1xuICAgIGhhc1tpZF0gPSB0cnVlO1xuICAgIGlmICghZmx1c2hpbmcpIHtcbiAgICAgIHF1ZXVlLnB1c2god2F0Y2hlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGlmIGFscmVhZHkgZmx1c2hpbmcsIHNwbGljZSB0aGUgd2F0Y2hlciBiYXNlZCBvbiBpdHMgaWRcbiAgICAgIC8vIGlmIGFscmVhZHkgcGFzdCBpdHMgaWQsIGl0IHdpbGwgYmUgcnVuIG5leHQgaW1tZWRpYXRlbHkuXG4gICAgICB2YXIgaSA9IHF1ZXVlLmxlbmd0aCAtIDE7XG4gICAgICB3aGlsZSAoaSA+IGluZGV4ICYmIHF1ZXVlW2ldLmlkID4gd2F0Y2hlci5pZCkge1xuICAgICAgICBpLS07XG4gICAgICB9XG4gICAgICBxdWV1ZS5zcGxpY2UoaSArIDEsIDAsIHdhdGNoZXIpO1xuICAgIH1cbiAgICAvLyBxdWV1ZSB0aGUgZmx1c2hcbiAgICBpZiAoIXdhaXRpbmcpIHtcbiAgICAgIHdhaXRpbmcgPSB0cnVlO1xuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhY29uZmlnLmFzeW5jKSB7XG4gICAgICAgIGZsdXNoU2NoZWR1bGVyUXVldWUoKTtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBuZXh0VGljayhmbHVzaFNjaGVkdWxlclF1ZXVlKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cblxuXG52YXIgdWlkJDIgPSAwO1xuXG4vKipcbiAqIEEgd2F0Y2hlciBwYXJzZXMgYW4gZXhwcmVzc2lvbiwgY29sbGVjdHMgZGVwZW5kZW5jaWVzLFxuICogYW5kIGZpcmVzIGNhbGxiYWNrIHdoZW4gdGhlIGV4cHJlc3Npb24gdmFsdWUgY2hhbmdlcy5cbiAqIFRoaXMgaXMgdXNlZCBmb3IgYm90aCB0aGUgJHdhdGNoKCkgYXBpIGFuZCBkaXJlY3RpdmVzLlxuICovXG52YXIgV2F0Y2hlciA9IGZ1bmN0aW9uIFdhdGNoZXIgKFxuICB2bSxcbiAgZXhwT3JGbixcbiAgY2IsXG4gIG9wdGlvbnMsXG4gIGlzUmVuZGVyV2F0Y2hlclxuKSB7XG4gIHRoaXMudm0gPSB2bTtcbiAgaWYgKGlzUmVuZGVyV2F0Y2hlcikge1xuICAgIHZtLl93YXRjaGVyID0gdGhpcztcbiAgfVxuICB2bS5fd2F0Y2hlcnMucHVzaCh0aGlzKTtcbiAgLy8gb3B0aW9uc1xuICBpZiAob3B0aW9ucykge1xuICAgIHRoaXMuZGVlcCA9ICEhb3B0aW9ucy5kZWVwO1xuICAgIHRoaXMudXNlciA9ICEhb3B0aW9ucy51c2VyO1xuICAgIHRoaXMubGF6eSA9ICEhb3B0aW9ucy5sYXp5O1xuICAgIHRoaXMuc3luYyA9ICEhb3B0aW9ucy5zeW5jO1xuICAgIHRoaXMuYmVmb3JlID0gb3B0aW9ucy5iZWZvcmU7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5kZWVwID0gdGhpcy51c2VyID0gdGhpcy5sYXp5ID0gdGhpcy5zeW5jID0gZmFsc2U7XG4gIH1cbiAgdGhpcy5jYiA9IGNiO1xuICB0aGlzLmlkID0gKyt1aWQkMjsgLy8gdWlkIGZvciBiYXRjaGluZ1xuICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gIHRoaXMuZGlydHkgPSB0aGlzLmxhenk7IC8vIGZvciBsYXp5IHdhdGNoZXJzXG4gIHRoaXMuZGVwcyA9IFtdO1xuICB0aGlzLm5ld0RlcHMgPSBbXTtcbiAgdGhpcy5kZXBJZHMgPSBuZXcgX1NldCgpO1xuICB0aGlzLm5ld0RlcElkcyA9IG5ldyBfU2V0KCk7XG4gIHRoaXMuZXhwcmVzc2lvbiA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbidcbiAgICA/IGV4cE9yRm4udG9TdHJpbmcoKVxuICAgIDogJyc7XG4gIC8vIHBhcnNlIGV4cHJlc3Npb24gZm9yIGdldHRlclxuICBpZiAodHlwZW9mIGV4cE9yRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICB0aGlzLmdldHRlciA9IGV4cE9yRm47XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5nZXR0ZXIgPSBwYXJzZVBhdGgoZXhwT3JGbik7XG4gICAgaWYgKCF0aGlzLmdldHRlcikge1xuICAgICAgdGhpcy5nZXR0ZXIgPSBub29wO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIkZhaWxlZCB3YXRjaGluZyBwYXRoOiBcXFwiXCIgKyBleHBPckZuICsgXCJcXFwiIFwiICtcbiAgICAgICAgJ1dhdGNoZXIgb25seSBhY2NlcHRzIHNpbXBsZSBkb3QtZGVsaW1pdGVkIHBhdGhzLiAnICtcbiAgICAgICAgJ0ZvciBmdWxsIGNvbnRyb2wsIHVzZSBhIGZ1bmN0aW9uIGluc3RlYWQuJyxcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHRoaXMudmFsdWUgPSB0aGlzLmxhenlcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogdGhpcy5nZXQoKTtcbn07XG5cbi8qKlxuICogRXZhbHVhdGUgdGhlIGdldHRlciwgYW5kIHJlLWNvbGxlY3QgZGVwZW5kZW5jaWVzLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiBnZXQgKCkge1xuICBwdXNoVGFyZ2V0KHRoaXMpO1xuICB2YXIgdmFsdWU7XG4gIHZhciB2bSA9IHRoaXMudm07XG4gIHRyeSB7XG4gICAgdmFsdWUgPSB0aGlzLmdldHRlci5jYWxsKHZtLCB2bSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAodGhpcy51c2VyKSB7XG4gICAgICBoYW5kbGVFcnJvcihlLCB2bSwgKFwiZ2V0dGVyIGZvciB3YXRjaGVyIFxcXCJcIiArICh0aGlzLmV4cHJlc3Npb24pICsgXCJcXFwiXCIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBcInRvdWNoXCIgZXZlcnkgcHJvcGVydHkgc28gdGhleSBhcmUgYWxsIHRyYWNrZWQgYXNcbiAgICAvLyBkZXBlbmRlbmNpZXMgZm9yIGRlZXAgd2F0Y2hpbmdcbiAgICBpZiAodGhpcy5kZWVwKSB7XG4gICAgICB0cmF2ZXJzZSh2YWx1ZSk7XG4gICAgfVxuICAgIHBvcFRhcmdldCgpO1xuICAgIHRoaXMuY2xlYW51cERlcHMoKTtcbiAgfVxuICByZXR1cm4gdmFsdWVcbn07XG5cbi8qKlxuICogQWRkIGEgZGVwZW5kZW5jeSB0byB0aGlzIGRpcmVjdGl2ZS5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuYWRkRGVwID0gZnVuY3Rpb24gYWRkRGVwIChkZXApIHtcbiAgdmFyIGlkID0gZGVwLmlkO1xuICBpZiAoIXRoaXMubmV3RGVwSWRzLmhhcyhpZCkpIHtcbiAgICB0aGlzLm5ld0RlcElkcy5hZGQoaWQpO1xuICAgIHRoaXMubmV3RGVwcy5wdXNoKGRlcCk7XG4gICAgaWYgKCF0aGlzLmRlcElkcy5oYXMoaWQpKSB7XG4gICAgICBkZXAuYWRkU3ViKHRoaXMpO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBDbGVhbiB1cCBmb3IgZGVwZW5kZW5jeSBjb2xsZWN0aW9uLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5jbGVhbnVwRGVwcyA9IGZ1bmN0aW9uIGNsZWFudXBEZXBzICgpIHtcbiAgdmFyIGkgPSB0aGlzLmRlcHMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgdmFyIGRlcCA9IHRoaXMuZGVwc1tpXTtcbiAgICBpZiAoIXRoaXMubmV3RGVwSWRzLmhhcyhkZXAuaWQpKSB7XG4gICAgICBkZXAucmVtb3ZlU3ViKHRoaXMpO1xuICAgIH1cbiAgfVxuICB2YXIgdG1wID0gdGhpcy5kZXBJZHM7XG4gIHRoaXMuZGVwSWRzID0gdGhpcy5uZXdEZXBJZHM7XG4gIHRoaXMubmV3RGVwSWRzID0gdG1wO1xuICB0aGlzLm5ld0RlcElkcy5jbGVhcigpO1xuICB0bXAgPSB0aGlzLmRlcHM7XG4gIHRoaXMuZGVwcyA9IHRoaXMubmV3RGVwcztcbiAgdGhpcy5uZXdEZXBzID0gdG1wO1xuICB0aGlzLm5ld0RlcHMubGVuZ3RoID0gMDtcbn07XG5cbi8qKlxuICogU3Vic2NyaWJlciBpbnRlcmZhY2UuXG4gKiBXaWxsIGJlIGNhbGxlZCB3aGVuIGEgZGVwZW5kZW5jeSBjaGFuZ2VzLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKCkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAodGhpcy5sYXp5KSB7XG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XG4gIH0gZWxzZSBpZiAodGhpcy5zeW5jKSB7XG4gICAgdGhpcy5ydW4oKTtcbiAgfSBlbHNlIHtcbiAgICBxdWV1ZVdhdGNoZXIodGhpcyk7XG4gIH1cbn07XG5cbi8qKlxuICogU2NoZWR1bGVyIGpvYiBpbnRlcmZhY2UuXG4gKiBXaWxsIGJlIGNhbGxlZCBieSB0aGUgc2NoZWR1bGVyLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiBydW4gKCkge1xuICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICB2YXIgdmFsdWUgPSB0aGlzLmdldCgpO1xuICAgIGlmIChcbiAgICAgIHZhbHVlICE9PSB0aGlzLnZhbHVlIHx8XG4gICAgICAvLyBEZWVwIHdhdGNoZXJzIGFuZCB3YXRjaGVycyBvbiBPYmplY3QvQXJyYXlzIHNob3VsZCBmaXJlIGV2ZW5cbiAgICAgIC8vIHdoZW4gdGhlIHZhbHVlIGlzIHRoZSBzYW1lLCBiZWNhdXNlIHRoZSB2YWx1ZSBtYXlcbiAgICAgIC8vIGhhdmUgbXV0YXRlZC5cbiAgICAgIGlzT2JqZWN0KHZhbHVlKSB8fFxuICAgICAgdGhpcy5kZWVwXG4gICAgKSB7XG4gICAgICAvLyBzZXQgbmV3IHZhbHVlXG4gICAgICB2YXIgb2xkVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgaWYgKHRoaXMudXNlcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuY2IuY2FsbCh0aGlzLnZtLCB2YWx1ZSwgb2xkVmFsdWUpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaGFuZGxlRXJyb3IoZSwgdGhpcy52bSwgKFwiY2FsbGJhY2sgZm9yIHdhdGNoZXIgXFxcIlwiICsgKHRoaXMuZXhwcmVzc2lvbikgKyBcIlxcXCJcIikpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNiLmNhbGwodGhpcy52bSwgdmFsdWUsIG9sZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogRXZhbHVhdGUgdGhlIHZhbHVlIG9mIHRoZSB3YXRjaGVyLlxuICogVGhpcyBvbmx5IGdldHMgY2FsbGVkIGZvciBsYXp5IHdhdGNoZXJzLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5ldmFsdWF0ZSA9IGZ1bmN0aW9uIGV2YWx1YXRlICgpIHtcbiAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0KCk7XG4gIHRoaXMuZGlydHkgPSBmYWxzZTtcbn07XG5cbi8qKlxuICogRGVwZW5kIG9uIGFsbCBkZXBzIGNvbGxlY3RlZCBieSB0aGlzIHdhdGNoZXIuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLmRlcGVuZCA9IGZ1bmN0aW9uIGRlcGVuZCAoKSB7XG4gIHZhciBpID0gdGhpcy5kZXBzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIHRoaXMuZGVwc1tpXS5kZXBlbmQoKTtcbiAgfVxufTtcblxuLyoqXG4gKiBSZW1vdmUgc2VsZiBmcm9tIGFsbCBkZXBlbmRlbmNpZXMnIHN1YnNjcmliZXIgbGlzdC5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUudGVhcmRvd24gPSBmdW5jdGlvbiB0ZWFyZG93biAoKSB7XG4gIGlmICh0aGlzLmFjdGl2ZSkge1xuICAgIC8vIHJlbW92ZSBzZWxmIGZyb20gdm0ncyB3YXRjaGVyIGxpc3RcbiAgICAvLyB0aGlzIGlzIGEgc29tZXdoYXQgZXhwZW5zaXZlIG9wZXJhdGlvbiBzbyB3ZSBza2lwIGl0XG4gICAgLy8gaWYgdGhlIHZtIGlzIGJlaW5nIGRlc3Ryb3llZC5cbiAgICBpZiAoIXRoaXMudm0uX2lzQmVpbmdEZXN0cm95ZWQpIHtcbiAgICAgIHJlbW92ZSh0aGlzLnZtLl93YXRjaGVycywgdGhpcyk7XG4gICAgfVxuICAgIHZhciBpID0gdGhpcy5kZXBzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB0aGlzLmRlcHNbaV0ucmVtb3ZlU3ViKHRoaXMpO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICB9XG59O1xuXG4vKiAgKi9cblxudmFyIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbiA9IHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBnZXQ6IG5vb3AsXG4gIHNldDogbm9vcFxufTtcblxuZnVuY3Rpb24gcHJveHkgKHRhcmdldCwgc291cmNlS2V5LCBrZXkpIHtcbiAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLmdldCA9IGZ1bmN0aW9uIHByb3h5R2V0dGVyICgpIHtcbiAgICByZXR1cm4gdGhpc1tzb3VyY2VLZXldW2tleV1cbiAgfTtcbiAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLnNldCA9IGZ1bmN0aW9uIHByb3h5U2V0dGVyICh2YWwpIHtcbiAgICB0aGlzW3NvdXJjZUtleV1ba2V5XSA9IHZhbDtcbiAgfTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24pO1xufVxuXG5mdW5jdGlvbiBpbml0U3RhdGUgKHZtKSB7XG4gIHZtLl93YXRjaGVycyA9IFtdO1xuICB2YXIgb3B0cyA9IHZtLiRvcHRpb25zO1xuICBpZiAob3B0cy5wcm9wcykgeyBpbml0UHJvcHModm0sIG9wdHMucHJvcHMpOyB9XG4gIGlmIChvcHRzLm1ldGhvZHMpIHsgaW5pdE1ldGhvZHModm0sIG9wdHMubWV0aG9kcyk7IH1cbiAgaWYgKG9wdHMuZGF0YSkge1xuICAgIGluaXREYXRhKHZtKTtcbiAgfSBlbHNlIHtcbiAgICBvYnNlcnZlKHZtLl9kYXRhID0ge30sIHRydWUgLyogYXNSb290RGF0YSAqLyk7XG4gIH1cbiAgaWYgKG9wdHMuY29tcHV0ZWQpIHsgaW5pdENvbXB1dGVkKHZtLCBvcHRzLmNvbXB1dGVkKTsgfVxuICBpZiAob3B0cy53YXRjaCAmJiBvcHRzLndhdGNoICE9PSBuYXRpdmVXYXRjaCkge1xuICAgIGluaXRXYXRjaCh2bSwgb3B0cy53YXRjaCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdFByb3BzICh2bSwgcHJvcHNPcHRpb25zKSB7XG4gIHZhciBwcm9wc0RhdGEgPSB2bS4kb3B0aW9ucy5wcm9wc0RhdGEgfHwge307XG4gIHZhciBwcm9wcyA9IHZtLl9wcm9wcyA9IHt9O1xuICAvLyBjYWNoZSBwcm9wIGtleXMgc28gdGhhdCBmdXR1cmUgcHJvcHMgdXBkYXRlcyBjYW4gaXRlcmF0ZSB1c2luZyBBcnJheVxuICAvLyBpbnN0ZWFkIG9mIGR5bmFtaWMgb2JqZWN0IGtleSBlbnVtZXJhdGlvbi5cbiAgdmFyIGtleXMgPSB2bS4kb3B0aW9ucy5fcHJvcEtleXMgPSBbXTtcbiAgdmFyIGlzUm9vdCA9ICF2bS4kcGFyZW50O1xuICAvLyByb290IGluc3RhbmNlIHByb3BzIHNob3VsZCBiZSBjb252ZXJ0ZWRcbiAgaWYgKCFpc1Jvb3QpIHtcbiAgICB0b2dnbGVPYnNlcnZpbmcoZmFsc2UpO1xuICB9XG4gIHZhciBsb29wID0gZnVuY3Rpb24gKCBrZXkgKSB7XG4gICAga2V5cy5wdXNoKGtleSk7XG4gICAgdmFyIHZhbHVlID0gdmFsaWRhdGVQcm9wKGtleSwgcHJvcHNPcHRpb25zLCBwcm9wc0RhdGEsIHZtKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgaHlwaGVuYXRlZEtleSA9IGh5cGhlbmF0ZShrZXkpO1xuICAgICAgaWYgKGlzUmVzZXJ2ZWRBdHRyaWJ1dGUoaHlwaGVuYXRlZEtleSkgfHxcbiAgICAgICAgICBjb25maWcuaXNSZXNlcnZlZEF0dHIoaHlwaGVuYXRlZEtleSkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAoXCJcXFwiXCIgKyBoeXBoZW5hdGVkS2V5ICsgXCJcXFwiIGlzIGEgcmVzZXJ2ZWQgYXR0cmlidXRlIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBjb21wb25lbnQgcHJvcC5cIiksXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGRlZmluZVJlYWN0aXZlJCQxKHByb3BzLCBrZXksIHZhbHVlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghaXNSb290ICYmICFpc1VwZGF0aW5nQ2hpbGRDb21wb25lbnQpIHtcbiAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgXCJBdm9pZCBtdXRhdGluZyBhIHByb3AgZGlyZWN0bHkgc2luY2UgdGhlIHZhbHVlIHdpbGwgYmUgXCIgK1xuICAgICAgICAgICAgXCJvdmVyd3JpdHRlbiB3aGVuZXZlciB0aGUgcGFyZW50IGNvbXBvbmVudCByZS1yZW5kZXJzLiBcIiArXG4gICAgICAgICAgICBcIkluc3RlYWQsIHVzZSBhIGRhdGEgb3IgY29tcHV0ZWQgcHJvcGVydHkgYmFzZWQgb24gdGhlIHByb3AncyBcIiArXG4gICAgICAgICAgICBcInZhbHVlLiBQcm9wIGJlaW5nIG11dGF0ZWQ6IFxcXCJcIiArIGtleSArIFwiXFxcIlwiLFxuICAgICAgICAgICAgdm1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVmaW5lUmVhY3RpdmUkJDEocHJvcHMsIGtleSwgdmFsdWUpO1xuICAgIH1cbiAgICAvLyBzdGF0aWMgcHJvcHMgYXJlIGFscmVhZHkgcHJveGllZCBvbiB0aGUgY29tcG9uZW50J3MgcHJvdG90eXBlXG4gICAgLy8gZHVyaW5nIFZ1ZS5leHRlbmQoKS4gV2Ugb25seSBuZWVkIHRvIHByb3h5IHByb3BzIGRlZmluZWQgYXRcbiAgICAvLyBpbnN0YW50aWF0aW9uIGhlcmUuXG4gICAgaWYgKCEoa2V5IGluIHZtKSkge1xuICAgICAgcHJveHkodm0sIFwiX3Byb3BzXCIsIGtleSk7XG4gICAgfVxuICB9O1xuXG4gIGZvciAodmFyIGtleSBpbiBwcm9wc09wdGlvbnMpIGxvb3AoIGtleSApO1xuICB0b2dnbGVPYnNlcnZpbmcodHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGluaXREYXRhICh2bSkge1xuICB2YXIgZGF0YSA9IHZtLiRvcHRpb25zLmRhdGE7XG4gIGRhdGEgPSB2bS5fZGF0YSA9IHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nXG4gICAgPyBnZXREYXRhKGRhdGEsIHZtKVxuICAgIDogZGF0YSB8fCB7fTtcbiAgaWYgKCFpc1BsYWluT2JqZWN0KGRhdGEpKSB7XG4gICAgZGF0YSA9IHt9O1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICdkYXRhIGZ1bmN0aW9ucyBzaG91bGQgcmV0dXJuIGFuIG9iamVjdDpcXG4nICtcbiAgICAgICdodHRwczovL3Z1ZWpzLm9yZy92Mi9ndWlkZS9jb21wb25lbnRzLmh0bWwjZGF0YS1NdXN0LUJlLWEtRnVuY3Rpb24nLFxuICAgICAgdm1cbiAgICApO1xuICB9XG4gIC8vIHByb3h5IGRhdGEgb24gaW5zdGFuY2VcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhkYXRhKTtcbiAgdmFyIHByb3BzID0gdm0uJG9wdGlvbnMucHJvcHM7XG4gIHZhciBtZXRob2RzID0gdm0uJG9wdGlvbnMubWV0aG9kcztcbiAgdmFyIGkgPSBrZXlzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAobWV0aG9kcyAmJiBoYXNPd24obWV0aG9kcywga2V5KSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIChcIk1ldGhvZCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaGFzIGFscmVhZHkgYmVlbiBkZWZpbmVkIGFzIGEgZGF0YSBwcm9wZXJ0eS5cIiksXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHByb3BzICYmIGhhc093bihwcm9wcywga2V5KSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIlRoZSBkYXRhIHByb3BlcnR5IFxcXCJcIiArIGtleSArIFwiXFxcIiBpcyBhbHJlYWR5IGRlY2xhcmVkIGFzIGEgcHJvcC4gXCIgK1xuICAgICAgICBcIlVzZSBwcm9wIGRlZmF1bHQgdmFsdWUgaW5zdGVhZC5cIixcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICghaXNSZXNlcnZlZChrZXkpKSB7XG4gICAgICBwcm94eSh2bSwgXCJfZGF0YVwiLCBrZXkpO1xuICAgIH1cbiAgfVxuICAvLyBvYnNlcnZlIGRhdGFcbiAgb2JzZXJ2ZShkYXRhLCB0cnVlIC8qIGFzUm9vdERhdGEgKi8pO1xufVxuXG5mdW5jdGlvbiBnZXREYXRhIChkYXRhLCB2bSkge1xuICAvLyAjNzU3MyBkaXNhYmxlIGRlcCBjb2xsZWN0aW9uIHdoZW4gaW52b2tpbmcgZGF0YSBnZXR0ZXJzXG4gIHB1c2hUYXJnZXQoKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZGF0YS5jYWxsKHZtLCB2bSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGhhbmRsZUVycm9yKGUsIHZtLCBcImRhdGEoKVwiKTtcbiAgICByZXR1cm4ge31cbiAgfSBmaW5hbGx5IHtcbiAgICBwb3BUYXJnZXQoKTtcbiAgfVxufVxuXG52YXIgY29tcHV0ZWRXYXRjaGVyT3B0aW9ucyA9IHsgbGF6eTogdHJ1ZSB9O1xuXG5mdW5jdGlvbiBpbml0Q29tcHV0ZWQgKHZtLCBjb21wdXRlZCkge1xuICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgdmFyIHdhdGNoZXJzID0gdm0uX2NvbXB1dGVkV2F0Y2hlcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAvLyBjb21wdXRlZCBwcm9wZXJ0aWVzIGFyZSBqdXN0IGdldHRlcnMgZHVyaW5nIFNTUlxuICB2YXIgaXNTU1IgPSBpc1NlcnZlclJlbmRlcmluZygpO1xuXG4gIGZvciAodmFyIGtleSBpbiBjb21wdXRlZCkge1xuICAgIHZhciB1c2VyRGVmID0gY29tcHV0ZWRba2V5XTtcbiAgICB2YXIgZ2V0dGVyID0gdHlwZW9mIHVzZXJEZWYgPT09ICdmdW5jdGlvbicgPyB1c2VyRGVmIDogdXNlckRlZi5nZXQ7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZ2V0dGVyID09IG51bGwpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIChcIkdldHRlciBpcyBtaXNzaW5nIGZvciBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIuXCIpLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzU1NSKSB7XG4gICAgICAvLyBjcmVhdGUgaW50ZXJuYWwgd2F0Y2hlciBmb3IgdGhlIGNvbXB1dGVkIHByb3BlcnR5LlxuICAgICAgd2F0Y2hlcnNba2V5XSA9IG5ldyBXYXRjaGVyKFxuICAgICAgICB2bSxcbiAgICAgICAgZ2V0dGVyIHx8IG5vb3AsXG4gICAgICAgIG5vb3AsXG4gICAgICAgIGNvbXB1dGVkV2F0Y2hlck9wdGlvbnNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gY29tcG9uZW50LWRlZmluZWQgY29tcHV0ZWQgcHJvcGVydGllcyBhcmUgYWxyZWFkeSBkZWZpbmVkIG9uIHRoZVxuICAgIC8vIGNvbXBvbmVudCBwcm90b3R5cGUuIFdlIG9ubHkgbmVlZCB0byBkZWZpbmUgY29tcHV0ZWQgcHJvcGVydGllcyBkZWZpbmVkXG4gICAgLy8gYXQgaW5zdGFudGlhdGlvbiBoZXJlLlxuICAgIGlmICghKGtleSBpbiB2bSkpIHtcbiAgICAgIGRlZmluZUNvbXB1dGVkKHZtLCBrZXksIHVzZXJEZWYpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGtleSBpbiB2bS4kZGF0YSkge1xuICAgICAgICB3YXJuKChcIlRoZSBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgYWxyZWFkeSBkZWZpbmVkIGluIGRhdGEuXCIpLCB2bSk7XG4gICAgICB9IGVsc2UgaWYgKHZtLiRvcHRpb25zLnByb3BzICYmIGtleSBpbiB2bS4kb3B0aW9ucy5wcm9wcykge1xuICAgICAgICB3YXJuKChcIlRoZSBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgYWxyZWFkeSBkZWZpbmVkIGFzIGEgcHJvcC5cIiksIHZtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVmaW5lQ29tcHV0ZWQgKFxuICB0YXJnZXQsXG4gIGtleSxcbiAgdXNlckRlZlxuKSB7XG4gIHZhciBzaG91bGRDYWNoZSA9ICFpc1NlcnZlclJlbmRlcmluZygpO1xuICBpZiAodHlwZW9mIHVzZXJEZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uZ2V0ID0gc2hvdWxkQ2FjaGVcbiAgICAgID8gY3JlYXRlQ29tcHV0ZWRHZXR0ZXIoa2V5KVxuICAgICAgOiBjcmVhdGVHZXR0ZXJJbnZva2VyKHVzZXJEZWYpO1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPSBub29wO1xuICB9IGVsc2Uge1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5nZXQgPSB1c2VyRGVmLmdldFxuICAgICAgPyBzaG91bGRDYWNoZSAmJiB1c2VyRGVmLmNhY2hlICE9PSBmYWxzZVxuICAgICAgICA/IGNyZWF0ZUNvbXB1dGVkR2V0dGVyKGtleSlcbiAgICAgICAgOiBjcmVhdGVHZXR0ZXJJbnZva2VyKHVzZXJEZWYuZ2V0KVxuICAgICAgOiBub29wO1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPSB1c2VyRGVmLnNldCB8fCBub29wO1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uc2V0ID09PSBub29wKSB7XG4gICAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLnNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIChcIkNvbXB1dGVkIHByb3BlcnR5IFxcXCJcIiArIGtleSArIFwiXFxcIiB3YXMgYXNzaWduZWQgdG8gYnV0IGl0IGhhcyBubyBzZXR0ZXIuXCIpLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgIH07XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21wdXRlZEdldHRlciAoa2V5KSB7XG4gIHJldHVybiBmdW5jdGlvbiBjb21wdXRlZEdldHRlciAoKSB7XG4gICAgdmFyIHdhdGNoZXIgPSB0aGlzLl9jb21wdXRlZFdhdGNoZXJzICYmIHRoaXMuX2NvbXB1dGVkV2F0Y2hlcnNba2V5XTtcbiAgICBpZiAod2F0Y2hlcikge1xuICAgICAgaWYgKHdhdGNoZXIuZGlydHkpIHtcbiAgICAgICAgd2F0Y2hlci5ldmFsdWF0ZSgpO1xuICAgICAgfVxuICAgICAgaWYgKERlcC50YXJnZXQpIHtcbiAgICAgICAgd2F0Y2hlci5kZXBlbmQoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3YXRjaGVyLnZhbHVlXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUdldHRlckludm9rZXIoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNvbXB1dGVkR2V0dGVyICgpIHtcbiAgICByZXR1cm4gZm4uY2FsbCh0aGlzLCB0aGlzKVxuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRNZXRob2RzICh2bSwgbWV0aG9kcykge1xuICB2YXIgcHJvcHMgPSB2bS4kb3B0aW9ucy5wcm9wcztcbiAgZm9yICh2YXIga2V5IGluIG1ldGhvZHMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKHR5cGVvZiBtZXRob2RzW2tleV0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICBcIk1ldGhvZCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaGFzIHR5cGUgXFxcIlwiICsgKHR5cGVvZiBtZXRob2RzW2tleV0pICsgXCJcXFwiIGluIHRoZSBjb21wb25lbnQgZGVmaW5pdGlvbi4gXCIgK1xuICAgICAgICAgIFwiRGlkIHlvdSByZWZlcmVuY2UgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseT9cIixcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzICYmIGhhc093bihwcm9wcywga2V5KSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIChcIk1ldGhvZCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaGFzIGFscmVhZHkgYmVlbiBkZWZpbmVkIGFzIGEgcHJvcC5cIiksXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmICgoa2V5IGluIHZtKSAmJiBpc1Jlc2VydmVkKGtleSkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICBcIk1ldGhvZCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgY29uZmxpY3RzIHdpdGggYW4gZXhpc3RpbmcgVnVlIGluc3RhbmNlIG1ldGhvZC4gXCIgK1xuICAgICAgICAgIFwiQXZvaWQgZGVmaW5pbmcgY29tcG9uZW50IG1ldGhvZHMgdGhhdCBzdGFydCB3aXRoIF8gb3IgJC5cIlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICB2bVtrZXldID0gdHlwZW9mIG1ldGhvZHNba2V5XSAhPT0gJ2Z1bmN0aW9uJyA/IG5vb3AgOiBiaW5kKG1ldGhvZHNba2V5XSwgdm0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRXYXRjaCAodm0sIHdhdGNoKSB7XG4gIGZvciAodmFyIGtleSBpbiB3YXRjaCkge1xuICAgIHZhciBoYW5kbGVyID0gd2F0Y2hba2V5XTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShoYW5kbGVyKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoYW5kbGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNyZWF0ZVdhdGNoZXIodm0sIGtleSwgaGFuZGxlcltpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNyZWF0ZVdhdGNoZXIodm0sIGtleSwgaGFuZGxlcik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVdhdGNoZXIgKFxuICB2bSxcbiAgZXhwT3JGbixcbiAgaGFuZGxlcixcbiAgb3B0aW9uc1xuKSB7XG4gIGlmIChpc1BsYWluT2JqZWN0KGhhbmRsZXIpKSB7XG4gICAgb3B0aW9ucyA9IGhhbmRsZXI7XG4gICAgaGFuZGxlciA9IGhhbmRsZXIuaGFuZGxlcjtcbiAgfVxuICBpZiAodHlwZW9mIGhhbmRsZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgaGFuZGxlciA9IHZtW2hhbmRsZXJdO1xuICB9XG4gIHJldHVybiB2bS4kd2F0Y2goZXhwT3JGbiwgaGFuZGxlciwgb3B0aW9ucylcbn1cblxuZnVuY3Rpb24gc3RhdGVNaXhpbiAoVnVlKSB7XG4gIC8vIGZsb3cgc29tZWhvdyBoYXMgcHJvYmxlbXMgd2l0aCBkaXJlY3RseSBkZWNsYXJlZCBkZWZpbml0aW9uIG9iamVjdFxuICAvLyB3aGVuIHVzaW5nIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwgc28gd2UgaGF2ZSB0byBwcm9jZWR1cmFsbHkgYnVpbGQgdXBcbiAgLy8gdGhlIG9iamVjdCBoZXJlLlxuICB2YXIgZGF0YURlZiA9IHt9O1xuICBkYXRhRGVmLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX2RhdGEgfTtcbiAgdmFyIHByb3BzRGVmID0ge307XG4gIHByb3BzRGVmLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX3Byb3BzIH07XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgZGF0YURlZi5zZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnQXZvaWQgcmVwbGFjaW5nIGluc3RhbmNlIHJvb3QgJGRhdGEuICcgK1xuICAgICAgICAnVXNlIG5lc3RlZCBkYXRhIHByb3BlcnRpZXMgaW5zdGVhZC4nLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgIH07XG4gICAgcHJvcHNEZWYuc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2FybihcIiRwcm9wcyBpcyByZWFkb25seS5cIiwgdGhpcyk7XG4gICAgfTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLnByb3RvdHlwZSwgJyRkYXRhJywgZGF0YURlZik7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUucHJvdG90eXBlLCAnJHByb3BzJywgcHJvcHNEZWYpO1xuXG4gIFZ1ZS5wcm90b3R5cGUuJHNldCA9IHNldDtcbiAgVnVlLnByb3RvdHlwZS4kZGVsZXRlID0gZGVsO1xuXG4gIFZ1ZS5wcm90b3R5cGUuJHdhdGNoID0gZnVuY3Rpb24gKFxuICAgIGV4cE9yRm4sXG4gICAgY2IsXG4gICAgb3B0aW9uc1xuICApIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmIChpc1BsYWluT2JqZWN0KGNiKSkge1xuICAgICAgcmV0dXJuIGNyZWF0ZVdhdGNoZXIodm0sIGV4cE9yRm4sIGNiLCBvcHRpb25zKVxuICAgIH1cbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICBvcHRpb25zLnVzZXIgPSB0cnVlO1xuICAgIHZhciB3YXRjaGVyID0gbmV3IFdhdGNoZXIodm0sIGV4cE9yRm4sIGNiLCBvcHRpb25zKTtcbiAgICBpZiAob3B0aW9ucy5pbW1lZGlhdGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNiLmNhbGwodm0sIHdhdGNoZXIudmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIHZtLCAoXCJjYWxsYmFjayBmb3IgaW1tZWRpYXRlIHdhdGNoZXIgXFxcIlwiICsgKHdhdGNoZXIuZXhwcmVzc2lvbikgKyBcIlxcXCJcIikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rpb24gdW53YXRjaEZuICgpIHtcbiAgICAgIHdhdGNoZXIudGVhcmRvd24oKTtcbiAgICB9XG4gIH07XG59XG5cbi8qICAqL1xuXG52YXIgdWlkJDMgPSAwO1xuXG5mdW5jdGlvbiBpbml0TWl4aW4gKFZ1ZSkge1xuICBWdWUucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIC8vIGEgdWlkXG4gICAgdm0uX3VpZCA9IHVpZCQzKys7XG5cbiAgICB2YXIgc3RhcnRUYWcsIGVuZFRhZztcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjb25maWcucGVyZm9ybWFuY2UgJiYgbWFyaykge1xuICAgICAgc3RhcnRUYWcgPSBcInZ1ZS1wZXJmLXN0YXJ0OlwiICsgKHZtLl91aWQpO1xuICAgICAgZW5kVGFnID0gXCJ2dWUtcGVyZi1lbmQ6XCIgKyAodm0uX3VpZCk7XG4gICAgICBtYXJrKHN0YXJ0VGFnKTtcbiAgICB9XG5cbiAgICAvLyBhIGZsYWcgdG8gYXZvaWQgdGhpcyBiZWluZyBvYnNlcnZlZFxuICAgIHZtLl9pc1Z1ZSA9IHRydWU7XG4gICAgLy8gbWVyZ2Ugb3B0aW9uc1xuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuX2lzQ29tcG9uZW50KSB7XG4gICAgICAvLyBvcHRpbWl6ZSBpbnRlcm5hbCBjb21wb25lbnQgaW5zdGFudGlhdGlvblxuICAgICAgLy8gc2luY2UgZHluYW1pYyBvcHRpb25zIG1lcmdpbmcgaXMgcHJldHR5IHNsb3csIGFuZCBub25lIG9mIHRoZVxuICAgICAgLy8gaW50ZXJuYWwgY29tcG9uZW50IG9wdGlvbnMgbmVlZHMgc3BlY2lhbCB0cmVhdG1lbnQuXG4gICAgICBpbml0SW50ZXJuYWxDb21wb25lbnQodm0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bS4kb3B0aW9ucyA9IG1lcmdlT3B0aW9ucyhcbiAgICAgICAgcmVzb2x2ZUNvbnN0cnVjdG9yT3B0aW9ucyh2bS5jb25zdHJ1Y3RvciksXG4gICAgICAgIG9wdGlvbnMgfHwge30sXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpbml0UHJveHkodm0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bS5fcmVuZGVyUHJveHkgPSB2bTtcbiAgICB9XG4gICAgLy8gZXhwb3NlIHJlYWwgc2VsZlxuICAgIHZtLl9zZWxmID0gdm07XG4gICAgaW5pdExpZmVjeWNsZSh2bSk7XG4gICAgaW5pdEV2ZW50cyh2bSk7XG4gICAgaW5pdFJlbmRlcih2bSk7XG4gICAgY2FsbEhvb2sodm0sICdiZWZvcmVDcmVhdGUnKTtcbiAgICBpbml0SW5qZWN0aW9ucyh2bSk7IC8vIHJlc29sdmUgaW5qZWN0aW9ucyBiZWZvcmUgZGF0YS9wcm9wc1xuICAgIGluaXRTdGF0ZSh2bSk7XG4gICAgaW5pdFByb3ZpZGUodm0pOyAvLyByZXNvbHZlIHByb3ZpZGUgYWZ0ZXIgZGF0YS9wcm9wc1xuICAgIGNhbGxIb29rKHZtLCAnY3JlYXRlZCcpO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY29uZmlnLnBlcmZvcm1hbmNlICYmIG1hcmspIHtcbiAgICAgIHZtLl9uYW1lID0gZm9ybWF0Q29tcG9uZW50TmFtZSh2bSwgZmFsc2UpO1xuICAgICAgbWFyayhlbmRUYWcpO1xuICAgICAgbWVhc3VyZSgoXCJ2dWUgXCIgKyAodm0uX25hbWUpICsgXCIgaW5pdFwiKSwgc3RhcnRUYWcsIGVuZFRhZyk7XG4gICAgfVxuXG4gICAgaWYgKHZtLiRvcHRpb25zLmVsKSB7XG4gICAgICB2bS4kbW91bnQodm0uJG9wdGlvbnMuZWwpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gaW5pdEludGVybmFsQ29tcG9uZW50ICh2bSwgb3B0aW9ucykge1xuICB2YXIgb3B0cyA9IHZtLiRvcHRpb25zID0gT2JqZWN0LmNyZWF0ZSh2bS5jb25zdHJ1Y3Rvci5vcHRpb25zKTtcbiAgLy8gZG9pbmcgdGhpcyBiZWNhdXNlIGl0J3MgZmFzdGVyIHRoYW4gZHluYW1pYyBlbnVtZXJhdGlvbi5cbiAgdmFyIHBhcmVudFZub2RlID0gb3B0aW9ucy5fcGFyZW50Vm5vZGU7XG4gIG9wdHMucGFyZW50ID0gb3B0aW9ucy5wYXJlbnQ7XG4gIG9wdHMuX3BhcmVudFZub2RlID0gcGFyZW50Vm5vZGU7XG5cbiAgdmFyIHZub2RlQ29tcG9uZW50T3B0aW9ucyA9IHBhcmVudFZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gIG9wdHMucHJvcHNEYXRhID0gdm5vZGVDb21wb25lbnRPcHRpb25zLnByb3BzRGF0YTtcbiAgb3B0cy5fcGFyZW50TGlzdGVuZXJzID0gdm5vZGVDb21wb25lbnRPcHRpb25zLmxpc3RlbmVycztcbiAgb3B0cy5fcmVuZGVyQ2hpbGRyZW4gPSB2bm9kZUNvbXBvbmVudE9wdGlvbnMuY2hpbGRyZW47XG4gIG9wdHMuX2NvbXBvbmVudFRhZyA9IHZub2RlQ29tcG9uZW50T3B0aW9ucy50YWc7XG5cbiAgaWYgKG9wdGlvbnMucmVuZGVyKSB7XG4gICAgb3B0cy5yZW5kZXIgPSBvcHRpb25zLnJlbmRlcjtcbiAgICBvcHRzLnN0YXRpY1JlbmRlckZucyA9IG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnMgKEN0b3IpIHtcbiAgdmFyIG9wdGlvbnMgPSBDdG9yLm9wdGlvbnM7XG4gIGlmIChDdG9yLnN1cGVyKSB7XG4gICAgdmFyIHN1cGVyT3B0aW9ucyA9IHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnMoQ3Rvci5zdXBlcik7XG4gICAgdmFyIGNhY2hlZFN1cGVyT3B0aW9ucyA9IEN0b3Iuc3VwZXJPcHRpb25zO1xuICAgIGlmIChzdXBlck9wdGlvbnMgIT09IGNhY2hlZFN1cGVyT3B0aW9ucykge1xuICAgICAgLy8gc3VwZXIgb3B0aW9uIGNoYW5nZWQsXG4gICAgICAvLyBuZWVkIHRvIHJlc29sdmUgbmV3IG9wdGlvbnMuXG4gICAgICBDdG9yLnN1cGVyT3B0aW9ucyA9IHN1cGVyT3B0aW9ucztcbiAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgbGF0ZS1tb2RpZmllZC9hdHRhY2hlZCBvcHRpb25zICgjNDk3NilcbiAgICAgIHZhciBtb2RpZmllZE9wdGlvbnMgPSByZXNvbHZlTW9kaWZpZWRPcHRpb25zKEN0b3IpO1xuICAgICAgLy8gdXBkYXRlIGJhc2UgZXh0ZW5kIG9wdGlvbnNcbiAgICAgIGlmIChtb2RpZmllZE9wdGlvbnMpIHtcbiAgICAgICAgZXh0ZW5kKEN0b3IuZXh0ZW5kT3B0aW9ucywgbW9kaWZpZWRPcHRpb25zKTtcbiAgICAgIH1cbiAgICAgIG9wdGlvbnMgPSBDdG9yLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoc3VwZXJPcHRpb25zLCBDdG9yLmV4dGVuZE9wdGlvbnMpO1xuICAgICAgaWYgKG9wdGlvbnMubmFtZSkge1xuICAgICAgICBvcHRpb25zLmNvbXBvbmVudHNbb3B0aW9ucy5uYW1lXSA9IEN0b3I7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVNb2RpZmllZE9wdGlvbnMgKEN0b3IpIHtcbiAgdmFyIG1vZGlmaWVkO1xuICB2YXIgbGF0ZXN0ID0gQ3Rvci5vcHRpb25zO1xuICB2YXIgc2VhbGVkID0gQ3Rvci5zZWFsZWRPcHRpb25zO1xuICBmb3IgKHZhciBrZXkgaW4gbGF0ZXN0KSB7XG4gICAgaWYgKGxhdGVzdFtrZXldICE9PSBzZWFsZWRba2V5XSkge1xuICAgICAgaWYgKCFtb2RpZmllZCkgeyBtb2RpZmllZCA9IHt9OyB9XG4gICAgICBtb2RpZmllZFtrZXldID0gbGF0ZXN0W2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiBtb2RpZmllZFxufVxuXG5mdW5jdGlvbiBWdWUgKG9wdGlvbnMpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAhKHRoaXMgaW5zdGFuY2VvZiBWdWUpXG4gICkge1xuICAgIHdhcm4oJ1Z1ZSBpcyBhIGNvbnN0cnVjdG9yIGFuZCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIGBuZXdgIGtleXdvcmQnKTtcbiAgfVxuICB0aGlzLl9pbml0KG9wdGlvbnMpO1xufVxuXG5pbml0TWl4aW4oVnVlKTtcbnN0YXRlTWl4aW4oVnVlKTtcbmV2ZW50c01peGluKFZ1ZSk7XG5saWZlY3ljbGVNaXhpbihWdWUpO1xucmVuZGVyTWl4aW4oVnVlKTtcblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRVc2UgKFZ1ZSkge1xuICBWdWUudXNlID0gZnVuY3Rpb24gKHBsdWdpbikge1xuICAgIHZhciBpbnN0YWxsZWRQbHVnaW5zID0gKHRoaXMuX2luc3RhbGxlZFBsdWdpbnMgfHwgKHRoaXMuX2luc3RhbGxlZFBsdWdpbnMgPSBbXSkpO1xuICAgIGlmIChpbnN0YWxsZWRQbHVnaW5zLmluZGV4T2YocGx1Z2luKSA+IC0xKSB7XG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8vIGFkZGl0aW9uYWwgcGFyYW1ldGVyc1xuICAgIHZhciBhcmdzID0gdG9BcnJheShhcmd1bWVudHMsIDEpO1xuICAgIGFyZ3MudW5zaGlmdCh0aGlzKTtcbiAgICBpZiAodHlwZW9mIHBsdWdpbi5pbnN0YWxsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwbHVnaW4uaW5zdGFsbC5hcHBseShwbHVnaW4sIGFyZ3MpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHBsdWdpbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGx1Z2luLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgIH1cbiAgICBpbnN0YWxsZWRQbHVnaW5zLnB1c2gocGx1Z2luKTtcbiAgICByZXR1cm4gdGhpc1xuICB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdE1peGluJDEgKFZ1ZSkge1xuICBWdWUubWl4aW4gPSBmdW5jdGlvbiAobWl4aW4pIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnModGhpcy5vcHRpb25zLCBtaXhpbik7XG4gICAgcmV0dXJuIHRoaXNcbiAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRFeHRlbmQgKFZ1ZSkge1xuICAvKipcbiAgICogRWFjaCBpbnN0YW5jZSBjb25zdHJ1Y3RvciwgaW5jbHVkaW5nIFZ1ZSwgaGFzIGEgdW5pcXVlXG4gICAqIGNpZC4gVGhpcyBlbmFibGVzIHVzIHRvIGNyZWF0ZSB3cmFwcGVkIFwiY2hpbGRcbiAgICogY29uc3RydWN0b3JzXCIgZm9yIHByb3RvdHlwYWwgaW5oZXJpdGFuY2UgYW5kIGNhY2hlIHRoZW0uXG4gICAqL1xuICBWdWUuY2lkID0gMDtcbiAgdmFyIGNpZCA9IDE7XG5cbiAgLyoqXG4gICAqIENsYXNzIGluaGVyaXRhbmNlXG4gICAqL1xuICBWdWUuZXh0ZW5kID0gZnVuY3Rpb24gKGV4dGVuZE9wdGlvbnMpIHtcbiAgICBleHRlbmRPcHRpb25zID0gZXh0ZW5kT3B0aW9ucyB8fCB7fTtcbiAgICB2YXIgU3VwZXIgPSB0aGlzO1xuICAgIHZhciBTdXBlcklkID0gU3VwZXIuY2lkO1xuICAgIHZhciBjYWNoZWRDdG9ycyA9IGV4dGVuZE9wdGlvbnMuX0N0b3IgfHwgKGV4dGVuZE9wdGlvbnMuX0N0b3IgPSB7fSk7XG4gICAgaWYgKGNhY2hlZEN0b3JzW1N1cGVySWRdKSB7XG4gICAgICByZXR1cm4gY2FjaGVkQ3RvcnNbU3VwZXJJZF1cbiAgICB9XG5cbiAgICB2YXIgbmFtZSA9IGV4dGVuZE9wdGlvbnMubmFtZSB8fCBTdXBlci5vcHRpb25zLm5hbWU7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgbmFtZSkge1xuICAgICAgdmFsaWRhdGVDb21wb25lbnROYW1lKG5hbWUpO1xuICAgIH1cblxuICAgIHZhciBTdWIgPSBmdW5jdGlvbiBWdWVDb21wb25lbnQgKG9wdGlvbnMpIHtcbiAgICAgIHRoaXMuX2luaXQob3B0aW9ucyk7XG4gICAgfTtcbiAgICBTdWIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdXBlci5wcm90b3R5cGUpO1xuICAgIFN1Yi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTdWI7XG4gICAgU3ViLmNpZCA9IGNpZCsrO1xuICAgIFN1Yi5vcHRpb25zID0gbWVyZ2VPcHRpb25zKFxuICAgICAgU3VwZXIub3B0aW9ucyxcbiAgICAgIGV4dGVuZE9wdGlvbnNcbiAgICApO1xuICAgIFN1Ylsnc3VwZXInXSA9IFN1cGVyO1xuXG4gICAgLy8gRm9yIHByb3BzIGFuZCBjb21wdXRlZCBwcm9wZXJ0aWVzLCB3ZSBkZWZpbmUgdGhlIHByb3h5IGdldHRlcnMgb25cbiAgICAvLyB0aGUgVnVlIGluc3RhbmNlcyBhdCBleHRlbnNpb24gdGltZSwgb24gdGhlIGV4dGVuZGVkIHByb3RvdHlwZS4gVGhpc1xuICAgIC8vIGF2b2lkcyBPYmplY3QuZGVmaW5lUHJvcGVydHkgY2FsbHMgZm9yIGVhY2ggaW5zdGFuY2UgY3JlYXRlZC5cbiAgICBpZiAoU3ViLm9wdGlvbnMucHJvcHMpIHtcbiAgICAgIGluaXRQcm9wcyQxKFN1Yik7XG4gICAgfVxuICAgIGlmIChTdWIub3B0aW9ucy5jb21wdXRlZCkge1xuICAgICAgaW5pdENvbXB1dGVkJDEoU3ViKTtcbiAgICB9XG5cbiAgICAvLyBhbGxvdyBmdXJ0aGVyIGV4dGVuc2lvbi9taXhpbi9wbHVnaW4gdXNhZ2VcbiAgICBTdWIuZXh0ZW5kID0gU3VwZXIuZXh0ZW5kO1xuICAgIFN1Yi5taXhpbiA9IFN1cGVyLm1peGluO1xuICAgIFN1Yi51c2UgPSBTdXBlci51c2U7XG5cbiAgICAvLyBjcmVhdGUgYXNzZXQgcmVnaXN0ZXJzLCBzbyBleHRlbmRlZCBjbGFzc2VzXG4gICAgLy8gY2FuIGhhdmUgdGhlaXIgcHJpdmF0ZSBhc3NldHMgdG9vLlxuICAgIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgIFN1Ylt0eXBlXSA9IFN1cGVyW3R5cGVdO1xuICAgIH0pO1xuICAgIC8vIGVuYWJsZSByZWN1cnNpdmUgc2VsZi1sb29rdXBcbiAgICBpZiAobmFtZSkge1xuICAgICAgU3ViLm9wdGlvbnMuY29tcG9uZW50c1tuYW1lXSA9IFN1YjtcbiAgICB9XG5cbiAgICAvLyBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBzdXBlciBvcHRpb25zIGF0IGV4dGVuc2lvbiB0aW1lLlxuICAgIC8vIGxhdGVyIGF0IGluc3RhbnRpYXRpb24gd2UgY2FuIGNoZWNrIGlmIFN1cGVyJ3Mgb3B0aW9ucyBoYXZlXG4gICAgLy8gYmVlbiB1cGRhdGVkLlxuICAgIFN1Yi5zdXBlck9wdGlvbnMgPSBTdXBlci5vcHRpb25zO1xuICAgIFN1Yi5leHRlbmRPcHRpb25zID0gZXh0ZW5kT3B0aW9ucztcbiAgICBTdWIuc2VhbGVkT3B0aW9ucyA9IGV4dGVuZCh7fSwgU3ViLm9wdGlvbnMpO1xuXG4gICAgLy8gY2FjaGUgY29uc3RydWN0b3JcbiAgICBjYWNoZWRDdG9yc1tTdXBlcklkXSA9IFN1YjtcbiAgICByZXR1cm4gU3ViXG4gIH07XG59XG5cbmZ1bmN0aW9uIGluaXRQcm9wcyQxIChDb21wKSB7XG4gIHZhciBwcm9wcyA9IENvbXAub3B0aW9ucy5wcm9wcztcbiAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgcHJveHkoQ29tcC5wcm90b3R5cGUsIFwiX3Byb3BzXCIsIGtleSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdENvbXB1dGVkJDEgKENvbXApIHtcbiAgdmFyIGNvbXB1dGVkID0gQ29tcC5vcHRpb25zLmNvbXB1dGVkO1xuICBmb3IgKHZhciBrZXkgaW4gY29tcHV0ZWQpIHtcbiAgICBkZWZpbmVDb21wdXRlZChDb21wLnByb3RvdHlwZSwga2V5LCBjb21wdXRlZFtrZXldKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdEFzc2V0UmVnaXN0ZXJzIChWdWUpIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhc3NldCByZWdpc3RyYXRpb24gbWV0aG9kcy5cbiAgICovXG4gIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICBWdWVbdHlwZV0gPSBmdW5jdGlvbiAoXG4gICAgICBpZCxcbiAgICAgIGRlZmluaXRpb25cbiAgICApIHtcbiAgICAgIGlmICghZGVmaW5pdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zW3R5cGUgKyAncyddW2lkXVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHR5cGUgPT09ICdjb21wb25lbnQnKSB7XG4gICAgICAgICAgdmFsaWRhdGVDb21wb25lbnROYW1lKGlkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbXBvbmVudCcgJiYgaXNQbGFpbk9iamVjdChkZWZpbml0aW9uKSkge1xuICAgICAgICAgIGRlZmluaXRpb24ubmFtZSA9IGRlZmluaXRpb24ubmFtZSB8fCBpZDtcbiAgICAgICAgICBkZWZpbml0aW9uID0gdGhpcy5vcHRpb25zLl9iYXNlLmV4dGVuZChkZWZpbml0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2RpcmVjdGl2ZScgJiYgdHlwZW9mIGRlZmluaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBkZWZpbml0aW9uID0geyBiaW5kOiBkZWZpbml0aW9uLCB1cGRhdGU6IGRlZmluaXRpb24gfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wdGlvbnNbdHlwZSArICdzJ11baWRdID0gZGVmaW5pdGlvbjtcbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb25cbiAgICAgIH1cbiAgICB9O1xuICB9KTtcbn1cblxuLyogICovXG5cblxuXG5mdW5jdGlvbiBnZXRDb21wb25lbnROYW1lIChvcHRzKSB7XG4gIHJldHVybiBvcHRzICYmIChvcHRzLkN0b3Iub3B0aW9ucy5uYW1lIHx8IG9wdHMudGFnKVxufVxuXG5mdW5jdGlvbiBtYXRjaGVzIChwYXR0ZXJuLCBuYW1lKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHBhdHRlcm4pKSB7XG4gICAgcmV0dXJuIHBhdHRlcm4uaW5kZXhPZihuYW1lKSA+IC0xXG4gIH0gZWxzZSBpZiAodHlwZW9mIHBhdHRlcm4gPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBhdHRlcm4uc3BsaXQoJywnKS5pbmRleE9mKG5hbWUpID4gLTFcbiAgfSBlbHNlIGlmIChpc1JlZ0V4cChwYXR0ZXJuKSkge1xuICAgIHJldHVybiBwYXR0ZXJuLnRlc3QobmFtZSlcbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gcHJ1bmVDYWNoZSAoa2VlcEFsaXZlSW5zdGFuY2UsIGZpbHRlcikge1xuICB2YXIgY2FjaGUgPSBrZWVwQWxpdmVJbnN0YW5jZS5jYWNoZTtcbiAgdmFyIGtleXMgPSBrZWVwQWxpdmVJbnN0YW5jZS5rZXlzO1xuICB2YXIgX3Zub2RlID0ga2VlcEFsaXZlSW5zdGFuY2UuX3Zub2RlO1xuICBmb3IgKHZhciBrZXkgaW4gY2FjaGUpIHtcbiAgICB2YXIgY2FjaGVkTm9kZSA9IGNhY2hlW2tleV07XG4gICAgaWYgKGNhY2hlZE5vZGUpIHtcbiAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZShjYWNoZWROb2RlLmNvbXBvbmVudE9wdGlvbnMpO1xuICAgICAgaWYgKG5hbWUgJiYgIWZpbHRlcihuYW1lKSkge1xuICAgICAgICBwcnVuZUNhY2hlRW50cnkoY2FjaGUsIGtleSwga2V5cywgX3Zub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJ1bmVDYWNoZUVudHJ5IChcbiAgY2FjaGUsXG4gIGtleSxcbiAga2V5cyxcbiAgY3VycmVudFxuKSB7XG4gIHZhciBjYWNoZWQkJDEgPSBjYWNoZVtrZXldO1xuICBpZiAoY2FjaGVkJCQxICYmICghY3VycmVudCB8fCBjYWNoZWQkJDEudGFnICE9PSBjdXJyZW50LnRhZykpIHtcbiAgICBjYWNoZWQkJDEuY29tcG9uZW50SW5zdGFuY2UuJGRlc3Ryb3koKTtcbiAgfVxuICBjYWNoZVtrZXldID0gbnVsbDtcbiAgcmVtb3ZlKGtleXMsIGtleSk7XG59XG5cbnZhciBwYXR0ZXJuVHlwZXMgPSBbU3RyaW5nLCBSZWdFeHAsIEFycmF5XTtcblxudmFyIEtlZXBBbGl2ZSA9IHtcbiAgbmFtZTogJ2tlZXAtYWxpdmUnLFxuICBhYnN0cmFjdDogdHJ1ZSxcblxuICBwcm9wczoge1xuICAgIGluY2x1ZGU6IHBhdHRlcm5UeXBlcyxcbiAgICBleGNsdWRlOiBwYXR0ZXJuVHlwZXMsXG4gICAgbWF4OiBbU3RyaW5nLCBOdW1iZXJdXG4gIH0sXG5cbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCAoKSB7XG4gICAgdGhpcy5jYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdGhpcy5rZXlzID0gW107XG4gIH0sXG5cbiAgZGVzdHJveWVkOiBmdW5jdGlvbiBkZXN0cm95ZWQgKCkge1xuICAgIGZvciAodmFyIGtleSBpbiB0aGlzLmNhY2hlKSB7XG4gICAgICBwcnVuZUNhY2hlRW50cnkodGhpcy5jYWNoZSwga2V5LCB0aGlzLmtleXMpO1xuICAgIH1cbiAgfSxcblxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHRoaXMuJHdhdGNoKCdpbmNsdWRlJywgZnVuY3Rpb24gKHZhbCkge1xuICAgICAgcHJ1bmVDYWNoZSh0aGlzJDEsIGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiBtYXRjaGVzKHZhbCwgbmFtZSk7IH0pO1xuICAgIH0pO1xuICAgIHRoaXMuJHdhdGNoKCdleGNsdWRlJywgZnVuY3Rpb24gKHZhbCkge1xuICAgICAgcHJ1bmVDYWNoZSh0aGlzJDEsIGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiAhbWF0Y2hlcyh2YWwsIG5hbWUpOyB9KTtcbiAgICB9KTtcbiAgfSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoKSB7XG4gICAgdmFyIHNsb3QgPSB0aGlzLiRzbG90cy5kZWZhdWx0O1xuICAgIHZhciB2bm9kZSA9IGdldEZpcnN0Q29tcG9uZW50Q2hpbGQoc2xvdCk7XG4gICAgdmFyIGNvbXBvbmVudE9wdGlvbnMgPSB2bm9kZSAmJiB2bm9kZS5jb21wb25lbnRPcHRpb25zO1xuICAgIGlmIChjb21wb25lbnRPcHRpb25zKSB7XG4gICAgICAvLyBjaGVjayBwYXR0ZXJuXG4gICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWUoY29tcG9uZW50T3B0aW9ucyk7XG4gICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgIHZhciBpbmNsdWRlID0gcmVmLmluY2x1ZGU7XG4gICAgICB2YXIgZXhjbHVkZSA9IHJlZi5leGNsdWRlO1xuICAgICAgaWYgKFxuICAgICAgICAvLyBub3QgaW5jbHVkZWRcbiAgICAgICAgKGluY2x1ZGUgJiYgKCFuYW1lIHx8ICFtYXRjaGVzKGluY2x1ZGUsIG5hbWUpKSkgfHxcbiAgICAgICAgLy8gZXhjbHVkZWRcbiAgICAgICAgKGV4Y2x1ZGUgJiYgbmFtZSAmJiBtYXRjaGVzKGV4Y2x1ZGUsIG5hbWUpKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB2bm9kZVxuICAgICAgfVxuXG4gICAgICB2YXIgcmVmJDEgPSB0aGlzO1xuICAgICAgdmFyIGNhY2hlID0gcmVmJDEuY2FjaGU7XG4gICAgICB2YXIga2V5cyA9IHJlZiQxLmtleXM7XG4gICAgICB2YXIga2V5ID0gdm5vZGUua2V5ID09IG51bGxcbiAgICAgICAgLy8gc2FtZSBjb25zdHJ1Y3RvciBtYXkgZ2V0IHJlZ2lzdGVyZWQgYXMgZGlmZmVyZW50IGxvY2FsIGNvbXBvbmVudHNcbiAgICAgICAgLy8gc28gY2lkIGFsb25lIGlzIG5vdCBlbm91Z2ggKCMzMjY5KVxuICAgICAgICA/IGNvbXBvbmVudE9wdGlvbnMuQ3Rvci5jaWQgKyAoY29tcG9uZW50T3B0aW9ucy50YWcgPyAoXCI6OlwiICsgKGNvbXBvbmVudE9wdGlvbnMudGFnKSkgOiAnJylcbiAgICAgICAgOiB2bm9kZS5rZXk7XG4gICAgICBpZiAoY2FjaGVba2V5XSkge1xuICAgICAgICB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IGNhY2hlW2tleV0uY29tcG9uZW50SW5zdGFuY2U7XG4gICAgICAgIC8vIG1ha2UgY3VycmVudCBrZXkgZnJlc2hlc3RcbiAgICAgICAgcmVtb3ZlKGtleXMsIGtleSk7XG4gICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FjaGVba2V5XSA9IHZub2RlO1xuICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgLy8gcHJ1bmUgb2xkZXN0IGVudHJ5XG4gICAgICAgIGlmICh0aGlzLm1heCAmJiBrZXlzLmxlbmd0aCA+IHBhcnNlSW50KHRoaXMubWF4KSkge1xuICAgICAgICAgIHBydW5lQ2FjaGVFbnRyeShjYWNoZSwga2V5c1swXSwga2V5cywgdGhpcy5fdm5vZGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZub2RlLmRhdGEua2VlcEFsaXZlID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHZub2RlIHx8IChzbG90ICYmIHNsb3RbMF0pXG4gIH1cbn07XG5cbnZhciBidWlsdEluQ29tcG9uZW50cyA9IHtcbiAgS2VlcEFsaXZlOiBLZWVwQWxpdmVcbn07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0R2xvYmFsQVBJIChWdWUpIHtcbiAgLy8gY29uZmlnXG4gIHZhciBjb25maWdEZWYgPSB7fTtcbiAgY29uZmlnRGVmLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNvbmZpZzsgfTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjb25maWdEZWYuc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2FybihcbiAgICAgICAgJ0RvIG5vdCByZXBsYWNlIHRoZSBWdWUuY29uZmlnIG9iamVjdCwgc2V0IGluZGl2aWR1YWwgZmllbGRzIGluc3RlYWQuJ1xuICAgICAgKTtcbiAgICB9O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUsICdjb25maWcnLCBjb25maWdEZWYpO1xuXG4gIC8vIGV4cG9zZWQgdXRpbCBtZXRob2RzLlxuICAvLyBOT1RFOiB0aGVzZSBhcmUgbm90IGNvbnNpZGVyZWQgcGFydCBvZiB0aGUgcHVibGljIEFQSSAtIGF2b2lkIHJlbHlpbmcgb25cbiAgLy8gdGhlbSB1bmxlc3MgeW91IGFyZSBhd2FyZSBvZiB0aGUgcmlzay5cbiAgVnVlLnV0aWwgPSB7XG4gICAgd2Fybjogd2FybixcbiAgICBleHRlbmQ6IGV4dGVuZCxcbiAgICBtZXJnZU9wdGlvbnM6IG1lcmdlT3B0aW9ucyxcbiAgICBkZWZpbmVSZWFjdGl2ZTogZGVmaW5lUmVhY3RpdmUkJDFcbiAgfTtcblxuICBWdWUuc2V0ID0gc2V0O1xuICBWdWUuZGVsZXRlID0gZGVsO1xuICBWdWUubmV4dFRpY2sgPSBuZXh0VGljaztcblxuICAvLyAyLjYgZXhwbGljaXQgb2JzZXJ2YWJsZSBBUElcbiAgVnVlLm9ic2VydmFibGUgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgb2JzZXJ2ZShvYmopO1xuICAgIHJldHVybiBvYmpcbiAgfTtcblxuICBWdWUub3B0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICBWdWUub3B0aW9uc1t0eXBlICsgJ3MnXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIH0pO1xuXG4gIC8vIHRoaXMgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUgXCJiYXNlXCIgY29uc3RydWN0b3IgdG8gZXh0ZW5kIGFsbCBwbGFpbi1vYmplY3RcbiAgLy8gY29tcG9uZW50cyB3aXRoIGluIFdlZXgncyBtdWx0aS1pbnN0YW5jZSBzY2VuYXJpb3MuXG4gIFZ1ZS5vcHRpb25zLl9iYXNlID0gVnVlO1xuXG4gIGV4dGVuZChWdWUub3B0aW9ucy5jb21wb25lbnRzLCBidWlsdEluQ29tcG9uZW50cyk7XG5cbiAgaW5pdFVzZShWdWUpO1xuICBpbml0TWl4aW4kMShWdWUpO1xuICBpbml0RXh0ZW5kKFZ1ZSk7XG4gIGluaXRBc3NldFJlZ2lzdGVycyhWdWUpO1xufVxuXG5pbml0R2xvYmFsQVBJKFZ1ZSk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUucHJvdG90eXBlLCAnJGlzU2VydmVyJywge1xuICBnZXQ6IGlzU2VydmVyUmVuZGVyaW5nXG59KTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZS5wcm90b3R5cGUsICckc3NyQ29udGV4dCcsIHtcbiAgZ2V0OiBmdW5jdGlvbiBnZXQgKCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHRcbiAgfVxufSk7XG5cbi8vIGV4cG9zZSBGdW5jdGlvbmFsUmVuZGVyQ29udGV4dCBmb3Igc3NyIHJ1bnRpbWUgaGVscGVyIGluc3RhbGxhdGlvblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZSwgJ0Z1bmN0aW9uYWxSZW5kZXJDb250ZXh0Jywge1xuICB2YWx1ZTogRnVuY3Rpb25hbFJlbmRlckNvbnRleHRcbn0pO1xuXG5WdWUudmVyc2lvbiA9ICcyLjYuMTAnO1xuXG4vKiAgKi9cblxuLy8gdGhlc2UgYXJlIHJlc2VydmVkIGZvciB3ZWIgYmVjYXVzZSB0aGV5IGFyZSBkaXJlY3RseSBjb21waWxlZCBhd2F5XG4vLyBkdXJpbmcgdGVtcGxhdGUgY29tcGlsYXRpb25cbnZhciBpc1Jlc2VydmVkQXR0ciA9IG1ha2VNYXAoJ3N0eWxlLGNsYXNzJyk7XG5cbi8vIGF0dHJpYnV0ZXMgdGhhdCBzaG91bGQgYmUgdXNpbmcgcHJvcHMgZm9yIGJpbmRpbmdcbnZhciBhY2NlcHRWYWx1ZSA9IG1ha2VNYXAoJ2lucHV0LHRleHRhcmVhLG9wdGlvbixzZWxlY3QscHJvZ3Jlc3MnKTtcbnZhciBtdXN0VXNlUHJvcCA9IGZ1bmN0aW9uICh0YWcsIHR5cGUsIGF0dHIpIHtcbiAgcmV0dXJuIChcbiAgICAoYXR0ciA9PT0gJ3ZhbHVlJyAmJiBhY2NlcHRWYWx1ZSh0YWcpKSAmJiB0eXBlICE9PSAnYnV0dG9uJyB8fFxuICAgIChhdHRyID09PSAnc2VsZWN0ZWQnICYmIHRhZyA9PT0gJ29wdGlvbicpIHx8XG4gICAgKGF0dHIgPT09ICdjaGVja2VkJyAmJiB0YWcgPT09ICdpbnB1dCcpIHx8XG4gICAgKGF0dHIgPT09ICdtdXRlZCcgJiYgdGFnID09PSAndmlkZW8nKVxuICApXG59O1xuXG52YXIgaXNFbnVtZXJhdGVkQXR0ciA9IG1ha2VNYXAoJ2NvbnRlbnRlZGl0YWJsZSxkcmFnZ2FibGUsc3BlbGxjaGVjaycpO1xuXG52YXIgaXNWYWxpZENvbnRlbnRFZGl0YWJsZVZhbHVlID0gbWFrZU1hcCgnZXZlbnRzLGNhcmV0LHR5cGluZyxwbGFpbnRleHQtb25seScpO1xuXG52YXIgY29udmVydEVudW1lcmF0ZWRWYWx1ZSA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBpc0ZhbHN5QXR0clZhbHVlKHZhbHVlKSB8fCB2YWx1ZSA9PT0gJ2ZhbHNlJ1xuICAgID8gJ2ZhbHNlJ1xuICAgIC8vIGFsbG93IGFyYml0cmFyeSBzdHJpbmcgdmFsdWUgZm9yIGNvbnRlbnRlZGl0YWJsZVxuICAgIDoga2V5ID09PSAnY29udGVudGVkaXRhYmxlJyAmJiBpc1ZhbGlkQ29udGVudEVkaXRhYmxlVmFsdWUodmFsdWUpXG4gICAgICA/IHZhbHVlXG4gICAgICA6ICd0cnVlJ1xufTtcblxudmFyIGlzQm9vbGVhbkF0dHIgPSBtYWtlTWFwKFxuICAnYWxsb3dmdWxsc2NyZWVuLGFzeW5jLGF1dG9mb2N1cyxhdXRvcGxheSxjaGVja2VkLGNvbXBhY3QsY29udHJvbHMsZGVjbGFyZSwnICtcbiAgJ2RlZmF1bHQsZGVmYXVsdGNoZWNrZWQsZGVmYXVsdG11dGVkLGRlZmF1bHRzZWxlY3RlZCxkZWZlcixkaXNhYmxlZCwnICtcbiAgJ2VuYWJsZWQsZm9ybW5vdmFsaWRhdGUsaGlkZGVuLGluZGV0ZXJtaW5hdGUsaW5lcnQsaXNtYXAsaXRlbXNjb3BlLGxvb3AsbXVsdGlwbGUsJyArXG4gICdtdXRlZCxub2hyZWYsbm9yZXNpemUsbm9zaGFkZSxub3ZhbGlkYXRlLG5vd3JhcCxvcGVuLHBhdXNlb25leGl0LHJlYWRvbmx5LCcgK1xuICAncmVxdWlyZWQscmV2ZXJzZWQsc2NvcGVkLHNlYW1sZXNzLHNlbGVjdGVkLHNvcnRhYmxlLHRyYW5zbGF0ZSwnICtcbiAgJ3RydWVzcGVlZCx0eXBlbXVzdG1hdGNoLHZpc2libGUnXG4pO1xuXG52YXIgeGxpbmtOUyA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJztcblxudmFyIGlzWGxpbmsgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gbmFtZS5jaGFyQXQoNSkgPT09ICc6JyAmJiBuYW1lLnNsaWNlKDAsIDUpID09PSAneGxpbmsnXG59O1xuXG52YXIgZ2V0WGxpbmtQcm9wID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIGlzWGxpbmsobmFtZSkgPyBuYW1lLnNsaWNlKDYsIG5hbWUubGVuZ3RoKSA6ICcnXG59O1xuXG52YXIgaXNGYWxzeUF0dHJWYWx1ZSA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgcmV0dXJuIHZhbCA9PSBudWxsIHx8IHZhbCA9PT0gZmFsc2Vcbn07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBnZW5DbGFzc0ZvclZub2RlICh2bm9kZSkge1xuICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gIHZhciBwYXJlbnROb2RlID0gdm5vZGU7XG4gIHZhciBjaGlsZE5vZGUgPSB2bm9kZTtcbiAgd2hpbGUgKGlzRGVmKGNoaWxkTm9kZS5jb21wb25lbnRJbnN0YW5jZSkpIHtcbiAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO1xuICAgIGlmIChjaGlsZE5vZGUgJiYgY2hpbGROb2RlLmRhdGEpIHtcbiAgICAgIGRhdGEgPSBtZXJnZUNsYXNzRGF0YShjaGlsZE5vZGUuZGF0YSwgZGF0YSk7XG4gICAgfVxuICB9XG4gIHdoaWxlIChpc0RlZihwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5wYXJlbnQpKSB7XG4gICAgaWYgKHBhcmVudE5vZGUgJiYgcGFyZW50Tm9kZS5kYXRhKSB7XG4gICAgICBkYXRhID0gbWVyZ2VDbGFzc0RhdGEoZGF0YSwgcGFyZW50Tm9kZS5kYXRhKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlbmRlckNsYXNzKGRhdGEuc3RhdGljQ2xhc3MsIGRhdGEuY2xhc3MpXG59XG5cbmZ1bmN0aW9uIG1lcmdlQ2xhc3NEYXRhIChjaGlsZCwgcGFyZW50KSB7XG4gIHJldHVybiB7XG4gICAgc3RhdGljQ2xhc3M6IGNvbmNhdChjaGlsZC5zdGF0aWNDbGFzcywgcGFyZW50LnN0YXRpY0NsYXNzKSxcbiAgICBjbGFzczogaXNEZWYoY2hpbGQuY2xhc3MpXG4gICAgICA/IFtjaGlsZC5jbGFzcywgcGFyZW50LmNsYXNzXVxuICAgICAgOiBwYXJlbnQuY2xhc3NcbiAgfVxufVxuXG5mdW5jdGlvbiByZW5kZXJDbGFzcyAoXG4gIHN0YXRpY0NsYXNzLFxuICBkeW5hbWljQ2xhc3Ncbikge1xuICBpZiAoaXNEZWYoc3RhdGljQ2xhc3MpIHx8IGlzRGVmKGR5bmFtaWNDbGFzcykpIHtcbiAgICByZXR1cm4gY29uY2F0KHN0YXRpY0NsYXNzLCBzdHJpbmdpZnlDbGFzcyhkeW5hbWljQ2xhc3MpKVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiAnJ1xufVxuXG5mdW5jdGlvbiBjb25jYXQgKGEsIGIpIHtcbiAgcmV0dXJuIGEgPyBiID8gKGEgKyAnICcgKyBiKSA6IGEgOiAoYiB8fCAnJylcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5Q2xhc3MgKHZhbHVlKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBzdHJpbmdpZnlBcnJheSh2YWx1ZSlcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIHN0cmluZ2lmeU9iamVjdCh2YWx1ZSlcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiAnJ1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlBcnJheSAodmFsdWUpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICB2YXIgc3RyaW5naWZpZWQ7XG4gIGZvciAodmFyIGkgPSAwLCBsID0gdmFsdWUubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgaWYgKGlzRGVmKHN0cmluZ2lmaWVkID0gc3RyaW5naWZ5Q2xhc3ModmFsdWVbaV0pKSAmJiBzdHJpbmdpZmllZCAhPT0gJycpIHtcbiAgICAgIGlmIChyZXMpIHsgcmVzICs9ICcgJzsgfVxuICAgICAgcmVzICs9IHN0cmluZ2lmaWVkO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeU9iamVjdCAodmFsdWUpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICBpZiAodmFsdWVba2V5XSkge1xuICAgICAgaWYgKHJlcykgeyByZXMgKz0gJyAnOyB9XG4gICAgICByZXMgKz0ga2V5O1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG52YXIgbmFtZXNwYWNlTWFwID0ge1xuICBzdmc6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsXG4gIG1hdGg6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJ1xufTtcblxudmFyIGlzSFRNTFRhZyA9IG1ha2VNYXAoXG4gICdodG1sLGJvZHksYmFzZSxoZWFkLGxpbmssbWV0YSxzdHlsZSx0aXRsZSwnICtcbiAgJ2FkZHJlc3MsYXJ0aWNsZSxhc2lkZSxmb290ZXIsaGVhZGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhncm91cCxuYXYsc2VjdGlvbiwnICtcbiAgJ2RpdixkZCxkbCxkdCxmaWdjYXB0aW9uLGZpZ3VyZSxwaWN0dXJlLGhyLGltZyxsaSxtYWluLG9sLHAscHJlLHVsLCcgK1xuICAnYSxiLGFiYnIsYmRpLGJkbyxicixjaXRlLGNvZGUsZGF0YSxkZm4sZW0saSxrYmQsbWFyayxxLHJwLHJ0LHJ0YyxydWJ5LCcgK1xuICAncyxzYW1wLHNtYWxsLHNwYW4sc3Ryb25nLHN1YixzdXAsdGltZSx1LHZhcix3YnIsYXJlYSxhdWRpbyxtYXAsdHJhY2ssdmlkZW8sJyArXG4gICdlbWJlZCxvYmplY3QscGFyYW0sc291cmNlLGNhbnZhcyxzY3JpcHQsbm9zY3JpcHQsZGVsLGlucywnICtcbiAgJ2NhcHRpb24sY29sLGNvbGdyb3VwLHRhYmxlLHRoZWFkLHRib2R5LHRkLHRoLHRyLCcgK1xuICAnYnV0dG9uLGRhdGFsaXN0LGZpZWxkc2V0LGZvcm0saW5wdXQsbGFiZWwsbGVnZW5kLG1ldGVyLG9wdGdyb3VwLG9wdGlvbiwnICtcbiAgJ291dHB1dCxwcm9ncmVzcyxzZWxlY3QsdGV4dGFyZWEsJyArXG4gICdkZXRhaWxzLGRpYWxvZyxtZW51LG1lbnVpdGVtLHN1bW1hcnksJyArXG4gICdjb250ZW50LGVsZW1lbnQsc2hhZG93LHRlbXBsYXRlLGJsb2NrcXVvdGUsaWZyYW1lLHRmb290J1xuKTtcblxuLy8gdGhpcyBtYXAgaXMgaW50ZW50aW9uYWxseSBzZWxlY3RpdmUsIG9ubHkgY292ZXJpbmcgU1ZHIGVsZW1lbnRzIHRoYXQgbWF5XG4vLyBjb250YWluIGNoaWxkIGVsZW1lbnRzLlxudmFyIGlzU1ZHID0gbWFrZU1hcChcbiAgJ3N2ZyxhbmltYXRlLGNpcmNsZSxjbGlwcGF0aCxjdXJzb3IsZGVmcyxkZXNjLGVsbGlwc2UsZmlsdGVyLGZvbnQtZmFjZSwnICtcbiAgJ2ZvcmVpZ25PYmplY3QsZyxnbHlwaCxpbWFnZSxsaW5lLG1hcmtlcixtYXNrLG1pc3NpbmctZ2x5cGgscGF0aCxwYXR0ZXJuLCcgK1xuICAncG9seWdvbixwb2x5bGluZSxyZWN0LHN3aXRjaCxzeW1ib2wsdGV4dCx0ZXh0cGF0aCx0c3Bhbix1c2UsdmlldycsXG4gIHRydWVcbik7XG5cbnZhciBpc1ByZVRhZyA9IGZ1bmN0aW9uICh0YWcpIHsgcmV0dXJuIHRhZyA9PT0gJ3ByZSc7IH07XG5cbnZhciBpc1Jlc2VydmVkVGFnID0gZnVuY3Rpb24gKHRhZykge1xuICByZXR1cm4gaXNIVE1MVGFnKHRhZykgfHwgaXNTVkcodGFnKVxufTtcblxuZnVuY3Rpb24gZ2V0VGFnTmFtZXNwYWNlICh0YWcpIHtcbiAgaWYgKGlzU1ZHKHRhZykpIHtcbiAgICByZXR1cm4gJ3N2ZydcbiAgfVxuICAvLyBiYXNpYyBzdXBwb3J0IGZvciBNYXRoTUxcbiAgLy8gbm90ZSBpdCBkb2Vzbid0IHN1cHBvcnQgb3RoZXIgTWF0aE1MIGVsZW1lbnRzIGJlaW5nIGNvbXBvbmVudCByb290c1xuICBpZiAodGFnID09PSAnbWF0aCcpIHtcbiAgICByZXR1cm4gJ21hdGgnXG4gIH1cbn1cblxudmFyIHVua25vd25FbGVtZW50Q2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuZnVuY3Rpb24gaXNVbmtub3duRWxlbWVudCAodGFnKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIWluQnJvd3Nlcikge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgaWYgKGlzUmVzZXJ2ZWRUYWcodGFnKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHRhZyA9IHRhZy50b0xvd2VyQ2FzZSgpO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHVua25vd25FbGVtZW50Q2FjaGVbdGFnXSAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHVua25vd25FbGVtZW50Q2FjaGVbdGFnXVxuICB9XG4gIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgaWYgKHRhZy5pbmRleE9mKCctJykgPiAtMSkge1xuICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI4MjEwMzY0LzEwNzAyNDRcbiAgICByZXR1cm4gKHVua25vd25FbGVtZW50Q2FjaGVbdGFnXSA9IChcbiAgICAgIGVsLmNvbnN0cnVjdG9yID09PSB3aW5kb3cuSFRNTFVua25vd25FbGVtZW50IHx8XG4gICAgICBlbC5jb25zdHJ1Y3RvciA9PT0gd2luZG93LkhUTUxFbGVtZW50XG4gICAgKSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKHVua25vd25FbGVtZW50Q2FjaGVbdGFnXSA9IC9IVE1MVW5rbm93bkVsZW1lbnQvLnRlc3QoZWwudG9TdHJpbmcoKSkpXG4gIH1cbn1cblxudmFyIGlzVGV4dElucHV0VHlwZSA9IG1ha2VNYXAoJ3RleHQsbnVtYmVyLHBhc3N3b3JkLHNlYXJjaCxlbWFpbCx0ZWwsdXJsJyk7XG5cbi8qICAqL1xuXG4vKipcbiAqIFF1ZXJ5IGFuIGVsZW1lbnQgc2VsZWN0b3IgaWYgaXQncyBub3QgYW4gZWxlbWVudCBhbHJlYWR5LlxuICovXG5mdW5jdGlvbiBxdWVyeSAoZWwpIHtcbiAgaWYgKHR5cGVvZiBlbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgc2VsZWN0ZWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGVsKTtcbiAgICBpZiAoIXNlbGVjdGVkKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICdDYW5ub3QgZmluZCBlbGVtZW50OiAnICsgZWxcbiAgICAgICk7XG4gICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICB9XG4gICAgcmV0dXJuIHNlbGVjdGVkXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGVsXG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQkMSAodGFnTmFtZSwgdm5vZGUpIHtcbiAgdmFyIGVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7XG4gIGlmICh0YWdOYW1lICE9PSAnc2VsZWN0Jykge1xuICAgIHJldHVybiBlbG1cbiAgfVxuICAvLyBmYWxzZSBvciBudWxsIHdpbGwgcmVtb3ZlIHRoZSBhdHRyaWJ1dGUgYnV0IHVuZGVmaW5lZCB3aWxsIG5vdFxuICBpZiAodm5vZGUuZGF0YSAmJiB2bm9kZS5kYXRhLmF0dHJzICYmIHZub2RlLmRhdGEuYXR0cnMubXVsdGlwbGUgIT09IHVuZGVmaW5lZCkge1xuICAgIGVsbS5zZXRBdHRyaWJ1dGUoJ211bHRpcGxlJywgJ211bHRpcGxlJyk7XG4gIH1cbiAgcmV0dXJuIGVsbVxufVxuXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50TlMgKG5hbWVzcGFjZSwgdGFnTmFtZSkge1xuICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZU1hcFtuYW1lc3BhY2VdLCB0YWdOYW1lKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVUZXh0Tm9kZSAodGV4dCkge1xuICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dClcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29tbWVudCAodGV4dCkge1xuICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCh0ZXh0KVxufVxuXG5mdW5jdGlvbiBpbnNlcnRCZWZvcmUgKHBhcmVudE5vZGUsIG5ld05vZGUsIHJlZmVyZW5jZU5vZGUpIHtcbiAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobmV3Tm9kZSwgcmVmZXJlbmNlTm9kZSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUNoaWxkIChub2RlLCBjaGlsZCkge1xuICBub2RlLnJlbW92ZUNoaWxkKGNoaWxkKTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kQ2hpbGQgKG5vZGUsIGNoaWxkKSB7XG4gIG5vZGUuYXBwZW5kQ2hpbGQoY2hpbGQpO1xufVxuXG5mdW5jdGlvbiBwYXJlbnROb2RlIChub2RlKSB7XG4gIHJldHVybiBub2RlLnBhcmVudE5vZGVcbn1cblxuZnVuY3Rpb24gbmV4dFNpYmxpbmcgKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUubmV4dFNpYmxpbmdcbn1cblxuZnVuY3Rpb24gdGFnTmFtZSAobm9kZSkge1xuICByZXR1cm4gbm9kZS50YWdOYW1lXG59XG5cbmZ1bmN0aW9uIHNldFRleHRDb250ZW50IChub2RlLCB0ZXh0KSB7XG4gIG5vZGUudGV4dENvbnRlbnQgPSB0ZXh0O1xufVxuXG5mdW5jdGlvbiBzZXRTdHlsZVNjb3BlIChub2RlLCBzY29wZUlkKSB7XG4gIG5vZGUuc2V0QXR0cmlidXRlKHNjb3BlSWQsICcnKTtcbn1cblxudmFyIG5vZGVPcHMgPSAvKiNfX1BVUkVfXyovT2JqZWN0LmZyZWV6ZSh7XG4gIGNyZWF0ZUVsZW1lbnQ6IGNyZWF0ZUVsZW1lbnQkMSxcbiAgY3JlYXRlRWxlbWVudE5TOiBjcmVhdGVFbGVtZW50TlMsXG4gIGNyZWF0ZVRleHROb2RlOiBjcmVhdGVUZXh0Tm9kZSxcbiAgY3JlYXRlQ29tbWVudDogY3JlYXRlQ29tbWVudCxcbiAgaW5zZXJ0QmVmb3JlOiBpbnNlcnRCZWZvcmUsXG4gIHJlbW92ZUNoaWxkOiByZW1vdmVDaGlsZCxcbiAgYXBwZW5kQ2hpbGQ6IGFwcGVuZENoaWxkLFxuICBwYXJlbnROb2RlOiBwYXJlbnROb2RlLFxuICBuZXh0U2libGluZzogbmV4dFNpYmxpbmcsXG4gIHRhZ05hbWU6IHRhZ05hbWUsXG4gIHNldFRleHRDb250ZW50OiBzZXRUZXh0Q29udGVudCxcbiAgc2V0U3R5bGVTY29wZTogc2V0U3R5bGVTY29wZVxufSk7XG5cbi8qICAqL1xuXG52YXIgcmVmID0ge1xuICBjcmVhdGU6IGZ1bmN0aW9uIGNyZWF0ZSAoXywgdm5vZGUpIHtcbiAgICByZWdpc3RlclJlZih2bm9kZSk7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgICBpZiAob2xkVm5vZGUuZGF0YS5yZWYgIT09IHZub2RlLmRhdGEucmVmKSB7XG4gICAgICByZWdpc3RlclJlZihvbGRWbm9kZSwgdHJ1ZSk7XG4gICAgICByZWdpc3RlclJlZih2bm9kZSk7XG4gICAgfVxuICB9LFxuICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95ICh2bm9kZSkge1xuICAgIHJlZ2lzdGVyUmVmKHZub2RlLCB0cnVlKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gcmVnaXN0ZXJSZWYgKHZub2RlLCBpc1JlbW92YWwpIHtcbiAgdmFyIGtleSA9IHZub2RlLmRhdGEucmVmO1xuICBpZiAoIWlzRGVmKGtleSkpIHsgcmV0dXJuIH1cblxuICB2YXIgdm0gPSB2bm9kZS5jb250ZXh0O1xuICB2YXIgcmVmID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgfHwgdm5vZGUuZWxtO1xuICB2YXIgcmVmcyA9IHZtLiRyZWZzO1xuICBpZiAoaXNSZW1vdmFsKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVmc1trZXldKSkge1xuICAgICAgcmVtb3ZlKHJlZnNba2V5XSwgcmVmKTtcbiAgICB9IGVsc2UgaWYgKHJlZnNba2V5XSA9PT0gcmVmKSB7XG4gICAgICByZWZzW2tleV0gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICh2bm9kZS5kYXRhLnJlZkluRm9yKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkocmVmc1trZXldKSkge1xuICAgICAgICByZWZzW2tleV0gPSBbcmVmXTtcbiAgICAgIH0gZWxzZSBpZiAocmVmc1trZXldLmluZGV4T2YocmVmKSA8IDApIHtcbiAgICAgICAgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gICAgICAgIHJlZnNba2V5XS5wdXNoKHJlZik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZnNba2V5XSA9IHJlZjtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBWaXJ0dWFsIERPTSBwYXRjaGluZyBhbGdvcml0aG0gYmFzZWQgb24gU25hYmJkb20gYnlcbiAqIFNpbW9uIEZyaWlzIFZpbmR1bSAoQHBhbGRlcGluZClcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZVxuICogaHR0cHM6Ly9naXRodWIuY29tL3BhbGRlcGluZC9zbmFiYmRvbS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKlxuICogbW9kaWZpZWQgYnkgRXZhbiBZb3UgKEB5eXg5OTA4MDMpXG4gKlxuICogTm90IHR5cGUtY2hlY2tpbmcgdGhpcyBiZWNhdXNlIHRoaXMgZmlsZSBpcyBwZXJmLWNyaXRpY2FsIGFuZCB0aGUgY29zdFxuICogb2YgbWFraW5nIGZsb3cgdW5kZXJzdGFuZCBpdCBpcyBub3Qgd29ydGggaXQuXG4gKi9cblxudmFyIGVtcHR5Tm9kZSA9IG5ldyBWTm9kZSgnJywge30sIFtdKTtcblxudmFyIGhvb2tzID0gWydjcmVhdGUnLCAnYWN0aXZhdGUnLCAndXBkYXRlJywgJ3JlbW92ZScsICdkZXN0cm95J107XG5cbmZ1bmN0aW9uIHNhbWVWbm9kZSAoYSwgYikge1xuICByZXR1cm4gKFxuICAgIGEua2V5ID09PSBiLmtleSAmJiAoXG4gICAgICAoXG4gICAgICAgIGEudGFnID09PSBiLnRhZyAmJlxuICAgICAgICBhLmlzQ29tbWVudCA9PT0gYi5pc0NvbW1lbnQgJiZcbiAgICAgICAgaXNEZWYoYS5kYXRhKSA9PT0gaXNEZWYoYi5kYXRhKSAmJlxuICAgICAgICBzYW1lSW5wdXRUeXBlKGEsIGIpXG4gICAgICApIHx8IChcbiAgICAgICAgaXNUcnVlKGEuaXNBc3luY1BsYWNlaG9sZGVyKSAmJlxuICAgICAgICBhLmFzeW5jRmFjdG9yeSA9PT0gYi5hc3luY0ZhY3RvcnkgJiZcbiAgICAgICAgaXNVbmRlZihiLmFzeW5jRmFjdG9yeS5lcnJvcilcbiAgICAgIClcbiAgICApXG4gIClcbn1cblxuZnVuY3Rpb24gc2FtZUlucHV0VHlwZSAoYSwgYikge1xuICBpZiAoYS50YWcgIT09ICdpbnB1dCcpIHsgcmV0dXJuIHRydWUgfVxuICB2YXIgaTtcbiAgdmFyIHR5cGVBID0gaXNEZWYoaSA9IGEuZGF0YSkgJiYgaXNEZWYoaSA9IGkuYXR0cnMpICYmIGkudHlwZTtcbiAgdmFyIHR5cGVCID0gaXNEZWYoaSA9IGIuZGF0YSkgJiYgaXNEZWYoaSA9IGkuYXR0cnMpICYmIGkudHlwZTtcbiAgcmV0dXJuIHR5cGVBID09PSB0eXBlQiB8fCBpc1RleHRJbnB1dFR5cGUodHlwZUEpICYmIGlzVGV4dElucHV0VHlwZSh0eXBlQilcbn1cblxuZnVuY3Rpb24gY3JlYXRlS2V5VG9PbGRJZHggKGNoaWxkcmVuLCBiZWdpbklkeCwgZW5kSWR4KSB7XG4gIHZhciBpLCBrZXk7XG4gIHZhciBtYXAgPSB7fTtcbiAgZm9yIChpID0gYmVnaW5JZHg7IGkgPD0gZW5kSWR4OyArK2kpIHtcbiAgICBrZXkgPSBjaGlsZHJlbltpXS5rZXk7XG4gICAgaWYgKGlzRGVmKGtleSkpIHsgbWFwW2tleV0gPSBpOyB9XG4gIH1cbiAgcmV0dXJuIG1hcFxufVxuXG5mdW5jdGlvbiBjcmVhdGVQYXRjaEZ1bmN0aW9uIChiYWNrZW5kKSB7XG4gIHZhciBpLCBqO1xuICB2YXIgY2JzID0ge307XG5cbiAgdmFyIG1vZHVsZXMgPSBiYWNrZW5kLm1vZHVsZXM7XG4gIHZhciBub2RlT3BzID0gYmFja2VuZC5ub2RlT3BzO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBob29rcy5sZW5ndGg7ICsraSkge1xuICAgIGNic1tob29rc1tpXV0gPSBbXTtcbiAgICBmb3IgKGogPSAwOyBqIDwgbW9kdWxlcy5sZW5ndGg7ICsraikge1xuICAgICAgaWYgKGlzRGVmKG1vZHVsZXNbal1baG9va3NbaV1dKSkge1xuICAgICAgICBjYnNbaG9va3NbaV1dLnB1c2gobW9kdWxlc1tqXVtob29rc1tpXV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGVtcHR5Tm9kZUF0IChlbG0pIHtcbiAgICByZXR1cm4gbmV3IFZOb2RlKG5vZGVPcHMudGFnTmFtZShlbG0pLnRvTG93ZXJDYXNlKCksIHt9LCBbXSwgdW5kZWZpbmVkLCBlbG0pXG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVSbUNiIChjaGlsZEVsbSwgbGlzdGVuZXJzKSB7XG4gICAgZnVuY3Rpb24gcmVtb3ZlJCQxICgpIHtcbiAgICAgIGlmICgtLXJlbW92ZSQkMS5saXN0ZW5lcnMgPT09IDApIHtcbiAgICAgICAgcmVtb3ZlTm9kZShjaGlsZEVsbSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJlbW92ZSQkMS5saXN0ZW5lcnMgPSBsaXN0ZW5lcnM7XG4gICAgcmV0dXJuIHJlbW92ZSQkMVxuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlTm9kZSAoZWwpIHtcbiAgICB2YXIgcGFyZW50ID0gbm9kZU9wcy5wYXJlbnROb2RlKGVsKTtcbiAgICAvLyBlbGVtZW50IG1heSBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGR1ZSB0byB2LWh0bWwgLyB2LXRleHRcbiAgICBpZiAoaXNEZWYocGFyZW50KSkge1xuICAgICAgbm9kZU9wcy5yZW1vdmVDaGlsZChwYXJlbnQsIGVsKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpc1Vua25vd25FbGVtZW50JCQxICh2bm9kZSwgaW5WUHJlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICFpblZQcmUgJiZcbiAgICAgICF2bm9kZS5ucyAmJlxuICAgICAgIShcbiAgICAgICAgY29uZmlnLmlnbm9yZWRFbGVtZW50cy5sZW5ndGggJiZcbiAgICAgICAgY29uZmlnLmlnbm9yZWRFbGVtZW50cy5zb21lKGZ1bmN0aW9uIChpZ25vcmUpIHtcbiAgICAgICAgICByZXR1cm4gaXNSZWdFeHAoaWdub3JlKVxuICAgICAgICAgICAgPyBpZ25vcmUudGVzdCh2bm9kZS50YWcpXG4gICAgICAgICAgICA6IGlnbm9yZSA9PT0gdm5vZGUudGFnXG4gICAgICAgIH0pXG4gICAgICApICYmXG4gICAgICBjb25maWcuaXNVbmtub3duRWxlbWVudCh2bm9kZS50YWcpXG4gICAgKVxuICB9XG5cbiAgdmFyIGNyZWF0aW5nRWxtSW5WUHJlID0gMDtcblxuICBmdW5jdGlvbiBjcmVhdGVFbG0gKFxuICAgIHZub2RlLFxuICAgIGluc2VydGVkVm5vZGVRdWV1ZSxcbiAgICBwYXJlbnRFbG0sXG4gICAgcmVmRWxtLFxuICAgIG5lc3RlZCxcbiAgICBvd25lckFycmF5LFxuICAgIGluZGV4XG4gICkge1xuICAgIGlmIChpc0RlZih2bm9kZS5lbG0pICYmIGlzRGVmKG93bmVyQXJyYXkpKSB7XG4gICAgICAvLyBUaGlzIHZub2RlIHdhcyB1c2VkIGluIGEgcHJldmlvdXMgcmVuZGVyIVxuICAgICAgLy8gbm93IGl0J3MgdXNlZCBhcyBhIG5ldyBub2RlLCBvdmVyd3JpdGluZyBpdHMgZWxtIHdvdWxkIGNhdXNlXG4gICAgICAvLyBwb3RlbnRpYWwgcGF0Y2ggZXJyb3JzIGRvd24gdGhlIHJvYWQgd2hlbiBpdCdzIHVzZWQgYXMgYW4gaW5zZXJ0aW9uXG4gICAgICAvLyByZWZlcmVuY2Ugbm9kZS4gSW5zdGVhZCwgd2UgY2xvbmUgdGhlIG5vZGUgb24tZGVtYW5kIGJlZm9yZSBjcmVhdGluZ1xuICAgICAgLy8gYXNzb2NpYXRlZCBET00gZWxlbWVudCBmb3IgaXQuXG4gICAgICB2bm9kZSA9IG93bmVyQXJyYXlbaW5kZXhdID0gY2xvbmVWTm9kZSh2bm9kZSk7XG4gICAgfVxuXG4gICAgdm5vZGUuaXNSb290SW5zZXJ0ID0gIW5lc3RlZDsgLy8gZm9yIHRyYW5zaXRpb24gZW50ZXIgY2hlY2tcbiAgICBpZiAoY3JlYXRlQ29tcG9uZW50KHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICAgIHZhciBjaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuO1xuICAgIHZhciB0YWcgPSB2bm9kZS50YWc7XG4gICAgaWYgKGlzRGVmKHRhZykpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmIChkYXRhICYmIGRhdGEucHJlKSB7XG4gICAgICAgICAgY3JlYXRpbmdFbG1JblZQcmUrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNVbmtub3duRWxlbWVudCQkMSh2bm9kZSwgY3JlYXRpbmdFbG1JblZQcmUpKSB7XG4gICAgICAgICAgd2FybihcbiAgICAgICAgICAgICdVbmtub3duIGN1c3RvbSBlbGVtZW50OiA8JyArIHRhZyArICc+IC0gZGlkIHlvdSAnICtcbiAgICAgICAgICAgICdyZWdpc3RlciB0aGUgY29tcG9uZW50IGNvcnJlY3RseT8gRm9yIHJlY3Vyc2l2ZSBjb21wb25lbnRzLCAnICtcbiAgICAgICAgICAgICdtYWtlIHN1cmUgdG8gcHJvdmlkZSB0aGUgXCJuYW1lXCIgb3B0aW9uLicsXG4gICAgICAgICAgICB2bm9kZS5jb250ZXh0XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2bm9kZS5lbG0gPSB2bm9kZS5uc1xuICAgICAgICA/IG5vZGVPcHMuY3JlYXRlRWxlbWVudE5TKHZub2RlLm5zLCB0YWcpXG4gICAgICAgIDogbm9kZU9wcy5jcmVhdGVFbGVtZW50KHRhZywgdm5vZGUpO1xuICAgICAgc2V0U2NvcGUodm5vZGUpO1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIHtcbiAgICAgICAgY3JlYXRlQ2hpbGRyZW4odm5vZGUsIGNoaWxkcmVuLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgICAgICBpbnZva2VDcmVhdGVIb29rcyh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnQocGFyZW50RWxtLCB2bm9kZS5lbG0sIHJlZkVsbSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGRhdGEgJiYgZGF0YS5wcmUpIHtcbiAgICAgICAgY3JlYXRpbmdFbG1JblZQcmUtLTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVHJ1ZSh2bm9kZS5pc0NvbW1lbnQpKSB7XG4gICAgICB2bm9kZS5lbG0gPSBub2RlT3BzLmNyZWF0ZUNvbW1lbnQodm5vZGUudGV4dCk7XG4gICAgICBpbnNlcnQocGFyZW50RWxtLCB2bm9kZS5lbG0sIHJlZkVsbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZub2RlLmVsbSA9IG5vZGVPcHMuY3JlYXRlVGV4dE5vZGUodm5vZGUudGV4dCk7XG4gICAgICBpbnNlcnQocGFyZW50RWxtLCB2bm9kZS5lbG0sIHJlZkVsbSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50ICh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSkge1xuICAgIHZhciBpID0gdm5vZGUuZGF0YTtcbiAgICBpZiAoaXNEZWYoaSkpIHtcbiAgICAgIHZhciBpc1JlYWN0aXZhdGVkID0gaXNEZWYodm5vZGUuY29tcG9uZW50SW5zdGFuY2UpICYmIGkua2VlcEFsaXZlO1xuICAgICAgaWYgKGlzRGVmKGkgPSBpLmhvb2spICYmIGlzRGVmKGkgPSBpLmluaXQpKSB7XG4gICAgICAgIGkodm5vZGUsIGZhbHNlIC8qIGh5ZHJhdGluZyAqLyk7XG4gICAgICB9XG4gICAgICAvLyBhZnRlciBjYWxsaW5nIHRoZSBpbml0IGhvb2ssIGlmIHRoZSB2bm9kZSBpcyBhIGNoaWxkIGNvbXBvbmVudFxuICAgICAgLy8gaXQgc2hvdWxkJ3ZlIGNyZWF0ZWQgYSBjaGlsZCBpbnN0YW5jZSBhbmQgbW91bnRlZCBpdC4gdGhlIGNoaWxkXG4gICAgICAvLyBjb21wb25lbnQgYWxzbyBoYXMgc2V0IHRoZSBwbGFjZWhvbGRlciB2bm9kZSdzIGVsbS5cbiAgICAgIC8vIGluIHRoYXQgY2FzZSB3ZSBjYW4ganVzdCByZXR1cm4gdGhlIGVsZW1lbnQgYW5kIGJlIGRvbmUuXG4gICAgICBpZiAoaXNEZWYodm5vZGUuY29tcG9uZW50SW5zdGFuY2UpKSB7XG4gICAgICAgIGluaXRDb21wb25lbnQodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIGluc2VydChwYXJlbnRFbG0sIHZub2RlLmVsbSwgcmVmRWxtKTtcbiAgICAgICAgaWYgKGlzVHJ1ZShpc1JlYWN0aXZhdGVkKSkge1xuICAgICAgICAgIHJlYWN0aXZhdGVDb21wb25lbnQodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdENvbXBvbmVudCAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGlmIChpc0RlZih2bm9kZS5kYXRhLnBlbmRpbmdJbnNlcnQpKSB7XG4gICAgICBpbnNlcnRlZFZub2RlUXVldWUucHVzaC5hcHBseShpbnNlcnRlZFZub2RlUXVldWUsIHZub2RlLmRhdGEucGVuZGluZ0luc2VydCk7XG4gICAgICB2bm9kZS5kYXRhLnBlbmRpbmdJbnNlcnQgPSBudWxsO1xuICAgIH1cbiAgICB2bm9kZS5lbG0gPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZS4kZWw7XG4gICAgaWYgKGlzUGF0Y2hhYmxlKHZub2RlKSkge1xuICAgICAgaW52b2tlQ3JlYXRlSG9va3Modm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICBzZXRTY29wZSh2bm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGVtcHR5IGNvbXBvbmVudCByb290LlxuICAgICAgLy8gc2tpcCBhbGwgZWxlbWVudC1yZWxhdGVkIG1vZHVsZXMgZXhjZXB0IGZvciByZWYgKCMzNDU1KVxuICAgICAgcmVnaXN0ZXJSZWYodm5vZGUpO1xuICAgICAgLy8gbWFrZSBzdXJlIHRvIGludm9rZSB0aGUgaW5zZXJ0IGhvb2tcbiAgICAgIGluc2VydGVkVm5vZGVRdWV1ZS5wdXNoKHZub2RlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWFjdGl2YXRlQ29tcG9uZW50ICh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSkge1xuICAgIHZhciBpO1xuICAgIC8vIGhhY2sgZm9yICM0MzM5OiBhIHJlYWN0aXZhdGVkIGNvbXBvbmVudCB3aXRoIGlubmVyIHRyYW5zaXRpb25cbiAgICAvLyBkb2VzIG5vdCB0cmlnZ2VyIGJlY2F1c2UgdGhlIGlubmVyIG5vZGUncyBjcmVhdGVkIGhvb2tzIGFyZSBub3QgY2FsbGVkXG4gICAgLy8gYWdhaW4uIEl0J3Mgbm90IGlkZWFsIHRvIGludm9sdmUgbW9kdWxlLXNwZWNpZmljIGxvZ2ljIGluIGhlcmUgYnV0XG4gICAgLy8gdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGEgYmV0dGVyIHdheSB0byBkbyBpdC5cbiAgICB2YXIgaW5uZXJOb2RlID0gdm5vZGU7XG4gICAgd2hpbGUgKGlubmVyTm9kZS5jb21wb25lbnRJbnN0YW5jZSkge1xuICAgICAgaW5uZXJOb2RlID0gaW5uZXJOb2RlLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZTtcbiAgICAgIGlmIChpc0RlZihpID0gaW5uZXJOb2RlLmRhdGEpICYmIGlzRGVmKGkgPSBpLnRyYW5zaXRpb24pKSB7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMuYWN0aXZhdGUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICBjYnMuYWN0aXZhdGVbaV0oZW1wdHlOb2RlLCBpbm5lck5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGluc2VydGVkVm5vZGVRdWV1ZS5wdXNoKGlubmVyTm9kZSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVubGlrZSBhIG5ld2x5IGNyZWF0ZWQgY29tcG9uZW50LFxuICAgIC8vIGEgcmVhY3RpdmF0ZWQga2VlcC1hbGl2ZSBjb21wb25lbnQgZG9lc24ndCBpbnNlcnQgaXRzZWxmXG4gICAgaW5zZXJ0KHBhcmVudEVsbSwgdm5vZGUuZWxtLCByZWZFbG0pO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5zZXJ0IChwYXJlbnQsIGVsbSwgcmVmJCQxKSB7XG4gICAgaWYgKGlzRGVmKHBhcmVudCkpIHtcbiAgICAgIGlmIChpc0RlZihyZWYkJDEpKSB7XG4gICAgICAgIGlmIChub2RlT3BzLnBhcmVudE5vZGUocmVmJCQxKSA9PT0gcGFyZW50KSB7XG4gICAgICAgICAgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50LCBlbG0sIHJlZiQkMSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVPcHMuYXBwZW5kQ2hpbGQocGFyZW50LCBlbG0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUNoaWxkcmVuICh2bm9kZSwgY2hpbGRyZW4sIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgY2hlY2tEdXBsaWNhdGVLZXlzKGNoaWxkcmVuKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY3JlYXRlRWxtKGNoaWxkcmVuW2ldLCBpbnNlcnRlZFZub2RlUXVldWUsIHZub2RlLmVsbSwgbnVsbCwgdHJ1ZSwgY2hpbGRyZW4sIGkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNQcmltaXRpdmUodm5vZGUudGV4dCkpIHtcbiAgICAgIG5vZGVPcHMuYXBwZW5kQ2hpbGQodm5vZGUuZWxtLCBub2RlT3BzLmNyZWF0ZVRleHROb2RlKFN0cmluZyh2bm9kZS50ZXh0KSkpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGlzUGF0Y2hhYmxlICh2bm9kZSkge1xuICAgIHdoaWxlICh2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkge1xuICAgICAgdm5vZGUgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4gICAgfVxuICAgIHJldHVybiBpc0RlZih2bm9kZS50YWcpXG4gIH1cblxuICBmdW5jdGlvbiBpbnZva2VDcmVhdGVIb29rcyAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IGNicy5jcmVhdGUubGVuZ3RoOyArK2kkMSkge1xuICAgICAgY2JzLmNyZWF0ZVtpJDFdKGVtcHR5Tm9kZSwgdm5vZGUpO1xuICAgIH1cbiAgICBpID0gdm5vZGUuZGF0YS5ob29rOyAvLyBSZXVzZSB2YXJpYWJsZVxuICAgIGlmIChpc0RlZihpKSkge1xuICAgICAgaWYgKGlzRGVmKGkuY3JlYXRlKSkgeyBpLmNyZWF0ZShlbXB0eU5vZGUsIHZub2RlKTsgfVxuICAgICAgaWYgKGlzRGVmKGkuaW5zZXJ0KSkgeyBpbnNlcnRlZFZub2RlUXVldWUucHVzaCh2bm9kZSk7IH1cbiAgICB9XG4gIH1cblxuICAvLyBzZXQgc2NvcGUgaWQgYXR0cmlidXRlIGZvciBzY29wZWQgQ1NTLlxuICAvLyB0aGlzIGlzIGltcGxlbWVudGVkIGFzIGEgc3BlY2lhbCBjYXNlIHRvIGF2b2lkIHRoZSBvdmVyaGVhZFxuICAvLyBvZiBnb2luZyB0aHJvdWdoIHRoZSBub3JtYWwgYXR0cmlidXRlIHBhdGNoaW5nIHByb2Nlc3MuXG4gIGZ1bmN0aW9uIHNldFNjb3BlICh2bm9kZSkge1xuICAgIHZhciBpO1xuICAgIGlmIChpc0RlZihpID0gdm5vZGUuZm5TY29wZUlkKSkge1xuICAgICAgbm9kZU9wcy5zZXRTdHlsZVNjb3BlKHZub2RlLmVsbSwgaSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBhbmNlc3RvciA9IHZub2RlO1xuICAgICAgd2hpbGUgKGFuY2VzdG9yKSB7XG4gICAgICAgIGlmIChpc0RlZihpID0gYW5jZXN0b3IuY29udGV4dCkgJiYgaXNEZWYoaSA9IGkuJG9wdGlvbnMuX3Njb3BlSWQpKSB7XG4gICAgICAgICAgbm9kZU9wcy5zZXRTdHlsZVNjb3BlKHZub2RlLmVsbSwgaSk7XG4gICAgICAgIH1cbiAgICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci5wYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGZvciBzbG90IGNvbnRlbnQgdGhleSBzaG91bGQgYWxzbyBnZXQgdGhlIHNjb3BlSWQgZnJvbSB0aGUgaG9zdCBpbnN0YW5jZS5cbiAgICBpZiAoaXNEZWYoaSA9IGFjdGl2ZUluc3RhbmNlKSAmJlxuICAgICAgaSAhPT0gdm5vZGUuY29udGV4dCAmJlxuICAgICAgaSAhPT0gdm5vZGUuZm5Db250ZXh0ICYmXG4gICAgICBpc0RlZihpID0gaS4kb3B0aW9ucy5fc2NvcGVJZClcbiAgICApIHtcbiAgICAgIG5vZGVPcHMuc2V0U3R5bGVTY29wZSh2bm9kZS5lbG0sIGkpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZFZub2RlcyAocGFyZW50RWxtLCByZWZFbG0sIHZub2Rlcywgc3RhcnRJZHgsIGVuZElkeCwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgZm9yICg7IHN0YXJ0SWR4IDw9IGVuZElkeDsgKytzdGFydElkeCkge1xuICAgICAgY3JlYXRlRWxtKHZub2Rlc1tzdGFydElkeF0sIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0sIGZhbHNlLCB2bm9kZXMsIHN0YXJ0SWR4KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbnZva2VEZXN0cm95SG9vayAodm5vZGUpIHtcbiAgICB2YXIgaSwgajtcbiAgICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkuZGVzdHJveSkpIHsgaSh2bm9kZSk7IH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMuZGVzdHJveS5sZW5ndGg7ICsraSkgeyBjYnMuZGVzdHJveVtpXSh2bm9kZSk7IH1cbiAgICB9XG4gICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5jaGlsZHJlbikpIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCB2bm9kZS5jaGlsZHJlbi5sZW5ndGg7ICsraikge1xuICAgICAgICBpbnZva2VEZXN0cm95SG9vayh2bm9kZS5jaGlsZHJlbltqXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlVm5vZGVzIChwYXJlbnRFbG0sIHZub2Rlcywgc3RhcnRJZHgsIGVuZElkeCkge1xuICAgIGZvciAoOyBzdGFydElkeCA8PSBlbmRJZHg7ICsrc3RhcnRJZHgpIHtcbiAgICAgIHZhciBjaCA9IHZub2Rlc1tzdGFydElkeF07XG4gICAgICBpZiAoaXNEZWYoY2gpKSB7XG4gICAgICAgIGlmIChpc0RlZihjaC50YWcpKSB7XG4gICAgICAgICAgcmVtb3ZlQW5kSW52b2tlUmVtb3ZlSG9vayhjaCk7XG4gICAgICAgICAgaW52b2tlRGVzdHJveUhvb2soY2gpO1xuICAgICAgICB9IGVsc2UgeyAvLyBUZXh0IG5vZGVcbiAgICAgICAgICByZW1vdmVOb2RlKGNoLmVsbSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVBbmRJbnZva2VSZW1vdmVIb29rICh2bm9kZSwgcm0pIHtcbiAgICBpZiAoaXNEZWYocm0pIHx8IGlzRGVmKHZub2RlLmRhdGEpKSB7XG4gICAgICB2YXIgaTtcbiAgICAgIHZhciBsaXN0ZW5lcnMgPSBjYnMucmVtb3ZlLmxlbmd0aCArIDE7XG4gICAgICBpZiAoaXNEZWYocm0pKSB7XG4gICAgICAgIC8vIHdlIGhhdmUgYSByZWN1cnNpdmVseSBwYXNzZWQgZG93biBybSBjYWxsYmFja1xuICAgICAgICAvLyBpbmNyZWFzZSB0aGUgbGlzdGVuZXJzIGNvdW50XG4gICAgICAgIHJtLmxpc3RlbmVycyArPSBsaXN0ZW5lcnM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBkaXJlY3RseSByZW1vdmluZ1xuICAgICAgICBybSA9IGNyZWF0ZVJtQ2Iodm5vZGUuZWxtLCBsaXN0ZW5lcnMpO1xuICAgICAgfVxuICAgICAgLy8gcmVjdXJzaXZlbHkgaW52b2tlIGhvb2tzIG9uIGNoaWxkIGNvbXBvbmVudCByb290IG5vZGVcbiAgICAgIGlmIChpc0RlZihpID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UpICYmIGlzRGVmKGkgPSBpLl92bm9kZSkgJiYgaXNEZWYoaS5kYXRhKSkge1xuICAgICAgICByZW1vdmVBbmRJbnZva2VSZW1vdmVIb29rKGksIHJtKTtcbiAgICAgIH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMucmVtb3ZlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNicy5yZW1vdmVbaV0odm5vZGUsIHJtKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0RlZihpID0gdm5vZGUuZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5yZW1vdmUpKSB7XG4gICAgICAgIGkodm5vZGUsIHJtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJtKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZU5vZGUodm5vZGUuZWxtKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGVDaGlsZHJlbiAocGFyZW50RWxtLCBvbGRDaCwgbmV3Q2gsIGluc2VydGVkVm5vZGVRdWV1ZSwgcmVtb3ZlT25seSkge1xuICAgIHZhciBvbGRTdGFydElkeCA9IDA7XG4gICAgdmFyIG5ld1N0YXJ0SWR4ID0gMDtcbiAgICB2YXIgb2xkRW5kSWR4ID0gb2xkQ2gubGVuZ3RoIC0gMTtcbiAgICB2YXIgb2xkU3RhcnRWbm9kZSA9IG9sZENoWzBdO1xuICAgIHZhciBvbGRFbmRWbm9kZSA9IG9sZENoW29sZEVuZElkeF07XG4gICAgdmFyIG5ld0VuZElkeCA9IG5ld0NoLmxlbmd0aCAtIDE7XG4gICAgdmFyIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFswXTtcbiAgICB2YXIgbmV3RW5kVm5vZGUgPSBuZXdDaFtuZXdFbmRJZHhdO1xuICAgIHZhciBvbGRLZXlUb0lkeCwgaWR4SW5PbGQsIHZub2RlVG9Nb3ZlLCByZWZFbG07XG5cbiAgICAvLyByZW1vdmVPbmx5IGlzIGEgc3BlY2lhbCBmbGFnIHVzZWQgb25seSBieSA8dHJhbnNpdGlvbi1ncm91cD5cbiAgICAvLyB0byBlbnN1cmUgcmVtb3ZlZCBlbGVtZW50cyBzdGF5IGluIGNvcnJlY3QgcmVsYXRpdmUgcG9zaXRpb25zXG4gICAgLy8gZHVyaW5nIGxlYXZpbmcgdHJhbnNpdGlvbnNcbiAgICB2YXIgY2FuTW92ZSA9ICFyZW1vdmVPbmx5O1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNoZWNrRHVwbGljYXRlS2V5cyhuZXdDaCk7XG4gICAgfVxuXG4gICAgd2hpbGUgKG9sZFN0YXJ0SWR4IDw9IG9sZEVuZElkeCAmJiBuZXdTdGFydElkeCA8PSBuZXdFbmRJZHgpIHtcbiAgICAgIGlmIChpc1VuZGVmKG9sZFN0YXJ0Vm5vZGUpKSB7XG4gICAgICAgIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFsrK29sZFN0YXJ0SWR4XTsgLy8gVm5vZGUgaGFzIGJlZW4gbW92ZWQgbGVmdFxuICAgICAgfSBlbHNlIGlmIChpc1VuZGVmKG9sZEVuZFZub2RlKSkge1xuICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4XTtcbiAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld1N0YXJ0Vm5vZGUpKSB7XG4gICAgICAgIHBhdGNoVm5vZGUob2xkU3RhcnRWbm9kZSwgbmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBuZXdDaCwgbmV3U3RhcnRJZHgpO1xuICAgICAgICBvbGRTdGFydFZub2RlID0gb2xkQ2hbKytvbGRTdGFydElkeF07XG4gICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0SWR4XTtcbiAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9sZEVuZFZub2RlLCBuZXdFbmRWbm9kZSkpIHtcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRFbmRWbm9kZSwgbmV3RW5kVm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgbmV3Q2gsIG5ld0VuZElkeCk7XG4gICAgICAgIG9sZEVuZFZub2RlID0gb2xkQ2hbLS1vbGRFbmRJZHhdO1xuICAgICAgICBuZXdFbmRWbm9kZSA9IG5ld0NoWy0tbmV3RW5kSWR4XTtcbiAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld0VuZFZub2RlKSkgeyAvLyBWbm9kZSBtb3ZlZCByaWdodFxuICAgICAgICBwYXRjaFZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld0VuZFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIG5ld0NoLCBuZXdFbmRJZHgpO1xuICAgICAgICBjYW5Nb3ZlICYmIG5vZGVPcHMuaW5zZXJ0QmVmb3JlKHBhcmVudEVsbSwgb2xkU3RhcnRWbm9kZS5lbG0sIG5vZGVPcHMubmV4dFNpYmxpbmcob2xkRW5kVm5vZGUuZWxtKSk7XG4gICAgICAgIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFsrK29sZFN0YXJ0SWR4XTtcbiAgICAgICAgbmV3RW5kVm5vZGUgPSBuZXdDaFstLW5ld0VuZElkeF07XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRFbmRWbm9kZSwgbmV3U3RhcnRWbm9kZSkpIHsgLy8gVm5vZGUgbW92ZWQgbGVmdFxuICAgICAgICBwYXRjaFZub2RlKG9sZEVuZFZub2RlLCBuZXdTdGFydFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIG5ld0NoLCBuZXdTdGFydElkeCk7XG4gICAgICAgIGNhbk1vdmUgJiYgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50RWxtLCBvbGRFbmRWbm9kZS5lbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtKTtcbiAgICAgICAgb2xkRW5kVm5vZGUgPSBvbGRDaFstLW9sZEVuZElkeF07XG4gICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0SWR4XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpc1VuZGVmKG9sZEtleVRvSWR4KSkgeyBvbGRLZXlUb0lkeCA9IGNyZWF0ZUtleVRvT2xkSWR4KG9sZENoLCBvbGRTdGFydElkeCwgb2xkRW5kSWR4KTsgfVxuICAgICAgICBpZHhJbk9sZCA9IGlzRGVmKG5ld1N0YXJ0Vm5vZGUua2V5KVxuICAgICAgICAgID8gb2xkS2V5VG9JZHhbbmV3U3RhcnRWbm9kZS5rZXldXG4gICAgICAgICAgOiBmaW5kSWR4SW5PbGQobmV3U3RhcnRWbm9kZSwgb2xkQ2gsIG9sZFN0YXJ0SWR4LCBvbGRFbmRJZHgpO1xuICAgICAgICBpZiAoaXNVbmRlZihpZHhJbk9sZCkpIHsgLy8gTmV3IGVsZW1lbnRcbiAgICAgICAgICBjcmVhdGVFbG0obmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtLCBmYWxzZSwgbmV3Q2gsIG5ld1N0YXJ0SWR4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2bm9kZVRvTW92ZSA9IG9sZENoW2lkeEluT2xkXTtcbiAgICAgICAgICBpZiAoc2FtZVZub2RlKHZub2RlVG9Nb3ZlLCBuZXdTdGFydFZub2RlKSkge1xuICAgICAgICAgICAgcGF0Y2hWbm9kZSh2bm9kZVRvTW92ZSwgbmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBuZXdDaCwgbmV3U3RhcnRJZHgpO1xuICAgICAgICAgICAgb2xkQ2hbaWR4SW5PbGRdID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgY2FuTW92ZSAmJiBub2RlT3BzLmluc2VydEJlZm9yZShwYXJlbnRFbG0sIHZub2RlVG9Nb3ZlLmVsbSwgb2xkU3RhcnRWbm9kZS5lbG0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBzYW1lIGtleSBidXQgZGlmZmVyZW50IGVsZW1lbnQuIHRyZWF0IGFzIG5ldyBlbGVtZW50XG4gICAgICAgICAgICBjcmVhdGVFbG0obmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtLCBmYWxzZSwgbmV3Q2gsIG5ld1N0YXJ0SWR4KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob2xkU3RhcnRJZHggPiBvbGRFbmRJZHgpIHtcbiAgICAgIHJlZkVsbSA9IGlzVW5kZWYobmV3Q2hbbmV3RW5kSWR4ICsgMV0pID8gbnVsbCA6IG5ld0NoW25ld0VuZElkeCArIDFdLmVsbTtcbiAgICAgIGFkZFZub2RlcyhwYXJlbnRFbG0sIHJlZkVsbSwgbmV3Q2gsIG5ld1N0YXJ0SWR4LCBuZXdFbmRJZHgsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgfSBlbHNlIGlmIChuZXdTdGFydElkeCA+IG5ld0VuZElkeCkge1xuICAgICAgcmVtb3ZlVm5vZGVzKHBhcmVudEVsbSwgb2xkQ2gsIG9sZFN0YXJ0SWR4LCBvbGRFbmRJZHgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNoZWNrRHVwbGljYXRlS2V5cyAoY2hpbGRyZW4pIHtcbiAgICB2YXIgc2VlbktleXMgPSB7fTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdm5vZGUgPSBjaGlsZHJlbltpXTtcbiAgICAgIHZhciBrZXkgPSB2bm9kZS5rZXk7XG4gICAgICBpZiAoaXNEZWYoa2V5KSkge1xuICAgICAgICBpZiAoc2VlbktleXNba2V5XSkge1xuICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAoXCJEdXBsaWNhdGUga2V5cyBkZXRlY3RlZDogJ1wiICsga2V5ICsgXCInLiBUaGlzIG1heSBjYXVzZSBhbiB1cGRhdGUgZXJyb3IuXCIpLFxuICAgICAgICAgICAgdm5vZGUuY29udGV4dFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VlbktleXNba2V5XSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBmaW5kSWR4SW5PbGQgKG5vZGUsIG9sZENoLCBzdGFydCwgZW5kKSB7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHtcbiAgICAgIHZhciBjID0gb2xkQ2hbaV07XG4gICAgICBpZiAoaXNEZWYoYykgJiYgc2FtZVZub2RlKG5vZGUsIGMpKSB7IHJldHVybiBpIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXRjaFZub2RlIChcbiAgICBvbGRWbm9kZSxcbiAgICB2bm9kZSxcbiAgICBpbnNlcnRlZFZub2RlUXVldWUsXG4gICAgb3duZXJBcnJheSxcbiAgICBpbmRleCxcbiAgICByZW1vdmVPbmx5XG4gICkge1xuICAgIGlmIChvbGRWbm9kZSA9PT0gdm5vZGUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChpc0RlZih2bm9kZS5lbG0pICYmIGlzRGVmKG93bmVyQXJyYXkpKSB7XG4gICAgICAvLyBjbG9uZSByZXVzZWQgdm5vZGVcbiAgICAgIHZub2RlID0gb3duZXJBcnJheVtpbmRleF0gPSBjbG9uZVZOb2RlKHZub2RlKTtcbiAgICB9XG5cbiAgICB2YXIgZWxtID0gdm5vZGUuZWxtID0gb2xkVm5vZGUuZWxtO1xuXG4gICAgaWYgKGlzVHJ1ZShvbGRWbm9kZS5pc0FzeW5jUGxhY2Vob2xkZXIpKSB7XG4gICAgICBpZiAoaXNEZWYodm5vZGUuYXN5bmNGYWN0b3J5LnJlc29sdmVkKSkge1xuICAgICAgICBoeWRyYXRlKG9sZFZub2RlLmVsbSwgdm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2bm9kZS5pc0FzeW5jUGxhY2Vob2xkZXIgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gcmV1c2UgZWxlbWVudCBmb3Igc3RhdGljIHRyZWVzLlxuICAgIC8vIG5vdGUgd2Ugb25seSBkbyB0aGlzIGlmIHRoZSB2bm9kZSBpcyBjbG9uZWQgLVxuICAgIC8vIGlmIHRoZSBuZXcgbm9kZSBpcyBub3QgY2xvbmVkIGl0IG1lYW5zIHRoZSByZW5kZXIgZnVuY3Rpb25zIGhhdmUgYmVlblxuICAgIC8vIHJlc2V0IGJ5IHRoZSBob3QtcmVsb2FkLWFwaSBhbmQgd2UgbmVlZCB0byBkbyBhIHByb3BlciByZS1yZW5kZXIuXG4gICAgaWYgKGlzVHJ1ZSh2bm9kZS5pc1N0YXRpYykgJiZcbiAgICAgIGlzVHJ1ZShvbGRWbm9kZS5pc1N0YXRpYykgJiZcbiAgICAgIHZub2RlLmtleSA9PT0gb2xkVm5vZGUua2V5ICYmXG4gICAgICAoaXNUcnVlKHZub2RlLmlzQ2xvbmVkKSB8fCBpc1RydWUodm5vZGUuaXNPbmNlKSlcbiAgICApIHtcbiAgICAgIHZub2RlLmNvbXBvbmVudEluc3RhbmNlID0gb2xkVm5vZGUuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgaTtcbiAgICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAgaWYgKGlzRGVmKGRhdGEpICYmIGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLnByZXBhdGNoKSkge1xuICAgICAgaShvbGRWbm9kZSwgdm5vZGUpO1xuICAgIH1cblxuICAgIHZhciBvbGRDaCA9IG9sZFZub2RlLmNoaWxkcmVuO1xuICAgIHZhciBjaCA9IHZub2RlLmNoaWxkcmVuO1xuICAgIGlmIChpc0RlZihkYXRhKSAmJiBpc1BhdGNoYWJsZSh2bm9kZSkpIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMudXBkYXRlLmxlbmd0aDsgKytpKSB7IGNicy51cGRhdGVbaV0ob2xkVm5vZGUsIHZub2RlKTsgfVxuICAgICAgaWYgKGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLnVwZGF0ZSkpIHsgaShvbGRWbm9kZSwgdm5vZGUpOyB9XG4gICAgfVxuICAgIGlmIChpc1VuZGVmKHZub2RlLnRleHQpKSB7XG4gICAgICBpZiAoaXNEZWYob2xkQ2gpICYmIGlzRGVmKGNoKSkge1xuICAgICAgICBpZiAob2xkQ2ggIT09IGNoKSB7IHVwZGF0ZUNoaWxkcmVuKGVsbSwgb2xkQ2gsIGNoLCBpbnNlcnRlZFZub2RlUXVldWUsIHJlbW92ZU9ubHkpOyB9XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKGNoKSkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIGNoZWNrRHVwbGljYXRlS2V5cyhjaCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRGVmKG9sZFZub2RlLnRleHQpKSB7IG5vZGVPcHMuc2V0VGV4dENvbnRlbnQoZWxtLCAnJyk7IH1cbiAgICAgICAgYWRkVm5vZGVzKGVsbSwgbnVsbCwgY2gsIDAsIGNoLmxlbmd0aCAtIDEsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKG9sZENoKSkge1xuICAgICAgICByZW1vdmVWbm9kZXMoZWxtLCBvbGRDaCwgMCwgb2xkQ2gubGVuZ3RoIC0gMSk7XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKG9sZFZub2RlLnRleHQpKSB7XG4gICAgICAgIG5vZGVPcHMuc2V0VGV4dENvbnRlbnQoZWxtLCAnJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChvbGRWbm9kZS50ZXh0ICE9PSB2bm9kZS50ZXh0KSB7XG4gICAgICBub2RlT3BzLnNldFRleHRDb250ZW50KGVsbSwgdm5vZGUudGV4dCk7XG4gICAgfVxuICAgIGlmIChpc0RlZihkYXRhKSkge1xuICAgICAgaWYgKGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLnBvc3RwYXRjaCkpIHsgaShvbGRWbm9kZSwgdm5vZGUpOyB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlSW5zZXJ0SG9vayAodm5vZGUsIHF1ZXVlLCBpbml0aWFsKSB7XG4gICAgLy8gZGVsYXkgaW5zZXJ0IGhvb2tzIGZvciBjb21wb25lbnQgcm9vdCBub2RlcywgaW52b2tlIHRoZW0gYWZ0ZXIgdGhlXG4gICAgLy8gZWxlbWVudCBpcyByZWFsbHkgaW5zZXJ0ZWRcbiAgICBpZiAoaXNUcnVlKGluaXRpYWwpICYmIGlzRGVmKHZub2RlLnBhcmVudCkpIHtcbiAgICAgIHZub2RlLnBhcmVudC5kYXRhLnBlbmRpbmdJbnNlcnQgPSBxdWV1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICBxdWV1ZVtpXS5kYXRhLmhvb2suaW5zZXJ0KHF1ZXVlW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgaHlkcmF0aW9uQmFpbGVkID0gZmFsc2U7XG4gIC8vIGxpc3Qgb2YgbW9kdWxlcyB0aGF0IGNhbiBza2lwIGNyZWF0ZSBob29rIGR1cmluZyBoeWRyYXRpb24gYmVjYXVzZSB0aGV5XG4gIC8vIGFyZSBhbHJlYWR5IHJlbmRlcmVkIG9uIHRoZSBjbGllbnQgb3IgaGFzIG5vIG5lZWQgZm9yIGluaXRpYWxpemF0aW9uXG4gIC8vIE5vdGU6IHN0eWxlIGlzIGV4Y2x1ZGVkIGJlY2F1c2UgaXQgcmVsaWVzIG9uIGluaXRpYWwgY2xvbmUgZm9yIGZ1dHVyZVxuICAvLyBkZWVwIHVwZGF0ZXMgKCM3MDYzKS5cbiAgdmFyIGlzUmVuZGVyZWRNb2R1bGUgPSBtYWtlTWFwKCdhdHRycyxjbGFzcyxzdGF0aWNDbGFzcyxzdGF0aWNTdHlsZSxrZXknKTtcblxuICAvLyBOb3RlOiB0aGlzIGlzIGEgYnJvd3Nlci1vbmx5IGZ1bmN0aW9uIHNvIHdlIGNhbiBhc3N1bWUgZWxtcyBhcmUgRE9NIG5vZGVzLlxuICBmdW5jdGlvbiBoeWRyYXRlIChlbG0sIHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIGluVlByZSkge1xuICAgIHZhciBpO1xuICAgIHZhciB0YWcgPSB2bm9kZS50YWc7XG4gICAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICAgIHZhciBjaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuO1xuICAgIGluVlByZSA9IGluVlByZSB8fCAoZGF0YSAmJiBkYXRhLnByZSk7XG4gICAgdm5vZGUuZWxtID0gZWxtO1xuXG4gICAgaWYgKGlzVHJ1ZSh2bm9kZS5pc0NvbW1lbnQpICYmIGlzRGVmKHZub2RlLmFzeW5jRmFjdG9yeSkpIHtcbiAgICAgIHZub2RlLmlzQXN5bmNQbGFjZWhvbGRlciA9IHRydWU7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICAvLyBhc3NlcnQgbm9kZSBtYXRjaFxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoIWFzc2VydE5vZGVNYXRjaChlbG0sIHZub2RlLCBpblZQcmUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgIGlmIChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5pbml0KSkgeyBpKHZub2RlLCB0cnVlIC8qIGh5ZHJhdGluZyAqLyk7IH1cbiAgICAgIGlmIChpc0RlZihpID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UpKSB7XG4gICAgICAgIC8vIGNoaWxkIGNvbXBvbmVudC4gaXQgc2hvdWxkIGhhdmUgaHlkcmF0ZWQgaXRzIG93biB0cmVlLlxuICAgICAgICBpbml0Q29tcG9uZW50KHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNEZWYodGFnKSkge1xuICAgICAgaWYgKGlzRGVmKGNoaWxkcmVuKSkge1xuICAgICAgICAvLyBlbXB0eSBlbGVtZW50LCBhbGxvdyBjbGllbnQgdG8gcGljayB1cCBhbmQgcG9wdWxhdGUgY2hpbGRyZW5cbiAgICAgICAgaWYgKCFlbG0uaGFzQ2hpbGROb2RlcygpKSB7XG4gICAgICAgICAgY3JlYXRlQ2hpbGRyZW4odm5vZGUsIGNoaWxkcmVuLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHYtaHRtbCBhbmQgZG9tUHJvcHM6IGlubmVySFRNTFxuICAgICAgICAgIGlmIChpc0RlZihpID0gZGF0YSkgJiYgaXNEZWYoaSA9IGkuZG9tUHJvcHMpICYmIGlzRGVmKGkgPSBpLmlubmVySFRNTCkpIHtcbiAgICAgICAgICAgIGlmIChpICE9PSBlbG0uaW5uZXJIVE1MKSB7XG4gICAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAgICAgICAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICAgICAgICFoeWRyYXRpb25CYWlsZWRcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaHlkcmF0aW9uQmFpbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1BhcmVudDogJywgZWxtKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ3NlcnZlciBpbm5lckhUTUw6ICcsIGkpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignY2xpZW50IGlubmVySFRNTDogJywgZWxtLmlubmVySFRNTCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGl0ZXJhdGUgYW5kIGNvbXBhcmUgY2hpbGRyZW4gbGlzdHNcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbk1hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBjaGlsZE5vZGUgPSBlbG0uZmlyc3RDaGlsZDtcbiAgICAgICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IGNoaWxkcmVuLmxlbmd0aDsgaSQxKyspIHtcbiAgICAgICAgICAgICAgaWYgKCFjaGlsZE5vZGUgfHwgIWh5ZHJhdGUoY2hpbGROb2RlLCBjaGlsZHJlbltpJDFdLCBpbnNlcnRlZFZub2RlUXVldWUsIGluVlByZSkpIHtcbiAgICAgICAgICAgICAgICBjaGlsZHJlbk1hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBpZiBjaGlsZE5vZGUgaXMgbm90IG51bGwsIGl0IG1lYW5zIHRoZSBhY3R1YWwgY2hpbGROb2RlcyBsaXN0IGlzXG4gICAgICAgICAgICAvLyBsb25nZXIgdGhhbiB0aGUgdmlydHVhbCBjaGlsZHJlbiBsaXN0LlxuICAgICAgICAgICAgaWYgKCFjaGlsZHJlbk1hdGNoIHx8IGNoaWxkTm9kZSkge1xuICAgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgICAgICAhaHlkcmF0aW9uQmFpbGVkXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGh5ZHJhdGlvbkJhaWxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdQYXJlbnQ6ICcsIGVsbSk7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdNaXNtYXRjaGluZyBjaGlsZE5vZGVzIHZzLiBWTm9kZXM6ICcsIGVsbS5jaGlsZE5vZGVzLCBjaGlsZHJlbik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgICAgdmFyIGZ1bGxJbnZva2UgPSBmYWxzZTtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIGRhdGEpIHtcbiAgICAgICAgICBpZiAoIWlzUmVuZGVyZWRNb2R1bGUoa2V5KSkge1xuICAgICAgICAgICAgZnVsbEludm9rZSA9IHRydWU7XG4gICAgICAgICAgICBpbnZva2VDcmVhdGVIb29rcyh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghZnVsbEludm9rZSAmJiBkYXRhWydjbGFzcyddKSB7XG4gICAgICAgICAgLy8gZW5zdXJlIGNvbGxlY3RpbmcgZGVwcyBmb3IgZGVlcCBjbGFzcyBiaW5kaW5ncyBmb3IgZnV0dXJlIHVwZGF0ZXNcbiAgICAgICAgICB0cmF2ZXJzZShkYXRhWydjbGFzcyddKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZWxtLmRhdGEgIT09IHZub2RlLnRleHQpIHtcbiAgICAgIGVsbS5kYXRhID0gdm5vZGUudGV4dDtcbiAgICB9XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGZ1bmN0aW9uIGFzc2VydE5vZGVNYXRjaCAobm9kZSwgdm5vZGUsIGluVlByZSkge1xuICAgIGlmIChpc0RlZih2bm9kZS50YWcpKSB7XG4gICAgICByZXR1cm4gdm5vZGUudGFnLmluZGV4T2YoJ3Z1ZS1jb21wb25lbnQnKSA9PT0gMCB8fCAoXG4gICAgICAgICFpc1Vua25vd25FbGVtZW50JCQxKHZub2RlLCBpblZQcmUpICYmXG4gICAgICAgIHZub2RlLnRhZy50b0xvd2VyQ2FzZSgpID09PSAobm9kZS50YWdOYW1lICYmIG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpKVxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PT0gKHZub2RlLmlzQ29tbWVudCA/IDggOiAzKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBwYXRjaCAob2xkVm5vZGUsIHZub2RlLCBoeWRyYXRpbmcsIHJlbW92ZU9ubHkpIHtcbiAgICBpZiAoaXNVbmRlZih2bm9kZSkpIHtcbiAgICAgIGlmIChpc0RlZihvbGRWbm9kZSkpIHsgaW52b2tlRGVzdHJveUhvb2sob2xkVm5vZGUpOyB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgaXNJbml0aWFsUGF0Y2ggPSBmYWxzZTtcbiAgICB2YXIgaW5zZXJ0ZWRWbm9kZVF1ZXVlID0gW107XG5cbiAgICBpZiAoaXNVbmRlZihvbGRWbm9kZSkpIHtcbiAgICAgIC8vIGVtcHR5IG1vdW50IChsaWtlbHkgYXMgY29tcG9uZW50KSwgY3JlYXRlIG5ldyByb290IGVsZW1lbnRcbiAgICAgIGlzSW5pdGlhbFBhdGNoID0gdHJ1ZTtcbiAgICAgIGNyZWF0ZUVsbSh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGlzUmVhbEVsZW1lbnQgPSBpc0RlZihvbGRWbm9kZS5ub2RlVHlwZSk7XG4gICAgICBpZiAoIWlzUmVhbEVsZW1lbnQgJiYgc2FtZVZub2RlKG9sZFZub2RlLCB2bm9kZSkpIHtcbiAgICAgICAgLy8gcGF0Y2ggZXhpc3Rpbmcgcm9vdCBub2RlXG4gICAgICAgIHBhdGNoVm5vZGUob2xkVm5vZGUsIHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIG51bGwsIG51bGwsIHJlbW92ZU9ubHkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGlzUmVhbEVsZW1lbnQpIHtcbiAgICAgICAgICAvLyBtb3VudGluZyB0byBhIHJlYWwgZWxlbWVudFxuICAgICAgICAgIC8vIGNoZWNrIGlmIHRoaXMgaXMgc2VydmVyLXJlbmRlcmVkIGNvbnRlbnQgYW5kIGlmIHdlIGNhbiBwZXJmb3JtXG4gICAgICAgICAgLy8gYSBzdWNjZXNzZnVsIGh5ZHJhdGlvbi5cbiAgICAgICAgICBpZiAob2xkVm5vZGUubm9kZVR5cGUgPT09IDEgJiYgb2xkVm5vZGUuaGFzQXR0cmlidXRlKFNTUl9BVFRSKSkge1xuICAgICAgICAgICAgb2xkVm5vZGUucmVtb3ZlQXR0cmlidXRlKFNTUl9BVFRSKTtcbiAgICAgICAgICAgIGh5ZHJhdGluZyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc1RydWUoaHlkcmF0aW5nKSkge1xuICAgICAgICAgICAgaWYgKGh5ZHJhdGUob2xkVm5vZGUsIHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpKSB7XG4gICAgICAgICAgICAgIGludm9rZUluc2VydEhvb2sodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgIHJldHVybiBvbGRWbm9kZVxuICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAgICAgJ1RoZSBjbGllbnQtc2lkZSByZW5kZXJlZCB2aXJ0dWFsIERPTSB0cmVlIGlzIG5vdCBtYXRjaGluZyAnICtcbiAgICAgICAgICAgICAgICAnc2VydmVyLXJlbmRlcmVkIGNvbnRlbnQuIFRoaXMgaXMgbGlrZWx5IGNhdXNlZCBieSBpbmNvcnJlY3QgJyArXG4gICAgICAgICAgICAgICAgJ0hUTUwgbWFya3VwLCBmb3IgZXhhbXBsZSBuZXN0aW5nIGJsb2NrLWxldmVsIGVsZW1lbnRzIGluc2lkZSAnICtcbiAgICAgICAgICAgICAgICAnPHA+LCBvciBtaXNzaW5nIDx0Ym9keT4uIEJhaWxpbmcgaHlkcmF0aW9uIGFuZCBwZXJmb3JtaW5nICcgK1xuICAgICAgICAgICAgICAgICdmdWxsIGNsaWVudC1zaWRlIHJlbmRlci4nXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGVpdGhlciBub3Qgc2VydmVyLXJlbmRlcmVkLCBvciBoeWRyYXRpb24gZmFpbGVkLlxuICAgICAgICAgIC8vIGNyZWF0ZSBhbiBlbXB0eSBub2RlIGFuZCByZXBsYWNlIGl0XG4gICAgICAgICAgb2xkVm5vZGUgPSBlbXB0eU5vZGVBdChvbGRWbm9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyByZXBsYWNpbmcgZXhpc3RpbmcgZWxlbWVudFxuICAgICAgICB2YXIgb2xkRWxtID0gb2xkVm5vZGUuZWxtO1xuICAgICAgICB2YXIgcGFyZW50RWxtID0gbm9kZU9wcy5wYXJlbnROb2RlKG9sZEVsbSk7XG5cbiAgICAgICAgLy8gY3JlYXRlIG5ldyBub2RlXG4gICAgICAgIGNyZWF0ZUVsbShcbiAgICAgICAgICB2bm9kZSxcbiAgICAgICAgICBpbnNlcnRlZFZub2RlUXVldWUsXG4gICAgICAgICAgLy8gZXh0cmVtZWx5IHJhcmUgZWRnZSBjYXNlOiBkbyBub3QgaW5zZXJ0IGlmIG9sZCBlbGVtZW50IGlzIGluIGFcbiAgICAgICAgICAvLyBsZWF2aW5nIHRyYW5zaXRpb24uIE9ubHkgaGFwcGVucyB3aGVuIGNvbWJpbmluZyB0cmFuc2l0aW9uICtcbiAgICAgICAgICAvLyBrZWVwLWFsaXZlICsgSE9Dcy4gKCM0NTkwKVxuICAgICAgICAgIG9sZEVsbS5fbGVhdmVDYiA/IG51bGwgOiBwYXJlbnRFbG0sXG4gICAgICAgICAgbm9kZU9wcy5uZXh0U2libGluZyhvbGRFbG0pXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gdXBkYXRlIHBhcmVudCBwbGFjZWhvbGRlciBub2RlIGVsZW1lbnQsIHJlY3Vyc2l2ZWx5XG4gICAgICAgIGlmIChpc0RlZih2bm9kZS5wYXJlbnQpKSB7XG4gICAgICAgICAgdmFyIGFuY2VzdG9yID0gdm5vZGUucGFyZW50O1xuICAgICAgICAgIHZhciBwYXRjaGFibGUgPSBpc1BhdGNoYWJsZSh2bm9kZSk7XG4gICAgICAgICAgd2hpbGUgKGFuY2VzdG9yKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNicy5kZXN0cm95Lmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgIGNicy5kZXN0cm95W2ldKGFuY2VzdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFuY2VzdG9yLmVsbSA9IHZub2RlLmVsbTtcbiAgICAgICAgICAgIGlmIChwYXRjaGFibGUpIHtcbiAgICAgICAgICAgICAgZm9yICh2YXIgaSQxID0gMDsgaSQxIDwgY2JzLmNyZWF0ZS5sZW5ndGg7ICsraSQxKSB7XG4gICAgICAgICAgICAgICAgY2JzLmNyZWF0ZVtpJDFdKGVtcHR5Tm9kZSwgYW5jZXN0b3IpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vICM2NTEzXG4gICAgICAgICAgICAgIC8vIGludm9rZSBpbnNlcnQgaG9va3MgdGhhdCBtYXkgaGF2ZSBiZWVuIG1lcmdlZCBieSBjcmVhdGUgaG9va3MuXG4gICAgICAgICAgICAgIC8vIGUuZy4gZm9yIGRpcmVjdGl2ZXMgdGhhdCB1c2VzIHRoZSBcImluc2VydGVkXCIgaG9vay5cbiAgICAgICAgICAgICAgdmFyIGluc2VydCA9IGFuY2VzdG9yLmRhdGEuaG9vay5pbnNlcnQ7XG4gICAgICAgICAgICAgIGlmIChpbnNlcnQubWVyZ2VkKSB7XG4gICAgICAgICAgICAgICAgLy8gc3RhcnQgYXQgaW5kZXggMSB0byBhdm9pZCByZS1pbnZva2luZyBjb21wb25lbnQgbW91bnRlZCBob29rXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSQyID0gMTsgaSQyIDwgaW5zZXJ0LmZucy5sZW5ndGg7IGkkMisrKSB7XG4gICAgICAgICAgICAgICAgICBpbnNlcnQuZm5zW2kkMl0oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlZ2lzdGVyUmVmKGFuY2VzdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3IucGFyZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGRlc3Ryb3kgb2xkIG5vZGVcbiAgICAgICAgaWYgKGlzRGVmKHBhcmVudEVsbSkpIHtcbiAgICAgICAgICByZW1vdmVWbm9kZXMocGFyZW50RWxtLCBbb2xkVm5vZGVdLCAwLCAwKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0RlZihvbGRWbm9kZS50YWcpKSB7XG4gICAgICAgICAgaW52b2tlRGVzdHJveUhvb2sob2xkVm5vZGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW52b2tlSW5zZXJ0SG9vayh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBpc0luaXRpYWxQYXRjaCk7XG4gICAgcmV0dXJuIHZub2RlLmVsbVxuICB9XG59XG5cbi8qICAqL1xuXG52YXIgZGlyZWN0aXZlcyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVEaXJlY3RpdmVzLFxuICB1cGRhdGU6IHVwZGF0ZURpcmVjdGl2ZXMsXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIHVuYmluZERpcmVjdGl2ZXMgKHZub2RlKSB7XG4gICAgdXBkYXRlRGlyZWN0aXZlcyh2bm9kZSwgZW1wdHlOb2RlKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gdXBkYXRlRGlyZWN0aXZlcyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIGlmIChvbGRWbm9kZS5kYXRhLmRpcmVjdGl2ZXMgfHwgdm5vZGUuZGF0YS5kaXJlY3RpdmVzKSB7XG4gICAgX3VwZGF0ZShvbGRWbm9kZSwgdm5vZGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF91cGRhdGUgKG9sZFZub2RlLCB2bm9kZSkge1xuICB2YXIgaXNDcmVhdGUgPSBvbGRWbm9kZSA9PT0gZW1wdHlOb2RlO1xuICB2YXIgaXNEZXN0cm95ID0gdm5vZGUgPT09IGVtcHR5Tm9kZTtcbiAgdmFyIG9sZERpcnMgPSBub3JtYWxpemVEaXJlY3RpdmVzJDEob2xkVm5vZGUuZGF0YS5kaXJlY3RpdmVzLCBvbGRWbm9kZS5jb250ZXh0KTtcbiAgdmFyIG5ld0RpcnMgPSBub3JtYWxpemVEaXJlY3RpdmVzJDEodm5vZGUuZGF0YS5kaXJlY3RpdmVzLCB2bm9kZS5jb250ZXh0KTtcblxuICB2YXIgZGlyc1dpdGhJbnNlcnQgPSBbXTtcbiAgdmFyIGRpcnNXaXRoUG9zdHBhdGNoID0gW107XG5cbiAgdmFyIGtleSwgb2xkRGlyLCBkaXI7XG4gIGZvciAoa2V5IGluIG5ld0RpcnMpIHtcbiAgICBvbGREaXIgPSBvbGREaXJzW2tleV07XG4gICAgZGlyID0gbmV3RGlyc1trZXldO1xuICAgIGlmICghb2xkRGlyKSB7XG4gICAgICAvLyBuZXcgZGlyZWN0aXZlLCBiaW5kXG4gICAgICBjYWxsSG9vayQxKGRpciwgJ2JpbmQnLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgaWYgKGRpci5kZWYgJiYgZGlyLmRlZi5pbnNlcnRlZCkge1xuICAgICAgICBkaXJzV2l0aEluc2VydC5wdXNoKGRpcik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGV4aXN0aW5nIGRpcmVjdGl2ZSwgdXBkYXRlXG4gICAgICBkaXIub2xkVmFsdWUgPSBvbGREaXIudmFsdWU7XG4gICAgICBkaXIub2xkQXJnID0gb2xkRGlyLmFyZztcbiAgICAgIGNhbGxIb29rJDEoZGlyLCAndXBkYXRlJywgdm5vZGUsIG9sZFZub2RlKTtcbiAgICAgIGlmIChkaXIuZGVmICYmIGRpci5kZWYuY29tcG9uZW50VXBkYXRlZCkge1xuICAgICAgICBkaXJzV2l0aFBvc3RwYXRjaC5wdXNoKGRpcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGRpcnNXaXRoSW5zZXJ0Lmxlbmd0aCkge1xuICAgIHZhciBjYWxsSW5zZXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXJzV2l0aEluc2VydC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjYWxsSG9vayQxKGRpcnNXaXRoSW5zZXJ0W2ldLCAnaW5zZXJ0ZWQnLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgaWYgKGlzQ3JlYXRlKSB7XG4gICAgICBtZXJnZVZOb2RlSG9vayh2bm9kZSwgJ2luc2VydCcsIGNhbGxJbnNlcnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsSW5zZXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRpcnNXaXRoUG9zdHBhdGNoLmxlbmd0aCkge1xuICAgIG1lcmdlVk5vZGVIb29rKHZub2RlLCAncG9zdHBhdGNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXJzV2l0aFBvc3RwYXRjaC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjYWxsSG9vayQxKGRpcnNXaXRoUG9zdHBhdGNoW2ldLCAnY29tcG9uZW50VXBkYXRlZCcsIHZub2RlLCBvbGRWbm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoIWlzQ3JlYXRlKSB7XG4gICAgZm9yIChrZXkgaW4gb2xkRGlycykge1xuICAgICAgaWYgKCFuZXdEaXJzW2tleV0pIHtcbiAgICAgICAgLy8gbm8gbG9uZ2VyIHByZXNlbnQsIHVuYmluZFxuICAgICAgICBjYWxsSG9vayQxKG9sZERpcnNba2V5XSwgJ3VuYmluZCcsIG9sZFZub2RlLCBvbGRWbm9kZSwgaXNEZXN0cm95KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxudmFyIGVtcHR5TW9kaWZpZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuZnVuY3Rpb24gbm9ybWFsaXplRGlyZWN0aXZlcyQxIChcbiAgZGlycyxcbiAgdm1cbikge1xuICB2YXIgcmVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgaWYgKCFkaXJzKSB7XG4gICAgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gICAgcmV0dXJuIHJlc1xuICB9XG4gIHZhciBpLCBkaXI7XG4gIGZvciAoaSA9IDA7IGkgPCBkaXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgZGlyID0gZGlyc1tpXTtcbiAgICBpZiAoIWRpci5tb2RpZmllcnMpIHtcbiAgICAgIC8vICRmbG93LWRpc2FibGUtbGluZVxuICAgICAgZGlyLm1vZGlmaWVycyA9IGVtcHR5TW9kaWZpZXJzO1xuICAgIH1cbiAgICByZXNbZ2V0UmF3RGlyTmFtZShkaXIpXSA9IGRpcjtcbiAgICBkaXIuZGVmID0gcmVzb2x2ZUFzc2V0KHZtLiRvcHRpb25zLCAnZGlyZWN0aXZlcycsIGRpci5uYW1lLCB0cnVlKTtcbiAgfVxuICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBnZXRSYXdEaXJOYW1lIChkaXIpIHtcbiAgcmV0dXJuIGRpci5yYXdOYW1lIHx8ICgoZGlyLm5hbWUpICsgXCIuXCIgKyAoT2JqZWN0LmtleXMoZGlyLm1vZGlmaWVycyB8fCB7fSkuam9pbignLicpKSlcbn1cblxuZnVuY3Rpb24gY2FsbEhvb2skMSAoZGlyLCBob29rLCB2bm9kZSwgb2xkVm5vZGUsIGlzRGVzdHJveSkge1xuICB2YXIgZm4gPSBkaXIuZGVmICYmIGRpci5kZWZbaG9va107XG4gIGlmIChmbikge1xuICAgIHRyeSB7XG4gICAgICBmbih2bm9kZS5lbG0sIGRpciwgdm5vZGUsIG9sZFZub2RlLCBpc0Rlc3Ryb3kpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGhhbmRsZUVycm9yKGUsIHZub2RlLmNvbnRleHQsIChcImRpcmVjdGl2ZSBcIiArIChkaXIubmFtZSkgKyBcIiBcIiArIGhvb2sgKyBcIiBob29rXCIpKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIGJhc2VNb2R1bGVzID0gW1xuICByZWYsXG4gIGRpcmVjdGl2ZXNcbl07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiB1cGRhdGVBdHRycyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIHZhciBvcHRzID0gdm5vZGUuY29tcG9uZW50T3B0aW9ucztcbiAgaWYgKGlzRGVmKG9wdHMpICYmIG9wdHMuQ3Rvci5vcHRpb25zLmluaGVyaXRBdHRycyA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm5cbiAgfVxuICBpZiAoaXNVbmRlZihvbGRWbm9kZS5kYXRhLmF0dHJzKSAmJiBpc1VuZGVmKHZub2RlLmRhdGEuYXR0cnMpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIGtleSwgY3VyLCBvbGQ7XG4gIHZhciBlbG0gPSB2bm9kZS5lbG07XG4gIHZhciBvbGRBdHRycyA9IG9sZFZub2RlLmRhdGEuYXR0cnMgfHwge307XG4gIHZhciBhdHRycyA9IHZub2RlLmRhdGEuYXR0cnMgfHwge307XG4gIC8vIGNsb25lIG9ic2VydmVkIG9iamVjdHMsIGFzIHRoZSB1c2VyIHByb2JhYmx5IHdhbnRzIHRvIG11dGF0ZSBpdFxuICBpZiAoaXNEZWYoYXR0cnMuX19vYl9fKSkge1xuICAgIGF0dHJzID0gdm5vZGUuZGF0YS5hdHRycyA9IGV4dGVuZCh7fSwgYXR0cnMpO1xuICB9XG5cbiAgZm9yIChrZXkgaW4gYXR0cnMpIHtcbiAgICBjdXIgPSBhdHRyc1trZXldO1xuICAgIG9sZCA9IG9sZEF0dHJzW2tleV07XG4gICAgaWYgKG9sZCAhPT0gY3VyKSB7XG4gICAgICBzZXRBdHRyKGVsbSwga2V5LCBjdXIpO1xuICAgIH1cbiAgfVxuICAvLyAjNDM5MTogaW4gSUU5LCBzZXR0aW5nIHR5cGUgY2FuIHJlc2V0IHZhbHVlIGZvciBpbnB1dFt0eXBlPXJhZGlvXVxuICAvLyAjNjY2NjogSUUvRWRnZSBmb3JjZXMgcHJvZ3Jlc3MgdmFsdWUgZG93biB0byAxIGJlZm9yZSBzZXR0aW5nIGEgbWF4XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoKGlzSUUgfHwgaXNFZGdlKSAmJiBhdHRycy52YWx1ZSAhPT0gb2xkQXR0cnMudmFsdWUpIHtcbiAgICBzZXRBdHRyKGVsbSwgJ3ZhbHVlJywgYXR0cnMudmFsdWUpO1xuICB9XG4gIGZvciAoa2V5IGluIG9sZEF0dHJzKSB7XG4gICAgaWYgKGlzVW5kZWYoYXR0cnNba2V5XSkpIHtcbiAgICAgIGlmIChpc1hsaW5rKGtleSkpIHtcbiAgICAgICAgZWxtLnJlbW92ZUF0dHJpYnV0ZU5TKHhsaW5rTlMsIGdldFhsaW5rUHJvcChrZXkpKTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzRW51bWVyYXRlZEF0dHIoa2V5KSkge1xuICAgICAgICBlbG0ucmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNldEF0dHIgKGVsLCBrZXksIHZhbHVlKSB7XG4gIGlmIChlbC50YWdOYW1lLmluZGV4T2YoJy0nKSA+IC0xKSB7XG4gICAgYmFzZVNldEF0dHIoZWwsIGtleSwgdmFsdWUpO1xuICB9IGVsc2UgaWYgKGlzQm9vbGVhbkF0dHIoa2V5KSkge1xuICAgIC8vIHNldCBhdHRyaWJ1dGUgZm9yIGJsYW5rIHZhbHVlXG4gICAgLy8gZS5nLiA8b3B0aW9uIGRpc2FibGVkPlNlbGVjdCBvbmU8L29wdGlvbj5cbiAgICBpZiAoaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0ZWNobmljYWxseSBhbGxvd2Z1bGxzY3JlZW4gaXMgYSBib29sZWFuIGF0dHJpYnV0ZSBmb3IgPGlmcmFtZT4sXG4gICAgICAvLyBidXQgRmxhc2ggZXhwZWN0cyBhIHZhbHVlIG9mIFwidHJ1ZVwiIHdoZW4gdXNlZCBvbiA8ZW1iZWQ+IHRhZ1xuICAgICAgdmFsdWUgPSBrZXkgPT09ICdhbGxvd2Z1bGxzY3JlZW4nICYmIGVsLnRhZ05hbWUgPT09ICdFTUJFRCdcbiAgICAgICAgPyAndHJ1ZSdcbiAgICAgICAgOiBrZXk7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzRW51bWVyYXRlZEF0dHIoa2V5KSkge1xuICAgIGVsLnNldEF0dHJpYnV0ZShrZXksIGNvbnZlcnRFbnVtZXJhdGVkVmFsdWUoa2V5LCB2YWx1ZSkpO1xuICB9IGVsc2UgaWYgKGlzWGxpbmsoa2V5KSkge1xuICAgIGlmIChpc0ZhbHN5QXR0clZhbHVlKHZhbHVlKSkge1xuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlTlMoeGxpbmtOUywgZ2V0WGxpbmtQcm9wKGtleSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGVOUyh4bGlua05TLCBrZXksIHZhbHVlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYmFzZVNldEF0dHIoZWwsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJhc2VTZXRBdHRyIChlbCwga2V5LCB2YWx1ZSkge1xuICBpZiAoaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkpIHtcbiAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcbiAgfSBlbHNlIHtcbiAgICAvLyAjNzEzODogSUUxMCAmIDExIGZpcmVzIGlucHV0IGV2ZW50IHdoZW4gc2V0dGluZyBwbGFjZWhvbGRlciBvblxuICAgIC8vIDx0ZXh0YXJlYT4uLi4gYmxvY2sgdGhlIGZpcnN0IGlucHV0IGV2ZW50IGFuZCByZW1vdmUgdGhlIGJsb2NrZXJcbiAgICAvLyBpbW1lZGlhdGVseS5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoXG4gICAgICBpc0lFICYmICFpc0lFOSAmJlxuICAgICAgZWwudGFnTmFtZSA9PT0gJ1RFWFRBUkVBJyAmJlxuICAgICAga2V5ID09PSAncGxhY2Vob2xkZXInICYmIHZhbHVlICE9PSAnJyAmJiAhZWwuX19pZXBoXG4gICAgKSB7XG4gICAgICB2YXIgYmxvY2tlciA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2lucHV0JywgYmxvY2tlcik7XG4gICAgICB9O1xuICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBibG9ja2VyKTtcbiAgICAgIC8vICRmbG93LWRpc2FibGUtbGluZVxuICAgICAgZWwuX19pZXBoID0gdHJ1ZTsgLyogSUUgcGxhY2Vob2xkZXIgcGF0Y2hlZCAqL1xuICAgIH1cbiAgICBlbC5zZXRBdHRyaWJ1dGUoa2V5LCB2YWx1ZSk7XG4gIH1cbn1cblxudmFyIGF0dHJzID0ge1xuICBjcmVhdGU6IHVwZGF0ZUF0dHJzLFxuICB1cGRhdGU6IHVwZGF0ZUF0dHJzXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdXBkYXRlQ2xhc3MgKG9sZFZub2RlLCB2bm9kZSkge1xuICB2YXIgZWwgPSB2bm9kZS5lbG07XG4gIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgdmFyIG9sZERhdGEgPSBvbGRWbm9kZS5kYXRhO1xuICBpZiAoXG4gICAgaXNVbmRlZihkYXRhLnN0YXRpY0NsYXNzKSAmJlxuICAgIGlzVW5kZWYoZGF0YS5jbGFzcykgJiYgKFxuICAgICAgaXNVbmRlZihvbGREYXRhKSB8fCAoXG4gICAgICAgIGlzVW5kZWYob2xkRGF0YS5zdGF0aWNDbGFzcykgJiZcbiAgICAgICAgaXNVbmRlZihvbGREYXRhLmNsYXNzKVxuICAgICAgKVxuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgY2xzID0gZ2VuQ2xhc3NGb3JWbm9kZSh2bm9kZSk7XG5cbiAgLy8gaGFuZGxlIHRyYW5zaXRpb24gY2xhc3Nlc1xuICB2YXIgdHJhbnNpdGlvbkNsYXNzID0gZWwuX3RyYW5zaXRpb25DbGFzc2VzO1xuICBpZiAoaXNEZWYodHJhbnNpdGlvbkNsYXNzKSkge1xuICAgIGNscyA9IGNvbmNhdChjbHMsIHN0cmluZ2lmeUNsYXNzKHRyYW5zaXRpb25DbGFzcykpO1xuICB9XG5cbiAgLy8gc2V0IHRoZSBjbGFzc1xuICBpZiAoY2xzICE9PSBlbC5fcHJldkNsYXNzKSB7XG4gICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIGNscyk7XG4gICAgZWwuX3ByZXZDbGFzcyA9IGNscztcbiAgfVxufVxuXG52YXIga2xhc3MgPSB7XG4gIGNyZWF0ZTogdXBkYXRlQ2xhc3MsXG4gIHVwZGF0ZTogdXBkYXRlQ2xhc3Ncbn07XG5cbi8qICAqL1xuXG52YXIgdmFsaWREaXZpc2lvbkNoYXJSRSA9IC9bXFx3KS4rXFwtXyRcXF1dLztcblxuZnVuY3Rpb24gcGFyc2VGaWx0ZXJzIChleHApIHtcbiAgdmFyIGluU2luZ2xlID0gZmFsc2U7XG4gIHZhciBpbkRvdWJsZSA9IGZhbHNlO1xuICB2YXIgaW5UZW1wbGF0ZVN0cmluZyA9IGZhbHNlO1xuICB2YXIgaW5SZWdleCA9IGZhbHNlO1xuICB2YXIgY3VybHkgPSAwO1xuICB2YXIgc3F1YXJlID0gMDtcbiAgdmFyIHBhcmVuID0gMDtcbiAgdmFyIGxhc3RGaWx0ZXJJbmRleCA9IDA7XG4gIHZhciBjLCBwcmV2LCBpLCBleHByZXNzaW9uLCBmaWx0ZXJzO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBleHAubGVuZ3RoOyBpKyspIHtcbiAgICBwcmV2ID0gYztcbiAgICBjID0gZXhwLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGluU2luZ2xlKSB7XG4gICAgICBpZiAoYyA9PT0gMHgyNyAmJiBwcmV2ICE9PSAweDVDKSB7IGluU2luZ2xlID0gZmFsc2U7IH1cbiAgICB9IGVsc2UgaWYgKGluRG91YmxlKSB7XG4gICAgICBpZiAoYyA9PT0gMHgyMiAmJiBwcmV2ICE9PSAweDVDKSB7IGluRG91YmxlID0gZmFsc2U7IH1cbiAgICB9IGVsc2UgaWYgKGluVGVtcGxhdGVTdHJpbmcpIHtcbiAgICAgIGlmIChjID09PSAweDYwICYmIHByZXYgIT09IDB4NUMpIHsgaW5UZW1wbGF0ZVN0cmluZyA9IGZhbHNlOyB9XG4gICAgfSBlbHNlIGlmIChpblJlZ2V4KSB7XG4gICAgICBpZiAoYyA9PT0gMHgyZiAmJiBwcmV2ICE9PSAweDVDKSB7IGluUmVnZXggPSBmYWxzZTsgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjID09PSAweDdDICYmIC8vIHBpcGVcbiAgICAgIGV4cC5jaGFyQ29kZUF0KGkgKyAxKSAhPT0gMHg3QyAmJlxuICAgICAgZXhwLmNoYXJDb2RlQXQoaSAtIDEpICE9PSAweDdDICYmXG4gICAgICAhY3VybHkgJiYgIXNxdWFyZSAmJiAhcGFyZW5cbiAgICApIHtcbiAgICAgIGlmIChleHByZXNzaW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gZmlyc3QgZmlsdGVyLCBlbmQgb2YgZXhwcmVzc2lvblxuICAgICAgICBsYXN0RmlsdGVySW5kZXggPSBpICsgMTtcbiAgICAgICAgZXhwcmVzc2lvbiA9IGV4cC5zbGljZSgwLCBpKS50cmltKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwdXNoRmlsdGVyKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAoYykge1xuICAgICAgICBjYXNlIDB4MjI6IGluRG91YmxlID0gdHJ1ZTsgYnJlYWsgICAgICAgICAvLyBcIlxuICAgICAgICBjYXNlIDB4Mjc6IGluU2luZ2xlID0gdHJ1ZTsgYnJlYWsgICAgICAgICAvLyAnXG4gICAgICAgIGNhc2UgMHg2MDogaW5UZW1wbGF0ZVN0cmluZyA9IHRydWU7IGJyZWFrIC8vIGBcbiAgICAgICAgY2FzZSAweDI4OiBwYXJlbisrOyBicmVhayAgICAgICAgICAgICAgICAgLy8gKFxuICAgICAgICBjYXNlIDB4Mjk6IHBhcmVuLS07IGJyZWFrICAgICAgICAgICAgICAgICAvLyApXG4gICAgICAgIGNhc2UgMHg1Qjogc3F1YXJlKys7IGJyZWFrICAgICAgICAgICAgICAgIC8vIFtcbiAgICAgICAgY2FzZSAweDVEOiBzcXVhcmUtLTsgYnJlYWsgICAgICAgICAgICAgICAgLy8gXVxuICAgICAgICBjYXNlIDB4N0I6IGN1cmx5Kys7IGJyZWFrICAgICAgICAgICAgICAgICAvLyB7XG4gICAgICAgIGNhc2UgMHg3RDogY3VybHktLTsgYnJlYWsgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgIH1cbiAgICAgIGlmIChjID09PSAweDJmKSB7IC8vIC9cbiAgICAgICAgdmFyIGogPSBpIC0gMTtcbiAgICAgICAgdmFyIHAgPSAodm9pZCAwKTtcbiAgICAgICAgLy8gZmluZCBmaXJzdCBub24td2hpdGVzcGFjZSBwcmV2IGNoYXJcbiAgICAgICAgZm9yICg7IGogPj0gMDsgai0tKSB7XG4gICAgICAgICAgcCA9IGV4cC5jaGFyQXQoaik7XG4gICAgICAgICAgaWYgKHAgIT09ICcgJykgeyBicmVhayB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwIHx8ICF2YWxpZERpdmlzaW9uQ2hhclJFLnRlc3QocCkpIHtcbiAgICAgICAgICBpblJlZ2V4ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChleHByZXNzaW9uID09PSB1bmRlZmluZWQpIHtcbiAgICBleHByZXNzaW9uID0gZXhwLnNsaWNlKDAsIGkpLnRyaW0oKTtcbiAgfSBlbHNlIGlmIChsYXN0RmlsdGVySW5kZXggIT09IDApIHtcbiAgICBwdXNoRmlsdGVyKCk7XG4gIH1cblxuICBmdW5jdGlvbiBwdXNoRmlsdGVyICgpIHtcbiAgICAoZmlsdGVycyB8fCAoZmlsdGVycyA9IFtdKSkucHVzaChleHAuc2xpY2UobGFzdEZpbHRlckluZGV4LCBpKS50cmltKCkpO1xuICAgIGxhc3RGaWx0ZXJJbmRleCA9IGkgKyAxO1xuICB9XG5cbiAgaWYgKGZpbHRlcnMpIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgZmlsdGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgZXhwcmVzc2lvbiA9IHdyYXBGaWx0ZXIoZXhwcmVzc2lvbiwgZmlsdGVyc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4cHJlc3Npb25cbn1cblxuZnVuY3Rpb24gd3JhcEZpbHRlciAoZXhwLCBmaWx0ZXIpIHtcbiAgdmFyIGkgPSBmaWx0ZXIuaW5kZXhPZignKCcpO1xuICBpZiAoaSA8IDApIHtcbiAgICAvLyBfZjogcmVzb2x2ZUZpbHRlclxuICAgIHJldHVybiAoXCJfZihcXFwiXCIgKyBmaWx0ZXIgKyBcIlxcXCIpKFwiICsgZXhwICsgXCIpXCIpXG4gIH0gZWxzZSB7XG4gICAgdmFyIG5hbWUgPSBmaWx0ZXIuc2xpY2UoMCwgaSk7XG4gICAgdmFyIGFyZ3MgPSBmaWx0ZXIuc2xpY2UoaSArIDEpO1xuICAgIHJldHVybiAoXCJfZihcXFwiXCIgKyBuYW1lICsgXCJcXFwiKShcIiArIGV4cCArIChhcmdzICE9PSAnKScgPyAnLCcgKyBhcmdzIDogYXJncykpXG4gIH1cbn1cblxuLyogICovXG5cblxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuZnVuY3Rpb24gYmFzZVdhcm4gKG1zZywgcmFuZ2UpIHtcbiAgY29uc29sZS5lcnJvcigoXCJbVnVlIGNvbXBpbGVyXTogXCIgKyBtc2cpKTtcbn1cbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cblxuZnVuY3Rpb24gcGx1Y2tNb2R1bGVGdW5jdGlvbiAoXG4gIG1vZHVsZXMsXG4gIGtleVxuKSB7XG4gIHJldHVybiBtb2R1bGVzXG4gICAgPyBtb2R1bGVzLm1hcChmdW5jdGlvbiAobSkgeyByZXR1cm4gbVtrZXldOyB9KS5maWx0ZXIoZnVuY3Rpb24gKF8pIHsgcmV0dXJuIF87IH0pXG4gICAgOiBbXVxufVxuXG5mdW5jdGlvbiBhZGRQcm9wIChlbCwgbmFtZSwgdmFsdWUsIHJhbmdlLCBkeW5hbWljKSB7XG4gIChlbC5wcm9wcyB8fCAoZWwucHJvcHMgPSBbXSkpLnB1c2gocmFuZ2VTZXRJdGVtKHsgbmFtZTogbmFtZSwgdmFsdWU6IHZhbHVlLCBkeW5hbWljOiBkeW5hbWljIH0sIHJhbmdlKSk7XG4gIGVsLnBsYWluID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGFkZEF0dHIgKGVsLCBuYW1lLCB2YWx1ZSwgcmFuZ2UsIGR5bmFtaWMpIHtcbiAgdmFyIGF0dHJzID0gZHluYW1pY1xuICAgID8gKGVsLmR5bmFtaWNBdHRycyB8fCAoZWwuZHluYW1pY0F0dHJzID0gW10pKVxuICAgIDogKGVsLmF0dHJzIHx8IChlbC5hdHRycyA9IFtdKSk7XG4gIGF0dHJzLnB1c2gocmFuZ2VTZXRJdGVtKHsgbmFtZTogbmFtZSwgdmFsdWU6IHZhbHVlLCBkeW5hbWljOiBkeW5hbWljIH0sIHJhbmdlKSk7XG4gIGVsLnBsYWluID0gZmFsc2U7XG59XG5cbi8vIGFkZCBhIHJhdyBhdHRyICh1c2UgdGhpcyBpbiBwcmVUcmFuc2Zvcm1zKVxuZnVuY3Rpb24gYWRkUmF3QXR0ciAoZWwsIG5hbWUsIHZhbHVlLCByYW5nZSkge1xuICBlbC5hdHRyc01hcFtuYW1lXSA9IHZhbHVlO1xuICBlbC5hdHRyc0xpc3QucHVzaChyYW5nZVNldEl0ZW0oeyBuYW1lOiBuYW1lLCB2YWx1ZTogdmFsdWUgfSwgcmFuZ2UpKTtcbn1cblxuZnVuY3Rpb24gYWRkRGlyZWN0aXZlIChcbiAgZWwsXG4gIG5hbWUsXG4gIHJhd05hbWUsXG4gIHZhbHVlLFxuICBhcmcsXG4gIGlzRHluYW1pY0FyZyxcbiAgbW9kaWZpZXJzLFxuICByYW5nZVxuKSB7XG4gIChlbC5kaXJlY3RpdmVzIHx8IChlbC5kaXJlY3RpdmVzID0gW10pKS5wdXNoKHJhbmdlU2V0SXRlbSh7XG4gICAgbmFtZTogbmFtZSxcbiAgICByYXdOYW1lOiByYXdOYW1lLFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBhcmc6IGFyZyxcbiAgICBpc0R5bmFtaWNBcmc6IGlzRHluYW1pY0FyZyxcbiAgICBtb2RpZmllcnM6IG1vZGlmaWVyc1xuICB9LCByYW5nZSkpO1xuICBlbC5wbGFpbiA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBwcmVwZW5kTW9kaWZpZXJNYXJrZXIgKHN5bWJvbCwgbmFtZSwgZHluYW1pYykge1xuICByZXR1cm4gZHluYW1pY1xuICAgID8gKFwiX3AoXCIgKyBuYW1lICsgXCIsXFxcIlwiICsgc3ltYm9sICsgXCJcXFwiKVwiKVxuICAgIDogc3ltYm9sICsgbmFtZSAvLyBtYXJrIHRoZSBldmVudCBhcyBjYXB0dXJlZFxufVxuXG5mdW5jdGlvbiBhZGRIYW5kbGVyIChcbiAgZWwsXG4gIG5hbWUsXG4gIHZhbHVlLFxuICBtb2RpZmllcnMsXG4gIGltcG9ydGFudCxcbiAgd2FybixcbiAgcmFuZ2UsXG4gIGR5bmFtaWNcbikge1xuICBtb2RpZmllcnMgPSBtb2RpZmllcnMgfHwgZW1wdHlPYmplY3Q7XG4gIC8vIHdhcm4gcHJldmVudCBhbmQgcGFzc2l2ZSBtb2RpZmllclxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKFxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybiAmJlxuICAgIG1vZGlmaWVycy5wcmV2ZW50ICYmIG1vZGlmaWVycy5wYXNzaXZlXG4gICkge1xuICAgIHdhcm4oXG4gICAgICAncGFzc2l2ZSBhbmQgcHJldmVudCBjYW5cXCd0IGJlIHVzZWQgdG9nZXRoZXIuICcgK1xuICAgICAgJ1Bhc3NpdmUgaGFuZGxlciBjYW5cXCd0IHByZXZlbnQgZGVmYXVsdCBldmVudC4nLFxuICAgICAgcmFuZ2VcbiAgICApO1xuICB9XG5cbiAgLy8gbm9ybWFsaXplIGNsaWNrLnJpZ2h0IGFuZCBjbGljay5taWRkbGUgc2luY2UgdGhleSBkb24ndCBhY3R1YWxseSBmaXJlXG4gIC8vIHRoaXMgaXMgdGVjaG5pY2FsbHkgYnJvd3Nlci1zcGVjaWZpYywgYnV0IGF0IGxlYXN0IGZvciBub3cgYnJvd3NlcnMgYXJlXG4gIC8vIHRoZSBvbmx5IHRhcmdldCBlbnZzIHRoYXQgaGF2ZSByaWdodC9taWRkbGUgY2xpY2tzLlxuICBpZiAobW9kaWZpZXJzLnJpZ2h0KSB7XG4gICAgaWYgKGR5bmFtaWMpIHtcbiAgICAgIG5hbWUgPSBcIihcIiArIG5hbWUgKyBcIik9PT0nY2xpY2snPydjb250ZXh0bWVudSc6KFwiICsgbmFtZSArIFwiKVwiO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ2NsaWNrJykge1xuICAgICAgbmFtZSA9ICdjb250ZXh0bWVudSc7XG4gICAgICBkZWxldGUgbW9kaWZpZXJzLnJpZ2h0O1xuICAgIH1cbiAgfSBlbHNlIGlmIChtb2RpZmllcnMubWlkZGxlKSB7XG4gICAgaWYgKGR5bmFtaWMpIHtcbiAgICAgIG5hbWUgPSBcIihcIiArIG5hbWUgKyBcIik9PT0nY2xpY2snPydtb3VzZXVwJzooXCIgKyBuYW1lICsgXCIpXCI7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAnY2xpY2snKSB7XG4gICAgICBuYW1lID0gJ21vdXNldXAnO1xuICAgIH1cbiAgfVxuXG4gIC8vIGNoZWNrIGNhcHR1cmUgbW9kaWZpZXJcbiAgaWYgKG1vZGlmaWVycy5jYXB0dXJlKSB7XG4gICAgZGVsZXRlIG1vZGlmaWVycy5jYXB0dXJlO1xuICAgIG5hbWUgPSBwcmVwZW5kTW9kaWZpZXJNYXJrZXIoJyEnLCBuYW1lLCBkeW5hbWljKTtcbiAgfVxuICBpZiAobW9kaWZpZXJzLm9uY2UpIHtcbiAgICBkZWxldGUgbW9kaWZpZXJzLm9uY2U7XG4gICAgbmFtZSA9IHByZXBlbmRNb2RpZmllck1hcmtlcignficsIG5hbWUsIGR5bmFtaWMpO1xuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAobW9kaWZpZXJzLnBhc3NpdmUpIHtcbiAgICBkZWxldGUgbW9kaWZpZXJzLnBhc3NpdmU7XG4gICAgbmFtZSA9IHByZXBlbmRNb2RpZmllck1hcmtlcignJicsIG5hbWUsIGR5bmFtaWMpO1xuICB9XG5cbiAgdmFyIGV2ZW50cztcbiAgaWYgKG1vZGlmaWVycy5uYXRpdmUpIHtcbiAgICBkZWxldGUgbW9kaWZpZXJzLm5hdGl2ZTtcbiAgICBldmVudHMgPSBlbC5uYXRpdmVFdmVudHMgfHwgKGVsLm5hdGl2ZUV2ZW50cyA9IHt9KTtcbiAgfSBlbHNlIHtcbiAgICBldmVudHMgPSBlbC5ldmVudHMgfHwgKGVsLmV2ZW50cyA9IHt9KTtcbiAgfVxuXG4gIHZhciBuZXdIYW5kbGVyID0gcmFuZ2VTZXRJdGVtKHsgdmFsdWU6IHZhbHVlLnRyaW0oKSwgZHluYW1pYzogZHluYW1pYyB9LCByYW5nZSk7XG4gIGlmIChtb2RpZmllcnMgIT09IGVtcHR5T2JqZWN0KSB7XG4gICAgbmV3SGFuZGxlci5tb2RpZmllcnMgPSBtb2RpZmllcnM7XG4gIH1cblxuICB2YXIgaGFuZGxlcnMgPSBldmVudHNbbmFtZV07XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoQXJyYXkuaXNBcnJheShoYW5kbGVycykpIHtcbiAgICBpbXBvcnRhbnQgPyBoYW5kbGVycy51bnNoaWZ0KG5ld0hhbmRsZXIpIDogaGFuZGxlcnMucHVzaChuZXdIYW5kbGVyKTtcbiAgfSBlbHNlIGlmIChoYW5kbGVycykge1xuICAgIGV2ZW50c1tuYW1lXSA9IGltcG9ydGFudCA/IFtuZXdIYW5kbGVyLCBoYW5kbGVyc10gOiBbaGFuZGxlcnMsIG5ld0hhbmRsZXJdO1xuICB9IGVsc2Uge1xuICAgIGV2ZW50c1tuYW1lXSA9IG5ld0hhbmRsZXI7XG4gIH1cblxuICBlbC5wbGFpbiA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBnZXRSYXdCaW5kaW5nQXR0ciAoXG4gIGVsLFxuICBuYW1lXG4pIHtcbiAgcmV0dXJuIGVsLnJhd0F0dHJzTWFwWyc6JyArIG5hbWVdIHx8XG4gICAgZWwucmF3QXR0cnNNYXBbJ3YtYmluZDonICsgbmFtZV0gfHxcbiAgICBlbC5yYXdBdHRyc01hcFtuYW1lXVxufVxuXG5mdW5jdGlvbiBnZXRCaW5kaW5nQXR0ciAoXG4gIGVsLFxuICBuYW1lLFxuICBnZXRTdGF0aWNcbikge1xuICB2YXIgZHluYW1pY1ZhbHVlID1cbiAgICBnZXRBbmRSZW1vdmVBdHRyKGVsLCAnOicgKyBuYW1lKSB8fFxuICAgIGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWJpbmQ6JyArIG5hbWUpO1xuICBpZiAoZHluYW1pY1ZhbHVlICE9IG51bGwpIHtcbiAgICByZXR1cm4gcGFyc2VGaWx0ZXJzKGR5bmFtaWNWYWx1ZSlcbiAgfSBlbHNlIGlmIChnZXRTdGF0aWMgIT09IGZhbHNlKSB7XG4gICAgdmFyIHN0YXRpY1ZhbHVlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgbmFtZSk7XG4gICAgaWYgKHN0YXRpY1ZhbHVlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShzdGF0aWNWYWx1ZSlcbiAgICB9XG4gIH1cbn1cblxuLy8gbm90ZTogdGhpcyBvbmx5IHJlbW92ZXMgdGhlIGF0dHIgZnJvbSB0aGUgQXJyYXkgKGF0dHJzTGlzdCkgc28gdGhhdCBpdFxuLy8gZG9lc24ndCBnZXQgcHJvY2Vzc2VkIGJ5IHByb2Nlc3NBdHRycy5cbi8vIEJ5IGRlZmF1bHQgaXQgZG9lcyBOT1QgcmVtb3ZlIGl0IGZyb20gdGhlIG1hcCAoYXR0cnNNYXApIGJlY2F1c2UgdGhlIG1hcCBpc1xuLy8gbmVlZGVkIGR1cmluZyBjb2RlZ2VuLlxuZnVuY3Rpb24gZ2V0QW5kUmVtb3ZlQXR0ciAoXG4gIGVsLFxuICBuYW1lLFxuICByZW1vdmVGcm9tTWFwXG4pIHtcbiAgdmFyIHZhbDtcbiAgaWYgKCh2YWwgPSBlbC5hdHRyc01hcFtuYW1lXSkgIT0gbnVsbCkge1xuICAgIHZhciBsaXN0ID0gZWwuYXR0cnNMaXN0O1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gbGlzdC5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmIChsaXN0W2ldLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgbGlzdC5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChyZW1vdmVGcm9tTWFwKSB7XG4gICAgZGVsZXRlIGVsLmF0dHJzTWFwW25hbWVdO1xuICB9XG4gIHJldHVybiB2YWxcbn1cblxuZnVuY3Rpb24gZ2V0QW5kUmVtb3ZlQXR0ckJ5UmVnZXggKFxuICBlbCxcbiAgbmFtZVxuKSB7XG4gIHZhciBsaXN0ID0gZWwuYXR0cnNMaXN0O1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGxpc3QubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGF0dHIgPSBsaXN0W2ldO1xuICAgIGlmIChuYW1lLnRlc3QoYXR0ci5uYW1lKSkge1xuICAgICAgbGlzdC5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gYXR0clxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByYW5nZVNldEl0ZW0gKFxuICBpdGVtLFxuICByYW5nZVxuKSB7XG4gIGlmIChyYW5nZSkge1xuICAgIGlmIChyYW5nZS5zdGFydCAhPSBudWxsKSB7XG4gICAgICBpdGVtLnN0YXJ0ID0gcmFuZ2Uuc3RhcnQ7XG4gICAgfVxuICAgIGlmIChyYW5nZS5lbmQgIT0gbnVsbCkge1xuICAgICAgaXRlbS5lbmQgPSByYW5nZS5lbmQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBpdGVtXG59XG5cbi8qICAqL1xuXG4vKipcbiAqIENyb3NzLXBsYXRmb3JtIGNvZGUgZ2VuZXJhdGlvbiBmb3IgY29tcG9uZW50IHYtbW9kZWxcbiAqL1xuZnVuY3Rpb24gZ2VuQ29tcG9uZW50TW9kZWwgKFxuICBlbCxcbiAgdmFsdWUsXG4gIG1vZGlmaWVyc1xuKSB7XG4gIHZhciByZWYgPSBtb2RpZmllcnMgfHwge307XG4gIHZhciBudW1iZXIgPSByZWYubnVtYmVyO1xuICB2YXIgdHJpbSA9IHJlZi50cmltO1xuXG4gIHZhciBiYXNlVmFsdWVFeHByZXNzaW9uID0gJyQkdic7XG4gIHZhciB2YWx1ZUV4cHJlc3Npb24gPSBiYXNlVmFsdWVFeHByZXNzaW9uO1xuICBpZiAodHJpbSkge1xuICAgIHZhbHVlRXhwcmVzc2lvbiA9XG4gICAgICBcIih0eXBlb2YgXCIgKyBiYXNlVmFsdWVFeHByZXNzaW9uICsgXCIgPT09ICdzdHJpbmcnXCIgK1xuICAgICAgXCI/IFwiICsgYmFzZVZhbHVlRXhwcmVzc2lvbiArIFwiLnRyaW0oKVwiICtcbiAgICAgIFwiOiBcIiArIGJhc2VWYWx1ZUV4cHJlc3Npb24gKyBcIilcIjtcbiAgfVxuICBpZiAobnVtYmVyKSB7XG4gICAgdmFsdWVFeHByZXNzaW9uID0gXCJfbihcIiArIHZhbHVlRXhwcmVzc2lvbiArIFwiKVwiO1xuICB9XG4gIHZhciBhc3NpZ25tZW50ID0gZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIHZhbHVlRXhwcmVzc2lvbik7XG5cbiAgZWwubW9kZWwgPSB7XG4gICAgdmFsdWU6IChcIihcIiArIHZhbHVlICsgXCIpXCIpLFxuICAgIGV4cHJlc3Npb246IEpTT04uc3RyaW5naWZ5KHZhbHVlKSxcbiAgICBjYWxsYmFjazogKFwiZnVuY3Rpb24gKFwiICsgYmFzZVZhbHVlRXhwcmVzc2lvbiArIFwiKSB7XCIgKyBhc3NpZ25tZW50ICsgXCJ9XCIpXG4gIH07XG59XG5cbi8qKlxuICogQ3Jvc3MtcGxhdGZvcm0gY29kZWdlbiBoZWxwZXIgZm9yIGdlbmVyYXRpbmcgdi1tb2RlbCB2YWx1ZSBhc3NpZ25tZW50IGNvZGUuXG4gKi9cbmZ1bmN0aW9uIGdlbkFzc2lnbm1lbnRDb2RlIChcbiAgdmFsdWUsXG4gIGFzc2lnbm1lbnRcbikge1xuICB2YXIgcmVzID0gcGFyc2VNb2RlbCh2YWx1ZSk7XG4gIGlmIChyZXMua2V5ID09PSBudWxsKSB7XG4gICAgcmV0dXJuICh2YWx1ZSArIFwiPVwiICsgYXNzaWdubWVudClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKFwiJHNldChcIiArIChyZXMuZXhwKSArIFwiLCBcIiArIChyZXMua2V5KSArIFwiLCBcIiArIGFzc2lnbm1lbnQgKyBcIilcIilcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlIGEgdi1tb2RlbCBleHByZXNzaW9uIGludG8gYSBiYXNlIHBhdGggYW5kIGEgZmluYWwga2V5IHNlZ21lbnQuXG4gKiBIYW5kbGVzIGJvdGggZG90LXBhdGggYW5kIHBvc3NpYmxlIHNxdWFyZSBicmFja2V0cy5cbiAqXG4gKiBQb3NzaWJsZSBjYXNlczpcbiAqXG4gKiAtIHRlc3RcbiAqIC0gdGVzdFtrZXldXG4gKiAtIHRlc3RbdGVzdDFba2V5XV1cbiAqIC0gdGVzdFtcImFcIl1ba2V5XVxuICogLSB4eHgudGVzdFthW2FdLnRlc3QxW2tleV1dXG4gKiAtIHRlc3QueHh4LmFbXCJhc2FcIl1bdGVzdDFba2V5XV1cbiAqXG4gKi9cblxudmFyIGxlbiwgc3RyLCBjaHIsIGluZGV4JDEsIGV4cHJlc3Npb25Qb3MsIGV4cHJlc3Npb25FbmRQb3M7XG5cblxuXG5mdW5jdGlvbiBwYXJzZU1vZGVsICh2YWwpIHtcbiAgLy8gRml4IGh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy92dWUvcHVsbC83NzMwXG4gIC8vIGFsbG93IHYtbW9kZWw9XCJvYmoudmFsIFwiICh0cmFpbGluZyB3aGl0ZXNwYWNlKVxuICB2YWwgPSB2YWwudHJpbSgpO1xuICBsZW4gPSB2YWwubGVuZ3RoO1xuXG4gIGlmICh2YWwuaW5kZXhPZignWycpIDwgMCB8fCB2YWwubGFzdEluZGV4T2YoJ10nKSA8IGxlbiAtIDEpIHtcbiAgICBpbmRleCQxID0gdmFsLmxhc3RJbmRleE9mKCcuJyk7XG4gICAgaWYgKGluZGV4JDEgPiAtMSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZXhwOiB2YWwuc2xpY2UoMCwgaW5kZXgkMSksXG4gICAgICAgIGtleTogJ1wiJyArIHZhbC5zbGljZShpbmRleCQxICsgMSkgKyAnXCInXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGV4cDogdmFsLFxuICAgICAgICBrZXk6IG51bGxcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdHIgPSB2YWw7XG4gIGluZGV4JDEgPSBleHByZXNzaW9uUG9zID0gZXhwcmVzc2lvbkVuZFBvcyA9IDA7XG5cbiAgd2hpbGUgKCFlb2YoKSkge1xuICAgIGNociA9IG5leHQoKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoaXNTdHJpbmdTdGFydChjaHIpKSB7XG4gICAgICBwYXJzZVN0cmluZyhjaHIpO1xuICAgIH0gZWxzZSBpZiAoY2hyID09PSAweDVCKSB7XG4gICAgICBwYXJzZUJyYWNrZXQoY2hyKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGV4cDogdmFsLnNsaWNlKDAsIGV4cHJlc3Npb25Qb3MpLFxuICAgIGtleTogdmFsLnNsaWNlKGV4cHJlc3Npb25Qb3MgKyAxLCBleHByZXNzaW9uRW5kUG9zKVxuICB9XG59XG5cbmZ1bmN0aW9uIG5leHQgKCkge1xuICByZXR1cm4gc3RyLmNoYXJDb2RlQXQoKytpbmRleCQxKVxufVxuXG5mdW5jdGlvbiBlb2YgKCkge1xuICByZXR1cm4gaW5kZXgkMSA+PSBsZW5cbn1cblxuZnVuY3Rpb24gaXNTdHJpbmdTdGFydCAoY2hyKSB7XG4gIHJldHVybiBjaHIgPT09IDB4MjIgfHwgY2hyID09PSAweDI3XG59XG5cbmZ1bmN0aW9uIHBhcnNlQnJhY2tldCAoY2hyKSB7XG4gIHZhciBpbkJyYWNrZXQgPSAxO1xuICBleHByZXNzaW9uUG9zID0gaW5kZXgkMTtcbiAgd2hpbGUgKCFlb2YoKSkge1xuICAgIGNociA9IG5leHQoKTtcbiAgICBpZiAoaXNTdHJpbmdTdGFydChjaHIpKSB7XG4gICAgICBwYXJzZVN0cmluZyhjaHIpO1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKGNociA9PT0gMHg1QikgeyBpbkJyYWNrZXQrKzsgfVxuICAgIGlmIChjaHIgPT09IDB4NUQpIHsgaW5CcmFja2V0LS07IH1cbiAgICBpZiAoaW5CcmFja2V0ID09PSAwKSB7XG4gICAgICBleHByZXNzaW9uRW5kUG9zID0gaW5kZXgkMTtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlU3RyaW5nIChjaHIpIHtcbiAgdmFyIHN0cmluZ1F1b3RlID0gY2hyO1xuICB3aGlsZSAoIWVvZigpKSB7XG4gICAgY2hyID0gbmV4dCgpO1xuICAgIGlmIChjaHIgPT09IHN0cmluZ1F1b3RlKSB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIHdhcm4kMTtcblxuLy8gaW4gc29tZSBjYXNlcywgdGhlIGV2ZW50IHVzZWQgaGFzIHRvIGJlIGRldGVybWluZWQgYXQgcnVudGltZVxuLy8gc28gd2UgdXNlZCBzb21lIHJlc2VydmVkIHRva2VucyBkdXJpbmcgY29tcGlsZS5cbnZhciBSQU5HRV9UT0tFTiA9ICdfX3InO1xudmFyIENIRUNLQk9YX1JBRElPX1RPS0VOID0gJ19fYyc7XG5cbmZ1bmN0aW9uIG1vZGVsIChcbiAgZWwsXG4gIGRpcixcbiAgX3dhcm5cbikge1xuICB3YXJuJDEgPSBfd2FybjtcbiAgdmFyIHZhbHVlID0gZGlyLnZhbHVlO1xuICB2YXIgbW9kaWZpZXJzID0gZGlyLm1vZGlmaWVycztcbiAgdmFyIHRhZyA9IGVsLnRhZztcbiAgdmFyIHR5cGUgPSBlbC5hdHRyc01hcC50eXBlO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gaW5wdXRzIHdpdGggdHlwZT1cImZpbGVcIiBhcmUgcmVhZCBvbmx5IGFuZCBzZXR0aW5nIHRoZSBpbnB1dCdzXG4gICAgLy8gdmFsdWUgd2lsbCB0aHJvdyBhbiBlcnJvci5cbiAgICBpZiAodGFnID09PSAnaW5wdXQnICYmIHR5cGUgPT09ICdmaWxlJykge1xuICAgICAgd2FybiQxKFxuICAgICAgICBcIjxcIiArIChlbC50YWcpICsgXCIgdi1tb2RlbD1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIiB0eXBlPVxcXCJmaWxlXFxcIj46XFxuXCIgK1xuICAgICAgICBcIkZpbGUgaW5wdXRzIGFyZSByZWFkIG9ubHkuIFVzZSBhIHYtb246Y2hhbmdlIGxpc3RlbmVyIGluc3RlYWQuXCIsXG4gICAgICAgIGVsLnJhd0F0dHJzTWFwWyd2LW1vZGVsJ11cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGVsLmNvbXBvbmVudCkge1xuICAgIGdlbkNvbXBvbmVudE1vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgICAvLyBjb21wb25lbnQgdi1tb2RlbCBkb2Vzbid0IG5lZWQgZXh0cmEgcnVudGltZVxuICAgIHJldHVybiBmYWxzZVxuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3NlbGVjdCcpIHtcbiAgICBnZW5TZWxlY3QoZWwsIHZhbHVlLCBtb2RpZmllcnMpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2lucHV0JyAmJiB0eXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgZ2VuQ2hlY2tib3hNb2RlbChlbCwgdmFsdWUsIG1vZGlmaWVycyk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnaW5wdXQnICYmIHR5cGUgPT09ICdyYWRpbycpIHtcbiAgICBnZW5SYWRpb01vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdpbnB1dCcgfHwgdGFnID09PSAndGV4dGFyZWEnKSB7XG4gICAgZ2VuRGVmYXVsdE1vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgfSBlbHNlIGlmICghY29uZmlnLmlzUmVzZXJ2ZWRUYWcodGFnKSkge1xuICAgIGdlbkNvbXBvbmVudE1vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgICAvLyBjb21wb25lbnQgdi1tb2RlbCBkb2Vzbid0IG5lZWQgZXh0cmEgcnVudGltZVxuICAgIHJldHVybiBmYWxzZVxuICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB3YXJuJDEoXG4gICAgICBcIjxcIiArIChlbC50YWcpICsgXCIgdi1tb2RlbD1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIj46IFwiICtcbiAgICAgIFwidi1tb2RlbCBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgZWxlbWVudCB0eXBlLiBcIiArXG4gICAgICAnSWYgeW91IGFyZSB3b3JraW5nIHdpdGggY29udGVudGVkaXRhYmxlLCBpdFxcJ3MgcmVjb21tZW5kZWQgdG8gJyArXG4gICAgICAnd3JhcCBhIGxpYnJhcnkgZGVkaWNhdGVkIGZvciB0aGF0IHB1cnBvc2UgaW5zaWRlIGEgY3VzdG9tIGNvbXBvbmVudC4nLFxuICAgICAgZWwucmF3QXR0cnNNYXBbJ3YtbW9kZWwnXVxuICAgICk7XG4gIH1cblxuICAvLyBlbnN1cmUgcnVudGltZSBkaXJlY3RpdmUgbWV0YWRhdGFcbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gZ2VuQ2hlY2tib3hNb2RlbCAoXG4gIGVsLFxuICB2YWx1ZSxcbiAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9IG1vZGlmaWVycyAmJiBtb2RpZmllcnMubnVtYmVyO1xuICB2YXIgdmFsdWVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICd2YWx1ZScpIHx8ICdudWxsJztcbiAgdmFyIHRydWVWYWx1ZUJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3RydWUtdmFsdWUnKSB8fCAndHJ1ZSc7XG4gIHZhciBmYWxzZVZhbHVlQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAnZmFsc2UtdmFsdWUnKSB8fCAnZmFsc2UnO1xuICBhZGRQcm9wKGVsLCAnY2hlY2tlZCcsXG4gICAgXCJBcnJheS5pc0FycmF5KFwiICsgdmFsdWUgKyBcIilcIiArXG4gICAgXCI/X2koXCIgKyB2YWx1ZSArIFwiLFwiICsgdmFsdWVCaW5kaW5nICsgXCIpPi0xXCIgKyAoXG4gICAgICB0cnVlVmFsdWVCaW5kaW5nID09PSAndHJ1ZSdcbiAgICAgICAgPyAoXCI6KFwiICsgdmFsdWUgKyBcIilcIilcbiAgICAgICAgOiAoXCI6X3EoXCIgKyB2YWx1ZSArIFwiLFwiICsgdHJ1ZVZhbHVlQmluZGluZyArIFwiKVwiKVxuICAgIClcbiAgKTtcbiAgYWRkSGFuZGxlcihlbCwgJ2NoYW5nZScsXG4gICAgXCJ2YXIgJCRhPVwiICsgdmFsdWUgKyBcIixcIiArXG4gICAgICAgICckJGVsPSRldmVudC50YXJnZXQsJyArXG4gICAgICAgIFwiJCRjPSQkZWwuY2hlY2tlZD8oXCIgKyB0cnVlVmFsdWVCaW5kaW5nICsgXCIpOihcIiArIGZhbHNlVmFsdWVCaW5kaW5nICsgXCIpO1wiICtcbiAgICAnaWYoQXJyYXkuaXNBcnJheSgkJGEpKXsnICtcbiAgICAgIFwidmFyICQkdj1cIiArIChudW1iZXIgPyAnX24oJyArIHZhbHVlQmluZGluZyArICcpJyA6IHZhbHVlQmluZGluZykgKyBcIixcIiArXG4gICAgICAgICAgJyQkaT1faSgkJGEsJCR2KTsnICtcbiAgICAgIFwiaWYoJCRlbC5jaGVja2VkKXskJGk8MCYmKFwiICsgKGdlbkFzc2lnbm1lbnRDb2RlKHZhbHVlLCAnJCRhLmNvbmNhdChbJCR2XSknKSkgKyBcIil9XCIgK1xuICAgICAgXCJlbHNleyQkaT4tMSYmKFwiICsgKGdlbkFzc2lnbm1lbnRDb2RlKHZhbHVlLCAnJCRhLnNsaWNlKDAsJCRpKS5jb25jYXQoJCRhLnNsaWNlKCQkaSsxKSknKSkgKyBcIil9XCIgK1xuICAgIFwifWVsc2V7XCIgKyAoZ2VuQXNzaWdubWVudENvZGUodmFsdWUsICckJGMnKSkgKyBcIn1cIixcbiAgICBudWxsLCB0cnVlXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdlblJhZGlvTW9kZWwgKFxuICBlbCxcbiAgdmFsdWUsXG4gIG1vZGlmaWVyc1xuKSB7XG4gIHZhciBudW1iZXIgPSBtb2RpZmllcnMgJiYgbW9kaWZpZXJzLm51bWJlcjtcbiAgdmFyIHZhbHVlQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAndmFsdWUnKSB8fCAnbnVsbCc7XG4gIHZhbHVlQmluZGluZyA9IG51bWJlciA/IChcIl9uKFwiICsgdmFsdWVCaW5kaW5nICsgXCIpXCIpIDogdmFsdWVCaW5kaW5nO1xuICBhZGRQcm9wKGVsLCAnY2hlY2tlZCcsIChcIl9xKFwiICsgdmFsdWUgKyBcIixcIiArIHZhbHVlQmluZGluZyArIFwiKVwiKSk7XG4gIGFkZEhhbmRsZXIoZWwsICdjaGFuZ2UnLCBnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgdmFsdWVCaW5kaW5nKSwgbnVsbCwgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGdlblNlbGVjdCAoXG4gIGVsLFxuICB2YWx1ZSxcbiAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9IG1vZGlmaWVycyAmJiBtb2RpZmllcnMubnVtYmVyO1xuICB2YXIgc2VsZWN0ZWRWYWwgPSBcIkFycmF5LnByb3RvdHlwZS5maWx0ZXJcIiArXG4gICAgXCIuY2FsbCgkZXZlbnQudGFyZ2V0Lm9wdGlvbnMsZnVuY3Rpb24obyl7cmV0dXJuIG8uc2VsZWN0ZWR9KVwiICtcbiAgICBcIi5tYXAoZnVuY3Rpb24obyl7dmFyIHZhbCA9IFxcXCJfdmFsdWVcXFwiIGluIG8gPyBvLl92YWx1ZSA6IG8udmFsdWU7XCIgK1xuICAgIFwicmV0dXJuIFwiICsgKG51bWJlciA/ICdfbih2YWwpJyA6ICd2YWwnKSArIFwifSlcIjtcblxuICB2YXIgYXNzaWdubWVudCA9ICckZXZlbnQudGFyZ2V0Lm11bHRpcGxlID8gJCRzZWxlY3RlZFZhbCA6ICQkc2VsZWN0ZWRWYWxbMF0nO1xuICB2YXIgY29kZSA9IFwidmFyICQkc2VsZWN0ZWRWYWwgPSBcIiArIHNlbGVjdGVkVmFsICsgXCI7XCI7XG4gIGNvZGUgPSBjb2RlICsgXCIgXCIgKyAoZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIGFzc2lnbm1lbnQpKTtcbiAgYWRkSGFuZGxlcihlbCwgJ2NoYW5nZScsIGNvZGUsIG51bGwsIHRydWUpO1xufVxuXG5mdW5jdGlvbiBnZW5EZWZhdWx0TW9kZWwgKFxuICBlbCxcbiAgdmFsdWUsXG4gIG1vZGlmaWVyc1xuKSB7XG4gIHZhciB0eXBlID0gZWwuYXR0cnNNYXAudHlwZTtcblxuICAvLyB3YXJuIGlmIHYtYmluZDp2YWx1ZSBjb25mbGljdHMgd2l0aCB2LW1vZGVsXG4gIC8vIGV4Y2VwdCBmb3IgaW5wdXRzIHdpdGggdi1iaW5kOnR5cGVcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YXIgdmFsdWUkMSA9IGVsLmF0dHJzTWFwWyd2LWJpbmQ6dmFsdWUnXSB8fCBlbC5hdHRyc01hcFsnOnZhbHVlJ107XG4gICAgdmFyIHR5cGVCaW5kaW5nID0gZWwuYXR0cnNNYXBbJ3YtYmluZDp0eXBlJ10gfHwgZWwuYXR0cnNNYXBbJzp0eXBlJ107XG4gICAgaWYgKHZhbHVlJDEgJiYgIXR5cGVCaW5kaW5nKSB7XG4gICAgICB2YXIgYmluZGluZyA9IGVsLmF0dHJzTWFwWyd2LWJpbmQ6dmFsdWUnXSA/ICd2LWJpbmQ6dmFsdWUnIDogJzp2YWx1ZSc7XG4gICAgICB3YXJuJDEoXG4gICAgICAgIGJpbmRpbmcgKyBcIj1cXFwiXCIgKyB2YWx1ZSQxICsgXCJcXFwiIGNvbmZsaWN0cyB3aXRoIHYtbW9kZWwgb24gdGhlIHNhbWUgZWxlbWVudCBcIiArXG4gICAgICAgICdiZWNhdXNlIHRoZSBsYXR0ZXIgYWxyZWFkeSBleHBhbmRzIHRvIGEgdmFsdWUgYmluZGluZyBpbnRlcm5hbGx5JyxcbiAgICAgICAgZWwucmF3QXR0cnNNYXBbYmluZGluZ11cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdmFyIHJlZiA9IG1vZGlmaWVycyB8fCB7fTtcbiAgdmFyIGxhenkgPSByZWYubGF6eTtcbiAgdmFyIG51bWJlciA9IHJlZi5udW1iZXI7XG4gIHZhciB0cmltID0gcmVmLnRyaW07XG4gIHZhciBuZWVkQ29tcG9zaXRpb25HdWFyZCA9ICFsYXp5ICYmIHR5cGUgIT09ICdyYW5nZSc7XG4gIHZhciBldmVudCA9IGxhenlcbiAgICA/ICdjaGFuZ2UnXG4gICAgOiB0eXBlID09PSAncmFuZ2UnXG4gICAgICA/IFJBTkdFX1RPS0VOXG4gICAgICA6ICdpbnB1dCc7XG5cbiAgdmFyIHZhbHVlRXhwcmVzc2lvbiA9ICckZXZlbnQudGFyZ2V0LnZhbHVlJztcbiAgaWYgKHRyaW0pIHtcbiAgICB2YWx1ZUV4cHJlc3Npb24gPSBcIiRldmVudC50YXJnZXQudmFsdWUudHJpbSgpXCI7XG4gIH1cbiAgaWYgKG51bWJlcikge1xuICAgIHZhbHVlRXhwcmVzc2lvbiA9IFwiX24oXCIgKyB2YWx1ZUV4cHJlc3Npb24gKyBcIilcIjtcbiAgfVxuXG4gIHZhciBjb2RlID0gZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIHZhbHVlRXhwcmVzc2lvbik7XG4gIGlmIChuZWVkQ29tcG9zaXRpb25HdWFyZCkge1xuICAgIGNvZGUgPSBcImlmKCRldmVudC50YXJnZXQuY29tcG9zaW5nKXJldHVybjtcIiArIGNvZGU7XG4gIH1cblxuICBhZGRQcm9wKGVsLCAndmFsdWUnLCAoXCIoXCIgKyB2YWx1ZSArIFwiKVwiKSk7XG4gIGFkZEhhbmRsZXIoZWwsIGV2ZW50LCBjb2RlLCBudWxsLCB0cnVlKTtcbiAgaWYgKHRyaW0gfHwgbnVtYmVyKSB7XG4gICAgYWRkSGFuZGxlcihlbCwgJ2JsdXInLCAnJGZvcmNlVXBkYXRlKCknKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuLy8gbm9ybWFsaXplIHYtbW9kZWwgZXZlbnQgdG9rZW5zIHRoYXQgY2FuIG9ubHkgYmUgZGV0ZXJtaW5lZCBhdCBydW50aW1lLlxuLy8gaXQncyBpbXBvcnRhbnQgdG8gcGxhY2UgdGhlIGV2ZW50IGFzIHRoZSBmaXJzdCBpbiB0aGUgYXJyYXkgYmVjYXVzZVxuLy8gdGhlIHdob2xlIHBvaW50IGlzIGVuc3VyaW5nIHRoZSB2LW1vZGVsIGNhbGxiYWNrIGdldHMgY2FsbGVkIGJlZm9yZVxuLy8gdXNlci1hdHRhY2hlZCBoYW5kbGVycy5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUV2ZW50cyAob24pIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChpc0RlZihvbltSQU5HRV9UT0tFTl0pKSB7XG4gICAgLy8gSUUgaW5wdXRbdHlwZT1yYW5nZV0gb25seSBzdXBwb3J0cyBgY2hhbmdlYCBldmVudFxuICAgIHZhciBldmVudCA9IGlzSUUgPyAnY2hhbmdlJyA6ICdpbnB1dCc7XG4gICAgb25bZXZlbnRdID0gW10uY29uY2F0KG9uW1JBTkdFX1RPS0VOXSwgb25bZXZlbnRdIHx8IFtdKTtcbiAgICBkZWxldGUgb25bUkFOR0VfVE9LRU5dO1xuICB9XG4gIC8vIFRoaXMgd2FzIG9yaWdpbmFsbHkgaW50ZW5kZWQgdG8gZml4ICM0NTIxIGJ1dCBubyBsb25nZXIgbmVjZXNzYXJ5XG4gIC8vIGFmdGVyIDIuNS4gS2VlcGluZyBpdCBmb3IgYmFja3dhcmRzIGNvbXBhdCB3aXRoIGdlbmVyYXRlZCBjb2RlIGZyb20gPCAyLjRcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChpc0RlZihvbltDSEVDS0JPWF9SQURJT19UT0tFTl0pKSB7XG4gICAgb24uY2hhbmdlID0gW10uY29uY2F0KG9uW0NIRUNLQk9YX1JBRElPX1RPS0VOXSwgb24uY2hhbmdlIHx8IFtdKTtcbiAgICBkZWxldGUgb25bQ0hFQ0tCT1hfUkFESU9fVE9LRU5dO1xuICB9XG59XG5cbnZhciB0YXJnZXQkMTtcblxuZnVuY3Rpb24gY3JlYXRlT25jZUhhbmRsZXIkMSAoZXZlbnQsIGhhbmRsZXIsIGNhcHR1cmUpIHtcbiAgdmFyIF90YXJnZXQgPSB0YXJnZXQkMTsgLy8gc2F2ZSBjdXJyZW50IHRhcmdldCBlbGVtZW50IGluIGNsb3N1cmVcbiAgcmV0dXJuIGZ1bmN0aW9uIG9uY2VIYW5kbGVyICgpIHtcbiAgICB2YXIgcmVzID0gaGFuZGxlci5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgIGlmIChyZXMgIT09IG51bGwpIHtcbiAgICAgIHJlbW92ZSQyKGV2ZW50LCBvbmNlSGFuZGxlciwgY2FwdHVyZSwgX3RhcmdldCk7XG4gICAgfVxuICB9XG59XG5cbi8vICM5NDQ2OiBGaXJlZm94IDw9IDUzIChpbiBwYXJ0aWN1bGFyLCBFU1IgNTIpIGhhcyBpbmNvcnJlY3QgRXZlbnQudGltZVN0YW1wXG4vLyBpbXBsZW1lbnRhdGlvbiBhbmQgZG9lcyBub3QgZmlyZSBtaWNyb3Rhc2tzIGluIGJldHdlZW4gZXZlbnQgcHJvcGFnYXRpb24sIHNvXG4vLyBzYWZlIHRvIGV4Y2x1ZGUuXG52YXIgdXNlTWljcm90YXNrRml4ID0gaXNVc2luZ01pY3JvVGFzayAmJiAhKGlzRkYgJiYgTnVtYmVyKGlzRkZbMV0pIDw9IDUzKTtcblxuZnVuY3Rpb24gYWRkJDEgKFxuICBuYW1lLFxuICBoYW5kbGVyLFxuICBjYXB0dXJlLFxuICBwYXNzaXZlXG4pIHtcbiAgLy8gYXN5bmMgZWRnZSBjYXNlICM2NTY2OiBpbm5lciBjbGljayBldmVudCB0cmlnZ2VycyBwYXRjaCwgZXZlbnQgaGFuZGxlclxuICAvLyBhdHRhY2hlZCB0byBvdXRlciBlbGVtZW50IGR1cmluZyBwYXRjaCwgYW5kIHRyaWdnZXJlZCBhZ2Fpbi4gVGhpc1xuICAvLyBoYXBwZW5zIGJlY2F1c2UgYnJvd3NlcnMgZmlyZSBtaWNyb3Rhc2sgdGlja3MgYmV0d2VlbiBldmVudCBwcm9wYWdhdGlvbi5cbiAgLy8gdGhlIHNvbHV0aW9uIGlzIHNpbXBsZTogd2Ugc2F2ZSB0aGUgdGltZXN0YW1wIHdoZW4gYSBoYW5kbGVyIGlzIGF0dGFjaGVkLFxuICAvLyBhbmQgdGhlIGhhbmRsZXIgd291bGQgb25seSBmaXJlIGlmIHRoZSBldmVudCBwYXNzZWQgdG8gaXQgd2FzIGZpcmVkXG4gIC8vIEFGVEVSIGl0IHdhcyBhdHRhY2hlZC5cbiAgaWYgKHVzZU1pY3JvdGFza0ZpeCkge1xuICAgIHZhciBhdHRhY2hlZFRpbWVzdGFtcCA9IGN1cnJlbnRGbHVzaFRpbWVzdGFtcDtcbiAgICB2YXIgb3JpZ2luYWwgPSBoYW5kbGVyO1xuICAgIGhhbmRsZXIgPSBvcmlnaW5hbC5fd3JhcHBlciA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoXG4gICAgICAgIC8vIG5vIGJ1YmJsaW5nLCBzaG91bGQgYWx3YXlzIGZpcmUuXG4gICAgICAgIC8vIHRoaXMgaXMganVzdCBhIHNhZmV0eSBuZXQgaW4gY2FzZSBldmVudC50aW1lU3RhbXAgaXMgdW5yZWxpYWJsZSBpblxuICAgICAgICAvLyBjZXJ0YWluIHdlaXJkIGVudmlyb25tZW50cy4uLlxuICAgICAgICBlLnRhcmdldCA9PT0gZS5jdXJyZW50VGFyZ2V0IHx8XG4gICAgICAgIC8vIGV2ZW50IGlzIGZpcmVkIGFmdGVyIGhhbmRsZXIgYXR0YWNobWVudFxuICAgICAgICBlLnRpbWVTdGFtcCA+PSBhdHRhY2hlZFRpbWVzdGFtcCB8fFxuICAgICAgICAvLyBiYWlsIGZvciBlbnZpcm9ubWVudHMgdGhhdCBoYXZlIGJ1Z2d5IGV2ZW50LnRpbWVTdGFtcCBpbXBsZW1lbnRhdGlvbnNcbiAgICAgICAgLy8gIzk0NjIgaU9TIDkgYnVnOiBldmVudC50aW1lU3RhbXAgaXMgMCBhZnRlciBoaXN0b3J5LnB1c2hTdGF0ZVxuICAgICAgICAvLyAjOTY4MSBRdFdlYkVuZ2luZSBldmVudC50aW1lU3RhbXAgaXMgbmVnYXRpdmUgdmFsdWVcbiAgICAgICAgZS50aW1lU3RhbXAgPD0gMCB8fFxuICAgICAgICAvLyAjOTQ0OCBiYWlsIGlmIGV2ZW50IGlzIGZpcmVkIGluIGFub3RoZXIgZG9jdW1lbnQgaW4gYSBtdWx0aS1wYWdlXG4gICAgICAgIC8vIGVsZWN0cm9uL253LmpzIGFwcCwgc2luY2UgZXZlbnQudGltZVN0YW1wIHdpbGwgYmUgdXNpbmcgYSBkaWZmZXJlbnRcbiAgICAgICAgLy8gc3RhcnRpbmcgcmVmZXJlbmNlXG4gICAgICAgIGUudGFyZ2V0Lm93bmVyRG9jdW1lbnQgIT09IGRvY3VtZW50XG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIHRhcmdldCQxLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgbmFtZSxcbiAgICBoYW5kbGVyLFxuICAgIHN1cHBvcnRzUGFzc2l2ZVxuICAgICAgPyB7IGNhcHR1cmU6IGNhcHR1cmUsIHBhc3NpdmU6IHBhc3NpdmUgfVxuICAgICAgOiBjYXB0dXJlXG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZSQyIChcbiAgbmFtZSxcbiAgaGFuZGxlcixcbiAgY2FwdHVyZSxcbiAgX3RhcmdldFxuKSB7XG4gIChfdGFyZ2V0IHx8IHRhcmdldCQxKS5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgIG5hbWUsXG4gICAgaGFuZGxlci5fd3JhcHBlciB8fCBoYW5kbGVyLFxuICAgIGNhcHR1cmVcbiAgKTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlRE9NTGlzdGVuZXJzIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgaWYgKGlzVW5kZWYob2xkVm5vZGUuZGF0YS5vbikgJiYgaXNVbmRlZih2bm9kZS5kYXRhLm9uKSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBvbiA9IHZub2RlLmRhdGEub24gfHwge307XG4gIHZhciBvbGRPbiA9IG9sZFZub2RlLmRhdGEub24gfHwge307XG4gIHRhcmdldCQxID0gdm5vZGUuZWxtO1xuICBub3JtYWxpemVFdmVudHMob24pO1xuICB1cGRhdGVMaXN0ZW5lcnMob24sIG9sZE9uLCBhZGQkMSwgcmVtb3ZlJDIsIGNyZWF0ZU9uY2VIYW5kbGVyJDEsIHZub2RlLmNvbnRleHQpO1xuICB0YXJnZXQkMSA9IHVuZGVmaW5lZDtcbn1cblxudmFyIGV2ZW50cyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVET01MaXN0ZW5lcnMsXG4gIHVwZGF0ZTogdXBkYXRlRE9NTGlzdGVuZXJzXG59O1xuXG4vKiAgKi9cblxudmFyIHN2Z0NvbnRhaW5lcjtcblxuZnVuY3Rpb24gdXBkYXRlRE9NUHJvcHMgKG9sZFZub2RlLCB2bm9kZSkge1xuICBpZiAoaXNVbmRlZihvbGRWbm9kZS5kYXRhLmRvbVByb3BzKSAmJiBpc1VuZGVmKHZub2RlLmRhdGEuZG9tUHJvcHMpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIGtleSwgY3VyO1xuICB2YXIgZWxtID0gdm5vZGUuZWxtO1xuICB2YXIgb2xkUHJvcHMgPSBvbGRWbm9kZS5kYXRhLmRvbVByb3BzIHx8IHt9O1xuICB2YXIgcHJvcHMgPSB2bm9kZS5kYXRhLmRvbVByb3BzIHx8IHt9O1xuICAvLyBjbG9uZSBvYnNlcnZlZCBvYmplY3RzLCBhcyB0aGUgdXNlciBwcm9iYWJseSB3YW50cyB0byBtdXRhdGUgaXRcbiAgaWYgKGlzRGVmKHByb3BzLl9fb2JfXykpIHtcbiAgICBwcm9wcyA9IHZub2RlLmRhdGEuZG9tUHJvcHMgPSBleHRlbmQoe30sIHByb3BzKTtcbiAgfVxuXG4gIGZvciAoa2V5IGluIG9sZFByb3BzKSB7XG4gICAgaWYgKCEoa2V5IGluIHByb3BzKSkge1xuICAgICAgZWxtW2tleV0gPSAnJztcbiAgICB9XG4gIH1cblxuICBmb3IgKGtleSBpbiBwcm9wcykge1xuICAgIGN1ciA9IHByb3BzW2tleV07XG4gICAgLy8gaWdub3JlIGNoaWxkcmVuIGlmIHRoZSBub2RlIGhhcyB0ZXh0Q29udGVudCBvciBpbm5lckhUTUwsXG4gICAgLy8gYXMgdGhlc2Ugd2lsbCB0aHJvdyBhd2F5IGV4aXN0aW5nIERPTSBub2RlcyBhbmQgY2F1c2UgcmVtb3ZhbCBlcnJvcnNcbiAgICAvLyBvbiBzdWJzZXF1ZW50IHBhdGNoZXMgKCMzMzYwKVxuICAgIGlmIChrZXkgPT09ICd0ZXh0Q29udGVudCcgfHwga2V5ID09PSAnaW5uZXJIVE1MJykge1xuICAgICAgaWYgKHZub2RlLmNoaWxkcmVuKSB7IHZub2RlLmNoaWxkcmVuLmxlbmd0aCA9IDA7IH1cbiAgICAgIGlmIChjdXIgPT09IG9sZFByb3BzW2tleV0pIHsgY29udGludWUgfVxuICAgICAgLy8gIzY2MDEgd29yayBhcm91bmQgQ2hyb21lIHZlcnNpb24gPD0gNTUgYnVnIHdoZXJlIHNpbmdsZSB0ZXh0Tm9kZVxuICAgICAgLy8gcmVwbGFjZWQgYnkgaW5uZXJIVE1ML3RleHRDb250ZW50IHJldGFpbnMgaXRzIHBhcmVudE5vZGUgcHJvcGVydHlcbiAgICAgIGlmIChlbG0uY2hpbGROb2Rlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgZWxtLnJlbW92ZUNoaWxkKGVsbS5jaGlsZE5vZGVzWzBdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoa2V5ID09PSAndmFsdWUnICYmIGVsbS50YWdOYW1lICE9PSAnUFJPR1JFU1MnKSB7XG4gICAgICAvLyBzdG9yZSB2YWx1ZSBhcyBfdmFsdWUgYXMgd2VsbCBzaW5jZVxuICAgICAgLy8gbm9uLXN0cmluZyB2YWx1ZXMgd2lsbCBiZSBzdHJpbmdpZmllZFxuICAgICAgZWxtLl92YWx1ZSA9IGN1cjtcbiAgICAgIC8vIGF2b2lkIHJlc2V0dGluZyBjdXJzb3IgcG9zaXRpb24gd2hlbiB2YWx1ZSBpcyB0aGUgc2FtZVxuICAgICAgdmFyIHN0ckN1ciA9IGlzVW5kZWYoY3VyKSA/ICcnIDogU3RyaW5nKGN1cik7XG4gICAgICBpZiAoc2hvdWxkVXBkYXRlVmFsdWUoZWxtLCBzdHJDdXIpKSB7XG4gICAgICAgIGVsbS52YWx1ZSA9IHN0ckN1cjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2lubmVySFRNTCcgJiYgaXNTVkcoZWxtLnRhZ05hbWUpICYmIGlzVW5kZWYoZWxtLmlubmVySFRNTCkpIHtcbiAgICAgIC8vIElFIGRvZXNuJ3Qgc3VwcG9ydCBpbm5lckhUTUwgZm9yIFNWRyBlbGVtZW50c1xuICAgICAgc3ZnQ29udGFpbmVyID0gc3ZnQ29udGFpbmVyIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgc3ZnQ29udGFpbmVyLmlubmVySFRNTCA9IFwiPHN2Zz5cIiArIGN1ciArIFwiPC9zdmc+XCI7XG4gICAgICB2YXIgc3ZnID0gc3ZnQ29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgICB3aGlsZSAoZWxtLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgZWxtLnJlbW92ZUNoaWxkKGVsbS5maXJzdENoaWxkKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChzdmcuZmlyc3RDaGlsZCkge1xuICAgICAgICBlbG0uYXBwZW5kQ2hpbGQoc3ZnLmZpcnN0Q2hpbGQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICAvLyBza2lwIHRoZSB1cGRhdGUgaWYgb2xkIGFuZCBuZXcgVkRPTSBzdGF0ZSBpcyB0aGUgc2FtZS5cbiAgICAgIC8vIGB2YWx1ZWAgaXMgaGFuZGxlZCBzZXBhcmF0ZWx5IGJlY2F1c2UgdGhlIERPTSB2YWx1ZSBtYXkgYmUgdGVtcG9yYXJpbHlcbiAgICAgIC8vIG91dCBvZiBzeW5jIHdpdGggVkRPTSBzdGF0ZSBkdWUgdG8gZm9jdXMsIGNvbXBvc2l0aW9uIGFuZCBtb2RpZmllcnMuXG4gICAgICAvLyBUaGlzICAjNDUyMSBieSBza2lwcGluZyB0aGUgdW5uZWNlc2FycnkgYGNoZWNrZWRgIHVwZGF0ZS5cbiAgICAgIGN1ciAhPT0gb2xkUHJvcHNba2V5XVxuICAgICkge1xuICAgICAgLy8gc29tZSBwcm9wZXJ0eSB1cGRhdGVzIGNhbiB0aHJvd1xuICAgICAgLy8gZS5nLiBgdmFsdWVgIG9uIDxwcm9ncmVzcz4gdy8gbm9uLWZpbml0ZSB2YWx1ZVxuICAgICAgdHJ5IHtcbiAgICAgICAgZWxtW2tleV0gPSBjdXI7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuICAgIH1cbiAgfVxufVxuXG4vLyBjaGVjayBwbGF0Zm9ybXMvd2ViL3V0aWwvYXR0cnMuanMgYWNjZXB0VmFsdWVcblxuXG5mdW5jdGlvbiBzaG91bGRVcGRhdGVWYWx1ZSAoZWxtLCBjaGVja1ZhbCkge1xuICByZXR1cm4gKCFlbG0uY29tcG9zaW5nICYmIChcbiAgICBlbG0udGFnTmFtZSA9PT0gJ09QVElPTicgfHxcbiAgICBpc05vdEluRm9jdXNBbmREaXJ0eShlbG0sIGNoZWNrVmFsKSB8fFxuICAgIGlzRGlydHlXaXRoTW9kaWZpZXJzKGVsbSwgY2hlY2tWYWwpXG4gICkpXG59XG5cbmZ1bmN0aW9uIGlzTm90SW5Gb2N1c0FuZERpcnR5IChlbG0sIGNoZWNrVmFsKSB7XG4gIC8vIHJldHVybiB0cnVlIHdoZW4gdGV4dGJveCAoLm51bWJlciBhbmQgLnRyaW0pIGxvc2VzIGZvY3VzIGFuZCBpdHMgdmFsdWUgaXNcbiAgLy8gbm90IGVxdWFsIHRvIHRoZSB1cGRhdGVkIHZhbHVlXG4gIHZhciBub3RJbkZvY3VzID0gdHJ1ZTtcbiAgLy8gIzYxNTdcbiAgLy8gd29yayBhcm91bmQgSUUgYnVnIHdoZW4gYWNjZXNzaW5nIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaW4gYW4gaWZyYW1lXG4gIHRyeSB7IG5vdEluRm9jdXMgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBlbG07IH0gY2F0Y2ggKGUpIHt9XG4gIHJldHVybiBub3RJbkZvY3VzICYmIGVsbS52YWx1ZSAhPT0gY2hlY2tWYWxcbn1cblxuZnVuY3Rpb24gaXNEaXJ0eVdpdGhNb2RpZmllcnMgKGVsbSwgbmV3VmFsKSB7XG4gIHZhciB2YWx1ZSA9IGVsbS52YWx1ZTtcbiAgdmFyIG1vZGlmaWVycyA9IGVsbS5fdk1vZGlmaWVyczsgLy8gaW5qZWN0ZWQgYnkgdi1tb2RlbCBydW50aW1lXG4gIGlmIChpc0RlZihtb2RpZmllcnMpKSB7XG4gICAgaWYgKG1vZGlmaWVycy5udW1iZXIpIHtcbiAgICAgIHJldHVybiB0b051bWJlcih2YWx1ZSkgIT09IHRvTnVtYmVyKG5ld1ZhbClcbiAgICB9XG4gICAgaWYgKG1vZGlmaWVycy50cmltKSB7XG4gICAgICByZXR1cm4gdmFsdWUudHJpbSgpICE9PSBuZXdWYWwudHJpbSgpXG4gICAgfVxuICB9XG4gIHJldHVybiB2YWx1ZSAhPT0gbmV3VmFsXG59XG5cbnZhciBkb21Qcm9wcyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVET01Qcm9wcyxcbiAgdXBkYXRlOiB1cGRhdGVET01Qcm9wc1xufTtcblxuLyogICovXG5cbnZhciBwYXJzZVN0eWxlVGV4dCA9IGNhY2hlZChmdW5jdGlvbiAoY3NzVGV4dCkge1xuICB2YXIgcmVzID0ge307XG4gIHZhciBsaXN0RGVsaW1pdGVyID0gLzsoPyFbXihdKlxcKSkvZztcbiAgdmFyIHByb3BlcnR5RGVsaW1pdGVyID0gLzooLispLztcbiAgY3NzVGV4dC5zcGxpdChsaXN0RGVsaW1pdGVyKS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHZhciB0bXAgPSBpdGVtLnNwbGl0KHByb3BlcnR5RGVsaW1pdGVyKTtcbiAgICAgIHRtcC5sZW5ndGggPiAxICYmIChyZXNbdG1wWzBdLnRyaW0oKV0gPSB0bXBbMV0udHJpbSgpKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzXG59KTtcblxuLy8gbWVyZ2Ugc3RhdGljIGFuZCBkeW5hbWljIHN0eWxlIGRhdGEgb24gdGhlIHNhbWUgdm5vZGVcbmZ1bmN0aW9uIG5vcm1hbGl6ZVN0eWxlRGF0YSAoZGF0YSkge1xuICB2YXIgc3R5bGUgPSBub3JtYWxpemVTdHlsZUJpbmRpbmcoZGF0YS5zdHlsZSk7XG4gIC8vIHN0YXRpYyBzdHlsZSBpcyBwcmUtcHJvY2Vzc2VkIGludG8gYW4gb2JqZWN0IGR1cmluZyBjb21waWxhdGlvblxuICAvLyBhbmQgaXMgYWx3YXlzIGEgZnJlc2ggb2JqZWN0LCBzbyBpdCdzIHNhZmUgdG8gbWVyZ2UgaW50byBpdFxuICByZXR1cm4gZGF0YS5zdGF0aWNTdHlsZVxuICAgID8gZXh0ZW5kKGRhdGEuc3RhdGljU3R5bGUsIHN0eWxlKVxuICAgIDogc3R5bGVcbn1cblxuLy8gbm9ybWFsaXplIHBvc3NpYmxlIGFycmF5IC8gc3RyaW5nIHZhbHVlcyBpbnRvIE9iamVjdFxuZnVuY3Rpb24gbm9ybWFsaXplU3R5bGVCaW5kaW5nIChiaW5kaW5nU3R5bGUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYmluZGluZ1N0eWxlKSkge1xuICAgIHJldHVybiB0b09iamVjdChiaW5kaW5nU3R5bGUpXG4gIH1cbiAgaWYgKHR5cGVvZiBiaW5kaW5nU3R5bGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBhcnNlU3R5bGVUZXh0KGJpbmRpbmdTdHlsZSlcbiAgfVxuICByZXR1cm4gYmluZGluZ1N0eWxlXG59XG5cbi8qKlxuICogcGFyZW50IGNvbXBvbmVudCBzdHlsZSBzaG91bGQgYmUgYWZ0ZXIgY2hpbGQnc1xuICogc28gdGhhdCBwYXJlbnQgY29tcG9uZW50J3Mgc3R5bGUgY291bGQgb3ZlcnJpZGUgaXRcbiAqL1xuZnVuY3Rpb24gZ2V0U3R5bGUgKHZub2RlLCBjaGVja0NoaWxkKSB7XG4gIHZhciByZXMgPSB7fTtcbiAgdmFyIHN0eWxlRGF0YTtcblxuICBpZiAoY2hlY2tDaGlsZCkge1xuICAgIHZhciBjaGlsZE5vZGUgPSB2bm9kZTtcbiAgICB3aGlsZSAoY2hpbGROb2RlLmNvbXBvbmVudEluc3RhbmNlKSB7XG4gICAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO1xuICAgICAgaWYgKFxuICAgICAgICBjaGlsZE5vZGUgJiYgY2hpbGROb2RlLmRhdGEgJiZcbiAgICAgICAgKHN0eWxlRGF0YSA9IG5vcm1hbGl6ZVN0eWxlRGF0YShjaGlsZE5vZGUuZGF0YSkpXG4gICAgICApIHtcbiAgICAgICAgZXh0ZW5kKHJlcywgc3R5bGVEYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoKHN0eWxlRGF0YSA9IG5vcm1hbGl6ZVN0eWxlRGF0YSh2bm9kZS5kYXRhKSkpIHtcbiAgICBleHRlbmQocmVzLCBzdHlsZURhdGEpO1xuICB9XG5cbiAgdmFyIHBhcmVudE5vZGUgPSB2bm9kZTtcbiAgd2hpbGUgKChwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5wYXJlbnQpKSB7XG4gICAgaWYgKHBhcmVudE5vZGUuZGF0YSAmJiAoc3R5bGVEYXRhID0gbm9ybWFsaXplU3R5bGVEYXRhKHBhcmVudE5vZGUuZGF0YSkpKSB7XG4gICAgICBleHRlbmQocmVzLCBzdHlsZURhdGEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG52YXIgY3NzVmFyUkUgPSAvXi0tLztcbnZhciBpbXBvcnRhbnRSRSA9IC9cXHMqIWltcG9ydGFudCQvO1xudmFyIHNldFByb3AgPSBmdW5jdGlvbiAoZWwsIG5hbWUsIHZhbCkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGNzc1ZhclJFLnRlc3QobmFtZSkpIHtcbiAgICBlbC5zdHlsZS5zZXRQcm9wZXJ0eShuYW1lLCB2YWwpO1xuICB9IGVsc2UgaWYgKGltcG9ydGFudFJFLnRlc3QodmFsKSkge1xuICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KGh5cGhlbmF0ZShuYW1lKSwgdmFsLnJlcGxhY2UoaW1wb3J0YW50UkUsICcnKSwgJ2ltcG9ydGFudCcpO1xuICB9IGVsc2Uge1xuICAgIHZhciBub3JtYWxpemVkTmFtZSA9IG5vcm1hbGl6ZShuYW1lKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICAvLyBTdXBwb3J0IHZhbHVlcyBhcnJheSBjcmVhdGVkIGJ5IGF1dG9wcmVmaXhlciwgZS5nLlxuICAgICAgLy8ge2Rpc3BsYXk6IFtcIi13ZWJraXQtYm94XCIsIFwiLW1zLWZsZXhib3hcIiwgXCJmbGV4XCJdfVxuICAgICAgLy8gU2V0IHRoZW0gb25lIGJ5IG9uZSwgYW5kIHRoZSBicm93c2VyIHdpbGwgb25seSBzZXQgdGhvc2UgaXQgY2FuIHJlY29nbml6ZVxuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHZhbC5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBlbC5zdHlsZVtub3JtYWxpemVkTmFtZV0gPSB2YWxbaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnN0eWxlW25vcm1hbGl6ZWROYW1lXSA9IHZhbDtcbiAgICB9XG4gIH1cbn07XG5cbnZhciB2ZW5kb3JOYW1lcyA9IFsnV2Via2l0JywgJ01veicsICdtcyddO1xuXG52YXIgZW1wdHlTdHlsZTtcbnZhciBub3JtYWxpemUgPSBjYWNoZWQoZnVuY3Rpb24gKHByb3ApIHtcbiAgZW1wdHlTdHlsZSA9IGVtcHR5U3R5bGUgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykuc3R5bGU7XG4gIHByb3AgPSBjYW1lbGl6ZShwcm9wKTtcbiAgaWYgKHByb3AgIT09ICdmaWx0ZXInICYmIChwcm9wIGluIGVtcHR5U3R5bGUpKSB7XG4gICAgcmV0dXJuIHByb3BcbiAgfVxuICB2YXIgY2FwTmFtZSA9IHByb3AuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwcm9wLnNsaWNlKDEpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZlbmRvck5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5hbWUgPSB2ZW5kb3JOYW1lc1tpXSArIGNhcE5hbWU7XG4gICAgaWYgKG5hbWUgaW4gZW1wdHlTdHlsZSkge1xuICAgICAgcmV0dXJuIG5hbWVcbiAgICB9XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB1cGRhdGVTdHlsZSAob2xkVm5vZGUsIHZub2RlKSB7XG4gIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgdmFyIG9sZERhdGEgPSBvbGRWbm9kZS5kYXRhO1xuXG4gIGlmIChpc1VuZGVmKGRhdGEuc3RhdGljU3R5bGUpICYmIGlzVW5kZWYoZGF0YS5zdHlsZSkgJiZcbiAgICBpc1VuZGVmKG9sZERhdGEuc3RhdGljU3R5bGUpICYmIGlzVW5kZWYob2xkRGF0YS5zdHlsZSlcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgY3VyLCBuYW1lO1xuICB2YXIgZWwgPSB2bm9kZS5lbG07XG4gIHZhciBvbGRTdGF0aWNTdHlsZSA9IG9sZERhdGEuc3RhdGljU3R5bGU7XG4gIHZhciBvbGRTdHlsZUJpbmRpbmcgPSBvbGREYXRhLm5vcm1hbGl6ZWRTdHlsZSB8fCBvbGREYXRhLnN0eWxlIHx8IHt9O1xuXG4gIC8vIGlmIHN0YXRpYyBzdHlsZSBleGlzdHMsIHN0eWxlYmluZGluZyBhbHJlYWR5IG1lcmdlZCBpbnRvIGl0IHdoZW4gZG9pbmcgbm9ybWFsaXplU3R5bGVEYXRhXG4gIHZhciBvbGRTdHlsZSA9IG9sZFN0YXRpY1N0eWxlIHx8IG9sZFN0eWxlQmluZGluZztcblxuICB2YXIgc3R5bGUgPSBub3JtYWxpemVTdHlsZUJpbmRpbmcodm5vZGUuZGF0YS5zdHlsZSkgfHwge307XG5cbiAgLy8gc3RvcmUgbm9ybWFsaXplZCBzdHlsZSB1bmRlciBhIGRpZmZlcmVudCBrZXkgZm9yIG5leHQgZGlmZlxuICAvLyBtYWtlIHN1cmUgdG8gY2xvbmUgaXQgaWYgaXQncyByZWFjdGl2ZSwgc2luY2UgdGhlIHVzZXIgbGlrZWx5IHdhbnRzXG4gIC8vIHRvIG11dGF0ZSBpdC5cbiAgdm5vZGUuZGF0YS5ub3JtYWxpemVkU3R5bGUgPSBpc0RlZihzdHlsZS5fX29iX18pXG4gICAgPyBleHRlbmQoe30sIHN0eWxlKVxuICAgIDogc3R5bGU7XG5cbiAgdmFyIG5ld1N0eWxlID0gZ2V0U3R5bGUodm5vZGUsIHRydWUpO1xuXG4gIGZvciAobmFtZSBpbiBvbGRTdHlsZSkge1xuICAgIGlmIChpc1VuZGVmKG5ld1N0eWxlW25hbWVdKSkge1xuICAgICAgc2V0UHJvcChlbCwgbmFtZSwgJycpO1xuICAgIH1cbiAgfVxuICBmb3IgKG5hbWUgaW4gbmV3U3R5bGUpIHtcbiAgICBjdXIgPSBuZXdTdHlsZVtuYW1lXTtcbiAgICBpZiAoY3VyICE9PSBvbGRTdHlsZVtuYW1lXSkge1xuICAgICAgLy8gaWU5IHNldHRpbmcgdG8gbnVsbCBoYXMgbm8gZWZmZWN0LCBtdXN0IHVzZSBlbXB0eSBzdHJpbmdcbiAgICAgIHNldFByb3AoZWwsIG5hbWUsIGN1ciA9PSBudWxsID8gJycgOiBjdXIpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgc3R5bGUgPSB7XG4gIGNyZWF0ZTogdXBkYXRlU3R5bGUsXG4gIHVwZGF0ZTogdXBkYXRlU3R5bGVcbn07XG5cbi8qICAqL1xuXG52YXIgd2hpdGVzcGFjZVJFID0gL1xccysvO1xuXG4vKipcbiAqIEFkZCBjbGFzcyB3aXRoIGNvbXBhdGliaWxpdHkgZm9yIFNWRyBzaW5jZSBjbGFzc0xpc3QgaXMgbm90IHN1cHBvcnRlZCBvblxuICogU1ZHIGVsZW1lbnRzIGluIElFXG4gKi9cbmZ1bmN0aW9uIGFkZENsYXNzIChlbCwgY2xzKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIWNscyB8fCAhKGNscyA9IGNscy50cmltKCkpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoZWwuY2xhc3NMaXN0KSB7XG4gICAgaWYgKGNscy5pbmRleE9mKCcgJykgPiAtMSkge1xuICAgICAgY2xzLnNwbGl0KHdoaXRlc3BhY2VSRSkuZm9yRWFjaChmdW5jdGlvbiAoYykgeyByZXR1cm4gZWwuY2xhc3NMaXN0LmFkZChjKTsgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLmNsYXNzTGlzdC5hZGQoY2xzKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGN1ciA9IFwiIFwiICsgKGVsLmdldEF0dHJpYnV0ZSgnY2xhc3MnKSB8fCAnJykgKyBcIiBcIjtcbiAgICBpZiAoY3VyLmluZGV4T2YoJyAnICsgY2xzICsgJyAnKSA8IDApIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAoY3VyICsgY2xzKS50cmltKCkpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZSBjbGFzcyB3aXRoIGNvbXBhdGliaWxpdHkgZm9yIFNWRyBzaW5jZSBjbGFzc0xpc3QgaXMgbm90IHN1cHBvcnRlZCBvblxuICogU1ZHIGVsZW1lbnRzIGluIElFXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZUNsYXNzIChlbCwgY2xzKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIWNscyB8fCAhKGNscyA9IGNscy50cmltKCkpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoZWwuY2xhc3NMaXN0KSB7XG4gICAgaWYgKGNscy5pbmRleE9mKCcgJykgPiAtMSkge1xuICAgICAgY2xzLnNwbGl0KHdoaXRlc3BhY2VSRSkuZm9yRWFjaChmdW5jdGlvbiAoYykgeyByZXR1cm4gZWwuY2xhc3NMaXN0LnJlbW92ZShjKTsgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoY2xzKTtcbiAgICB9XG4gICAgaWYgKCFlbC5jbGFzc0xpc3QubGVuZ3RoKSB7XG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2NsYXNzJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBjdXIgPSBcIiBcIiArIChlbC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykgfHwgJycpICsgXCIgXCI7XG4gICAgdmFyIHRhciA9ICcgJyArIGNscyArICcgJztcbiAgICB3aGlsZSAoY3VyLmluZGV4T2YodGFyKSA+PSAwKSB7XG4gICAgICBjdXIgPSBjdXIucmVwbGFjZSh0YXIsICcgJyk7XG4gICAgfVxuICAgIGN1ciA9IGN1ci50cmltKCk7XG4gICAgaWYgKGN1cikge1xuICAgICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIGN1cik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnY2xhc3MnKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIHJlc29sdmVUcmFuc2l0aW9uIChkZWYkJDEpIHtcbiAgaWYgKCFkZWYkJDEpIHtcbiAgICByZXR1cm5cbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAodHlwZW9mIGRlZiQkMSA9PT0gJ29iamVjdCcpIHtcbiAgICB2YXIgcmVzID0ge307XG4gICAgaWYgKGRlZiQkMS5jc3MgIT09IGZhbHNlKSB7XG4gICAgICBleHRlbmQocmVzLCBhdXRvQ3NzVHJhbnNpdGlvbihkZWYkJDEubmFtZSB8fCAndicpKTtcbiAgICB9XG4gICAgZXh0ZW5kKHJlcywgZGVmJCQxKTtcbiAgICByZXR1cm4gcmVzXG4gIH0gZWxzZSBpZiAodHlwZW9mIGRlZiQkMSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gYXV0b0Nzc1RyYW5zaXRpb24oZGVmJCQxKVxuICB9XG59XG5cbnZhciBhdXRvQ3NzVHJhbnNpdGlvbiA9IGNhY2hlZChmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4ge1xuICAgIGVudGVyQ2xhc3M6IChuYW1lICsgXCItZW50ZXJcIiksXG4gICAgZW50ZXJUb0NsYXNzOiAobmFtZSArIFwiLWVudGVyLXRvXCIpLFxuICAgIGVudGVyQWN0aXZlQ2xhc3M6IChuYW1lICsgXCItZW50ZXItYWN0aXZlXCIpLFxuICAgIGxlYXZlQ2xhc3M6IChuYW1lICsgXCItbGVhdmVcIiksXG4gICAgbGVhdmVUb0NsYXNzOiAobmFtZSArIFwiLWxlYXZlLXRvXCIpLFxuICAgIGxlYXZlQWN0aXZlQ2xhc3M6IChuYW1lICsgXCItbGVhdmUtYWN0aXZlXCIpXG4gIH1cbn0pO1xuXG52YXIgaGFzVHJhbnNpdGlvbiA9IGluQnJvd3NlciAmJiAhaXNJRTk7XG52YXIgVFJBTlNJVElPTiA9ICd0cmFuc2l0aW9uJztcbnZhciBBTklNQVRJT04gPSAnYW5pbWF0aW9uJztcblxuLy8gVHJhbnNpdGlvbiBwcm9wZXJ0eS9ldmVudCBzbmlmZmluZ1xudmFyIHRyYW5zaXRpb25Qcm9wID0gJ3RyYW5zaXRpb24nO1xudmFyIHRyYW5zaXRpb25FbmRFdmVudCA9ICd0cmFuc2l0aW9uZW5kJztcbnZhciBhbmltYXRpb25Qcm9wID0gJ2FuaW1hdGlvbic7XG52YXIgYW5pbWF0aW9uRW5kRXZlbnQgPSAnYW5pbWF0aW9uZW5kJztcbmlmIChoYXNUcmFuc2l0aW9uKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAod2luZG93Lm9udHJhbnNpdGlvbmVuZCA9PT0gdW5kZWZpbmVkICYmXG4gICAgd2luZG93Lm9ud2Via2l0dHJhbnNpdGlvbmVuZCAhPT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHRyYW5zaXRpb25Qcm9wID0gJ1dlYmtpdFRyYW5zaXRpb24nO1xuICAgIHRyYW5zaXRpb25FbmRFdmVudCA9ICd3ZWJraXRUcmFuc2l0aW9uRW5kJztcbiAgfVxuICBpZiAod2luZG93Lm9uYW5pbWF0aW9uZW5kID09PSB1bmRlZmluZWQgJiZcbiAgICB3aW5kb3cub253ZWJraXRhbmltYXRpb25lbmQgIT09IHVuZGVmaW5lZFxuICApIHtcbiAgICBhbmltYXRpb25Qcm9wID0gJ1dlYmtpdEFuaW1hdGlvbic7XG4gICAgYW5pbWF0aW9uRW5kRXZlbnQgPSAnd2Via2l0QW5pbWF0aW9uRW5kJztcbiAgfVxufVxuXG4vLyBiaW5kaW5nIHRvIHdpbmRvdyBpcyBuZWNlc3NhcnkgdG8gbWFrZSBob3QgcmVsb2FkIHdvcmsgaW4gSUUgaW4gc3RyaWN0IG1vZGVcbnZhciByYWYgPSBpbkJyb3dzZXJcbiAgPyB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgPyB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KVxuICAgIDogc2V0VGltZW91dFxuICA6IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIGZ1bmN0aW9uIChmbikgeyByZXR1cm4gZm4oKTsgfTtcblxuZnVuY3Rpb24gbmV4dEZyYW1lIChmbikge1xuICByYWYoZnVuY3Rpb24gKCkge1xuICAgIHJhZihmbik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRUcmFuc2l0aW9uQ2xhc3MgKGVsLCBjbHMpIHtcbiAgdmFyIHRyYW5zaXRpb25DbGFzc2VzID0gZWwuX3RyYW5zaXRpb25DbGFzc2VzIHx8IChlbC5fdHJhbnNpdGlvbkNsYXNzZXMgPSBbXSk7XG4gIGlmICh0cmFuc2l0aW9uQ2xhc3Nlcy5pbmRleE9mKGNscykgPCAwKSB7XG4gICAgdHJhbnNpdGlvbkNsYXNzZXMucHVzaChjbHMpO1xuICAgIGFkZENsYXNzKGVsLCBjbHMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVRyYW5zaXRpb25DbGFzcyAoZWwsIGNscykge1xuICBpZiAoZWwuX3RyYW5zaXRpb25DbGFzc2VzKSB7XG4gICAgcmVtb3ZlKGVsLl90cmFuc2l0aW9uQ2xhc3NlcywgY2xzKTtcbiAgfVxuICByZW1vdmVDbGFzcyhlbCwgY2xzKTtcbn1cblxuZnVuY3Rpb24gd2hlblRyYW5zaXRpb25FbmRzIChcbiAgZWwsXG4gIGV4cGVjdGVkVHlwZSxcbiAgY2Jcbikge1xuICB2YXIgcmVmID0gZ2V0VHJhbnNpdGlvbkluZm8oZWwsIGV4cGVjdGVkVHlwZSk7XG4gIHZhciB0eXBlID0gcmVmLnR5cGU7XG4gIHZhciB0aW1lb3V0ID0gcmVmLnRpbWVvdXQ7XG4gIHZhciBwcm9wQ291bnQgPSByZWYucHJvcENvdW50O1xuICBpZiAoIXR5cGUpIHsgcmV0dXJuIGNiKCkgfVxuICB2YXIgZXZlbnQgPSB0eXBlID09PSBUUkFOU0lUSU9OID8gdHJhbnNpdGlvbkVuZEV2ZW50IDogYW5pbWF0aW9uRW5kRXZlbnQ7XG4gIHZhciBlbmRlZCA9IDA7XG4gIHZhciBlbmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgb25FbmQpO1xuICAgIGNiKCk7XG4gIH07XG4gIHZhciBvbkVuZCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKGUudGFyZ2V0ID09PSBlbCkge1xuICAgICAgaWYgKCsrZW5kZWQgPj0gcHJvcENvdW50KSB7XG4gICAgICAgIGVuZCgpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGVuZGVkIDwgcHJvcENvdW50KSB7XG4gICAgICBlbmQoKTtcbiAgICB9XG4gIH0sIHRpbWVvdXQgKyAxKTtcbiAgZWwuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgb25FbmQpO1xufVxuXG52YXIgdHJhbnNmb3JtUkUgPSAvXFxiKHRyYW5zZm9ybXxhbGwpKCx8JCkvO1xuXG5mdW5jdGlvbiBnZXRUcmFuc2l0aW9uSW5mbyAoZWwsIGV4cGVjdGVkVHlwZSkge1xuICB2YXIgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpO1xuICAvLyBKU0RPTSBtYXkgcmV0dXJuIHVuZGVmaW5lZCBmb3IgdHJhbnNpdGlvbiBwcm9wZXJ0aWVzXG4gIHZhciB0cmFuc2l0aW9uRGVsYXlzID0gKHN0eWxlc1t0cmFuc2l0aW9uUHJvcCArICdEZWxheSddIHx8ICcnKS5zcGxpdCgnLCAnKTtcbiAgdmFyIHRyYW5zaXRpb25EdXJhdGlvbnMgPSAoc3R5bGVzW3RyYW5zaXRpb25Qcm9wICsgJ0R1cmF0aW9uJ10gfHwgJycpLnNwbGl0KCcsICcpO1xuICB2YXIgdHJhbnNpdGlvblRpbWVvdXQgPSBnZXRUaW1lb3V0KHRyYW5zaXRpb25EZWxheXMsIHRyYW5zaXRpb25EdXJhdGlvbnMpO1xuICB2YXIgYW5pbWF0aW9uRGVsYXlzID0gKHN0eWxlc1thbmltYXRpb25Qcm9wICsgJ0RlbGF5J10gfHwgJycpLnNwbGl0KCcsICcpO1xuICB2YXIgYW5pbWF0aW9uRHVyYXRpb25zID0gKHN0eWxlc1thbmltYXRpb25Qcm9wICsgJ0R1cmF0aW9uJ10gfHwgJycpLnNwbGl0KCcsICcpO1xuICB2YXIgYW5pbWF0aW9uVGltZW91dCA9IGdldFRpbWVvdXQoYW5pbWF0aW9uRGVsYXlzLCBhbmltYXRpb25EdXJhdGlvbnMpO1xuXG4gIHZhciB0eXBlO1xuICB2YXIgdGltZW91dCA9IDA7XG4gIHZhciBwcm9wQ291bnQgPSAwO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGV4cGVjdGVkVHlwZSA9PT0gVFJBTlNJVElPTikge1xuICAgIGlmICh0cmFuc2l0aW9uVGltZW91dCA+IDApIHtcbiAgICAgIHR5cGUgPSBUUkFOU0lUSU9OO1xuICAgICAgdGltZW91dCA9IHRyYW5zaXRpb25UaW1lb3V0O1xuICAgICAgcHJvcENvdW50ID0gdHJhbnNpdGlvbkR1cmF0aW9ucy5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gQU5JTUFUSU9OKSB7XG4gICAgaWYgKGFuaW1hdGlvblRpbWVvdXQgPiAwKSB7XG4gICAgICB0eXBlID0gQU5JTUFUSU9OO1xuICAgICAgdGltZW91dCA9IGFuaW1hdGlvblRpbWVvdXQ7XG4gICAgICBwcm9wQ291bnQgPSBhbmltYXRpb25EdXJhdGlvbnMubGVuZ3RoO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aW1lb3V0ID0gTWF0aC5tYXgodHJhbnNpdGlvblRpbWVvdXQsIGFuaW1hdGlvblRpbWVvdXQpO1xuICAgIHR5cGUgPSB0aW1lb3V0ID4gMFxuICAgICAgPyB0cmFuc2l0aW9uVGltZW91dCA+IGFuaW1hdGlvblRpbWVvdXRcbiAgICAgICAgPyBUUkFOU0lUSU9OXG4gICAgICAgIDogQU5JTUFUSU9OXG4gICAgICA6IG51bGw7XG4gICAgcHJvcENvdW50ID0gdHlwZVxuICAgICAgPyB0eXBlID09PSBUUkFOU0lUSU9OXG4gICAgICAgID8gdHJhbnNpdGlvbkR1cmF0aW9ucy5sZW5ndGhcbiAgICAgICAgOiBhbmltYXRpb25EdXJhdGlvbnMubGVuZ3RoXG4gICAgICA6IDA7XG4gIH1cbiAgdmFyIGhhc1RyYW5zZm9ybSA9XG4gICAgdHlwZSA9PT0gVFJBTlNJVElPTiAmJlxuICAgIHRyYW5zZm9ybVJFLnRlc3Qoc3R5bGVzW3RyYW5zaXRpb25Qcm9wICsgJ1Byb3BlcnR5J10pO1xuICByZXR1cm4ge1xuICAgIHR5cGU6IHR5cGUsXG4gICAgdGltZW91dDogdGltZW91dCxcbiAgICBwcm9wQ291bnQ6IHByb3BDb3VudCxcbiAgICBoYXNUcmFuc2Zvcm06IGhhc1RyYW5zZm9ybVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFRpbWVvdXQgKGRlbGF5cywgZHVyYXRpb25zKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHdoaWxlIChkZWxheXMubGVuZ3RoIDwgZHVyYXRpb25zLmxlbmd0aCkge1xuICAgIGRlbGF5cyA9IGRlbGF5cy5jb25jYXQoZGVsYXlzKTtcbiAgfVxuXG4gIHJldHVybiBNYXRoLm1heC5hcHBseShudWxsLCBkdXJhdGlvbnMubWFwKGZ1bmN0aW9uIChkLCBpKSB7XG4gICAgcmV0dXJuIHRvTXMoZCkgKyB0b01zKGRlbGF5c1tpXSlcbiAgfSkpXG59XG5cbi8vIE9sZCB2ZXJzaW9ucyBvZiBDaHJvbWl1bSAoYmVsb3cgNjEuMC4zMTYzLjEwMCkgZm9ybWF0cyBmbG9hdGluZyBwb2ludGVyIG51bWJlcnNcbi8vIGluIGEgbG9jYWxlLWRlcGVuZGVudCB3YXksIHVzaW5nIGEgY29tbWEgaW5zdGVhZCBvZiBhIGRvdC5cbi8vIElmIGNvbW1hIGlzIG5vdCByZXBsYWNlZCB3aXRoIGEgZG90LCB0aGUgaW5wdXQgd2lsbCBiZSByb3VuZGVkIGRvd24gKGkuZS4gYWN0aW5nXG4vLyBhcyBhIGZsb29yIGZ1bmN0aW9uKSBjYXVzaW5nIHVuZXhwZWN0ZWQgYmVoYXZpb3JzXG5mdW5jdGlvbiB0b01zIChzKSB7XG4gIHJldHVybiBOdW1iZXIocy5zbGljZSgwLCAtMSkucmVwbGFjZSgnLCcsICcuJykpICogMTAwMFxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gZW50ZXIgKHZub2RlLCB0b2dnbGVEaXNwbGF5KSB7XG4gIHZhciBlbCA9IHZub2RlLmVsbTtcblxuICAvLyBjYWxsIGxlYXZlIGNhbGxiYWNrIG5vd1xuICBpZiAoaXNEZWYoZWwuX2xlYXZlQ2IpKSB7XG4gICAgZWwuX2xlYXZlQ2IuY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICBlbC5fbGVhdmVDYigpO1xuICB9XG5cbiAgdmFyIGRhdGEgPSByZXNvbHZlVHJhbnNpdGlvbih2bm9kZS5kYXRhLnRyYW5zaXRpb24pO1xuICBpZiAoaXNVbmRlZihkYXRhKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChpc0RlZihlbC5fZW50ZXJDYikgfHwgZWwubm9kZVR5cGUgIT09IDEpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBjc3MgPSBkYXRhLmNzcztcbiAgdmFyIHR5cGUgPSBkYXRhLnR5cGU7XG4gIHZhciBlbnRlckNsYXNzID0gZGF0YS5lbnRlckNsYXNzO1xuICB2YXIgZW50ZXJUb0NsYXNzID0gZGF0YS5lbnRlclRvQ2xhc3M7XG4gIHZhciBlbnRlckFjdGl2ZUNsYXNzID0gZGF0YS5lbnRlckFjdGl2ZUNsYXNzO1xuICB2YXIgYXBwZWFyQ2xhc3MgPSBkYXRhLmFwcGVhckNsYXNzO1xuICB2YXIgYXBwZWFyVG9DbGFzcyA9IGRhdGEuYXBwZWFyVG9DbGFzcztcbiAgdmFyIGFwcGVhckFjdGl2ZUNsYXNzID0gZGF0YS5hcHBlYXJBY3RpdmVDbGFzcztcbiAgdmFyIGJlZm9yZUVudGVyID0gZGF0YS5iZWZvcmVFbnRlcjtcbiAgdmFyIGVudGVyID0gZGF0YS5lbnRlcjtcbiAgdmFyIGFmdGVyRW50ZXIgPSBkYXRhLmFmdGVyRW50ZXI7XG4gIHZhciBlbnRlckNhbmNlbGxlZCA9IGRhdGEuZW50ZXJDYW5jZWxsZWQ7XG4gIHZhciBiZWZvcmVBcHBlYXIgPSBkYXRhLmJlZm9yZUFwcGVhcjtcbiAgdmFyIGFwcGVhciA9IGRhdGEuYXBwZWFyO1xuICB2YXIgYWZ0ZXJBcHBlYXIgPSBkYXRhLmFmdGVyQXBwZWFyO1xuICB2YXIgYXBwZWFyQ2FuY2VsbGVkID0gZGF0YS5hcHBlYXJDYW5jZWxsZWQ7XG4gIHZhciBkdXJhdGlvbiA9IGRhdGEuZHVyYXRpb247XG5cbiAgLy8gYWN0aXZlSW5zdGFuY2Ugd2lsbCBhbHdheXMgYmUgdGhlIDx0cmFuc2l0aW9uPiBjb21wb25lbnQgbWFuYWdpbmcgdGhpc1xuICAvLyB0cmFuc2l0aW9uLiBPbmUgZWRnZSBjYXNlIHRvIGNoZWNrIGlzIHdoZW4gdGhlIDx0cmFuc2l0aW9uPiBpcyBwbGFjZWRcbiAgLy8gYXMgdGhlIHJvb3Qgbm9kZSBvZiBhIGNoaWxkIGNvbXBvbmVudC4gSW4gdGhhdCBjYXNlIHdlIG5lZWQgdG8gY2hlY2tcbiAgLy8gPHRyYW5zaXRpb24+J3MgcGFyZW50IGZvciBhcHBlYXIgY2hlY2suXG4gIHZhciBjb250ZXh0ID0gYWN0aXZlSW5zdGFuY2U7XG4gIHZhciB0cmFuc2l0aW9uTm9kZSA9IGFjdGl2ZUluc3RhbmNlLiR2bm9kZTtcbiAgd2hpbGUgKHRyYW5zaXRpb25Ob2RlICYmIHRyYW5zaXRpb25Ob2RlLnBhcmVudCkge1xuICAgIGNvbnRleHQgPSB0cmFuc2l0aW9uTm9kZS5jb250ZXh0O1xuICAgIHRyYW5zaXRpb25Ob2RlID0gdHJhbnNpdGlvbk5vZGUucGFyZW50O1xuICB9XG5cbiAgdmFyIGlzQXBwZWFyID0gIWNvbnRleHQuX2lzTW91bnRlZCB8fCAhdm5vZGUuaXNSb290SW5zZXJ0O1xuXG4gIGlmIChpc0FwcGVhciAmJiAhYXBwZWFyICYmIGFwcGVhciAhPT0gJycpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBzdGFydENsYXNzID0gaXNBcHBlYXIgJiYgYXBwZWFyQ2xhc3NcbiAgICA/IGFwcGVhckNsYXNzXG4gICAgOiBlbnRlckNsYXNzO1xuICB2YXIgYWN0aXZlQ2xhc3MgPSBpc0FwcGVhciAmJiBhcHBlYXJBY3RpdmVDbGFzc1xuICAgID8gYXBwZWFyQWN0aXZlQ2xhc3NcbiAgICA6IGVudGVyQWN0aXZlQ2xhc3M7XG4gIHZhciB0b0NsYXNzID0gaXNBcHBlYXIgJiYgYXBwZWFyVG9DbGFzc1xuICAgID8gYXBwZWFyVG9DbGFzc1xuICAgIDogZW50ZXJUb0NsYXNzO1xuXG4gIHZhciBiZWZvcmVFbnRlckhvb2sgPSBpc0FwcGVhclxuICAgID8gKGJlZm9yZUFwcGVhciB8fCBiZWZvcmVFbnRlcilcbiAgICA6IGJlZm9yZUVudGVyO1xuICB2YXIgZW50ZXJIb29rID0gaXNBcHBlYXJcbiAgICA/ICh0eXBlb2YgYXBwZWFyID09PSAnZnVuY3Rpb24nID8gYXBwZWFyIDogZW50ZXIpXG4gICAgOiBlbnRlcjtcbiAgdmFyIGFmdGVyRW50ZXJIb29rID0gaXNBcHBlYXJcbiAgICA/IChhZnRlckFwcGVhciB8fCBhZnRlckVudGVyKVxuICAgIDogYWZ0ZXJFbnRlcjtcbiAgdmFyIGVudGVyQ2FuY2VsbGVkSG9vayA9IGlzQXBwZWFyXG4gICAgPyAoYXBwZWFyQ2FuY2VsbGVkIHx8IGVudGVyQ2FuY2VsbGVkKVxuICAgIDogZW50ZXJDYW5jZWxsZWQ7XG5cbiAgdmFyIGV4cGxpY2l0RW50ZXJEdXJhdGlvbiA9IHRvTnVtYmVyKFxuICAgIGlzT2JqZWN0KGR1cmF0aW9uKVxuICAgICAgPyBkdXJhdGlvbi5lbnRlclxuICAgICAgOiBkdXJhdGlvblxuICApO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGV4cGxpY2l0RW50ZXJEdXJhdGlvbiAhPSBudWxsKSB7XG4gICAgY2hlY2tEdXJhdGlvbihleHBsaWNpdEVudGVyRHVyYXRpb24sICdlbnRlcicsIHZub2RlKTtcbiAgfVxuXG4gIHZhciBleHBlY3RzQ1NTID0gY3NzICE9PSBmYWxzZSAmJiAhaXNJRTk7XG4gIHZhciB1c2VyV2FudHNDb250cm9sID0gZ2V0SG9va0FyZ3VtZW50c0xlbmd0aChlbnRlckhvb2spO1xuXG4gIHZhciBjYiA9IGVsLl9lbnRlckNiID0gb25jZShmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGV4cGVjdHNDU1MpIHtcbiAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgdG9DbGFzcyk7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGFjdGl2ZUNsYXNzKTtcbiAgICB9XG4gICAgaWYgKGNiLmNhbmNlbGxlZCkge1xuICAgICAgaWYgKGV4cGVjdHNDU1MpIHtcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBzdGFydENsYXNzKTtcbiAgICAgIH1cbiAgICAgIGVudGVyQ2FuY2VsbGVkSG9vayAmJiBlbnRlckNhbmNlbGxlZEhvb2soZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhZnRlckVudGVySG9vayAmJiBhZnRlckVudGVySG9vayhlbCk7XG4gICAgfVxuICAgIGVsLl9lbnRlckNiID0gbnVsbDtcbiAgfSk7XG5cbiAgaWYgKCF2bm9kZS5kYXRhLnNob3cpIHtcbiAgICAvLyByZW1vdmUgcGVuZGluZyBsZWF2ZSBlbGVtZW50IG9uIGVudGVyIGJ5IGluamVjdGluZyBhbiBpbnNlcnQgaG9va1xuICAgIG1lcmdlVk5vZGVIb29rKHZub2RlLCAnaW5zZXJ0JywgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHBhcmVudCA9IGVsLnBhcmVudE5vZGU7XG4gICAgICB2YXIgcGVuZGluZ05vZGUgPSBwYXJlbnQgJiYgcGFyZW50Ll9wZW5kaW5nICYmIHBhcmVudC5fcGVuZGluZ1t2bm9kZS5rZXldO1xuICAgICAgaWYgKHBlbmRpbmdOb2RlICYmXG4gICAgICAgIHBlbmRpbmdOb2RlLnRhZyA9PT0gdm5vZGUudGFnICYmXG4gICAgICAgIHBlbmRpbmdOb2RlLmVsbS5fbGVhdmVDYlxuICAgICAgKSB7XG4gICAgICAgIHBlbmRpbmdOb2RlLmVsbS5fbGVhdmVDYigpO1xuICAgICAgfVxuICAgICAgZW50ZXJIb29rICYmIGVudGVySG9vayhlbCwgY2IpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gc3RhcnQgZW50ZXIgdHJhbnNpdGlvblxuICBiZWZvcmVFbnRlckhvb2sgJiYgYmVmb3JlRW50ZXJIb29rKGVsKTtcbiAgaWYgKGV4cGVjdHNDU1MpIHtcbiAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIHN0YXJ0Q2xhc3MpO1xuICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgYWN0aXZlQ2xhc3MpO1xuICAgIG5leHRGcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIHN0YXJ0Q2xhc3MpO1xuICAgICAgaWYgKCFjYi5jYW5jZWxsZWQpIHtcbiAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCB0b0NsYXNzKTtcbiAgICAgICAgaWYgKCF1c2VyV2FudHNDb250cm9sKSB7XG4gICAgICAgICAgaWYgKGlzVmFsaWREdXJhdGlvbihleHBsaWNpdEVudGVyRHVyYXRpb24pKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGNiLCBleHBsaWNpdEVudGVyRHVyYXRpb24pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3aGVuVHJhbnNpdGlvbkVuZHMoZWwsIHR5cGUsIGNiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGlmICh2bm9kZS5kYXRhLnNob3cpIHtcbiAgICB0b2dnbGVEaXNwbGF5ICYmIHRvZ2dsZURpc3BsYXkoKTtcbiAgICBlbnRlckhvb2sgJiYgZW50ZXJIb29rKGVsLCBjYik7XG4gIH1cblxuICBpZiAoIWV4cGVjdHNDU1MgJiYgIXVzZXJXYW50c0NvbnRyb2wpIHtcbiAgICBjYigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGxlYXZlICh2bm9kZSwgcm0pIHtcbiAgdmFyIGVsID0gdm5vZGUuZWxtO1xuXG4gIC8vIGNhbGwgZW50ZXIgY2FsbGJhY2sgbm93XG4gIGlmIChpc0RlZihlbC5fZW50ZXJDYikpIHtcbiAgICBlbC5fZW50ZXJDYi5jYW5jZWxsZWQgPSB0cnVlO1xuICAgIGVsLl9lbnRlckNiKCk7XG4gIH1cblxuICB2YXIgZGF0YSA9IHJlc29sdmVUcmFuc2l0aW9uKHZub2RlLmRhdGEudHJhbnNpdGlvbik7XG4gIGlmIChpc1VuZGVmKGRhdGEpIHx8IGVsLm5vZGVUeXBlICE9PSAxKSB7XG4gICAgcmV0dXJuIHJtKClcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoaXNEZWYoZWwuX2xlYXZlQ2IpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgY3NzID0gZGF0YS5jc3M7XG4gIHZhciB0eXBlID0gZGF0YS50eXBlO1xuICB2YXIgbGVhdmVDbGFzcyA9IGRhdGEubGVhdmVDbGFzcztcbiAgdmFyIGxlYXZlVG9DbGFzcyA9IGRhdGEubGVhdmVUb0NsYXNzO1xuICB2YXIgbGVhdmVBY3RpdmVDbGFzcyA9IGRhdGEubGVhdmVBY3RpdmVDbGFzcztcbiAgdmFyIGJlZm9yZUxlYXZlID0gZGF0YS5iZWZvcmVMZWF2ZTtcbiAgdmFyIGxlYXZlID0gZGF0YS5sZWF2ZTtcbiAgdmFyIGFmdGVyTGVhdmUgPSBkYXRhLmFmdGVyTGVhdmU7XG4gIHZhciBsZWF2ZUNhbmNlbGxlZCA9IGRhdGEubGVhdmVDYW5jZWxsZWQ7XG4gIHZhciBkZWxheUxlYXZlID0gZGF0YS5kZWxheUxlYXZlO1xuICB2YXIgZHVyYXRpb24gPSBkYXRhLmR1cmF0aW9uO1xuXG4gIHZhciBleHBlY3RzQ1NTID0gY3NzICE9PSBmYWxzZSAmJiAhaXNJRTk7XG4gIHZhciB1c2VyV2FudHNDb250cm9sID0gZ2V0SG9va0FyZ3VtZW50c0xlbmd0aChsZWF2ZSk7XG5cbiAgdmFyIGV4cGxpY2l0TGVhdmVEdXJhdGlvbiA9IHRvTnVtYmVyKFxuICAgIGlzT2JqZWN0KGR1cmF0aW9uKVxuICAgICAgPyBkdXJhdGlvbi5sZWF2ZVxuICAgICAgOiBkdXJhdGlvblxuICApO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGlzRGVmKGV4cGxpY2l0TGVhdmVEdXJhdGlvbikpIHtcbiAgICBjaGVja0R1cmF0aW9uKGV4cGxpY2l0TGVhdmVEdXJhdGlvbiwgJ2xlYXZlJywgdm5vZGUpO1xuICB9XG5cbiAgdmFyIGNiID0gZWwuX2xlYXZlQ2IgPSBvbmNlKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZWwucGFyZW50Tm9kZSAmJiBlbC5wYXJlbnROb2RlLl9wZW5kaW5nKSB7XG4gICAgICBlbC5wYXJlbnROb2RlLl9wZW5kaW5nW3Zub2RlLmtleV0gPSBudWxsO1xuICAgIH1cbiAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZVRvQ2xhc3MpO1xuICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUFjdGl2ZUNsYXNzKTtcbiAgICB9XG4gICAgaWYgKGNiLmNhbmNlbGxlZCkge1xuICAgICAgaWYgKGV4cGVjdHNDU1MpIHtcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUNsYXNzKTtcbiAgICAgIH1cbiAgICAgIGxlYXZlQ2FuY2VsbGVkICYmIGxlYXZlQ2FuY2VsbGVkKGVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm0oKTtcbiAgICAgIGFmdGVyTGVhdmUgJiYgYWZ0ZXJMZWF2ZShlbCk7XG4gICAgfVxuICAgIGVsLl9sZWF2ZUNiID0gbnVsbDtcbiAgfSk7XG5cbiAgaWYgKGRlbGF5TGVhdmUpIHtcbiAgICBkZWxheUxlYXZlKHBlcmZvcm1MZWF2ZSk7XG4gIH0gZWxzZSB7XG4gICAgcGVyZm9ybUxlYXZlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBwZXJmb3JtTGVhdmUgKCkge1xuICAgIC8vIHRoZSBkZWxheWVkIGxlYXZlIG1heSBoYXZlIGFscmVhZHkgYmVlbiBjYW5jZWxsZWRcbiAgICBpZiAoY2IuY2FuY2VsbGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgLy8gcmVjb3JkIGxlYXZpbmcgZWxlbWVudFxuICAgIGlmICghdm5vZGUuZGF0YS5zaG93ICYmIGVsLnBhcmVudE5vZGUpIHtcbiAgICAgIChlbC5wYXJlbnROb2RlLl9wZW5kaW5nIHx8IChlbC5wYXJlbnROb2RlLl9wZW5kaW5nID0ge30pKVsodm5vZGUua2V5KV0gPSB2bm9kZTtcbiAgICB9XG4gICAgYmVmb3JlTGVhdmUgJiYgYmVmb3JlTGVhdmUoZWwpO1xuICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQ2xhc3MpO1xuICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUFjdGl2ZUNsYXNzKTtcbiAgICAgIG5leHRGcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVDbGFzcyk7XG4gICAgICAgIGlmICghY2IuY2FuY2VsbGVkKSB7XG4gICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZVRvQ2xhc3MpO1xuICAgICAgICAgIGlmICghdXNlcldhbnRzQ29udHJvbCkge1xuICAgICAgICAgICAgaWYgKGlzVmFsaWREdXJhdGlvbihleHBsaWNpdExlYXZlRHVyYXRpb24pKSB7XG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoY2IsIGV4cGxpY2l0TGVhdmVEdXJhdGlvbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB3aGVuVHJhbnNpdGlvbkVuZHMoZWwsIHR5cGUsIGNiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBsZWF2ZSAmJiBsZWF2ZShlbCwgY2IpO1xuICAgIGlmICghZXhwZWN0c0NTUyAmJiAhdXNlcldhbnRzQ29udHJvbCkge1xuICAgICAgY2IoKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gb25seSB1c2VkIGluIGRldiBtb2RlXG5mdW5jdGlvbiBjaGVja0R1cmF0aW9uICh2YWwsIG5hbWUsIHZub2RlKSB7XG4gIGlmICh0eXBlb2YgdmFsICE9PSAnbnVtYmVyJykge1xuICAgIHdhcm4oXG4gICAgICBcIjx0cmFuc2l0aW9uPiBleHBsaWNpdCBcIiArIG5hbWUgKyBcIiBkdXJhdGlvbiBpcyBub3QgYSB2YWxpZCBudW1iZXIgLSBcIiArXG4gICAgICBcImdvdCBcIiArIChKU09OLnN0cmluZ2lmeSh2YWwpKSArIFwiLlwiLFxuICAgICAgdm5vZGUuY29udGV4dFxuICAgICk7XG4gIH0gZWxzZSBpZiAoaXNOYU4odmFsKSkge1xuICAgIHdhcm4oXG4gICAgICBcIjx0cmFuc2l0aW9uPiBleHBsaWNpdCBcIiArIG5hbWUgKyBcIiBkdXJhdGlvbiBpcyBOYU4gLSBcIiArXG4gICAgICAndGhlIGR1cmF0aW9uIGV4cHJlc3Npb24gbWlnaHQgYmUgaW5jb3JyZWN0LicsXG4gICAgICB2bm9kZS5jb250ZXh0XG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc1ZhbGlkRHVyYXRpb24gKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ251bWJlcicgJiYgIWlzTmFOKHZhbClcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgYSB0cmFuc2l0aW9uIGhvb2sncyBhcmd1bWVudCBsZW5ndGguIFRoZSBob29rIG1heSBiZTpcbiAqIC0gYSBtZXJnZWQgaG9vayAoaW52b2tlcikgd2l0aCB0aGUgb3JpZ2luYWwgaW4gLmZuc1xuICogLSBhIHdyYXBwZWQgY29tcG9uZW50IG1ldGhvZCAoY2hlY2sgLl9sZW5ndGgpXG4gKiAtIGEgcGxhaW4gZnVuY3Rpb24gKC5sZW5ndGgpXG4gKi9cbmZ1bmN0aW9uIGdldEhvb2tBcmd1bWVudHNMZW5ndGggKGZuKSB7XG4gIGlmIChpc1VuZGVmKGZuKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHZhciBpbnZva2VyRm5zID0gZm4uZm5zO1xuICBpZiAoaXNEZWYoaW52b2tlckZucykpIHtcbiAgICAvLyBpbnZva2VyXG4gICAgcmV0dXJuIGdldEhvb2tBcmd1bWVudHNMZW5ndGgoXG4gICAgICBBcnJheS5pc0FycmF5KGludm9rZXJGbnMpXG4gICAgICAgID8gaW52b2tlckZuc1swXVxuICAgICAgICA6IGludm9rZXJGbnNcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChmbi5fbGVuZ3RoIHx8IGZuLmxlbmd0aCkgPiAxXG4gIH1cbn1cblxuZnVuY3Rpb24gX2VudGVyIChfLCB2bm9kZSkge1xuICBpZiAodm5vZGUuZGF0YS5zaG93ICE9PSB0cnVlKSB7XG4gICAgZW50ZXIodm5vZGUpO1xuICB9XG59XG5cbnZhciB0cmFuc2l0aW9uID0gaW5Ccm93c2VyID8ge1xuICBjcmVhdGU6IF9lbnRlcixcbiAgYWN0aXZhdGU6IF9lbnRlcixcbiAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUkJDEgKHZub2RlLCBybSkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHZub2RlLmRhdGEuc2hvdyAhPT0gdHJ1ZSkge1xuICAgICAgbGVhdmUodm5vZGUsIHJtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm0oKTtcbiAgICB9XG4gIH1cbn0gOiB7fTtcblxudmFyIHBsYXRmb3JtTW9kdWxlcyA9IFtcbiAgYXR0cnMsXG4gIGtsYXNzLFxuICBldmVudHMsXG4gIGRvbVByb3BzLFxuICBzdHlsZSxcbiAgdHJhbnNpdGlvblxuXTtcblxuLyogICovXG5cbi8vIHRoZSBkaXJlY3RpdmUgbW9kdWxlIHNob3VsZCBiZSBhcHBsaWVkIGxhc3QsIGFmdGVyIGFsbFxuLy8gYnVpbHQtaW4gbW9kdWxlcyBoYXZlIGJlZW4gYXBwbGllZC5cbnZhciBtb2R1bGVzID0gcGxhdGZvcm1Nb2R1bGVzLmNvbmNhdChiYXNlTW9kdWxlcyk7XG5cbnZhciBwYXRjaCA9IGNyZWF0ZVBhdGNoRnVuY3Rpb24oeyBub2RlT3BzOiBub2RlT3BzLCBtb2R1bGVzOiBtb2R1bGVzIH0pO1xuXG4vKipcbiAqIE5vdCB0eXBlIGNoZWNraW5nIHRoaXMgZmlsZSBiZWNhdXNlIGZsb3cgZG9lc24ndCBsaWtlIGF0dGFjaGluZ1xuICogcHJvcGVydGllcyB0byBFbGVtZW50cy5cbiAqL1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChpc0lFOSkge1xuICAvLyBodHRwOi8vd3d3Lm1hdHRzNDExLmNvbS9wb3N0L2ludGVybmV0LWV4cGxvcmVyLTktb25pbnB1dC9cbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2VsZWN0aW9uY2hhbmdlJywgZnVuY3Rpb24gKCkge1xuICAgIHZhciBlbCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKGVsICYmIGVsLnZtb2RlbCkge1xuICAgICAgdHJpZ2dlcihlbCwgJ2lucHV0Jyk7XG4gICAgfVxuICB9KTtcbn1cblxudmFyIGRpcmVjdGl2ZSA9IHtcbiAgaW5zZXJ0ZWQ6IGZ1bmN0aW9uIGluc2VydGVkIChlbCwgYmluZGluZywgdm5vZGUsIG9sZFZub2RlKSB7XG4gICAgaWYgKHZub2RlLnRhZyA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgIC8vICM2OTAzXG4gICAgICBpZiAob2xkVm5vZGUuZWxtICYmICFvbGRWbm9kZS5lbG0uX3ZPcHRpb25zKSB7XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKHZub2RlLCAncG9zdHBhdGNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGRpcmVjdGl2ZS5jb21wb25lbnRVcGRhdGVkKGVsLCBiaW5kaW5nLCB2bm9kZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0U2VsZWN0ZWQoZWwsIGJpbmRpbmcsIHZub2RlLmNvbnRleHQpO1xuICAgICAgfVxuICAgICAgZWwuX3ZPcHRpb25zID0gW10ubWFwLmNhbGwoZWwub3B0aW9ucywgZ2V0VmFsdWUpO1xuICAgIH0gZWxzZSBpZiAodm5vZGUudGFnID09PSAndGV4dGFyZWEnIHx8IGlzVGV4dElucHV0VHlwZShlbC50eXBlKSkge1xuICAgICAgZWwuX3ZNb2RpZmllcnMgPSBiaW5kaW5nLm1vZGlmaWVycztcbiAgICAgIGlmICghYmluZGluZy5tb2RpZmllcnMubGF6eSkge1xuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbnN0YXJ0Jywgb25Db21wb3NpdGlvblN0YXJ0KTtcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignY29tcG9zaXRpb25lbmQnLCBvbkNvbXBvc2l0aW9uRW5kKTtcbiAgICAgICAgLy8gU2FmYXJpIDwgMTAuMiAmIFVJV2ViVmlldyBkb2Vzbid0IGZpcmUgY29tcG9zaXRpb25lbmQgd2hlblxuICAgICAgICAvLyBzd2l0Y2hpbmcgZm9jdXMgYmVmb3JlIGNvbmZpcm1pbmcgY29tcG9zaXRpb24gY2hvaWNlXG4gICAgICAgIC8vIHRoaXMgYWxzbyBmaXhlcyB0aGUgaXNzdWUgd2hlcmUgc29tZSBicm93c2VycyBlLmcuIGlPUyBDaHJvbWVcbiAgICAgICAgLy8gZmlyZXMgXCJjaGFuZ2VcIiBpbnN0ZWFkIG9mIFwiaW5wdXRcIiBvbiBhdXRvY29tcGxldGUuXG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIG9uQ29tcG9zaXRpb25FbmQpO1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgaWYgKGlzSUU5KSB7XG4gICAgICAgICAgZWwudm1vZGVsID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBjb21wb25lbnRVcGRhdGVkOiBmdW5jdGlvbiBjb21wb25lbnRVcGRhdGVkIChlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgICBpZiAodm5vZGUudGFnID09PSAnc2VsZWN0Jykge1xuICAgICAgc2V0U2VsZWN0ZWQoZWwsIGJpbmRpbmcsIHZub2RlLmNvbnRleHQpO1xuICAgICAgLy8gaW4gY2FzZSB0aGUgb3B0aW9ucyByZW5kZXJlZCBieSB2LWZvciBoYXZlIGNoYW5nZWQsXG4gICAgICAvLyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHZhbHVlIGlzIG91dC1vZi1zeW5jIHdpdGggdGhlIHJlbmRlcmVkIG9wdGlvbnMuXG4gICAgICAvLyBkZXRlY3Qgc3VjaCBjYXNlcyBhbmQgZmlsdGVyIG91dCB2YWx1ZXMgdGhhdCBubyBsb25nZXIgaGFzIGEgbWF0Y2hpbmdcbiAgICAgIC8vIG9wdGlvbiBpbiB0aGUgRE9NLlxuICAgICAgdmFyIHByZXZPcHRpb25zID0gZWwuX3ZPcHRpb25zO1xuICAgICAgdmFyIGN1ck9wdGlvbnMgPSBlbC5fdk9wdGlvbnMgPSBbXS5tYXAuY2FsbChlbC5vcHRpb25zLCBnZXRWYWx1ZSk7XG4gICAgICBpZiAoY3VyT3B0aW9ucy5zb21lKGZ1bmN0aW9uIChvLCBpKSB7IHJldHVybiAhbG9vc2VFcXVhbChvLCBwcmV2T3B0aW9uc1tpXSk7IH0pKSB7XG4gICAgICAgIC8vIHRyaWdnZXIgY2hhbmdlIGV2ZW50IGlmXG4gICAgICAgIC8vIG5vIG1hdGNoaW5nIG9wdGlvbiBmb3VuZCBmb3IgYXQgbGVhc3Qgb25lIHZhbHVlXG4gICAgICAgIHZhciBuZWVkUmVzZXQgPSBlbC5tdWx0aXBsZVxuICAgICAgICAgID8gYmluZGluZy52YWx1ZS5zb21lKGZ1bmN0aW9uICh2KSB7IHJldHVybiBoYXNOb01hdGNoaW5nT3B0aW9uKHYsIGN1ck9wdGlvbnMpOyB9KVxuICAgICAgICAgIDogYmluZGluZy52YWx1ZSAhPT0gYmluZGluZy5vbGRWYWx1ZSAmJiBoYXNOb01hdGNoaW5nT3B0aW9uKGJpbmRpbmcudmFsdWUsIGN1ck9wdGlvbnMpO1xuICAgICAgICBpZiAobmVlZFJlc2V0KSB7XG4gICAgICAgICAgdHJpZ2dlcihlbCwgJ2NoYW5nZScpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBzZXRTZWxlY3RlZCAoZWwsIGJpbmRpbmcsIHZtKSB7XG4gIGFjdHVhbGx5U2V0U2VsZWN0ZWQoZWwsIGJpbmRpbmcsIHZtKTtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChpc0lFIHx8IGlzRWRnZSkge1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgYWN0dWFsbHlTZXRTZWxlY3RlZChlbCwgYmluZGluZywgdm0pO1xuICAgIH0sIDApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFjdHVhbGx5U2V0U2VsZWN0ZWQgKGVsLCBiaW5kaW5nLCB2bSkge1xuICB2YXIgdmFsdWUgPSBiaW5kaW5nLnZhbHVlO1xuICB2YXIgaXNNdWx0aXBsZSA9IGVsLm11bHRpcGxlO1xuICBpZiAoaXNNdWx0aXBsZSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICBcIjxzZWxlY3QgbXVsdGlwbGUgdi1tb2RlbD1cXFwiXCIgKyAoYmluZGluZy5leHByZXNzaW9uKSArIFwiXFxcIj4gXCIgK1xuICAgICAgXCJleHBlY3RzIGFuIEFycmF5IHZhbHVlIGZvciBpdHMgYmluZGluZywgYnV0IGdvdCBcIiArIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLnNsaWNlKDgsIC0xKSksXG4gICAgICB2bVxuICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHNlbGVjdGVkLCBvcHRpb247XG4gIGZvciAodmFyIGkgPSAwLCBsID0gZWwub3B0aW9ucy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBvcHRpb24gPSBlbC5vcHRpb25zW2ldO1xuICAgIGlmIChpc011bHRpcGxlKSB7XG4gICAgICBzZWxlY3RlZCA9IGxvb3NlSW5kZXhPZih2YWx1ZSwgZ2V0VmFsdWUob3B0aW9uKSkgPiAtMTtcbiAgICAgIGlmIChvcHRpb24uc2VsZWN0ZWQgIT09IHNlbGVjdGVkKSB7XG4gICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobG9vc2VFcXVhbChnZXRWYWx1ZShvcHRpb24pLCB2YWx1ZSkpIHtcbiAgICAgICAgaWYgKGVsLnNlbGVjdGVkSW5kZXggIT09IGkpIHtcbiAgICAgICAgICBlbC5zZWxlY3RlZEluZGV4ID0gaTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCFpc011bHRpcGxlKSB7XG4gICAgZWwuc2VsZWN0ZWRJbmRleCA9IC0xO1xuICB9XG59XG5cbmZ1bmN0aW9uIGhhc05vTWF0Y2hpbmdPcHRpb24gKHZhbHVlLCBvcHRpb25zKSB7XG4gIHJldHVybiBvcHRpb25zLmV2ZXJ5KGZ1bmN0aW9uIChvKSB7IHJldHVybiAhbG9vc2VFcXVhbChvLCB2YWx1ZSk7IH0pXG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlIChvcHRpb24pIHtcbiAgcmV0dXJuICdfdmFsdWUnIGluIG9wdGlvblxuICAgID8gb3B0aW9uLl92YWx1ZVxuICAgIDogb3B0aW9uLnZhbHVlXG59XG5cbmZ1bmN0aW9uIG9uQ29tcG9zaXRpb25TdGFydCAoZSkge1xuICBlLnRhcmdldC5jb21wb3NpbmcgPSB0cnVlO1xufVxuXG5mdW5jdGlvbiBvbkNvbXBvc2l0aW9uRW5kIChlKSB7XG4gIC8vIHByZXZlbnQgdHJpZ2dlcmluZyBhbiBpbnB1dCBldmVudCBmb3Igbm8gcmVhc29uXG4gIGlmICghZS50YXJnZXQuY29tcG9zaW5nKSB7IHJldHVybiB9XG4gIGUudGFyZ2V0LmNvbXBvc2luZyA9IGZhbHNlO1xuICB0cmlnZ2VyKGUudGFyZ2V0LCAnaW5wdXQnKTtcbn1cblxuZnVuY3Rpb24gdHJpZ2dlciAoZWwsIHR5cGUpIHtcbiAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnSFRNTEV2ZW50cycpO1xuICBlLmluaXRFdmVudCh0eXBlLCB0cnVlLCB0cnVlKTtcbiAgZWwuZGlzcGF0Y2hFdmVudChlKTtcbn1cblxuLyogICovXG5cbi8vIHJlY3Vyc2l2ZWx5IHNlYXJjaCBmb3IgcG9zc2libGUgdHJhbnNpdGlvbiBkZWZpbmVkIGluc2lkZSB0aGUgY29tcG9uZW50IHJvb3RcbmZ1bmN0aW9uIGxvY2F0ZU5vZGUgKHZub2RlKSB7XG4gIHJldHVybiB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSAmJiAoIXZub2RlLmRhdGEgfHwgIXZub2RlLmRhdGEudHJhbnNpdGlvbilcbiAgICA/IGxvY2F0ZU5vZGUodm5vZGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlKVxuICAgIDogdm5vZGVcbn1cblxudmFyIHNob3cgPSB7XG4gIGJpbmQ6IGZ1bmN0aW9uIGJpbmQgKGVsLCByZWYsIHZub2RlKSB7XG4gICAgdmFyIHZhbHVlID0gcmVmLnZhbHVlO1xuXG4gICAgdm5vZGUgPSBsb2NhdGVOb2RlKHZub2RlKTtcbiAgICB2YXIgdHJhbnNpdGlvbiQkMSA9IHZub2RlLmRhdGEgJiYgdm5vZGUuZGF0YS50cmFuc2l0aW9uO1xuICAgIHZhciBvcmlnaW5hbERpc3BsYXkgPSBlbC5fX3ZPcmlnaW5hbERpc3BsYXkgPVxuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnID8gJycgOiBlbC5zdHlsZS5kaXNwbGF5O1xuICAgIGlmICh2YWx1ZSAmJiB0cmFuc2l0aW9uJCQxKSB7XG4gICAgICB2bm9kZS5kYXRhLnNob3cgPSB0cnVlO1xuICAgICAgZW50ZXIodm5vZGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IG9yaWdpbmFsRGlzcGxheTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gdmFsdWUgPyBvcmlnaW5hbERpc3BsYXkgOiAnbm9uZSc7XG4gICAgfVxuICB9LFxuXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlIChlbCwgcmVmLCB2bm9kZSkge1xuICAgIHZhciB2YWx1ZSA9IHJlZi52YWx1ZTtcbiAgICB2YXIgb2xkVmFsdWUgPSByZWYub2xkVmFsdWU7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIXZhbHVlID09PSAhb2xkVmFsdWUpIHsgcmV0dXJuIH1cbiAgICB2bm9kZSA9IGxvY2F0ZU5vZGUodm5vZGUpO1xuICAgIHZhciB0cmFuc2l0aW9uJCQxID0gdm5vZGUuZGF0YSAmJiB2bm9kZS5kYXRhLnRyYW5zaXRpb247XG4gICAgaWYgKHRyYW5zaXRpb24kJDEpIHtcbiAgICAgIHZub2RlLmRhdGEuc2hvdyA9IHRydWU7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgZW50ZXIodm5vZGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gZWwuX192T3JpZ2luYWxEaXNwbGF5O1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxlYXZlKHZub2RlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZSA/IGVsLl9fdk9yaWdpbmFsRGlzcGxheSA6ICdub25lJztcbiAgICB9XG4gIH0sXG5cbiAgdW5iaW5kOiBmdW5jdGlvbiB1bmJpbmQgKFxuICAgIGVsLFxuICAgIGJpbmRpbmcsXG4gICAgdm5vZGUsXG4gICAgb2xkVm5vZGUsXG4gICAgaXNEZXN0cm95XG4gICkge1xuICAgIGlmICghaXNEZXN0cm95KSB7XG4gICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gZWwuX192T3JpZ2luYWxEaXNwbGF5O1xuICAgIH1cbiAgfVxufTtcblxudmFyIHBsYXRmb3JtRGlyZWN0aXZlcyA9IHtcbiAgbW9kZWw6IGRpcmVjdGl2ZSxcbiAgc2hvdzogc2hvd1xufTtcblxuLyogICovXG5cbnZhciB0cmFuc2l0aW9uUHJvcHMgPSB7XG4gIG5hbWU6IFN0cmluZyxcbiAgYXBwZWFyOiBCb29sZWFuLFxuICBjc3M6IEJvb2xlYW4sXG4gIG1vZGU6IFN0cmluZyxcbiAgdHlwZTogU3RyaW5nLFxuICBlbnRlckNsYXNzOiBTdHJpbmcsXG4gIGxlYXZlQ2xhc3M6IFN0cmluZyxcbiAgZW50ZXJUb0NsYXNzOiBTdHJpbmcsXG4gIGxlYXZlVG9DbGFzczogU3RyaW5nLFxuICBlbnRlckFjdGl2ZUNsYXNzOiBTdHJpbmcsXG4gIGxlYXZlQWN0aXZlQ2xhc3M6IFN0cmluZyxcbiAgYXBwZWFyQ2xhc3M6IFN0cmluZyxcbiAgYXBwZWFyQWN0aXZlQ2xhc3M6IFN0cmluZyxcbiAgYXBwZWFyVG9DbGFzczogU3RyaW5nLFxuICBkdXJhdGlvbjogW051bWJlciwgU3RyaW5nLCBPYmplY3RdXG59O1xuXG4vLyBpbiBjYXNlIHRoZSBjaGlsZCBpcyBhbHNvIGFuIGFic3RyYWN0IGNvbXBvbmVudCwgZS5nLiA8a2VlcC1hbGl2ZT5cbi8vIHdlIHdhbnQgdG8gcmVjdXJzaXZlbHkgcmV0cmlldmUgdGhlIHJlYWwgY29tcG9uZW50IHRvIGJlIHJlbmRlcmVkXG5mdW5jdGlvbiBnZXRSZWFsQ2hpbGQgKHZub2RlKSB7XG4gIHZhciBjb21wT3B0aW9ucyA9IHZub2RlICYmIHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gIGlmIChjb21wT3B0aW9ucyAmJiBjb21wT3B0aW9ucy5DdG9yLm9wdGlvbnMuYWJzdHJhY3QpIHtcbiAgICByZXR1cm4gZ2V0UmVhbENoaWxkKGdldEZpcnN0Q29tcG9uZW50Q2hpbGQoY29tcE9wdGlvbnMuY2hpbGRyZW4pKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiB2bm9kZVxuICB9XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RUcmFuc2l0aW9uRGF0YSAoY29tcCkge1xuICB2YXIgZGF0YSA9IHt9O1xuICB2YXIgb3B0aW9ucyA9IGNvbXAuJG9wdGlvbnM7XG4gIC8vIHByb3BzXG4gIGZvciAodmFyIGtleSBpbiBvcHRpb25zLnByb3BzRGF0YSkge1xuICAgIGRhdGFba2V5XSA9IGNvbXBba2V5XTtcbiAgfVxuICAvLyBldmVudHMuXG4gIC8vIGV4dHJhY3QgbGlzdGVuZXJzIGFuZCBwYXNzIHRoZW0gZGlyZWN0bHkgdG8gdGhlIHRyYW5zaXRpb24gbWV0aG9kc1xuICB2YXIgbGlzdGVuZXJzID0gb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xuICBmb3IgKHZhciBrZXkkMSBpbiBsaXN0ZW5lcnMpIHtcbiAgICBkYXRhW2NhbWVsaXplKGtleSQxKV0gPSBsaXN0ZW5lcnNba2V5JDFdO1xuICB9XG4gIHJldHVybiBkYXRhXG59XG5cbmZ1bmN0aW9uIHBsYWNlaG9sZGVyIChoLCByYXdDaGlsZCkge1xuICBpZiAoL1xcZC1rZWVwLWFsaXZlJC8udGVzdChyYXdDaGlsZC50YWcpKSB7XG4gICAgcmV0dXJuIGgoJ2tlZXAtYWxpdmUnLCB7XG4gICAgICBwcm9wczogcmF3Q2hpbGQuY29tcG9uZW50T3B0aW9ucy5wcm9wc0RhdGFcbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGhhc1BhcmVudFRyYW5zaXRpb24gKHZub2RlKSB7XG4gIHdoaWxlICgodm5vZGUgPSB2bm9kZS5wYXJlbnQpKSB7XG4gICAgaWYgKHZub2RlLmRhdGEudHJhbnNpdGlvbikge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNTYW1lQ2hpbGQgKGNoaWxkLCBvbGRDaGlsZCkge1xuICByZXR1cm4gb2xkQ2hpbGQua2V5ID09PSBjaGlsZC5rZXkgJiYgb2xkQ2hpbGQudGFnID09PSBjaGlsZC50YWdcbn1cblxudmFyIGlzTm90VGV4dE5vZGUgPSBmdW5jdGlvbiAoYykgeyByZXR1cm4gYy50YWcgfHwgaXNBc3luY1BsYWNlaG9sZGVyKGMpOyB9O1xuXG52YXIgaXNWU2hvd0RpcmVjdGl2ZSA9IGZ1bmN0aW9uIChkKSB7IHJldHVybiBkLm5hbWUgPT09ICdzaG93JzsgfTtcblxudmFyIFRyYW5zaXRpb24gPSB7XG4gIG5hbWU6ICd0cmFuc2l0aW9uJyxcbiAgcHJvcHM6IHRyYW5zaXRpb25Qcm9wcyxcbiAgYWJzdHJhY3Q6IHRydWUsXG5cbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIgKGgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuJHNsb3RzLmRlZmF1bHQ7XG4gICAgaWYgKCFjaGlsZHJlbikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gZmlsdGVyIG91dCB0ZXh0IG5vZGVzIChwb3NzaWJsZSB3aGl0ZXNwYWNlcylcbiAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmZpbHRlcihpc05vdFRleHROb2RlKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIWNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gd2FybiBtdWx0aXBsZSBlbGVtZW50c1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICc8dHJhbnNpdGlvbj4gY2FuIG9ubHkgYmUgdXNlZCBvbiBhIHNpbmdsZSBlbGVtZW50LiBVc2UgJyArXG4gICAgICAgICc8dHJhbnNpdGlvbi1ncm91cD4gZm9yIGxpc3RzLicsXG4gICAgICAgIHRoaXMuJHBhcmVudFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgbW9kZSA9IHRoaXMubW9kZTtcblxuICAgIC8vIHdhcm4gaW52YWxpZCBtb2RlXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgIG1vZGUgJiYgbW9kZSAhPT0gJ2luLW91dCcgJiYgbW9kZSAhPT0gJ291dC1pbidcbiAgICApIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdpbnZhbGlkIDx0cmFuc2l0aW9uPiBtb2RlOiAnICsgbW9kZSxcbiAgICAgICAgdGhpcy4kcGFyZW50XG4gICAgICApO1xuICAgIH1cblxuICAgIHZhciByYXdDaGlsZCA9IGNoaWxkcmVuWzBdO1xuXG4gICAgLy8gaWYgdGhpcyBpcyBhIGNvbXBvbmVudCByb290IG5vZGUgYW5kIHRoZSBjb21wb25lbnQnc1xuICAgIC8vIHBhcmVudCBjb250YWluZXIgbm9kZSBhbHNvIGhhcyB0cmFuc2l0aW9uLCBza2lwLlxuICAgIGlmIChoYXNQYXJlbnRUcmFuc2l0aW9uKHRoaXMuJHZub2RlKSkge1xuICAgICAgcmV0dXJuIHJhd0NoaWxkXG4gICAgfVxuXG4gICAgLy8gYXBwbHkgdHJhbnNpdGlvbiBkYXRhIHRvIGNoaWxkXG4gICAgLy8gdXNlIGdldFJlYWxDaGlsZCgpIHRvIGlnbm9yZSBhYnN0cmFjdCBjb21wb25lbnRzIGUuZy4ga2VlcC1hbGl2ZVxuICAgIHZhciBjaGlsZCA9IGdldFJlYWxDaGlsZChyYXdDaGlsZCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFjaGlsZCkge1xuICAgICAgcmV0dXJuIHJhd0NoaWxkXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2xlYXZpbmcpIHtcbiAgICAgIHJldHVybiBwbGFjZWhvbGRlcihoLCByYXdDaGlsZClcbiAgICB9XG5cbiAgICAvLyBlbnN1cmUgYSBrZXkgdGhhdCBpcyB1bmlxdWUgdG8gdGhlIHZub2RlIHR5cGUgYW5kIHRvIHRoaXMgdHJhbnNpdGlvblxuICAgIC8vIGNvbXBvbmVudCBpbnN0YW5jZS4gVGhpcyBrZXkgd2lsbCBiZSB1c2VkIHRvIHJlbW92ZSBwZW5kaW5nIGxlYXZpbmcgbm9kZXNcbiAgICAvLyBkdXJpbmcgZW50ZXJpbmcuXG4gICAgdmFyIGlkID0gXCJfX3RyYW5zaXRpb24tXCIgKyAodGhpcy5fdWlkKSArIFwiLVwiO1xuICAgIGNoaWxkLmtleSA9IGNoaWxkLmtleSA9PSBudWxsXG4gICAgICA/IGNoaWxkLmlzQ29tbWVudFxuICAgICAgICA/IGlkICsgJ2NvbW1lbnQnXG4gICAgICAgIDogaWQgKyBjaGlsZC50YWdcbiAgICAgIDogaXNQcmltaXRpdmUoY2hpbGQua2V5KVxuICAgICAgICA/IChTdHJpbmcoY2hpbGQua2V5KS5pbmRleE9mKGlkKSA9PT0gMCA/IGNoaWxkLmtleSA6IGlkICsgY2hpbGQua2V5KVxuICAgICAgICA6IGNoaWxkLmtleTtcblxuICAgIHZhciBkYXRhID0gKGNoaWxkLmRhdGEgfHwgKGNoaWxkLmRhdGEgPSB7fSkpLnRyYW5zaXRpb24gPSBleHRyYWN0VHJhbnNpdGlvbkRhdGEodGhpcyk7XG4gICAgdmFyIG9sZFJhd0NoaWxkID0gdGhpcy5fdm5vZGU7XG4gICAgdmFyIG9sZENoaWxkID0gZ2V0UmVhbENoaWxkKG9sZFJhd0NoaWxkKTtcblxuICAgIC8vIG1hcmsgdi1zaG93XG4gICAgLy8gc28gdGhhdCB0aGUgdHJhbnNpdGlvbiBtb2R1bGUgY2FuIGhhbmQgb3ZlciB0aGUgY29udHJvbCB0byB0aGUgZGlyZWN0aXZlXG4gICAgaWYgKGNoaWxkLmRhdGEuZGlyZWN0aXZlcyAmJiBjaGlsZC5kYXRhLmRpcmVjdGl2ZXMuc29tZShpc1ZTaG93RGlyZWN0aXZlKSkge1xuICAgICAgY2hpbGQuZGF0YS5zaG93ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBvbGRDaGlsZCAmJlxuICAgICAgb2xkQ2hpbGQuZGF0YSAmJlxuICAgICAgIWlzU2FtZUNoaWxkKGNoaWxkLCBvbGRDaGlsZCkgJiZcbiAgICAgICFpc0FzeW5jUGxhY2Vob2xkZXIob2xkQ2hpbGQpICYmXG4gICAgICAvLyAjNjY4NyBjb21wb25lbnQgcm9vdCBpcyBhIGNvbW1lbnQgbm9kZVxuICAgICAgIShvbGRDaGlsZC5jb21wb25lbnRJbnN0YW5jZSAmJiBvbGRDaGlsZC5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUuaXNDb21tZW50KVxuICAgICkge1xuICAgICAgLy8gcmVwbGFjZSBvbGQgY2hpbGQgdHJhbnNpdGlvbiBkYXRhIHdpdGggZnJlc2ggb25lXG4gICAgICAvLyBpbXBvcnRhbnQgZm9yIGR5bmFtaWMgdHJhbnNpdGlvbnMhXG4gICAgICB2YXIgb2xkRGF0YSA9IG9sZENoaWxkLmRhdGEudHJhbnNpdGlvbiA9IGV4dGVuZCh7fSwgZGF0YSk7XG4gICAgICAvLyBoYW5kbGUgdHJhbnNpdGlvbiBtb2RlXG4gICAgICBpZiAobW9kZSA9PT0gJ291dC1pbicpIHtcbiAgICAgICAgLy8gcmV0dXJuIHBsYWNlaG9sZGVyIG5vZGUgYW5kIHF1ZXVlIHVwZGF0ZSB3aGVuIGxlYXZlIGZpbmlzaGVzXG4gICAgICAgIHRoaXMuX2xlYXZpbmcgPSB0cnVlO1xuICAgICAgICBtZXJnZVZOb2RlSG9vayhvbGREYXRhLCAnYWZ0ZXJMZWF2ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0aGlzJDEuX2xlYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzJDEuJGZvcmNlVXBkYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGxhY2Vob2xkZXIoaCwgcmF3Q2hpbGQpXG4gICAgICB9IGVsc2UgaWYgKG1vZGUgPT09ICdpbi1vdXQnKSB7XG4gICAgICAgIGlmIChpc0FzeW5jUGxhY2Vob2xkZXIoY2hpbGQpKSB7XG4gICAgICAgICAgcmV0dXJuIG9sZFJhd0NoaWxkXG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRlbGF5ZWRMZWF2ZTtcbiAgICAgICAgdmFyIHBlcmZvcm1MZWF2ZSA9IGZ1bmN0aW9uICgpIHsgZGVsYXllZExlYXZlKCk7IH07XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKGRhdGEsICdhZnRlckVudGVyJywgcGVyZm9ybUxlYXZlKTtcbiAgICAgICAgbWVyZ2VWTm9kZUhvb2soZGF0YSwgJ2VudGVyQ2FuY2VsbGVkJywgcGVyZm9ybUxlYXZlKTtcbiAgICAgICAgbWVyZ2VWTm9kZUhvb2sob2xkRGF0YSwgJ2RlbGF5TGVhdmUnLCBmdW5jdGlvbiAobGVhdmUpIHsgZGVsYXllZExlYXZlID0gbGVhdmU7IH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByYXdDaGlsZFxuICB9XG59O1xuXG4vKiAgKi9cblxudmFyIHByb3BzID0gZXh0ZW5kKHtcbiAgdGFnOiBTdHJpbmcsXG4gIG1vdmVDbGFzczogU3RyaW5nXG59LCB0cmFuc2l0aW9uUHJvcHMpO1xuXG5kZWxldGUgcHJvcHMubW9kZTtcblxudmFyIFRyYW5zaXRpb25Hcm91cCA9IHtcbiAgcHJvcHM6IHByb3BzLFxuXG4gIGJlZm9yZU1vdW50OiBmdW5jdGlvbiBiZWZvcmVNb3VudCAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICB2YXIgdXBkYXRlID0gdGhpcy5fdXBkYXRlO1xuICAgIHRoaXMuX3VwZGF0ZSA9IGZ1bmN0aW9uICh2bm9kZSwgaHlkcmF0aW5nKSB7XG4gICAgICB2YXIgcmVzdG9yZUFjdGl2ZUluc3RhbmNlID0gc2V0QWN0aXZlSW5zdGFuY2UodGhpcyQxKTtcbiAgICAgIC8vIGZvcmNlIHJlbW92aW5nIHBhc3NcbiAgICAgIHRoaXMkMS5fX3BhdGNoX18oXG4gICAgICAgIHRoaXMkMS5fdm5vZGUsXG4gICAgICAgIHRoaXMkMS5rZXB0LFxuICAgICAgICBmYWxzZSwgLy8gaHlkcmF0aW5nXG4gICAgICAgIHRydWUgLy8gcmVtb3ZlT25seSAoIWltcG9ydGFudCwgYXZvaWRzIHVubmVjZXNzYXJ5IG1vdmVzKVxuICAgICAgKTtcbiAgICAgIHRoaXMkMS5fdm5vZGUgPSB0aGlzJDEua2VwdDtcbiAgICAgIHJlc3RvcmVBY3RpdmVJbnN0YW5jZSgpO1xuICAgICAgdXBkYXRlLmNhbGwodGhpcyQxLCB2bm9kZSwgaHlkcmF0aW5nKTtcbiAgICB9O1xuICB9LFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyIChoKSB7XG4gICAgdmFyIHRhZyA9IHRoaXMudGFnIHx8IHRoaXMuJHZub2RlLmRhdGEudGFnIHx8ICdzcGFuJztcbiAgICB2YXIgbWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5wcmV2Q2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuO1xuICAgIHZhciByYXdDaGlsZHJlbiA9IHRoaXMuJHNsb3RzLmRlZmF1bHQgfHwgW107XG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbiA9IFtdO1xuICAgIHZhciB0cmFuc2l0aW9uRGF0YSA9IGV4dHJhY3RUcmFuc2l0aW9uRGF0YSh0aGlzKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmF3Q2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjID0gcmF3Q2hpbGRyZW5baV07XG4gICAgICBpZiAoYy50YWcpIHtcbiAgICAgICAgaWYgKGMua2V5ICE9IG51bGwgJiYgU3RyaW5nKGMua2V5KS5pbmRleE9mKCdfX3ZsaXN0JykgIT09IDApIHtcbiAgICAgICAgICBjaGlsZHJlbi5wdXNoKGMpO1xuICAgICAgICAgIG1hcFtjLmtleV0gPSBjXG4gICAgICAgICAgOyhjLmRhdGEgfHwgKGMuZGF0YSA9IHt9KSkudHJhbnNpdGlvbiA9IHRyYW5zaXRpb25EYXRhO1xuICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB2YXIgb3B0cyA9IGMuY29tcG9uZW50T3B0aW9ucztcbiAgICAgICAgICB2YXIgbmFtZSA9IG9wdHMgPyAob3B0cy5DdG9yLm9wdGlvbnMubmFtZSB8fCBvcHRzLnRhZyB8fCAnJykgOiBjLnRhZztcbiAgICAgICAgICB3YXJuKChcIjx0cmFuc2l0aW9uLWdyb3VwPiBjaGlsZHJlbiBtdXN0IGJlIGtleWVkOiA8XCIgKyBuYW1lICsgXCI+XCIpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcmV2Q2hpbGRyZW4pIHtcbiAgICAgIHZhciBrZXB0ID0gW107XG4gICAgICB2YXIgcmVtb3ZlZCA9IFtdO1xuICAgICAgZm9yICh2YXIgaSQxID0gMDsgaSQxIDwgcHJldkNoaWxkcmVuLmxlbmd0aDsgaSQxKyspIHtcbiAgICAgICAgdmFyIGMkMSA9IHByZXZDaGlsZHJlbltpJDFdO1xuICAgICAgICBjJDEuZGF0YS50cmFuc2l0aW9uID0gdHJhbnNpdGlvbkRhdGE7XG4gICAgICAgIGMkMS5kYXRhLnBvcyA9IGMkMS5lbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGlmIChtYXBbYyQxLmtleV0pIHtcbiAgICAgICAgICBrZXB0LnB1c2goYyQxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZW1vdmVkLnB1c2goYyQxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5rZXB0ID0gaCh0YWcsIG51bGwsIGtlcHQpO1xuICAgICAgdGhpcy5yZW1vdmVkID0gcmVtb3ZlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gaCh0YWcsIG51bGwsIGNoaWxkcmVuKVxuICB9LFxuXG4gIHVwZGF0ZWQ6IGZ1bmN0aW9uIHVwZGF0ZWQgKCkge1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJldkNoaWxkcmVuO1xuICAgIHZhciBtb3ZlQ2xhc3MgPSB0aGlzLm1vdmVDbGFzcyB8fCAoKHRoaXMubmFtZSB8fCAndicpICsgJy1tb3ZlJyk7XG4gICAgaWYgKCFjaGlsZHJlbi5sZW5ndGggfHwgIXRoaXMuaGFzTW92ZShjaGlsZHJlblswXS5lbG0sIG1vdmVDbGFzcykpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIHdlIGRpdmlkZSB0aGUgd29yayBpbnRvIHRocmVlIGxvb3BzIHRvIGF2b2lkIG1peGluZyBET00gcmVhZHMgYW5kIHdyaXRlc1xuICAgIC8vIGluIGVhY2ggaXRlcmF0aW9uIC0gd2hpY2ggaGVscHMgcHJldmVudCBsYXlvdXQgdGhyYXNoaW5nLlxuICAgIGNoaWxkcmVuLmZvckVhY2goY2FsbFBlbmRpbmdDYnMpO1xuICAgIGNoaWxkcmVuLmZvckVhY2gocmVjb3JkUG9zaXRpb24pO1xuICAgIGNoaWxkcmVuLmZvckVhY2goYXBwbHlUcmFuc2xhdGlvbik7XG5cbiAgICAvLyBmb3JjZSByZWZsb3cgdG8gcHV0IGV2ZXJ5dGhpbmcgaW4gcG9zaXRpb25cbiAgICAvLyBhc3NpZ24gdG8gdGhpcyB0byBhdm9pZCBiZWluZyByZW1vdmVkIGluIHRyZWUtc2hha2luZ1xuICAgIC8vICRmbG93LWRpc2FibGUtbGluZVxuICAgIHRoaXMuX3JlZmxvdyA9IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0O1xuXG4gICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoYykge1xuICAgICAgaWYgKGMuZGF0YS5tb3ZlZCkge1xuICAgICAgICB2YXIgZWwgPSBjLmVsbTtcbiAgICAgICAgdmFyIHMgPSBlbC5zdHlsZTtcbiAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xuICAgICAgICBzLnRyYW5zZm9ybSA9IHMuV2Via2l0VHJhbnNmb3JtID0gcy50cmFuc2l0aW9uRHVyYXRpb24gPSAnJztcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcih0cmFuc2l0aW9uRW5kRXZlbnQsIGVsLl9tb3ZlQ2IgPSBmdW5jdGlvbiBjYiAoZSkge1xuICAgICAgICAgIGlmIChlICYmIGUudGFyZ2V0ICE9PSBlbCkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZSB8fCAvdHJhbnNmb3JtJC8udGVzdChlLnByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIodHJhbnNpdGlvbkVuZEV2ZW50LCBjYik7XG4gICAgICAgICAgICBlbC5fbW92ZUNiID0gbnVsbDtcbiAgICAgICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbW92ZUNsYXNzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBoYXNNb3ZlOiBmdW5jdGlvbiBoYXNNb3ZlIChlbCwgbW92ZUNsYXNzKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICghaGFzVHJhbnNpdGlvbikge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKHRoaXMuX2hhc01vdmUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc01vdmVcbiAgICAgIH1cbiAgICAgIC8vIERldGVjdCB3aGV0aGVyIGFuIGVsZW1lbnQgd2l0aCB0aGUgbW92ZSBjbGFzcyBhcHBsaWVkIGhhc1xuICAgICAgLy8gQ1NTIHRyYW5zaXRpb25zLiBTaW5jZSB0aGUgZWxlbWVudCBtYXkgYmUgaW5zaWRlIGFuIGVudGVyaW5nXG4gICAgICAvLyB0cmFuc2l0aW9uIGF0IHRoaXMgdmVyeSBtb21lbnQsIHdlIG1ha2UgYSBjbG9uZSBvZiBpdCBhbmQgcmVtb3ZlXG4gICAgICAvLyBhbGwgb3RoZXIgdHJhbnNpdGlvbiBjbGFzc2VzIGFwcGxpZWQgdG8gZW5zdXJlIG9ubHkgdGhlIG1vdmUgY2xhc3NcbiAgICAgIC8vIGlzIGFwcGxpZWQuXG4gICAgICB2YXIgY2xvbmUgPSBlbC5jbG9uZU5vZGUoKTtcbiAgICAgIGlmIChlbC5fdHJhbnNpdGlvbkNsYXNzZXMpIHtcbiAgICAgICAgZWwuX3RyYW5zaXRpb25DbGFzc2VzLmZvckVhY2goZnVuY3Rpb24gKGNscykgeyByZW1vdmVDbGFzcyhjbG9uZSwgY2xzKTsgfSk7XG4gICAgICB9XG4gICAgICBhZGRDbGFzcyhjbG9uZSwgbW92ZUNsYXNzKTtcbiAgICAgIGNsb25lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB0aGlzLiRlbC5hcHBlbmRDaGlsZChjbG9uZSk7XG4gICAgICB2YXIgaW5mbyA9IGdldFRyYW5zaXRpb25JbmZvKGNsb25lKTtcbiAgICAgIHRoaXMuJGVsLnJlbW92ZUNoaWxkKGNsb25lKTtcbiAgICAgIHJldHVybiAodGhpcy5faGFzTW92ZSA9IGluZm8uaGFzVHJhbnNmb3JtKVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gY2FsbFBlbmRpbmdDYnMgKGMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChjLmVsbS5fbW92ZUNiKSB7XG4gICAgYy5lbG0uX21vdmVDYigpO1xuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoYy5lbG0uX2VudGVyQ2IpIHtcbiAgICBjLmVsbS5fZW50ZXJDYigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlY29yZFBvc2l0aW9uIChjKSB7XG4gIGMuZGF0YS5uZXdQb3MgPSBjLmVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbn1cblxuZnVuY3Rpb24gYXBwbHlUcmFuc2xhdGlvbiAoYykge1xuICB2YXIgb2xkUG9zID0gYy5kYXRhLnBvcztcbiAgdmFyIG5ld1BvcyA9IGMuZGF0YS5uZXdQb3M7XG4gIHZhciBkeCA9IG9sZFBvcy5sZWZ0IC0gbmV3UG9zLmxlZnQ7XG4gIHZhciBkeSA9IG9sZFBvcy50b3AgLSBuZXdQb3MudG9wO1xuICBpZiAoZHggfHwgZHkpIHtcbiAgICBjLmRhdGEubW92ZWQgPSB0cnVlO1xuICAgIHZhciBzID0gYy5lbG0uc3R5bGU7XG4gICAgcy50cmFuc2Zvcm0gPSBzLldlYmtpdFRyYW5zZm9ybSA9IFwidHJhbnNsYXRlKFwiICsgZHggKyBcInB4LFwiICsgZHkgKyBcInB4KVwiO1xuICAgIHMudHJhbnNpdGlvbkR1cmF0aW9uID0gJzBzJztcbiAgfVxufVxuXG52YXIgcGxhdGZvcm1Db21wb25lbnRzID0ge1xuICBUcmFuc2l0aW9uOiBUcmFuc2l0aW9uLFxuICBUcmFuc2l0aW9uR3JvdXA6IFRyYW5zaXRpb25Hcm91cFxufTtcblxuLyogICovXG5cbi8vIGluc3RhbGwgcGxhdGZvcm0gc3BlY2lmaWMgdXRpbHNcblZ1ZS5jb25maWcubXVzdFVzZVByb3AgPSBtdXN0VXNlUHJvcDtcblZ1ZS5jb25maWcuaXNSZXNlcnZlZFRhZyA9IGlzUmVzZXJ2ZWRUYWc7XG5WdWUuY29uZmlnLmlzUmVzZXJ2ZWRBdHRyID0gaXNSZXNlcnZlZEF0dHI7XG5WdWUuY29uZmlnLmdldFRhZ05hbWVzcGFjZSA9IGdldFRhZ05hbWVzcGFjZTtcblZ1ZS5jb25maWcuaXNVbmtub3duRWxlbWVudCA9IGlzVW5rbm93bkVsZW1lbnQ7XG5cbi8vIGluc3RhbGwgcGxhdGZvcm0gcnVudGltZSBkaXJlY3RpdmVzICYgY29tcG9uZW50c1xuZXh0ZW5kKFZ1ZS5vcHRpb25zLmRpcmVjdGl2ZXMsIHBsYXRmb3JtRGlyZWN0aXZlcyk7XG5leHRlbmQoVnVlLm9wdGlvbnMuY29tcG9uZW50cywgcGxhdGZvcm1Db21wb25lbnRzKTtcblxuLy8gaW5zdGFsbCBwbGF0Zm9ybSBwYXRjaCBmdW5jdGlvblxuVnVlLnByb3RvdHlwZS5fX3BhdGNoX18gPSBpbkJyb3dzZXIgPyBwYXRjaCA6IG5vb3A7XG5cbi8vIHB1YmxpYyBtb3VudCBtZXRob2RcblZ1ZS5wcm90b3R5cGUuJG1vdW50ID0gZnVuY3Rpb24gKFxuICBlbCxcbiAgaHlkcmF0aW5nXG4pIHtcbiAgZWwgPSBlbCAmJiBpbkJyb3dzZXIgPyBxdWVyeShlbCkgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBtb3VudENvbXBvbmVudCh0aGlzLCBlbCwgaHlkcmF0aW5nKVxufTtcblxuLy8gZGV2dG9vbHMgZ2xvYmFsIGhvb2tcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5pZiAoaW5Ccm93c2VyKSB7XG4gIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgIGlmIChjb25maWcuZGV2dG9vbHMpIHtcbiAgICAgIGlmIChkZXZ0b29scykge1xuICAgICAgICBkZXZ0b29scy5lbWl0KCdpbml0JywgVnVlKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICd0ZXN0J1xuICAgICAgKSB7XG4gICAgICAgIGNvbnNvbGVbY29uc29sZS5pbmZvID8gJ2luZm8nIDogJ2xvZyddKFxuICAgICAgICAgICdEb3dubG9hZCB0aGUgVnVlIERldnRvb2xzIGV4dGVuc2lvbiBmb3IgYSBiZXR0ZXIgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZTpcXG4nICtcbiAgICAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZS1kZXZ0b29scydcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAndGVzdCcgJiZcbiAgICAgIGNvbmZpZy5wcm9kdWN0aW9uVGlwICE9PSBmYWxzZSAmJlxuICAgICAgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnXG4gICAgKSB7XG4gICAgICBjb25zb2xlW2NvbnNvbGUuaW5mbyA/ICdpbmZvJyA6ICdsb2cnXShcbiAgICAgICAgXCJZb3UgYXJlIHJ1bm5pbmcgVnVlIGluIGRldmVsb3BtZW50IG1vZGUuXFxuXCIgK1xuICAgICAgICBcIk1ha2Ugc3VyZSB0byB0dXJuIG9uIHByb2R1Y3Rpb24gbW9kZSB3aGVuIGRlcGxveWluZyBmb3IgcHJvZHVjdGlvbi5cXG5cIiArXG4gICAgICAgIFwiU2VlIG1vcmUgdGlwcyBhdCBodHRwczovL3Z1ZWpzLm9yZy9ndWlkZS9kZXBsb3ltZW50Lmh0bWxcIlxuICAgICAgKTtcbiAgICB9XG4gIH0sIDApO1xufVxuXG4vKiAgKi9cblxudmFyIGRlZmF1bHRUYWdSRSA9IC9cXHtcXHsoKD86LnxcXHI/XFxuKSs/KVxcfVxcfS9nO1xudmFyIHJlZ2V4RXNjYXBlUkUgPSAvWy0uKis/XiR7fSgpfFtcXF1cXC9cXFxcXS9nO1xuXG52YXIgYnVpbGRSZWdleCA9IGNhY2hlZChmdW5jdGlvbiAoZGVsaW1pdGVycykge1xuICB2YXIgb3BlbiA9IGRlbGltaXRlcnNbMF0ucmVwbGFjZShyZWdleEVzY2FwZVJFLCAnXFxcXCQmJyk7XG4gIHZhciBjbG9zZSA9IGRlbGltaXRlcnNbMV0ucmVwbGFjZShyZWdleEVzY2FwZVJFLCAnXFxcXCQmJyk7XG4gIHJldHVybiBuZXcgUmVnRXhwKG9wZW4gKyAnKCg/Oi58XFxcXG4pKz8pJyArIGNsb3NlLCAnZycpXG59KTtcblxuXG5cbmZ1bmN0aW9uIHBhcnNlVGV4dCAoXG4gIHRleHQsXG4gIGRlbGltaXRlcnNcbikge1xuICB2YXIgdGFnUkUgPSBkZWxpbWl0ZXJzID8gYnVpbGRSZWdleChkZWxpbWl0ZXJzKSA6IGRlZmF1bHRUYWdSRTtcbiAgaWYgKCF0YWdSRS50ZXN0KHRleHQpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHRva2VucyA9IFtdO1xuICB2YXIgcmF3VG9rZW5zID0gW107XG4gIHZhciBsYXN0SW5kZXggPSB0YWdSRS5sYXN0SW5kZXggPSAwO1xuICB2YXIgbWF0Y2gsIGluZGV4LCB0b2tlblZhbHVlO1xuICB3aGlsZSAoKG1hdGNoID0gdGFnUkUuZXhlYyh0ZXh0KSkpIHtcbiAgICBpbmRleCA9IG1hdGNoLmluZGV4O1xuICAgIC8vIHB1c2ggdGV4dCB0b2tlblxuICAgIGlmIChpbmRleCA+IGxhc3RJbmRleCkge1xuICAgICAgcmF3VG9rZW5zLnB1c2godG9rZW5WYWx1ZSA9IHRleHQuc2xpY2UobGFzdEluZGV4LCBpbmRleCkpO1xuICAgICAgdG9rZW5zLnB1c2goSlNPTi5zdHJpbmdpZnkodG9rZW5WYWx1ZSkpO1xuICAgIH1cbiAgICAvLyB0YWcgdG9rZW5cbiAgICB2YXIgZXhwID0gcGFyc2VGaWx0ZXJzKG1hdGNoWzFdLnRyaW0oKSk7XG4gICAgdG9rZW5zLnB1c2goKFwiX3MoXCIgKyBleHAgKyBcIilcIikpO1xuICAgIHJhd1Rva2Vucy5wdXNoKHsgJ0BiaW5kaW5nJzogZXhwIH0pO1xuICAgIGxhc3RJbmRleCA9IGluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoO1xuICB9XG4gIGlmIChsYXN0SW5kZXggPCB0ZXh0Lmxlbmd0aCkge1xuICAgIHJhd1Rva2Vucy5wdXNoKHRva2VuVmFsdWUgPSB0ZXh0LnNsaWNlKGxhc3RJbmRleCkpO1xuICAgIHRva2Vucy5wdXNoKEpTT04uc3RyaW5naWZ5KHRva2VuVmFsdWUpKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGV4cHJlc3Npb246IHRva2Vucy5qb2luKCcrJyksXG4gICAgdG9rZW5zOiByYXdUb2tlbnNcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gdHJhbnNmb3JtTm9kZSAoZWwsIG9wdGlvbnMpIHtcbiAgdmFyIHdhcm4gPSBvcHRpb25zLndhcm4gfHwgYmFzZVdhcm47XG4gIHZhciBzdGF0aWNDbGFzcyA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICdjbGFzcycpO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBzdGF0aWNDbGFzcykge1xuICAgIHZhciByZXMgPSBwYXJzZVRleHQoc3RhdGljQ2xhc3MsIG9wdGlvbnMuZGVsaW1pdGVycyk7XG4gICAgaWYgKHJlcykge1xuICAgICAgd2FybihcbiAgICAgICAgXCJjbGFzcz1cXFwiXCIgKyBzdGF0aWNDbGFzcyArIFwiXFxcIjogXCIgK1xuICAgICAgICAnSW50ZXJwb2xhdGlvbiBpbnNpZGUgYXR0cmlidXRlcyBoYXMgYmVlbiByZW1vdmVkLiAnICtcbiAgICAgICAgJ1VzZSB2LWJpbmQgb3IgdGhlIGNvbG9uIHNob3J0aGFuZCBpbnN0ZWFkLiBGb3IgZXhhbXBsZSwgJyArXG4gICAgICAgICdpbnN0ZWFkIG9mIDxkaXYgY2xhc3M9XCJ7eyB2YWwgfX1cIj4sIHVzZSA8ZGl2IDpjbGFzcz1cInZhbFwiPi4nLFxuICAgICAgICBlbC5yYXdBdHRyc01hcFsnY2xhc3MnXVxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgaWYgKHN0YXRpY0NsYXNzKSB7XG4gICAgZWwuc3RhdGljQ2xhc3MgPSBKU09OLnN0cmluZ2lmeShzdGF0aWNDbGFzcyk7XG4gIH1cbiAgdmFyIGNsYXNzQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAnY2xhc3MnLCBmYWxzZSAvKiBnZXRTdGF0aWMgKi8pO1xuICBpZiAoY2xhc3NCaW5kaW5nKSB7XG4gICAgZWwuY2xhc3NCaW5kaW5nID0gY2xhc3NCaW5kaW5nO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbkRhdGEgKGVsKSB7XG4gIHZhciBkYXRhID0gJyc7XG4gIGlmIChlbC5zdGF0aWNDbGFzcykge1xuICAgIGRhdGEgKz0gXCJzdGF0aWNDbGFzczpcIiArIChlbC5zdGF0aWNDbGFzcykgKyBcIixcIjtcbiAgfVxuICBpZiAoZWwuY2xhc3NCaW5kaW5nKSB7XG4gICAgZGF0YSArPSBcImNsYXNzOlwiICsgKGVsLmNsYXNzQmluZGluZykgKyBcIixcIjtcbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG52YXIga2xhc3MkMSA9IHtcbiAgc3RhdGljS2V5czogWydzdGF0aWNDbGFzcyddLFxuICB0cmFuc2Zvcm1Ob2RlOiB0cmFuc2Zvcm1Ob2RlLFxuICBnZW5EYXRhOiBnZW5EYXRhXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdHJhbnNmb3JtTm9kZSQxIChlbCwgb3B0aW9ucykge1xuICB2YXIgd2FybiA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2FybjtcbiAgdmFyIHN0YXRpY1N0eWxlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3N0eWxlJyk7XG4gIGlmIChzdGF0aWNTdHlsZSkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgcmVzID0gcGFyc2VUZXh0KHN0YXRpY1N0eWxlLCBvcHRpb25zLmRlbGltaXRlcnMpO1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIFwic3R5bGU9XFxcIlwiICsgc3RhdGljU3R5bGUgKyBcIlxcXCI6IFwiICtcbiAgICAgICAgICAnSW50ZXJwb2xhdGlvbiBpbnNpZGUgYXR0cmlidXRlcyBoYXMgYmVlbiByZW1vdmVkLiAnICtcbiAgICAgICAgICAnVXNlIHYtYmluZCBvciB0aGUgY29sb24gc2hvcnRoYW5kIGluc3RlYWQuIEZvciBleGFtcGxlLCAnICtcbiAgICAgICAgICAnaW5zdGVhZCBvZiA8ZGl2IHN0eWxlPVwie3sgdmFsIH19XCI+LCB1c2UgPGRpdiA6c3R5bGU9XCJ2YWxcIj4uJyxcbiAgICAgICAgICBlbC5yYXdBdHRyc01hcFsnc3R5bGUnXVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBlbC5zdGF0aWNTdHlsZSA9IEpTT04uc3RyaW5naWZ5KHBhcnNlU3R5bGVUZXh0KHN0YXRpY1N0eWxlKSk7XG4gIH1cblxuICB2YXIgc3R5bGVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICdzdHlsZScsIGZhbHNlIC8qIGdldFN0YXRpYyAqLyk7XG4gIGlmIChzdHlsZUJpbmRpbmcpIHtcbiAgICBlbC5zdHlsZUJpbmRpbmcgPSBzdHlsZUJpbmRpbmc7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuRGF0YSQxIChlbCkge1xuICB2YXIgZGF0YSA9ICcnO1xuICBpZiAoZWwuc3RhdGljU3R5bGUpIHtcbiAgICBkYXRhICs9IFwic3RhdGljU3R5bGU6XCIgKyAoZWwuc3RhdGljU3R5bGUpICsgXCIsXCI7XG4gIH1cbiAgaWYgKGVsLnN0eWxlQmluZGluZykge1xuICAgIGRhdGEgKz0gXCJzdHlsZTooXCIgKyAoZWwuc3R5bGVCaW5kaW5nKSArIFwiKSxcIjtcbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG52YXIgc3R5bGUkMSA9IHtcbiAgc3RhdGljS2V5czogWydzdGF0aWNTdHlsZSddLFxuICB0cmFuc2Zvcm1Ob2RlOiB0cmFuc2Zvcm1Ob2RlJDEsXG4gIGdlbkRhdGE6IGdlbkRhdGEkMVxufTtcblxuLyogICovXG5cbnZhciBkZWNvZGVyO1xuXG52YXIgaGUgPSB7XG4gIGRlY29kZTogZnVuY3Rpb24gZGVjb2RlIChodG1sKSB7XG4gICAgZGVjb2RlciA9IGRlY29kZXIgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZGVjb2Rlci5pbm5lckhUTUwgPSBodG1sO1xuICAgIHJldHVybiBkZWNvZGVyLnRleHRDb250ZW50XG4gIH1cbn07XG5cbi8qICAqL1xuXG52YXIgaXNVbmFyeVRhZyA9IG1ha2VNYXAoXG4gICdhcmVhLGJhc2UsYnIsY29sLGVtYmVkLGZyYW1lLGhyLGltZyxpbnB1dCxpc2luZGV4LGtleWdlbiwnICtcbiAgJ2xpbmssbWV0YSxwYXJhbSxzb3VyY2UsdHJhY2ssd2JyJ1xuKTtcblxuLy8gRWxlbWVudHMgdGhhdCB5b3UgY2FuLCBpbnRlbnRpb25hbGx5LCBsZWF2ZSBvcGVuXG4vLyAoYW5kIHdoaWNoIGNsb3NlIHRoZW1zZWx2ZXMpXG52YXIgY2FuQmVMZWZ0T3BlblRhZyA9IG1ha2VNYXAoXG4gICdjb2xncm91cCxkZCxkdCxsaSxvcHRpb25zLHAsdGQsdGZvb3QsdGgsdGhlYWQsdHIsc291cmNlJ1xuKTtcblxuLy8gSFRNTDUgdGFncyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmRpY2VzLmh0bWwjZWxlbWVudHMtM1xuLy8gUGhyYXNpbmcgQ29udGVudCBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9kb20uaHRtbCNwaHJhc2luZy1jb250ZW50XG52YXIgaXNOb25QaHJhc2luZ1RhZyA9IG1ha2VNYXAoXG4gICdhZGRyZXNzLGFydGljbGUsYXNpZGUsYmFzZSxibG9ja3F1b3RlLGJvZHksY2FwdGlvbixjb2wsY29sZ3JvdXAsZGQsJyArXG4gICdkZXRhaWxzLGRpYWxvZyxkaXYsZGwsZHQsZmllbGRzZXQsZmlnY2FwdGlvbixmaWd1cmUsZm9vdGVyLGZvcm0sJyArXG4gICdoMSxoMixoMyxoNCxoNSxoNixoZWFkLGhlYWRlcixoZ3JvdXAsaHIsaHRtbCxsZWdlbmQsbGksbWVudWl0ZW0sbWV0YSwnICtcbiAgJ29wdGdyb3VwLG9wdGlvbixwYXJhbSxycCxydCxzb3VyY2Usc3R5bGUsc3VtbWFyeSx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVhZCwnICtcbiAgJ3RpdGxlLHRyLHRyYWNrJ1xuKTtcblxuLyoqXG4gKiBOb3QgdHlwZS1jaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBpdCdzIG1vc3RseSB2ZW5kb3IgY29kZS5cbiAqL1xuXG4vLyBSZWd1bGFyIEV4cHJlc3Npb25zIGZvciBwYXJzaW5nIHRhZ3MgYW5kIGF0dHJpYnV0ZXNcbnZhciBhdHRyaWJ1dGUgPSAvXlxccyooW15cXHNcIic8PlxcLz1dKykoPzpcXHMqKD0pXFxzKig/OlwiKFteXCJdKilcIit8JyhbXiddKiknK3woW15cXHNcIic9PD5gXSspKSk/LztcbnZhciBkeW5hbWljQXJnQXR0cmlidXRlID0gL15cXHMqKCg/OnYtW1xcdy1dKzp8QHw6fCMpXFxbW149XStcXF1bXlxcc1wiJzw+XFwvPV0qKSg/OlxccyooPSlcXHMqKD86XCIoW15cIl0qKVwiK3wnKFteJ10qKScrfChbXlxcc1wiJz08PmBdKykpKT8vO1xudmFyIG5jbmFtZSA9IFwiW2EtekEtWl9dW1xcXFwtXFxcXC4wLTlfYS16QS1aXCIgKyAodW5pY29kZVJlZ0V4cC5zb3VyY2UpICsgXCJdKlwiO1xudmFyIHFuYW1lQ2FwdHVyZSA9IFwiKCg/OlwiICsgbmNuYW1lICsgXCJcXFxcOik/XCIgKyBuY25hbWUgKyBcIilcIjtcbnZhciBzdGFydFRhZ09wZW4gPSBuZXcgUmVnRXhwKChcIl48XCIgKyBxbmFtZUNhcHR1cmUpKTtcbnZhciBzdGFydFRhZ0Nsb3NlID0gL15cXHMqKFxcLz8pPi87XG52YXIgZW5kVGFnID0gbmV3IFJlZ0V4cCgoXCJePFxcXFwvXCIgKyBxbmFtZUNhcHR1cmUgKyBcIltePl0qPlwiKSk7XG52YXIgZG9jdHlwZSA9IC9ePCFET0NUWVBFIFtePl0rPi9pO1xuLy8gIzcyOTg6IGVzY2FwZSAtIHRvIGF2b2lkIGJlaW5nIHBhc2VkIGFzIEhUTUwgY29tbWVudCB3aGVuIGlubGluZWQgaW4gcGFnZVxudmFyIGNvbW1lbnQgPSAvXjwhXFwtLS87XG52YXIgY29uZGl0aW9uYWxDb21tZW50ID0gL148IVxcWy87XG5cbi8vIFNwZWNpYWwgRWxlbWVudHMgKGNhbiBjb250YWluIGFueXRoaW5nKVxudmFyIGlzUGxhaW5UZXh0RWxlbWVudCA9IG1ha2VNYXAoJ3NjcmlwdCxzdHlsZSx0ZXh0YXJlYScsIHRydWUpO1xudmFyIHJlQ2FjaGUgPSB7fTtcblxudmFyIGRlY29kaW5nTWFwID0ge1xuICAnJmx0Oyc6ICc8JyxcbiAgJyZndDsnOiAnPicsXG4gICcmcXVvdDsnOiAnXCInLFxuICAnJmFtcDsnOiAnJicsXG4gICcmIzEwOyc6ICdcXG4nLFxuICAnJiM5Oyc6ICdcXHQnLFxuICAnJiMzOTsnOiBcIidcIlxufTtcbnZhciBlbmNvZGVkQXR0ciA9IC8mKD86bHR8Z3R8cXVvdHxhbXB8IzM5KTsvZztcbnZhciBlbmNvZGVkQXR0cldpdGhOZXdMaW5lcyA9IC8mKD86bHR8Z3R8cXVvdHxhbXB8IzM5fCMxMHwjOSk7L2c7XG5cbi8vICM1OTkyXG52YXIgaXNJZ25vcmVOZXdsaW5lVGFnID0gbWFrZU1hcCgncHJlLHRleHRhcmVhJywgdHJ1ZSk7XG52YXIgc2hvdWxkSWdub3JlRmlyc3ROZXdsaW5lID0gZnVuY3Rpb24gKHRhZywgaHRtbCkgeyByZXR1cm4gdGFnICYmIGlzSWdub3JlTmV3bGluZVRhZyh0YWcpICYmIGh0bWxbMF0gPT09ICdcXG4nOyB9O1xuXG5mdW5jdGlvbiBkZWNvZGVBdHRyICh2YWx1ZSwgc2hvdWxkRGVjb2RlTmV3bGluZXMpIHtcbiAgdmFyIHJlID0gc2hvdWxkRGVjb2RlTmV3bGluZXMgPyBlbmNvZGVkQXR0cldpdGhOZXdMaW5lcyA6IGVuY29kZWRBdHRyO1xuICByZXR1cm4gdmFsdWUucmVwbGFjZShyZSwgZnVuY3Rpb24gKG1hdGNoKSB7IHJldHVybiBkZWNvZGluZ01hcFttYXRjaF07IH0pXG59XG5cbmZ1bmN0aW9uIHBhcnNlSFRNTCAoaHRtbCwgb3B0aW9ucykge1xuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGV4cGVjdEhUTUwgPSBvcHRpb25zLmV4cGVjdEhUTUw7XG4gIHZhciBpc1VuYXJ5VGFnJCQxID0gb3B0aW9ucy5pc1VuYXJ5VGFnIHx8IG5vO1xuICB2YXIgY2FuQmVMZWZ0T3BlblRhZyQkMSA9IG9wdGlvbnMuY2FuQmVMZWZ0T3BlblRhZyB8fCBubztcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxhc3QsIGxhc3RUYWc7XG4gIHdoaWxlIChodG1sKSB7XG4gICAgbGFzdCA9IGh0bWw7XG4gICAgLy8gTWFrZSBzdXJlIHdlJ3JlIG5vdCBpbiBhIHBsYWludGV4dCBjb250ZW50IGVsZW1lbnQgbGlrZSBzY3JpcHQvc3R5bGVcbiAgICBpZiAoIWxhc3RUYWcgfHwgIWlzUGxhaW5UZXh0RWxlbWVudChsYXN0VGFnKSkge1xuICAgICAgdmFyIHRleHRFbmQgPSBodG1sLmluZGV4T2YoJzwnKTtcbiAgICAgIGlmICh0ZXh0RW5kID09PSAwKSB7XG4gICAgICAgIC8vIENvbW1lbnQ6XG4gICAgICAgIGlmIChjb21tZW50LnRlc3QoaHRtbCkpIHtcbiAgICAgICAgICB2YXIgY29tbWVudEVuZCA9IGh0bWwuaW5kZXhPZignLS0+Jyk7XG5cbiAgICAgICAgICBpZiAoY29tbWVudEVuZCA+PSAwKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zaG91bGRLZWVwQ29tbWVudCkge1xuICAgICAgICAgICAgICBvcHRpb25zLmNvbW1lbnQoaHRtbC5zdWJzdHJpbmcoNCwgY29tbWVudEVuZCksIGluZGV4LCBpbmRleCArIGNvbW1lbnRFbmQgKyAzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkdmFuY2UoY29tbWVudEVuZCArIDMpO1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbmRpdGlvbmFsX2NvbW1lbnQjRG93bmxldmVsLXJldmVhbGVkX2NvbmRpdGlvbmFsX2NvbW1lbnRcbiAgICAgICAgaWYgKGNvbmRpdGlvbmFsQ29tbWVudC50ZXN0KGh0bWwpKSB7XG4gICAgICAgICAgdmFyIGNvbmRpdGlvbmFsRW5kID0gaHRtbC5pbmRleE9mKCddPicpO1xuXG4gICAgICAgICAgaWYgKGNvbmRpdGlvbmFsRW5kID49IDApIHtcbiAgICAgICAgICAgIGFkdmFuY2UoY29uZGl0aW9uYWxFbmQgKyAyKTtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRG9jdHlwZTpcbiAgICAgICAgdmFyIGRvY3R5cGVNYXRjaCA9IGh0bWwubWF0Y2goZG9jdHlwZSk7XG4gICAgICAgIGlmIChkb2N0eXBlTWF0Y2gpIHtcbiAgICAgICAgICBhZHZhbmNlKGRvY3R5cGVNYXRjaFswXS5sZW5ndGgpO1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICAvLyBFbmQgdGFnOlxuICAgICAgICB2YXIgZW5kVGFnTWF0Y2ggPSBodG1sLm1hdGNoKGVuZFRhZyk7XG4gICAgICAgIGlmIChlbmRUYWdNYXRjaCkge1xuICAgICAgICAgIHZhciBjdXJJbmRleCA9IGluZGV4O1xuICAgICAgICAgIGFkdmFuY2UoZW5kVGFnTWF0Y2hbMF0ubGVuZ3RoKTtcbiAgICAgICAgICBwYXJzZUVuZFRhZyhlbmRUYWdNYXRjaFsxXSwgY3VySW5kZXgsIGluZGV4KTtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RhcnQgdGFnOlxuICAgICAgICB2YXIgc3RhcnRUYWdNYXRjaCA9IHBhcnNlU3RhcnRUYWcoKTtcbiAgICAgICAgaWYgKHN0YXJ0VGFnTWF0Y2gpIHtcbiAgICAgICAgICBoYW5kbGVTdGFydFRhZyhzdGFydFRhZ01hdGNoKTtcbiAgICAgICAgICBpZiAoc2hvdWxkSWdub3JlRmlyc3ROZXdsaW5lKHN0YXJ0VGFnTWF0Y2gudGFnTmFtZSwgaHRtbCkpIHtcbiAgICAgICAgICAgIGFkdmFuY2UoMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHRleHQgPSAodm9pZCAwKSwgcmVzdCA9ICh2b2lkIDApLCBuZXh0ID0gKHZvaWQgMCk7XG4gICAgICBpZiAodGV4dEVuZCA+PSAwKSB7XG4gICAgICAgIHJlc3QgPSBodG1sLnNsaWNlKHRleHRFbmQpO1xuICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgIWVuZFRhZy50ZXN0KHJlc3QpICYmXG4gICAgICAgICAgIXN0YXJ0VGFnT3Blbi50ZXN0KHJlc3QpICYmXG4gICAgICAgICAgIWNvbW1lbnQudGVzdChyZXN0KSAmJlxuICAgICAgICAgICFjb25kaXRpb25hbENvbW1lbnQudGVzdChyZXN0KVxuICAgICAgICApIHtcbiAgICAgICAgICAvLyA8IGluIHBsYWluIHRleHQsIGJlIGZvcmdpdmluZyBhbmQgdHJlYXQgaXQgYXMgdGV4dFxuICAgICAgICAgIG5leHQgPSByZXN0LmluZGV4T2YoJzwnLCAxKTtcbiAgICAgICAgICBpZiAobmV4dCA8IDApIHsgYnJlYWsgfVxuICAgICAgICAgIHRleHRFbmQgKz0gbmV4dDtcbiAgICAgICAgICByZXN0ID0gaHRtbC5zbGljZSh0ZXh0RW5kKTtcbiAgICAgICAgfVxuICAgICAgICB0ZXh0ID0gaHRtbC5zdWJzdHJpbmcoMCwgdGV4dEVuZCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0ZXh0RW5kIDwgMCkge1xuICAgICAgICB0ZXh0ID0gaHRtbDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgYWR2YW5jZSh0ZXh0Lmxlbmd0aCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNoYXJzICYmIHRleHQpIHtcbiAgICAgICAgb3B0aW9ucy5jaGFycyh0ZXh0LCBpbmRleCAtIHRleHQubGVuZ3RoLCBpbmRleCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlbmRUYWdMZW5ndGggPSAwO1xuICAgICAgdmFyIHN0YWNrZWRUYWcgPSBsYXN0VGFnLnRvTG93ZXJDYXNlKCk7XG4gICAgICB2YXIgcmVTdGFja2VkVGFnID0gcmVDYWNoZVtzdGFja2VkVGFnXSB8fCAocmVDYWNoZVtzdGFja2VkVGFnXSA9IG5ldyBSZWdFeHAoJyhbXFxcXHNcXFxcU10qPykoPC8nICsgc3RhY2tlZFRhZyArICdbXj5dKj4pJywgJ2knKSk7XG4gICAgICB2YXIgcmVzdCQxID0gaHRtbC5yZXBsYWNlKHJlU3RhY2tlZFRhZywgZnVuY3Rpb24gKGFsbCwgdGV4dCwgZW5kVGFnKSB7XG4gICAgICAgIGVuZFRhZ0xlbmd0aCA9IGVuZFRhZy5sZW5ndGg7XG4gICAgICAgIGlmICghaXNQbGFpblRleHRFbGVtZW50KHN0YWNrZWRUYWcpICYmIHN0YWNrZWRUYWcgIT09ICdub3NjcmlwdCcpIHtcbiAgICAgICAgICB0ZXh0ID0gdGV4dFxuICAgICAgICAgICAgLnJlcGxhY2UoLzwhXFwtLShbXFxzXFxTXSo/KS0tPi9nLCAnJDEnKSAvLyAjNzI5OFxuICAgICAgICAgICAgLnJlcGxhY2UoLzwhXFxbQ0RBVEFcXFsoW1xcc1xcU10qPyldXT4vZywgJyQxJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNob3VsZElnbm9yZUZpcnN0TmV3bGluZShzdGFja2VkVGFnLCB0ZXh0KSkge1xuICAgICAgICAgIHRleHQgPSB0ZXh0LnNsaWNlKDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmNoYXJzKSB7XG4gICAgICAgICAgb3B0aW9ucy5jaGFycyh0ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJydcbiAgICAgIH0pO1xuICAgICAgaW5kZXggKz0gaHRtbC5sZW5ndGggLSByZXN0JDEubGVuZ3RoO1xuICAgICAgaHRtbCA9IHJlc3QkMTtcbiAgICAgIHBhcnNlRW5kVGFnKHN0YWNrZWRUYWcsIGluZGV4IC0gZW5kVGFnTGVuZ3RoLCBpbmRleCk7XG4gICAgfVxuXG4gICAgaWYgKGh0bWwgPT09IGxhc3QpIHtcbiAgICAgIG9wdGlvbnMuY2hhcnMgJiYgb3B0aW9ucy5jaGFycyhodG1sKTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFzdGFjay5sZW5ndGggJiYgb3B0aW9ucy53YXJuKSB7XG4gICAgICAgIG9wdGlvbnMud2FybigoXCJNYWwtZm9ybWF0dGVkIHRhZyBhdCBlbmQgb2YgdGVtcGxhdGU6IFxcXCJcIiArIGh0bWwgKyBcIlxcXCJcIiksIHsgc3RhcnQ6IGluZGV4ICsgaHRtbC5sZW5ndGggfSk7XG4gICAgICB9XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIC8vIENsZWFuIHVwIGFueSByZW1haW5pbmcgdGFnc1xuICBwYXJzZUVuZFRhZygpO1xuXG4gIGZ1bmN0aW9uIGFkdmFuY2UgKG4pIHtcbiAgICBpbmRleCArPSBuO1xuICAgIGh0bWwgPSBodG1sLnN1YnN0cmluZyhuKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlU3RhcnRUYWcgKCkge1xuICAgIHZhciBzdGFydCA9IGh0bWwubWF0Y2goc3RhcnRUYWdPcGVuKTtcbiAgICBpZiAoc3RhcnQpIHtcbiAgICAgIHZhciBtYXRjaCA9IHtcbiAgICAgICAgdGFnTmFtZTogc3RhcnRbMV0sXG4gICAgICAgIGF0dHJzOiBbXSxcbiAgICAgICAgc3RhcnQ6IGluZGV4XG4gICAgICB9O1xuICAgICAgYWR2YW5jZShzdGFydFswXS5sZW5ndGgpO1xuICAgICAgdmFyIGVuZCwgYXR0cjtcbiAgICAgIHdoaWxlICghKGVuZCA9IGh0bWwubWF0Y2goc3RhcnRUYWdDbG9zZSkpICYmIChhdHRyID0gaHRtbC5tYXRjaChkeW5hbWljQXJnQXR0cmlidXRlKSB8fCBodG1sLm1hdGNoKGF0dHJpYnV0ZSkpKSB7XG4gICAgICAgIGF0dHIuc3RhcnQgPSBpbmRleDtcbiAgICAgICAgYWR2YW5jZShhdHRyWzBdLmxlbmd0aCk7XG4gICAgICAgIGF0dHIuZW5kID0gaW5kZXg7XG4gICAgICAgIG1hdGNoLmF0dHJzLnB1c2goYXR0cik7XG4gICAgICB9XG4gICAgICBpZiAoZW5kKSB7XG4gICAgICAgIG1hdGNoLnVuYXJ5U2xhc2ggPSBlbmRbMV07XG4gICAgICAgIGFkdmFuY2UoZW5kWzBdLmxlbmd0aCk7XG4gICAgICAgIG1hdGNoLmVuZCA9IGluZGV4O1xuICAgICAgICByZXR1cm4gbWF0Y2hcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVTdGFydFRhZyAobWF0Y2gpIHtcbiAgICB2YXIgdGFnTmFtZSA9IG1hdGNoLnRhZ05hbWU7XG4gICAgdmFyIHVuYXJ5U2xhc2ggPSBtYXRjaC51bmFyeVNsYXNoO1xuXG4gICAgaWYgKGV4cGVjdEhUTUwpIHtcbiAgICAgIGlmIChsYXN0VGFnID09PSAncCcgJiYgaXNOb25QaHJhc2luZ1RhZyh0YWdOYW1lKSkge1xuICAgICAgICBwYXJzZUVuZFRhZyhsYXN0VGFnKTtcbiAgICAgIH1cbiAgICAgIGlmIChjYW5CZUxlZnRPcGVuVGFnJCQxKHRhZ05hbWUpICYmIGxhc3RUYWcgPT09IHRhZ05hbWUpIHtcbiAgICAgICAgcGFyc2VFbmRUYWcodGFnTmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHVuYXJ5ID0gaXNVbmFyeVRhZyQkMSh0YWdOYW1lKSB8fCAhIXVuYXJ5U2xhc2g7XG5cbiAgICB2YXIgbCA9IG1hdGNoLmF0dHJzLmxlbmd0aDtcbiAgICB2YXIgYXR0cnMgPSBuZXcgQXJyYXkobCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBhcmdzID0gbWF0Y2guYXR0cnNbaV07XG4gICAgICB2YXIgdmFsdWUgPSBhcmdzWzNdIHx8IGFyZ3NbNF0gfHwgYXJnc1s1XSB8fCAnJztcbiAgICAgIHZhciBzaG91bGREZWNvZGVOZXdsaW5lcyA9IHRhZ05hbWUgPT09ICdhJyAmJiBhcmdzWzFdID09PSAnaHJlZidcbiAgICAgICAgPyBvcHRpb25zLnNob3VsZERlY29kZU5ld2xpbmVzRm9ySHJlZlxuICAgICAgICA6IG9wdGlvbnMuc2hvdWxkRGVjb2RlTmV3bGluZXM7XG4gICAgICBhdHRyc1tpXSA9IHtcbiAgICAgICAgbmFtZTogYXJnc1sxXSxcbiAgICAgICAgdmFsdWU6IGRlY29kZUF0dHIodmFsdWUsIHNob3VsZERlY29kZU5ld2xpbmVzKVxuICAgICAgfTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIG9wdGlvbnMub3V0cHV0U291cmNlUmFuZ2UpIHtcbiAgICAgICAgYXR0cnNbaV0uc3RhcnQgPSBhcmdzLnN0YXJ0ICsgYXJnc1swXS5tYXRjaCgvXlxccyovKS5sZW5ndGg7XG4gICAgICAgIGF0dHJzW2ldLmVuZCA9IGFyZ3MuZW5kO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdW5hcnkpIHtcbiAgICAgIHN0YWNrLnB1c2goeyB0YWc6IHRhZ05hbWUsIGxvd2VyQ2FzZWRUYWc6IHRhZ05hbWUudG9Mb3dlckNhc2UoKSwgYXR0cnM6IGF0dHJzLCBzdGFydDogbWF0Y2guc3RhcnQsIGVuZDogbWF0Y2guZW5kIH0pO1xuICAgICAgbGFzdFRhZyA9IHRhZ05hbWU7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc3RhcnQpIHtcbiAgICAgIG9wdGlvbnMuc3RhcnQodGFnTmFtZSwgYXR0cnMsIHVuYXJ5LCBtYXRjaC5zdGFydCwgbWF0Y2guZW5kKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUVuZFRhZyAodGFnTmFtZSwgc3RhcnQsIGVuZCkge1xuICAgIHZhciBwb3MsIGxvd2VyQ2FzZWRUYWdOYW1lO1xuICAgIGlmIChzdGFydCA9PSBudWxsKSB7IHN0YXJ0ID0gaW5kZXg7IH1cbiAgICBpZiAoZW5kID09IG51bGwpIHsgZW5kID0gaW5kZXg7IH1cblxuICAgIC8vIEZpbmQgdGhlIGNsb3Nlc3Qgb3BlbmVkIHRhZyBvZiB0aGUgc2FtZSB0eXBlXG4gICAgaWYgKHRhZ05hbWUpIHtcbiAgICAgIGxvd2VyQ2FzZWRUYWdOYW1lID0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgZm9yIChwb3MgPSBzdGFjay5sZW5ndGggLSAxOyBwb3MgPj0gMDsgcG9zLS0pIHtcbiAgICAgICAgaWYgKHN0YWNrW3Bvc10ubG93ZXJDYXNlZFRhZyA9PT0gbG93ZXJDYXNlZFRhZ05hbWUpIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIG5vIHRhZyBuYW1lIGlzIHByb3ZpZGVkLCBjbGVhbiBzaG9wXG4gICAgICBwb3MgPSAwO1xuICAgIH1cblxuICAgIGlmIChwb3MgPj0gMCkge1xuICAgICAgLy8gQ2xvc2UgYWxsIHRoZSBvcGVuIGVsZW1lbnRzLCB1cCB0aGUgc3RhY2tcbiAgICAgIGZvciAodmFyIGkgPSBzdGFjay5sZW5ndGggLSAxOyBpID49IHBvczsgaS0tKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICAgICAgKGkgPiBwb3MgfHwgIXRhZ05hbWUpICYmXG4gICAgICAgICAgb3B0aW9ucy53YXJuXG4gICAgICAgICkge1xuICAgICAgICAgIG9wdGlvbnMud2FybihcbiAgICAgICAgICAgIChcInRhZyA8XCIgKyAoc3RhY2tbaV0udGFnKSArIFwiPiBoYXMgbm8gbWF0Y2hpbmcgZW5kIHRhZy5cIiksXG4gICAgICAgICAgICB7IHN0YXJ0OiBzdGFja1tpXS5zdGFydCwgZW5kOiBzdGFja1tpXS5lbmQgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuZW5kKSB7XG4gICAgICAgICAgb3B0aW9ucy5lbmQoc3RhY2tbaV0udGFnLCBzdGFydCwgZW5kKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBSZW1vdmUgdGhlIG9wZW4gZWxlbWVudHMgZnJvbSB0aGUgc3RhY2tcbiAgICAgIHN0YWNrLmxlbmd0aCA9IHBvcztcbiAgICAgIGxhc3RUYWcgPSBwb3MgJiYgc3RhY2tbcG9zIC0gMV0udGFnO1xuICAgIH0gZWxzZSBpZiAobG93ZXJDYXNlZFRhZ05hbWUgPT09ICdicicpIHtcbiAgICAgIGlmIChvcHRpb25zLnN0YXJ0KSB7XG4gICAgICAgIG9wdGlvbnMuc3RhcnQodGFnTmFtZSwgW10sIHRydWUsIHN0YXJ0LCBlbmQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobG93ZXJDYXNlZFRhZ05hbWUgPT09ICdwJykge1xuICAgICAgaWYgKG9wdGlvbnMuc3RhcnQpIHtcbiAgICAgICAgb3B0aW9ucy5zdGFydCh0YWdOYW1lLCBbXSwgZmFsc2UsIHN0YXJ0LCBlbmQpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMuZW5kKSB7XG4gICAgICAgIG9wdGlvbnMuZW5kKHRhZ05hbWUsIHN0YXJ0LCBlbmQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIG9uUkUgPSAvXkB8XnYtb246LztcbnZhciBkaXJSRSA9IC9edi18XkB8XjovO1xudmFyIGZvckFsaWFzUkUgPSAvKFtcXHNcXFNdKj8pXFxzKyg/OmlufG9mKVxccysoW1xcc1xcU10qKS87XG52YXIgZm9ySXRlcmF0b3JSRSA9IC8sKFteLFxcfVxcXV0qKSg/OiwoW14sXFx9XFxdXSopKT8kLztcbnZhciBzdHJpcFBhcmVuc1JFID0gL15cXCh8XFwpJC9nO1xudmFyIGR5bmFtaWNBcmdSRSA9IC9eXFxbLipcXF0kLztcblxudmFyIGFyZ1JFID0gLzooLiopJC87XG52YXIgYmluZFJFID0gL146fF5cXC58XnYtYmluZDovO1xudmFyIG1vZGlmaWVyUkUgPSAvXFwuW14uXFxdXSsoPz1bXlxcXV0qJCkvZztcblxudmFyIHNsb3RSRSA9IC9edi1zbG90KDp8JCl8XiMvO1xuXG52YXIgbGluZUJyZWFrUkUgPSAvW1xcclxcbl0vO1xudmFyIHdoaXRlc3BhY2VSRSQxID0gL1xccysvZztcblxudmFyIGludmFsaWRBdHRyaWJ1dGVSRSA9IC9bXFxzXCInPD5cXC89XS87XG5cbnZhciBkZWNvZGVIVE1MQ2FjaGVkID0gY2FjaGVkKGhlLmRlY29kZSk7XG5cbnZhciBlbXB0eVNsb3RTY29wZVRva2VuID0gXCJfZW1wdHlfXCI7XG5cbi8vIGNvbmZpZ3VyYWJsZSBzdGF0ZVxudmFyIHdhcm4kMjtcbnZhciBkZWxpbWl0ZXJzO1xudmFyIHRyYW5zZm9ybXM7XG52YXIgcHJlVHJhbnNmb3JtcztcbnZhciBwb3N0VHJhbnNmb3JtcztcbnZhciBwbGF0Zm9ybUlzUHJlVGFnO1xudmFyIHBsYXRmb3JtTXVzdFVzZVByb3A7XG52YXIgcGxhdGZvcm1HZXRUYWdOYW1lc3BhY2U7XG52YXIgbWF5YmVDb21wb25lbnQ7XG5cbmZ1bmN0aW9uIGNyZWF0ZUFTVEVsZW1lbnQgKFxuICB0YWcsXG4gIGF0dHJzLFxuICBwYXJlbnRcbikge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IDEsXG4gICAgdGFnOiB0YWcsXG4gICAgYXR0cnNMaXN0OiBhdHRycyxcbiAgICBhdHRyc01hcDogbWFrZUF0dHJzTWFwKGF0dHJzKSxcbiAgICByYXdBdHRyc01hcDoge30sXG4gICAgcGFyZW50OiBwYXJlbnQsXG4gICAgY2hpbGRyZW46IFtdXG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0IEhUTUwgc3RyaW5nIHRvIEFTVC5cbiAqL1xuZnVuY3Rpb24gcGFyc2UgKFxuICB0ZW1wbGF0ZSxcbiAgb3B0aW9uc1xuKSB7XG4gIHdhcm4kMiA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2FybjtcblxuICBwbGF0Zm9ybUlzUHJlVGFnID0gb3B0aW9ucy5pc1ByZVRhZyB8fCBubztcbiAgcGxhdGZvcm1NdXN0VXNlUHJvcCA9IG9wdGlvbnMubXVzdFVzZVByb3AgfHwgbm87XG4gIHBsYXRmb3JtR2V0VGFnTmFtZXNwYWNlID0gb3B0aW9ucy5nZXRUYWdOYW1lc3BhY2UgfHwgbm87XG4gIHZhciBpc1Jlc2VydmVkVGFnID0gb3B0aW9ucy5pc1Jlc2VydmVkVGFnIHx8IG5vO1xuICBtYXliZUNvbXBvbmVudCA9IGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gISFlbC5jb21wb25lbnQgfHwgIWlzUmVzZXJ2ZWRUYWcoZWwudGFnKTsgfTtcblxuICB0cmFuc2Zvcm1zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICd0cmFuc2Zvcm1Ob2RlJyk7XG4gIHByZVRyYW5zZm9ybXMgPSBwbHVja01vZHVsZUZ1bmN0aW9uKG9wdGlvbnMubW9kdWxlcywgJ3ByZVRyYW5zZm9ybU5vZGUnKTtcbiAgcG9zdFRyYW5zZm9ybXMgPSBwbHVja01vZHVsZUZ1bmN0aW9uKG9wdGlvbnMubW9kdWxlcywgJ3Bvc3RUcmFuc2Zvcm1Ob2RlJyk7XG5cbiAgZGVsaW1pdGVycyA9IG9wdGlvbnMuZGVsaW1pdGVycztcblxuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIHByZXNlcnZlV2hpdGVzcGFjZSA9IG9wdGlvbnMucHJlc2VydmVXaGl0ZXNwYWNlICE9PSBmYWxzZTtcbiAgdmFyIHdoaXRlc3BhY2VPcHRpb24gPSBvcHRpb25zLndoaXRlc3BhY2U7XG4gIHZhciByb290O1xuICB2YXIgY3VycmVudFBhcmVudDtcbiAgdmFyIGluVlByZSA9IGZhbHNlO1xuICB2YXIgaW5QcmUgPSBmYWxzZTtcbiAgdmFyIHdhcm5lZCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIHdhcm5PbmNlIChtc2csIHJhbmdlKSB7XG4gICAgaWYgKCF3YXJuZWQpIHtcbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgICB3YXJuJDIobXNnLCByYW5nZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2xvc2VFbGVtZW50IChlbGVtZW50KSB7XG4gICAgdHJpbUVuZGluZ1doaXRlc3BhY2UoZWxlbWVudCk7XG4gICAgaWYgKCFpblZQcmUgJiYgIWVsZW1lbnQucHJvY2Vzc2VkKSB7XG4gICAgICBlbGVtZW50ID0gcHJvY2Vzc0VsZW1lbnQoZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIHRyZWUgbWFuYWdlbWVudFxuICAgIGlmICghc3RhY2subGVuZ3RoICYmIGVsZW1lbnQgIT09IHJvb3QpIHtcbiAgICAgIC8vIGFsbG93IHJvb3QgZWxlbWVudHMgd2l0aCB2LWlmLCB2LWVsc2UtaWYgYW5kIHYtZWxzZVxuICAgICAgaWYgKHJvb3QuaWYgJiYgKGVsZW1lbnQuZWxzZWlmIHx8IGVsZW1lbnQuZWxzZSkpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBjaGVja1Jvb3RDb25zdHJhaW50cyhlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBhZGRJZkNvbmRpdGlvbihyb290LCB7XG4gICAgICAgICAgZXhwOiBlbGVtZW50LmVsc2VpZixcbiAgICAgICAgICBibG9jazogZWxlbWVudFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICBcIkNvbXBvbmVudCB0ZW1wbGF0ZSBzaG91bGQgY29udGFpbiBleGFjdGx5IG9uZSByb290IGVsZW1lbnQuIFwiICtcbiAgICAgICAgICBcIklmIHlvdSBhcmUgdXNpbmcgdi1pZiBvbiBtdWx0aXBsZSBlbGVtZW50cywgXCIgK1xuICAgICAgICAgIFwidXNlIHYtZWxzZS1pZiB0byBjaGFpbiB0aGVtIGluc3RlYWQuXCIsXG4gICAgICAgICAgeyBzdGFydDogZWxlbWVudC5zdGFydCB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjdXJyZW50UGFyZW50ICYmICFlbGVtZW50LmZvcmJpZGRlbikge1xuICAgICAgaWYgKGVsZW1lbnQuZWxzZWlmIHx8IGVsZW1lbnQuZWxzZSkge1xuICAgICAgICBwcm9jZXNzSWZDb25kaXRpb25zKGVsZW1lbnQsIGN1cnJlbnRQYXJlbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGVsZW1lbnQuc2xvdFNjb3BlKSB7XG4gICAgICAgICAgLy8gc2NvcGVkIHNsb3RcbiAgICAgICAgICAvLyBrZWVwIGl0IGluIHRoZSBjaGlsZHJlbiBsaXN0IHNvIHRoYXQgdi1lbHNlKC1pZikgY29uZGl0aW9ucyBjYW5cbiAgICAgICAgICAvLyBmaW5kIGl0IGFzIHRoZSBwcmV2IG5vZGUuXG4gICAgICAgICAgdmFyIG5hbWUgPSBlbGVtZW50LnNsb3RUYXJnZXQgfHwgJ1wiZGVmYXVsdFwiJ1xuICAgICAgICAgIDsoY3VycmVudFBhcmVudC5zY29wZWRTbG90cyB8fCAoY3VycmVudFBhcmVudC5zY29wZWRTbG90cyA9IHt9KSlbbmFtZV0gPSBlbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRQYXJlbnQuY2hpbGRyZW4ucHVzaChlbGVtZW50KTtcbiAgICAgICAgZWxlbWVudC5wYXJlbnQgPSBjdXJyZW50UGFyZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGZpbmFsIGNoaWxkcmVuIGNsZWFudXBcbiAgICAvLyBmaWx0ZXIgb3V0IHNjb3BlZCBzbG90c1xuICAgIGVsZW1lbnQuY2hpbGRyZW4gPSBlbGVtZW50LmNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbiAoYykgeyByZXR1cm4gIShjKS5zbG90U2NvcGU7IH0pO1xuICAgIC8vIHJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIG5vZGUgYWdhaW5cbiAgICB0cmltRW5kaW5nV2hpdGVzcGFjZShlbGVtZW50KTtcblxuICAgIC8vIGNoZWNrIHByZSBzdGF0ZVxuICAgIGlmIChlbGVtZW50LnByZSkge1xuICAgICAgaW5WUHJlID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChwbGF0Zm9ybUlzUHJlVGFnKGVsZW1lbnQudGFnKSkge1xuICAgICAgaW5QcmUgPSBmYWxzZTtcbiAgICB9XG4gICAgLy8gYXBwbHkgcG9zdC10cmFuc2Zvcm1zXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3N0VHJhbnNmb3Jtcy5sZW5ndGg7IGkrKykge1xuICAgICAgcG9zdFRyYW5zZm9ybXNbaV0oZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdHJpbUVuZGluZ1doaXRlc3BhY2UgKGVsKSB7XG4gICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2Ugbm9kZVxuICAgIGlmICghaW5QcmUpIHtcbiAgICAgIHZhciBsYXN0Tm9kZTtcbiAgICAgIHdoaWxlIChcbiAgICAgICAgKGxhc3ROb2RlID0gZWwuY2hpbGRyZW5bZWwuY2hpbGRyZW4ubGVuZ3RoIC0gMV0pICYmXG4gICAgICAgIGxhc3ROb2RlLnR5cGUgPT09IDMgJiZcbiAgICAgICAgbGFzdE5vZGUudGV4dCA9PT0gJyAnXG4gICAgICApIHtcbiAgICAgICAgZWwuY2hpbGRyZW4ucG9wKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2hlY2tSb290Q29uc3RyYWludHMgKGVsKSB7XG4gICAgaWYgKGVsLnRhZyA9PT0gJ3Nsb3QnIHx8IGVsLnRhZyA9PT0gJ3RlbXBsYXRlJykge1xuICAgICAgd2Fybk9uY2UoXG4gICAgICAgIFwiQ2Fubm90IHVzZSA8XCIgKyAoZWwudGFnKSArIFwiPiBhcyBjb21wb25lbnQgcm9vdCBlbGVtZW50IGJlY2F1c2UgaXQgbWF5IFwiICtcbiAgICAgICAgJ2NvbnRhaW4gbXVsdGlwbGUgbm9kZXMuJyxcbiAgICAgICAgeyBzdGFydDogZWwuc3RhcnQgfVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGVsLmF0dHJzTWFwLmhhc093blByb3BlcnR5KCd2LWZvcicpKSB7XG4gICAgICB3YXJuT25jZShcbiAgICAgICAgJ0Nhbm5vdCB1c2Ugdi1mb3Igb24gc3RhdGVmdWwgY29tcG9uZW50IHJvb3QgZWxlbWVudCBiZWNhdXNlICcgK1xuICAgICAgICAnaXQgcmVuZGVycyBtdWx0aXBsZSBlbGVtZW50cy4nLFxuICAgICAgICBlbC5yYXdBdHRyc01hcFsndi1mb3InXVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwYXJzZUhUTUwodGVtcGxhdGUsIHtcbiAgICB3YXJuOiB3YXJuJDIsXG4gICAgZXhwZWN0SFRNTDogb3B0aW9ucy5leHBlY3RIVE1MLFxuICAgIGlzVW5hcnlUYWc6IG9wdGlvbnMuaXNVbmFyeVRhZyxcbiAgICBjYW5CZUxlZnRPcGVuVGFnOiBvcHRpb25zLmNhbkJlTGVmdE9wZW5UYWcsXG4gICAgc2hvdWxkRGVjb2RlTmV3bGluZXM6IG9wdGlvbnMuc2hvdWxkRGVjb2RlTmV3bGluZXMsXG4gICAgc2hvdWxkRGVjb2RlTmV3bGluZXNGb3JIcmVmOiBvcHRpb25zLnNob3VsZERlY29kZU5ld2xpbmVzRm9ySHJlZixcbiAgICBzaG91bGRLZWVwQ29tbWVudDogb3B0aW9ucy5jb21tZW50cyxcbiAgICBvdXRwdXRTb3VyY2VSYW5nZTogb3B0aW9ucy5vdXRwdXRTb3VyY2VSYW5nZSxcbiAgICBzdGFydDogZnVuY3Rpb24gc3RhcnQgKHRhZywgYXR0cnMsIHVuYXJ5LCBzdGFydCQxLCBlbmQpIHtcbiAgICAgIC8vIGNoZWNrIG5hbWVzcGFjZS5cbiAgICAgIC8vIGluaGVyaXQgcGFyZW50IG5zIGlmIHRoZXJlIGlzIG9uZVxuICAgICAgdmFyIG5zID0gKGN1cnJlbnRQYXJlbnQgJiYgY3VycmVudFBhcmVudC5ucykgfHwgcGxhdGZvcm1HZXRUYWdOYW1lc3BhY2UodGFnKTtcblxuICAgICAgLy8gaGFuZGxlIElFIHN2ZyBidWdcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGlzSUUgJiYgbnMgPT09ICdzdmcnKSB7XG4gICAgICAgIGF0dHJzID0gZ3VhcmRJRVNWR0J1ZyhhdHRycyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBlbGVtZW50ID0gY3JlYXRlQVNURWxlbWVudCh0YWcsIGF0dHJzLCBjdXJyZW50UGFyZW50KTtcbiAgICAgIGlmIChucykge1xuICAgICAgICBlbGVtZW50Lm5zID0gbnM7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmIChvcHRpb25zLm91dHB1dFNvdXJjZVJhbmdlKSB7XG4gICAgICAgICAgZWxlbWVudC5zdGFydCA9IHN0YXJ0JDE7XG4gICAgICAgICAgZWxlbWVudC5lbmQgPSBlbmQ7XG4gICAgICAgICAgZWxlbWVudC5yYXdBdHRyc01hcCA9IGVsZW1lbnQuYXR0cnNMaXN0LnJlZHVjZShmdW5jdGlvbiAoY3VtdWxhdGVkLCBhdHRyKSB7XG4gICAgICAgICAgICBjdW11bGF0ZWRbYXR0ci5uYW1lXSA9IGF0dHI7XG4gICAgICAgICAgICByZXR1cm4gY3VtdWxhdGVkXG4gICAgICAgICAgfSwge30pO1xuICAgICAgICB9XG4gICAgICAgIGF0dHJzLmZvckVhY2goZnVuY3Rpb24gKGF0dHIpIHtcbiAgICAgICAgICBpZiAoaW52YWxpZEF0dHJpYnV0ZVJFLnRlc3QoYXR0ci5uYW1lKSkge1xuICAgICAgICAgICAgd2FybiQyKFxuICAgICAgICAgICAgICBcIkludmFsaWQgZHluYW1pYyBhcmd1bWVudCBleHByZXNzaW9uOiBhdHRyaWJ1dGUgbmFtZXMgY2Fubm90IGNvbnRhaW4gXCIgK1xuICAgICAgICAgICAgICBcInNwYWNlcywgcXVvdGVzLCA8LCA+LCAvIG9yID0uXCIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdGFydDogYXR0ci5zdGFydCArIGF0dHIubmFtZS5pbmRleE9mKFwiW1wiKSxcbiAgICAgICAgICAgICAgICBlbmQ6IGF0dHIuc3RhcnQgKyBhdHRyLm5hbWUubGVuZ3RoXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzRm9yYmlkZGVuVGFnKGVsZW1lbnQpICYmICFpc1NlcnZlclJlbmRlcmluZygpKSB7XG4gICAgICAgIGVsZW1lbnQuZm9yYmlkZGVuID0gdHJ1ZTtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuJDIoXG4gICAgICAgICAgJ1RlbXBsYXRlcyBzaG91bGQgb25seSBiZSByZXNwb25zaWJsZSBmb3IgbWFwcGluZyB0aGUgc3RhdGUgdG8gdGhlICcgK1xuICAgICAgICAgICdVSS4gQXZvaWQgcGxhY2luZyB0YWdzIHdpdGggc2lkZS1lZmZlY3RzIGluIHlvdXIgdGVtcGxhdGVzLCBzdWNoIGFzICcgK1xuICAgICAgICAgIFwiPFwiICsgdGFnICsgXCI+XCIgKyAnLCBhcyB0aGV5IHdpbGwgbm90IGJlIHBhcnNlZC4nLFxuICAgICAgICAgIHsgc3RhcnQ6IGVsZW1lbnQuc3RhcnQgfVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBhcHBseSBwcmUtdHJhbnNmb3Jtc1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmVUcmFuc2Zvcm1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGVsZW1lbnQgPSBwcmVUcmFuc2Zvcm1zW2ldKGVsZW1lbnQsIG9wdGlvbnMpIHx8IGVsZW1lbnQ7XG4gICAgICB9XG5cbiAgICAgIGlmICghaW5WUHJlKSB7XG4gICAgICAgIHByb2Nlc3NQcmUoZWxlbWVudCk7XG4gICAgICAgIGlmIChlbGVtZW50LnByZSkge1xuICAgICAgICAgIGluVlByZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChwbGF0Zm9ybUlzUHJlVGFnKGVsZW1lbnQudGFnKSkge1xuICAgICAgICBpblByZSA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoaW5WUHJlKSB7XG4gICAgICAgIHByb2Nlc3NSYXdBdHRycyhlbGVtZW50KTtcbiAgICAgIH0gZWxzZSBpZiAoIWVsZW1lbnQucHJvY2Vzc2VkKSB7XG4gICAgICAgIC8vIHN0cnVjdHVyYWwgZGlyZWN0aXZlc1xuICAgICAgICBwcm9jZXNzRm9yKGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzSWYoZWxlbWVudCk7XG4gICAgICAgIHByb2Nlc3NPbmNlKGVsZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXJvb3QpIHtcbiAgICAgICAgcm9vdCA9IGVsZW1lbnQ7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgY2hlY2tSb290Q29uc3RyYWludHMocm9vdCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCF1bmFyeSkge1xuICAgICAgICBjdXJyZW50UGFyZW50ID0gZWxlbWVudDtcbiAgICAgICAgc3RhY2sucHVzaChlbGVtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsb3NlRWxlbWVudChlbGVtZW50KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgZW5kOiBmdW5jdGlvbiBlbmQgKHRhZywgc3RhcnQsIGVuZCQxKSB7XG4gICAgICB2YXIgZWxlbWVudCA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgLy8gcG9wIHN0YWNrXG4gICAgICBzdGFjay5sZW5ndGggLT0gMTtcbiAgICAgIGN1cnJlbnRQYXJlbnQgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIG9wdGlvbnMub3V0cHV0U291cmNlUmFuZ2UpIHtcbiAgICAgICAgZWxlbWVudC5lbmQgPSBlbmQkMTtcbiAgICAgIH1cbiAgICAgIGNsb3NlRWxlbWVudChlbGVtZW50KTtcbiAgICB9LFxuXG4gICAgY2hhcnM6IGZ1bmN0aW9uIGNoYXJzICh0ZXh0LCBzdGFydCwgZW5kKSB7XG4gICAgICBpZiAoIWN1cnJlbnRQYXJlbnQpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBpZiAodGV4dCA9PT0gdGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgICAnQ29tcG9uZW50IHRlbXBsYXRlIHJlcXVpcmVzIGEgcm9vdCBlbGVtZW50LCByYXRoZXIgdGhhbiBqdXN0IHRleHQuJyxcbiAgICAgICAgICAgICAgeyBzdGFydDogc3RhcnQgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCh0ZXh0ID0gdGV4dC50cmltKCkpKSB7XG4gICAgICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAgICAgKFwidGV4dCBcXFwiXCIgKyB0ZXh0ICsgXCJcXFwiIG91dHNpZGUgcm9vdCBlbGVtZW50IHdpbGwgYmUgaWdub3JlZC5cIiksXG4gICAgICAgICAgICAgIHsgc3RhcnQ6IHN0YXJ0IH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgLy8gSUUgdGV4dGFyZWEgcGxhY2Vob2xkZXIgYnVnXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChpc0lFICYmXG4gICAgICAgIGN1cnJlbnRQYXJlbnQudGFnID09PSAndGV4dGFyZWEnICYmXG4gICAgICAgIGN1cnJlbnRQYXJlbnQuYXR0cnNNYXAucGxhY2Vob2xkZXIgPT09IHRleHRcbiAgICAgICkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHZhciBjaGlsZHJlbiA9IGN1cnJlbnRQYXJlbnQuY2hpbGRyZW47XG4gICAgICBpZiAoaW5QcmUgfHwgdGV4dC50cmltKCkpIHtcbiAgICAgICAgdGV4dCA9IGlzVGV4dFRhZyhjdXJyZW50UGFyZW50KSA/IHRleHQgOiBkZWNvZGVIVE1MQ2FjaGVkKHRleHQpO1xuICAgICAgfSBlbHNlIGlmICghY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIC8vIHJlbW92ZSB0aGUgd2hpdGVzcGFjZS1vbmx5IG5vZGUgcmlnaHQgYWZ0ZXIgYW4gb3BlbmluZyB0YWdcbiAgICAgICAgdGV4dCA9ICcnO1xuICAgICAgfSBlbHNlIGlmICh3aGl0ZXNwYWNlT3B0aW9uKSB7XG4gICAgICAgIGlmICh3aGl0ZXNwYWNlT3B0aW9uID09PSAnY29uZGVuc2UnKSB7XG4gICAgICAgICAgLy8gaW4gY29uZGVuc2UgbW9kZSwgcmVtb3ZlIHRoZSB3aGl0ZXNwYWNlIG5vZGUgaWYgaXQgY29udGFpbnNcbiAgICAgICAgICAvLyBsaW5lIGJyZWFrLCBvdGhlcndpc2UgY29uZGVuc2UgdG8gYSBzaW5nbGUgc3BhY2VcbiAgICAgICAgICB0ZXh0ID0gbGluZUJyZWFrUkUudGVzdCh0ZXh0KSA/ICcnIDogJyAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRleHQgPSAnICc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRleHQgPSBwcmVzZXJ2ZVdoaXRlc3BhY2UgPyAnICcgOiAnJztcbiAgICAgIH1cbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGlmICghaW5QcmUgJiYgd2hpdGVzcGFjZU9wdGlvbiA9PT0gJ2NvbmRlbnNlJykge1xuICAgICAgICAgIC8vIGNvbmRlbnNlIGNvbnNlY3V0aXZlIHdoaXRlc3BhY2VzIGludG8gc2luZ2xlIHNwYWNlXG4gICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSh3aGl0ZXNwYWNlUkUkMSwgJyAnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcmVzO1xuICAgICAgICB2YXIgY2hpbGQ7XG4gICAgICAgIGlmICghaW5WUHJlICYmIHRleHQgIT09ICcgJyAmJiAocmVzID0gcGFyc2VUZXh0KHRleHQsIGRlbGltaXRlcnMpKSkge1xuICAgICAgICAgIGNoaWxkID0ge1xuICAgICAgICAgICAgdHlwZTogMixcbiAgICAgICAgICAgIGV4cHJlc3Npb246IHJlcy5leHByZXNzaW9uLFxuICAgICAgICAgICAgdG9rZW5zOiByZXMudG9rZW5zLFxuICAgICAgICAgICAgdGV4dDogdGV4dFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAodGV4dCAhPT0gJyAnIHx8ICFjaGlsZHJlbi5sZW5ndGggfHwgY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV0udGV4dCAhPT0gJyAnKSB7XG4gICAgICAgICAgY2hpbGQgPSB7XG4gICAgICAgICAgICB0eXBlOiAzLFxuICAgICAgICAgICAgdGV4dDogdGV4dFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgb3B0aW9ucy5vdXRwdXRTb3VyY2VSYW5nZSkge1xuICAgICAgICAgICAgY2hpbGQuc3RhcnQgPSBzdGFydDtcbiAgICAgICAgICAgIGNoaWxkLmVuZCA9IGVuZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGNvbW1lbnQ6IGZ1bmN0aW9uIGNvbW1lbnQgKHRleHQsIHN0YXJ0LCBlbmQpIHtcbiAgICAgIC8vIGFkZGluZyBhbnl0aW5nIGFzIGEgc2libGluZyB0byB0aGUgcm9vdCBub2RlIGlzIGZvcmJpZGRlblxuICAgICAgLy8gY29tbWVudHMgc2hvdWxkIHN0aWxsIGJlIGFsbG93ZWQsIGJ1dCBpZ25vcmVkXG4gICAgICBpZiAoY3VycmVudFBhcmVudCkge1xuICAgICAgICB2YXIgY2hpbGQgPSB7XG4gICAgICAgICAgdHlwZTogMyxcbiAgICAgICAgICB0ZXh0OiB0ZXh0LFxuICAgICAgICAgIGlzQ29tbWVudDogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBvcHRpb25zLm91dHB1dFNvdXJjZVJhbmdlKSB7XG4gICAgICAgICAgY2hpbGQuc3RhcnQgPSBzdGFydDtcbiAgICAgICAgICBjaGlsZC5lbmQgPSBlbmQ7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudFBhcmVudC5jaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcm9vdFxufVxuXG5mdW5jdGlvbiBwcm9jZXNzUHJlIChlbCkge1xuICBpZiAoZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtcHJlJykgIT0gbnVsbCkge1xuICAgIGVsLnByZSA9IHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1Jhd0F0dHJzIChlbCkge1xuICB2YXIgbGlzdCA9IGVsLmF0dHJzTGlzdDtcbiAgdmFyIGxlbiA9IGxpc3QubGVuZ3RoO1xuICBpZiAobGVuKSB7XG4gICAgdmFyIGF0dHJzID0gZWwuYXR0cnMgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBhdHRyc1tpXSA9IHtcbiAgICAgICAgbmFtZTogbGlzdFtpXS5uYW1lLFxuICAgICAgICB2YWx1ZTogSlNPTi5zdHJpbmdpZnkobGlzdFtpXS52YWx1ZSlcbiAgICAgIH07XG4gICAgICBpZiAobGlzdFtpXS5zdGFydCAhPSBudWxsKSB7XG4gICAgICAgIGF0dHJzW2ldLnN0YXJ0ID0gbGlzdFtpXS5zdGFydDtcbiAgICAgICAgYXR0cnNbaV0uZW5kID0gbGlzdFtpXS5lbmQ7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKCFlbC5wcmUpIHtcbiAgICAvLyBub24gcm9vdCBub2RlIGluIHByZSBibG9ja3Mgd2l0aCBubyBhdHRyaWJ1dGVzXG4gICAgZWwucGxhaW4gPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NFbGVtZW50IChcbiAgZWxlbWVudCxcbiAgb3B0aW9uc1xuKSB7XG4gIHByb2Nlc3NLZXkoZWxlbWVudCk7XG5cbiAgLy8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyBhIHBsYWluIGVsZW1lbnQgYWZ0ZXJcbiAgLy8gcmVtb3Zpbmcgc3RydWN0dXJhbCBhdHRyaWJ1dGVzXG4gIGVsZW1lbnQucGxhaW4gPSAoXG4gICAgIWVsZW1lbnQua2V5ICYmXG4gICAgIWVsZW1lbnQuc2NvcGVkU2xvdHMgJiZcbiAgICAhZWxlbWVudC5hdHRyc0xpc3QubGVuZ3RoXG4gICk7XG5cbiAgcHJvY2Vzc1JlZihlbGVtZW50KTtcbiAgcHJvY2Vzc1Nsb3RDb250ZW50KGVsZW1lbnQpO1xuICBwcm9jZXNzU2xvdE91dGxldChlbGVtZW50KTtcbiAgcHJvY2Vzc0NvbXBvbmVudChlbGVtZW50KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmFuc2Zvcm1zLmxlbmd0aDsgaSsrKSB7XG4gICAgZWxlbWVudCA9IHRyYW5zZm9ybXNbaV0oZWxlbWVudCwgb3B0aW9ucykgfHwgZWxlbWVudDtcbiAgfVxuICBwcm9jZXNzQXR0cnMoZWxlbWVudCk7XG4gIHJldHVybiBlbGVtZW50XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NLZXkgKGVsKSB7XG4gIHZhciBleHAgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2tleScpO1xuICBpZiAoZXhwKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChlbC50YWcgPT09ICd0ZW1wbGF0ZScpIHtcbiAgICAgICAgd2FybiQyKFxuICAgICAgICAgIFwiPHRlbXBsYXRlPiBjYW5ub3QgYmUga2V5ZWQuIFBsYWNlIHRoZSBrZXkgb24gcmVhbCBlbGVtZW50cyBpbnN0ZWFkLlwiLFxuICAgICAgICAgIGdldFJhd0JpbmRpbmdBdHRyKGVsLCAna2V5JylcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChlbC5mb3IpIHtcbiAgICAgICAgdmFyIGl0ZXJhdG9yID0gZWwuaXRlcmF0b3IyIHx8IGVsLml0ZXJhdG9yMTtcbiAgICAgICAgdmFyIHBhcmVudCA9IGVsLnBhcmVudDtcbiAgICAgICAgaWYgKGl0ZXJhdG9yICYmIGl0ZXJhdG9yID09PSBleHAgJiYgcGFyZW50ICYmIHBhcmVudC50YWcgPT09ICd0cmFuc2l0aW9uLWdyb3VwJykge1xuICAgICAgICAgIHdhcm4kMihcbiAgICAgICAgICAgIFwiRG8gbm90IHVzZSB2LWZvciBpbmRleCBhcyBrZXkgb24gPHRyYW5zaXRpb24tZ3JvdXA+IGNoaWxkcmVuLCBcIiArXG4gICAgICAgICAgICBcInRoaXMgaXMgdGhlIHNhbWUgYXMgbm90IHVzaW5nIGtleXMuXCIsXG4gICAgICAgICAgICBnZXRSYXdCaW5kaW5nQXR0cihlbCwgJ2tleScpLFxuICAgICAgICAgICAgdHJ1ZSAvKiB0aXAgKi9cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGVsLmtleSA9IGV4cDtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzUmVmIChlbCkge1xuICB2YXIgcmVmID0gZ2V0QmluZGluZ0F0dHIoZWwsICdyZWYnKTtcbiAgaWYgKHJlZikge1xuICAgIGVsLnJlZiA9IHJlZjtcbiAgICBlbC5yZWZJbkZvciA9IGNoZWNrSW5Gb3IoZWwpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NGb3IgKGVsKSB7XG4gIHZhciBleHA7XG4gIGlmICgoZXhwID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtZm9yJykpKSB7XG4gICAgdmFyIHJlcyA9IHBhcnNlRm9yKGV4cCk7XG4gICAgaWYgKHJlcykge1xuICAgICAgZXh0ZW5kKGVsLCByZXMpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FybiQyKFxuICAgICAgICAoXCJJbnZhbGlkIHYtZm9yIGV4cHJlc3Npb246IFwiICsgZXhwKSxcbiAgICAgICAgZWwucmF3QXR0cnNNYXBbJ3YtZm9yJ11cbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cblxuXG5mdW5jdGlvbiBwYXJzZUZvciAoZXhwKSB7XG4gIHZhciBpbk1hdGNoID0gZXhwLm1hdGNoKGZvckFsaWFzUkUpO1xuICBpZiAoIWluTWF0Y2gpIHsgcmV0dXJuIH1cbiAgdmFyIHJlcyA9IHt9O1xuICByZXMuZm9yID0gaW5NYXRjaFsyXS50cmltKCk7XG4gIHZhciBhbGlhcyA9IGluTWF0Y2hbMV0udHJpbSgpLnJlcGxhY2Uoc3RyaXBQYXJlbnNSRSwgJycpO1xuICB2YXIgaXRlcmF0b3JNYXRjaCA9IGFsaWFzLm1hdGNoKGZvckl0ZXJhdG9yUkUpO1xuICBpZiAoaXRlcmF0b3JNYXRjaCkge1xuICAgIHJlcy5hbGlhcyA9IGFsaWFzLnJlcGxhY2UoZm9ySXRlcmF0b3JSRSwgJycpLnRyaW0oKTtcbiAgICByZXMuaXRlcmF0b3IxID0gaXRlcmF0b3JNYXRjaFsxXS50cmltKCk7XG4gICAgaWYgKGl0ZXJhdG9yTWF0Y2hbMl0pIHtcbiAgICAgIHJlcy5pdGVyYXRvcjIgPSBpdGVyYXRvck1hdGNoWzJdLnRyaW0oKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmVzLmFsaWFzID0gYWxpYXM7XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBwcm9jZXNzSWYgKGVsKSB7XG4gIHZhciBleHAgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAndi1pZicpO1xuICBpZiAoZXhwKSB7XG4gICAgZWwuaWYgPSBleHA7XG4gICAgYWRkSWZDb25kaXRpb24oZWwsIHtcbiAgICAgIGV4cDogZXhwLFxuICAgICAgYmxvY2s6IGVsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWVsc2UnKSAhPSBudWxsKSB7XG4gICAgICBlbC5lbHNlID0gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGVsc2VpZiA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWVsc2UtaWYnKTtcbiAgICBpZiAoZWxzZWlmKSB7XG4gICAgICBlbC5lbHNlaWYgPSBlbHNlaWY7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NJZkNvbmRpdGlvbnMgKGVsLCBwYXJlbnQpIHtcbiAgdmFyIHByZXYgPSBmaW5kUHJldkVsZW1lbnQocGFyZW50LmNoaWxkcmVuKTtcbiAgaWYgKHByZXYgJiYgcHJldi5pZikge1xuICAgIGFkZElmQ29uZGl0aW9uKHByZXYsIHtcbiAgICAgIGV4cDogZWwuZWxzZWlmLFxuICAgICAgYmxvY2s6IGVsXG4gICAgfSk7XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4kMihcbiAgICAgIFwidi1cIiArIChlbC5lbHNlaWYgPyAoJ2Vsc2UtaWY9XCInICsgZWwuZWxzZWlmICsgJ1wiJykgOiAnZWxzZScpICsgXCIgXCIgK1xuICAgICAgXCJ1c2VkIG9uIGVsZW1lbnQgPFwiICsgKGVsLnRhZykgKyBcIj4gd2l0aG91dCBjb3JyZXNwb25kaW5nIHYtaWYuXCIsXG4gICAgICBlbC5yYXdBdHRyc01hcFtlbC5lbHNlaWYgPyAndi1lbHNlLWlmJyA6ICd2LWVsc2UnXVxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluZFByZXZFbGVtZW50IChjaGlsZHJlbikge1xuICB2YXIgaSA9IGNoaWxkcmVuLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIGlmIChjaGlsZHJlbltpXS50eXBlID09PSAxKSB7XG4gICAgICByZXR1cm4gY2hpbGRyZW5baV1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY2hpbGRyZW5baV0udGV4dCAhPT0gJyAnKSB7XG4gICAgICAgIHdhcm4kMihcbiAgICAgICAgICBcInRleHQgXFxcIlwiICsgKGNoaWxkcmVuW2ldLnRleHQudHJpbSgpKSArIFwiXFxcIiBiZXR3ZWVuIHYtaWYgYW5kIHYtZWxzZSgtaWYpIFwiICtcbiAgICAgICAgICBcIndpbGwgYmUgaWdub3JlZC5cIixcbiAgICAgICAgICBjaGlsZHJlbltpXVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY2hpbGRyZW4ucG9wKCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFkZElmQ29uZGl0aW9uIChlbCwgY29uZGl0aW9uKSB7XG4gIGlmICghZWwuaWZDb25kaXRpb25zKSB7XG4gICAgZWwuaWZDb25kaXRpb25zID0gW107XG4gIH1cbiAgZWwuaWZDb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc09uY2UgKGVsKSB7XG4gIHZhciBvbmNlJCQxID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3Ytb25jZScpO1xuICBpZiAob25jZSQkMSAhPSBudWxsKSB7XG4gICAgZWwub25jZSA9IHRydWU7XG4gIH1cbn1cblxuLy8gaGFuZGxlIGNvbnRlbnQgYmVpbmcgcGFzc2VkIHRvIGEgY29tcG9uZW50IGFzIHNsb3QsXG4vLyBlLmcuIDx0ZW1wbGF0ZSBzbG90PVwieHh4XCI+LCA8ZGl2IHNsb3Qtc2NvcGU9XCJ4eHhcIj5cbmZ1bmN0aW9uIHByb2Nlc3NTbG90Q29udGVudCAoZWwpIHtcbiAgdmFyIHNsb3RTY29wZTtcbiAgaWYgKGVsLnRhZyA9PT0gJ3RlbXBsYXRlJykge1xuICAgIHNsb3RTY29wZSA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICdzY29wZScpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHNsb3RTY29wZSkge1xuICAgICAgd2FybiQyKFxuICAgICAgICBcInRoZSBcXFwic2NvcGVcXFwiIGF0dHJpYnV0ZSBmb3Igc2NvcGVkIHNsb3RzIGhhdmUgYmVlbiBkZXByZWNhdGVkIGFuZCBcIiArXG4gICAgICAgIFwicmVwbGFjZWQgYnkgXFxcInNsb3Qtc2NvcGVcXFwiIHNpbmNlIDIuNS4gVGhlIG5ldyBcXFwic2xvdC1zY29wZVxcXCIgYXR0cmlidXRlIFwiICtcbiAgICAgICAgXCJjYW4gYWxzbyBiZSB1c2VkIG9uIHBsYWluIGVsZW1lbnRzIGluIGFkZGl0aW9uIHRvIDx0ZW1wbGF0ZT4gdG8gXCIgK1xuICAgICAgICBcImRlbm90ZSBzY29wZWQgc2xvdHMuXCIsXG4gICAgICAgIGVsLnJhd0F0dHJzTWFwWydzY29wZSddLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgIH1cbiAgICBlbC5zbG90U2NvcGUgPSBzbG90U2NvcGUgfHwgZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3Nsb3Qtc2NvcGUnKTtcbiAgfSBlbHNlIGlmICgoc2xvdFNjb3BlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3Nsb3Qtc2NvcGUnKSkpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBlbC5hdHRyc01hcFsndi1mb3InXSkge1xuICAgICAgd2FybiQyKFxuICAgICAgICBcIkFtYmlndW91cyBjb21iaW5lZCB1c2FnZSBvZiBzbG90LXNjb3BlIGFuZCB2LWZvciBvbiA8XCIgKyAoZWwudGFnKSArIFwiPiBcIiArXG4gICAgICAgIFwiKHYtZm9yIHRha2VzIGhpZ2hlciBwcmlvcml0eSkuIFVzZSBhIHdyYXBwZXIgPHRlbXBsYXRlPiBmb3IgdGhlIFwiICtcbiAgICAgICAgXCJzY29wZWQgc2xvdCB0byBtYWtlIGl0IGNsZWFyZXIuXCIsXG4gICAgICAgIGVsLnJhd0F0dHJzTWFwWydzbG90LXNjb3BlJ10sXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgfVxuICAgIGVsLnNsb3RTY29wZSA9IHNsb3RTY29wZTtcbiAgfVxuXG4gIC8vIHNsb3Q9XCJ4eHhcIlxuICB2YXIgc2xvdFRhcmdldCA9IGdldEJpbmRpbmdBdHRyKGVsLCAnc2xvdCcpO1xuICBpZiAoc2xvdFRhcmdldCkge1xuICAgIGVsLnNsb3RUYXJnZXQgPSBzbG90VGFyZ2V0ID09PSAnXCJcIicgPyAnXCJkZWZhdWx0XCInIDogc2xvdFRhcmdldDtcbiAgICBlbC5zbG90VGFyZ2V0RHluYW1pYyA9ICEhKGVsLmF0dHJzTWFwWyc6c2xvdCddIHx8IGVsLmF0dHJzTWFwWyd2LWJpbmQ6c2xvdCddKTtcbiAgICAvLyBwcmVzZXJ2ZSBzbG90IGFzIGFuIGF0dHJpYnV0ZSBmb3IgbmF0aXZlIHNoYWRvdyBET00gY29tcGF0XG4gICAgLy8gb25seSBmb3Igbm9uLXNjb3BlZCBzbG90cy5cbiAgICBpZiAoZWwudGFnICE9PSAndGVtcGxhdGUnICYmICFlbC5zbG90U2NvcGUpIHtcbiAgICAgIGFkZEF0dHIoZWwsICdzbG90Jywgc2xvdFRhcmdldCwgZ2V0UmF3QmluZGluZ0F0dHIoZWwsICdzbG90JykpO1xuICAgIH1cbiAgfVxuXG4gIC8vIDIuNiB2LXNsb3Qgc3ludGF4XG4gIHtcbiAgICBpZiAoZWwudGFnID09PSAndGVtcGxhdGUnKSB7XG4gICAgICAvLyB2LXNsb3Qgb24gPHRlbXBsYXRlPlxuICAgICAgdmFyIHNsb3RCaW5kaW5nID0gZ2V0QW5kUmVtb3ZlQXR0ckJ5UmVnZXgoZWwsIHNsb3RSRSk7XG4gICAgICBpZiAoc2xvdEJpbmRpbmcpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBpZiAoZWwuc2xvdFRhcmdldCB8fCBlbC5zbG90U2NvcGUpIHtcbiAgICAgICAgICAgIHdhcm4kMihcbiAgICAgICAgICAgICAgXCJVbmV4cGVjdGVkIG1peGVkIHVzYWdlIG9mIGRpZmZlcmVudCBzbG90IHN5bnRheGVzLlwiLFxuICAgICAgICAgICAgICBlbFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVsLnBhcmVudCAmJiAhbWF5YmVDb21wb25lbnQoZWwucGFyZW50KSkge1xuICAgICAgICAgICAgd2FybiQyKFxuICAgICAgICAgICAgICBcIjx0ZW1wbGF0ZSB2LXNsb3Q+IGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgcm9vdCBsZXZlbCBpbnNpZGUgXCIgK1xuICAgICAgICAgICAgICBcInRoZSByZWNlaXZpbmcgdGhlIGNvbXBvbmVudFwiLFxuICAgICAgICAgICAgICBlbFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlZiA9IGdldFNsb3ROYW1lKHNsb3RCaW5kaW5nKTtcbiAgICAgICAgdmFyIG5hbWUgPSByZWYubmFtZTtcbiAgICAgICAgdmFyIGR5bmFtaWMgPSByZWYuZHluYW1pYztcbiAgICAgICAgZWwuc2xvdFRhcmdldCA9IG5hbWU7XG4gICAgICAgIGVsLnNsb3RUYXJnZXREeW5hbWljID0gZHluYW1pYztcbiAgICAgICAgZWwuc2xvdFNjb3BlID0gc2xvdEJpbmRpbmcudmFsdWUgfHwgZW1wdHlTbG90U2NvcGVUb2tlbjsgLy8gZm9yY2UgaXQgaW50byBhIHNjb3BlZCBzbG90IGZvciBwZXJmXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHYtc2xvdCBvbiBjb21wb25lbnQsIGRlbm90ZXMgZGVmYXVsdCBzbG90XG4gICAgICB2YXIgc2xvdEJpbmRpbmckMSA9IGdldEFuZFJlbW92ZUF0dHJCeVJlZ2V4KGVsLCBzbG90UkUpO1xuICAgICAgaWYgKHNsb3RCaW5kaW5nJDEpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBpZiAoIW1heWJlQ29tcG9uZW50KGVsKSkge1xuICAgICAgICAgICAgd2FybiQyKFxuICAgICAgICAgICAgICBcInYtc2xvdCBjYW4gb25seSBiZSB1c2VkIG9uIGNvbXBvbmVudHMgb3IgPHRlbXBsYXRlPi5cIixcbiAgICAgICAgICAgICAgc2xvdEJpbmRpbmckMVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVsLnNsb3RTY29wZSB8fCBlbC5zbG90VGFyZ2V0KSB7XG4gICAgICAgICAgICB3YXJuJDIoXG4gICAgICAgICAgICAgIFwiVW5leHBlY3RlZCBtaXhlZCB1c2FnZSBvZiBkaWZmZXJlbnQgc2xvdCBzeW50YXhlcy5cIixcbiAgICAgICAgICAgICAgZWxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbC5zY29wZWRTbG90cykge1xuICAgICAgICAgICAgd2FybiQyKFxuICAgICAgICAgICAgICBcIlRvIGF2b2lkIHNjb3BlIGFtYmlndWl0eSwgdGhlIGRlZmF1bHQgc2xvdCBzaG91bGQgYWxzbyB1c2UgXCIgK1xuICAgICAgICAgICAgICBcIjx0ZW1wbGF0ZT4gc3ludGF4IHdoZW4gdGhlcmUgYXJlIG90aGVyIG5hbWVkIHNsb3RzLlwiLFxuICAgICAgICAgICAgICBzbG90QmluZGluZyQxXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBhZGQgdGhlIGNvbXBvbmVudCdzIGNoaWxkcmVuIHRvIGl0cyBkZWZhdWx0IHNsb3RcbiAgICAgICAgdmFyIHNsb3RzID0gZWwuc2NvcGVkU2xvdHMgfHwgKGVsLnNjb3BlZFNsb3RzID0ge30pO1xuICAgICAgICB2YXIgcmVmJDEgPSBnZXRTbG90TmFtZShzbG90QmluZGluZyQxKTtcbiAgICAgICAgdmFyIG5hbWUkMSA9IHJlZiQxLm5hbWU7XG4gICAgICAgIHZhciBkeW5hbWljJDEgPSByZWYkMS5keW5hbWljO1xuICAgICAgICB2YXIgc2xvdENvbnRhaW5lciA9IHNsb3RzW25hbWUkMV0gPSBjcmVhdGVBU1RFbGVtZW50KCd0ZW1wbGF0ZScsIFtdLCBlbCk7XG4gICAgICAgIHNsb3RDb250YWluZXIuc2xvdFRhcmdldCA9IG5hbWUkMTtcbiAgICAgICAgc2xvdENvbnRhaW5lci5zbG90VGFyZ2V0RHluYW1pYyA9IGR5bmFtaWMkMTtcbiAgICAgICAgc2xvdENvbnRhaW5lci5jaGlsZHJlbiA9IGVsLmNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbiAoYykge1xuICAgICAgICAgIGlmICghYy5zbG90U2NvcGUpIHtcbiAgICAgICAgICAgIGMucGFyZW50ID0gc2xvdENvbnRhaW5lcjtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc2xvdENvbnRhaW5lci5zbG90U2NvcGUgPSBzbG90QmluZGluZyQxLnZhbHVlIHx8IGVtcHR5U2xvdFNjb3BlVG9rZW47XG4gICAgICAgIC8vIHJlbW92ZSBjaGlsZHJlbiBhcyB0aGV5IGFyZSByZXR1cm5lZCBmcm9tIHNjb3BlZFNsb3RzIG5vd1xuICAgICAgICBlbC5jaGlsZHJlbiA9IFtdO1xuICAgICAgICAvLyBtYXJrIGVsIG5vbi1wbGFpbiBzbyBkYXRhIGdldHMgZ2VuZXJhdGVkXG4gICAgICAgIGVsLnBsYWluID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFNsb3ROYW1lIChiaW5kaW5nKSB7XG4gIHZhciBuYW1lID0gYmluZGluZy5uYW1lLnJlcGxhY2Uoc2xvdFJFLCAnJyk7XG4gIGlmICghbmFtZSkge1xuICAgIGlmIChiaW5kaW5nLm5hbWVbMF0gIT09ICcjJykge1xuICAgICAgbmFtZSA9ICdkZWZhdWx0JztcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHdhcm4kMihcbiAgICAgICAgXCJ2LXNsb3Qgc2hvcnRoYW5kIHN5bnRheCByZXF1aXJlcyBhIHNsb3QgbmFtZS5cIixcbiAgICAgICAgYmluZGluZ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGR5bmFtaWNBcmdSRS50ZXN0KG5hbWUpXG4gICAgLy8gZHluYW1pYyBbbmFtZV1cbiAgICA/IHsgbmFtZTogbmFtZS5zbGljZSgxLCAtMSksIGR5bmFtaWM6IHRydWUgfVxuICAgIC8vIHN0YXRpYyBuYW1lXG4gICAgOiB7IG5hbWU6IChcIlxcXCJcIiArIG5hbWUgKyBcIlxcXCJcIiksIGR5bmFtaWM6IGZhbHNlIH1cbn1cblxuLy8gaGFuZGxlIDxzbG90Lz4gb3V0bGV0c1xuZnVuY3Rpb24gcHJvY2Vzc1Nsb3RPdXRsZXQgKGVsKSB7XG4gIGlmIChlbC50YWcgPT09ICdzbG90Jykge1xuICAgIGVsLnNsb3ROYW1lID0gZ2V0QmluZGluZ0F0dHIoZWwsICduYW1lJyk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZWwua2V5KSB7XG4gICAgICB3YXJuJDIoXG4gICAgICAgIFwiYGtleWAgZG9lcyBub3Qgd29yayBvbiA8c2xvdD4gYmVjYXVzZSBzbG90cyBhcmUgYWJzdHJhY3Qgb3V0bGV0cyBcIiArXG4gICAgICAgIFwiYW5kIGNhbiBwb3NzaWJseSBleHBhbmQgaW50byBtdWx0aXBsZSBlbGVtZW50cy4gXCIgK1xuICAgICAgICBcIlVzZSB0aGUga2V5IG9uIGEgd3JhcHBpbmcgZWxlbWVudCBpbnN0ZWFkLlwiLFxuICAgICAgICBnZXRSYXdCaW5kaW5nQXR0cihlbCwgJ2tleScpXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzQ29tcG9uZW50IChlbCkge1xuICB2YXIgYmluZGluZztcbiAgaWYgKChiaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICdpcycpKSkge1xuICAgIGVsLmNvbXBvbmVudCA9IGJpbmRpbmc7XG4gIH1cbiAgaWYgKGdldEFuZFJlbW92ZUF0dHIoZWwsICdpbmxpbmUtdGVtcGxhdGUnKSAhPSBudWxsKSB7XG4gICAgZWwuaW5saW5lVGVtcGxhdGUgPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NBdHRycyAoZWwpIHtcbiAgdmFyIGxpc3QgPSBlbC5hdHRyc0xpc3Q7XG4gIHZhciBpLCBsLCBuYW1lLCByYXdOYW1lLCB2YWx1ZSwgbW9kaWZpZXJzLCBzeW5jR2VuLCBpc0R5bmFtaWM7XG4gIGZvciAoaSA9IDAsIGwgPSBsaXN0Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIG5hbWUgPSByYXdOYW1lID0gbGlzdFtpXS5uYW1lO1xuICAgIHZhbHVlID0gbGlzdFtpXS52YWx1ZTtcbiAgICBpZiAoZGlyUkUudGVzdChuYW1lKSkge1xuICAgICAgLy8gbWFyayBlbGVtZW50IGFzIGR5bmFtaWNcbiAgICAgIGVsLmhhc0JpbmRpbmdzID0gdHJ1ZTtcbiAgICAgIC8vIG1vZGlmaWVyc1xuICAgICAgbW9kaWZpZXJzID0gcGFyc2VNb2RpZmllcnMobmFtZS5yZXBsYWNlKGRpclJFLCAnJykpO1xuICAgICAgLy8gc3VwcG9ydCAuZm9vIHNob3J0aGFuZCBzeW50YXggZm9yIHRoZSAucHJvcCBtb2RpZmllclxuICAgICAgaWYgKG1vZGlmaWVycykge1xuICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKG1vZGlmaWVyUkUsICcnKTtcbiAgICAgIH1cbiAgICAgIGlmIChiaW5kUkUudGVzdChuYW1lKSkgeyAvLyB2LWJpbmRcbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShiaW5kUkUsICcnKTtcbiAgICAgICAgdmFsdWUgPSBwYXJzZUZpbHRlcnModmFsdWUpO1xuICAgICAgICBpc0R5bmFtaWMgPSBkeW5hbWljQXJnUkUudGVzdChuYW1lKTtcbiAgICAgICAgaWYgKGlzRHluYW1pYykge1xuICAgICAgICAgIG5hbWUgPSBuYW1lLnNsaWNlKDEsIC0xKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAgICAgIHZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgd2FybiQyKFxuICAgICAgICAgICAgKFwiVGhlIHZhbHVlIGZvciBhIHYtYmluZCBleHByZXNzaW9uIGNhbm5vdCBiZSBlbXB0eS4gRm91bmQgaW4gXFxcInYtYmluZDpcIiArIG5hbWUgKyBcIlxcXCJcIilcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtb2RpZmllcnMpIHtcbiAgICAgICAgICBpZiAobW9kaWZpZXJzLnByb3AgJiYgIWlzRHluYW1pYykge1xuICAgICAgICAgICAgbmFtZSA9IGNhbWVsaXplKG5hbWUpO1xuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdpbm5lckh0bWwnKSB7IG5hbWUgPSAnaW5uZXJIVE1MJzsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobW9kaWZpZXJzLmNhbWVsICYmICFpc0R5bmFtaWMpIHtcbiAgICAgICAgICAgIG5hbWUgPSBjYW1lbGl6ZShuYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1vZGlmaWVycy5zeW5jKSB7XG4gICAgICAgICAgICBzeW5jR2VuID0gZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIFwiJGV2ZW50XCIpO1xuICAgICAgICAgICAgaWYgKCFpc0R5bmFtaWMpIHtcbiAgICAgICAgICAgICAgYWRkSGFuZGxlcihcbiAgICAgICAgICAgICAgICBlbCxcbiAgICAgICAgICAgICAgICAoXCJ1cGRhdGU6XCIgKyAoY2FtZWxpemUobmFtZSkpKSxcbiAgICAgICAgICAgICAgICBzeW5jR2VuLFxuICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgd2FybiQyLFxuICAgICAgICAgICAgICAgIGxpc3RbaV1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgaWYgKGh5cGhlbmF0ZShuYW1lKSAhPT0gY2FtZWxpemUobmFtZSkpIHtcbiAgICAgICAgICAgICAgICBhZGRIYW5kbGVyKFxuICAgICAgICAgICAgICAgICAgZWwsXG4gICAgICAgICAgICAgICAgICAoXCJ1cGRhdGU6XCIgKyAoaHlwaGVuYXRlKG5hbWUpKSksXG4gICAgICAgICAgICAgICAgICBzeW5jR2VuLFxuICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgd2FybiQyLFxuICAgICAgICAgICAgICAgICAgbGlzdFtpXVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIGhhbmRsZXIgdy8gZHluYW1pYyBldmVudCBuYW1lXG4gICAgICAgICAgICAgIGFkZEhhbmRsZXIoXG4gICAgICAgICAgICAgICAgZWwsXG4gICAgICAgICAgICAgICAgKFwiXFxcInVwZGF0ZTpcXFwiKyhcIiArIG5hbWUgKyBcIilcIiksXG4gICAgICAgICAgICAgICAgc3luY0dlbixcbiAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgIHdhcm4kMixcbiAgICAgICAgICAgICAgICBsaXN0W2ldLFxuICAgICAgICAgICAgICAgIHRydWUgLy8gZHluYW1pY1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKG1vZGlmaWVycyAmJiBtb2RpZmllcnMucHJvcCkgfHwgKFxuICAgICAgICAgICFlbC5jb21wb25lbnQgJiYgcGxhdGZvcm1NdXN0VXNlUHJvcChlbC50YWcsIGVsLmF0dHJzTWFwLnR5cGUsIG5hbWUpXG4gICAgICAgICkpIHtcbiAgICAgICAgICBhZGRQcm9wKGVsLCBuYW1lLCB2YWx1ZSwgbGlzdFtpXSwgaXNEeW5hbWljKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRBdHRyKGVsLCBuYW1lLCB2YWx1ZSwgbGlzdFtpXSwgaXNEeW5hbWljKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChvblJFLnRlc3QobmFtZSkpIHsgLy8gdi1vblxuICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKG9uUkUsICcnKTtcbiAgICAgICAgaXNEeW5hbWljID0gZHluYW1pY0FyZ1JFLnRlc3QobmFtZSk7XG4gICAgICAgIGlmIChpc0R5bmFtaWMpIHtcbiAgICAgICAgICBuYW1lID0gbmFtZS5zbGljZSgxLCAtMSk7XG4gICAgICAgIH1cbiAgICAgICAgYWRkSGFuZGxlcihlbCwgbmFtZSwgdmFsdWUsIG1vZGlmaWVycywgZmFsc2UsIHdhcm4kMiwgbGlzdFtpXSwgaXNEeW5hbWljKTtcbiAgICAgIH0gZWxzZSB7IC8vIG5vcm1hbCBkaXJlY3RpdmVzXG4gICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoZGlyUkUsICcnKTtcbiAgICAgICAgLy8gcGFyc2UgYXJnXG4gICAgICAgIHZhciBhcmdNYXRjaCA9IG5hbWUubWF0Y2goYXJnUkUpO1xuICAgICAgICB2YXIgYXJnID0gYXJnTWF0Y2ggJiYgYXJnTWF0Y2hbMV07XG4gICAgICAgIGlzRHluYW1pYyA9IGZhbHNlO1xuICAgICAgICBpZiAoYXJnKSB7XG4gICAgICAgICAgbmFtZSA9IG5hbWUuc2xpY2UoMCwgLShhcmcubGVuZ3RoICsgMSkpO1xuICAgICAgICAgIGlmIChkeW5hbWljQXJnUkUudGVzdChhcmcpKSB7XG4gICAgICAgICAgICBhcmcgPSBhcmcuc2xpY2UoMSwgLTEpO1xuICAgICAgICAgICAgaXNEeW5hbWljID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYWRkRGlyZWN0aXZlKGVsLCBuYW1lLCByYXdOYW1lLCB2YWx1ZSwgYXJnLCBpc0R5bmFtaWMsIG1vZGlmaWVycywgbGlzdFtpXSk7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIG5hbWUgPT09ICdtb2RlbCcpIHtcbiAgICAgICAgICBjaGVja0ZvckFsaWFzTW9kZWwoZWwsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBsaXRlcmFsIGF0dHJpYnV0ZVxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFyIHJlcyA9IHBhcnNlVGV4dCh2YWx1ZSwgZGVsaW1pdGVycyk7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICB3YXJuJDIoXG4gICAgICAgICAgICBuYW1lICsgXCI9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCI6IFwiICtcbiAgICAgICAgICAgICdJbnRlcnBvbGF0aW9uIGluc2lkZSBhdHRyaWJ1dGVzIGhhcyBiZWVuIHJlbW92ZWQuICcgK1xuICAgICAgICAgICAgJ1VzZSB2LWJpbmQgb3IgdGhlIGNvbG9uIHNob3J0aGFuZCBpbnN0ZWFkLiBGb3IgZXhhbXBsZSwgJyArXG4gICAgICAgICAgICAnaW5zdGVhZCBvZiA8ZGl2IGlkPVwie3sgdmFsIH19XCI+LCB1c2UgPGRpdiA6aWQ9XCJ2YWxcIj4uJyxcbiAgICAgICAgICAgIGxpc3RbaV1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhZGRBdHRyKGVsLCBuYW1lLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSksIGxpc3RbaV0pO1xuICAgICAgLy8gIzY4ODcgZmlyZWZveCBkb2Vzbid0IHVwZGF0ZSBtdXRlZCBzdGF0ZSBpZiBzZXQgdmlhIGF0dHJpYnV0ZVxuICAgICAgLy8gZXZlbiBpbW1lZGlhdGVseSBhZnRlciBlbGVtZW50IGNyZWF0aW9uXG4gICAgICBpZiAoIWVsLmNvbXBvbmVudCAmJlxuICAgICAgICAgIG5hbWUgPT09ICdtdXRlZCcgJiZcbiAgICAgICAgICBwbGF0Zm9ybU11c3RVc2VQcm9wKGVsLnRhZywgZWwuYXR0cnNNYXAudHlwZSwgbmFtZSkpIHtcbiAgICAgICAgYWRkUHJvcChlbCwgbmFtZSwgJ3RydWUnLCBsaXN0W2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tJbkZvciAoZWwpIHtcbiAgdmFyIHBhcmVudCA9IGVsO1xuICB3aGlsZSAocGFyZW50KSB7XG4gICAgaWYgKHBhcmVudC5mb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gcGFyc2VNb2RpZmllcnMgKG5hbWUpIHtcbiAgdmFyIG1hdGNoID0gbmFtZS5tYXRjaChtb2RpZmllclJFKTtcbiAgaWYgKG1hdGNoKSB7XG4gICAgdmFyIHJldCA9IHt9O1xuICAgIG1hdGNoLmZvckVhY2goZnVuY3Rpb24gKG0pIHsgcmV0W20uc2xpY2UoMSldID0gdHJ1ZTsgfSk7XG4gICAgcmV0dXJuIHJldFxuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VBdHRyc01hcCAoYXR0cnMpIHtcbiAgdmFyIG1hcCA9IHt9O1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGF0dHJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGlmIChcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgIG1hcFthdHRyc1tpXS5uYW1lXSAmJiAhaXNJRSAmJiAhaXNFZGdlXG4gICAgKSB7XG4gICAgICB3YXJuJDIoJ2R1cGxpY2F0ZSBhdHRyaWJ1dGU6ICcgKyBhdHRyc1tpXS5uYW1lLCBhdHRyc1tpXSk7XG4gICAgfVxuICAgIG1hcFthdHRyc1tpXS5uYW1lXSA9IGF0dHJzW2ldLnZhbHVlO1xuICB9XG4gIHJldHVybiBtYXBcbn1cblxuLy8gZm9yIHNjcmlwdCAoZS5nLiB0eXBlPVwieC90ZW1wbGF0ZVwiKSBvciBzdHlsZSwgZG8gbm90IGRlY29kZSBjb250ZW50XG5mdW5jdGlvbiBpc1RleHRUYWcgKGVsKSB7XG4gIHJldHVybiBlbC50YWcgPT09ICdzY3JpcHQnIHx8IGVsLnRhZyA9PT0gJ3N0eWxlJ1xufVxuXG5mdW5jdGlvbiBpc0ZvcmJpZGRlblRhZyAoZWwpIHtcbiAgcmV0dXJuIChcbiAgICBlbC50YWcgPT09ICdzdHlsZScgfHxcbiAgICAoZWwudGFnID09PSAnc2NyaXB0JyAmJiAoXG4gICAgICAhZWwuYXR0cnNNYXAudHlwZSB8fFxuICAgICAgZWwuYXR0cnNNYXAudHlwZSA9PT0gJ3RleHQvamF2YXNjcmlwdCdcbiAgICApKVxuICApXG59XG5cbnZhciBpZU5TQnVnID0gL154bWxuczpOU1xcZCsvO1xudmFyIGllTlNQcmVmaXggPSAvXk5TXFxkKzovO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gZ3VhcmRJRVNWR0J1ZyAoYXR0cnMpIHtcbiAgdmFyIHJlcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGF0dHIgPSBhdHRyc1tpXTtcbiAgICBpZiAoIWllTlNCdWcudGVzdChhdHRyLm5hbWUpKSB7XG4gICAgICBhdHRyLm5hbWUgPSBhdHRyLm5hbWUucmVwbGFjZShpZU5TUHJlZml4LCAnJyk7XG4gICAgICByZXMucHVzaChhdHRyKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBjaGVja0ZvckFsaWFzTW9kZWwgKGVsLCB2YWx1ZSkge1xuICB2YXIgX2VsID0gZWw7XG4gIHdoaWxlIChfZWwpIHtcbiAgICBpZiAoX2VsLmZvciAmJiBfZWwuYWxpYXMgPT09IHZhbHVlKSB7XG4gICAgICB3YXJuJDIoXG4gICAgICAgIFwiPFwiICsgKGVsLnRhZykgKyBcIiB2LW1vZGVsPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiPjogXCIgK1xuICAgICAgICBcIllvdSBhcmUgYmluZGluZyB2LW1vZGVsIGRpcmVjdGx5IHRvIGEgdi1mb3IgaXRlcmF0aW9uIGFsaWFzLiBcIiArXG4gICAgICAgIFwiVGhpcyB3aWxsIG5vdCBiZSBhYmxlIHRvIG1vZGlmeSB0aGUgdi1mb3Igc291cmNlIGFycmF5IGJlY2F1c2UgXCIgK1xuICAgICAgICBcIndyaXRpbmcgdG8gdGhlIGFsaWFzIGlzIGxpa2UgbW9kaWZ5aW5nIGEgZnVuY3Rpb24gbG9jYWwgdmFyaWFibGUuIFwiICtcbiAgICAgICAgXCJDb25zaWRlciB1c2luZyBhbiBhcnJheSBvZiBvYmplY3RzIGFuZCB1c2Ugdi1tb2RlbCBvbiBhbiBvYmplY3QgcHJvcGVydHkgaW5zdGVhZC5cIixcbiAgICAgICAgZWwucmF3QXR0cnNNYXBbJ3YtbW9kZWwnXVxuICAgICAgKTtcbiAgICB9XG4gICAgX2VsID0gX2VsLnBhcmVudDtcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gcHJlVHJhbnNmb3JtTm9kZSAoZWwsIG9wdGlvbnMpIHtcbiAgaWYgKGVsLnRhZyA9PT0gJ2lucHV0Jykge1xuICAgIHZhciBtYXAgPSBlbC5hdHRyc01hcDtcbiAgICBpZiAoIW1hcFsndi1tb2RlbCddKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgdHlwZUJpbmRpbmc7XG4gICAgaWYgKG1hcFsnOnR5cGUnXSB8fCBtYXBbJ3YtYmluZDp0eXBlJ10pIHtcbiAgICAgIHR5cGVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICd0eXBlJyk7XG4gICAgfVxuICAgIGlmICghbWFwLnR5cGUgJiYgIXR5cGVCaW5kaW5nICYmIG1hcFsndi1iaW5kJ10pIHtcbiAgICAgIHR5cGVCaW5kaW5nID0gXCIoXCIgKyAobWFwWyd2LWJpbmQnXSkgKyBcIikudHlwZVwiO1xuICAgIH1cblxuICAgIGlmICh0eXBlQmluZGluZykge1xuICAgICAgdmFyIGlmQ29uZGl0aW9uID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtaWYnLCB0cnVlKTtcbiAgICAgIHZhciBpZkNvbmRpdGlvbkV4dHJhID0gaWZDb25kaXRpb24gPyAoXCImJihcIiArIGlmQ29uZGl0aW9uICsgXCIpXCIpIDogXCJcIjtcbiAgICAgIHZhciBoYXNFbHNlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtZWxzZScsIHRydWUpICE9IG51bGw7XG4gICAgICB2YXIgZWxzZUlmQ29uZGl0aW9uID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtZWxzZS1pZicsIHRydWUpO1xuICAgICAgLy8gMS4gY2hlY2tib3hcbiAgICAgIHZhciBicmFuY2gwID0gY2xvbmVBU1RFbGVtZW50KGVsKTtcbiAgICAgIC8vIHByb2Nlc3MgZm9yIG9uIHRoZSBtYWluIG5vZGVcbiAgICAgIHByb2Nlc3NGb3IoYnJhbmNoMCk7XG4gICAgICBhZGRSYXdBdHRyKGJyYW5jaDAsICd0eXBlJywgJ2NoZWNrYm94Jyk7XG4gICAgICBwcm9jZXNzRWxlbWVudChicmFuY2gwLCBvcHRpb25zKTtcbiAgICAgIGJyYW5jaDAucHJvY2Vzc2VkID0gdHJ1ZTsgLy8gcHJldmVudCBpdCBmcm9tIGRvdWJsZS1wcm9jZXNzZWRcbiAgICAgIGJyYW5jaDAuaWYgPSBcIihcIiArIHR5cGVCaW5kaW5nICsgXCIpPT09J2NoZWNrYm94J1wiICsgaWZDb25kaXRpb25FeHRyYTtcbiAgICAgIGFkZElmQ29uZGl0aW9uKGJyYW5jaDAsIHtcbiAgICAgICAgZXhwOiBicmFuY2gwLmlmLFxuICAgICAgICBibG9jazogYnJhbmNoMFxuICAgICAgfSk7XG4gICAgICAvLyAyLiBhZGQgcmFkaW8gZWxzZS1pZiBjb25kaXRpb25cbiAgICAgIHZhciBicmFuY2gxID0gY2xvbmVBU1RFbGVtZW50KGVsKTtcbiAgICAgIGdldEFuZFJlbW92ZUF0dHIoYnJhbmNoMSwgJ3YtZm9yJywgdHJ1ZSk7XG4gICAgICBhZGRSYXdBdHRyKGJyYW5jaDEsICd0eXBlJywgJ3JhZGlvJyk7XG4gICAgICBwcm9jZXNzRWxlbWVudChicmFuY2gxLCBvcHRpb25zKTtcbiAgICAgIGFkZElmQ29uZGl0aW9uKGJyYW5jaDAsIHtcbiAgICAgICAgZXhwOiBcIihcIiArIHR5cGVCaW5kaW5nICsgXCIpPT09J3JhZGlvJ1wiICsgaWZDb25kaXRpb25FeHRyYSxcbiAgICAgICAgYmxvY2s6IGJyYW5jaDFcbiAgICAgIH0pO1xuICAgICAgLy8gMy4gb3RoZXJcbiAgICAgIHZhciBicmFuY2gyID0gY2xvbmVBU1RFbGVtZW50KGVsKTtcbiAgICAgIGdldEFuZFJlbW92ZUF0dHIoYnJhbmNoMiwgJ3YtZm9yJywgdHJ1ZSk7XG4gICAgICBhZGRSYXdBdHRyKGJyYW5jaDIsICc6dHlwZScsIHR5cGVCaW5kaW5nKTtcbiAgICAgIHByb2Nlc3NFbGVtZW50KGJyYW5jaDIsIG9wdGlvbnMpO1xuICAgICAgYWRkSWZDb25kaXRpb24oYnJhbmNoMCwge1xuICAgICAgICBleHA6IGlmQ29uZGl0aW9uLFxuICAgICAgICBibG9jazogYnJhbmNoMlxuICAgICAgfSk7XG5cbiAgICAgIGlmIChoYXNFbHNlKSB7XG4gICAgICAgIGJyYW5jaDAuZWxzZSA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGVsc2VJZkNvbmRpdGlvbikge1xuICAgICAgICBicmFuY2gwLmVsc2VpZiA9IGVsc2VJZkNvbmRpdGlvbjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGJyYW5jaDBcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2xvbmVBU1RFbGVtZW50IChlbCkge1xuICByZXR1cm4gY3JlYXRlQVNURWxlbWVudChlbC50YWcsIGVsLmF0dHJzTGlzdC5zbGljZSgpLCBlbC5wYXJlbnQpXG59XG5cbnZhciBtb2RlbCQxID0ge1xuICBwcmVUcmFuc2Zvcm1Ob2RlOiBwcmVUcmFuc2Zvcm1Ob2RlXG59O1xuXG52YXIgbW9kdWxlcyQxID0gW1xuICBrbGFzcyQxLFxuICBzdHlsZSQxLFxuICBtb2RlbCQxXG5dO1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdGV4dCAoZWwsIGRpcikge1xuICBpZiAoZGlyLnZhbHVlKSB7XG4gICAgYWRkUHJvcChlbCwgJ3RleHRDb250ZW50JywgKFwiX3MoXCIgKyAoZGlyLnZhbHVlKSArIFwiKVwiKSwgZGlyKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaHRtbCAoZWwsIGRpcikge1xuICBpZiAoZGlyLnZhbHVlKSB7XG4gICAgYWRkUHJvcChlbCwgJ2lubmVySFRNTCcsIChcIl9zKFwiICsgKGRpci52YWx1ZSkgKyBcIilcIiksIGRpcik7XG4gIH1cbn1cblxudmFyIGRpcmVjdGl2ZXMkMSA9IHtcbiAgbW9kZWw6IG1vZGVsLFxuICB0ZXh0OiB0ZXh0LFxuICBodG1sOiBodG1sXG59O1xuXG4vKiAgKi9cblxudmFyIGJhc2VPcHRpb25zID0ge1xuICBleHBlY3RIVE1MOiB0cnVlLFxuICBtb2R1bGVzOiBtb2R1bGVzJDEsXG4gIGRpcmVjdGl2ZXM6IGRpcmVjdGl2ZXMkMSxcbiAgaXNQcmVUYWc6IGlzUHJlVGFnLFxuICBpc1VuYXJ5VGFnOiBpc1VuYXJ5VGFnLFxuICBtdXN0VXNlUHJvcDogbXVzdFVzZVByb3AsXG4gIGNhbkJlTGVmdE9wZW5UYWc6IGNhbkJlTGVmdE9wZW5UYWcsXG4gIGlzUmVzZXJ2ZWRUYWc6IGlzUmVzZXJ2ZWRUYWcsXG4gIGdldFRhZ05hbWVzcGFjZTogZ2V0VGFnTmFtZXNwYWNlLFxuICBzdGF0aWNLZXlzOiBnZW5TdGF0aWNLZXlzKG1vZHVsZXMkMSlcbn07XG5cbi8qICAqL1xuXG52YXIgaXNTdGF0aWNLZXk7XG52YXIgaXNQbGF0Zm9ybVJlc2VydmVkVGFnO1xuXG52YXIgZ2VuU3RhdGljS2V5c0NhY2hlZCA9IGNhY2hlZChnZW5TdGF0aWNLZXlzJDEpO1xuXG4vKipcbiAqIEdvYWwgb2YgdGhlIG9wdGltaXplcjogd2FsayB0aGUgZ2VuZXJhdGVkIHRlbXBsYXRlIEFTVCB0cmVlXG4gKiBhbmQgZGV0ZWN0IHN1Yi10cmVlcyB0aGF0IGFyZSBwdXJlbHkgc3RhdGljLCBpLmUuIHBhcnRzIG9mXG4gKiB0aGUgRE9NIHRoYXQgbmV2ZXIgbmVlZHMgdG8gY2hhbmdlLlxuICpcbiAqIE9uY2Ugd2UgZGV0ZWN0IHRoZXNlIHN1Yi10cmVlcywgd2UgY2FuOlxuICpcbiAqIDEuIEhvaXN0IHRoZW0gaW50byBjb25zdGFudHMsIHNvIHRoYXQgd2Ugbm8gbG9uZ2VyIG5lZWQgdG9cbiAqICAgIGNyZWF0ZSBmcmVzaCBub2RlcyBmb3IgdGhlbSBvbiBlYWNoIHJlLXJlbmRlcjtcbiAqIDIuIENvbXBsZXRlbHkgc2tpcCB0aGVtIGluIHRoZSBwYXRjaGluZyBwcm9jZXNzLlxuICovXG5mdW5jdGlvbiBvcHRpbWl6ZSAocm9vdCwgb3B0aW9ucykge1xuICBpZiAoIXJvb3QpIHsgcmV0dXJuIH1cbiAgaXNTdGF0aWNLZXkgPSBnZW5TdGF0aWNLZXlzQ2FjaGVkKG9wdGlvbnMuc3RhdGljS2V5cyB8fCAnJyk7XG4gIGlzUGxhdGZvcm1SZXNlcnZlZFRhZyA9IG9wdGlvbnMuaXNSZXNlcnZlZFRhZyB8fCBubztcbiAgLy8gZmlyc3QgcGFzczogbWFyayBhbGwgbm9uLXN0YXRpYyBub2Rlcy5cbiAgbWFya1N0YXRpYyQxKHJvb3QpO1xuICAvLyBzZWNvbmQgcGFzczogbWFyayBzdGF0aWMgcm9vdHMuXG4gIG1hcmtTdGF0aWNSb290cyhyb290LCBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIGdlblN0YXRpY0tleXMkMSAoa2V5cykge1xuICByZXR1cm4gbWFrZU1hcChcbiAgICAndHlwZSx0YWcsYXR0cnNMaXN0LGF0dHJzTWFwLHBsYWluLHBhcmVudCxjaGlsZHJlbixhdHRycyxzdGFydCxlbmQscmF3QXR0cnNNYXAnICtcbiAgICAoa2V5cyA/ICcsJyArIGtleXMgOiAnJylcbiAgKVxufVxuXG5mdW5jdGlvbiBtYXJrU3RhdGljJDEgKG5vZGUpIHtcbiAgbm9kZS5zdGF0aWMgPSBpc1N0YXRpYyhub2RlKTtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMSkge1xuICAgIC8vIGRvIG5vdCBtYWtlIGNvbXBvbmVudCBzbG90IGNvbnRlbnQgc3RhdGljLiB0aGlzIGF2b2lkc1xuICAgIC8vIDEuIGNvbXBvbmVudHMgbm90IGFibGUgdG8gbXV0YXRlIHNsb3Qgbm9kZXNcbiAgICAvLyAyLiBzdGF0aWMgc2xvdCBjb250ZW50IGZhaWxzIGZvciBob3QtcmVsb2FkaW5nXG4gICAgaWYgKFxuICAgICAgIWlzUGxhdGZvcm1SZXNlcnZlZFRhZyhub2RlLnRhZykgJiZcbiAgICAgIG5vZGUudGFnICE9PSAnc2xvdCcgJiZcbiAgICAgIG5vZGUuYXR0cnNNYXBbJ2lubGluZS10ZW1wbGF0ZSddID09IG51bGxcbiAgICApIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgY2hpbGQgPSBub2RlLmNoaWxkcmVuW2ldO1xuICAgICAgbWFya1N0YXRpYyQxKGNoaWxkKTtcbiAgICAgIGlmICghY2hpbGQuc3RhdGljKSB7XG4gICAgICAgIG5vZGUuc3RhdGljID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChub2RlLmlmQ29uZGl0aW9ucykge1xuICAgICAgZm9yICh2YXIgaSQxID0gMSwgbCQxID0gbm9kZS5pZkNvbmRpdGlvbnMubGVuZ3RoOyBpJDEgPCBsJDE7IGkkMSsrKSB7XG4gICAgICAgIHZhciBibG9jayA9IG5vZGUuaWZDb25kaXRpb25zW2kkMV0uYmxvY2s7XG4gICAgICAgIG1hcmtTdGF0aWMkMShibG9jayk7XG4gICAgICAgIGlmICghYmxvY2suc3RhdGljKSB7XG4gICAgICAgICAgbm9kZS5zdGF0aWMgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBtYXJrU3RhdGljUm9vdHMgKG5vZGUsIGlzSW5Gb3IpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMSkge1xuICAgIGlmIChub2RlLnN0YXRpYyB8fCBub2RlLm9uY2UpIHtcbiAgICAgIG5vZGUuc3RhdGljSW5Gb3IgPSBpc0luRm9yO1xuICAgIH1cbiAgICAvLyBGb3IgYSBub2RlIHRvIHF1YWxpZnkgYXMgYSBzdGF0aWMgcm9vdCwgaXQgc2hvdWxkIGhhdmUgY2hpbGRyZW4gdGhhdFxuICAgIC8vIGFyZSBub3QganVzdCBzdGF0aWMgdGV4dC4gT3RoZXJ3aXNlIHRoZSBjb3N0IG9mIGhvaXN0aW5nIG91dCB3aWxsXG4gICAgLy8gb3V0d2VpZ2ggdGhlIGJlbmVmaXRzIGFuZCBpdCdzIGJldHRlciBvZmYgdG8ganVzdCBhbHdheXMgcmVuZGVyIGl0IGZyZXNoLlxuICAgIGlmIChub2RlLnN0YXRpYyAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCAmJiAhKFxuICAgICAgbm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiZcbiAgICAgIG5vZGUuY2hpbGRyZW5bMF0udHlwZSA9PT0gM1xuICAgICkpIHtcbiAgICAgIG5vZGUuc3RhdGljUm9vdCA9IHRydWU7XG4gICAgICByZXR1cm5cbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZS5zdGF0aWNSb290ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIG1hcmtTdGF0aWNSb290cyhub2RlLmNoaWxkcmVuW2ldLCBpc0luRm9yIHx8ICEhbm9kZS5mb3IpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobm9kZS5pZkNvbmRpdGlvbnMpIHtcbiAgICAgIGZvciAodmFyIGkkMSA9IDEsIGwkMSA9IG5vZGUuaWZDb25kaXRpb25zLmxlbmd0aDsgaSQxIDwgbCQxOyBpJDErKykge1xuICAgICAgICBtYXJrU3RhdGljUm9vdHMobm9kZS5pZkNvbmRpdGlvbnNbaSQxXS5ibG9jaywgaXNJbkZvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzU3RhdGljIChub2RlKSB7XG4gIGlmIChub2RlLnR5cGUgPT09IDIpIHsgLy8gZXhwcmVzc2lvblxuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGlmIChub2RlLnR5cGUgPT09IDMpIHsgLy8gdGV4dFxuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgcmV0dXJuICEhKG5vZGUucHJlIHx8IChcbiAgICAhbm9kZS5oYXNCaW5kaW5ncyAmJiAvLyBubyBkeW5hbWljIGJpbmRpbmdzXG4gICAgIW5vZGUuaWYgJiYgIW5vZGUuZm9yICYmIC8vIG5vdCB2LWlmIG9yIHYtZm9yIG9yIHYtZWxzZVxuICAgICFpc0J1aWx0SW5UYWcobm9kZS50YWcpICYmIC8vIG5vdCBhIGJ1aWx0LWluXG4gICAgaXNQbGF0Zm9ybVJlc2VydmVkVGFnKG5vZGUudGFnKSAmJiAvLyBub3QgYSBjb21wb25lbnRcbiAgICAhaXNEaXJlY3RDaGlsZE9mVGVtcGxhdGVGb3Iobm9kZSkgJiZcbiAgICBPYmplY3Qua2V5cyhub2RlKS5ldmVyeShpc1N0YXRpY0tleSlcbiAgKSlcbn1cblxuZnVuY3Rpb24gaXNEaXJlY3RDaGlsZE9mVGVtcGxhdGVGb3IgKG5vZGUpIHtcbiAgd2hpbGUgKG5vZGUucGFyZW50KSB7XG4gICAgbm9kZSA9IG5vZGUucGFyZW50O1xuICAgIGlmIChub2RlLnRhZyAhPT0gJ3RlbXBsYXRlJykge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIGlmIChub2RlLmZvcikge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qICAqL1xuXG52YXIgZm5FeHBSRSA9IC9eKFtcXHckX10rfFxcKFteKV0qP1xcKSlcXHMqPT58XmZ1bmN0aW9uXFxzKig/OltcXHckXSspP1xccypcXCgvO1xudmFyIGZuSW52b2tlUkUgPSAvXFwoW14pXSo/XFwpOyokLztcbnZhciBzaW1wbGVQYXRoUkUgPSAvXltBLVphLXpfJF1bXFx3JF0qKD86XFwuW0EtWmEtel8kXVtcXHckXSp8XFxbJ1teJ10qPyddfFxcW1wiW15cIl0qP1wiXXxcXFtcXGQrXXxcXFtbQS1aYS16XyRdW1xcdyRdKl0pKiQvO1xuXG4vLyBLZXlib2FyZEV2ZW50LmtleUNvZGUgYWxpYXNlc1xudmFyIGtleUNvZGVzID0ge1xuICBlc2M6IDI3LFxuICB0YWI6IDksXG4gIGVudGVyOiAxMyxcbiAgc3BhY2U6IDMyLFxuICB1cDogMzgsXG4gIGxlZnQ6IDM3LFxuICByaWdodDogMzksXG4gIGRvd246IDQwLFxuICAnZGVsZXRlJzogWzgsIDQ2XVxufTtcblxuLy8gS2V5Ym9hcmRFdmVudC5rZXkgYWxpYXNlc1xudmFyIGtleU5hbWVzID0ge1xuICAvLyAjNzg4MDogSUUxMSBhbmQgRWRnZSB1c2UgYEVzY2AgZm9yIEVzY2FwZSBrZXkgbmFtZS5cbiAgZXNjOiBbJ0VzYycsICdFc2NhcGUnXSxcbiAgdGFiOiAnVGFiJyxcbiAgZW50ZXI6ICdFbnRlcicsXG4gIC8vICM5MTEyOiBJRTExIHVzZXMgYFNwYWNlYmFyYCBmb3IgU3BhY2Uga2V5IG5hbWUuXG4gIHNwYWNlOiBbJyAnLCAnU3BhY2ViYXInXSxcbiAgLy8gIzc4MDY6IElFMTEgdXNlcyBrZXkgbmFtZXMgd2l0aG91dCBgQXJyb3dgIHByZWZpeCBmb3IgYXJyb3cga2V5cy5cbiAgdXA6IFsnVXAnLCAnQXJyb3dVcCddLFxuICBsZWZ0OiBbJ0xlZnQnLCAnQXJyb3dMZWZ0J10sXG4gIHJpZ2h0OiBbJ1JpZ2h0JywgJ0Fycm93UmlnaHQnXSxcbiAgZG93bjogWydEb3duJywgJ0Fycm93RG93biddLFxuICAvLyAjOTExMjogSUUxMSB1c2VzIGBEZWxgIGZvciBEZWxldGUga2V5IG5hbWUuXG4gICdkZWxldGUnOiBbJ0JhY2tzcGFjZScsICdEZWxldGUnLCAnRGVsJ11cbn07XG5cbi8vICM0ODY4OiBtb2RpZmllcnMgdGhhdCBwcmV2ZW50IHRoZSBleGVjdXRpb24gb2YgdGhlIGxpc3RlbmVyXG4vLyBuZWVkIHRvIGV4cGxpY2l0bHkgcmV0dXJuIG51bGwgc28gdGhhdCB3ZSBjYW4gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gcmVtb3ZlXG4vLyB0aGUgbGlzdGVuZXIgZm9yIC5vbmNlXG52YXIgZ2VuR3VhcmQgPSBmdW5jdGlvbiAoY29uZGl0aW9uKSB7IHJldHVybiAoXCJpZihcIiArIGNvbmRpdGlvbiArIFwiKXJldHVybiBudWxsO1wiKTsgfTtcblxudmFyIG1vZGlmaWVyQ29kZSA9IHtcbiAgc3RvcDogJyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsnLFxuICBwcmV2ZW50OiAnJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7JyxcbiAgc2VsZjogZ2VuR3VhcmQoXCIkZXZlbnQudGFyZ2V0ICE9PSAkZXZlbnQuY3VycmVudFRhcmdldFwiKSxcbiAgY3RybDogZ2VuR3VhcmQoXCIhJGV2ZW50LmN0cmxLZXlcIiksXG4gIHNoaWZ0OiBnZW5HdWFyZChcIiEkZXZlbnQuc2hpZnRLZXlcIiksXG4gIGFsdDogZ2VuR3VhcmQoXCIhJGV2ZW50LmFsdEtleVwiKSxcbiAgbWV0YTogZ2VuR3VhcmQoXCIhJGV2ZW50Lm1ldGFLZXlcIiksXG4gIGxlZnQ6IGdlbkd1YXJkKFwiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDBcIiksXG4gIG1pZGRsZTogZ2VuR3VhcmQoXCInYnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMVwiKSxcbiAgcmlnaHQ6IGdlbkd1YXJkKFwiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDJcIilcbn07XG5cbmZ1bmN0aW9uIGdlbkhhbmRsZXJzIChcbiAgZXZlbnRzLFxuICBpc05hdGl2ZVxuKSB7XG4gIHZhciBwcmVmaXggPSBpc05hdGl2ZSA/ICduYXRpdmVPbjonIDogJ29uOic7XG4gIHZhciBzdGF0aWNIYW5kbGVycyA9IFwiXCI7XG4gIHZhciBkeW5hbWljSGFuZGxlcnMgPSBcIlwiO1xuICBmb3IgKHZhciBuYW1lIGluIGV2ZW50cykge1xuICAgIHZhciBoYW5kbGVyQ29kZSA9IGdlbkhhbmRsZXIoZXZlbnRzW25hbWVdKTtcbiAgICBpZiAoZXZlbnRzW25hbWVdICYmIGV2ZW50c1tuYW1lXS5keW5hbWljKSB7XG4gICAgICBkeW5hbWljSGFuZGxlcnMgKz0gbmFtZSArIFwiLFwiICsgaGFuZGxlckNvZGUgKyBcIixcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGljSGFuZGxlcnMgKz0gXCJcXFwiXCIgKyBuYW1lICsgXCJcXFwiOlwiICsgaGFuZGxlckNvZGUgKyBcIixcIjtcbiAgICB9XG4gIH1cbiAgc3RhdGljSGFuZGxlcnMgPSBcIntcIiArIChzdGF0aWNIYW5kbGVycy5zbGljZSgwLCAtMSkpICsgXCJ9XCI7XG4gIGlmIChkeW5hbWljSGFuZGxlcnMpIHtcbiAgICByZXR1cm4gcHJlZml4ICsgXCJfZChcIiArIHN0YXRpY0hhbmRsZXJzICsgXCIsW1wiICsgKGR5bmFtaWNIYW5kbGVycy5zbGljZSgwLCAtMSkpICsgXCJdKVwiXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHByZWZpeCArIHN0YXRpY0hhbmRsZXJzXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuSGFuZGxlciAoaGFuZGxlcikge1xuICBpZiAoIWhhbmRsZXIpIHtcbiAgICByZXR1cm4gJ2Z1bmN0aW9uKCl7fSdcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KGhhbmRsZXIpKSB7XG4gICAgcmV0dXJuIChcIltcIiArIChoYW5kbGVyLm1hcChmdW5jdGlvbiAoaGFuZGxlcikgeyByZXR1cm4gZ2VuSGFuZGxlcihoYW5kbGVyKTsgfSkuam9pbignLCcpKSArIFwiXVwiKVxuICB9XG5cbiAgdmFyIGlzTWV0aG9kUGF0aCA9IHNpbXBsZVBhdGhSRS50ZXN0KGhhbmRsZXIudmFsdWUpO1xuICB2YXIgaXNGdW5jdGlvbkV4cHJlc3Npb24gPSBmbkV4cFJFLnRlc3QoaGFuZGxlci52YWx1ZSk7XG4gIHZhciBpc0Z1bmN0aW9uSW52b2NhdGlvbiA9IHNpbXBsZVBhdGhSRS50ZXN0KGhhbmRsZXIudmFsdWUucmVwbGFjZShmbkludm9rZVJFLCAnJykpO1xuXG4gIGlmICghaGFuZGxlci5tb2RpZmllcnMpIHtcbiAgICBpZiAoaXNNZXRob2RQYXRoIHx8IGlzRnVuY3Rpb25FeHByZXNzaW9uKSB7XG4gICAgICByZXR1cm4gaGFuZGxlci52YWx1ZVxuICAgIH1cbiAgICByZXR1cm4gKFwiZnVuY3Rpb24oJGV2ZW50KXtcIiArIChpc0Z1bmN0aW9uSW52b2NhdGlvbiA/IChcInJldHVybiBcIiArIChoYW5kbGVyLnZhbHVlKSkgOiBoYW5kbGVyLnZhbHVlKSArIFwifVwiKSAvLyBpbmxpbmUgc3RhdGVtZW50XG4gIH0gZWxzZSB7XG4gICAgdmFyIGNvZGUgPSAnJztcbiAgICB2YXIgZ2VuTW9kaWZpZXJDb2RlID0gJyc7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gaGFuZGxlci5tb2RpZmllcnMpIHtcbiAgICAgIGlmIChtb2RpZmllckNvZGVba2V5XSkge1xuICAgICAgICBnZW5Nb2RpZmllckNvZGUgKz0gbW9kaWZpZXJDb2RlW2tleV07XG4gICAgICAgIC8vIGxlZnQvcmlnaHRcbiAgICAgICAgaWYgKGtleUNvZGVzW2tleV0pIHtcbiAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdleGFjdCcpIHtcbiAgICAgICAgdmFyIG1vZGlmaWVycyA9IChoYW5kbGVyLm1vZGlmaWVycyk7XG4gICAgICAgIGdlbk1vZGlmaWVyQ29kZSArPSBnZW5HdWFyZChcbiAgICAgICAgICBbJ2N0cmwnLCAnc2hpZnQnLCAnYWx0JywgJ21ldGEnXVxuICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoa2V5TW9kaWZpZXIpIHsgcmV0dXJuICFtb2RpZmllcnNba2V5TW9kaWZpZXJdOyB9KVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAoa2V5TW9kaWZpZXIpIHsgcmV0dXJuIChcIiRldmVudC5cIiArIGtleU1vZGlmaWVyICsgXCJLZXlcIik7IH0pXG4gICAgICAgICAgICAuam9pbignfHwnKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChrZXlzLmxlbmd0aCkge1xuICAgICAgY29kZSArPSBnZW5LZXlGaWx0ZXIoa2V5cyk7XG4gICAgfVxuICAgIC8vIE1ha2Ugc3VyZSBtb2RpZmllcnMgbGlrZSBwcmV2ZW50IGFuZCBzdG9wIGdldCBleGVjdXRlZCBhZnRlciBrZXkgZmlsdGVyaW5nXG4gICAgaWYgKGdlbk1vZGlmaWVyQ29kZSkge1xuICAgICAgY29kZSArPSBnZW5Nb2RpZmllckNvZGU7XG4gICAgfVxuICAgIHZhciBoYW5kbGVyQ29kZSA9IGlzTWV0aG9kUGF0aFxuICAgICAgPyAoXCJyZXR1cm4gXCIgKyAoaGFuZGxlci52YWx1ZSkgKyBcIigkZXZlbnQpXCIpXG4gICAgICA6IGlzRnVuY3Rpb25FeHByZXNzaW9uXG4gICAgICAgID8gKFwicmV0dXJuIChcIiArIChoYW5kbGVyLnZhbHVlKSArIFwiKSgkZXZlbnQpXCIpXG4gICAgICAgIDogaXNGdW5jdGlvbkludm9jYXRpb25cbiAgICAgICAgICA/IChcInJldHVybiBcIiArIChoYW5kbGVyLnZhbHVlKSlcbiAgICAgICAgICA6IGhhbmRsZXIudmFsdWU7XG4gICAgcmV0dXJuIChcImZ1bmN0aW9uKCRldmVudCl7XCIgKyBjb2RlICsgaGFuZGxlckNvZGUgKyBcIn1cIilcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5LZXlGaWx0ZXIgKGtleXMpIHtcbiAgcmV0dXJuIChcbiAgICAvLyBtYWtlIHN1cmUgdGhlIGtleSBmaWx0ZXJzIG9ubHkgYXBwbHkgdG8gS2V5Ym9hcmRFdmVudHNcbiAgICAvLyAjOTQ0MTogY2FuJ3QgdXNlICdrZXlDb2RlJyBpbiAkZXZlbnQgYmVjYXVzZSBDaHJvbWUgYXV0b2ZpbGwgZmlyZXMgZmFrZVxuICAgIC8vIGtleSBldmVudHMgdGhhdCBkbyBub3QgaGF2ZSBrZXlDb2RlIHByb3BlcnR5Li4uXG4gICAgXCJpZighJGV2ZW50LnR5cGUuaW5kZXhPZigna2V5JykmJlwiICtcbiAgICAoa2V5cy5tYXAoZ2VuRmlsdGVyQ29kZSkuam9pbignJiYnKSkgKyBcIilyZXR1cm4gbnVsbDtcIlxuICApXG59XG5cbmZ1bmN0aW9uIGdlbkZpbHRlckNvZGUgKGtleSkge1xuICB2YXIga2V5VmFsID0gcGFyc2VJbnQoa2V5LCAxMCk7XG4gIGlmIChrZXlWYWwpIHtcbiAgICByZXR1cm4gKFwiJGV2ZW50LmtleUNvZGUhPT1cIiArIGtleVZhbClcbiAgfVxuICB2YXIga2V5Q29kZSA9IGtleUNvZGVzW2tleV07XG4gIHZhciBrZXlOYW1lID0ga2V5TmFtZXNba2V5XTtcbiAgcmV0dXJuIChcbiAgICBcIl9rKCRldmVudC5rZXlDb2RlLFwiICtcbiAgICAoSlNPTi5zdHJpbmdpZnkoa2V5KSkgKyBcIixcIiArXG4gICAgKEpTT04uc3RyaW5naWZ5KGtleUNvZGUpKSArIFwiLFwiICtcbiAgICBcIiRldmVudC5rZXksXCIgK1xuICAgIFwiXCIgKyAoSlNPTi5zdHJpbmdpZnkoa2V5TmFtZSkpICtcbiAgICBcIilcIlxuICApXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBvbiAoZWwsIGRpcikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBkaXIubW9kaWZpZXJzKSB7XG4gICAgd2FybihcInYtb24gd2l0aG91dCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IG1vZGlmaWVycy5cIik7XG4gIH1cbiAgZWwud3JhcExpc3RlbmVycyA9IGZ1bmN0aW9uIChjb2RlKSB7IHJldHVybiAoXCJfZyhcIiArIGNvZGUgKyBcIixcIiArIChkaXIudmFsdWUpICsgXCIpXCIpOyB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gYmluZCQxIChlbCwgZGlyKSB7XG4gIGVsLndyYXBEYXRhID0gZnVuY3Rpb24gKGNvZGUpIHtcbiAgICByZXR1cm4gKFwiX2IoXCIgKyBjb2RlICsgXCIsJ1wiICsgKGVsLnRhZykgKyBcIicsXCIgKyAoZGlyLnZhbHVlKSArIFwiLFwiICsgKGRpci5tb2RpZmllcnMgJiYgZGlyLm1vZGlmaWVycy5wcm9wID8gJ3RydWUnIDogJ2ZhbHNlJykgKyAoZGlyLm1vZGlmaWVycyAmJiBkaXIubW9kaWZpZXJzLnN5bmMgPyAnLHRydWUnIDogJycpICsgXCIpXCIpXG4gIH07XG59XG5cbi8qICAqL1xuXG52YXIgYmFzZURpcmVjdGl2ZXMgPSB7XG4gIG9uOiBvbixcbiAgYmluZDogYmluZCQxLFxuICBjbG9hazogbm9vcFxufTtcblxuLyogICovXG5cblxuXG5cblxudmFyIENvZGVnZW5TdGF0ZSA9IGZ1bmN0aW9uIENvZGVnZW5TdGF0ZSAob3B0aW9ucykge1xuICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB0aGlzLndhcm4gPSBvcHRpb25zLndhcm4gfHwgYmFzZVdhcm47XG4gIHRoaXMudHJhbnNmb3JtcyA9IHBsdWNrTW9kdWxlRnVuY3Rpb24ob3B0aW9ucy5tb2R1bGVzLCAndHJhbnNmb3JtQ29kZScpO1xuICB0aGlzLmRhdGFHZW5GbnMgPSBwbHVja01vZHVsZUZ1bmN0aW9uKG9wdGlvbnMubW9kdWxlcywgJ2dlbkRhdGEnKTtcbiAgdGhpcy5kaXJlY3RpdmVzID0gZXh0ZW5kKGV4dGVuZCh7fSwgYmFzZURpcmVjdGl2ZXMpLCBvcHRpb25zLmRpcmVjdGl2ZXMpO1xuICB2YXIgaXNSZXNlcnZlZFRhZyA9IG9wdGlvbnMuaXNSZXNlcnZlZFRhZyB8fCBubztcbiAgdGhpcy5tYXliZUNvbXBvbmVudCA9IGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gISFlbC5jb21wb25lbnQgfHwgIWlzUmVzZXJ2ZWRUYWcoZWwudGFnKTsgfTtcbiAgdGhpcy5vbmNlSWQgPSAwO1xuICB0aGlzLnN0YXRpY1JlbmRlckZucyA9IFtdO1xuICB0aGlzLnByZSA9IGZhbHNlO1xufTtcblxuXG5cbmZ1bmN0aW9uIGdlbmVyYXRlIChcbiAgYXN0LFxuICBvcHRpb25zXG4pIHtcbiAgdmFyIHN0YXRlID0gbmV3IENvZGVnZW5TdGF0ZShvcHRpb25zKTtcbiAgdmFyIGNvZGUgPSBhc3QgPyBnZW5FbGVtZW50KGFzdCwgc3RhdGUpIDogJ19jKFwiZGl2XCIpJztcbiAgcmV0dXJuIHtcbiAgICByZW5kZXI6IChcIndpdGgodGhpcyl7cmV0dXJuIFwiICsgY29kZSArIFwifVwiKSxcbiAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRlLnN0YXRpY1JlbmRlckZuc1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbkVsZW1lbnQgKGVsLCBzdGF0ZSkge1xuICBpZiAoZWwucGFyZW50KSB7XG4gICAgZWwucHJlID0gZWwucHJlIHx8IGVsLnBhcmVudC5wcmU7XG4gIH1cblxuICBpZiAoZWwuc3RhdGljUm9vdCAmJiAhZWwuc3RhdGljUHJvY2Vzc2VkKSB7XG4gICAgcmV0dXJuIGdlblN0YXRpYyhlbCwgc3RhdGUpXG4gIH0gZWxzZSBpZiAoZWwub25jZSAmJiAhZWwub25jZVByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5PbmNlKGVsLCBzdGF0ZSlcbiAgfSBlbHNlIGlmIChlbC5mb3IgJiYgIWVsLmZvclByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5Gb3IoZWwsIHN0YXRlKVxuICB9IGVsc2UgaWYgKGVsLmlmICYmICFlbC5pZlByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5JZihlbCwgc3RhdGUpXG4gIH0gZWxzZSBpZiAoZWwudGFnID09PSAndGVtcGxhdGUnICYmICFlbC5zbG90VGFyZ2V0ICYmICFzdGF0ZS5wcmUpIHtcbiAgICByZXR1cm4gZ2VuQ2hpbGRyZW4oZWwsIHN0YXRlKSB8fCAndm9pZCAwJ1xuICB9IGVsc2UgaWYgKGVsLnRhZyA9PT0gJ3Nsb3QnKSB7XG4gICAgcmV0dXJuIGdlblNsb3QoZWwsIHN0YXRlKVxuICB9IGVsc2Uge1xuICAgIC8vIGNvbXBvbmVudCBvciBlbGVtZW50XG4gICAgdmFyIGNvZGU7XG4gICAgaWYgKGVsLmNvbXBvbmVudCkge1xuICAgICAgY29kZSA9IGdlbkNvbXBvbmVudChlbC5jb21wb25lbnQsIGVsLCBzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBkYXRhO1xuICAgICAgaWYgKCFlbC5wbGFpbiB8fCAoZWwucHJlICYmIHN0YXRlLm1heWJlQ29tcG9uZW50KGVsKSkpIHtcbiAgICAgICAgZGF0YSA9IGdlbkRhdGEkMihlbCwgc3RhdGUpO1xuICAgICAgfVxuXG4gICAgICB2YXIgY2hpbGRyZW4gPSBlbC5pbmxpbmVUZW1wbGF0ZSA/IG51bGwgOiBnZW5DaGlsZHJlbihlbCwgc3RhdGUsIHRydWUpO1xuICAgICAgY29kZSA9IFwiX2MoJ1wiICsgKGVsLnRhZykgKyBcIidcIiArIChkYXRhID8gKFwiLFwiICsgZGF0YSkgOiAnJykgKyAoY2hpbGRyZW4gPyAoXCIsXCIgKyBjaGlsZHJlbikgOiAnJykgKyBcIilcIjtcbiAgICB9XG4gICAgLy8gbW9kdWxlIHRyYW5zZm9ybXNcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlLnRyYW5zZm9ybXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvZGUgPSBzdGF0ZS50cmFuc2Zvcm1zW2ldKGVsLCBjb2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvZGVcbiAgfVxufVxuXG4vLyBob2lzdCBzdGF0aWMgc3ViLXRyZWVzIG91dFxuZnVuY3Rpb24gZ2VuU3RhdGljIChlbCwgc3RhdGUpIHtcbiAgZWwuc3RhdGljUHJvY2Vzc2VkID0gdHJ1ZTtcbiAgLy8gU29tZSBlbGVtZW50cyAodGVtcGxhdGVzKSBuZWVkIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSBpbnNpZGUgb2YgYSB2LXByZVxuICAvLyBub2RlLiAgQWxsIHByZSBub2RlcyBhcmUgc3RhdGljIHJvb3RzLCBzbyB3ZSBjYW4gdXNlIHRoaXMgYXMgYSBsb2NhdGlvbiB0b1xuICAvLyB3cmFwIGEgc3RhdGUgY2hhbmdlIGFuZCByZXNldCBpdCB1cG9uIGV4aXRpbmcgdGhlIHByZSBub2RlLlxuICB2YXIgb3JpZ2luYWxQcmVTdGF0ZSA9IHN0YXRlLnByZTtcbiAgaWYgKGVsLnByZSkge1xuICAgIHN0YXRlLnByZSA9IGVsLnByZTtcbiAgfVxuICBzdGF0ZS5zdGF0aWNSZW5kZXJGbnMucHVzaCgoXCJ3aXRoKHRoaXMpe3JldHVybiBcIiArIChnZW5FbGVtZW50KGVsLCBzdGF0ZSkpICsgXCJ9XCIpKTtcbiAgc3RhdGUucHJlID0gb3JpZ2luYWxQcmVTdGF0ZTtcbiAgcmV0dXJuIChcIl9tKFwiICsgKHN0YXRlLnN0YXRpY1JlbmRlckZucy5sZW5ndGggLSAxKSArIChlbC5zdGF0aWNJbkZvciA/ICcsdHJ1ZScgOiAnJykgKyBcIilcIilcbn1cblxuLy8gdi1vbmNlXG5mdW5jdGlvbiBnZW5PbmNlIChlbCwgc3RhdGUpIHtcbiAgZWwub25jZVByb2Nlc3NlZCA9IHRydWU7XG4gIGlmIChlbC5pZiAmJiAhZWwuaWZQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuSWYoZWwsIHN0YXRlKVxuICB9IGVsc2UgaWYgKGVsLnN0YXRpY0luRm9yKSB7XG4gICAgdmFyIGtleSA9ICcnO1xuICAgIHZhciBwYXJlbnQgPSBlbC5wYXJlbnQ7XG4gICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgaWYgKHBhcmVudC5mb3IpIHtcbiAgICAgICAga2V5ID0gcGFyZW50LmtleTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XG4gICAgfVxuICAgIGlmICgha2V5KSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHN0YXRlLndhcm4oXG4gICAgICAgIFwidi1vbmNlIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlIHYtZm9yIHRoYXQgaXMga2V5ZWQuIFwiLFxuICAgICAgICBlbC5yYXdBdHRyc01hcFsndi1vbmNlJ11cbiAgICAgICk7XG4gICAgICByZXR1cm4gZ2VuRWxlbWVudChlbCwgc3RhdGUpXG4gICAgfVxuICAgIHJldHVybiAoXCJfbyhcIiArIChnZW5FbGVtZW50KGVsLCBzdGF0ZSkpICsgXCIsXCIgKyAoc3RhdGUub25jZUlkKyspICsgXCIsXCIgKyBrZXkgKyBcIilcIilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2VuU3RhdGljKGVsLCBzdGF0ZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5JZiAoXG4gIGVsLFxuICBzdGF0ZSxcbiAgYWx0R2VuLFxuICBhbHRFbXB0eVxuKSB7XG4gIGVsLmlmUHJvY2Vzc2VkID0gdHJ1ZTsgLy8gYXZvaWQgcmVjdXJzaW9uXG4gIHJldHVybiBnZW5JZkNvbmRpdGlvbnMoZWwuaWZDb25kaXRpb25zLnNsaWNlKCksIHN0YXRlLCBhbHRHZW4sIGFsdEVtcHR5KVxufVxuXG5mdW5jdGlvbiBnZW5JZkNvbmRpdGlvbnMgKFxuICBjb25kaXRpb25zLFxuICBzdGF0ZSxcbiAgYWx0R2VuLFxuICBhbHRFbXB0eVxuKSB7XG4gIGlmICghY29uZGl0aW9ucy5sZW5ndGgpIHtcbiAgICByZXR1cm4gYWx0RW1wdHkgfHwgJ19lKCknXG4gIH1cblxuICB2YXIgY29uZGl0aW9uID0gY29uZGl0aW9ucy5zaGlmdCgpO1xuICBpZiAoY29uZGl0aW9uLmV4cCkge1xuICAgIHJldHVybiAoXCIoXCIgKyAoY29uZGl0aW9uLmV4cCkgKyBcIik/XCIgKyAoZ2VuVGVybmFyeUV4cChjb25kaXRpb24uYmxvY2spKSArIFwiOlwiICsgKGdlbklmQ29uZGl0aW9ucyhjb25kaXRpb25zLCBzdGF0ZSwgYWx0R2VuLCBhbHRFbXB0eSkpKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiAoXCJcIiArIChnZW5UZXJuYXJ5RXhwKGNvbmRpdGlvbi5ibG9jaykpKVxuICB9XG5cbiAgLy8gdi1pZiB3aXRoIHYtb25jZSBzaG91bGQgZ2VuZXJhdGUgY29kZSBsaWtlIChhKT9fbSgwKTpfbSgxKVxuICBmdW5jdGlvbiBnZW5UZXJuYXJ5RXhwIChlbCkge1xuICAgIHJldHVybiBhbHRHZW5cbiAgICAgID8gYWx0R2VuKGVsLCBzdGF0ZSlcbiAgICAgIDogZWwub25jZVxuICAgICAgICA/IGdlbk9uY2UoZWwsIHN0YXRlKVxuICAgICAgICA6IGdlbkVsZW1lbnQoZWwsIHN0YXRlKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdlbkZvciAoXG4gIGVsLFxuICBzdGF0ZSxcbiAgYWx0R2VuLFxuICBhbHRIZWxwZXJcbikge1xuICB2YXIgZXhwID0gZWwuZm9yO1xuICB2YXIgYWxpYXMgPSBlbC5hbGlhcztcbiAgdmFyIGl0ZXJhdG9yMSA9IGVsLml0ZXJhdG9yMSA/IChcIixcIiArIChlbC5pdGVyYXRvcjEpKSA6ICcnO1xuICB2YXIgaXRlcmF0b3IyID0gZWwuaXRlcmF0b3IyID8gKFwiLFwiICsgKGVsLml0ZXJhdG9yMikpIDogJyc7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICBzdGF0ZS5tYXliZUNvbXBvbmVudChlbCkgJiZcbiAgICBlbC50YWcgIT09ICdzbG90JyAmJlxuICAgIGVsLnRhZyAhPT0gJ3RlbXBsYXRlJyAmJlxuICAgICFlbC5rZXlcbiAgKSB7XG4gICAgc3RhdGUud2FybihcbiAgICAgIFwiPFwiICsgKGVsLnRhZykgKyBcIiB2LWZvcj1cXFwiXCIgKyBhbGlhcyArIFwiIGluIFwiICsgZXhwICsgXCJcXFwiPjogY29tcG9uZW50IGxpc3RzIHJlbmRlcmVkIHdpdGggXCIgK1xuICAgICAgXCJ2LWZvciBzaG91bGQgaGF2ZSBleHBsaWNpdCBrZXlzLiBcIiArXG4gICAgICBcIlNlZSBodHRwczovL3Z1ZWpzLm9yZy9ndWlkZS9saXN0Lmh0bWwja2V5IGZvciBtb3JlIGluZm8uXCIsXG4gICAgICBlbC5yYXdBdHRyc01hcFsndi1mb3InXSxcbiAgICAgIHRydWUgLyogdGlwICovXG4gICAgKTtcbiAgfVxuXG4gIGVsLmZvclByb2Nlc3NlZCA9IHRydWU7IC8vIGF2b2lkIHJlY3Vyc2lvblxuICByZXR1cm4gKGFsdEhlbHBlciB8fCAnX2wnKSArIFwiKChcIiArIGV4cCArIFwiKSxcIiArXG4gICAgXCJmdW5jdGlvbihcIiArIGFsaWFzICsgaXRlcmF0b3IxICsgaXRlcmF0b3IyICsgXCIpe1wiICtcbiAgICAgIFwicmV0dXJuIFwiICsgKChhbHRHZW4gfHwgZ2VuRWxlbWVudCkoZWwsIHN0YXRlKSkgK1xuICAgICd9KSdcbn1cblxuZnVuY3Rpb24gZ2VuRGF0YSQyIChlbCwgc3RhdGUpIHtcbiAgdmFyIGRhdGEgPSAneyc7XG5cbiAgLy8gZGlyZWN0aXZlcyBmaXJzdC5cbiAgLy8gZGlyZWN0aXZlcyBtYXkgbXV0YXRlIHRoZSBlbCdzIG90aGVyIHByb3BlcnRpZXMgYmVmb3JlIHRoZXkgYXJlIGdlbmVyYXRlZC5cbiAgdmFyIGRpcnMgPSBnZW5EaXJlY3RpdmVzKGVsLCBzdGF0ZSk7XG4gIGlmIChkaXJzKSB7IGRhdGEgKz0gZGlycyArICcsJzsgfVxuXG4gIC8vIGtleVxuICBpZiAoZWwua2V5KSB7XG4gICAgZGF0YSArPSBcImtleTpcIiArIChlbC5rZXkpICsgXCIsXCI7XG4gIH1cbiAgLy8gcmVmXG4gIGlmIChlbC5yZWYpIHtcbiAgICBkYXRhICs9IFwicmVmOlwiICsgKGVsLnJlZikgKyBcIixcIjtcbiAgfVxuICBpZiAoZWwucmVmSW5Gb3IpIHtcbiAgICBkYXRhICs9IFwicmVmSW5Gb3I6dHJ1ZSxcIjtcbiAgfVxuICAvLyBwcmVcbiAgaWYgKGVsLnByZSkge1xuICAgIGRhdGEgKz0gXCJwcmU6dHJ1ZSxcIjtcbiAgfVxuICAvLyByZWNvcmQgb3JpZ2luYWwgdGFnIG5hbWUgZm9yIGNvbXBvbmVudHMgdXNpbmcgXCJpc1wiIGF0dHJpYnV0ZVxuICBpZiAoZWwuY29tcG9uZW50KSB7XG4gICAgZGF0YSArPSBcInRhZzpcXFwiXCIgKyAoZWwudGFnKSArIFwiXFxcIixcIjtcbiAgfVxuICAvLyBtb2R1bGUgZGF0YSBnZW5lcmF0aW9uIGZ1bmN0aW9uc1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlLmRhdGFHZW5GbnMubGVuZ3RoOyBpKyspIHtcbiAgICBkYXRhICs9IHN0YXRlLmRhdGFHZW5GbnNbaV0oZWwpO1xuICB9XG4gIC8vIGF0dHJpYnV0ZXNcbiAgaWYgKGVsLmF0dHJzKSB7XG4gICAgZGF0YSArPSBcImF0dHJzOlwiICsgKGdlblByb3BzKGVsLmF0dHJzKSkgKyBcIixcIjtcbiAgfVxuICAvLyBET00gcHJvcHNcbiAgaWYgKGVsLnByb3BzKSB7XG4gICAgZGF0YSArPSBcImRvbVByb3BzOlwiICsgKGdlblByb3BzKGVsLnByb3BzKSkgKyBcIixcIjtcbiAgfVxuICAvLyBldmVudCBoYW5kbGVyc1xuICBpZiAoZWwuZXZlbnRzKSB7XG4gICAgZGF0YSArPSAoZ2VuSGFuZGxlcnMoZWwuZXZlbnRzLCBmYWxzZSkpICsgXCIsXCI7XG4gIH1cbiAgaWYgKGVsLm5hdGl2ZUV2ZW50cykge1xuICAgIGRhdGEgKz0gKGdlbkhhbmRsZXJzKGVsLm5hdGl2ZUV2ZW50cywgdHJ1ZSkpICsgXCIsXCI7XG4gIH1cbiAgLy8gc2xvdCB0YXJnZXRcbiAgLy8gb25seSBmb3Igbm9uLXNjb3BlZCBzbG90c1xuICBpZiAoZWwuc2xvdFRhcmdldCAmJiAhZWwuc2xvdFNjb3BlKSB7XG4gICAgZGF0YSArPSBcInNsb3Q6XCIgKyAoZWwuc2xvdFRhcmdldCkgKyBcIixcIjtcbiAgfVxuICAvLyBzY29wZWQgc2xvdHNcbiAgaWYgKGVsLnNjb3BlZFNsb3RzKSB7XG4gICAgZGF0YSArPSAoZ2VuU2NvcGVkU2xvdHMoZWwsIGVsLnNjb3BlZFNsb3RzLCBzdGF0ZSkpICsgXCIsXCI7XG4gIH1cbiAgLy8gY29tcG9uZW50IHYtbW9kZWxcbiAgaWYgKGVsLm1vZGVsKSB7XG4gICAgZGF0YSArPSBcIm1vZGVsOnt2YWx1ZTpcIiArIChlbC5tb2RlbC52YWx1ZSkgKyBcIixjYWxsYmFjazpcIiArIChlbC5tb2RlbC5jYWxsYmFjaykgKyBcIixleHByZXNzaW9uOlwiICsgKGVsLm1vZGVsLmV4cHJlc3Npb24pICsgXCJ9LFwiO1xuICB9XG4gIC8vIGlubGluZS10ZW1wbGF0ZVxuICBpZiAoZWwuaW5saW5lVGVtcGxhdGUpIHtcbiAgICB2YXIgaW5saW5lVGVtcGxhdGUgPSBnZW5JbmxpbmVUZW1wbGF0ZShlbCwgc3RhdGUpO1xuICAgIGlmIChpbmxpbmVUZW1wbGF0ZSkge1xuICAgICAgZGF0YSArPSBpbmxpbmVUZW1wbGF0ZSArIFwiLFwiO1xuICAgIH1cbiAgfVxuICBkYXRhID0gZGF0YS5yZXBsYWNlKC8sJC8sICcnKSArICd9JztcbiAgLy8gdi1iaW5kIGR5bmFtaWMgYXJndW1lbnQgd3JhcFxuICAvLyB2LWJpbmQgd2l0aCBkeW5hbWljIGFyZ3VtZW50cyBtdXN0IGJlIGFwcGxpZWQgdXNpbmcgdGhlIHNhbWUgdi1iaW5kIG9iamVjdFxuICAvLyBtZXJnZSBoZWxwZXIgc28gdGhhdCBjbGFzcy9zdHlsZS9tdXN0VXNlUHJvcCBhdHRycyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuXG4gIGlmIChlbC5keW5hbWljQXR0cnMpIHtcbiAgICBkYXRhID0gXCJfYihcIiArIGRhdGEgKyBcIixcXFwiXCIgKyAoZWwudGFnKSArIFwiXFxcIixcIiArIChnZW5Qcm9wcyhlbC5keW5hbWljQXR0cnMpKSArIFwiKVwiO1xuICB9XG4gIC8vIHYtYmluZCBkYXRhIHdyYXBcbiAgaWYgKGVsLndyYXBEYXRhKSB7XG4gICAgZGF0YSA9IGVsLndyYXBEYXRhKGRhdGEpO1xuICB9XG4gIC8vIHYtb24gZGF0YSB3cmFwXG4gIGlmIChlbC53cmFwTGlzdGVuZXJzKSB7XG4gICAgZGF0YSA9IGVsLndyYXBMaXN0ZW5lcnMoZGF0YSk7XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cblxuZnVuY3Rpb24gZ2VuRGlyZWN0aXZlcyAoZWwsIHN0YXRlKSB7XG4gIHZhciBkaXJzID0gZWwuZGlyZWN0aXZlcztcbiAgaWYgKCFkaXJzKSB7IHJldHVybiB9XG4gIHZhciByZXMgPSAnZGlyZWN0aXZlczpbJztcbiAgdmFyIGhhc1J1bnRpbWUgPSBmYWxzZTtcbiAgdmFyIGksIGwsIGRpciwgbmVlZFJ1bnRpbWU7XG4gIGZvciAoaSA9IDAsIGwgPSBkaXJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGRpciA9IGRpcnNbaV07XG4gICAgbmVlZFJ1bnRpbWUgPSB0cnVlO1xuICAgIHZhciBnZW4gPSBzdGF0ZS5kaXJlY3RpdmVzW2Rpci5uYW1lXTtcbiAgICBpZiAoZ2VuKSB7XG4gICAgICAvLyBjb21waWxlLXRpbWUgZGlyZWN0aXZlIHRoYXQgbWFuaXB1bGF0ZXMgQVNULlxuICAgICAgLy8gcmV0dXJucyB0cnVlIGlmIGl0IGFsc28gbmVlZHMgYSBydW50aW1lIGNvdW50ZXJwYXJ0LlxuICAgICAgbmVlZFJ1bnRpbWUgPSAhIWdlbihlbCwgZGlyLCBzdGF0ZS53YXJuKTtcbiAgICB9XG4gICAgaWYgKG5lZWRSdW50aW1lKSB7XG4gICAgICBoYXNSdW50aW1lID0gdHJ1ZTtcbiAgICAgIHJlcyArPSBcIntuYW1lOlxcXCJcIiArIChkaXIubmFtZSkgKyBcIlxcXCIscmF3TmFtZTpcXFwiXCIgKyAoZGlyLnJhd05hbWUpICsgXCJcXFwiXCIgKyAoZGlyLnZhbHVlID8gKFwiLHZhbHVlOihcIiArIChkaXIudmFsdWUpICsgXCIpLGV4cHJlc3Npb246XCIgKyAoSlNPTi5zdHJpbmdpZnkoZGlyLnZhbHVlKSkpIDogJycpICsgKGRpci5hcmcgPyAoXCIsYXJnOlwiICsgKGRpci5pc0R5bmFtaWNBcmcgPyBkaXIuYXJnIDogKFwiXFxcIlwiICsgKGRpci5hcmcpICsgXCJcXFwiXCIpKSkgOiAnJykgKyAoZGlyLm1vZGlmaWVycyA/IChcIixtb2RpZmllcnM6XCIgKyAoSlNPTi5zdHJpbmdpZnkoZGlyLm1vZGlmaWVycykpKSA6ICcnKSArIFwifSxcIjtcbiAgICB9XG4gIH1cbiAgaWYgKGhhc1J1bnRpbWUpIHtcbiAgICByZXR1cm4gcmVzLnNsaWNlKDAsIC0xKSArICddJ1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbklubGluZVRlbXBsYXRlIChlbCwgc3RhdGUpIHtcbiAgdmFyIGFzdCA9IGVsLmNoaWxkcmVuWzBdO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAoXG4gICAgZWwuY2hpbGRyZW4ubGVuZ3RoICE9PSAxIHx8IGFzdC50eXBlICE9PSAxXG4gICkpIHtcbiAgICBzdGF0ZS53YXJuKFxuICAgICAgJ0lubGluZS10ZW1wbGF0ZSBjb21wb25lbnRzIG11c3QgaGF2ZSBleGFjdGx5IG9uZSBjaGlsZCBlbGVtZW50LicsXG4gICAgICB7IHN0YXJ0OiBlbC5zdGFydCB9XG4gICAgKTtcbiAgfVxuICBpZiAoYXN0ICYmIGFzdC50eXBlID09PSAxKSB7XG4gICAgdmFyIGlubGluZVJlbmRlckZucyA9IGdlbmVyYXRlKGFzdCwgc3RhdGUub3B0aW9ucyk7XG4gICAgcmV0dXJuIChcImlubGluZVRlbXBsYXRlOntyZW5kZXI6ZnVuY3Rpb24oKXtcIiArIChpbmxpbmVSZW5kZXJGbnMucmVuZGVyKSArIFwifSxzdGF0aWNSZW5kZXJGbnM6W1wiICsgKGlubGluZVJlbmRlckZucy5zdGF0aWNSZW5kZXJGbnMubWFwKGZ1bmN0aW9uIChjb2RlKSB7IHJldHVybiAoXCJmdW5jdGlvbigpe1wiICsgY29kZSArIFwifVwiKTsgfSkuam9pbignLCcpKSArIFwiXX1cIilcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5TY29wZWRTbG90cyAoXG4gIGVsLFxuICBzbG90cyxcbiAgc3RhdGVcbikge1xuICAvLyBieSBkZWZhdWx0IHNjb3BlZCBzbG90cyBhcmUgY29uc2lkZXJlZCBcInN0YWJsZVwiLCB0aGlzIGFsbG93cyBjaGlsZFxuICAvLyBjb21wb25lbnRzIHdpdGggb25seSBzY29wZWQgc2xvdHMgdG8gc2tpcCBmb3JjZWQgdXBkYXRlcyBmcm9tIHBhcmVudC5cbiAgLy8gYnV0IGluIHNvbWUgY2FzZXMgd2UgaGF2ZSB0byBiYWlsLW91dCBvZiB0aGlzIG9wdGltaXphdGlvblxuICAvLyBmb3IgZXhhbXBsZSBpZiB0aGUgc2xvdCBjb250YWlucyBkeW5hbWljIG5hbWVzLCBoYXMgdi1pZiBvciB2LWZvciBvbiB0aGVtLi4uXG4gIHZhciBuZWVkc0ZvcmNlVXBkYXRlID0gZWwuZm9yIHx8IE9iamVjdC5rZXlzKHNsb3RzKS5zb21lKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgc2xvdCA9IHNsb3RzW2tleV07XG4gICAgcmV0dXJuIChcbiAgICAgIHNsb3Quc2xvdFRhcmdldER5bmFtaWMgfHxcbiAgICAgIHNsb3QuaWYgfHxcbiAgICAgIHNsb3QuZm9yIHx8XG4gICAgICBjb250YWluc1Nsb3RDaGlsZChzbG90KSAvLyBpcyBwYXNzaW5nIGRvd24gc2xvdCBmcm9tIHBhcmVudCB3aGljaCBtYXkgYmUgZHluYW1pY1xuICAgIClcbiAgfSk7XG5cbiAgLy8gIzk1MzQ6IGlmIGEgY29tcG9uZW50IHdpdGggc2NvcGVkIHNsb3RzIGlzIGluc2lkZSBhIGNvbmRpdGlvbmFsIGJyYW5jaCxcbiAgLy8gaXQncyBwb3NzaWJsZSBmb3IgdGhlIHNhbWUgY29tcG9uZW50IHRvIGJlIHJldXNlZCBidXQgd2l0aCBkaWZmZXJlbnRcbiAgLy8gY29tcGlsZWQgc2xvdCBjb250ZW50LiBUbyBhdm9pZCB0aGF0LCB3ZSBnZW5lcmF0ZSBhIHVuaXF1ZSBrZXkgYmFzZWQgb25cbiAgLy8gdGhlIGdlbmVyYXRlZCBjb2RlIG9mIGFsbCB0aGUgc2xvdCBjb250ZW50cy5cbiAgdmFyIG5lZWRzS2V5ID0gISFlbC5pZjtcblxuICAvLyBPUiB3aGVuIGl0IGlzIGluc2lkZSBhbm90aGVyIHNjb3BlZCBzbG90IG9yIHYtZm9yICh0aGUgcmVhY3Rpdml0eSBtYXkgYmVcbiAgLy8gZGlzY29ubmVjdGVkIGR1ZSB0byB0aGUgaW50ZXJtZWRpYXRlIHNjb3BlIHZhcmlhYmxlKVxuICAvLyAjOTQzOCwgIzk1MDZcbiAgLy8gVE9ETzogdGhpcyBjYW4gYmUgZnVydGhlciBvcHRpbWl6ZWQgYnkgcHJvcGVybHkgYW5hbHl6aW5nIGluLXNjb3BlIGJpbmRpbmdzXG4gIC8vIGFuZCBza2lwIGZvcmNlIHVwZGF0aW5nIG9uZXMgdGhhdCBkbyBub3QgYWN0dWFsbHkgdXNlIHNjb3BlIHZhcmlhYmxlcy5cbiAgaWYgKCFuZWVkc0ZvcmNlVXBkYXRlKSB7XG4gICAgdmFyIHBhcmVudCA9IGVsLnBhcmVudDtcbiAgICB3aGlsZSAocGFyZW50KSB7XG4gICAgICBpZiAoXG4gICAgICAgIChwYXJlbnQuc2xvdFNjb3BlICYmIHBhcmVudC5zbG90U2NvcGUgIT09IGVtcHR5U2xvdFNjb3BlVG9rZW4pIHx8XG4gICAgICAgIHBhcmVudC5mb3JcbiAgICAgICkge1xuICAgICAgICBuZWVkc0ZvcmNlVXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJlbnQuaWYpIHtcbiAgICAgICAgbmVlZHNLZXkgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgICB9XG4gIH1cblxuICB2YXIgZ2VuZXJhdGVkU2xvdHMgPSBPYmplY3Qua2V5cyhzbG90cylcbiAgICAubWFwKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIGdlblNjb3BlZFNsb3Qoc2xvdHNba2V5XSwgc3RhdGUpOyB9KVxuICAgIC5qb2luKCcsJyk7XG5cbiAgcmV0dXJuIChcInNjb3BlZFNsb3RzOl91KFtcIiArIGdlbmVyYXRlZFNsb3RzICsgXCJdXCIgKyAobmVlZHNGb3JjZVVwZGF0ZSA/IFwiLG51bGwsdHJ1ZVwiIDogXCJcIikgKyAoIW5lZWRzRm9yY2VVcGRhdGUgJiYgbmVlZHNLZXkgPyAoXCIsbnVsbCxmYWxzZSxcIiArIChoYXNoKGdlbmVyYXRlZFNsb3RzKSkpIDogXCJcIikgKyBcIilcIilcbn1cblxuZnVuY3Rpb24gaGFzaChzdHIpIHtcbiAgdmFyIGhhc2ggPSA1MzgxO1xuICB2YXIgaSA9IHN0ci5sZW5ndGg7XG4gIHdoaWxlKGkpIHtcbiAgICBoYXNoID0gKGhhc2ggKiAzMykgXiBzdHIuY2hhckNvZGVBdCgtLWkpO1xuICB9XG4gIHJldHVybiBoYXNoID4+PiAwXG59XG5cbmZ1bmN0aW9uIGNvbnRhaW5zU2xvdENoaWxkIChlbCkge1xuICBpZiAoZWwudHlwZSA9PT0gMSkge1xuICAgIGlmIChlbC50YWcgPT09ICdzbG90Jykge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgcmV0dXJuIGVsLmNoaWxkcmVuLnNvbWUoY29udGFpbnNTbG90Q2hpbGQpXG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGdlblNjb3BlZFNsb3QgKFxuICBlbCxcbiAgc3RhdGVcbikge1xuICB2YXIgaXNMZWdhY3lTeW50YXggPSBlbC5hdHRyc01hcFsnc2xvdC1zY29wZSddO1xuICBpZiAoZWwuaWYgJiYgIWVsLmlmUHJvY2Vzc2VkICYmICFpc0xlZ2FjeVN5bnRheCkge1xuICAgIHJldHVybiBnZW5JZihlbCwgc3RhdGUsIGdlblNjb3BlZFNsb3QsIFwibnVsbFwiKVxuICB9XG4gIGlmIChlbC5mb3IgJiYgIWVsLmZvclByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5Gb3IoZWwsIHN0YXRlLCBnZW5TY29wZWRTbG90KVxuICB9XG4gIHZhciBzbG90U2NvcGUgPSBlbC5zbG90U2NvcGUgPT09IGVtcHR5U2xvdFNjb3BlVG9rZW5cbiAgICA/IFwiXCJcbiAgICA6IFN0cmluZyhlbC5zbG90U2NvcGUpO1xuICB2YXIgZm4gPSBcImZ1bmN0aW9uKFwiICsgc2xvdFNjb3BlICsgXCIpe1wiICtcbiAgICBcInJldHVybiBcIiArIChlbC50YWcgPT09ICd0ZW1wbGF0ZSdcbiAgICAgID8gZWwuaWYgJiYgaXNMZWdhY3lTeW50YXhcbiAgICAgICAgPyAoXCIoXCIgKyAoZWwuaWYpICsgXCIpP1wiICsgKGdlbkNoaWxkcmVuKGVsLCBzdGF0ZSkgfHwgJ3VuZGVmaW5lZCcpICsgXCI6dW5kZWZpbmVkXCIpXG4gICAgICAgIDogZ2VuQ2hpbGRyZW4oZWwsIHN0YXRlKSB8fCAndW5kZWZpbmVkJ1xuICAgICAgOiBnZW5FbGVtZW50KGVsLCBzdGF0ZSkpICsgXCJ9XCI7XG4gIC8vIHJldmVyc2UgcHJveHkgdi1zbG90IHdpdGhvdXQgc2NvcGUgb24gdGhpcy4kc2xvdHNcbiAgdmFyIHJldmVyc2VQcm94eSA9IHNsb3RTY29wZSA/IFwiXCIgOiBcIixwcm94eTp0cnVlXCI7XG4gIHJldHVybiAoXCJ7a2V5OlwiICsgKGVsLnNsb3RUYXJnZXQgfHwgXCJcXFwiZGVmYXVsdFxcXCJcIikgKyBcIixmbjpcIiArIGZuICsgcmV2ZXJzZVByb3h5ICsgXCJ9XCIpXG59XG5cbmZ1bmN0aW9uIGdlbkNoaWxkcmVuIChcbiAgZWwsXG4gIHN0YXRlLFxuICBjaGVja1NraXAsXG4gIGFsdEdlbkVsZW1lbnQsXG4gIGFsdEdlbk5vZGVcbikge1xuICB2YXIgY2hpbGRyZW4gPSBlbC5jaGlsZHJlbjtcbiAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xuICAgIHZhciBlbCQxID0gY2hpbGRyZW5bMF07XG4gICAgLy8gb3B0aW1pemUgc2luZ2xlIHYtZm9yXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgZWwkMS5mb3IgJiZcbiAgICAgIGVsJDEudGFnICE9PSAndGVtcGxhdGUnICYmXG4gICAgICBlbCQxLnRhZyAhPT0gJ3Nsb3QnXG4gICAgKSB7XG4gICAgICB2YXIgbm9ybWFsaXphdGlvblR5cGUgPSBjaGVja1NraXBcbiAgICAgICAgPyBzdGF0ZS5tYXliZUNvbXBvbmVudChlbCQxKSA/IFwiLDFcIiA6IFwiLDBcIlxuICAgICAgICA6IFwiXCI7XG4gICAgICByZXR1cm4gKFwiXCIgKyAoKGFsdEdlbkVsZW1lbnQgfHwgZ2VuRWxlbWVudCkoZWwkMSwgc3RhdGUpKSArIG5vcm1hbGl6YXRpb25UeXBlKVxuICAgIH1cbiAgICB2YXIgbm9ybWFsaXphdGlvblR5cGUkMSA9IGNoZWNrU2tpcFxuICAgICAgPyBnZXROb3JtYWxpemF0aW9uVHlwZShjaGlsZHJlbiwgc3RhdGUubWF5YmVDb21wb25lbnQpXG4gICAgICA6IDA7XG4gICAgdmFyIGdlbiA9IGFsdEdlbk5vZGUgfHwgZ2VuTm9kZTtcbiAgICByZXR1cm4gKFwiW1wiICsgKGNoaWxkcmVuLm1hcChmdW5jdGlvbiAoYykgeyByZXR1cm4gZ2VuKGMsIHN0YXRlKTsgfSkuam9pbignLCcpKSArIFwiXVwiICsgKG5vcm1hbGl6YXRpb25UeXBlJDEgPyAoXCIsXCIgKyBub3JtYWxpemF0aW9uVHlwZSQxKSA6ICcnKSlcbiAgfVxufVxuXG4vLyBkZXRlcm1pbmUgdGhlIG5vcm1hbGl6YXRpb24gbmVlZGVkIGZvciB0aGUgY2hpbGRyZW4gYXJyYXkuXG4vLyAwOiBubyBub3JtYWxpemF0aW9uIG5lZWRlZFxuLy8gMTogc2ltcGxlIG5vcm1hbGl6YXRpb24gbmVlZGVkIChwb3NzaWJsZSAxLWxldmVsIGRlZXAgbmVzdGVkIGFycmF5KVxuLy8gMjogZnVsbCBub3JtYWxpemF0aW9uIG5lZWRlZFxuZnVuY3Rpb24gZ2V0Tm9ybWFsaXphdGlvblR5cGUgKFxuICBjaGlsZHJlbixcbiAgbWF5YmVDb21wb25lbnRcbikge1xuICB2YXIgcmVzID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlbCA9IGNoaWxkcmVuW2ldO1xuICAgIGlmIChlbC50eXBlICE9PSAxKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAobmVlZHNOb3JtYWxpemF0aW9uKGVsKSB8fFxuICAgICAgICAoZWwuaWZDb25kaXRpb25zICYmIGVsLmlmQ29uZGl0aW9ucy5zb21lKGZ1bmN0aW9uIChjKSB7IHJldHVybiBuZWVkc05vcm1hbGl6YXRpb24oYy5ibG9jayk7IH0pKSkge1xuICAgICAgcmVzID0gMjtcbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIGlmIChtYXliZUNvbXBvbmVudChlbCkgfHxcbiAgICAgICAgKGVsLmlmQ29uZGl0aW9ucyAmJiBlbC5pZkNvbmRpdGlvbnMuc29tZShmdW5jdGlvbiAoYykgeyByZXR1cm4gbWF5YmVDb21wb25lbnQoYy5ibG9jayk7IH0pKSkge1xuICAgICAgcmVzID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBuZWVkc05vcm1hbGl6YXRpb24gKGVsKSB7XG4gIHJldHVybiBlbC5mb3IgIT09IHVuZGVmaW5lZCB8fCBlbC50YWcgPT09ICd0ZW1wbGF0ZScgfHwgZWwudGFnID09PSAnc2xvdCdcbn1cblxuZnVuY3Rpb24gZ2VuTm9kZSAobm9kZSwgc3RhdGUpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMSkge1xuICAgIHJldHVybiBnZW5FbGVtZW50KG5vZGUsIHN0YXRlKVxuICB9IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gMyAmJiBub2RlLmlzQ29tbWVudCkge1xuICAgIHJldHVybiBnZW5Db21tZW50KG5vZGUpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGdlblRleHQobm9kZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5UZXh0ICh0ZXh0KSB7XG4gIHJldHVybiAoXCJfdihcIiArICh0ZXh0LnR5cGUgPT09IDJcbiAgICA/IHRleHQuZXhwcmVzc2lvbiAvLyBubyBuZWVkIGZvciAoKSBiZWNhdXNlIGFscmVhZHkgd3JhcHBlZCBpbiBfcygpXG4gICAgOiB0cmFuc2Zvcm1TcGVjaWFsTmV3bGluZXMoSlNPTi5zdHJpbmdpZnkodGV4dC50ZXh0KSkpICsgXCIpXCIpXG59XG5cbmZ1bmN0aW9uIGdlbkNvbW1lbnQgKGNvbW1lbnQpIHtcbiAgcmV0dXJuIChcIl9lKFwiICsgKEpTT04uc3RyaW5naWZ5KGNvbW1lbnQudGV4dCkpICsgXCIpXCIpXG59XG5cbmZ1bmN0aW9uIGdlblNsb3QgKGVsLCBzdGF0ZSkge1xuICB2YXIgc2xvdE5hbWUgPSBlbC5zbG90TmFtZSB8fCAnXCJkZWZhdWx0XCInO1xuICB2YXIgY2hpbGRyZW4gPSBnZW5DaGlsZHJlbihlbCwgc3RhdGUpO1xuICB2YXIgcmVzID0gXCJfdChcIiArIHNsb3ROYW1lICsgKGNoaWxkcmVuID8gKFwiLFwiICsgY2hpbGRyZW4pIDogJycpO1xuICB2YXIgYXR0cnMgPSBlbC5hdHRycyB8fCBlbC5keW5hbWljQXR0cnNcbiAgICA/IGdlblByb3BzKChlbC5hdHRycyB8fCBbXSkuY29uY2F0KGVsLmR5bmFtaWNBdHRycyB8fCBbXSkubWFwKGZ1bmN0aW9uIChhdHRyKSB7IHJldHVybiAoe1xuICAgICAgICAvLyBzbG90IHByb3BzIGFyZSBjYW1lbGl6ZWRcbiAgICAgICAgbmFtZTogY2FtZWxpemUoYXR0ci5uYW1lKSxcbiAgICAgICAgdmFsdWU6IGF0dHIudmFsdWUsXG4gICAgICAgIGR5bmFtaWM6IGF0dHIuZHluYW1pY1xuICAgICAgfSk7IH0pKVxuICAgIDogbnVsbDtcbiAgdmFyIGJpbmQkJDEgPSBlbC5hdHRyc01hcFsndi1iaW5kJ107XG4gIGlmICgoYXR0cnMgfHwgYmluZCQkMSkgJiYgIWNoaWxkcmVuKSB7XG4gICAgcmVzICs9IFwiLG51bGxcIjtcbiAgfVxuICBpZiAoYXR0cnMpIHtcbiAgICByZXMgKz0gXCIsXCIgKyBhdHRycztcbiAgfVxuICBpZiAoYmluZCQkMSkge1xuICAgIHJlcyArPSAoYXR0cnMgPyAnJyA6ICcsbnVsbCcpICsgXCIsXCIgKyBiaW5kJCQxO1xuICB9XG4gIHJldHVybiByZXMgKyAnKSdcbn1cblxuLy8gY29tcG9uZW50TmFtZSBpcyBlbC5jb21wb25lbnQsIHRha2UgaXQgYXMgYXJndW1lbnQgdG8gc2h1biBmbG93J3MgcGVzc2ltaXN0aWMgcmVmaW5lbWVudFxuZnVuY3Rpb24gZ2VuQ29tcG9uZW50IChcbiAgY29tcG9uZW50TmFtZSxcbiAgZWwsXG4gIHN0YXRlXG4pIHtcbiAgdmFyIGNoaWxkcmVuID0gZWwuaW5saW5lVGVtcGxhdGUgPyBudWxsIDogZ2VuQ2hpbGRyZW4oZWwsIHN0YXRlLCB0cnVlKTtcbiAgcmV0dXJuIChcIl9jKFwiICsgY29tcG9uZW50TmFtZSArIFwiLFwiICsgKGdlbkRhdGEkMihlbCwgc3RhdGUpKSArIChjaGlsZHJlbiA/IChcIixcIiArIGNoaWxkcmVuKSA6ICcnKSArIFwiKVwiKVxufVxuXG5mdW5jdGlvbiBnZW5Qcm9wcyAocHJvcHMpIHtcbiAgdmFyIHN0YXRpY1Byb3BzID0gXCJcIjtcbiAgdmFyIGR5bmFtaWNQcm9wcyA9IFwiXCI7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcHJvcCA9IHByb3BzW2ldO1xuICAgIHZhciB2YWx1ZSA9IHRyYW5zZm9ybVNwZWNpYWxOZXdsaW5lcyhwcm9wLnZhbHVlKTtcbiAgICBpZiAocHJvcC5keW5hbWljKSB7XG4gICAgICBkeW5hbWljUHJvcHMgKz0gKHByb3AubmFtZSkgKyBcIixcIiArIHZhbHVlICsgXCIsXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRpY1Byb3BzICs9IFwiXFxcIlwiICsgKHByb3AubmFtZSkgKyBcIlxcXCI6XCIgKyB2YWx1ZSArIFwiLFwiO1xuICAgIH1cbiAgfVxuICBzdGF0aWNQcm9wcyA9IFwie1wiICsgKHN0YXRpY1Byb3BzLnNsaWNlKDAsIC0xKSkgKyBcIn1cIjtcbiAgaWYgKGR5bmFtaWNQcm9wcykge1xuICAgIHJldHVybiAoXCJfZChcIiArIHN0YXRpY1Byb3BzICsgXCIsW1wiICsgKGR5bmFtaWNQcm9wcy5zbGljZSgwLCAtMSkpICsgXCJdKVwiKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBzdGF0aWNQcm9wc1xuICB9XG59XG5cbi8vICMzODk1LCAjNDI2OFxuZnVuY3Rpb24gdHJhbnNmb3JtU3BlY2lhbE5ld2xpbmVzICh0ZXh0KSB7XG4gIHJldHVybiB0ZXh0XG4gICAgLnJlcGxhY2UoL1xcdTIwMjgvZywgJ1xcXFx1MjAyOCcpXG4gICAgLnJlcGxhY2UoL1xcdTIwMjkvZywgJ1xcXFx1MjAyOScpXG59XG5cbi8qICAqL1xuXG5cblxuLy8gdGhlc2Uga2V5d29yZHMgc2hvdWxkIG5vdCBhcHBlYXIgaW5zaWRlIGV4cHJlc3Npb25zLCBidXQgb3BlcmF0b3JzIGxpa2Vcbi8vIHR5cGVvZiwgaW5zdGFuY2VvZiBhbmQgaW4gYXJlIGFsbG93ZWRcbnZhciBwcm9oaWJpdGVkS2V5d29yZFJFID0gbmV3IFJlZ0V4cCgnXFxcXGInICsgKFxuICAnZG8saWYsZm9yLGxldCxuZXcsdHJ5LHZhcixjYXNlLGVsc2Usd2l0aCxhd2FpdCxicmVhayxjYXRjaCxjbGFzcyxjb25zdCwnICtcbiAgJ3N1cGVyLHRocm93LHdoaWxlLHlpZWxkLGRlbGV0ZSxleHBvcnQsaW1wb3J0LHJldHVybixzd2l0Y2gsZGVmYXVsdCwnICtcbiAgJ2V4dGVuZHMsZmluYWxseSxjb250aW51ZSxkZWJ1Z2dlcixmdW5jdGlvbixhcmd1bWVudHMnXG4pLnNwbGl0KCcsJykuam9pbignXFxcXGJ8XFxcXGInKSArICdcXFxcYicpO1xuXG4vLyB0aGVzZSB1bmFyeSBvcGVyYXRvcnMgc2hvdWxkIG5vdCBiZSB1c2VkIGFzIHByb3BlcnR5L21ldGhvZCBuYW1lc1xudmFyIHVuYXJ5T3BlcmF0b3JzUkUgPSBuZXcgUmVnRXhwKCdcXFxcYicgKyAoXG4gICdkZWxldGUsdHlwZW9mLHZvaWQnXG4pLnNwbGl0KCcsJykuam9pbignXFxcXHMqXFxcXChbXlxcXFwpXSpcXFxcKXxcXFxcYicpICsgJ1xcXFxzKlxcXFwoW15cXFxcKV0qXFxcXCknKTtcblxuLy8gc3RyaXAgc3RyaW5ncyBpbiBleHByZXNzaW9uc1xudmFyIHN0cmlwU3RyaW5nUkUgPSAvJyg/OlteJ1xcXFxdfFxcXFwuKSonfFwiKD86W15cIlxcXFxdfFxcXFwuKSpcInxgKD86W15gXFxcXF18XFxcXC4pKlxcJFxce3xcXH0oPzpbXmBcXFxcXXxcXFxcLikqYHxgKD86W15gXFxcXF18XFxcXC4pKmAvZztcblxuLy8gZGV0ZWN0IHByb2JsZW1hdGljIGV4cHJlc3Npb25zIGluIGEgdGVtcGxhdGVcbmZ1bmN0aW9uIGRldGVjdEVycm9ycyAoYXN0LCB3YXJuKSB7XG4gIGlmIChhc3QpIHtcbiAgICBjaGVja05vZGUoYXN0LCB3YXJuKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja05vZGUgKG5vZGUsIHdhcm4pIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMSkge1xuICAgIGZvciAodmFyIG5hbWUgaW4gbm9kZS5hdHRyc01hcCkge1xuICAgICAgaWYgKGRpclJFLnRlc3QobmFtZSkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gbm9kZS5hdHRyc01hcFtuYW1lXTtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgdmFyIHJhbmdlID0gbm9kZS5yYXdBdHRyc01hcFtuYW1lXTtcbiAgICAgICAgICBpZiAobmFtZSA9PT0gJ3YtZm9yJykge1xuICAgICAgICAgICAgY2hlY2tGb3Iobm9kZSwgKFwidi1mb3I9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCJcIiksIHdhcm4sIHJhbmdlKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG9uUkUudGVzdChuYW1lKSkge1xuICAgICAgICAgICAgY2hlY2tFdmVudCh2YWx1ZSwgKG5hbWUgKyBcIj1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIlwiKSwgd2FybiwgcmFuZ2UpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGVja0V4cHJlc3Npb24odmFsdWUsIChuYW1lICsgXCI9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCJcIiksIHdhcm4sIHJhbmdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBjaGVja05vZGUobm9kZS5jaGlsZHJlbltpXSwgd2Fybik7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gMikge1xuICAgIGNoZWNrRXhwcmVzc2lvbihub2RlLmV4cHJlc3Npb24sIG5vZGUudGV4dCwgd2Fybiwgbm9kZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tFdmVudCAoZXhwLCB0ZXh0LCB3YXJuLCByYW5nZSkge1xuICB2YXIgc3RpcHBlZCA9IGV4cC5yZXBsYWNlKHN0cmlwU3RyaW5nUkUsICcnKTtcbiAgdmFyIGtleXdvcmRNYXRjaCA9IHN0aXBwZWQubWF0Y2godW5hcnlPcGVyYXRvcnNSRSk7XG4gIGlmIChrZXl3b3JkTWF0Y2ggJiYgc3RpcHBlZC5jaGFyQXQoa2V5d29yZE1hdGNoLmluZGV4IC0gMSkgIT09ICckJykge1xuICAgIHdhcm4oXG4gICAgICBcImF2b2lkIHVzaW5nIEphdmFTY3JpcHQgdW5hcnkgb3BlcmF0b3IgYXMgcHJvcGVydHkgbmFtZTogXCIgK1xuICAgICAgXCJcXFwiXCIgKyAoa2V5d29yZE1hdGNoWzBdKSArIFwiXFxcIiBpbiBleHByZXNzaW9uIFwiICsgKHRleHQudHJpbSgpKSxcbiAgICAgIHJhbmdlXG4gICAgKTtcbiAgfVxuICBjaGVja0V4cHJlc3Npb24oZXhwLCB0ZXh0LCB3YXJuLCByYW5nZSk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrRm9yIChub2RlLCB0ZXh0LCB3YXJuLCByYW5nZSkge1xuICBjaGVja0V4cHJlc3Npb24obm9kZS5mb3IgfHwgJycsIHRleHQsIHdhcm4sIHJhbmdlKTtcbiAgY2hlY2tJZGVudGlmaWVyKG5vZGUuYWxpYXMsICd2LWZvciBhbGlhcycsIHRleHQsIHdhcm4sIHJhbmdlKTtcbiAgY2hlY2tJZGVudGlmaWVyKG5vZGUuaXRlcmF0b3IxLCAndi1mb3IgaXRlcmF0b3InLCB0ZXh0LCB3YXJuLCByYW5nZSk7XG4gIGNoZWNrSWRlbnRpZmllcihub2RlLml0ZXJhdG9yMiwgJ3YtZm9yIGl0ZXJhdG9yJywgdGV4dCwgd2FybiwgcmFuZ2UpO1xufVxuXG5mdW5jdGlvbiBjaGVja0lkZW50aWZpZXIgKFxuICBpZGVudCxcbiAgdHlwZSxcbiAgdGV4dCxcbiAgd2FybixcbiAgcmFuZ2Vcbikge1xuICBpZiAodHlwZW9mIGlkZW50ID09PSAnc3RyaW5nJykge1xuICAgIHRyeSB7XG4gICAgICBuZXcgRnVuY3Rpb24oKFwidmFyIFwiICsgaWRlbnQgKyBcIj1fXCIpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB3YXJuKChcImludmFsaWQgXCIgKyB0eXBlICsgXCIgXFxcIlwiICsgaWRlbnQgKyBcIlxcXCIgaW4gZXhwcmVzc2lvbjogXCIgKyAodGV4dC50cmltKCkpKSwgcmFuZ2UpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja0V4cHJlc3Npb24gKGV4cCwgdGV4dCwgd2FybiwgcmFuZ2UpIHtcbiAgdHJ5IHtcbiAgICBuZXcgRnVuY3Rpb24oKFwicmV0dXJuIFwiICsgZXhwKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB2YXIga2V5d29yZE1hdGNoID0gZXhwLnJlcGxhY2Uoc3RyaXBTdHJpbmdSRSwgJycpLm1hdGNoKHByb2hpYml0ZWRLZXl3b3JkUkUpO1xuICAgIGlmIChrZXl3b3JkTWF0Y2gpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIFwiYXZvaWQgdXNpbmcgSmF2YVNjcmlwdCBrZXl3b3JkIGFzIHByb3BlcnR5IG5hbWU6IFwiICtcbiAgICAgICAgXCJcXFwiXCIgKyAoa2V5d29yZE1hdGNoWzBdKSArIFwiXFxcIlxcbiAgUmF3IGV4cHJlc3Npb246IFwiICsgKHRleHQudHJpbSgpKSxcbiAgICAgICAgcmFuZ2VcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIFwiaW52YWxpZCBleHByZXNzaW9uOiBcIiArIChlLm1lc3NhZ2UpICsgXCIgaW5cXG5cXG5cIiArXG4gICAgICAgIFwiICAgIFwiICsgZXhwICsgXCJcXG5cXG5cIiArXG4gICAgICAgIFwiICBSYXcgZXhwcmVzc2lvbjogXCIgKyAodGV4dC50cmltKCkpICsgXCJcXG5cIixcbiAgICAgICAgcmFuZ2VcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG52YXIgcmFuZ2UgPSAyO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZUNvZGVGcmFtZSAoXG4gIHNvdXJjZSxcbiAgc3RhcnQsXG4gIGVuZFxuKSB7XG4gIGlmICggc3RhcnQgPT09IHZvaWQgMCApIHN0YXJ0ID0gMDtcbiAgaWYgKCBlbmQgPT09IHZvaWQgMCApIGVuZCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgdmFyIGxpbmVzID0gc291cmNlLnNwbGl0KC9cXHI/XFxuLyk7XG4gIHZhciBjb3VudCA9IDA7XG4gIHZhciByZXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIGNvdW50ICs9IGxpbmVzW2ldLmxlbmd0aCArIDE7XG4gICAgaWYgKGNvdW50ID49IHN0YXJ0KSB7XG4gICAgICBmb3IgKHZhciBqID0gaSAtIHJhbmdlOyBqIDw9IGkgKyByYW5nZSB8fCBlbmQgPiBjb3VudDsgaisrKSB7XG4gICAgICAgIGlmIChqIDwgMCB8fCBqID49IGxpbmVzLmxlbmd0aCkgeyBjb250aW51ZSB9XG4gICAgICAgIHJlcy5wdXNoKChcIlwiICsgKGogKyAxKSArIChyZXBlYXQkMShcIiBcIiwgMyAtIFN0cmluZyhqICsgMSkubGVuZ3RoKSkgKyBcInwgIFwiICsgKGxpbmVzW2pdKSkpO1xuICAgICAgICB2YXIgbGluZUxlbmd0aCA9IGxpbmVzW2pdLmxlbmd0aDtcbiAgICAgICAgaWYgKGogPT09IGkpIHtcbiAgICAgICAgICAvLyBwdXNoIHVuZGVybGluZVxuICAgICAgICAgIHZhciBwYWQgPSBzdGFydCAtIChjb3VudCAtIGxpbmVMZW5ndGgpICsgMTtcbiAgICAgICAgICB2YXIgbGVuZ3RoID0gZW5kID4gY291bnQgPyBsaW5lTGVuZ3RoIC0gcGFkIDogZW5kIC0gc3RhcnQ7XG4gICAgICAgICAgcmVzLnB1c2goXCIgICB8ICBcIiArIHJlcGVhdCQxKFwiIFwiLCBwYWQpICsgcmVwZWF0JDEoXCJeXCIsIGxlbmd0aCkpO1xuICAgICAgICB9IGVsc2UgaWYgKGogPiBpKSB7XG4gICAgICAgICAgaWYgKGVuZCA+IGNvdW50KSB7XG4gICAgICAgICAgICB2YXIgbGVuZ3RoJDEgPSBNYXRoLm1pbihlbmQgLSBjb3VudCwgbGluZUxlbmd0aCk7XG4gICAgICAgICAgICByZXMucHVzaChcIiAgIHwgIFwiICsgcmVwZWF0JDEoXCJeXCIsIGxlbmd0aCQxKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvdW50ICs9IGxpbmVMZW5ndGggKyAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzLmpvaW4oJ1xcbicpXG59XG5cbmZ1bmN0aW9uIHJlcGVhdCQxIChzdHIsIG4pIHtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICBpZiAobiA+IDApIHtcbiAgICB3aGlsZSAodHJ1ZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICBpZiAobiAmIDEpIHsgcmVzdWx0ICs9IHN0cjsgfVxuICAgICAgbiA+Pj49IDE7XG4gICAgICBpZiAobiA8PSAwKSB7IGJyZWFrIH1cbiAgICAgIHN0ciArPSBzdHI7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHRcbn1cblxuLyogICovXG5cblxuXG5mdW5jdGlvbiBjcmVhdGVGdW5jdGlvbiAoY29kZSwgZXJyb3JzKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBGdW5jdGlvbihjb2RlKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBlcnJvcnMucHVzaCh7IGVycjogZXJyLCBjb2RlOiBjb2RlIH0pO1xuICAgIHJldHVybiBub29wXG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29tcGlsZVRvRnVuY3Rpb25GbiAoY29tcGlsZSkge1xuICB2YXIgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIHJldHVybiBmdW5jdGlvbiBjb21waWxlVG9GdW5jdGlvbnMgKFxuICAgIHRlbXBsYXRlLFxuICAgIG9wdGlvbnMsXG4gICAgdm1cbiAgKSB7XG4gICAgb3B0aW9ucyA9IGV4dGVuZCh7fSwgb3B0aW9ucyk7XG4gICAgdmFyIHdhcm4kJDEgPSBvcHRpb25zLndhcm4gfHwgd2FybjtcbiAgICBkZWxldGUgb3B0aW9ucy53YXJuO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIGRldGVjdCBwb3NzaWJsZSBDU1AgcmVzdHJpY3Rpb25cbiAgICAgIHRyeSB7XG4gICAgICAgIG5ldyBGdW5jdGlvbigncmV0dXJuIDEnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGUudG9TdHJpbmcoKS5tYXRjaCgvdW5zYWZlLWV2YWx8Q1NQLykpIHtcbiAgICAgICAgICB3YXJuJCQxKFxuICAgICAgICAgICAgJ0l0IHNlZW1zIHlvdSBhcmUgdXNpbmcgdGhlIHN0YW5kYWxvbmUgYnVpbGQgb2YgVnVlLmpzIGluIGFuICcgK1xuICAgICAgICAgICAgJ2Vudmlyb25tZW50IHdpdGggQ29udGVudCBTZWN1cml0eSBQb2xpY3kgdGhhdCBwcm9oaWJpdHMgdW5zYWZlLWV2YWwuICcgK1xuICAgICAgICAgICAgJ1RoZSB0ZW1wbGF0ZSBjb21waWxlciBjYW5ub3Qgd29yayBpbiB0aGlzIGVudmlyb25tZW50LiBDb25zaWRlciAnICtcbiAgICAgICAgICAgICdyZWxheGluZyB0aGUgcG9saWN5IHRvIGFsbG93IHVuc2FmZS1ldmFsIG9yIHByZS1jb21waWxpbmcgeW91ciAnICtcbiAgICAgICAgICAgICd0ZW1wbGF0ZXMgaW50byByZW5kZXIgZnVuY3Rpb25zLidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgY2FjaGVcbiAgICB2YXIga2V5ID0gb3B0aW9ucy5kZWxpbWl0ZXJzXG4gICAgICA/IFN0cmluZyhvcHRpb25zLmRlbGltaXRlcnMpICsgdGVtcGxhdGVcbiAgICAgIDogdGVtcGxhdGU7XG4gICAgaWYgKGNhY2hlW2tleV0pIHtcbiAgICAgIHJldHVybiBjYWNoZVtrZXldXG4gICAgfVxuXG4gICAgLy8gY29tcGlsZVxuICAgIHZhciBjb21waWxlZCA9IGNvbXBpbGUodGVtcGxhdGUsIG9wdGlvbnMpO1xuXG4gICAgLy8gY2hlY2sgY29tcGlsYXRpb24gZXJyb3JzL3RpcHNcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGNvbXBpbGVkLmVycm9ycyAmJiBjb21waWxlZC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgIGlmIChvcHRpb25zLm91dHB1dFNvdXJjZVJhbmdlKSB7XG4gICAgICAgICAgY29tcGlsZWQuZXJyb3JzLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHdhcm4kJDEoXG4gICAgICAgICAgICAgIFwiRXJyb3IgY29tcGlsaW5nIHRlbXBsYXRlOlxcblxcblwiICsgKGUubXNnKSArIFwiXFxuXFxuXCIgK1xuICAgICAgICAgICAgICBnZW5lcmF0ZUNvZGVGcmFtZSh0ZW1wbGF0ZSwgZS5zdGFydCwgZS5lbmQpLFxuICAgICAgICAgICAgICB2bVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3YXJuJCQxKFxuICAgICAgICAgICAgXCJFcnJvciBjb21waWxpbmcgdGVtcGxhdGU6XFxuXFxuXCIgKyB0ZW1wbGF0ZSArIFwiXFxuXFxuXCIgK1xuICAgICAgICAgICAgY29tcGlsZWQuZXJyb3JzLm1hcChmdW5jdGlvbiAoZSkgeyByZXR1cm4gKFwiLSBcIiArIGUpOyB9KS5qb2luKCdcXG4nKSArICdcXG4nLFxuICAgICAgICAgICAgdm1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY29tcGlsZWQudGlwcyAmJiBjb21waWxlZC50aXBzLmxlbmd0aCkge1xuICAgICAgICBpZiAob3B0aW9ucy5vdXRwdXRTb3VyY2VSYW5nZSkge1xuICAgICAgICAgIGNvbXBpbGVkLnRpcHMuZm9yRWFjaChmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGlwKGUubXNnLCB2bSk7IH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbXBpbGVkLnRpcHMuZm9yRWFjaChmdW5jdGlvbiAobXNnKSB7IHJldHVybiB0aXAobXNnLCB2bSk7IH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gdHVybiBjb2RlIGludG8gZnVuY3Rpb25zXG4gICAgdmFyIHJlcyA9IHt9O1xuICAgIHZhciBmbkdlbkVycm9ycyA9IFtdO1xuICAgIHJlcy5yZW5kZXIgPSBjcmVhdGVGdW5jdGlvbihjb21waWxlZC5yZW5kZXIsIGZuR2VuRXJyb3JzKTtcbiAgICByZXMuc3RhdGljUmVuZGVyRm5zID0gY29tcGlsZWQuc3RhdGljUmVuZGVyRm5zLm1hcChmdW5jdGlvbiAoY29kZSkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUZ1bmN0aW9uKGNvZGUsIGZuR2VuRXJyb3JzKVxuICAgIH0pO1xuXG4gICAgLy8gY2hlY2sgZnVuY3Rpb24gZ2VuZXJhdGlvbiBlcnJvcnMuXG4gICAgLy8gdGhpcyBzaG91bGQgb25seSBoYXBwZW4gaWYgdGhlcmUgaXMgYSBidWcgaW4gdGhlIGNvbXBpbGVyIGl0c2VsZi5cbiAgICAvLyBtb3N0bHkgZm9yIGNvZGVnZW4gZGV2ZWxvcG1lbnQgdXNlXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICgoIWNvbXBpbGVkLmVycm9ycyB8fCAhY29tcGlsZWQuZXJyb3JzLmxlbmd0aCkgJiYgZm5HZW5FcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgIHdhcm4kJDEoXG4gICAgICAgICAgXCJGYWlsZWQgdG8gZ2VuZXJhdGUgcmVuZGVyIGZ1bmN0aW9uOlxcblxcblwiICtcbiAgICAgICAgICBmbkdlbkVycm9ycy5tYXAoZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgdmFyIGVyciA9IHJlZi5lcnI7XG4gICAgICAgICAgICB2YXIgY29kZSA9IHJlZi5jb2RlO1xuXG4gICAgICAgICAgICByZXR1cm4gKChlcnIudG9TdHJpbmcoKSkgKyBcIiBpblxcblxcblwiICsgY29kZSArIFwiXFxuXCIpO1xuICAgICAgICB9KS5qb2luKCdcXG4nKSxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoY2FjaGVba2V5XSA9IHJlcylcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gY3JlYXRlQ29tcGlsZXJDcmVhdG9yIChiYXNlQ29tcGlsZSkge1xuICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlQ29tcGlsZXIgKGJhc2VPcHRpb25zKSB7XG4gICAgZnVuY3Rpb24gY29tcGlsZSAoXG4gICAgICB0ZW1wbGF0ZSxcbiAgICAgIG9wdGlvbnNcbiAgICApIHtcbiAgICAgIHZhciBmaW5hbE9wdGlvbnMgPSBPYmplY3QuY3JlYXRlKGJhc2VPcHRpb25zKTtcbiAgICAgIHZhciBlcnJvcnMgPSBbXTtcbiAgICAgIHZhciB0aXBzID0gW107XG5cbiAgICAgIHZhciB3YXJuID0gZnVuY3Rpb24gKG1zZywgcmFuZ2UsIHRpcCkge1xuICAgICAgICAodGlwID8gdGlwcyA6IGVycm9ycykucHVzaChtc2cpO1xuICAgICAgfTtcblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgb3B0aW9ucy5vdXRwdXRTb3VyY2VSYW5nZSkge1xuICAgICAgICAgIC8vICRmbG93LWRpc2FibGUtbGluZVxuICAgICAgICAgIHZhciBsZWFkaW5nU3BhY2VMZW5ndGggPSB0ZW1wbGF0ZS5tYXRjaCgvXlxccyovKVswXS5sZW5ndGg7XG5cbiAgICAgICAgICB3YXJuID0gZnVuY3Rpb24gKG1zZywgcmFuZ2UsIHRpcCkge1xuICAgICAgICAgICAgdmFyIGRhdGEgPSB7IG1zZzogbXNnIH07XG4gICAgICAgICAgICBpZiAocmFuZ2UpIHtcbiAgICAgICAgICAgICAgaWYgKHJhbmdlLnN0YXJ0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBkYXRhLnN0YXJ0ID0gcmFuZ2Uuc3RhcnQgKyBsZWFkaW5nU3BhY2VMZW5ndGg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHJhbmdlLmVuZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5lbmQgPSByYW5nZS5lbmQgKyBsZWFkaW5nU3BhY2VMZW5ndGg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICh0aXAgPyB0aXBzIDogZXJyb3JzKS5wdXNoKGRhdGEpO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gbWVyZ2UgY3VzdG9tIG1vZHVsZXNcbiAgICAgICAgaWYgKG9wdGlvbnMubW9kdWxlcykge1xuICAgICAgICAgIGZpbmFsT3B0aW9ucy5tb2R1bGVzID1cbiAgICAgICAgICAgIChiYXNlT3B0aW9ucy5tb2R1bGVzIHx8IFtdKS5jb25jYXQob3B0aW9ucy5tb2R1bGVzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBtZXJnZSBjdXN0b20gZGlyZWN0aXZlc1xuICAgICAgICBpZiAob3B0aW9ucy5kaXJlY3RpdmVzKSB7XG4gICAgICAgICAgZmluYWxPcHRpb25zLmRpcmVjdGl2ZXMgPSBleHRlbmQoXG4gICAgICAgICAgICBPYmplY3QuY3JlYXRlKGJhc2VPcHRpb25zLmRpcmVjdGl2ZXMgfHwgbnVsbCksXG4gICAgICAgICAgICBvcHRpb25zLmRpcmVjdGl2ZXNcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvcHkgb3RoZXIgb3B0aW9uc1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gb3B0aW9ucykge1xuICAgICAgICAgIGlmIChrZXkgIT09ICdtb2R1bGVzJyAmJiBrZXkgIT09ICdkaXJlY3RpdmVzJykge1xuICAgICAgICAgICAgZmluYWxPcHRpb25zW2tleV0gPSBvcHRpb25zW2tleV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZpbmFsT3B0aW9ucy53YXJuID0gd2FybjtcblxuICAgICAgdmFyIGNvbXBpbGVkID0gYmFzZUNvbXBpbGUodGVtcGxhdGUudHJpbSgpLCBmaW5hbE9wdGlvbnMpO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgZGV0ZWN0RXJyb3JzKGNvbXBpbGVkLmFzdCwgd2Fybik7XG4gICAgICB9XG4gICAgICBjb21waWxlZC5lcnJvcnMgPSBlcnJvcnM7XG4gICAgICBjb21waWxlZC50aXBzID0gdGlwcztcbiAgICAgIHJldHVybiBjb21waWxlZFxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb21waWxlOiBjb21waWxlLFxuICAgICAgY29tcGlsZVRvRnVuY3Rpb25zOiBjcmVhdGVDb21waWxlVG9GdW5jdGlvbkZuKGNvbXBpbGUpXG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG4vLyBgY3JlYXRlQ29tcGlsZXJDcmVhdG9yYCBhbGxvd3MgY3JlYXRpbmcgY29tcGlsZXJzIHRoYXQgdXNlIGFsdGVybmF0aXZlXG4vLyBwYXJzZXIvb3B0aW1pemVyL2NvZGVnZW4sIGUuZyB0aGUgU1NSIG9wdGltaXppbmcgY29tcGlsZXIuXG4vLyBIZXJlIHdlIGp1c3QgZXhwb3J0IGEgZGVmYXVsdCBjb21waWxlciB1c2luZyB0aGUgZGVmYXVsdCBwYXJ0cy5cbnZhciBjcmVhdGVDb21waWxlciA9IGNyZWF0ZUNvbXBpbGVyQ3JlYXRvcihmdW5jdGlvbiBiYXNlQ29tcGlsZSAoXG4gIHRlbXBsYXRlLFxuICBvcHRpb25zXG4pIHtcbiAgdmFyIGFzdCA9IHBhcnNlKHRlbXBsYXRlLnRyaW0oKSwgb3B0aW9ucyk7XG4gIGlmIChvcHRpb25zLm9wdGltaXplICE9PSBmYWxzZSkge1xuICAgIG9wdGltaXplKGFzdCwgb3B0aW9ucyk7XG4gIH1cbiAgdmFyIGNvZGUgPSBnZW5lcmF0ZShhc3QsIG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIGFzdDogYXN0LFxuICAgIHJlbmRlcjogY29kZS5yZW5kZXIsXG4gICAgc3RhdGljUmVuZGVyRm5zOiBjb2RlLnN0YXRpY1JlbmRlckZuc1xuICB9XG59KTtcblxuLyogICovXG5cbnZhciByZWYkMSA9IGNyZWF0ZUNvbXBpbGVyKGJhc2VPcHRpb25zKTtcbnZhciBjb21waWxlID0gcmVmJDEuY29tcGlsZTtcbnZhciBjb21waWxlVG9GdW5jdGlvbnMgPSByZWYkMS5jb21waWxlVG9GdW5jdGlvbnM7XG5cbi8qICAqL1xuXG4vLyBjaGVjayB3aGV0aGVyIGN1cnJlbnQgYnJvd3NlciBlbmNvZGVzIGEgY2hhciBpbnNpZGUgYXR0cmlidXRlIHZhbHVlc1xudmFyIGRpdjtcbmZ1bmN0aW9uIGdldFNob3VsZERlY29kZSAoaHJlZikge1xuICBkaXYgPSBkaXYgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRpdi5pbm5lckhUTUwgPSBocmVmID8gXCI8YSBocmVmPVxcXCJcXG5cXFwiLz5cIiA6IFwiPGRpdiBhPVxcXCJcXG5cXFwiLz5cIjtcbiAgcmV0dXJuIGRpdi5pbm5lckhUTUwuaW5kZXhPZignJiMxMDsnKSA+IDBcbn1cblxuLy8gIzM2NjM6IElFIGVuY29kZXMgbmV3bGluZXMgaW5zaWRlIGF0dHJpYnV0ZSB2YWx1ZXMgd2hpbGUgb3RoZXIgYnJvd3NlcnMgZG9uJ3RcbnZhciBzaG91bGREZWNvZGVOZXdsaW5lcyA9IGluQnJvd3NlciA/IGdldFNob3VsZERlY29kZShmYWxzZSkgOiBmYWxzZTtcbi8vICM2ODI4OiBjaHJvbWUgZW5jb2RlcyBjb250ZW50IGluIGFbaHJlZl1cbnZhciBzaG91bGREZWNvZGVOZXdsaW5lc0ZvckhyZWYgPSBpbkJyb3dzZXIgPyBnZXRTaG91bGREZWNvZGUodHJ1ZSkgOiBmYWxzZTtcblxuLyogICovXG5cbnZhciBpZFRvVGVtcGxhdGUgPSBjYWNoZWQoZnVuY3Rpb24gKGlkKSB7XG4gIHZhciBlbCA9IHF1ZXJ5KGlkKTtcbiAgcmV0dXJuIGVsICYmIGVsLmlubmVySFRNTFxufSk7XG5cbnZhciBtb3VudCA9IFZ1ZS5wcm90b3R5cGUuJG1vdW50O1xuVnVlLnByb3RvdHlwZS4kbW91bnQgPSBmdW5jdGlvbiAoXG4gIGVsLFxuICBoeWRyYXRpbmdcbikge1xuICBlbCA9IGVsICYmIHF1ZXJ5KGVsKTtcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGVsID09PSBkb2N1bWVudC5ib2R5IHx8IGVsID09PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICBcIkRvIG5vdCBtb3VudCBWdWUgdG8gPGh0bWw+IG9yIDxib2R5PiAtIG1vdW50IHRvIG5vcm1hbCBlbGVtZW50cyBpbnN0ZWFkLlwiXG4gICAgKTtcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgdmFyIG9wdGlvbnMgPSB0aGlzLiRvcHRpb25zO1xuICAvLyByZXNvbHZlIHRlbXBsYXRlL2VsIGFuZCBjb252ZXJ0IHRvIHJlbmRlciBmdW5jdGlvblxuICBpZiAoIW9wdGlvbnMucmVuZGVyKSB7XG4gICAgdmFyIHRlbXBsYXRlID0gb3B0aW9ucy50ZW1wbGF0ZTtcbiAgICBpZiAodGVtcGxhdGUpIHtcbiAgICAgIGlmICh0eXBlb2YgdGVtcGxhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICh0ZW1wbGF0ZS5jaGFyQXQoMCkgPT09ICcjJykge1xuICAgICAgICAgIHRlbXBsYXRlID0gaWRUb1RlbXBsYXRlKHRlbXBsYXRlKTtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhdGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAgIChcIlRlbXBsYXRlIGVsZW1lbnQgbm90IGZvdW5kIG9yIGlzIGVtcHR5OiBcIiArIChvcHRpb25zLnRlbXBsYXRlKSksXG4gICAgICAgICAgICAgIHRoaXNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRlbXBsYXRlLm5vZGVUeXBlKSB7XG4gICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGUuaW5uZXJIVE1MO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3YXJuKCdpbnZhbGlkIHRlbXBsYXRlIG9wdGlvbjonICsgdGVtcGxhdGUsIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbCkge1xuICAgICAgdGVtcGxhdGUgPSBnZXRPdXRlckhUTUwoZWwpO1xuICAgIH1cbiAgICBpZiAodGVtcGxhdGUpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY29uZmlnLnBlcmZvcm1hbmNlICYmIG1hcmspIHtcbiAgICAgICAgbWFyaygnY29tcGlsZScpO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVmID0gY29tcGlsZVRvRnVuY3Rpb25zKHRlbXBsYXRlLCB7XG4gICAgICAgIG91dHB1dFNvdXJjZVJhbmdlOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nLFxuICAgICAgICBzaG91bGREZWNvZGVOZXdsaW5lczogc2hvdWxkRGVjb2RlTmV3bGluZXMsXG4gICAgICAgIHNob3VsZERlY29kZU5ld2xpbmVzRm9ySHJlZjogc2hvdWxkRGVjb2RlTmV3bGluZXNGb3JIcmVmLFxuICAgICAgICBkZWxpbWl0ZXJzOiBvcHRpb25zLmRlbGltaXRlcnMsXG4gICAgICAgIGNvbW1lbnRzOiBvcHRpb25zLmNvbW1lbnRzXG4gICAgICB9LCB0aGlzKTtcbiAgICAgIHZhciByZW5kZXIgPSByZWYucmVuZGVyO1xuICAgICAgdmFyIHN0YXRpY1JlbmRlckZucyA9IHJlZi5zdGF0aWNSZW5kZXJGbnM7XG4gICAgICBvcHRpb25zLnJlbmRlciA9IHJlbmRlcjtcbiAgICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gc3RhdGljUmVuZGVyRm5zO1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNvbmZpZy5wZXJmb3JtYW5jZSAmJiBtYXJrKSB7XG4gICAgICAgIG1hcmsoJ2NvbXBpbGUgZW5kJyk7XG4gICAgICAgIG1lYXN1cmUoKFwidnVlIFwiICsgKHRoaXMuX25hbWUpICsgXCIgY29tcGlsZVwiKSwgJ2NvbXBpbGUnLCAnY29tcGlsZSBlbmQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1vdW50LmNhbGwodGhpcywgZWwsIGh5ZHJhdGluZylcbn07XG5cbi8qKlxuICogR2V0IG91dGVySFRNTCBvZiBlbGVtZW50cywgdGFraW5nIGNhcmVcbiAqIG9mIFNWRyBlbGVtZW50cyBpbiBJRSBhcyB3ZWxsLlxuICovXG5mdW5jdGlvbiBnZXRPdXRlckhUTUwgKGVsKSB7XG4gIGlmIChlbC5vdXRlckhUTUwpIHtcbiAgICByZXR1cm4gZWwub3V0ZXJIVE1MXG4gIH0gZWxzZSB7XG4gICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChlbC5jbG9uZU5vZGUodHJ1ZSkpO1xuICAgIHJldHVybiBjb250YWluZXIuaW5uZXJIVE1MXG4gIH1cbn1cblxuVnVlLmNvbXBpbGUgPSBjb21waWxlVG9GdW5jdGlvbnM7XG5cbmV4cG9ydCBkZWZhdWx0IFZ1ZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3Z1ZS9kaXN0L3Z1ZS5lc20uanNcbi8vIG1vZHVsZSBpZCA9IDUwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///50\n"); +eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* WEBPACK VAR INJECTION */(function(process, global, setImmediate) {/*!\n * Vue.js v2.6.10\n * (c) 2014-2019 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Generate a string containing static keys from compiler modules.\n */\nfunction genStaticKeys (modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || [])\n }, []).join(',')\n}\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Techinically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n toggleObserving(false);\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive$$1(vm, key, result[key]);\n }\n });\n toggleObserving(true);\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject)\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n // #6574 in case the inject object is observed...\n if (key === '__ob__') { continue }\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && hasOwn(source._provided, provideKey)) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n if (!children || !children.length) {\n return {}\n }\n var slots = {};\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.fnContext === context) &&\n data && data.slot != null\n ) {\n var name = data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n } else {\n slot.push(child);\n }\n } else {\n (slots.default || (slots.default = [])).push(child);\n }\n }\n // ignore slots that contains only whitespace\n for (var name$1 in slots) {\n if (slots[name$1].every(isWhitespace)) {\n delete slots[name$1];\n }\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\n/* */\n\nfunction normalizeScopedSlots (\n slots,\n normalSlots,\n prevSlots\n) {\n var res;\n var hasNormalSlots = Object.keys(normalSlots).length > 0;\n var isStable = slots ? !!slots.$stable : !hasNormalSlots;\n var key = slots && slots.$key;\n if (!slots) {\n res = {};\n } else if (slots._normalized) {\n // fast path 1: child component re-render only, parent did not change\n return slots._normalized\n } else if (\n isStable &&\n prevSlots &&\n prevSlots !== emptyObject &&\n key === prevSlots.$key &&\n !hasNormalSlots &&\n !prevSlots.$hasNormal\n ) {\n // fast path 2: stable scoped slots w/ no normal slots to proxy,\n // only need to normalize once\n return prevSlots\n } else {\n res = {};\n for (var key$1 in slots) {\n if (slots[key$1] && key$1[0] !== '$') {\n res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n }\n }\n }\n // expose normal slots on scopedSlots\n for (var key$2 in normalSlots) {\n if (!(key$2 in res)) {\n res[key$2] = proxyNormalSlot(normalSlots, key$2);\n }\n }\n // avoriaz seems to mock a non-extensible $scopedSlots object\n // and when that is passed down this would cause an error\n if (slots && Object.isExtensible(slots)) {\n (slots)._normalized = res;\n }\n def(res, '$stable', isStable);\n def(res, '$key', key);\n def(res, '$hasNormal', hasNormalSlots);\n return res\n}\n\nfunction normalizeScopedSlot(normalSlots, key, fn) {\n var normalized = function () {\n var res = arguments.length ? fn.apply(null, arguments) : fn({});\n res = res && typeof res === 'object' && !Array.isArray(res)\n ? [res] // single vnode\n : normalizeChildren(res);\n return res && (\n res.length === 0 ||\n (res.length === 1 && res[0].isComment) // #9658\n ) ? undefined\n : res\n };\n // this is a slot using the new v-slot syntax without scope. although it is\n // compiled as a scoped slot, render fn users would expect it to be present\n // on this.$slots because the usage is semantically a normal slot.\n if (fn.proxy) {\n Object.defineProperty(normalSlots, key, {\n get: normalized,\n enumerable: true,\n configurable: true\n });\n }\n return normalized\n}\n\nfunction proxyNormalSlot(slots, key) {\n return function () { return slots[key]; }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n if (hasSymbol && val[Symbol.iterator]) {\n ret = [];\n var iterator = val[Symbol.iterator]();\n var result = iterator.next();\n while (!result.done) {\n ret.push(render(result.value, ret.length));\n result = iterator.next();\n }\n } else {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n }\n if (!isDef(ret)) {\n ret = [];\n }\n (ret)._isVList = true;\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n nodes = scopedSlotFn(props) || fallback;\n } else {\n nodes = this.$slots[name] || fallback;\n }\n\n var target = props && props.slot;\n if (target) {\n return this.$createElement('template', { slot: target }, nodes)\n } else {\n return nodes\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\nfunction isKeyNotMatch (expect, actual) {\n if (Array.isArray(expect)) {\n return expect.indexOf(actual) === -1\n } else {\n return expect !== actual\n }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInKeyCode,\n eventKeyName,\n builtInKeyName\n) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName)\n } else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n var camelizedKey = camelize(key);\n var hyphenatedKey = hyphenate(key);\n if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n if (tree && !isInFor) {\n return tree\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = this.$options.staticRenderFns[index].call(\n this._renderProxy,\n null,\n this // for render fns generated for functional component templates\n );\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res,\n // the following are added in 2.6\n hasDynamicKeys,\n contentHashKey\n) {\n res = res || { $stable: !hasDynamicKeys };\n for (var i = 0; i < fns.length; i++) {\n var slot = fns[i];\n if (Array.isArray(slot)) {\n resolveScopedSlots(slot, res, hasDynamicKeys);\n } else if (slot) {\n // marker for reverse proxying v-slot without scope on this.$slots\n if (slot.proxy) {\n slot.fn.proxy = true;\n }\n res[slot.key] = slot.fn;\n }\n }\n if (contentHashKey) {\n (res).$key = contentHashKey;\n }\n return res\n}\n\n/* */\n\nfunction bindDynamicKeys (baseObj, values) {\n for (var i = 0; i < values.length; i += 2) {\n var key = values[i];\n if (typeof key === 'string' && key) {\n baseObj[values[i]] = values[i + 1];\n } else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n // null is a speical value for explicitly removing a binding\n warn(\n (\"Invalid value for dynamic directive argument (expected string or null): \" + key),\n this\n );\n }\n }\n return baseObj\n}\n\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier (value, symbol) {\n return typeof value === 'string' ? symbol + value : value\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n target._d = bindDynamicKeys;\n target._p = prependModifier;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var this$1 = this;\n\n var options = Ctor.options;\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm;\n if (hasOwn(parent, '_uid')) {\n contextVm = Object.create(parent);\n // $flow-disable-line\n contextVm._original = parent;\n } else {\n // the context vm passed in is a functional context as well.\n // in this case we want to make sure we are able to get a hold to the\n // real context instance.\n contextVm = parent;\n // $flow-disable-line\n parent = parent._original;\n }\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () {\n if (!this$1.$slots) {\n normalizeScopedSlots(\n data.scopedSlots,\n this$1.$slots = resolveSlots(children, parent)\n );\n }\n return this$1.$slots\n };\n\n Object.defineProperty(this, 'scopedSlots', ({\n enumerable: true,\n get: function get () {\n return normalizeScopedSlots(data.scopedSlots, this.slots())\n }\n }));\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode && !Array.isArray(vnode)) {\n vnode.fnScopeId = options._scopeId;\n vnode.fnContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)\n } else if (Array.isArray(vnode)) {\n var vnodes = normalizeChildren(vnode) || [];\n var res = new Array(vnodes.length);\n for (var i = 0; i < vnodes.length; i++) {\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n }\n return res\n }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {\n // #7817 clone node before setting fnContext, otherwise if the node is reused\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\n // that should not be matched to match.\n var clone = cloneVNode(vnode);\n clone.fnContext = contextVm;\n clone.fnOptions = options;\n if (process.env.NODE_ENV !== 'production') {\n (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n }\n if (data.slot) {\n (clone.data || (clone.data = {})).slot = data.slot;\n }\n return clone\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (vnode, hydrating) {\n if (\n vnode.componentInstance &&\n !vnode.componentInstance._isDestroyed &&\n vnode.data.keepAlive\n ) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n } else {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // install component management hooks onto the placeholder node\n installComponentHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent // activeInstance in lifecycle state\n) {\n var options = {\n _isComponent: true,\n _parentVnode: vnode,\n parent: parent\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n var hooks = data.hook || (data.hook = {});\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var existing = hooks[key];\n var toMerge = componentVNodeHooks[key];\n if (existing !== toMerge && !(existing && existing._merged)) {\n hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n }\n }\n}\n\nfunction mergeHook$1 (f1, f2) {\n var merged = function (a, b) {\n // flow complains about extra args which is why we use any\n f1(a, b);\n f2(a, b);\n };\n merged._merged = true;\n return merged\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input'\n ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n var existing = on[event];\n var callback = data.model.callback;\n if (isDef(existing)) {\n if (\n Array.isArray(existing)\n ? existing.indexOf(callback) === -1\n : existing !== callback\n ) {\n on[event] = [callback].concat(existing);\n }\n } else {\n on[event] = callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (process.env.NODE_ENV !== 'production' &&\n isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (Array.isArray(vnode)) {\n return vnode\n } else if (isDef(vnode)) {\n if (isDef(ns)) { applyNS(vnode, ns); }\n if (isDef(data)) { registerDeepBindings(data); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (\n isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n if (isObject(data.style)) {\n traverse(data.style);\n }\n if (isObject(data.class)) {\n traverse(data.class);\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n vm._staticTrees = null; // v-once cached trees\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nvar currentRenderingInstance = null;\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n if (_parentVnode) {\n vm.$scopedSlots = normalizeScopedSlots(\n _parentVnode.data.scopedSlots,\n vm.$slots,\n vm.$scopedSlots\n );\n }\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n // There's no need to maintain a stack becaues all render fns are called\n // separately from one another. Nested component's render fns are called\n // when parent component is patched.\n currentRenderingInstance = vm;\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } finally {\n currentRenderingInstance = null;\n }\n // if the returned array contains only a single node, allow it\n if (Array.isArray(vnode) && vnode.length === 1) {\n vnode = vnode[0];\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n var owner = currentRenderingInstance;\n if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n // already pending\n factory.owners.push(owner);\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (owner && !isDef(factory.owners)) {\n var owners = factory.owners = [owner];\n var sync = true;\n var timerLoading = null;\n var timerTimeout = null\n\n ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });\n\n var forceRender = function (renderCompleted) {\n for (var i = 0, l = owners.length; i < l; i++) {\n (owners[i]).$forceUpdate();\n }\n\n if (renderCompleted) {\n owners.length = 0;\n if (timerLoading !== null) {\n clearTimeout(timerLoading);\n timerLoading = null;\n }\n if (timerTimeout !== null) {\n clearTimeout(timerTimeout);\n timerTimeout = null;\n }\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender(true);\n } else {\n owners.length = 0;\n }\n });\n\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender(true);\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (isPromise(res)) {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isPromise(res.component)) {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n timerLoading = setTimeout(function () {\n timerLoading = null;\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender(false);\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n timerTimeout = setTimeout(function () {\n timerTimeout = null;\n if (isUndef(factory.resolved)) {\n reject(\n process.env.NODE_ENV !== 'production'\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn) {\n target.$on(event, fn);\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction createOnceHandler (event, fn) {\n var _target = target;\n return function onceHandler () {\n var res = fn.apply(null, arguments);\n if (res !== null) {\n _target.$off(event, onceHandler);\n }\n }\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n vm.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n vm.$off(event[i$1], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (!fn) {\n vm._events[event] = null;\n return vm\n }\n // specific handler\n var cb;\n var i = cbs.length;\n while (i--) {\n cb = cbs[i];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n var info = \"event handler for \\\"\" + event + \"\\\"\";\n for (var i = 0, l = cbs.length; i < l; i++) {\n invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n }\n }\n return vm\n };\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n return function () {\n activeInstance = prevActiveInstance;\n }\n}\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var restoreActiveInstance = setActiveInstance(vm);\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n restoreActiveInstance();\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction mountComponent (\n vm,\n el,\n hydrating\n) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((\"vue \" + name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n // we set this to vm._watcher inside the watcher's constructor\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n // component's mounted hook), which relies on vm._watcher being already defined\n new Watcher(vm, updateComponent, noop, {\n before: function before () {\n if (vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'beforeUpdate');\n }\n }\n }, true /* isRenderWatcher */);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren.\n\n // check if there are dynamic scopedSlots (hand-written or compiled but with\n // dynamic slot names). Static scoped slots compiled from template has the\n // \"$stable\" marker.\n var newScopedSlots = parentVnode.data.scopedSlots;\n var oldScopedSlots = vm.$scopedSlots;\n var hasDynamicScopedSlot = !!(\n (newScopedSlots && !newScopedSlots.$stable) ||\n (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)\n );\n\n // Any static slot children from the parent may have changed during parent's\n // update. Dynamic scoped slots may also have changed. In such cases, a forced\n // update is necessary to ensure correctness.\n var needsForceUpdate = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n hasDynamicScopedSlot\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = parentVnode.data.attrs || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n toggleObserving(false);\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n var propOptions = vm.$options.props; // wtf flow?\n props[key] = validateProp(key, propOptions, propsData, vm);\n }\n toggleObserving(true);\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n\n // update listeners\n listeners = listeners || emptyObject;\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n\n // resolve slots + force update if has children\n if (needsForceUpdate) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n var info = hook + \" hook\";\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n popTarget();\n}\n\n/* */\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n// Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\nvar currentFlushTimestamp = 0;\n\n// Async edge case fix requires storing an event listener's attach timestamp.\nvar getNow = Date.now;\n\n// Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\nif (inBrowser && !isIE) {\n var performance = window.performance;\n if (\n performance &&\n typeof performance.now === 'function' &&\n getNow() > document.createEvent('Event').timeStamp\n ) {\n // if the event timestamp, although evaluated AFTER the Date.now(), is\n // smaller than it, it means the event is using a hi-res timestamp,\n // and we need to use the hi-res version for event listener timestamps as\n // well.\n getNow = function () { return performance.now(); };\n }\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n currentFlushTimestamp = getNow();\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n if (watcher.before) {\n watcher.before();\n }\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n flushSchedulerQueue();\n return\n }\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\n\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options,\n isRenderWatcher\n) {\n this.vm = vm;\n if (isRenderWatcher) {\n vm._watcher = this;\n }\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n this.before = options.before;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production'\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = noop;\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var i = this.deps.length;\n while (i--) {\n var dep = this.deps[i];\n if (!this.newDepIds.has(dep.id)) {\n dep.removeSub(this);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var i = this.deps.length;\n while (i--) {\n this.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this.deps[i].removeSub(this);\n }\n this.active = false;\n }\n};\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n if (!isRoot) {\n toggleObserving(false);\n }\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive$$1(props, key, value, function () {\n if (!isRoot && !isUpdatingChildComponent) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive$$1(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n toggleObserving(true);\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n // #7573 disable dep collection when invoking data getters\n pushTarget();\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n } finally {\n popTarget();\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n // $flow-disable-line\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : createGetterInvoker(userDef);\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : createGetterInvoker(userDef.get)\n : noop;\n sharedPropertyDefinition.set = userDef.set || noop;\n }\n if (process.env.NODE_ENV !== 'production' &&\n sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction createGetterInvoker(fn) {\n return function computedGetter () {\n return fn.call(this, this)\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof methods[key] !== 'function') {\n warn(\n \"Method \\\"\" + key + \"\\\" has type \\\"\" + (typeof methods[key]) + \"\\\" in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n expOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function () {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n try {\n cb.call(vm, watcher.value);\n } catch (error) {\n handleError(error, vm, (\"callback for immediate watcher \\\"\" + (watcher.expression) + \"\\\"\"));\n }\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$3++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n var parentVnode = options._parentVnode;\n opts.parent = options.parent;\n opts._parentVnode = parentVnode;\n\n var vnodeComponentOptions = parentVnode.componentOptions;\n opts.propsData = vnodeComponentOptions.propsData;\n opts._parentListeners = vnodeComponentOptions.listeners;\n opts._renderChildren = vnodeComponentOptions.children;\n opts._componentTag = vnodeComponentOptions.tag;\n\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = latest[key];\n }\n }\n return modified\n}\n\nfunction Vue (options) {\n if (process.env.NODE_ENV !== 'production' &&\n !(this instanceof Vue)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production' && name) {\n validateComponentName(name);\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && type === 'component') {\n validateComponentName(id);\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\n\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var cached$$1 = cache[key];\n if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n for (var key in this.cache) {\n pruneCacheEntry(this.cache, key, this.keys);\n }\n },\n\n mounted: function mounted () {\n var this$1 = this;\n\n this.$watch('include', function (val) {\n pruneCache(this$1, function (name) { return matches(val, name); });\n });\n this.$watch('exclude', function (val) {\n pruneCache(this$1, function (name) { return !matches(val, name); });\n });\n },\n\n render: function render () {\n var slot = this.$slots.default;\n var vnode = getFirstComponentChild(slot);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n var ref = this;\n var include = ref.include;\n var exclude = ref.exclude;\n if (\n // not included\n (include && (!name || !matches(include, name))) ||\n // excluded\n (exclude && name && matches(exclude, name))\n ) {\n return vnode\n }\n\n var ref$1 = this;\n var cache = ref$1.cache;\n var keys = ref$1.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode || (slot && slot[0])\n }\n};\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n};\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive$$1\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n // 2.6 explicit observable API\n Vue.observable = function (obj) {\n observe(obj);\n return obj\n };\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n value: FunctionalRenderContext\n});\n\nVue.version = '2.6.10';\n\n/* */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\n\nvar convertEnumeratedValue = function (key, value) {\n return isFalsyAttrValue(value) || value === 'false'\n ? 'false'\n // allow arbitrary string value for contenteditable\n : key === 'contenteditable' && isValidContentEditableValue(value)\n ? value\n : 'true'\n};\n\nvar isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,translate,' +\n 'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n return val == null || val === false\n};\n\n/* */\n\nfunction genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode && childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode && parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n}\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n);\n\nvar isPreTag = function (tag) { return tag === 'pre'; };\n\nvar isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n}\n\n/* */\n\nfunction createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode (node) {\n return node.parentNode\n}\n\nfunction nextSibling (node) {\n return node.nextSibling\n}\n\nfunction tagName (node) {\n return node.tagName\n}\n\nfunction setTextContent (node, text) {\n node.textContent = text;\n}\n\nfunction setStyleScope (node, scopeId) {\n node.setAttribute(scopeId, '');\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n createElement: createElement$1,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n setStyleScope: setStyleScope\n});\n\n/* */\n\nvar ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n};\n\nfunction registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!isDef(key)) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n return (\n a.key === b.key && (\n (\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n ) || (\n isTrue(a.isAsyncPlaceholder) &&\n a.asyncFactory === b.asyncFactory &&\n isUndef(b.asyncFactory.error)\n )\n )\n )\n}\n\nfunction sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n}\n\nfunction createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove$$1 () {\n if (--remove$$1.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove$$1.listeners = listeners;\n return remove$$1\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n function isUnknownElement$$1 (vnode, inVPre) {\n return (\n !inVPre &&\n !vnode.ns &&\n !(\n config.ignoredElements.length &&\n config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore)\n ? ignore.test(vnode.tag)\n : ignore === vnode.tag\n })\n ) &&\n config.isUnknownElement(vnode.tag)\n )\n }\n\n var creatingElmInVPre = 0;\n\n function createElm (\n vnode,\n insertedVnodeQueue,\n parentElm,\n refElm,\n nested,\n ownerArray,\n index\n ) {\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // This vnode was used in a previous render!\n // now it's used as a new node, overwriting its elm would cause\n // potential patch errors down the road when it's used as an insertion\n // reference node. Instead, we clone the node on-demand before creating\n // associated DOM element for it.\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n if (process.env.NODE_ENV !== 'production') {\n if (data && data.pre) {\n creatingElmInVPre++;\n }\n if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n creatingElmInVPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n insert(parentElm, vnode.elm, refElm);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (nodeOps.parentNode(ref$$1) === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(children);\n }\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n if (isDef(i = vnode.fnScopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n } else {\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n ancestor = ancestor.parent;\n }\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n i !== vnode.fnContext &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(newCh);\n }\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key)\n ? oldKeyToIdx[newStartVnode.key]\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n } else {\n vnodeToMove = oldCh[idxInOld];\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function checkDuplicateKeys (children) {\n var seenKeys = {};\n for (var i = 0; i < children.length; i++) {\n var vnode = children[i];\n var key = vnode.key;\n if (isDef(key)) {\n if (seenKeys[key]) {\n warn(\n (\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\"),\n vnode.context\n );\n } else {\n seenKeys[key] = true;\n }\n }\n }\n }\n\n function findIdxInOld (node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n if (isDef(c) && sameVnode(node, c)) { return i }\n }\n }\n\n function patchVnode (\n oldVnode,\n vnode,\n insertedVnodeQueue,\n ownerArray,\n index,\n removeOnly\n ) {\n if (oldVnode === vnode) {\n return\n }\n\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // clone reused vnode\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n return\n }\n\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(ch);\n }\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var hydrationBailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n // Note: style is excluded because it relies on initial clone for future\n // deep updates (#7063).\n var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {\n var i;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n inVPre = inVPre || (data && data.pre);\n vnode.elm = elm;\n\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.isAsyncPlaceholder = true;\n return true\n }\n // assert node match\n if (process.env.NODE_ENV !== 'production') {\n if (!assertNodeMatch(elm, vnode, inVPre)) {\n return false\n }\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n return false\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n }\n if (isDef(data)) {\n var fullInvoke = false;\n for (var key in data) {\n if (!isRenderedModule(key)) {\n fullInvoke = true;\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n if (!fullInvoke && data['class']) {\n // ensure collecting deps for deep class bindings for future updates\n traverse(data['class']);\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode, inVPre) {\n if (isDef(vnode.tag)) {\n return vnode.tag.indexOf('vue-component') === 0 || (\n !isUnknownElement$$1(vnode, inVPre) &&\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm = nodeOps.parentNode(oldElm);\n\n // create new node\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm,\n nodeOps.nextSibling(oldElm)\n );\n\n // update parent placeholder node element, recursively\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n // destroy old node\n if (isDef(parentElm)) {\n removeVnodes(parentElm, [oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n dir.oldArg = oldDir.arg;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n // $flow-disable-line\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n // $flow-disable-line\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n];\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for <iframe>,\n // but Flash expects a value of \"true\" when used on <embed> tag\n value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n ? 'true'\n : key;\n el.setAttribute(key, value);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, convertEnumeratedValue(key, value));\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n baseSetAttr(el, key, value);\n }\n}\n\nfunction baseSetAttr (el, key, value) {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // #7138: IE10 & 11 fires input event when setting placeholder on\n // <textarea>... block the first input event and remove the blocker\n // immediately.\n /* istanbul ignore if */\n if (\n isIE && !isIE9 &&\n el.tagName === 'TEXTAREA' &&\n key === 'placeholder' && value !== '' && !el.__ieph\n ) {\n var blocker = function (e) {\n e.stopImmediatePropagation();\n el.removeEventListener('input', blocker);\n };\n el.addEventListener('input', blocker);\n // $flow-disable-line\n el.__ieph = true; /* IE placeholder patched */\n }\n el.setAttribute(key, value);\n }\n}\n\nvar attrs = {\n create: updateAttrs,\n update: updateAttrs\n};\n\n/* */\n\nfunction updateClass (oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n if (\n isUndef(data.staticClass) &&\n isUndef(data.class) && (\n isUndef(oldData) || (\n isUndef(oldData.staticClass) &&\n isUndef(oldData.class)\n )\n )\n ) {\n return\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n}\n\nvar klass = {\n create: updateClass,\n update: updateClass\n};\n\n/* */\n\nvar validDivisionCharRE = /[\\w).+\\-_$\\]]/;\n\nfunction parseFilters (exp) {\n var inSingle = false;\n var inDouble = false;\n var inTemplateString = false;\n var inRegex = false;\n var curly = 0;\n var square = 0;\n var paren = 0;\n var lastFilterIndex = 0;\n var c, prev, i, expression, filters;\n\n for (i = 0; i < exp.length; i++) {\n prev = c;\n c = exp.charCodeAt(i);\n if (inSingle) {\n if (c === 0x27 && prev !== 0x5C) { inSingle = false; }\n } else if (inDouble) {\n if (c === 0x22 && prev !== 0x5C) { inDouble = false; }\n } else if (inTemplateString) {\n if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }\n } else if (inRegex) {\n if (c === 0x2f && prev !== 0x5C) { inRegex = false; }\n } else if (\n c === 0x7C && // pipe\n exp.charCodeAt(i + 1) !== 0x7C &&\n exp.charCodeAt(i - 1) !== 0x7C &&\n !curly && !square && !paren\n ) {\n if (expression === undefined) {\n // first filter, end of expression\n lastFilterIndex = i + 1;\n expression = exp.slice(0, i).trim();\n } else {\n pushFilter();\n }\n } else {\n switch (c) {\n case 0x22: inDouble = true; break // \"\n case 0x27: inSingle = true; break // '\n case 0x60: inTemplateString = true; break // `\n case 0x28: paren++; break // (\n case 0x29: paren--; break // )\n case 0x5B: square++; break // [\n case 0x5D: square--; break // ]\n case 0x7B: curly++; break // {\n case 0x7D: curly--; break // }\n }\n if (c === 0x2f) { // /\n var j = i - 1;\n var p = (void 0);\n // find first non-whitespace prev char\n for (; j >= 0; j--) {\n p = exp.charAt(j);\n if (p !== ' ') { break }\n }\n if (!p || !validDivisionCharRE.test(p)) {\n inRegex = true;\n }\n }\n }\n }\n\n if (expression === undefined) {\n expression = exp.slice(0, i).trim();\n } else if (lastFilterIndex !== 0) {\n pushFilter();\n }\n\n function pushFilter () {\n (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());\n lastFilterIndex = i + 1;\n }\n\n if (filters) {\n for (i = 0; i < filters.length; i++) {\n expression = wrapFilter(expression, filters[i]);\n }\n }\n\n return expression\n}\n\nfunction wrapFilter (exp, filter) {\n var i = filter.indexOf('(');\n if (i < 0) {\n // _f: resolveFilter\n return (\"_f(\\\"\" + filter + \"\\\")(\" + exp + \")\")\n } else {\n var name = filter.slice(0, i);\n var args = filter.slice(i + 1);\n return (\"_f(\\\"\" + name + \"\\\")(\" + exp + (args !== ')' ? ',' + args : args))\n }\n}\n\n/* */\n\n\n\n/* eslint-disable no-unused-vars */\nfunction baseWarn (msg, range) {\n console.error((\"[Vue compiler]: \" + msg));\n}\n/* eslint-enable no-unused-vars */\n\nfunction pluckModuleFunction (\n modules,\n key\n) {\n return modules\n ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; })\n : []\n}\n\nfunction addProp (el, name, value, range, dynamic) {\n (el.props || (el.props = [])).push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));\n el.plain = false;\n}\n\nfunction addAttr (el, name, value, range, dynamic) {\n var attrs = dynamic\n ? (el.dynamicAttrs || (el.dynamicAttrs = []))\n : (el.attrs || (el.attrs = []));\n attrs.push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));\n el.plain = false;\n}\n\n// add a raw attr (use this in preTransforms)\nfunction addRawAttr (el, name, value, range) {\n el.attrsMap[name] = value;\n el.attrsList.push(rangeSetItem({ name: name, value: value }, range));\n}\n\nfunction addDirective (\n el,\n name,\n rawName,\n value,\n arg,\n isDynamicArg,\n modifiers,\n range\n) {\n (el.directives || (el.directives = [])).push(rangeSetItem({\n name: name,\n rawName: rawName,\n value: value,\n arg: arg,\n isDynamicArg: isDynamicArg,\n modifiers: modifiers\n }, range));\n el.plain = false;\n}\n\nfunction prependModifierMarker (symbol, name, dynamic) {\n return dynamic\n ? (\"_p(\" + name + \",\\\"\" + symbol + \"\\\")\")\n : symbol + name // mark the event as captured\n}\n\nfunction addHandler (\n el,\n name,\n value,\n modifiers,\n important,\n warn,\n range,\n dynamic\n) {\n modifiers = modifiers || emptyObject;\n // warn prevent and passive modifier\n /* istanbul ignore if */\n if (\n process.env.NODE_ENV !== 'production' && warn &&\n modifiers.prevent && modifiers.passive\n ) {\n warn(\n 'passive and prevent can\\'t be used together. ' +\n 'Passive handler can\\'t prevent default event.',\n range\n );\n }\n\n // normalize click.right and click.middle since they don't actually fire\n // this is technically browser-specific, but at least for now browsers are\n // the only target envs that have right/middle clicks.\n if (modifiers.right) {\n if (dynamic) {\n name = \"(\" + name + \")==='click'?'contextmenu':(\" + name + \")\";\n } else if (name === 'click') {\n name = 'contextmenu';\n delete modifiers.right;\n }\n } else if (modifiers.middle) {\n if (dynamic) {\n name = \"(\" + name + \")==='click'?'mouseup':(\" + name + \")\";\n } else if (name === 'click') {\n name = 'mouseup';\n }\n }\n\n // check capture modifier\n if (modifiers.capture) {\n delete modifiers.capture;\n name = prependModifierMarker('!', name, dynamic);\n }\n if (modifiers.once) {\n delete modifiers.once;\n name = prependModifierMarker('~', name, dynamic);\n }\n /* istanbul ignore if */\n if (modifiers.passive) {\n delete modifiers.passive;\n name = prependModifierMarker('&', name, dynamic);\n }\n\n var events;\n if (modifiers.native) {\n delete modifiers.native;\n events = el.nativeEvents || (el.nativeEvents = {});\n } else {\n events = el.events || (el.events = {});\n }\n\n var newHandler = rangeSetItem({ value: value.trim(), dynamic: dynamic }, range);\n if (modifiers !== emptyObject) {\n newHandler.modifiers = modifiers;\n }\n\n var handlers = events[name];\n /* istanbul ignore if */\n if (Array.isArray(handlers)) {\n important ? handlers.unshift(newHandler) : handlers.push(newHandler);\n } else if (handlers) {\n events[name] = important ? [newHandler, handlers] : [handlers, newHandler];\n } else {\n events[name] = newHandler;\n }\n\n el.plain = false;\n}\n\nfunction getRawBindingAttr (\n el,\n name\n) {\n return el.rawAttrsMap[':' + name] ||\n el.rawAttrsMap['v-bind:' + name] ||\n el.rawAttrsMap[name]\n}\n\nfunction getBindingAttr (\n el,\n name,\n getStatic\n) {\n var dynamicValue =\n getAndRemoveAttr(el, ':' + name) ||\n getAndRemoveAttr(el, 'v-bind:' + name);\n if (dynamicValue != null) {\n return parseFilters(dynamicValue)\n } else if (getStatic !== false) {\n var staticValue = getAndRemoveAttr(el, name);\n if (staticValue != null) {\n return JSON.stringify(staticValue)\n }\n }\n}\n\n// note: this only removes the attr from the Array (attrsList) so that it\n// doesn't get processed by processAttrs.\n// By default it does NOT remove it from the map (attrsMap) because the map is\n// needed during codegen.\nfunction getAndRemoveAttr (\n el,\n name,\n removeFromMap\n) {\n var val;\n if ((val = el.attrsMap[name]) != null) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n if (list[i].name === name) {\n list.splice(i, 1);\n break\n }\n }\n }\n if (removeFromMap) {\n delete el.attrsMap[name];\n }\n return val\n}\n\nfunction getAndRemoveAttrByRegex (\n el,\n name\n) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n var attr = list[i];\n if (name.test(attr.name)) {\n list.splice(i, 1);\n return attr\n }\n }\n}\n\nfunction rangeSetItem (\n item,\n range\n) {\n if (range) {\n if (range.start != null) {\n item.start = range.start;\n }\n if (range.end != null) {\n item.end = range.end;\n }\n }\n return item\n}\n\n/* */\n\n/**\n * Cross-platform code generation for component v-model\n */\nfunction genComponentModel (\n el,\n value,\n modifiers\n) {\n var ref = modifiers || {};\n var number = ref.number;\n var trim = ref.trim;\n\n var baseValueExpression = '$$v';\n var valueExpression = baseValueExpression;\n if (trim) {\n valueExpression =\n \"(typeof \" + baseValueExpression + \" === 'string'\" +\n \"? \" + baseValueExpression + \".trim()\" +\n \": \" + baseValueExpression + \")\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n var assignment = genAssignmentCode(value, valueExpression);\n\n el.model = {\n value: (\"(\" + value + \")\"),\n expression: JSON.stringify(value),\n callback: (\"function (\" + baseValueExpression + \") {\" + assignment + \"}\")\n };\n}\n\n/**\n * Cross-platform codegen helper for generating v-model value assignment code.\n */\nfunction genAssignmentCode (\n value,\n assignment\n) {\n var res = parseModel(value);\n if (res.key === null) {\n return (value + \"=\" + assignment)\n } else {\n return (\"$set(\" + (res.exp) + \", \" + (res.key) + \", \" + assignment + \")\")\n }\n}\n\n/**\n * Parse a v-model expression into a base path and a final key segment.\n * Handles both dot-path and possible square brackets.\n *\n * Possible cases:\n *\n * - test\n * - test[key]\n * - test[test1[key]]\n * - test[\"a\"][key]\n * - xxx.test[a[a].test1[key]]\n * - test.xxx.a[\"asa\"][test1[key]]\n *\n */\n\nvar len, str, chr, index$1, expressionPos, expressionEndPos;\n\n\n\nfunction parseModel (val) {\n // Fix https://github.com/vuejs/vue/pull/7730\n // allow v-model=\"obj.val \" (trailing whitespace)\n val = val.trim();\n len = val.length;\n\n if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {\n index$1 = val.lastIndexOf('.');\n if (index$1 > -1) {\n return {\n exp: val.slice(0, index$1),\n key: '\"' + val.slice(index$1 + 1) + '\"'\n }\n } else {\n return {\n exp: val,\n key: null\n }\n }\n }\n\n str = val;\n index$1 = expressionPos = expressionEndPos = 0;\n\n while (!eof()) {\n chr = next();\n /* istanbul ignore if */\n if (isStringStart(chr)) {\n parseString(chr);\n } else if (chr === 0x5B) {\n parseBracket(chr);\n }\n }\n\n return {\n exp: val.slice(0, expressionPos),\n key: val.slice(expressionPos + 1, expressionEndPos)\n }\n}\n\nfunction next () {\n return str.charCodeAt(++index$1)\n}\n\nfunction eof () {\n return index$1 >= len\n}\n\nfunction isStringStart (chr) {\n return chr === 0x22 || chr === 0x27\n}\n\nfunction parseBracket (chr) {\n var inBracket = 1;\n expressionPos = index$1;\n while (!eof()) {\n chr = next();\n if (isStringStart(chr)) {\n parseString(chr);\n continue\n }\n if (chr === 0x5B) { inBracket++; }\n if (chr === 0x5D) { inBracket--; }\n if (inBracket === 0) {\n expressionEndPos = index$1;\n break\n }\n }\n}\n\nfunction parseString (chr) {\n var stringQuote = chr;\n while (!eof()) {\n chr = next();\n if (chr === stringQuote) {\n break\n }\n }\n}\n\n/* */\n\nvar warn$1;\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\nfunction model (\n el,\n dir,\n _warn\n) {\n warn$1 = _warn;\n var value = dir.value;\n var modifiers = dir.modifiers;\n var tag = el.tag;\n var type = el.attrsMap.type;\n\n if (process.env.NODE_ENV !== 'production') {\n // inputs with type=\"file\" are read only and setting the input's\n // value will throw an error.\n if (tag === 'input' && type === 'file') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\" type=\\\"file\\\">:\\n\" +\n \"File inputs are read only. Use a v-on:change listener instead.\",\n el.rawAttrsMap['v-model']\n );\n }\n }\n\n if (el.component) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (tag === 'select') {\n genSelect(el, value, modifiers);\n } else if (tag === 'input' && type === 'checkbox') {\n genCheckboxModel(el, value, modifiers);\n } else if (tag === 'input' && type === 'radio') {\n genRadioModel(el, value, modifiers);\n } else if (tag === 'input' || tag === 'textarea') {\n genDefaultModel(el, value, modifiers);\n } else if (!config.isReservedTag(tag)) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (process.env.NODE_ENV !== 'production') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"v-model is not supported on this element type. \" +\n 'If you are working with contenteditable, it\\'s recommended to ' +\n 'wrap a library dedicated for that purpose inside a custom component.',\n el.rawAttrsMap['v-model']\n );\n }\n\n // ensure runtime directive metadata\n return true\n}\n\nfunction genCheckboxModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';\n var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';\n addProp(el, 'checked',\n \"Array.isArray(\" + value + \")\" +\n \"?_i(\" + value + \",\" + valueBinding + \")>-1\" + (\n trueValueBinding === 'true'\n ? (\":(\" + value + \")\")\n : (\":_q(\" + value + \",\" + trueValueBinding + \")\")\n )\n );\n addHandler(el, 'change',\n \"var $$a=\" + value + \",\" +\n '$$el=$event.target,' +\n \"$$c=$$el.checked?(\" + trueValueBinding + \"):(\" + falseValueBinding + \");\" +\n 'if(Array.isArray($$a)){' +\n \"var $$v=\" + (number ? '_n(' + valueBinding + ')' : valueBinding) + \",\" +\n '$$i=_i($$a,$$v);' +\n \"if($$el.checked){$$i<0&&(\" + (genAssignmentCode(value, '$$a.concat([$$v])')) + \")}\" +\n \"else{$$i>-1&&(\" + (genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))')) + \")}\" +\n \"}else{\" + (genAssignmentCode(value, '$$c')) + \"}\",\n null, true\n );\n}\n\nfunction genRadioModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n valueBinding = number ? (\"_n(\" + valueBinding + \")\") : valueBinding;\n addProp(el, 'checked', (\"_q(\" + value + \",\" + valueBinding + \")\"));\n addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);\n}\n\nfunction genSelect (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var selectedVal = \"Array.prototype.filter\" +\n \".call($event.target.options,function(o){return o.selected})\" +\n \".map(function(o){var val = \\\"_value\\\" in o ? o._value : o.value;\" +\n \"return \" + (number ? '_n(val)' : 'val') + \"})\";\n\n var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';\n var code = \"var $$selectedVal = \" + selectedVal + \";\";\n code = code + \" \" + (genAssignmentCode(value, assignment));\n addHandler(el, 'change', code, null, true);\n}\n\nfunction genDefaultModel (\n el,\n value,\n modifiers\n) {\n var type = el.attrsMap.type;\n\n // warn if v-bind:value conflicts with v-model\n // except for inputs with v-bind:type\n if (process.env.NODE_ENV !== 'production') {\n var value$1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value'];\n var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];\n if (value$1 && !typeBinding) {\n var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value';\n warn$1(\n binding + \"=\\\"\" + value$1 + \"\\\" conflicts with v-model on the same element \" +\n 'because the latter already expands to a value binding internally',\n el.rawAttrsMap[binding]\n );\n }\n }\n\n var ref = modifiers || {};\n var lazy = ref.lazy;\n var number = ref.number;\n var trim = ref.trim;\n var needCompositionGuard = !lazy && type !== 'range';\n var event = lazy\n ? 'change'\n : type === 'range'\n ? RANGE_TOKEN\n : 'input';\n\n var valueExpression = '$event.target.value';\n if (trim) {\n valueExpression = \"$event.target.value.trim()\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n\n var code = genAssignmentCode(value, valueExpression);\n if (needCompositionGuard) {\n code = \"if($event.target.composing)return;\" + code;\n }\n\n addProp(el, 'value', (\"(\" + value + \")\"));\n addHandler(el, event, code, null, true);\n if (trim || number) {\n addHandler(el, 'blur', '$forceUpdate()');\n }\n}\n\n/* */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n var event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n }\n // This was originally intended to fix #4521 but no longer necessary\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n /* istanbul ignore if */\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n}\n\nvar target$1;\n\nfunction createOnceHandler$1 (event, handler, capture) {\n var _target = target$1; // save current target element in closure\n return function onceHandler () {\n var res = handler.apply(null, arguments);\n if (res !== null) {\n remove$2(event, onceHandler, capture, _target);\n }\n }\n}\n\n// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp\n// implementation and does not fire microtasks in between event propagation, so\n// safe to exclude.\nvar useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);\n\nfunction add$1 (\n name,\n handler,\n capture,\n passive\n) {\n // async edge case #6566: inner click event triggers patch, event handler\n // attached to outer element during patch, and triggered again. This\n // happens because browsers fire microtask ticks between event propagation.\n // the solution is simple: we save the timestamp when a handler is attached,\n // and the handler would only fire if the event passed to it was fired\n // AFTER it was attached.\n if (useMicrotaskFix) {\n var attachedTimestamp = currentFlushTimestamp;\n var original = handler;\n handler = original._wrapper = function (e) {\n if (\n // no bubbling, should always fire.\n // this is just a safety net in case event.timeStamp is unreliable in\n // certain weird environments...\n e.target === e.currentTarget ||\n // event is fired after handler attachment\n e.timeStamp >= attachedTimestamp ||\n // bail for environments that have buggy event.timeStamp implementations\n // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState\n // #9681 QtWebEngine event.timeStamp is negative value\n e.timeStamp <= 0 ||\n // #9448 bail if event is fired in another document in a multi-page\n // electron/nw.js app, since event.timeStamp will be using a different\n // starting reference\n e.target.ownerDocument !== document\n ) {\n return original.apply(this, arguments)\n }\n };\n }\n target$1.addEventListener(\n name,\n handler,\n supportsPassive\n ? { capture: capture, passive: passive }\n : capture\n );\n}\n\nfunction remove$2 (\n name,\n handler,\n capture,\n _target\n) {\n (_target || target$1).removeEventListener(\n name,\n handler._wrapper || handler,\n capture\n );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context);\n target$1 = undefined;\n}\n\nvar events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n};\n\n/* */\n\nvar svgContainer;\n\nfunction updateDOMProps (oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return\n }\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (!(key in props)) {\n elm[key] = '';\n }\n }\n\n for (key in props) {\n cur = props[key];\n // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) { vnode.children.length = 0; }\n if (cur === oldProps[key]) { continue }\n // #6601 work around Chrome version <= 55 bug where single textNode\n // replaced by innerHTML/textContent retains its parentNode property\n if (elm.childNodes.length === 1) {\n elm.removeChild(elm.childNodes[0]);\n }\n }\n\n if (key === 'value' && elm.tagName !== 'PROGRESS') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n var strCur = isUndef(cur) ? '' : String(cur);\n if (shouldUpdateValue(elm, strCur)) {\n elm.value = strCur;\n }\n } else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {\n // IE doesn't support innerHTML for SVG elements\n svgContainer = svgContainer || document.createElement('div');\n svgContainer.innerHTML = \"<svg>\" + cur + \"</svg>\";\n var svg = svgContainer.firstChild;\n while (elm.firstChild) {\n elm.removeChild(elm.firstChild);\n }\n while (svg.firstChild) {\n elm.appendChild(svg.firstChild);\n }\n } else if (\n // skip the update if old and new VDOM state is the same.\n // `value` is handled separately because the DOM value may be temporarily\n // out of sync with VDOM state due to focus, composition and modifiers.\n // This #4521 by skipping the unnecesarry `checked` update.\n cur !== oldProps[key]\n ) {\n // some property updates can throw\n // e.g. `value` on <progress> w/ non-finite value\n try {\n elm[key] = cur;\n } catch (e) {}\n }\n }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n return (!elm.composing && (\n elm.tagName === 'OPTION' ||\n isNotInFocusAndDirty(elm, checkVal) ||\n isDirtyWithModifiers(elm, checkVal)\n ))\n}\n\nfunction isNotInFocusAndDirty (elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is\n // not equal to the updated value\n var notInFocus = true;\n // #6157\n // work around IE bug when accessing document.activeElement in an iframe\n try { notInFocus = document.activeElement !== elm; } catch (e) {}\n return notInFocus && elm.value !== checkVal\n}\n\nfunction isDirtyWithModifiers (elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n if (isDef(modifiers)) {\n if (modifiers.number) {\n return toNumber(value) !== toNumber(newVal)\n }\n if (modifiers.trim) {\n return value.trim() !== newVal.trim()\n }\n }\n return value !== newVal\n}\n\nvar domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n};\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n var style = normalizeStyleBinding(data.style);\n // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n return data.staticStyle\n ? extend(data.staticStyle, style)\n : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n if (\n childNode && childNode.data &&\n (styleData = normalizeStyleData(childNode.data))\n ) {\n extend(res, styleData);\n }\n }\n }\n\n if ((styleData = normalizeStyleData(vnode.data))) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n while ((parentNode = parentNode.parent)) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n return res\n}\n\n/* */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n emptyStyle = emptyStyle || document.createElement('div').style;\n prop = camelize(prop);\n if (prop !== 'filter' && (prop in emptyStyle)) {\n return prop\n }\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < vendorNames.length; i++) {\n var name = vendorNames[i] + capName;\n if (name in emptyStyle) {\n return name\n }\n }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) &&\n isUndef(oldData.staticStyle) && isUndef(oldData.style)\n ) {\n return\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n var oldStyle = oldStaticStyle || oldStyleBinding;\n\n var style = normalizeStyleBinding(vnode.data.style) || {};\n\n // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likely wants\n // to mutate it.\n vnode.data.normalizedStyle = isDef(style.__ob__)\n ? extend({}, style)\n : style;\n\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n for (name in newStyle) {\n cur = newStyle[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n}\n\nvar style = {\n create: updateStyle,\n update: updateStyle\n};\n\n/* */\n\nvar whitespaceRE = /\\s+/;\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); });\n } else {\n el.classList.remove(cls);\n }\n if (!el.classList.length) {\n el.removeAttribute('class');\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n cur = cur.trim();\n if (cur) {\n el.setAttribute('class', cur);\n } else {\n el.removeAttribute('class');\n }\n }\n}\n\n/* */\n\nfunction resolveTransition (def$$1) {\n if (!def$$1) {\n return\n }\n /* istanbul ignore else */\n if (typeof def$$1 === 'object') {\n var res = {};\n if (def$$1.css !== false) {\n extend(res, autoCssTransition(def$$1.name || 'v'));\n }\n extend(res, def$$1);\n return res\n } else if (typeof def$$1 === 'string') {\n return autoCssTransition(def$$1)\n }\n}\n\nvar autoCssTransition = cached(function (name) {\n return {\n enterClass: (name + \"-enter\"),\n enterToClass: (name + \"-enter-to\"),\n enterActiveClass: (name + \"-enter-active\"),\n leaveClass: (name + \"-leave\"),\n leaveToClass: (name + \"-leave-to\"),\n leaveActiveClass: (name + \"-leave-active\")\n }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined &&\n window.onwebkittransitionend !== undefined\n ) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined &&\n window.onwebkitanimationend !== undefined\n ) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n ? window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout\n : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n raf(function () {\n raf(fn);\n });\n}\n\nfunction addTransitionClass (el, cls) {\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n if (transitionClasses.indexOf(cls) < 0) {\n transitionClasses.push(cls);\n addClass(el, cls);\n }\n}\n\nfunction removeTransitionClass (el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n el,\n expectedType,\n cb\n) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n if (!type) { return cb() }\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function () {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function (e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n var styles = window.getComputedStyle(el);\n // JSDOM may return undefined for transition properties\n var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\n var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\n var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n var hasTransform =\n type === TRANSITION &&\n transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n }\n}\n\nfunction getTimeout (delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i])\n }))\n}\n\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\n// in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\n// as a floor function) causing unexpected behaviors\nfunction toMs (s) {\n return Number(s.slice(0, -1).replace(',', '.')) * 1000\n}\n\n/* */\n\nfunction enter (vnode, toggleDisplay) {\n var el = vnode.elm;\n\n // call leave callback now\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return\n }\n\n /* istanbul ignore if */\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration;\n\n // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n while (transitionNode && transitionNode.parent) {\n context = transitionNode.context;\n transitionNode = transitionNode.parent;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return\n }\n\n var startClass = isAppear && appearClass\n ? appearClass\n : enterClass;\n var activeClass = isAppear && appearActiveClass\n ? appearActiveClass\n : enterActiveClass;\n var toClass = isAppear && appearToClass\n ? appearToClass\n : enterToClass;\n\n var beforeEnterHook = isAppear\n ? (beforeAppear || beforeEnter)\n : beforeEnter;\n var enterHook = isAppear\n ? (typeof appear === 'function' ? appear : enter)\n : enter;\n var afterEnterHook = isAppear\n ? (afterAppear || afterEnter)\n : afterEnter;\n var enterCancelledHook = isAppear\n ? (appearCancelled || enterCancelled)\n : enterCancelled;\n\n var explicitEnterDuration = toNumber(\n isObject(duration)\n ? duration.enter\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode, 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n if (pendingNode &&\n pendingNode.tag === vnode.tag &&\n pendingNode.elm._leaveCb\n ) {\n pendingNode.elm._leaveCb();\n }\n enterHook && enterHook(el, cb);\n });\n }\n\n // start enter transition\n beforeEnterHook && beforeEnterHook(el);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n removeTransitionClass(el, startClass);\n if (!cb.cancelled) {\n addTransitionClass(el, toClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n}\n\nfunction leave (vnode, rm) {\n var el = vnode.elm;\n\n // call enter callback now\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data) || el.nodeType !== 1) {\n return rm()\n }\n\n /* istanbul ignore if */\n if (isDef(el._leaveCb)) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n\n var explicitLeaveDuration = toNumber(\n isObject(duration)\n ? duration.leave\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave () {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return\n }\n // record leaving element\n if (!vnode.data.show && el.parentNode) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n }\n beforeLeave && beforeLeave(el);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled) {\n addTransitionClass(el, leaveToClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n leave && leave(el, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\n \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n \"got \" + (JSON.stringify(val)) + \".\",\n vnode.context\n );\n } else if (isNaN(val)) {\n warn(\n \"<transition> explicit \" + name + \" duration is NaN - \" +\n 'the duration expression might be incorrect.',\n vnode.context\n );\n }\n}\n\nfunction isValidDuration (val) {\n return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n if (isUndef(fn)) {\n return false\n }\n var invokerFns = fn.fns;\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(\n Array.isArray(invokerFns)\n ? invokerFns[0]\n : invokerFns\n )\n } else {\n return (fn._length || fn.length) > 1\n }\n}\n\nfunction _enter (_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n}\n\nvar transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1 (vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n} : {};\n\nvar platformModules = [\n attrs,\n klass,\n events,\n domProps,\n style,\n transition\n];\n\n/* */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n}\n\nvar directive = {\n inserted: function inserted (el, binding, vnode, oldVnode) {\n if (vnode.tag === 'select') {\n // #6903\n if (oldVnode.elm && !oldVnode.elm._vOptions) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n directive.componentUpdated(el, binding, vnode);\n });\n } else {\n setSelected(el, binding, vnode.context);\n }\n el._vOptions = [].map.call(el.options, getValue);\n } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n el._vModifiers = binding.modifiers;\n if (!binding.modifiers.lazy) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n el.addEventListener('change', onCompositionEnd);\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n\n componentUpdated: function componentUpdated (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n var prevOptions = el._vOptions;\n var curOptions = el._vOptions = [].map.call(el.options, getValue);\n if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n // trigger change event if\n // no matching option found for at least one value\n var needReset = el.multiple\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n }\n};\n\nfunction setSelected (el, binding, vm) {\n actuallySetSelected(el, binding, vm);\n /* istanbul ignore if */\n if (isIE || isEdge) {\n setTimeout(function () {\n actuallySetSelected(el, binding, vm);\n }, 0);\n }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n if (isMultiple && !Array.isArray(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n vm\n );\n return\n }\n var selected, option;\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n return\n }\n }\n }\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n}\n\nfunction hasNoMatchingOption (value, options) {\n return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n return '_value' in option\n ? option._value\n : option.value\n}\n\nfunction onCompositionStart (e) {\n e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) { return }\n e.target.composing = false;\n trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\n\n/* */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n ? locateNode(vnode.componentInstance._vnode)\n : vnode\n}\n\nvar show = {\n bind: function bind (el, ref, vnode) {\n var value = ref.value;\n\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay =\n el.style.display === 'none' ? '' : el.style.display;\n if (value && transition$$1) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n\n update: function update (el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n\n /* istanbul ignore if */\n if (!value === !oldValue) { return }\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n if (transition$$1) {\n vnode.data.show = true;\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n\n unbind: function unbind (\n el,\n binding,\n vnode,\n oldVnode,\n isDestroy\n ) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n};\n\nvar platformDirectives = {\n model: directive,\n show: show\n};\n\n/* */\n\nvar transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children))\n } else {\n return vnode\n }\n}\n\nfunction extractTransitionData (comp) {\n var data = {};\n var options = comp.$options;\n // props\n for (var key in options.propsData) {\n data[key] = comp[key];\n }\n // events.\n // extract listeners and pass them directly to the transition methods\n var listeners = options._parentListeners;\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n return data\n}\n\nfunction placeholder (h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n })\n }\n}\n\nfunction hasParentTransition (vnode) {\n while ((vnode = vnode.parent)) {\n if (vnode.data.transition) {\n return true\n }\n }\n}\n\nfunction isSameChild (child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };\n\nvar isVShowDirective = function (d) { return d.name === 'show'; };\n\nvar Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n\n render: function render (h) {\n var this$1 = this;\n\n var children = this.$slots.default;\n if (!children) {\n return\n }\n\n // filter out text nodes (possible whitespaces)\n children = children.filter(isNotTextNode);\n /* istanbul ignore if */\n if (!children.length) {\n return\n }\n\n // warn multiple elements\n if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n warn(\n '<transition> can only be used on a single element. Use ' +\n '<transition-group> for lists.',\n this.$parent\n );\n }\n\n var mode = this.mode;\n\n // warn invalid mode\n if (process.env.NODE_ENV !== 'production' &&\n mode && mode !== 'in-out' && mode !== 'out-in'\n ) {\n warn(\n 'invalid <transition> mode: ' + mode,\n this.$parent\n );\n }\n\n var rawChild = children[0];\n\n // if this is a component root node and the component's\n // parent container node also has transition, skip.\n if (hasParentTransition(this.$vnode)) {\n return rawChild\n }\n\n // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n if (!child) {\n return rawChild\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild)\n }\n\n // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n var id = \"__transition-\" + (this._uid) + \"-\";\n child.key = child.key == null\n ? child.isComment\n ? id + 'comment'\n : id + child.tag\n : isPrimitive(child.key)\n ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n : child.key;\n\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild);\n\n // mark v-show\n // so that the transition module can hand over the control to the directive\n if (child.data.directives && child.data.directives.some(isVShowDirective)) {\n child.data.show = true;\n }\n\n if (\n oldChild &&\n oldChild.data &&\n !isSameChild(child, oldChild) &&\n !isAsyncPlaceholder(oldChild) &&\n // #6687 component root is a comment node\n !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)\n ) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild.data.transition = extend({}, data);\n // handle transition mode\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild)\n } else if (mode === 'in-out') {\n if (isAsyncPlaceholder(child)) {\n return oldRawChild\n }\n var delayedLeave;\n var performLeave = function () { delayedLeave(); };\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n }\n }\n\n return rawChild\n }\n};\n\n/* */\n\nvar props = extend({\n tag: String,\n moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n props: props,\n\n beforeMount: function beforeMount () {\n var this$1 = this;\n\n var update = this._update;\n this._update = function (vnode, hydrating) {\n var restoreActiveInstance = setActiveInstance(this$1);\n // force removing pass\n this$1.__patch__(\n this$1._vnode,\n this$1.kept,\n false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n this$1._vnode = this$1.kept;\n restoreActiveInstance();\n update.call(this$1, vnode, hydrating);\n };\n },\n\n render: function render (h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c\n ;(c.data || (c.data = {})).transition = transitionData;\n } else if (process.env.NODE_ENV !== 'production') {\n var opts = c.componentOptions;\n var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children)\n },\n\n updated: function updated () {\n var children = this.prevChildren;\n var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return\n }\n\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation);\n\n // force reflow to put everything in position\n // assign to this to avoid being removed in tree-shaking\n // $flow-disable-line\n this._reflow = document.body.offsetHeight;\n\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n if (e && e.target !== el) {\n return\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n\n methods: {\n hasMove: function hasMove (el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false\n }\n /* istanbul ignore if */\n if (this._hasMove) {\n return this._hasMove\n }\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n var clone = el.cloneNode();\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n }\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return (this._hasMove = info.hasTransform)\n }\n }\n};\n\nfunction callPendingCbs (c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n}\n\nfunction recordPosition (c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n}\n\nvar platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n};\n\n/* */\n\n// install platform specific utils\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents);\n\n// install platform patch function\nVue.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nif (inBrowser) {\n setTimeout(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue);\n } else if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test'\n ) {\n console[console.info ? 'info' : 'log'](\n 'Download the Vue Devtools extension for a better development experience:\\n' +\n 'https://github.com/vuejs/vue-devtools'\n );\n }\n }\n if (process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n config.productionTip !== false &&\n typeof console !== 'undefined'\n ) {\n console[console.info ? 'info' : 'log'](\n \"You are running Vue in development mode.\\n\" +\n \"Make sure to turn on production mode when deploying for production.\\n\" +\n \"See more tips at https://vuejs.org/guide/deployment.html\"\n );\n }\n }, 0);\n}\n\n/* */\n\nvar defaultTagRE = /\\{\\{((?:.|\\r?\\n)+?)\\}\\}/g;\nvar regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\n\nvar buildRegex = cached(function (delimiters) {\n var open = delimiters[0].replace(regexEscapeRE, '\\\\$&');\n var close = delimiters[1].replace(regexEscapeRE, '\\\\$&');\n return new RegExp(open + '((?:.|\\\\n)+?)' + close, 'g')\n});\n\n\n\nfunction parseText (\n text,\n delimiters\n) {\n var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;\n if (!tagRE.test(text)) {\n return\n }\n var tokens = [];\n var rawTokens = [];\n var lastIndex = tagRE.lastIndex = 0;\n var match, index, tokenValue;\n while ((match = tagRE.exec(text))) {\n index = match.index;\n // push text token\n if (index > lastIndex) {\n rawTokens.push(tokenValue = text.slice(lastIndex, index));\n tokens.push(JSON.stringify(tokenValue));\n }\n // tag token\n var exp = parseFilters(match[1].trim());\n tokens.push((\"_s(\" + exp + \")\"));\n rawTokens.push({ '@binding': exp });\n lastIndex = index + match[0].length;\n }\n if (lastIndex < text.length) {\n rawTokens.push(tokenValue = text.slice(lastIndex));\n tokens.push(JSON.stringify(tokenValue));\n }\n return {\n expression: tokens.join('+'),\n tokens: rawTokens\n }\n}\n\n/* */\n\nfunction transformNode (el, options) {\n var warn = options.warn || baseWarn;\n var staticClass = getAndRemoveAttr(el, 'class');\n if (process.env.NODE_ENV !== 'production' && staticClass) {\n var res = parseText(staticClass, options.delimiters);\n if (res) {\n warn(\n \"class=\\\"\" + staticClass + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div class=\"{{ val }}\">, use <div :class=\"val\">.',\n el.rawAttrsMap['class']\n );\n }\n }\n if (staticClass) {\n el.staticClass = JSON.stringify(staticClass);\n }\n var classBinding = getBindingAttr(el, 'class', false /* getStatic */);\n if (classBinding) {\n el.classBinding = classBinding;\n }\n}\n\nfunction genData (el) {\n var data = '';\n if (el.staticClass) {\n data += \"staticClass:\" + (el.staticClass) + \",\";\n }\n if (el.classBinding) {\n data += \"class:\" + (el.classBinding) + \",\";\n }\n return data\n}\n\nvar klass$1 = {\n staticKeys: ['staticClass'],\n transformNode: transformNode,\n genData: genData\n};\n\n/* */\n\nfunction transformNode$1 (el, options) {\n var warn = options.warn || baseWarn;\n var staticStyle = getAndRemoveAttr(el, 'style');\n if (staticStyle) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n var res = parseText(staticStyle, options.delimiters);\n if (res) {\n warn(\n \"style=\\\"\" + staticStyle + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div style=\"{{ val }}\">, use <div :style=\"val\">.',\n el.rawAttrsMap['style']\n );\n }\n }\n el.staticStyle = JSON.stringify(parseStyleText(staticStyle));\n }\n\n var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);\n if (styleBinding) {\n el.styleBinding = styleBinding;\n }\n}\n\nfunction genData$1 (el) {\n var data = '';\n if (el.staticStyle) {\n data += \"staticStyle:\" + (el.staticStyle) + \",\";\n }\n if (el.styleBinding) {\n data += \"style:(\" + (el.styleBinding) + \"),\";\n }\n return data\n}\n\nvar style$1 = {\n staticKeys: ['staticStyle'],\n transformNode: transformNode$1,\n genData: genData$1\n};\n\n/* */\n\nvar decoder;\n\nvar he = {\n decode: function decode (html) {\n decoder = decoder || document.createElement('div');\n decoder.innerHTML = html;\n return decoder.textContent\n }\n};\n\n/* */\n\nvar isUnaryTag = makeMap(\n 'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +\n 'link,meta,param,source,track,wbr'\n);\n\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\nvar canBeLeftOpenTag = makeMap(\n 'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'\n);\n\n// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3\n// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content\nvar isNonPhrasingTag = makeMap(\n 'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +\n 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +\n 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +\n 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +\n 'title,tr,track'\n);\n\n/**\n * Not type-checking this file because it's mostly vendor code.\n */\n\n// Regular Expressions for parsing tags and attributes\nvar attribute = /^\\s*([^\\s\"'<>\\/=]+)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\nvar dynamicArgAttribute = /^\\s*((?:v-[\\w-]+:|@|:|#)\\[[^=]+\\][^\\s\"'<>\\/=]*)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\nvar ncname = \"[a-zA-Z_][\\\\-\\\\.0-9_a-zA-Z\" + (unicodeRegExp.source) + \"]*\";\nvar qnameCapture = \"((?:\" + ncname + \"\\\\:)?\" + ncname + \")\";\nvar startTagOpen = new RegExp((\"^<\" + qnameCapture));\nvar startTagClose = /^\\s*(\\/?)>/;\nvar endTag = new RegExp((\"^<\\\\/\" + qnameCapture + \"[^>]*>\"));\nvar doctype = /^<!DOCTYPE [^>]+>/i;\n// #7298: escape - to avoid being pased as HTML comment when inlined in page\nvar comment = /^<!\\--/;\nvar conditionalComment = /^<!\\[/;\n\n// Special Elements (can contain anything)\nvar isPlainTextElement = makeMap('script,style,textarea', true);\nvar reCache = {};\n\nvar decodingMap = {\n '<': '<',\n '>': '>',\n '"': '\"',\n '&': '&',\n ' ': '\\n',\n '	': '\\t',\n ''': \"'\"\n};\nvar encodedAttr = /&(?:lt|gt|quot|amp|#39);/g;\nvar encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g;\n\n// #5992\nvar isIgnoreNewlineTag = makeMap('pre,textarea', true);\nvar shouldIgnoreFirstNewline = function (tag, html) { return tag && isIgnoreNewlineTag(tag) && html[0] === '\\n'; };\n\nfunction decodeAttr (value, shouldDecodeNewlines) {\n var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;\n return value.replace(re, function (match) { return decodingMap[match]; })\n}\n\nfunction parseHTML (html, options) {\n var stack = [];\n var expectHTML = options.expectHTML;\n var isUnaryTag$$1 = options.isUnaryTag || no;\n var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no;\n var index = 0;\n var last, lastTag;\n while (html) {\n last = html;\n // Make sure we're not in a plaintext content element like script/style\n if (!lastTag || !isPlainTextElement(lastTag)) {\n var textEnd = html.indexOf('<');\n if (textEnd === 0) {\n // Comment:\n if (comment.test(html)) {\n var commentEnd = html.indexOf('-->');\n\n if (commentEnd >= 0) {\n if (options.shouldKeepComment) {\n options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3);\n }\n advance(commentEnd + 3);\n continue\n }\n }\n\n // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment\n if (conditionalComment.test(html)) {\n var conditionalEnd = html.indexOf(']>');\n\n if (conditionalEnd >= 0) {\n advance(conditionalEnd + 2);\n continue\n }\n }\n\n // Doctype:\n var doctypeMatch = html.match(doctype);\n if (doctypeMatch) {\n advance(doctypeMatch[0].length);\n continue\n }\n\n // End tag:\n var endTagMatch = html.match(endTag);\n if (endTagMatch) {\n var curIndex = index;\n advance(endTagMatch[0].length);\n parseEndTag(endTagMatch[1], curIndex, index);\n continue\n }\n\n // Start tag:\n var startTagMatch = parseStartTag();\n if (startTagMatch) {\n handleStartTag(startTagMatch);\n if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) {\n advance(1);\n }\n continue\n }\n }\n\n var text = (void 0), rest = (void 0), next = (void 0);\n if (textEnd >= 0) {\n rest = html.slice(textEnd);\n while (\n !endTag.test(rest) &&\n !startTagOpen.test(rest) &&\n !comment.test(rest) &&\n !conditionalComment.test(rest)\n ) {\n // < in plain text, be forgiving and treat it as text\n next = rest.indexOf('<', 1);\n if (next < 0) { break }\n textEnd += next;\n rest = html.slice(textEnd);\n }\n text = html.substring(0, textEnd);\n }\n\n if (textEnd < 0) {\n text = html;\n }\n\n if (text) {\n advance(text.length);\n }\n\n if (options.chars && text) {\n options.chars(text, index - text.length, index);\n }\n } else {\n var endTagLength = 0;\n var stackedTag = lastTag.toLowerCase();\n var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\\\s\\\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));\n var rest$1 = html.replace(reStackedTag, function (all, text, endTag) {\n endTagLength = endTag.length;\n if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') {\n text = text\n .replace(/<!\\--([\\s\\S]*?)-->/g, '$1') // #7298\n .replace(/<!\\[CDATA\\[([\\s\\S]*?)]]>/g, '$1');\n }\n if (shouldIgnoreFirstNewline(stackedTag, text)) {\n text = text.slice(1);\n }\n if (options.chars) {\n options.chars(text);\n }\n return ''\n });\n index += html.length - rest$1.length;\n html = rest$1;\n parseEndTag(stackedTag, index - endTagLength, index);\n }\n\n if (html === last) {\n options.chars && options.chars(html);\n if (process.env.NODE_ENV !== 'production' && !stack.length && options.warn) {\n options.warn((\"Mal-formatted tag at end of template: \\\"\" + html + \"\\\"\"), { start: index + html.length });\n }\n break\n }\n }\n\n // Clean up any remaining tags\n parseEndTag();\n\n function advance (n) {\n index += n;\n html = html.substring(n);\n }\n\n function parseStartTag () {\n var start = html.match(startTagOpen);\n if (start) {\n var match = {\n tagName: start[1],\n attrs: [],\n start: index\n };\n advance(start[0].length);\n var end, attr;\n while (!(end = html.match(startTagClose)) && (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {\n attr.start = index;\n advance(attr[0].length);\n attr.end = index;\n match.attrs.push(attr);\n }\n if (end) {\n match.unarySlash = end[1];\n advance(end[0].length);\n match.end = index;\n return match\n }\n }\n }\n\n function handleStartTag (match) {\n var tagName = match.tagName;\n var unarySlash = match.unarySlash;\n\n if (expectHTML) {\n if (lastTag === 'p' && isNonPhrasingTag(tagName)) {\n parseEndTag(lastTag);\n }\n if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) {\n parseEndTag(tagName);\n }\n }\n\n var unary = isUnaryTag$$1(tagName) || !!unarySlash;\n\n var l = match.attrs.length;\n var attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n var args = match.attrs[i];\n var value = args[3] || args[4] || args[5] || '';\n var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href'\n ? options.shouldDecodeNewlinesForHref\n : options.shouldDecodeNewlines;\n attrs[i] = {\n name: args[1],\n value: decodeAttr(value, shouldDecodeNewlines)\n };\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n attrs[i].start = args.start + args[0].match(/^\\s*/).length;\n attrs[i].end = args.end;\n }\n }\n\n if (!unary) {\n stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs, start: match.start, end: match.end });\n lastTag = tagName;\n }\n\n if (options.start) {\n options.start(tagName, attrs, unary, match.start, match.end);\n }\n }\n\n function parseEndTag (tagName, start, end) {\n var pos, lowerCasedTagName;\n if (start == null) { start = index; }\n if (end == null) { end = index; }\n\n // Find the closest opened tag of the same type\n if (tagName) {\n lowerCasedTagName = tagName.toLowerCase();\n for (pos = stack.length - 1; pos >= 0; pos--) {\n if (stack[pos].lowerCasedTag === lowerCasedTagName) {\n break\n }\n }\n } else {\n // If no tag name is provided, clean shop\n pos = 0;\n }\n\n if (pos >= 0) {\n // Close all the open elements, up the stack\n for (var i = stack.length - 1; i >= pos; i--) {\n if (process.env.NODE_ENV !== 'production' &&\n (i > pos || !tagName) &&\n options.warn\n ) {\n options.warn(\n (\"tag <\" + (stack[i].tag) + \"> has no matching end tag.\"),\n { start: stack[i].start, end: stack[i].end }\n );\n }\n if (options.end) {\n options.end(stack[i].tag, start, end);\n }\n }\n\n // Remove the open elements from the stack\n stack.length = pos;\n lastTag = pos && stack[pos - 1].tag;\n } else if (lowerCasedTagName === 'br') {\n if (options.start) {\n options.start(tagName, [], true, start, end);\n }\n } else if (lowerCasedTagName === 'p') {\n if (options.start) {\n options.start(tagName, [], false, start, end);\n }\n if (options.end) {\n options.end(tagName, start, end);\n }\n }\n }\n}\n\n/* */\n\nvar onRE = /^@|^v-on:/;\nvar dirRE = /^v-|^@|^:/;\nvar forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/;\nvar forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\nvar stripParensRE = /^\\(|\\)$/g;\nvar dynamicArgRE = /^\\[.*\\]$/;\n\nvar argRE = /:(.*)$/;\nvar bindRE = /^:|^\\.|^v-bind:/;\nvar modifierRE = /\\.[^.\\]]+(?=[^\\]]*$)/g;\n\nvar slotRE = /^v-slot(:|$)|^#/;\n\nvar lineBreakRE = /[\\r\\n]/;\nvar whitespaceRE$1 = /\\s+/g;\n\nvar invalidAttributeRE = /[\\s\"'<>\\/=]/;\n\nvar decodeHTMLCached = cached(he.decode);\n\nvar emptySlotScopeToken = \"_empty_\";\n\n// configurable state\nvar warn$2;\nvar delimiters;\nvar transforms;\nvar preTransforms;\nvar postTransforms;\nvar platformIsPreTag;\nvar platformMustUseProp;\nvar platformGetTagNamespace;\nvar maybeComponent;\n\nfunction createASTElement (\n tag,\n attrs,\n parent\n) {\n return {\n type: 1,\n tag: tag,\n attrsList: attrs,\n attrsMap: makeAttrsMap(attrs),\n rawAttrsMap: {},\n parent: parent,\n children: []\n }\n}\n\n/**\n * Convert HTML string to AST.\n */\nfunction parse (\n template,\n options\n) {\n warn$2 = options.warn || baseWarn;\n\n platformIsPreTag = options.isPreTag || no;\n platformMustUseProp = options.mustUseProp || no;\n platformGetTagNamespace = options.getTagNamespace || no;\n var isReservedTag = options.isReservedTag || no;\n maybeComponent = function (el) { return !!el.component || !isReservedTag(el.tag); };\n\n transforms = pluckModuleFunction(options.modules, 'transformNode');\n preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');\n postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');\n\n delimiters = options.delimiters;\n\n var stack = [];\n var preserveWhitespace = options.preserveWhitespace !== false;\n var whitespaceOption = options.whitespace;\n var root;\n var currentParent;\n var inVPre = false;\n var inPre = false;\n var warned = false;\n\n function warnOnce (msg, range) {\n if (!warned) {\n warned = true;\n warn$2(msg, range);\n }\n }\n\n function closeElement (element) {\n trimEndingWhitespace(element);\n if (!inVPre && !element.processed) {\n element = processElement(element, options);\n }\n // tree management\n if (!stack.length && element !== root) {\n // allow root elements with v-if, v-else-if and v-else\n if (root.if && (element.elseif || element.else)) {\n if (process.env.NODE_ENV !== 'production') {\n checkRootConstraints(element);\n }\n addIfCondition(root, {\n exp: element.elseif,\n block: element\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warnOnce(\n \"Component template should contain exactly one root element. \" +\n \"If you are using v-if on multiple elements, \" +\n \"use v-else-if to chain them instead.\",\n { start: element.start }\n );\n }\n }\n if (currentParent && !element.forbidden) {\n if (element.elseif || element.else) {\n processIfConditions(element, currentParent);\n } else {\n if (element.slotScope) {\n // scoped slot\n // keep it in the children list so that v-else(-if) conditions can\n // find it as the prev node.\n var name = element.slotTarget || '\"default\"'\n ;(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;\n }\n currentParent.children.push(element);\n element.parent = currentParent;\n }\n }\n\n // final children cleanup\n // filter out scoped slots\n element.children = element.children.filter(function (c) { return !(c).slotScope; });\n // remove trailing whitespace node again\n trimEndingWhitespace(element);\n\n // check pre state\n if (element.pre) {\n inVPre = false;\n }\n if (platformIsPreTag(element.tag)) {\n inPre = false;\n }\n // apply post-transforms\n for (var i = 0; i < postTransforms.length; i++) {\n postTransforms[i](element, options);\n }\n }\n\n function trimEndingWhitespace (el) {\n // remove trailing whitespace node\n if (!inPre) {\n var lastNode;\n while (\n (lastNode = el.children[el.children.length - 1]) &&\n lastNode.type === 3 &&\n lastNode.text === ' '\n ) {\n el.children.pop();\n }\n }\n }\n\n function checkRootConstraints (el) {\n if (el.tag === 'slot' || el.tag === 'template') {\n warnOnce(\n \"Cannot use <\" + (el.tag) + \"> as component root element because it may \" +\n 'contain multiple nodes.',\n { start: el.start }\n );\n }\n if (el.attrsMap.hasOwnProperty('v-for')) {\n warnOnce(\n 'Cannot use v-for on stateful component root element because ' +\n 'it renders multiple elements.',\n el.rawAttrsMap['v-for']\n );\n }\n }\n\n parseHTML(template, {\n warn: warn$2,\n expectHTML: options.expectHTML,\n isUnaryTag: options.isUnaryTag,\n canBeLeftOpenTag: options.canBeLeftOpenTag,\n shouldDecodeNewlines: options.shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,\n shouldKeepComment: options.comments,\n outputSourceRange: options.outputSourceRange,\n start: function start (tag, attrs, unary, start$1, end) {\n // check namespace.\n // inherit parent ns if there is one\n var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);\n\n // handle IE svg bug\n /* istanbul ignore if */\n if (isIE && ns === 'svg') {\n attrs = guardIESVGBug(attrs);\n }\n\n var element = createASTElement(tag, attrs, currentParent);\n if (ns) {\n element.ns = ns;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (options.outputSourceRange) {\n element.start = start$1;\n element.end = end;\n element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {\n cumulated[attr.name] = attr;\n return cumulated\n }, {});\n }\n attrs.forEach(function (attr) {\n if (invalidAttributeRE.test(attr.name)) {\n warn$2(\n \"Invalid dynamic argument expression: attribute names cannot contain \" +\n \"spaces, quotes, <, >, / or =.\",\n {\n start: attr.start + attr.name.indexOf(\"[\"),\n end: attr.start + attr.name.length\n }\n );\n }\n });\n }\n\n if (isForbiddenTag(element) && !isServerRendering()) {\n element.forbidden = true;\n process.env.NODE_ENV !== 'production' && warn$2(\n 'Templates should only be responsible for mapping the state to the ' +\n 'UI. Avoid placing tags with side-effects in your templates, such as ' +\n \"<\" + tag + \">\" + ', as they will not be parsed.',\n { start: element.start }\n );\n }\n\n // apply pre-transforms\n for (var i = 0; i < preTransforms.length; i++) {\n element = preTransforms[i](element, options) || element;\n }\n\n if (!inVPre) {\n processPre(element);\n if (element.pre) {\n inVPre = true;\n }\n }\n if (platformIsPreTag(element.tag)) {\n inPre = true;\n }\n if (inVPre) {\n processRawAttrs(element);\n } else if (!element.processed) {\n // structural directives\n processFor(element);\n processIf(element);\n processOnce(element);\n }\n\n if (!root) {\n root = element;\n if (process.env.NODE_ENV !== 'production') {\n checkRootConstraints(root);\n }\n }\n\n if (!unary) {\n currentParent = element;\n stack.push(element);\n } else {\n closeElement(element);\n }\n },\n\n end: function end (tag, start, end$1) {\n var element = stack[stack.length - 1];\n // pop stack\n stack.length -= 1;\n currentParent = stack[stack.length - 1];\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n element.end = end$1;\n }\n closeElement(element);\n },\n\n chars: function chars (text, start, end) {\n if (!currentParent) {\n if (process.env.NODE_ENV !== 'production') {\n if (text === template) {\n warnOnce(\n 'Component template requires a root element, rather than just text.',\n { start: start }\n );\n } else if ((text = text.trim())) {\n warnOnce(\n (\"text \\\"\" + text + \"\\\" outside root element will be ignored.\"),\n { start: start }\n );\n }\n }\n return\n }\n // IE textarea placeholder bug\n /* istanbul ignore if */\n if (isIE &&\n currentParent.tag === 'textarea' &&\n currentParent.attrsMap.placeholder === text\n ) {\n return\n }\n var children = currentParent.children;\n if (inPre || text.trim()) {\n text = isTextTag(currentParent) ? text : decodeHTMLCached(text);\n } else if (!children.length) {\n // remove the whitespace-only node right after an opening tag\n text = '';\n } else if (whitespaceOption) {\n if (whitespaceOption === 'condense') {\n // in condense mode, remove the whitespace node if it contains\n // line break, otherwise condense to a single space\n text = lineBreakRE.test(text) ? '' : ' ';\n } else {\n text = ' ';\n }\n } else {\n text = preserveWhitespace ? ' ' : '';\n }\n if (text) {\n if (!inPre && whitespaceOption === 'condense') {\n // condense consecutive whitespaces into single space\n text = text.replace(whitespaceRE$1, ' ');\n }\n var res;\n var child;\n if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {\n child = {\n type: 2,\n expression: res.expression,\n tokens: res.tokens,\n text: text\n };\n } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') {\n child = {\n type: 3,\n text: text\n };\n }\n if (child) {\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n child.start = start;\n child.end = end;\n }\n children.push(child);\n }\n }\n },\n comment: function comment (text, start, end) {\n // adding anyting as a sibling to the root node is forbidden\n // comments should still be allowed, but ignored\n if (currentParent) {\n var child = {\n type: 3,\n text: text,\n isComment: true\n };\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n child.start = start;\n child.end = end;\n }\n currentParent.children.push(child);\n }\n }\n });\n return root\n}\n\nfunction processPre (el) {\n if (getAndRemoveAttr(el, 'v-pre') != null) {\n el.pre = true;\n }\n}\n\nfunction processRawAttrs (el) {\n var list = el.attrsList;\n var len = list.length;\n if (len) {\n var attrs = el.attrs = new Array(len);\n for (var i = 0; i < len; i++) {\n attrs[i] = {\n name: list[i].name,\n value: JSON.stringify(list[i].value)\n };\n if (list[i].start != null) {\n attrs[i].start = list[i].start;\n attrs[i].end = list[i].end;\n }\n }\n } else if (!el.pre) {\n // non root node in pre blocks with no attributes\n el.plain = true;\n }\n}\n\nfunction processElement (\n element,\n options\n) {\n processKey(element);\n\n // determine whether this is a plain element after\n // removing structural attributes\n element.plain = (\n !element.key &&\n !element.scopedSlots &&\n !element.attrsList.length\n );\n\n processRef(element);\n processSlotContent(element);\n processSlotOutlet(element);\n processComponent(element);\n for (var i = 0; i < transforms.length; i++) {\n element = transforms[i](element, options) || element;\n }\n processAttrs(element);\n return element\n}\n\nfunction processKey (el) {\n var exp = getBindingAttr(el, 'key');\n if (exp) {\n if (process.env.NODE_ENV !== 'production') {\n if (el.tag === 'template') {\n warn$2(\n \"<template> cannot be keyed. Place the key on real elements instead.\",\n getRawBindingAttr(el, 'key')\n );\n }\n if (el.for) {\n var iterator = el.iterator2 || el.iterator1;\n var parent = el.parent;\n if (iterator && iterator === exp && parent && parent.tag === 'transition-group') {\n warn$2(\n \"Do not use v-for index as key on <transition-group> children, \" +\n \"this is the same as not using keys.\",\n getRawBindingAttr(el, 'key'),\n true /* tip */\n );\n }\n }\n }\n el.key = exp;\n }\n}\n\nfunction processRef (el) {\n var ref = getBindingAttr(el, 'ref');\n if (ref) {\n el.ref = ref;\n el.refInFor = checkInFor(el);\n }\n}\n\nfunction processFor (el) {\n var exp;\n if ((exp = getAndRemoveAttr(el, 'v-for'))) {\n var res = parseFor(exp);\n if (res) {\n extend(el, res);\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n (\"Invalid v-for expression: \" + exp),\n el.rawAttrsMap['v-for']\n );\n }\n }\n}\n\n\n\nfunction parseFor (exp) {\n var inMatch = exp.match(forAliasRE);\n if (!inMatch) { return }\n var res = {};\n res.for = inMatch[2].trim();\n var alias = inMatch[1].trim().replace(stripParensRE, '');\n var iteratorMatch = alias.match(forIteratorRE);\n if (iteratorMatch) {\n res.alias = alias.replace(forIteratorRE, '').trim();\n res.iterator1 = iteratorMatch[1].trim();\n if (iteratorMatch[2]) {\n res.iterator2 = iteratorMatch[2].trim();\n }\n } else {\n res.alias = alias;\n }\n return res\n}\n\nfunction processIf (el) {\n var exp = getAndRemoveAttr(el, 'v-if');\n if (exp) {\n el.if = exp;\n addIfCondition(el, {\n exp: exp,\n block: el\n });\n } else {\n if (getAndRemoveAttr(el, 'v-else') != null) {\n el.else = true;\n }\n var elseif = getAndRemoveAttr(el, 'v-else-if');\n if (elseif) {\n el.elseif = elseif;\n }\n }\n}\n\nfunction processIfConditions (el, parent) {\n var prev = findPrevElement(parent.children);\n if (prev && prev.if) {\n addIfCondition(prev, {\n exp: el.elseif,\n block: el\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n \"v-\" + (el.elseif ? ('else-if=\"' + el.elseif + '\"') : 'else') + \" \" +\n \"used on element <\" + (el.tag) + \"> without corresponding v-if.\",\n el.rawAttrsMap[el.elseif ? 'v-else-if' : 'v-else']\n );\n }\n}\n\nfunction findPrevElement (children) {\n var i = children.length;\n while (i--) {\n if (children[i].type === 1) {\n return children[i]\n } else {\n if (process.env.NODE_ENV !== 'production' && children[i].text !== ' ') {\n warn$2(\n \"text \\\"\" + (children[i].text.trim()) + \"\\\" between v-if and v-else(-if) \" +\n \"will be ignored.\",\n children[i]\n );\n }\n children.pop();\n }\n }\n}\n\nfunction addIfCondition (el, condition) {\n if (!el.ifConditions) {\n el.ifConditions = [];\n }\n el.ifConditions.push(condition);\n}\n\nfunction processOnce (el) {\n var once$$1 = getAndRemoveAttr(el, 'v-once');\n if (once$$1 != null) {\n el.once = true;\n }\n}\n\n// handle content being passed to a component as slot,\n// e.g. <template slot=\"xxx\">, <div slot-scope=\"xxx\">\nfunction processSlotContent (el) {\n var slotScope;\n if (el.tag === 'template') {\n slotScope = getAndRemoveAttr(el, 'scope');\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && slotScope) {\n warn$2(\n \"the \\\"scope\\\" attribute for scoped slots have been deprecated and \" +\n \"replaced by \\\"slot-scope\\\" since 2.5. The new \\\"slot-scope\\\" attribute \" +\n \"can also be used on plain elements in addition to <template> to \" +\n \"denote scoped slots.\",\n el.rawAttrsMap['scope'],\n true\n );\n }\n el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');\n } else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && el.attrsMap['v-for']) {\n warn$2(\n \"Ambiguous combined usage of slot-scope and v-for on <\" + (el.tag) + \"> \" +\n \"(v-for takes higher priority). Use a wrapper <template> for the \" +\n \"scoped slot to make it clearer.\",\n el.rawAttrsMap['slot-scope'],\n true\n );\n }\n el.slotScope = slotScope;\n }\n\n // slot=\"xxx\"\n var slotTarget = getBindingAttr(el, 'slot');\n if (slotTarget) {\n el.slotTarget = slotTarget === '\"\"' ? '\"default\"' : slotTarget;\n el.slotTargetDynamic = !!(el.attrsMap[':slot'] || el.attrsMap['v-bind:slot']);\n // preserve slot as an attribute for native shadow DOM compat\n // only for non-scoped slots.\n if (el.tag !== 'template' && !el.slotScope) {\n addAttr(el, 'slot', slotTarget, getRawBindingAttr(el, 'slot'));\n }\n }\n\n // 2.6 v-slot syntax\n {\n if (el.tag === 'template') {\n // v-slot on <template>\n var slotBinding = getAndRemoveAttrByRegex(el, slotRE);\n if (slotBinding) {\n if (process.env.NODE_ENV !== 'production') {\n if (el.slotTarget || el.slotScope) {\n warn$2(\n \"Unexpected mixed usage of different slot syntaxes.\",\n el\n );\n }\n if (el.parent && !maybeComponent(el.parent)) {\n warn$2(\n \"<template v-slot> can only appear at the root level inside \" +\n \"the receiving the component\",\n el\n );\n }\n }\n var ref = getSlotName(slotBinding);\n var name = ref.name;\n var dynamic = ref.dynamic;\n el.slotTarget = name;\n el.slotTargetDynamic = dynamic;\n el.slotScope = slotBinding.value || emptySlotScopeToken; // force it into a scoped slot for perf\n }\n } else {\n // v-slot on component, denotes default slot\n var slotBinding$1 = getAndRemoveAttrByRegex(el, slotRE);\n if (slotBinding$1) {\n if (process.env.NODE_ENV !== 'production') {\n if (!maybeComponent(el)) {\n warn$2(\n \"v-slot can only be used on components or <template>.\",\n slotBinding$1\n );\n }\n if (el.slotScope || el.slotTarget) {\n warn$2(\n \"Unexpected mixed usage of different slot syntaxes.\",\n el\n );\n }\n if (el.scopedSlots) {\n warn$2(\n \"To avoid scope ambiguity, the default slot should also use \" +\n \"<template> syntax when there are other named slots.\",\n slotBinding$1\n );\n }\n }\n // add the component's children to its default slot\n var slots = el.scopedSlots || (el.scopedSlots = {});\n var ref$1 = getSlotName(slotBinding$1);\n var name$1 = ref$1.name;\n var dynamic$1 = ref$1.dynamic;\n var slotContainer = slots[name$1] = createASTElement('template', [], el);\n slotContainer.slotTarget = name$1;\n slotContainer.slotTargetDynamic = dynamic$1;\n slotContainer.children = el.children.filter(function (c) {\n if (!c.slotScope) {\n c.parent = slotContainer;\n return true\n }\n });\n slotContainer.slotScope = slotBinding$1.value || emptySlotScopeToken;\n // remove children as they are returned from scopedSlots now\n el.children = [];\n // mark el non-plain so data gets generated\n el.plain = false;\n }\n }\n }\n}\n\nfunction getSlotName (binding) {\n var name = binding.name.replace(slotRE, '');\n if (!name) {\n if (binding.name[0] !== '#') {\n name = 'default';\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n \"v-slot shorthand syntax requires a slot name.\",\n binding\n );\n }\n }\n return dynamicArgRE.test(name)\n // dynamic [name]\n ? { name: name.slice(1, -1), dynamic: true }\n // static name\n : { name: (\"\\\"\" + name + \"\\\"\"), dynamic: false }\n}\n\n// handle <slot/> outlets\nfunction processSlotOutlet (el) {\n if (el.tag === 'slot') {\n el.slotName = getBindingAttr(el, 'name');\n if (process.env.NODE_ENV !== 'production' && el.key) {\n warn$2(\n \"`key` does not work on <slot> because slots are abstract outlets \" +\n \"and can possibly expand into multiple elements. \" +\n \"Use the key on a wrapping element instead.\",\n getRawBindingAttr(el, 'key')\n );\n }\n }\n}\n\nfunction processComponent (el) {\n var binding;\n if ((binding = getBindingAttr(el, 'is'))) {\n el.component = binding;\n }\n if (getAndRemoveAttr(el, 'inline-template') != null) {\n el.inlineTemplate = true;\n }\n}\n\nfunction processAttrs (el) {\n var list = el.attrsList;\n var i, l, name, rawName, value, modifiers, syncGen, isDynamic;\n for (i = 0, l = list.length; i < l; i++) {\n name = rawName = list[i].name;\n value = list[i].value;\n if (dirRE.test(name)) {\n // mark element as dynamic\n el.hasBindings = true;\n // modifiers\n modifiers = parseModifiers(name.replace(dirRE, ''));\n // support .foo shorthand syntax for the .prop modifier\n if (modifiers) {\n name = name.replace(modifierRE, '');\n }\n if (bindRE.test(name)) { // v-bind\n name = name.replace(bindRE, '');\n value = parseFilters(value);\n isDynamic = dynamicArgRE.test(name);\n if (isDynamic) {\n name = name.slice(1, -1);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n value.trim().length === 0\n ) {\n warn$2(\n (\"The value for a v-bind expression cannot be empty. Found in \\\"v-bind:\" + name + \"\\\"\")\n );\n }\n if (modifiers) {\n if (modifiers.prop && !isDynamic) {\n name = camelize(name);\n if (name === 'innerHtml') { name = 'innerHTML'; }\n }\n if (modifiers.camel && !isDynamic) {\n name = camelize(name);\n }\n if (modifiers.sync) {\n syncGen = genAssignmentCode(value, \"$event\");\n if (!isDynamic) {\n addHandler(\n el,\n (\"update:\" + (camelize(name))),\n syncGen,\n null,\n false,\n warn$2,\n list[i]\n );\n if (hyphenate(name) !== camelize(name)) {\n addHandler(\n el,\n (\"update:\" + (hyphenate(name))),\n syncGen,\n null,\n false,\n warn$2,\n list[i]\n );\n }\n } else {\n // handler w/ dynamic event name\n addHandler(\n el,\n (\"\\\"update:\\\"+(\" + name + \")\"),\n syncGen,\n null,\n false,\n warn$2,\n list[i],\n true // dynamic\n );\n }\n }\n }\n if ((modifiers && modifiers.prop) || (\n !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name)\n )) {\n addProp(el, name, value, list[i], isDynamic);\n } else {\n addAttr(el, name, value, list[i], isDynamic);\n }\n } else if (onRE.test(name)) { // v-on\n name = name.replace(onRE, '');\n isDynamic = dynamicArgRE.test(name);\n if (isDynamic) {\n name = name.slice(1, -1);\n }\n addHandler(el, name, value, modifiers, false, warn$2, list[i], isDynamic);\n } else { // normal directives\n name = name.replace(dirRE, '');\n // parse arg\n var argMatch = name.match(argRE);\n var arg = argMatch && argMatch[1];\n isDynamic = false;\n if (arg) {\n name = name.slice(0, -(arg.length + 1));\n if (dynamicArgRE.test(arg)) {\n arg = arg.slice(1, -1);\n isDynamic = true;\n }\n }\n addDirective(el, name, rawName, value, arg, isDynamic, modifiers, list[i]);\n if (process.env.NODE_ENV !== 'production' && name === 'model') {\n checkForAliasModel(el, value);\n }\n }\n } else {\n // literal attribute\n if (process.env.NODE_ENV !== 'production') {\n var res = parseText(value, delimiters);\n if (res) {\n warn$2(\n name + \"=\\\"\" + value + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div id=\"{{ val }}\">, use <div :id=\"val\">.',\n list[i]\n );\n }\n }\n addAttr(el, name, JSON.stringify(value), list[i]);\n // #6887 firefox doesn't update muted state if set via attribute\n // even immediately after element creation\n if (!el.component &&\n name === 'muted' &&\n platformMustUseProp(el.tag, el.attrsMap.type, name)) {\n addProp(el, name, 'true', list[i]);\n }\n }\n }\n}\n\nfunction checkInFor (el) {\n var parent = el;\n while (parent) {\n if (parent.for !== undefined) {\n return true\n }\n parent = parent.parent;\n }\n return false\n}\n\nfunction parseModifiers (name) {\n var match = name.match(modifierRE);\n if (match) {\n var ret = {};\n match.forEach(function (m) { ret[m.slice(1)] = true; });\n return ret\n }\n}\n\nfunction makeAttrsMap (attrs) {\n var map = {};\n for (var i = 0, l = attrs.length; i < l; i++) {\n if (\n process.env.NODE_ENV !== 'production' &&\n map[attrs[i].name] && !isIE && !isEdge\n ) {\n warn$2('duplicate attribute: ' + attrs[i].name, attrs[i]);\n }\n map[attrs[i].name] = attrs[i].value;\n }\n return map\n}\n\n// for script (e.g. type=\"x/template\") or style, do not decode content\nfunction isTextTag (el) {\n return el.tag === 'script' || el.tag === 'style'\n}\n\nfunction isForbiddenTag (el) {\n return (\n el.tag === 'style' ||\n (el.tag === 'script' && (\n !el.attrsMap.type ||\n el.attrsMap.type === 'text/javascript'\n ))\n )\n}\n\nvar ieNSBug = /^xmlns:NS\\d+/;\nvar ieNSPrefix = /^NS\\d+:/;\n\n/* istanbul ignore next */\nfunction guardIESVGBug (attrs) {\n var res = [];\n for (var i = 0; i < attrs.length; i++) {\n var attr = attrs[i];\n if (!ieNSBug.test(attr.name)) {\n attr.name = attr.name.replace(ieNSPrefix, '');\n res.push(attr);\n }\n }\n return res\n}\n\nfunction checkForAliasModel (el, value) {\n var _el = el;\n while (_el) {\n if (_el.for && _el.alias === value) {\n warn$2(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"You are binding v-model directly to a v-for iteration alias. \" +\n \"This will not be able to modify the v-for source array because \" +\n \"writing to the alias is like modifying a function local variable. \" +\n \"Consider using an array of objects and use v-model on an object property instead.\",\n el.rawAttrsMap['v-model']\n );\n }\n _el = _el.parent;\n }\n}\n\n/* */\n\nfunction preTransformNode (el, options) {\n if (el.tag === 'input') {\n var map = el.attrsMap;\n if (!map['v-model']) {\n return\n }\n\n var typeBinding;\n if (map[':type'] || map['v-bind:type']) {\n typeBinding = getBindingAttr(el, 'type');\n }\n if (!map.type && !typeBinding && map['v-bind']) {\n typeBinding = \"(\" + (map['v-bind']) + \").type\";\n }\n\n if (typeBinding) {\n var ifCondition = getAndRemoveAttr(el, 'v-if', true);\n var ifConditionExtra = ifCondition ? (\"&&(\" + ifCondition + \")\") : \"\";\n var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;\n var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true);\n // 1. checkbox\n var branch0 = cloneASTElement(el);\n // process for on the main node\n processFor(branch0);\n addRawAttr(branch0, 'type', 'checkbox');\n processElement(branch0, options);\n branch0.processed = true; // prevent it from double-processed\n branch0.if = \"(\" + typeBinding + \")==='checkbox'\" + ifConditionExtra;\n addIfCondition(branch0, {\n exp: branch0.if,\n block: branch0\n });\n // 2. add radio else-if condition\n var branch1 = cloneASTElement(el);\n getAndRemoveAttr(branch1, 'v-for', true);\n addRawAttr(branch1, 'type', 'radio');\n processElement(branch1, options);\n addIfCondition(branch0, {\n exp: \"(\" + typeBinding + \")==='radio'\" + ifConditionExtra,\n block: branch1\n });\n // 3. other\n var branch2 = cloneASTElement(el);\n getAndRemoveAttr(branch2, 'v-for', true);\n addRawAttr(branch2, ':type', typeBinding);\n processElement(branch2, options);\n addIfCondition(branch0, {\n exp: ifCondition,\n block: branch2\n });\n\n if (hasElse) {\n branch0.else = true;\n } else if (elseIfCondition) {\n branch0.elseif = elseIfCondition;\n }\n\n return branch0\n }\n }\n}\n\nfunction cloneASTElement (el) {\n return createASTElement(el.tag, el.attrsList.slice(), el.parent)\n}\n\nvar model$1 = {\n preTransformNode: preTransformNode\n};\n\nvar modules$1 = [\n klass$1,\n style$1,\n model$1\n];\n\n/* */\n\nfunction text (el, dir) {\n if (dir.value) {\n addProp(el, 'textContent', (\"_s(\" + (dir.value) + \")\"), dir);\n }\n}\n\n/* */\n\nfunction html (el, dir) {\n if (dir.value) {\n addProp(el, 'innerHTML', (\"_s(\" + (dir.value) + \")\"), dir);\n }\n}\n\nvar directives$1 = {\n model: model,\n text: text,\n html: html\n};\n\n/* */\n\nvar baseOptions = {\n expectHTML: true,\n modules: modules$1,\n directives: directives$1,\n isPreTag: isPreTag,\n isUnaryTag: isUnaryTag,\n mustUseProp: mustUseProp,\n canBeLeftOpenTag: canBeLeftOpenTag,\n isReservedTag: isReservedTag,\n getTagNamespace: getTagNamespace,\n staticKeys: genStaticKeys(modules$1)\n};\n\n/* */\n\nvar isStaticKey;\nvar isPlatformReservedTag;\n\nvar genStaticKeysCached = cached(genStaticKeys$1);\n\n/**\n * Goal of the optimizer: walk the generated template AST tree\n * and detect sub-trees that are purely static, i.e. parts of\n * the DOM that never needs to change.\n *\n * Once we detect these sub-trees, we can:\n *\n * 1. Hoist them into constants, so that we no longer need to\n * create fresh nodes for them on each re-render;\n * 2. Completely skip them in the patching process.\n */\nfunction optimize (root, options) {\n if (!root) { return }\n isStaticKey = genStaticKeysCached(options.staticKeys || '');\n isPlatformReservedTag = options.isReservedTag || no;\n // first pass: mark all non-static nodes.\n markStatic$1(root);\n // second pass: mark static roots.\n markStaticRoots(root, false);\n}\n\nfunction genStaticKeys$1 (keys) {\n return makeMap(\n 'type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' +\n (keys ? ',' + keys : '')\n )\n}\n\nfunction markStatic$1 (node) {\n node.static = isStatic(node);\n if (node.type === 1) {\n // do not make component slot content static. this avoids\n // 1. components not able to mutate slot nodes\n // 2. static slot content fails for hot-reloading\n if (\n !isPlatformReservedTag(node.tag) &&\n node.tag !== 'slot' &&\n node.attrsMap['inline-template'] == null\n ) {\n return\n }\n for (var i = 0, l = node.children.length; i < l; i++) {\n var child = node.children[i];\n markStatic$1(child);\n if (!child.static) {\n node.static = false;\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n var block = node.ifConditions[i$1].block;\n markStatic$1(block);\n if (!block.static) {\n node.static = false;\n }\n }\n }\n }\n}\n\nfunction markStaticRoots (node, isInFor) {\n if (node.type === 1) {\n if (node.static || node.once) {\n node.staticInFor = isInFor;\n }\n // For a node to qualify as a static root, it should have children that\n // are not just static text. Otherwise the cost of hoisting out will\n // outweigh the benefits and it's better off to just always render it fresh.\n if (node.static && node.children.length && !(\n node.children.length === 1 &&\n node.children[0].type === 3\n )) {\n node.staticRoot = true;\n return\n } else {\n node.staticRoot = false;\n }\n if (node.children) {\n for (var i = 0, l = node.children.length; i < l; i++) {\n markStaticRoots(node.children[i], isInFor || !!node.for);\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n markStaticRoots(node.ifConditions[i$1].block, isInFor);\n }\n }\n }\n}\n\nfunction isStatic (node) {\n if (node.type === 2) { // expression\n return false\n }\n if (node.type === 3) { // text\n return true\n }\n return !!(node.pre || (\n !node.hasBindings && // no dynamic bindings\n !node.if && !node.for && // not v-if or v-for or v-else\n !isBuiltInTag(node.tag) && // not a built-in\n isPlatformReservedTag(node.tag) && // not a component\n !isDirectChildOfTemplateFor(node) &&\n Object.keys(node).every(isStaticKey)\n ))\n}\n\nfunction isDirectChildOfTemplateFor (node) {\n while (node.parent) {\n node = node.parent;\n if (node.tag !== 'template') {\n return false\n }\n if (node.for) {\n return true\n }\n }\n return false\n}\n\n/* */\n\nvar fnExpRE = /^([\\w$_]+|\\([^)]*?\\))\\s*=>|^function\\s*(?:[\\w$]+)?\\s*\\(/;\nvar fnInvokeRE = /\\([^)]*?\\);*$/;\nvar simplePathRE = /^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['[^']*?']|\\[\"[^\"]*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*$/;\n\n// KeyboardEvent.keyCode aliases\nvar keyCodes = {\n esc: 27,\n tab: 9,\n enter: 13,\n space: 32,\n up: 38,\n left: 37,\n right: 39,\n down: 40,\n 'delete': [8, 46]\n};\n\n// KeyboardEvent.key aliases\nvar keyNames = {\n // #7880: IE11 and Edge use `Esc` for Escape key name.\n esc: ['Esc', 'Escape'],\n tab: 'Tab',\n enter: 'Enter',\n // #9112: IE11 uses `Spacebar` for Space key name.\n space: [' ', 'Spacebar'],\n // #7806: IE11 uses key names without `Arrow` prefix for arrow keys.\n up: ['Up', 'ArrowUp'],\n left: ['Left', 'ArrowLeft'],\n right: ['Right', 'ArrowRight'],\n down: ['Down', 'ArrowDown'],\n // #9112: IE11 uses `Del` for Delete key name.\n 'delete': ['Backspace', 'Delete', 'Del']\n};\n\n// #4868: modifiers that prevent the execution of the listener\n// need to explicitly return null so that we can determine whether to remove\n// the listener for .once\nvar genGuard = function (condition) { return (\"if(\" + condition + \")return null;\"); };\n\nvar modifierCode = {\n stop: '$event.stopPropagation();',\n prevent: '$event.preventDefault();',\n self: genGuard(\"$event.target !== $event.currentTarget\"),\n ctrl: genGuard(\"!$event.ctrlKey\"),\n shift: genGuard(\"!$event.shiftKey\"),\n alt: genGuard(\"!$event.altKey\"),\n meta: genGuard(\"!$event.metaKey\"),\n left: genGuard(\"'button' in $event && $event.button !== 0\"),\n middle: genGuard(\"'button' in $event && $event.button !== 1\"),\n right: genGuard(\"'button' in $event && $event.button !== 2\")\n};\n\nfunction genHandlers (\n events,\n isNative\n) {\n var prefix = isNative ? 'nativeOn:' : 'on:';\n var staticHandlers = \"\";\n var dynamicHandlers = \"\";\n for (var name in events) {\n var handlerCode = genHandler(events[name]);\n if (events[name] && events[name].dynamic) {\n dynamicHandlers += name + \",\" + handlerCode + \",\";\n } else {\n staticHandlers += \"\\\"\" + name + \"\\\":\" + handlerCode + \",\";\n }\n }\n staticHandlers = \"{\" + (staticHandlers.slice(0, -1)) + \"}\";\n if (dynamicHandlers) {\n return prefix + \"_d(\" + staticHandlers + \",[\" + (dynamicHandlers.slice(0, -1)) + \"])\"\n } else {\n return prefix + staticHandlers\n }\n}\n\nfunction genHandler (handler) {\n if (!handler) {\n return 'function(){}'\n }\n\n if (Array.isArray(handler)) {\n return (\"[\" + (handler.map(function (handler) { return genHandler(handler); }).join(',')) + \"]\")\n }\n\n var isMethodPath = simplePathRE.test(handler.value);\n var isFunctionExpression = fnExpRE.test(handler.value);\n var isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, ''));\n\n if (!handler.modifiers) {\n if (isMethodPath || isFunctionExpression) {\n return handler.value\n }\n return (\"function($event){\" + (isFunctionInvocation ? (\"return \" + (handler.value)) : handler.value) + \"}\") // inline statement\n } else {\n var code = '';\n var genModifierCode = '';\n var keys = [];\n for (var key in handler.modifiers) {\n if (modifierCode[key]) {\n genModifierCode += modifierCode[key];\n // left/right\n if (keyCodes[key]) {\n keys.push(key);\n }\n } else if (key === 'exact') {\n var modifiers = (handler.modifiers);\n genModifierCode += genGuard(\n ['ctrl', 'shift', 'alt', 'meta']\n .filter(function (keyModifier) { return !modifiers[keyModifier]; })\n .map(function (keyModifier) { return (\"$event.\" + keyModifier + \"Key\"); })\n .join('||')\n );\n } else {\n keys.push(key);\n }\n }\n if (keys.length) {\n code += genKeyFilter(keys);\n }\n // Make sure modifiers like prevent and stop get executed after key filtering\n if (genModifierCode) {\n code += genModifierCode;\n }\n var handlerCode = isMethodPath\n ? (\"return \" + (handler.value) + \"($event)\")\n : isFunctionExpression\n ? (\"return (\" + (handler.value) + \")($event)\")\n : isFunctionInvocation\n ? (\"return \" + (handler.value))\n : handler.value;\n return (\"function($event){\" + code + handlerCode + \"}\")\n }\n}\n\nfunction genKeyFilter (keys) {\n return (\n // make sure the key filters only apply to KeyboardEvents\n // #9441: can't use 'keyCode' in $event because Chrome autofill fires fake\n // key events that do not have keyCode property...\n \"if(!$event.type.indexOf('key')&&\" +\n (keys.map(genFilterCode).join('&&')) + \")return null;\"\n )\n}\n\nfunction genFilterCode (key) {\n var keyVal = parseInt(key, 10);\n if (keyVal) {\n return (\"$event.keyCode!==\" + keyVal)\n }\n var keyCode = keyCodes[key];\n var keyName = keyNames[key];\n return (\n \"_k($event.keyCode,\" +\n (JSON.stringify(key)) + \",\" +\n (JSON.stringify(keyCode)) + \",\" +\n \"$event.key,\" +\n \"\" + (JSON.stringify(keyName)) +\n \")\"\n )\n}\n\n/* */\n\nfunction on (el, dir) {\n if (process.env.NODE_ENV !== 'production' && dir.modifiers) {\n warn(\"v-on without argument does not support modifiers.\");\n }\n el.wrapListeners = function (code) { return (\"_g(\" + code + \",\" + (dir.value) + \")\"); };\n}\n\n/* */\n\nfunction bind$1 (el, dir) {\n el.wrapData = function (code) {\n return (\"_b(\" + code + \",'\" + (el.tag) + \"',\" + (dir.value) + \",\" + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + \")\")\n };\n}\n\n/* */\n\nvar baseDirectives = {\n on: on,\n bind: bind$1,\n cloak: noop\n};\n\n/* */\n\n\n\n\n\nvar CodegenState = function CodegenState (options) {\n this.options = options;\n this.warn = options.warn || baseWarn;\n this.transforms = pluckModuleFunction(options.modules, 'transformCode');\n this.dataGenFns = pluckModuleFunction(options.modules, 'genData');\n this.directives = extend(extend({}, baseDirectives), options.directives);\n var isReservedTag = options.isReservedTag || no;\n this.maybeComponent = function (el) { return !!el.component || !isReservedTag(el.tag); };\n this.onceId = 0;\n this.staticRenderFns = [];\n this.pre = false;\n};\n\n\n\nfunction generate (\n ast,\n options\n) {\n var state = new CodegenState(options);\n var code = ast ? genElement(ast, state) : '_c(\"div\")';\n return {\n render: (\"with(this){return \" + code + \"}\"),\n staticRenderFns: state.staticRenderFns\n }\n}\n\nfunction genElement (el, state) {\n if (el.parent) {\n el.pre = el.pre || el.parent.pre;\n }\n\n if (el.staticRoot && !el.staticProcessed) {\n return genStatic(el, state)\n } else if (el.once && !el.onceProcessed) {\n return genOnce(el, state)\n } else if (el.for && !el.forProcessed) {\n return genFor(el, state)\n } else if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.tag === 'template' && !el.slotTarget && !state.pre) {\n return genChildren(el, state) || 'void 0'\n } else if (el.tag === 'slot') {\n return genSlot(el, state)\n } else {\n // component or element\n var code;\n if (el.component) {\n code = genComponent(el.component, el, state);\n } else {\n var data;\n if (!el.plain || (el.pre && state.maybeComponent(el))) {\n data = genData$2(el, state);\n }\n\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n code = \"_c('\" + (el.tag) + \"'\" + (data ? (\",\" + data) : '') + (children ? (\",\" + children) : '') + \")\";\n }\n // module transforms\n for (var i = 0; i < state.transforms.length; i++) {\n code = state.transforms[i](el, code);\n }\n return code\n }\n}\n\n// hoist static sub-trees out\nfunction genStatic (el, state) {\n el.staticProcessed = true;\n // Some elements (templates) need to behave differently inside of a v-pre\n // node. All pre nodes are static roots, so we can use this as a location to\n // wrap a state change and reset it upon exiting the pre node.\n var originalPreState = state.pre;\n if (el.pre) {\n state.pre = el.pre;\n }\n state.staticRenderFns.push((\"with(this){return \" + (genElement(el, state)) + \"}\"));\n state.pre = originalPreState;\n return (\"_m(\" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + \")\")\n}\n\n// v-once\nfunction genOnce (el, state) {\n el.onceProcessed = true;\n if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.staticInFor) {\n var key = '';\n var parent = el.parent;\n while (parent) {\n if (parent.for) {\n key = parent.key;\n break\n }\n parent = parent.parent;\n }\n if (!key) {\n process.env.NODE_ENV !== 'production' && state.warn(\n \"v-once can only be used inside v-for that is keyed. \",\n el.rawAttrsMap['v-once']\n );\n return genElement(el, state)\n }\n return (\"_o(\" + (genElement(el, state)) + \",\" + (state.onceId++) + \",\" + key + \")\")\n } else {\n return genStatic(el, state)\n }\n}\n\nfunction genIf (\n el,\n state,\n altGen,\n altEmpty\n) {\n el.ifProcessed = true; // avoid recursion\n return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)\n}\n\nfunction genIfConditions (\n conditions,\n state,\n altGen,\n altEmpty\n) {\n if (!conditions.length) {\n return altEmpty || '_e()'\n }\n\n var condition = conditions.shift();\n if (condition.exp) {\n return (\"(\" + (condition.exp) + \")?\" + (genTernaryExp(condition.block)) + \":\" + (genIfConditions(conditions, state, altGen, altEmpty)))\n } else {\n return (\"\" + (genTernaryExp(condition.block)))\n }\n\n // v-if with v-once should generate code like (a)?_m(0):_m(1)\n function genTernaryExp (el) {\n return altGen\n ? altGen(el, state)\n : el.once\n ? genOnce(el, state)\n : genElement(el, state)\n }\n}\n\nfunction genFor (\n el,\n state,\n altGen,\n altHelper\n) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n\n if (process.env.NODE_ENV !== 'production' &&\n state.maybeComponent(el) &&\n el.tag !== 'slot' &&\n el.tag !== 'template' &&\n !el.key\n ) {\n state.warn(\n \"<\" + (el.tag) + \" v-for=\\\"\" + alias + \" in \" + exp + \"\\\">: component lists rendered with \" +\n \"v-for should have explicit keys. \" +\n \"See https://vuejs.org/guide/list.html#key for more info.\",\n el.rawAttrsMap['v-for'],\n true /* tip */\n );\n }\n\n el.forProcessed = true; // avoid recursion\n return (altHelper || '_l') + \"((\" + exp + \"),\" +\n \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n \"return \" + ((altGen || genElement)(el, state)) +\n '})'\n}\n\nfunction genData$2 (el, state) {\n var data = '{';\n\n // directives first.\n // directives may mutate the el's other properties before they are generated.\n var dirs = genDirectives(el, state);\n if (dirs) { data += dirs + ','; }\n\n // key\n if (el.key) {\n data += \"key:\" + (el.key) + \",\";\n }\n // ref\n if (el.ref) {\n data += \"ref:\" + (el.ref) + \",\";\n }\n if (el.refInFor) {\n data += \"refInFor:true,\";\n }\n // pre\n if (el.pre) {\n data += \"pre:true,\";\n }\n // record original tag name for components using \"is\" attribute\n if (el.component) {\n data += \"tag:\\\"\" + (el.tag) + \"\\\",\";\n }\n // module data generation functions\n for (var i = 0; i < state.dataGenFns.length; i++) {\n data += state.dataGenFns[i](el);\n }\n // attributes\n if (el.attrs) {\n data += \"attrs:\" + (genProps(el.attrs)) + \",\";\n }\n // DOM props\n if (el.props) {\n data += \"domProps:\" + (genProps(el.props)) + \",\";\n }\n // event handlers\n if (el.events) {\n data += (genHandlers(el.events, false)) + \",\";\n }\n if (el.nativeEvents) {\n data += (genHandlers(el.nativeEvents, true)) + \",\";\n }\n // slot target\n // only for non-scoped slots\n if (el.slotTarget && !el.slotScope) {\n data += \"slot:\" + (el.slotTarget) + \",\";\n }\n // scoped slots\n if (el.scopedSlots) {\n data += (genScopedSlots(el, el.scopedSlots, state)) + \",\";\n }\n // component v-model\n if (el.model) {\n data += \"model:{value:\" + (el.model.value) + \",callback:\" + (el.model.callback) + \",expression:\" + (el.model.expression) + \"},\";\n }\n // inline-template\n if (el.inlineTemplate) {\n var inlineTemplate = genInlineTemplate(el, state);\n if (inlineTemplate) {\n data += inlineTemplate + \",\";\n }\n }\n data = data.replace(/,$/, '') + '}';\n // v-bind dynamic argument wrap\n // v-bind with dynamic arguments must be applied using the same v-bind object\n // merge helper so that class/style/mustUseProp attrs are handled correctly.\n if (el.dynamicAttrs) {\n data = \"_b(\" + data + \",\\\"\" + (el.tag) + \"\\\",\" + (genProps(el.dynamicAttrs)) + \")\";\n }\n // v-bind data wrap\n if (el.wrapData) {\n data = el.wrapData(data);\n }\n // v-on data wrap\n if (el.wrapListeners) {\n data = el.wrapListeners(data);\n }\n return data\n}\n\nfunction genDirectives (el, state) {\n var dirs = el.directives;\n if (!dirs) { return }\n var res = 'directives:[';\n var hasRuntime = false;\n var i, l, dir, needRuntime;\n for (i = 0, l = dirs.length; i < l; i++) {\n dir = dirs[i];\n needRuntime = true;\n var gen = state.directives[dir.name];\n if (gen) {\n // compile-time directive that manipulates AST.\n // returns true if it also needs a runtime counterpart.\n needRuntime = !!gen(el, dir, state.warn);\n }\n if (needRuntime) {\n hasRuntime = true;\n res += \"{name:\\\"\" + (dir.name) + \"\\\",rawName:\\\"\" + (dir.rawName) + \"\\\"\" + (dir.value ? (\",value:(\" + (dir.value) + \"),expression:\" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (\",arg:\" + (dir.isDynamicArg ? dir.arg : (\"\\\"\" + (dir.arg) + \"\\\"\"))) : '') + (dir.modifiers ? (\",modifiers:\" + (JSON.stringify(dir.modifiers))) : '') + \"},\";\n }\n }\n if (hasRuntime) {\n return res.slice(0, -1) + ']'\n }\n}\n\nfunction genInlineTemplate (el, state) {\n var ast = el.children[0];\n if (process.env.NODE_ENV !== 'production' && (\n el.children.length !== 1 || ast.type !== 1\n )) {\n state.warn(\n 'Inline-template components must have exactly one child element.',\n { start: el.start }\n );\n }\n if (ast && ast.type === 1) {\n var inlineRenderFns = generate(ast, state.options);\n return (\"inlineTemplate:{render:function(){\" + (inlineRenderFns.render) + \"},staticRenderFns:[\" + (inlineRenderFns.staticRenderFns.map(function (code) { return (\"function(){\" + code + \"}\"); }).join(',')) + \"]}\")\n }\n}\n\nfunction genScopedSlots (\n el,\n slots,\n state\n) {\n // by default scoped slots are considered \"stable\", this allows child\n // components with only scoped slots to skip forced updates from parent.\n // but in some cases we have to bail-out of this optimization\n // for example if the slot contains dynamic names, has v-if or v-for on them...\n var needsForceUpdate = el.for || Object.keys(slots).some(function (key) {\n var slot = slots[key];\n return (\n slot.slotTargetDynamic ||\n slot.if ||\n slot.for ||\n containsSlotChild(slot) // is passing down slot from parent which may be dynamic\n )\n });\n\n // #9534: if a component with scoped slots is inside a conditional branch,\n // it's possible for the same component to be reused but with different\n // compiled slot content. To avoid that, we generate a unique key based on\n // the generated code of all the slot contents.\n var needsKey = !!el.if;\n\n // OR when it is inside another scoped slot or v-for (the reactivity may be\n // disconnected due to the intermediate scope variable)\n // #9438, #9506\n // TODO: this can be further optimized by properly analyzing in-scope bindings\n // and skip force updating ones that do not actually use scope variables.\n if (!needsForceUpdate) {\n var parent = el.parent;\n while (parent) {\n if (\n (parent.slotScope && parent.slotScope !== emptySlotScopeToken) ||\n parent.for\n ) {\n needsForceUpdate = true;\n break\n }\n if (parent.if) {\n needsKey = true;\n }\n parent = parent.parent;\n }\n }\n\n var generatedSlots = Object.keys(slots)\n .map(function (key) { return genScopedSlot(slots[key], state); })\n .join(',');\n\n return (\"scopedSlots:_u([\" + generatedSlots + \"]\" + (needsForceUpdate ? \",null,true\" : \"\") + (!needsForceUpdate && needsKey ? (\",null,false,\" + (hash(generatedSlots))) : \"\") + \")\")\n}\n\nfunction hash(str) {\n var hash = 5381;\n var i = str.length;\n while(i) {\n hash = (hash * 33) ^ str.charCodeAt(--i);\n }\n return hash >>> 0\n}\n\nfunction containsSlotChild (el) {\n if (el.type === 1) {\n if (el.tag === 'slot') {\n return true\n }\n return el.children.some(containsSlotChild)\n }\n return false\n}\n\nfunction genScopedSlot (\n el,\n state\n) {\n var isLegacySyntax = el.attrsMap['slot-scope'];\n if (el.if && !el.ifProcessed && !isLegacySyntax) {\n return genIf(el, state, genScopedSlot, \"null\")\n }\n if (el.for && !el.forProcessed) {\n return genFor(el, state, genScopedSlot)\n }\n var slotScope = el.slotScope === emptySlotScopeToken\n ? \"\"\n : String(el.slotScope);\n var fn = \"function(\" + slotScope + \"){\" +\n \"return \" + (el.tag === 'template'\n ? el.if && isLegacySyntax\n ? (\"(\" + (el.if) + \")?\" + (genChildren(el, state) || 'undefined') + \":undefined\")\n : genChildren(el, state) || 'undefined'\n : genElement(el, state)) + \"}\";\n // reverse proxy v-slot without scope on this.$slots\n var reverseProxy = slotScope ? \"\" : \",proxy:true\";\n return (\"{key:\" + (el.slotTarget || \"\\\"default\\\"\") + \",fn:\" + fn + reverseProxy + \"}\")\n}\n\nfunction genChildren (\n el,\n state,\n checkSkip,\n altGenElement,\n altGenNode\n) {\n var children = el.children;\n if (children.length) {\n var el$1 = children[0];\n // optimize single v-for\n if (children.length === 1 &&\n el$1.for &&\n el$1.tag !== 'template' &&\n el$1.tag !== 'slot'\n ) {\n var normalizationType = checkSkip\n ? state.maybeComponent(el$1) ? \",1\" : \",0\"\n : \"\";\n return (\"\" + ((altGenElement || genElement)(el$1, state)) + normalizationType)\n }\n var normalizationType$1 = checkSkip\n ? getNormalizationType(children, state.maybeComponent)\n : 0;\n var gen = altGenNode || genNode;\n return (\"[\" + (children.map(function (c) { return gen(c, state); }).join(',')) + \"]\" + (normalizationType$1 ? (\",\" + normalizationType$1) : ''))\n }\n}\n\n// determine the normalization needed for the children array.\n// 0: no normalization needed\n// 1: simple normalization needed (possible 1-level deep nested array)\n// 2: full normalization needed\nfunction getNormalizationType (\n children,\n maybeComponent\n) {\n var res = 0;\n for (var i = 0; i < children.length; i++) {\n var el = children[i];\n if (el.type !== 1) {\n continue\n }\n if (needsNormalization(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {\n res = 2;\n break\n }\n if (maybeComponent(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {\n res = 1;\n }\n }\n return res\n}\n\nfunction needsNormalization (el) {\n return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'\n}\n\nfunction genNode (node, state) {\n if (node.type === 1) {\n return genElement(node, state)\n } else if (node.type === 3 && node.isComment) {\n return genComment(node)\n } else {\n return genText(node)\n }\n}\n\nfunction genText (text) {\n return (\"_v(\" + (text.type === 2\n ? text.expression // no need for () because already wrapped in _s()\n : transformSpecialNewlines(JSON.stringify(text.text))) + \")\")\n}\n\nfunction genComment (comment) {\n return (\"_e(\" + (JSON.stringify(comment.text)) + \")\")\n}\n\nfunction genSlot (el, state) {\n var slotName = el.slotName || '\"default\"';\n var children = genChildren(el, state);\n var res = \"_t(\" + slotName + (children ? (\",\" + children) : '');\n var attrs = el.attrs || el.dynamicAttrs\n ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map(function (attr) { return ({\n // slot props are camelized\n name: camelize(attr.name),\n value: attr.value,\n dynamic: attr.dynamic\n }); }))\n : null;\n var bind$$1 = el.attrsMap['v-bind'];\n if ((attrs || bind$$1) && !children) {\n res += \",null\";\n }\n if (attrs) {\n res += \",\" + attrs;\n }\n if (bind$$1) {\n res += (attrs ? '' : ',null') + \",\" + bind$$1;\n }\n return res + ')'\n}\n\n// componentName is el.component, take it as argument to shun flow's pessimistic refinement\nfunction genComponent (\n componentName,\n el,\n state\n) {\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n return (\"_c(\" + componentName + \",\" + (genData$2(el, state)) + (children ? (\",\" + children) : '') + \")\")\n}\n\nfunction genProps (props) {\n var staticProps = \"\";\n var dynamicProps = \"\";\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n var value = transformSpecialNewlines(prop.value);\n if (prop.dynamic) {\n dynamicProps += (prop.name) + \",\" + value + \",\";\n } else {\n staticProps += \"\\\"\" + (prop.name) + \"\\\":\" + value + \",\";\n }\n }\n staticProps = \"{\" + (staticProps.slice(0, -1)) + \"}\";\n if (dynamicProps) {\n return (\"_d(\" + staticProps + \",[\" + (dynamicProps.slice(0, -1)) + \"])\")\n } else {\n return staticProps\n }\n}\n\n// #3895, #4268\nfunction transformSpecialNewlines (text) {\n return text\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n}\n\n/* */\n\n\n\n// these keywords should not appear inside expressions, but operators like\n// typeof, instanceof and in are allowed\nvar prohibitedKeywordRE = new RegExp('\\\\b' + (\n 'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +\n 'super,throw,while,yield,delete,export,import,return,switch,default,' +\n 'extends,finally,continue,debugger,function,arguments'\n).split(',').join('\\\\b|\\\\b') + '\\\\b');\n\n// these unary operators should not be used as property/method names\nvar unaryOperatorsRE = new RegExp('\\\\b' + (\n 'delete,typeof,void'\n).split(',').join('\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b') + '\\\\s*\\\\([^\\\\)]*\\\\)');\n\n// strip strings in expressions\nvar stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\n\n// detect problematic expressions in a template\nfunction detectErrors (ast, warn) {\n if (ast) {\n checkNode(ast, warn);\n }\n}\n\nfunction checkNode (node, warn) {\n if (node.type === 1) {\n for (var name in node.attrsMap) {\n if (dirRE.test(name)) {\n var value = node.attrsMap[name];\n if (value) {\n var range = node.rawAttrsMap[name];\n if (name === 'v-for') {\n checkFor(node, (\"v-for=\\\"\" + value + \"\\\"\"), warn, range);\n } else if (onRE.test(name)) {\n checkEvent(value, (name + \"=\\\"\" + value + \"\\\"\"), warn, range);\n } else {\n checkExpression(value, (name + \"=\\\"\" + value + \"\\\"\"), warn, range);\n }\n }\n }\n }\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n checkNode(node.children[i], warn);\n }\n }\n } else if (node.type === 2) {\n checkExpression(node.expression, node.text, warn, node);\n }\n}\n\nfunction checkEvent (exp, text, warn, range) {\n var stipped = exp.replace(stripStringRE, '');\n var keywordMatch = stipped.match(unaryOperatorsRE);\n if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') {\n warn(\n \"avoid using JavaScript unary operator as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\" in expression \" + (text.trim()),\n range\n );\n }\n checkExpression(exp, text, warn, range);\n}\n\nfunction checkFor (node, text, warn, range) {\n checkExpression(node.for || '', text, warn, range);\n checkIdentifier(node.alias, 'v-for alias', text, warn, range);\n checkIdentifier(node.iterator1, 'v-for iterator', text, warn, range);\n checkIdentifier(node.iterator2, 'v-for iterator', text, warn, range);\n}\n\nfunction checkIdentifier (\n ident,\n type,\n text,\n warn,\n range\n) {\n if (typeof ident === 'string') {\n try {\n new Function((\"var \" + ident + \"=_\"));\n } catch (e) {\n warn((\"invalid \" + type + \" \\\"\" + ident + \"\\\" in expression: \" + (text.trim())), range);\n }\n }\n}\n\nfunction checkExpression (exp, text, warn, range) {\n try {\n new Function((\"return \" + exp));\n } catch (e) {\n var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);\n if (keywordMatch) {\n warn(\n \"avoid using JavaScript keyword as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\"\\n Raw expression: \" + (text.trim()),\n range\n );\n } else {\n warn(\n \"invalid expression: \" + (e.message) + \" in\\n\\n\" +\n \" \" + exp + \"\\n\\n\" +\n \" Raw expression: \" + (text.trim()) + \"\\n\",\n range\n );\n }\n }\n}\n\n/* */\n\nvar range = 2;\n\nfunction generateCodeFrame (\n source,\n start,\n end\n) {\n if ( start === void 0 ) start = 0;\n if ( end === void 0 ) end = source.length;\n\n var lines = source.split(/\\r?\\n/);\n var count = 0;\n var res = [];\n for (var i = 0; i < lines.length; i++) {\n count += lines[i].length + 1;\n if (count >= start) {\n for (var j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length) { continue }\n res.push((\"\" + (j + 1) + (repeat$1(\" \", 3 - String(j + 1).length)) + \"| \" + (lines[j])));\n var lineLength = lines[j].length;\n if (j === i) {\n // push underline\n var pad = start - (count - lineLength) + 1;\n var length = end > count ? lineLength - pad : end - start;\n res.push(\" | \" + repeat$1(\" \", pad) + repeat$1(\"^\", length));\n } else if (j > i) {\n if (end > count) {\n var length$1 = Math.min(end - count, lineLength);\n res.push(\" | \" + repeat$1(\"^\", length$1));\n }\n count += lineLength + 1;\n }\n }\n break\n }\n }\n return res.join('\\n')\n}\n\nfunction repeat$1 (str, n) {\n var result = '';\n if (n > 0) {\n while (true) { // eslint-disable-line\n if (n & 1) { result += str; }\n n >>>= 1;\n if (n <= 0) { break }\n str += str;\n }\n }\n return result\n}\n\n/* */\n\n\n\nfunction createFunction (code, errors) {\n try {\n return new Function(code)\n } catch (err) {\n errors.push({ err: err, code: code });\n return noop\n }\n}\n\nfunction createCompileToFunctionFn (compile) {\n var cache = Object.create(null);\n\n return function compileToFunctions (\n template,\n options,\n vm\n ) {\n options = extend({}, options);\n var warn$$1 = options.warn || warn;\n delete options.warn;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n // detect possible CSP restriction\n try {\n new Function('return 1');\n } catch (e) {\n if (e.toString().match(/unsafe-eval|CSP/)) {\n warn$$1(\n 'It seems you are using the standalone build of Vue.js in an ' +\n 'environment with Content Security Policy that prohibits unsafe-eval. ' +\n 'The template compiler cannot work in this environment. Consider ' +\n 'relaxing the policy to allow unsafe-eval or pre-compiling your ' +\n 'templates into render functions.'\n );\n }\n }\n }\n\n // check cache\n var key = options.delimiters\n ? String(options.delimiters) + template\n : template;\n if (cache[key]) {\n return cache[key]\n }\n\n // compile\n var compiled = compile(template, options);\n\n // check compilation errors/tips\n if (process.env.NODE_ENV !== 'production') {\n if (compiled.errors && compiled.errors.length) {\n if (options.outputSourceRange) {\n compiled.errors.forEach(function (e) {\n warn$$1(\n \"Error compiling template:\\n\\n\" + (e.msg) + \"\\n\\n\" +\n generateCodeFrame(template, e.start, e.end),\n vm\n );\n });\n } else {\n warn$$1(\n \"Error compiling template:\\n\\n\" + template + \"\\n\\n\" +\n compiled.errors.map(function (e) { return (\"- \" + e); }).join('\\n') + '\\n',\n vm\n );\n }\n }\n if (compiled.tips && compiled.tips.length) {\n if (options.outputSourceRange) {\n compiled.tips.forEach(function (e) { return tip(e.msg, vm); });\n } else {\n compiled.tips.forEach(function (msg) { return tip(msg, vm); });\n }\n }\n }\n\n // turn code into functions\n var res = {};\n var fnGenErrors = [];\n res.render = createFunction(compiled.render, fnGenErrors);\n res.staticRenderFns = compiled.staticRenderFns.map(function (code) {\n return createFunction(code, fnGenErrors)\n });\n\n // check function generation errors.\n // this should only happen if there is a bug in the compiler itself.\n // mostly for codegen development use\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {\n warn$$1(\n \"Failed to generate render function:\\n\\n\" +\n fnGenErrors.map(function (ref) {\n var err = ref.err;\n var code = ref.code;\n\n return ((err.toString()) + \" in\\n\\n\" + code + \"\\n\");\n }).join('\\n'),\n vm\n );\n }\n }\n\n return (cache[key] = res)\n }\n}\n\n/* */\n\nfunction createCompilerCreator (baseCompile) {\n return function createCompiler (baseOptions) {\n function compile (\n template,\n options\n ) {\n var finalOptions = Object.create(baseOptions);\n var errors = [];\n var tips = [];\n\n var warn = function (msg, range, tip) {\n (tip ? tips : errors).push(msg);\n };\n\n if (options) {\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n // $flow-disable-line\n var leadingSpaceLength = template.match(/^\\s*/)[0].length;\n\n warn = function (msg, range, tip) {\n var data = { msg: msg };\n if (range) {\n if (range.start != null) {\n data.start = range.start + leadingSpaceLength;\n }\n if (range.end != null) {\n data.end = range.end + leadingSpaceLength;\n }\n }\n (tip ? tips : errors).push(data);\n };\n }\n // merge custom modules\n if (options.modules) {\n finalOptions.modules =\n (baseOptions.modules || []).concat(options.modules);\n }\n // merge custom directives\n if (options.directives) {\n finalOptions.directives = extend(\n Object.create(baseOptions.directives || null),\n options.directives\n );\n }\n // copy other options\n for (var key in options) {\n if (key !== 'modules' && key !== 'directives') {\n finalOptions[key] = options[key];\n }\n }\n }\n\n finalOptions.warn = warn;\n\n var compiled = baseCompile(template.trim(), finalOptions);\n if (process.env.NODE_ENV !== 'production') {\n detectErrors(compiled.ast, warn);\n }\n compiled.errors = errors;\n compiled.tips = tips;\n return compiled\n }\n\n return {\n compile: compile,\n compileToFunctions: createCompileToFunctionFn(compile)\n }\n }\n}\n\n/* */\n\n// `createCompilerCreator` allows creating compilers that use alternative\n// parser/optimizer/codegen, e.g the SSR optimizing compiler.\n// Here we just export a default compiler using the default parts.\nvar createCompiler = createCompilerCreator(function baseCompile (\n template,\n options\n) {\n var ast = parse(template.trim(), options);\n if (options.optimize !== false) {\n optimize(ast, options);\n }\n var code = generate(ast, options);\n return {\n ast: ast,\n render: code.render,\n staticRenderFns: code.staticRenderFns\n }\n});\n\n/* */\n\nvar ref$1 = createCompiler(baseOptions);\nvar compile = ref$1.compile;\nvar compileToFunctions = ref$1.compileToFunctions;\n\n/* */\n\n// check whether current browser encodes a char inside attribute values\nvar div;\nfunction getShouldDecode (href) {\n div = div || document.createElement('div');\n div.innerHTML = href ? \"<a href=\\\"\\n\\\"/>\" : \"<div a=\\\"\\n\\\"/>\";\n return div.innerHTML.indexOf(' ') > 0\n}\n\n// #3663: IE encodes newlines inside attribute values while other browsers don't\nvar shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false;\n// #6828: chrome encodes content in a[href]\nvar shouldDecodeNewlinesForHref = inBrowser ? getShouldDecode(true) : false;\n\n/* */\n\nvar idToTemplate = cached(function (id) {\n var el = query(id);\n return el && el.innerHTML\n});\n\nvar mount = Vue.prototype.$mount;\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && query(el);\n\n /* istanbul ignore if */\n if (el === document.body || el === document.documentElement) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Do not mount Vue to <html> or <body> - mount to normal elements instead.\"\n );\n return this\n }\n\n var options = this.$options;\n // resolve template/el and convert to render function\n if (!options.render) {\n var template = options.template;\n if (template) {\n if (typeof template === 'string') {\n if (template.charAt(0) === '#') {\n template = idToTemplate(template);\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && !template) {\n warn(\n (\"Template element not found or is empty: \" + (options.template)),\n this\n );\n }\n }\n } else if (template.nodeType) {\n template = template.innerHTML;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn('invalid template option:' + template, this);\n }\n return this\n }\n } else if (el) {\n template = getOuterHTML(el);\n }\n if (template) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile');\n }\n\n var ref = compileToFunctions(template, {\n outputSourceRange: process.env.NODE_ENV !== 'production',\n shouldDecodeNewlines: shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,\n delimiters: options.delimiters,\n comments: options.comments\n }, this);\n var render = ref.render;\n var staticRenderFns = ref.staticRenderFns;\n options.render = render;\n options.staticRenderFns = staticRenderFns;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile end');\n measure((\"vue \" + (this._name) + \" compile\"), 'compile', 'compile end');\n }\n }\n }\n return mount.call(this, el, hydrating)\n};\n\n/**\n * Get outerHTML of elements, taking care\n * of SVG elements in IE as well.\n */\nfunction getOuterHTML (el) {\n if (el.outerHTML) {\n return el.outerHTML\n } else {\n var container = document.createElement('div');\n container.appendChild(el.cloneNode(true));\n return container.innerHTML\n }\n}\n\nVue.compile = compileToFunctions;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Vue);\n\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(51), __webpack_require__(25), __webpack_require__(226).setImmediate))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlL2Rpc3QvdnVlLmVzbS5qcz9lZmViIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtDQUFrQzs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsaUJBQWlCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiwrQkFBK0I7QUFDckQsc0JBQXNCLGlCQUFpQjtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRCxpQ0FBaUMsRUFBRTtBQUNyRixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGdCQUFnQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixjQUFjOztBQUUzQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsVUFBVTs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGdCQUFnQjtBQUNqQyxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIscUJBQXFCO0FBQ3hDLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssR0FBRztBQUNSO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDLHVDQUF1Qyx3QkFBd0IsRUFBRTtBQUNqRSwwQkFBMEI7O0FBRTFCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLFlBQVk7QUFDcEMsa0JBQWtCLFlBQVk7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0Esd0NBQXdDLEVBQUU7QUFDMUM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0Isb0JBQW9CLEVBQUU7QUFDckQ7QUFDQSxrQ0FBa0MsT0FBTztBQUN6QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEIsU0FBUyxxQkFBcUI7O0FBRXhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMkJBQTJCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxDQUFDOztBQUVEOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixpQkFBaUI7QUFDbEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLE9BQU87QUFDMUM7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsT0FBTztBQUN6QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELE9BQU87QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixpQkFBaUI7QUFDbEM7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQixrQkFBa0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLHVCQUF1QjtBQUN6RCxpQ0FBaUMsc0JBQXNCO0FBQ3ZEO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0EsaUJBQWlCLHVCQUF1QjtBQUN4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0EsbUJBQW1CLG1CQUFtQjtBQUN0QywrQkFBK0I7QUFDL0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLFlBQVk7QUFDOUIsV0FBVztBQUNYO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLE9BQU87QUFDckQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBLG9DQUFvQztBQUNwQztBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDJCQUEyQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QyxTQUFTO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZDQUE2QyxxQ0FBcUMsRUFBRTtBQUNwRjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsb0NBQW9DLHlDQUF5QyxFQUFFO0FBQy9FOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLGtCQUFrQjtBQUMzQztBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixzREFBc0QsRUFBRTtBQUN0RjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsbUJBQW1CO0FBQ3BDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isa0JBQWtCO0FBQ2xDO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQix1QkFBdUI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsaUNBQWlDO0FBQ25FLGNBQWMsNkJBQTZCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxpQ0FBaUM7QUFDbkUsY0FBYyw2QkFBNkI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHlCQUF5QjtBQUMxQyxHQUFHO0FBQ0g7QUFDQTtBQUNBLGlCQUFpQiwrQkFBK0I7QUFDaEQ7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLG1CQUFtQjtBQUN4QztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixxQkFBcUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEscUJBQXFCO0FBQ2xDO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLE9BQU87QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtFQUFrRTtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUFzQixtQkFBbUI7QUFDekM7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsT0FBTztBQUN0QztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZUFBZSxTQUFTO0FBQ3hCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0Esa0NBQWtDLE9BQU87QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0Q0FBNEMsZUFBZTtBQUMzRCxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xELDRDQUE0QztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQixpQkFBaUIsZ0JBQWdCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxpQkFBaUIsbUJBQW1CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILHFDQUFxQyxnRUFBZ0U7QUFDckc7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILDRCQUE0QiwrQkFBK0I7QUFDM0QsNEJBQTRCLCtCQUErQjtBQUMzRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRDtBQUNsRDtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLHVGQUF1RjtBQUM1RjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBDQUEwQztBQUMxQyxpQkFBaUIseUJBQXlCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLCtCQUErQjtBQUNsQyxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsb0JBQW9CLG9CQUFvQjtBQUN4QyxzQkFBc0IsNEJBQTRCO0FBQ2xEO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLE9BQU87QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsbUJBQW1CO0FBQ25CLHlCQUF5QjtBQUN6QjtBQUNBLHFEQUFxRDtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyw2Q0FBNkM7QUFDOUU7QUFDQTtBQUNBLDZDQUE2Qyw0Q0FBNEM7O0FBRXpGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEtBQUssMkNBQTJDLDhCQUE4QixFQUFFOztBQUVoRjtBQUNBLHdDQUF3QyxPQUFPO0FBQy9DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUIscUJBQXFCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLE9BQU87QUFDOUM7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLFNBQVM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQkFBMEI7O0FBRTFCLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBLDBDQUEwQztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix5QkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIseUJBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLE9BQU87QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsMEJBQTBCO0FBQ3BEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixvQkFBb0IsRUFBRTs7QUFFcEQ7QUFDQTtBQUNBLGlCQUFpQixzQkFBc0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQixrQkFBa0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7QUFJQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMkJBQTJCO0FBQzlDLHFCQUFxQiwrQkFBK0I7QUFDcEQ7QUFDQTtBQUNBLEdBQUc7QUFDSCx5QkFBeUI7QUFDekI7QUFDQSxzQkFBc0IsaUNBQWlDO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLDhCQUE4Qjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsb0JBQW9CO0FBQ3pDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0Esb0JBQW9CO0FBQ3BCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsZUFBZTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzRUFBc0U7QUFDdEU7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBOzs7O0FBSUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0EsMENBQTBDLDJCQUEyQixFQUFFO0FBQ3ZFLEtBQUs7QUFDTDtBQUNBLDBDQUEwQyw0QkFBNEIsRUFBRTtBQUN4RSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLGVBQWU7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsT0FBTztBQUMxQztBQUNBLGdCQUFnQixZQUFZO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsWUFBWTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsK0JBQStCLHNCQUFzQjs7QUFFckQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQjs7QUFFcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdDQUFnQzs7QUFFaEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsYUFBYTtBQUNqQztBQUNBLHFCQUFxQixjQUFjO0FBQ25DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxhQUFhLGtCQUFrQjtBQUMvQjtBQUNBLGVBQWUsb0JBQW9CO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyREFBMkQ7QUFDM0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix5QkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIscUJBQXFCO0FBQzFDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQix5QkFBeUI7QUFDOUM7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBLDRCQUE0Qiw0QkFBNEI7QUFDeEQsNEJBQTRCLGdDQUFnQztBQUM1RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVLG9CQUFvQjtBQUM5QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQsVUFBVTtBQUNuRSxpQkFBaUIsd0JBQXdCLE9BQU8sdUJBQXVCO0FBQ3ZFO0FBQ0E7QUFDQSxpQkFBaUIsMkJBQTJCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVSxvQkFBb0I7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsT0FBTztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsdUJBQXVCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTyxrREFBa0Q7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLGtEQUFrRDtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxtQ0FBbUMsZ0VBQWdFO0FBQ25HO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1QkFBdUIsU0FBUztBQUNoQztBQUNBLDJDQUEyQztBQUMzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQix1QkFBdUIsT0FBTyxnQ0FBZ0M7QUFDL0Usd0RBQXdELG9CQUFvQjtBQUM1RTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsZ0VBQWdFO0FBQzNGLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsaUNBQWlDO0FBQ3BFO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsMkRBQTJELG9CQUFvQjtBQUMvRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wscUJBQXFCLGtCQUFrQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNELGdDQUFnQztBQUN0RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsdUJBQXVCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRCQUE0Qiw2QkFBNkI7QUFDekQ7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQix3QkFBd0I7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IseUJBQXlCO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMseUJBQXlCO0FBQzFEO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQiwyQkFBMkI7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQiw4QkFBOEI7QUFDbkQ7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlCQUFpQjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNEVBQTRFO0FBQzVFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QztBQUN4Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsYUFBYSxnQkFBZ0I7QUFDN0I7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLGtCQUFrQjtBQUMxRCxLQUFLO0FBQ0wsd0NBQXdDLGtCQUFrQjtBQUMxRCxLQUFLO0FBQ0wsd0NBQXdDLDBCQUEwQjtBQUNsRSxLQUFLO0FBQ0wsd0NBQXdDLGlCQUFpQjtBQUN6RCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxtQ0FBbUM7QUFDbkMsbUNBQW1DO0FBQ25DLDJDQUEyQztBQUMzQywyQkFBMkI7QUFDM0IsMkJBQTJCO0FBQzNCLDRCQUE0QjtBQUM1Qiw0QkFBNEI7QUFDNUIsMkJBQTJCO0FBQzNCLDJCQUEyQjtBQUMzQjtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEI7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZUFBZSxvQkFBb0I7QUFDbkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLGVBQWUsRUFBRSx1QkFBdUIsVUFBVSxFQUFFO0FBQ3BGO0FBQ0E7O0FBRUE7QUFDQSxtREFBbUQsNkNBQTZDO0FBQ2hHO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsNkNBQTZDO0FBQ3hFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLDJCQUEyQjtBQUM3RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQ7QUFDckQsR0FBRztBQUNILHlDQUF5QztBQUN6Qzs7QUFFQSxpQ0FBaUMsd0NBQXdDO0FBQ3pFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLE9BQU87QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLE9BQU87QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0QsbUJBQW1CO0FBQzNFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGFBQWE7QUFDcEMsdUJBQXVCLGFBQWE7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUZBQWlGO0FBQ2pGLDRCQUE0QjtBQUM1QjtBQUNBLDJCQUEyQjtBQUMzQix3QkFBd0IsaUVBQWlFO0FBQ3pGLFlBQVksMEZBQTBGO0FBQ3RHLE1BQU0sS0FBSywwQ0FBMEM7QUFDckQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsa0JBQWtCO0FBQy9ELHNCQUFzQiwrQ0FBK0M7QUFDckUsaURBQWlEOztBQUVqRDtBQUNBLHNEQUFzRDtBQUN0RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDhDQUE4QztBQUM5Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsMkJBQTJCO0FBQ3RELGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyw2Q0FBNkMsRUFBRTtBQUN0RDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLHVDQUF1QyxTQUFTO0FBQ2hEO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQix3QkFBd0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELDRCQUE0QixFQUFFO0FBQ2xGLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELCtCQUErQixFQUFFO0FBQ3JGLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsYUFBYTs7QUFFM0Q7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQ7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGlDQUFpQyxxQ0FBcUM7O0FBRXRFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyx1Q0FBdUMsRUFBRTtBQUNwRjtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsMkNBQTJDLEVBQUU7QUFDMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0MsT0FBTztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUNBQXFDLDhCQUE4QixFQUFFO0FBQ3JFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsa0NBQWtDLHVDQUF1Qzs7QUFFekUscUNBQXFDLDBCQUEwQjs7QUFFL0Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw4Q0FBOEM7QUFDOUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0RBQXdEO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLGdCQUFnQjtBQUN4RDtBQUNBO0FBQ0EsZ0VBQWdFLHNCQUFzQixFQUFFO0FBQ3hGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQix3QkFBd0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsdUJBQXVCO0FBQ2xDLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDJCQUEyQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCx5QkFBeUIsRUFBRTtBQUNqRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7O0FBRUEsc0JBQXNCLEVBQUUsaUJBQWlCLEVBQUU7QUFDM0MsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7QUFJRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixrQkFBa0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxPQUFPO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxPQUFPO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1AsT0FBTztBQUNQLFNBQVM7QUFDVCxRQUFRO0FBQ1IsUUFBUTtBQUNSLE9BQU87QUFDUCxRQUFRO0FBQ1I7QUFDQSwyQ0FBMkM7QUFDM0MsOERBQThEOztBQUU5RDtBQUNBO0FBQ0EscURBQXFELDJEQUEyRDs7QUFFaEg7QUFDQTtBQUNBLDZDQUE2QywyQkFBMkIsRUFBRTtBQUMxRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtGQUFrRiw2QkFBNkI7QUFDL0c7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IsdUdBQXVHO0FBQ3pIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QixlQUFlO0FBQ3ZDLHNCQUFzQixhQUFhOztBQUVuQztBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsVUFBVTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9DQUFvQyxVQUFVO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGVBQWU7QUFDM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLGlEQUFpRDs7QUFFbkY7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLDZEQUE2RDtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw2REFBNkQsdUJBQXVCLEVBQUU7QUFDdEY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDJCQUEyQjtBQUM5QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxJQUFJO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0EscUJBQXFCLDBCQUEwQjtBQUMvQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFNBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsdUJBQXVCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRTtBQUNoRTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRDtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLE9BQU87QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLG9CQUFvQjtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPLDRCQUE0QjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLE9BQU87QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsT0FBTztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msd0JBQXdCLEVBQUU7QUFDMUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQ0FBbUMsT0FBTztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsT0FBTztBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCxXQUFXO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxPQUFPO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXVELFdBQVc7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsNkJBQTZCO0FBQzdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsMkNBQTJDLEdBQUc7O0FBRW5GO0FBQ0Esa0NBQWtDO0FBQ2xDLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0NBQXNDO0FBQzNEO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7O0FBRUE7QUFDQSxtREFBbUQsNEJBQTRCLEVBQUU7QUFDakY7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLCtFQUErRTtBQUM3RyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLGdDQUFnQyxFQUFFO0FBQzlFLHlDQUF5QywwQ0FBMEMsRUFBRTtBQUNyRjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsMkJBQTJCO0FBQ3pEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlEO0FBQ3pEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsaURBQWlEO0FBQ3ZGOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBLHVDQUF1QyxpREFBaUQ7QUFDeEY7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixvQkFBb0I7QUFDN0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsNkJBQTZCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsdUNBQXVDO0FBQ2pGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUI7QUFDekI7QUFDQSxxREFBcUQ7QUFDckQ7QUFDQSxNQUFNO0FBQ047O0FBRUE7QUFDQSxlQUFlOztBQUVmO0FBQ0E7QUFDQTtBQUNBLGFBQWEsb0JBQW9COztBQUVqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDZCQUE2QjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiw2R0FBNkc7QUFDakk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixPQUFPO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzVUFBc1U7QUFDclY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGtCQUFrQixpQ0FBaUMsNEVBQTRFLHFCQUFxQixhQUFhLEdBQUcsRUFBRSxrQkFBa0I7QUFDck47QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlCQUF5Qix5Q0FBeUMsRUFBRTtBQUNwRTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBLFlBQVksMEVBQTBFO0FBQ3RGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLHNCQUFzQixFQUFFO0FBQ3RFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHFCQUFxQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0RBQStELG9DQUFvQyxFQUFFO0FBQ3JHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0RBQStELGdDQUFnQyxFQUFFO0FBQ2pHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1GQUFtRjtBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sRUFBRSxFQUFFO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixrQkFBa0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG1DQUFtQztBQUNyRDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZFQUE2RSxHQUFHOztBQUVoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiwwQkFBMEI7QUFDL0M7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGtCQUFrQjtBQUNuQztBQUNBO0FBQ0EsNkJBQTZCLCtCQUErQjtBQUM1RCx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQixrQkFBa0IsZUFBZTtBQUNqQztBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILGlCQUFpQix1QkFBdUI7QUFDeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBO0FBQ0EsOENBQThDLG1CQUFtQixFQUFFO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4Qyx1QkFBdUIsRUFBRTtBQUN2RSxTQUFTO0FBQ1QsZ0RBQWdELHFCQUFxQixFQUFFO0FBQ3ZFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVlLGtFQUFHLEVBQUMiLCJmaWxlIjoiNTAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIFZ1ZS5qcyB2Mi42LjEwXG4gKiAoYykgMjAxNC0yMDE5IEV2YW4gWW91XG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cbi8qICAqL1xuXG52YXIgZW1wdHlPYmplY3QgPSBPYmplY3QuZnJlZXplKHt9KTtcblxuLy8gVGhlc2UgaGVscGVycyBwcm9kdWNlIGJldHRlciBWTSBjb2RlIGluIEpTIGVuZ2luZXMgZHVlIHRvIHRoZWlyXG4vLyBleHBsaWNpdG5lc3MgYW5kIGZ1bmN0aW9uIGlubGluaW5nLlxuZnVuY3Rpb24gaXNVbmRlZiAodikge1xuICByZXR1cm4gdiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGxcbn1cblxuZnVuY3Rpb24gaXNEZWYgKHYpIHtcbiAgcmV0dXJuIHYgIT09IHVuZGVmaW5lZCAmJiB2ICE9PSBudWxsXG59XG5cbmZ1bmN0aW9uIGlzVHJ1ZSAodikge1xuICByZXR1cm4gdiA9PT0gdHJ1ZVxufVxuXG5mdW5jdGlvbiBpc0ZhbHNlICh2KSB7XG4gIHJldHVybiB2ID09PSBmYWxzZVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHZhbHVlIGlzIHByaW1pdGl2ZS5cbiAqL1xuZnVuY3Rpb24gaXNQcmltaXRpdmUgKHZhbHVlKSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHxcbiAgICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdzeW1ib2wnIHx8XG4gICAgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbidcbiAgKVxufVxuXG4vKipcbiAqIFF1aWNrIG9iamVjdCBjaGVjayAtIHRoaXMgaXMgcHJpbWFyaWx5IHVzZWQgdG8gdGVsbFxuICogT2JqZWN0cyBmcm9tIHByaW1pdGl2ZSB2YWx1ZXMgd2hlbiB3ZSBrbm93IHRoZSB2YWx1ZVxuICogaXMgYSBKU09OLWNvbXBsaWFudCB0eXBlLlxuICovXG5mdW5jdGlvbiBpc09iamVjdCAob2JqKSB7XG4gIHJldHVybiBvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCdcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHJhdyB0eXBlIHN0cmluZyBvZiBhIHZhbHVlLCBlLmcuLCBbb2JqZWN0IE9iamVjdF0uXG4gKi9cbnZhciBfdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG5mdW5jdGlvbiB0b1Jhd1R5cGUgKHZhbHVlKSB7XG4gIHJldHVybiBfdG9TdHJpbmcuY2FsbCh2YWx1ZSkuc2xpY2UoOCwgLTEpXG59XG5cbi8qKlxuICogU3RyaWN0IG9iamVjdCB0eXBlIGNoZWNrLiBPbmx5IHJldHVybnMgdHJ1ZVxuICogZm9yIHBsYWluIEphdmFTY3JpcHQgb2JqZWN0cy5cbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCAob2JqKSB7XG4gIHJldHVybiBfdG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBPYmplY3RdJ1xufVxuXG5mdW5jdGlvbiBpc1JlZ0V4cCAodikge1xuICByZXR1cm4gX3RvU3RyaW5nLmNhbGwodikgPT09ICdbb2JqZWN0IFJlZ0V4cF0nXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdmFsIGlzIGEgdmFsaWQgYXJyYXkgaW5kZXguXG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRBcnJheUluZGV4ICh2YWwpIHtcbiAgdmFyIG4gPSBwYXJzZUZsb2F0KFN0cmluZyh2YWwpKTtcbiAgcmV0dXJuIG4gPj0gMCAmJiBNYXRoLmZsb29yKG4pID09PSBuICYmIGlzRmluaXRlKHZhbClcbn1cblxuZnVuY3Rpb24gaXNQcm9taXNlICh2YWwpIHtcbiAgcmV0dXJuIChcbiAgICBpc0RlZih2YWwpICYmXG4gICAgdHlwZW9mIHZhbC50aGVuID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIHZhbC5jYXRjaCA9PT0gJ2Z1bmN0aW9uJ1xuICApXG59XG5cbi8qKlxuICogQ29udmVydCBhIHZhbHVlIHRvIGEgc3RyaW5nIHRoYXQgaXMgYWN0dWFsbHkgcmVuZGVyZWQuXG4gKi9cbmZ1bmN0aW9uIHRvU3RyaW5nICh2YWwpIHtcbiAgcmV0dXJuIHZhbCA9PSBudWxsXG4gICAgPyAnJ1xuICAgIDogQXJyYXkuaXNBcnJheSh2YWwpIHx8IChpc1BsYWluT2JqZWN0KHZhbCkgJiYgdmFsLnRvU3RyaW5nID09PSBfdG9TdHJpbmcpXG4gICAgICA/IEpTT04uc3RyaW5naWZ5KHZhbCwgbnVsbCwgMilcbiAgICAgIDogU3RyaW5nKHZhbClcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGFuIGlucHV0IHZhbHVlIHRvIGEgbnVtYmVyIGZvciBwZXJzaXN0ZW5jZS5cbiAqIElmIHRoZSBjb252ZXJzaW9uIGZhaWxzLCByZXR1cm4gb3JpZ2luYWwgc3RyaW5nLlxuICovXG5mdW5jdGlvbiB0b051bWJlciAodmFsKSB7XG4gIHZhciBuID0gcGFyc2VGbG9hdCh2YWwpO1xuICByZXR1cm4gaXNOYU4obikgPyB2YWwgOiBuXG59XG5cbi8qKlxuICogTWFrZSBhIG1hcCBhbmQgcmV0dXJuIGEgZnVuY3Rpb24gZm9yIGNoZWNraW5nIGlmIGEga2V5XG4gKiBpcyBpbiB0aGF0IG1hcC5cbiAqL1xuZnVuY3Rpb24gbWFrZU1hcCAoXG4gIHN0cixcbiAgZXhwZWN0c0xvd2VyQ2FzZVxuKSB7XG4gIHZhciBtYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB2YXIgbGlzdCA9IHN0ci5zcGxpdCgnLCcpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBtYXBbbGlzdFtpXV0gPSB0cnVlO1xuICB9XG4gIHJldHVybiBleHBlY3RzTG93ZXJDYXNlXG4gICAgPyBmdW5jdGlvbiAodmFsKSB7IHJldHVybiBtYXBbdmFsLnRvTG93ZXJDYXNlKCldOyB9XG4gICAgOiBmdW5jdGlvbiAodmFsKSB7IHJldHVybiBtYXBbdmFsXTsgfVxufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgdGFnIGlzIGEgYnVpbHQtaW4gdGFnLlxuICovXG52YXIgaXNCdWlsdEluVGFnID0gbWFrZU1hcCgnc2xvdCxjb21wb25lbnQnLCB0cnVlKTtcblxuLyoqXG4gKiBDaGVjayBpZiBhbiBhdHRyaWJ1dGUgaXMgYSByZXNlcnZlZCBhdHRyaWJ1dGUuXG4gKi9cbnZhciBpc1Jlc2VydmVkQXR0cmlidXRlID0gbWFrZU1hcCgna2V5LHJlZixzbG90LHNsb3Qtc2NvcGUsaXMnKTtcblxuLyoqXG4gKiBSZW1vdmUgYW4gaXRlbSBmcm9tIGFuIGFycmF5LlxuICovXG5mdW5jdGlvbiByZW1vdmUgKGFyciwgaXRlbSkge1xuICBpZiAoYXJyLmxlbmd0aCkge1xuICAgIHZhciBpbmRleCA9IGFyci5pbmRleE9mKGl0ZW0pO1xuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gYXJyLnNwbGljZShpbmRleCwgMSlcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIGFuIG9iamVjdCBoYXMgdGhlIHByb3BlcnR5LlxuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuZnVuY3Rpb24gaGFzT3duIChvYmosIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSlcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBjYWNoZWQgdmVyc2lvbiBvZiBhIHB1cmUgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNhY2hlZCAoZm4pIHtcbiAgdmFyIGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuIChmdW5jdGlvbiBjYWNoZWRGbiAoc3RyKSB7XG4gICAgdmFyIGhpdCA9IGNhY2hlW3N0cl07XG4gICAgcmV0dXJuIGhpdCB8fCAoY2FjaGVbc3RyXSA9IGZuKHN0cikpXG4gIH0pXG59XG5cbi8qKlxuICogQ2FtZWxpemUgYSBoeXBoZW4tZGVsaW1pdGVkIHN0cmluZy5cbiAqL1xudmFyIGNhbWVsaXplUkUgPSAvLShcXHcpL2c7XG52YXIgY2FtZWxpemUgPSBjYWNoZWQoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoY2FtZWxpemVSRSwgZnVuY3Rpb24gKF8sIGMpIHsgcmV0dXJuIGMgPyBjLnRvVXBwZXJDYXNlKCkgOiAnJzsgfSlcbn0pO1xuXG4vKipcbiAqIENhcGl0YWxpemUgYSBzdHJpbmcuXG4gKi9cbnZhciBjYXBpdGFsaXplID0gY2FjaGVkKGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKVxufSk7XG5cbi8qKlxuICogSHlwaGVuYXRlIGEgY2FtZWxDYXNlIHN0cmluZy5cbiAqL1xudmFyIGh5cGhlbmF0ZVJFID0gL1xcQihbQS1aXSkvZztcbnZhciBoeXBoZW5hdGUgPSBjYWNoZWQoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoaHlwaGVuYXRlUkUsICctJDEnKS50b0xvd2VyQ2FzZSgpXG59KTtcblxuLyoqXG4gKiBTaW1wbGUgYmluZCBwb2x5ZmlsbCBmb3IgZW52aXJvbm1lbnRzIHRoYXQgZG8gbm90IHN1cHBvcnQgaXQsXG4gKiBlLmcuLCBQaGFudG9tSlMgMS54LiBUZWNobmljYWxseSwgd2UgZG9uJ3QgbmVlZCB0aGlzIGFueW1vcmVcbiAqIHNpbmNlIG5hdGl2ZSBiaW5kIGlzIG5vdyBwZXJmb3JtYW50IGVub3VnaCBpbiBtb3N0IGJyb3dzZXJzLlxuICogQnV0IHJlbW92aW5nIGl0IHdvdWxkIG1lYW4gYnJlYWtpbmcgY29kZSB0aGF0IHdhcyBhYmxlIHRvIHJ1biBpblxuICogUGhhbnRvbUpTIDEueCwgc28gdGhpcyBtdXN0IGJlIGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gKi9cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIHBvbHlmaWxsQmluZCAoZm4sIGN0eCkge1xuICBmdW5jdGlvbiBib3VuZEZuIChhKSB7XG4gICAgdmFyIGwgPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHJldHVybiBsXG4gICAgICA/IGwgPiAxXG4gICAgICAgID8gZm4uYXBwbHkoY3R4LCBhcmd1bWVudHMpXG4gICAgICAgIDogZm4uY2FsbChjdHgsIGEpXG4gICAgICA6IGZuLmNhbGwoY3R4KVxuICB9XG5cbiAgYm91bmRGbi5fbGVuZ3RoID0gZm4ubGVuZ3RoO1xuICByZXR1cm4gYm91bmRGblxufVxuXG5mdW5jdGlvbiBuYXRpdmVCaW5kIChmbiwgY3R4KSB7XG4gIHJldHVybiBmbi5iaW5kKGN0eClcbn1cblxudmFyIGJpbmQgPSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZFxuICA/IG5hdGl2ZUJpbmRcbiAgOiBwb2x5ZmlsbEJpbmQ7XG5cbi8qKlxuICogQ29udmVydCBhbiBBcnJheS1saWtlIG9iamVjdCB0byBhIHJlYWwgQXJyYXkuXG4gKi9cbmZ1bmN0aW9uIHRvQXJyYXkgKGxpc3QsIHN0YXJ0KSB7XG4gIHN0YXJ0ID0gc3RhcnQgfHwgMDtcbiAgdmFyIGkgPSBsaXN0Lmxlbmd0aCAtIHN0YXJ0O1xuICB2YXIgcmV0ID0gbmV3IEFycmF5KGkpO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgcmV0W2ldID0gbGlzdFtpICsgc3RhcnRdO1xuICB9XG4gIHJldHVybiByZXRcbn1cblxuLyoqXG4gKiBNaXggcHJvcGVydGllcyBpbnRvIHRhcmdldCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGV4dGVuZCAodG8sIF9mcm9tKSB7XG4gIGZvciAodmFyIGtleSBpbiBfZnJvbSkge1xuICAgIHRvW2tleV0gPSBfZnJvbVtrZXldO1xuICB9XG4gIHJldHVybiB0b1xufVxuXG4vKipcbiAqIE1lcmdlIGFuIEFycmF5IG9mIE9iamVjdHMgaW50byBhIHNpbmdsZSBPYmplY3QuXG4gKi9cbmZ1bmN0aW9uIHRvT2JqZWN0IChhcnIpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChhcnJbaV0pIHtcbiAgICAgIGV4dGVuZChyZXMsIGFycltpXSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cblxuLyoqXG4gKiBQZXJmb3JtIG5vIG9wZXJhdGlvbi5cbiAqIFN0dWJiaW5nIGFyZ3MgdG8gbWFrZSBGbG93IGhhcHB5IHdpdGhvdXQgbGVhdmluZyB1c2VsZXNzIHRyYW5zcGlsZWQgY29kZVxuICogd2l0aCAuLi5yZXN0IChodHRwczovL2Zsb3cub3JnL2Jsb2cvMjAxNy8wNS8wNy9TdHJpY3QtRnVuY3Rpb24tQ2FsbC1Bcml0eS8pLlxuICovXG5mdW5jdGlvbiBub29wIChhLCBiLCBjKSB7fVxuXG4vKipcbiAqIEFsd2F5cyByZXR1cm4gZmFsc2UuXG4gKi9cbnZhciBubyA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7IHJldHVybiBmYWxzZTsgfTtcblxuLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtdmFycyAqL1xuXG4vKipcbiAqIFJldHVybiB0aGUgc2FtZSB2YWx1ZS5cbiAqL1xudmFyIGlkZW50aXR5ID0gZnVuY3Rpb24gKF8pIHsgcmV0dXJuIF87IH07XG5cbi8qKlxuICogR2VuZXJhdGUgYSBzdHJpbmcgY29udGFpbmluZyBzdGF0aWMga2V5cyBmcm9tIGNvbXBpbGVyIG1vZHVsZXMuXG4gKi9cbmZ1bmN0aW9uIGdlblN0YXRpY0tleXMgKG1vZHVsZXMpIHtcbiAgcmV0dXJuIG1vZHVsZXMucmVkdWNlKGZ1bmN0aW9uIChrZXlzLCBtKSB7XG4gICAgcmV0dXJuIGtleXMuY29uY2F0KG0uc3RhdGljS2V5cyB8fCBbXSlcbiAgfSwgW10pLmpvaW4oJywnKVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHR3byB2YWx1ZXMgYXJlIGxvb3NlbHkgZXF1YWwgLSB0aGF0IGlzLFxuICogaWYgdGhleSBhcmUgcGxhaW4gb2JqZWN0cywgZG8gdGhleSBoYXZlIHRoZSBzYW1lIHNoYXBlP1xuICovXG5mdW5jdGlvbiBsb29zZUVxdWFsIChhLCBiKSB7XG4gIGlmIChhID09PSBiKSB7IHJldHVybiB0cnVlIH1cbiAgdmFyIGlzT2JqZWN0QSA9IGlzT2JqZWN0KGEpO1xuICB2YXIgaXNPYmplY3RCID0gaXNPYmplY3QoYik7XG4gIGlmIChpc09iamVjdEEgJiYgaXNPYmplY3RCKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBpc0FycmF5QSA9IEFycmF5LmlzQXJyYXkoYSk7XG4gICAgICB2YXIgaXNBcnJheUIgPSBBcnJheS5pc0FycmF5KGIpO1xuICAgICAgaWYgKGlzQXJyYXlBICYmIGlzQXJyYXlCKSB7XG4gICAgICAgIHJldHVybiBhLmxlbmd0aCA9PT0gYi5sZW5ndGggJiYgYS5ldmVyeShmdW5jdGlvbiAoZSwgaSkge1xuICAgICAgICAgIHJldHVybiBsb29zZUVxdWFsKGUsIGJbaV0pXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBEYXRlICYmIGIgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIHJldHVybiBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKClcbiAgICAgIH0gZWxzZSBpZiAoIWlzQXJyYXlBICYmICFpc0FycmF5Qikge1xuICAgICAgICB2YXIga2V5c0EgPSBPYmplY3Qua2V5cyhhKTtcbiAgICAgICAgdmFyIGtleXNCID0gT2JqZWN0LmtleXMoYik7XG4gICAgICAgIHJldHVybiBrZXlzQS5sZW5ndGggPT09IGtleXNCLmxlbmd0aCAmJiBrZXlzQS5ldmVyeShmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgcmV0dXJuIGxvb3NlRXF1YWwoYVtrZXldLCBiW2tleV0pXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9IGVsc2UgaWYgKCFpc09iamVjdEEgJiYgIWlzT2JqZWN0Qikge1xuICAgIHJldHVybiBTdHJpbmcoYSkgPT09IFN0cmluZyhiKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBmaXJzdCBpbmRleCBhdCB3aGljaCBhIGxvb3NlbHkgZXF1YWwgdmFsdWUgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgYXJyYXkgKGlmIHZhbHVlIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGUgYXJyYXkgbXVzdFxuICogY29udGFpbiBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgc2hhcGUpLCBvciAtMSBpZiBpdCBpcyBub3QgcHJlc2VudC5cbiAqL1xuZnVuY3Rpb24gbG9vc2VJbmRleE9mIChhcnIsIHZhbCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChsb29zZUVxdWFsKGFycltpXSwgdmFsKSkgeyByZXR1cm4gaSB9XG4gIH1cbiAgcmV0dXJuIC0xXG59XG5cbi8qKlxuICogRW5zdXJlIGEgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgb25jZS5cbiAqL1xuZnVuY3Rpb24gb25jZSAoZm4pIHtcbiAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmICghY2FsbGVkKSB7XG4gICAgICBjYWxsZWQgPSB0cnVlO1xuICAgICAgZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIFNTUl9BVFRSID0gJ2RhdGEtc2VydmVyLXJlbmRlcmVkJztcblxudmFyIEFTU0VUX1RZUEVTID0gW1xuICAnY29tcG9uZW50JyxcbiAgJ2RpcmVjdGl2ZScsXG4gICdmaWx0ZXInXG5dO1xuXG52YXIgTElGRUNZQ0xFX0hPT0tTID0gW1xuICAnYmVmb3JlQ3JlYXRlJyxcbiAgJ2NyZWF0ZWQnLFxuICAnYmVmb3JlTW91bnQnLFxuICAnbW91bnRlZCcsXG4gICdiZWZvcmVVcGRhdGUnLFxuICAndXBkYXRlZCcsXG4gICdiZWZvcmVEZXN0cm95JyxcbiAgJ2Rlc3Ryb3llZCcsXG4gICdhY3RpdmF0ZWQnLFxuICAnZGVhY3RpdmF0ZWQnLFxuICAnZXJyb3JDYXB0dXJlZCcsXG4gICdzZXJ2ZXJQcmVmZXRjaCdcbl07XG5cbi8qICAqL1xuXG5cblxudmFyIGNvbmZpZyA9ICh7XG4gIC8qKlxuICAgKiBPcHRpb24gbWVyZ2Ugc3RyYXRlZ2llcyAodXNlZCBpbiBjb3JlL3V0aWwvb3B0aW9ucylcbiAgICovXG4gIC8vICRmbG93LWRpc2FibGUtbGluZVxuICBvcHRpb25NZXJnZVN0cmF0ZWdpZXM6IE9iamVjdC5jcmVhdGUobnVsbCksXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc3VwcHJlc3Mgd2FybmluZ3MuXG4gICAqL1xuICBzaWxlbnQ6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBTaG93IHByb2R1Y3Rpb24gbW9kZSB0aXAgbWVzc2FnZSBvbiBib290P1xuICAgKi9cbiAgcHJvZHVjdGlvblRpcDogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyxcblxuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgZGV2dG9vbHNcbiAgICovXG4gIGRldnRvb2xzOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlY29yZCBwZXJmXG4gICAqL1xuICBwZXJmb3JtYW5jZTogZmFsc2UsXG5cbiAgLyoqXG4gICAqIEVycm9yIGhhbmRsZXIgZm9yIHdhdGNoZXIgZXJyb3JzXG4gICAqL1xuICBlcnJvckhhbmRsZXI6IG51bGwsXG5cbiAgLyoqXG4gICAqIFdhcm4gaGFuZGxlciBmb3Igd2F0Y2hlciB3YXJuc1xuICAgKi9cbiAgd2FybkhhbmRsZXI6IG51bGwsXG5cbiAgLyoqXG4gICAqIElnbm9yZSBjZXJ0YWluIGN1c3RvbSBlbGVtZW50c1xuICAgKi9cbiAgaWdub3JlZEVsZW1lbnRzOiBbXSxcblxuICAvKipcbiAgICogQ3VzdG9tIHVzZXIga2V5IGFsaWFzZXMgZm9yIHYtb25cbiAgICovXG4gIC8vICRmbG93LWRpc2FibGUtbGluZVxuICBrZXlDb2RlczogT2JqZWN0LmNyZWF0ZShudWxsKSxcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSB0YWcgaXMgcmVzZXJ2ZWQgc28gdGhhdCBpdCBjYW5ub3QgYmUgcmVnaXN0ZXJlZCBhcyBhXG4gICAqIGNvbXBvbmVudC4gVGhpcyBpcyBwbGF0Zm9ybS1kZXBlbmRlbnQgYW5kIG1heSBiZSBvdmVyd3JpdHRlbi5cbiAgICovXG4gIGlzUmVzZXJ2ZWRUYWc6IG5vLFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhdHRyaWJ1dGUgaXMgcmVzZXJ2ZWQgc28gdGhhdCBpdCBjYW5ub3QgYmUgdXNlZCBhcyBhIGNvbXBvbmVudFxuICAgKiBwcm9wLiBUaGlzIGlzIHBsYXRmb3JtLWRlcGVuZGVudCBhbmQgbWF5IGJlIG92ZXJ3cml0dGVuLlxuICAgKi9cbiAgaXNSZXNlcnZlZEF0dHI6IG5vLFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIHRhZyBpcyBhbiB1bmtub3duIGVsZW1lbnQuXG4gICAqIFBsYXRmb3JtLWRlcGVuZGVudC5cbiAgICovXG4gIGlzVW5rbm93bkVsZW1lbnQ6IG5vLFxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG5hbWVzcGFjZSBvZiBhbiBlbGVtZW50XG4gICAqL1xuICBnZXRUYWdOYW1lc3BhY2U6IG5vb3AsXG5cbiAgLyoqXG4gICAqIFBhcnNlIHRoZSByZWFsIHRhZyBuYW1lIGZvciB0aGUgc3BlY2lmaWMgcGxhdGZvcm0uXG4gICAqL1xuICBwYXJzZVBsYXRmb3JtVGFnTmFtZTogaWRlbnRpdHksXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGF0dHJpYnV0ZSBtdXN0IGJlIGJvdW5kIHVzaW5nIHByb3BlcnR5LCBlLmcuIHZhbHVlXG4gICAqIFBsYXRmb3JtLWRlcGVuZGVudC5cbiAgICovXG4gIG11c3RVc2VQcm9wOiBubyxcblxuICAvKipcbiAgICogUGVyZm9ybSB1cGRhdGVzIGFzeW5jaHJvbm91c2x5LiBJbnRlbmRlZCB0byBiZSB1c2VkIGJ5IFZ1ZSBUZXN0IFV0aWxzXG4gICAqIFRoaXMgd2lsbCBzaWduaWZpY2FudGx5IHJlZHVjZSBwZXJmb3JtYW5jZSBpZiBzZXQgdG8gZmFsc2UuXG4gICAqL1xuICBhc3luYzogdHJ1ZSxcblxuICAvKipcbiAgICogRXhwb3NlZCBmb3IgbGVnYWN5IHJlYXNvbnNcbiAgICovXG4gIF9saWZlY3ljbGVIb29rczogTElGRUNZQ0xFX0hPT0tTXG59KTtcblxuLyogICovXG5cbi8qKlxuICogdW5pY29kZSBsZXR0ZXJzIHVzZWQgZm9yIHBhcnNpbmcgaHRtbCB0YWdzLCBjb21wb25lbnQgbmFtZXMgYW5kIHByb3BlcnR5IHBhdGhzLlxuICogdXNpbmcgaHR0cHM6Ly93d3cudzMub3JnL1RSL2h0bWw1My9zZW1hbnRpY3Mtc2NyaXB0aW5nLmh0bWwjcG90ZW50aWFsY3VzdG9tZWxlbWVudG5hbWVcbiAqIHNraXBwaW5nIFxcdTEwMDAwLVxcdUVGRkZGIGR1ZSB0byBpdCBmcmVlemluZyB1cCBQaGFudG9tSlNcbiAqL1xudmFyIHVuaWNvZGVSZWdFeHAgPSAvYS16QS1aXFx1MDBCN1xcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwM0YtXFx1MjA0MFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRC87XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzdHJpbmcgc3RhcnRzIHdpdGggJCBvciBfXG4gKi9cbmZ1bmN0aW9uIGlzUmVzZXJ2ZWQgKHN0cikge1xuICB2YXIgYyA9IChzdHIgKyAnJykuY2hhckNvZGVBdCgwKTtcbiAgcmV0dXJuIGMgPT09IDB4MjQgfHwgYyA9PT0gMHg1RlxufVxuXG4vKipcbiAqIERlZmluZSBhIHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiBkZWYgKG9iaiwga2V5LCB2YWwsIGVudW1lcmFibGUpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgdmFsdWU6IHZhbCxcbiAgICBlbnVtZXJhYmxlOiAhIWVudW1lcmFibGUsXG4gICAgd3JpdGFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuXG4vKipcbiAqIFBhcnNlIHNpbXBsZSBwYXRoLlxuICovXG52YXIgYmFpbFJFID0gbmV3IFJlZ0V4cCgoXCJbXlwiICsgKHVuaWNvZGVSZWdFeHAuc291cmNlKSArIFwiLiRfXFxcXGRdXCIpKTtcbmZ1bmN0aW9uIHBhcnNlUGF0aCAocGF0aCkge1xuICBpZiAoYmFpbFJFLnRlc3QocGF0aCkpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgc2VnbWVudHMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gIHJldHVybiBmdW5jdGlvbiAob2JqKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFvYmopIHsgcmV0dXJuIH1cbiAgICAgIG9iaiA9IG9ialtzZWdtZW50c1tpXV07XG4gICAgfVxuICAgIHJldHVybiBvYmpcbiAgfVxufVxuXG4vKiAgKi9cblxuLy8gY2FuIHdlIHVzZSBfX3Byb3RvX18/XG52YXIgaGFzUHJvdG8gPSAnX19wcm90b19fJyBpbiB7fTtcblxuLy8gQnJvd3NlciBlbnZpcm9ubWVudCBzbmlmZmluZ1xudmFyIGluQnJvd3NlciA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xudmFyIGluV2VleCA9IHR5cGVvZiBXWEVudmlyb25tZW50ICE9PSAndW5kZWZpbmVkJyAmJiAhIVdYRW52aXJvbm1lbnQucGxhdGZvcm07XG52YXIgd2VleFBsYXRmb3JtID0gaW5XZWV4ICYmIFdYRW52aXJvbm1lbnQucGxhdGZvcm0udG9Mb3dlckNhc2UoKTtcbnZhciBVQSA9IGluQnJvd3NlciAmJiB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xudmFyIGlzSUUgPSBVQSAmJiAvbXNpZXx0cmlkZW50Ly50ZXN0KFVBKTtcbnZhciBpc0lFOSA9IFVBICYmIFVBLmluZGV4T2YoJ21zaWUgOS4wJykgPiAwO1xudmFyIGlzRWRnZSA9IFVBICYmIFVBLmluZGV4T2YoJ2VkZ2UvJykgPiAwO1xudmFyIGlzQW5kcm9pZCA9IChVQSAmJiBVQS5pbmRleE9mKCdhbmRyb2lkJykgPiAwKSB8fCAod2VleFBsYXRmb3JtID09PSAnYW5kcm9pZCcpO1xudmFyIGlzSU9TID0gKFVBICYmIC9pcGhvbmV8aXBhZHxpcG9kfGlvcy8udGVzdChVQSkpIHx8ICh3ZWV4UGxhdGZvcm0gPT09ICdpb3MnKTtcbnZhciBpc0Nocm9tZSA9IFVBICYmIC9jaHJvbWVcXC9cXGQrLy50ZXN0KFVBKSAmJiAhaXNFZGdlO1xudmFyIGlzUGhhbnRvbUpTID0gVUEgJiYgL3BoYW50b21qcy8udGVzdChVQSk7XG52YXIgaXNGRiA9IFVBICYmIFVBLm1hdGNoKC9maXJlZm94XFwvKFxcZCspLyk7XG5cbi8vIEZpcmVmb3ggaGFzIGEgXCJ3YXRjaFwiIGZ1bmN0aW9uIG9uIE9iamVjdC5wcm90b3R5cGUuLi5cbnZhciBuYXRpdmVXYXRjaCA9ICh7fSkud2F0Y2g7XG5cbnZhciBzdXBwb3J0c1Bhc3NpdmUgPSBmYWxzZTtcbmlmIChpbkJyb3dzZXIpIHtcbiAgdHJ5IHtcbiAgICB2YXIgb3B0cyA9IHt9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvcHRzLCAncGFzc2l2ZScsICh7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCAoKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHN1cHBvcnRzUGFzc2l2ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSkpOyAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvMjg1XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Rlc3QtcGFzc2l2ZScsIG51bGwsIG9wdHMpO1xuICB9IGNhdGNoIChlKSB7fVxufVxuXG4vLyB0aGlzIG5lZWRzIHRvIGJlIGxhenktZXZhbGVkIGJlY2F1c2UgdnVlIG1heSBiZSByZXF1aXJlZCBiZWZvcmVcbi8vIHZ1ZS1zZXJ2ZXItcmVuZGVyZXIgY2FuIHNldCBWVUVfRU5WXG52YXIgX2lzU2VydmVyO1xudmFyIGlzU2VydmVyUmVuZGVyaW5nID0gZnVuY3Rpb24gKCkge1xuICBpZiAoX2lzU2VydmVyID09PSB1bmRlZmluZWQpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIWluQnJvd3NlciAmJiAhaW5XZWV4ICYmIHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBkZXRlY3QgcHJlc2VuY2Ugb2YgdnVlLXNlcnZlci1yZW5kZXJlciBhbmQgYXZvaWRcbiAgICAgIC8vIFdlYnBhY2sgc2hpbW1pbmcgdGhlIHByb2Nlc3NcbiAgICAgIF9pc1NlcnZlciA9IGdsb2JhbFsncHJvY2VzcyddICYmIGdsb2JhbFsncHJvY2VzcyddLmVudi5WVUVfRU5WID09PSAnc2VydmVyJztcbiAgICB9IGVsc2Uge1xuICAgICAgX2lzU2VydmVyID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiBfaXNTZXJ2ZXJcbn07XG5cbi8vIGRldGVjdCBkZXZ0b29sc1xudmFyIGRldnRvb2xzID0gaW5Ccm93c2VyICYmIHdpbmRvdy5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gaXNOYXRpdmUgKEN0b3IpIHtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09PSAnZnVuY3Rpb24nICYmIC9uYXRpdmUgY29kZS8udGVzdChDdG9yLnRvU3RyaW5nKCkpXG59XG5cbnZhciBoYXNTeW1ib2wgPVxuICB0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShTeW1ib2wpICYmXG4gIHR5cGVvZiBSZWZsZWN0ICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShSZWZsZWN0Lm93bktleXMpO1xuXG52YXIgX1NldDtcbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqLyAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbmlmICh0eXBlb2YgU2V0ICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShTZXQpKSB7XG4gIC8vIHVzZSBuYXRpdmUgU2V0IHdoZW4gYXZhaWxhYmxlLlxuICBfU2V0ID0gU2V0O1xufSBlbHNlIHtcbiAgLy8gYSBub24tc3RhbmRhcmQgU2V0IHBvbHlmaWxsIHRoYXQgb25seSB3b3JrcyB3aXRoIHByaW1pdGl2ZSBrZXlzLlxuICBfU2V0ID0gLypAX19QVVJFX18qLyhmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU2V0ICgpIHtcbiAgICAgIHRoaXMuc2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB9XG4gICAgU2V0LnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiBoYXMgKGtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0W2tleV0gPT09IHRydWVcbiAgICB9O1xuICAgIFNldC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChrZXkpIHtcbiAgICAgIHRoaXMuc2V0W2tleV0gPSB0cnVlO1xuICAgIH07XG4gICAgU2V0LnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uIGNsZWFyICgpIHtcbiAgICAgIHRoaXMuc2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIFNldDtcbiAgfSgpKTtcbn1cblxuLyogICovXG5cbnZhciB3YXJuID0gbm9vcDtcbnZhciB0aXAgPSBub29wO1xudmFyIGdlbmVyYXRlQ29tcG9uZW50VHJhY2UgPSAobm9vcCk7IC8vIHdvcmsgYXJvdW5kIGZsb3cgY2hlY2tcbnZhciBmb3JtYXRDb21wb25lbnROYW1lID0gKG5vb3ApO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgaGFzQ29uc29sZSA9IHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJztcbiAgdmFyIGNsYXNzaWZ5UkUgPSAvKD86XnxbLV9dKShcXHcpL2c7XG4gIHZhciBjbGFzc2lmeSA9IGZ1bmN0aW9uIChzdHIpIHsgcmV0dXJuIHN0clxuICAgIC5yZXBsYWNlKGNsYXNzaWZ5UkUsIGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLnRvVXBwZXJDYXNlKCk7IH0pXG4gICAgLnJlcGxhY2UoL1stX10vZywgJycpOyB9O1xuXG4gIHdhcm4gPSBmdW5jdGlvbiAobXNnLCB2bSkge1xuICAgIHZhciB0cmFjZSA9IHZtID8gZ2VuZXJhdGVDb21wb25lbnRUcmFjZSh2bSkgOiAnJztcblxuICAgIGlmIChjb25maWcud2FybkhhbmRsZXIpIHtcbiAgICAgIGNvbmZpZy53YXJuSGFuZGxlci5jYWxsKG51bGwsIG1zZywgdm0sIHRyYWNlKTtcbiAgICB9IGVsc2UgaWYgKGhhc0NvbnNvbGUgJiYgKCFjb25maWcuc2lsZW50KSkge1xuICAgICAgY29uc29sZS5lcnJvcigoXCJbVnVlIHdhcm5dOiBcIiArIG1zZyArIHRyYWNlKSk7XG4gICAgfVxuICB9O1xuXG4gIHRpcCA9IGZ1bmN0aW9uIChtc2csIHZtKSB7XG4gICAgaWYgKGhhc0NvbnNvbGUgJiYgKCFjb25maWcuc2lsZW50KSkge1xuICAgICAgY29uc29sZS53YXJuKFwiW1Z1ZSB0aXBdOiBcIiArIG1zZyArIChcbiAgICAgICAgdm0gPyBnZW5lcmF0ZUNvbXBvbmVudFRyYWNlKHZtKSA6ICcnXG4gICAgICApKTtcbiAgICB9XG4gIH07XG5cbiAgZm9ybWF0Q29tcG9uZW50TmFtZSA9IGZ1bmN0aW9uICh2bSwgaW5jbHVkZUZpbGUpIHtcbiAgICBpZiAodm0uJHJvb3QgPT09IHZtKSB7XG4gICAgICByZXR1cm4gJzxSb290PidcbiAgICB9XG4gICAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygdm0gPT09ICdmdW5jdGlvbicgJiYgdm0uY2lkICE9IG51bGxcbiAgICAgID8gdm0ub3B0aW9uc1xuICAgICAgOiB2bS5faXNWdWVcbiAgICAgICAgPyB2bS4kb3B0aW9ucyB8fCB2bS5jb25zdHJ1Y3Rvci5vcHRpb25zXG4gICAgICAgIDogdm07XG4gICAgdmFyIG5hbWUgPSBvcHRpb25zLm5hbWUgfHwgb3B0aW9ucy5fY29tcG9uZW50VGFnO1xuICAgIHZhciBmaWxlID0gb3B0aW9ucy5fX2ZpbGU7XG4gICAgaWYgKCFuYW1lICYmIGZpbGUpIHtcbiAgICAgIHZhciBtYXRjaCA9IGZpbGUubWF0Y2goLyhbXi9cXFxcXSspXFwudnVlJC8pO1xuICAgICAgbmFtZSA9IG1hdGNoICYmIG1hdGNoWzFdO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAobmFtZSA/IChcIjxcIiArIChjbGFzc2lmeShuYW1lKSkgKyBcIj5cIikgOiBcIjxBbm9ueW1vdXM+XCIpICtcbiAgICAgIChmaWxlICYmIGluY2x1ZGVGaWxlICE9PSBmYWxzZSA/IChcIiBhdCBcIiArIGZpbGUpIDogJycpXG4gICAgKVxuICB9O1xuXG4gIHZhciByZXBlYXQgPSBmdW5jdGlvbiAoc3RyLCBuKSB7XG4gICAgdmFyIHJlcyA9ICcnO1xuICAgIHdoaWxlIChuKSB7XG4gICAgICBpZiAobiAlIDIgPT09IDEpIHsgcmVzICs9IHN0cjsgfVxuICAgICAgaWYgKG4gPiAxKSB7IHN0ciArPSBzdHI7IH1cbiAgICAgIG4gPj49IDE7XG4gICAgfVxuICAgIHJldHVybiByZXNcbiAgfTtcblxuICBnZW5lcmF0ZUNvbXBvbmVudFRyYWNlID0gZnVuY3Rpb24gKHZtKSB7XG4gICAgaWYgKHZtLl9pc1Z1ZSAmJiB2bS4kcGFyZW50KSB7XG4gICAgICB2YXIgdHJlZSA9IFtdO1xuICAgICAgdmFyIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZSA9IDA7XG4gICAgICB3aGlsZSAodm0pIHtcbiAgICAgICAgaWYgKHRyZWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHZhciBsYXN0ID0gdHJlZVt0cmVlLmxlbmd0aCAtIDFdO1xuICAgICAgICAgIGlmIChsYXN0LmNvbnN0cnVjdG9yID09PSB2bS5jb25zdHJ1Y3Rvcikge1xuICAgICAgICAgICAgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlKys7XG4gICAgICAgICAgICB2bSA9IHZtLiRwYXJlbnQ7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlID4gMCkge1xuICAgICAgICAgICAgdHJlZVt0cmVlLmxlbmd0aCAtIDFdID0gW2xhc3QsIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZV07XG4gICAgICAgICAgICBjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2UgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0cmVlLnB1c2godm0pO1xuICAgICAgICB2bSA9IHZtLiRwYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gJ1xcblxcbmZvdW5kIGluXFxuXFxuJyArIHRyZWVcbiAgICAgICAgLm1hcChmdW5jdGlvbiAodm0sIGkpIHsgcmV0dXJuIChcIlwiICsgKGkgPT09IDAgPyAnLS0tPiAnIDogcmVwZWF0KCcgJywgNSArIGkgKiAyKSkgKyAoQXJyYXkuaXNBcnJheSh2bSlcbiAgICAgICAgICAgID8gKChmb3JtYXRDb21wb25lbnROYW1lKHZtWzBdKSkgKyBcIi4uLiAoXCIgKyAodm1bMV0pICsgXCIgcmVjdXJzaXZlIGNhbGxzKVwiKVxuICAgICAgICAgICAgOiBmb3JtYXRDb21wb25lbnROYW1lKHZtKSkpOyB9KVxuICAgICAgICAuam9pbignXFxuJylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChcIlxcblxcbihmb3VuZCBpbiBcIiArIChmb3JtYXRDb21wb25lbnROYW1lKHZtKSkgKyBcIilcIilcbiAgICB9XG4gIH07XG59XG5cbi8qICAqL1xuXG52YXIgdWlkID0gMDtcblxuLyoqXG4gKiBBIGRlcCBpcyBhbiBvYnNlcnZhYmxlIHRoYXQgY2FuIGhhdmUgbXVsdGlwbGVcbiAqIGRpcmVjdGl2ZXMgc3Vic2NyaWJpbmcgdG8gaXQuXG4gKi9cbnZhciBEZXAgPSBmdW5jdGlvbiBEZXAgKCkge1xuICB0aGlzLmlkID0gdWlkKys7XG4gIHRoaXMuc3VicyA9IFtdO1xufTtcblxuRGVwLnByb3RvdHlwZS5hZGRTdWIgPSBmdW5jdGlvbiBhZGRTdWIgKHN1Yikge1xuICB0aGlzLnN1YnMucHVzaChzdWIpO1xufTtcblxuRGVwLnByb3RvdHlwZS5yZW1vdmVTdWIgPSBmdW5jdGlvbiByZW1vdmVTdWIgKHN1Yikge1xuICByZW1vdmUodGhpcy5zdWJzLCBzdWIpO1xufTtcblxuRGVwLnByb3RvdHlwZS5kZXBlbmQgPSBmdW5jdGlvbiBkZXBlbmQgKCkge1xuICBpZiAoRGVwLnRhcmdldCkge1xuICAgIERlcC50YXJnZXQuYWRkRGVwKHRoaXMpO1xuICB9XG59O1xuXG5EZXAucHJvdG90eXBlLm5vdGlmeSA9IGZ1bmN0aW9uIG5vdGlmeSAoKSB7XG4gIC8vIHN0YWJpbGl6ZSB0aGUgc3Vic2NyaWJlciBsaXN0IGZpcnN0XG4gIHZhciBzdWJzID0gdGhpcy5zdWJzLnNsaWNlKCk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFjb25maWcuYXN5bmMpIHtcbiAgICAvLyBzdWJzIGFyZW4ndCBzb3J0ZWQgaW4gc2NoZWR1bGVyIGlmIG5vdCBydW5uaW5nIGFzeW5jXG4gICAgLy8gd2UgbmVlZCB0byBzb3J0IHRoZW0gbm93IHRvIG1ha2Ugc3VyZSB0aGV5IGZpcmUgaW4gY29ycmVjdFxuICAgIC8vIG9yZGVyXG4gICAgc3Vicy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLmlkIC0gYi5pZDsgfSk7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBzdWJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHN1YnNbaV0udXBkYXRlKCk7XG4gIH1cbn07XG5cbi8vIFRoZSBjdXJyZW50IHRhcmdldCB3YXRjaGVyIGJlaW5nIGV2YWx1YXRlZC5cbi8vIFRoaXMgaXMgZ2xvYmFsbHkgdW5pcXVlIGJlY2F1c2Ugb25seSBvbmUgd2F0Y2hlclxuLy8gY2FuIGJlIGV2YWx1YXRlZCBhdCBhIHRpbWUuXG5EZXAudGFyZ2V0ID0gbnVsbDtcbnZhciB0YXJnZXRTdGFjayA9IFtdO1xuXG5mdW5jdGlvbiBwdXNoVGFyZ2V0ICh0YXJnZXQpIHtcbiAgdGFyZ2V0U3RhY2sucHVzaCh0YXJnZXQpO1xuICBEZXAudGFyZ2V0ID0gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBwb3BUYXJnZXQgKCkge1xuICB0YXJnZXRTdGFjay5wb3AoKTtcbiAgRGVwLnRhcmdldCA9IHRhcmdldFN0YWNrW3RhcmdldFN0YWNrLmxlbmd0aCAtIDFdO1xufVxuXG4vKiAgKi9cblxudmFyIFZOb2RlID0gZnVuY3Rpb24gVk5vZGUgKFxuICB0YWcsXG4gIGRhdGEsXG4gIGNoaWxkcmVuLFxuICB0ZXh0LFxuICBlbG0sXG4gIGNvbnRleHQsXG4gIGNvbXBvbmVudE9wdGlvbnMsXG4gIGFzeW5jRmFjdG9yeVxuKSB7XG4gIHRoaXMudGFnID0gdGFnO1xuICB0aGlzLmRhdGEgPSBkYXRhO1xuICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIHRoaXMudGV4dCA9IHRleHQ7XG4gIHRoaXMuZWxtID0gZWxtO1xuICB0aGlzLm5zID0gdW5kZWZpbmVkO1xuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLmZuQ29udGV4dCA9IHVuZGVmaW5lZDtcbiAgdGhpcy5mbk9wdGlvbnMgPSB1bmRlZmluZWQ7XG4gIHRoaXMuZm5TY29wZUlkID0gdW5kZWZpbmVkO1xuICB0aGlzLmtleSA9IGRhdGEgJiYgZGF0YS5rZXk7XG4gIHRoaXMuY29tcG9uZW50T3B0aW9ucyA9IGNvbXBvbmVudE9wdGlvbnM7XG4gIHRoaXMuY29tcG9uZW50SW5zdGFuY2UgPSB1bmRlZmluZWQ7XG4gIHRoaXMucGFyZW50ID0gdW5kZWZpbmVkO1xuICB0aGlzLnJhdyA9IGZhbHNlO1xuICB0aGlzLmlzU3RhdGljID0gZmFsc2U7XG4gIHRoaXMuaXNSb290SW5zZXJ0ID0gdHJ1ZTtcbiAgdGhpcy5pc0NvbW1lbnQgPSBmYWxzZTtcbiAgdGhpcy5pc0Nsb25lZCA9IGZhbHNlO1xuICB0aGlzLmlzT25jZSA9IGZhbHNlO1xuICB0aGlzLmFzeW5jRmFjdG9yeSA9IGFzeW5jRmFjdG9yeTtcbiAgdGhpcy5hc3luY01ldGEgPSB1bmRlZmluZWQ7XG4gIHRoaXMuaXNBc3luY1BsYWNlaG9sZGVyID0gZmFsc2U7XG59O1xuXG52YXIgcHJvdG90eXBlQWNjZXNzb3JzID0geyBjaGlsZDogeyBjb25maWd1cmFibGU6IHRydWUgfSB9O1xuXG4vLyBERVBSRUNBVEVEOiBhbGlhcyBmb3IgY29tcG9uZW50SW5zdGFuY2UgZm9yIGJhY2t3YXJkcyBjb21wYXQuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xucHJvdG90eXBlQWNjZXNzb3JzLmNoaWxkLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuY29tcG9uZW50SW5zdGFuY2Vcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBWTm9kZS5wcm90b3R5cGUsIHByb3RvdHlwZUFjY2Vzc29ycyApO1xuXG52YXIgY3JlYXRlRW1wdHlWTm9kZSA9IGZ1bmN0aW9uICh0ZXh0KSB7XG4gIGlmICggdGV4dCA9PT0gdm9pZCAwICkgdGV4dCA9ICcnO1xuXG4gIHZhciBub2RlID0gbmV3IFZOb2RlKCk7XG4gIG5vZGUudGV4dCA9IHRleHQ7XG4gIG5vZGUuaXNDb21tZW50ID0gdHJ1ZTtcbiAgcmV0dXJuIG5vZGVcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZVRleHRWTm9kZSAodmFsKSB7XG4gIHJldHVybiBuZXcgVk5vZGUodW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgU3RyaW5nKHZhbCkpXG59XG5cbi8vIG9wdGltaXplZCBzaGFsbG93IGNsb25lXG4vLyB1c2VkIGZvciBzdGF0aWMgbm9kZXMgYW5kIHNsb3Qgbm9kZXMgYmVjYXVzZSB0aGV5IG1heSBiZSByZXVzZWQgYWNyb3NzXG4vLyBtdWx0aXBsZSByZW5kZXJzLCBjbG9uaW5nIHRoZW0gYXZvaWRzIGVycm9ycyB3aGVuIERPTSBtYW5pcHVsYXRpb25zIHJlbHlcbi8vIG9uIHRoZWlyIGVsbSByZWZlcmVuY2UuXG5mdW5jdGlvbiBjbG9uZVZOb2RlICh2bm9kZSkge1xuICB2YXIgY2xvbmVkID0gbmV3IFZOb2RlKFxuICAgIHZub2RlLnRhZyxcbiAgICB2bm9kZS5kYXRhLFxuICAgIC8vICM3OTc1XG4gICAgLy8gY2xvbmUgY2hpbGRyZW4gYXJyYXkgdG8gYXZvaWQgbXV0YXRpbmcgb3JpZ2luYWwgaW4gY2FzZSBvZiBjbG9uaW5nXG4gICAgLy8gYSBjaGlsZC5cbiAgICB2bm9kZS5jaGlsZHJlbiAmJiB2bm9kZS5jaGlsZHJlbi5zbGljZSgpLFxuICAgIHZub2RlLnRleHQsXG4gICAgdm5vZGUuZWxtLFxuICAgIHZub2RlLmNvbnRleHQsXG4gICAgdm5vZGUuY29tcG9uZW50T3B0aW9ucyxcbiAgICB2bm9kZS5hc3luY0ZhY3RvcnlcbiAgKTtcbiAgY2xvbmVkLm5zID0gdm5vZGUubnM7XG4gIGNsb25lZC5pc1N0YXRpYyA9IHZub2RlLmlzU3RhdGljO1xuICBjbG9uZWQua2V5ID0gdm5vZGUua2V5O1xuICBjbG9uZWQuaXNDb21tZW50ID0gdm5vZGUuaXNDb21tZW50O1xuICBjbG9uZWQuZm5Db250ZXh0ID0gdm5vZGUuZm5Db250ZXh0O1xuICBjbG9uZWQuZm5PcHRpb25zID0gdm5vZGUuZm5PcHRpb25zO1xuICBjbG9uZWQuZm5TY29wZUlkID0gdm5vZGUuZm5TY29wZUlkO1xuICBjbG9uZWQuYXN5bmNNZXRhID0gdm5vZGUuYXN5bmNNZXRhO1xuICBjbG9uZWQuaXNDbG9uZWQgPSB0cnVlO1xuICByZXR1cm4gY2xvbmVkXG59XG5cbi8qXG4gKiBub3QgdHlwZSBjaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBmbG93IGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGhcbiAqIGR5bmFtaWNhbGx5IGFjY2Vzc2luZyBtZXRob2RzIG9uIEFycmF5IHByb3RvdHlwZVxuICovXG5cbnZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xudmFyIGFycmF5TWV0aG9kcyA9IE9iamVjdC5jcmVhdGUoYXJyYXlQcm90byk7XG5cbnZhciBtZXRob2RzVG9QYXRjaCA9IFtcbiAgJ3B1c2gnLFxuICAncG9wJyxcbiAgJ3NoaWZ0JyxcbiAgJ3Vuc2hpZnQnLFxuICAnc3BsaWNlJyxcbiAgJ3NvcnQnLFxuICAncmV2ZXJzZSdcbl07XG5cbi8qKlxuICogSW50ZXJjZXB0IG11dGF0aW5nIG1ldGhvZHMgYW5kIGVtaXQgZXZlbnRzXG4gKi9cbm1ldGhvZHNUb1BhdGNoLmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuICAvLyBjYWNoZSBvcmlnaW5hbCBtZXRob2RcbiAgdmFyIG9yaWdpbmFsID0gYXJyYXlQcm90b1ttZXRob2RdO1xuICBkZWYoYXJyYXlNZXRob2RzLCBtZXRob2QsIGZ1bmN0aW9uIG11dGF0b3IgKCkge1xuICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gXTtcblxuICAgIHZhciByZXN1bHQgPSBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB2YXIgb2IgPSB0aGlzLl9fb2JfXztcbiAgICB2YXIgaW5zZXJ0ZWQ7XG4gICAgc3dpdGNoIChtZXRob2QpIHtcbiAgICAgIGNhc2UgJ3B1c2gnOlxuICAgICAgY2FzZSAndW5zaGlmdCc6XG4gICAgICAgIGluc2VydGVkID0gYXJncztcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3NwbGljZSc6XG4gICAgICAgIGluc2VydGVkID0gYXJncy5zbGljZSgyKTtcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gICAgaWYgKGluc2VydGVkKSB7IG9iLm9ic2VydmVBcnJheShpbnNlcnRlZCk7IH1cbiAgICAvLyBub3RpZnkgY2hhbmdlXG4gICAgb2IuZGVwLm5vdGlmeSgpO1xuICAgIHJldHVybiByZXN1bHRcbiAgfSk7XG59KTtcblxuLyogICovXG5cbnZhciBhcnJheUtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhhcnJheU1ldGhvZHMpO1xuXG4vKipcbiAqIEluIHNvbWUgY2FzZXMgd2UgbWF5IHdhbnQgdG8gZGlzYWJsZSBvYnNlcnZhdGlvbiBpbnNpZGUgYSBjb21wb25lbnQnc1xuICogdXBkYXRlIGNvbXB1dGF0aW9uLlxuICovXG52YXIgc2hvdWxkT2JzZXJ2ZSA9IHRydWU7XG5cbmZ1bmN0aW9uIHRvZ2dsZU9ic2VydmluZyAodmFsdWUpIHtcbiAgc2hvdWxkT2JzZXJ2ZSA9IHZhbHVlO1xufVxuXG4vKipcbiAqIE9ic2VydmVyIGNsYXNzIHRoYXQgaXMgYXR0YWNoZWQgdG8gZWFjaCBvYnNlcnZlZFxuICogb2JqZWN0LiBPbmNlIGF0dGFjaGVkLCB0aGUgb2JzZXJ2ZXIgY29udmVydHMgdGhlIHRhcmdldFxuICogb2JqZWN0J3MgcHJvcGVydHkga2V5cyBpbnRvIGdldHRlci9zZXR0ZXJzIHRoYXRcbiAqIGNvbGxlY3QgZGVwZW5kZW5jaWVzIGFuZCBkaXNwYXRjaCB1cGRhdGVzLlxuICovXG52YXIgT2JzZXJ2ZXIgPSBmdW5jdGlvbiBPYnNlcnZlciAodmFsdWUpIHtcbiAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB0aGlzLmRlcCA9IG5ldyBEZXAoKTtcbiAgdGhpcy52bUNvdW50ID0gMDtcbiAgZGVmKHZhbHVlLCAnX19vYl9fJywgdGhpcyk7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGlmIChoYXNQcm90bykge1xuICAgICAgcHJvdG9BdWdtZW50KHZhbHVlLCBhcnJheU1ldGhvZHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb3B5QXVnbWVudCh2YWx1ZSwgYXJyYXlNZXRob2RzLCBhcnJheUtleXMpO1xuICAgIH1cbiAgICB0aGlzLm9ic2VydmVBcnJheSh2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy53YWxrKHZhbHVlKTtcbiAgfVxufTtcblxuLyoqXG4gKiBXYWxrIHRocm91Z2ggYWxsIHByb3BlcnRpZXMgYW5kIGNvbnZlcnQgdGhlbSBpbnRvXG4gKiBnZXR0ZXIvc2V0dGVycy4gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW5cbiAqIHZhbHVlIHR5cGUgaXMgT2JqZWN0LlxuICovXG5PYnNlcnZlci5wcm90b3R5cGUud2FsayA9IGZ1bmN0aW9uIHdhbGsgKG9iaikge1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGRlZmluZVJlYWN0aXZlJCQxKG9iaiwga2V5c1tpXSk7XG4gIH1cbn07XG5cbi8qKlxuICogT2JzZXJ2ZSBhIGxpc3Qgb2YgQXJyYXkgaXRlbXMuXG4gKi9cbk9ic2VydmVyLnByb3RvdHlwZS5vYnNlcnZlQXJyYXkgPSBmdW5jdGlvbiBvYnNlcnZlQXJyYXkgKGl0ZW1zKSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0gaXRlbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgb2JzZXJ2ZShpdGVtc1tpXSk7XG4gIH1cbn07XG5cbi8vIGhlbHBlcnNcblxuLyoqXG4gKiBBdWdtZW50IGEgdGFyZ2V0IE9iamVjdCBvciBBcnJheSBieSBpbnRlcmNlcHRpbmdcbiAqIHRoZSBwcm90b3R5cGUgY2hhaW4gdXNpbmcgX19wcm90b19fXG4gKi9cbmZ1bmN0aW9uIHByb3RvQXVnbWVudCAodGFyZ2V0LCBzcmMpIHtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cbiAgdGFyZ2V0Ll9fcHJvdG9fXyA9IHNyYztcbiAgLyogZXNsaW50LWVuYWJsZSBuby1wcm90byAqL1xufVxuXG4vKipcbiAqIEF1Z21lbnQgYSB0YXJnZXQgT2JqZWN0IG9yIEFycmF5IGJ5IGRlZmluaW5nXG4gKiBoaWRkZW4gcHJvcGVydGllcy5cbiAqL1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIGNvcHlBdWdtZW50ICh0YXJnZXQsIHNyYywga2V5cykge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgZGVmKHRhcmdldCwga2V5LCBzcmNba2V5XSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYnNlcnZlciBpbnN0YW5jZSBmb3IgYSB2YWx1ZSxcbiAqIHJldHVybnMgdGhlIG5ldyBvYnNlcnZlciBpZiBzdWNjZXNzZnVsbHkgb2JzZXJ2ZWQsXG4gKiBvciB0aGUgZXhpc3Rpbmcgb2JzZXJ2ZXIgaWYgdGhlIHZhbHVlIGFscmVhZHkgaGFzIG9uZS5cbiAqL1xuZnVuY3Rpb24gb2JzZXJ2ZSAodmFsdWUsIGFzUm9vdERhdGEpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBWTm9kZSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBvYjtcbiAgaWYgKGhhc093bih2YWx1ZSwgJ19fb2JfXycpICYmIHZhbHVlLl9fb2JfXyBpbnN0YW5jZW9mIE9ic2VydmVyKSB7XG4gICAgb2IgPSB2YWx1ZS5fX29iX187XG4gIH0gZWxzZSBpZiAoXG4gICAgc2hvdWxkT2JzZXJ2ZSAmJlxuICAgICFpc1NlcnZlclJlbmRlcmluZygpICYmXG4gICAgKEFycmF5LmlzQXJyYXkodmFsdWUpIHx8IGlzUGxhaW5PYmplY3QodmFsdWUpKSAmJlxuICAgIE9iamVjdC5pc0V4dGVuc2libGUodmFsdWUpICYmXG4gICAgIXZhbHVlLl9pc1Z1ZVxuICApIHtcbiAgICBvYiA9IG5ldyBPYnNlcnZlcih2YWx1ZSk7XG4gIH1cbiAgaWYgKGFzUm9vdERhdGEgJiYgb2IpIHtcbiAgICBvYi52bUNvdW50Kys7XG4gIH1cbiAgcmV0dXJuIG9iXG59XG5cbi8qKlxuICogRGVmaW5lIGEgcmVhY3RpdmUgcHJvcGVydHkgb24gYW4gT2JqZWN0LlxuICovXG5mdW5jdGlvbiBkZWZpbmVSZWFjdGl2ZSQkMSAoXG4gIG9iaixcbiAga2V5LFxuICB2YWwsXG4gIGN1c3RvbVNldHRlcixcbiAgc2hhbGxvd1xuKSB7XG4gIHZhciBkZXAgPSBuZXcgRGVwKCk7XG5cbiAgdmFyIHByb3BlcnR5ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSk7XG4gIGlmIChwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5jb25maWd1cmFibGUgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBjYXRlciBmb3IgcHJlLWRlZmluZWQgZ2V0dGVyL3NldHRlcnNcbiAgdmFyIGdldHRlciA9IHByb3BlcnR5ICYmIHByb3BlcnR5LmdldDtcbiAgdmFyIHNldHRlciA9IHByb3BlcnR5ICYmIHByb3BlcnR5LnNldDtcbiAgaWYgKCghZ2V0dGVyIHx8IHNldHRlcikgJiYgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgIHZhbCA9IG9ialtrZXldO1xuICB9XG5cbiAgdmFyIGNoaWxkT2IgPSAhc2hhbGxvdyAmJiBvYnNlcnZlKHZhbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gcmVhY3RpdmVHZXR0ZXIgKCkge1xuICAgICAgdmFyIHZhbHVlID0gZ2V0dGVyID8gZ2V0dGVyLmNhbGwob2JqKSA6IHZhbDtcbiAgICAgIGlmIChEZXAudGFyZ2V0KSB7XG4gICAgICAgIGRlcC5kZXBlbmQoKTtcbiAgICAgICAgaWYgKGNoaWxkT2IpIHtcbiAgICAgICAgICBjaGlsZE9iLmRlcC5kZXBlbmQoKTtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGRlcGVuZEFycmF5KHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiByZWFjdGl2ZVNldHRlciAobmV3VmFsKSB7XG4gICAgICB2YXIgdmFsdWUgPSBnZXR0ZXIgPyBnZXR0ZXIuY2FsbChvYmopIDogdmFsO1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlICovXG4gICAgICBpZiAobmV3VmFsID09PSB2YWx1ZSB8fCAobmV3VmFsICE9PSBuZXdWYWwgJiYgdmFsdWUgIT09IHZhbHVlKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tc2VsZi1jb21wYXJlICovXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjdXN0b21TZXR0ZXIpIHtcbiAgICAgICAgY3VzdG9tU2V0dGVyKCk7XG4gICAgICB9XG4gICAgICAvLyAjNzk4MTogZm9yIGFjY2Vzc29yIHByb3BlcnRpZXMgd2l0aG91dCBzZXR0ZXJcbiAgICAgIGlmIChnZXR0ZXIgJiYgIXNldHRlcikgeyByZXR1cm4gfVxuICAgICAgaWYgKHNldHRlcikge1xuICAgICAgICBzZXR0ZXIuY2FsbChvYmosIG5ld1ZhbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWwgPSBuZXdWYWw7XG4gICAgICB9XG4gICAgICBjaGlsZE9iID0gIXNoYWxsb3cgJiYgb2JzZXJ2ZShuZXdWYWwpO1xuICAgICAgZGVwLm5vdGlmeSgpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogU2V0IGEgcHJvcGVydHkgb24gYW4gb2JqZWN0LiBBZGRzIHRoZSBuZXcgcHJvcGVydHkgYW5kXG4gKiB0cmlnZ2VycyBjaGFuZ2Ugbm90aWZpY2F0aW9uIGlmIHRoZSBwcm9wZXJ0eSBkb2Vzbid0XG4gKiBhbHJlYWR5IGV4aXN0LlxuICovXG5mdW5jdGlvbiBzZXQgKHRhcmdldCwga2V5LCB2YWwpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAoaXNVbmRlZih0YXJnZXQpIHx8IGlzUHJpbWl0aXZlKHRhcmdldCkpXG4gICkge1xuICAgIHdhcm4oKFwiQ2Fubm90IHNldCByZWFjdGl2ZSBwcm9wZXJ0eSBvbiB1bmRlZmluZWQsIG51bGwsIG9yIHByaW1pdGl2ZSB2YWx1ZTogXCIgKyAoKHRhcmdldCkpKSk7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSAmJiBpc1ZhbGlkQXJyYXlJbmRleChrZXkpKSB7XG4gICAgdGFyZ2V0Lmxlbmd0aCA9IE1hdGgubWF4KHRhcmdldC5sZW5ndGgsIGtleSk7XG4gICAgdGFyZ2V0LnNwbGljZShrZXksIDEsIHZhbCk7XG4gICAgcmV0dXJuIHZhbFxuICB9XG4gIGlmIChrZXkgaW4gdGFyZ2V0ICYmICEoa2V5IGluIE9iamVjdC5wcm90b3R5cGUpKSB7XG4gICAgdGFyZ2V0W2tleV0gPSB2YWw7XG4gICAgcmV0dXJuIHZhbFxuICB9XG4gIHZhciBvYiA9ICh0YXJnZXQpLl9fb2JfXztcbiAgaWYgKHRhcmdldC5faXNWdWUgfHwgKG9iICYmIG9iLnZtQ291bnQpKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgJ0F2b2lkIGFkZGluZyByZWFjdGl2ZSBwcm9wZXJ0aWVzIHRvIGEgVnVlIGluc3RhbmNlIG9yIGl0cyByb290ICRkYXRhICcgK1xuICAgICAgJ2F0IHJ1bnRpbWUgLSBkZWNsYXJlIGl0IHVwZnJvbnQgaW4gdGhlIGRhdGEgb3B0aW9uLidcbiAgICApO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICBpZiAoIW9iKSB7XG4gICAgdGFyZ2V0W2tleV0gPSB2YWw7XG4gICAgcmV0dXJuIHZhbFxuICB9XG4gIGRlZmluZVJlYWN0aXZlJCQxKG9iLnZhbHVlLCBrZXksIHZhbCk7XG4gIG9iLmRlcC5ub3RpZnkoKTtcbiAgcmV0dXJuIHZhbFxufVxuXG4vKipcbiAqIERlbGV0ZSBhIHByb3BlcnR5IGFuZCB0cmlnZ2VyIGNoYW5nZSBpZiBuZWNlc3NhcnkuXG4gKi9cbmZ1bmN0aW9uIGRlbCAodGFyZ2V0LCBrZXkpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAoaXNVbmRlZih0YXJnZXQpIHx8IGlzUHJpbWl0aXZlKHRhcmdldCkpXG4gICkge1xuICAgIHdhcm4oKFwiQ2Fubm90IGRlbGV0ZSByZWFjdGl2ZSBwcm9wZXJ0eSBvbiB1bmRlZmluZWQsIG51bGwsIG9yIHByaW1pdGl2ZSB2YWx1ZTogXCIgKyAoKHRhcmdldCkpKSk7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSAmJiBpc1ZhbGlkQXJyYXlJbmRleChrZXkpKSB7XG4gICAgdGFyZ2V0LnNwbGljZShrZXksIDEpO1xuICAgIHJldHVyblxuICB9XG4gIHZhciBvYiA9ICh0YXJnZXQpLl9fb2JfXztcbiAgaWYgKHRhcmdldC5faXNWdWUgfHwgKG9iICYmIG9iLnZtQ291bnQpKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgJ0F2b2lkIGRlbGV0aW5nIHByb3BlcnRpZXMgb24gYSBWdWUgaW5zdGFuY2Ugb3IgaXRzIHJvb3QgJGRhdGEgJyArXG4gICAgICAnLSBqdXN0IHNldCBpdCB0byBudWxsLidcbiAgICApO1xuICAgIHJldHVyblxuICB9XG4gIGlmICghaGFzT3duKHRhcmdldCwga2V5KSkge1xuICAgIHJldHVyblxuICB9XG4gIGRlbGV0ZSB0YXJnZXRba2V5XTtcbiAgaWYgKCFvYikge1xuICAgIHJldHVyblxuICB9XG4gIG9iLmRlcC5ub3RpZnkoKTtcbn1cblxuLyoqXG4gKiBDb2xsZWN0IGRlcGVuZGVuY2llcyBvbiBhcnJheSBlbGVtZW50cyB3aGVuIHRoZSBhcnJheSBpcyB0b3VjaGVkLCBzaW5jZVxuICogd2UgY2Fubm90IGludGVyY2VwdCBhcnJheSBlbGVtZW50IGFjY2VzcyBsaWtlIHByb3BlcnR5IGdldHRlcnMuXG4gKi9cbmZ1bmN0aW9uIGRlcGVuZEFycmF5ICh2YWx1ZSkge1xuICBmb3IgKHZhciBlID0gKHZvaWQgMCksIGkgPSAwLCBsID0gdmFsdWUubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZSA9IHZhbHVlW2ldO1xuICAgIGUgJiYgZS5fX29iX18gJiYgZS5fX29iX18uZGVwLmRlcGVuZCgpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSB7XG4gICAgICBkZXBlbmRBcnJheShlKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogT3B0aW9uIG92ZXJ3cml0aW5nIHN0cmF0ZWdpZXMgYXJlIGZ1bmN0aW9ucyB0aGF0IGhhbmRsZVxuICogaG93IHRvIG1lcmdlIGEgcGFyZW50IG9wdGlvbiB2YWx1ZSBhbmQgYSBjaGlsZCBvcHRpb25cbiAqIHZhbHVlIGludG8gdGhlIGZpbmFsIHZhbHVlLlxuICovXG52YXIgc3RyYXRzID0gY29uZmlnLm9wdGlvbk1lcmdlU3RyYXRlZ2llcztcblxuLyoqXG4gKiBPcHRpb25zIHdpdGggcmVzdHJpY3Rpb25zXG4gKi9cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHN0cmF0cy5lbCA9IHN0cmF0cy5wcm9wc0RhdGEgPSBmdW5jdGlvbiAocGFyZW50LCBjaGlsZCwgdm0sIGtleSkge1xuICAgIGlmICghdm0pIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIFwib3B0aW9uIFxcXCJcIiArIGtleSArIFwiXFxcIiBjYW4gb25seSBiZSB1c2VkIGR1cmluZyBpbnN0YW5jZSBcIiArXG4gICAgICAgICdjcmVhdGlvbiB3aXRoIHRoZSBgbmV3YCBrZXl3b3JkLidcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBkZWZhdWx0U3RyYXQocGFyZW50LCBjaGlsZClcbiAgfTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgdGhhdCByZWN1cnNpdmVseSBtZXJnZXMgdHdvIGRhdGEgb2JqZWN0cyB0b2dldGhlci5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VEYXRhICh0bywgZnJvbSkge1xuICBpZiAoIWZyb20pIHsgcmV0dXJuIHRvIH1cbiAgdmFyIGtleSwgdG9WYWwsIGZyb21WYWw7XG5cbiAgdmFyIGtleXMgPSBoYXNTeW1ib2xcbiAgICA/IFJlZmxlY3Qub3duS2V5cyhmcm9tKVxuICAgIDogT2JqZWN0LmtleXMoZnJvbSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAga2V5ID0ga2V5c1tpXTtcbiAgICAvLyBpbiBjYXNlIHRoZSBvYmplY3QgaXMgYWxyZWFkeSBvYnNlcnZlZC4uLlxuICAgIGlmIChrZXkgPT09ICdfX29iX18nKSB7IGNvbnRpbnVlIH1cbiAgICB0b1ZhbCA9IHRvW2tleV07XG4gICAgZnJvbVZhbCA9IGZyb21ba2V5XTtcbiAgICBpZiAoIWhhc093bih0bywga2V5KSkge1xuICAgICAgc2V0KHRvLCBrZXksIGZyb21WYWwpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0b1ZhbCAhPT0gZnJvbVZhbCAmJlxuICAgICAgaXNQbGFpbk9iamVjdCh0b1ZhbCkgJiZcbiAgICAgIGlzUGxhaW5PYmplY3QoZnJvbVZhbClcbiAgICApIHtcbiAgICAgIG1lcmdlRGF0YSh0b1ZhbCwgZnJvbVZhbCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0b1xufVxuXG4vKipcbiAqIERhdGFcbiAqL1xuZnVuY3Rpb24gbWVyZ2VEYXRhT3JGbiAoXG4gIHBhcmVudFZhbCxcbiAgY2hpbGRWYWwsXG4gIHZtXG4pIHtcbiAgaWYgKCF2bSkge1xuICAgIC8vIGluIGEgVnVlLmV4dGVuZCBtZXJnZSwgYm90aCBzaG91bGQgYmUgZnVuY3Rpb25zXG4gICAgaWYgKCFjaGlsZFZhbCkge1xuICAgICAgcmV0dXJuIHBhcmVudFZhbFxuICAgIH1cbiAgICBpZiAoIXBhcmVudFZhbCkge1xuICAgICAgcmV0dXJuIGNoaWxkVmFsXG4gICAgfVxuICAgIC8vIHdoZW4gcGFyZW50VmFsICYgY2hpbGRWYWwgYXJlIGJvdGggcHJlc2VudCxcbiAgICAvLyB3ZSBuZWVkIHRvIHJldHVybiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGVcbiAgICAvLyBtZXJnZWQgcmVzdWx0IG9mIGJvdGggZnVuY3Rpb25zLi4uIG5vIG5lZWQgdG9cbiAgICAvLyBjaGVjayBpZiBwYXJlbnRWYWwgaXMgYSBmdW5jdGlvbiBoZXJlIGJlY2F1c2VcbiAgICAvLyBpdCBoYXMgdG8gYmUgYSBmdW5jdGlvbiB0byBwYXNzIHByZXZpb3VzIG1lcmdlcy5cbiAgICByZXR1cm4gZnVuY3Rpb24gbWVyZ2VkRGF0YUZuICgpIHtcbiAgICAgIHJldHVybiBtZXJnZURhdGEoXG4gICAgICAgIHR5cGVvZiBjaGlsZFZhbCA9PT0gJ2Z1bmN0aW9uJyA/IGNoaWxkVmFsLmNhbGwodGhpcywgdGhpcykgOiBjaGlsZFZhbCxcbiAgICAgICAgdHlwZW9mIHBhcmVudFZhbCA9PT0gJ2Z1bmN0aW9uJyA/IHBhcmVudFZhbC5jYWxsKHRoaXMsIHRoaXMpIDogcGFyZW50VmFsXG4gICAgICApXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZWRJbnN0YW5jZURhdGFGbiAoKSB7XG4gICAgICAvLyBpbnN0YW5jZSBtZXJnZVxuICAgICAgdmFyIGluc3RhbmNlRGF0YSA9IHR5cGVvZiBjaGlsZFZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IGNoaWxkVmFsLmNhbGwodm0sIHZtKVxuICAgICAgICA6IGNoaWxkVmFsO1xuICAgICAgdmFyIGRlZmF1bHREYXRhID0gdHlwZW9mIHBhcmVudFZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IHBhcmVudFZhbC5jYWxsKHZtLCB2bSlcbiAgICAgICAgOiBwYXJlbnRWYWw7XG4gICAgICBpZiAoaW5zdGFuY2VEYXRhKSB7XG4gICAgICAgIHJldHVybiBtZXJnZURhdGEoaW5zdGFuY2VEYXRhLCBkZWZhdWx0RGF0YSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0RGF0YVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5zdHJhdHMuZGF0YSA9IGZ1bmN0aW9uIChcbiAgcGFyZW50VmFsLFxuICBjaGlsZFZhbCxcbiAgdm1cbikge1xuICBpZiAoIXZtKSB7XG4gICAgaWYgKGNoaWxkVmFsICYmIHR5cGVvZiBjaGlsZFZhbCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAnVGhlIFwiZGF0YVwiIG9wdGlvbiBzaG91bGQgYmUgYSBmdW5jdGlvbiAnICtcbiAgICAgICAgJ3RoYXQgcmV0dXJucyBhIHBlci1pbnN0YW5jZSB2YWx1ZSBpbiBjb21wb25lbnQgJyArXG4gICAgICAgICdkZWZpbml0aW9ucy4nLFxuICAgICAgICB2bVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHBhcmVudFZhbFxuICAgIH1cbiAgICByZXR1cm4gbWVyZ2VEYXRhT3JGbihwYXJlbnRWYWwsIGNoaWxkVmFsKVxuICB9XG5cbiAgcmV0dXJuIG1lcmdlRGF0YU9yRm4ocGFyZW50VmFsLCBjaGlsZFZhbCwgdm0pXG59O1xuXG4vKipcbiAqIEhvb2tzIGFuZCBwcm9wcyBhcmUgbWVyZ2VkIGFzIGFycmF5cy5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VIb29rIChcbiAgcGFyZW50VmFsLFxuICBjaGlsZFZhbFxuKSB7XG4gIHZhciByZXMgPSBjaGlsZFZhbFxuICAgID8gcGFyZW50VmFsXG4gICAgICA/IHBhcmVudFZhbC5jb25jYXQoY2hpbGRWYWwpXG4gICAgICA6IEFycmF5LmlzQXJyYXkoY2hpbGRWYWwpXG4gICAgICAgID8gY2hpbGRWYWxcbiAgICAgICAgOiBbY2hpbGRWYWxdXG4gICAgOiBwYXJlbnRWYWw7XG4gIHJldHVybiByZXNcbiAgICA/IGRlZHVwZUhvb2tzKHJlcylcbiAgICA6IHJlc1xufVxuXG5mdW5jdGlvbiBkZWR1cGVIb29rcyAoaG9va3MpIHtcbiAgdmFyIHJlcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGhvb2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHJlcy5pbmRleE9mKGhvb2tzW2ldKSA9PT0gLTEpIHtcbiAgICAgIHJlcy5wdXNoKGhvb2tzW2ldKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5MSUZFQ1lDTEVfSE9PS1MuZm9yRWFjaChmdW5jdGlvbiAoaG9vaykge1xuICBzdHJhdHNbaG9va10gPSBtZXJnZUhvb2s7XG59KTtcblxuLyoqXG4gKiBBc3NldHNcbiAqXG4gKiBXaGVuIGEgdm0gaXMgcHJlc2VudCAoaW5zdGFuY2UgY3JlYXRpb24pLCB3ZSBuZWVkIHRvIGRvXG4gKiBhIHRocmVlLXdheSBtZXJnZSBiZXR3ZWVuIGNvbnN0cnVjdG9yIG9wdGlvbnMsIGluc3RhbmNlXG4gKiBvcHRpb25zIGFuZCBwYXJlbnQgb3B0aW9ucy5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VBc3NldHMgKFxuICBwYXJlbnRWYWwsXG4gIGNoaWxkVmFsLFxuICB2bSxcbiAga2V5XG4pIHtcbiAgdmFyIHJlcyA9IE9iamVjdC5jcmVhdGUocGFyZW50VmFsIHx8IG51bGwpO1xuICBpZiAoY2hpbGRWYWwpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGFzc2VydE9iamVjdFR5cGUoa2V5LCBjaGlsZFZhbCwgdm0pO1xuICAgIHJldHVybiBleHRlbmQocmVzLCBjaGlsZFZhbClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVzXG4gIH1cbn1cblxuQVNTRVRfVFlQRVMuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xuICBzdHJhdHNbdHlwZSArICdzJ10gPSBtZXJnZUFzc2V0cztcbn0pO1xuXG4vKipcbiAqIFdhdGNoZXJzLlxuICpcbiAqIFdhdGNoZXJzIGhhc2hlcyBzaG91bGQgbm90IG92ZXJ3cml0ZSBvbmVcbiAqIGFub3RoZXIsIHNvIHdlIG1lcmdlIHRoZW0gYXMgYXJyYXlzLlxuICovXG5zdHJhdHMud2F0Y2ggPSBmdW5jdGlvbiAoXG4gIHBhcmVudFZhbCxcbiAgY2hpbGRWYWwsXG4gIHZtLFxuICBrZXlcbikge1xuICAvLyB3b3JrIGFyb3VuZCBGaXJlZm94J3MgT2JqZWN0LnByb3RvdHlwZS53YXRjaC4uLlxuICBpZiAocGFyZW50VmFsID09PSBuYXRpdmVXYXRjaCkgeyBwYXJlbnRWYWwgPSB1bmRlZmluZWQ7IH1cbiAgaWYgKGNoaWxkVmFsID09PSBuYXRpdmVXYXRjaCkgeyBjaGlsZFZhbCA9IHVuZGVmaW5lZDsgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKCFjaGlsZFZhbCkgeyByZXR1cm4gT2JqZWN0LmNyZWF0ZShwYXJlbnRWYWwgfHwgbnVsbCkgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGFzc2VydE9iamVjdFR5cGUoa2V5LCBjaGlsZFZhbCwgdm0pO1xuICB9XG4gIGlmICghcGFyZW50VmFsKSB7IHJldHVybiBjaGlsZFZhbCB9XG4gIHZhciByZXQgPSB7fTtcbiAgZXh0ZW5kKHJldCwgcGFyZW50VmFsKTtcbiAgZm9yICh2YXIga2V5JDEgaW4gY2hpbGRWYWwpIHtcbiAgICB2YXIgcGFyZW50ID0gcmV0W2tleSQxXTtcbiAgICB2YXIgY2hpbGQgPSBjaGlsZFZhbFtrZXkkMV07XG4gICAgaWYgKHBhcmVudCAmJiAhQXJyYXkuaXNBcnJheShwYXJlbnQpKSB7XG4gICAgICBwYXJlbnQgPSBbcGFyZW50XTtcbiAgICB9XG4gICAgcmV0W2tleSQxXSA9IHBhcmVudFxuICAgICAgPyBwYXJlbnQuY29uY2F0KGNoaWxkKVxuICAgICAgOiBBcnJheS5pc0FycmF5KGNoaWxkKSA/IGNoaWxkIDogW2NoaWxkXTtcbiAgfVxuICByZXR1cm4gcmV0XG59O1xuXG4vKipcbiAqIE90aGVyIG9iamVjdCBoYXNoZXMuXG4gKi9cbnN0cmF0cy5wcm9wcyA9XG5zdHJhdHMubWV0aG9kcyA9XG5zdHJhdHMuaW5qZWN0ID1cbnN0cmF0cy5jb21wdXRlZCA9IGZ1bmN0aW9uIChcbiAgcGFyZW50VmFsLFxuICBjaGlsZFZhbCxcbiAgdm0sXG4gIGtleVxuKSB7XG4gIGlmIChjaGlsZFZhbCAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgYXNzZXJ0T2JqZWN0VHlwZShrZXksIGNoaWxkVmFsLCB2bSk7XG4gIH1cbiAgaWYgKCFwYXJlbnRWYWwpIHsgcmV0dXJuIGNoaWxkVmFsIH1cbiAgdmFyIHJldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGV4dGVuZChyZXQsIHBhcmVudFZhbCk7XG4gIGlmIChjaGlsZFZhbCkgeyBleHRlbmQocmV0LCBjaGlsZFZhbCk7IH1cbiAgcmV0dXJuIHJldFxufTtcbnN0cmF0cy5wcm92aWRlID0gbWVyZ2VEYXRhT3JGbjtcblxuLyoqXG4gKiBEZWZhdWx0IHN0cmF0ZWd5LlxuICovXG52YXIgZGVmYXVsdFN0cmF0ID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgcmV0dXJuIGNoaWxkVmFsID09PSB1bmRlZmluZWRcbiAgICA/IHBhcmVudFZhbFxuICAgIDogY2hpbGRWYWxcbn07XG5cbi8qKlxuICogVmFsaWRhdGUgY29tcG9uZW50IG5hbWVzXG4gKi9cbmZ1bmN0aW9uIGNoZWNrQ29tcG9uZW50cyAob3B0aW9ucykge1xuICBmb3IgKHZhciBrZXkgaW4gb3B0aW9ucy5jb21wb25lbnRzKSB7XG4gICAgdmFsaWRhdGVDb21wb25lbnROYW1lKGtleSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVDb21wb25lbnROYW1lIChuYW1lKSB7XG4gIGlmICghbmV3IFJlZ0V4cCgoXCJeW2EtekEtWl1bXFxcXC1cXFxcLjAtOV9cIiArICh1bmljb2RlUmVnRXhwLnNvdXJjZSkgKyBcIl0qJFwiKSkudGVzdChuYW1lKSkge1xuICAgIHdhcm4oXG4gICAgICAnSW52YWxpZCBjb21wb25lbnQgbmFtZTogXCInICsgbmFtZSArICdcIi4gQ29tcG9uZW50IG5hbWVzICcgK1xuICAgICAgJ3Nob3VsZCBjb25mb3JtIHRvIHZhbGlkIGN1c3RvbSBlbGVtZW50IG5hbWUgaW4gaHRtbDUgc3BlY2lmaWNhdGlvbi4nXG4gICAgKTtcbiAgfVxuICBpZiAoaXNCdWlsdEluVGFnKG5hbWUpIHx8IGNvbmZpZy5pc1Jlc2VydmVkVGFnKG5hbWUpKSB7XG4gICAgd2FybihcbiAgICAgICdEbyBub3QgdXNlIGJ1aWx0LWluIG9yIHJlc2VydmVkIEhUTUwgZWxlbWVudHMgYXMgY29tcG9uZW50ICcgK1xuICAgICAgJ2lkOiAnICsgbmFtZVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBFbnN1cmUgYWxsIHByb3BzIG9wdGlvbiBzeW50YXggYXJlIG5vcm1hbGl6ZWQgaW50byB0aGVcbiAqIE9iamVjdC1iYXNlZCBmb3JtYXQuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVByb3BzIChvcHRpb25zLCB2bSkge1xuICB2YXIgcHJvcHMgPSBvcHRpb25zLnByb3BzO1xuICBpZiAoIXByb3BzKSB7IHJldHVybiB9XG4gIHZhciByZXMgPSB7fTtcbiAgdmFyIGksIHZhbCwgbmFtZTtcbiAgaWYgKEFycmF5LmlzQXJyYXkocHJvcHMpKSB7XG4gICAgaSA9IHByb3BzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB2YWwgPSBwcm9wc1tpXTtcbiAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgICAgICBuYW1lID0gY2FtZWxpemUodmFsKTtcbiAgICAgICAgcmVzW25hbWVdID0geyB0eXBlOiBudWxsIH07XG4gICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgd2FybigncHJvcHMgbXVzdCBiZSBzdHJpbmdzIHdoZW4gdXNpbmcgYXJyYXkgc3ludGF4LicpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHByb3BzKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wcykge1xuICAgICAgdmFsID0gcHJvcHNba2V5XTtcbiAgICAgIG5hbWUgPSBjYW1lbGl6ZShrZXkpO1xuICAgICAgcmVzW25hbWVdID0gaXNQbGFpbk9iamVjdCh2YWwpXG4gICAgICAgID8gdmFsXG4gICAgICAgIDogeyB0eXBlOiB2YWwgfTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4oXG4gICAgICBcIkludmFsaWQgdmFsdWUgZm9yIG9wdGlvbiBcXFwicHJvcHNcXFwiOiBleHBlY3RlZCBhbiBBcnJheSBvciBhbiBPYmplY3QsIFwiICtcbiAgICAgIFwiYnV0IGdvdCBcIiArICh0b1Jhd1R5cGUocHJvcHMpKSArIFwiLlwiLFxuICAgICAgdm1cbiAgICApO1xuICB9XG4gIG9wdGlvbnMucHJvcHMgPSByZXM7XG59XG5cbi8qKlxuICogTm9ybWFsaXplIGFsbCBpbmplY3Rpb25zIGludG8gT2JqZWN0LWJhc2VkIGZvcm1hdFxuICovXG5mdW5jdGlvbiBub3JtYWxpemVJbmplY3QgKG9wdGlvbnMsIHZtKSB7XG4gIHZhciBpbmplY3QgPSBvcHRpb25zLmluamVjdDtcbiAgaWYgKCFpbmplY3QpIHsgcmV0dXJuIH1cbiAgdmFyIG5vcm1hbGl6ZWQgPSBvcHRpb25zLmluamVjdCA9IHt9O1xuICBpZiAoQXJyYXkuaXNBcnJheShpbmplY3QpKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbmplY3QubGVuZ3RoOyBpKyspIHtcbiAgICAgIG5vcm1hbGl6ZWRbaW5qZWN0W2ldXSA9IHsgZnJvbTogaW5qZWN0W2ldIH07XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QoaW5qZWN0KSkge1xuICAgIGZvciAodmFyIGtleSBpbiBpbmplY3QpIHtcbiAgICAgIHZhciB2YWwgPSBpbmplY3Rba2V5XTtcbiAgICAgIG5vcm1hbGl6ZWRba2V5XSA9IGlzUGxhaW5PYmplY3QodmFsKVxuICAgICAgICA/IGV4dGVuZCh7IGZyb206IGtleSB9LCB2YWwpXG4gICAgICAgIDogeyBmcm9tOiB2YWwgfTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4oXG4gICAgICBcIkludmFsaWQgdmFsdWUgZm9yIG9wdGlvbiBcXFwiaW5qZWN0XFxcIjogZXhwZWN0ZWQgYW4gQXJyYXkgb3IgYW4gT2JqZWN0LCBcIiArXG4gICAgICBcImJ1dCBnb3QgXCIgKyAodG9SYXdUeXBlKGluamVjdCkpICsgXCIuXCIsXG4gICAgICB2bVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgcmF3IGZ1bmN0aW9uIGRpcmVjdGl2ZXMgaW50byBvYmplY3QgZm9ybWF0LlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVEaXJlY3RpdmVzIChvcHRpb25zKSB7XG4gIHZhciBkaXJzID0gb3B0aW9ucy5kaXJlY3RpdmVzO1xuICBpZiAoZGlycykge1xuICAgIGZvciAodmFyIGtleSBpbiBkaXJzKSB7XG4gICAgICB2YXIgZGVmJCQxID0gZGlyc1trZXldO1xuICAgICAgaWYgKHR5cGVvZiBkZWYkJDEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgZGlyc1trZXldID0geyBiaW5kOiBkZWYkJDEsIHVwZGF0ZTogZGVmJCQxIH07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydE9iamVjdFR5cGUgKG5hbWUsIHZhbHVlLCB2bSkge1xuICBpZiAoIWlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgd2FybihcbiAgICAgIFwiSW52YWxpZCB2YWx1ZSBmb3Igb3B0aW9uIFxcXCJcIiArIG5hbWUgKyBcIlxcXCI6IGV4cGVjdGVkIGFuIE9iamVjdCwgXCIgK1xuICAgICAgXCJidXQgZ290IFwiICsgKHRvUmF3VHlwZSh2YWx1ZSkpICsgXCIuXCIsXG4gICAgICB2bVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBNZXJnZSB0d28gb3B0aW9uIG9iamVjdHMgaW50byBhIG5ldyBvbmUuXG4gKiBDb3JlIHV0aWxpdHkgdXNlZCBpbiBib3RoIGluc3RhbnRpYXRpb24gYW5kIGluaGVyaXRhbmNlLlxuICovXG5mdW5jdGlvbiBtZXJnZU9wdGlvbnMgKFxuICBwYXJlbnQsXG4gIGNoaWxkLFxuICB2bVxuKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY2hlY2tDb21wb25lbnRzKGNoaWxkKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgY2hpbGQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjaGlsZCA9IGNoaWxkLm9wdGlvbnM7XG4gIH1cblxuICBub3JtYWxpemVQcm9wcyhjaGlsZCwgdm0pO1xuICBub3JtYWxpemVJbmplY3QoY2hpbGQsIHZtKTtcbiAgbm9ybWFsaXplRGlyZWN0aXZlcyhjaGlsZCk7XG5cbiAgLy8gQXBwbHkgZXh0ZW5kcyBhbmQgbWl4aW5zIG9uIHRoZSBjaGlsZCBvcHRpb25zLFxuICAvLyBidXQgb25seSBpZiBpdCBpcyBhIHJhdyBvcHRpb25zIG9iamVjdCB0aGF0IGlzbid0XG4gIC8vIHRoZSByZXN1bHQgb2YgYW5vdGhlciBtZXJnZU9wdGlvbnMgY2FsbC5cbiAgLy8gT25seSBtZXJnZWQgb3B0aW9ucyBoYXMgdGhlIF9iYXNlIHByb3BlcnR5LlxuICBpZiAoIWNoaWxkLl9iYXNlKSB7XG4gICAgaWYgKGNoaWxkLmV4dGVuZHMpIHtcbiAgICAgIHBhcmVudCA9IG1lcmdlT3B0aW9ucyhwYXJlbnQsIGNoaWxkLmV4dGVuZHMsIHZtKTtcbiAgICB9XG4gICAgaWYgKGNoaWxkLm1peGlucykge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjaGlsZC5taXhpbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHBhcmVudCA9IG1lcmdlT3B0aW9ucyhwYXJlbnQsIGNoaWxkLm1peGluc1tpXSwgdm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBvcHRpb25zID0ge307XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIHBhcmVudCkge1xuICAgIG1lcmdlRmllbGQoa2V5KTtcbiAgfVxuICBmb3IgKGtleSBpbiBjaGlsZCkge1xuICAgIGlmICghaGFzT3duKHBhcmVudCwga2V5KSkge1xuICAgICAgbWVyZ2VGaWVsZChrZXkpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBtZXJnZUZpZWxkIChrZXkpIHtcbiAgICB2YXIgc3RyYXQgPSBzdHJhdHNba2V5XSB8fCBkZWZhdWx0U3RyYXQ7XG4gICAgb3B0aW9uc1trZXldID0gc3RyYXQocGFyZW50W2tleV0sIGNoaWxkW2tleV0sIHZtLCBrZXkpO1xuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbi8qKlxuICogUmVzb2x2ZSBhbiBhc3NldC5cbiAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBiZWNhdXNlIGNoaWxkIGluc3RhbmNlcyBuZWVkIGFjY2Vzc1xuICogdG8gYXNzZXRzIGRlZmluZWQgaW4gaXRzIGFuY2VzdG9yIGNoYWluLlxuICovXG5mdW5jdGlvbiByZXNvbHZlQXNzZXQgKFxuICBvcHRpb25zLFxuICB0eXBlLFxuICBpZCxcbiAgd2Fybk1pc3Npbmdcbikge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHR5cGVvZiBpZCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgYXNzZXRzID0gb3B0aW9uc1t0eXBlXTtcbiAgLy8gY2hlY2sgbG9jYWwgcmVnaXN0cmF0aW9uIHZhcmlhdGlvbnMgZmlyc3RcbiAgaWYgKGhhc093bihhc3NldHMsIGlkKSkgeyByZXR1cm4gYXNzZXRzW2lkXSB9XG4gIHZhciBjYW1lbGl6ZWRJZCA9IGNhbWVsaXplKGlkKTtcbiAgaWYgKGhhc093bihhc3NldHMsIGNhbWVsaXplZElkKSkgeyByZXR1cm4gYXNzZXRzW2NhbWVsaXplZElkXSB9XG4gIHZhciBQYXNjYWxDYXNlSWQgPSBjYXBpdGFsaXplKGNhbWVsaXplZElkKTtcbiAgaWYgKGhhc093bihhc3NldHMsIFBhc2NhbENhc2VJZCkpIHsgcmV0dXJuIGFzc2V0c1tQYXNjYWxDYXNlSWRdIH1cbiAgLy8gZmFsbGJhY2sgdG8gcHJvdG90eXBlIGNoYWluXG4gIHZhciByZXMgPSBhc3NldHNbaWRdIHx8IGFzc2V0c1tjYW1lbGl6ZWRJZF0gfHwgYXNzZXRzW1Bhc2NhbENhc2VJZF07XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm5NaXNzaW5nICYmICFyZXMpIHtcbiAgICB3YXJuKFxuICAgICAgJ0ZhaWxlZCB0byByZXNvbHZlICcgKyB0eXBlLnNsaWNlKDAsIC0xKSArICc6ICcgKyBpZCxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cblxuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3AgKFxuICBrZXksXG4gIHByb3BPcHRpb25zLFxuICBwcm9wc0RhdGEsXG4gIHZtXG4pIHtcbiAgdmFyIHByb3AgPSBwcm9wT3B0aW9uc1trZXldO1xuICB2YXIgYWJzZW50ID0gIWhhc093bihwcm9wc0RhdGEsIGtleSk7XG4gIHZhciB2YWx1ZSA9IHByb3BzRGF0YVtrZXldO1xuICAvLyBib29sZWFuIGNhc3RpbmdcbiAgdmFyIGJvb2xlYW5JbmRleCA9IGdldFR5cGVJbmRleChCb29sZWFuLCBwcm9wLnR5cGUpO1xuICBpZiAoYm9vbGVhbkluZGV4ID4gLTEpIHtcbiAgICBpZiAoYWJzZW50ICYmICFoYXNPd24ocHJvcCwgJ2RlZmF1bHQnKSkge1xuICAgICAgdmFsdWUgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gaHlwaGVuYXRlKGtleSkpIHtcbiAgICAgIC8vIG9ubHkgY2FzdCBlbXB0eSBzdHJpbmcgLyBzYW1lIG5hbWUgdG8gYm9vbGVhbiBpZlxuICAgICAgLy8gYm9vbGVhbiBoYXMgaGlnaGVyIHByaW9yaXR5XG4gICAgICB2YXIgc3RyaW5nSW5kZXggPSBnZXRUeXBlSW5kZXgoU3RyaW5nLCBwcm9wLnR5cGUpO1xuICAgICAgaWYgKHN0cmluZ0luZGV4IDwgMCB8fCBib29sZWFuSW5kZXggPCBzdHJpbmdJbmRleCkge1xuICAgICAgICB2YWx1ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIGNoZWNrIGRlZmF1bHQgdmFsdWVcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICB2YWx1ZSA9IGdldFByb3BEZWZhdWx0VmFsdWUodm0sIHByb3AsIGtleSk7XG4gICAgLy8gc2luY2UgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYSBmcmVzaCBjb3B5LFxuICAgIC8vIG1ha2Ugc3VyZSB0byBvYnNlcnZlIGl0LlxuICAgIHZhciBwcmV2U2hvdWxkT2JzZXJ2ZSA9IHNob3VsZE9ic2VydmU7XG4gICAgdG9nZ2xlT2JzZXJ2aW5nKHRydWUpO1xuICAgIG9ic2VydmUodmFsdWUpO1xuICAgIHRvZ2dsZU9ic2VydmluZyhwcmV2U2hvdWxkT2JzZXJ2ZSk7XG4gIH1cbiAgaWYgKFxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAvLyBza2lwIHZhbGlkYXRpb24gZm9yIHdlZXggcmVjeWNsZS1saXN0IGNoaWxkIGNvbXBvbmVudCBwcm9wc1xuICAgICEoZmFsc2UpXG4gICkge1xuICAgIGFzc2VydFByb3AocHJvcCwga2V5LCB2YWx1ZSwgdm0sIGFic2VudCk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlXG59XG5cbi8qKlxuICogR2V0IHRoZSBkZWZhdWx0IHZhbHVlIG9mIGEgcHJvcC5cbiAqL1xuZnVuY3Rpb24gZ2V0UHJvcERlZmF1bHRWYWx1ZSAodm0sIHByb3AsIGtleSkge1xuICAvLyBubyBkZWZhdWx0LCByZXR1cm4gdW5kZWZpbmVkXG4gIGlmICghaGFzT3duKHByb3AsICdkZWZhdWx0JykpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbiAgdmFyIGRlZiA9IHByb3AuZGVmYXVsdDtcbiAgLy8gd2FybiBhZ2FpbnN0IG5vbi1mYWN0b3J5IGRlZmF1bHRzIGZvciBPYmplY3QgJiBBcnJheVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBpc09iamVjdChkZWYpKSB7XG4gICAgd2FybihcbiAgICAgICdJbnZhbGlkIGRlZmF1bHQgdmFsdWUgZm9yIHByb3AgXCInICsga2V5ICsgJ1wiOiAnICtcbiAgICAgICdQcm9wcyB3aXRoIHR5cGUgT2JqZWN0L0FycmF5IG11c3QgdXNlIGEgZmFjdG9yeSBmdW5jdGlvbiAnICtcbiAgICAgICd0byByZXR1cm4gdGhlIGRlZmF1bHQgdmFsdWUuJyxcbiAgICAgIHZtXG4gICAgKTtcbiAgfVxuICAvLyB0aGUgcmF3IHByb3AgdmFsdWUgd2FzIGFsc28gdW5kZWZpbmVkIGZyb20gcHJldmlvdXMgcmVuZGVyLFxuICAvLyByZXR1cm4gcHJldmlvdXMgZGVmYXVsdCB2YWx1ZSB0byBhdm9pZCB1bm5lY2Vzc2FyeSB3YXRjaGVyIHRyaWdnZXJcbiAgaWYgKHZtICYmIHZtLiRvcHRpb25zLnByb3BzRGF0YSAmJlxuICAgIHZtLiRvcHRpb25zLnByb3BzRGF0YVtrZXldID09PSB1bmRlZmluZWQgJiZcbiAgICB2bS5fcHJvcHNba2V5XSAhPT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybiB2bS5fcHJvcHNba2V5XVxuICB9XG4gIC8vIGNhbGwgZmFjdG9yeSBmdW5jdGlvbiBmb3Igbm9uLUZ1bmN0aW9uIHR5cGVzXG4gIC8vIGEgdmFsdWUgaXMgRnVuY3Rpb24gaWYgaXRzIHByb3RvdHlwZSBpcyBmdW5jdGlvbiBldmVuIGFjcm9zcyBkaWZmZXJlbnQgZXhlY3V0aW9uIGNvbnRleHRcbiAgcmV0dXJuIHR5cGVvZiBkZWYgPT09ICdmdW5jdGlvbicgJiYgZ2V0VHlwZShwcm9wLnR5cGUpICE9PSAnRnVuY3Rpb24nXG4gICAgPyBkZWYuY2FsbCh2bSlcbiAgICA6IGRlZlxufVxuXG4vKipcbiAqIEFzc2VydCB3aGV0aGVyIGEgcHJvcCBpcyB2YWxpZC5cbiAqL1xuZnVuY3Rpb24gYXNzZXJ0UHJvcCAoXG4gIHByb3AsXG4gIG5hbWUsXG4gIHZhbHVlLFxuICB2bSxcbiAgYWJzZW50XG4pIHtcbiAgaWYgKHByb3AucmVxdWlyZWQgJiYgYWJzZW50KSB7XG4gICAgd2FybihcbiAgICAgICdNaXNzaW5nIHJlcXVpcmVkIHByb3A6IFwiJyArIG5hbWUgKyAnXCInLFxuICAgICAgdm1cbiAgICApO1xuICAgIHJldHVyblxuICB9XG4gIGlmICh2YWx1ZSA9PSBudWxsICYmICFwcm9wLnJlcXVpcmVkKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHR5cGUgPSBwcm9wLnR5cGU7XG4gIHZhciB2YWxpZCA9ICF0eXBlIHx8IHR5cGUgPT09IHRydWU7XG4gIHZhciBleHBlY3RlZFR5cGVzID0gW107XG4gIGlmICh0eXBlKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHR5cGUpKSB7XG4gICAgICB0eXBlID0gW3R5cGVdO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGUubGVuZ3RoICYmICF2YWxpZDsgaSsrKSB7XG4gICAgICB2YXIgYXNzZXJ0ZWRUeXBlID0gYXNzZXJ0VHlwZSh2YWx1ZSwgdHlwZVtpXSk7XG4gICAgICBleHBlY3RlZFR5cGVzLnB1c2goYXNzZXJ0ZWRUeXBlLmV4cGVjdGVkVHlwZSB8fCAnJyk7XG4gICAgICB2YWxpZCA9IGFzc2VydGVkVHlwZS52YWxpZDtcbiAgICB9XG4gIH1cblxuICBpZiAoIXZhbGlkKSB7XG4gICAgd2FybihcbiAgICAgIGdldEludmFsaWRUeXBlTWVzc2FnZShuYW1lLCB2YWx1ZSwgZXhwZWN0ZWRUeXBlcyksXG4gICAgICB2bVxuICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHZhbGlkYXRvciA9IHByb3AudmFsaWRhdG9yO1xuICBpZiAodmFsaWRhdG9yKSB7XG4gICAgaWYgKCF2YWxpZGF0b3IodmFsdWUpKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnSW52YWxpZCBwcm9wOiBjdXN0b20gdmFsaWRhdG9yIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcIicgKyBuYW1lICsgJ1wiLicsXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG52YXIgc2ltcGxlQ2hlY2tSRSA9IC9eKFN0cmluZ3xOdW1iZXJ8Qm9vbGVhbnxGdW5jdGlvbnxTeW1ib2wpJC87XG5cbmZ1bmN0aW9uIGFzc2VydFR5cGUgKHZhbHVlLCB0eXBlKSB7XG4gIHZhciB2YWxpZDtcbiAgdmFyIGV4cGVjdGVkVHlwZSA9IGdldFR5cGUodHlwZSk7XG4gIGlmIChzaW1wbGVDaGVja1JFLnRlc3QoZXhwZWN0ZWRUeXBlKSkge1xuICAgIHZhciB0ID0gdHlwZW9mIHZhbHVlO1xuICAgIHZhbGlkID0gdCA9PT0gZXhwZWN0ZWRUeXBlLnRvTG93ZXJDYXNlKCk7XG4gICAgLy8gZm9yIHByaW1pdGl2ZSB3cmFwcGVyIG9iamVjdHNcbiAgICBpZiAoIXZhbGlkICYmIHQgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YWxpZCA9IHZhbHVlIGluc3RhbmNlb2YgdHlwZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSAnT2JqZWN0Jykge1xuICAgIHZhbGlkID0gaXNQbGFpbk9iamVjdCh2YWx1ZSk7XG4gIH0gZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSAnQXJyYXknKSB7XG4gICAgdmFsaWQgPSBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB2YWxpZCA9IHZhbHVlIGluc3RhbmNlb2YgdHlwZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHZhbGlkOiB2YWxpZCxcbiAgICBleHBlY3RlZFR5cGU6IGV4cGVjdGVkVHlwZVxuICB9XG59XG5cbi8qKlxuICogVXNlIGZ1bmN0aW9uIHN0cmluZyBuYW1lIHRvIGNoZWNrIGJ1aWx0LWluIHR5cGVzLFxuICogYmVjYXVzZSBhIHNpbXBsZSBlcXVhbGl0eSBjaGVjayB3aWxsIGZhaWwgd2hlbiBydW5uaW5nXG4gKiBhY3Jvc3MgZGlmZmVyZW50IHZtcyAvIGlmcmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGdldFR5cGUgKGZuKSB7XG4gIHZhciBtYXRjaCA9IGZuICYmIGZuLnRvU3RyaW5nKCkubWF0Y2goL15cXHMqZnVuY3Rpb24gKFxcdyspLyk7XG4gIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogJydcbn1cblxuZnVuY3Rpb24gaXNTYW1lVHlwZSAoYSwgYikge1xuICByZXR1cm4gZ2V0VHlwZShhKSA9PT0gZ2V0VHlwZShiKVxufVxuXG5mdW5jdGlvbiBnZXRUeXBlSW5kZXggKHR5cGUsIGV4cGVjdGVkVHlwZXMpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGV4cGVjdGVkVHlwZXMpKSB7XG4gICAgcmV0dXJuIGlzU2FtZVR5cGUoZXhwZWN0ZWRUeXBlcywgdHlwZSkgPyAwIDogLTFcbiAgfVxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gZXhwZWN0ZWRUeXBlcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChpc1NhbWVUeXBlKGV4cGVjdGVkVHlwZXNbaV0sIHR5cGUpKSB7XG4gICAgICByZXR1cm4gaVxuICAgIH1cbiAgfVxuICByZXR1cm4gLTFcbn1cblxuZnVuY3Rpb24gZ2V0SW52YWxpZFR5cGVNZXNzYWdlIChuYW1lLCB2YWx1ZSwgZXhwZWN0ZWRUeXBlcykge1xuICB2YXIgbWVzc2FnZSA9IFwiSW52YWxpZCBwcm9wOiB0eXBlIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcXFwiXCIgKyBuYW1lICsgXCJcXFwiLlwiICtcbiAgICBcIiBFeHBlY3RlZCBcIiArIChleHBlY3RlZFR5cGVzLm1hcChjYXBpdGFsaXplKS5qb2luKCcsICcpKTtcbiAgdmFyIGV4cGVjdGVkVHlwZSA9IGV4cGVjdGVkVHlwZXNbMF07XG4gIHZhciByZWNlaXZlZFR5cGUgPSB0b1Jhd1R5cGUodmFsdWUpO1xuICB2YXIgZXhwZWN0ZWRWYWx1ZSA9IHN0eWxlVmFsdWUodmFsdWUsIGV4cGVjdGVkVHlwZSk7XG4gIHZhciByZWNlaXZlZFZhbHVlID0gc3R5bGVWYWx1ZSh2YWx1ZSwgcmVjZWl2ZWRUeXBlKTtcbiAgLy8gY2hlY2sgaWYgd2UgbmVlZCB0byBzcGVjaWZ5IGV4cGVjdGVkIHZhbHVlXG4gIGlmIChleHBlY3RlZFR5cGVzLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgaXNFeHBsaWNhYmxlKGV4cGVjdGVkVHlwZSkgJiZcbiAgICAgICFpc0Jvb2xlYW4oZXhwZWN0ZWRUeXBlLCByZWNlaXZlZFR5cGUpKSB7XG4gICAgbWVzc2FnZSArPSBcIiB3aXRoIHZhbHVlIFwiICsgZXhwZWN0ZWRWYWx1ZTtcbiAgfVxuICBtZXNzYWdlICs9IFwiLCBnb3QgXCIgKyByZWNlaXZlZFR5cGUgKyBcIiBcIjtcbiAgLy8gY2hlY2sgaWYgd2UgbmVlZCB0byBzcGVjaWZ5IHJlY2VpdmVkIHZhbHVlXG4gIGlmIChpc0V4cGxpY2FibGUocmVjZWl2ZWRUeXBlKSkge1xuICAgIG1lc3NhZ2UgKz0gXCJ3aXRoIHZhbHVlIFwiICsgcmVjZWl2ZWRWYWx1ZSArIFwiLlwiO1xuICB9XG4gIHJldHVybiBtZXNzYWdlXG59XG5cbmZ1bmN0aW9uIHN0eWxlVmFsdWUgKHZhbHVlLCB0eXBlKSB7XG4gIGlmICh0eXBlID09PSAnU3RyaW5nJykge1xuICAgIHJldHVybiAoXCJcXFwiXCIgKyB2YWx1ZSArIFwiXFxcIlwiKVxuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdOdW1iZXInKSB7XG4gICAgcmV0dXJuIChcIlwiICsgKE51bWJlcih2YWx1ZSkpKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiAoXCJcIiArIHZhbHVlKVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzRXhwbGljYWJsZSAodmFsdWUpIHtcbiAgdmFyIGV4cGxpY2l0VHlwZXMgPSBbJ3N0cmluZycsICdudW1iZXInLCAnYm9vbGVhbiddO1xuICByZXR1cm4gZXhwbGljaXRUeXBlcy5zb21lKGZ1bmN0aW9uIChlbGVtKSB7IHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBlbGVtOyB9KVxufVxuXG5mdW5jdGlvbiBpc0Jvb2xlYW4gKCkge1xuICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuXG4gIHJldHVybiBhcmdzLnNvbWUoZnVuY3Rpb24gKGVsZW0pIHsgcmV0dXJuIGVsZW0udG9Mb3dlckNhc2UoKSA9PT0gJ2Jvb2xlYW4nOyB9KVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaGFuZGxlRXJyb3IgKGVyciwgdm0sIGluZm8pIHtcbiAgLy8gRGVhY3RpdmF0ZSBkZXBzIHRyYWNraW5nIHdoaWxlIHByb2Nlc3NpbmcgZXJyb3IgaGFuZGxlciB0byBhdm9pZCBwb3NzaWJsZSBpbmZpbml0ZSByZW5kZXJpbmcuXG4gIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZXgvaXNzdWVzLzE1MDVcbiAgcHVzaFRhcmdldCgpO1xuICB0cnkge1xuICAgIGlmICh2bSkge1xuICAgICAgdmFyIGN1ciA9IHZtO1xuICAgICAgd2hpbGUgKChjdXIgPSBjdXIuJHBhcmVudCkpIHtcbiAgICAgICAgdmFyIGhvb2tzID0gY3VyLiRvcHRpb25zLmVycm9yQ2FwdHVyZWQ7XG4gICAgICAgIGlmIChob29rcykge1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaG9va3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHZhciBjYXB0dXJlID0gaG9va3NbaV0uY2FsbChjdXIsIGVyciwgdm0sIGluZm8pID09PSBmYWxzZTtcbiAgICAgICAgICAgICAgaWYgKGNhcHR1cmUpIHsgcmV0dXJuIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgZ2xvYmFsSGFuZGxlRXJyb3IoZSwgY3VyLCAnZXJyb3JDYXB0dXJlZCBob29rJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGdsb2JhbEhhbmRsZUVycm9yKGVyciwgdm0sIGluZm8pO1xuICB9IGZpbmFsbHkge1xuICAgIHBvcFRhcmdldCgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGludm9rZVdpdGhFcnJvckhhbmRsaW5nIChcbiAgaGFuZGxlcixcbiAgY29udGV4dCxcbiAgYXJncyxcbiAgdm0sXG4gIGluZm9cbikge1xuICB2YXIgcmVzO1xuICB0cnkge1xuICAgIHJlcyA9IGFyZ3MgPyBoYW5kbGVyLmFwcGx5KGNvbnRleHQsIGFyZ3MpIDogaGFuZGxlci5jYWxsKGNvbnRleHQpO1xuICAgIGlmIChyZXMgJiYgIXJlcy5faXNWdWUgJiYgaXNQcm9taXNlKHJlcykgJiYgIXJlcy5faGFuZGxlZCkge1xuICAgICAgcmVzLmNhdGNoKGZ1bmN0aW9uIChlKSB7IHJldHVybiBoYW5kbGVFcnJvcihlLCB2bSwgaW5mbyArIFwiIChQcm9taXNlL2FzeW5jKVwiKTsgfSk7XG4gICAgICAvLyBpc3N1ZSAjOTUxMVxuICAgICAgLy8gYXZvaWQgY2F0Y2ggdHJpZ2dlcmluZyBtdWx0aXBsZSB0aW1lcyB3aGVuIG5lc3RlZCBjYWxsc1xuICAgICAgcmVzLl9oYW5kbGVkID0gdHJ1ZTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBoYW5kbGVFcnJvcihlLCB2bSwgaW5mbyk7XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBnbG9iYWxIYW5kbGVFcnJvciAoZXJyLCB2bSwgaW5mbykge1xuICBpZiAoY29uZmlnLmVycm9ySGFuZGxlcikge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY29uZmlnLmVycm9ySGFuZGxlci5jYWxsKG51bGwsIGVyciwgdm0sIGluZm8pXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gaWYgdGhlIHVzZXIgaW50ZW50aW9uYWxseSB0aHJvd3MgdGhlIG9yaWdpbmFsIGVycm9yIGluIHRoZSBoYW5kbGVyLFxuICAgICAgLy8gZG8gbm90IGxvZyBpdCB0d2ljZVxuICAgICAgaWYgKGUgIT09IGVycikge1xuICAgICAgICBsb2dFcnJvcihlLCBudWxsLCAnY29uZmlnLmVycm9ySGFuZGxlcicpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBsb2dFcnJvcihlcnIsIHZtLCBpbmZvKTtcbn1cblxuZnVuY3Rpb24gbG9nRXJyb3IgKGVyciwgdm0sIGluZm8pIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB3YXJuKChcIkVycm9yIGluIFwiICsgaW5mbyArIFwiOiBcXFwiXCIgKyAoZXJyLnRvU3RyaW5nKCkpICsgXCJcXFwiXCIpLCB2bSk7XG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKChpbkJyb3dzZXIgfHwgaW5XZWV4KSAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgZXJyXG4gIH1cbn1cblxuLyogICovXG5cbnZhciBpc1VzaW5nTWljcm9UYXNrID0gZmFsc2U7XG5cbnZhciBjYWxsYmFja3MgPSBbXTtcbnZhciBwZW5kaW5nID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGZsdXNoQ2FsbGJhY2tzICgpIHtcbiAgcGVuZGluZyA9IGZhbHNlO1xuICB2YXIgY29waWVzID0gY2FsbGJhY2tzLnNsaWNlKDApO1xuICBjYWxsYmFja3MubGVuZ3RoID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3BpZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb3BpZXNbaV0oKTtcbiAgfVxufVxuXG4vLyBIZXJlIHdlIGhhdmUgYXN5bmMgZGVmZXJyaW5nIHdyYXBwZXJzIHVzaW5nIG1pY3JvdGFza3MuXG4vLyBJbiAyLjUgd2UgdXNlZCAobWFjcm8pIHRhc2tzIChpbiBjb21iaW5hdGlvbiB3aXRoIG1pY3JvdGFza3MpLlxuLy8gSG93ZXZlciwgaXQgaGFzIHN1YnRsZSBwcm9ibGVtcyB3aGVuIHN0YXRlIGlzIGNoYW5nZWQgcmlnaHQgYmVmb3JlIHJlcGFpbnRcbi8vIChlLmcuICM2ODEzLCBvdXQtaW4gdHJhbnNpdGlvbnMpLlxuLy8gQWxzbywgdXNpbmcgKG1hY3JvKSB0YXNrcyBpbiBldmVudCBoYW5kbGVyIHdvdWxkIGNhdXNlIHNvbWUgd2VpcmQgYmVoYXZpb3JzXG4vLyB0aGF0IGNhbm5vdCBiZSBjaXJjdW12ZW50ZWQgKGUuZy4gIzcxMDksICM3MTUzLCAjNzU0NiwgIzc4MzQsICM4MTA5KS5cbi8vIFNvIHdlIG5vdyB1c2UgbWljcm90YXNrcyBldmVyeXdoZXJlLCBhZ2Fpbi5cbi8vIEEgbWFqb3IgZHJhd2JhY2sgb2YgdGhpcyB0cmFkZW9mZiBpcyB0aGF0IHRoZXJlIGFyZSBzb21lIHNjZW5hcmlvc1xuLy8gd2hlcmUgbWljcm90YXNrcyBoYXZlIHRvbyBoaWdoIGEgcHJpb3JpdHkgYW5kIGZpcmUgaW4gYmV0d2VlbiBzdXBwb3NlZGx5XG4vLyBzZXF1ZW50aWFsIGV2ZW50cyAoZS5nLiAjNDUyMSwgIzY2OTAsIHdoaWNoIGhhdmUgd29ya2Fyb3VuZHMpXG4vLyBvciBldmVuIGJldHdlZW4gYnViYmxpbmcgb2YgdGhlIHNhbWUgZXZlbnQgKCM2NTY2KS5cbnZhciB0aW1lckZ1bmM7XG5cbi8vIFRoZSBuZXh0VGljayBiZWhhdmlvciBsZXZlcmFnZXMgdGhlIG1pY3JvdGFzayBxdWV1ZSwgd2hpY2ggY2FuIGJlIGFjY2Vzc2VkXG4vLyB2aWEgZWl0aGVyIG5hdGl2ZSBQcm9taXNlLnRoZW4gb3IgTXV0YXRpb25PYnNlcnZlci5cbi8vIE11dGF0aW9uT2JzZXJ2ZXIgaGFzIHdpZGVyIHN1cHBvcnQsIGhvd2V2ZXIgaXQgaXMgc2VyaW91c2x5IGJ1Z2dlZCBpblxuLy8gVUlXZWJWaWV3IGluIGlPUyA+PSA5LjMuMyB3aGVuIHRyaWdnZXJlZCBpbiB0b3VjaCBldmVudCBoYW5kbGVycy4gSXRcbi8vIGNvbXBsZXRlbHkgc3RvcHMgd29ya2luZyBhZnRlciB0cmlnZ2VyaW5nIGEgZmV3IHRpbWVzLi4uIHNvLCBpZiBuYXRpdmVcbi8vIFByb21pc2UgaXMgYXZhaWxhYmxlLCB3ZSB3aWxsIHVzZSBpdDpcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0LCAkZmxvdy1kaXNhYmxlLWxpbmUgKi9cbmlmICh0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNOYXRpdmUoUHJvbWlzZSkpIHtcbiAgdmFyIHAgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgdGltZXJGdW5jID0gZnVuY3Rpb24gKCkge1xuICAgIHAudGhlbihmbHVzaENhbGxiYWNrcyk7XG4gICAgLy8gSW4gcHJvYmxlbWF0aWMgVUlXZWJWaWV3cywgUHJvbWlzZS50aGVuIGRvZXNuJ3QgY29tcGxldGVseSBicmVhaywgYnV0XG4gICAgLy8gaXQgY2FuIGdldCBzdHVjayBpbiBhIHdlaXJkIHN0YXRlIHdoZXJlIGNhbGxiYWNrcyBhcmUgcHVzaGVkIGludG8gdGhlXG4gICAgLy8gbWljcm90YXNrIHF1ZXVlIGJ1dCB0aGUgcXVldWUgaXNuJ3QgYmVpbmcgZmx1c2hlZCwgdW50aWwgdGhlIGJyb3dzZXJcbiAgICAvLyBuZWVkcyB0byBkbyBzb21lIG90aGVyIHdvcmssIGUuZy4gaGFuZGxlIGEgdGltZXIuIFRoZXJlZm9yZSB3ZSBjYW5cbiAgICAvLyBcImZvcmNlXCIgdGhlIG1pY3JvdGFzayBxdWV1ZSB0byBiZSBmbHVzaGVkIGJ5IGFkZGluZyBhbiBlbXB0eSB0aW1lci5cbiAgICBpZiAoaXNJT1MpIHsgc2V0VGltZW91dChub29wKTsgfVxuICB9O1xuICBpc1VzaW5nTWljcm9UYXNrID0gdHJ1ZTtcbn0gZWxzZSBpZiAoIWlzSUUgJiYgdHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXIgIT09ICd1bmRlZmluZWQnICYmIChcbiAgaXNOYXRpdmUoTXV0YXRpb25PYnNlcnZlcikgfHxcbiAgLy8gUGhhbnRvbUpTIGFuZCBpT1MgNy54XG4gIE11dGF0aW9uT2JzZXJ2ZXIudG9TdHJpbmcoKSA9PT0gJ1tvYmplY3QgTXV0YXRpb25PYnNlcnZlckNvbnN0cnVjdG9yXSdcbikpIHtcbiAgLy8gVXNlIE11dGF0aW9uT2JzZXJ2ZXIgd2hlcmUgbmF0aXZlIFByb21pc2UgaXMgbm90IGF2YWlsYWJsZSxcbiAgLy8gZS5nLiBQaGFudG9tSlMsIGlPUzcsIEFuZHJvaWQgNC40XG4gIC8vICgjNjQ2NiBNdXRhdGlvbk9ic2VydmVyIGlzIHVucmVsaWFibGUgaW4gSUUxMSlcbiAgdmFyIGNvdW50ZXIgPSAxO1xuICB2YXIgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmbHVzaENhbGxiYWNrcyk7XG4gIHZhciB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFN0cmluZyhjb3VudGVyKSk7XG4gIG9ic2VydmVyLm9ic2VydmUodGV4dE5vZGUsIHtcbiAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlXG4gIH0pO1xuICB0aW1lckZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgY291bnRlciA9IChjb3VudGVyICsgMSkgJSAyO1xuICAgIHRleHROb2RlLmRhdGEgPSBTdHJpbmcoY291bnRlcik7XG4gIH07XG4gIGlzVXNpbmdNaWNyb1Rhc2sgPSB0cnVlO1xufSBlbHNlIGlmICh0eXBlb2Ygc2V0SW1tZWRpYXRlICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShzZXRJbW1lZGlhdGUpKSB7XG4gIC8vIEZhbGxiYWNrIHRvIHNldEltbWVkaWF0ZS5cbiAgLy8gVGVjaGluaWNhbGx5IGl0IGxldmVyYWdlcyB0aGUgKG1hY3JvKSB0YXNrIHF1ZXVlLFxuICAvLyBidXQgaXQgaXMgc3RpbGwgYSBiZXR0ZXIgY2hvaWNlIHRoYW4gc2V0VGltZW91dC5cbiAgdGltZXJGdW5jID0gZnVuY3Rpb24gKCkge1xuICAgIHNldEltbWVkaWF0ZShmbHVzaENhbGxiYWNrcyk7XG4gIH07XG59IGVsc2Uge1xuICAvLyBGYWxsYmFjayB0byBzZXRUaW1lb3V0LlxuICB0aW1lckZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgc2V0VGltZW91dChmbHVzaENhbGxiYWNrcywgMCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIG5leHRUaWNrIChjYiwgY3R4KSB7XG4gIHZhciBfcmVzb2x2ZTtcbiAgY2FsbGJhY2tzLnB1c2goZnVuY3Rpb24gKCkge1xuICAgIGlmIChjYikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY2IuY2FsbChjdHgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBoYW5kbGVFcnJvcihlLCBjdHgsICduZXh0VGljaycpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoX3Jlc29sdmUpIHtcbiAgICAgIF9yZXNvbHZlKGN0eCk7XG4gICAgfVxuICB9KTtcbiAgaWYgKCFwZW5kaW5nKSB7XG4gICAgcGVuZGluZyA9IHRydWU7XG4gICAgdGltZXJGdW5jKCk7XG4gIH1cbiAgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gIGlmICghY2IgJiYgdHlwZW9mIFByb21pc2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgfSlcbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIG1hcms7XG52YXIgbWVhc3VyZTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIHBlcmYgPSBpbkJyb3dzZXIgJiYgd2luZG93LnBlcmZvcm1hbmNlO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKFxuICAgIHBlcmYgJiZcbiAgICBwZXJmLm1hcmsgJiZcbiAgICBwZXJmLm1lYXN1cmUgJiZcbiAgICBwZXJmLmNsZWFyTWFya3MgJiZcbiAgICBwZXJmLmNsZWFyTWVhc3VyZXNcbiAgKSB7XG4gICAgbWFyayA9IGZ1bmN0aW9uICh0YWcpIHsgcmV0dXJuIHBlcmYubWFyayh0YWcpOyB9O1xuICAgIG1lYXN1cmUgPSBmdW5jdGlvbiAobmFtZSwgc3RhcnRUYWcsIGVuZFRhZykge1xuICAgICAgcGVyZi5tZWFzdXJlKG5hbWUsIHN0YXJ0VGFnLCBlbmRUYWcpO1xuICAgICAgcGVyZi5jbGVhck1hcmtzKHN0YXJ0VGFnKTtcbiAgICAgIHBlcmYuY2xlYXJNYXJrcyhlbmRUYWcpO1xuICAgICAgLy8gcGVyZi5jbGVhck1lYXN1cmVzKG5hbWUpXG4gICAgfTtcbiAgfVxufVxuXG4vKiBub3QgdHlwZSBjaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBmbG93IGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGggUHJveHkgKi9cblxudmFyIGluaXRQcm94eTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGFsbG93ZWRHbG9iYWxzID0gbWFrZU1hcChcbiAgICAnSW5maW5pdHksdW5kZWZpbmVkLE5hTixpc0Zpbml0ZSxpc05hTiwnICtcbiAgICAncGFyc2VGbG9hdCxwYXJzZUludCxkZWNvZGVVUkksZGVjb2RlVVJJQ29tcG9uZW50LGVuY29kZVVSSSxlbmNvZGVVUklDb21wb25lbnQsJyArXG4gICAgJ01hdGgsTnVtYmVyLERhdGUsQXJyYXksT2JqZWN0LEJvb2xlYW4sU3RyaW5nLFJlZ0V4cCxNYXAsU2V0LEpTT04sSW50bCwnICtcbiAgICAncmVxdWlyZScgLy8gZm9yIFdlYnBhY2svQnJvd3NlcmlmeVxuICApO1xuXG4gIHZhciB3YXJuTm9uUHJlc2VudCA9IGZ1bmN0aW9uICh0YXJnZXQsIGtleSkge1xuICAgIHdhcm4oXG4gICAgICBcIlByb3BlcnR5IG9yIG1ldGhvZCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgbm90IGRlZmluZWQgb24gdGhlIGluc3RhbmNlIGJ1dCBcIiArXG4gICAgICAncmVmZXJlbmNlZCBkdXJpbmcgcmVuZGVyLiBNYWtlIHN1cmUgdGhhdCB0aGlzIHByb3BlcnR5IGlzIHJlYWN0aXZlLCAnICtcbiAgICAgICdlaXRoZXIgaW4gdGhlIGRhdGEgb3B0aW9uLCBvciBmb3IgY2xhc3MtYmFzZWQgY29tcG9uZW50cywgYnkgJyArXG4gICAgICAnaW5pdGlhbGl6aW5nIHRoZSBwcm9wZXJ0eS4gJyArXG4gICAgICAnU2VlOiBodHRwczovL3Z1ZWpzLm9yZy92Mi9ndWlkZS9yZWFjdGl2aXR5Lmh0bWwjRGVjbGFyaW5nLVJlYWN0aXZlLVByb3BlcnRpZXMuJyxcbiAgICAgIHRhcmdldFxuICAgICk7XG4gIH07XG5cbiAgdmFyIHdhcm5SZXNlcnZlZFByZWZpeCA9IGZ1bmN0aW9uICh0YXJnZXQsIGtleSkge1xuICAgIHdhcm4oXG4gICAgICBcIlByb3BlcnR5IFxcXCJcIiArIGtleSArIFwiXFxcIiBtdXN0IGJlIGFjY2Vzc2VkIHdpdGggXFxcIiRkYXRhLlwiICsga2V5ICsgXCJcXFwiIGJlY2F1c2UgXCIgK1xuICAgICAgJ3Byb3BlcnRpZXMgc3RhcnRpbmcgd2l0aCBcIiRcIiBvciBcIl9cIiBhcmUgbm90IHByb3hpZWQgaW4gdGhlIFZ1ZSBpbnN0YW5jZSB0byAnICtcbiAgICAgICdwcmV2ZW50IGNvbmZsaWN0cyB3aXRoIFZ1ZSBpbnRlcm5hbHMnICtcbiAgICAgICdTZWU6IGh0dHBzOi8vdnVlanMub3JnL3YyL2FwaS8jZGF0YScsXG4gICAgICB0YXJnZXRcbiAgICApO1xuICB9O1xuXG4gIHZhciBoYXNQcm94eSA9XG4gICAgdHlwZW9mIFByb3h5ICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShQcm94eSk7XG5cbiAgaWYgKGhhc1Byb3h5KSB7XG4gICAgdmFyIGlzQnVpbHRJbk1vZGlmaWVyID0gbWFrZU1hcCgnc3RvcCxwcmV2ZW50LHNlbGYsY3RybCxzaGlmdCxhbHQsbWV0YSxleGFjdCcpO1xuICAgIGNvbmZpZy5rZXlDb2RlcyA9IG5ldyBQcm94eShjb25maWcua2V5Q29kZXMsIHtcbiAgICAgIHNldDogZnVuY3Rpb24gc2V0ICh0YXJnZXQsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzQnVpbHRJbk1vZGlmaWVyKGtleSkpIHtcbiAgICAgICAgICB3YXJuKChcIkF2b2lkIG92ZXJ3cml0aW5nIGJ1aWx0LWluIG1vZGlmaWVyIGluIGNvbmZpZy5rZXlDb2RlczogLlwiICsga2V5KSk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB2YXIgaGFzSGFuZGxlciA9IHtcbiAgICBoYXM6IGZ1bmN0aW9uIGhhcyAodGFyZ2V0LCBrZXkpIHtcbiAgICAgIHZhciBoYXMgPSBrZXkgaW4gdGFyZ2V0O1xuICAgICAgdmFyIGlzQWxsb3dlZCA9IGFsbG93ZWRHbG9iYWxzKGtleSkgfHxcbiAgICAgICAgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnICYmIGtleS5jaGFyQXQoMCkgPT09ICdfJyAmJiAhKGtleSBpbiB0YXJnZXQuJGRhdGEpKTtcbiAgICAgIGlmICghaGFzICYmICFpc0FsbG93ZWQpIHtcbiAgICAgICAgaWYgKGtleSBpbiB0YXJnZXQuJGRhdGEpIHsgd2FyblJlc2VydmVkUHJlZml4KHRhcmdldCwga2V5KTsgfVxuICAgICAgICBlbHNlIHsgd2Fybk5vblByZXNlbnQodGFyZ2V0LCBrZXkpOyB9XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFzIHx8ICFpc0FsbG93ZWRcbiAgICB9XG4gIH07XG5cbiAgdmFyIGdldEhhbmRsZXIgPSB7XG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQgKHRhcmdldCwga2V5KSB7XG4gICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycgJiYgIShrZXkgaW4gdGFyZ2V0KSkge1xuICAgICAgICBpZiAoa2V5IGluIHRhcmdldC4kZGF0YSkgeyB3YXJuUmVzZXJ2ZWRQcmVmaXgodGFyZ2V0LCBrZXkpOyB9XG4gICAgICAgIGVsc2UgeyB3YXJuTm9uUHJlc2VudCh0YXJnZXQsIGtleSk7IH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0YXJnZXRba2V5XVxuICAgIH1cbiAgfTtcblxuICBpbml0UHJveHkgPSBmdW5jdGlvbiBpbml0UHJveHkgKHZtKSB7XG4gICAgaWYgKGhhc1Byb3h5KSB7XG4gICAgICAvLyBkZXRlcm1pbmUgd2hpY2ggcHJveHkgaGFuZGxlciB0byB1c2VcbiAgICAgIHZhciBvcHRpb25zID0gdm0uJG9wdGlvbnM7XG4gICAgICB2YXIgaGFuZGxlcnMgPSBvcHRpb25zLnJlbmRlciAmJiBvcHRpb25zLnJlbmRlci5fd2l0aFN0cmlwcGVkXG4gICAgICAgID8gZ2V0SGFuZGxlclxuICAgICAgICA6IGhhc0hhbmRsZXI7XG4gICAgICB2bS5fcmVuZGVyUHJveHkgPSBuZXcgUHJveHkodm0sIGhhbmRsZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uX3JlbmRlclByb3h5ID0gdm07XG4gICAgfVxuICB9O1xufVxuXG4vKiAgKi9cblxudmFyIHNlZW5PYmplY3RzID0gbmV3IF9TZXQoKTtcblxuLyoqXG4gKiBSZWN1cnNpdmVseSB0cmF2ZXJzZSBhbiBvYmplY3QgdG8gZXZva2UgYWxsIGNvbnZlcnRlZFxuICogZ2V0dGVycywgc28gdGhhdCBldmVyeSBuZXN0ZWQgcHJvcGVydHkgaW5zaWRlIHRoZSBvYmplY3RcbiAqIGlzIGNvbGxlY3RlZCBhcyBhIFwiZGVlcFwiIGRlcGVuZGVuY3kuXG4gKi9cbmZ1bmN0aW9uIHRyYXZlcnNlICh2YWwpIHtcbiAgX3RyYXZlcnNlKHZhbCwgc2Vlbk9iamVjdHMpO1xuICBzZWVuT2JqZWN0cy5jbGVhcigpO1xufVxuXG5mdW5jdGlvbiBfdHJhdmVyc2UgKHZhbCwgc2Vlbikge1xuICB2YXIgaSwga2V5cztcbiAgdmFyIGlzQSA9IEFycmF5LmlzQXJyYXkodmFsKTtcbiAgaWYgKCghaXNBICYmICFpc09iamVjdCh2YWwpKSB8fCBPYmplY3QuaXNGcm96ZW4odmFsKSB8fCB2YWwgaW5zdGFuY2VvZiBWTm9kZSkge1xuICAgIHJldHVyblxuICB9XG4gIGlmICh2YWwuX19vYl9fKSB7XG4gICAgdmFyIGRlcElkID0gdmFsLl9fb2JfXy5kZXAuaWQ7XG4gICAgaWYgKHNlZW4uaGFzKGRlcElkKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNlZW4uYWRkKGRlcElkKTtcbiAgfVxuICBpZiAoaXNBKSB7XG4gICAgaSA9IHZhbC5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkgeyBfdHJhdmVyc2UodmFsW2ldLCBzZWVuKTsgfVxuICB9IGVsc2Uge1xuICAgIGtleXMgPSBPYmplY3Qua2V5cyh2YWwpO1xuICAgIGkgPSBrZXlzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7IF90cmF2ZXJzZSh2YWxba2V5c1tpXV0sIHNlZW4pOyB9XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBub3JtYWxpemVFdmVudCA9IGNhY2hlZChmdW5jdGlvbiAobmFtZSkge1xuICB2YXIgcGFzc2l2ZSA9IG5hbWUuY2hhckF0KDApID09PSAnJic7XG4gIG5hbWUgPSBwYXNzaXZlID8gbmFtZS5zbGljZSgxKSA6IG5hbWU7XG4gIHZhciBvbmNlJCQxID0gbmFtZS5jaGFyQXQoMCkgPT09ICd+JzsgLy8gUHJlZml4ZWQgbGFzdCwgY2hlY2tlZCBmaXJzdFxuICBuYW1lID0gb25jZSQkMSA/IG5hbWUuc2xpY2UoMSkgOiBuYW1lO1xuICB2YXIgY2FwdHVyZSA9IG5hbWUuY2hhckF0KDApID09PSAnISc7XG4gIG5hbWUgPSBjYXB0dXJlID8gbmFtZS5zbGljZSgxKSA6IG5hbWU7XG4gIHJldHVybiB7XG4gICAgbmFtZTogbmFtZSxcbiAgICBvbmNlOiBvbmNlJCQxLFxuICAgIGNhcHR1cmU6IGNhcHR1cmUsXG4gICAgcGFzc2l2ZTogcGFzc2l2ZVxuICB9XG59KTtcblxuZnVuY3Rpb24gY3JlYXRlRm5JbnZva2VyIChmbnMsIHZtKSB7XG4gIGZ1bmN0aW9uIGludm9rZXIgKCkge1xuICAgIHZhciBhcmd1bWVudHMkMSA9IGFyZ3VtZW50cztcblxuICAgIHZhciBmbnMgPSBpbnZva2VyLmZucztcbiAgICBpZiAoQXJyYXkuaXNBcnJheShmbnMpKSB7XG4gICAgICB2YXIgY2xvbmVkID0gZm5zLnNsaWNlKCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNsb25lZC5sZW5ndGg7IGkrKykge1xuICAgICAgICBpbnZva2VXaXRoRXJyb3JIYW5kbGluZyhjbG9uZWRbaV0sIG51bGwsIGFyZ3VtZW50cyQxLCB2bSwgXCJ2LW9uIGhhbmRsZXJcIik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJldHVybiBoYW5kbGVyIHJldHVybiB2YWx1ZSBmb3Igc2luZ2xlIGhhbmRsZXJzXG4gICAgICByZXR1cm4gaW52b2tlV2l0aEVycm9ySGFuZGxpbmcoZm5zLCBudWxsLCBhcmd1bWVudHMsIHZtLCBcInYtb24gaGFuZGxlclwiKVxuICAgIH1cbiAgfVxuICBpbnZva2VyLmZucyA9IGZucztcbiAgcmV0dXJuIGludm9rZXJcbn1cblxuZnVuY3Rpb24gdXBkYXRlTGlzdGVuZXJzIChcbiAgb24sXG4gIG9sZE9uLFxuICBhZGQsXG4gIHJlbW92ZSQkMSxcbiAgY3JlYXRlT25jZUhhbmRsZXIsXG4gIHZtXG4pIHtcbiAgdmFyIG5hbWUsIGRlZiQkMSwgY3VyLCBvbGQsIGV2ZW50O1xuICBmb3IgKG5hbWUgaW4gb24pIHtcbiAgICBkZWYkJDEgPSBjdXIgPSBvbltuYW1lXTtcbiAgICBvbGQgPSBvbGRPbltuYW1lXTtcbiAgICBldmVudCA9IG5vcm1hbGl6ZUV2ZW50KG5hbWUpO1xuICAgIGlmIChpc1VuZGVmKGN1cikpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgXCJJbnZhbGlkIGhhbmRsZXIgZm9yIGV2ZW50IFxcXCJcIiArIChldmVudC5uYW1lKSArIFwiXFxcIjogZ290IFwiICsgU3RyaW5nKGN1ciksXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoaXNVbmRlZihvbGQpKSB7XG4gICAgICBpZiAoaXNVbmRlZihjdXIuZm5zKSkge1xuICAgICAgICBjdXIgPSBvbltuYW1lXSA9IGNyZWF0ZUZuSW52b2tlcihjdXIsIHZtKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1RydWUoZXZlbnQub25jZSkpIHtcbiAgICAgICAgY3VyID0gb25bbmFtZV0gPSBjcmVhdGVPbmNlSGFuZGxlcihldmVudC5uYW1lLCBjdXIsIGV2ZW50LmNhcHR1cmUpO1xuICAgICAgfVxuICAgICAgYWRkKGV2ZW50Lm5hbWUsIGN1ciwgZXZlbnQuY2FwdHVyZSwgZXZlbnQucGFzc2l2ZSwgZXZlbnQucGFyYW1zKTtcbiAgICB9IGVsc2UgaWYgKGN1ciAhPT0gb2xkKSB7XG4gICAgICBvbGQuZm5zID0gY3VyO1xuICAgICAgb25bbmFtZV0gPSBvbGQ7XG4gICAgfVxuICB9XG4gIGZvciAobmFtZSBpbiBvbGRPbikge1xuICAgIGlmIChpc1VuZGVmKG9uW25hbWVdKSkge1xuICAgICAgZXZlbnQgPSBub3JtYWxpemVFdmVudChuYW1lKTtcbiAgICAgIHJlbW92ZSQkMShldmVudC5uYW1lLCBvbGRPbltuYW1lXSwgZXZlbnQuY2FwdHVyZSk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBtZXJnZVZOb2RlSG9vayAoZGVmLCBob29rS2V5LCBob29rKSB7XG4gIGlmIChkZWYgaW5zdGFuY2VvZiBWTm9kZSkge1xuICAgIGRlZiA9IGRlZi5kYXRhLmhvb2sgfHwgKGRlZi5kYXRhLmhvb2sgPSB7fSk7XG4gIH1cbiAgdmFyIGludm9rZXI7XG4gIHZhciBvbGRIb29rID0gZGVmW2hvb2tLZXldO1xuXG4gIGZ1bmN0aW9uIHdyYXBwZWRIb29rICgpIHtcbiAgICBob29rLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgLy8gaW1wb3J0YW50OiByZW1vdmUgbWVyZ2VkIGhvb2sgdG8gZW5zdXJlIGl0J3MgY2FsbGVkIG9ubHkgb25jZVxuICAgIC8vIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrXG4gICAgcmVtb3ZlKGludm9rZXIuZm5zLCB3cmFwcGVkSG9vayk7XG4gIH1cblxuICBpZiAoaXNVbmRlZihvbGRIb29rKSkge1xuICAgIC8vIG5vIGV4aXN0aW5nIGhvb2tcbiAgICBpbnZva2VyID0gY3JlYXRlRm5JbnZva2VyKFt3cmFwcGVkSG9va10pO1xuICB9IGVsc2Uge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChpc0RlZihvbGRIb29rLmZucykgJiYgaXNUcnVlKG9sZEhvb2subWVyZ2VkKSkge1xuICAgICAgLy8gYWxyZWFkeSBhIG1lcmdlZCBpbnZva2VyXG4gICAgICBpbnZva2VyID0gb2xkSG9vaztcbiAgICAgIGludm9rZXIuZm5zLnB1c2god3JhcHBlZEhvb2spO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBleGlzdGluZyBwbGFpbiBob29rXG4gICAgICBpbnZva2VyID0gY3JlYXRlRm5JbnZva2VyKFtvbGRIb29rLCB3cmFwcGVkSG9va10pO1xuICAgIH1cbiAgfVxuXG4gIGludm9rZXIubWVyZ2VkID0gdHJ1ZTtcbiAgZGVmW2hvb2tLZXldID0gaW52b2tlcjtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGV4dHJhY3RQcm9wc0Zyb21WTm9kZURhdGEgKFxuICBkYXRhLFxuICBDdG9yLFxuICB0YWdcbikge1xuICAvLyB3ZSBhcmUgb25seSBleHRyYWN0aW5nIHJhdyB2YWx1ZXMgaGVyZS5cbiAgLy8gdmFsaWRhdGlvbiBhbmQgZGVmYXVsdCB2YWx1ZXMgYXJlIGhhbmRsZWQgaW4gdGhlIGNoaWxkXG4gIC8vIGNvbXBvbmVudCBpdHNlbGYuXG4gIHZhciBwcm9wT3B0aW9ucyA9IEN0b3Iub3B0aW9ucy5wcm9wcztcbiAgaWYgKGlzVW5kZWYocHJvcE9wdGlvbnMpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgYXR0cnMgPSBkYXRhLmF0dHJzO1xuICB2YXIgcHJvcHMgPSBkYXRhLnByb3BzO1xuICBpZiAoaXNEZWYoYXR0cnMpIHx8IGlzRGVmKHByb3BzKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wT3B0aW9ucykge1xuICAgICAgdmFyIGFsdEtleSA9IGh5cGhlbmF0ZShrZXkpO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFyIGtleUluTG93ZXJDYXNlID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBrZXkgIT09IGtleUluTG93ZXJDYXNlICYmXG4gICAgICAgICAgYXR0cnMgJiYgaGFzT3duKGF0dHJzLCBrZXlJbkxvd2VyQ2FzZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGlwKFxuICAgICAgICAgICAgXCJQcm9wIFxcXCJcIiArIGtleUluTG93ZXJDYXNlICsgXCJcXFwiIGlzIHBhc3NlZCB0byBjb21wb25lbnQgXCIgK1xuICAgICAgICAgICAgKGZvcm1hdENvbXBvbmVudE5hbWUodGFnIHx8IEN0b3IpKSArIFwiLCBidXQgdGhlIGRlY2xhcmVkIHByb3AgbmFtZSBpc1wiICtcbiAgICAgICAgICAgIFwiIFxcXCJcIiArIGtleSArIFwiXFxcIi4gXCIgK1xuICAgICAgICAgICAgXCJOb3RlIHRoYXQgSFRNTCBhdHRyaWJ1dGVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlIGFuZCBjYW1lbENhc2VkIFwiICtcbiAgICAgICAgICAgIFwicHJvcHMgbmVlZCB0byB1c2UgdGhlaXIga2ViYWItY2FzZSBlcXVpdmFsZW50cyB3aGVuIHVzaW5nIGluLURPTSBcIiArXG4gICAgICAgICAgICBcInRlbXBsYXRlcy4gWW91IHNob3VsZCBwcm9iYWJseSB1c2UgXFxcIlwiICsgYWx0S2V5ICsgXCJcXFwiIGluc3RlYWQgb2YgXFxcIlwiICsga2V5ICsgXCJcXFwiLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2hlY2tQcm9wKHJlcywgcHJvcHMsIGtleSwgYWx0S2V5LCB0cnVlKSB8fFxuICAgICAgY2hlY2tQcm9wKHJlcywgYXR0cnMsIGtleSwgYWx0S2V5LCBmYWxzZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gY2hlY2tQcm9wIChcbiAgcmVzLFxuICBoYXNoLFxuICBrZXksXG4gIGFsdEtleSxcbiAgcHJlc2VydmVcbikge1xuICBpZiAoaXNEZWYoaGFzaCkpIHtcbiAgICBpZiAoaGFzT3duKGhhc2gsIGtleSkpIHtcbiAgICAgIHJlc1trZXldID0gaGFzaFtrZXldO1xuICAgICAgaWYgKCFwcmVzZXJ2ZSkge1xuICAgICAgICBkZWxldGUgaGFzaFtrZXldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGVsc2UgaWYgKGhhc093bihoYXNoLCBhbHRLZXkpKSB7XG4gICAgICByZXNba2V5XSA9IGhhc2hbYWx0S2V5XTtcbiAgICAgIGlmICghcHJlc2VydmUpIHtcbiAgICAgICAgZGVsZXRlIGhhc2hbYWx0S2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG4vKiAgKi9cblxuLy8gVGhlIHRlbXBsYXRlIGNvbXBpbGVyIGF0dGVtcHRzIHRvIG1pbmltaXplIHRoZSBuZWVkIGZvciBub3JtYWxpemF0aW9uIGJ5XG4vLyBzdGF0aWNhbGx5IGFuYWx5emluZyB0aGUgdGVtcGxhdGUgYXQgY29tcGlsZSB0aW1lLlxuLy9cbi8vIEZvciBwbGFpbiBIVE1MIG1hcmt1cCwgbm9ybWFsaXphdGlvbiBjYW4gYmUgY29tcGxldGVseSBza2lwcGVkIGJlY2F1c2UgdGhlXG4vLyBnZW5lcmF0ZWQgcmVuZGVyIGZ1bmN0aW9uIGlzIGd1YXJhbnRlZWQgdG8gcmV0dXJuIEFycmF5PFZOb2RlPi4gVGhlcmUgYXJlXG4vLyB0d28gY2FzZXMgd2hlcmUgZXh0cmEgbm9ybWFsaXphdGlvbiBpcyBuZWVkZWQ6XG5cbi8vIDEuIFdoZW4gdGhlIGNoaWxkcmVuIGNvbnRhaW5zIGNvbXBvbmVudHMgLSBiZWNhdXNlIGEgZnVuY3Rpb25hbCBjb21wb25lbnRcbi8vIG1heSByZXR1cm4gYW4gQXJyYXkgaW5zdGVhZCBvZiBhIHNpbmdsZSByb290LiBJbiB0aGlzIGNhc2UsIGp1c3QgYSBzaW1wbGVcbi8vIG5vcm1hbGl6YXRpb24gaXMgbmVlZGVkIC0gaWYgYW55IGNoaWxkIGlzIGFuIEFycmF5LCB3ZSBmbGF0dGVuIHRoZSB3aG9sZVxuLy8gdGhpbmcgd2l0aCBBcnJheS5wcm90b3R5cGUuY29uY2F0LiBJdCBpcyBndWFyYW50ZWVkIHRvIGJlIG9ubHkgMS1sZXZlbCBkZWVwXG4vLyBiZWNhdXNlIGZ1bmN0aW9uYWwgY29tcG9uZW50cyBhbHJlYWR5IG5vcm1hbGl6ZSB0aGVpciBvd24gY2hpbGRyZW4uXG5mdW5jdGlvbiBzaW1wbGVOb3JtYWxpemVDaGlsZHJlbiAoY2hpbGRyZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuW2ldKSkge1xuICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sIGNoaWxkcmVuKVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2hpbGRyZW5cbn1cblxuLy8gMi4gV2hlbiB0aGUgY2hpbGRyZW4gY29udGFpbnMgY29uc3RydWN0cyB0aGF0IGFsd2F5cyBnZW5lcmF0ZWQgbmVzdGVkIEFycmF5cyxcbi8vIGUuZy4gPHRlbXBsYXRlPiwgPHNsb3Q+LCB2LWZvciwgb3Igd2hlbiB0aGUgY2hpbGRyZW4gaXMgcHJvdmlkZWQgYnkgdXNlclxuLy8gd2l0aCBoYW5kLXdyaXR0ZW4gcmVuZGVyIGZ1bmN0aW9ucyAvIEpTWC4gSW4gc3VjaCBjYXNlcyBhIGZ1bGwgbm9ybWFsaXphdGlvblxuLy8gaXMgbmVlZGVkIHRvIGNhdGVyIHRvIGFsbCBwb3NzaWJsZSB0eXBlcyBvZiBjaGlsZHJlbiB2YWx1ZXMuXG5mdW5jdGlvbiBub3JtYWxpemVDaGlsZHJlbiAoY2hpbGRyZW4pIHtcbiAgcmV0dXJuIGlzUHJpbWl0aXZlKGNoaWxkcmVuKVxuICAgID8gW2NyZWF0ZVRleHRWTm9kZShjaGlsZHJlbildXG4gICAgOiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKVxuICAgICAgPyBub3JtYWxpemVBcnJheUNoaWxkcmVuKGNoaWxkcmVuKVxuICAgICAgOiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gaXNUZXh0Tm9kZSAobm9kZSkge1xuICByZXR1cm4gaXNEZWYobm9kZSkgJiYgaXNEZWYobm9kZS50ZXh0KSAmJiBpc0ZhbHNlKG5vZGUuaXNDb21tZW50KVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVBcnJheUNoaWxkcmVuIChjaGlsZHJlbiwgbmVzdGVkSW5kZXgpIHtcbiAgdmFyIHJlcyA9IFtdO1xuICB2YXIgaSwgYywgbGFzdEluZGV4LCBsYXN0O1xuICBmb3IgKGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICBjID0gY2hpbGRyZW5baV07XG4gICAgaWYgKGlzVW5kZWYoYykgfHwgdHlwZW9mIGMgPT09ICdib29sZWFuJykgeyBjb250aW51ZSB9XG4gICAgbGFzdEluZGV4ID0gcmVzLmxlbmd0aCAtIDE7XG4gICAgbGFzdCA9IHJlc1tsYXN0SW5kZXhdO1xuICAgIC8vICBuZXN0ZWRcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjKSkge1xuICAgICAgaWYgKGMubGVuZ3RoID4gMCkge1xuICAgICAgICBjID0gbm9ybWFsaXplQXJyYXlDaGlsZHJlbihjLCAoKG5lc3RlZEluZGV4IHx8ICcnKSArIFwiX1wiICsgaSkpO1xuICAgICAgICAvLyBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzXG4gICAgICAgIGlmIChpc1RleHROb2RlKGNbMF0pICYmIGlzVGV4dE5vZGUobGFzdCkpIHtcbiAgICAgICAgICByZXNbbGFzdEluZGV4XSA9IGNyZWF0ZVRleHRWTm9kZShsYXN0LnRleHQgKyAoY1swXSkudGV4dCk7XG4gICAgICAgICAgYy5zaGlmdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5wdXNoLmFwcGx5KHJlcywgYyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1ByaW1pdGl2ZShjKSkge1xuICAgICAgaWYgKGlzVGV4dE5vZGUobGFzdCkpIHtcbiAgICAgICAgLy8gbWVyZ2UgYWRqYWNlbnQgdGV4dCBub2Rlc1xuICAgICAgICAvLyB0aGlzIGlzIG5lY2Vzc2FyeSBmb3IgU1NSIGh5ZHJhdGlvbiBiZWNhdXNlIHRleHQgbm9kZXMgYXJlXG4gICAgICAgIC8vIGVzc2VudGlhbGx5IG1lcmdlZCB3aGVuIHJlbmRlcmVkIHRvIEhUTUwgc3RyaW5nc1xuICAgICAgICByZXNbbGFzdEluZGV4XSA9IGNyZWF0ZVRleHRWTm9kZShsYXN0LnRleHQgKyBjKTtcbiAgICAgIH0gZWxzZSBpZiAoYyAhPT0gJycpIHtcbiAgICAgICAgLy8gY29udmVydCBwcmltaXRpdmUgdG8gdm5vZGVcbiAgICAgICAgcmVzLnB1c2goY3JlYXRlVGV4dFZOb2RlKGMpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzVGV4dE5vZGUoYykgJiYgaXNUZXh0Tm9kZShsYXN0KSkge1xuICAgICAgICAvLyBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzXG4gICAgICAgIHJlc1tsYXN0SW5kZXhdID0gY3JlYXRlVGV4dFZOb2RlKGxhc3QudGV4dCArIGMudGV4dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBkZWZhdWx0IGtleSBmb3IgbmVzdGVkIGFycmF5IGNoaWxkcmVuIChsaWtlbHkgZ2VuZXJhdGVkIGJ5IHYtZm9yKVxuICAgICAgICBpZiAoaXNUcnVlKGNoaWxkcmVuLl9pc1ZMaXN0KSAmJlxuICAgICAgICAgIGlzRGVmKGMudGFnKSAmJlxuICAgICAgICAgIGlzVW5kZWYoYy5rZXkpICYmXG4gICAgICAgICAgaXNEZWYobmVzdGVkSW5kZXgpKSB7XG4gICAgICAgICAgYy5rZXkgPSBcIl9fdmxpc3RcIiArIG5lc3RlZEluZGV4ICsgXCJfXCIgKyBpICsgXCJfX1wiO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5wdXNoKGMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0UHJvdmlkZSAodm0pIHtcbiAgdmFyIHByb3ZpZGUgPSB2bS4kb3B0aW9ucy5wcm92aWRlO1xuICBpZiAocHJvdmlkZSkge1xuICAgIHZtLl9wcm92aWRlZCA9IHR5cGVvZiBwcm92aWRlID09PSAnZnVuY3Rpb24nXG4gICAgICA/IHByb3ZpZGUuY2FsbCh2bSlcbiAgICAgIDogcHJvdmlkZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0SW5qZWN0aW9ucyAodm0pIHtcbiAgdmFyIHJlc3VsdCA9IHJlc29sdmVJbmplY3Qodm0uJG9wdGlvbnMuaW5qZWN0LCB2bSk7XG4gIGlmIChyZXN1bHQpIHtcbiAgICB0b2dnbGVPYnNlcnZpbmcoZmFsc2UpO1xuICAgIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgZGVmaW5lUmVhY3RpdmUkJDEodm0sIGtleSwgcmVzdWx0W2tleV0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgXCJBdm9pZCBtdXRhdGluZyBhbiBpbmplY3RlZCB2YWx1ZSBkaXJlY3RseSBzaW5jZSB0aGUgY2hhbmdlcyB3aWxsIGJlIFwiICtcbiAgICAgICAgICAgIFwib3ZlcndyaXR0ZW4gd2hlbmV2ZXIgdGhlIHByb3ZpZGVkIGNvbXBvbmVudCByZS1yZW5kZXJzLiBcIiArXG4gICAgICAgICAgICBcImluamVjdGlvbiBiZWluZyBtdXRhdGVkOiBcXFwiXCIgKyBrZXkgKyBcIlxcXCJcIixcbiAgICAgICAgICAgIHZtXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWZpbmVSZWFjdGl2ZSQkMSh2bSwga2V5LCByZXN1bHRba2V5XSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdG9nZ2xlT2JzZXJ2aW5nKHRydWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVJbmplY3QgKGluamVjdCwgdm0pIHtcbiAgaWYgKGluamVjdCkge1xuICAgIC8vIGluamVjdCBpcyA6YW55IGJlY2F1c2UgZmxvdyBpcyBub3Qgc21hcnQgZW5vdWdoIHRvIGZpZ3VyZSBvdXQgY2FjaGVkXG4gICAgdmFyIHJlc3VsdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdmFyIGtleXMgPSBoYXNTeW1ib2xcbiAgICAgID8gUmVmbGVjdC5vd25LZXlzKGluamVjdClcbiAgICAgIDogT2JqZWN0LmtleXMoaW5qZWN0KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgICAvLyAjNjU3NCBpbiBjYXNlIHRoZSBpbmplY3Qgb2JqZWN0IGlzIG9ic2VydmVkLi4uXG4gICAgICBpZiAoa2V5ID09PSAnX19vYl9fJykgeyBjb250aW51ZSB9XG4gICAgICB2YXIgcHJvdmlkZUtleSA9IGluamVjdFtrZXldLmZyb207XG4gICAgICB2YXIgc291cmNlID0gdm07XG4gICAgICB3aGlsZSAoc291cmNlKSB7XG4gICAgICAgIGlmIChzb3VyY2UuX3Byb3ZpZGVkICYmIGhhc093bihzb3VyY2UuX3Byb3ZpZGVkLCBwcm92aWRlS2V5KSkge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gc291cmNlLl9wcm92aWRlZFtwcm92aWRlS2V5XTtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIHNvdXJjZSA9IHNvdXJjZS4kcGFyZW50O1xuICAgICAgfVxuICAgICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgICAgaWYgKCdkZWZhdWx0JyBpbiBpbmplY3Rba2V5XSkge1xuICAgICAgICAgIHZhciBwcm92aWRlRGVmYXVsdCA9IGluamVjdFtrZXldLmRlZmF1bHQ7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSB0eXBlb2YgcHJvdmlkZURlZmF1bHQgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgID8gcHJvdmlkZURlZmF1bHQuY2FsbCh2bSlcbiAgICAgICAgICAgIDogcHJvdmlkZURlZmF1bHQ7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHdhcm4oKFwiSW5qZWN0aW9uIFxcXCJcIiArIGtleSArIFwiXFxcIiBub3QgZm91bmRcIiksIHZtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cbn1cblxuLyogICovXG5cblxuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZXNvbHZpbmcgcmF3IGNoaWxkcmVuIFZOb2RlcyBpbnRvIGEgc2xvdCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVTbG90cyAoXG4gIGNoaWxkcmVuLFxuICBjb250ZXh0XG4pIHtcbiAgaWYgKCFjaGlsZHJlbiB8fCAhY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHt9XG4gIH1cbiAgdmFyIHNsb3RzID0ge307XG4gIGZvciAodmFyIGkgPSAwLCBsID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgdmFyIGRhdGEgPSBjaGlsZC5kYXRhO1xuICAgIC8vIHJlbW92ZSBzbG90IGF0dHJpYnV0ZSBpZiB0aGUgbm9kZSBpcyByZXNvbHZlZCBhcyBhIFZ1ZSBzbG90IG5vZGVcbiAgICBpZiAoZGF0YSAmJiBkYXRhLmF0dHJzICYmIGRhdGEuYXR0cnMuc2xvdCkge1xuICAgICAgZGVsZXRlIGRhdGEuYXR0cnMuc2xvdDtcbiAgICB9XG4gICAgLy8gbmFtZWQgc2xvdHMgc2hvdWxkIG9ubHkgYmUgcmVzcGVjdGVkIGlmIHRoZSB2bm9kZSB3YXMgcmVuZGVyZWQgaW4gdGhlXG4gICAgLy8gc2FtZSBjb250ZXh0LlxuICAgIGlmICgoY2hpbGQuY29udGV4dCA9PT0gY29udGV4dCB8fCBjaGlsZC5mbkNvbnRleHQgPT09IGNvbnRleHQpICYmXG4gICAgICBkYXRhICYmIGRhdGEuc2xvdCAhPSBudWxsXG4gICAgKSB7XG4gICAgICB2YXIgbmFtZSA9IGRhdGEuc2xvdDtcbiAgICAgIHZhciBzbG90ID0gKHNsb3RzW25hbWVdIHx8IChzbG90c1tuYW1lXSA9IFtdKSk7XG4gICAgICBpZiAoY2hpbGQudGFnID09PSAndGVtcGxhdGUnKSB7XG4gICAgICAgIHNsb3QucHVzaC5hcHBseShzbG90LCBjaGlsZC5jaGlsZHJlbiB8fCBbXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzbG90LnB1c2goY2hpbGQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAoc2xvdHMuZGVmYXVsdCB8fCAoc2xvdHMuZGVmYXVsdCA9IFtdKSkucHVzaChjaGlsZCk7XG4gICAgfVxuICB9XG4gIC8vIGlnbm9yZSBzbG90cyB0aGF0IGNvbnRhaW5zIG9ubHkgd2hpdGVzcGFjZVxuICBmb3IgKHZhciBuYW1lJDEgaW4gc2xvdHMpIHtcbiAgICBpZiAoc2xvdHNbbmFtZSQxXS5ldmVyeShpc1doaXRlc3BhY2UpKSB7XG4gICAgICBkZWxldGUgc2xvdHNbbmFtZSQxXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHNsb3RzXG59XG5cbmZ1bmN0aW9uIGlzV2hpdGVzcGFjZSAobm9kZSkge1xuICByZXR1cm4gKG5vZGUuaXNDb21tZW50ICYmICFub2RlLmFzeW5jRmFjdG9yeSkgfHwgbm9kZS50ZXh0ID09PSAnICdcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVNjb3BlZFNsb3RzIChcbiAgc2xvdHMsXG4gIG5vcm1hbFNsb3RzLFxuICBwcmV2U2xvdHNcbikge1xuICB2YXIgcmVzO1xuICB2YXIgaGFzTm9ybWFsU2xvdHMgPSBPYmplY3Qua2V5cyhub3JtYWxTbG90cykubGVuZ3RoID4gMDtcbiAgdmFyIGlzU3RhYmxlID0gc2xvdHMgPyAhIXNsb3RzLiRzdGFibGUgOiAhaGFzTm9ybWFsU2xvdHM7XG4gIHZhciBrZXkgPSBzbG90cyAmJiBzbG90cy4ka2V5O1xuICBpZiAoIXNsb3RzKSB7XG4gICAgcmVzID0ge307XG4gIH0gZWxzZSBpZiAoc2xvdHMuX25vcm1hbGl6ZWQpIHtcbiAgICAvLyBmYXN0IHBhdGggMTogY2hpbGQgY29tcG9uZW50IHJlLXJlbmRlciBvbmx5LCBwYXJlbnQgZGlkIG5vdCBjaGFuZ2VcbiAgICByZXR1cm4gc2xvdHMuX25vcm1hbGl6ZWRcbiAgfSBlbHNlIGlmIChcbiAgICBpc1N0YWJsZSAmJlxuICAgIHByZXZTbG90cyAmJlxuICAgIHByZXZTbG90cyAhPT0gZW1wdHlPYmplY3QgJiZcbiAgICBrZXkgPT09IHByZXZTbG90cy4ka2V5ICYmXG4gICAgIWhhc05vcm1hbFNsb3RzICYmXG4gICAgIXByZXZTbG90cy4kaGFzTm9ybWFsXG4gICkge1xuICAgIC8vIGZhc3QgcGF0aCAyOiBzdGFibGUgc2NvcGVkIHNsb3RzIHcvIG5vIG5vcm1hbCBzbG90cyB0byBwcm94eSxcbiAgICAvLyBvbmx5IG5lZWQgdG8gbm9ybWFsaXplIG9uY2VcbiAgICByZXR1cm4gcHJldlNsb3RzXG4gIH0gZWxzZSB7XG4gICAgcmVzID0ge307XG4gICAgZm9yICh2YXIga2V5JDEgaW4gc2xvdHMpIHtcbiAgICAgIGlmIChzbG90c1trZXkkMV0gJiYga2V5JDFbMF0gIT09ICckJykge1xuICAgICAgICByZXNba2V5JDFdID0gbm9ybWFsaXplU2NvcGVkU2xvdChub3JtYWxTbG90cywga2V5JDEsIHNsb3RzW2tleSQxXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIGV4cG9zZSBub3JtYWwgc2xvdHMgb24gc2NvcGVkU2xvdHNcbiAgZm9yICh2YXIga2V5JDIgaW4gbm9ybWFsU2xvdHMpIHtcbiAgICBpZiAoIShrZXkkMiBpbiByZXMpKSB7XG4gICAgICByZXNba2V5JDJdID0gcHJveHlOb3JtYWxTbG90KG5vcm1hbFNsb3RzLCBrZXkkMik7XG4gICAgfVxuICB9XG4gIC8vIGF2b3JpYXogc2VlbXMgdG8gbW9jayBhIG5vbi1leHRlbnNpYmxlICRzY29wZWRTbG90cyBvYmplY3RcbiAgLy8gYW5kIHdoZW4gdGhhdCBpcyBwYXNzZWQgZG93biB0aGlzIHdvdWxkIGNhdXNlIGFuIGVycm9yXG4gIGlmIChzbG90cyAmJiBPYmplY3QuaXNFeHRlbnNpYmxlKHNsb3RzKSkge1xuICAgIChzbG90cykuX25vcm1hbGl6ZWQgPSByZXM7XG4gIH1cbiAgZGVmKHJlcywgJyRzdGFibGUnLCBpc1N0YWJsZSk7XG4gIGRlZihyZXMsICcka2V5Jywga2V5KTtcbiAgZGVmKHJlcywgJyRoYXNOb3JtYWwnLCBoYXNOb3JtYWxTbG90cyk7XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplU2NvcGVkU2xvdChub3JtYWxTbG90cywga2V5LCBmbikge1xuICB2YXIgbm9ybWFsaXplZCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzID0gYXJndW1lbnRzLmxlbmd0aCA/IGZuLmFwcGx5KG51bGwsIGFyZ3VtZW50cykgOiBmbih7fSk7XG4gICAgcmVzID0gcmVzICYmIHR5cGVvZiByZXMgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHJlcylcbiAgICAgID8gW3Jlc10gLy8gc2luZ2xlIHZub2RlXG4gICAgICA6IG5vcm1hbGl6ZUNoaWxkcmVuKHJlcyk7XG4gICAgcmV0dXJuIHJlcyAmJiAoXG4gICAgICByZXMubGVuZ3RoID09PSAwIHx8XG4gICAgICAocmVzLmxlbmd0aCA9PT0gMSAmJiByZXNbMF0uaXNDb21tZW50KSAvLyAjOTY1OFxuICAgICkgPyB1bmRlZmluZWRcbiAgICAgIDogcmVzXG4gIH07XG4gIC8vIHRoaXMgaXMgYSBzbG90IHVzaW5nIHRoZSBuZXcgdi1zbG90IHN5bnRheCB3aXRob3V0IHNjb3BlLiBhbHRob3VnaCBpdCBpc1xuICAvLyBjb21waWxlZCBhcyBhIHNjb3BlZCBzbG90LCByZW5kZXIgZm4gdXNlcnMgd291bGQgZXhwZWN0IGl0IHRvIGJlIHByZXNlbnRcbiAgLy8gb24gdGhpcy4kc2xvdHMgYmVjYXVzZSB0aGUgdXNhZ2UgaXMgc2VtYW50aWNhbGx5IGEgbm9ybWFsIHNsb3QuXG4gIGlmIChmbi5wcm94eSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShub3JtYWxTbG90cywga2V5LCB7XG4gICAgICBnZXQ6IG5vcm1hbGl6ZWQsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIG5vcm1hbGl6ZWRcbn1cblxuZnVuY3Rpb24gcHJveHlOb3JtYWxTbG90KHNsb3RzLCBrZXkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNsb3RzW2tleV07IH1cbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlbmRlcmluZyB2LWZvciBsaXN0cy5cbiAqL1xuZnVuY3Rpb24gcmVuZGVyTGlzdCAoXG4gIHZhbCxcbiAgcmVuZGVyXG4pIHtcbiAgdmFyIHJldCwgaSwgbCwga2V5cywga2V5O1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpIHx8IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0ID0gbmV3IEFycmF5KHZhbC5sZW5ndGgpO1xuICAgIGZvciAoaSA9IDAsIGwgPSB2YWwubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICByZXRbaV0gPSByZW5kZXIodmFsW2ldLCBpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICByZXQgPSBuZXcgQXJyYXkodmFsKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdmFsOyBpKyspIHtcbiAgICAgIHJldFtpXSA9IHJlbmRlcihpICsgMSwgaSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KHZhbCkpIHtcbiAgICBpZiAoaGFzU3ltYm9sICYmIHZhbFtTeW1ib2wuaXRlcmF0b3JdKSB7XG4gICAgICByZXQgPSBbXTtcbiAgICAgIHZhciBpdGVyYXRvciA9IHZhbFtTeW1ib2wuaXRlcmF0b3JdKCk7XG4gICAgICB2YXIgcmVzdWx0ID0gaXRlcmF0b3IubmV4dCgpO1xuICAgICAgd2hpbGUgKCFyZXN1bHQuZG9uZSkge1xuICAgICAgICByZXQucHVzaChyZW5kZXIocmVzdWx0LnZhbHVlLCByZXQubGVuZ3RoKSk7XG4gICAgICAgIHJlc3VsdCA9IGl0ZXJhdG9yLm5leHQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAga2V5cyA9IE9iamVjdC5rZXlzKHZhbCk7XG4gICAgICByZXQgPSBuZXcgQXJyYXkoa2V5cy5sZW5ndGgpO1xuICAgICAgZm9yIChpID0gMCwgbCA9IGtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICAgIHJldFtpXSA9IHJlbmRlcih2YWxba2V5XSwga2V5LCBpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCFpc0RlZihyZXQpKSB7XG4gICAgcmV0ID0gW107XG4gIH1cbiAgKHJldCkuX2lzVkxpc3QgPSB0cnVlO1xuICByZXR1cm4gcmV0XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZW5kZXJpbmcgPHNsb3Q+XG4gKi9cbmZ1bmN0aW9uIHJlbmRlclNsb3QgKFxuICBuYW1lLFxuICBmYWxsYmFjayxcbiAgcHJvcHMsXG4gIGJpbmRPYmplY3Rcbikge1xuICB2YXIgc2NvcGVkU2xvdEZuID0gdGhpcy4kc2NvcGVkU2xvdHNbbmFtZV07XG4gIHZhciBub2RlcztcbiAgaWYgKHNjb3BlZFNsb3RGbikgeyAvLyBzY29wZWQgc2xvdFxuICAgIHByb3BzID0gcHJvcHMgfHwge307XG4gICAgaWYgKGJpbmRPYmplY3QpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFpc09iamVjdChiaW5kT2JqZWN0KSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdzbG90IHYtYmluZCB3aXRob3V0IGFyZ3VtZW50IGV4cGVjdHMgYW4gT2JqZWN0JyxcbiAgICAgICAgICB0aGlzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBwcm9wcyA9IGV4dGVuZChleHRlbmQoe30sIGJpbmRPYmplY3QpLCBwcm9wcyk7XG4gICAgfVxuICAgIG5vZGVzID0gc2NvcGVkU2xvdEZuKHByb3BzKSB8fCBmYWxsYmFjaztcbiAgfSBlbHNlIHtcbiAgICBub2RlcyA9IHRoaXMuJHNsb3RzW25hbWVdIHx8IGZhbGxiYWNrO1xuICB9XG5cbiAgdmFyIHRhcmdldCA9IHByb3BzICYmIHByb3BzLnNsb3Q7XG4gIGlmICh0YXJnZXQpIHtcbiAgICByZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudCgndGVtcGxhdGUnLCB7IHNsb3Q6IHRhcmdldCB9LCBub2RlcylcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbm9kZXNcbiAgfVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVzb2x2aW5nIGZpbHRlcnNcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUZpbHRlciAoaWQpIHtcbiAgcmV0dXJuIHJlc29sdmVBc3NldCh0aGlzLiRvcHRpb25zLCAnZmlsdGVycycsIGlkLCB0cnVlKSB8fCBpZGVudGl0eVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaXNLZXlOb3RNYXRjaCAoZXhwZWN0LCBhY3R1YWwpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZXhwZWN0KSkge1xuICAgIHJldHVybiBleHBlY3QuaW5kZXhPZihhY3R1YWwpID09PSAtMVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBleHBlY3QgIT09IGFjdHVhbFxuICB9XG59XG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIGNoZWNraW5nIGtleUNvZGVzIGZyb20gY29uZmlnLlxuICogZXhwb3NlZCBhcyBWdWUucHJvdG90eXBlLl9rXG4gKiBwYXNzaW5nIGluIGV2ZW50S2V5TmFtZSBhcyBsYXN0IGFyZ3VtZW50IHNlcGFyYXRlbHkgZm9yIGJhY2t3YXJkcyBjb21wYXRcbiAqL1xuZnVuY3Rpb24gY2hlY2tLZXlDb2RlcyAoXG4gIGV2ZW50S2V5Q29kZSxcbiAga2V5LFxuICBidWlsdEluS2V5Q29kZSxcbiAgZXZlbnRLZXlOYW1lLFxuICBidWlsdEluS2V5TmFtZVxuKSB7XG4gIHZhciBtYXBwZWRLZXlDb2RlID0gY29uZmlnLmtleUNvZGVzW2tleV0gfHwgYnVpbHRJbktleUNvZGU7XG4gIGlmIChidWlsdEluS2V5TmFtZSAmJiBldmVudEtleU5hbWUgJiYgIWNvbmZpZy5rZXlDb2Rlc1trZXldKSB7XG4gICAgcmV0dXJuIGlzS2V5Tm90TWF0Y2goYnVpbHRJbktleU5hbWUsIGV2ZW50S2V5TmFtZSlcbiAgfSBlbHNlIGlmIChtYXBwZWRLZXlDb2RlKSB7XG4gICAgcmV0dXJuIGlzS2V5Tm90TWF0Y2gobWFwcGVkS2V5Q29kZSwgZXZlbnRLZXlDb2RlKVxuICB9IGVsc2UgaWYgKGV2ZW50S2V5TmFtZSkge1xuICAgIHJldHVybiBoeXBoZW5hdGUoZXZlbnRLZXlOYW1lKSAhPT0ga2V5XG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIG1lcmdpbmcgdi1iaW5kPVwib2JqZWN0XCIgaW50byBhIFZOb2RlJ3MgZGF0YS5cbiAqL1xuZnVuY3Rpb24gYmluZE9iamVjdFByb3BzIChcbiAgZGF0YSxcbiAgdGFnLFxuICB2YWx1ZSxcbiAgYXNQcm9wLFxuICBpc1N5bmNcbikge1xuICBpZiAodmFsdWUpIHtcbiAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAndi1iaW5kIHdpdGhvdXQgYXJndW1lbnQgZXhwZWN0cyBhbiBPYmplY3Qgb3IgQXJyYXkgdmFsdWUnLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUgPSB0b09iamVjdCh2YWx1ZSk7XG4gICAgICB9XG4gICAgICB2YXIgaGFzaDtcbiAgICAgIHZhciBsb29wID0gZnVuY3Rpb24gKCBrZXkgKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBrZXkgPT09ICdjbGFzcycgfHxcbiAgICAgICAgICBrZXkgPT09ICdzdHlsZScgfHxcbiAgICAgICAgICBpc1Jlc2VydmVkQXR0cmlidXRlKGtleSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgaGFzaCA9IGRhdGE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHR5cGUgPSBkYXRhLmF0dHJzICYmIGRhdGEuYXR0cnMudHlwZTtcbiAgICAgICAgICBoYXNoID0gYXNQcm9wIHx8IGNvbmZpZy5tdXN0VXNlUHJvcCh0YWcsIHR5cGUsIGtleSlcbiAgICAgICAgICAgID8gZGF0YS5kb21Qcm9wcyB8fCAoZGF0YS5kb21Qcm9wcyA9IHt9KVxuICAgICAgICAgICAgOiBkYXRhLmF0dHJzIHx8IChkYXRhLmF0dHJzID0ge30pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjYW1lbGl6ZWRLZXkgPSBjYW1lbGl6ZShrZXkpO1xuICAgICAgICB2YXIgaHlwaGVuYXRlZEtleSA9IGh5cGhlbmF0ZShrZXkpO1xuICAgICAgICBpZiAoIShjYW1lbGl6ZWRLZXkgaW4gaGFzaCkgJiYgIShoeXBoZW5hdGVkS2V5IGluIGhhc2gpKSB7XG4gICAgICAgICAgaGFzaFtrZXldID0gdmFsdWVba2V5XTtcblxuICAgICAgICAgIGlmIChpc1N5bmMpIHtcbiAgICAgICAgICAgIHZhciBvbiA9IGRhdGEub24gfHwgKGRhdGEub24gPSB7fSk7XG4gICAgICAgICAgICBvblsoXCJ1cGRhdGU6XCIgKyBrZXkpXSA9IGZ1bmN0aW9uICgkZXZlbnQpIHtcbiAgICAgICAgICAgICAgdmFsdWVba2V5XSA9ICRldmVudDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIGxvb3AoIGtleSApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVuZGVyaW5nIHN0YXRpYyB0cmVlcy5cbiAqL1xuZnVuY3Rpb24gcmVuZGVyU3RhdGljIChcbiAgaW5kZXgsXG4gIGlzSW5Gb3Jcbikge1xuICB2YXIgY2FjaGVkID0gdGhpcy5fc3RhdGljVHJlZXMgfHwgKHRoaXMuX3N0YXRpY1RyZWVzID0gW10pO1xuICB2YXIgdHJlZSA9IGNhY2hlZFtpbmRleF07XG4gIC8vIGlmIGhhcyBhbHJlYWR5LXJlbmRlcmVkIHN0YXRpYyB0cmVlIGFuZCBub3QgaW5zaWRlIHYtZm9yLFxuICAvLyB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUgdHJlZS5cbiAgaWYgKHRyZWUgJiYgIWlzSW5Gb3IpIHtcbiAgICByZXR1cm4gdHJlZVxuICB9XG4gIC8vIG90aGVyd2lzZSwgcmVuZGVyIGEgZnJlc2ggdHJlZS5cbiAgdHJlZSA9IGNhY2hlZFtpbmRleF0gPSB0aGlzLiRvcHRpb25zLnN0YXRpY1JlbmRlckZuc1tpbmRleF0uY2FsbChcbiAgICB0aGlzLl9yZW5kZXJQcm94eSxcbiAgICBudWxsLFxuICAgIHRoaXMgLy8gZm9yIHJlbmRlciBmbnMgZ2VuZXJhdGVkIGZvciBmdW5jdGlvbmFsIGNvbXBvbmVudCB0ZW1wbGF0ZXNcbiAgKTtcbiAgbWFya1N0YXRpYyh0cmVlLCAoXCJfX3N0YXRpY19fXCIgKyBpbmRleCksIGZhbHNlKTtcbiAgcmV0dXJuIHRyZWVcbn1cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3Igdi1vbmNlLlxuICogRWZmZWN0aXZlbHkgaXQgbWVhbnMgbWFya2luZyB0aGUgbm9kZSBhcyBzdGF0aWMgd2l0aCBhIHVuaXF1ZSBrZXkuXG4gKi9cbmZ1bmN0aW9uIG1hcmtPbmNlIChcbiAgdHJlZSxcbiAgaW5kZXgsXG4gIGtleVxuKSB7XG4gIG1hcmtTdGF0aWModHJlZSwgKFwiX19vbmNlX19cIiArIGluZGV4ICsgKGtleSA/IChcIl9cIiArIGtleSkgOiBcIlwiKSksIHRydWUpO1xuICByZXR1cm4gdHJlZVxufVxuXG5mdW5jdGlvbiBtYXJrU3RhdGljIChcbiAgdHJlZSxcbiAga2V5LFxuICBpc09uY2Vcbikge1xuICBpZiAoQXJyYXkuaXNBcnJheSh0cmVlKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHJlZS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRyZWVbaV0gJiYgdHlwZW9mIHRyZWVbaV0gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG1hcmtTdGF0aWNOb2RlKHRyZWVbaV0sIChrZXkgKyBcIl9cIiArIGkpLCBpc09uY2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBtYXJrU3RhdGljTm9kZSh0cmVlLCBrZXksIGlzT25jZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFya1N0YXRpY05vZGUgKG5vZGUsIGtleSwgaXNPbmNlKSB7XG4gIG5vZGUuaXNTdGF0aWMgPSB0cnVlO1xuICBub2RlLmtleSA9IGtleTtcbiAgbm9kZS5pc09uY2UgPSBpc09uY2U7XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBiaW5kT2JqZWN0TGlzdGVuZXJzIChkYXRhLCB2YWx1ZSkge1xuICBpZiAodmFsdWUpIHtcbiAgICBpZiAoIWlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICd2LW9uIHdpdGhvdXQgYXJndW1lbnQgZXhwZWN0cyBhbiBPYmplY3QgdmFsdWUnLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgb24gPSBkYXRhLm9uID0gZGF0YS5vbiA/IGV4dGVuZCh7fSwgZGF0YS5vbikgOiB7fTtcbiAgICAgIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgICAgICB2YXIgZXhpc3RpbmcgPSBvbltrZXldO1xuICAgICAgICB2YXIgb3VycyA9IHZhbHVlW2tleV07XG4gICAgICAgIG9uW2tleV0gPSBleGlzdGluZyA/IFtdLmNvbmNhdChleGlzdGluZywgb3VycykgOiBvdXJzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gcmVzb2x2ZVNjb3BlZFNsb3RzIChcbiAgZm5zLCAvLyBzZWUgZmxvdy92bm9kZVxuICByZXMsXG4gIC8vIHRoZSBmb2xsb3dpbmcgYXJlIGFkZGVkIGluIDIuNlxuICBoYXNEeW5hbWljS2V5cyxcbiAgY29udGVudEhhc2hLZXlcbikge1xuICByZXMgPSByZXMgfHwgeyAkc3RhYmxlOiAhaGFzRHluYW1pY0tleXMgfTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBmbnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc2xvdCA9IGZuc1tpXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzbG90KSkge1xuICAgICAgcmVzb2x2ZVNjb3BlZFNsb3RzKHNsb3QsIHJlcywgaGFzRHluYW1pY0tleXMpO1xuICAgIH0gZWxzZSBpZiAoc2xvdCkge1xuICAgICAgLy8gbWFya2VyIGZvciByZXZlcnNlIHByb3h5aW5nIHYtc2xvdCB3aXRob3V0IHNjb3BlIG9uIHRoaXMuJHNsb3RzXG4gICAgICBpZiAoc2xvdC5wcm94eSkge1xuICAgICAgICBzbG90LmZuLnByb3h5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJlc1tzbG90LmtleV0gPSBzbG90LmZuO1xuICAgIH1cbiAgfVxuICBpZiAoY29udGVudEhhc2hLZXkpIHtcbiAgICAocmVzKS4ka2V5ID0gY29udGVudEhhc2hLZXk7XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gYmluZER5bmFtaWNLZXlzIChiYXNlT2JqLCB2YWx1ZXMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIga2V5ID0gdmFsdWVzW2ldO1xuICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyAmJiBrZXkpIHtcbiAgICAgIGJhc2VPYmpbdmFsdWVzW2ldXSA9IHZhbHVlc1tpICsgMV07XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGtleSAhPT0gJycgJiYga2V5ICE9PSBudWxsKSB7XG4gICAgICAvLyBudWxsIGlzIGEgc3BlaWNhbCB2YWx1ZSBmb3IgZXhwbGljaXRseSByZW1vdmluZyBhIGJpbmRpbmdcbiAgICAgIHdhcm4oXG4gICAgICAgIChcIkludmFsaWQgdmFsdWUgZm9yIGR5bmFtaWMgZGlyZWN0aXZlIGFyZ3VtZW50IChleHBlY3RlZCBzdHJpbmcgb3IgbnVsbCk6IFwiICsga2V5KSxcbiAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGJhc2VPYmpcbn1cblxuLy8gaGVscGVyIHRvIGR5bmFtaWNhbGx5IGFwcGVuZCBtb2RpZmllciBydW50aW1lIG1hcmtlcnMgdG8gZXZlbnQgbmFtZXMuXG4vLyBlbnN1cmUgb25seSBhcHBlbmQgd2hlbiB2YWx1ZSBpcyBhbHJlYWR5IHN0cmluZywgb3RoZXJ3aXNlIGl0IHdpbGwgYmUgY2FzdFxuLy8gdG8gc3RyaW5nIGFuZCBjYXVzZSB0aGUgdHlwZSBjaGVjayB0byBtaXNzLlxuZnVuY3Rpb24gcHJlcGVuZE1vZGlmaWVyICh2YWx1ZSwgc3ltYm9sKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gc3ltYm9sICsgdmFsdWUgOiB2YWx1ZVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5zdGFsbFJlbmRlckhlbHBlcnMgKHRhcmdldCkge1xuICB0YXJnZXQuX28gPSBtYXJrT25jZTtcbiAgdGFyZ2V0Ll9uID0gdG9OdW1iZXI7XG4gIHRhcmdldC5fcyA9IHRvU3RyaW5nO1xuICB0YXJnZXQuX2wgPSByZW5kZXJMaXN0O1xuICB0YXJnZXQuX3QgPSByZW5kZXJTbG90O1xuICB0YXJnZXQuX3EgPSBsb29zZUVxdWFsO1xuICB0YXJnZXQuX2kgPSBsb29zZUluZGV4T2Y7XG4gIHRhcmdldC5fbSA9IHJlbmRlclN0YXRpYztcbiAgdGFyZ2V0Ll9mID0gcmVzb2x2ZUZpbHRlcjtcbiAgdGFyZ2V0Ll9rID0gY2hlY2tLZXlDb2RlcztcbiAgdGFyZ2V0Ll9iID0gYmluZE9iamVjdFByb3BzO1xuICB0YXJnZXQuX3YgPSBjcmVhdGVUZXh0Vk5vZGU7XG4gIHRhcmdldC5fZSA9IGNyZWF0ZUVtcHR5Vk5vZGU7XG4gIHRhcmdldC5fdSA9IHJlc29sdmVTY29wZWRTbG90cztcbiAgdGFyZ2V0Ll9nID0gYmluZE9iamVjdExpc3RlbmVycztcbiAgdGFyZ2V0Ll9kID0gYmluZER5bmFtaWNLZXlzO1xuICB0YXJnZXQuX3AgPSBwcmVwZW5kTW9kaWZpZXI7XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBGdW5jdGlvbmFsUmVuZGVyQ29udGV4dCAoXG4gIGRhdGEsXG4gIHByb3BzLFxuICBjaGlsZHJlbixcbiAgcGFyZW50LFxuICBDdG9yXG4pIHtcbiAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgdmFyIG9wdGlvbnMgPSBDdG9yLm9wdGlvbnM7XG4gIC8vIGVuc3VyZSB0aGUgY3JlYXRlRWxlbWVudCBmdW5jdGlvbiBpbiBmdW5jdGlvbmFsIGNvbXBvbmVudHNcbiAgLy8gZ2V0cyBhIHVuaXF1ZSBjb250ZXh0IC0gdGhpcyBpcyBuZWNlc3NhcnkgZm9yIGNvcnJlY3QgbmFtZWQgc2xvdCBjaGVja1xuICB2YXIgY29udGV4dFZtO1xuICBpZiAoaGFzT3duKHBhcmVudCwgJ191aWQnKSkge1xuICAgIGNvbnRleHRWbSA9IE9iamVjdC5jcmVhdGUocGFyZW50KTtcbiAgICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgICBjb250ZXh0Vm0uX29yaWdpbmFsID0gcGFyZW50O1xuICB9IGVsc2Uge1xuICAgIC8vIHRoZSBjb250ZXh0IHZtIHBhc3NlZCBpbiBpcyBhIGZ1bmN0aW9uYWwgY29udGV4dCBhcyB3ZWxsLlxuICAgIC8vIGluIHRoaXMgY2FzZSB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBhcmUgYWJsZSB0byBnZXQgYSBob2xkIHRvIHRoZVxuICAgIC8vIHJlYWwgY29udGV4dCBpbnN0YW5jZS5cbiAgICBjb250ZXh0Vm0gPSBwYXJlbnQ7XG4gICAgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gICAgcGFyZW50ID0gcGFyZW50Ll9vcmlnaW5hbDtcbiAgfVxuICB2YXIgaXNDb21waWxlZCA9IGlzVHJ1ZShvcHRpb25zLl9jb21waWxlZCk7XG4gIHZhciBuZWVkTm9ybWFsaXphdGlvbiA9ICFpc0NvbXBpbGVkO1xuXG4gIHRoaXMuZGF0YSA9IGRhdGE7XG4gIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgdGhpcy5saXN0ZW5lcnMgPSBkYXRhLm9uIHx8IGVtcHR5T2JqZWN0O1xuICB0aGlzLmluamVjdGlvbnMgPSByZXNvbHZlSW5qZWN0KG9wdGlvbnMuaW5qZWN0LCBwYXJlbnQpO1xuICB0aGlzLnNsb3RzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcyQxLiRzbG90cykge1xuICAgICAgbm9ybWFsaXplU2NvcGVkU2xvdHMoXG4gICAgICAgIGRhdGEuc2NvcGVkU2xvdHMsXG4gICAgICAgIHRoaXMkMS4kc2xvdHMgPSByZXNvbHZlU2xvdHMoY2hpbGRyZW4sIHBhcmVudClcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzJDEuJHNsb3RzXG4gIH07XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdzY29wZWRTbG90cycsICh7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCAoKSB7XG4gICAgICByZXR1cm4gbm9ybWFsaXplU2NvcGVkU2xvdHMoZGF0YS5zY29wZWRTbG90cywgdGhpcy5zbG90cygpKVxuICAgIH1cbiAgfSkpO1xuXG4gIC8vIHN1cHBvcnQgZm9yIGNvbXBpbGVkIGZ1bmN0aW9uYWwgdGVtcGxhdGVcbiAgaWYgKGlzQ29tcGlsZWQpIHtcbiAgICAvLyBleHBvc2luZyAkb3B0aW9ucyBmb3IgcmVuZGVyU3RhdGljKClcbiAgICB0aGlzLiRvcHRpb25zID0gb3B0aW9ucztcbiAgICAvLyBwcmUtcmVzb2x2ZSBzbG90cyBmb3IgcmVuZGVyU2xvdCgpXG4gICAgdGhpcy4kc2xvdHMgPSB0aGlzLnNsb3RzKCk7XG4gICAgdGhpcy4kc2NvcGVkU2xvdHMgPSBub3JtYWxpemVTY29wZWRTbG90cyhkYXRhLnNjb3BlZFNsb3RzLCB0aGlzLiRzbG90cyk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5fc2NvcGVJZCkge1xuICAgIHRoaXMuX2MgPSBmdW5jdGlvbiAoYSwgYiwgYywgZCkge1xuICAgICAgdmFyIHZub2RlID0gY3JlYXRlRWxlbWVudChjb250ZXh0Vm0sIGEsIGIsIGMsIGQsIG5lZWROb3JtYWxpemF0aW9uKTtcbiAgICAgIGlmICh2bm9kZSAmJiAhQXJyYXkuaXNBcnJheSh2bm9kZSkpIHtcbiAgICAgICAgdm5vZGUuZm5TY29wZUlkID0gb3B0aW9ucy5fc2NvcGVJZDtcbiAgICAgICAgdm5vZGUuZm5Db250ZXh0ID0gcGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZub2RlXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9jID0gZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHsgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoY29udGV4dFZtLCBhLCBiLCBjLCBkLCBuZWVkTm9ybWFsaXphdGlvbik7IH07XG4gIH1cbn1cblxuaW5zdGFsbFJlbmRlckhlbHBlcnMoRnVuY3Rpb25hbFJlbmRlckNvbnRleHQucHJvdG90eXBlKTtcblxuZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb25hbENvbXBvbmVudCAoXG4gIEN0b3IsXG4gIHByb3BzRGF0YSxcbiAgZGF0YSxcbiAgY29udGV4dFZtLFxuICBjaGlsZHJlblxuKSB7XG4gIHZhciBvcHRpb25zID0gQ3Rvci5vcHRpb25zO1xuICB2YXIgcHJvcHMgPSB7fTtcbiAgdmFyIHByb3BPcHRpb25zID0gb3B0aW9ucy5wcm9wcztcbiAgaWYgKGlzRGVmKHByb3BPcHRpb25zKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wT3B0aW9ucykge1xuICAgICAgcHJvcHNba2V5XSA9IHZhbGlkYXRlUHJvcChrZXksIHByb3BPcHRpb25zLCBwcm9wc0RhdGEgfHwgZW1wdHlPYmplY3QpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoaXNEZWYoZGF0YS5hdHRycykpIHsgbWVyZ2VQcm9wcyhwcm9wcywgZGF0YS5hdHRycyk7IH1cbiAgICBpZiAoaXNEZWYoZGF0YS5wcm9wcykpIHsgbWVyZ2VQcm9wcyhwcm9wcywgZGF0YS5wcm9wcyk7IH1cbiAgfVxuXG4gIHZhciByZW5kZXJDb250ZXh0ID0gbmV3IEZ1bmN0aW9uYWxSZW5kZXJDb250ZXh0KFxuICAgIGRhdGEsXG4gICAgcHJvcHMsXG4gICAgY2hpbGRyZW4sXG4gICAgY29udGV4dFZtLFxuICAgIEN0b3JcbiAgKTtcblxuICB2YXIgdm5vZGUgPSBvcHRpb25zLnJlbmRlci5jYWxsKG51bGwsIHJlbmRlckNvbnRleHQuX2MsIHJlbmRlckNvbnRleHQpO1xuXG4gIGlmICh2bm9kZSBpbnN0YW5jZW9mIFZOb2RlKSB7XG4gICAgcmV0dXJuIGNsb25lQW5kTWFya0Z1bmN0aW9uYWxSZXN1bHQodm5vZGUsIGRhdGEsIHJlbmRlckNvbnRleHQucGFyZW50LCBvcHRpb25zLCByZW5kZXJDb250ZXh0KVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodm5vZGUpKSB7XG4gICAgdmFyIHZub2RlcyA9IG5vcm1hbGl6ZUNoaWxkcmVuKHZub2RlKSB8fCBbXTtcbiAgICB2YXIgcmVzID0gbmV3IEFycmF5KHZub2Rlcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdm5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICByZXNbaV0gPSBjbG9uZUFuZE1hcmtGdW5jdGlvbmFsUmVzdWx0KHZub2Rlc1tpXSwgZGF0YSwgcmVuZGVyQ29udGV4dC5wYXJlbnQsIG9wdGlvbnMsIHJlbmRlckNvbnRleHQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzXG4gIH1cbn1cblxuZnVuY3Rpb24gY2xvbmVBbmRNYXJrRnVuY3Rpb25hbFJlc3VsdCAodm5vZGUsIGRhdGEsIGNvbnRleHRWbSwgb3B0aW9ucywgcmVuZGVyQ29udGV4dCkge1xuICAvLyAjNzgxNyBjbG9uZSBub2RlIGJlZm9yZSBzZXR0aW5nIGZuQ29udGV4dCwgb3RoZXJ3aXNlIGlmIHRoZSBub2RlIGlzIHJldXNlZFxuICAvLyAoZS5nLiBpdCB3YXMgZnJvbSBhIGNhY2hlZCBub3JtYWwgc2xvdCkgdGhlIGZuQ29udGV4dCBjYXVzZXMgbmFtZWQgc2xvdHNcbiAgLy8gdGhhdCBzaG91bGQgbm90IGJlIG1hdGNoZWQgdG8gbWF0Y2guXG4gIHZhciBjbG9uZSA9IGNsb25lVk5vZGUodm5vZGUpO1xuICBjbG9uZS5mbkNvbnRleHQgPSBjb250ZXh0Vm07XG4gIGNsb25lLmZuT3B0aW9ucyA9IG9wdGlvbnM7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgKGNsb25lLmRldnRvb2xzTWV0YSA9IGNsb25lLmRldnRvb2xzTWV0YSB8fCB7fSkucmVuZGVyQ29udGV4dCA9IHJlbmRlckNvbnRleHQ7XG4gIH1cbiAgaWYgKGRhdGEuc2xvdCkge1xuICAgIChjbG9uZS5kYXRhIHx8IChjbG9uZS5kYXRhID0ge30pKS5zbG90ID0gZGF0YS5zbG90O1xuICB9XG4gIHJldHVybiBjbG9uZVxufVxuXG5mdW5jdGlvbiBtZXJnZVByb3BzICh0bywgZnJvbSkge1xuICBmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuICAgIHRvW2NhbWVsaXplKGtleSldID0gZnJvbVtrZXldO1xuICB9XG59XG5cbi8qICAqL1xuXG4vKiAgKi9cblxuLyogICovXG5cbi8qICAqL1xuXG4vLyBpbmxpbmUgaG9va3MgdG8gYmUgaW52b2tlZCBvbiBjb21wb25lbnQgVk5vZGVzIGR1cmluZyBwYXRjaFxudmFyIGNvbXBvbmVudFZOb2RlSG9va3MgPSB7XG4gIGluaXQ6IGZ1bmN0aW9uIGluaXQgKHZub2RlLCBoeWRyYXRpbmcpIHtcbiAgICBpZiAoXG4gICAgICB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSAmJlxuICAgICAgIXZub2RlLmNvbXBvbmVudEluc3RhbmNlLl9pc0Rlc3Ryb3llZCAmJlxuICAgICAgdm5vZGUuZGF0YS5rZWVwQWxpdmVcbiAgICApIHtcbiAgICAgIC8vIGtlcHQtYWxpdmUgY29tcG9uZW50cywgdHJlYXQgYXMgYSBwYXRjaFxuICAgICAgdmFyIG1vdW50ZWROb2RlID0gdm5vZGU7IC8vIHdvcmsgYXJvdW5kIGZsb3dcbiAgICAgIGNvbXBvbmVudFZOb2RlSG9va3MucHJlcGF0Y2gobW91bnRlZE5vZGUsIG1vdW50ZWROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGNoaWxkID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgPSBjcmVhdGVDb21wb25lbnRJbnN0YW5jZUZvclZub2RlKFxuICAgICAgICB2bm9kZSxcbiAgICAgICAgYWN0aXZlSW5zdGFuY2VcbiAgICAgICk7XG4gICAgICBjaGlsZC4kbW91bnQoaHlkcmF0aW5nID8gdm5vZGUuZWxtIDogdW5kZWZpbmVkLCBoeWRyYXRpbmcpO1xuICAgIH1cbiAgfSxcblxuICBwcmVwYXRjaDogZnVuY3Rpb24gcHJlcGF0Y2ggKG9sZFZub2RlLCB2bm9kZSkge1xuICAgIHZhciBvcHRpb25zID0gdm5vZGUuY29tcG9uZW50T3B0aW9ucztcbiAgICB2YXIgY2hpbGQgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IG9sZFZub2RlLmNvbXBvbmVudEluc3RhbmNlO1xuICAgIHVwZGF0ZUNoaWxkQ29tcG9uZW50KFxuICAgICAgY2hpbGQsXG4gICAgICBvcHRpb25zLnByb3BzRGF0YSwgLy8gdXBkYXRlZCBwcm9wc1xuICAgICAgb3B0aW9ucy5saXN0ZW5lcnMsIC8vIHVwZGF0ZWQgbGlzdGVuZXJzXG4gICAgICB2bm9kZSwgLy8gbmV3IHBhcmVudCB2bm9kZVxuICAgICAgb3B0aW9ucy5jaGlsZHJlbiAvLyBuZXcgY2hpbGRyZW5cbiAgICApO1xuICB9LFxuXG4gIGluc2VydDogZnVuY3Rpb24gaW5zZXJ0ICh2bm9kZSkge1xuICAgIHZhciBjb250ZXh0ID0gdm5vZGUuY29udGV4dDtcbiAgICB2YXIgY29tcG9uZW50SW5zdGFuY2UgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICBpZiAoIWNvbXBvbmVudEluc3RhbmNlLl9pc01vdW50ZWQpIHtcbiAgICAgIGNvbXBvbmVudEluc3RhbmNlLl9pc01vdW50ZWQgPSB0cnVlO1xuICAgICAgY2FsbEhvb2soY29tcG9uZW50SW5zdGFuY2UsICdtb3VudGVkJyk7XG4gICAgfVxuICAgIGlmICh2bm9kZS5kYXRhLmtlZXBBbGl2ZSkge1xuICAgICAgaWYgKGNvbnRleHQuX2lzTW91bnRlZCkge1xuICAgICAgICAvLyB2dWUtcm91dGVyIzEyMTJcbiAgICAgICAgLy8gRHVyaW5nIHVwZGF0ZXMsIGEga2VwdC1hbGl2ZSBjb21wb25lbnQncyBjaGlsZCBjb21wb25lbnRzIG1heVxuICAgICAgICAvLyBjaGFuZ2UsIHNvIGRpcmVjdGx5IHdhbGtpbmcgdGhlIHRyZWUgaGVyZSBtYXkgY2FsbCBhY3RpdmF0ZWQgaG9va3NcbiAgICAgICAgLy8gb24gaW5jb3JyZWN0IGNoaWxkcmVuLiBJbnN0ZWFkIHdlIHB1c2ggdGhlbSBpbnRvIGEgcXVldWUgd2hpY2ggd2lsbFxuICAgICAgICAvLyBiZSBwcm9jZXNzZWQgYWZ0ZXIgdGhlIHdob2xlIHBhdGNoIHByb2Nlc3MgZW5kZWQuXG4gICAgICAgIHF1ZXVlQWN0aXZhdGVkQ29tcG9uZW50KGNvbXBvbmVudEluc3RhbmNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQoY29tcG9uZW50SW5zdGFuY2UsIHRydWUgLyogZGlyZWN0ICovKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSAodm5vZGUpIHtcbiAgICB2YXIgY29tcG9uZW50SW5zdGFuY2UgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICBpZiAoIWNvbXBvbmVudEluc3RhbmNlLl9pc0Rlc3Ryb3llZCkge1xuICAgICAgaWYgKCF2bm9kZS5kYXRhLmtlZXBBbGl2ZSkge1xuICAgICAgICBjb21wb25lbnRJbnN0YW5jZS4kZGVzdHJveSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVhY3RpdmF0ZUNoaWxkQ29tcG9uZW50KGNvbXBvbmVudEluc3RhbmNlLCB0cnVlIC8qIGRpcmVjdCAqLyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG52YXIgaG9va3NUb01lcmdlID0gT2JqZWN0LmtleXMoY29tcG9uZW50Vk5vZGVIb29rcyk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudCAoXG4gIEN0b3IsXG4gIGRhdGEsXG4gIGNvbnRleHQsXG4gIGNoaWxkcmVuLFxuICB0YWdcbikge1xuICBpZiAoaXNVbmRlZihDdG9yKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGJhc2VDdG9yID0gY29udGV4dC4kb3B0aW9ucy5fYmFzZTtcblxuICAvLyBwbGFpbiBvcHRpb25zIG9iamVjdDogdHVybiBpdCBpbnRvIGEgY29uc3RydWN0b3JcbiAgaWYgKGlzT2JqZWN0KEN0b3IpKSB7XG4gICAgQ3RvciA9IGJhc2VDdG9yLmV4dGVuZChDdG9yKTtcbiAgfVxuXG4gIC8vIGlmIGF0IHRoaXMgc3RhZ2UgaXQncyBub3QgYSBjb25zdHJ1Y3RvciBvciBhbiBhc3luYyBjb21wb25lbnQgZmFjdG9yeSxcbiAgLy8gcmVqZWN0LlxuICBpZiAodHlwZW9mIEN0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FybigoXCJJbnZhbGlkIENvbXBvbmVudCBkZWZpbml0aW9uOiBcIiArIChTdHJpbmcoQ3RvcikpKSwgY29udGV4dCk7XG4gICAgfVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gYXN5bmMgY29tcG9uZW50XG4gIHZhciBhc3luY0ZhY3Rvcnk7XG4gIGlmIChpc1VuZGVmKEN0b3IuY2lkKSkge1xuICAgIGFzeW5jRmFjdG9yeSA9IEN0b3I7XG4gICAgQ3RvciA9IHJlc29sdmVBc3luY0NvbXBvbmVudChhc3luY0ZhY3RvcnksIGJhc2VDdG9yKTtcbiAgICBpZiAoQ3RvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyByZXR1cm4gYSBwbGFjZWhvbGRlciBub2RlIGZvciBhc3luYyBjb21wb25lbnQsIHdoaWNoIGlzIHJlbmRlcmVkXG4gICAgICAvLyBhcyBhIGNvbW1lbnQgbm9kZSBidXQgcHJlc2VydmVzIGFsbCB0aGUgcmF3IGluZm9ybWF0aW9uIGZvciB0aGUgbm9kZS5cbiAgICAgIC8vIHRoZSBpbmZvcm1hdGlvbiB3aWxsIGJlIHVzZWQgZm9yIGFzeW5jIHNlcnZlci1yZW5kZXJpbmcgYW5kIGh5ZHJhdGlvbi5cbiAgICAgIHJldHVybiBjcmVhdGVBc3luY1BsYWNlaG9sZGVyKFxuICAgICAgICBhc3luY0ZhY3RvcnksXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICB0YWdcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBkYXRhID0gZGF0YSB8fCB7fTtcblxuICAvLyByZXNvbHZlIGNvbnN0cnVjdG9yIG9wdGlvbnMgaW4gY2FzZSBnbG9iYWwgbWl4aW5zIGFyZSBhcHBsaWVkIGFmdGVyXG4gIC8vIGNvbXBvbmVudCBjb25zdHJ1Y3RvciBjcmVhdGlvblxuICByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zKEN0b3IpO1xuXG4gIC8vIHRyYW5zZm9ybSBjb21wb25lbnQgdi1tb2RlbCBkYXRhIGludG8gcHJvcHMgJiBldmVudHNcbiAgaWYgKGlzRGVmKGRhdGEubW9kZWwpKSB7XG4gICAgdHJhbnNmb3JtTW9kZWwoQ3Rvci5vcHRpb25zLCBkYXRhKTtcbiAgfVxuXG4gIC8vIGV4dHJhY3QgcHJvcHNcbiAgdmFyIHByb3BzRGF0YSA9IGV4dHJhY3RQcm9wc0Zyb21WTm9kZURhdGEoZGF0YSwgQ3RvciwgdGFnKTtcblxuICAvLyBmdW5jdGlvbmFsIGNvbXBvbmVudFxuICBpZiAoaXNUcnVlKEN0b3Iub3B0aW9ucy5mdW5jdGlvbmFsKSkge1xuICAgIHJldHVybiBjcmVhdGVGdW5jdGlvbmFsQ29tcG9uZW50KEN0b3IsIHByb3BzRGF0YSwgZGF0YSwgY29udGV4dCwgY2hpbGRyZW4pXG4gIH1cblxuICAvLyBleHRyYWN0IGxpc3RlbmVycywgc2luY2UgdGhlc2UgbmVlZHMgdG8gYmUgdHJlYXRlZCBhc1xuICAvLyBjaGlsZCBjb21wb25lbnQgbGlzdGVuZXJzIGluc3RlYWQgb2YgRE9NIGxpc3RlbmVyc1xuICB2YXIgbGlzdGVuZXJzID0gZGF0YS5vbjtcbiAgLy8gcmVwbGFjZSB3aXRoIGxpc3RlbmVycyB3aXRoIC5uYXRpdmUgbW9kaWZpZXJcbiAgLy8gc28gaXQgZ2V0cyBwcm9jZXNzZWQgZHVyaW5nIHBhcmVudCBjb21wb25lbnQgcGF0Y2guXG4gIGRhdGEub24gPSBkYXRhLm5hdGl2ZU9uO1xuXG4gIGlmIChpc1RydWUoQ3Rvci5vcHRpb25zLmFic3RyYWN0KSkge1xuICAgIC8vIGFic3RyYWN0IGNvbXBvbmVudHMgZG8gbm90IGtlZXAgYW55dGhpbmdcbiAgICAvLyBvdGhlciB0aGFuIHByb3BzICYgbGlzdGVuZXJzICYgc2xvdFxuXG4gICAgLy8gd29yayBhcm91bmQgZmxvd1xuICAgIHZhciBzbG90ID0gZGF0YS5zbG90O1xuICAgIGRhdGEgPSB7fTtcbiAgICBpZiAoc2xvdCkge1xuICAgICAgZGF0YS5zbG90ID0gc2xvdDtcbiAgICB9XG4gIH1cblxuICAvLyBpbnN0YWxsIGNvbXBvbmVudCBtYW5hZ2VtZW50IGhvb2tzIG9udG8gdGhlIHBsYWNlaG9sZGVyIG5vZGVcbiAgaW5zdGFsbENvbXBvbmVudEhvb2tzKGRhdGEpO1xuXG4gIC8vIHJldHVybiBhIHBsYWNlaG9sZGVyIHZub2RlXG4gIHZhciBuYW1lID0gQ3Rvci5vcHRpb25zLm5hbWUgfHwgdGFnO1xuICB2YXIgdm5vZGUgPSBuZXcgVk5vZGUoXG4gICAgKFwidnVlLWNvbXBvbmVudC1cIiArIChDdG9yLmNpZCkgKyAobmFtZSA/IChcIi1cIiArIG5hbWUpIDogJycpKSxcbiAgICBkYXRhLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb250ZXh0LFxuICAgIHsgQ3RvcjogQ3RvciwgcHJvcHNEYXRhOiBwcm9wc0RhdGEsIGxpc3RlbmVyczogbGlzdGVuZXJzLCB0YWc6IHRhZywgY2hpbGRyZW46IGNoaWxkcmVuIH0sXG4gICAgYXN5bmNGYWN0b3J5XG4gICk7XG5cbiAgcmV0dXJuIHZub2RlXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudEluc3RhbmNlRm9yVm5vZGUgKFxuICB2bm9kZSwgLy8gd2Uga25vdyBpdCdzIE1vdW50ZWRDb21wb25lbnRWTm9kZSBidXQgZmxvdyBkb2Vzbid0XG4gIHBhcmVudCAvLyBhY3RpdmVJbnN0YW5jZSBpbiBsaWZlY3ljbGUgc3RhdGVcbikge1xuICB2YXIgb3B0aW9ucyA9IHtcbiAgICBfaXNDb21wb25lbnQ6IHRydWUsXG4gICAgX3BhcmVudFZub2RlOiB2bm9kZSxcbiAgICBwYXJlbnQ6IHBhcmVudFxuICB9O1xuICAvLyBjaGVjayBpbmxpbmUtdGVtcGxhdGUgcmVuZGVyIGZ1bmN0aW9uc1xuICB2YXIgaW5saW5lVGVtcGxhdGUgPSB2bm9kZS5kYXRhLmlubGluZVRlbXBsYXRlO1xuICBpZiAoaXNEZWYoaW5saW5lVGVtcGxhdGUpKSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSBpbmxpbmVUZW1wbGF0ZS5yZW5kZXI7XG4gICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBpbmxpbmVUZW1wbGF0ZS5zdGF0aWNSZW5kZXJGbnM7XG4gIH1cbiAgcmV0dXJuIG5ldyB2bm9kZS5jb21wb25lbnRPcHRpb25zLkN0b3Iob3B0aW9ucylcbn1cblxuZnVuY3Rpb24gaW5zdGFsbENvbXBvbmVudEhvb2tzIChkYXRhKSB7XG4gIHZhciBob29rcyA9IGRhdGEuaG9vayB8fCAoZGF0YS5ob29rID0ge30pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGhvb2tzVG9NZXJnZS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBob29rc1RvTWVyZ2VbaV07XG4gICAgdmFyIGV4aXN0aW5nID0gaG9va3Nba2V5XTtcbiAgICB2YXIgdG9NZXJnZSA9IGNvbXBvbmVudFZOb2RlSG9va3Nba2V5XTtcbiAgICBpZiAoZXhpc3RpbmcgIT09IHRvTWVyZ2UgJiYgIShleGlzdGluZyAmJiBleGlzdGluZy5fbWVyZ2VkKSkge1xuICAgICAgaG9va3Nba2V5XSA9IGV4aXN0aW5nID8gbWVyZ2VIb29rJDEodG9NZXJnZSwgZXhpc3RpbmcpIDogdG9NZXJnZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VIb29rJDEgKGYxLCBmMikge1xuICB2YXIgbWVyZ2VkID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAvLyBmbG93IGNvbXBsYWlucyBhYm91dCBleHRyYSBhcmdzIHdoaWNoIGlzIHdoeSB3ZSB1c2UgYW55XG4gICAgZjEoYSwgYik7XG4gICAgZjIoYSwgYik7XG4gIH07XG4gIG1lcmdlZC5fbWVyZ2VkID0gdHJ1ZTtcbiAgcmV0dXJuIG1lcmdlZFxufVxuXG4vLyB0cmFuc2Zvcm0gY29tcG9uZW50IHYtbW9kZWwgaW5mbyAodmFsdWUgYW5kIGNhbGxiYWNrKSBpbnRvXG4vLyBwcm9wIGFuZCBldmVudCBoYW5kbGVyIHJlc3BlY3RpdmVseS5cbmZ1bmN0aW9uIHRyYW5zZm9ybU1vZGVsIChvcHRpb25zLCBkYXRhKSB7XG4gIHZhciBwcm9wID0gKG9wdGlvbnMubW9kZWwgJiYgb3B0aW9ucy5tb2RlbC5wcm9wKSB8fCAndmFsdWUnO1xuICB2YXIgZXZlbnQgPSAob3B0aW9ucy5tb2RlbCAmJiBvcHRpb25zLm1vZGVsLmV2ZW50KSB8fCAnaW5wdXQnXG4gIDsoZGF0YS5hdHRycyB8fCAoZGF0YS5hdHRycyA9IHt9KSlbcHJvcF0gPSBkYXRhLm1vZGVsLnZhbHVlO1xuICB2YXIgb24gPSBkYXRhLm9uIHx8IChkYXRhLm9uID0ge30pO1xuICB2YXIgZXhpc3RpbmcgPSBvbltldmVudF07XG4gIHZhciBjYWxsYmFjayA9IGRhdGEubW9kZWwuY2FsbGJhY2s7XG4gIGlmIChpc0RlZihleGlzdGluZykpIHtcbiAgICBpZiAoXG4gICAgICBBcnJheS5pc0FycmF5KGV4aXN0aW5nKVxuICAgICAgICA/IGV4aXN0aW5nLmluZGV4T2YoY2FsbGJhY2spID09PSAtMVxuICAgICAgICA6IGV4aXN0aW5nICE9PSBjYWxsYmFja1xuICAgICkge1xuICAgICAgb25bZXZlbnRdID0gW2NhbGxiYWNrXS5jb25jYXQoZXhpc3RpbmcpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBvbltldmVudF0gPSBjYWxsYmFjaztcbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIFNJTVBMRV9OT1JNQUxJWkUgPSAxO1xudmFyIEFMV0FZU19OT1JNQUxJWkUgPSAyO1xuXG4vLyB3cmFwcGVyIGZ1bmN0aW9uIGZvciBwcm92aWRpbmcgYSBtb3JlIGZsZXhpYmxlIGludGVyZmFjZVxuLy8gd2l0aG91dCBnZXR0aW5nIHllbGxlZCBhdCBieSBmbG93XG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50IChcbiAgY29udGV4dCxcbiAgdGFnLFxuICBkYXRhLFxuICBjaGlsZHJlbixcbiAgbm9ybWFsaXphdGlvblR5cGUsXG4gIGFsd2F5c05vcm1hbGl6ZVxuKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGRhdGEpIHx8IGlzUHJpbWl0aXZlKGRhdGEpKSB7XG4gICAgbm9ybWFsaXphdGlvblR5cGUgPSBjaGlsZHJlbjtcbiAgICBjaGlsZHJlbiA9IGRhdGE7XG4gICAgZGF0YSA9IHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoaXNUcnVlKGFsd2F5c05vcm1hbGl6ZSkpIHtcbiAgICBub3JtYWxpemF0aW9uVHlwZSA9IEFMV0FZU19OT1JNQUxJWkU7XG4gIH1cbiAgcmV0dXJuIF9jcmVhdGVFbGVtZW50KGNvbnRleHQsIHRhZywgZGF0YSwgY2hpbGRyZW4sIG5vcm1hbGl6YXRpb25UeXBlKVxufVxuXG5mdW5jdGlvbiBfY3JlYXRlRWxlbWVudCAoXG4gIGNvbnRleHQsXG4gIHRhZyxcbiAgZGF0YSxcbiAgY2hpbGRyZW4sXG4gIG5vcm1hbGl6YXRpb25UeXBlXG4pIHtcbiAgaWYgKGlzRGVmKGRhdGEpICYmIGlzRGVmKChkYXRhKS5fX29iX18pKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgXCJBdm9pZCB1c2luZyBvYnNlcnZlZCBkYXRhIG9iamVjdCBhcyB2bm9kZSBkYXRhOiBcIiArIChKU09OLnN0cmluZ2lmeShkYXRhKSkgKyBcIlxcblwiICtcbiAgICAgICdBbHdheXMgY3JlYXRlIGZyZXNoIHZub2RlIGRhdGEgb2JqZWN0cyBpbiBlYWNoIHJlbmRlciEnLFxuICAgICAgY29udGV4dFxuICAgICk7XG4gICAgcmV0dXJuIGNyZWF0ZUVtcHR5Vk5vZGUoKVxuICB9XG4gIC8vIG9iamVjdCBzeW50YXggaW4gdi1iaW5kXG4gIGlmIChpc0RlZihkYXRhKSAmJiBpc0RlZihkYXRhLmlzKSkge1xuICAgIHRhZyA9IGRhdGEuaXM7XG4gIH1cbiAgaWYgKCF0YWcpIHtcbiAgICAvLyBpbiBjYXNlIG9mIGNvbXBvbmVudCA6aXMgc2V0IHRvIGZhbHN5IHZhbHVlXG4gICAgcmV0dXJuIGNyZWF0ZUVtcHR5Vk5vZGUoKVxuICB9XG4gIC8vIHdhcm4gYWdhaW5zdCBub24tcHJpbWl0aXZlIGtleVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgIGlzRGVmKGRhdGEpICYmIGlzRGVmKGRhdGEua2V5KSAmJiAhaXNQcmltaXRpdmUoZGF0YS5rZXkpXG4gICkge1xuICAgIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdBdm9pZCB1c2luZyBub24tcHJpbWl0aXZlIHZhbHVlIGFzIGtleSwgJyArXG4gICAgICAgICd1c2Ugc3RyaW5nL251bWJlciB2YWx1ZSBpbnN0ZWFkLicsXG4gICAgICAgIGNvbnRleHRcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIC8vIHN1cHBvcnQgc2luZ2xlIGZ1bmN0aW9uIGNoaWxkcmVuIGFzIGRlZmF1bHQgc2NvcGVkIHNsb3RcbiAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmXG4gICAgdHlwZW9mIGNoaWxkcmVuWzBdID09PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIGRhdGEgPSBkYXRhIHx8IHt9O1xuICAgIGRhdGEuc2NvcGVkU2xvdHMgPSB7IGRlZmF1bHQ6IGNoaWxkcmVuWzBdIH07XG4gICAgY2hpbGRyZW4ubGVuZ3RoID0gMDtcbiAgfVxuICBpZiAobm9ybWFsaXphdGlvblR5cGUgPT09IEFMV0FZU19OT1JNQUxJWkUpIHtcbiAgICBjaGlsZHJlbiA9IG5vcm1hbGl6ZUNoaWxkcmVuKGNoaWxkcmVuKTtcbiAgfSBlbHNlIGlmIChub3JtYWxpemF0aW9uVHlwZSA9PT0gU0lNUExFX05PUk1BTElaRSkge1xuICAgIGNoaWxkcmVuID0gc2ltcGxlTm9ybWFsaXplQ2hpbGRyZW4oY2hpbGRyZW4pO1xuICB9XG4gIHZhciB2bm9kZSwgbnM7XG4gIGlmICh0eXBlb2YgdGFnID09PSAnc3RyaW5nJykge1xuICAgIHZhciBDdG9yO1xuICAgIG5zID0gKGNvbnRleHQuJHZub2RlICYmIGNvbnRleHQuJHZub2RlLm5zKSB8fCBjb25maWcuZ2V0VGFnTmFtZXNwYWNlKHRhZyk7XG4gICAgaWYgKGNvbmZpZy5pc1Jlc2VydmVkVGFnKHRhZykpIHtcbiAgICAgIC8vIHBsYXRmb3JtIGJ1aWx0LWluIGVsZW1lbnRzXG4gICAgICB2bm9kZSA9IG5ldyBWTm9kZShcbiAgICAgICAgY29uZmlnLnBhcnNlUGxhdGZvcm1UYWdOYW1lKHRhZyksIGRhdGEsIGNoaWxkcmVuLFxuICAgICAgICB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29udGV4dFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKCghZGF0YSB8fCAhZGF0YS5wcmUpICYmIGlzRGVmKEN0b3IgPSByZXNvbHZlQXNzZXQoY29udGV4dC4kb3B0aW9ucywgJ2NvbXBvbmVudHMnLCB0YWcpKSkge1xuICAgICAgLy8gY29tcG9uZW50XG4gICAgICB2bm9kZSA9IGNyZWF0ZUNvbXBvbmVudChDdG9yLCBkYXRhLCBjb250ZXh0LCBjaGlsZHJlbiwgdGFnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdW5rbm93biBvciB1bmxpc3RlZCBuYW1lc3BhY2VkIGVsZW1lbnRzXG4gICAgICAvLyBjaGVjayBhdCBydW50aW1lIGJlY2F1c2UgaXQgbWF5IGdldCBhc3NpZ25lZCBhIG5hbWVzcGFjZSB3aGVuIGl0c1xuICAgICAgLy8gcGFyZW50IG5vcm1hbGl6ZXMgY2hpbGRyZW5cbiAgICAgIHZub2RlID0gbmV3IFZOb2RlKFxuICAgICAgICB0YWcsIGRhdGEsIGNoaWxkcmVuLFxuICAgICAgICB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29udGV4dFxuICAgICAgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gZGlyZWN0IGNvbXBvbmVudCBvcHRpb25zIC8gY29uc3RydWN0b3JcbiAgICB2bm9kZSA9IGNyZWF0ZUNvbXBvbmVudCh0YWcsIGRhdGEsIGNvbnRleHQsIGNoaWxkcmVuKTtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheSh2bm9kZSkpIHtcbiAgICByZXR1cm4gdm5vZGVcbiAgfSBlbHNlIGlmIChpc0RlZih2bm9kZSkpIHtcbiAgICBpZiAoaXNEZWYobnMpKSB7IGFwcGx5TlModm5vZGUsIG5zKTsgfVxuICAgIGlmIChpc0RlZihkYXRhKSkgeyByZWdpc3RlckRlZXBCaW5kaW5ncyhkYXRhKTsgfVxuICAgIHJldHVybiB2bm9kZVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBjcmVhdGVFbXB0eVZOb2RlKClcbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseU5TICh2bm9kZSwgbnMsIGZvcmNlKSB7XG4gIHZub2RlLm5zID0gbnM7XG4gIGlmICh2bm9kZS50YWcgPT09ICdmb3JlaWduT2JqZWN0Jykge1xuICAgIC8vIHVzZSBkZWZhdWx0IG5hbWVzcGFjZSBpbnNpZGUgZm9yZWlnbk9iamVjdFxuICAgIG5zID0gdW5kZWZpbmVkO1xuICAgIGZvcmNlID0gdHJ1ZTtcbiAgfVxuICBpZiAoaXNEZWYodm5vZGUuY2hpbGRyZW4pKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSB2bm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBjaGlsZCA9IHZub2RlLmNoaWxkcmVuW2ldO1xuICAgICAgaWYgKGlzRGVmKGNoaWxkLnRhZykgJiYgKFxuICAgICAgICBpc1VuZGVmKGNoaWxkLm5zKSB8fCAoaXNUcnVlKGZvcmNlKSAmJiBjaGlsZC50YWcgIT09ICdzdmcnKSkpIHtcbiAgICAgICAgYXBwbHlOUyhjaGlsZCwgbnMsIGZvcmNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gcmVmICM1MzE4XG4vLyBuZWNlc3NhcnkgdG8gZW5zdXJlIHBhcmVudCByZS1yZW5kZXIgd2hlbiBkZWVwIGJpbmRpbmdzIGxpa2UgOnN0eWxlIGFuZFxuLy8gOmNsYXNzIGFyZSB1c2VkIG9uIHNsb3Qgbm9kZXNcbmZ1bmN0aW9uIHJlZ2lzdGVyRGVlcEJpbmRpbmdzIChkYXRhKSB7XG4gIGlmIChpc09iamVjdChkYXRhLnN0eWxlKSkge1xuICAgIHRyYXZlcnNlKGRhdGEuc3R5bGUpO1xuICB9XG4gIGlmIChpc09iamVjdChkYXRhLmNsYXNzKSkge1xuICAgIHRyYXZlcnNlKGRhdGEuY2xhc3MpO1xuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0UmVuZGVyICh2bSkge1xuICB2bS5fdm5vZGUgPSBudWxsOyAvLyB0aGUgcm9vdCBvZiB0aGUgY2hpbGQgdHJlZVxuICB2bS5fc3RhdGljVHJlZXMgPSBudWxsOyAvLyB2LW9uY2UgY2FjaGVkIHRyZWVzXG4gIHZhciBvcHRpb25zID0gdm0uJG9wdGlvbnM7XG4gIHZhciBwYXJlbnRWbm9kZSA9IHZtLiR2bm9kZSA9IG9wdGlvbnMuX3BhcmVudFZub2RlOyAvLyB0aGUgcGxhY2Vob2xkZXIgbm9kZSBpbiBwYXJlbnQgdHJlZVxuICB2YXIgcmVuZGVyQ29udGV4dCA9IHBhcmVudFZub2RlICYmIHBhcmVudFZub2RlLmNvbnRleHQ7XG4gIHZtLiRzbG90cyA9IHJlc29sdmVTbG90cyhvcHRpb25zLl9yZW5kZXJDaGlsZHJlbiwgcmVuZGVyQ29udGV4dCk7XG4gIHZtLiRzY29wZWRTbG90cyA9IGVtcHR5T2JqZWN0O1xuICAvLyBiaW5kIHRoZSBjcmVhdGVFbGVtZW50IGZuIHRvIHRoaXMgaW5zdGFuY2VcbiAgLy8gc28gdGhhdCB3ZSBnZXQgcHJvcGVyIHJlbmRlciBjb250ZXh0IGluc2lkZSBpdC5cbiAgLy8gYXJncyBvcmRlcjogdGFnLCBkYXRhLCBjaGlsZHJlbiwgbm9ybWFsaXphdGlvblR5cGUsIGFsd2F5c05vcm1hbGl6ZVxuICAvLyBpbnRlcm5hbCB2ZXJzaW9uIGlzIHVzZWQgYnkgcmVuZGVyIGZ1bmN0aW9ucyBjb21waWxlZCBmcm9tIHRlbXBsYXRlc1xuICB2bS5fYyA9IGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7IHJldHVybiBjcmVhdGVFbGVtZW50KHZtLCBhLCBiLCBjLCBkLCBmYWxzZSk7IH07XG4gIC8vIG5vcm1hbGl6YXRpb24gaXMgYWx3YXlzIGFwcGxpZWQgZm9yIHRoZSBwdWJsaWMgdmVyc2lvbiwgdXNlZCBpblxuICAvLyB1c2VyLXdyaXR0ZW4gcmVuZGVyIGZ1bmN0aW9ucy5cbiAgdm0uJGNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAoYSwgYiwgYywgZCkgeyByZXR1cm4gY3JlYXRlRWxlbWVudCh2bSwgYSwgYiwgYywgZCwgdHJ1ZSk7IH07XG5cbiAgLy8gJGF0dHJzICYgJGxpc3RlbmVycyBhcmUgZXhwb3NlZCBmb3IgZWFzaWVyIEhPQyBjcmVhdGlvbi5cbiAgLy8gdGhleSBuZWVkIHRvIGJlIHJlYWN0aXZlIHNvIHRoYXQgSE9DcyB1c2luZyB0aGVtIGFyZSBhbHdheXMgdXBkYXRlZFxuICB2YXIgcGFyZW50RGF0YSA9IHBhcmVudFZub2RlICYmIHBhcmVudFZub2RlLmRhdGE7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBkZWZpbmVSZWFjdGl2ZSQkMSh2bSwgJyRhdHRycycsIHBhcmVudERhdGEgJiYgcGFyZW50RGF0YS5hdHRycyB8fCBlbXB0eU9iamVjdCwgZnVuY3Rpb24gKCkge1xuICAgICAgIWlzVXBkYXRpbmdDaGlsZENvbXBvbmVudCAmJiB3YXJuKFwiJGF0dHJzIGlzIHJlYWRvbmx5LlwiLCB2bSk7XG4gICAgfSwgdHJ1ZSk7XG4gICAgZGVmaW5lUmVhY3RpdmUkJDEodm0sICckbGlzdGVuZXJzJywgb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzIHx8IGVtcHR5T2JqZWN0LCBmdW5jdGlvbiAoKSB7XG4gICAgICAhaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50ICYmIHdhcm4oXCIkbGlzdGVuZXJzIGlzIHJlYWRvbmx5LlwiLCB2bSk7XG4gICAgfSwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgZGVmaW5lUmVhY3RpdmUkJDEodm0sICckYXR0cnMnLCBwYXJlbnREYXRhICYmIHBhcmVudERhdGEuYXR0cnMgfHwgZW1wdHlPYmplY3QsIG51bGwsIHRydWUpO1xuICAgIGRlZmluZVJlYWN0aXZlJCQxKHZtLCAnJGxpc3RlbmVycycsIG9wdGlvbnMuX3BhcmVudExpc3RlbmVycyB8fCBlbXB0eU9iamVjdCwgbnVsbCwgdHJ1ZSk7XG4gIH1cbn1cblxudmFyIGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSA9IG51bGw7XG5cbmZ1bmN0aW9uIHJlbmRlck1peGluIChWdWUpIHtcbiAgLy8gaW5zdGFsbCBydW50aW1lIGNvbnZlbmllbmNlIGhlbHBlcnNcbiAgaW5zdGFsbFJlbmRlckhlbHBlcnMoVnVlLnByb3RvdHlwZSk7XG5cbiAgVnVlLnByb3RvdHlwZS4kbmV4dFRpY2sgPSBmdW5jdGlvbiAoZm4pIHtcbiAgICByZXR1cm4gbmV4dFRpY2soZm4sIHRoaXMpXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS5fcmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgdmFyIHJlZiA9IHZtLiRvcHRpb25zO1xuICAgIHZhciByZW5kZXIgPSByZWYucmVuZGVyO1xuICAgIHZhciBfcGFyZW50Vm5vZGUgPSByZWYuX3BhcmVudFZub2RlO1xuXG4gICAgaWYgKF9wYXJlbnRWbm9kZSkge1xuICAgICAgdm0uJHNjb3BlZFNsb3RzID0gbm9ybWFsaXplU2NvcGVkU2xvdHMoXG4gICAgICAgIF9wYXJlbnRWbm9kZS5kYXRhLnNjb3BlZFNsb3RzLFxuICAgICAgICB2bS4kc2xvdHMsXG4gICAgICAgIHZtLiRzY29wZWRTbG90c1xuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBzZXQgcGFyZW50IHZub2RlLiB0aGlzIGFsbG93cyByZW5kZXIgZnVuY3Rpb25zIHRvIGhhdmUgYWNjZXNzXG4gICAgLy8gdG8gdGhlIGRhdGEgb24gdGhlIHBsYWNlaG9sZGVyIG5vZGUuXG4gICAgdm0uJHZub2RlID0gX3BhcmVudFZub2RlO1xuICAgIC8vIHJlbmRlciBzZWxmXG4gICAgdmFyIHZub2RlO1xuICAgIHRyeSB7XG4gICAgICAvLyBUaGVyZSdzIG5vIG5lZWQgdG8gbWFpbnRhaW4gYSBzdGFjayBiZWNhdWVzIGFsbCByZW5kZXIgZm5zIGFyZSBjYWxsZWRcbiAgICAgIC8vIHNlcGFyYXRlbHkgZnJvbSBvbmUgYW5vdGhlci4gTmVzdGVkIGNvbXBvbmVudCdzIHJlbmRlciBmbnMgYXJlIGNhbGxlZFxuICAgICAgLy8gd2hlbiBwYXJlbnQgY29tcG9uZW50IGlzIHBhdGNoZWQuXG4gICAgICBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UgPSB2bTtcbiAgICAgIHZub2RlID0gcmVuZGVyLmNhbGwodm0uX3JlbmRlclByb3h5LCB2bS4kY3JlYXRlRWxlbWVudCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sIFwicmVuZGVyXCIpO1xuICAgICAgLy8gcmV0dXJuIGVycm9yIHJlbmRlciByZXN1bHQsXG4gICAgICAvLyBvciBwcmV2aW91cyB2bm9kZSB0byBwcmV2ZW50IHJlbmRlciBlcnJvciBjYXVzaW5nIGJsYW5rIGNvbXBvbmVudFxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHZtLiRvcHRpb25zLnJlbmRlckVycm9yKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdm5vZGUgPSB2bS4kb3B0aW9ucy5yZW5kZXJFcnJvci5jYWxsKHZtLl9yZW5kZXJQcm94eSwgdm0uJGNyZWF0ZUVsZW1lbnQsIGUpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sIFwicmVuZGVyRXJyb3JcIik7XG4gICAgICAgICAgdm5vZGUgPSB2bS5fdm5vZGU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZub2RlID0gdm0uX3Zub2RlO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UgPSBudWxsO1xuICAgIH1cbiAgICAvLyBpZiB0aGUgcmV0dXJuZWQgYXJyYXkgY29udGFpbnMgb25seSBhIHNpbmdsZSBub2RlLCBhbGxvdyBpdFxuICAgIGlmIChBcnJheS5pc0FycmF5KHZub2RlKSAmJiB2bm9kZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHZub2RlID0gdm5vZGVbMF07XG4gICAgfVxuICAgIC8vIHJldHVybiBlbXB0eSB2bm9kZSBpbiBjYXNlIHRoZSByZW5kZXIgZnVuY3Rpb24gZXJyb3JlZCBvdXRcbiAgICBpZiAoISh2bm9kZSBpbnN0YW5jZW9mIFZOb2RlKSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgQXJyYXkuaXNBcnJheSh2bm9kZSkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnTXVsdGlwbGUgcm9vdCBub2RlcyByZXR1cm5lZCBmcm9tIHJlbmRlciBmdW5jdGlvbi4gUmVuZGVyIGZ1bmN0aW9uICcgK1xuICAgICAgICAgICdzaG91bGQgcmV0dXJuIGEgc2luZ2xlIHJvb3Qgbm9kZS4nLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB2bm9kZSA9IGNyZWF0ZUVtcHR5Vk5vZGUoKTtcbiAgICB9XG4gICAgLy8gc2V0IHBhcmVudFxuICAgIHZub2RlLnBhcmVudCA9IF9wYXJlbnRWbm9kZTtcbiAgICByZXR1cm4gdm5vZGVcbiAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGVuc3VyZUN0b3IgKGNvbXAsIGJhc2UpIHtcbiAgaWYgKFxuICAgIGNvbXAuX19lc01vZHVsZSB8fFxuICAgIChoYXNTeW1ib2wgJiYgY29tcFtTeW1ib2wudG9TdHJpbmdUYWddID09PSAnTW9kdWxlJylcbiAgKSB7XG4gICAgY29tcCA9IGNvbXAuZGVmYXVsdDtcbiAgfVxuICByZXR1cm4gaXNPYmplY3QoY29tcClcbiAgICA/IGJhc2UuZXh0ZW5kKGNvbXApXG4gICAgOiBjb21wXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUFzeW5jUGxhY2Vob2xkZXIgKFxuICBmYWN0b3J5LFxuICBkYXRhLFxuICBjb250ZXh0LFxuICBjaGlsZHJlbixcbiAgdGFnXG4pIHtcbiAgdmFyIG5vZGUgPSBjcmVhdGVFbXB0eVZOb2RlKCk7XG4gIG5vZGUuYXN5bmNGYWN0b3J5ID0gZmFjdG9yeTtcbiAgbm9kZS5hc3luY01ldGEgPSB7IGRhdGE6IGRhdGEsIGNvbnRleHQ6IGNvbnRleHQsIGNoaWxkcmVuOiBjaGlsZHJlbiwgdGFnOiB0YWcgfTtcbiAgcmV0dXJuIG5vZGVcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUFzeW5jQ29tcG9uZW50IChcbiAgZmFjdG9yeSxcbiAgYmFzZUN0b3Jcbikge1xuICBpZiAoaXNUcnVlKGZhY3RvcnkuZXJyb3IpICYmIGlzRGVmKGZhY3RvcnkuZXJyb3JDb21wKSkge1xuICAgIHJldHVybiBmYWN0b3J5LmVycm9yQ29tcFxuICB9XG5cbiAgaWYgKGlzRGVmKGZhY3RvcnkucmVzb2x2ZWQpKSB7XG4gICAgcmV0dXJuIGZhY3RvcnkucmVzb2x2ZWRcbiAgfVxuXG4gIHZhciBvd25lciA9IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZTtcbiAgaWYgKG93bmVyICYmIGlzRGVmKGZhY3Rvcnkub3duZXJzKSAmJiBmYWN0b3J5Lm93bmVycy5pbmRleE9mKG93bmVyKSA9PT0gLTEpIHtcbiAgICAvLyBhbHJlYWR5IHBlbmRpbmdcbiAgICBmYWN0b3J5Lm93bmVycy5wdXNoKG93bmVyKTtcbiAgfVxuXG4gIGlmIChpc1RydWUoZmFjdG9yeS5sb2FkaW5nKSAmJiBpc0RlZihmYWN0b3J5LmxvYWRpbmdDb21wKSkge1xuICAgIHJldHVybiBmYWN0b3J5LmxvYWRpbmdDb21wXG4gIH1cblxuICBpZiAob3duZXIgJiYgIWlzRGVmKGZhY3Rvcnkub3duZXJzKSkge1xuICAgIHZhciBvd25lcnMgPSBmYWN0b3J5Lm93bmVycyA9IFtvd25lcl07XG4gICAgdmFyIHN5bmMgPSB0cnVlO1xuICAgIHZhciB0aW1lckxvYWRpbmcgPSBudWxsO1xuICAgIHZhciB0aW1lclRpbWVvdXQgPSBudWxsXG5cbiAgICA7KG93bmVyKS4kb24oJ2hvb2s6ZGVzdHJveWVkJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVtb3ZlKG93bmVycywgb3duZXIpOyB9KTtcblxuICAgIHZhciBmb3JjZVJlbmRlciA9IGZ1bmN0aW9uIChyZW5kZXJDb21wbGV0ZWQpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gb3duZXJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAob3duZXJzW2ldKS4kZm9yY2VVcGRhdGUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlbmRlckNvbXBsZXRlZCkge1xuICAgICAgICBvd25lcnMubGVuZ3RoID0gMDtcbiAgICAgICAgaWYgKHRpbWVyTG9hZGluZyAhPT0gbnVsbCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lckxvYWRpbmcpO1xuICAgICAgICAgIHRpbWVyTG9hZGluZyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRpbWVyVGltZW91dCAhPT0gbnVsbCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lclRpbWVvdXQpO1xuICAgICAgICAgIHRpbWVyVGltZW91dCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIHJlc29sdmUgPSBvbmNlKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIC8vIGNhY2hlIHJlc29sdmVkXG4gICAgICBmYWN0b3J5LnJlc29sdmVkID0gZW5zdXJlQ3RvcihyZXMsIGJhc2VDdG9yKTtcbiAgICAgIC8vIGludm9rZSBjYWxsYmFja3Mgb25seSBpZiB0aGlzIGlzIG5vdCBhIHN5bmNocm9ub3VzIHJlc29sdmVcbiAgICAgIC8vIChhc3luYyByZXNvbHZlcyBhcmUgc2hpbW1lZCBhcyBzeW5jaHJvbm91cyBkdXJpbmcgU1NSKVxuICAgICAgaWYgKCFzeW5jKSB7XG4gICAgICAgIGZvcmNlUmVuZGVyKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3duZXJzLmxlbmd0aCA9IDA7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB2YXIgcmVqZWN0ID0gb25jZShmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgIFwiRmFpbGVkIHRvIHJlc29sdmUgYXN5bmMgY29tcG9uZW50OiBcIiArIChTdHJpbmcoZmFjdG9yeSkpICtcbiAgICAgICAgKHJlYXNvbiA/IChcIlxcblJlYXNvbjogXCIgKyByZWFzb24pIDogJycpXG4gICAgICApO1xuICAgICAgaWYgKGlzRGVmKGZhY3RvcnkuZXJyb3JDb21wKSkge1xuICAgICAgICBmYWN0b3J5LmVycm9yID0gdHJ1ZTtcbiAgICAgICAgZm9yY2VSZW5kZXIodHJ1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB2YXIgcmVzID0gZmFjdG9yeShyZXNvbHZlLCByZWplY3QpO1xuXG4gICAgaWYgKGlzT2JqZWN0KHJlcykpIHtcbiAgICAgIGlmIChpc1Byb21pc2UocmVzKSkge1xuICAgICAgICAvLyAoKSA9PiBQcm9taXNlXG4gICAgICAgIGlmIChpc1VuZGVmKGZhY3RvcnkucmVzb2x2ZWQpKSB7XG4gICAgICAgICAgcmVzLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc1Byb21pc2UocmVzLmNvbXBvbmVudCkpIHtcbiAgICAgICAgcmVzLmNvbXBvbmVudC50aGVuKHJlc29sdmUsIHJlamVjdCk7XG5cbiAgICAgICAgaWYgKGlzRGVmKHJlcy5lcnJvcikpIHtcbiAgICAgICAgICBmYWN0b3J5LmVycm9yQ29tcCA9IGVuc3VyZUN0b3IocmVzLmVycm9yLCBiYXNlQ3Rvcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEZWYocmVzLmxvYWRpbmcpKSB7XG4gICAgICAgICAgZmFjdG9yeS5sb2FkaW5nQ29tcCA9IGVuc3VyZUN0b3IocmVzLmxvYWRpbmcsIGJhc2VDdG9yKTtcbiAgICAgICAgICBpZiAocmVzLmRlbGF5ID09PSAwKSB7XG4gICAgICAgICAgICBmYWN0b3J5LmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aW1lckxvYWRpbmcgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgdGltZXJMb2FkaW5nID0gbnVsbDtcbiAgICAgICAgICAgICAgaWYgKGlzVW5kZWYoZmFjdG9yeS5yZXNvbHZlZCkgJiYgaXNVbmRlZihmYWN0b3J5LmVycm9yKSkge1xuICAgICAgICAgICAgICAgIGZhY3RvcnkubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgZm9yY2VSZW5kZXIoZmFsc2UpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCByZXMuZGVsYXkgfHwgMjAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEZWYocmVzLnRpbWVvdXQpKSB7XG4gICAgICAgICAgdGltZXJUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aW1lclRpbWVvdXQgPSBudWxsO1xuICAgICAgICAgICAgaWYgKGlzVW5kZWYoZmFjdG9yeS5yZXNvbHZlZCkpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbidcbiAgICAgICAgICAgICAgICAgID8gKFwidGltZW91dCAoXCIgKyAocmVzLnRpbWVvdXQpICsgXCJtcylcIilcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIHJlcy50aW1lb3V0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHN5bmMgPSBmYWxzZTtcbiAgICAvLyByZXR1cm4gaW4gY2FzZSByZXNvbHZlZCBzeW5jaHJvbm91c2x5XG4gICAgcmV0dXJuIGZhY3RvcnkubG9hZGluZ1xuICAgICAgPyBmYWN0b3J5LmxvYWRpbmdDb21wXG4gICAgICA6IGZhY3RvcnkucmVzb2x2ZWRcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaXNBc3luY1BsYWNlaG9sZGVyIChub2RlKSB7XG4gIHJldHVybiBub2RlLmlzQ29tbWVudCAmJiBub2RlLmFzeW5jRmFjdG9yeVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gZ2V0Rmlyc3RDb21wb25lbnRDaGlsZCAoY2hpbGRyZW4pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGMgPSBjaGlsZHJlbltpXTtcbiAgICAgIGlmIChpc0RlZihjKSAmJiAoaXNEZWYoYy5jb21wb25lbnRPcHRpb25zKSB8fCBpc0FzeW5jUGxhY2Vob2xkZXIoYykpKSB7XG4gICAgICAgIHJldHVybiBjXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdEV2ZW50cyAodm0pIHtcbiAgdm0uX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZtLl9oYXNIb29rRXZlbnQgPSBmYWxzZTtcbiAgLy8gaW5pdCBwYXJlbnQgYXR0YWNoZWQgZXZlbnRzXG4gIHZhciBsaXN0ZW5lcnMgPSB2bS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xuICBpZiAobGlzdGVuZXJzKSB7XG4gICAgdXBkYXRlQ29tcG9uZW50TGlzdGVuZXJzKHZtLCBsaXN0ZW5lcnMpO1xuICB9XG59XG5cbnZhciB0YXJnZXQ7XG5cbmZ1bmN0aW9uIGFkZCAoZXZlbnQsIGZuKSB7XG4gIHRhcmdldC4kb24oZXZlbnQsIGZuKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlJDEgKGV2ZW50LCBmbikge1xuICB0YXJnZXQuJG9mZihldmVudCwgZm4pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVPbmNlSGFuZGxlciAoZXZlbnQsIGZuKSB7XG4gIHZhciBfdGFyZ2V0ID0gdGFyZ2V0O1xuICByZXR1cm4gZnVuY3Rpb24gb25jZUhhbmRsZXIgKCkge1xuICAgIHZhciByZXMgPSBmbi5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgIGlmIChyZXMgIT09IG51bGwpIHtcbiAgICAgIF90YXJnZXQuJG9mZihldmVudCwgb25jZUhhbmRsZXIpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVDb21wb25lbnRMaXN0ZW5lcnMgKFxuICB2bSxcbiAgbGlzdGVuZXJzLFxuICBvbGRMaXN0ZW5lcnNcbikge1xuICB0YXJnZXQgPSB2bTtcbiAgdXBkYXRlTGlzdGVuZXJzKGxpc3RlbmVycywgb2xkTGlzdGVuZXJzIHx8IHt9LCBhZGQsIHJlbW92ZSQxLCBjcmVhdGVPbmNlSGFuZGxlciwgdm0pO1xuICB0YXJnZXQgPSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGV2ZW50c01peGluIChWdWUpIHtcbiAgdmFyIGhvb2tSRSA9IC9eaG9vazovO1xuICBWdWUucHJvdG90eXBlLiRvbiA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGV2ZW50KSkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBldmVudC5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgdm0uJG9uKGV2ZW50W2ldLCBmbik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICh2bS5fZXZlbnRzW2V2ZW50XSB8fCAodm0uX2V2ZW50c1tldmVudF0gPSBbXSkpLnB1c2goZm4pO1xuICAgICAgLy8gb3B0aW1pemUgaG9vazpldmVudCBjb3N0IGJ5IHVzaW5nIGEgYm9vbGVhbiBmbGFnIG1hcmtlZCBhdCByZWdpc3RyYXRpb25cbiAgICAgIC8vIGluc3RlYWQgb2YgYSBoYXNoIGxvb2t1cFxuICAgICAgaWYgKGhvb2tSRS50ZXN0KGV2ZW50KSkge1xuICAgICAgICB2bS5faGFzSG9va0V2ZW50ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZtXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kb25jZSA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGZ1bmN0aW9uIG9uICgpIHtcbiAgICAgIHZtLiRvZmYoZXZlbnQsIG9uKTtcbiAgICAgIGZuLmFwcGx5KHZtLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgICBvbi5mbiA9IGZuO1xuICAgIHZtLiRvbihldmVudCwgb24pO1xuICAgIHJldHVybiB2bVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJG9mZiA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIC8vIGFsbFxuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgdm0uX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4gICAgLy8gYXJyYXkgb2YgZXZlbnRzXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXZlbnQpKSB7XG4gICAgICBmb3IgKHZhciBpJDEgPSAwLCBsID0gZXZlbnQubGVuZ3RoOyBpJDEgPCBsOyBpJDErKykge1xuICAgICAgICB2bS4kb2ZmKGV2ZW50W2kkMV0sIGZuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICAvLyBzcGVjaWZpYyBldmVudFxuICAgIHZhciBjYnMgPSB2bS5fZXZlbnRzW2V2ZW50XTtcbiAgICBpZiAoIWNicykge1xuICAgICAgcmV0dXJuIHZtXG4gICAgfVxuICAgIGlmICghZm4pIHtcbiAgICAgIHZtLl9ldmVudHNbZXZlbnRdID0gbnVsbDtcbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICAvLyBzcGVjaWZpYyBoYW5kbGVyXG4gICAgdmFyIGNiO1xuICAgIHZhciBpID0gY2JzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICBjYiA9IGNic1tpXTtcbiAgICAgIGlmIChjYiA9PT0gZm4gfHwgY2IuZm4gPT09IGZuKSB7XG4gICAgICAgIGNicy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2bVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJGVtaXQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgbG93ZXJDYXNlRXZlbnQgPSBldmVudC50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKGxvd2VyQ2FzZUV2ZW50ICE9PSBldmVudCAmJiB2bS5fZXZlbnRzW2xvd2VyQ2FzZUV2ZW50XSkge1xuICAgICAgICB0aXAoXG4gICAgICAgICAgXCJFdmVudCBcXFwiXCIgKyBsb3dlckNhc2VFdmVudCArIFwiXFxcIiBpcyBlbWl0dGVkIGluIGNvbXBvbmVudCBcIiArXG4gICAgICAgICAgKGZvcm1hdENvbXBvbmVudE5hbWUodm0pKSArIFwiIGJ1dCB0aGUgaGFuZGxlciBpcyByZWdpc3RlcmVkIGZvciBcXFwiXCIgKyBldmVudCArIFwiXFxcIi4gXCIgK1xuICAgICAgICAgIFwiTm90ZSB0aGF0IEhUTUwgYXR0cmlidXRlcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgeW91IGNhbm5vdCB1c2UgXCIgK1xuICAgICAgICAgIFwidi1vbiB0byBsaXN0ZW4gdG8gY2FtZWxDYXNlIGV2ZW50cyB3aGVuIHVzaW5nIGluLURPTSB0ZW1wbGF0ZXMuIFwiICtcbiAgICAgICAgICBcIllvdSBzaG91bGQgcHJvYmFibHkgdXNlIFxcXCJcIiArIChoeXBoZW5hdGUoZXZlbnQpKSArIFwiXFxcIiBpbnN0ZWFkIG9mIFxcXCJcIiArIGV2ZW50ICsgXCJcXFwiLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBjYnMgPSB2bS5fZXZlbnRzW2V2ZW50XTtcbiAgICBpZiAoY2JzKSB7XG4gICAgICBjYnMgPSBjYnMubGVuZ3RoID4gMSA/IHRvQXJyYXkoY2JzKSA6IGNicztcbiAgICAgIHZhciBhcmdzID0gdG9BcnJheShhcmd1bWVudHMsIDEpO1xuICAgICAgdmFyIGluZm8gPSBcImV2ZW50IGhhbmRsZXIgZm9yIFxcXCJcIiArIGV2ZW50ICsgXCJcXFwiXCI7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNicy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaW52b2tlV2l0aEVycm9ySGFuZGxpbmcoY2JzW2ldLCB2bSwgYXJncywgdm0sIGluZm8pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdm1cbiAgfTtcbn1cblxuLyogICovXG5cbnZhciBhY3RpdmVJbnN0YW5jZSA9IG51bGw7XG52YXIgaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50ID0gZmFsc2U7XG5cbmZ1bmN0aW9uIHNldEFjdGl2ZUluc3RhbmNlKHZtKSB7XG4gIHZhciBwcmV2QWN0aXZlSW5zdGFuY2UgPSBhY3RpdmVJbnN0YW5jZTtcbiAgYWN0aXZlSW5zdGFuY2UgPSB2bTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBhY3RpdmVJbnN0YW5jZSA9IHByZXZBY3RpdmVJbnN0YW5jZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0TGlmZWN5Y2xlICh2bSkge1xuICB2YXIgb3B0aW9ucyA9IHZtLiRvcHRpb25zO1xuXG4gIC8vIGxvY2F0ZSBmaXJzdCBub24tYWJzdHJhY3QgcGFyZW50XG4gIHZhciBwYXJlbnQgPSBvcHRpb25zLnBhcmVudDtcbiAgaWYgKHBhcmVudCAmJiAhb3B0aW9ucy5hYnN0cmFjdCkge1xuICAgIHdoaWxlIChwYXJlbnQuJG9wdGlvbnMuYWJzdHJhY3QgJiYgcGFyZW50LiRwYXJlbnQpIHtcbiAgICAgIHBhcmVudCA9IHBhcmVudC4kcGFyZW50O1xuICAgIH1cbiAgICBwYXJlbnQuJGNoaWxkcmVuLnB1c2godm0pO1xuICB9XG5cbiAgdm0uJHBhcmVudCA9IHBhcmVudDtcbiAgdm0uJHJvb3QgPSBwYXJlbnQgPyBwYXJlbnQuJHJvb3QgOiB2bTtcblxuICB2bS4kY2hpbGRyZW4gPSBbXTtcbiAgdm0uJHJlZnMgPSB7fTtcblxuICB2bS5fd2F0Y2hlciA9IG51bGw7XG4gIHZtLl9pbmFjdGl2ZSA9IG51bGw7XG4gIHZtLl9kaXJlY3RJbmFjdGl2ZSA9IGZhbHNlO1xuICB2bS5faXNNb3VudGVkID0gZmFsc2U7XG4gIHZtLl9pc0Rlc3Ryb3llZCA9IGZhbHNlO1xuICB2bS5faXNCZWluZ0Rlc3Ryb3llZCA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBsaWZlY3ljbGVNaXhpbiAoVnVlKSB7XG4gIFZ1ZS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uICh2bm9kZSwgaHlkcmF0aW5nKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICB2YXIgcHJldkVsID0gdm0uJGVsO1xuICAgIHZhciBwcmV2Vm5vZGUgPSB2bS5fdm5vZGU7XG4gICAgdmFyIHJlc3RvcmVBY3RpdmVJbnN0YW5jZSA9IHNldEFjdGl2ZUluc3RhbmNlKHZtKTtcbiAgICB2bS5fdm5vZGUgPSB2bm9kZTtcbiAgICAvLyBWdWUucHJvdG90eXBlLl9fcGF0Y2hfXyBpcyBpbmplY3RlZCBpbiBlbnRyeSBwb2ludHNcbiAgICAvLyBiYXNlZCBvbiB0aGUgcmVuZGVyaW5nIGJhY2tlbmQgdXNlZC5cbiAgICBpZiAoIXByZXZWbm9kZSkge1xuICAgICAgLy8gaW5pdGlhbCByZW5kZXJcbiAgICAgIHZtLiRlbCA9IHZtLl9fcGF0Y2hfXyh2bS4kZWwsIHZub2RlLCBoeWRyYXRpbmcsIGZhbHNlIC8qIHJlbW92ZU9ubHkgKi8pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB1cGRhdGVzXG4gICAgICB2bS4kZWwgPSB2bS5fX3BhdGNoX18ocHJldlZub2RlLCB2bm9kZSk7XG4gICAgfVxuICAgIHJlc3RvcmVBY3RpdmVJbnN0YW5jZSgpO1xuICAgIC8vIHVwZGF0ZSBfX3Z1ZV9fIHJlZmVyZW5jZVxuICAgIGlmIChwcmV2RWwpIHtcbiAgICAgIHByZXZFbC5fX3Z1ZV9fID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHZtLiRlbCkge1xuICAgICAgdm0uJGVsLl9fdnVlX18gPSB2bTtcbiAgICB9XG4gICAgLy8gaWYgcGFyZW50IGlzIGFuIEhPQywgdXBkYXRlIGl0cyAkZWwgYXMgd2VsbFxuICAgIGlmICh2bS4kdm5vZGUgJiYgdm0uJHBhcmVudCAmJiB2bS4kdm5vZGUgPT09IHZtLiRwYXJlbnQuX3Zub2RlKSB7XG4gICAgICB2bS4kcGFyZW50LiRlbCA9IHZtLiRlbDtcbiAgICB9XG4gICAgLy8gdXBkYXRlZCBob29rIGlzIGNhbGxlZCBieSB0aGUgc2NoZWR1bGVyIHRvIGVuc3VyZSB0aGF0IGNoaWxkcmVuIGFyZVxuICAgIC8vIHVwZGF0ZWQgaW4gYSBwYXJlbnQncyB1cGRhdGVkIGhvb2suXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAodm0uX3dhdGNoZXIpIHtcbiAgICAgIHZtLl93YXRjaGVyLnVwZGF0ZSgpO1xuICAgIH1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRkZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl9pc0JlaW5nRGVzdHJveWVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FsbEhvb2sodm0sICdiZWZvcmVEZXN0cm95Jyk7XG4gICAgdm0uX2lzQmVpbmdEZXN0cm95ZWQgPSB0cnVlO1xuICAgIC8vIHJlbW92ZSBzZWxmIGZyb20gcGFyZW50XG4gICAgdmFyIHBhcmVudCA9IHZtLiRwYXJlbnQ7XG4gICAgaWYgKHBhcmVudCAmJiAhcGFyZW50Ll9pc0JlaW5nRGVzdHJveWVkICYmICF2bS4kb3B0aW9ucy5hYnN0cmFjdCkge1xuICAgICAgcmVtb3ZlKHBhcmVudC4kY2hpbGRyZW4sIHZtKTtcbiAgICB9XG4gICAgLy8gdGVhcmRvd24gd2F0Y2hlcnNcbiAgICBpZiAodm0uX3dhdGNoZXIpIHtcbiAgICAgIHZtLl93YXRjaGVyLnRlYXJkb3duKCk7XG4gICAgfVxuICAgIHZhciBpID0gdm0uX3dhdGNoZXJzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB2bS5fd2F0Y2hlcnNbaV0udGVhcmRvd24oKTtcbiAgICB9XG4gICAgLy8gcmVtb3ZlIHJlZmVyZW5jZSBmcm9tIGRhdGEgb2JcbiAgICAvLyBmcm96ZW4gb2JqZWN0IG1heSBub3QgaGF2ZSBvYnNlcnZlci5cbiAgICBpZiAodm0uX2RhdGEuX19vYl9fKSB7XG4gICAgICB2bS5fZGF0YS5fX29iX18udm1Db3VudC0tO1xuICAgIH1cbiAgICAvLyBjYWxsIHRoZSBsYXN0IGhvb2suLi5cbiAgICB2bS5faXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgIC8vIGludm9rZSBkZXN0cm95IGhvb2tzIG9uIGN1cnJlbnQgcmVuZGVyZWQgdHJlZVxuICAgIHZtLl9fcGF0Y2hfXyh2bS5fdm5vZGUsIG51bGwpO1xuICAgIC8vIGZpcmUgZGVzdHJveWVkIGhvb2tcbiAgICBjYWxsSG9vayh2bSwgJ2Rlc3Ryb3llZCcpO1xuICAgIC8vIHR1cm4gb2ZmIGFsbCBpbnN0YW5jZSBsaXN0ZW5lcnMuXG4gICAgdm0uJG9mZigpO1xuICAgIC8vIHJlbW92ZSBfX3Z1ZV9fIHJlZmVyZW5jZVxuICAgIGlmICh2bS4kZWwpIHtcbiAgICAgIHZtLiRlbC5fX3Z1ZV9fID0gbnVsbDtcbiAgICB9XG4gICAgLy8gcmVsZWFzZSBjaXJjdWxhciByZWZlcmVuY2UgKCM2NzU5KVxuICAgIGlmICh2bS4kdm5vZGUpIHtcbiAgICAgIHZtLiR2bm9kZS5wYXJlbnQgPSBudWxsO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gbW91bnRDb21wb25lbnQgKFxuICB2bSxcbiAgZWwsXG4gIGh5ZHJhdGluZ1xuKSB7XG4gIHZtLiRlbCA9IGVsO1xuICBpZiAoIXZtLiRvcHRpb25zLnJlbmRlcikge1xuICAgIHZtLiRvcHRpb25zLnJlbmRlciA9IGNyZWF0ZUVtcHR5Vk5vZGU7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKCh2bS4kb3B0aW9ucy50ZW1wbGF0ZSAmJiB2bS4kb3B0aW9ucy50ZW1wbGF0ZS5jaGFyQXQoMCkgIT09ICcjJykgfHxcbiAgICAgICAgdm0uJG9wdGlvbnMuZWwgfHwgZWwpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnWW91IGFyZSB1c2luZyB0aGUgcnVudGltZS1vbmx5IGJ1aWxkIG9mIFZ1ZSB3aGVyZSB0aGUgdGVtcGxhdGUgJyArXG4gICAgICAgICAgJ2NvbXBpbGVyIGlzIG5vdCBhdmFpbGFibGUuIEVpdGhlciBwcmUtY29tcGlsZSB0aGUgdGVtcGxhdGVzIGludG8gJyArXG4gICAgICAgICAgJ3JlbmRlciBmdW5jdGlvbnMsIG9yIHVzZSB0aGUgY29tcGlsZXItaW5jbHVkZWQgYnVpbGQuJyxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnRmFpbGVkIHRvIG1vdW50IGNvbXBvbmVudDogdGVtcGxhdGUgb3IgcmVuZGVyIGZ1bmN0aW9uIG5vdCBkZWZpbmVkLicsXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY2FsbEhvb2sodm0sICdiZWZvcmVNb3VudCcpO1xuXG4gIHZhciB1cGRhdGVDb21wb25lbnQ7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjb25maWcucGVyZm9ybWFuY2UgJiYgbWFyaykge1xuICAgIHVwZGF0ZUNvbXBvbmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBuYW1lID0gdm0uX25hbWU7XG4gICAgICB2YXIgaWQgPSB2bS5fdWlkO1xuICAgICAgdmFyIHN0YXJ0VGFnID0gXCJ2dWUtcGVyZi1zdGFydDpcIiArIGlkO1xuICAgICAgdmFyIGVuZFRhZyA9IFwidnVlLXBlcmYtZW5kOlwiICsgaWQ7XG5cbiAgICAgIG1hcmsoc3RhcnRUYWcpO1xuICAgICAgdmFyIHZub2RlID0gdm0uX3JlbmRlcigpO1xuICAgICAgbWFyayhlbmRUYWcpO1xuICAgICAgbWVhc3VyZSgoXCJ2dWUgXCIgKyBuYW1lICsgXCIgcmVuZGVyXCIpLCBzdGFydFRhZywgZW5kVGFnKTtcblxuICAgICAgbWFyayhzdGFydFRhZyk7XG4gICAgICB2bS5fdXBkYXRlKHZub2RlLCBoeWRyYXRpbmcpO1xuICAgICAgbWFyayhlbmRUYWcpO1xuICAgICAgbWVhc3VyZSgoXCJ2dWUgXCIgKyBuYW1lICsgXCIgcGF0Y2hcIiksIHN0YXJ0VGFnLCBlbmRUYWcpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgdXBkYXRlQ29tcG9uZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdm0uX3VwZGF0ZSh2bS5fcmVuZGVyKCksIGh5ZHJhdGluZyk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIHdlIHNldCB0aGlzIHRvIHZtLl93YXRjaGVyIGluc2lkZSB0aGUgd2F0Y2hlcidzIGNvbnN0cnVjdG9yXG4gIC8vIHNpbmNlIHRoZSB3YXRjaGVyJ3MgaW5pdGlhbCBwYXRjaCBtYXkgY2FsbCAkZm9yY2VVcGRhdGUgKGUuZy4gaW5zaWRlIGNoaWxkXG4gIC8vIGNvbXBvbmVudCdzIG1vdW50ZWQgaG9vayksIHdoaWNoIHJlbGllcyBvbiB2bS5fd2F0Y2hlciBiZWluZyBhbHJlYWR5IGRlZmluZWRcbiAgbmV3IFdhdGNoZXIodm0sIHVwZGF0ZUNvbXBvbmVudCwgbm9vcCwge1xuICAgIGJlZm9yZTogZnVuY3Rpb24gYmVmb3JlICgpIHtcbiAgICAgIGlmICh2bS5faXNNb3VudGVkICYmICF2bS5faXNEZXN0cm95ZWQpIHtcbiAgICAgICAgY2FsbEhvb2sodm0sICdiZWZvcmVVcGRhdGUnKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHRydWUgLyogaXNSZW5kZXJXYXRjaGVyICovKTtcbiAgaHlkcmF0aW5nID0gZmFsc2U7XG5cbiAgLy8gbWFudWFsbHkgbW91bnRlZCBpbnN0YW5jZSwgY2FsbCBtb3VudGVkIG9uIHNlbGZcbiAgLy8gbW91bnRlZCBpcyBjYWxsZWQgZm9yIHJlbmRlci1jcmVhdGVkIGNoaWxkIGNvbXBvbmVudHMgaW4gaXRzIGluc2VydGVkIGhvb2tcbiAgaWYgKHZtLiR2bm9kZSA9PSBudWxsKSB7XG4gICAgdm0uX2lzTW91bnRlZCA9IHRydWU7XG4gICAgY2FsbEhvb2sodm0sICdtb3VudGVkJyk7XG4gIH1cbiAgcmV0dXJuIHZtXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUNoaWxkQ29tcG9uZW50IChcbiAgdm0sXG4gIHByb3BzRGF0YSxcbiAgbGlzdGVuZXJzLFxuICBwYXJlbnRWbm9kZSxcbiAgcmVuZGVyQ2hpbGRyZW5cbikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlzVXBkYXRpbmdDaGlsZENvbXBvbmVudCA9IHRydWU7XG4gIH1cblxuICAvLyBkZXRlcm1pbmUgd2hldGhlciBjb21wb25lbnQgaGFzIHNsb3QgY2hpbGRyZW5cbiAgLy8gd2UgbmVlZCB0byBkbyB0aGlzIGJlZm9yZSBvdmVyd3JpdGluZyAkb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW4uXG5cbiAgLy8gY2hlY2sgaWYgdGhlcmUgYXJlIGR5bmFtaWMgc2NvcGVkU2xvdHMgKGhhbmQtd3JpdHRlbiBvciBjb21waWxlZCBidXQgd2l0aFxuICAvLyBkeW5hbWljIHNsb3QgbmFtZXMpLiBTdGF0aWMgc2NvcGVkIHNsb3RzIGNvbXBpbGVkIGZyb20gdGVtcGxhdGUgaGFzIHRoZVxuICAvLyBcIiRzdGFibGVcIiBtYXJrZXIuXG4gIHZhciBuZXdTY29wZWRTbG90cyA9IHBhcmVudFZub2RlLmRhdGEuc2NvcGVkU2xvdHM7XG4gIHZhciBvbGRTY29wZWRTbG90cyA9IHZtLiRzY29wZWRTbG90cztcbiAgdmFyIGhhc0R5bmFtaWNTY29wZWRTbG90ID0gISEoXG4gICAgKG5ld1Njb3BlZFNsb3RzICYmICFuZXdTY29wZWRTbG90cy4kc3RhYmxlKSB8fFxuICAgIChvbGRTY29wZWRTbG90cyAhPT0gZW1wdHlPYmplY3QgJiYgIW9sZFNjb3BlZFNsb3RzLiRzdGFibGUpIHx8XG4gICAgKG5ld1Njb3BlZFNsb3RzICYmIHZtLiRzY29wZWRTbG90cy4ka2V5ICE9PSBuZXdTY29wZWRTbG90cy4ka2V5KVxuICApO1xuXG4gIC8vIEFueSBzdGF0aWMgc2xvdCBjaGlsZHJlbiBmcm9tIHRoZSBwYXJlbnQgbWF5IGhhdmUgY2hhbmdlZCBkdXJpbmcgcGFyZW50J3NcbiAgLy8gdXBkYXRlLiBEeW5hbWljIHNjb3BlZCBzbG90cyBtYXkgYWxzbyBoYXZlIGNoYW5nZWQuIEluIHN1Y2ggY2FzZXMsIGEgZm9yY2VkXG4gIC8vIHVwZGF0ZSBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIGNvcnJlY3RuZXNzLlxuICB2YXIgbmVlZHNGb3JjZVVwZGF0ZSA9ICEhKFxuICAgIHJlbmRlckNoaWxkcmVuIHx8ICAgICAgICAgICAgICAgLy8gaGFzIG5ldyBzdGF0aWMgc2xvdHNcbiAgICB2bS4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW4gfHwgIC8vIGhhcyBvbGQgc3RhdGljIHNsb3RzXG4gICAgaGFzRHluYW1pY1Njb3BlZFNsb3RcbiAgKTtcblxuICB2bS4kb3B0aW9ucy5fcGFyZW50Vm5vZGUgPSBwYXJlbnRWbm9kZTtcbiAgdm0uJHZub2RlID0gcGFyZW50Vm5vZGU7IC8vIHVwZGF0ZSB2bSdzIHBsYWNlaG9sZGVyIG5vZGUgd2l0aG91dCByZS1yZW5kZXJcblxuICBpZiAodm0uX3Zub2RlKSB7IC8vIHVwZGF0ZSBjaGlsZCB0cmVlJ3MgcGFyZW50XG4gICAgdm0uX3Zub2RlLnBhcmVudCA9IHBhcmVudFZub2RlO1xuICB9XG4gIHZtLiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbiA9IHJlbmRlckNoaWxkcmVuO1xuXG4gIC8vIHVwZGF0ZSAkYXR0cnMgYW5kICRsaXN0ZW5lcnMgaGFzaFxuICAvLyB0aGVzZSBhcmUgYWxzbyByZWFjdGl2ZSBzbyB0aGV5IG1heSB0cmlnZ2VyIGNoaWxkIHVwZGF0ZSBpZiB0aGUgY2hpbGRcbiAgLy8gdXNlZCB0aGVtIGR1cmluZyByZW5kZXJcbiAgdm0uJGF0dHJzID0gcGFyZW50Vm5vZGUuZGF0YS5hdHRycyB8fCBlbXB0eU9iamVjdDtcbiAgdm0uJGxpc3RlbmVycyA9IGxpc3RlbmVycyB8fCBlbXB0eU9iamVjdDtcblxuICAvLyB1cGRhdGUgcHJvcHNcbiAgaWYgKHByb3BzRGF0YSAmJiB2bS4kb3B0aW9ucy5wcm9wcykge1xuICAgIHRvZ2dsZU9ic2VydmluZyhmYWxzZSk7XG4gICAgdmFyIHByb3BzID0gdm0uX3Byb3BzO1xuICAgIHZhciBwcm9wS2V5cyA9IHZtLiRvcHRpb25zLl9wcm9wS2V5cyB8fCBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIga2V5ID0gcHJvcEtleXNbaV07XG4gICAgICB2YXIgcHJvcE9wdGlvbnMgPSB2bS4kb3B0aW9ucy5wcm9wczsgLy8gd3RmIGZsb3c/XG4gICAgICBwcm9wc1trZXldID0gdmFsaWRhdGVQcm9wKGtleSwgcHJvcE9wdGlvbnMsIHByb3BzRGF0YSwgdm0pO1xuICAgIH1cbiAgICB0b2dnbGVPYnNlcnZpbmcodHJ1ZSk7XG4gICAgLy8ga2VlcCBhIGNvcHkgb2YgcmF3IHByb3BzRGF0YVxuICAgIHZtLiRvcHRpb25zLnByb3BzRGF0YSA9IHByb3BzRGF0YTtcbiAgfVxuXG4gIC8vIHVwZGF0ZSBsaXN0ZW5lcnNcbiAgbGlzdGVuZXJzID0gbGlzdGVuZXJzIHx8IGVtcHR5T2JqZWN0O1xuICB2YXIgb2xkTGlzdGVuZXJzID0gdm0uJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycztcbiAgdm0uJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycyA9IGxpc3RlbmVycztcbiAgdXBkYXRlQ29tcG9uZW50TGlzdGVuZXJzKHZtLCBsaXN0ZW5lcnMsIG9sZExpc3RlbmVycyk7XG5cbiAgLy8gcmVzb2x2ZSBzbG90cyArIGZvcmNlIHVwZGF0ZSBpZiBoYXMgY2hpbGRyZW5cbiAgaWYgKG5lZWRzRm9yY2VVcGRhdGUpIHtcbiAgICB2bS4kc2xvdHMgPSByZXNvbHZlU2xvdHMocmVuZGVyQ2hpbGRyZW4sIHBhcmVudFZub2RlLmNvbnRleHQpO1xuICAgIHZtLiRmb3JjZVVwZGF0ZSgpO1xuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpc1VwZGF0aW5nQ2hpbGRDb21wb25lbnQgPSBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0luSW5hY3RpdmVUcmVlICh2bSkge1xuICB3aGlsZSAodm0gJiYgKHZtID0gdm0uJHBhcmVudCkpIHtcbiAgICBpZiAodm0uX2luYWN0aXZlKSB7IHJldHVybiB0cnVlIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gYWN0aXZhdGVDaGlsZENvbXBvbmVudCAodm0sIGRpcmVjdCkge1xuICBpZiAoZGlyZWN0KSB7XG4gICAgdm0uX2RpcmVjdEluYWN0aXZlID0gZmFsc2U7XG4gICAgaWYgKGlzSW5JbmFjdGl2ZVRyZWUodm0pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gIH0gZWxzZSBpZiAodm0uX2RpcmVjdEluYWN0aXZlKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKHZtLl9pbmFjdGl2ZSB8fCB2bS5faW5hY3RpdmUgPT09IG51bGwpIHtcbiAgICB2bS5faW5hY3RpdmUgPSBmYWxzZTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZtLiRjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgYWN0aXZhdGVDaGlsZENvbXBvbmVudCh2bS4kY2hpbGRyZW5baV0pO1xuICAgIH1cbiAgICBjYWxsSG9vayh2bSwgJ2FjdGl2YXRlZCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRlYWN0aXZhdGVDaGlsZENvbXBvbmVudCAodm0sIGRpcmVjdCkge1xuICBpZiAoZGlyZWN0KSB7XG4gICAgdm0uX2RpcmVjdEluYWN0aXZlID0gdHJ1ZTtcbiAgICBpZiAoaXNJbkluYWN0aXZlVHJlZSh2bSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuICBpZiAoIXZtLl9pbmFjdGl2ZSkge1xuICAgIHZtLl9pbmFjdGl2ZSA9IHRydWU7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2bS4kY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlYWN0aXZhdGVDaGlsZENvbXBvbmVudCh2bS4kY2hpbGRyZW5baV0pO1xuICAgIH1cbiAgICBjYWxsSG9vayh2bSwgJ2RlYWN0aXZhdGVkJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsbEhvb2sgKHZtLCBob29rKSB7XG4gIC8vICM3NTczIGRpc2FibGUgZGVwIGNvbGxlY3Rpb24gd2hlbiBpbnZva2luZyBsaWZlY3ljbGUgaG9va3NcbiAgcHVzaFRhcmdldCgpO1xuICB2YXIgaGFuZGxlcnMgPSB2bS4kb3B0aW9uc1tob29rXTtcbiAgdmFyIGluZm8gPSBob29rICsgXCIgaG9va1wiO1xuICBpZiAoaGFuZGxlcnMpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgaiA9IGhhbmRsZXJzLmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgaW52b2tlV2l0aEVycm9ySGFuZGxpbmcoaGFuZGxlcnNbaV0sIHZtLCBudWxsLCB2bSwgaW5mbyk7XG4gICAgfVxuICB9XG4gIGlmICh2bS5faGFzSG9va0V2ZW50KSB7XG4gICAgdm0uJGVtaXQoJ2hvb2s6JyArIGhvb2spO1xuICB9XG4gIHBvcFRhcmdldCgpO1xufVxuXG4vKiAgKi9cblxudmFyIE1BWF9VUERBVEVfQ09VTlQgPSAxMDA7XG5cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGFjdGl2YXRlZENoaWxkcmVuID0gW107XG52YXIgaGFzID0ge307XG52YXIgY2lyY3VsYXIgPSB7fTtcbnZhciB3YWl0aW5nID0gZmFsc2U7XG52YXIgZmx1c2hpbmcgPSBmYWxzZTtcbnZhciBpbmRleCA9IDA7XG5cbi8qKlxuICogUmVzZXQgdGhlIHNjaGVkdWxlcidzIHN0YXRlLlxuICovXG5mdW5jdGlvbiByZXNldFNjaGVkdWxlclN0YXRlICgpIHtcbiAgaW5kZXggPSBxdWV1ZS5sZW5ndGggPSBhY3RpdmF0ZWRDaGlsZHJlbi5sZW5ndGggPSAwO1xuICBoYXMgPSB7fTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjaXJjdWxhciA9IHt9O1xuICB9XG4gIHdhaXRpbmcgPSBmbHVzaGluZyA9IGZhbHNlO1xufVxuXG4vLyBBc3luYyBlZGdlIGNhc2UgIzY1NjYgcmVxdWlyZXMgc2F2aW5nIHRoZSB0aW1lc3RhbXAgd2hlbiBldmVudCBsaXN0ZW5lcnMgYXJlXG4vLyBhdHRhY2hlZC4gSG93ZXZlciwgY2FsbGluZyBwZXJmb3JtYW5jZS5ub3coKSBoYXMgYSBwZXJmIG92ZXJoZWFkIGVzcGVjaWFsbHlcbi8vIGlmIHRoZSBwYWdlIGhhcyB0aG91c2FuZHMgb2YgZXZlbnQgbGlzdGVuZXJzLiBJbnN0ZWFkLCB3ZSB0YWtlIGEgdGltZXN0YW1wXG4vLyBldmVyeSB0aW1lIHRoZSBzY2hlZHVsZXIgZmx1c2hlcyBhbmQgdXNlIHRoYXQgZm9yIGFsbCBldmVudCBsaXN0ZW5lcnNcbi8vIGF0dGFjaGVkIGR1cmluZyB0aGF0IGZsdXNoLlxudmFyIGN1cnJlbnRGbHVzaFRpbWVzdGFtcCA9IDA7XG5cbi8vIEFzeW5jIGVkZ2UgY2FzZSBmaXggcmVxdWlyZXMgc3RvcmluZyBhbiBldmVudCBsaXN0ZW5lcidzIGF0dGFjaCB0aW1lc3RhbXAuXG52YXIgZ2V0Tm93ID0gRGF0ZS5ub3c7XG5cbi8vIERldGVybWluZSB3aGF0IGV2ZW50IHRpbWVzdGFtcCB0aGUgYnJvd3NlciBpcyB1c2luZy4gQW5ub3lpbmdseSwgdGhlXG4vLyB0aW1lc3RhbXAgY2FuIGVpdGhlciBiZSBoaS1yZXMgKHJlbGF0aXZlIHRvIHBhZ2UgbG9hZCkgb3IgbG93LXJlc1xuLy8gKHJlbGF0aXZlIHRvIFVOSVggZXBvY2gpLCBzbyBpbiBvcmRlciB0byBjb21wYXJlIHRpbWUgd2UgaGF2ZSB0byB1c2UgdGhlXG4vLyBzYW1lIHRpbWVzdGFtcCB0eXBlIHdoZW4gc2F2aW5nIHRoZSBmbHVzaCB0aW1lc3RhbXAuXG4vLyBBbGwgSUUgdmVyc2lvbnMgdXNlIGxvdy1yZXMgZXZlbnQgdGltZXN0YW1wcywgYW5kIGhhdmUgcHJvYmxlbWF0aWMgY2xvY2tcbi8vIGltcGxlbWVudGF0aW9ucyAoIzk2MzIpXG5pZiAoaW5Ccm93c2VyICYmICFpc0lFKSB7XG4gIHZhciBwZXJmb3JtYW5jZSA9IHdpbmRvdy5wZXJmb3JtYW5jZTtcbiAgaWYgKFxuICAgIHBlcmZvcm1hbmNlICYmXG4gICAgdHlwZW9mIHBlcmZvcm1hbmNlLm5vdyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIGdldE5vdygpID4gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50JykudGltZVN0YW1wXG4gICkge1xuICAgIC8vIGlmIHRoZSBldmVudCB0aW1lc3RhbXAsIGFsdGhvdWdoIGV2YWx1YXRlZCBBRlRFUiB0aGUgRGF0ZS5ub3coKSwgaXNcbiAgICAvLyBzbWFsbGVyIHRoYW4gaXQsIGl0IG1lYW5zIHRoZSBldmVudCBpcyB1c2luZyBhIGhpLXJlcyB0aW1lc3RhbXAsXG4gICAgLy8gYW5kIHdlIG5lZWQgdG8gdXNlIHRoZSBoaS1yZXMgdmVyc2lvbiBmb3IgZXZlbnQgbGlzdGVuZXIgdGltZXN0YW1wcyBhc1xuICAgIC8vIHdlbGwuXG4gICAgZ2V0Tm93ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcGVyZm9ybWFuY2Uubm93KCk7IH07XG4gIH1cbn1cblxuLyoqXG4gKiBGbHVzaCBib3RoIHF1ZXVlcyBhbmQgcnVuIHRoZSB3YXRjaGVycy5cbiAqL1xuZnVuY3Rpb24gZmx1c2hTY2hlZHVsZXJRdWV1ZSAoKSB7XG4gIGN1cnJlbnRGbHVzaFRpbWVzdGFtcCA9IGdldE5vdygpO1xuICBmbHVzaGluZyA9IHRydWU7XG4gIHZhciB3YXRjaGVyLCBpZDtcblxuICAvLyBTb3J0IHF1ZXVlIGJlZm9yZSBmbHVzaC5cbiAgLy8gVGhpcyBlbnN1cmVzIHRoYXQ6XG4gIC8vIDEuIENvbXBvbmVudHMgYXJlIHVwZGF0ZWQgZnJvbSBwYXJlbnQgdG8gY2hpbGQuIChiZWNhdXNlIHBhcmVudCBpcyBhbHdheXNcbiAgLy8gICAgY3JlYXRlZCBiZWZvcmUgdGhlIGNoaWxkKVxuICAvLyAyLiBBIGNvbXBvbmVudCdzIHVzZXIgd2F0Y2hlcnMgYXJlIHJ1biBiZWZvcmUgaXRzIHJlbmRlciB3YXRjaGVyIChiZWNhdXNlXG4gIC8vICAgIHVzZXIgd2F0Y2hlcnMgYXJlIGNyZWF0ZWQgYmVmb3JlIHRoZSByZW5kZXIgd2F0Y2hlcilcbiAgLy8gMy4gSWYgYSBjb21wb25lbnQgaXMgZGVzdHJveWVkIGR1cmluZyBhIHBhcmVudCBjb21wb25lbnQncyB3YXRjaGVyIHJ1bixcbiAgLy8gICAgaXRzIHdhdGNoZXJzIGNhbiBiZSBza2lwcGVkLlxuICBxdWV1ZS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLmlkIC0gYi5pZDsgfSk7XG5cbiAgLy8gZG8gbm90IGNhY2hlIGxlbmd0aCBiZWNhdXNlIG1vcmUgd2F0Y2hlcnMgbWlnaHQgYmUgcHVzaGVkXG4gIC8vIGFzIHdlIHJ1biBleGlzdGluZyB3YXRjaGVyc1xuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBxdWV1ZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICB3YXRjaGVyID0gcXVldWVbaW5kZXhdO1xuICAgIGlmICh3YXRjaGVyLmJlZm9yZSkge1xuICAgICAgd2F0Y2hlci5iZWZvcmUoKTtcbiAgICB9XG4gICAgaWQgPSB3YXRjaGVyLmlkO1xuICAgIGhhc1tpZF0gPSBudWxsO1xuICAgIHdhdGNoZXIucnVuKCk7XG4gICAgLy8gaW4gZGV2IGJ1aWxkLCBjaGVjayBhbmQgc3RvcCBjaXJjdWxhciB1cGRhdGVzLlxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGhhc1tpZF0gIT0gbnVsbCkge1xuICAgICAgY2lyY3VsYXJbaWRdID0gKGNpcmN1bGFyW2lkXSB8fCAwKSArIDE7XG4gICAgICBpZiAoY2lyY3VsYXJbaWRdID4gTUFYX1VQREFURV9DT1VOVCkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdZb3UgbWF5IGhhdmUgYW4gaW5maW5pdGUgdXBkYXRlIGxvb3AgJyArIChcbiAgICAgICAgICAgIHdhdGNoZXIudXNlclxuICAgICAgICAgICAgICA/IChcImluIHdhdGNoZXIgd2l0aCBleHByZXNzaW9uIFxcXCJcIiArICh3YXRjaGVyLmV4cHJlc3Npb24pICsgXCJcXFwiXCIpXG4gICAgICAgICAgICAgIDogXCJpbiBhIGNvbXBvbmVudCByZW5kZXIgZnVuY3Rpb24uXCJcbiAgICAgICAgICApLFxuICAgICAgICAgIHdhdGNoZXIudm1cbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBrZWVwIGNvcGllcyBvZiBwb3N0IHF1ZXVlcyBiZWZvcmUgcmVzZXR0aW5nIHN0YXRlXG4gIHZhciBhY3RpdmF0ZWRRdWV1ZSA9IGFjdGl2YXRlZENoaWxkcmVuLnNsaWNlKCk7XG4gIHZhciB1cGRhdGVkUXVldWUgPSBxdWV1ZS5zbGljZSgpO1xuXG4gIHJlc2V0U2NoZWR1bGVyU3RhdGUoKTtcblxuICAvLyBjYWxsIGNvbXBvbmVudCB1cGRhdGVkIGFuZCBhY3RpdmF0ZWQgaG9va3NcbiAgY2FsbEFjdGl2YXRlZEhvb2tzKGFjdGl2YXRlZFF1ZXVlKTtcbiAgY2FsbFVwZGF0ZWRIb29rcyh1cGRhdGVkUXVldWUpO1xuXG4gIC8vIGRldnRvb2wgaG9va1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGRldnRvb2xzICYmIGNvbmZpZy5kZXZ0b29scykge1xuICAgIGRldnRvb2xzLmVtaXQoJ2ZsdXNoJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsbFVwZGF0ZWRIb29rcyAocXVldWUpIHtcbiAgdmFyIGkgPSBxdWV1ZS5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICB2YXIgd2F0Y2hlciA9IHF1ZXVlW2ldO1xuICAgIHZhciB2bSA9IHdhdGNoZXIudm07XG4gICAgaWYgKHZtLl93YXRjaGVyID09PSB3YXRjaGVyICYmIHZtLl9pc01vdW50ZWQgJiYgIXZtLl9pc0Rlc3Ryb3llZCkge1xuICAgICAgY2FsbEhvb2sodm0sICd1cGRhdGVkJyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUXVldWUgYSBrZXB0LWFsaXZlIGNvbXBvbmVudCB0aGF0IHdhcyBhY3RpdmF0ZWQgZHVyaW5nIHBhdGNoLlxuICogVGhlIHF1ZXVlIHdpbGwgYmUgcHJvY2Vzc2VkIGFmdGVyIHRoZSBlbnRpcmUgdHJlZSBoYXMgYmVlbiBwYXRjaGVkLlxuICovXG5mdW5jdGlvbiBxdWV1ZUFjdGl2YXRlZENvbXBvbmVudCAodm0pIHtcbiAgLy8gc2V0dGluZyBfaW5hY3RpdmUgdG8gZmFsc2UgaGVyZSBzbyB0aGF0IGEgcmVuZGVyIGZ1bmN0aW9uIGNhblxuICAvLyByZWx5IG9uIGNoZWNraW5nIHdoZXRoZXIgaXQncyBpbiBhbiBpbmFjdGl2ZSB0cmVlIChlLmcuIHJvdXRlci12aWV3KVxuICB2bS5faW5hY3RpdmUgPSBmYWxzZTtcbiAgYWN0aXZhdGVkQ2hpbGRyZW4ucHVzaCh2bSk7XG59XG5cbmZ1bmN0aW9uIGNhbGxBY3RpdmF0ZWRIb29rcyAocXVldWUpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xuICAgIHF1ZXVlW2ldLl9pbmFjdGl2ZSA9IHRydWU7XG4gICAgYWN0aXZhdGVDaGlsZENvbXBvbmVudChxdWV1ZVtpXSwgdHJ1ZSAvKiB0cnVlICovKTtcbiAgfVxufVxuXG4vKipcbiAqIFB1c2ggYSB3YXRjaGVyIGludG8gdGhlIHdhdGNoZXIgcXVldWUuXG4gKiBKb2JzIHdpdGggZHVwbGljYXRlIElEcyB3aWxsIGJlIHNraXBwZWQgdW5sZXNzIGl0J3NcbiAqIHB1c2hlZCB3aGVuIHRoZSBxdWV1ZSBpcyBiZWluZyBmbHVzaGVkLlxuICovXG5mdW5jdGlvbiBxdWV1ZVdhdGNoZXIgKHdhdGNoZXIpIHtcbiAgdmFyIGlkID0gd2F0Y2hlci5pZDtcbiAgaWYgKGhhc1tpZF0gPT0gbnVsbCkge1xuICAgIGhhc1tpZF0gPSB0cnVlO1xuICAgIGlmICghZmx1c2hpbmcpIHtcbiAgICAgIHF1ZXVlLnB1c2god2F0Y2hlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGlmIGFscmVhZHkgZmx1c2hpbmcsIHNwbGljZSB0aGUgd2F0Y2hlciBiYXNlZCBvbiBpdHMgaWRcbiAgICAgIC8vIGlmIGFscmVhZHkgcGFzdCBpdHMgaWQsIGl0IHdpbGwgYmUgcnVuIG5leHQgaW1tZWRpYXRlbHkuXG4gICAgICB2YXIgaSA9IHF1ZXVlLmxlbmd0aCAtIDE7XG4gICAgICB3aGlsZSAoaSA+IGluZGV4ICYmIHF1ZXVlW2ldLmlkID4gd2F0Y2hlci5pZCkge1xuICAgICAgICBpLS07XG4gICAgICB9XG4gICAgICBxdWV1ZS5zcGxpY2UoaSArIDEsIDAsIHdhdGNoZXIpO1xuICAgIH1cbiAgICAvLyBxdWV1ZSB0aGUgZmx1c2hcbiAgICBpZiAoIXdhaXRpbmcpIHtcbiAgICAgIHdhaXRpbmcgPSB0cnVlO1xuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhY29uZmlnLmFzeW5jKSB7XG4gICAgICAgIGZsdXNoU2NoZWR1bGVyUXVldWUoKTtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBuZXh0VGljayhmbHVzaFNjaGVkdWxlclF1ZXVlKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cblxuXG52YXIgdWlkJDIgPSAwO1xuXG4vKipcbiAqIEEgd2F0Y2hlciBwYXJzZXMgYW4gZXhwcmVzc2lvbiwgY29sbGVjdHMgZGVwZW5kZW5jaWVzLFxuICogYW5kIGZpcmVzIGNhbGxiYWNrIHdoZW4gdGhlIGV4cHJlc3Npb24gdmFsdWUgY2hhbmdlcy5cbiAqIFRoaXMgaXMgdXNlZCBmb3IgYm90aCB0aGUgJHdhdGNoKCkgYXBpIGFuZCBkaXJlY3RpdmVzLlxuICovXG52YXIgV2F0Y2hlciA9IGZ1bmN0aW9uIFdhdGNoZXIgKFxuICB2bSxcbiAgZXhwT3JGbixcbiAgY2IsXG4gIG9wdGlvbnMsXG4gIGlzUmVuZGVyV2F0Y2hlclxuKSB7XG4gIHRoaXMudm0gPSB2bTtcbiAgaWYgKGlzUmVuZGVyV2F0Y2hlcikge1xuICAgIHZtLl93YXRjaGVyID0gdGhpcztcbiAgfVxuICB2bS5fd2F0Y2hlcnMucHVzaCh0aGlzKTtcbiAgLy8gb3B0aW9uc1xuICBpZiAob3B0aW9ucykge1xuICAgIHRoaXMuZGVlcCA9ICEhb3B0aW9ucy5kZWVwO1xuICAgIHRoaXMudXNlciA9ICEhb3B0aW9ucy51c2VyO1xuICAgIHRoaXMubGF6eSA9ICEhb3B0aW9ucy5sYXp5O1xuICAgIHRoaXMuc3luYyA9ICEhb3B0aW9ucy5zeW5jO1xuICAgIHRoaXMuYmVmb3JlID0gb3B0aW9ucy5iZWZvcmU7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5kZWVwID0gdGhpcy51c2VyID0gdGhpcy5sYXp5ID0gdGhpcy5zeW5jID0gZmFsc2U7XG4gIH1cbiAgdGhpcy5jYiA9IGNiO1xuICB0aGlzLmlkID0gKyt1aWQkMjsgLy8gdWlkIGZvciBiYXRjaGluZ1xuICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gIHRoaXMuZGlydHkgPSB0aGlzLmxhenk7IC8vIGZvciBsYXp5IHdhdGNoZXJzXG4gIHRoaXMuZGVwcyA9IFtdO1xuICB0aGlzLm5ld0RlcHMgPSBbXTtcbiAgdGhpcy5kZXBJZHMgPSBuZXcgX1NldCgpO1xuICB0aGlzLm5ld0RlcElkcyA9IG5ldyBfU2V0KCk7XG4gIHRoaXMuZXhwcmVzc2lvbiA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbidcbiAgICA/IGV4cE9yRm4udG9TdHJpbmcoKVxuICAgIDogJyc7XG4gIC8vIHBhcnNlIGV4cHJlc3Npb24gZm9yIGdldHRlclxuICBpZiAodHlwZW9mIGV4cE9yRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICB0aGlzLmdldHRlciA9IGV4cE9yRm47XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5nZXR0ZXIgPSBwYXJzZVBhdGgoZXhwT3JGbik7XG4gICAgaWYgKCF0aGlzLmdldHRlcikge1xuICAgICAgdGhpcy5nZXR0ZXIgPSBub29wO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIkZhaWxlZCB3YXRjaGluZyBwYXRoOiBcXFwiXCIgKyBleHBPckZuICsgXCJcXFwiIFwiICtcbiAgICAgICAgJ1dhdGNoZXIgb25seSBhY2NlcHRzIHNpbXBsZSBkb3QtZGVsaW1pdGVkIHBhdGhzLiAnICtcbiAgICAgICAgJ0ZvciBmdWxsIGNvbnRyb2wsIHVzZSBhIGZ1bmN0aW9uIGluc3RlYWQuJyxcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHRoaXMudmFsdWUgPSB0aGlzLmxhenlcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogdGhpcy5nZXQoKTtcbn07XG5cbi8qKlxuICogRXZhbHVhdGUgdGhlIGdldHRlciwgYW5kIHJlLWNvbGxlY3QgZGVwZW5kZW5jaWVzLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiBnZXQgKCkge1xuICBwdXNoVGFyZ2V0KHRoaXMpO1xuICB2YXIgdmFsdWU7XG4gIHZhciB2bSA9IHRoaXMudm07XG4gIHRyeSB7XG4gICAgdmFsdWUgPSB0aGlzLmdldHRlci5jYWxsKHZtLCB2bSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAodGhpcy51c2VyKSB7XG4gICAgICBoYW5kbGVFcnJvcihlLCB2bSwgKFwiZ2V0dGVyIGZvciB3YXRjaGVyIFxcXCJcIiArICh0aGlzLmV4cHJlc3Npb24pICsgXCJcXFwiXCIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBcInRvdWNoXCIgZXZlcnkgcHJvcGVydHkgc28gdGhleSBhcmUgYWxsIHRyYWNrZWQgYXNcbiAgICAvLyBkZXBlbmRlbmNpZXMgZm9yIGRlZXAgd2F0Y2hpbmdcbiAgICBpZiAodGhpcy5kZWVwKSB7XG4gICAgICB0cmF2ZXJzZSh2YWx1ZSk7XG4gICAgfVxuICAgIHBvcFRhcmdldCgpO1xuICAgIHRoaXMuY2xlYW51cERlcHMoKTtcbiAgfVxuICByZXR1cm4gdmFsdWVcbn07XG5cbi8qKlxuICogQWRkIGEgZGVwZW5kZW5jeSB0byB0aGlzIGRpcmVjdGl2ZS5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuYWRkRGVwID0gZnVuY3Rpb24gYWRkRGVwIChkZXApIHtcbiAgdmFyIGlkID0gZGVwLmlkO1xuICBpZiAoIXRoaXMubmV3RGVwSWRzLmhhcyhpZCkpIHtcbiAgICB0aGlzLm5ld0RlcElkcy5hZGQoaWQpO1xuICAgIHRoaXMubmV3RGVwcy5wdXNoKGRlcCk7XG4gICAgaWYgKCF0aGlzLmRlcElkcy5oYXMoaWQpKSB7XG4gICAgICBkZXAuYWRkU3ViKHRoaXMpO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBDbGVhbiB1cCBmb3IgZGVwZW5kZW5jeSBjb2xsZWN0aW9uLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5jbGVhbnVwRGVwcyA9IGZ1bmN0aW9uIGNsZWFudXBEZXBzICgpIHtcbiAgdmFyIGkgPSB0aGlzLmRlcHMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgdmFyIGRlcCA9IHRoaXMuZGVwc1tpXTtcbiAgICBpZiAoIXRoaXMubmV3RGVwSWRzLmhhcyhkZXAuaWQpKSB7XG4gICAgICBkZXAucmVtb3ZlU3ViKHRoaXMpO1xuICAgIH1cbiAgfVxuICB2YXIgdG1wID0gdGhpcy5kZXBJZHM7XG4gIHRoaXMuZGVwSWRzID0gdGhpcy5uZXdEZXBJZHM7XG4gIHRoaXMubmV3RGVwSWRzID0gdG1wO1xuICB0aGlzLm5ld0RlcElkcy5jbGVhcigpO1xuICB0bXAgPSB0aGlzLmRlcHM7XG4gIHRoaXMuZGVwcyA9IHRoaXMubmV3RGVwcztcbiAgdGhpcy5uZXdEZXBzID0gdG1wO1xuICB0aGlzLm5ld0RlcHMubGVuZ3RoID0gMDtcbn07XG5cbi8qKlxuICogU3Vic2NyaWJlciBpbnRlcmZhY2UuXG4gKiBXaWxsIGJlIGNhbGxlZCB3aGVuIGEgZGVwZW5kZW5jeSBjaGFuZ2VzLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKCkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAodGhpcy5sYXp5KSB7XG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XG4gIH0gZWxzZSBpZiAodGhpcy5zeW5jKSB7XG4gICAgdGhpcy5ydW4oKTtcbiAgfSBlbHNlIHtcbiAgICBxdWV1ZVdhdGNoZXIodGhpcyk7XG4gIH1cbn07XG5cbi8qKlxuICogU2NoZWR1bGVyIGpvYiBpbnRlcmZhY2UuXG4gKiBXaWxsIGJlIGNhbGxlZCBieSB0aGUgc2NoZWR1bGVyLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiBydW4gKCkge1xuICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICB2YXIgdmFsdWUgPSB0aGlzLmdldCgpO1xuICAgIGlmIChcbiAgICAgIHZhbHVlICE9PSB0aGlzLnZhbHVlIHx8XG4gICAgICAvLyBEZWVwIHdhdGNoZXJzIGFuZCB3YXRjaGVycyBvbiBPYmplY3QvQXJyYXlzIHNob3VsZCBmaXJlIGV2ZW5cbiAgICAgIC8vIHdoZW4gdGhlIHZhbHVlIGlzIHRoZSBzYW1lLCBiZWNhdXNlIHRoZSB2YWx1ZSBtYXlcbiAgICAgIC8vIGhhdmUgbXV0YXRlZC5cbiAgICAgIGlzT2JqZWN0KHZhbHVlKSB8fFxuICAgICAgdGhpcy5kZWVwXG4gICAgKSB7XG4gICAgICAvLyBzZXQgbmV3IHZhbHVlXG4gICAgICB2YXIgb2xkVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgaWYgKHRoaXMudXNlcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuY2IuY2FsbCh0aGlzLnZtLCB2YWx1ZSwgb2xkVmFsdWUpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaGFuZGxlRXJyb3IoZSwgdGhpcy52bSwgKFwiY2FsbGJhY2sgZm9yIHdhdGNoZXIgXFxcIlwiICsgKHRoaXMuZXhwcmVzc2lvbikgKyBcIlxcXCJcIikpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNiLmNhbGwodGhpcy52bSwgdmFsdWUsIG9sZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogRXZhbHVhdGUgdGhlIHZhbHVlIG9mIHRoZSB3YXRjaGVyLlxuICogVGhpcyBvbmx5IGdldHMgY2FsbGVkIGZvciBsYXp5IHdhdGNoZXJzLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5ldmFsdWF0ZSA9IGZ1bmN0aW9uIGV2YWx1YXRlICgpIHtcbiAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0KCk7XG4gIHRoaXMuZGlydHkgPSBmYWxzZTtcbn07XG5cbi8qKlxuICogRGVwZW5kIG9uIGFsbCBkZXBzIGNvbGxlY3RlZCBieSB0aGlzIHdhdGNoZXIuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLmRlcGVuZCA9IGZ1bmN0aW9uIGRlcGVuZCAoKSB7XG4gIHZhciBpID0gdGhpcy5kZXBzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIHRoaXMuZGVwc1tpXS5kZXBlbmQoKTtcbiAgfVxufTtcblxuLyoqXG4gKiBSZW1vdmUgc2VsZiBmcm9tIGFsbCBkZXBlbmRlbmNpZXMnIHN1YnNjcmliZXIgbGlzdC5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUudGVhcmRvd24gPSBmdW5jdGlvbiB0ZWFyZG93biAoKSB7XG4gIGlmICh0aGlzLmFjdGl2ZSkge1xuICAgIC8vIHJlbW92ZSBzZWxmIGZyb20gdm0ncyB3YXRjaGVyIGxpc3RcbiAgICAvLyB0aGlzIGlzIGEgc29tZXdoYXQgZXhwZW5zaXZlIG9wZXJhdGlvbiBzbyB3ZSBza2lwIGl0XG4gICAgLy8gaWYgdGhlIHZtIGlzIGJlaW5nIGRlc3Ryb3llZC5cbiAgICBpZiAoIXRoaXMudm0uX2lzQmVpbmdEZXN0cm95ZWQpIHtcbiAgICAgIHJlbW92ZSh0aGlzLnZtLl93YXRjaGVycywgdGhpcyk7XG4gICAgfVxuICAgIHZhciBpID0gdGhpcy5kZXBzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB0aGlzLmRlcHNbaV0ucmVtb3ZlU3ViKHRoaXMpO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICB9XG59O1xuXG4vKiAgKi9cblxudmFyIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbiA9IHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBnZXQ6IG5vb3AsXG4gIHNldDogbm9vcFxufTtcblxuZnVuY3Rpb24gcHJveHkgKHRhcmdldCwgc291cmNlS2V5LCBrZXkpIHtcbiAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLmdldCA9IGZ1bmN0aW9uIHByb3h5R2V0dGVyICgpIHtcbiAgICByZXR1cm4gdGhpc1tzb3VyY2VLZXldW2tleV1cbiAgfTtcbiAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLnNldCA9IGZ1bmN0aW9uIHByb3h5U2V0dGVyICh2YWwpIHtcbiAgICB0aGlzW3NvdXJjZUtleV1ba2V5XSA9IHZhbDtcbiAgfTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24pO1xufVxuXG5mdW5jdGlvbiBpbml0U3RhdGUgKHZtKSB7XG4gIHZtLl93YXRjaGVycyA9IFtdO1xuICB2YXIgb3B0cyA9IHZtLiRvcHRpb25zO1xuICBpZiAob3B0cy5wcm9wcykgeyBpbml0UHJvcHModm0sIG9wdHMucHJvcHMpOyB9XG4gIGlmIChvcHRzLm1ldGhvZHMpIHsgaW5pdE1ldGhvZHModm0sIG9wdHMubWV0aG9kcyk7IH1cbiAgaWYgKG9wdHMuZGF0YSkge1xuICAgIGluaXREYXRhKHZtKTtcbiAgfSBlbHNlIHtcbiAgICBvYnNlcnZlKHZtLl9kYXRhID0ge30sIHRydWUgLyogYXNSb290RGF0YSAqLyk7XG4gIH1cbiAgaWYgKG9wdHMuY29tcHV0ZWQpIHsgaW5pdENvbXB1dGVkKHZtLCBvcHRzLmNvbXB1dGVkKTsgfVxuICBpZiAob3B0cy53YXRjaCAmJiBvcHRzLndhdGNoICE9PSBuYXRpdmVXYXRjaCkge1xuICAgIGluaXRXYXRjaCh2bSwgb3B0cy53YXRjaCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdFByb3BzICh2bSwgcHJvcHNPcHRpb25zKSB7XG4gIHZhciBwcm9wc0RhdGEgPSB2bS4kb3B0aW9ucy5wcm9wc0RhdGEgfHwge307XG4gIHZhciBwcm9wcyA9IHZtLl9wcm9wcyA9IHt9O1xuICAvLyBjYWNoZSBwcm9wIGtleXMgc28gdGhhdCBmdXR1cmUgcHJvcHMgdXBkYXRlcyBjYW4gaXRlcmF0ZSB1c2luZyBBcnJheVxuICAvLyBpbnN0ZWFkIG9mIGR5bmFtaWMgb2JqZWN0IGtleSBlbnVtZXJhdGlvbi5cbiAgdmFyIGtleXMgPSB2bS4kb3B0aW9ucy5fcHJvcEtleXMgPSBbXTtcbiAgdmFyIGlzUm9vdCA9ICF2bS4kcGFyZW50O1xuICAvLyByb290IGluc3RhbmNlIHByb3BzIHNob3VsZCBiZSBjb252ZXJ0ZWRcbiAgaWYgKCFpc1Jvb3QpIHtcbiAgICB0b2dnbGVPYnNlcnZpbmcoZmFsc2UpO1xuICB9XG4gIHZhciBsb29wID0gZnVuY3Rpb24gKCBrZXkgKSB7XG4gICAga2V5cy5wdXNoKGtleSk7XG4gICAgdmFyIHZhbHVlID0gdmFsaWRhdGVQcm9wKGtleSwgcHJvcHNPcHRpb25zLCBwcm9wc0RhdGEsIHZtKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgaHlwaGVuYXRlZEtleSA9IGh5cGhlbmF0ZShrZXkpO1xuICAgICAgaWYgKGlzUmVzZXJ2ZWRBdHRyaWJ1dGUoaHlwaGVuYXRlZEtleSkgfHxcbiAgICAgICAgICBjb25maWcuaXNSZXNlcnZlZEF0dHIoaHlwaGVuYXRlZEtleSkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAoXCJcXFwiXCIgKyBoeXBoZW5hdGVkS2V5ICsgXCJcXFwiIGlzIGEgcmVzZXJ2ZWQgYXR0cmlidXRlIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBjb21wb25lbnQgcHJvcC5cIiksXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGRlZmluZVJlYWN0aXZlJCQxKHByb3BzLCBrZXksIHZhbHVlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghaXNSb290ICYmICFpc1VwZGF0aW5nQ2hpbGRDb21wb25lbnQpIHtcbiAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgXCJBdm9pZCBtdXRhdGluZyBhIHByb3AgZGlyZWN0bHkgc2luY2UgdGhlIHZhbHVlIHdpbGwgYmUgXCIgK1xuICAgICAgICAgICAgXCJvdmVyd3JpdHRlbiB3aGVuZXZlciB0aGUgcGFyZW50IGNvbXBvbmVudCByZS1yZW5kZXJzLiBcIiArXG4gICAgICAgICAgICBcIkluc3RlYWQsIHVzZSBhIGRhdGEgb3IgY29tcHV0ZWQgcHJvcGVydHkgYmFzZWQgb24gdGhlIHByb3AncyBcIiArXG4gICAgICAgICAgICBcInZhbHVlLiBQcm9wIGJlaW5nIG11dGF0ZWQ6IFxcXCJcIiArIGtleSArIFwiXFxcIlwiLFxuICAgICAgICAgICAgdm1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVmaW5lUmVhY3RpdmUkJDEocHJvcHMsIGtleSwgdmFsdWUpO1xuICAgIH1cbiAgICAvLyBzdGF0aWMgcHJvcHMgYXJlIGFscmVhZHkgcHJveGllZCBvbiB0aGUgY29tcG9uZW50J3MgcHJvdG90eXBlXG4gICAgLy8gZHVyaW5nIFZ1ZS5leHRlbmQoKS4gV2Ugb25seSBuZWVkIHRvIHByb3h5IHByb3BzIGRlZmluZWQgYXRcbiAgICAvLyBpbnN0YW50aWF0aW9uIGhlcmUuXG4gICAgaWYgKCEoa2V5IGluIHZtKSkge1xuICAgICAgcHJveHkodm0sIFwiX3Byb3BzXCIsIGtleSk7XG4gICAgfVxuICB9O1xuXG4gIGZvciAodmFyIGtleSBpbiBwcm9wc09wdGlvbnMpIGxvb3AoIGtleSApO1xuICB0b2dnbGVPYnNlcnZpbmcodHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGluaXREYXRhICh2bSkge1xuICB2YXIgZGF0YSA9IHZtLiRvcHRpb25zLmRhdGE7XG4gIGRhdGEgPSB2bS5fZGF0YSA9IHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nXG4gICAgPyBnZXREYXRhKGRhdGEsIHZtKVxuICAgIDogZGF0YSB8fCB7fTtcbiAgaWYgKCFpc1BsYWluT2JqZWN0KGRhdGEpKSB7XG4gICAgZGF0YSA9IHt9O1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICdkYXRhIGZ1bmN0aW9ucyBzaG91bGQgcmV0dXJuIGFuIG9iamVjdDpcXG4nICtcbiAgICAgICdodHRwczovL3Z1ZWpzLm9yZy92Mi9ndWlkZS9jb21wb25lbnRzLmh0bWwjZGF0YS1NdXN0LUJlLWEtRnVuY3Rpb24nLFxuICAgICAgdm1cbiAgICApO1xuICB9XG4gIC8vIHByb3h5IGRhdGEgb24gaW5zdGFuY2VcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhkYXRhKTtcbiAgdmFyIHByb3BzID0gdm0uJG9wdGlvbnMucHJvcHM7XG4gIHZhciBtZXRob2RzID0gdm0uJG9wdGlvbnMubWV0aG9kcztcbiAgdmFyIGkgPSBrZXlzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAobWV0aG9kcyAmJiBoYXNPd24obWV0aG9kcywga2V5KSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIChcIk1ldGhvZCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaGFzIGFscmVhZHkgYmVlbiBkZWZpbmVkIGFzIGEgZGF0YSBwcm9wZXJ0eS5cIiksXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHByb3BzICYmIGhhc093bihwcm9wcywga2V5KSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIlRoZSBkYXRhIHByb3BlcnR5IFxcXCJcIiArIGtleSArIFwiXFxcIiBpcyBhbHJlYWR5IGRlY2xhcmVkIGFzIGEgcHJvcC4gXCIgK1xuICAgICAgICBcIlVzZSBwcm9wIGRlZmF1bHQgdmFsdWUgaW5zdGVhZC5cIixcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICghaXNSZXNlcnZlZChrZXkpKSB7XG4gICAgICBwcm94eSh2bSwgXCJfZGF0YVwiLCBrZXkpO1xuICAgIH1cbiAgfVxuICAvLyBvYnNlcnZlIGRhdGFcbiAgb2JzZXJ2ZShkYXRhLCB0cnVlIC8qIGFzUm9vdERhdGEgKi8pO1xufVxuXG5mdW5jdGlvbiBnZXREYXRhIChkYXRhLCB2bSkge1xuICAvLyAjNzU3MyBkaXNhYmxlIGRlcCBjb2xsZWN0aW9uIHdoZW4gaW52b2tpbmcgZGF0YSBnZXR0ZXJzXG4gIHB1c2hUYXJnZXQoKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZGF0YS5jYWxsKHZtLCB2bSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGhhbmRsZUVycm9yKGUsIHZtLCBcImRhdGEoKVwiKTtcbiAgICByZXR1cm4ge31cbiAgfSBmaW5hbGx5IHtcbiAgICBwb3BUYXJnZXQoKTtcbiAgfVxufVxuXG52YXIgY29tcHV0ZWRXYXRjaGVyT3B0aW9ucyA9IHsgbGF6eTogdHJ1ZSB9O1xuXG5mdW5jdGlvbiBpbml0Q29tcHV0ZWQgKHZtLCBjb21wdXRlZCkge1xuICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgdmFyIHdhdGNoZXJzID0gdm0uX2NvbXB1dGVkV2F0Y2hlcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAvLyBjb21wdXRlZCBwcm9wZXJ0aWVzIGFyZSBqdXN0IGdldHRlcnMgZHVyaW5nIFNTUlxuICB2YXIgaXNTU1IgPSBpc1NlcnZlclJlbmRlcmluZygpO1xuXG4gIGZvciAodmFyIGtleSBpbiBjb21wdXRlZCkge1xuICAgIHZhciB1c2VyRGVmID0gY29tcHV0ZWRba2V5XTtcbiAgICB2YXIgZ2V0dGVyID0gdHlwZW9mIHVzZXJEZWYgPT09ICdmdW5jdGlvbicgPyB1c2VyRGVmIDogdXNlckRlZi5nZXQ7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZ2V0dGVyID09IG51bGwpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIChcIkdldHRlciBpcyBtaXNzaW5nIGZvciBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIuXCIpLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzU1NSKSB7XG4gICAgICAvLyBjcmVhdGUgaW50ZXJuYWwgd2F0Y2hlciBmb3IgdGhlIGNvbXB1dGVkIHByb3BlcnR5LlxuICAgICAgd2F0Y2hlcnNba2V5XSA9IG5ldyBXYXRjaGVyKFxuICAgICAgICB2bSxcbiAgICAgICAgZ2V0dGVyIHx8IG5vb3AsXG4gICAgICAgIG5vb3AsXG4gICAgICAgIGNvbXB1dGVkV2F0Y2hlck9wdGlvbnNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gY29tcG9uZW50LWRlZmluZWQgY29tcHV0ZWQgcHJvcGVydGllcyBhcmUgYWxyZWFkeSBkZWZpbmVkIG9uIHRoZVxuICAgIC8vIGNvbXBvbmVudCBwcm90b3R5cGUuIFdlIG9ubHkgbmVlZCB0byBkZWZpbmUgY29tcHV0ZWQgcHJvcGVydGllcyBkZWZpbmVkXG4gICAgLy8gYXQgaW5zdGFudGlhdGlvbiBoZXJlLlxuICAgIGlmICghKGtleSBpbiB2bSkpIHtcbiAgICAgIGRlZmluZUNvbXB1dGVkKHZtLCBrZXksIHVzZXJEZWYpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGtleSBpbiB2bS4kZGF0YSkge1xuICAgICAgICB3YXJuKChcIlRoZSBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgYWxyZWFkeSBkZWZpbmVkIGluIGRhdGEuXCIpLCB2bSk7XG4gICAgICB9IGVsc2UgaWYgKHZtLiRvcHRpb25zLnByb3BzICYmIGtleSBpbiB2bS4kb3B0aW9ucy5wcm9wcykge1xuICAgICAgICB3YXJuKChcIlRoZSBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgYWxyZWFkeSBkZWZpbmVkIGFzIGEgcHJvcC5cIiksIHZtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVmaW5lQ29tcHV0ZWQgKFxuICB0YXJnZXQsXG4gIGtleSxcbiAgdXNlckRlZlxuKSB7XG4gIHZhciBzaG91bGRDYWNoZSA9ICFpc1NlcnZlclJlbmRlcmluZygpO1xuICBpZiAodHlwZW9mIHVzZXJEZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uZ2V0ID0gc2hvdWxkQ2FjaGVcbiAgICAgID8gY3JlYXRlQ29tcHV0ZWRHZXR0ZXIoa2V5KVxuICAgICAgOiBjcmVhdGVHZXR0ZXJJbnZva2VyKHVzZXJEZWYpO1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPSBub29wO1xuICB9IGVsc2Uge1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5nZXQgPSB1c2VyRGVmLmdldFxuICAgICAgPyBzaG91bGRDYWNoZSAmJiB1c2VyRGVmLmNhY2hlICE9PSBmYWxzZVxuICAgICAgICA/IGNyZWF0ZUNvbXB1dGVkR2V0dGVyKGtleSlcbiAgICAgICAgOiBjcmVhdGVHZXR0ZXJJbnZva2VyKHVzZXJEZWYuZ2V0KVxuICAgICAgOiBub29wO1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPSB1c2VyRGVmLnNldCB8fCBub29wO1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uc2V0ID09PSBub29wKSB7XG4gICAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLnNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIChcIkNvbXB1dGVkIHByb3BlcnR5IFxcXCJcIiArIGtleSArIFwiXFxcIiB3YXMgYXNzaWduZWQgdG8gYnV0IGl0IGhhcyBubyBzZXR0ZXIuXCIpLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgIH07XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21wdXRlZEdldHRlciAoa2V5KSB7XG4gIHJldHVybiBmdW5jdGlvbiBjb21wdXRlZEdldHRlciAoKSB7XG4gICAgdmFyIHdhdGNoZXIgPSB0aGlzLl9jb21wdXRlZFdhdGNoZXJzICYmIHRoaXMuX2NvbXB1dGVkV2F0Y2hlcnNba2V5XTtcbiAgICBpZiAod2F0Y2hlcikge1xuICAgICAgaWYgKHdhdGNoZXIuZGlydHkpIHtcbiAgICAgICAgd2F0Y2hlci5ldmFsdWF0ZSgpO1xuICAgICAgfVxuICAgICAgaWYgKERlcC50YXJnZXQpIHtcbiAgICAgICAgd2F0Y2hlci5kZXBlbmQoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3YXRjaGVyLnZhbHVlXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUdldHRlckludm9rZXIoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNvbXB1dGVkR2V0dGVyICgpIHtcbiAgICByZXR1cm4gZm4uY2FsbCh0aGlzLCB0aGlzKVxuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRNZXRob2RzICh2bSwgbWV0aG9kcykge1xuICB2YXIgcHJvcHMgPSB2bS4kb3B0aW9ucy5wcm9wcztcbiAgZm9yICh2YXIga2V5IGluIG1ldGhvZHMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKHR5cGVvZiBtZXRob2RzW2tleV0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICBcIk1ldGhvZCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaGFzIHR5cGUgXFxcIlwiICsgKHR5cGVvZiBtZXRob2RzW2tleV0pICsgXCJcXFwiIGluIHRoZSBjb21wb25lbnQgZGVmaW5pdGlvbi4gXCIgK1xuICAgICAgICAgIFwiRGlkIHlvdSByZWZlcmVuY2UgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseT9cIixcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzICYmIGhhc093bihwcm9wcywga2V5KSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIChcIk1ldGhvZCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaGFzIGFscmVhZHkgYmVlbiBkZWZpbmVkIGFzIGEgcHJvcC5cIiksXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmICgoa2V5IGluIHZtKSAmJiBpc1Jlc2VydmVkKGtleSkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICBcIk1ldGhvZCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgY29uZmxpY3RzIHdpdGggYW4gZXhpc3RpbmcgVnVlIGluc3RhbmNlIG1ldGhvZC4gXCIgK1xuICAgICAgICAgIFwiQXZvaWQgZGVmaW5pbmcgY29tcG9uZW50IG1ldGhvZHMgdGhhdCBzdGFydCB3aXRoIF8gb3IgJC5cIlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICB2bVtrZXldID0gdHlwZW9mIG1ldGhvZHNba2V5XSAhPT0gJ2Z1bmN0aW9uJyA/IG5vb3AgOiBiaW5kKG1ldGhvZHNba2V5XSwgdm0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRXYXRjaCAodm0sIHdhdGNoKSB7XG4gIGZvciAodmFyIGtleSBpbiB3YXRjaCkge1xuICAgIHZhciBoYW5kbGVyID0gd2F0Y2hba2V5XTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShoYW5kbGVyKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoYW5kbGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNyZWF0ZVdhdGNoZXIodm0sIGtleSwgaGFuZGxlcltpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNyZWF0ZVdhdGNoZXIodm0sIGtleSwgaGFuZGxlcik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVdhdGNoZXIgKFxuICB2bSxcbiAgZXhwT3JGbixcbiAgaGFuZGxlcixcbiAgb3B0aW9uc1xuKSB7XG4gIGlmIChpc1BsYWluT2JqZWN0KGhhbmRsZXIpKSB7XG4gICAgb3B0aW9ucyA9IGhhbmRsZXI7XG4gICAgaGFuZGxlciA9IGhhbmRsZXIuaGFuZGxlcjtcbiAgfVxuICBpZiAodHlwZW9mIGhhbmRsZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgaGFuZGxlciA9IHZtW2hhbmRsZXJdO1xuICB9XG4gIHJldHVybiB2bS4kd2F0Y2goZXhwT3JGbiwgaGFuZGxlciwgb3B0aW9ucylcbn1cblxuZnVuY3Rpb24gc3RhdGVNaXhpbiAoVnVlKSB7XG4gIC8vIGZsb3cgc29tZWhvdyBoYXMgcHJvYmxlbXMgd2l0aCBkaXJlY3RseSBkZWNsYXJlZCBkZWZpbml0aW9uIG9iamVjdFxuICAvLyB3aGVuIHVzaW5nIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwgc28gd2UgaGF2ZSB0byBwcm9jZWR1cmFsbHkgYnVpbGQgdXBcbiAgLy8gdGhlIG9iamVjdCBoZXJlLlxuICB2YXIgZGF0YURlZiA9IHt9O1xuICBkYXRhRGVmLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX2RhdGEgfTtcbiAgdmFyIHByb3BzRGVmID0ge307XG4gIHByb3BzRGVmLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX3Byb3BzIH07XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgZGF0YURlZi5zZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnQXZvaWQgcmVwbGFjaW5nIGluc3RhbmNlIHJvb3QgJGRhdGEuICcgK1xuICAgICAgICAnVXNlIG5lc3RlZCBkYXRhIHByb3BlcnRpZXMgaW5zdGVhZC4nLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgIH07XG4gICAgcHJvcHNEZWYuc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2FybihcIiRwcm9wcyBpcyByZWFkb25seS5cIiwgdGhpcyk7XG4gICAgfTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLnByb3RvdHlwZSwgJyRkYXRhJywgZGF0YURlZik7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUucHJvdG90eXBlLCAnJHByb3BzJywgcHJvcHNEZWYpO1xuXG4gIFZ1ZS5wcm90b3R5cGUuJHNldCA9IHNldDtcbiAgVnVlLnByb3RvdHlwZS4kZGVsZXRlID0gZGVsO1xuXG4gIFZ1ZS5wcm90b3R5cGUuJHdhdGNoID0gZnVuY3Rpb24gKFxuICAgIGV4cE9yRm4sXG4gICAgY2IsXG4gICAgb3B0aW9uc1xuICApIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmIChpc1BsYWluT2JqZWN0KGNiKSkge1xuICAgICAgcmV0dXJuIGNyZWF0ZVdhdGNoZXIodm0sIGV4cE9yRm4sIGNiLCBvcHRpb25zKVxuICAgIH1cbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICBvcHRpb25zLnVzZXIgPSB0cnVlO1xuICAgIHZhciB3YXRjaGVyID0gbmV3IFdhdGNoZXIodm0sIGV4cE9yRm4sIGNiLCBvcHRpb25zKTtcbiAgICBpZiAob3B0aW9ucy5pbW1lZGlhdGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNiLmNhbGwodm0sIHdhdGNoZXIudmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIHZtLCAoXCJjYWxsYmFjayBmb3IgaW1tZWRpYXRlIHdhdGNoZXIgXFxcIlwiICsgKHdhdGNoZXIuZXhwcmVzc2lvbikgKyBcIlxcXCJcIikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rpb24gdW53YXRjaEZuICgpIHtcbiAgICAgIHdhdGNoZXIudGVhcmRvd24oKTtcbiAgICB9XG4gIH07XG59XG5cbi8qICAqL1xuXG52YXIgdWlkJDMgPSAwO1xuXG5mdW5jdGlvbiBpbml0TWl4aW4gKFZ1ZSkge1xuICBWdWUucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIC8vIGEgdWlkXG4gICAgdm0uX3VpZCA9IHVpZCQzKys7XG5cbiAgICB2YXIgc3RhcnRUYWcsIGVuZFRhZztcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjb25maWcucGVyZm9ybWFuY2UgJiYgbWFyaykge1xuICAgICAgc3RhcnRUYWcgPSBcInZ1ZS1wZXJmLXN0YXJ0OlwiICsgKHZtLl91aWQpO1xuICAgICAgZW5kVGFnID0gXCJ2dWUtcGVyZi1lbmQ6XCIgKyAodm0uX3VpZCk7XG4gICAgICBtYXJrKHN0YXJ0VGFnKTtcbiAgICB9XG5cbiAgICAvLyBhIGZsYWcgdG8gYXZvaWQgdGhpcyBiZWluZyBvYnNlcnZlZFxuICAgIHZtLl9pc1Z1ZSA9IHRydWU7XG4gICAgLy8gbWVyZ2Ugb3B0aW9uc1xuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuX2lzQ29tcG9uZW50KSB7XG4gICAgICAvLyBvcHRpbWl6ZSBpbnRlcm5hbCBjb21wb25lbnQgaW5zdGFudGlhdGlvblxuICAgICAgLy8gc2luY2UgZHluYW1pYyBvcHRpb25zIG1lcmdpbmcgaXMgcHJldHR5IHNsb3csIGFuZCBub25lIG9mIHRoZVxuICAgICAgLy8gaW50ZXJuYWwgY29tcG9uZW50IG9wdGlvbnMgbmVlZHMgc3BlY2lhbCB0cmVhdG1lbnQuXG4gICAgICBpbml0SW50ZXJuYWxDb21wb25lbnQodm0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bS4kb3B0aW9ucyA9IG1lcmdlT3B0aW9ucyhcbiAgICAgICAgcmVzb2x2ZUNvbnN0cnVjdG9yT3B0aW9ucyh2bS5jb25zdHJ1Y3RvciksXG4gICAgICAgIG9wdGlvbnMgfHwge30sXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpbml0UHJveHkodm0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bS5fcmVuZGVyUHJveHkgPSB2bTtcbiAgICB9XG4gICAgLy8gZXhwb3NlIHJlYWwgc2VsZlxuICAgIHZtLl9zZWxmID0gdm07XG4gICAgaW5pdExpZmVjeWNsZSh2bSk7XG4gICAgaW5pdEV2ZW50cyh2bSk7XG4gICAgaW5pdFJlbmRlcih2bSk7XG4gICAgY2FsbEhvb2sodm0sICdiZWZvcmVDcmVhdGUnKTtcbiAgICBpbml0SW5qZWN0aW9ucyh2bSk7IC8vIHJlc29sdmUgaW5qZWN0aW9ucyBiZWZvcmUgZGF0YS9wcm9wc1xuICAgIGluaXRTdGF0ZSh2bSk7XG4gICAgaW5pdFByb3ZpZGUodm0pOyAvLyByZXNvbHZlIHByb3ZpZGUgYWZ0ZXIgZGF0YS9wcm9wc1xuICAgIGNhbGxIb29rKHZtLCAnY3JlYXRlZCcpO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY29uZmlnLnBlcmZvcm1hbmNlICYmIG1hcmspIHtcbiAgICAgIHZtLl9uYW1lID0gZm9ybWF0Q29tcG9uZW50TmFtZSh2bSwgZmFsc2UpO1xuICAgICAgbWFyayhlbmRUYWcpO1xuICAgICAgbWVhc3VyZSgoXCJ2dWUgXCIgKyAodm0uX25hbWUpICsgXCIgaW5pdFwiKSwgc3RhcnRUYWcsIGVuZFRhZyk7XG4gICAgfVxuXG4gICAgaWYgKHZtLiRvcHRpb25zLmVsKSB7XG4gICAgICB2bS4kbW91bnQodm0uJG9wdGlvbnMuZWwpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gaW5pdEludGVybmFsQ29tcG9uZW50ICh2bSwgb3B0aW9ucykge1xuICB2YXIgb3B0cyA9IHZtLiRvcHRpb25zID0gT2JqZWN0LmNyZWF0ZSh2bS5jb25zdHJ1Y3Rvci5vcHRpb25zKTtcbiAgLy8gZG9pbmcgdGhpcyBiZWNhdXNlIGl0J3MgZmFzdGVyIHRoYW4gZHluYW1pYyBlbnVtZXJhdGlvbi5cbiAgdmFyIHBhcmVudFZub2RlID0gb3B0aW9ucy5fcGFyZW50Vm5vZGU7XG4gIG9wdHMucGFyZW50ID0gb3B0aW9ucy5wYXJlbnQ7XG4gIG9wdHMuX3BhcmVudFZub2RlID0gcGFyZW50Vm5vZGU7XG5cbiAgdmFyIHZub2RlQ29tcG9uZW50T3B0aW9ucyA9IHBhcmVudFZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gIG9wdHMucHJvcHNEYXRhID0gdm5vZGVDb21wb25lbnRPcHRpb25zLnByb3BzRGF0YTtcbiAgb3B0cy5fcGFyZW50TGlzdGVuZXJzID0gdm5vZGVDb21wb25lbnRPcHRpb25zLmxpc3RlbmVycztcbiAgb3B0cy5fcmVuZGVyQ2hpbGRyZW4gPSB2bm9kZUNvbXBvbmVudE9wdGlvbnMuY2hpbGRyZW47XG4gIG9wdHMuX2NvbXBvbmVudFRhZyA9IHZub2RlQ29tcG9uZW50T3B0aW9ucy50YWc7XG5cbiAgaWYgKG9wdGlvbnMucmVuZGVyKSB7XG4gICAgb3B0cy5yZW5kZXIgPSBvcHRpb25zLnJlbmRlcjtcbiAgICBvcHRzLnN0YXRpY1JlbmRlckZucyA9IG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnMgKEN0b3IpIHtcbiAgdmFyIG9wdGlvbnMgPSBDdG9yLm9wdGlvbnM7XG4gIGlmIChDdG9yLnN1cGVyKSB7XG4gICAgdmFyIHN1cGVyT3B0aW9ucyA9IHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnMoQ3Rvci5zdXBlcik7XG4gICAgdmFyIGNhY2hlZFN1cGVyT3B0aW9ucyA9IEN0b3Iuc3VwZXJPcHRpb25zO1xuICAgIGlmIChzdXBlck9wdGlvbnMgIT09IGNhY2hlZFN1cGVyT3B0aW9ucykge1xuICAgICAgLy8gc3VwZXIgb3B0aW9uIGNoYW5nZWQsXG4gICAgICAvLyBuZWVkIHRvIHJlc29sdmUgbmV3IG9wdGlvbnMuXG4gICAgICBDdG9yLnN1cGVyT3B0aW9ucyA9IHN1cGVyT3B0aW9ucztcbiAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgbGF0ZS1tb2RpZmllZC9hdHRhY2hlZCBvcHRpb25zICgjNDk3NilcbiAgICAgIHZhciBtb2RpZmllZE9wdGlvbnMgPSByZXNvbHZlTW9kaWZpZWRPcHRpb25zKEN0b3IpO1xuICAgICAgLy8gdXBkYXRlIGJhc2UgZXh0ZW5kIG9wdGlvbnNcbiAgICAgIGlmIChtb2RpZmllZE9wdGlvbnMpIHtcbiAgICAgICAgZXh0ZW5kKEN0b3IuZXh0ZW5kT3B0aW9ucywgbW9kaWZpZWRPcHRpb25zKTtcbiAgICAgIH1cbiAgICAgIG9wdGlvbnMgPSBDdG9yLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoc3VwZXJPcHRpb25zLCBDdG9yLmV4dGVuZE9wdGlvbnMpO1xuICAgICAgaWYgKG9wdGlvbnMubmFtZSkge1xuICAgICAgICBvcHRpb25zLmNvbXBvbmVudHNbb3B0aW9ucy5uYW1lXSA9IEN0b3I7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVNb2RpZmllZE9wdGlvbnMgKEN0b3IpIHtcbiAgdmFyIG1vZGlmaWVkO1xuICB2YXIgbGF0ZXN0ID0gQ3Rvci5vcHRpb25zO1xuICB2YXIgc2VhbGVkID0gQ3Rvci5zZWFsZWRPcHRpb25zO1xuICBmb3IgKHZhciBrZXkgaW4gbGF0ZXN0KSB7XG4gICAgaWYgKGxhdGVzdFtrZXldICE9PSBzZWFsZWRba2V5XSkge1xuICAgICAgaWYgKCFtb2RpZmllZCkgeyBtb2RpZmllZCA9IHt9OyB9XG4gICAgICBtb2RpZmllZFtrZXldID0gbGF0ZXN0W2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiBtb2RpZmllZFxufVxuXG5mdW5jdGlvbiBWdWUgKG9wdGlvbnMpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAhKHRoaXMgaW5zdGFuY2VvZiBWdWUpXG4gICkge1xuICAgIHdhcm4oJ1Z1ZSBpcyBhIGNvbnN0cnVjdG9yIGFuZCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIGBuZXdgIGtleXdvcmQnKTtcbiAgfVxuICB0aGlzLl9pbml0KG9wdGlvbnMpO1xufVxuXG5pbml0TWl4aW4oVnVlKTtcbnN0YXRlTWl4aW4oVnVlKTtcbmV2ZW50c01peGluKFZ1ZSk7XG5saWZlY3ljbGVNaXhpbihWdWUpO1xucmVuZGVyTWl4aW4oVnVlKTtcblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRVc2UgKFZ1ZSkge1xuICBWdWUudXNlID0gZnVuY3Rpb24gKHBsdWdpbikge1xuICAgIHZhciBpbnN0YWxsZWRQbHVnaW5zID0gKHRoaXMuX2luc3RhbGxlZFBsdWdpbnMgfHwgKHRoaXMuX2luc3RhbGxlZFBsdWdpbnMgPSBbXSkpO1xuICAgIGlmIChpbnN0YWxsZWRQbHVnaW5zLmluZGV4T2YocGx1Z2luKSA+IC0xKSB7XG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8vIGFkZGl0aW9uYWwgcGFyYW1ldGVyc1xuICAgIHZhciBhcmdzID0gdG9BcnJheShhcmd1bWVudHMsIDEpO1xuICAgIGFyZ3MudW5zaGlmdCh0aGlzKTtcbiAgICBpZiAodHlwZW9mIHBsdWdpbi5pbnN0YWxsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwbHVnaW4uaW5zdGFsbC5hcHBseShwbHVnaW4sIGFyZ3MpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHBsdWdpbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGx1Z2luLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgIH1cbiAgICBpbnN0YWxsZWRQbHVnaW5zLnB1c2gocGx1Z2luKTtcbiAgICByZXR1cm4gdGhpc1xuICB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdE1peGluJDEgKFZ1ZSkge1xuICBWdWUubWl4aW4gPSBmdW5jdGlvbiAobWl4aW4pIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnModGhpcy5vcHRpb25zLCBtaXhpbik7XG4gICAgcmV0dXJuIHRoaXNcbiAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRFeHRlbmQgKFZ1ZSkge1xuICAvKipcbiAgICogRWFjaCBpbnN0YW5jZSBjb25zdHJ1Y3RvciwgaW5jbHVkaW5nIFZ1ZSwgaGFzIGEgdW5pcXVlXG4gICAqIGNpZC4gVGhpcyBlbmFibGVzIHVzIHRvIGNyZWF0ZSB3cmFwcGVkIFwiY2hpbGRcbiAgICogY29uc3RydWN0b3JzXCIgZm9yIHByb3RvdHlwYWwgaW5oZXJpdGFuY2UgYW5kIGNhY2hlIHRoZW0uXG4gICAqL1xuICBWdWUuY2lkID0gMDtcbiAgdmFyIGNpZCA9IDE7XG5cbiAgLyoqXG4gICAqIENsYXNzIGluaGVyaXRhbmNlXG4gICAqL1xuICBWdWUuZXh0ZW5kID0gZnVuY3Rpb24gKGV4dGVuZE9wdGlvbnMpIHtcbiAgICBleHRlbmRPcHRpb25zID0gZXh0ZW5kT3B0aW9ucyB8fCB7fTtcbiAgICB2YXIgU3VwZXIgPSB0aGlzO1xuICAgIHZhciBTdXBlcklkID0gU3VwZXIuY2lkO1xuICAgIHZhciBjYWNoZWRDdG9ycyA9IGV4dGVuZE9wdGlvbnMuX0N0b3IgfHwgKGV4dGVuZE9wdGlvbnMuX0N0b3IgPSB7fSk7XG4gICAgaWYgKGNhY2hlZEN0b3JzW1N1cGVySWRdKSB7XG4gICAgICByZXR1cm4gY2FjaGVkQ3RvcnNbU3VwZXJJZF1cbiAgICB9XG5cbiAgICB2YXIgbmFtZSA9IGV4dGVuZE9wdGlvbnMubmFtZSB8fCBTdXBlci5vcHRpb25zLm5hbWU7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgbmFtZSkge1xuICAgICAgdmFsaWRhdGVDb21wb25lbnROYW1lKG5hbWUpO1xuICAgIH1cblxuICAgIHZhciBTdWIgPSBmdW5jdGlvbiBWdWVDb21wb25lbnQgKG9wdGlvbnMpIHtcbiAgICAgIHRoaXMuX2luaXQob3B0aW9ucyk7XG4gICAgfTtcbiAgICBTdWIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdXBlci5wcm90b3R5cGUpO1xuICAgIFN1Yi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTdWI7XG4gICAgU3ViLmNpZCA9IGNpZCsrO1xuICAgIFN1Yi5vcHRpb25zID0gbWVyZ2VPcHRpb25zKFxuICAgICAgU3VwZXIub3B0aW9ucyxcbiAgICAgIGV4dGVuZE9wdGlvbnNcbiAgICApO1xuICAgIFN1Ylsnc3VwZXInXSA9IFN1cGVyO1xuXG4gICAgLy8gRm9yIHByb3BzIGFuZCBjb21wdXRlZCBwcm9wZXJ0aWVzLCB3ZSBkZWZpbmUgdGhlIHByb3h5IGdldHRlcnMgb25cbiAgICAvLyB0aGUgVnVlIGluc3RhbmNlcyBhdCBleHRlbnNpb24gdGltZSwgb24gdGhlIGV4dGVuZGVkIHByb3RvdHlwZS4gVGhpc1xuICAgIC8vIGF2b2lkcyBPYmplY3QuZGVmaW5lUHJvcGVydHkgY2FsbHMgZm9yIGVhY2ggaW5zdGFuY2UgY3JlYXRlZC5cbiAgICBpZiAoU3ViLm9wdGlvbnMucHJvcHMpIHtcbiAgICAgIGluaXRQcm9wcyQxKFN1Yik7XG4gICAgfVxuICAgIGlmIChTdWIub3B0aW9ucy5jb21wdXRlZCkge1xuICAgICAgaW5pdENvbXB1dGVkJDEoU3ViKTtcbiAgICB9XG5cbiAgICAvLyBhbGxvdyBmdXJ0aGVyIGV4dGVuc2lvbi9taXhpbi9wbHVnaW4gdXNhZ2VcbiAgICBTdWIuZXh0ZW5kID0gU3VwZXIuZXh0ZW5kO1xuICAgIFN1Yi5taXhpbiA9IFN1cGVyLm1peGluO1xuICAgIFN1Yi51c2UgPSBTdXBlci51c2U7XG5cbiAgICAvLyBjcmVhdGUgYXNzZXQgcmVnaXN0ZXJzLCBzbyBleHRlbmRlZCBjbGFzc2VzXG4gICAgLy8gY2FuIGhhdmUgdGhlaXIgcHJpdmF0ZSBhc3NldHMgdG9vLlxuICAgIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgIFN1Ylt0eXBlXSA9IFN1cGVyW3R5cGVdO1xuICAgIH0pO1xuICAgIC8vIGVuYWJsZSByZWN1cnNpdmUgc2VsZi1sb29rdXBcbiAgICBpZiAobmFtZSkge1xuICAgICAgU3ViLm9wdGlvbnMuY29tcG9uZW50c1tuYW1lXSA9IFN1YjtcbiAgICB9XG5cbiAgICAvLyBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBzdXBlciBvcHRpb25zIGF0IGV4dGVuc2lvbiB0aW1lLlxuICAgIC8vIGxhdGVyIGF0IGluc3RhbnRpYXRpb24gd2UgY2FuIGNoZWNrIGlmIFN1cGVyJ3Mgb3B0aW9ucyBoYXZlXG4gICAgLy8gYmVlbiB1cGRhdGVkLlxuICAgIFN1Yi5zdXBlck9wdGlvbnMgPSBTdXBlci5vcHRpb25zO1xuICAgIFN1Yi5leHRlbmRPcHRpb25zID0gZXh0ZW5kT3B0aW9ucztcbiAgICBTdWIuc2VhbGVkT3B0aW9ucyA9IGV4dGVuZCh7fSwgU3ViLm9wdGlvbnMpO1xuXG4gICAgLy8gY2FjaGUgY29uc3RydWN0b3JcbiAgICBjYWNoZWRDdG9yc1tTdXBlcklkXSA9IFN1YjtcbiAgICByZXR1cm4gU3ViXG4gIH07XG59XG5cbmZ1bmN0aW9uIGluaXRQcm9wcyQxIChDb21wKSB7XG4gIHZhciBwcm9wcyA9IENvbXAub3B0aW9ucy5wcm9wcztcbiAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgcHJveHkoQ29tcC5wcm90b3R5cGUsIFwiX3Byb3BzXCIsIGtleSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdENvbXB1dGVkJDEgKENvbXApIHtcbiAgdmFyIGNvbXB1dGVkID0gQ29tcC5vcHRpb25zLmNvbXB1dGVkO1xuICBmb3IgKHZhciBrZXkgaW4gY29tcHV0ZWQpIHtcbiAgICBkZWZpbmVDb21wdXRlZChDb21wLnByb3RvdHlwZSwga2V5LCBjb21wdXRlZFtrZXldKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdEFzc2V0UmVnaXN0ZXJzIChWdWUpIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhc3NldCByZWdpc3RyYXRpb24gbWV0aG9kcy5cbiAgICovXG4gIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICBWdWVbdHlwZV0gPSBmdW5jdGlvbiAoXG4gICAgICBpZCxcbiAgICAgIGRlZmluaXRpb25cbiAgICApIHtcbiAgICAgIGlmICghZGVmaW5pdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zW3R5cGUgKyAncyddW2lkXVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHR5cGUgPT09ICdjb21wb25lbnQnKSB7XG4gICAgICAgICAgdmFsaWRhdGVDb21wb25lbnROYW1lKGlkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbXBvbmVudCcgJiYgaXNQbGFpbk9iamVjdChkZWZpbml0aW9uKSkge1xuICAgICAgICAgIGRlZmluaXRpb24ubmFtZSA9IGRlZmluaXRpb24ubmFtZSB8fCBpZDtcbiAgICAgICAgICBkZWZpbml0aW9uID0gdGhpcy5vcHRpb25zLl9iYXNlLmV4dGVuZChkZWZpbml0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2RpcmVjdGl2ZScgJiYgdHlwZW9mIGRlZmluaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBkZWZpbml0aW9uID0geyBiaW5kOiBkZWZpbml0aW9uLCB1cGRhdGU6IGRlZmluaXRpb24gfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wdGlvbnNbdHlwZSArICdzJ11baWRdID0gZGVmaW5pdGlvbjtcbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb25cbiAgICAgIH1cbiAgICB9O1xuICB9KTtcbn1cblxuLyogICovXG5cblxuXG5mdW5jdGlvbiBnZXRDb21wb25lbnROYW1lIChvcHRzKSB7XG4gIHJldHVybiBvcHRzICYmIChvcHRzLkN0b3Iub3B0aW9ucy5uYW1lIHx8IG9wdHMudGFnKVxufVxuXG5mdW5jdGlvbiBtYXRjaGVzIChwYXR0ZXJuLCBuYW1lKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHBhdHRlcm4pKSB7XG4gICAgcmV0dXJuIHBhdHRlcm4uaW5kZXhPZihuYW1lKSA+IC0xXG4gIH0gZWxzZSBpZiAodHlwZW9mIHBhdHRlcm4gPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBhdHRlcm4uc3BsaXQoJywnKS5pbmRleE9mKG5hbWUpID4gLTFcbiAgfSBlbHNlIGlmIChpc1JlZ0V4cChwYXR0ZXJuKSkge1xuICAgIHJldHVybiBwYXR0ZXJuLnRlc3QobmFtZSlcbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gcHJ1bmVDYWNoZSAoa2VlcEFsaXZlSW5zdGFuY2UsIGZpbHRlcikge1xuICB2YXIgY2FjaGUgPSBrZWVwQWxpdmVJbnN0YW5jZS5jYWNoZTtcbiAgdmFyIGtleXMgPSBrZWVwQWxpdmVJbnN0YW5jZS5rZXlzO1xuICB2YXIgX3Zub2RlID0ga2VlcEFsaXZlSW5zdGFuY2UuX3Zub2RlO1xuICBmb3IgKHZhciBrZXkgaW4gY2FjaGUpIHtcbiAgICB2YXIgY2FjaGVkTm9kZSA9IGNhY2hlW2tleV07XG4gICAgaWYgKGNhY2hlZE5vZGUpIHtcbiAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZShjYWNoZWROb2RlLmNvbXBvbmVudE9wdGlvbnMpO1xuICAgICAgaWYgKG5hbWUgJiYgIWZpbHRlcihuYW1lKSkge1xuICAgICAgICBwcnVuZUNhY2hlRW50cnkoY2FjaGUsIGtleSwga2V5cywgX3Zub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJ1bmVDYWNoZUVudHJ5IChcbiAgY2FjaGUsXG4gIGtleSxcbiAga2V5cyxcbiAgY3VycmVudFxuKSB7XG4gIHZhciBjYWNoZWQkJDEgPSBjYWNoZVtrZXldO1xuICBpZiAoY2FjaGVkJCQxICYmICghY3VycmVudCB8fCBjYWNoZWQkJDEudGFnICE9PSBjdXJyZW50LnRhZykpIHtcbiAgICBjYWNoZWQkJDEuY29tcG9uZW50SW5zdGFuY2UuJGRlc3Ryb3koKTtcbiAgfVxuICBjYWNoZVtrZXldID0gbnVsbDtcbiAgcmVtb3ZlKGtleXMsIGtleSk7XG59XG5cbnZhciBwYXR0ZXJuVHlwZXMgPSBbU3RyaW5nLCBSZWdFeHAsIEFycmF5XTtcblxudmFyIEtlZXBBbGl2ZSA9IHtcbiAgbmFtZTogJ2tlZXAtYWxpdmUnLFxuICBhYnN0cmFjdDogdHJ1ZSxcblxuICBwcm9wczoge1xuICAgIGluY2x1ZGU6IHBhdHRlcm5UeXBlcyxcbiAgICBleGNsdWRlOiBwYXR0ZXJuVHlwZXMsXG4gICAgbWF4OiBbU3RyaW5nLCBOdW1iZXJdXG4gIH0sXG5cbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCAoKSB7XG4gICAgdGhpcy5jYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdGhpcy5rZXlzID0gW107XG4gIH0sXG5cbiAgZGVzdHJveWVkOiBmdW5jdGlvbiBkZXN0cm95ZWQgKCkge1xuICAgIGZvciAodmFyIGtleSBpbiB0aGlzLmNhY2hlKSB7XG4gICAgICBwcnVuZUNhY2hlRW50cnkodGhpcy5jYWNoZSwga2V5LCB0aGlzLmtleXMpO1xuICAgIH1cbiAgfSxcblxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHRoaXMuJHdhdGNoKCdpbmNsdWRlJywgZnVuY3Rpb24gKHZhbCkge1xuICAgICAgcHJ1bmVDYWNoZSh0aGlzJDEsIGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiBtYXRjaGVzKHZhbCwgbmFtZSk7IH0pO1xuICAgIH0pO1xuICAgIHRoaXMuJHdhdGNoKCdleGNsdWRlJywgZnVuY3Rpb24gKHZhbCkge1xuICAgICAgcHJ1bmVDYWNoZSh0aGlzJDEsIGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiAhbWF0Y2hlcyh2YWwsIG5hbWUpOyB9KTtcbiAgICB9KTtcbiAgfSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoKSB7XG4gICAgdmFyIHNsb3QgPSB0aGlzLiRzbG90cy5kZWZhdWx0O1xuICAgIHZhciB2bm9kZSA9IGdldEZpcnN0Q29tcG9uZW50Q2hpbGQoc2xvdCk7XG4gICAgdmFyIGNvbXBvbmVudE9wdGlvbnMgPSB2bm9kZSAmJiB2bm9kZS5jb21wb25lbnRPcHRpb25zO1xuICAgIGlmIChjb21wb25lbnRPcHRpb25zKSB7XG4gICAgICAvLyBjaGVjayBwYXR0ZXJuXG4gICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWUoY29tcG9uZW50T3B0aW9ucyk7XG4gICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgIHZhciBpbmNsdWRlID0gcmVmLmluY2x1ZGU7XG4gICAgICB2YXIgZXhjbHVkZSA9IHJlZi5leGNsdWRlO1xuICAgICAgaWYgKFxuICAgICAgICAvLyBub3QgaW5jbHVkZWRcbiAgICAgICAgKGluY2x1ZGUgJiYgKCFuYW1lIHx8ICFtYXRjaGVzKGluY2x1ZGUsIG5hbWUpKSkgfHxcbiAgICAgICAgLy8gZXhjbHVkZWRcbiAgICAgICAgKGV4Y2x1ZGUgJiYgbmFtZSAmJiBtYXRjaGVzKGV4Y2x1ZGUsIG5hbWUpKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB2bm9kZVxuICAgICAgfVxuXG4gICAgICB2YXIgcmVmJDEgPSB0aGlzO1xuICAgICAgdmFyIGNhY2hlID0gcmVmJDEuY2FjaGU7XG4gICAgICB2YXIga2V5cyA9IHJlZiQxLmtleXM7XG4gICAgICB2YXIga2V5ID0gdm5vZGUua2V5ID09IG51bGxcbiAgICAgICAgLy8gc2FtZSBjb25zdHJ1Y3RvciBtYXkgZ2V0IHJlZ2lzdGVyZWQgYXMgZGlmZmVyZW50IGxvY2FsIGNvbXBvbmVudHNcbiAgICAgICAgLy8gc28gY2lkIGFsb25lIGlzIG5vdCBlbm91Z2ggKCMzMjY5KVxuICAgICAgICA/IGNvbXBvbmVudE9wdGlvbnMuQ3Rvci5jaWQgKyAoY29tcG9uZW50T3B0aW9ucy50YWcgPyAoXCI6OlwiICsgKGNvbXBvbmVudE9wdGlvbnMudGFnKSkgOiAnJylcbiAgICAgICAgOiB2bm9kZS5rZXk7XG4gICAgICBpZiAoY2FjaGVba2V5XSkge1xuICAgICAgICB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IGNhY2hlW2tleV0uY29tcG9uZW50SW5zdGFuY2U7XG4gICAgICAgIC8vIG1ha2UgY3VycmVudCBrZXkgZnJlc2hlc3RcbiAgICAgICAgcmVtb3ZlKGtleXMsIGtleSk7XG4gICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FjaGVba2V5XSA9IHZub2RlO1xuICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgLy8gcHJ1bmUgb2xkZXN0IGVudHJ5XG4gICAgICAgIGlmICh0aGlzLm1heCAmJiBrZXlzLmxlbmd0aCA+IHBhcnNlSW50KHRoaXMubWF4KSkge1xuICAgICAgICAgIHBydW5lQ2FjaGVFbnRyeShjYWNoZSwga2V5c1swXSwga2V5cywgdGhpcy5fdm5vZGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZub2RlLmRhdGEua2VlcEFsaXZlID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHZub2RlIHx8IChzbG90ICYmIHNsb3RbMF0pXG4gIH1cbn07XG5cbnZhciBidWlsdEluQ29tcG9uZW50cyA9IHtcbiAgS2VlcEFsaXZlOiBLZWVwQWxpdmVcbn07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0R2xvYmFsQVBJIChWdWUpIHtcbiAgLy8gY29uZmlnXG4gIHZhciBjb25maWdEZWYgPSB7fTtcbiAgY29uZmlnRGVmLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNvbmZpZzsgfTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjb25maWdEZWYuc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2FybihcbiAgICAgICAgJ0RvIG5vdCByZXBsYWNlIHRoZSBWdWUuY29uZmlnIG9iamVjdCwgc2V0IGluZGl2aWR1YWwgZmllbGRzIGluc3RlYWQuJ1xuICAgICAgKTtcbiAgICB9O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUsICdjb25maWcnLCBjb25maWdEZWYpO1xuXG4gIC8vIGV4cG9zZWQgdXRpbCBtZXRob2RzLlxuICAvLyBOT1RFOiB0aGVzZSBhcmUgbm90IGNvbnNpZGVyZWQgcGFydCBvZiB0aGUgcHVibGljIEFQSSAtIGF2b2lkIHJlbHlpbmcgb25cbiAgLy8gdGhlbSB1bmxlc3MgeW91IGFyZSBhd2FyZSBvZiB0aGUgcmlzay5cbiAgVnVlLnV0aWwgPSB7XG4gICAgd2Fybjogd2FybixcbiAgICBleHRlbmQ6IGV4dGVuZCxcbiAgICBtZXJnZU9wdGlvbnM6IG1lcmdlT3B0aW9ucyxcbiAgICBkZWZpbmVSZWFjdGl2ZTogZGVmaW5lUmVhY3RpdmUkJDFcbiAgfTtcblxuICBWdWUuc2V0ID0gc2V0O1xuICBWdWUuZGVsZXRlID0gZGVsO1xuICBWdWUubmV4dFRpY2sgPSBuZXh0VGljaztcblxuICAvLyAyLjYgZXhwbGljaXQgb2JzZXJ2YWJsZSBBUElcbiAgVnVlLm9ic2VydmFibGUgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgb2JzZXJ2ZShvYmopO1xuICAgIHJldHVybiBvYmpcbiAgfTtcblxuICBWdWUub3B0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICBWdWUub3B0aW9uc1t0eXBlICsgJ3MnXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIH0pO1xuXG4gIC8vIHRoaXMgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUgXCJiYXNlXCIgY29uc3RydWN0b3IgdG8gZXh0ZW5kIGFsbCBwbGFpbi1vYmplY3RcbiAgLy8gY29tcG9uZW50cyB3aXRoIGluIFdlZXgncyBtdWx0aS1pbnN0YW5jZSBzY2VuYXJpb3MuXG4gIFZ1ZS5vcHRpb25zLl9iYXNlID0gVnVlO1xuXG4gIGV4dGVuZChWdWUub3B0aW9ucy5jb21wb25lbnRzLCBidWlsdEluQ29tcG9uZW50cyk7XG5cbiAgaW5pdFVzZShWdWUpO1xuICBpbml0TWl4aW4kMShWdWUpO1xuICBpbml0RXh0ZW5kKFZ1ZSk7XG4gIGluaXRBc3NldFJlZ2lzdGVycyhWdWUpO1xufVxuXG5pbml0R2xvYmFsQVBJKFZ1ZSk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUucHJvdG90eXBlLCAnJGlzU2VydmVyJywge1xuICBnZXQ6IGlzU2VydmVyUmVuZGVyaW5nXG59KTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZS5wcm90b3R5cGUsICckc3NyQ29udGV4dCcsIHtcbiAgZ2V0OiBmdW5jdGlvbiBnZXQgKCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHRcbiAgfVxufSk7XG5cbi8vIGV4cG9zZSBGdW5jdGlvbmFsUmVuZGVyQ29udGV4dCBmb3Igc3NyIHJ1bnRpbWUgaGVscGVyIGluc3RhbGxhdGlvblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZSwgJ0Z1bmN0aW9uYWxSZW5kZXJDb250ZXh0Jywge1xuICB2YWx1ZTogRnVuY3Rpb25hbFJlbmRlckNvbnRleHRcbn0pO1xuXG5WdWUudmVyc2lvbiA9ICcyLjYuMTAnO1xuXG4vKiAgKi9cblxuLy8gdGhlc2UgYXJlIHJlc2VydmVkIGZvciB3ZWIgYmVjYXVzZSB0aGV5IGFyZSBkaXJlY3RseSBjb21waWxlZCBhd2F5XG4vLyBkdXJpbmcgdGVtcGxhdGUgY29tcGlsYXRpb25cbnZhciBpc1Jlc2VydmVkQXR0ciA9IG1ha2VNYXAoJ3N0eWxlLGNsYXNzJyk7XG5cbi8vIGF0dHJpYnV0ZXMgdGhhdCBzaG91bGQgYmUgdXNpbmcgcHJvcHMgZm9yIGJpbmRpbmdcbnZhciBhY2NlcHRWYWx1ZSA9IG1ha2VNYXAoJ2lucHV0LHRleHRhcmVhLG9wdGlvbixzZWxlY3QscHJvZ3Jlc3MnKTtcbnZhciBtdXN0VXNlUHJvcCA9IGZ1bmN0aW9uICh0YWcsIHR5cGUsIGF0dHIpIHtcbiAgcmV0dXJuIChcbiAgICAoYXR0ciA9PT0gJ3ZhbHVlJyAmJiBhY2NlcHRWYWx1ZSh0YWcpKSAmJiB0eXBlICE9PSAnYnV0dG9uJyB8fFxuICAgIChhdHRyID09PSAnc2VsZWN0ZWQnICYmIHRhZyA9PT0gJ29wdGlvbicpIHx8XG4gICAgKGF0dHIgPT09ICdjaGVja2VkJyAmJiB0YWcgPT09ICdpbnB1dCcpIHx8XG4gICAgKGF0dHIgPT09ICdtdXRlZCcgJiYgdGFnID09PSAndmlkZW8nKVxuICApXG59O1xuXG52YXIgaXNFbnVtZXJhdGVkQXR0ciA9IG1ha2VNYXAoJ2NvbnRlbnRlZGl0YWJsZSxkcmFnZ2FibGUsc3BlbGxjaGVjaycpO1xuXG52YXIgaXNWYWxpZENvbnRlbnRFZGl0YWJsZVZhbHVlID0gbWFrZU1hcCgnZXZlbnRzLGNhcmV0LHR5cGluZyxwbGFpbnRleHQtb25seScpO1xuXG52YXIgY29udmVydEVudW1lcmF0ZWRWYWx1ZSA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBpc0ZhbHN5QXR0clZhbHVlKHZhbHVlKSB8fCB2YWx1ZSA9PT0gJ2ZhbHNlJ1xuICAgID8gJ2ZhbHNlJ1xuICAgIC8vIGFsbG93IGFyYml0cmFyeSBzdHJpbmcgdmFsdWUgZm9yIGNvbnRlbnRlZGl0YWJsZVxuICAgIDoga2V5ID09PSAnY29udGVudGVkaXRhYmxlJyAmJiBpc1ZhbGlkQ29udGVudEVkaXRhYmxlVmFsdWUodmFsdWUpXG4gICAgICA/IHZhbHVlXG4gICAgICA6ICd0cnVlJ1xufTtcblxudmFyIGlzQm9vbGVhbkF0dHIgPSBtYWtlTWFwKFxuICAnYWxsb3dmdWxsc2NyZWVuLGFzeW5jLGF1dG9mb2N1cyxhdXRvcGxheSxjaGVja2VkLGNvbXBhY3QsY29udHJvbHMsZGVjbGFyZSwnICtcbiAgJ2RlZmF1bHQsZGVmYXVsdGNoZWNrZWQsZGVmYXVsdG11dGVkLGRlZmF1bHRzZWxlY3RlZCxkZWZlcixkaXNhYmxlZCwnICtcbiAgJ2VuYWJsZWQsZm9ybW5vdmFsaWRhdGUsaGlkZGVuLGluZGV0ZXJtaW5hdGUsaW5lcnQsaXNtYXAsaXRlbXNjb3BlLGxvb3AsbXVsdGlwbGUsJyArXG4gICdtdXRlZCxub2hyZWYsbm9yZXNpemUsbm9zaGFkZSxub3ZhbGlkYXRlLG5vd3JhcCxvcGVuLHBhdXNlb25leGl0LHJlYWRvbmx5LCcgK1xuICAncmVxdWlyZWQscmV2ZXJzZWQsc2NvcGVkLHNlYW1sZXNzLHNlbGVjdGVkLHNvcnRhYmxlLHRyYW5zbGF0ZSwnICtcbiAgJ3RydWVzcGVlZCx0eXBlbXVzdG1hdGNoLHZpc2libGUnXG4pO1xuXG52YXIgeGxpbmtOUyA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJztcblxudmFyIGlzWGxpbmsgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gbmFtZS5jaGFyQXQoNSkgPT09ICc6JyAmJiBuYW1lLnNsaWNlKDAsIDUpID09PSAneGxpbmsnXG59O1xuXG52YXIgZ2V0WGxpbmtQcm9wID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIGlzWGxpbmsobmFtZSkgPyBuYW1lLnNsaWNlKDYsIG5hbWUubGVuZ3RoKSA6ICcnXG59O1xuXG52YXIgaXNGYWxzeUF0dHJWYWx1ZSA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgcmV0dXJuIHZhbCA9PSBudWxsIHx8IHZhbCA9PT0gZmFsc2Vcbn07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBnZW5DbGFzc0ZvclZub2RlICh2bm9kZSkge1xuICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gIHZhciBwYXJlbnROb2RlID0gdm5vZGU7XG4gIHZhciBjaGlsZE5vZGUgPSB2bm9kZTtcbiAgd2hpbGUgKGlzRGVmKGNoaWxkTm9kZS5jb21wb25lbnRJbnN0YW5jZSkpIHtcbiAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO1xuICAgIGlmIChjaGlsZE5vZGUgJiYgY2hpbGROb2RlLmRhdGEpIHtcbiAgICAgIGRhdGEgPSBtZXJnZUNsYXNzRGF0YShjaGlsZE5vZGUuZGF0YSwgZGF0YSk7XG4gICAgfVxuICB9XG4gIHdoaWxlIChpc0RlZihwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5wYXJlbnQpKSB7XG4gICAgaWYgKHBhcmVudE5vZGUgJiYgcGFyZW50Tm9kZS5kYXRhKSB7XG4gICAgICBkYXRhID0gbWVyZ2VDbGFzc0RhdGEoZGF0YSwgcGFyZW50Tm9kZS5kYXRhKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlbmRlckNsYXNzKGRhdGEuc3RhdGljQ2xhc3MsIGRhdGEuY2xhc3MpXG59XG5cbmZ1bmN0aW9uIG1lcmdlQ2xhc3NEYXRhIChjaGlsZCwgcGFyZW50KSB7XG4gIHJldHVybiB7XG4gICAgc3RhdGljQ2xhc3M6IGNvbmNhdChjaGlsZC5zdGF0aWNDbGFzcywgcGFyZW50LnN0YXRpY0NsYXNzKSxcbiAgICBjbGFzczogaXNEZWYoY2hpbGQuY2xhc3MpXG4gICAgICA/IFtjaGlsZC5jbGFzcywgcGFyZW50LmNsYXNzXVxuICAgICAgOiBwYXJlbnQuY2xhc3NcbiAgfVxufVxuXG5mdW5jdGlvbiByZW5kZXJDbGFzcyAoXG4gIHN0YXRpY0NsYXNzLFxuICBkeW5hbWljQ2xhc3Ncbikge1xuICBpZiAoaXNEZWYoc3RhdGljQ2xhc3MpIHx8IGlzRGVmKGR5bmFtaWNDbGFzcykpIHtcbiAgICByZXR1cm4gY29uY2F0KHN0YXRpY0NsYXNzLCBzdHJpbmdpZnlDbGFzcyhkeW5hbWljQ2xhc3MpKVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiAnJ1xufVxuXG5mdW5jdGlvbiBjb25jYXQgKGEsIGIpIHtcbiAgcmV0dXJuIGEgPyBiID8gKGEgKyAnICcgKyBiKSA6IGEgOiAoYiB8fCAnJylcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5Q2xhc3MgKHZhbHVlKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBzdHJpbmdpZnlBcnJheSh2YWx1ZSlcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIHN0cmluZ2lmeU9iamVjdCh2YWx1ZSlcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiAnJ1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlBcnJheSAodmFsdWUpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICB2YXIgc3RyaW5naWZpZWQ7XG4gIGZvciAodmFyIGkgPSAwLCBsID0gdmFsdWUubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgaWYgKGlzRGVmKHN0cmluZ2lmaWVkID0gc3RyaW5naWZ5Q2xhc3ModmFsdWVbaV0pKSAmJiBzdHJpbmdpZmllZCAhPT0gJycpIHtcbiAgICAgIGlmIChyZXMpIHsgcmVzICs9ICcgJzsgfVxuICAgICAgcmVzICs9IHN0cmluZ2lmaWVkO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeU9iamVjdCAodmFsdWUpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICBpZiAodmFsdWVba2V5XSkge1xuICAgICAgaWYgKHJlcykgeyByZXMgKz0gJyAnOyB9XG4gICAgICByZXMgKz0ga2V5O1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG52YXIgbmFtZXNwYWNlTWFwID0ge1xuICBzdmc6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsXG4gIG1hdGg6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJ1xufTtcblxudmFyIGlzSFRNTFRhZyA9IG1ha2VNYXAoXG4gICdodG1sLGJvZHksYmFzZSxoZWFkLGxpbmssbWV0YSxzdHlsZSx0aXRsZSwnICtcbiAgJ2FkZHJlc3MsYXJ0aWNsZSxhc2lkZSxmb290ZXIsaGVhZGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhncm91cCxuYXYsc2VjdGlvbiwnICtcbiAgJ2RpdixkZCxkbCxkdCxmaWdjYXB0aW9uLGZpZ3VyZSxwaWN0dXJlLGhyLGltZyxsaSxtYWluLG9sLHAscHJlLHVsLCcgK1xuICAnYSxiLGFiYnIsYmRpLGJkbyxicixjaXRlLGNvZGUsZGF0YSxkZm4sZW0saSxrYmQsbWFyayxxLHJwLHJ0LHJ0YyxydWJ5LCcgK1xuICAncyxzYW1wLHNtYWxsLHNwYW4sc3Ryb25nLHN1YixzdXAsdGltZSx1LHZhcix3YnIsYXJlYSxhdWRpbyxtYXAsdHJhY2ssdmlkZW8sJyArXG4gICdlbWJlZCxvYmplY3QscGFyYW0sc291cmNlLGNhbnZhcyxzY3JpcHQsbm9zY3JpcHQsZGVsLGlucywnICtcbiAgJ2NhcHRpb24sY29sLGNvbGdyb3VwLHRhYmxlLHRoZWFkLHRib2R5LHRkLHRoLHRyLCcgK1xuICAnYnV0dG9uLGRhdGFsaXN0LGZpZWxkc2V0LGZvcm0saW5wdXQsbGFiZWwsbGVnZW5kLG1ldGVyLG9wdGdyb3VwLG9wdGlvbiwnICtcbiAgJ291dHB1dCxwcm9ncmVzcyxzZWxlY3QsdGV4dGFyZWEsJyArXG4gICdkZXRhaWxzLGRpYWxvZyxtZW51LG1lbnVpdGVtLHN1bW1hcnksJyArXG4gICdjb250ZW50LGVsZW1lbnQsc2hhZG93LHRlbXBsYXRlLGJsb2NrcXVvdGUsaWZyYW1lLHRmb290J1xuKTtcblxuLy8gdGhpcyBtYXAgaXMgaW50ZW50aW9uYWxseSBzZWxlY3RpdmUsIG9ubHkgY292ZXJpbmcgU1ZHIGVsZW1lbnRzIHRoYXQgbWF5XG4vLyBjb250YWluIGNoaWxkIGVsZW1lbnRzLlxudmFyIGlzU1ZHID0gbWFrZU1hcChcbiAgJ3N2ZyxhbmltYXRlLGNpcmNsZSxjbGlwcGF0aCxjdXJzb3IsZGVmcyxkZXNjLGVsbGlwc2UsZmlsdGVyLGZvbnQtZmFjZSwnICtcbiAgJ2ZvcmVpZ25PYmplY3QsZyxnbHlwaCxpbWFnZSxsaW5lLG1hcmtlcixtYXNrLG1pc3NpbmctZ2x5cGgscGF0aCxwYXR0ZXJuLCcgK1xuICAncG9seWdvbixwb2x5bGluZSxyZWN0LHN3aXRjaCxzeW1ib2wsdGV4dCx0ZXh0cGF0aCx0c3Bhbix1c2UsdmlldycsXG4gIHRydWVcbik7XG5cbnZhciBpc1ByZVRhZyA9IGZ1bmN0aW9uICh0YWcpIHsgcmV0dXJuIHRhZyA9PT0gJ3ByZSc7IH07XG5cbnZhciBpc1Jlc2VydmVkVGFnID0gZnVuY3Rpb24gKHRhZykge1xuICByZXR1cm4gaXNIVE1MVGFnKHRhZykgfHwgaXNTVkcodGFnKVxufTtcblxuZnVuY3Rpb24gZ2V0VGFnTmFtZXNwYWNlICh0YWcpIHtcbiAgaWYgKGlzU1ZHKHRhZykpIHtcbiAgICByZXR1cm4gJ3N2ZydcbiAgfVxuICAvLyBiYXNpYyBzdXBwb3J0IGZvciBNYXRoTUxcbiAgLy8gbm90ZSBpdCBkb2Vzbid0IHN1cHBvcnQgb3RoZXIgTWF0aE1MIGVsZW1lbnRzIGJlaW5nIGNvbXBvbmVudCByb290c1xuICBpZiAodGFnID09PSAnbWF0aCcpIHtcbiAgICByZXR1cm4gJ21hdGgnXG4gIH1cbn1cblxudmFyIHVua25vd25FbGVtZW50Q2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuZnVuY3Rpb24gaXNVbmtub3duRWxlbWVudCAodGFnKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIWluQnJvd3Nlcikge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgaWYgKGlzUmVzZXJ2ZWRUYWcodGFnKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHRhZyA9IHRhZy50b0xvd2VyQ2FzZSgpO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHVua25vd25FbGVtZW50Q2FjaGVbdGFnXSAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHVua25vd25FbGVtZW50Q2FjaGVbdGFnXVxuICB9XG4gIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgaWYgKHRhZy5pbmRleE9mKCctJykgPiAtMSkge1xuICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI4MjEwMzY0LzEwNzAyNDRcbiAgICByZXR1cm4gKHVua25vd25FbGVtZW50Q2FjaGVbdGFnXSA9IChcbiAgICAgIGVsLmNvbnN0cnVjdG9yID09PSB3aW5kb3cuSFRNTFVua25vd25FbGVtZW50IHx8XG4gICAgICBlbC5jb25zdHJ1Y3RvciA9PT0gd2luZG93LkhUTUxFbGVtZW50XG4gICAgKSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKHVua25vd25FbGVtZW50Q2FjaGVbdGFnXSA9IC9IVE1MVW5rbm93bkVsZW1lbnQvLnRlc3QoZWwudG9TdHJpbmcoKSkpXG4gIH1cbn1cblxudmFyIGlzVGV4dElucHV0VHlwZSA9IG1ha2VNYXAoJ3RleHQsbnVtYmVyLHBhc3N3b3JkLHNlYXJjaCxlbWFpbCx0ZWwsdXJsJyk7XG5cbi8qICAqL1xuXG4vKipcbiAqIFF1ZXJ5IGFuIGVsZW1lbnQgc2VsZWN0b3IgaWYgaXQncyBub3QgYW4gZWxlbWVudCBhbHJlYWR5LlxuICovXG5mdW5jdGlvbiBxdWVyeSAoZWwpIHtcbiAgaWYgKHR5cGVvZiBlbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgc2VsZWN0ZWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGVsKTtcbiAgICBpZiAoIXNlbGVjdGVkKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICdDYW5ub3QgZmluZCBlbGVtZW50OiAnICsgZWxcbiAgICAgICk7XG4gICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICB9XG4gICAgcmV0dXJuIHNlbGVjdGVkXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGVsXG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQkMSAodGFnTmFtZSwgdm5vZGUpIHtcbiAgdmFyIGVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7XG4gIGlmICh0YWdOYW1lICE9PSAnc2VsZWN0Jykge1xuICAgIHJldHVybiBlbG1cbiAgfVxuICAvLyBmYWxzZSBvciBudWxsIHdpbGwgcmVtb3ZlIHRoZSBhdHRyaWJ1dGUgYnV0IHVuZGVmaW5lZCB3aWxsIG5vdFxuICBpZiAodm5vZGUuZGF0YSAmJiB2bm9kZS5kYXRhLmF0dHJzICYmIHZub2RlLmRhdGEuYXR0cnMubXVsdGlwbGUgIT09IHVuZGVmaW5lZCkge1xuICAgIGVsbS5zZXRBdHRyaWJ1dGUoJ211bHRpcGxlJywgJ211bHRpcGxlJyk7XG4gIH1cbiAgcmV0dXJuIGVsbVxufVxuXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50TlMgKG5hbWVzcGFjZSwgdGFnTmFtZSkge1xuICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZU1hcFtuYW1lc3BhY2VdLCB0YWdOYW1lKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVUZXh0Tm9kZSAodGV4dCkge1xuICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dClcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29tbWVudCAodGV4dCkge1xuICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCh0ZXh0KVxufVxuXG5mdW5jdGlvbiBpbnNlcnRCZWZvcmUgKHBhcmVudE5vZGUsIG5ld05vZGUsIHJlZmVyZW5jZU5vZGUpIHtcbiAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobmV3Tm9kZSwgcmVmZXJlbmNlTm9kZSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUNoaWxkIChub2RlLCBjaGlsZCkge1xuICBub2RlLnJlbW92ZUNoaWxkKGNoaWxkKTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kQ2hpbGQgKG5vZGUsIGNoaWxkKSB7XG4gIG5vZGUuYXBwZW5kQ2hpbGQoY2hpbGQpO1xufVxuXG5mdW5jdGlvbiBwYXJlbnROb2RlIChub2RlKSB7XG4gIHJldHVybiBub2RlLnBhcmVudE5vZGVcbn1cblxuZnVuY3Rpb24gbmV4dFNpYmxpbmcgKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUubmV4dFNpYmxpbmdcbn1cblxuZnVuY3Rpb24gdGFnTmFtZSAobm9kZSkge1xuICByZXR1cm4gbm9kZS50YWdOYW1lXG59XG5cbmZ1bmN0aW9uIHNldFRleHRDb250ZW50IChub2RlLCB0ZXh0KSB7XG4gIG5vZGUudGV4dENvbnRlbnQgPSB0ZXh0O1xufVxuXG5mdW5jdGlvbiBzZXRTdHlsZVNjb3BlIChub2RlLCBzY29wZUlkKSB7XG4gIG5vZGUuc2V0QXR0cmlidXRlKHNjb3BlSWQsICcnKTtcbn1cblxudmFyIG5vZGVPcHMgPSAvKiNfX1BVUkVfXyovT2JqZWN0LmZyZWV6ZSh7XG4gIGNyZWF0ZUVsZW1lbnQ6IGNyZWF0ZUVsZW1lbnQkMSxcbiAgY3JlYXRlRWxlbWVudE5TOiBjcmVhdGVFbGVtZW50TlMsXG4gIGNyZWF0ZVRleHROb2RlOiBjcmVhdGVUZXh0Tm9kZSxcbiAgY3JlYXRlQ29tbWVudDogY3JlYXRlQ29tbWVudCxcbiAgaW5zZXJ0QmVmb3JlOiBpbnNlcnRCZWZvcmUsXG4gIHJlbW92ZUNoaWxkOiByZW1vdmVDaGlsZCxcbiAgYXBwZW5kQ2hpbGQ6IGFwcGVuZENoaWxkLFxuICBwYXJlbnROb2RlOiBwYXJlbnROb2RlLFxuICBuZXh0U2libGluZzogbmV4dFNpYmxpbmcsXG4gIHRhZ05hbWU6IHRhZ05hbWUsXG4gIHNldFRleHRDb250ZW50OiBzZXRUZXh0Q29udGVudCxcbiAgc2V0U3R5bGVTY29wZTogc2V0U3R5bGVTY29wZVxufSk7XG5cbi8qICAqL1xuXG52YXIgcmVmID0ge1xuICBjcmVhdGU6IGZ1bmN0aW9uIGNyZWF0ZSAoXywgdm5vZGUpIHtcbiAgICByZWdpc3RlclJlZih2bm9kZSk7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgICBpZiAob2xkVm5vZGUuZGF0YS5yZWYgIT09IHZub2RlLmRhdGEucmVmKSB7XG4gICAgICByZWdpc3RlclJlZihvbGRWbm9kZSwgdHJ1ZSk7XG4gICAgICByZWdpc3RlclJlZih2bm9kZSk7XG4gICAgfVxuICB9LFxuICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95ICh2bm9kZSkge1xuICAgIHJlZ2lzdGVyUmVmKHZub2RlLCB0cnVlKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gcmVnaXN0ZXJSZWYgKHZub2RlLCBpc1JlbW92YWwpIHtcbiAgdmFyIGtleSA9IHZub2RlLmRhdGEucmVmO1xuICBpZiAoIWlzRGVmKGtleSkpIHsgcmV0dXJuIH1cblxuICB2YXIgdm0gPSB2bm9kZS5jb250ZXh0O1xuICB2YXIgcmVmID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgfHwgdm5vZGUuZWxtO1xuICB2YXIgcmVmcyA9IHZtLiRyZWZzO1xuICBpZiAoaXNSZW1vdmFsKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVmc1trZXldKSkge1xuICAgICAgcmVtb3ZlKHJlZnNba2V5XSwgcmVmKTtcbiAgICB9IGVsc2UgaWYgKHJlZnNba2V5XSA9PT0gcmVmKSB7XG4gICAgICByZWZzW2tleV0gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICh2bm9kZS5kYXRhLnJlZkluRm9yKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkocmVmc1trZXldKSkge1xuICAgICAgICByZWZzW2tleV0gPSBbcmVmXTtcbiAgICAgIH0gZWxzZSBpZiAocmVmc1trZXldLmluZGV4T2YocmVmKSA8IDApIHtcbiAgICAgICAgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gICAgICAgIHJlZnNba2V5XS5wdXNoKHJlZik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZnNba2V5XSA9IHJlZjtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBWaXJ0dWFsIERPTSBwYXRjaGluZyBhbGdvcml0aG0gYmFzZWQgb24gU25hYmJkb20gYnlcbiAqIFNpbW9uIEZyaWlzIFZpbmR1bSAoQHBhbGRlcGluZClcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZVxuICogaHR0cHM6Ly9naXRodWIuY29tL3BhbGRlcGluZC9zbmFiYmRvbS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKlxuICogbW9kaWZpZWQgYnkgRXZhbiBZb3UgKEB5eXg5OTA4MDMpXG4gKlxuICogTm90IHR5cGUtY2hlY2tpbmcgdGhpcyBiZWNhdXNlIHRoaXMgZmlsZSBpcyBwZXJmLWNyaXRpY2FsIGFuZCB0aGUgY29zdFxuICogb2YgbWFraW5nIGZsb3cgdW5kZXJzdGFuZCBpdCBpcyBub3Qgd29ydGggaXQuXG4gKi9cblxudmFyIGVtcHR5Tm9kZSA9IG5ldyBWTm9kZSgnJywge30sIFtdKTtcblxudmFyIGhvb2tzID0gWydjcmVhdGUnLCAnYWN0aXZhdGUnLCAndXBkYXRlJywgJ3JlbW92ZScsICdkZXN0cm95J107XG5cbmZ1bmN0aW9uIHNhbWVWbm9kZSAoYSwgYikge1xuICByZXR1cm4gKFxuICAgIGEua2V5ID09PSBiLmtleSAmJiAoXG4gICAgICAoXG4gICAgICAgIGEudGFnID09PSBiLnRhZyAmJlxuICAgICAgICBhLmlzQ29tbWVudCA9PT0gYi5pc0NvbW1lbnQgJiZcbiAgICAgICAgaXNEZWYoYS5kYXRhKSA9PT0gaXNEZWYoYi5kYXRhKSAmJlxuICAgICAgICBzYW1lSW5wdXRUeXBlKGEsIGIpXG4gICAgICApIHx8IChcbiAgICAgICAgaXNUcnVlKGEuaXNBc3luY1BsYWNlaG9sZGVyKSAmJlxuICAgICAgICBhLmFzeW5jRmFjdG9yeSA9PT0gYi5hc3luY0ZhY3RvcnkgJiZcbiAgICAgICAgaXNVbmRlZihiLmFzeW5jRmFjdG9yeS5lcnJvcilcbiAgICAgIClcbiAgICApXG4gIClcbn1cblxuZnVuY3Rpb24gc2FtZUlucHV0VHlwZSAoYSwgYikge1xuICBpZiAoYS50YWcgIT09ICdpbnB1dCcpIHsgcmV0dXJuIHRydWUgfVxuICB2YXIgaTtcbiAgdmFyIHR5cGVBID0gaXNEZWYoaSA9IGEuZGF0YSkgJiYgaXNEZWYoaSA9IGkuYXR0cnMpICYmIGkudHlwZTtcbiAgdmFyIHR5cGVCID0gaXNEZWYoaSA9IGIuZGF0YSkgJiYgaXNEZWYoaSA9IGkuYXR0cnMpICYmIGkudHlwZTtcbiAgcmV0dXJuIHR5cGVBID09PSB0eXBlQiB8fCBpc1RleHRJbnB1dFR5cGUodHlwZUEpICYmIGlzVGV4dElucHV0VHlwZSh0eXBlQilcbn1cblxuZnVuY3Rpb24gY3JlYXRlS2V5VG9PbGRJZHggKGNoaWxkcmVuLCBiZWdpbklkeCwgZW5kSWR4KSB7XG4gIHZhciBpLCBrZXk7XG4gIHZhciBtYXAgPSB7fTtcbiAgZm9yIChpID0gYmVnaW5JZHg7IGkgPD0gZW5kSWR4OyArK2kpIHtcbiAgICBrZXkgPSBjaGlsZHJlbltpXS5rZXk7XG4gICAgaWYgKGlzRGVmKGtleSkpIHsgbWFwW2tleV0gPSBpOyB9XG4gIH1cbiAgcmV0dXJuIG1hcFxufVxuXG5mdW5jdGlvbiBjcmVhdGVQYXRjaEZ1bmN0aW9uIChiYWNrZW5kKSB7XG4gIHZhciBpLCBqO1xuICB2YXIgY2JzID0ge307XG5cbiAgdmFyIG1vZHVsZXMgPSBiYWNrZW5kLm1vZHVsZXM7XG4gIHZhciBub2RlT3BzID0gYmFja2VuZC5ub2RlT3BzO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBob29rcy5sZW5ndGg7ICsraSkge1xuICAgIGNic1tob29rc1tpXV0gPSBbXTtcbiAgICBmb3IgKGogPSAwOyBqIDwgbW9kdWxlcy5sZW5ndGg7ICsraikge1xuICAgICAgaWYgKGlzRGVmKG1vZHVsZXNbal1baG9va3NbaV1dKSkge1xuICAgICAgICBjYnNbaG9va3NbaV1dLnB1c2gobW9kdWxlc1tqXVtob29rc1tpXV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGVtcHR5Tm9kZUF0IChlbG0pIHtcbiAgICByZXR1cm4gbmV3IFZOb2RlKG5vZGVPcHMudGFnTmFtZShlbG0pLnRvTG93ZXJDYXNlKCksIHt9LCBbXSwgdW5kZWZpbmVkLCBlbG0pXG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVSbUNiIChjaGlsZEVsbSwgbGlzdGVuZXJzKSB7XG4gICAgZnVuY3Rpb24gcmVtb3ZlJCQxICgpIHtcbiAgICAgIGlmICgtLXJlbW92ZSQkMS5saXN0ZW5lcnMgPT09IDApIHtcbiAgICAgICAgcmVtb3ZlTm9kZShjaGlsZEVsbSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJlbW92ZSQkMS5saXN0ZW5lcnMgPSBsaXN0ZW5lcnM7XG4gICAgcmV0dXJuIHJlbW92ZSQkMVxuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlTm9kZSAoZWwpIHtcbiAgICB2YXIgcGFyZW50ID0gbm9kZU9wcy5wYXJlbnROb2RlKGVsKTtcbiAgICAvLyBlbGVtZW50IG1heSBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGR1ZSB0byB2LWh0bWwgLyB2LXRleHRcbiAgICBpZiAoaXNEZWYocGFyZW50KSkge1xuICAgICAgbm9kZU9wcy5yZW1vdmVDaGlsZChwYXJlbnQsIGVsKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpc1Vua25vd25FbGVtZW50JCQxICh2bm9kZSwgaW5WUHJlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICFpblZQcmUgJiZcbiAgICAgICF2bm9kZS5ucyAmJlxuICAgICAgIShcbiAgICAgICAgY29uZmlnLmlnbm9yZWRFbGVtZW50cy5sZW5ndGggJiZcbiAgICAgICAgY29uZmlnLmlnbm9yZWRFbGVtZW50cy5zb21lKGZ1bmN0aW9uIChpZ25vcmUpIHtcbiAgICAgICAgICByZXR1cm4gaXNSZWdFeHAoaWdub3JlKVxuICAgICAgICAgICAgPyBpZ25vcmUudGVzdCh2bm9kZS50YWcpXG4gICAgICAgICAgICA6IGlnbm9yZSA9PT0gdm5vZGUudGFnXG4gICAgICAgIH0pXG4gICAgICApICYmXG4gICAgICBjb25maWcuaXNVbmtub3duRWxlbWVudCh2bm9kZS50YWcpXG4gICAgKVxuICB9XG5cbiAgdmFyIGNyZWF0aW5nRWxtSW5WUHJlID0gMDtcblxuICBmdW5jdGlvbiBjcmVhdGVFbG0gKFxuICAgIHZub2RlLFxuICAgIGluc2VydGVkVm5vZGVRdWV1ZSxcbiAgICBwYXJlbnRFbG0sXG4gICAgcmVmRWxtLFxuICAgIG5lc3RlZCxcbiAgICBvd25lckFycmF5LFxuICAgIGluZGV4XG4gICkge1xuICAgIGlmIChpc0RlZih2bm9kZS5lbG0pICYmIGlzRGVmKG93bmVyQXJyYXkpKSB7XG4gICAgICAvLyBUaGlzIHZub2RlIHdhcyB1c2VkIGluIGEgcHJldmlvdXMgcmVuZGVyIVxuICAgICAgLy8gbm93IGl0J3MgdXNlZCBhcyBhIG5ldyBub2RlLCBvdmVyd3JpdGluZyBpdHMgZWxtIHdvdWxkIGNhdXNlXG4gICAgICAvLyBwb3RlbnRpYWwgcGF0Y2ggZXJyb3JzIGRvd24gdGhlIHJvYWQgd2hlbiBpdCdzIHVzZWQgYXMgYW4gaW5zZXJ0aW9uXG4gICAgICAvLyByZWZlcmVuY2Ugbm9kZS4gSW5zdGVhZCwgd2UgY2xvbmUgdGhlIG5vZGUgb24tZGVtYW5kIGJlZm9yZSBjcmVhdGluZ1xuICAgICAgLy8gYXNzb2NpYXRlZCBET00gZWxlbWVudCBmb3IgaXQuXG4gICAgICB2bm9kZSA9IG93bmVyQXJyYXlbaW5kZXhdID0gY2xvbmVWTm9kZSh2bm9kZSk7XG4gICAgfVxuXG4gICAgdm5vZGUuaXNSb290SW5zZXJ0ID0gIW5lc3RlZDsgLy8gZm9yIHRyYW5zaXRpb24gZW50ZXIgY2hlY2tcbiAgICBpZiAoY3JlYXRlQ29tcG9uZW50KHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIHBhcmVudEVsbSwgcmVmRWxtKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICAgIHZhciBjaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuO1xuICAgIHZhciB0YWcgPSB2bm9kZS50YWc7XG4gICAgaWYgKGlzRGVmKHRhZykpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmIChkYXRhICYmIGRhdGEucHJlKSB7XG4gICAgICAgICAgY3JlYXRpbmdFbG1JblZQcmUrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNVbmtub3duRWxlbWVudCQkMSh2bm9kZSwgY3JlYXRpbmdFbG1JblZQcmUpKSB7XG4gICAgICAgICAgd2FybihcbiAgICAgICAgICAgICdVbmtub3duIGN1c3RvbSBlbGVtZW50OiA8JyArIHRhZyArICc+IC0gZGlkIHlvdSAnICtcbiAgICAgICAgICAgICdyZWdpc3RlciB0aGUgY29tcG9uZW50IGNvcnJlY3RseT8gRm9yIHJlY3Vyc2l2ZSBjb21wb25lbnRzLCAnICtcbiAgICAgICAgICAgICdtYWtlIHN1cmUgdG8gcHJvdmlkZSB0aGUgXCJuYW1lXCIgb3B0aW9uLicsXG4gICAgICAgICAgICB2bm9kZS5jb250ZXh0XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2bm9kZS5lbG0gPSB2bm9kZS5uc1xuICAgICAgICA/IG5vZGVPcHMuY3JlYXRlRWxlbWVudE5TKHZub2RlLm5zLCB0YWcpXG4gICAgICAgIDogbm9kZU9wcy5jcmVhdGVFbGVtZW50KHRhZywgdm5vZGUpO1xuICAgICAgc2V0U2NvcGUodm5vZGUpO1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIHtcbiAgICAgICAgY3JlYXRlQ2hpbGRyZW4odm5vZGUsIGNoaWxkcmVuLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgICAgICBpbnZva2VDcmVhdGVIb29rcyh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnQocGFyZW50RWxtLCB2bm9kZS5lbG0sIHJlZkVsbSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGRhdGEgJiYgZGF0YS5wcmUpIHtcbiAgICAgICAgY3JlYXRpbmdFbG1JblZQcmUtLTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVHJ1ZSh2bm9kZS5pc0NvbW1lbnQpKSB7XG4gICAgICB2bm9kZS5lbG0gPSBub2RlT3BzLmNyZWF0ZUNvbW1lbnQodm5vZGUudGV4dCk7XG4gICAgICBpbnNlcnQocGFyZW50RWxtLCB2bm9kZS5lbG0sIHJlZkVsbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZub2RlLmVsbSA9IG5vZGVPcHMuY3JlYXRlVGV4dE5vZGUodm5vZGUudGV4dCk7XG4gICAgICBpbnNlcnQocGFyZW50RWxtLCB2bm9kZS5lbG0sIHJlZkVsbSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50ICh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSkge1xuICAgIHZhciBpID0gdm5vZGUuZGF0YTtcbiAgICBpZiAoaXNEZWYoaSkpIHtcbiAgICAgIHZhciBpc1JlYWN0aXZhdGVkID0gaXNEZWYodm5vZGUuY29tcG9uZW50SW5zdGFuY2UpICYmIGkua2VlcEFsaXZlO1xuICAgICAgaWYgKGlzRGVmKGkgPSBpLmhvb2spICYmIGlzRGVmKGkgPSBpLmluaXQpKSB7XG4gICAgICAgIGkodm5vZGUsIGZhbHNlIC8qIGh5ZHJhdGluZyAqLyk7XG4gICAgICB9XG4gICAgICAvLyBhZnRlciBjYWxsaW5nIHRoZSBpbml0IGhvb2ssIGlmIHRoZSB2bm9kZSBpcyBhIGNoaWxkIGNvbXBvbmVudFxuICAgICAgLy8gaXQgc2hvdWxkJ3ZlIGNyZWF0ZWQgYSBjaGlsZCBpbnN0YW5jZSBhbmQgbW91bnRlZCBpdC4gdGhlIGNoaWxkXG4gICAgICAvLyBjb21wb25lbnQgYWxzbyBoYXMgc2V0IHRoZSBwbGFjZWhvbGRlciB2bm9kZSdzIGVsbS5cbiAgICAgIC8vIGluIHRoYXQgY2FzZSB3ZSBjYW4ganVzdCByZXR1cm4gdGhlIGVsZW1lbnQgYW5kIGJlIGRvbmUuXG4gICAgICBpZiAoaXNEZWYodm5vZGUuY29tcG9uZW50SW5zdGFuY2UpKSB7XG4gICAgICAgIGluaXRDb21wb25lbnQodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICAgIGluc2VydChwYXJlbnRFbG0sIHZub2RlLmVsbSwgcmVmRWxtKTtcbiAgICAgICAgaWYgKGlzVHJ1ZShpc1JlYWN0aXZhdGVkKSkge1xuICAgICAgICAgIHJlYWN0aXZhdGVDb21wb25lbnQodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdENvbXBvbmVudCAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGlmIChpc0RlZih2bm9kZS5kYXRhLnBlbmRpbmdJbnNlcnQpKSB7XG4gICAgICBpbnNlcnRlZFZub2RlUXVldWUucHVzaC5hcHBseShpbnNlcnRlZFZub2RlUXVldWUsIHZub2RlLmRhdGEucGVuZGluZ0luc2VydCk7XG4gICAgICB2bm9kZS5kYXRhLnBlbmRpbmdJbnNlcnQgPSBudWxsO1xuICAgIH1cbiAgICB2bm9kZS5lbG0gPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZS4kZWw7XG4gICAgaWYgKGlzUGF0Y2hhYmxlKHZub2RlKSkge1xuICAgICAgaW52b2tlQ3JlYXRlSG9va3Modm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICBzZXRTY29wZSh2bm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGVtcHR5IGNvbXBvbmVudCByb290LlxuICAgICAgLy8gc2tpcCBhbGwgZWxlbWVudC1yZWxhdGVkIG1vZHVsZXMgZXhjZXB0IGZvciByZWYgKCMzNDU1KVxuICAgICAgcmVnaXN0ZXJSZWYodm5vZGUpO1xuICAgICAgLy8gbWFrZSBzdXJlIHRvIGludm9rZSB0aGUgaW5zZXJ0IGhvb2tcbiAgICAgIGluc2VydGVkVm5vZGVRdWV1ZS5wdXNoKHZub2RlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWFjdGl2YXRlQ29tcG9uZW50ICh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIHJlZkVsbSkge1xuICAgIHZhciBpO1xuICAgIC8vIGhhY2sgZm9yICM0MzM5OiBhIHJlYWN0aXZhdGVkIGNvbXBvbmVudCB3aXRoIGlubmVyIHRyYW5zaXRpb25cbiAgICAvLyBkb2VzIG5vdCB0cmlnZ2VyIGJlY2F1c2UgdGhlIGlubmVyIG5vZGUncyBjcmVhdGVkIGhvb2tzIGFyZSBub3QgY2FsbGVkXG4gICAgLy8gYWdhaW4uIEl0J3Mgbm90IGlkZWFsIHRvIGludm9sdmUgbW9kdWxlLXNwZWNpZmljIGxvZ2ljIGluIGhlcmUgYnV0XG4gICAgLy8gdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGEgYmV0dGVyIHdheSB0byBkbyBpdC5cbiAgICB2YXIgaW5uZXJOb2RlID0gdm5vZGU7XG4gICAgd2hpbGUgKGlubmVyTm9kZS5jb21wb25lbnRJbnN0YW5jZSkge1xuICAgICAgaW5uZXJOb2RlID0gaW5uZXJOb2RlLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZTtcbiAgICAgIGlmIChpc0RlZihpID0gaW5uZXJOb2RlLmRhdGEpICYmIGlzRGVmKGkgPSBpLnRyYW5zaXRpb24pKSB7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMuYWN0aXZhdGUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICBjYnMuYWN0aXZhdGVbaV0oZW1wdHlOb2RlLCBpbm5lck5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGluc2VydGVkVm5vZGVRdWV1ZS5wdXNoKGlubmVyTm9kZSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVubGlrZSBhIG5ld2x5IGNyZWF0ZWQgY29tcG9uZW50LFxuICAgIC8vIGEgcmVhY3RpdmF0ZWQga2VlcC1hbGl2ZSBjb21wb25lbnQgZG9lc24ndCBpbnNlcnQgaXRzZWxmXG4gICAgaW5zZXJ0KHBhcmVudEVsbSwgdm5vZGUuZWxtLCByZWZFbG0pO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5zZXJ0IChwYXJlbnQsIGVsbSwgcmVmJCQxKSB7XG4gICAgaWYgKGlzRGVmKHBhcmVudCkpIHtcbiAgICAgIGlmIChpc0RlZihyZWYkJDEpKSB7XG4gICAgICAgIGlmIChub2RlT3BzLnBhcmVudE5vZGUocmVmJCQxKSA9PT0gcGFyZW50KSB7XG4gICAgICAgICAgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50LCBlbG0sIHJlZiQkMSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVPcHMuYXBwZW5kQ2hpbGQocGFyZW50LCBlbG0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUNoaWxkcmVuICh2bm9kZSwgY2hpbGRyZW4sIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgY2hlY2tEdXBsaWNhdGVLZXlzKGNoaWxkcmVuKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY3JlYXRlRWxtKGNoaWxkcmVuW2ldLCBpbnNlcnRlZFZub2RlUXVldWUsIHZub2RlLmVsbSwgbnVsbCwgdHJ1ZSwgY2hpbGRyZW4sIGkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNQcmltaXRpdmUodm5vZGUudGV4dCkpIHtcbiAgICAgIG5vZGVPcHMuYXBwZW5kQ2hpbGQodm5vZGUuZWxtLCBub2RlT3BzLmNyZWF0ZVRleHROb2RlKFN0cmluZyh2bm9kZS50ZXh0KSkpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGlzUGF0Y2hhYmxlICh2bm9kZSkge1xuICAgIHdoaWxlICh2bm9kZS5jb21wb25lbnRJbnN0YW5jZSkge1xuICAgICAgdm5vZGUgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7XG4gICAgfVxuICAgIHJldHVybiBpc0RlZih2bm9kZS50YWcpXG4gIH1cblxuICBmdW5jdGlvbiBpbnZva2VDcmVhdGVIb29rcyAodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSkge1xuICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IGNicy5jcmVhdGUubGVuZ3RoOyArK2kkMSkge1xuICAgICAgY2JzLmNyZWF0ZVtpJDFdKGVtcHR5Tm9kZSwgdm5vZGUpO1xuICAgIH1cbiAgICBpID0gdm5vZGUuZGF0YS5ob29rOyAvLyBSZXVzZSB2YXJpYWJsZVxuICAgIGlmIChpc0RlZihpKSkge1xuICAgICAgaWYgKGlzRGVmKGkuY3JlYXRlKSkgeyBpLmNyZWF0ZShlbXB0eU5vZGUsIHZub2RlKTsgfVxuICAgICAgaWYgKGlzRGVmKGkuaW5zZXJ0KSkgeyBpbnNlcnRlZFZub2RlUXVldWUucHVzaCh2bm9kZSk7IH1cbiAgICB9XG4gIH1cblxuICAvLyBzZXQgc2NvcGUgaWQgYXR0cmlidXRlIGZvciBzY29wZWQgQ1NTLlxuICAvLyB0aGlzIGlzIGltcGxlbWVudGVkIGFzIGEgc3BlY2lhbCBjYXNlIHRvIGF2b2lkIHRoZSBvdmVyaGVhZFxuICAvLyBvZiBnb2luZyB0aHJvdWdoIHRoZSBub3JtYWwgYXR0cmlidXRlIHBhdGNoaW5nIHByb2Nlc3MuXG4gIGZ1bmN0aW9uIHNldFNjb3BlICh2bm9kZSkge1xuICAgIHZhciBpO1xuICAgIGlmIChpc0RlZihpID0gdm5vZGUuZm5TY29wZUlkKSkge1xuICAgICAgbm9kZU9wcy5zZXRTdHlsZVNjb3BlKHZub2RlLmVsbSwgaSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBhbmNlc3RvciA9IHZub2RlO1xuICAgICAgd2hpbGUgKGFuY2VzdG9yKSB7XG4gICAgICAgIGlmIChpc0RlZihpID0gYW5jZXN0b3IuY29udGV4dCkgJiYgaXNEZWYoaSA9IGkuJG9wdGlvbnMuX3Njb3BlSWQpKSB7XG4gICAgICAgICAgbm9kZU9wcy5zZXRTdHlsZVNjb3BlKHZub2RlLmVsbSwgaSk7XG4gICAgICAgIH1cbiAgICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci5wYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGZvciBzbG90IGNvbnRlbnQgdGhleSBzaG91bGQgYWxzbyBnZXQgdGhlIHNjb3BlSWQgZnJvbSB0aGUgaG9zdCBpbnN0YW5jZS5cbiAgICBpZiAoaXNEZWYoaSA9IGFjdGl2ZUluc3RhbmNlKSAmJlxuICAgICAgaSAhPT0gdm5vZGUuY29udGV4dCAmJlxuICAgICAgaSAhPT0gdm5vZGUuZm5Db250ZXh0ICYmXG4gICAgICBpc0RlZihpID0gaS4kb3B0aW9ucy5fc2NvcGVJZClcbiAgICApIHtcbiAgICAgIG5vZGVPcHMuc2V0U3R5bGVTY29wZSh2bm9kZS5lbG0sIGkpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZFZub2RlcyAocGFyZW50RWxtLCByZWZFbG0sIHZub2Rlcywgc3RhcnRJZHgsIGVuZElkeCwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKSB7XG4gICAgZm9yICg7IHN0YXJ0SWR4IDw9IGVuZElkeDsgKytzdGFydElkeCkge1xuICAgICAgY3JlYXRlRWxtKHZub2Rlc1tzdGFydElkeF0sIGluc2VydGVkVm5vZGVRdWV1ZSwgcGFyZW50RWxtLCByZWZFbG0sIGZhbHNlLCB2bm9kZXMsIHN0YXJ0SWR4KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbnZva2VEZXN0cm95SG9vayAodm5vZGUpIHtcbiAgICB2YXIgaSwgajtcbiAgICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAgaWYgKGlzRGVmKGRhdGEpKSB7XG4gICAgICBpZiAoaXNEZWYoaSA9IGRhdGEuaG9vaykgJiYgaXNEZWYoaSA9IGkuZGVzdHJveSkpIHsgaSh2bm9kZSk7IH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMuZGVzdHJveS5sZW5ndGg7ICsraSkgeyBjYnMuZGVzdHJveVtpXSh2bm9kZSk7IH1cbiAgICB9XG4gICAgaWYgKGlzRGVmKGkgPSB2bm9kZS5jaGlsZHJlbikpIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCB2bm9kZS5jaGlsZHJlbi5sZW5ndGg7ICsraikge1xuICAgICAgICBpbnZva2VEZXN0cm95SG9vayh2bm9kZS5jaGlsZHJlbltqXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlVm5vZGVzIChwYXJlbnRFbG0sIHZub2Rlcywgc3RhcnRJZHgsIGVuZElkeCkge1xuICAgIGZvciAoOyBzdGFydElkeCA8PSBlbmRJZHg7ICsrc3RhcnRJZHgpIHtcbiAgICAgIHZhciBjaCA9IHZub2Rlc1tzdGFydElkeF07XG4gICAgICBpZiAoaXNEZWYoY2gpKSB7XG4gICAgICAgIGlmIChpc0RlZihjaC50YWcpKSB7XG4gICAgICAgICAgcmVtb3ZlQW5kSW52b2tlUmVtb3ZlSG9vayhjaCk7XG4gICAgICAgICAgaW52b2tlRGVzdHJveUhvb2soY2gpO1xuICAgICAgICB9IGVsc2UgeyAvLyBUZXh0IG5vZGVcbiAgICAgICAgICByZW1vdmVOb2RlKGNoLmVsbSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVBbmRJbnZva2VSZW1vdmVIb29rICh2bm9kZSwgcm0pIHtcbiAgICBpZiAoaXNEZWYocm0pIHx8IGlzRGVmKHZub2RlLmRhdGEpKSB7XG4gICAgICB2YXIgaTtcbiAgICAgIHZhciBsaXN0ZW5lcnMgPSBjYnMucmVtb3ZlLmxlbmd0aCArIDE7XG4gICAgICBpZiAoaXNEZWYocm0pKSB7XG4gICAgICAgIC8vIHdlIGhhdmUgYSByZWN1cnNpdmVseSBwYXNzZWQgZG93biBybSBjYWxsYmFja1xuICAgICAgICAvLyBpbmNyZWFzZSB0aGUgbGlzdGVuZXJzIGNvdW50XG4gICAgICAgIHJtLmxpc3RlbmVycyArPSBsaXN0ZW5lcnM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBkaXJlY3RseSByZW1vdmluZ1xuICAgICAgICBybSA9IGNyZWF0ZVJtQ2Iodm5vZGUuZWxtLCBsaXN0ZW5lcnMpO1xuICAgICAgfVxuICAgICAgLy8gcmVjdXJzaXZlbHkgaW52b2tlIGhvb2tzIG9uIGNoaWxkIGNvbXBvbmVudCByb290IG5vZGVcbiAgICAgIGlmIChpc0RlZihpID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UpICYmIGlzRGVmKGkgPSBpLl92bm9kZSkgJiYgaXNEZWYoaS5kYXRhKSkge1xuICAgICAgICByZW1vdmVBbmRJbnZva2VSZW1vdmVIb29rKGksIHJtKTtcbiAgICAgIH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMucmVtb3ZlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNicy5yZW1vdmVbaV0odm5vZGUsIHJtKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0RlZihpID0gdm5vZGUuZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5yZW1vdmUpKSB7XG4gICAgICAgIGkodm5vZGUsIHJtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJtKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZU5vZGUodm5vZGUuZWxtKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGVDaGlsZHJlbiAocGFyZW50RWxtLCBvbGRDaCwgbmV3Q2gsIGluc2VydGVkVm5vZGVRdWV1ZSwgcmVtb3ZlT25seSkge1xuICAgIHZhciBvbGRTdGFydElkeCA9IDA7XG4gICAgdmFyIG5ld1N0YXJ0SWR4ID0gMDtcbiAgICB2YXIgb2xkRW5kSWR4ID0gb2xkQ2gubGVuZ3RoIC0gMTtcbiAgICB2YXIgb2xkU3RhcnRWbm9kZSA9IG9sZENoWzBdO1xuICAgIHZhciBvbGRFbmRWbm9kZSA9IG9sZENoW29sZEVuZElkeF07XG4gICAgdmFyIG5ld0VuZElkeCA9IG5ld0NoLmxlbmd0aCAtIDE7XG4gICAgdmFyIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFswXTtcbiAgICB2YXIgbmV3RW5kVm5vZGUgPSBuZXdDaFtuZXdFbmRJZHhdO1xuICAgIHZhciBvbGRLZXlUb0lkeCwgaWR4SW5PbGQsIHZub2RlVG9Nb3ZlLCByZWZFbG07XG5cbiAgICAvLyByZW1vdmVPbmx5IGlzIGEgc3BlY2lhbCBmbGFnIHVzZWQgb25seSBieSA8dHJhbnNpdGlvbi1ncm91cD5cbiAgICAvLyB0byBlbnN1cmUgcmVtb3ZlZCBlbGVtZW50cyBzdGF5IGluIGNvcnJlY3QgcmVsYXRpdmUgcG9zaXRpb25zXG4gICAgLy8gZHVyaW5nIGxlYXZpbmcgdHJhbnNpdGlvbnNcbiAgICB2YXIgY2FuTW92ZSA9ICFyZW1vdmVPbmx5O1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNoZWNrRHVwbGljYXRlS2V5cyhuZXdDaCk7XG4gICAgfVxuXG4gICAgd2hpbGUgKG9sZFN0YXJ0SWR4IDw9IG9sZEVuZElkeCAmJiBuZXdTdGFydElkeCA8PSBuZXdFbmRJZHgpIHtcbiAgICAgIGlmIChpc1VuZGVmKG9sZFN0YXJ0Vm5vZGUpKSB7XG4gICAgICAgIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFsrK29sZFN0YXJ0SWR4XTsgLy8gVm5vZGUgaGFzIGJlZW4gbW92ZWQgbGVmdFxuICAgICAgfSBlbHNlIGlmIChpc1VuZGVmKG9sZEVuZFZub2RlKSkge1xuICAgICAgICBvbGRFbmRWbm9kZSA9IG9sZENoWy0tb2xkRW5kSWR4XTtcbiAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld1N0YXJ0Vm5vZGUpKSB7XG4gICAgICAgIHBhdGNoVm5vZGUob2xkU3RhcnRWbm9kZSwgbmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBuZXdDaCwgbmV3U3RhcnRJZHgpO1xuICAgICAgICBvbGRTdGFydFZub2RlID0gb2xkQ2hbKytvbGRTdGFydElkeF07XG4gICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0SWR4XTtcbiAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9sZEVuZFZub2RlLCBuZXdFbmRWbm9kZSkpIHtcbiAgICAgICAgcGF0Y2hWbm9kZShvbGRFbmRWbm9kZSwgbmV3RW5kVm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgbmV3Q2gsIG5ld0VuZElkeCk7XG4gICAgICAgIG9sZEVuZFZub2RlID0gb2xkQ2hbLS1vbGRFbmRJZHhdO1xuICAgICAgICBuZXdFbmRWbm9kZSA9IG5ld0NoWy0tbmV3RW5kSWR4XTtcbiAgICAgIH0gZWxzZSBpZiAoc2FtZVZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld0VuZFZub2RlKSkgeyAvLyBWbm9kZSBtb3ZlZCByaWdodFxuICAgICAgICBwYXRjaFZub2RlKG9sZFN0YXJ0Vm5vZGUsIG5ld0VuZFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIG5ld0NoLCBuZXdFbmRJZHgpO1xuICAgICAgICBjYW5Nb3ZlICYmIG5vZGVPcHMuaW5zZXJ0QmVmb3JlKHBhcmVudEVsbSwgb2xkU3RhcnRWbm9kZS5lbG0sIG5vZGVPcHMubmV4dFNpYmxpbmcob2xkRW5kVm5vZGUuZWxtKSk7XG4gICAgICAgIG9sZFN0YXJ0Vm5vZGUgPSBvbGRDaFsrK29sZFN0YXJ0SWR4XTtcbiAgICAgICAgbmV3RW5kVm5vZGUgPSBuZXdDaFstLW5ld0VuZElkeF07XG4gICAgICB9IGVsc2UgaWYgKHNhbWVWbm9kZShvbGRFbmRWbm9kZSwgbmV3U3RhcnRWbm9kZSkpIHsgLy8gVm5vZGUgbW92ZWQgbGVmdFxuICAgICAgICBwYXRjaFZub2RlKG9sZEVuZFZub2RlLCBuZXdTdGFydFZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIG5ld0NoLCBuZXdTdGFydElkeCk7XG4gICAgICAgIGNhbk1vdmUgJiYgbm9kZU9wcy5pbnNlcnRCZWZvcmUocGFyZW50RWxtLCBvbGRFbmRWbm9kZS5lbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtKTtcbiAgICAgICAgb2xkRW5kVm5vZGUgPSBvbGRDaFstLW9sZEVuZElkeF07XG4gICAgICAgIG5ld1N0YXJ0Vm5vZGUgPSBuZXdDaFsrK25ld1N0YXJ0SWR4XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpc1VuZGVmKG9sZEtleVRvSWR4KSkgeyBvbGRLZXlUb0lkeCA9IGNyZWF0ZUtleVRvT2xkSWR4KG9sZENoLCBvbGRTdGFydElkeCwgb2xkRW5kSWR4KTsgfVxuICAgICAgICBpZHhJbk9sZCA9IGlzRGVmKG5ld1N0YXJ0Vm5vZGUua2V5KVxuICAgICAgICAgID8gb2xkS2V5VG9JZHhbbmV3U3RhcnRWbm9kZS5rZXldXG4gICAgICAgICAgOiBmaW5kSWR4SW5PbGQobmV3U3RhcnRWbm9kZSwgb2xkQ2gsIG9sZFN0YXJ0SWR4LCBvbGRFbmRJZHgpO1xuICAgICAgICBpZiAoaXNVbmRlZihpZHhJbk9sZCkpIHsgLy8gTmV3IGVsZW1lbnRcbiAgICAgICAgICBjcmVhdGVFbG0obmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtLCBmYWxzZSwgbmV3Q2gsIG5ld1N0YXJ0SWR4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2bm9kZVRvTW92ZSA9IG9sZENoW2lkeEluT2xkXTtcbiAgICAgICAgICBpZiAoc2FtZVZub2RlKHZub2RlVG9Nb3ZlLCBuZXdTdGFydFZub2RlKSkge1xuICAgICAgICAgICAgcGF0Y2hWbm9kZSh2bm9kZVRvTW92ZSwgbmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBuZXdDaCwgbmV3U3RhcnRJZHgpO1xuICAgICAgICAgICAgb2xkQ2hbaWR4SW5PbGRdID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgY2FuTW92ZSAmJiBub2RlT3BzLmluc2VydEJlZm9yZShwYXJlbnRFbG0sIHZub2RlVG9Nb3ZlLmVsbSwgb2xkU3RhcnRWbm9kZS5lbG0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBzYW1lIGtleSBidXQgZGlmZmVyZW50IGVsZW1lbnQuIHRyZWF0IGFzIG5ldyBlbGVtZW50XG4gICAgICAgICAgICBjcmVhdGVFbG0obmV3U3RhcnRWbm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBwYXJlbnRFbG0sIG9sZFN0YXJ0Vm5vZGUuZWxtLCBmYWxzZSwgbmV3Q2gsIG5ld1N0YXJ0SWR4KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbmV3U3RhcnRWbm9kZSA9IG5ld0NoWysrbmV3U3RhcnRJZHhdO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob2xkU3RhcnRJZHggPiBvbGRFbmRJZHgpIHtcbiAgICAgIHJlZkVsbSA9IGlzVW5kZWYobmV3Q2hbbmV3RW5kSWR4ICsgMV0pID8gbnVsbCA6IG5ld0NoW25ld0VuZElkeCArIDFdLmVsbTtcbiAgICAgIGFkZFZub2RlcyhwYXJlbnRFbG0sIHJlZkVsbSwgbmV3Q2gsIG5ld1N0YXJ0SWR4LCBuZXdFbmRJZHgsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgfSBlbHNlIGlmIChuZXdTdGFydElkeCA+IG5ld0VuZElkeCkge1xuICAgICAgcmVtb3ZlVm5vZGVzKHBhcmVudEVsbSwgb2xkQ2gsIG9sZFN0YXJ0SWR4LCBvbGRFbmRJZHgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNoZWNrRHVwbGljYXRlS2V5cyAoY2hpbGRyZW4pIHtcbiAgICB2YXIgc2VlbktleXMgPSB7fTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdm5vZGUgPSBjaGlsZHJlbltpXTtcbiAgICAgIHZhciBrZXkgPSB2bm9kZS5rZXk7XG4gICAgICBpZiAoaXNEZWYoa2V5KSkge1xuICAgICAgICBpZiAoc2VlbktleXNba2V5XSkge1xuICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAoXCJEdXBsaWNhdGUga2V5cyBkZXRlY3RlZDogJ1wiICsga2V5ICsgXCInLiBUaGlzIG1heSBjYXVzZSBhbiB1cGRhdGUgZXJyb3IuXCIpLFxuICAgICAgICAgICAgdm5vZGUuY29udGV4dFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VlbktleXNba2V5XSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBmaW5kSWR4SW5PbGQgKG5vZGUsIG9sZENoLCBzdGFydCwgZW5kKSB7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHtcbiAgICAgIHZhciBjID0gb2xkQ2hbaV07XG4gICAgICBpZiAoaXNEZWYoYykgJiYgc2FtZVZub2RlKG5vZGUsIGMpKSB7IHJldHVybiBpIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXRjaFZub2RlIChcbiAgICBvbGRWbm9kZSxcbiAgICB2bm9kZSxcbiAgICBpbnNlcnRlZFZub2RlUXVldWUsXG4gICAgb3duZXJBcnJheSxcbiAgICBpbmRleCxcbiAgICByZW1vdmVPbmx5XG4gICkge1xuICAgIGlmIChvbGRWbm9kZSA9PT0gdm5vZGUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChpc0RlZih2bm9kZS5lbG0pICYmIGlzRGVmKG93bmVyQXJyYXkpKSB7XG4gICAgICAvLyBjbG9uZSByZXVzZWQgdm5vZGVcbiAgICAgIHZub2RlID0gb3duZXJBcnJheVtpbmRleF0gPSBjbG9uZVZOb2RlKHZub2RlKTtcbiAgICB9XG5cbiAgICB2YXIgZWxtID0gdm5vZGUuZWxtID0gb2xkVm5vZGUuZWxtO1xuXG4gICAgaWYgKGlzVHJ1ZShvbGRWbm9kZS5pc0FzeW5jUGxhY2Vob2xkZXIpKSB7XG4gICAgICBpZiAoaXNEZWYodm5vZGUuYXN5bmNGYWN0b3J5LnJlc29sdmVkKSkge1xuICAgICAgICBoeWRyYXRlKG9sZFZub2RlLmVsbSwgdm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2bm9kZS5pc0FzeW5jUGxhY2Vob2xkZXIgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gcmV1c2UgZWxlbWVudCBmb3Igc3RhdGljIHRyZWVzLlxuICAgIC8vIG5vdGUgd2Ugb25seSBkbyB0aGlzIGlmIHRoZSB2bm9kZSBpcyBjbG9uZWQgLVxuICAgIC8vIGlmIHRoZSBuZXcgbm9kZSBpcyBub3QgY2xvbmVkIGl0IG1lYW5zIHRoZSByZW5kZXIgZnVuY3Rpb25zIGhhdmUgYmVlblxuICAgIC8vIHJlc2V0IGJ5IHRoZSBob3QtcmVsb2FkLWFwaSBhbmQgd2UgbmVlZCB0byBkbyBhIHByb3BlciByZS1yZW5kZXIuXG4gICAgaWYgKGlzVHJ1ZSh2bm9kZS5pc1N0YXRpYykgJiZcbiAgICAgIGlzVHJ1ZShvbGRWbm9kZS5pc1N0YXRpYykgJiZcbiAgICAgIHZub2RlLmtleSA9PT0gb2xkVm5vZGUua2V5ICYmXG4gICAgICAoaXNUcnVlKHZub2RlLmlzQ2xvbmVkKSB8fCBpc1RydWUodm5vZGUuaXNPbmNlKSlcbiAgICApIHtcbiAgICAgIHZub2RlLmNvbXBvbmVudEluc3RhbmNlID0gb2xkVm5vZGUuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgaTtcbiAgICB2YXIgZGF0YSA9IHZub2RlLmRhdGE7XG4gICAgaWYgKGlzRGVmKGRhdGEpICYmIGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLnByZXBhdGNoKSkge1xuICAgICAgaShvbGRWbm9kZSwgdm5vZGUpO1xuICAgIH1cblxuICAgIHZhciBvbGRDaCA9IG9sZFZub2RlLmNoaWxkcmVuO1xuICAgIHZhciBjaCA9IHZub2RlLmNoaWxkcmVuO1xuICAgIGlmIChpc0RlZihkYXRhKSAmJiBpc1BhdGNoYWJsZSh2bm9kZSkpIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjYnMudXBkYXRlLmxlbmd0aDsgKytpKSB7IGNicy51cGRhdGVbaV0ob2xkVm5vZGUsIHZub2RlKTsgfVxuICAgICAgaWYgKGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLnVwZGF0ZSkpIHsgaShvbGRWbm9kZSwgdm5vZGUpOyB9XG4gICAgfVxuICAgIGlmIChpc1VuZGVmKHZub2RlLnRleHQpKSB7XG4gICAgICBpZiAoaXNEZWYob2xkQ2gpICYmIGlzRGVmKGNoKSkge1xuICAgICAgICBpZiAob2xkQ2ggIT09IGNoKSB7IHVwZGF0ZUNoaWxkcmVuKGVsbSwgb2xkQ2gsIGNoLCBpbnNlcnRlZFZub2RlUXVldWUsIHJlbW92ZU9ubHkpOyB9XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKGNoKSkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIGNoZWNrRHVwbGljYXRlS2V5cyhjaCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRGVmKG9sZFZub2RlLnRleHQpKSB7IG5vZGVPcHMuc2V0VGV4dENvbnRlbnQoZWxtLCAnJyk7IH1cbiAgICAgICAgYWRkVm5vZGVzKGVsbSwgbnVsbCwgY2gsIDAsIGNoLmxlbmd0aCAtIDEsIGluc2VydGVkVm5vZGVRdWV1ZSk7XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKG9sZENoKSkge1xuICAgICAgICByZW1vdmVWbm9kZXMoZWxtLCBvbGRDaCwgMCwgb2xkQ2gubGVuZ3RoIC0gMSk7XG4gICAgICB9IGVsc2UgaWYgKGlzRGVmKG9sZFZub2RlLnRleHQpKSB7XG4gICAgICAgIG5vZGVPcHMuc2V0VGV4dENvbnRlbnQoZWxtLCAnJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChvbGRWbm9kZS50ZXh0ICE9PSB2bm9kZS50ZXh0KSB7XG4gICAgICBub2RlT3BzLnNldFRleHRDb250ZW50KGVsbSwgdm5vZGUudGV4dCk7XG4gICAgfVxuICAgIGlmIChpc0RlZihkYXRhKSkge1xuICAgICAgaWYgKGlzRGVmKGkgPSBkYXRhLmhvb2spICYmIGlzRGVmKGkgPSBpLnBvc3RwYXRjaCkpIHsgaShvbGRWbm9kZSwgdm5vZGUpOyB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlSW5zZXJ0SG9vayAodm5vZGUsIHF1ZXVlLCBpbml0aWFsKSB7XG4gICAgLy8gZGVsYXkgaW5zZXJ0IGhvb2tzIGZvciBjb21wb25lbnQgcm9vdCBub2RlcywgaW52b2tlIHRoZW0gYWZ0ZXIgdGhlXG4gICAgLy8gZWxlbWVudCBpcyByZWFsbHkgaW5zZXJ0ZWRcbiAgICBpZiAoaXNUcnVlKGluaXRpYWwpICYmIGlzRGVmKHZub2RlLnBhcmVudCkpIHtcbiAgICAgIHZub2RlLnBhcmVudC5kYXRhLnBlbmRpbmdJbnNlcnQgPSBxdWV1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICBxdWV1ZVtpXS5kYXRhLmhvb2suaW5zZXJ0KHF1ZXVlW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgaHlkcmF0aW9uQmFpbGVkID0gZmFsc2U7XG4gIC8vIGxpc3Qgb2YgbW9kdWxlcyB0aGF0IGNhbiBza2lwIGNyZWF0ZSBob29rIGR1cmluZyBoeWRyYXRpb24gYmVjYXVzZSB0aGV5XG4gIC8vIGFyZSBhbHJlYWR5IHJlbmRlcmVkIG9uIHRoZSBjbGllbnQgb3IgaGFzIG5vIG5lZWQgZm9yIGluaXRpYWxpemF0aW9uXG4gIC8vIE5vdGU6IHN0eWxlIGlzIGV4Y2x1ZGVkIGJlY2F1c2UgaXQgcmVsaWVzIG9uIGluaXRpYWwgY2xvbmUgZm9yIGZ1dHVyZVxuICAvLyBkZWVwIHVwZGF0ZXMgKCM3MDYzKS5cbiAgdmFyIGlzUmVuZGVyZWRNb2R1bGUgPSBtYWtlTWFwKCdhdHRycyxjbGFzcyxzdGF0aWNDbGFzcyxzdGF0aWNTdHlsZSxrZXknKTtcblxuICAvLyBOb3RlOiB0aGlzIGlzIGEgYnJvd3Nlci1vbmx5IGZ1bmN0aW9uIHNvIHdlIGNhbiBhc3N1bWUgZWxtcyBhcmUgRE9NIG5vZGVzLlxuICBmdW5jdGlvbiBoeWRyYXRlIChlbG0sIHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIGluVlByZSkge1xuICAgIHZhciBpO1xuICAgIHZhciB0YWcgPSB2bm9kZS50YWc7XG4gICAgdmFyIGRhdGEgPSB2bm9kZS5kYXRhO1xuICAgIHZhciBjaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuO1xuICAgIGluVlByZSA9IGluVlByZSB8fCAoZGF0YSAmJiBkYXRhLnByZSk7XG4gICAgdm5vZGUuZWxtID0gZWxtO1xuXG4gICAgaWYgKGlzVHJ1ZSh2bm9kZS5pc0NvbW1lbnQpICYmIGlzRGVmKHZub2RlLmFzeW5jRmFjdG9yeSkpIHtcbiAgICAgIHZub2RlLmlzQXN5bmNQbGFjZWhvbGRlciA9IHRydWU7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICAvLyBhc3NlcnQgbm9kZSBtYXRjaFxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoIWFzc2VydE5vZGVNYXRjaChlbG0sIHZub2RlLCBpblZQcmUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgIGlmIChpc0RlZihpID0gZGF0YS5ob29rKSAmJiBpc0RlZihpID0gaS5pbml0KSkgeyBpKHZub2RlLCB0cnVlIC8qIGh5ZHJhdGluZyAqLyk7IH1cbiAgICAgIGlmIChpc0RlZihpID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UpKSB7XG4gICAgICAgIC8vIGNoaWxkIGNvbXBvbmVudC4gaXQgc2hvdWxkIGhhdmUgaHlkcmF0ZWQgaXRzIG93biB0cmVlLlxuICAgICAgICBpbml0Q29tcG9uZW50KHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNEZWYodGFnKSkge1xuICAgICAgaWYgKGlzRGVmKGNoaWxkcmVuKSkge1xuICAgICAgICAvLyBlbXB0eSBlbGVtZW50LCBhbGxvdyBjbGllbnQgdG8gcGljayB1cCBhbmQgcG9wdWxhdGUgY2hpbGRyZW5cbiAgICAgICAgaWYgKCFlbG0uaGFzQ2hpbGROb2RlcygpKSB7XG4gICAgICAgICAgY3JlYXRlQ2hpbGRyZW4odm5vZGUsIGNoaWxkcmVuLCBpbnNlcnRlZFZub2RlUXVldWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHYtaHRtbCBhbmQgZG9tUHJvcHM6IGlubmVySFRNTFxuICAgICAgICAgIGlmIChpc0RlZihpID0gZGF0YSkgJiYgaXNEZWYoaSA9IGkuZG9tUHJvcHMpICYmIGlzRGVmKGkgPSBpLmlubmVySFRNTCkpIHtcbiAgICAgICAgICAgIGlmIChpICE9PSBlbG0uaW5uZXJIVE1MKSB7XG4gICAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAgICAgICAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICAgICAgICFoeWRyYXRpb25CYWlsZWRcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaHlkcmF0aW9uQmFpbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1BhcmVudDogJywgZWxtKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ3NlcnZlciBpbm5lckhUTUw6ICcsIGkpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignY2xpZW50IGlubmVySFRNTDogJywgZWxtLmlubmVySFRNTCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGl0ZXJhdGUgYW5kIGNvbXBhcmUgY2hpbGRyZW4gbGlzdHNcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbk1hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBjaGlsZE5vZGUgPSBlbG0uZmlyc3RDaGlsZDtcbiAgICAgICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IGNoaWxkcmVuLmxlbmd0aDsgaSQxKyspIHtcbiAgICAgICAgICAgICAgaWYgKCFjaGlsZE5vZGUgfHwgIWh5ZHJhdGUoY2hpbGROb2RlLCBjaGlsZHJlbltpJDFdLCBpbnNlcnRlZFZub2RlUXVldWUsIGluVlByZSkpIHtcbiAgICAgICAgICAgICAgICBjaGlsZHJlbk1hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBpZiBjaGlsZE5vZGUgaXMgbm90IG51bGwsIGl0IG1lYW5zIHRoZSBhY3R1YWwgY2hpbGROb2RlcyBsaXN0IGlzXG4gICAgICAgICAgICAvLyBsb25nZXIgdGhhbiB0aGUgdmlydHVhbCBjaGlsZHJlbiBsaXN0LlxuICAgICAgICAgICAgaWYgKCFjaGlsZHJlbk1hdGNoIHx8IGNoaWxkTm9kZSkge1xuICAgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgICAgICAhaHlkcmF0aW9uQmFpbGVkXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGh5ZHJhdGlvbkJhaWxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdQYXJlbnQ6ICcsIGVsbSk7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdNaXNtYXRjaGluZyBjaGlsZE5vZGVzIHZzLiBWTm9kZXM6ICcsIGVsbS5jaGlsZE5vZGVzLCBjaGlsZHJlbik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaXNEZWYoZGF0YSkpIHtcbiAgICAgICAgdmFyIGZ1bGxJbnZva2UgPSBmYWxzZTtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIGRhdGEpIHtcbiAgICAgICAgICBpZiAoIWlzUmVuZGVyZWRNb2R1bGUoa2V5KSkge1xuICAgICAgICAgICAgZnVsbEludm9rZSA9IHRydWU7XG4gICAgICAgICAgICBpbnZva2VDcmVhdGVIb29rcyh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghZnVsbEludm9rZSAmJiBkYXRhWydjbGFzcyddKSB7XG4gICAgICAgICAgLy8gZW5zdXJlIGNvbGxlY3RpbmcgZGVwcyBmb3IgZGVlcCBjbGFzcyBiaW5kaW5ncyBmb3IgZnV0dXJlIHVwZGF0ZXNcbiAgICAgICAgICB0cmF2ZXJzZShkYXRhWydjbGFzcyddKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZWxtLmRhdGEgIT09IHZub2RlLnRleHQpIHtcbiAgICAgIGVsbS5kYXRhID0gdm5vZGUudGV4dDtcbiAgICB9XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGZ1bmN0aW9uIGFzc2VydE5vZGVNYXRjaCAobm9kZSwgdm5vZGUsIGluVlByZSkge1xuICAgIGlmIChpc0RlZih2bm9kZS50YWcpKSB7XG4gICAgICByZXR1cm4gdm5vZGUudGFnLmluZGV4T2YoJ3Z1ZS1jb21wb25lbnQnKSA9PT0gMCB8fCAoXG4gICAgICAgICFpc1Vua25vd25FbGVtZW50JCQxKHZub2RlLCBpblZQcmUpICYmXG4gICAgICAgIHZub2RlLnRhZy50b0xvd2VyQ2FzZSgpID09PSAobm9kZS50YWdOYW1lICYmIG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpKVxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PT0gKHZub2RlLmlzQ29tbWVudCA/IDggOiAzKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBwYXRjaCAob2xkVm5vZGUsIHZub2RlLCBoeWRyYXRpbmcsIHJlbW92ZU9ubHkpIHtcbiAgICBpZiAoaXNVbmRlZih2bm9kZSkpIHtcbiAgICAgIGlmIChpc0RlZihvbGRWbm9kZSkpIHsgaW52b2tlRGVzdHJveUhvb2sob2xkVm5vZGUpOyB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgaXNJbml0aWFsUGF0Y2ggPSBmYWxzZTtcbiAgICB2YXIgaW5zZXJ0ZWRWbm9kZVF1ZXVlID0gW107XG5cbiAgICBpZiAoaXNVbmRlZihvbGRWbm9kZSkpIHtcbiAgICAgIC8vIGVtcHR5IG1vdW50IChsaWtlbHkgYXMgY29tcG9uZW50KSwgY3JlYXRlIG5ldyByb290IGVsZW1lbnRcbiAgICAgIGlzSW5pdGlhbFBhdGNoID0gdHJ1ZTtcbiAgICAgIGNyZWF0ZUVsbSh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGlzUmVhbEVsZW1lbnQgPSBpc0RlZihvbGRWbm9kZS5ub2RlVHlwZSk7XG4gICAgICBpZiAoIWlzUmVhbEVsZW1lbnQgJiYgc2FtZVZub2RlKG9sZFZub2RlLCB2bm9kZSkpIHtcbiAgICAgICAgLy8gcGF0Y2ggZXhpc3Rpbmcgcm9vdCBub2RlXG4gICAgICAgIHBhdGNoVm5vZGUob2xkVm5vZGUsIHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUsIG51bGwsIG51bGwsIHJlbW92ZU9ubHkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGlzUmVhbEVsZW1lbnQpIHtcbiAgICAgICAgICAvLyBtb3VudGluZyB0byBhIHJlYWwgZWxlbWVudFxuICAgICAgICAgIC8vIGNoZWNrIGlmIHRoaXMgaXMgc2VydmVyLXJlbmRlcmVkIGNvbnRlbnQgYW5kIGlmIHdlIGNhbiBwZXJmb3JtXG4gICAgICAgICAgLy8gYSBzdWNjZXNzZnVsIGh5ZHJhdGlvbi5cbiAgICAgICAgICBpZiAob2xkVm5vZGUubm9kZVR5cGUgPT09IDEgJiYgb2xkVm5vZGUuaGFzQXR0cmlidXRlKFNTUl9BVFRSKSkge1xuICAgICAgICAgICAgb2xkVm5vZGUucmVtb3ZlQXR0cmlidXRlKFNTUl9BVFRSKTtcbiAgICAgICAgICAgIGh5ZHJhdGluZyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc1RydWUoaHlkcmF0aW5nKSkge1xuICAgICAgICAgICAgaWYgKGh5ZHJhdGUob2xkVm5vZGUsIHZub2RlLCBpbnNlcnRlZFZub2RlUXVldWUpKSB7XG4gICAgICAgICAgICAgIGludm9rZUluc2VydEhvb2sodm5vZGUsIGluc2VydGVkVm5vZGVRdWV1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgIHJldHVybiBvbGRWbm9kZVxuICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAgICAgJ1RoZSBjbGllbnQtc2lkZSByZW5kZXJlZCB2aXJ0dWFsIERPTSB0cmVlIGlzIG5vdCBtYXRjaGluZyAnICtcbiAgICAgICAgICAgICAgICAnc2VydmVyLXJlbmRlcmVkIGNvbnRlbnQuIFRoaXMgaXMgbGlrZWx5IGNhdXNlZCBieSBpbmNvcnJlY3QgJyArXG4gICAgICAgICAgICAgICAgJ0hUTUwgbWFya3VwLCBmb3IgZXhhbXBsZSBuZXN0aW5nIGJsb2NrLWxldmVsIGVsZW1lbnRzIGluc2lkZSAnICtcbiAgICAgICAgICAgICAgICAnPHA+LCBvciBtaXNzaW5nIDx0Ym9keT4uIEJhaWxpbmcgaHlkcmF0aW9uIGFuZCBwZXJmb3JtaW5nICcgK1xuICAgICAgICAgICAgICAgICdmdWxsIGNsaWVudC1zaWRlIHJlbmRlci4nXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGVpdGhlciBub3Qgc2VydmVyLXJlbmRlcmVkLCBvciBoeWRyYXRpb24gZmFpbGVkLlxuICAgICAgICAgIC8vIGNyZWF0ZSBhbiBlbXB0eSBub2RlIGFuZCByZXBsYWNlIGl0XG4gICAgICAgICAgb2xkVm5vZGUgPSBlbXB0eU5vZGVBdChvbGRWbm9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyByZXBsYWNpbmcgZXhpc3RpbmcgZWxlbWVudFxuICAgICAgICB2YXIgb2xkRWxtID0gb2xkVm5vZGUuZWxtO1xuICAgICAgICB2YXIgcGFyZW50RWxtID0gbm9kZU9wcy5wYXJlbnROb2RlKG9sZEVsbSk7XG5cbiAgICAgICAgLy8gY3JlYXRlIG5ldyBub2RlXG4gICAgICAgIGNyZWF0ZUVsbShcbiAgICAgICAgICB2bm9kZSxcbiAgICAgICAgICBpbnNlcnRlZFZub2RlUXVldWUsXG4gICAgICAgICAgLy8gZXh0cmVtZWx5IHJhcmUgZWRnZSBjYXNlOiBkbyBub3QgaW5zZXJ0IGlmIG9sZCBlbGVtZW50IGlzIGluIGFcbiAgICAgICAgICAvLyBsZWF2aW5nIHRyYW5zaXRpb24uIE9ubHkgaGFwcGVucyB3aGVuIGNvbWJpbmluZyB0cmFuc2l0aW9uICtcbiAgICAgICAgICAvLyBrZWVwLWFsaXZlICsgSE9Dcy4gKCM0NTkwKVxuICAgICAgICAgIG9sZEVsbS5fbGVhdmVDYiA/IG51bGwgOiBwYXJlbnRFbG0sXG4gICAgICAgICAgbm9kZU9wcy5uZXh0U2libGluZyhvbGRFbG0pXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gdXBkYXRlIHBhcmVudCBwbGFjZWhvbGRlciBub2RlIGVsZW1lbnQsIHJlY3Vyc2l2ZWx5XG4gICAgICAgIGlmIChpc0RlZih2bm9kZS5wYXJlbnQpKSB7XG4gICAgICAgICAgdmFyIGFuY2VzdG9yID0gdm5vZGUucGFyZW50O1xuICAgICAgICAgIHZhciBwYXRjaGFibGUgPSBpc1BhdGNoYWJsZSh2bm9kZSk7XG4gICAgICAgICAgd2hpbGUgKGFuY2VzdG9yKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNicy5kZXN0cm95Lmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgIGNicy5kZXN0cm95W2ldKGFuY2VzdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFuY2VzdG9yLmVsbSA9IHZub2RlLmVsbTtcbiAgICAgICAgICAgIGlmIChwYXRjaGFibGUpIHtcbiAgICAgICAgICAgICAgZm9yICh2YXIgaSQxID0gMDsgaSQxIDwgY2JzLmNyZWF0ZS5sZW5ndGg7ICsraSQxKSB7XG4gICAgICAgICAgICAgICAgY2JzLmNyZWF0ZVtpJDFdKGVtcHR5Tm9kZSwgYW5jZXN0b3IpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vICM2NTEzXG4gICAgICAgICAgICAgIC8vIGludm9rZSBpbnNlcnQgaG9va3MgdGhhdCBtYXkgaGF2ZSBiZWVuIG1lcmdlZCBieSBjcmVhdGUgaG9va3MuXG4gICAgICAgICAgICAgIC8vIGUuZy4gZm9yIGRpcmVjdGl2ZXMgdGhhdCB1c2VzIHRoZSBcImluc2VydGVkXCIgaG9vay5cbiAgICAgICAgICAgICAgdmFyIGluc2VydCA9IGFuY2VzdG9yLmRhdGEuaG9vay5pbnNlcnQ7XG4gICAgICAgICAgICAgIGlmIChpbnNlcnQubWVyZ2VkKSB7XG4gICAgICAgICAgICAgICAgLy8gc3RhcnQgYXQgaW5kZXggMSB0byBhdm9pZCByZS1pbnZva2luZyBjb21wb25lbnQgbW91bnRlZCBob29rXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSQyID0gMTsgaSQyIDwgaW5zZXJ0LmZucy5sZW5ndGg7IGkkMisrKSB7XG4gICAgICAgICAgICAgICAgICBpbnNlcnQuZm5zW2kkMl0oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlZ2lzdGVyUmVmKGFuY2VzdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3IucGFyZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGRlc3Ryb3kgb2xkIG5vZGVcbiAgICAgICAgaWYgKGlzRGVmKHBhcmVudEVsbSkpIHtcbiAgICAgICAgICByZW1vdmVWbm9kZXMocGFyZW50RWxtLCBbb2xkVm5vZGVdLCAwLCAwKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0RlZihvbGRWbm9kZS50YWcpKSB7XG4gICAgICAgICAgaW52b2tlRGVzdHJveUhvb2sob2xkVm5vZGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW52b2tlSW5zZXJ0SG9vayh2bm9kZSwgaW5zZXJ0ZWRWbm9kZVF1ZXVlLCBpc0luaXRpYWxQYXRjaCk7XG4gICAgcmV0dXJuIHZub2RlLmVsbVxuICB9XG59XG5cbi8qICAqL1xuXG52YXIgZGlyZWN0aXZlcyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVEaXJlY3RpdmVzLFxuICB1cGRhdGU6IHVwZGF0ZURpcmVjdGl2ZXMsXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIHVuYmluZERpcmVjdGl2ZXMgKHZub2RlKSB7XG4gICAgdXBkYXRlRGlyZWN0aXZlcyh2bm9kZSwgZW1wdHlOb2RlKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gdXBkYXRlRGlyZWN0aXZlcyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIGlmIChvbGRWbm9kZS5kYXRhLmRpcmVjdGl2ZXMgfHwgdm5vZGUuZGF0YS5kaXJlY3RpdmVzKSB7XG4gICAgX3VwZGF0ZShvbGRWbm9kZSwgdm5vZGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF91cGRhdGUgKG9sZFZub2RlLCB2bm9kZSkge1xuICB2YXIgaXNDcmVhdGUgPSBvbGRWbm9kZSA9PT0gZW1wdHlOb2RlO1xuICB2YXIgaXNEZXN0cm95ID0gdm5vZGUgPT09IGVtcHR5Tm9kZTtcbiAgdmFyIG9sZERpcnMgPSBub3JtYWxpemVEaXJlY3RpdmVzJDEob2xkVm5vZGUuZGF0YS5kaXJlY3RpdmVzLCBvbGRWbm9kZS5jb250ZXh0KTtcbiAgdmFyIG5ld0RpcnMgPSBub3JtYWxpemVEaXJlY3RpdmVzJDEodm5vZGUuZGF0YS5kaXJlY3RpdmVzLCB2bm9kZS5jb250ZXh0KTtcblxuICB2YXIgZGlyc1dpdGhJbnNlcnQgPSBbXTtcbiAgdmFyIGRpcnNXaXRoUG9zdHBhdGNoID0gW107XG5cbiAgdmFyIGtleSwgb2xkRGlyLCBkaXI7XG4gIGZvciAoa2V5IGluIG5ld0RpcnMpIHtcbiAgICBvbGREaXIgPSBvbGREaXJzW2tleV07XG4gICAgZGlyID0gbmV3RGlyc1trZXldO1xuICAgIGlmICghb2xkRGlyKSB7XG4gICAgICAvLyBuZXcgZGlyZWN0aXZlLCBiaW5kXG4gICAgICBjYWxsSG9vayQxKGRpciwgJ2JpbmQnLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgaWYgKGRpci5kZWYgJiYgZGlyLmRlZi5pbnNlcnRlZCkge1xuICAgICAgICBkaXJzV2l0aEluc2VydC5wdXNoKGRpcik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGV4aXN0aW5nIGRpcmVjdGl2ZSwgdXBkYXRlXG4gICAgICBkaXIub2xkVmFsdWUgPSBvbGREaXIudmFsdWU7XG4gICAgICBkaXIub2xkQXJnID0gb2xkRGlyLmFyZztcbiAgICAgIGNhbGxIb29rJDEoZGlyLCAndXBkYXRlJywgdm5vZGUsIG9sZFZub2RlKTtcbiAgICAgIGlmIChkaXIuZGVmICYmIGRpci5kZWYuY29tcG9uZW50VXBkYXRlZCkge1xuICAgICAgICBkaXJzV2l0aFBvc3RwYXRjaC5wdXNoKGRpcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGRpcnNXaXRoSW5zZXJ0Lmxlbmd0aCkge1xuICAgIHZhciBjYWxsSW5zZXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXJzV2l0aEluc2VydC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjYWxsSG9vayQxKGRpcnNXaXRoSW5zZXJ0W2ldLCAnaW5zZXJ0ZWQnLCB2bm9kZSwgb2xkVm5vZGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgaWYgKGlzQ3JlYXRlKSB7XG4gICAgICBtZXJnZVZOb2RlSG9vayh2bm9kZSwgJ2luc2VydCcsIGNhbGxJbnNlcnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsSW5zZXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRpcnNXaXRoUG9zdHBhdGNoLmxlbmd0aCkge1xuICAgIG1lcmdlVk5vZGVIb29rKHZub2RlLCAncG9zdHBhdGNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXJzV2l0aFBvc3RwYXRjaC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjYWxsSG9vayQxKGRpcnNXaXRoUG9zdHBhdGNoW2ldLCAnY29tcG9uZW50VXBkYXRlZCcsIHZub2RlLCBvbGRWbm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoIWlzQ3JlYXRlKSB7XG4gICAgZm9yIChrZXkgaW4gb2xkRGlycykge1xuICAgICAgaWYgKCFuZXdEaXJzW2tleV0pIHtcbiAgICAgICAgLy8gbm8gbG9uZ2VyIHByZXNlbnQsIHVuYmluZFxuICAgICAgICBjYWxsSG9vayQxKG9sZERpcnNba2V5XSwgJ3VuYmluZCcsIG9sZFZub2RlLCBvbGRWbm9kZSwgaXNEZXN0cm95KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxudmFyIGVtcHR5TW9kaWZpZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuZnVuY3Rpb24gbm9ybWFsaXplRGlyZWN0aXZlcyQxIChcbiAgZGlycyxcbiAgdm1cbikge1xuICB2YXIgcmVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgaWYgKCFkaXJzKSB7XG4gICAgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gICAgcmV0dXJuIHJlc1xuICB9XG4gIHZhciBpLCBkaXI7XG4gIGZvciAoaSA9IDA7IGkgPCBkaXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgZGlyID0gZGlyc1tpXTtcbiAgICBpZiAoIWRpci5tb2RpZmllcnMpIHtcbiAgICAgIC8vICRmbG93LWRpc2FibGUtbGluZVxuICAgICAgZGlyLm1vZGlmaWVycyA9IGVtcHR5TW9kaWZpZXJzO1xuICAgIH1cbiAgICByZXNbZ2V0UmF3RGlyTmFtZShkaXIpXSA9IGRpcjtcbiAgICBkaXIuZGVmID0gcmVzb2x2ZUFzc2V0KHZtLiRvcHRpb25zLCAnZGlyZWN0aXZlcycsIGRpci5uYW1lLCB0cnVlKTtcbiAgfVxuICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBnZXRSYXdEaXJOYW1lIChkaXIpIHtcbiAgcmV0dXJuIGRpci5yYXdOYW1lIHx8ICgoZGlyLm5hbWUpICsgXCIuXCIgKyAoT2JqZWN0LmtleXMoZGlyLm1vZGlmaWVycyB8fCB7fSkuam9pbignLicpKSlcbn1cblxuZnVuY3Rpb24gY2FsbEhvb2skMSAoZGlyLCBob29rLCB2bm9kZSwgb2xkVm5vZGUsIGlzRGVzdHJveSkge1xuICB2YXIgZm4gPSBkaXIuZGVmICYmIGRpci5kZWZbaG9va107XG4gIGlmIChmbikge1xuICAgIHRyeSB7XG4gICAgICBmbih2bm9kZS5lbG0sIGRpciwgdm5vZGUsIG9sZFZub2RlLCBpc0Rlc3Ryb3kpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGhhbmRsZUVycm9yKGUsIHZub2RlLmNvbnRleHQsIChcImRpcmVjdGl2ZSBcIiArIChkaXIubmFtZSkgKyBcIiBcIiArIGhvb2sgKyBcIiBob29rXCIpKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIGJhc2VNb2R1bGVzID0gW1xuICByZWYsXG4gIGRpcmVjdGl2ZXNcbl07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiB1cGRhdGVBdHRycyAob2xkVm5vZGUsIHZub2RlKSB7XG4gIHZhciBvcHRzID0gdm5vZGUuY29tcG9uZW50T3B0aW9ucztcbiAgaWYgKGlzRGVmKG9wdHMpICYmIG9wdHMuQ3Rvci5vcHRpb25zLmluaGVyaXRBdHRycyA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm5cbiAgfVxuICBpZiAoaXNVbmRlZihvbGRWbm9kZS5kYXRhLmF0dHJzKSAmJiBpc1VuZGVmKHZub2RlLmRhdGEuYXR0cnMpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIGtleSwgY3VyLCBvbGQ7XG4gIHZhciBlbG0gPSB2bm9kZS5lbG07XG4gIHZhciBvbGRBdHRycyA9IG9sZFZub2RlLmRhdGEuYXR0cnMgfHwge307XG4gIHZhciBhdHRycyA9IHZub2RlLmRhdGEuYXR0cnMgfHwge307XG4gIC8vIGNsb25lIG9ic2VydmVkIG9iamVjdHMsIGFzIHRoZSB1c2VyIHByb2JhYmx5IHdhbnRzIHRvIG11dGF0ZSBpdFxuICBpZiAoaXNEZWYoYXR0cnMuX19vYl9fKSkge1xuICAgIGF0dHJzID0gdm5vZGUuZGF0YS5hdHRycyA9IGV4dGVuZCh7fSwgYXR0cnMpO1xuICB9XG5cbiAgZm9yIChrZXkgaW4gYXR0cnMpIHtcbiAgICBjdXIgPSBhdHRyc1trZXldO1xuICAgIG9sZCA9IG9sZEF0dHJzW2tleV07XG4gICAgaWYgKG9sZCAhPT0gY3VyKSB7XG4gICAgICBzZXRBdHRyKGVsbSwga2V5LCBjdXIpO1xuICAgIH1cbiAgfVxuICAvLyAjNDM5MTogaW4gSUU5LCBzZXR0aW5nIHR5cGUgY2FuIHJlc2V0IHZhbHVlIGZvciBpbnB1dFt0eXBlPXJhZGlvXVxuICAvLyAjNjY2NjogSUUvRWRnZSBmb3JjZXMgcHJvZ3Jlc3MgdmFsdWUgZG93biB0byAxIGJlZm9yZSBzZXR0aW5nIGEgbWF4XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoKGlzSUUgfHwgaXNFZGdlKSAmJiBhdHRycy52YWx1ZSAhPT0gb2xkQXR0cnMudmFsdWUpIHtcbiAgICBzZXRBdHRyKGVsbSwgJ3ZhbHVlJywgYXR0cnMudmFsdWUpO1xuICB9XG4gIGZvciAoa2V5IGluIG9sZEF0dHJzKSB7XG4gICAgaWYgKGlzVW5kZWYoYXR0cnNba2V5XSkpIHtcbiAgICAgIGlmIChpc1hsaW5rKGtleSkpIHtcbiAgICAgICAgZWxtLnJlbW92ZUF0dHJpYnV0ZU5TKHhsaW5rTlMsIGdldFhsaW5rUHJvcChrZXkpKTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzRW51bWVyYXRlZEF0dHIoa2V5KSkge1xuICAgICAgICBlbG0ucmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNldEF0dHIgKGVsLCBrZXksIHZhbHVlKSB7XG4gIGlmIChlbC50YWdOYW1lLmluZGV4T2YoJy0nKSA+IC0xKSB7XG4gICAgYmFzZVNldEF0dHIoZWwsIGtleSwgdmFsdWUpO1xuICB9IGVsc2UgaWYgKGlzQm9vbGVhbkF0dHIoa2V5KSkge1xuICAgIC8vIHNldCBhdHRyaWJ1dGUgZm9yIGJsYW5rIHZhbHVlXG4gICAgLy8gZS5nLiA8b3B0aW9uIGRpc2FibGVkPlNlbGVjdCBvbmU8L29wdGlvbj5cbiAgICBpZiAoaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0ZWNobmljYWxseSBhbGxvd2Z1bGxzY3JlZW4gaXMgYSBib29sZWFuIGF0dHJpYnV0ZSBmb3IgPGlmcmFtZT4sXG4gICAgICAvLyBidXQgRmxhc2ggZXhwZWN0cyBhIHZhbHVlIG9mIFwidHJ1ZVwiIHdoZW4gdXNlZCBvbiA8ZW1iZWQ+IHRhZ1xuICAgICAgdmFsdWUgPSBrZXkgPT09ICdhbGxvd2Z1bGxzY3JlZW4nICYmIGVsLnRhZ05hbWUgPT09ICdFTUJFRCdcbiAgICAgICAgPyAndHJ1ZSdcbiAgICAgICAgOiBrZXk7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzRW51bWVyYXRlZEF0dHIoa2V5KSkge1xuICAgIGVsLnNldEF0dHJpYnV0ZShrZXksIGNvbnZlcnRFbnVtZXJhdGVkVmFsdWUoa2V5LCB2YWx1ZSkpO1xuICB9IGVsc2UgaWYgKGlzWGxpbmsoa2V5KSkge1xuICAgIGlmIChpc0ZhbHN5QXR0clZhbHVlKHZhbHVlKSkge1xuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlTlMoeGxpbmtOUywgZ2V0WGxpbmtQcm9wKGtleSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGVOUyh4bGlua05TLCBrZXksIHZhbHVlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYmFzZVNldEF0dHIoZWwsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJhc2VTZXRBdHRyIChlbCwga2V5LCB2YWx1ZSkge1xuICBpZiAoaXNGYWxzeUF0dHJWYWx1ZSh2YWx1ZSkpIHtcbiAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcbiAgfSBlbHNlIHtcbiAgICAvLyAjNzEzODogSUUxMCAmIDExIGZpcmVzIGlucHV0IGV2ZW50IHdoZW4gc2V0dGluZyBwbGFjZWhvbGRlciBvblxuICAgIC8vIDx0ZXh0YXJlYT4uLi4gYmxvY2sgdGhlIGZpcnN0IGlucHV0IGV2ZW50IGFuZCByZW1vdmUgdGhlIGJsb2NrZXJcbiAgICAvLyBpbW1lZGlhdGVseS5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoXG4gICAgICBpc0lFICYmICFpc0lFOSAmJlxuICAgICAgZWwudGFnTmFtZSA9PT0gJ1RFWFRBUkVBJyAmJlxuICAgICAga2V5ID09PSAncGxhY2Vob2xkZXInICYmIHZhbHVlICE9PSAnJyAmJiAhZWwuX19pZXBoXG4gICAgKSB7XG4gICAgICB2YXIgYmxvY2tlciA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2lucHV0JywgYmxvY2tlcik7XG4gICAgICB9O1xuICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBibG9ja2VyKTtcbiAgICAgIC8vICRmbG93LWRpc2FibGUtbGluZVxuICAgICAgZWwuX19pZXBoID0gdHJ1ZTsgLyogSUUgcGxhY2Vob2xkZXIgcGF0Y2hlZCAqL1xuICAgIH1cbiAgICBlbC5zZXRBdHRyaWJ1dGUoa2V5LCB2YWx1ZSk7XG4gIH1cbn1cblxudmFyIGF0dHJzID0ge1xuICBjcmVhdGU6IHVwZGF0ZUF0dHJzLFxuICB1cGRhdGU6IHVwZGF0ZUF0dHJzXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdXBkYXRlQ2xhc3MgKG9sZFZub2RlLCB2bm9kZSkge1xuICB2YXIgZWwgPSB2bm9kZS5lbG07XG4gIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgdmFyIG9sZERhdGEgPSBvbGRWbm9kZS5kYXRhO1xuICBpZiAoXG4gICAgaXNVbmRlZihkYXRhLnN0YXRpY0NsYXNzKSAmJlxuICAgIGlzVW5kZWYoZGF0YS5jbGFzcykgJiYgKFxuICAgICAgaXNVbmRlZihvbGREYXRhKSB8fCAoXG4gICAgICAgIGlzVW5kZWYob2xkRGF0YS5zdGF0aWNDbGFzcykgJiZcbiAgICAgICAgaXNVbmRlZihvbGREYXRhLmNsYXNzKVxuICAgICAgKVxuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgY2xzID0gZ2VuQ2xhc3NGb3JWbm9kZSh2bm9kZSk7XG5cbiAgLy8gaGFuZGxlIHRyYW5zaXRpb24gY2xhc3Nlc1xuICB2YXIgdHJhbnNpdGlvbkNsYXNzID0gZWwuX3RyYW5zaXRpb25DbGFzc2VzO1xuICBpZiAoaXNEZWYodHJhbnNpdGlvbkNsYXNzKSkge1xuICAgIGNscyA9IGNvbmNhdChjbHMsIHN0cmluZ2lmeUNsYXNzKHRyYW5zaXRpb25DbGFzcykpO1xuICB9XG5cbiAgLy8gc2V0IHRoZSBjbGFzc1xuICBpZiAoY2xzICE9PSBlbC5fcHJldkNsYXNzKSB7XG4gICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIGNscyk7XG4gICAgZWwuX3ByZXZDbGFzcyA9IGNscztcbiAgfVxufVxuXG52YXIga2xhc3MgPSB7XG4gIGNyZWF0ZTogdXBkYXRlQ2xhc3MsXG4gIHVwZGF0ZTogdXBkYXRlQ2xhc3Ncbn07XG5cbi8qICAqL1xuXG52YXIgdmFsaWREaXZpc2lvbkNoYXJSRSA9IC9bXFx3KS4rXFwtXyRcXF1dLztcblxuZnVuY3Rpb24gcGFyc2VGaWx0ZXJzIChleHApIHtcbiAgdmFyIGluU2luZ2xlID0gZmFsc2U7XG4gIHZhciBpbkRvdWJsZSA9IGZhbHNlO1xuICB2YXIgaW5UZW1wbGF0ZVN0cmluZyA9IGZhbHNlO1xuICB2YXIgaW5SZWdleCA9IGZhbHNlO1xuICB2YXIgY3VybHkgPSAwO1xuICB2YXIgc3F1YXJlID0gMDtcbiAgdmFyIHBhcmVuID0gMDtcbiAgdmFyIGxhc3RGaWx0ZXJJbmRleCA9IDA7XG4gIHZhciBjLCBwcmV2LCBpLCBleHByZXNzaW9uLCBmaWx0ZXJzO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBleHAubGVuZ3RoOyBpKyspIHtcbiAgICBwcmV2ID0gYztcbiAgICBjID0gZXhwLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGluU2luZ2xlKSB7XG4gICAgICBpZiAoYyA9PT0gMHgyNyAmJiBwcmV2ICE9PSAweDVDKSB7IGluU2luZ2xlID0gZmFsc2U7IH1cbiAgICB9IGVsc2UgaWYgKGluRG91YmxlKSB7XG4gICAgICBpZiAoYyA9PT0gMHgyMiAmJiBwcmV2ICE9PSAweDVDKSB7IGluRG91YmxlID0gZmFsc2U7IH1cbiAgICB9IGVsc2UgaWYgKGluVGVtcGxhdGVTdHJpbmcpIHtcbiAgICAgIGlmIChjID09PSAweDYwICYmIHByZXYgIT09IDB4NUMpIHsgaW5UZW1wbGF0ZVN0cmluZyA9IGZhbHNlOyB9XG4gICAgfSBlbHNlIGlmIChpblJlZ2V4KSB7XG4gICAgICBpZiAoYyA9PT0gMHgyZiAmJiBwcmV2ICE9PSAweDVDKSB7IGluUmVnZXggPSBmYWxzZTsgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjID09PSAweDdDICYmIC8vIHBpcGVcbiAgICAgIGV4cC5jaGFyQ29kZUF0KGkgKyAxKSAhPT0gMHg3QyAmJlxuICAgICAgZXhwLmNoYXJDb2RlQXQoaSAtIDEpICE9PSAweDdDICYmXG4gICAgICAhY3VybHkgJiYgIXNxdWFyZSAmJiAhcGFyZW5cbiAgICApIHtcbiAgICAgIGlmIChleHByZXNzaW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gZmlyc3QgZmlsdGVyLCBlbmQgb2YgZXhwcmVzc2lvblxuICAgICAgICBsYXN0RmlsdGVySW5kZXggPSBpICsgMTtcbiAgICAgICAgZXhwcmVzc2lvbiA9IGV4cC5zbGljZSgwLCBpKS50cmltKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwdXNoRmlsdGVyKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAoYykge1xuICAgICAgICBjYXNlIDB4MjI6IGluRG91YmxlID0gdHJ1ZTsgYnJlYWsgICAgICAgICAvLyBcIlxuICAgICAgICBjYXNlIDB4Mjc6IGluU2luZ2xlID0gdHJ1ZTsgYnJlYWsgICAgICAgICAvLyAnXG4gICAgICAgIGNhc2UgMHg2MDogaW5UZW1wbGF0ZVN0cmluZyA9IHRydWU7IGJyZWFrIC8vIGBcbiAgICAgICAgY2FzZSAweDI4OiBwYXJlbisrOyBicmVhayAgICAgICAgICAgICAgICAgLy8gKFxuICAgICAgICBjYXNlIDB4Mjk6IHBhcmVuLS07IGJyZWFrICAgICAgICAgICAgICAgICAvLyApXG4gICAgICAgIGNhc2UgMHg1Qjogc3F1YXJlKys7IGJyZWFrICAgICAgICAgICAgICAgIC8vIFtcbiAgICAgICAgY2FzZSAweDVEOiBzcXVhcmUtLTsgYnJlYWsgICAgICAgICAgICAgICAgLy8gXVxuICAgICAgICBjYXNlIDB4N0I6IGN1cmx5Kys7IGJyZWFrICAgICAgICAgICAgICAgICAvLyB7XG4gICAgICAgIGNhc2UgMHg3RDogY3VybHktLTsgYnJlYWsgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgIH1cbiAgICAgIGlmIChjID09PSAweDJmKSB7IC8vIC9cbiAgICAgICAgdmFyIGogPSBpIC0gMTtcbiAgICAgICAgdmFyIHAgPSAodm9pZCAwKTtcbiAgICAgICAgLy8gZmluZCBmaXJzdCBub24td2hpdGVzcGFjZSBwcmV2IGNoYXJcbiAgICAgICAgZm9yICg7IGogPj0gMDsgai0tKSB7XG4gICAgICAgICAgcCA9IGV4cC5jaGFyQXQoaik7XG4gICAgICAgICAgaWYgKHAgIT09ICcgJykgeyBicmVhayB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwIHx8ICF2YWxpZERpdmlzaW9uQ2hhclJFLnRlc3QocCkpIHtcbiAgICAgICAgICBpblJlZ2V4ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChleHByZXNzaW9uID09PSB1bmRlZmluZWQpIHtcbiAgICBleHByZXNzaW9uID0gZXhwLnNsaWNlKDAsIGkpLnRyaW0oKTtcbiAgfSBlbHNlIGlmIChsYXN0RmlsdGVySW5kZXggIT09IDApIHtcbiAgICBwdXNoRmlsdGVyKCk7XG4gIH1cblxuICBmdW5jdGlvbiBwdXNoRmlsdGVyICgpIHtcbiAgICAoZmlsdGVycyB8fCAoZmlsdGVycyA9IFtdKSkucHVzaChleHAuc2xpY2UobGFzdEZpbHRlckluZGV4LCBpKS50cmltKCkpO1xuICAgIGxhc3RGaWx0ZXJJbmRleCA9IGkgKyAxO1xuICB9XG5cbiAgaWYgKGZpbHRlcnMpIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgZmlsdGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgZXhwcmVzc2lvbiA9IHdyYXBGaWx0ZXIoZXhwcmVzc2lvbiwgZmlsdGVyc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4cHJlc3Npb25cbn1cblxuZnVuY3Rpb24gd3JhcEZpbHRlciAoZXhwLCBmaWx0ZXIpIHtcbiAgdmFyIGkgPSBmaWx0ZXIuaW5kZXhPZignKCcpO1xuICBpZiAoaSA8IDApIHtcbiAgICAvLyBfZjogcmVzb2x2ZUZpbHRlclxuICAgIHJldHVybiAoXCJfZihcXFwiXCIgKyBmaWx0ZXIgKyBcIlxcXCIpKFwiICsgZXhwICsgXCIpXCIpXG4gIH0gZWxzZSB7XG4gICAgdmFyIG5hbWUgPSBmaWx0ZXIuc2xpY2UoMCwgaSk7XG4gICAgdmFyIGFyZ3MgPSBmaWx0ZXIuc2xpY2UoaSArIDEpO1xuICAgIHJldHVybiAoXCJfZihcXFwiXCIgKyBuYW1lICsgXCJcXFwiKShcIiArIGV4cCArIChhcmdzICE9PSAnKScgPyAnLCcgKyBhcmdzIDogYXJncykpXG4gIH1cbn1cblxuLyogICovXG5cblxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuZnVuY3Rpb24gYmFzZVdhcm4gKG1zZywgcmFuZ2UpIHtcbiAgY29uc29sZS5lcnJvcigoXCJbVnVlIGNvbXBpbGVyXTogXCIgKyBtc2cpKTtcbn1cbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cblxuZnVuY3Rpb24gcGx1Y2tNb2R1bGVGdW5jdGlvbiAoXG4gIG1vZHVsZXMsXG4gIGtleVxuKSB7XG4gIHJldHVybiBtb2R1bGVzXG4gICAgPyBtb2R1bGVzLm1hcChmdW5jdGlvbiAobSkgeyByZXR1cm4gbVtrZXldOyB9KS5maWx0ZXIoZnVuY3Rpb24gKF8pIHsgcmV0dXJuIF87IH0pXG4gICAgOiBbXVxufVxuXG5mdW5jdGlvbiBhZGRQcm9wIChlbCwgbmFtZSwgdmFsdWUsIHJhbmdlLCBkeW5hbWljKSB7XG4gIChlbC5wcm9wcyB8fCAoZWwucHJvcHMgPSBbXSkpLnB1c2gocmFuZ2VTZXRJdGVtKHsgbmFtZTogbmFtZSwgdmFsdWU6IHZhbHVlLCBkeW5hbWljOiBkeW5hbWljIH0sIHJhbmdlKSk7XG4gIGVsLnBsYWluID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGFkZEF0dHIgKGVsLCBuYW1lLCB2YWx1ZSwgcmFuZ2UsIGR5bmFtaWMpIHtcbiAgdmFyIGF0dHJzID0gZHluYW1pY1xuICAgID8gKGVsLmR5bmFtaWNBdHRycyB8fCAoZWwuZHluYW1pY0F0dHJzID0gW10pKVxuICAgIDogKGVsLmF0dHJzIHx8IChlbC5hdHRycyA9IFtdKSk7XG4gIGF0dHJzLnB1c2gocmFuZ2VTZXRJdGVtKHsgbmFtZTogbmFtZSwgdmFsdWU6IHZhbHVlLCBkeW5hbWljOiBkeW5hbWljIH0sIHJhbmdlKSk7XG4gIGVsLnBsYWluID0gZmFsc2U7XG59XG5cbi8vIGFkZCBhIHJhdyBhdHRyICh1c2UgdGhpcyBpbiBwcmVUcmFuc2Zvcm1zKVxuZnVuY3Rpb24gYWRkUmF3QXR0ciAoZWwsIG5hbWUsIHZhbHVlLCByYW5nZSkge1xuICBlbC5hdHRyc01hcFtuYW1lXSA9IHZhbHVlO1xuICBlbC5hdHRyc0xpc3QucHVzaChyYW5nZVNldEl0ZW0oeyBuYW1lOiBuYW1lLCB2YWx1ZTogdmFsdWUgfSwgcmFuZ2UpKTtcbn1cblxuZnVuY3Rpb24gYWRkRGlyZWN0aXZlIChcbiAgZWwsXG4gIG5hbWUsXG4gIHJhd05hbWUsXG4gIHZhbHVlLFxuICBhcmcsXG4gIGlzRHluYW1pY0FyZyxcbiAgbW9kaWZpZXJzLFxuICByYW5nZVxuKSB7XG4gIChlbC5kaXJlY3RpdmVzIHx8IChlbC5kaXJlY3RpdmVzID0gW10pKS5wdXNoKHJhbmdlU2V0SXRlbSh7XG4gICAgbmFtZTogbmFtZSxcbiAgICByYXdOYW1lOiByYXdOYW1lLFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBhcmc6IGFyZyxcbiAgICBpc0R5bmFtaWNBcmc6IGlzRHluYW1pY0FyZyxcbiAgICBtb2RpZmllcnM6IG1vZGlmaWVyc1xuICB9LCByYW5nZSkpO1xuICBlbC5wbGFpbiA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBwcmVwZW5kTW9kaWZpZXJNYXJrZXIgKHN5bWJvbCwgbmFtZSwgZHluYW1pYykge1xuICByZXR1cm4gZHluYW1pY1xuICAgID8gKFwiX3AoXCIgKyBuYW1lICsgXCIsXFxcIlwiICsgc3ltYm9sICsgXCJcXFwiKVwiKVxuICAgIDogc3ltYm9sICsgbmFtZSAvLyBtYXJrIHRoZSBldmVudCBhcyBjYXB0dXJlZFxufVxuXG5mdW5jdGlvbiBhZGRIYW5kbGVyIChcbiAgZWwsXG4gIG5hbWUsXG4gIHZhbHVlLFxuICBtb2RpZmllcnMsXG4gIGltcG9ydGFudCxcbiAgd2FybixcbiAgcmFuZ2UsXG4gIGR5bmFtaWNcbikge1xuICBtb2RpZmllcnMgPSBtb2RpZmllcnMgfHwgZW1wdHlPYmplY3Q7XG4gIC8vIHdhcm4gcHJldmVudCBhbmQgcGFzc2l2ZSBtb2RpZmllclxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKFxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybiAmJlxuICAgIG1vZGlmaWVycy5wcmV2ZW50ICYmIG1vZGlmaWVycy5wYXNzaXZlXG4gICkge1xuICAgIHdhcm4oXG4gICAgICAncGFzc2l2ZSBhbmQgcHJldmVudCBjYW5cXCd0IGJlIHVzZWQgdG9nZXRoZXIuICcgK1xuICAgICAgJ1Bhc3NpdmUgaGFuZGxlciBjYW5cXCd0IHByZXZlbnQgZGVmYXVsdCBldmVudC4nLFxuICAgICAgcmFuZ2VcbiAgICApO1xuICB9XG5cbiAgLy8gbm9ybWFsaXplIGNsaWNrLnJpZ2h0IGFuZCBjbGljay5taWRkbGUgc2luY2UgdGhleSBkb24ndCBhY3R1YWxseSBmaXJlXG4gIC8vIHRoaXMgaXMgdGVjaG5pY2FsbHkgYnJvd3Nlci1zcGVjaWZpYywgYnV0IGF0IGxlYXN0IGZvciBub3cgYnJvd3NlcnMgYXJlXG4gIC8vIHRoZSBvbmx5IHRhcmdldCBlbnZzIHRoYXQgaGF2ZSByaWdodC9taWRkbGUgY2xpY2tzLlxuICBpZiAobW9kaWZpZXJzLnJpZ2h0KSB7XG4gICAgaWYgKGR5bmFtaWMpIHtcbiAgICAgIG5hbWUgPSBcIihcIiArIG5hbWUgKyBcIik9PT0nY2xpY2snPydjb250ZXh0bWVudSc6KFwiICsgbmFtZSArIFwiKVwiO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ2NsaWNrJykge1xuICAgICAgbmFtZSA9ICdjb250ZXh0bWVudSc7XG4gICAgICBkZWxldGUgbW9kaWZpZXJzLnJpZ2h0O1xuICAgIH1cbiAgfSBlbHNlIGlmIChtb2RpZmllcnMubWlkZGxlKSB7XG4gICAgaWYgKGR5bmFtaWMpIHtcbiAgICAgIG5hbWUgPSBcIihcIiArIG5hbWUgKyBcIik9PT0nY2xpY2snPydtb3VzZXVwJzooXCIgKyBuYW1lICsgXCIpXCI7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAnY2xpY2snKSB7XG4gICAgICBuYW1lID0gJ21vdXNldXAnO1xuICAgIH1cbiAgfVxuXG4gIC8vIGNoZWNrIGNhcHR1cmUgbW9kaWZpZXJcbiAgaWYgKG1vZGlmaWVycy5jYXB0dXJlKSB7XG4gICAgZGVsZXRlIG1vZGlmaWVycy5jYXB0dXJlO1xuICAgIG5hbWUgPSBwcmVwZW5kTW9kaWZpZXJNYXJrZXIoJyEnLCBuYW1lLCBkeW5hbWljKTtcbiAgfVxuICBpZiAobW9kaWZpZXJzLm9uY2UpIHtcbiAgICBkZWxldGUgbW9kaWZpZXJzLm9uY2U7XG4gICAgbmFtZSA9IHByZXBlbmRNb2RpZmllck1hcmtlcignficsIG5hbWUsIGR5bmFtaWMpO1xuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAobW9kaWZpZXJzLnBhc3NpdmUpIHtcbiAgICBkZWxldGUgbW9kaWZpZXJzLnBhc3NpdmU7XG4gICAgbmFtZSA9IHByZXBlbmRNb2RpZmllck1hcmtlcignJicsIG5hbWUsIGR5bmFtaWMpO1xuICB9XG5cbiAgdmFyIGV2ZW50cztcbiAgaWYgKG1vZGlmaWVycy5uYXRpdmUpIHtcbiAgICBkZWxldGUgbW9kaWZpZXJzLm5hdGl2ZTtcbiAgICBldmVudHMgPSBlbC5uYXRpdmVFdmVudHMgfHwgKGVsLm5hdGl2ZUV2ZW50cyA9IHt9KTtcbiAgfSBlbHNlIHtcbiAgICBldmVudHMgPSBlbC5ldmVudHMgfHwgKGVsLmV2ZW50cyA9IHt9KTtcbiAgfVxuXG4gIHZhciBuZXdIYW5kbGVyID0gcmFuZ2VTZXRJdGVtKHsgdmFsdWU6IHZhbHVlLnRyaW0oKSwgZHluYW1pYzogZHluYW1pYyB9LCByYW5nZSk7XG4gIGlmIChtb2RpZmllcnMgIT09IGVtcHR5T2JqZWN0KSB7XG4gICAgbmV3SGFuZGxlci5tb2RpZmllcnMgPSBtb2RpZmllcnM7XG4gIH1cblxuICB2YXIgaGFuZGxlcnMgPSBldmVudHNbbmFtZV07XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoQXJyYXkuaXNBcnJheShoYW5kbGVycykpIHtcbiAgICBpbXBvcnRhbnQgPyBoYW5kbGVycy51bnNoaWZ0KG5ld0hhbmRsZXIpIDogaGFuZGxlcnMucHVzaChuZXdIYW5kbGVyKTtcbiAgfSBlbHNlIGlmIChoYW5kbGVycykge1xuICAgIGV2ZW50c1tuYW1lXSA9IGltcG9ydGFudCA/IFtuZXdIYW5kbGVyLCBoYW5kbGVyc10gOiBbaGFuZGxlcnMsIG5ld0hhbmRsZXJdO1xuICB9IGVsc2Uge1xuICAgIGV2ZW50c1tuYW1lXSA9IG5ld0hhbmRsZXI7XG4gIH1cblxuICBlbC5wbGFpbiA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBnZXRSYXdCaW5kaW5nQXR0ciAoXG4gIGVsLFxuICBuYW1lXG4pIHtcbiAgcmV0dXJuIGVsLnJhd0F0dHJzTWFwWyc6JyArIG5hbWVdIHx8XG4gICAgZWwucmF3QXR0cnNNYXBbJ3YtYmluZDonICsgbmFtZV0gfHxcbiAgICBlbC5yYXdBdHRyc01hcFtuYW1lXVxufVxuXG5mdW5jdGlvbiBnZXRCaW5kaW5nQXR0ciAoXG4gIGVsLFxuICBuYW1lLFxuICBnZXRTdGF0aWNcbikge1xuICB2YXIgZHluYW1pY1ZhbHVlID1cbiAgICBnZXRBbmRSZW1vdmVBdHRyKGVsLCAnOicgKyBuYW1lKSB8fFxuICAgIGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWJpbmQ6JyArIG5hbWUpO1xuICBpZiAoZHluYW1pY1ZhbHVlICE9IG51bGwpIHtcbiAgICByZXR1cm4gcGFyc2VGaWx0ZXJzKGR5bmFtaWNWYWx1ZSlcbiAgfSBlbHNlIGlmIChnZXRTdGF0aWMgIT09IGZhbHNlKSB7XG4gICAgdmFyIHN0YXRpY1ZhbHVlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgbmFtZSk7XG4gICAgaWYgKHN0YXRpY1ZhbHVlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShzdGF0aWNWYWx1ZSlcbiAgICB9XG4gIH1cbn1cblxuLy8gbm90ZTogdGhpcyBvbmx5IHJlbW92ZXMgdGhlIGF0dHIgZnJvbSB0aGUgQXJyYXkgKGF0dHJzTGlzdCkgc28gdGhhdCBpdFxuLy8gZG9lc24ndCBnZXQgcHJvY2Vzc2VkIGJ5IHByb2Nlc3NBdHRycy5cbi8vIEJ5IGRlZmF1bHQgaXQgZG9lcyBOT1QgcmVtb3ZlIGl0IGZyb20gdGhlIG1hcCAoYXR0cnNNYXApIGJlY2F1c2UgdGhlIG1hcCBpc1xuLy8gbmVlZGVkIGR1cmluZyBjb2RlZ2VuLlxuZnVuY3Rpb24gZ2V0QW5kUmVtb3ZlQXR0ciAoXG4gIGVsLFxuICBuYW1lLFxuICByZW1vdmVGcm9tTWFwXG4pIHtcbiAgdmFyIHZhbDtcbiAgaWYgKCh2YWwgPSBlbC5hdHRyc01hcFtuYW1lXSkgIT0gbnVsbCkge1xuICAgIHZhciBsaXN0ID0gZWwuYXR0cnNMaXN0O1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gbGlzdC5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmIChsaXN0W2ldLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgbGlzdC5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChyZW1vdmVGcm9tTWFwKSB7XG4gICAgZGVsZXRlIGVsLmF0dHJzTWFwW25hbWVdO1xuICB9XG4gIHJldHVybiB2YWxcbn1cblxuZnVuY3Rpb24gZ2V0QW5kUmVtb3ZlQXR0ckJ5UmVnZXggKFxuICBlbCxcbiAgbmFtZVxuKSB7XG4gIHZhciBsaXN0ID0gZWwuYXR0cnNMaXN0O1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGxpc3QubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGF0dHIgPSBsaXN0W2ldO1xuICAgIGlmIChuYW1lLnRlc3QoYXR0ci5uYW1lKSkge1xuICAgICAgbGlzdC5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gYXR0clxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByYW5nZVNldEl0ZW0gKFxuICBpdGVtLFxuICByYW5nZVxuKSB7XG4gIGlmIChyYW5nZSkge1xuICAgIGlmIChyYW5nZS5zdGFydCAhPSBudWxsKSB7XG4gICAgICBpdGVtLnN0YXJ0ID0gcmFuZ2Uuc3RhcnQ7XG4gICAgfVxuICAgIGlmIChyYW5nZS5lbmQgIT0gbnVsbCkge1xuICAgICAgaXRlbS5lbmQgPSByYW5nZS5lbmQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBpdGVtXG59XG5cbi8qICAqL1xuXG4vKipcbiAqIENyb3NzLXBsYXRmb3JtIGNvZGUgZ2VuZXJhdGlvbiBmb3IgY29tcG9uZW50IHYtbW9kZWxcbiAqL1xuZnVuY3Rpb24gZ2VuQ29tcG9uZW50TW9kZWwgKFxuICBlbCxcbiAgdmFsdWUsXG4gIG1vZGlmaWVyc1xuKSB7XG4gIHZhciByZWYgPSBtb2RpZmllcnMgfHwge307XG4gIHZhciBudW1iZXIgPSByZWYubnVtYmVyO1xuICB2YXIgdHJpbSA9IHJlZi50cmltO1xuXG4gIHZhciBiYXNlVmFsdWVFeHByZXNzaW9uID0gJyQkdic7XG4gIHZhciB2YWx1ZUV4cHJlc3Npb24gPSBiYXNlVmFsdWVFeHByZXNzaW9uO1xuICBpZiAodHJpbSkge1xuICAgIHZhbHVlRXhwcmVzc2lvbiA9XG4gICAgICBcIih0eXBlb2YgXCIgKyBiYXNlVmFsdWVFeHByZXNzaW9uICsgXCIgPT09ICdzdHJpbmcnXCIgK1xuICAgICAgXCI/IFwiICsgYmFzZVZhbHVlRXhwcmVzc2lvbiArIFwiLnRyaW0oKVwiICtcbiAgICAgIFwiOiBcIiArIGJhc2VWYWx1ZUV4cHJlc3Npb24gKyBcIilcIjtcbiAgfVxuICBpZiAobnVtYmVyKSB7XG4gICAgdmFsdWVFeHByZXNzaW9uID0gXCJfbihcIiArIHZhbHVlRXhwcmVzc2lvbiArIFwiKVwiO1xuICB9XG4gIHZhciBhc3NpZ25tZW50ID0gZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIHZhbHVlRXhwcmVzc2lvbik7XG5cbiAgZWwubW9kZWwgPSB7XG4gICAgdmFsdWU6IChcIihcIiArIHZhbHVlICsgXCIpXCIpLFxuICAgIGV4cHJlc3Npb246IEpTT04uc3RyaW5naWZ5KHZhbHVlKSxcbiAgICBjYWxsYmFjazogKFwiZnVuY3Rpb24gKFwiICsgYmFzZVZhbHVlRXhwcmVzc2lvbiArIFwiKSB7XCIgKyBhc3NpZ25tZW50ICsgXCJ9XCIpXG4gIH07XG59XG5cbi8qKlxuICogQ3Jvc3MtcGxhdGZvcm0gY29kZWdlbiBoZWxwZXIgZm9yIGdlbmVyYXRpbmcgdi1tb2RlbCB2YWx1ZSBhc3NpZ25tZW50IGNvZGUuXG4gKi9cbmZ1bmN0aW9uIGdlbkFzc2lnbm1lbnRDb2RlIChcbiAgdmFsdWUsXG4gIGFzc2lnbm1lbnRcbikge1xuICB2YXIgcmVzID0gcGFyc2VNb2RlbCh2YWx1ZSk7XG4gIGlmIChyZXMua2V5ID09PSBudWxsKSB7XG4gICAgcmV0dXJuICh2YWx1ZSArIFwiPVwiICsgYXNzaWdubWVudClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKFwiJHNldChcIiArIChyZXMuZXhwKSArIFwiLCBcIiArIChyZXMua2V5KSArIFwiLCBcIiArIGFzc2lnbm1lbnQgKyBcIilcIilcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlIGEgdi1tb2RlbCBleHByZXNzaW9uIGludG8gYSBiYXNlIHBhdGggYW5kIGEgZmluYWwga2V5IHNlZ21lbnQuXG4gKiBIYW5kbGVzIGJvdGggZG90LXBhdGggYW5kIHBvc3NpYmxlIHNxdWFyZSBicmFja2V0cy5cbiAqXG4gKiBQb3NzaWJsZSBjYXNlczpcbiAqXG4gKiAtIHRlc3RcbiAqIC0gdGVzdFtrZXldXG4gKiAtIHRlc3RbdGVzdDFba2V5XV1cbiAqIC0gdGVzdFtcImFcIl1ba2V5XVxuICogLSB4eHgudGVzdFthW2FdLnRlc3QxW2tleV1dXG4gKiAtIHRlc3QueHh4LmFbXCJhc2FcIl1bdGVzdDFba2V5XV1cbiAqXG4gKi9cblxudmFyIGxlbiwgc3RyLCBjaHIsIGluZGV4JDEsIGV4cHJlc3Npb25Qb3MsIGV4cHJlc3Npb25FbmRQb3M7XG5cblxuXG5mdW5jdGlvbiBwYXJzZU1vZGVsICh2YWwpIHtcbiAgLy8gRml4IGh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy92dWUvcHVsbC83NzMwXG4gIC8vIGFsbG93IHYtbW9kZWw9XCJvYmoudmFsIFwiICh0cmFpbGluZyB3aGl0ZXNwYWNlKVxuICB2YWwgPSB2YWwudHJpbSgpO1xuICBsZW4gPSB2YWwubGVuZ3RoO1xuXG4gIGlmICh2YWwuaW5kZXhPZignWycpIDwgMCB8fCB2YWwubGFzdEluZGV4T2YoJ10nKSA8IGxlbiAtIDEpIHtcbiAgICBpbmRleCQxID0gdmFsLmxhc3RJbmRleE9mKCcuJyk7XG4gICAgaWYgKGluZGV4JDEgPiAtMSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZXhwOiB2YWwuc2xpY2UoMCwgaW5kZXgkMSksXG4gICAgICAgIGtleTogJ1wiJyArIHZhbC5zbGljZShpbmRleCQxICsgMSkgKyAnXCInXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGV4cDogdmFsLFxuICAgICAgICBrZXk6IG51bGxcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdHIgPSB2YWw7XG4gIGluZGV4JDEgPSBleHByZXNzaW9uUG9zID0gZXhwcmVzc2lvbkVuZFBvcyA9IDA7XG5cbiAgd2hpbGUgKCFlb2YoKSkge1xuICAgIGNociA9IG5leHQoKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoaXNTdHJpbmdTdGFydChjaHIpKSB7XG4gICAgICBwYXJzZVN0cmluZyhjaHIpO1xuICAgIH0gZWxzZSBpZiAoY2hyID09PSAweDVCKSB7XG4gICAgICBwYXJzZUJyYWNrZXQoY2hyKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGV4cDogdmFsLnNsaWNlKDAsIGV4cHJlc3Npb25Qb3MpLFxuICAgIGtleTogdmFsLnNsaWNlKGV4cHJlc3Npb25Qb3MgKyAxLCBleHByZXNzaW9uRW5kUG9zKVxuICB9XG59XG5cbmZ1bmN0aW9uIG5leHQgKCkge1xuICByZXR1cm4gc3RyLmNoYXJDb2RlQXQoKytpbmRleCQxKVxufVxuXG5mdW5jdGlvbiBlb2YgKCkge1xuICByZXR1cm4gaW5kZXgkMSA+PSBsZW5cbn1cblxuZnVuY3Rpb24gaXNTdHJpbmdTdGFydCAoY2hyKSB7XG4gIHJldHVybiBjaHIgPT09IDB4MjIgfHwgY2hyID09PSAweDI3XG59XG5cbmZ1bmN0aW9uIHBhcnNlQnJhY2tldCAoY2hyKSB7XG4gIHZhciBpbkJyYWNrZXQgPSAxO1xuICBleHByZXNzaW9uUG9zID0gaW5kZXgkMTtcbiAgd2hpbGUgKCFlb2YoKSkge1xuICAgIGNociA9IG5leHQoKTtcbiAgICBpZiAoaXNTdHJpbmdTdGFydChjaHIpKSB7XG4gICAgICBwYXJzZVN0cmluZyhjaHIpO1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKGNociA9PT0gMHg1QikgeyBpbkJyYWNrZXQrKzsgfVxuICAgIGlmIChjaHIgPT09IDB4NUQpIHsgaW5CcmFja2V0LS07IH1cbiAgICBpZiAoaW5CcmFja2V0ID09PSAwKSB7XG4gICAgICBleHByZXNzaW9uRW5kUG9zID0gaW5kZXgkMTtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlU3RyaW5nIChjaHIpIHtcbiAgdmFyIHN0cmluZ1F1b3RlID0gY2hyO1xuICB3aGlsZSAoIWVvZigpKSB7XG4gICAgY2hyID0gbmV4dCgpO1xuICAgIGlmIChjaHIgPT09IHN0cmluZ1F1b3RlKSB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIHdhcm4kMTtcblxuLy8gaW4gc29tZSBjYXNlcywgdGhlIGV2ZW50IHVzZWQgaGFzIHRvIGJlIGRldGVybWluZWQgYXQgcnVudGltZVxuLy8gc28gd2UgdXNlZCBzb21lIHJlc2VydmVkIHRva2VucyBkdXJpbmcgY29tcGlsZS5cbnZhciBSQU5HRV9UT0tFTiA9ICdfX3InO1xudmFyIENIRUNLQk9YX1JBRElPX1RPS0VOID0gJ19fYyc7XG5cbmZ1bmN0aW9uIG1vZGVsIChcbiAgZWwsXG4gIGRpcixcbiAgX3dhcm5cbikge1xuICB3YXJuJDEgPSBfd2FybjtcbiAgdmFyIHZhbHVlID0gZGlyLnZhbHVlO1xuICB2YXIgbW9kaWZpZXJzID0gZGlyLm1vZGlmaWVycztcbiAgdmFyIHRhZyA9IGVsLnRhZztcbiAgdmFyIHR5cGUgPSBlbC5hdHRyc01hcC50eXBlO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gaW5wdXRzIHdpdGggdHlwZT1cImZpbGVcIiBhcmUgcmVhZCBvbmx5IGFuZCBzZXR0aW5nIHRoZSBpbnB1dCdzXG4gICAgLy8gdmFsdWUgd2lsbCB0aHJvdyBhbiBlcnJvci5cbiAgICBpZiAodGFnID09PSAnaW5wdXQnICYmIHR5cGUgPT09ICdmaWxlJykge1xuICAgICAgd2FybiQxKFxuICAgICAgICBcIjxcIiArIChlbC50YWcpICsgXCIgdi1tb2RlbD1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIiB0eXBlPVxcXCJmaWxlXFxcIj46XFxuXCIgK1xuICAgICAgICBcIkZpbGUgaW5wdXRzIGFyZSByZWFkIG9ubHkuIFVzZSBhIHYtb246Y2hhbmdlIGxpc3RlbmVyIGluc3RlYWQuXCIsXG4gICAgICAgIGVsLnJhd0F0dHJzTWFwWyd2LW1vZGVsJ11cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGVsLmNvbXBvbmVudCkge1xuICAgIGdlbkNvbXBvbmVudE1vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgICAvLyBjb21wb25lbnQgdi1tb2RlbCBkb2Vzbid0IG5lZWQgZXh0cmEgcnVudGltZVxuICAgIHJldHVybiBmYWxzZVxuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3NlbGVjdCcpIHtcbiAgICBnZW5TZWxlY3QoZWwsIHZhbHVlLCBtb2RpZmllcnMpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2lucHV0JyAmJiB0eXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgZ2VuQ2hlY2tib3hNb2RlbChlbCwgdmFsdWUsIG1vZGlmaWVycyk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnaW5wdXQnICYmIHR5cGUgPT09ICdyYWRpbycpIHtcbiAgICBnZW5SYWRpb01vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdpbnB1dCcgfHwgdGFnID09PSAndGV4dGFyZWEnKSB7XG4gICAgZ2VuRGVmYXVsdE1vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgfSBlbHNlIGlmICghY29uZmlnLmlzUmVzZXJ2ZWRUYWcodGFnKSkge1xuICAgIGdlbkNvbXBvbmVudE1vZGVsKGVsLCB2YWx1ZSwgbW9kaWZpZXJzKTtcbiAgICAvLyBjb21wb25lbnQgdi1tb2RlbCBkb2Vzbid0IG5lZWQgZXh0cmEgcnVudGltZVxuICAgIHJldHVybiBmYWxzZVxuICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB3YXJuJDEoXG4gICAgICBcIjxcIiArIChlbC50YWcpICsgXCIgdi1tb2RlbD1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIj46IFwiICtcbiAgICAgIFwidi1tb2RlbCBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgZWxlbWVudCB0eXBlLiBcIiArXG4gICAgICAnSWYgeW91IGFyZSB3b3JraW5nIHdpdGggY29udGVudGVkaXRhYmxlLCBpdFxcJ3MgcmVjb21tZW5kZWQgdG8gJyArXG4gICAgICAnd3JhcCBhIGxpYnJhcnkgZGVkaWNhdGVkIGZvciB0aGF0IHB1cnBvc2UgaW5zaWRlIGEgY3VzdG9tIGNvbXBvbmVudC4nLFxuICAgICAgZWwucmF3QXR0cnNNYXBbJ3YtbW9kZWwnXVxuICAgICk7XG4gIH1cblxuICAvLyBlbnN1cmUgcnVudGltZSBkaXJlY3RpdmUgbWV0YWRhdGFcbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gZ2VuQ2hlY2tib3hNb2RlbCAoXG4gIGVsLFxuICB2YWx1ZSxcbiAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9IG1vZGlmaWVycyAmJiBtb2RpZmllcnMubnVtYmVyO1xuICB2YXIgdmFsdWVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICd2YWx1ZScpIHx8ICdudWxsJztcbiAgdmFyIHRydWVWYWx1ZUJpbmRpbmcgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ3RydWUtdmFsdWUnKSB8fCAndHJ1ZSc7XG4gIHZhciBmYWxzZVZhbHVlQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAnZmFsc2UtdmFsdWUnKSB8fCAnZmFsc2UnO1xuICBhZGRQcm9wKGVsLCAnY2hlY2tlZCcsXG4gICAgXCJBcnJheS5pc0FycmF5KFwiICsgdmFsdWUgKyBcIilcIiArXG4gICAgXCI/X2koXCIgKyB2YWx1ZSArIFwiLFwiICsgdmFsdWVCaW5kaW5nICsgXCIpPi0xXCIgKyAoXG4gICAgICB0cnVlVmFsdWVCaW5kaW5nID09PSAndHJ1ZSdcbiAgICAgICAgPyAoXCI6KFwiICsgdmFsdWUgKyBcIilcIilcbiAgICAgICAgOiAoXCI6X3EoXCIgKyB2YWx1ZSArIFwiLFwiICsgdHJ1ZVZhbHVlQmluZGluZyArIFwiKVwiKVxuICAgIClcbiAgKTtcbiAgYWRkSGFuZGxlcihlbCwgJ2NoYW5nZScsXG4gICAgXCJ2YXIgJCRhPVwiICsgdmFsdWUgKyBcIixcIiArXG4gICAgICAgICckJGVsPSRldmVudC50YXJnZXQsJyArXG4gICAgICAgIFwiJCRjPSQkZWwuY2hlY2tlZD8oXCIgKyB0cnVlVmFsdWVCaW5kaW5nICsgXCIpOihcIiArIGZhbHNlVmFsdWVCaW5kaW5nICsgXCIpO1wiICtcbiAgICAnaWYoQXJyYXkuaXNBcnJheSgkJGEpKXsnICtcbiAgICAgIFwidmFyICQkdj1cIiArIChudW1iZXIgPyAnX24oJyArIHZhbHVlQmluZGluZyArICcpJyA6IHZhbHVlQmluZGluZykgKyBcIixcIiArXG4gICAgICAgICAgJyQkaT1faSgkJGEsJCR2KTsnICtcbiAgICAgIFwiaWYoJCRlbC5jaGVja2VkKXskJGk8MCYmKFwiICsgKGdlbkFzc2lnbm1lbnRDb2RlKHZhbHVlLCAnJCRhLmNvbmNhdChbJCR2XSknKSkgKyBcIil9XCIgK1xuICAgICAgXCJlbHNleyQkaT4tMSYmKFwiICsgKGdlbkFzc2lnbm1lbnRDb2RlKHZhbHVlLCAnJCRhLnNsaWNlKDAsJCRpKS5jb25jYXQoJCRhLnNsaWNlKCQkaSsxKSknKSkgKyBcIil9XCIgK1xuICAgIFwifWVsc2V7XCIgKyAoZ2VuQXNzaWdubWVudENvZGUodmFsdWUsICckJGMnKSkgKyBcIn1cIixcbiAgICBudWxsLCB0cnVlXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdlblJhZGlvTW9kZWwgKFxuICBlbCxcbiAgdmFsdWUsXG4gIG1vZGlmaWVyc1xuKSB7XG4gIHZhciBudW1iZXIgPSBtb2RpZmllcnMgJiYgbW9kaWZpZXJzLm51bWJlcjtcbiAgdmFyIHZhbHVlQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAndmFsdWUnKSB8fCAnbnVsbCc7XG4gIHZhbHVlQmluZGluZyA9IG51bWJlciA/IChcIl9uKFwiICsgdmFsdWVCaW5kaW5nICsgXCIpXCIpIDogdmFsdWVCaW5kaW5nO1xuICBhZGRQcm9wKGVsLCAnY2hlY2tlZCcsIChcIl9xKFwiICsgdmFsdWUgKyBcIixcIiArIHZhbHVlQmluZGluZyArIFwiKVwiKSk7XG4gIGFkZEhhbmRsZXIoZWwsICdjaGFuZ2UnLCBnZW5Bc3NpZ25tZW50Q29kZSh2YWx1ZSwgdmFsdWVCaW5kaW5nKSwgbnVsbCwgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGdlblNlbGVjdCAoXG4gIGVsLFxuICB2YWx1ZSxcbiAgbW9kaWZpZXJzXG4pIHtcbiAgdmFyIG51bWJlciA9IG1vZGlmaWVycyAmJiBtb2RpZmllcnMubnVtYmVyO1xuICB2YXIgc2VsZWN0ZWRWYWwgPSBcIkFycmF5LnByb3RvdHlwZS5maWx0ZXJcIiArXG4gICAgXCIuY2FsbCgkZXZlbnQudGFyZ2V0Lm9wdGlvbnMsZnVuY3Rpb24obyl7cmV0dXJuIG8uc2VsZWN0ZWR9KVwiICtcbiAgICBcIi5tYXAoZnVuY3Rpb24obyl7dmFyIHZhbCA9IFxcXCJfdmFsdWVcXFwiIGluIG8gPyBvLl92YWx1ZSA6IG8udmFsdWU7XCIgK1xuICAgIFwicmV0dXJuIFwiICsgKG51bWJlciA/ICdfbih2YWwpJyA6ICd2YWwnKSArIFwifSlcIjtcblxuICB2YXIgYXNzaWdubWVudCA9ICckZXZlbnQudGFyZ2V0Lm11bHRpcGxlID8gJCRzZWxlY3RlZFZhbCA6ICQkc2VsZWN0ZWRWYWxbMF0nO1xuICB2YXIgY29kZSA9IFwidmFyICQkc2VsZWN0ZWRWYWwgPSBcIiArIHNlbGVjdGVkVmFsICsgXCI7XCI7XG4gIGNvZGUgPSBjb2RlICsgXCIgXCIgKyAoZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIGFzc2lnbm1lbnQpKTtcbiAgYWRkSGFuZGxlcihlbCwgJ2NoYW5nZScsIGNvZGUsIG51bGwsIHRydWUpO1xufVxuXG5mdW5jdGlvbiBnZW5EZWZhdWx0TW9kZWwgKFxuICBlbCxcbiAgdmFsdWUsXG4gIG1vZGlmaWVyc1xuKSB7XG4gIHZhciB0eXBlID0gZWwuYXR0cnNNYXAudHlwZTtcblxuICAvLyB3YXJuIGlmIHYtYmluZDp2YWx1ZSBjb25mbGljdHMgd2l0aCB2LW1vZGVsXG4gIC8vIGV4Y2VwdCBmb3IgaW5wdXRzIHdpdGggdi1iaW5kOnR5cGVcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YXIgdmFsdWUkMSA9IGVsLmF0dHJzTWFwWyd2LWJpbmQ6dmFsdWUnXSB8fCBlbC5hdHRyc01hcFsnOnZhbHVlJ107XG4gICAgdmFyIHR5cGVCaW5kaW5nID0gZWwuYXR0cnNNYXBbJ3YtYmluZDp0eXBlJ10gfHwgZWwuYXR0cnNNYXBbJzp0eXBlJ107XG4gICAgaWYgKHZhbHVlJDEgJiYgIXR5cGVCaW5kaW5nKSB7XG4gICAgICB2YXIgYmluZGluZyA9IGVsLmF0dHJzTWFwWyd2LWJpbmQ6dmFsdWUnXSA/ICd2LWJpbmQ6dmFsdWUnIDogJzp2YWx1ZSc7XG4gICAgICB3YXJuJDEoXG4gICAgICAgIGJpbmRpbmcgKyBcIj1cXFwiXCIgKyB2YWx1ZSQxICsgXCJcXFwiIGNvbmZsaWN0cyB3aXRoIHYtbW9kZWwgb24gdGhlIHNhbWUgZWxlbWVudCBcIiArXG4gICAgICAgICdiZWNhdXNlIHRoZSBsYXR0ZXIgYWxyZWFkeSBleHBhbmRzIHRvIGEgdmFsdWUgYmluZGluZyBpbnRlcm5hbGx5JyxcbiAgICAgICAgZWwucmF3QXR0cnNNYXBbYmluZGluZ11cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdmFyIHJlZiA9IG1vZGlmaWVycyB8fCB7fTtcbiAgdmFyIGxhenkgPSByZWYubGF6eTtcbiAgdmFyIG51bWJlciA9IHJlZi5udW1iZXI7XG4gIHZhciB0cmltID0gcmVmLnRyaW07XG4gIHZhciBuZWVkQ29tcG9zaXRpb25HdWFyZCA9ICFsYXp5ICYmIHR5cGUgIT09ICdyYW5nZSc7XG4gIHZhciBldmVudCA9IGxhenlcbiAgICA/ICdjaGFuZ2UnXG4gICAgOiB0eXBlID09PSAncmFuZ2UnXG4gICAgICA/IFJBTkdFX1RPS0VOXG4gICAgICA6ICdpbnB1dCc7XG5cbiAgdmFyIHZhbHVlRXhwcmVzc2lvbiA9ICckZXZlbnQudGFyZ2V0LnZhbHVlJztcbiAgaWYgKHRyaW0pIHtcbiAgICB2YWx1ZUV4cHJlc3Npb24gPSBcIiRldmVudC50YXJnZXQudmFsdWUudHJpbSgpXCI7XG4gIH1cbiAgaWYgKG51bWJlcikge1xuICAgIHZhbHVlRXhwcmVzc2lvbiA9IFwiX24oXCIgKyB2YWx1ZUV4cHJlc3Npb24gKyBcIilcIjtcbiAgfVxuXG4gIHZhciBjb2RlID0gZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIHZhbHVlRXhwcmVzc2lvbik7XG4gIGlmIChuZWVkQ29tcG9zaXRpb25HdWFyZCkge1xuICAgIGNvZGUgPSBcImlmKCRldmVudC50YXJnZXQuY29tcG9zaW5nKXJldHVybjtcIiArIGNvZGU7XG4gIH1cblxuICBhZGRQcm9wKGVsLCAndmFsdWUnLCAoXCIoXCIgKyB2YWx1ZSArIFwiKVwiKSk7XG4gIGFkZEhhbmRsZXIoZWwsIGV2ZW50LCBjb2RlLCBudWxsLCB0cnVlKTtcbiAgaWYgKHRyaW0gfHwgbnVtYmVyKSB7XG4gICAgYWRkSGFuZGxlcihlbCwgJ2JsdXInLCAnJGZvcmNlVXBkYXRlKCknKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuLy8gbm9ybWFsaXplIHYtbW9kZWwgZXZlbnQgdG9rZW5zIHRoYXQgY2FuIG9ubHkgYmUgZGV0ZXJtaW5lZCBhdCBydW50aW1lLlxuLy8gaXQncyBpbXBvcnRhbnQgdG8gcGxhY2UgdGhlIGV2ZW50IGFzIHRoZSBmaXJzdCBpbiB0aGUgYXJyYXkgYmVjYXVzZVxuLy8gdGhlIHdob2xlIHBvaW50IGlzIGVuc3VyaW5nIHRoZSB2LW1vZGVsIGNhbGxiYWNrIGdldHMgY2FsbGVkIGJlZm9yZVxuLy8gdXNlci1hdHRhY2hlZCBoYW5kbGVycy5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUV2ZW50cyAob24pIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChpc0RlZihvbltSQU5HRV9UT0tFTl0pKSB7XG4gICAgLy8gSUUgaW5wdXRbdHlwZT1yYW5nZV0gb25seSBzdXBwb3J0cyBgY2hhbmdlYCBldmVudFxuICAgIHZhciBldmVudCA9IGlzSUUgPyAnY2hhbmdlJyA6ICdpbnB1dCc7XG4gICAgb25bZXZlbnRdID0gW10uY29uY2F0KG9uW1JBTkdFX1RPS0VOXSwgb25bZXZlbnRdIHx8IFtdKTtcbiAgICBkZWxldGUgb25bUkFOR0VfVE9LRU5dO1xuICB9XG4gIC8vIFRoaXMgd2FzIG9yaWdpbmFsbHkgaW50ZW5kZWQgdG8gZml4ICM0NTIxIGJ1dCBubyBsb25nZXIgbmVjZXNzYXJ5XG4gIC8vIGFmdGVyIDIuNS4gS2VlcGluZyBpdCBmb3IgYmFja3dhcmRzIGNvbXBhdCB3aXRoIGdlbmVyYXRlZCBjb2RlIGZyb20gPCAyLjRcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChpc0RlZihvbltDSEVDS0JPWF9SQURJT19UT0tFTl0pKSB7XG4gICAgb24uY2hhbmdlID0gW10uY29uY2F0KG9uW0NIRUNLQk9YX1JBRElPX1RPS0VOXSwgb24uY2hhbmdlIHx8IFtdKTtcbiAgICBkZWxldGUgb25bQ0hFQ0tCT1hfUkFESU9fVE9LRU5dO1xuICB9XG59XG5cbnZhciB0YXJnZXQkMTtcblxuZnVuY3Rpb24gY3JlYXRlT25jZUhhbmRsZXIkMSAoZXZlbnQsIGhhbmRsZXIsIGNhcHR1cmUpIHtcbiAgdmFyIF90YXJnZXQgPSB0YXJnZXQkMTsgLy8gc2F2ZSBjdXJyZW50IHRhcmdldCBlbGVtZW50IGluIGNsb3N1cmVcbiAgcmV0dXJuIGZ1bmN0aW9uIG9uY2VIYW5kbGVyICgpIHtcbiAgICB2YXIgcmVzID0gaGFuZGxlci5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgIGlmIChyZXMgIT09IG51bGwpIHtcbiAgICAgIHJlbW92ZSQyKGV2ZW50LCBvbmNlSGFuZGxlciwgY2FwdHVyZSwgX3RhcmdldCk7XG4gICAgfVxuICB9XG59XG5cbi8vICM5NDQ2OiBGaXJlZm94IDw9IDUzIChpbiBwYXJ0aWN1bGFyLCBFU1IgNTIpIGhhcyBpbmNvcnJlY3QgRXZlbnQudGltZVN0YW1wXG4vLyBpbXBsZW1lbnRhdGlvbiBhbmQgZG9lcyBub3QgZmlyZSBtaWNyb3Rhc2tzIGluIGJldHdlZW4gZXZlbnQgcHJvcGFnYXRpb24sIHNvXG4vLyBzYWZlIHRvIGV4Y2x1ZGUuXG52YXIgdXNlTWljcm90YXNrRml4ID0gaXNVc2luZ01pY3JvVGFzayAmJiAhKGlzRkYgJiYgTnVtYmVyKGlzRkZbMV0pIDw9IDUzKTtcblxuZnVuY3Rpb24gYWRkJDEgKFxuICBuYW1lLFxuICBoYW5kbGVyLFxuICBjYXB0dXJlLFxuICBwYXNzaXZlXG4pIHtcbiAgLy8gYXN5bmMgZWRnZSBjYXNlICM2NTY2OiBpbm5lciBjbGljayBldmVudCB0cmlnZ2VycyBwYXRjaCwgZXZlbnQgaGFuZGxlclxuICAvLyBhdHRhY2hlZCB0byBvdXRlciBlbGVtZW50IGR1cmluZyBwYXRjaCwgYW5kIHRyaWdnZXJlZCBhZ2Fpbi4gVGhpc1xuICAvLyBoYXBwZW5zIGJlY2F1c2UgYnJvd3NlcnMgZmlyZSBtaWNyb3Rhc2sgdGlja3MgYmV0d2VlbiBldmVudCBwcm9wYWdhdGlvbi5cbiAgLy8gdGhlIHNvbHV0aW9uIGlzIHNpbXBsZTogd2Ugc2F2ZSB0aGUgdGltZXN0YW1wIHdoZW4gYSBoYW5kbGVyIGlzIGF0dGFjaGVkLFxuICAvLyBhbmQgdGhlIGhhbmRsZXIgd291bGQgb25seSBmaXJlIGlmIHRoZSBldmVudCBwYXNzZWQgdG8gaXQgd2FzIGZpcmVkXG4gIC8vIEFGVEVSIGl0IHdhcyBhdHRhY2hlZC5cbiAgaWYgKHVzZU1pY3JvdGFza0ZpeCkge1xuICAgIHZhciBhdHRhY2hlZFRpbWVzdGFtcCA9IGN1cnJlbnRGbHVzaFRpbWVzdGFtcDtcbiAgICB2YXIgb3JpZ2luYWwgPSBoYW5kbGVyO1xuICAgIGhhbmRsZXIgPSBvcmlnaW5hbC5fd3JhcHBlciA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoXG4gICAgICAgIC8vIG5vIGJ1YmJsaW5nLCBzaG91bGQgYWx3YXlzIGZpcmUuXG4gICAgICAgIC8vIHRoaXMgaXMganVzdCBhIHNhZmV0eSBuZXQgaW4gY2FzZSBldmVudC50aW1lU3RhbXAgaXMgdW5yZWxpYWJsZSBpblxuICAgICAgICAvLyBjZXJ0YWluIHdlaXJkIGVudmlyb25tZW50cy4uLlxuICAgICAgICBlLnRhcmdldCA9PT0gZS5jdXJyZW50VGFyZ2V0IHx8XG4gICAgICAgIC8vIGV2ZW50IGlzIGZpcmVkIGFmdGVyIGhhbmRsZXIgYXR0YWNobWVudFxuICAgICAgICBlLnRpbWVTdGFtcCA+PSBhdHRhY2hlZFRpbWVzdGFtcCB8fFxuICAgICAgICAvLyBiYWlsIGZvciBlbnZpcm9ubWVudHMgdGhhdCBoYXZlIGJ1Z2d5IGV2ZW50LnRpbWVTdGFtcCBpbXBsZW1lbnRhdGlvbnNcbiAgICAgICAgLy8gIzk0NjIgaU9TIDkgYnVnOiBldmVudC50aW1lU3RhbXAgaXMgMCBhZnRlciBoaXN0b3J5LnB1c2hTdGF0ZVxuICAgICAgICAvLyAjOTY4MSBRdFdlYkVuZ2luZSBldmVudC50aW1lU3RhbXAgaXMgbmVnYXRpdmUgdmFsdWVcbiAgICAgICAgZS50aW1lU3RhbXAgPD0gMCB8fFxuICAgICAgICAvLyAjOTQ0OCBiYWlsIGlmIGV2ZW50IGlzIGZpcmVkIGluIGFub3RoZXIgZG9jdW1lbnQgaW4gYSBtdWx0aS1wYWdlXG4gICAgICAgIC8vIGVsZWN0cm9uL253LmpzIGFwcCwgc2luY2UgZXZlbnQudGltZVN0YW1wIHdpbGwgYmUgdXNpbmcgYSBkaWZmZXJlbnRcbiAgICAgICAgLy8gc3RhcnRpbmcgcmVmZXJlbmNlXG4gICAgICAgIGUudGFyZ2V0Lm93bmVyRG9jdW1lbnQgIT09IGRvY3VtZW50XG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIHRhcmdldCQxLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgbmFtZSxcbiAgICBoYW5kbGVyLFxuICAgIHN1cHBvcnRzUGFzc2l2ZVxuICAgICAgPyB7IGNhcHR1cmU6IGNhcHR1cmUsIHBhc3NpdmU6IHBhc3NpdmUgfVxuICAgICAgOiBjYXB0dXJlXG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZSQyIChcbiAgbmFtZSxcbiAgaGFuZGxlcixcbiAgY2FwdHVyZSxcbiAgX3RhcmdldFxuKSB7XG4gIChfdGFyZ2V0IHx8IHRhcmdldCQxKS5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgIG5hbWUsXG4gICAgaGFuZGxlci5fd3JhcHBlciB8fCBoYW5kbGVyLFxuICAgIGNhcHR1cmVcbiAgKTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlRE9NTGlzdGVuZXJzIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgaWYgKGlzVW5kZWYob2xkVm5vZGUuZGF0YS5vbikgJiYgaXNVbmRlZih2bm9kZS5kYXRhLm9uKSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBvbiA9IHZub2RlLmRhdGEub24gfHwge307XG4gIHZhciBvbGRPbiA9IG9sZFZub2RlLmRhdGEub24gfHwge307XG4gIHRhcmdldCQxID0gdm5vZGUuZWxtO1xuICBub3JtYWxpemVFdmVudHMob24pO1xuICB1cGRhdGVMaXN0ZW5lcnMob24sIG9sZE9uLCBhZGQkMSwgcmVtb3ZlJDIsIGNyZWF0ZU9uY2VIYW5kbGVyJDEsIHZub2RlLmNvbnRleHQpO1xuICB0YXJnZXQkMSA9IHVuZGVmaW5lZDtcbn1cblxudmFyIGV2ZW50cyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVET01MaXN0ZW5lcnMsXG4gIHVwZGF0ZTogdXBkYXRlRE9NTGlzdGVuZXJzXG59O1xuXG4vKiAgKi9cblxudmFyIHN2Z0NvbnRhaW5lcjtcblxuZnVuY3Rpb24gdXBkYXRlRE9NUHJvcHMgKG9sZFZub2RlLCB2bm9kZSkge1xuICBpZiAoaXNVbmRlZihvbGRWbm9kZS5kYXRhLmRvbVByb3BzKSAmJiBpc1VuZGVmKHZub2RlLmRhdGEuZG9tUHJvcHMpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIGtleSwgY3VyO1xuICB2YXIgZWxtID0gdm5vZGUuZWxtO1xuICB2YXIgb2xkUHJvcHMgPSBvbGRWbm9kZS5kYXRhLmRvbVByb3BzIHx8IHt9O1xuICB2YXIgcHJvcHMgPSB2bm9kZS5kYXRhLmRvbVByb3BzIHx8IHt9O1xuICAvLyBjbG9uZSBvYnNlcnZlZCBvYmplY3RzLCBhcyB0aGUgdXNlciBwcm9iYWJseSB3YW50cyB0byBtdXRhdGUgaXRcbiAgaWYgKGlzRGVmKHByb3BzLl9fb2JfXykpIHtcbiAgICBwcm9wcyA9IHZub2RlLmRhdGEuZG9tUHJvcHMgPSBleHRlbmQoe30sIHByb3BzKTtcbiAgfVxuXG4gIGZvciAoa2V5IGluIG9sZFByb3BzKSB7XG4gICAgaWYgKCEoa2V5IGluIHByb3BzKSkge1xuICAgICAgZWxtW2tleV0gPSAnJztcbiAgICB9XG4gIH1cblxuICBmb3IgKGtleSBpbiBwcm9wcykge1xuICAgIGN1ciA9IHByb3BzW2tleV07XG4gICAgLy8gaWdub3JlIGNoaWxkcmVuIGlmIHRoZSBub2RlIGhhcyB0ZXh0Q29udGVudCBvciBpbm5lckhUTUwsXG4gICAgLy8gYXMgdGhlc2Ugd2lsbCB0aHJvdyBhd2F5IGV4aXN0aW5nIERPTSBub2RlcyBhbmQgY2F1c2UgcmVtb3ZhbCBlcnJvcnNcbiAgICAvLyBvbiBzdWJzZXF1ZW50IHBhdGNoZXMgKCMzMzYwKVxuICAgIGlmIChrZXkgPT09ICd0ZXh0Q29udGVudCcgfHwga2V5ID09PSAnaW5uZXJIVE1MJykge1xuICAgICAgaWYgKHZub2RlLmNoaWxkcmVuKSB7IHZub2RlLmNoaWxkcmVuLmxlbmd0aCA9IDA7IH1cbiAgICAgIGlmIChjdXIgPT09IG9sZFByb3BzW2tleV0pIHsgY29udGludWUgfVxuICAgICAgLy8gIzY2MDEgd29yayBhcm91bmQgQ2hyb21lIHZlcnNpb24gPD0gNTUgYnVnIHdoZXJlIHNpbmdsZSB0ZXh0Tm9kZVxuICAgICAgLy8gcmVwbGFjZWQgYnkgaW5uZXJIVE1ML3RleHRDb250ZW50IHJldGFpbnMgaXRzIHBhcmVudE5vZGUgcHJvcGVydHlcbiAgICAgIGlmIChlbG0uY2hpbGROb2Rlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgZWxtLnJlbW92ZUNoaWxkKGVsbS5jaGlsZE5vZGVzWzBdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoa2V5ID09PSAndmFsdWUnICYmIGVsbS50YWdOYW1lICE9PSAnUFJPR1JFU1MnKSB7XG4gICAgICAvLyBzdG9yZSB2YWx1ZSBhcyBfdmFsdWUgYXMgd2VsbCBzaW5jZVxuICAgICAgLy8gbm9uLXN0cmluZyB2YWx1ZXMgd2lsbCBiZSBzdHJpbmdpZmllZFxuICAgICAgZWxtLl92YWx1ZSA9IGN1cjtcbiAgICAgIC8vIGF2b2lkIHJlc2V0dGluZyBjdXJzb3IgcG9zaXRpb24gd2hlbiB2YWx1ZSBpcyB0aGUgc2FtZVxuICAgICAgdmFyIHN0ckN1ciA9IGlzVW5kZWYoY3VyKSA/ICcnIDogU3RyaW5nKGN1cik7XG4gICAgICBpZiAoc2hvdWxkVXBkYXRlVmFsdWUoZWxtLCBzdHJDdXIpKSB7XG4gICAgICAgIGVsbS52YWx1ZSA9IHN0ckN1cjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2lubmVySFRNTCcgJiYgaXNTVkcoZWxtLnRhZ05hbWUpICYmIGlzVW5kZWYoZWxtLmlubmVySFRNTCkpIHtcbiAgICAgIC8vIElFIGRvZXNuJ3Qgc3VwcG9ydCBpbm5lckhUTUwgZm9yIFNWRyBlbGVtZW50c1xuICAgICAgc3ZnQ29udGFpbmVyID0gc3ZnQ29udGFpbmVyIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgc3ZnQ29udGFpbmVyLmlubmVySFRNTCA9IFwiPHN2Zz5cIiArIGN1ciArIFwiPC9zdmc+XCI7XG4gICAgICB2YXIgc3ZnID0gc3ZnQ29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgICB3aGlsZSAoZWxtLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgZWxtLnJlbW92ZUNoaWxkKGVsbS5maXJzdENoaWxkKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChzdmcuZmlyc3RDaGlsZCkge1xuICAgICAgICBlbG0uYXBwZW5kQ2hpbGQoc3ZnLmZpcnN0Q2hpbGQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICAvLyBza2lwIHRoZSB1cGRhdGUgaWYgb2xkIGFuZCBuZXcgVkRPTSBzdGF0ZSBpcyB0aGUgc2FtZS5cbiAgICAgIC8vIGB2YWx1ZWAgaXMgaGFuZGxlZCBzZXBhcmF0ZWx5IGJlY2F1c2UgdGhlIERPTSB2YWx1ZSBtYXkgYmUgdGVtcG9yYXJpbHlcbiAgICAgIC8vIG91dCBvZiBzeW5jIHdpdGggVkRPTSBzdGF0ZSBkdWUgdG8gZm9jdXMsIGNvbXBvc2l0aW9uIGFuZCBtb2RpZmllcnMuXG4gICAgICAvLyBUaGlzICAjNDUyMSBieSBza2lwcGluZyB0aGUgdW5uZWNlc2FycnkgYGNoZWNrZWRgIHVwZGF0ZS5cbiAgICAgIGN1ciAhPT0gb2xkUHJvcHNba2V5XVxuICAgICkge1xuICAgICAgLy8gc29tZSBwcm9wZXJ0eSB1cGRhdGVzIGNhbiB0aHJvd1xuICAgICAgLy8gZS5nLiBgdmFsdWVgIG9uIDxwcm9ncmVzcz4gdy8gbm9uLWZpbml0ZSB2YWx1ZVxuICAgICAgdHJ5IHtcbiAgICAgICAgZWxtW2tleV0gPSBjdXI7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuICAgIH1cbiAgfVxufVxuXG4vLyBjaGVjayBwbGF0Zm9ybXMvd2ViL3V0aWwvYXR0cnMuanMgYWNjZXB0VmFsdWVcblxuXG5mdW5jdGlvbiBzaG91bGRVcGRhdGVWYWx1ZSAoZWxtLCBjaGVja1ZhbCkge1xuICByZXR1cm4gKCFlbG0uY29tcG9zaW5nICYmIChcbiAgICBlbG0udGFnTmFtZSA9PT0gJ09QVElPTicgfHxcbiAgICBpc05vdEluRm9jdXNBbmREaXJ0eShlbG0sIGNoZWNrVmFsKSB8fFxuICAgIGlzRGlydHlXaXRoTW9kaWZpZXJzKGVsbSwgY2hlY2tWYWwpXG4gICkpXG59XG5cbmZ1bmN0aW9uIGlzTm90SW5Gb2N1c0FuZERpcnR5IChlbG0sIGNoZWNrVmFsKSB7XG4gIC8vIHJldHVybiB0cnVlIHdoZW4gdGV4dGJveCAoLm51bWJlciBhbmQgLnRyaW0pIGxvc2VzIGZvY3VzIGFuZCBpdHMgdmFsdWUgaXNcbiAgLy8gbm90IGVxdWFsIHRvIHRoZSB1cGRhdGVkIHZhbHVlXG4gIHZhciBub3RJbkZvY3VzID0gdHJ1ZTtcbiAgLy8gIzYxNTdcbiAgLy8gd29yayBhcm91bmQgSUUgYnVnIHdoZW4gYWNjZXNzaW5nIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaW4gYW4gaWZyYW1lXG4gIHRyeSB7IG5vdEluRm9jdXMgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBlbG07IH0gY2F0Y2ggKGUpIHt9XG4gIHJldHVybiBub3RJbkZvY3VzICYmIGVsbS52YWx1ZSAhPT0gY2hlY2tWYWxcbn1cblxuZnVuY3Rpb24gaXNEaXJ0eVdpdGhNb2RpZmllcnMgKGVsbSwgbmV3VmFsKSB7XG4gIHZhciB2YWx1ZSA9IGVsbS52YWx1ZTtcbiAgdmFyIG1vZGlmaWVycyA9IGVsbS5fdk1vZGlmaWVyczsgLy8gaW5qZWN0ZWQgYnkgdi1tb2RlbCBydW50aW1lXG4gIGlmIChpc0RlZihtb2RpZmllcnMpKSB7XG4gICAgaWYgKG1vZGlmaWVycy5udW1iZXIpIHtcbiAgICAgIHJldHVybiB0b051bWJlcih2YWx1ZSkgIT09IHRvTnVtYmVyKG5ld1ZhbClcbiAgICB9XG4gICAgaWYgKG1vZGlmaWVycy50cmltKSB7XG4gICAgICByZXR1cm4gdmFsdWUudHJpbSgpICE9PSBuZXdWYWwudHJpbSgpXG4gICAgfVxuICB9XG4gIHJldHVybiB2YWx1ZSAhPT0gbmV3VmFsXG59XG5cbnZhciBkb21Qcm9wcyA9IHtcbiAgY3JlYXRlOiB1cGRhdGVET01Qcm9wcyxcbiAgdXBkYXRlOiB1cGRhdGVET01Qcm9wc1xufTtcblxuLyogICovXG5cbnZhciBwYXJzZVN0eWxlVGV4dCA9IGNhY2hlZChmdW5jdGlvbiAoY3NzVGV4dCkge1xuICB2YXIgcmVzID0ge307XG4gIHZhciBsaXN0RGVsaW1pdGVyID0gLzsoPyFbXihdKlxcKSkvZztcbiAgdmFyIHByb3BlcnR5RGVsaW1pdGVyID0gLzooLispLztcbiAgY3NzVGV4dC5zcGxpdChsaXN0RGVsaW1pdGVyKS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHZhciB0bXAgPSBpdGVtLnNwbGl0KHByb3BlcnR5RGVsaW1pdGVyKTtcbiAgICAgIHRtcC5sZW5ndGggPiAxICYmIChyZXNbdG1wWzBdLnRyaW0oKV0gPSB0bXBbMV0udHJpbSgpKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzXG59KTtcblxuLy8gbWVyZ2Ugc3RhdGljIGFuZCBkeW5hbWljIHN0eWxlIGRhdGEgb24gdGhlIHNhbWUgdm5vZGVcbmZ1bmN0aW9uIG5vcm1hbGl6ZVN0eWxlRGF0YSAoZGF0YSkge1xuICB2YXIgc3R5bGUgPSBub3JtYWxpemVTdHlsZUJpbmRpbmcoZGF0YS5zdHlsZSk7XG4gIC8vIHN0YXRpYyBzdHlsZSBpcyBwcmUtcHJvY2Vzc2VkIGludG8gYW4gb2JqZWN0IGR1cmluZyBjb21waWxhdGlvblxuICAvLyBhbmQgaXMgYWx3YXlzIGEgZnJlc2ggb2JqZWN0LCBzbyBpdCdzIHNhZmUgdG8gbWVyZ2UgaW50byBpdFxuICByZXR1cm4gZGF0YS5zdGF0aWNTdHlsZVxuICAgID8gZXh0ZW5kKGRhdGEuc3RhdGljU3R5bGUsIHN0eWxlKVxuICAgIDogc3R5bGVcbn1cblxuLy8gbm9ybWFsaXplIHBvc3NpYmxlIGFycmF5IC8gc3RyaW5nIHZhbHVlcyBpbnRvIE9iamVjdFxuZnVuY3Rpb24gbm9ybWFsaXplU3R5bGVCaW5kaW5nIChiaW5kaW5nU3R5bGUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYmluZGluZ1N0eWxlKSkge1xuICAgIHJldHVybiB0b09iamVjdChiaW5kaW5nU3R5bGUpXG4gIH1cbiAgaWYgKHR5cGVvZiBiaW5kaW5nU3R5bGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBhcnNlU3R5bGVUZXh0KGJpbmRpbmdTdHlsZSlcbiAgfVxuICByZXR1cm4gYmluZGluZ1N0eWxlXG59XG5cbi8qKlxuICogcGFyZW50IGNvbXBvbmVudCBzdHlsZSBzaG91bGQgYmUgYWZ0ZXIgY2hpbGQnc1xuICogc28gdGhhdCBwYXJlbnQgY29tcG9uZW50J3Mgc3R5bGUgY291bGQgb3ZlcnJpZGUgaXRcbiAqL1xuZnVuY3Rpb24gZ2V0U3R5bGUgKHZub2RlLCBjaGVja0NoaWxkKSB7XG4gIHZhciByZXMgPSB7fTtcbiAgdmFyIHN0eWxlRGF0YTtcblxuICBpZiAoY2hlY2tDaGlsZCkge1xuICAgIHZhciBjaGlsZE5vZGUgPSB2bm9kZTtcbiAgICB3aGlsZSAoY2hpbGROb2RlLmNvbXBvbmVudEluc3RhbmNlKSB7XG4gICAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO1xuICAgICAgaWYgKFxuICAgICAgICBjaGlsZE5vZGUgJiYgY2hpbGROb2RlLmRhdGEgJiZcbiAgICAgICAgKHN0eWxlRGF0YSA9IG5vcm1hbGl6ZVN0eWxlRGF0YShjaGlsZE5vZGUuZGF0YSkpXG4gICAgICApIHtcbiAgICAgICAgZXh0ZW5kKHJlcywgc3R5bGVEYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoKHN0eWxlRGF0YSA9IG5vcm1hbGl6ZVN0eWxlRGF0YSh2bm9kZS5kYXRhKSkpIHtcbiAgICBleHRlbmQocmVzLCBzdHlsZURhdGEpO1xuICB9XG5cbiAgdmFyIHBhcmVudE5vZGUgPSB2bm9kZTtcbiAgd2hpbGUgKChwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5wYXJlbnQpKSB7XG4gICAgaWYgKHBhcmVudE5vZGUuZGF0YSAmJiAoc3R5bGVEYXRhID0gbm9ybWFsaXplU3R5bGVEYXRhKHBhcmVudE5vZGUuZGF0YSkpKSB7XG4gICAgICBleHRlbmQocmVzLCBzdHlsZURhdGEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG52YXIgY3NzVmFyUkUgPSAvXi0tLztcbnZhciBpbXBvcnRhbnRSRSA9IC9cXHMqIWltcG9ydGFudCQvO1xudmFyIHNldFByb3AgPSBmdW5jdGlvbiAoZWwsIG5hbWUsIHZhbCkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGNzc1ZhclJFLnRlc3QobmFtZSkpIHtcbiAgICBlbC5zdHlsZS5zZXRQcm9wZXJ0eShuYW1lLCB2YWwpO1xuICB9IGVsc2UgaWYgKGltcG9ydGFudFJFLnRlc3QodmFsKSkge1xuICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KGh5cGhlbmF0ZShuYW1lKSwgdmFsLnJlcGxhY2UoaW1wb3J0YW50UkUsICcnKSwgJ2ltcG9ydGFudCcpO1xuICB9IGVsc2Uge1xuICAgIHZhciBub3JtYWxpemVkTmFtZSA9IG5vcm1hbGl6ZShuYW1lKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICAvLyBTdXBwb3J0IHZhbHVlcyBhcnJheSBjcmVhdGVkIGJ5IGF1dG9wcmVmaXhlciwgZS5nLlxuICAgICAgLy8ge2Rpc3BsYXk6IFtcIi13ZWJraXQtYm94XCIsIFwiLW1zLWZsZXhib3hcIiwgXCJmbGV4XCJdfVxuICAgICAgLy8gU2V0IHRoZW0gb25lIGJ5IG9uZSwgYW5kIHRoZSBicm93c2VyIHdpbGwgb25seSBzZXQgdGhvc2UgaXQgY2FuIHJlY29nbml6ZVxuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHZhbC5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBlbC5zdHlsZVtub3JtYWxpemVkTmFtZV0gPSB2YWxbaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnN0eWxlW25vcm1hbGl6ZWROYW1lXSA9IHZhbDtcbiAgICB9XG4gIH1cbn07XG5cbnZhciB2ZW5kb3JOYW1lcyA9IFsnV2Via2l0JywgJ01veicsICdtcyddO1xuXG52YXIgZW1wdHlTdHlsZTtcbnZhciBub3JtYWxpemUgPSBjYWNoZWQoZnVuY3Rpb24gKHByb3ApIHtcbiAgZW1wdHlTdHlsZSA9IGVtcHR5U3R5bGUgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykuc3R5bGU7XG4gIHByb3AgPSBjYW1lbGl6ZShwcm9wKTtcbiAgaWYgKHByb3AgIT09ICdmaWx0ZXInICYmIChwcm9wIGluIGVtcHR5U3R5bGUpKSB7XG4gICAgcmV0dXJuIHByb3BcbiAgfVxuICB2YXIgY2FwTmFtZSA9IHByb3AuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwcm9wLnNsaWNlKDEpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZlbmRvck5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5hbWUgPSB2ZW5kb3JOYW1lc1tpXSArIGNhcE5hbWU7XG4gICAgaWYgKG5hbWUgaW4gZW1wdHlTdHlsZSkge1xuICAgICAgcmV0dXJuIG5hbWVcbiAgICB9XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB1cGRhdGVTdHlsZSAob2xkVm5vZGUsIHZub2RlKSB7XG4gIHZhciBkYXRhID0gdm5vZGUuZGF0YTtcbiAgdmFyIG9sZERhdGEgPSBvbGRWbm9kZS5kYXRhO1xuXG4gIGlmIChpc1VuZGVmKGRhdGEuc3RhdGljU3R5bGUpICYmIGlzVW5kZWYoZGF0YS5zdHlsZSkgJiZcbiAgICBpc1VuZGVmKG9sZERhdGEuc3RhdGljU3R5bGUpICYmIGlzVW5kZWYob2xkRGF0YS5zdHlsZSlcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgY3VyLCBuYW1lO1xuICB2YXIgZWwgPSB2bm9kZS5lbG07XG4gIHZhciBvbGRTdGF0aWNTdHlsZSA9IG9sZERhdGEuc3RhdGljU3R5bGU7XG4gIHZhciBvbGRTdHlsZUJpbmRpbmcgPSBvbGREYXRhLm5vcm1hbGl6ZWRTdHlsZSB8fCBvbGREYXRhLnN0eWxlIHx8IHt9O1xuXG4gIC8vIGlmIHN0YXRpYyBzdHlsZSBleGlzdHMsIHN0eWxlYmluZGluZyBhbHJlYWR5IG1lcmdlZCBpbnRvIGl0IHdoZW4gZG9pbmcgbm9ybWFsaXplU3R5bGVEYXRhXG4gIHZhciBvbGRTdHlsZSA9IG9sZFN0YXRpY1N0eWxlIHx8IG9sZFN0eWxlQmluZGluZztcblxuICB2YXIgc3R5bGUgPSBub3JtYWxpemVTdHlsZUJpbmRpbmcodm5vZGUuZGF0YS5zdHlsZSkgfHwge307XG5cbiAgLy8gc3RvcmUgbm9ybWFsaXplZCBzdHlsZSB1bmRlciBhIGRpZmZlcmVudCBrZXkgZm9yIG5leHQgZGlmZlxuICAvLyBtYWtlIHN1cmUgdG8gY2xvbmUgaXQgaWYgaXQncyByZWFjdGl2ZSwgc2luY2UgdGhlIHVzZXIgbGlrZWx5IHdhbnRzXG4gIC8vIHRvIG11dGF0ZSBpdC5cbiAgdm5vZGUuZGF0YS5ub3JtYWxpemVkU3R5bGUgPSBpc0RlZihzdHlsZS5fX29iX18pXG4gICAgPyBleHRlbmQoe30sIHN0eWxlKVxuICAgIDogc3R5bGU7XG5cbiAgdmFyIG5ld1N0eWxlID0gZ2V0U3R5bGUodm5vZGUsIHRydWUpO1xuXG4gIGZvciAobmFtZSBpbiBvbGRTdHlsZSkge1xuICAgIGlmIChpc1VuZGVmKG5ld1N0eWxlW25hbWVdKSkge1xuICAgICAgc2V0UHJvcChlbCwgbmFtZSwgJycpO1xuICAgIH1cbiAgfVxuICBmb3IgKG5hbWUgaW4gbmV3U3R5bGUpIHtcbiAgICBjdXIgPSBuZXdTdHlsZVtuYW1lXTtcbiAgICBpZiAoY3VyICE9PSBvbGRTdHlsZVtuYW1lXSkge1xuICAgICAgLy8gaWU5IHNldHRpbmcgdG8gbnVsbCBoYXMgbm8gZWZmZWN0LCBtdXN0IHVzZSBlbXB0eSBzdHJpbmdcbiAgICAgIHNldFByb3AoZWwsIG5hbWUsIGN1ciA9PSBudWxsID8gJycgOiBjdXIpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgc3R5bGUgPSB7XG4gIGNyZWF0ZTogdXBkYXRlU3R5bGUsXG4gIHVwZGF0ZTogdXBkYXRlU3R5bGVcbn07XG5cbi8qICAqL1xuXG52YXIgd2hpdGVzcGFjZVJFID0gL1xccysvO1xuXG4vKipcbiAqIEFkZCBjbGFzcyB3aXRoIGNvbXBhdGliaWxpdHkgZm9yIFNWRyBzaW5jZSBjbGFzc0xpc3QgaXMgbm90IHN1cHBvcnRlZCBvblxuICogU1ZHIGVsZW1lbnRzIGluIElFXG4gKi9cbmZ1bmN0aW9uIGFkZENsYXNzIChlbCwgY2xzKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIWNscyB8fCAhKGNscyA9IGNscy50cmltKCkpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoZWwuY2xhc3NMaXN0KSB7XG4gICAgaWYgKGNscy5pbmRleE9mKCcgJykgPiAtMSkge1xuICAgICAgY2xzLnNwbGl0KHdoaXRlc3BhY2VSRSkuZm9yRWFjaChmdW5jdGlvbiAoYykgeyByZXR1cm4gZWwuY2xhc3NMaXN0LmFkZChjKTsgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLmNsYXNzTGlzdC5hZGQoY2xzKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGN1ciA9IFwiIFwiICsgKGVsLmdldEF0dHJpYnV0ZSgnY2xhc3MnKSB8fCAnJykgKyBcIiBcIjtcbiAgICBpZiAoY3VyLmluZGV4T2YoJyAnICsgY2xzICsgJyAnKSA8IDApIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAoY3VyICsgY2xzKS50cmltKCkpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZSBjbGFzcyB3aXRoIGNvbXBhdGliaWxpdHkgZm9yIFNWRyBzaW5jZSBjbGFzc0xpc3QgaXMgbm90IHN1cHBvcnRlZCBvblxuICogU1ZHIGVsZW1lbnRzIGluIElFXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZUNsYXNzIChlbCwgY2xzKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIWNscyB8fCAhKGNscyA9IGNscy50cmltKCkpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoZWwuY2xhc3NMaXN0KSB7XG4gICAgaWYgKGNscy5pbmRleE9mKCcgJykgPiAtMSkge1xuICAgICAgY2xzLnNwbGl0KHdoaXRlc3BhY2VSRSkuZm9yRWFjaChmdW5jdGlvbiAoYykgeyByZXR1cm4gZWwuY2xhc3NMaXN0LnJlbW92ZShjKTsgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoY2xzKTtcbiAgICB9XG4gICAgaWYgKCFlbC5jbGFzc0xpc3QubGVuZ3RoKSB7XG4gICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2NsYXNzJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBjdXIgPSBcIiBcIiArIChlbC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykgfHwgJycpICsgXCIgXCI7XG4gICAgdmFyIHRhciA9ICcgJyArIGNscyArICcgJztcbiAgICB3aGlsZSAoY3VyLmluZGV4T2YodGFyKSA+PSAwKSB7XG4gICAgICBjdXIgPSBjdXIucmVwbGFjZSh0YXIsICcgJyk7XG4gICAgfVxuICAgIGN1ciA9IGN1ci50cmltKCk7XG4gICAgaWYgKGN1cikge1xuICAgICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIGN1cik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnY2xhc3MnKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIHJlc29sdmVUcmFuc2l0aW9uIChkZWYkJDEpIHtcbiAgaWYgKCFkZWYkJDEpIHtcbiAgICByZXR1cm5cbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAodHlwZW9mIGRlZiQkMSA9PT0gJ29iamVjdCcpIHtcbiAgICB2YXIgcmVzID0ge307XG4gICAgaWYgKGRlZiQkMS5jc3MgIT09IGZhbHNlKSB7XG4gICAgICBleHRlbmQocmVzLCBhdXRvQ3NzVHJhbnNpdGlvbihkZWYkJDEubmFtZSB8fCAndicpKTtcbiAgICB9XG4gICAgZXh0ZW5kKHJlcywgZGVmJCQxKTtcbiAgICByZXR1cm4gcmVzXG4gIH0gZWxzZSBpZiAodHlwZW9mIGRlZiQkMSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gYXV0b0Nzc1RyYW5zaXRpb24oZGVmJCQxKVxuICB9XG59XG5cbnZhciBhdXRvQ3NzVHJhbnNpdGlvbiA9IGNhY2hlZChmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4ge1xuICAgIGVudGVyQ2xhc3M6IChuYW1lICsgXCItZW50ZXJcIiksXG4gICAgZW50ZXJUb0NsYXNzOiAobmFtZSArIFwiLWVudGVyLXRvXCIpLFxuICAgIGVudGVyQWN0aXZlQ2xhc3M6IChuYW1lICsgXCItZW50ZXItYWN0aXZlXCIpLFxuICAgIGxlYXZlQ2xhc3M6IChuYW1lICsgXCItbGVhdmVcIiksXG4gICAgbGVhdmVUb0NsYXNzOiAobmFtZSArIFwiLWxlYXZlLXRvXCIpLFxuICAgIGxlYXZlQWN0aXZlQ2xhc3M6IChuYW1lICsgXCItbGVhdmUtYWN0aXZlXCIpXG4gIH1cbn0pO1xuXG52YXIgaGFzVHJhbnNpdGlvbiA9IGluQnJvd3NlciAmJiAhaXNJRTk7XG52YXIgVFJBTlNJVElPTiA9ICd0cmFuc2l0aW9uJztcbnZhciBBTklNQVRJT04gPSAnYW5pbWF0aW9uJztcblxuLy8gVHJhbnNpdGlvbiBwcm9wZXJ0eS9ldmVudCBzbmlmZmluZ1xudmFyIHRyYW5zaXRpb25Qcm9wID0gJ3RyYW5zaXRpb24nO1xudmFyIHRyYW5zaXRpb25FbmRFdmVudCA9ICd0cmFuc2l0aW9uZW5kJztcbnZhciBhbmltYXRpb25Qcm9wID0gJ2FuaW1hdGlvbic7XG52YXIgYW5pbWF0aW9uRW5kRXZlbnQgPSAnYW5pbWF0aW9uZW5kJztcbmlmIChoYXNUcmFuc2l0aW9uKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAod2luZG93Lm9udHJhbnNpdGlvbmVuZCA9PT0gdW5kZWZpbmVkICYmXG4gICAgd2luZG93Lm9ud2Via2l0dHJhbnNpdGlvbmVuZCAhPT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHRyYW5zaXRpb25Qcm9wID0gJ1dlYmtpdFRyYW5zaXRpb24nO1xuICAgIHRyYW5zaXRpb25FbmRFdmVudCA9ICd3ZWJraXRUcmFuc2l0aW9uRW5kJztcbiAgfVxuICBpZiAod2luZG93Lm9uYW5pbWF0aW9uZW5kID09PSB1bmRlZmluZWQgJiZcbiAgICB3aW5kb3cub253ZWJraXRhbmltYXRpb25lbmQgIT09IHVuZGVmaW5lZFxuICApIHtcbiAgICBhbmltYXRpb25Qcm9wID0gJ1dlYmtpdEFuaW1hdGlvbic7XG4gICAgYW5pbWF0aW9uRW5kRXZlbnQgPSAnd2Via2l0QW5pbWF0aW9uRW5kJztcbiAgfVxufVxuXG4vLyBiaW5kaW5nIHRvIHdpbmRvdyBpcyBuZWNlc3NhcnkgdG8gbWFrZSBob3QgcmVsb2FkIHdvcmsgaW4gSUUgaW4gc3RyaWN0IG1vZGVcbnZhciByYWYgPSBpbkJyb3dzZXJcbiAgPyB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgPyB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KVxuICAgIDogc2V0VGltZW91dFxuICA6IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIGZ1bmN0aW9uIChmbikgeyByZXR1cm4gZm4oKTsgfTtcblxuZnVuY3Rpb24gbmV4dEZyYW1lIChmbikge1xuICByYWYoZnVuY3Rpb24gKCkge1xuICAgIHJhZihmbik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRUcmFuc2l0aW9uQ2xhc3MgKGVsLCBjbHMpIHtcbiAgdmFyIHRyYW5zaXRpb25DbGFzc2VzID0gZWwuX3RyYW5zaXRpb25DbGFzc2VzIHx8IChlbC5fdHJhbnNpdGlvbkNsYXNzZXMgPSBbXSk7XG4gIGlmICh0cmFuc2l0aW9uQ2xhc3Nlcy5pbmRleE9mKGNscykgPCAwKSB7XG4gICAgdHJhbnNpdGlvbkNsYXNzZXMucHVzaChjbHMpO1xuICAgIGFkZENsYXNzKGVsLCBjbHMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVRyYW5zaXRpb25DbGFzcyAoZWwsIGNscykge1xuICBpZiAoZWwuX3RyYW5zaXRpb25DbGFzc2VzKSB7XG4gICAgcmVtb3ZlKGVsLl90cmFuc2l0aW9uQ2xhc3NlcywgY2xzKTtcbiAgfVxuICByZW1vdmVDbGFzcyhlbCwgY2xzKTtcbn1cblxuZnVuY3Rpb24gd2hlblRyYW5zaXRpb25FbmRzIChcbiAgZWwsXG4gIGV4cGVjdGVkVHlwZSxcbiAgY2Jcbikge1xuICB2YXIgcmVmID0gZ2V0VHJhbnNpdGlvbkluZm8oZWwsIGV4cGVjdGVkVHlwZSk7XG4gIHZhciB0eXBlID0gcmVmLnR5cGU7XG4gIHZhciB0aW1lb3V0ID0gcmVmLnRpbWVvdXQ7XG4gIHZhciBwcm9wQ291bnQgPSByZWYucHJvcENvdW50O1xuICBpZiAoIXR5cGUpIHsgcmV0dXJuIGNiKCkgfVxuICB2YXIgZXZlbnQgPSB0eXBlID09PSBUUkFOU0lUSU9OID8gdHJhbnNpdGlvbkVuZEV2ZW50IDogYW5pbWF0aW9uRW5kRXZlbnQ7XG4gIHZhciBlbmRlZCA9IDA7XG4gIHZhciBlbmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgb25FbmQpO1xuICAgIGNiKCk7XG4gIH07XG4gIHZhciBvbkVuZCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKGUudGFyZ2V0ID09PSBlbCkge1xuICAgICAgaWYgKCsrZW5kZWQgPj0gcHJvcENvdW50KSB7XG4gICAgICAgIGVuZCgpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGVuZGVkIDwgcHJvcENvdW50KSB7XG4gICAgICBlbmQoKTtcbiAgICB9XG4gIH0sIHRpbWVvdXQgKyAxKTtcbiAgZWwuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgb25FbmQpO1xufVxuXG52YXIgdHJhbnNmb3JtUkUgPSAvXFxiKHRyYW5zZm9ybXxhbGwpKCx8JCkvO1xuXG5mdW5jdGlvbiBnZXRUcmFuc2l0aW9uSW5mbyAoZWwsIGV4cGVjdGVkVHlwZSkge1xuICB2YXIgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpO1xuICAvLyBKU0RPTSBtYXkgcmV0dXJuIHVuZGVmaW5lZCBmb3IgdHJhbnNpdGlvbiBwcm9wZXJ0aWVzXG4gIHZhciB0cmFuc2l0aW9uRGVsYXlzID0gKHN0eWxlc1t0cmFuc2l0aW9uUHJvcCArICdEZWxheSddIHx8ICcnKS5zcGxpdCgnLCAnKTtcbiAgdmFyIHRyYW5zaXRpb25EdXJhdGlvbnMgPSAoc3R5bGVzW3RyYW5zaXRpb25Qcm9wICsgJ0R1cmF0aW9uJ10gfHwgJycpLnNwbGl0KCcsICcpO1xuICB2YXIgdHJhbnNpdGlvblRpbWVvdXQgPSBnZXRUaW1lb3V0KHRyYW5zaXRpb25EZWxheXMsIHRyYW5zaXRpb25EdXJhdGlvbnMpO1xuICB2YXIgYW5pbWF0aW9uRGVsYXlzID0gKHN0eWxlc1thbmltYXRpb25Qcm9wICsgJ0RlbGF5J10gfHwgJycpLnNwbGl0KCcsICcpO1xuICB2YXIgYW5pbWF0aW9uRHVyYXRpb25zID0gKHN0eWxlc1thbmltYXRpb25Qcm9wICsgJ0R1cmF0aW9uJ10gfHwgJycpLnNwbGl0KCcsICcpO1xuICB2YXIgYW5pbWF0aW9uVGltZW91dCA9IGdldFRpbWVvdXQoYW5pbWF0aW9uRGVsYXlzLCBhbmltYXRpb25EdXJhdGlvbnMpO1xuXG4gIHZhciB0eXBlO1xuICB2YXIgdGltZW91dCA9IDA7XG4gIHZhciBwcm9wQ291bnQgPSAwO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGV4cGVjdGVkVHlwZSA9PT0gVFJBTlNJVElPTikge1xuICAgIGlmICh0cmFuc2l0aW9uVGltZW91dCA+IDApIHtcbiAgICAgIHR5cGUgPSBUUkFOU0lUSU9OO1xuICAgICAgdGltZW91dCA9IHRyYW5zaXRpb25UaW1lb3V0O1xuICAgICAgcHJvcENvdW50ID0gdHJhbnNpdGlvbkR1cmF0aW9ucy5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gQU5JTUFUSU9OKSB7XG4gICAgaWYgKGFuaW1hdGlvblRpbWVvdXQgPiAwKSB7XG4gICAgICB0eXBlID0gQU5JTUFUSU9OO1xuICAgICAgdGltZW91dCA9IGFuaW1hdGlvblRpbWVvdXQ7XG4gICAgICBwcm9wQ291bnQgPSBhbmltYXRpb25EdXJhdGlvbnMubGVuZ3RoO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aW1lb3V0ID0gTWF0aC5tYXgodHJhbnNpdGlvblRpbWVvdXQsIGFuaW1hdGlvblRpbWVvdXQpO1xuICAgIHR5cGUgPSB0aW1lb3V0ID4gMFxuICAgICAgPyB0cmFuc2l0aW9uVGltZW91dCA+IGFuaW1hdGlvblRpbWVvdXRcbiAgICAgICAgPyBUUkFOU0lUSU9OXG4gICAgICAgIDogQU5JTUFUSU9OXG4gICAgICA6IG51bGw7XG4gICAgcHJvcENvdW50ID0gdHlwZVxuICAgICAgPyB0eXBlID09PSBUUkFOU0lUSU9OXG4gICAgICAgID8gdHJhbnNpdGlvbkR1cmF0aW9ucy5sZW5ndGhcbiAgICAgICAgOiBhbmltYXRpb25EdXJhdGlvbnMubGVuZ3RoXG4gICAgICA6IDA7XG4gIH1cbiAgdmFyIGhhc1RyYW5zZm9ybSA9XG4gICAgdHlwZSA9PT0gVFJBTlNJVElPTiAmJlxuICAgIHRyYW5zZm9ybVJFLnRlc3Qoc3R5bGVzW3RyYW5zaXRpb25Qcm9wICsgJ1Byb3BlcnR5J10pO1xuICByZXR1cm4ge1xuICAgIHR5cGU6IHR5cGUsXG4gICAgdGltZW91dDogdGltZW91dCxcbiAgICBwcm9wQ291bnQ6IHByb3BDb3VudCxcbiAgICBoYXNUcmFuc2Zvcm06IGhhc1RyYW5zZm9ybVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFRpbWVvdXQgKGRlbGF5cywgZHVyYXRpb25zKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHdoaWxlIChkZWxheXMubGVuZ3RoIDwgZHVyYXRpb25zLmxlbmd0aCkge1xuICAgIGRlbGF5cyA9IGRlbGF5cy5jb25jYXQoZGVsYXlzKTtcbiAgfVxuXG4gIHJldHVybiBNYXRoLm1heC5hcHBseShudWxsLCBkdXJhdGlvbnMubWFwKGZ1bmN0aW9uIChkLCBpKSB7XG4gICAgcmV0dXJuIHRvTXMoZCkgKyB0b01zKGRlbGF5c1tpXSlcbiAgfSkpXG59XG5cbi8vIE9sZCB2ZXJzaW9ucyBvZiBDaHJvbWl1bSAoYmVsb3cgNjEuMC4zMTYzLjEwMCkgZm9ybWF0cyBmbG9hdGluZyBwb2ludGVyIG51bWJlcnNcbi8vIGluIGEgbG9jYWxlLWRlcGVuZGVudCB3YXksIHVzaW5nIGEgY29tbWEgaW5zdGVhZCBvZiBhIGRvdC5cbi8vIElmIGNvbW1hIGlzIG5vdCByZXBsYWNlZCB3aXRoIGEgZG90LCB0aGUgaW5wdXQgd2lsbCBiZSByb3VuZGVkIGRvd24gKGkuZS4gYWN0aW5nXG4vLyBhcyBhIGZsb29yIGZ1bmN0aW9uKSBjYXVzaW5nIHVuZXhwZWN0ZWQgYmVoYXZpb3JzXG5mdW5jdGlvbiB0b01zIChzKSB7XG4gIHJldHVybiBOdW1iZXIocy5zbGljZSgwLCAtMSkucmVwbGFjZSgnLCcsICcuJykpICogMTAwMFxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gZW50ZXIgKHZub2RlLCB0b2dnbGVEaXNwbGF5KSB7XG4gIHZhciBlbCA9IHZub2RlLmVsbTtcblxuICAvLyBjYWxsIGxlYXZlIGNhbGxiYWNrIG5vd1xuICBpZiAoaXNEZWYoZWwuX2xlYXZlQ2IpKSB7XG4gICAgZWwuX2xlYXZlQ2IuY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICBlbC5fbGVhdmVDYigpO1xuICB9XG5cbiAgdmFyIGRhdGEgPSByZXNvbHZlVHJhbnNpdGlvbih2bm9kZS5kYXRhLnRyYW5zaXRpb24pO1xuICBpZiAoaXNVbmRlZihkYXRhKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChpc0RlZihlbC5fZW50ZXJDYikgfHwgZWwubm9kZVR5cGUgIT09IDEpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBjc3MgPSBkYXRhLmNzcztcbiAgdmFyIHR5cGUgPSBkYXRhLnR5cGU7XG4gIHZhciBlbnRlckNsYXNzID0gZGF0YS5lbnRlckNsYXNzO1xuICB2YXIgZW50ZXJUb0NsYXNzID0gZGF0YS5lbnRlclRvQ2xhc3M7XG4gIHZhciBlbnRlckFjdGl2ZUNsYXNzID0gZGF0YS5lbnRlckFjdGl2ZUNsYXNzO1xuICB2YXIgYXBwZWFyQ2xhc3MgPSBkYXRhLmFwcGVhckNsYXNzO1xuICB2YXIgYXBwZWFyVG9DbGFzcyA9IGRhdGEuYXBwZWFyVG9DbGFzcztcbiAgdmFyIGFwcGVhckFjdGl2ZUNsYXNzID0gZGF0YS5hcHBlYXJBY3RpdmVDbGFzcztcbiAgdmFyIGJlZm9yZUVudGVyID0gZGF0YS5iZWZvcmVFbnRlcjtcbiAgdmFyIGVudGVyID0gZGF0YS5lbnRlcjtcbiAgdmFyIGFmdGVyRW50ZXIgPSBkYXRhLmFmdGVyRW50ZXI7XG4gIHZhciBlbnRlckNhbmNlbGxlZCA9IGRhdGEuZW50ZXJDYW5jZWxsZWQ7XG4gIHZhciBiZWZvcmVBcHBlYXIgPSBkYXRhLmJlZm9yZUFwcGVhcjtcbiAgdmFyIGFwcGVhciA9IGRhdGEuYXBwZWFyO1xuICB2YXIgYWZ0ZXJBcHBlYXIgPSBkYXRhLmFmdGVyQXBwZWFyO1xuICB2YXIgYXBwZWFyQ2FuY2VsbGVkID0gZGF0YS5hcHBlYXJDYW5jZWxsZWQ7XG4gIHZhciBkdXJhdGlvbiA9IGRhdGEuZHVyYXRpb247XG5cbiAgLy8gYWN0aXZlSW5zdGFuY2Ugd2lsbCBhbHdheXMgYmUgdGhlIDx0cmFuc2l0aW9uPiBjb21wb25lbnQgbWFuYWdpbmcgdGhpc1xuICAvLyB0cmFuc2l0aW9uLiBPbmUgZWRnZSBjYXNlIHRvIGNoZWNrIGlzIHdoZW4gdGhlIDx0cmFuc2l0aW9uPiBpcyBwbGFjZWRcbiAgLy8gYXMgdGhlIHJvb3Qgbm9kZSBvZiBhIGNoaWxkIGNvbXBvbmVudC4gSW4gdGhhdCBjYXNlIHdlIG5lZWQgdG8gY2hlY2tcbiAgLy8gPHRyYW5zaXRpb24+J3MgcGFyZW50IGZvciBhcHBlYXIgY2hlY2suXG4gIHZhciBjb250ZXh0ID0gYWN0aXZlSW5zdGFuY2U7XG4gIHZhciB0cmFuc2l0aW9uTm9kZSA9IGFjdGl2ZUluc3RhbmNlLiR2bm9kZTtcbiAgd2hpbGUgKHRyYW5zaXRpb25Ob2RlICYmIHRyYW5zaXRpb25Ob2RlLnBhcmVudCkge1xuICAgIGNvbnRleHQgPSB0cmFuc2l0aW9uTm9kZS5jb250ZXh0O1xuICAgIHRyYW5zaXRpb25Ob2RlID0gdHJhbnNpdGlvbk5vZGUucGFyZW50O1xuICB9XG5cbiAgdmFyIGlzQXBwZWFyID0gIWNvbnRleHQuX2lzTW91bnRlZCB8fCAhdm5vZGUuaXNSb290SW5zZXJ0O1xuXG4gIGlmIChpc0FwcGVhciAmJiAhYXBwZWFyICYmIGFwcGVhciAhPT0gJycpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBzdGFydENsYXNzID0gaXNBcHBlYXIgJiYgYXBwZWFyQ2xhc3NcbiAgICA/IGFwcGVhckNsYXNzXG4gICAgOiBlbnRlckNsYXNzO1xuICB2YXIgYWN0aXZlQ2xhc3MgPSBpc0FwcGVhciAmJiBhcHBlYXJBY3RpdmVDbGFzc1xuICAgID8gYXBwZWFyQWN0aXZlQ2xhc3NcbiAgICA6IGVudGVyQWN0aXZlQ2xhc3M7XG4gIHZhciB0b0NsYXNzID0gaXNBcHBlYXIgJiYgYXBwZWFyVG9DbGFzc1xuICAgID8gYXBwZWFyVG9DbGFzc1xuICAgIDogZW50ZXJUb0NsYXNzO1xuXG4gIHZhciBiZWZvcmVFbnRlckhvb2sgPSBpc0FwcGVhclxuICAgID8gKGJlZm9yZUFwcGVhciB8fCBiZWZvcmVFbnRlcilcbiAgICA6IGJlZm9yZUVudGVyO1xuICB2YXIgZW50ZXJIb29rID0gaXNBcHBlYXJcbiAgICA/ICh0eXBlb2YgYXBwZWFyID09PSAnZnVuY3Rpb24nID8gYXBwZWFyIDogZW50ZXIpXG4gICAgOiBlbnRlcjtcbiAgdmFyIGFmdGVyRW50ZXJIb29rID0gaXNBcHBlYXJcbiAgICA/IChhZnRlckFwcGVhciB8fCBhZnRlckVudGVyKVxuICAgIDogYWZ0ZXJFbnRlcjtcbiAgdmFyIGVudGVyQ2FuY2VsbGVkSG9vayA9IGlzQXBwZWFyXG4gICAgPyAoYXBwZWFyQ2FuY2VsbGVkIHx8IGVudGVyQ2FuY2VsbGVkKVxuICAgIDogZW50ZXJDYW5jZWxsZWQ7XG5cbiAgdmFyIGV4cGxpY2l0RW50ZXJEdXJhdGlvbiA9IHRvTnVtYmVyKFxuICAgIGlzT2JqZWN0KGR1cmF0aW9uKVxuICAgICAgPyBkdXJhdGlvbi5lbnRlclxuICAgICAgOiBkdXJhdGlvblxuICApO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGV4cGxpY2l0RW50ZXJEdXJhdGlvbiAhPSBudWxsKSB7XG4gICAgY2hlY2tEdXJhdGlvbihleHBsaWNpdEVudGVyRHVyYXRpb24sICdlbnRlcicsIHZub2RlKTtcbiAgfVxuXG4gIHZhciBleHBlY3RzQ1NTID0gY3NzICE9PSBmYWxzZSAmJiAhaXNJRTk7XG4gIHZhciB1c2VyV2FudHNDb250cm9sID0gZ2V0SG9va0FyZ3VtZW50c0xlbmd0aChlbnRlckhvb2spO1xuXG4gIHZhciBjYiA9IGVsLl9lbnRlckNiID0gb25jZShmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGV4cGVjdHNDU1MpIHtcbiAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgdG9DbGFzcyk7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGFjdGl2ZUNsYXNzKTtcbiAgICB9XG4gICAgaWYgKGNiLmNhbmNlbGxlZCkge1xuICAgICAgaWYgKGV4cGVjdHNDU1MpIHtcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBzdGFydENsYXNzKTtcbiAgICAgIH1cbiAgICAgIGVudGVyQ2FuY2VsbGVkSG9vayAmJiBlbnRlckNhbmNlbGxlZEhvb2soZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhZnRlckVudGVySG9vayAmJiBhZnRlckVudGVySG9vayhlbCk7XG4gICAgfVxuICAgIGVsLl9lbnRlckNiID0gbnVsbDtcbiAgfSk7XG5cbiAgaWYgKCF2bm9kZS5kYXRhLnNob3cpIHtcbiAgICAvLyByZW1vdmUgcGVuZGluZyBsZWF2ZSBlbGVtZW50IG9uIGVudGVyIGJ5IGluamVjdGluZyBhbiBpbnNlcnQgaG9va1xuICAgIG1lcmdlVk5vZGVIb29rKHZub2RlLCAnaW5zZXJ0JywgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHBhcmVudCA9IGVsLnBhcmVudE5vZGU7XG4gICAgICB2YXIgcGVuZGluZ05vZGUgPSBwYXJlbnQgJiYgcGFyZW50Ll9wZW5kaW5nICYmIHBhcmVudC5fcGVuZGluZ1t2bm9kZS5rZXldO1xuICAgICAgaWYgKHBlbmRpbmdOb2RlICYmXG4gICAgICAgIHBlbmRpbmdOb2RlLnRhZyA9PT0gdm5vZGUudGFnICYmXG4gICAgICAgIHBlbmRpbmdOb2RlLmVsbS5fbGVhdmVDYlxuICAgICAgKSB7XG4gICAgICAgIHBlbmRpbmdOb2RlLmVsbS5fbGVhdmVDYigpO1xuICAgICAgfVxuICAgICAgZW50ZXJIb29rICYmIGVudGVySG9vayhlbCwgY2IpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gc3RhcnQgZW50ZXIgdHJhbnNpdGlvblxuICBiZWZvcmVFbnRlckhvb2sgJiYgYmVmb3JlRW50ZXJIb29rKGVsKTtcbiAgaWYgKGV4cGVjdHNDU1MpIHtcbiAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIHN0YXJ0Q2xhc3MpO1xuICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgYWN0aXZlQ2xhc3MpO1xuICAgIG5leHRGcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIHN0YXJ0Q2xhc3MpO1xuICAgICAgaWYgKCFjYi5jYW5jZWxsZWQpIHtcbiAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCB0b0NsYXNzKTtcbiAgICAgICAgaWYgKCF1c2VyV2FudHNDb250cm9sKSB7XG4gICAgICAgICAgaWYgKGlzVmFsaWREdXJhdGlvbihleHBsaWNpdEVudGVyRHVyYXRpb24pKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGNiLCBleHBsaWNpdEVudGVyRHVyYXRpb24pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3aGVuVHJhbnNpdGlvbkVuZHMoZWwsIHR5cGUsIGNiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGlmICh2bm9kZS5kYXRhLnNob3cpIHtcbiAgICB0b2dnbGVEaXNwbGF5ICYmIHRvZ2dsZURpc3BsYXkoKTtcbiAgICBlbnRlckhvb2sgJiYgZW50ZXJIb29rKGVsLCBjYik7XG4gIH1cblxuICBpZiAoIWV4cGVjdHNDU1MgJiYgIXVzZXJXYW50c0NvbnRyb2wpIHtcbiAgICBjYigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGxlYXZlICh2bm9kZSwgcm0pIHtcbiAgdmFyIGVsID0gdm5vZGUuZWxtO1xuXG4gIC8vIGNhbGwgZW50ZXIgY2FsbGJhY2sgbm93XG4gIGlmIChpc0RlZihlbC5fZW50ZXJDYikpIHtcbiAgICBlbC5fZW50ZXJDYi5jYW5jZWxsZWQgPSB0cnVlO1xuICAgIGVsLl9lbnRlckNiKCk7XG4gIH1cblxuICB2YXIgZGF0YSA9IHJlc29sdmVUcmFuc2l0aW9uKHZub2RlLmRhdGEudHJhbnNpdGlvbik7XG4gIGlmIChpc1VuZGVmKGRhdGEpIHx8IGVsLm5vZGVUeXBlICE9PSAxKSB7XG4gICAgcmV0dXJuIHJtKClcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoaXNEZWYoZWwuX2xlYXZlQ2IpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgY3NzID0gZGF0YS5jc3M7XG4gIHZhciB0eXBlID0gZGF0YS50eXBlO1xuICB2YXIgbGVhdmVDbGFzcyA9IGRhdGEubGVhdmVDbGFzcztcbiAgdmFyIGxlYXZlVG9DbGFzcyA9IGRhdGEubGVhdmVUb0NsYXNzO1xuICB2YXIgbGVhdmVBY3RpdmVDbGFzcyA9IGRhdGEubGVhdmVBY3RpdmVDbGFzcztcbiAgdmFyIGJlZm9yZUxlYXZlID0gZGF0YS5iZWZvcmVMZWF2ZTtcbiAgdmFyIGxlYXZlID0gZGF0YS5sZWF2ZTtcbiAgdmFyIGFmdGVyTGVhdmUgPSBkYXRhLmFmdGVyTGVhdmU7XG4gIHZhciBsZWF2ZUNhbmNlbGxlZCA9IGRhdGEubGVhdmVDYW5jZWxsZWQ7XG4gIHZhciBkZWxheUxlYXZlID0gZGF0YS5kZWxheUxlYXZlO1xuICB2YXIgZHVyYXRpb24gPSBkYXRhLmR1cmF0aW9uO1xuXG4gIHZhciBleHBlY3RzQ1NTID0gY3NzICE9PSBmYWxzZSAmJiAhaXNJRTk7XG4gIHZhciB1c2VyV2FudHNDb250cm9sID0gZ2V0SG9va0FyZ3VtZW50c0xlbmd0aChsZWF2ZSk7XG5cbiAgdmFyIGV4cGxpY2l0TGVhdmVEdXJhdGlvbiA9IHRvTnVtYmVyKFxuICAgIGlzT2JqZWN0KGR1cmF0aW9uKVxuICAgICAgPyBkdXJhdGlvbi5sZWF2ZVxuICAgICAgOiBkdXJhdGlvblxuICApO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGlzRGVmKGV4cGxpY2l0TGVhdmVEdXJhdGlvbikpIHtcbiAgICBjaGVja0R1cmF0aW9uKGV4cGxpY2l0TGVhdmVEdXJhdGlvbiwgJ2xlYXZlJywgdm5vZGUpO1xuICB9XG5cbiAgdmFyIGNiID0gZWwuX2xlYXZlQ2IgPSBvbmNlKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZWwucGFyZW50Tm9kZSAmJiBlbC5wYXJlbnROb2RlLl9wZW5kaW5nKSB7XG4gICAgICBlbC5wYXJlbnROb2RlLl9wZW5kaW5nW3Zub2RlLmtleV0gPSBudWxsO1xuICAgIH1cbiAgICBpZiAoZXhwZWN0c0NTUykge1xuICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZVRvQ2xhc3MpO1xuICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUFjdGl2ZUNsYXNzKTtcbiAgICB9XG4gICAgaWYgKGNiLmNhbmNlbGxlZCkge1xuICAgICAgaWYgKGV4cGVjdHNDU1MpIHtcbiAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUNsYXNzKTtcbiAgICAgIH1cbiAgICAgIGxlYXZlQ2FuY2VsbGVkICYmIGxlYXZlQ2FuY2VsbGVkKGVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm0oKTtcbiAgICAgIGFmdGVyTGVhdmUgJiYgYWZ0ZXJMZWF2ZShlbCk7XG4gICAgfVxuICAgIGVsLl9sZWF2ZUNiID0gbnVsbDtcbiAgfSk7XG5cbiAgaWYgKGRlbGF5TGVhdmUpIHtcbiAgICBkZWxheUxlYXZlKHBlcmZvcm1MZWF2ZSk7XG4gIH0gZWxzZSB7XG4gICAgcGVyZm9ybUxlYXZlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBwZXJmb3JtTGVhdmUgKCkge1xuICAgIC8vIHRoZSBkZWxheWVkIGxlYXZlIG1heSBoYXZlIGFscmVhZHkgYmVlbiBjYW5jZWxsZWRcbiAgICBpZiAoY2IuY2FuY2VsbGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgLy8gcmVjb3JkIGxlYXZpbmcgZWxlbWVudFxuICAgIGlmICghdm5vZGUuZGF0YS5zaG93ICYmIGVsLnBhcmVudE5vZGUpIHtcbiAgICAgIChlbC5wYXJlbnROb2RlLl9wZW5kaW5nIHx8IChlbC5wYXJlbnROb2RlLl9wZW5kaW5nID0ge30pKVsodm5vZGUua2V5KV0gPSB2bm9kZTtcbiAgICB9XG4gICAgYmVmb3JlTGVhdmUgJiYgYmVmb3JlTGVhdmUoZWwpO1xuICAgIGlmIChleHBlY3RzQ1NTKSB7XG4gICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlQ2xhc3MpO1xuICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUFjdGl2ZUNsYXNzKTtcbiAgICAgIG5leHRGcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVDbGFzcyk7XG4gICAgICAgIGlmICghY2IuY2FuY2VsbGVkKSB7XG4gICAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZVRvQ2xhc3MpO1xuICAgICAgICAgIGlmICghdXNlcldhbnRzQ29udHJvbCkge1xuICAgICAgICAgICAgaWYgKGlzVmFsaWREdXJhdGlvbihleHBsaWNpdExlYXZlRHVyYXRpb24pKSB7XG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoY2IsIGV4cGxpY2l0TGVhdmVEdXJhdGlvbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB3aGVuVHJhbnNpdGlvbkVuZHMoZWwsIHR5cGUsIGNiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBsZWF2ZSAmJiBsZWF2ZShlbCwgY2IpO1xuICAgIGlmICghZXhwZWN0c0NTUyAmJiAhdXNlcldhbnRzQ29udHJvbCkge1xuICAgICAgY2IoKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gb25seSB1c2VkIGluIGRldiBtb2RlXG5mdW5jdGlvbiBjaGVja0R1cmF0aW9uICh2YWwsIG5hbWUsIHZub2RlKSB7XG4gIGlmICh0eXBlb2YgdmFsICE9PSAnbnVtYmVyJykge1xuICAgIHdhcm4oXG4gICAgICBcIjx0cmFuc2l0aW9uPiBleHBsaWNpdCBcIiArIG5hbWUgKyBcIiBkdXJhdGlvbiBpcyBub3QgYSB2YWxpZCBudW1iZXIgLSBcIiArXG4gICAgICBcImdvdCBcIiArIChKU09OLnN0cmluZ2lmeSh2YWwpKSArIFwiLlwiLFxuICAgICAgdm5vZGUuY29udGV4dFxuICAgICk7XG4gIH0gZWxzZSBpZiAoaXNOYU4odmFsKSkge1xuICAgIHdhcm4oXG4gICAgICBcIjx0cmFuc2l0aW9uPiBleHBsaWNpdCBcIiArIG5hbWUgKyBcIiBkdXJhdGlvbiBpcyBOYU4gLSBcIiArXG4gICAgICAndGhlIGR1cmF0aW9uIGV4cHJlc3Npb24gbWlnaHQgYmUgaW5jb3JyZWN0LicsXG4gICAgICB2bm9kZS5jb250ZXh0XG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc1ZhbGlkRHVyYXRpb24gKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ251bWJlcicgJiYgIWlzTmFOKHZhbClcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgYSB0cmFuc2l0aW9uIGhvb2sncyBhcmd1bWVudCBsZW5ndGguIFRoZSBob29rIG1heSBiZTpcbiAqIC0gYSBtZXJnZWQgaG9vayAoaW52b2tlcikgd2l0aCB0aGUgb3JpZ2luYWwgaW4gLmZuc1xuICogLSBhIHdyYXBwZWQgY29tcG9uZW50IG1ldGhvZCAoY2hlY2sgLl9sZW5ndGgpXG4gKiAtIGEgcGxhaW4gZnVuY3Rpb24gKC5sZW5ndGgpXG4gKi9cbmZ1bmN0aW9uIGdldEhvb2tBcmd1bWVudHNMZW5ndGggKGZuKSB7XG4gIGlmIChpc1VuZGVmKGZuKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHZhciBpbnZva2VyRm5zID0gZm4uZm5zO1xuICBpZiAoaXNEZWYoaW52b2tlckZucykpIHtcbiAgICAvLyBpbnZva2VyXG4gICAgcmV0dXJuIGdldEhvb2tBcmd1bWVudHNMZW5ndGgoXG4gICAgICBBcnJheS5pc0FycmF5KGludm9rZXJGbnMpXG4gICAgICAgID8gaW52b2tlckZuc1swXVxuICAgICAgICA6IGludm9rZXJGbnNcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChmbi5fbGVuZ3RoIHx8IGZuLmxlbmd0aCkgPiAxXG4gIH1cbn1cblxuZnVuY3Rpb24gX2VudGVyIChfLCB2bm9kZSkge1xuICBpZiAodm5vZGUuZGF0YS5zaG93ICE9PSB0cnVlKSB7XG4gICAgZW50ZXIodm5vZGUpO1xuICB9XG59XG5cbnZhciB0cmFuc2l0aW9uID0gaW5Ccm93c2VyID8ge1xuICBjcmVhdGU6IF9lbnRlcixcbiAgYWN0aXZhdGU6IF9lbnRlcixcbiAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUkJDEgKHZub2RlLCBybSkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHZub2RlLmRhdGEuc2hvdyAhPT0gdHJ1ZSkge1xuICAgICAgbGVhdmUodm5vZGUsIHJtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm0oKTtcbiAgICB9XG4gIH1cbn0gOiB7fTtcblxudmFyIHBsYXRmb3JtTW9kdWxlcyA9IFtcbiAgYXR0cnMsXG4gIGtsYXNzLFxuICBldmVudHMsXG4gIGRvbVByb3BzLFxuICBzdHlsZSxcbiAgdHJhbnNpdGlvblxuXTtcblxuLyogICovXG5cbi8vIHRoZSBkaXJlY3RpdmUgbW9kdWxlIHNob3VsZCBiZSBhcHBsaWVkIGxhc3QsIGFmdGVyIGFsbFxuLy8gYnVpbHQtaW4gbW9kdWxlcyBoYXZlIGJlZW4gYXBwbGllZC5cbnZhciBtb2R1bGVzID0gcGxhdGZvcm1Nb2R1bGVzLmNvbmNhdChiYXNlTW9kdWxlcyk7XG5cbnZhciBwYXRjaCA9IGNyZWF0ZVBhdGNoRnVuY3Rpb24oeyBub2RlT3BzOiBub2RlT3BzLCBtb2R1bGVzOiBtb2R1bGVzIH0pO1xuXG4vKipcbiAqIE5vdCB0eXBlIGNoZWNraW5nIHRoaXMgZmlsZSBiZWNhdXNlIGZsb3cgZG9lc24ndCBsaWtlIGF0dGFjaGluZ1xuICogcHJvcGVydGllcyB0byBFbGVtZW50cy5cbiAqL1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChpc0lFOSkge1xuICAvLyBodHRwOi8vd3d3Lm1hdHRzNDExLmNvbS9wb3N0L2ludGVybmV0LWV4cGxvcmVyLTktb25pbnB1dC9cbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2VsZWN0aW9uY2hhbmdlJywgZnVuY3Rpb24gKCkge1xuICAgIHZhciBlbCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKGVsICYmIGVsLnZtb2RlbCkge1xuICAgICAgdHJpZ2dlcihlbCwgJ2lucHV0Jyk7XG4gICAgfVxuICB9KTtcbn1cblxudmFyIGRpcmVjdGl2ZSA9IHtcbiAgaW5zZXJ0ZWQ6IGZ1bmN0aW9uIGluc2VydGVkIChlbCwgYmluZGluZywgdm5vZGUsIG9sZFZub2RlKSB7XG4gICAgaWYgKHZub2RlLnRhZyA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgIC8vICM2OTAzXG4gICAgICBpZiAob2xkVm5vZGUuZWxtICYmICFvbGRWbm9kZS5lbG0uX3ZPcHRpb25zKSB7XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKHZub2RlLCAncG9zdHBhdGNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGRpcmVjdGl2ZS5jb21wb25lbnRVcGRhdGVkKGVsLCBiaW5kaW5nLCB2bm9kZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0U2VsZWN0ZWQoZWwsIGJpbmRpbmcsIHZub2RlLmNvbnRleHQpO1xuICAgICAgfVxuICAgICAgZWwuX3ZPcHRpb25zID0gW10ubWFwLmNhbGwoZWwub3B0aW9ucywgZ2V0VmFsdWUpO1xuICAgIH0gZWxzZSBpZiAodm5vZGUudGFnID09PSAndGV4dGFyZWEnIHx8IGlzVGV4dElucHV0VHlwZShlbC50eXBlKSkge1xuICAgICAgZWwuX3ZNb2RpZmllcnMgPSBiaW5kaW5nLm1vZGlmaWVycztcbiAgICAgIGlmICghYmluZGluZy5tb2RpZmllcnMubGF6eSkge1xuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbnN0YXJ0Jywgb25Db21wb3NpdGlvblN0YXJ0KTtcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignY29tcG9zaXRpb25lbmQnLCBvbkNvbXBvc2l0aW9uRW5kKTtcbiAgICAgICAgLy8gU2FmYXJpIDwgMTAuMiAmIFVJV2ViVmlldyBkb2Vzbid0IGZpcmUgY29tcG9zaXRpb25lbmQgd2hlblxuICAgICAgICAvLyBzd2l0Y2hpbmcgZm9jdXMgYmVmb3JlIGNvbmZpcm1pbmcgY29tcG9zaXRpb24gY2hvaWNlXG4gICAgICAgIC8vIHRoaXMgYWxzbyBmaXhlcyB0aGUgaXNzdWUgd2hlcmUgc29tZSBicm93c2VycyBlLmcuIGlPUyBDaHJvbWVcbiAgICAgICAgLy8gZmlyZXMgXCJjaGFuZ2VcIiBpbnN0ZWFkIG9mIFwiaW5wdXRcIiBvbiBhdXRvY29tcGxldGUuXG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIG9uQ29tcG9zaXRpb25FbmQpO1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgaWYgKGlzSUU5KSB7XG4gICAgICAgICAgZWwudm1vZGVsID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBjb21wb25lbnRVcGRhdGVkOiBmdW5jdGlvbiBjb21wb25lbnRVcGRhdGVkIChlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgICBpZiAodm5vZGUudGFnID09PSAnc2VsZWN0Jykge1xuICAgICAgc2V0U2VsZWN0ZWQoZWwsIGJpbmRpbmcsIHZub2RlLmNvbnRleHQpO1xuICAgICAgLy8gaW4gY2FzZSB0aGUgb3B0aW9ucyByZW5kZXJlZCBieSB2LWZvciBoYXZlIGNoYW5nZWQsXG4gICAgICAvLyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHZhbHVlIGlzIG91dC1vZi1zeW5jIHdpdGggdGhlIHJlbmRlcmVkIG9wdGlvbnMuXG4gICAgICAvLyBkZXRlY3Qgc3VjaCBjYXNlcyBhbmQgZmlsdGVyIG91dCB2YWx1ZXMgdGhhdCBubyBsb25nZXIgaGFzIGEgbWF0Y2hpbmdcbiAgICAgIC8vIG9wdGlvbiBpbiB0aGUgRE9NLlxuICAgICAgdmFyIHByZXZPcHRpb25zID0gZWwuX3ZPcHRpb25zO1xuICAgICAgdmFyIGN1ck9wdGlvbnMgPSBlbC5fdk9wdGlvbnMgPSBbXS5tYXAuY2FsbChlbC5vcHRpb25zLCBnZXRWYWx1ZSk7XG4gICAgICBpZiAoY3VyT3B0aW9ucy5zb21lKGZ1bmN0aW9uIChvLCBpKSB7IHJldHVybiAhbG9vc2VFcXVhbChvLCBwcmV2T3B0aW9uc1tpXSk7IH0pKSB7XG4gICAgICAgIC8vIHRyaWdnZXIgY2hhbmdlIGV2ZW50IGlmXG4gICAgICAgIC8vIG5vIG1hdGNoaW5nIG9wdGlvbiBmb3VuZCBmb3IgYXQgbGVhc3Qgb25lIHZhbHVlXG4gICAgICAgIHZhciBuZWVkUmVzZXQgPSBlbC5tdWx0aXBsZVxuICAgICAgICAgID8gYmluZGluZy52YWx1ZS5zb21lKGZ1bmN0aW9uICh2KSB7IHJldHVybiBoYXNOb01hdGNoaW5nT3B0aW9uKHYsIGN1ck9wdGlvbnMpOyB9KVxuICAgICAgICAgIDogYmluZGluZy52YWx1ZSAhPT0gYmluZGluZy5vbGRWYWx1ZSAmJiBoYXNOb01hdGNoaW5nT3B0aW9uKGJpbmRpbmcudmFsdWUsIGN1ck9wdGlvbnMpO1xuICAgICAgICBpZiAobmVlZFJlc2V0KSB7XG4gICAgICAgICAgdHJpZ2dlcihlbCwgJ2NoYW5nZScpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBzZXRTZWxlY3RlZCAoZWwsIGJpbmRpbmcsIHZtKSB7XG4gIGFjdHVhbGx5U2V0U2VsZWN0ZWQoZWwsIGJpbmRpbmcsIHZtKTtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChpc0lFIHx8IGlzRWRnZSkge1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgYWN0dWFsbHlTZXRTZWxlY3RlZChlbCwgYmluZGluZywgdm0pO1xuICAgIH0sIDApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFjdHVhbGx5U2V0U2VsZWN0ZWQgKGVsLCBiaW5kaW5nLCB2bSkge1xuICB2YXIgdmFsdWUgPSBiaW5kaW5nLnZhbHVlO1xuICB2YXIgaXNNdWx0aXBsZSA9IGVsLm11bHRpcGxlO1xuICBpZiAoaXNNdWx0aXBsZSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICBcIjxzZWxlY3QgbXVsdGlwbGUgdi1tb2RlbD1cXFwiXCIgKyAoYmluZGluZy5leHByZXNzaW9uKSArIFwiXFxcIj4gXCIgK1xuICAgICAgXCJleHBlY3RzIGFuIEFycmF5IHZhbHVlIGZvciBpdHMgYmluZGluZywgYnV0IGdvdCBcIiArIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLnNsaWNlKDgsIC0xKSksXG4gICAgICB2bVxuICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHNlbGVjdGVkLCBvcHRpb247XG4gIGZvciAodmFyIGkgPSAwLCBsID0gZWwub3B0aW9ucy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBvcHRpb24gPSBlbC5vcHRpb25zW2ldO1xuICAgIGlmIChpc011bHRpcGxlKSB7XG4gICAgICBzZWxlY3RlZCA9IGxvb3NlSW5kZXhPZih2YWx1ZSwgZ2V0VmFsdWUob3B0aW9uKSkgPiAtMTtcbiAgICAgIGlmIChvcHRpb24uc2VsZWN0ZWQgIT09IHNlbGVjdGVkKSB7XG4gICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobG9vc2VFcXVhbChnZXRWYWx1ZShvcHRpb24pLCB2YWx1ZSkpIHtcbiAgICAgICAgaWYgKGVsLnNlbGVjdGVkSW5kZXggIT09IGkpIHtcbiAgICAgICAgICBlbC5zZWxlY3RlZEluZGV4ID0gaTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCFpc011bHRpcGxlKSB7XG4gICAgZWwuc2VsZWN0ZWRJbmRleCA9IC0xO1xuICB9XG59XG5cbmZ1bmN0aW9uIGhhc05vTWF0Y2hpbmdPcHRpb24gKHZhbHVlLCBvcHRpb25zKSB7XG4gIHJldHVybiBvcHRpb25zLmV2ZXJ5KGZ1bmN0aW9uIChvKSB7IHJldHVybiAhbG9vc2VFcXVhbChvLCB2YWx1ZSk7IH0pXG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlIChvcHRpb24pIHtcbiAgcmV0dXJuICdfdmFsdWUnIGluIG9wdGlvblxuICAgID8gb3B0aW9uLl92YWx1ZVxuICAgIDogb3B0aW9uLnZhbHVlXG59XG5cbmZ1bmN0aW9uIG9uQ29tcG9zaXRpb25TdGFydCAoZSkge1xuICBlLnRhcmdldC5jb21wb3NpbmcgPSB0cnVlO1xufVxuXG5mdW5jdGlvbiBvbkNvbXBvc2l0aW9uRW5kIChlKSB7XG4gIC8vIHByZXZlbnQgdHJpZ2dlcmluZyBhbiBpbnB1dCBldmVudCBmb3Igbm8gcmVhc29uXG4gIGlmICghZS50YXJnZXQuY29tcG9zaW5nKSB7IHJldHVybiB9XG4gIGUudGFyZ2V0LmNvbXBvc2luZyA9IGZhbHNlO1xuICB0cmlnZ2VyKGUudGFyZ2V0LCAnaW5wdXQnKTtcbn1cblxuZnVuY3Rpb24gdHJpZ2dlciAoZWwsIHR5cGUpIHtcbiAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnSFRNTEV2ZW50cycpO1xuICBlLmluaXRFdmVudCh0eXBlLCB0cnVlLCB0cnVlKTtcbiAgZWwuZGlzcGF0Y2hFdmVudChlKTtcbn1cblxuLyogICovXG5cbi8vIHJlY3Vyc2l2ZWx5IHNlYXJjaCBmb3IgcG9zc2libGUgdHJhbnNpdGlvbiBkZWZpbmVkIGluc2lkZSB0aGUgY29tcG9uZW50IHJvb3RcbmZ1bmN0aW9uIGxvY2F0ZU5vZGUgKHZub2RlKSB7XG4gIHJldHVybiB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSAmJiAoIXZub2RlLmRhdGEgfHwgIXZub2RlLmRhdGEudHJhbnNpdGlvbilcbiAgICA/IGxvY2F0ZU5vZGUodm5vZGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlKVxuICAgIDogdm5vZGVcbn1cblxudmFyIHNob3cgPSB7XG4gIGJpbmQ6IGZ1bmN0aW9uIGJpbmQgKGVsLCByZWYsIHZub2RlKSB7XG4gICAgdmFyIHZhbHVlID0gcmVmLnZhbHVlO1xuXG4gICAgdm5vZGUgPSBsb2NhdGVOb2RlKHZub2RlKTtcbiAgICB2YXIgdHJhbnNpdGlvbiQkMSA9IHZub2RlLmRhdGEgJiYgdm5vZGUuZGF0YS50cmFuc2l0aW9uO1xuICAgIHZhciBvcmlnaW5hbERpc3BsYXkgPSBlbC5fX3ZPcmlnaW5hbERpc3BsYXkgPVxuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnID8gJycgOiBlbC5zdHlsZS5kaXNwbGF5O1xuICAgIGlmICh2YWx1ZSAmJiB0cmFuc2l0aW9uJCQxKSB7XG4gICAgICB2bm9kZS5kYXRhLnNob3cgPSB0cnVlO1xuICAgICAgZW50ZXIodm5vZGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IG9yaWdpbmFsRGlzcGxheTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gdmFsdWUgPyBvcmlnaW5hbERpc3BsYXkgOiAnbm9uZSc7XG4gICAgfVxuICB9LFxuXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlIChlbCwgcmVmLCB2bm9kZSkge1xuICAgIHZhciB2YWx1ZSA9IHJlZi52YWx1ZTtcbiAgICB2YXIgb2xkVmFsdWUgPSByZWYub2xkVmFsdWU7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIXZhbHVlID09PSAhb2xkVmFsdWUpIHsgcmV0dXJuIH1cbiAgICB2bm9kZSA9IGxvY2F0ZU5vZGUodm5vZGUpO1xuICAgIHZhciB0cmFuc2l0aW9uJCQxID0gdm5vZGUuZGF0YSAmJiB2bm9kZS5kYXRhLnRyYW5zaXRpb247XG4gICAgaWYgKHRyYW5zaXRpb24kJDEpIHtcbiAgICAgIHZub2RlLmRhdGEuc2hvdyA9IHRydWU7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgZW50ZXIodm5vZGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gZWwuX192T3JpZ2luYWxEaXNwbGF5O1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxlYXZlKHZub2RlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZSA/IGVsLl9fdk9yaWdpbmFsRGlzcGxheSA6ICdub25lJztcbiAgICB9XG4gIH0sXG5cbiAgdW5iaW5kOiBmdW5jdGlvbiB1bmJpbmQgKFxuICAgIGVsLFxuICAgIGJpbmRpbmcsXG4gICAgdm5vZGUsXG4gICAgb2xkVm5vZGUsXG4gICAgaXNEZXN0cm95XG4gICkge1xuICAgIGlmICghaXNEZXN0cm95KSB7XG4gICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gZWwuX192T3JpZ2luYWxEaXNwbGF5O1xuICAgIH1cbiAgfVxufTtcblxudmFyIHBsYXRmb3JtRGlyZWN0aXZlcyA9IHtcbiAgbW9kZWw6IGRpcmVjdGl2ZSxcbiAgc2hvdzogc2hvd1xufTtcblxuLyogICovXG5cbnZhciB0cmFuc2l0aW9uUHJvcHMgPSB7XG4gIG5hbWU6IFN0cmluZyxcbiAgYXBwZWFyOiBCb29sZWFuLFxuICBjc3M6IEJvb2xlYW4sXG4gIG1vZGU6IFN0cmluZyxcbiAgdHlwZTogU3RyaW5nLFxuICBlbnRlckNsYXNzOiBTdHJpbmcsXG4gIGxlYXZlQ2xhc3M6IFN0cmluZyxcbiAgZW50ZXJUb0NsYXNzOiBTdHJpbmcsXG4gIGxlYXZlVG9DbGFzczogU3RyaW5nLFxuICBlbnRlckFjdGl2ZUNsYXNzOiBTdHJpbmcsXG4gIGxlYXZlQWN0aXZlQ2xhc3M6IFN0cmluZyxcbiAgYXBwZWFyQ2xhc3M6IFN0cmluZyxcbiAgYXBwZWFyQWN0aXZlQ2xhc3M6IFN0cmluZyxcbiAgYXBwZWFyVG9DbGFzczogU3RyaW5nLFxuICBkdXJhdGlvbjogW051bWJlciwgU3RyaW5nLCBPYmplY3RdXG59O1xuXG4vLyBpbiBjYXNlIHRoZSBjaGlsZCBpcyBhbHNvIGFuIGFic3RyYWN0IGNvbXBvbmVudCwgZS5nLiA8a2VlcC1hbGl2ZT5cbi8vIHdlIHdhbnQgdG8gcmVjdXJzaXZlbHkgcmV0cmlldmUgdGhlIHJlYWwgY29tcG9uZW50IHRvIGJlIHJlbmRlcmVkXG5mdW5jdGlvbiBnZXRSZWFsQ2hpbGQgKHZub2RlKSB7XG4gIHZhciBjb21wT3B0aW9ucyA9IHZub2RlICYmIHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gIGlmIChjb21wT3B0aW9ucyAmJiBjb21wT3B0aW9ucy5DdG9yLm9wdGlvbnMuYWJzdHJhY3QpIHtcbiAgICByZXR1cm4gZ2V0UmVhbENoaWxkKGdldEZpcnN0Q29tcG9uZW50Q2hpbGQoY29tcE9wdGlvbnMuY2hpbGRyZW4pKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiB2bm9kZVxuICB9XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RUcmFuc2l0aW9uRGF0YSAoY29tcCkge1xuICB2YXIgZGF0YSA9IHt9O1xuICB2YXIgb3B0aW9ucyA9IGNvbXAuJG9wdGlvbnM7XG4gIC8vIHByb3BzXG4gIGZvciAodmFyIGtleSBpbiBvcHRpb25zLnByb3BzRGF0YSkge1xuICAgIGRhdGFba2V5XSA9IGNvbXBba2V5XTtcbiAgfVxuICAvLyBldmVudHMuXG4gIC8vIGV4dHJhY3QgbGlzdGVuZXJzIGFuZCBwYXNzIHRoZW0gZGlyZWN0bHkgdG8gdGhlIHRyYW5zaXRpb24gbWV0aG9kc1xuICB2YXIgbGlzdGVuZXJzID0gb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xuICBmb3IgKHZhciBrZXkkMSBpbiBsaXN0ZW5lcnMpIHtcbiAgICBkYXRhW2NhbWVsaXplKGtleSQxKV0gPSBsaXN0ZW5lcnNba2V5JDFdO1xuICB9XG4gIHJldHVybiBkYXRhXG59XG5cbmZ1bmN0aW9uIHBsYWNlaG9sZGVyIChoLCByYXdDaGlsZCkge1xuICBpZiAoL1xcZC1rZWVwLWFsaXZlJC8udGVzdChyYXdDaGlsZC50YWcpKSB7XG4gICAgcmV0dXJuIGgoJ2tlZXAtYWxpdmUnLCB7XG4gICAgICBwcm9wczogcmF3Q2hpbGQuY29tcG9uZW50T3B0aW9ucy5wcm9wc0RhdGFcbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGhhc1BhcmVudFRyYW5zaXRpb24gKHZub2RlKSB7XG4gIHdoaWxlICgodm5vZGUgPSB2bm9kZS5wYXJlbnQpKSB7XG4gICAgaWYgKHZub2RlLmRhdGEudHJhbnNpdGlvbikge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNTYW1lQ2hpbGQgKGNoaWxkLCBvbGRDaGlsZCkge1xuICByZXR1cm4gb2xkQ2hpbGQua2V5ID09PSBjaGlsZC5rZXkgJiYgb2xkQ2hpbGQudGFnID09PSBjaGlsZC50YWdcbn1cblxudmFyIGlzTm90VGV4dE5vZGUgPSBmdW5jdGlvbiAoYykgeyByZXR1cm4gYy50YWcgfHwgaXNBc3luY1BsYWNlaG9sZGVyKGMpOyB9O1xuXG52YXIgaXNWU2hvd0RpcmVjdGl2ZSA9IGZ1bmN0aW9uIChkKSB7IHJldHVybiBkLm5hbWUgPT09ICdzaG93JzsgfTtcblxudmFyIFRyYW5zaXRpb24gPSB7XG4gIG5hbWU6ICd0cmFuc2l0aW9uJyxcbiAgcHJvcHM6IHRyYW5zaXRpb25Qcm9wcyxcbiAgYWJzdHJhY3Q6IHRydWUsXG5cbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIgKGgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuJHNsb3RzLmRlZmF1bHQ7XG4gICAgaWYgKCFjaGlsZHJlbikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gZmlsdGVyIG91dCB0ZXh0IG5vZGVzIChwb3NzaWJsZSB3aGl0ZXNwYWNlcylcbiAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmZpbHRlcihpc05vdFRleHROb2RlKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIWNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gd2FybiBtdWx0aXBsZSBlbGVtZW50c1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICc8dHJhbnNpdGlvbj4gY2FuIG9ubHkgYmUgdXNlZCBvbiBhIHNpbmdsZSBlbGVtZW50LiBVc2UgJyArXG4gICAgICAgICc8dHJhbnNpdGlvbi1ncm91cD4gZm9yIGxpc3RzLicsXG4gICAgICAgIHRoaXMuJHBhcmVudFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgbW9kZSA9IHRoaXMubW9kZTtcblxuICAgIC8vIHdhcm4gaW52YWxpZCBtb2RlXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgIG1vZGUgJiYgbW9kZSAhPT0gJ2luLW91dCcgJiYgbW9kZSAhPT0gJ291dC1pbidcbiAgICApIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdpbnZhbGlkIDx0cmFuc2l0aW9uPiBtb2RlOiAnICsgbW9kZSxcbiAgICAgICAgdGhpcy4kcGFyZW50XG4gICAgICApO1xuICAgIH1cblxuICAgIHZhciByYXdDaGlsZCA9IGNoaWxkcmVuWzBdO1xuXG4gICAgLy8gaWYgdGhpcyBpcyBhIGNvbXBvbmVudCByb290IG5vZGUgYW5kIHRoZSBjb21wb25lbnQnc1xuICAgIC8vIHBhcmVudCBjb250YWluZXIgbm9kZSBhbHNvIGhhcyB0cmFuc2l0aW9uLCBza2lwLlxuICAgIGlmIChoYXNQYXJlbnRUcmFuc2l0aW9uKHRoaXMuJHZub2RlKSkge1xuICAgICAgcmV0dXJuIHJhd0NoaWxkXG4gICAgfVxuXG4gICAgLy8gYXBwbHkgdHJhbnNpdGlvbiBkYXRhIHRvIGNoaWxkXG4gICAgLy8gdXNlIGdldFJlYWxDaGlsZCgpIHRvIGlnbm9yZSBhYnN0cmFjdCBjb21wb25lbnRzIGUuZy4ga2VlcC1hbGl2ZVxuICAgIHZhciBjaGlsZCA9IGdldFJlYWxDaGlsZChyYXdDaGlsZCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFjaGlsZCkge1xuICAgICAgcmV0dXJuIHJhd0NoaWxkXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2xlYXZpbmcpIHtcbiAgICAgIHJldHVybiBwbGFjZWhvbGRlcihoLCByYXdDaGlsZClcbiAgICB9XG5cbiAgICAvLyBlbnN1cmUgYSBrZXkgdGhhdCBpcyB1bmlxdWUgdG8gdGhlIHZub2RlIHR5cGUgYW5kIHRvIHRoaXMgdHJhbnNpdGlvblxuICAgIC8vIGNvbXBvbmVudCBpbnN0YW5jZS4gVGhpcyBrZXkgd2lsbCBiZSB1c2VkIHRvIHJlbW92ZSBwZW5kaW5nIGxlYXZpbmcgbm9kZXNcbiAgICAvLyBkdXJpbmcgZW50ZXJpbmcuXG4gICAgdmFyIGlkID0gXCJfX3RyYW5zaXRpb24tXCIgKyAodGhpcy5fdWlkKSArIFwiLVwiO1xuICAgIGNoaWxkLmtleSA9IGNoaWxkLmtleSA9PSBudWxsXG4gICAgICA/IGNoaWxkLmlzQ29tbWVudFxuICAgICAgICA/IGlkICsgJ2NvbW1lbnQnXG4gICAgICAgIDogaWQgKyBjaGlsZC50YWdcbiAgICAgIDogaXNQcmltaXRpdmUoY2hpbGQua2V5KVxuICAgICAgICA/IChTdHJpbmcoY2hpbGQua2V5KS5pbmRleE9mKGlkKSA9PT0gMCA/IGNoaWxkLmtleSA6IGlkICsgY2hpbGQua2V5KVxuICAgICAgICA6IGNoaWxkLmtleTtcblxuICAgIHZhciBkYXRhID0gKGNoaWxkLmRhdGEgfHwgKGNoaWxkLmRhdGEgPSB7fSkpLnRyYW5zaXRpb24gPSBleHRyYWN0VHJhbnNpdGlvbkRhdGEodGhpcyk7XG4gICAgdmFyIG9sZFJhd0NoaWxkID0gdGhpcy5fdm5vZGU7XG4gICAgdmFyIG9sZENoaWxkID0gZ2V0UmVhbENoaWxkKG9sZFJhd0NoaWxkKTtcblxuICAgIC8vIG1hcmsgdi1zaG93XG4gICAgLy8gc28gdGhhdCB0aGUgdHJhbnNpdGlvbiBtb2R1bGUgY2FuIGhhbmQgb3ZlciB0aGUgY29udHJvbCB0byB0aGUgZGlyZWN0aXZlXG4gICAgaWYgKGNoaWxkLmRhdGEuZGlyZWN0aXZlcyAmJiBjaGlsZC5kYXRhLmRpcmVjdGl2ZXMuc29tZShpc1ZTaG93RGlyZWN0aXZlKSkge1xuICAgICAgY2hpbGQuZGF0YS5zaG93ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBvbGRDaGlsZCAmJlxuICAgICAgb2xkQ2hpbGQuZGF0YSAmJlxuICAgICAgIWlzU2FtZUNoaWxkKGNoaWxkLCBvbGRDaGlsZCkgJiZcbiAgICAgICFpc0FzeW5jUGxhY2Vob2xkZXIob2xkQ2hpbGQpICYmXG4gICAgICAvLyAjNjY4NyBjb21wb25lbnQgcm9vdCBpcyBhIGNvbW1lbnQgbm9kZVxuICAgICAgIShvbGRDaGlsZC5jb21wb25lbnRJbnN0YW5jZSAmJiBvbGRDaGlsZC5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUuaXNDb21tZW50KVxuICAgICkge1xuICAgICAgLy8gcmVwbGFjZSBvbGQgY2hpbGQgdHJhbnNpdGlvbiBkYXRhIHdpdGggZnJlc2ggb25lXG4gICAgICAvLyBpbXBvcnRhbnQgZm9yIGR5bmFtaWMgdHJhbnNpdGlvbnMhXG4gICAgICB2YXIgb2xkRGF0YSA9IG9sZENoaWxkLmRhdGEudHJhbnNpdGlvbiA9IGV4dGVuZCh7fSwgZGF0YSk7XG4gICAgICAvLyBoYW5kbGUgdHJhbnNpdGlvbiBtb2RlXG4gICAgICBpZiAobW9kZSA9PT0gJ291dC1pbicpIHtcbiAgICAgICAgLy8gcmV0dXJuIHBsYWNlaG9sZGVyIG5vZGUgYW5kIHF1ZXVlIHVwZGF0ZSB3aGVuIGxlYXZlIGZpbmlzaGVzXG4gICAgICAgIHRoaXMuX2xlYXZpbmcgPSB0cnVlO1xuICAgICAgICBtZXJnZVZOb2RlSG9vayhvbGREYXRhLCAnYWZ0ZXJMZWF2ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0aGlzJDEuX2xlYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzJDEuJGZvcmNlVXBkYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGxhY2Vob2xkZXIoaCwgcmF3Q2hpbGQpXG4gICAgICB9IGVsc2UgaWYgKG1vZGUgPT09ICdpbi1vdXQnKSB7XG4gICAgICAgIGlmIChpc0FzeW5jUGxhY2Vob2xkZXIoY2hpbGQpKSB7XG4gICAgICAgICAgcmV0dXJuIG9sZFJhd0NoaWxkXG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRlbGF5ZWRMZWF2ZTtcbiAgICAgICAgdmFyIHBlcmZvcm1MZWF2ZSA9IGZ1bmN0aW9uICgpIHsgZGVsYXllZExlYXZlKCk7IH07XG4gICAgICAgIG1lcmdlVk5vZGVIb29rKGRhdGEsICdhZnRlckVudGVyJywgcGVyZm9ybUxlYXZlKTtcbiAgICAgICAgbWVyZ2VWTm9kZUhvb2soZGF0YSwgJ2VudGVyQ2FuY2VsbGVkJywgcGVyZm9ybUxlYXZlKTtcbiAgICAgICAgbWVyZ2VWTm9kZUhvb2sob2xkRGF0YSwgJ2RlbGF5TGVhdmUnLCBmdW5jdGlvbiAobGVhdmUpIHsgZGVsYXllZExlYXZlID0gbGVhdmU7IH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByYXdDaGlsZFxuICB9XG59O1xuXG4vKiAgKi9cblxudmFyIHByb3BzID0gZXh0ZW5kKHtcbiAgdGFnOiBTdHJpbmcsXG4gIG1vdmVDbGFzczogU3RyaW5nXG59LCB0cmFuc2l0aW9uUHJvcHMpO1xuXG5kZWxldGUgcHJvcHMubW9kZTtcblxudmFyIFRyYW5zaXRpb25Hcm91cCA9IHtcbiAgcHJvcHM6IHByb3BzLFxuXG4gIGJlZm9yZU1vdW50OiBmdW5jdGlvbiBiZWZvcmVNb3VudCAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICB2YXIgdXBkYXRlID0gdGhpcy5fdXBkYXRlO1xuICAgIHRoaXMuX3VwZGF0ZSA9IGZ1bmN0aW9uICh2bm9kZSwgaHlkcmF0aW5nKSB7XG4gICAgICB2YXIgcmVzdG9yZUFjdGl2ZUluc3RhbmNlID0gc2V0QWN0aXZlSW5zdGFuY2UodGhpcyQxKTtcbiAgICAgIC8vIGZvcmNlIHJlbW92aW5nIHBhc3NcbiAgICAgIHRoaXMkMS5fX3BhdGNoX18oXG4gICAgICAgIHRoaXMkMS5fdm5vZGUsXG4gICAgICAgIHRoaXMkMS5rZXB0LFxuICAgICAgICBmYWxzZSwgLy8gaHlkcmF0aW5nXG4gICAgICAgIHRydWUgLy8gcmVtb3ZlT25seSAoIWltcG9ydGFudCwgYXZvaWRzIHVubmVjZXNzYXJ5IG1vdmVzKVxuICAgICAgKTtcbiAgICAgIHRoaXMkMS5fdm5vZGUgPSB0aGlzJDEua2VwdDtcbiAgICAgIHJlc3RvcmVBY3RpdmVJbnN0YW5jZSgpO1xuICAgICAgdXBkYXRlLmNhbGwodGhpcyQxLCB2bm9kZSwgaHlkcmF0aW5nKTtcbiAgICB9O1xuICB9LFxuXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyIChoKSB7XG4gICAgdmFyIHRhZyA9IHRoaXMudGFnIHx8IHRoaXMuJHZub2RlLmRhdGEudGFnIHx8ICdzcGFuJztcbiAgICB2YXIgbWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5wcmV2Q2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuO1xuICAgIHZhciByYXdDaGlsZHJlbiA9IHRoaXMuJHNsb3RzLmRlZmF1bHQgfHwgW107XG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbiA9IFtdO1xuICAgIHZhciB0cmFuc2l0aW9uRGF0YSA9IGV4dHJhY3RUcmFuc2l0aW9uRGF0YSh0aGlzKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmF3Q2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjID0gcmF3Q2hpbGRyZW5baV07XG4gICAgICBpZiAoYy50YWcpIHtcbiAgICAgICAgaWYgKGMua2V5ICE9IG51bGwgJiYgU3RyaW5nKGMua2V5KS5pbmRleE9mKCdfX3ZsaXN0JykgIT09IDApIHtcbiAgICAgICAgICBjaGlsZHJlbi5wdXNoKGMpO1xuICAgICAgICAgIG1hcFtjLmtleV0gPSBjXG4gICAgICAgICAgOyhjLmRhdGEgfHwgKGMuZGF0YSA9IHt9KSkudHJhbnNpdGlvbiA9IHRyYW5zaXRpb25EYXRhO1xuICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB2YXIgb3B0cyA9IGMuY29tcG9uZW50T3B0aW9ucztcbiAgICAgICAgICB2YXIgbmFtZSA9IG9wdHMgPyAob3B0cy5DdG9yLm9wdGlvbnMubmFtZSB8fCBvcHRzLnRhZyB8fCAnJykgOiBjLnRhZztcbiAgICAgICAgICB3YXJuKChcIjx0cmFuc2l0aW9uLWdyb3VwPiBjaGlsZHJlbiBtdXN0IGJlIGtleWVkOiA8XCIgKyBuYW1lICsgXCI+XCIpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcmV2Q2hpbGRyZW4pIHtcbiAgICAgIHZhciBrZXB0ID0gW107XG4gICAgICB2YXIgcmVtb3ZlZCA9IFtdO1xuICAgICAgZm9yICh2YXIgaSQxID0gMDsgaSQxIDwgcHJldkNoaWxkcmVuLmxlbmd0aDsgaSQxKyspIHtcbiAgICAgICAgdmFyIGMkMSA9IHByZXZDaGlsZHJlbltpJDFdO1xuICAgICAgICBjJDEuZGF0YS50cmFuc2l0aW9uID0gdHJhbnNpdGlvbkRhdGE7XG4gICAgICAgIGMkMS5kYXRhLnBvcyA9IGMkMS5lbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGlmIChtYXBbYyQxLmtleV0pIHtcbiAgICAgICAgICBrZXB0LnB1c2goYyQxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZW1vdmVkLnB1c2goYyQxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5rZXB0ID0gaCh0YWcsIG51bGwsIGtlcHQpO1xuICAgICAgdGhpcy5yZW1vdmVkID0gcmVtb3ZlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gaCh0YWcsIG51bGwsIGNoaWxkcmVuKVxuICB9LFxuXG4gIHVwZGF0ZWQ6IGZ1bmN0aW9uIHVwZGF0ZWQgKCkge1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJldkNoaWxkcmVuO1xuICAgIHZhciBtb3ZlQ2xhc3MgPSB0aGlzLm1vdmVDbGFzcyB8fCAoKHRoaXMubmFtZSB8fCAndicpICsgJy1tb3ZlJyk7XG4gICAgaWYgKCFjaGlsZHJlbi5sZW5ndGggfHwgIXRoaXMuaGFzTW92ZShjaGlsZHJlblswXS5lbG0sIG1vdmVDbGFzcykpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIHdlIGRpdmlkZSB0aGUgd29yayBpbnRvIHRocmVlIGxvb3BzIHRvIGF2b2lkIG1peGluZyBET00gcmVhZHMgYW5kIHdyaXRlc1xuICAgIC8vIGluIGVhY2ggaXRlcmF0aW9uIC0gd2hpY2ggaGVscHMgcHJldmVudCBsYXlvdXQgdGhyYXNoaW5nLlxuICAgIGNoaWxkcmVuLmZvckVhY2goY2FsbFBlbmRpbmdDYnMpO1xuICAgIGNoaWxkcmVuLmZvckVhY2gocmVjb3JkUG9zaXRpb24pO1xuICAgIGNoaWxkcmVuLmZvckVhY2goYXBwbHlUcmFuc2xhdGlvbik7XG5cbiAgICAvLyBmb3JjZSByZWZsb3cgdG8gcHV0IGV2ZXJ5dGhpbmcgaW4gcG9zaXRpb25cbiAgICAvLyBhc3NpZ24gdG8gdGhpcyB0byBhdm9pZCBiZWluZyByZW1vdmVkIGluIHRyZWUtc2hha2luZ1xuICAgIC8vICRmbG93LWRpc2FibGUtbGluZVxuICAgIHRoaXMuX3JlZmxvdyA9IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0O1xuXG4gICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoYykge1xuICAgICAgaWYgKGMuZGF0YS5tb3ZlZCkge1xuICAgICAgICB2YXIgZWwgPSBjLmVsbTtcbiAgICAgICAgdmFyIHMgPSBlbC5zdHlsZTtcbiAgICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xuICAgICAgICBzLnRyYW5zZm9ybSA9IHMuV2Via2l0VHJhbnNmb3JtID0gcy50cmFuc2l0aW9uRHVyYXRpb24gPSAnJztcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcih0cmFuc2l0aW9uRW5kRXZlbnQsIGVsLl9tb3ZlQ2IgPSBmdW5jdGlvbiBjYiAoZSkge1xuICAgICAgICAgIGlmIChlICYmIGUudGFyZ2V0ICE9PSBlbCkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZSB8fCAvdHJhbnNmb3JtJC8udGVzdChlLnByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIodHJhbnNpdGlvbkVuZEV2ZW50LCBjYik7XG4gICAgICAgICAgICBlbC5fbW92ZUNiID0gbnVsbDtcbiAgICAgICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbW92ZUNsYXNzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBoYXNNb3ZlOiBmdW5jdGlvbiBoYXNNb3ZlIChlbCwgbW92ZUNsYXNzKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICghaGFzVHJhbnNpdGlvbikge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKHRoaXMuX2hhc01vdmUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc01vdmVcbiAgICAgIH1cbiAgICAgIC8vIERldGVjdCB3aGV0aGVyIGFuIGVsZW1lbnQgd2l0aCB0aGUgbW92ZSBjbGFzcyBhcHBsaWVkIGhhc1xuICAgICAgLy8gQ1NTIHRyYW5zaXRpb25zLiBTaW5jZSB0aGUgZWxlbWVudCBtYXkgYmUgaW5zaWRlIGFuIGVudGVyaW5nXG4gICAgICAvLyB0cmFuc2l0aW9uIGF0IHRoaXMgdmVyeSBtb21lbnQsIHdlIG1ha2UgYSBjbG9uZSBvZiBpdCBhbmQgcmVtb3ZlXG4gICAgICAvLyBhbGwgb3RoZXIgdHJhbnNpdGlvbiBjbGFzc2VzIGFwcGxpZWQgdG8gZW5zdXJlIG9ubHkgdGhlIG1vdmUgY2xhc3NcbiAgICAgIC8vIGlzIGFwcGxpZWQuXG4gICAgICB2YXIgY2xvbmUgPSBlbC5jbG9uZU5vZGUoKTtcbiAgICAgIGlmIChlbC5fdHJhbnNpdGlvbkNsYXNzZXMpIHtcbiAgICAgICAgZWwuX3RyYW5zaXRpb25DbGFzc2VzLmZvckVhY2goZnVuY3Rpb24gKGNscykgeyByZW1vdmVDbGFzcyhjbG9uZSwgY2xzKTsgfSk7XG4gICAgICB9XG4gICAgICBhZGRDbGFzcyhjbG9uZSwgbW92ZUNsYXNzKTtcbiAgICAgIGNsb25lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB0aGlzLiRlbC5hcHBlbmRDaGlsZChjbG9uZSk7XG4gICAgICB2YXIgaW5mbyA9IGdldFRyYW5zaXRpb25JbmZvKGNsb25lKTtcbiAgICAgIHRoaXMuJGVsLnJlbW92ZUNoaWxkKGNsb25lKTtcbiAgICAgIHJldHVybiAodGhpcy5faGFzTW92ZSA9IGluZm8uaGFzVHJhbnNmb3JtKVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gY2FsbFBlbmRpbmdDYnMgKGMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChjLmVsbS5fbW92ZUNiKSB7XG4gICAgYy5lbG0uX21vdmVDYigpO1xuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoYy5lbG0uX2VudGVyQ2IpIHtcbiAgICBjLmVsbS5fZW50ZXJDYigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlY29yZFBvc2l0aW9uIChjKSB7XG4gIGMuZGF0YS5uZXdQb3MgPSBjLmVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbn1cblxuZnVuY3Rpb24gYXBwbHlUcmFuc2xhdGlvbiAoYykge1xuICB2YXIgb2xkUG9zID0gYy5kYXRhLnBvcztcbiAgdmFyIG5ld1BvcyA9IGMuZGF0YS5uZXdQb3M7XG4gIHZhciBkeCA9IG9sZFBvcy5sZWZ0IC0gbmV3UG9zLmxlZnQ7XG4gIHZhciBkeSA9IG9sZFBvcy50b3AgLSBuZXdQb3MudG9wO1xuICBpZiAoZHggfHwgZHkpIHtcbiAgICBjLmRhdGEubW92ZWQgPSB0cnVlO1xuICAgIHZhciBzID0gYy5lbG0uc3R5bGU7XG4gICAgcy50cmFuc2Zvcm0gPSBzLldlYmtpdFRyYW5zZm9ybSA9IFwidHJhbnNsYXRlKFwiICsgZHggKyBcInB4LFwiICsgZHkgKyBcInB4KVwiO1xuICAgIHMudHJhbnNpdGlvbkR1cmF0aW9uID0gJzBzJztcbiAgfVxufVxuXG52YXIgcGxhdGZvcm1Db21wb25lbnRzID0ge1xuICBUcmFuc2l0aW9uOiBUcmFuc2l0aW9uLFxuICBUcmFuc2l0aW9uR3JvdXA6IFRyYW5zaXRpb25Hcm91cFxufTtcblxuLyogICovXG5cbi8vIGluc3RhbGwgcGxhdGZvcm0gc3BlY2lmaWMgdXRpbHNcblZ1ZS5jb25maWcubXVzdFVzZVByb3AgPSBtdXN0VXNlUHJvcDtcblZ1ZS5jb25maWcuaXNSZXNlcnZlZFRhZyA9IGlzUmVzZXJ2ZWRUYWc7XG5WdWUuY29uZmlnLmlzUmVzZXJ2ZWRBdHRyID0gaXNSZXNlcnZlZEF0dHI7XG5WdWUuY29uZmlnLmdldFRhZ05hbWVzcGFjZSA9IGdldFRhZ05hbWVzcGFjZTtcblZ1ZS5jb25maWcuaXNVbmtub3duRWxlbWVudCA9IGlzVW5rbm93bkVsZW1lbnQ7XG5cbi8vIGluc3RhbGwgcGxhdGZvcm0gcnVudGltZSBkaXJlY3RpdmVzICYgY29tcG9uZW50c1xuZXh0ZW5kKFZ1ZS5vcHRpb25zLmRpcmVjdGl2ZXMsIHBsYXRmb3JtRGlyZWN0aXZlcyk7XG5leHRlbmQoVnVlLm9wdGlvbnMuY29tcG9uZW50cywgcGxhdGZvcm1Db21wb25lbnRzKTtcblxuLy8gaW5zdGFsbCBwbGF0Zm9ybSBwYXRjaCBmdW5jdGlvblxuVnVlLnByb3RvdHlwZS5fX3BhdGNoX18gPSBpbkJyb3dzZXIgPyBwYXRjaCA6IG5vb3A7XG5cbi8vIHB1YmxpYyBtb3VudCBtZXRob2RcblZ1ZS5wcm90b3R5cGUuJG1vdW50ID0gZnVuY3Rpb24gKFxuICBlbCxcbiAgaHlkcmF0aW5nXG4pIHtcbiAgZWwgPSBlbCAmJiBpbkJyb3dzZXIgPyBxdWVyeShlbCkgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBtb3VudENvbXBvbmVudCh0aGlzLCBlbCwgaHlkcmF0aW5nKVxufTtcblxuLy8gZGV2dG9vbHMgZ2xvYmFsIGhvb2tcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5pZiAoaW5Ccm93c2VyKSB7XG4gIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgIGlmIChjb25maWcuZGV2dG9vbHMpIHtcbiAgICAgIGlmIChkZXZ0b29scykge1xuICAgICAgICBkZXZ0b29scy5lbWl0KCdpbml0JywgVnVlKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICd0ZXN0J1xuICAgICAgKSB7XG4gICAgICAgIGNvbnNvbGVbY29uc29sZS5pbmZvID8gJ2luZm8nIDogJ2xvZyddKFxuICAgICAgICAgICdEb3dubG9hZCB0aGUgVnVlIERldnRvb2xzIGV4dGVuc2lvbiBmb3IgYSBiZXR0ZXIgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZTpcXG4nICtcbiAgICAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZS1kZXZ0b29scydcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAndGVzdCcgJiZcbiAgICAgIGNvbmZpZy5wcm9kdWN0aW9uVGlwICE9PSBmYWxzZSAmJlxuICAgICAgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnXG4gICAgKSB7XG4gICAgICBjb25zb2xlW2NvbnNvbGUuaW5mbyA/ICdpbmZvJyA6ICdsb2cnXShcbiAgICAgICAgXCJZb3UgYXJlIHJ1bm5pbmcgVnVlIGluIGRldmVsb3BtZW50IG1vZGUuXFxuXCIgK1xuICAgICAgICBcIk1ha2Ugc3VyZSB0byB0dXJuIG9uIHByb2R1Y3Rpb24gbW9kZSB3aGVuIGRlcGxveWluZyBmb3IgcHJvZHVjdGlvbi5cXG5cIiArXG4gICAgICAgIFwiU2VlIG1vcmUgdGlwcyBhdCBodHRwczovL3Z1ZWpzLm9yZy9ndWlkZS9kZXBsb3ltZW50Lmh0bWxcIlxuICAgICAgKTtcbiAgICB9XG4gIH0sIDApO1xufVxuXG4vKiAgKi9cblxudmFyIGRlZmF1bHRUYWdSRSA9IC9cXHtcXHsoKD86LnxcXHI/XFxuKSs/KVxcfVxcfS9nO1xudmFyIHJlZ2V4RXNjYXBlUkUgPSAvWy0uKis/XiR7fSgpfFtcXF1cXC9cXFxcXS9nO1xuXG52YXIgYnVpbGRSZWdleCA9IGNhY2hlZChmdW5jdGlvbiAoZGVsaW1pdGVycykge1xuICB2YXIgb3BlbiA9IGRlbGltaXRlcnNbMF0ucmVwbGFjZShyZWdleEVzY2FwZVJFLCAnXFxcXCQmJyk7XG4gIHZhciBjbG9zZSA9IGRlbGltaXRlcnNbMV0ucmVwbGFjZShyZWdleEVzY2FwZVJFLCAnXFxcXCQmJyk7XG4gIHJldHVybiBuZXcgUmVnRXhwKG9wZW4gKyAnKCg/Oi58XFxcXG4pKz8pJyArIGNsb3NlLCAnZycpXG59KTtcblxuXG5cbmZ1bmN0aW9uIHBhcnNlVGV4dCAoXG4gIHRleHQsXG4gIGRlbGltaXRlcnNcbikge1xuICB2YXIgdGFnUkUgPSBkZWxpbWl0ZXJzID8gYnVpbGRSZWdleChkZWxpbWl0ZXJzKSA6IGRlZmF1bHRUYWdSRTtcbiAgaWYgKCF0YWdSRS50ZXN0KHRleHQpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHRva2VucyA9IFtdO1xuICB2YXIgcmF3VG9rZW5zID0gW107XG4gIHZhciBsYXN0SW5kZXggPSB0YWdSRS5sYXN0SW5kZXggPSAwO1xuICB2YXIgbWF0Y2gsIGluZGV4LCB0b2tlblZhbHVlO1xuICB3aGlsZSAoKG1hdGNoID0gdGFnUkUuZXhlYyh0ZXh0KSkpIHtcbiAgICBpbmRleCA9IG1hdGNoLmluZGV4O1xuICAgIC8vIHB1c2ggdGV4dCB0b2tlblxuICAgIGlmIChpbmRleCA+IGxhc3RJbmRleCkge1xuICAgICAgcmF3VG9rZW5zLnB1c2godG9rZW5WYWx1ZSA9IHRleHQuc2xpY2UobGFzdEluZGV4LCBpbmRleCkpO1xuICAgICAgdG9rZW5zLnB1c2goSlNPTi5zdHJpbmdpZnkodG9rZW5WYWx1ZSkpO1xuICAgIH1cbiAgICAvLyB0YWcgdG9rZW5cbiAgICB2YXIgZXhwID0gcGFyc2VGaWx0ZXJzKG1hdGNoWzFdLnRyaW0oKSk7XG4gICAgdG9rZW5zLnB1c2goKFwiX3MoXCIgKyBleHAgKyBcIilcIikpO1xuICAgIHJhd1Rva2Vucy5wdXNoKHsgJ0BiaW5kaW5nJzogZXhwIH0pO1xuICAgIGxhc3RJbmRleCA9IGluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoO1xuICB9XG4gIGlmIChsYXN0SW5kZXggPCB0ZXh0Lmxlbmd0aCkge1xuICAgIHJhd1Rva2Vucy5wdXNoKHRva2VuVmFsdWUgPSB0ZXh0LnNsaWNlKGxhc3RJbmRleCkpO1xuICAgIHRva2Vucy5wdXNoKEpTT04uc3RyaW5naWZ5KHRva2VuVmFsdWUpKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGV4cHJlc3Npb246IHRva2Vucy5qb2luKCcrJyksXG4gICAgdG9rZW5zOiByYXdUb2tlbnNcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gdHJhbnNmb3JtTm9kZSAoZWwsIG9wdGlvbnMpIHtcbiAgdmFyIHdhcm4gPSBvcHRpb25zLndhcm4gfHwgYmFzZVdhcm47XG4gIHZhciBzdGF0aWNDbGFzcyA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICdjbGFzcycpO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBzdGF0aWNDbGFzcykge1xuICAgIHZhciByZXMgPSBwYXJzZVRleHQoc3RhdGljQ2xhc3MsIG9wdGlvbnMuZGVsaW1pdGVycyk7XG4gICAgaWYgKHJlcykge1xuICAgICAgd2FybihcbiAgICAgICAgXCJjbGFzcz1cXFwiXCIgKyBzdGF0aWNDbGFzcyArIFwiXFxcIjogXCIgK1xuICAgICAgICAnSW50ZXJwb2xhdGlvbiBpbnNpZGUgYXR0cmlidXRlcyBoYXMgYmVlbiByZW1vdmVkLiAnICtcbiAgICAgICAgJ1VzZSB2LWJpbmQgb3IgdGhlIGNvbG9uIHNob3J0aGFuZCBpbnN0ZWFkLiBGb3IgZXhhbXBsZSwgJyArXG4gICAgICAgICdpbnN0ZWFkIG9mIDxkaXYgY2xhc3M9XCJ7eyB2YWwgfX1cIj4sIHVzZSA8ZGl2IDpjbGFzcz1cInZhbFwiPi4nLFxuICAgICAgICBlbC5yYXdBdHRyc01hcFsnY2xhc3MnXVxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgaWYgKHN0YXRpY0NsYXNzKSB7XG4gICAgZWwuc3RhdGljQ2xhc3MgPSBKU09OLnN0cmluZ2lmeShzdGF0aWNDbGFzcyk7XG4gIH1cbiAgdmFyIGNsYXNzQmluZGluZyA9IGdldEJpbmRpbmdBdHRyKGVsLCAnY2xhc3MnLCBmYWxzZSAvKiBnZXRTdGF0aWMgKi8pO1xuICBpZiAoY2xhc3NCaW5kaW5nKSB7XG4gICAgZWwuY2xhc3NCaW5kaW5nID0gY2xhc3NCaW5kaW5nO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbkRhdGEgKGVsKSB7XG4gIHZhciBkYXRhID0gJyc7XG4gIGlmIChlbC5zdGF0aWNDbGFzcykge1xuICAgIGRhdGEgKz0gXCJzdGF0aWNDbGFzczpcIiArIChlbC5zdGF0aWNDbGFzcykgKyBcIixcIjtcbiAgfVxuICBpZiAoZWwuY2xhc3NCaW5kaW5nKSB7XG4gICAgZGF0YSArPSBcImNsYXNzOlwiICsgKGVsLmNsYXNzQmluZGluZykgKyBcIixcIjtcbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG52YXIga2xhc3MkMSA9IHtcbiAgc3RhdGljS2V5czogWydzdGF0aWNDbGFzcyddLFxuICB0cmFuc2Zvcm1Ob2RlOiB0cmFuc2Zvcm1Ob2RlLFxuICBnZW5EYXRhOiBnZW5EYXRhXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdHJhbnNmb3JtTm9kZSQxIChlbCwgb3B0aW9ucykge1xuICB2YXIgd2FybiA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2FybjtcbiAgdmFyIHN0YXRpY1N0eWxlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3N0eWxlJyk7XG4gIGlmIChzdGF0aWNTdHlsZSkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgcmVzID0gcGFyc2VUZXh0KHN0YXRpY1N0eWxlLCBvcHRpb25zLmRlbGltaXRlcnMpO1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIFwic3R5bGU9XFxcIlwiICsgc3RhdGljU3R5bGUgKyBcIlxcXCI6IFwiICtcbiAgICAgICAgICAnSW50ZXJwb2xhdGlvbiBpbnNpZGUgYXR0cmlidXRlcyBoYXMgYmVlbiByZW1vdmVkLiAnICtcbiAgICAgICAgICAnVXNlIHYtYmluZCBvciB0aGUgY29sb24gc2hvcnRoYW5kIGluc3RlYWQuIEZvciBleGFtcGxlLCAnICtcbiAgICAgICAgICAnaW5zdGVhZCBvZiA8ZGl2IHN0eWxlPVwie3sgdmFsIH19XCI+LCB1c2UgPGRpdiA6c3R5bGU9XCJ2YWxcIj4uJyxcbiAgICAgICAgICBlbC5yYXdBdHRyc01hcFsnc3R5bGUnXVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBlbC5zdGF0aWNTdHlsZSA9IEpTT04uc3RyaW5naWZ5KHBhcnNlU3R5bGVUZXh0KHN0YXRpY1N0eWxlKSk7XG4gIH1cblxuICB2YXIgc3R5bGVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICdzdHlsZScsIGZhbHNlIC8qIGdldFN0YXRpYyAqLyk7XG4gIGlmIChzdHlsZUJpbmRpbmcpIHtcbiAgICBlbC5zdHlsZUJpbmRpbmcgPSBzdHlsZUJpbmRpbmc7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuRGF0YSQxIChlbCkge1xuICB2YXIgZGF0YSA9ICcnO1xuICBpZiAoZWwuc3RhdGljU3R5bGUpIHtcbiAgICBkYXRhICs9IFwic3RhdGljU3R5bGU6XCIgKyAoZWwuc3RhdGljU3R5bGUpICsgXCIsXCI7XG4gIH1cbiAgaWYgKGVsLnN0eWxlQmluZGluZykge1xuICAgIGRhdGEgKz0gXCJzdHlsZTooXCIgKyAoZWwuc3R5bGVCaW5kaW5nKSArIFwiKSxcIjtcbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG52YXIgc3R5bGUkMSA9IHtcbiAgc3RhdGljS2V5czogWydzdGF0aWNTdHlsZSddLFxuICB0cmFuc2Zvcm1Ob2RlOiB0cmFuc2Zvcm1Ob2RlJDEsXG4gIGdlbkRhdGE6IGdlbkRhdGEkMVxufTtcblxuLyogICovXG5cbnZhciBkZWNvZGVyO1xuXG52YXIgaGUgPSB7XG4gIGRlY29kZTogZnVuY3Rpb24gZGVjb2RlIChodG1sKSB7XG4gICAgZGVjb2RlciA9IGRlY29kZXIgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZGVjb2Rlci5pbm5lckhUTUwgPSBodG1sO1xuICAgIHJldHVybiBkZWNvZGVyLnRleHRDb250ZW50XG4gIH1cbn07XG5cbi8qICAqL1xuXG52YXIgaXNVbmFyeVRhZyA9IG1ha2VNYXAoXG4gICdhcmVhLGJhc2UsYnIsY29sLGVtYmVkLGZyYW1lLGhyLGltZyxpbnB1dCxpc2luZGV4LGtleWdlbiwnICtcbiAgJ2xpbmssbWV0YSxwYXJhbSxzb3VyY2UsdHJhY2ssd2JyJ1xuKTtcblxuLy8gRWxlbWVudHMgdGhhdCB5b3UgY2FuLCBpbnRlbnRpb25hbGx5LCBsZWF2ZSBvcGVuXG4vLyAoYW5kIHdoaWNoIGNsb3NlIHRoZW1zZWx2ZXMpXG52YXIgY2FuQmVMZWZ0T3BlblRhZyA9IG1ha2VNYXAoXG4gICdjb2xncm91cCxkZCxkdCxsaSxvcHRpb25zLHAsdGQsdGZvb3QsdGgsdGhlYWQsdHIsc291cmNlJ1xuKTtcblxuLy8gSFRNTDUgdGFncyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmRpY2VzLmh0bWwjZWxlbWVudHMtM1xuLy8gUGhyYXNpbmcgQ29udGVudCBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9kb20uaHRtbCNwaHJhc2luZy1jb250ZW50XG52YXIgaXNOb25QaHJhc2luZ1RhZyA9IG1ha2VNYXAoXG4gICdhZGRyZXNzLGFydGljbGUsYXNpZGUsYmFzZSxibG9ja3F1b3RlLGJvZHksY2FwdGlvbixjb2wsY29sZ3JvdXAsZGQsJyArXG4gICdkZXRhaWxzLGRpYWxvZyxkaXYsZGwsZHQsZmllbGRzZXQsZmlnY2FwdGlvbixmaWd1cmUsZm9vdGVyLGZvcm0sJyArXG4gICdoMSxoMixoMyxoNCxoNSxoNixoZWFkLGhlYWRlcixoZ3JvdXAsaHIsaHRtbCxsZWdlbmQsbGksbWVudWl0ZW0sbWV0YSwnICtcbiAgJ29wdGdyb3VwLG9wdGlvbixwYXJhbSxycCxydCxzb3VyY2Usc3R5bGUsc3VtbWFyeSx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVhZCwnICtcbiAgJ3RpdGxlLHRyLHRyYWNrJ1xuKTtcblxuLyoqXG4gKiBOb3QgdHlwZS1jaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBpdCdzIG1vc3RseSB2ZW5kb3IgY29kZS5cbiAqL1xuXG4vLyBSZWd1bGFyIEV4cHJlc3Npb25zIGZvciBwYXJzaW5nIHRhZ3MgYW5kIGF0dHJpYnV0ZXNcbnZhciBhdHRyaWJ1dGUgPSAvXlxccyooW15cXHNcIic8PlxcLz1dKykoPzpcXHMqKD0pXFxzKig/OlwiKFteXCJdKilcIit8JyhbXiddKiknK3woW15cXHNcIic9PD5gXSspKSk/LztcbnZhciBkeW5hbWljQXJnQXR0cmlidXRlID0gL15cXHMqKCg/OnYtW1xcdy1dKzp8QHw6fCMpXFxbW149XStcXF1bXlxcc1wiJzw+XFwvPV0qKSg/OlxccyooPSlcXHMqKD86XCIoW15cIl0qKVwiK3wnKFteJ10qKScrfChbXlxcc1wiJz08PmBdKykpKT8vO1xudmFyIG5jbmFtZSA9IFwiW2EtekEtWl9dW1xcXFwtXFxcXC4wLTlfYS16QS1aXCIgKyAodW5pY29kZVJlZ0V4cC5zb3VyY2UpICsgXCJdKlwiO1xudmFyIHFuYW1lQ2FwdHVyZSA9IFwiKCg/OlwiICsgbmNuYW1lICsgXCJcXFxcOik/XCIgKyBuY25hbWUgKyBcIilcIjtcbnZhciBzdGFydFRhZ09wZW4gPSBuZXcgUmVnRXhwKChcIl48XCIgKyBxbmFtZUNhcHR1cmUpKTtcbnZhciBzdGFydFRhZ0Nsb3NlID0gL15cXHMqKFxcLz8pPi87XG52YXIgZW5kVGFnID0gbmV3IFJlZ0V4cCgoXCJePFxcXFwvXCIgKyBxbmFtZUNhcHR1cmUgKyBcIltePl0qPlwiKSk7XG52YXIgZG9jdHlwZSA9IC9ePCFET0NUWVBFIFtePl0rPi9pO1xuLy8gIzcyOTg6IGVzY2FwZSAtIHRvIGF2b2lkIGJlaW5nIHBhc2VkIGFzIEhUTUwgY29tbWVudCB3aGVuIGlubGluZWQgaW4gcGFnZVxudmFyIGNvbW1lbnQgPSAvXjwhXFwtLS87XG52YXIgY29uZGl0aW9uYWxDb21tZW50ID0gL148IVxcWy87XG5cbi8vIFNwZWNpYWwgRWxlbWVudHMgKGNhbiBjb250YWluIGFueXRoaW5nKVxudmFyIGlzUGxhaW5UZXh0RWxlbWVudCA9IG1ha2VNYXAoJ3NjcmlwdCxzdHlsZSx0ZXh0YXJlYScsIHRydWUpO1xudmFyIHJlQ2FjaGUgPSB7fTtcblxudmFyIGRlY29kaW5nTWFwID0ge1xuICAnJmx0Oyc6ICc8JyxcbiAgJyZndDsnOiAnPicsXG4gICcmcXVvdDsnOiAnXCInLFxuICAnJmFtcDsnOiAnJicsXG4gICcmIzEwOyc6ICdcXG4nLFxuICAnJiM5Oyc6ICdcXHQnLFxuICAnJiMzOTsnOiBcIidcIlxufTtcbnZhciBlbmNvZGVkQXR0ciA9IC8mKD86bHR8Z3R8cXVvdHxhbXB8IzM5KTsvZztcbnZhciBlbmNvZGVkQXR0cldpdGhOZXdMaW5lcyA9IC8mKD86bHR8Z3R8cXVvdHxhbXB8IzM5fCMxMHwjOSk7L2c7XG5cbi8vICM1OTkyXG52YXIgaXNJZ25vcmVOZXdsaW5lVGFnID0gbWFrZU1hcCgncHJlLHRleHRhcmVhJywgdHJ1ZSk7XG52YXIgc2hvdWxkSWdub3JlRmlyc3ROZXdsaW5lID0gZnVuY3Rpb24gKHRhZywgaHRtbCkgeyByZXR1cm4gdGFnICYmIGlzSWdub3JlTmV3bGluZVRhZyh0YWcpICYmIGh0bWxbMF0gPT09ICdcXG4nOyB9O1xuXG5mdW5jdGlvbiBkZWNvZGVBdHRyICh2YWx1ZSwgc2hvdWxkRGVjb2RlTmV3bGluZXMpIHtcbiAgdmFyIHJlID0gc2hvdWxkRGVjb2RlTmV3bGluZXMgPyBlbmNvZGVkQXR0cldpdGhOZXdMaW5lcyA6IGVuY29kZWRBdHRyO1xuICByZXR1cm4gdmFsdWUucmVwbGFjZShyZSwgZnVuY3Rpb24gKG1hdGNoKSB7IHJldHVybiBkZWNvZGluZ01hcFttYXRjaF07IH0pXG59XG5cbmZ1bmN0aW9uIHBhcnNlSFRNTCAoaHRtbCwgb3B0aW9ucykge1xuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGV4cGVjdEhUTUwgPSBvcHRpb25zLmV4cGVjdEhUTUw7XG4gIHZhciBpc1VuYXJ5VGFnJCQxID0gb3B0aW9ucy5pc1VuYXJ5VGFnIHx8IG5vO1xuICB2YXIgY2FuQmVMZWZ0T3BlblRhZyQkMSA9IG9wdGlvbnMuY2FuQmVMZWZ0T3BlblRhZyB8fCBubztcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxhc3QsIGxhc3RUYWc7XG4gIHdoaWxlIChodG1sKSB7XG4gICAgbGFzdCA9IGh0bWw7XG4gICAgLy8gTWFrZSBzdXJlIHdlJ3JlIG5vdCBpbiBhIHBsYWludGV4dCBjb250ZW50IGVsZW1lbnQgbGlrZSBzY3JpcHQvc3R5bGVcbiAgICBpZiAoIWxhc3RUYWcgfHwgIWlzUGxhaW5UZXh0RWxlbWVudChsYXN0VGFnKSkge1xuICAgICAgdmFyIHRleHRFbmQgPSBodG1sLmluZGV4T2YoJzwnKTtcbiAgICAgIGlmICh0ZXh0RW5kID09PSAwKSB7XG4gICAgICAgIC8vIENvbW1lbnQ6XG4gICAgICAgIGlmIChjb21tZW50LnRlc3QoaHRtbCkpIHtcbiAgICAgICAgICB2YXIgY29tbWVudEVuZCA9IGh0bWwuaW5kZXhPZignLS0+Jyk7XG5cbiAgICAgICAgICBpZiAoY29tbWVudEVuZCA+PSAwKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zaG91bGRLZWVwQ29tbWVudCkge1xuICAgICAgICAgICAgICBvcHRpb25zLmNvbW1lbnQoaHRtbC5zdWJzdHJpbmcoNCwgY29tbWVudEVuZCksIGluZGV4LCBpbmRleCArIGNvbW1lbnRFbmQgKyAzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkdmFuY2UoY29tbWVudEVuZCArIDMpO1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbmRpdGlvbmFsX2NvbW1lbnQjRG93bmxldmVsLXJldmVhbGVkX2NvbmRpdGlvbmFsX2NvbW1lbnRcbiAgICAgICAgaWYgKGNvbmRpdGlvbmFsQ29tbWVudC50ZXN0KGh0bWwpKSB7XG4gICAgICAgICAgdmFyIGNvbmRpdGlvbmFsRW5kID0gaHRtbC5pbmRleE9mKCddPicpO1xuXG4gICAgICAgICAgaWYgKGNvbmRpdGlvbmFsRW5kID49IDApIHtcbiAgICAgICAgICAgIGFkdmFuY2UoY29uZGl0aW9uYWxFbmQgKyAyKTtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRG9jdHlwZTpcbiAgICAgICAgdmFyIGRvY3R5cGVNYXRjaCA9IGh0bWwubWF0Y2goZG9jdHlwZSk7XG4gICAgICAgIGlmIChkb2N0eXBlTWF0Y2gpIHtcbiAgICAgICAgICBhZHZhbmNlKGRvY3R5cGVNYXRjaFswXS5sZW5ndGgpO1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICAvLyBFbmQgdGFnOlxuICAgICAgICB2YXIgZW5kVGFnTWF0Y2ggPSBodG1sLm1hdGNoKGVuZFRhZyk7XG4gICAgICAgIGlmIChlbmRUYWdNYXRjaCkge1xuICAgICAgICAgIHZhciBjdXJJbmRleCA9IGluZGV4O1xuICAgICAgICAgIGFkdmFuY2UoZW5kVGFnTWF0Y2hbMF0ubGVuZ3RoKTtcbiAgICAgICAgICBwYXJzZUVuZFRhZyhlbmRUYWdNYXRjaFsxXSwgY3VySW5kZXgsIGluZGV4KTtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RhcnQgdGFnOlxuICAgICAgICB2YXIgc3RhcnRUYWdNYXRjaCA9IHBhcnNlU3RhcnRUYWcoKTtcbiAgICAgICAgaWYgKHN0YXJ0VGFnTWF0Y2gpIHtcbiAgICAgICAgICBoYW5kbGVTdGFydFRhZyhzdGFydFRhZ01hdGNoKTtcbiAgICAgICAgICBpZiAoc2hvdWxkSWdub3JlRmlyc3ROZXdsaW5lKHN0YXJ0VGFnTWF0Y2gudGFnTmFtZSwgaHRtbCkpIHtcbiAgICAgICAgICAgIGFkdmFuY2UoMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHRleHQgPSAodm9pZCAwKSwgcmVzdCA9ICh2b2lkIDApLCBuZXh0ID0gKHZvaWQgMCk7XG4gICAgICBpZiAodGV4dEVuZCA+PSAwKSB7XG4gICAgICAgIHJlc3QgPSBodG1sLnNsaWNlKHRleHRFbmQpO1xuICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgIWVuZFRhZy50ZXN0KHJlc3QpICYmXG4gICAgICAgICAgIXN0YXJ0VGFnT3Blbi50ZXN0KHJlc3QpICYmXG4gICAgICAgICAgIWNvbW1lbnQudGVzdChyZXN0KSAmJlxuICAgICAgICAgICFjb25kaXRpb25hbENvbW1lbnQudGVzdChyZXN0KVxuICAgICAgICApIHtcbiAgICAgICAgICAvLyA8IGluIHBsYWluIHRleHQsIGJlIGZvcmdpdmluZyBhbmQgdHJlYXQgaXQgYXMgdGV4dFxuICAgICAgICAgIG5leHQgPSByZXN0LmluZGV4T2YoJzwnLCAxKTtcbiAgICAgICAgICBpZiAobmV4dCA8IDApIHsgYnJlYWsgfVxuICAgICAgICAgIHRleHRFbmQgKz0gbmV4dDtcbiAgICAgICAgICByZXN0ID0gaHRtbC5zbGljZSh0ZXh0RW5kKTtcbiAgICAgICAgfVxuICAgICAgICB0ZXh0ID0gaHRtbC5zdWJzdHJpbmcoMCwgdGV4dEVuZCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0ZXh0RW5kIDwgMCkge1xuICAgICAgICB0ZXh0ID0gaHRtbDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgYWR2YW5jZSh0ZXh0Lmxlbmd0aCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNoYXJzICYmIHRleHQpIHtcbiAgICAgICAgb3B0aW9ucy5jaGFycyh0ZXh0LCBpbmRleCAtIHRleHQubGVuZ3RoLCBpbmRleCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlbmRUYWdMZW5ndGggPSAwO1xuICAgICAgdmFyIHN0YWNrZWRUYWcgPSBsYXN0VGFnLnRvTG93ZXJDYXNlKCk7XG4gICAgICB2YXIgcmVTdGFja2VkVGFnID0gcmVDYWNoZVtzdGFja2VkVGFnXSB8fCAocmVDYWNoZVtzdGFja2VkVGFnXSA9IG5ldyBSZWdFeHAoJyhbXFxcXHNcXFxcU10qPykoPC8nICsgc3RhY2tlZFRhZyArICdbXj5dKj4pJywgJ2knKSk7XG4gICAgICB2YXIgcmVzdCQxID0gaHRtbC5yZXBsYWNlKHJlU3RhY2tlZFRhZywgZnVuY3Rpb24gKGFsbCwgdGV4dCwgZW5kVGFnKSB7XG4gICAgICAgIGVuZFRhZ0xlbmd0aCA9IGVuZFRhZy5sZW5ndGg7XG4gICAgICAgIGlmICghaXNQbGFpblRleHRFbGVtZW50KHN0YWNrZWRUYWcpICYmIHN0YWNrZWRUYWcgIT09ICdub3NjcmlwdCcpIHtcbiAgICAgICAgICB0ZXh0ID0gdGV4dFxuICAgICAgICAgICAgLnJlcGxhY2UoLzwhXFwtLShbXFxzXFxTXSo/KS0tPi9nLCAnJDEnKSAvLyAjNzI5OFxuICAgICAgICAgICAgLnJlcGxhY2UoLzwhXFxbQ0RBVEFcXFsoW1xcc1xcU10qPyldXT4vZywgJyQxJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNob3VsZElnbm9yZUZpcnN0TmV3bGluZShzdGFja2VkVGFnLCB0ZXh0KSkge1xuICAgICAgICAgIHRleHQgPSB0ZXh0LnNsaWNlKDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmNoYXJzKSB7XG4gICAgICAgICAgb3B0aW9ucy5jaGFycyh0ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJydcbiAgICAgIH0pO1xuICAgICAgaW5kZXggKz0gaHRtbC5sZW5ndGggLSByZXN0JDEubGVuZ3RoO1xuICAgICAgaHRtbCA9IHJlc3QkMTtcbiAgICAgIHBhcnNlRW5kVGFnKHN0YWNrZWRUYWcsIGluZGV4IC0gZW5kVGFnTGVuZ3RoLCBpbmRleCk7XG4gICAgfVxuXG4gICAgaWYgKGh0bWwgPT09IGxhc3QpIHtcbiAgICAgIG9wdGlvbnMuY2hhcnMgJiYgb3B0aW9ucy5jaGFycyhodG1sKTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFzdGFjay5sZW5ndGggJiYgb3B0aW9ucy53YXJuKSB7XG4gICAgICAgIG9wdGlvbnMud2FybigoXCJNYWwtZm9ybWF0dGVkIHRhZyBhdCBlbmQgb2YgdGVtcGxhdGU6IFxcXCJcIiArIGh0bWwgKyBcIlxcXCJcIiksIHsgc3RhcnQ6IGluZGV4ICsgaHRtbC5sZW5ndGggfSk7XG4gICAgICB9XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIC8vIENsZWFuIHVwIGFueSByZW1haW5pbmcgdGFnc1xuICBwYXJzZUVuZFRhZygpO1xuXG4gIGZ1bmN0aW9uIGFkdmFuY2UgKG4pIHtcbiAgICBpbmRleCArPSBuO1xuICAgIGh0bWwgPSBodG1sLnN1YnN0cmluZyhuKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlU3RhcnRUYWcgKCkge1xuICAgIHZhciBzdGFydCA9IGh0bWwubWF0Y2goc3RhcnRUYWdPcGVuKTtcbiAgICBpZiAoc3RhcnQpIHtcbiAgICAgIHZhciBtYXRjaCA9IHtcbiAgICAgICAgdGFnTmFtZTogc3RhcnRbMV0sXG4gICAgICAgIGF0dHJzOiBbXSxcbiAgICAgICAgc3RhcnQ6IGluZGV4XG4gICAgICB9O1xuICAgICAgYWR2YW5jZShzdGFydFswXS5sZW5ndGgpO1xuICAgICAgdmFyIGVuZCwgYXR0cjtcbiAgICAgIHdoaWxlICghKGVuZCA9IGh0bWwubWF0Y2goc3RhcnRUYWdDbG9zZSkpICYmIChhdHRyID0gaHRtbC5tYXRjaChkeW5hbWljQXJnQXR0cmlidXRlKSB8fCBodG1sLm1hdGNoKGF0dHJpYnV0ZSkpKSB7XG4gICAgICAgIGF0dHIuc3RhcnQgPSBpbmRleDtcbiAgICAgICAgYWR2YW5jZShhdHRyWzBdLmxlbmd0aCk7XG4gICAgICAgIGF0dHIuZW5kID0gaW5kZXg7XG4gICAgICAgIG1hdGNoLmF0dHJzLnB1c2goYXR0cik7XG4gICAgICB9XG4gICAgICBpZiAoZW5kKSB7XG4gICAgICAgIG1hdGNoLnVuYXJ5U2xhc2ggPSBlbmRbMV07XG4gICAgICAgIGFkdmFuY2UoZW5kWzBdLmxlbmd0aCk7XG4gICAgICAgIG1hdGNoLmVuZCA9IGluZGV4O1xuICAgICAgICByZXR1cm4gbWF0Y2hcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVTdGFydFRhZyAobWF0Y2gpIHtcbiAgICB2YXIgdGFnTmFtZSA9IG1hdGNoLnRhZ05hbWU7XG4gICAgdmFyIHVuYXJ5U2xhc2ggPSBtYXRjaC51bmFyeVNsYXNoO1xuXG4gICAgaWYgKGV4cGVjdEhUTUwpIHtcbiAgICAgIGlmIChsYXN0VGFnID09PSAncCcgJiYgaXNOb25QaHJhc2luZ1RhZyh0YWdOYW1lKSkge1xuICAgICAgICBwYXJzZUVuZFRhZyhsYXN0VGFnKTtcbiAgICAgIH1cbiAgICAgIGlmIChjYW5CZUxlZnRPcGVuVGFnJCQxKHRhZ05hbWUpICYmIGxhc3RUYWcgPT09IHRhZ05hbWUpIHtcbiAgICAgICAgcGFyc2VFbmRUYWcodGFnTmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHVuYXJ5ID0gaXNVbmFyeVRhZyQkMSh0YWdOYW1lKSB8fCAhIXVuYXJ5U2xhc2g7XG5cbiAgICB2YXIgbCA9IG1hdGNoLmF0dHJzLmxlbmd0aDtcbiAgICB2YXIgYXR0cnMgPSBuZXcgQXJyYXkobCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBhcmdzID0gbWF0Y2guYXR0cnNbaV07XG4gICAgICB2YXIgdmFsdWUgPSBhcmdzWzNdIHx8IGFyZ3NbNF0gfHwgYXJnc1s1XSB8fCAnJztcbiAgICAgIHZhciBzaG91bGREZWNvZGVOZXdsaW5lcyA9IHRhZ05hbWUgPT09ICdhJyAmJiBhcmdzWzFdID09PSAnaHJlZidcbiAgICAgICAgPyBvcHRpb25zLnNob3VsZERlY29kZU5ld2xpbmVzRm9ySHJlZlxuICAgICAgICA6IG9wdGlvbnMuc2hvdWxkRGVjb2RlTmV3bGluZXM7XG4gICAgICBhdHRyc1tpXSA9IHtcbiAgICAgICAgbmFtZTogYXJnc1sxXSxcbiAgICAgICAgdmFsdWU6IGRlY29kZUF0dHIodmFsdWUsIHNob3VsZERlY29kZU5ld2xpbmVzKVxuICAgICAgfTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIG9wdGlvbnMub3V0cHV0U291cmNlUmFuZ2UpIHtcbiAgICAgICAgYXR0cnNbaV0uc3RhcnQgPSBhcmdzLnN0YXJ0ICsgYXJnc1swXS5tYXRjaCgvXlxccyovKS5sZW5ndGg7XG4gICAgICAgIGF0dHJzW2ldLmVuZCA9IGFyZ3MuZW5kO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdW5hcnkpIHtcbiAgICAgIHN0YWNrLnB1c2goeyB0YWc6IHRhZ05hbWUsIGxvd2VyQ2FzZWRUYWc6IHRhZ05hbWUudG9Mb3dlckNhc2UoKSwgYXR0cnM6IGF0dHJzLCBzdGFydDogbWF0Y2guc3RhcnQsIGVuZDogbWF0Y2guZW5kIH0pO1xuICAgICAgbGFzdFRhZyA9IHRhZ05hbWU7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc3RhcnQpIHtcbiAgICAgIG9wdGlvbnMuc3RhcnQodGFnTmFtZSwgYXR0cnMsIHVuYXJ5LCBtYXRjaC5zdGFydCwgbWF0Y2guZW5kKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUVuZFRhZyAodGFnTmFtZSwgc3RhcnQsIGVuZCkge1xuICAgIHZhciBwb3MsIGxvd2VyQ2FzZWRUYWdOYW1lO1xuICAgIGlmIChzdGFydCA9PSBudWxsKSB7IHN0YXJ0ID0gaW5kZXg7IH1cbiAgICBpZiAoZW5kID09IG51bGwpIHsgZW5kID0gaW5kZXg7IH1cblxuICAgIC8vIEZpbmQgdGhlIGNsb3Nlc3Qgb3BlbmVkIHRhZyBvZiB0aGUgc2FtZSB0eXBlXG4gICAgaWYgKHRhZ05hbWUpIHtcbiAgICAgIGxvd2VyQ2FzZWRUYWdOYW1lID0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgZm9yIChwb3MgPSBzdGFjay5sZW5ndGggLSAxOyBwb3MgPj0gMDsgcG9zLS0pIHtcbiAgICAgICAgaWYgKHN0YWNrW3Bvc10ubG93ZXJDYXNlZFRhZyA9PT0gbG93ZXJDYXNlZFRhZ05hbWUpIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIG5vIHRhZyBuYW1lIGlzIHByb3ZpZGVkLCBjbGVhbiBzaG9wXG4gICAgICBwb3MgPSAwO1xuICAgIH1cblxuICAgIGlmIChwb3MgPj0gMCkge1xuICAgICAgLy8gQ2xvc2UgYWxsIHRoZSBvcGVuIGVsZW1lbnRzLCB1cCB0aGUgc3RhY2tcbiAgICAgIGZvciAodmFyIGkgPSBzdGFjay5sZW5ndGggLSAxOyBpID49IHBvczsgaS0tKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICAgICAgKGkgPiBwb3MgfHwgIXRhZ05hbWUpICYmXG4gICAgICAgICAgb3B0aW9ucy53YXJuXG4gICAgICAgICkge1xuICAgICAgICAgIG9wdGlvbnMud2FybihcbiAgICAgICAgICAgIChcInRhZyA8XCIgKyAoc3RhY2tbaV0udGFnKSArIFwiPiBoYXMgbm8gbWF0Y2hpbmcgZW5kIHRhZy5cIiksXG4gICAgICAgICAgICB7IHN0YXJ0OiBzdGFja1tpXS5zdGFydCwgZW5kOiBzdGFja1tpXS5lbmQgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuZW5kKSB7XG4gICAgICAgICAgb3B0aW9ucy5lbmQoc3RhY2tbaV0udGFnLCBzdGFydCwgZW5kKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBSZW1vdmUgdGhlIG9wZW4gZWxlbWVudHMgZnJvbSB0aGUgc3RhY2tcbiAgICAgIHN0YWNrLmxlbmd0aCA9IHBvcztcbiAgICAgIGxhc3RUYWcgPSBwb3MgJiYgc3RhY2tbcG9zIC0gMV0udGFnO1xuICAgIH0gZWxzZSBpZiAobG93ZXJDYXNlZFRhZ05hbWUgPT09ICdicicpIHtcbiAgICAgIGlmIChvcHRpb25zLnN0YXJ0KSB7XG4gICAgICAgIG9wdGlvbnMuc3RhcnQodGFnTmFtZSwgW10sIHRydWUsIHN0YXJ0LCBlbmQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobG93ZXJDYXNlZFRhZ05hbWUgPT09ICdwJykge1xuICAgICAgaWYgKG9wdGlvbnMuc3RhcnQpIHtcbiAgICAgICAgb3B0aW9ucy5zdGFydCh0YWdOYW1lLCBbXSwgZmFsc2UsIHN0YXJ0LCBlbmQpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMuZW5kKSB7XG4gICAgICAgIG9wdGlvbnMuZW5kKHRhZ05hbWUsIHN0YXJ0LCBlbmQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIG9uUkUgPSAvXkB8XnYtb246LztcbnZhciBkaXJSRSA9IC9edi18XkB8XjovO1xudmFyIGZvckFsaWFzUkUgPSAvKFtcXHNcXFNdKj8pXFxzKyg/OmlufG9mKVxccysoW1xcc1xcU10qKS87XG52YXIgZm9ySXRlcmF0b3JSRSA9IC8sKFteLFxcfVxcXV0qKSg/OiwoW14sXFx9XFxdXSopKT8kLztcbnZhciBzdHJpcFBhcmVuc1JFID0gL15cXCh8XFwpJC9nO1xudmFyIGR5bmFtaWNBcmdSRSA9IC9eXFxbLipcXF0kLztcblxudmFyIGFyZ1JFID0gLzooLiopJC87XG52YXIgYmluZFJFID0gL146fF5cXC58XnYtYmluZDovO1xudmFyIG1vZGlmaWVyUkUgPSAvXFwuW14uXFxdXSsoPz1bXlxcXV0qJCkvZztcblxudmFyIHNsb3RSRSA9IC9edi1zbG90KDp8JCl8XiMvO1xuXG52YXIgbGluZUJyZWFrUkUgPSAvW1xcclxcbl0vO1xudmFyIHdoaXRlc3BhY2VSRSQxID0gL1xccysvZztcblxudmFyIGludmFsaWRBdHRyaWJ1dGVSRSA9IC9bXFxzXCInPD5cXC89XS87XG5cbnZhciBkZWNvZGVIVE1MQ2FjaGVkID0gY2FjaGVkKGhlLmRlY29kZSk7XG5cbnZhciBlbXB0eVNsb3RTY29wZVRva2VuID0gXCJfZW1wdHlfXCI7XG5cbi8vIGNvbmZpZ3VyYWJsZSBzdGF0ZVxudmFyIHdhcm4kMjtcbnZhciBkZWxpbWl0ZXJzO1xudmFyIHRyYW5zZm9ybXM7XG52YXIgcHJlVHJhbnNmb3JtcztcbnZhciBwb3N0VHJhbnNmb3JtcztcbnZhciBwbGF0Zm9ybUlzUHJlVGFnO1xudmFyIHBsYXRmb3JtTXVzdFVzZVByb3A7XG52YXIgcGxhdGZvcm1HZXRUYWdOYW1lc3BhY2U7XG52YXIgbWF5YmVDb21wb25lbnQ7XG5cbmZ1bmN0aW9uIGNyZWF0ZUFTVEVsZW1lbnQgKFxuICB0YWcsXG4gIGF0dHJzLFxuICBwYXJlbnRcbikge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IDEsXG4gICAgdGFnOiB0YWcsXG4gICAgYXR0cnNMaXN0OiBhdHRycyxcbiAgICBhdHRyc01hcDogbWFrZUF0dHJzTWFwKGF0dHJzKSxcbiAgICByYXdBdHRyc01hcDoge30sXG4gICAgcGFyZW50OiBwYXJlbnQsXG4gICAgY2hpbGRyZW46IFtdXG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0IEhUTUwgc3RyaW5nIHRvIEFTVC5cbiAqL1xuZnVuY3Rpb24gcGFyc2UgKFxuICB0ZW1wbGF0ZSxcbiAgb3B0aW9uc1xuKSB7XG4gIHdhcm4kMiA9IG9wdGlvbnMud2FybiB8fCBiYXNlV2FybjtcblxuICBwbGF0Zm9ybUlzUHJlVGFnID0gb3B0aW9ucy5pc1ByZVRhZyB8fCBubztcbiAgcGxhdGZvcm1NdXN0VXNlUHJvcCA9IG9wdGlvbnMubXVzdFVzZVByb3AgfHwgbm87XG4gIHBsYXRmb3JtR2V0VGFnTmFtZXNwYWNlID0gb3B0aW9ucy5nZXRUYWdOYW1lc3BhY2UgfHwgbm87XG4gIHZhciBpc1Jlc2VydmVkVGFnID0gb3B0aW9ucy5pc1Jlc2VydmVkVGFnIHx8IG5vO1xuICBtYXliZUNvbXBvbmVudCA9IGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gISFlbC5jb21wb25lbnQgfHwgIWlzUmVzZXJ2ZWRUYWcoZWwudGFnKTsgfTtcblxuICB0cmFuc2Zvcm1zID0gcGx1Y2tNb2R1bGVGdW5jdGlvbihvcHRpb25zLm1vZHVsZXMsICd0cmFuc2Zvcm1Ob2RlJyk7XG4gIHByZVRyYW5zZm9ybXMgPSBwbHVja01vZHVsZUZ1bmN0aW9uKG9wdGlvbnMubW9kdWxlcywgJ3ByZVRyYW5zZm9ybU5vZGUnKTtcbiAgcG9zdFRyYW5zZm9ybXMgPSBwbHVja01vZHVsZUZ1bmN0aW9uKG9wdGlvbnMubW9kdWxlcywgJ3Bvc3RUcmFuc2Zvcm1Ob2RlJyk7XG5cbiAgZGVsaW1pdGVycyA9IG9wdGlvbnMuZGVsaW1pdGVycztcblxuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIHByZXNlcnZlV2hpdGVzcGFjZSA9IG9wdGlvbnMucHJlc2VydmVXaGl0ZXNwYWNlICE9PSBmYWxzZTtcbiAgdmFyIHdoaXRlc3BhY2VPcHRpb24gPSBvcHRpb25zLndoaXRlc3BhY2U7XG4gIHZhciByb290O1xuICB2YXIgY3VycmVudFBhcmVudDtcbiAgdmFyIGluVlByZSA9IGZhbHNlO1xuICB2YXIgaW5QcmUgPSBmYWxzZTtcbiAgdmFyIHdhcm5lZCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIHdhcm5PbmNlIChtc2csIHJhbmdlKSB7XG4gICAgaWYgKCF3YXJuZWQpIHtcbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgICB3YXJuJDIobXNnLCByYW5nZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2xvc2VFbGVtZW50IChlbGVtZW50KSB7XG4gICAgdHJpbUVuZGluZ1doaXRlc3BhY2UoZWxlbWVudCk7XG4gICAgaWYgKCFpblZQcmUgJiYgIWVsZW1lbnQucHJvY2Vzc2VkKSB7XG4gICAgICBlbGVtZW50ID0gcHJvY2Vzc0VsZW1lbnQoZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIHRyZWUgbWFuYWdlbWVudFxuICAgIGlmICghc3RhY2subGVuZ3RoICYmIGVsZW1lbnQgIT09IHJvb3QpIHtcbiAgICAgIC8vIGFsbG93IHJvb3QgZWxlbWVudHMgd2l0aCB2LWlmLCB2LWVsc2UtaWYgYW5kIHYtZWxzZVxuICAgICAgaWYgKHJvb3QuaWYgJiYgKGVsZW1lbnQuZWxzZWlmIHx8IGVsZW1lbnQuZWxzZSkpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBjaGVja1Jvb3RDb25zdHJhaW50cyhlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBhZGRJZkNvbmRpdGlvbihyb290LCB7XG4gICAgICAgICAgZXhwOiBlbGVtZW50LmVsc2VpZixcbiAgICAgICAgICBibG9jazogZWxlbWVudFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICBcIkNvbXBvbmVudCB0ZW1wbGF0ZSBzaG91bGQgY29udGFpbiBleGFjdGx5IG9uZSByb290IGVsZW1lbnQuIFwiICtcbiAgICAgICAgICBcIklmIHlvdSBhcmUgdXNpbmcgdi1pZiBvbiBtdWx0aXBsZSBlbGVtZW50cywgXCIgK1xuICAgICAgICAgIFwidXNlIHYtZWxzZS1pZiB0byBjaGFpbiB0aGVtIGluc3RlYWQuXCIsXG4gICAgICAgICAgeyBzdGFydDogZWxlbWVudC5zdGFydCB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjdXJyZW50UGFyZW50ICYmICFlbGVtZW50LmZvcmJpZGRlbikge1xuICAgICAgaWYgKGVsZW1lbnQuZWxzZWlmIHx8IGVsZW1lbnQuZWxzZSkge1xuICAgICAgICBwcm9jZXNzSWZDb25kaXRpb25zKGVsZW1lbnQsIGN1cnJlbnRQYXJlbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGVsZW1lbnQuc2xvdFNjb3BlKSB7XG4gICAgICAgICAgLy8gc2NvcGVkIHNsb3RcbiAgICAgICAgICAvLyBrZWVwIGl0IGluIHRoZSBjaGlsZHJlbiBsaXN0IHNvIHRoYXQgdi1lbHNlKC1pZikgY29uZGl0aW9ucyBjYW5cbiAgICAgICAgICAvLyBmaW5kIGl0IGFzIHRoZSBwcmV2IG5vZGUuXG4gICAgICAgICAgdmFyIG5hbWUgPSBlbGVtZW50LnNsb3RUYXJnZXQgfHwgJ1wiZGVmYXVsdFwiJ1xuICAgICAgICAgIDsoY3VycmVudFBhcmVudC5zY29wZWRTbG90cyB8fCAoY3VycmVudFBhcmVudC5zY29wZWRTbG90cyA9IHt9KSlbbmFtZV0gPSBlbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRQYXJlbnQuY2hpbGRyZW4ucHVzaChlbGVtZW50KTtcbiAgICAgICAgZWxlbWVudC5wYXJlbnQgPSBjdXJyZW50UGFyZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGZpbmFsIGNoaWxkcmVuIGNsZWFudXBcbiAgICAvLyBmaWx0ZXIgb3V0IHNjb3BlZCBzbG90c1xuICAgIGVsZW1lbnQuY2hpbGRyZW4gPSBlbGVtZW50LmNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbiAoYykgeyByZXR1cm4gIShjKS5zbG90U2NvcGU7IH0pO1xuICAgIC8vIHJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIG5vZGUgYWdhaW5cbiAgICB0cmltRW5kaW5nV2hpdGVzcGFjZShlbGVtZW50KTtcblxuICAgIC8vIGNoZWNrIHByZSBzdGF0ZVxuICAgIGlmIChlbGVtZW50LnByZSkge1xuICAgICAgaW5WUHJlID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChwbGF0Zm9ybUlzUHJlVGFnKGVsZW1lbnQudGFnKSkge1xuICAgICAgaW5QcmUgPSBmYWxzZTtcbiAgICB9XG4gICAgLy8gYXBwbHkgcG9zdC10cmFuc2Zvcm1zXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3N0VHJhbnNmb3Jtcy5sZW5ndGg7IGkrKykge1xuICAgICAgcG9zdFRyYW5zZm9ybXNbaV0oZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdHJpbUVuZGluZ1doaXRlc3BhY2UgKGVsKSB7XG4gICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2Ugbm9kZVxuICAgIGlmICghaW5QcmUpIHtcbiAgICAgIHZhciBsYXN0Tm9kZTtcbiAgICAgIHdoaWxlIChcbiAgICAgICAgKGxhc3ROb2RlID0gZWwuY2hpbGRyZW5bZWwuY2hpbGRyZW4ubGVuZ3RoIC0gMV0pICYmXG4gICAgICAgIGxhc3ROb2RlLnR5cGUgPT09IDMgJiZcbiAgICAgICAgbGFzdE5vZGUudGV4dCA9PT0gJyAnXG4gICAgICApIHtcbiAgICAgICAgZWwuY2hpbGRyZW4ucG9wKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2hlY2tSb290Q29uc3RyYWludHMgKGVsKSB7XG4gICAgaWYgKGVsLnRhZyA9PT0gJ3Nsb3QnIHx8IGVsLnRhZyA9PT0gJ3RlbXBsYXRlJykge1xuICAgICAgd2Fybk9uY2UoXG4gICAgICAgIFwiQ2Fubm90IHVzZSA8XCIgKyAoZWwudGFnKSArIFwiPiBhcyBjb21wb25lbnQgcm9vdCBlbGVtZW50IGJlY2F1c2UgaXQgbWF5IFwiICtcbiAgICAgICAgJ2NvbnRhaW4gbXVsdGlwbGUgbm9kZXMuJyxcbiAgICAgICAgeyBzdGFydDogZWwuc3RhcnQgfVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGVsLmF0dHJzTWFwLmhhc093blByb3BlcnR5KCd2LWZvcicpKSB7XG4gICAgICB3YXJuT25jZShcbiAgICAgICAgJ0Nhbm5vdCB1c2Ugdi1mb3Igb24gc3RhdGVmdWwgY29tcG9uZW50IHJvb3QgZWxlbWVudCBiZWNhdXNlICcgK1xuICAgICAgICAnaXQgcmVuZGVycyBtdWx0aXBsZSBlbGVtZW50cy4nLFxuICAgICAgICBlbC5yYXdBdHRyc01hcFsndi1mb3InXVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwYXJzZUhUTUwodGVtcGxhdGUsIHtcbiAgICB3YXJuOiB3YXJuJDIsXG4gICAgZXhwZWN0SFRNTDogb3B0aW9ucy5leHBlY3RIVE1MLFxuICAgIGlzVW5hcnlUYWc6IG9wdGlvbnMuaXNVbmFyeVRhZyxcbiAgICBjYW5CZUxlZnRPcGVuVGFnOiBvcHRpb25zLmNhbkJlTGVmdE9wZW5UYWcsXG4gICAgc2hvdWxkRGVjb2RlTmV3bGluZXM6IG9wdGlvbnMuc2hvdWxkRGVjb2RlTmV3bGluZXMsXG4gICAgc2hvdWxkRGVjb2RlTmV3bGluZXNGb3JIcmVmOiBvcHRpb25zLnNob3VsZERlY29kZU5ld2xpbmVzRm9ySHJlZixcbiAgICBzaG91bGRLZWVwQ29tbWVudDogb3B0aW9ucy5jb21tZW50cyxcbiAgICBvdXRwdXRTb3VyY2VSYW5nZTogb3B0aW9ucy5vdXRwdXRTb3VyY2VSYW5nZSxcbiAgICBzdGFydDogZnVuY3Rpb24gc3RhcnQgKHRhZywgYXR0cnMsIHVuYXJ5LCBzdGFydCQxLCBlbmQpIHtcbiAgICAgIC8vIGNoZWNrIG5hbWVzcGFjZS5cbiAgICAgIC8vIGluaGVyaXQgcGFyZW50IG5zIGlmIHRoZXJlIGlzIG9uZVxuICAgICAgdmFyIG5zID0gKGN1cnJlbnRQYXJlbnQgJiYgY3VycmVudFBhcmVudC5ucykgfHwgcGxhdGZvcm1HZXRUYWdOYW1lc3BhY2UodGFnKTtcblxuICAgICAgLy8gaGFuZGxlIElFIHN2ZyBidWdcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGlzSUUgJiYgbnMgPT09ICdzdmcnKSB7XG4gICAgICAgIGF0dHJzID0gZ3VhcmRJRVNWR0J1ZyhhdHRycyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBlbGVtZW50ID0gY3JlYXRlQVNURWxlbWVudCh0YWcsIGF0dHJzLCBjdXJyZW50UGFyZW50KTtcbiAgICAgIGlmIChucykge1xuICAgICAgICBlbGVtZW50Lm5zID0gbnM7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmIChvcHRpb25zLm91dHB1dFNvdXJjZVJhbmdlKSB7XG4gICAgICAgICAgZWxlbWVudC5zdGFydCA9IHN0YXJ0JDE7XG4gICAgICAgICAgZWxlbWVudC5lbmQgPSBlbmQ7XG4gICAgICAgICAgZWxlbWVudC5yYXdBdHRyc01hcCA9IGVsZW1lbnQuYXR0cnNMaXN0LnJlZHVjZShmdW5jdGlvbiAoY3VtdWxhdGVkLCBhdHRyKSB7XG4gICAgICAgICAgICBjdW11bGF0ZWRbYXR0ci5uYW1lXSA9IGF0dHI7XG4gICAgICAgICAgICByZXR1cm4gY3VtdWxhdGVkXG4gICAgICAgICAgfSwge30pO1xuICAgICAgICB9XG4gICAgICAgIGF0dHJzLmZvckVhY2goZnVuY3Rpb24gKGF0dHIpIHtcbiAgICAgICAgICBpZiAoaW52YWxpZEF0dHJpYnV0ZVJFLnRlc3QoYXR0ci5uYW1lKSkge1xuICAgICAgICAgICAgd2FybiQyKFxuICAgICAgICAgICAgICBcIkludmFsaWQgZHluYW1pYyBhcmd1bWVudCBleHByZXNzaW9uOiBhdHRyaWJ1dGUgbmFtZXMgY2Fubm90IGNvbnRhaW4gXCIgK1xuICAgICAgICAgICAgICBcInNwYWNlcywgcXVvdGVzLCA8LCA+LCAvIG9yID0uXCIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdGFydDogYXR0ci5zdGFydCArIGF0dHIubmFtZS5pbmRleE9mKFwiW1wiKSxcbiAgICAgICAgICAgICAgICBlbmQ6IGF0dHIuc3RhcnQgKyBhdHRyLm5hbWUubGVuZ3RoXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzRm9yYmlkZGVuVGFnKGVsZW1lbnQpICYmICFpc1NlcnZlclJlbmRlcmluZygpKSB7XG4gICAgICAgIGVsZW1lbnQuZm9yYmlkZGVuID0gdHJ1ZTtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuJDIoXG4gICAgICAgICAgJ1RlbXBsYXRlcyBzaG91bGQgb25seSBiZSByZXNwb25zaWJsZSBmb3IgbWFwcGluZyB0aGUgc3RhdGUgdG8gdGhlICcgK1xuICAgICAgICAgICdVSS4gQXZvaWQgcGxhY2luZyB0YWdzIHdpdGggc2lkZS1lZmZlY3RzIGluIHlvdXIgdGVtcGxhdGVzLCBzdWNoIGFzICcgK1xuICAgICAgICAgIFwiPFwiICsgdGFnICsgXCI+XCIgKyAnLCBhcyB0aGV5IHdpbGwgbm90IGJlIHBhcnNlZC4nLFxuICAgICAgICAgIHsgc3RhcnQ6IGVsZW1lbnQuc3RhcnQgfVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBhcHBseSBwcmUtdHJhbnNmb3Jtc1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmVUcmFuc2Zvcm1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGVsZW1lbnQgPSBwcmVUcmFuc2Zvcm1zW2ldKGVsZW1lbnQsIG9wdGlvbnMpIHx8IGVsZW1lbnQ7XG4gICAgICB9XG5cbiAgICAgIGlmICghaW5WUHJlKSB7XG4gICAgICAgIHByb2Nlc3NQcmUoZWxlbWVudCk7XG4gICAgICAgIGlmIChlbGVtZW50LnByZSkge1xuICAgICAgICAgIGluVlByZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChwbGF0Zm9ybUlzUHJlVGFnKGVsZW1lbnQudGFnKSkge1xuICAgICAgICBpblByZSA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoaW5WUHJlKSB7XG4gICAgICAgIHByb2Nlc3NSYXdBdHRycyhlbGVtZW50KTtcbiAgICAgIH0gZWxzZSBpZiAoIWVsZW1lbnQucHJvY2Vzc2VkKSB7XG4gICAgICAgIC8vIHN0cnVjdHVyYWwgZGlyZWN0aXZlc1xuICAgICAgICBwcm9jZXNzRm9yKGVsZW1lbnQpO1xuICAgICAgICBwcm9jZXNzSWYoZWxlbWVudCk7XG4gICAgICAgIHByb2Nlc3NPbmNlKGVsZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXJvb3QpIHtcbiAgICAgICAgcm9vdCA9IGVsZW1lbnQ7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgY2hlY2tSb290Q29uc3RyYWludHMocm9vdCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCF1bmFyeSkge1xuICAgICAgICBjdXJyZW50UGFyZW50ID0gZWxlbWVudDtcbiAgICAgICAgc3RhY2sucHVzaChlbGVtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsb3NlRWxlbWVudChlbGVtZW50KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgZW5kOiBmdW5jdGlvbiBlbmQgKHRhZywgc3RhcnQsIGVuZCQxKSB7XG4gICAgICB2YXIgZWxlbWVudCA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgLy8gcG9wIHN0YWNrXG4gICAgICBzdGFjay5sZW5ndGggLT0gMTtcbiAgICAgIGN1cnJlbnRQYXJlbnQgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIG9wdGlvbnMub3V0cHV0U291cmNlUmFuZ2UpIHtcbiAgICAgICAgZWxlbWVudC5lbmQgPSBlbmQkMTtcbiAgICAgIH1cbiAgICAgIGNsb3NlRWxlbWVudChlbGVtZW50KTtcbiAgICB9LFxuXG4gICAgY2hhcnM6IGZ1bmN0aW9uIGNoYXJzICh0ZXh0LCBzdGFydCwgZW5kKSB7XG4gICAgICBpZiAoIWN1cnJlbnRQYXJlbnQpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBpZiAodGV4dCA9PT0gdGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgICAnQ29tcG9uZW50IHRlbXBsYXRlIHJlcXVpcmVzIGEgcm9vdCBlbGVtZW50LCByYXRoZXIgdGhhbiBqdXN0IHRleHQuJyxcbiAgICAgICAgICAgICAgeyBzdGFydDogc3RhcnQgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCh0ZXh0ID0gdGV4dC50cmltKCkpKSB7XG4gICAgICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAgICAgKFwidGV4dCBcXFwiXCIgKyB0ZXh0ICsgXCJcXFwiIG91dHNpZGUgcm9vdCBlbGVtZW50IHdpbGwgYmUgaWdub3JlZC5cIiksXG4gICAgICAgICAgICAgIHsgc3RhcnQ6IHN0YXJ0IH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgLy8gSUUgdGV4dGFyZWEgcGxhY2Vob2xkZXIgYnVnXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChpc0lFICYmXG4gICAgICAgIGN1cnJlbnRQYXJlbnQudGFnID09PSAndGV4dGFyZWEnICYmXG4gICAgICAgIGN1cnJlbnRQYXJlbnQuYXR0cnNNYXAucGxhY2Vob2xkZXIgPT09IHRleHRcbiAgICAgICkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHZhciBjaGlsZHJlbiA9IGN1cnJlbnRQYXJlbnQuY2hpbGRyZW47XG4gICAgICBpZiAoaW5QcmUgfHwgdGV4dC50cmltKCkpIHtcbiAgICAgICAgdGV4dCA9IGlzVGV4dFRhZyhjdXJyZW50UGFyZW50KSA/IHRleHQgOiBkZWNvZGVIVE1MQ2FjaGVkKHRleHQpO1xuICAgICAgfSBlbHNlIGlmICghY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIC8vIHJlbW92ZSB0aGUgd2hpdGVzcGFjZS1vbmx5IG5vZGUgcmlnaHQgYWZ0ZXIgYW4gb3BlbmluZyB0YWdcbiAgICAgICAgdGV4dCA9ICcnO1xuICAgICAgfSBlbHNlIGlmICh3aGl0ZXNwYWNlT3B0aW9uKSB7XG4gICAgICAgIGlmICh3aGl0ZXNwYWNlT3B0aW9uID09PSAnY29uZGVuc2UnKSB7XG4gICAgICAgICAgLy8gaW4gY29uZGVuc2UgbW9kZSwgcmVtb3ZlIHRoZSB3aGl0ZXNwYWNlIG5vZGUgaWYgaXQgY29udGFpbnNcbiAgICAgICAgICAvLyBsaW5lIGJyZWFrLCBvdGhlcndpc2UgY29uZGVuc2UgdG8gYSBzaW5nbGUgc3BhY2VcbiAgICAgICAgICB0ZXh0ID0gbGluZUJyZWFrUkUudGVzdCh0ZXh0KSA/ICcnIDogJyAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRleHQgPSAnICc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRleHQgPSBwcmVzZXJ2ZVdoaXRlc3BhY2UgPyAnICcgOiAnJztcbiAgICAgIH1cbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGlmICghaW5QcmUgJiYgd2hpdGVzcGFjZU9wdGlvbiA9PT0gJ2NvbmRlbnNlJykge1xuICAgICAgICAgIC8vIGNvbmRlbnNlIGNvbnNlY3V0aXZlIHdoaXRlc3BhY2VzIGludG8gc2luZ2xlIHNwYWNlXG4gICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSh3aGl0ZXNwYWNlUkUkMSwgJyAnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcmVzO1xuICAgICAgICB2YXIgY2hpbGQ7XG4gICAgICAgIGlmICghaW5WUHJlICYmIHRleHQgIT09ICcgJyAmJiAocmVzID0gcGFyc2VUZXh0KHRleHQsIGRlbGltaXRlcnMpKSkge1xuICAgICAgICAgIGNoaWxkID0ge1xuICAgICAgICAgICAgdHlwZTogMixcbiAgICAgICAgICAgIGV4cHJlc3Npb246IHJlcy5leHByZXNzaW9uLFxuICAgICAgICAgICAgdG9rZW5zOiByZXMudG9rZW5zLFxuICAgICAgICAgICAgdGV4dDogdGV4dFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAodGV4dCAhPT0gJyAnIHx8ICFjaGlsZHJlbi5sZW5ndGggfHwgY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV0udGV4dCAhPT0gJyAnKSB7XG4gICAgICAgICAgY2hpbGQgPSB7XG4gICAgICAgICAgICB0eXBlOiAzLFxuICAgICAgICAgICAgdGV4dDogdGV4dFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgb3B0aW9ucy5vdXRwdXRTb3VyY2VSYW5nZSkge1xuICAgICAgICAgICAgY2hpbGQuc3RhcnQgPSBzdGFydDtcbiAgICAgICAgICAgIGNoaWxkLmVuZCA9IGVuZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGNvbW1lbnQ6IGZ1bmN0aW9uIGNvbW1lbnQgKHRleHQsIHN0YXJ0LCBlbmQpIHtcbiAgICAgIC8vIGFkZGluZyBhbnl0aW5nIGFzIGEgc2libGluZyB0byB0aGUgcm9vdCBub2RlIGlzIGZvcmJpZGRlblxuICAgICAgLy8gY29tbWVudHMgc2hvdWxkIHN0aWxsIGJlIGFsbG93ZWQsIGJ1dCBpZ25vcmVkXG4gICAgICBpZiAoY3VycmVudFBhcmVudCkge1xuICAgICAgICB2YXIgY2hpbGQgPSB7XG4gICAgICAgICAgdHlwZTogMyxcbiAgICAgICAgICB0ZXh0OiB0ZXh0LFxuICAgICAgICAgIGlzQ29tbWVudDogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBvcHRpb25zLm91dHB1dFNvdXJjZVJhbmdlKSB7XG4gICAgICAgICAgY2hpbGQuc3RhcnQgPSBzdGFydDtcbiAgICAgICAgICBjaGlsZC5lbmQgPSBlbmQ7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudFBhcmVudC5jaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcm9vdFxufVxuXG5mdW5jdGlvbiBwcm9jZXNzUHJlIChlbCkge1xuICBpZiAoZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtcHJlJykgIT0gbnVsbCkge1xuICAgIGVsLnByZSA9IHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc1Jhd0F0dHJzIChlbCkge1xuICB2YXIgbGlzdCA9IGVsLmF0dHJzTGlzdDtcbiAgdmFyIGxlbiA9IGxpc3QubGVuZ3RoO1xuICBpZiAobGVuKSB7XG4gICAgdmFyIGF0dHJzID0gZWwuYXR0cnMgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBhdHRyc1tpXSA9IHtcbiAgICAgICAgbmFtZTogbGlzdFtpXS5uYW1lLFxuICAgICAgICB2YWx1ZTogSlNPTi5zdHJpbmdpZnkobGlzdFtpXS52YWx1ZSlcbiAgICAgIH07XG4gICAgICBpZiAobGlzdFtpXS5zdGFydCAhPSBudWxsKSB7XG4gICAgICAgIGF0dHJzW2ldLnN0YXJ0ID0gbGlzdFtpXS5zdGFydDtcbiAgICAgICAgYXR0cnNbaV0uZW5kID0gbGlzdFtpXS5lbmQ7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKCFlbC5wcmUpIHtcbiAgICAvLyBub24gcm9vdCBub2RlIGluIHByZSBibG9ja3Mgd2l0aCBubyBhdHRyaWJ1dGVzXG4gICAgZWwucGxhaW4gPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NFbGVtZW50IChcbiAgZWxlbWVudCxcbiAgb3B0aW9uc1xuKSB7XG4gIHByb2Nlc3NLZXkoZWxlbWVudCk7XG5cbiAgLy8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyBhIHBsYWluIGVsZW1lbnQgYWZ0ZXJcbiAgLy8gcmVtb3Zpbmcgc3RydWN0dXJhbCBhdHRyaWJ1dGVzXG4gIGVsZW1lbnQucGxhaW4gPSAoXG4gICAgIWVsZW1lbnQua2V5ICYmXG4gICAgIWVsZW1lbnQuc2NvcGVkU2xvdHMgJiZcbiAgICAhZWxlbWVudC5hdHRyc0xpc3QubGVuZ3RoXG4gICk7XG5cbiAgcHJvY2Vzc1JlZihlbGVtZW50KTtcbiAgcHJvY2Vzc1Nsb3RDb250ZW50KGVsZW1lbnQpO1xuICBwcm9jZXNzU2xvdE91dGxldChlbGVtZW50KTtcbiAgcHJvY2Vzc0NvbXBvbmVudChlbGVtZW50KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmFuc2Zvcm1zLmxlbmd0aDsgaSsrKSB7XG4gICAgZWxlbWVudCA9IHRyYW5zZm9ybXNbaV0oZWxlbWVudCwgb3B0aW9ucykgfHwgZWxlbWVudDtcbiAgfVxuICBwcm9jZXNzQXR0cnMoZWxlbWVudCk7XG4gIHJldHVybiBlbGVtZW50XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NLZXkgKGVsKSB7XG4gIHZhciBleHAgPSBnZXRCaW5kaW5nQXR0cihlbCwgJ2tleScpO1xuICBpZiAoZXhwKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChlbC50YWcgPT09ICd0ZW1wbGF0ZScpIHtcbiAgICAgICAgd2FybiQyKFxuICAgICAgICAgIFwiPHRlbXBsYXRlPiBjYW5ub3QgYmUga2V5ZWQuIFBsYWNlIHRoZSBrZXkgb24gcmVhbCBlbGVtZW50cyBpbnN0ZWFkLlwiLFxuICAgICAgICAgIGdldFJhd0JpbmRpbmdBdHRyKGVsLCAna2V5JylcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChlbC5mb3IpIHtcbiAgICAgICAgdmFyIGl0ZXJhdG9yID0gZWwuaXRlcmF0b3IyIHx8IGVsLml0ZXJhdG9yMTtcbiAgICAgICAgdmFyIHBhcmVudCA9IGVsLnBhcmVudDtcbiAgICAgICAgaWYgKGl0ZXJhdG9yICYmIGl0ZXJhdG9yID09PSBleHAgJiYgcGFyZW50ICYmIHBhcmVudC50YWcgPT09ICd0cmFuc2l0aW9uLWdyb3VwJykge1xuICAgICAgICAgIHdhcm4kMihcbiAgICAgICAgICAgIFwiRG8gbm90IHVzZSB2LWZvciBpbmRleCBhcyBrZXkgb24gPHRyYW5zaXRpb24tZ3JvdXA+IGNoaWxkcmVuLCBcIiArXG4gICAgICAgICAgICBcInRoaXMgaXMgdGhlIHNhbWUgYXMgbm90IHVzaW5nIGtleXMuXCIsXG4gICAgICAgICAgICBnZXRSYXdCaW5kaW5nQXR0cihlbCwgJ2tleScpLFxuICAgICAgICAgICAgdHJ1ZSAvKiB0aXAgKi9cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGVsLmtleSA9IGV4cDtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzUmVmIChlbCkge1xuICB2YXIgcmVmID0gZ2V0QmluZGluZ0F0dHIoZWwsICdyZWYnKTtcbiAgaWYgKHJlZikge1xuICAgIGVsLnJlZiA9IHJlZjtcbiAgICBlbC5yZWZJbkZvciA9IGNoZWNrSW5Gb3IoZWwpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NGb3IgKGVsKSB7XG4gIHZhciBleHA7XG4gIGlmICgoZXhwID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtZm9yJykpKSB7XG4gICAgdmFyIHJlcyA9IHBhcnNlRm9yKGV4cCk7XG4gICAgaWYgKHJlcykge1xuICAgICAgZXh0ZW5kKGVsLCByZXMpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FybiQyKFxuICAgICAgICAoXCJJbnZhbGlkIHYtZm9yIGV4cHJlc3Npb246IFwiICsgZXhwKSxcbiAgICAgICAgZWwucmF3QXR0cnNNYXBbJ3YtZm9yJ11cbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cblxuXG5mdW5jdGlvbiBwYXJzZUZvciAoZXhwKSB7XG4gIHZhciBpbk1hdGNoID0gZXhwLm1hdGNoKGZvckFsaWFzUkUpO1xuICBpZiAoIWluTWF0Y2gpIHsgcmV0dXJuIH1cbiAgdmFyIHJlcyA9IHt9O1xuICByZXMuZm9yID0gaW5NYXRjaFsyXS50cmltKCk7XG4gIHZhciBhbGlhcyA9IGluTWF0Y2hbMV0udHJpbSgpLnJlcGxhY2Uoc3RyaXBQYXJlbnNSRSwgJycpO1xuICB2YXIgaXRlcmF0b3JNYXRjaCA9IGFsaWFzLm1hdGNoKGZvckl0ZXJhdG9yUkUpO1xuICBpZiAoaXRlcmF0b3JNYXRjaCkge1xuICAgIHJlcy5hbGlhcyA9IGFsaWFzLnJlcGxhY2UoZm9ySXRlcmF0b3JSRSwgJycpLnRyaW0oKTtcbiAgICByZXMuaXRlcmF0b3IxID0gaXRlcmF0b3JNYXRjaFsxXS50cmltKCk7XG4gICAgaWYgKGl0ZXJhdG9yTWF0Y2hbMl0pIHtcbiAgICAgIHJlcy5pdGVyYXRvcjIgPSBpdGVyYXRvck1hdGNoWzJdLnRyaW0oKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmVzLmFsaWFzID0gYWxpYXM7XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBwcm9jZXNzSWYgKGVsKSB7XG4gIHZhciBleHAgPSBnZXRBbmRSZW1vdmVBdHRyKGVsLCAndi1pZicpO1xuICBpZiAoZXhwKSB7XG4gICAgZWwuaWYgPSBleHA7XG4gICAgYWRkSWZDb25kaXRpb24oZWwsIHtcbiAgICAgIGV4cDogZXhwLFxuICAgICAgYmxvY2s6IGVsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWVsc2UnKSAhPSBudWxsKSB7XG4gICAgICBlbC5lbHNlID0gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGVsc2VpZiA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICd2LWVsc2UtaWYnKTtcbiAgICBpZiAoZWxzZWlmKSB7XG4gICAgICBlbC5lbHNlaWYgPSBlbHNlaWY7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NJZkNvbmRpdGlvbnMgKGVsLCBwYXJlbnQpIHtcbiAgdmFyIHByZXYgPSBmaW5kUHJldkVsZW1lbnQocGFyZW50LmNoaWxkcmVuKTtcbiAgaWYgKHByZXYgJiYgcHJldi5pZikge1xuICAgIGFkZElmQ29uZGl0aW9uKHByZXYsIHtcbiAgICAgIGV4cDogZWwuZWxzZWlmLFxuICAgICAgYmxvY2s6IGVsXG4gICAgfSk7XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4kMihcbiAgICAgIFwidi1cIiArIChlbC5lbHNlaWYgPyAoJ2Vsc2UtaWY9XCInICsgZWwuZWxzZWlmICsgJ1wiJykgOiAnZWxzZScpICsgXCIgXCIgK1xuICAgICAgXCJ1c2VkIG9uIGVsZW1lbnQgPFwiICsgKGVsLnRhZykgKyBcIj4gd2l0aG91dCBjb3JyZXNwb25kaW5nIHYtaWYuXCIsXG4gICAgICBlbC5yYXdBdHRyc01hcFtlbC5lbHNlaWYgPyAndi1lbHNlLWlmJyA6ICd2LWVsc2UnXVxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluZFByZXZFbGVtZW50IChjaGlsZHJlbikge1xuICB2YXIgaSA9IGNoaWxkcmVuLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIGlmIChjaGlsZHJlbltpXS50eXBlID09PSAxKSB7XG4gICAgICByZXR1cm4gY2hpbGRyZW5baV1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY2hpbGRyZW5baV0udGV4dCAhPT0gJyAnKSB7XG4gICAgICAgIHdhcm4kMihcbiAgICAgICAgICBcInRleHQgXFxcIlwiICsgKGNoaWxkcmVuW2ldLnRleHQudHJpbSgpKSArIFwiXFxcIiBiZXR3ZWVuIHYtaWYgYW5kIHYtZWxzZSgtaWYpIFwiICtcbiAgICAgICAgICBcIndpbGwgYmUgaWdub3JlZC5cIixcbiAgICAgICAgICBjaGlsZHJlbltpXVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY2hpbGRyZW4ucG9wKCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFkZElmQ29uZGl0aW9uIChlbCwgY29uZGl0aW9uKSB7XG4gIGlmICghZWwuaWZDb25kaXRpb25zKSB7XG4gICAgZWwuaWZDb25kaXRpb25zID0gW107XG4gIH1cbiAgZWwuaWZDb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc09uY2UgKGVsKSB7XG4gIHZhciBvbmNlJCQxID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3Ytb25jZScpO1xuICBpZiAob25jZSQkMSAhPSBudWxsKSB7XG4gICAgZWwub25jZSA9IHRydWU7XG4gIH1cbn1cblxuLy8gaGFuZGxlIGNvbnRlbnQgYmVpbmcgcGFzc2VkIHRvIGEgY29tcG9uZW50IGFzIHNsb3QsXG4vLyBlLmcuIDx0ZW1wbGF0ZSBzbG90PVwieHh4XCI+LCA8ZGl2IHNsb3Qtc2NvcGU9XCJ4eHhcIj5cbmZ1bmN0aW9uIHByb2Nlc3NTbG90Q29udGVudCAoZWwpIHtcbiAgdmFyIHNsb3RTY29wZTtcbiAgaWYgKGVsLnRhZyA9PT0gJ3RlbXBsYXRlJykge1xuICAgIHNsb3RTY29wZSA9IGdldEFuZFJlbW92ZUF0dHIoZWwsICdzY29wZScpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHNsb3RTY29wZSkge1xuICAgICAgd2FybiQyKFxuICAgICAgICBcInRoZSBcXFwic2NvcGVcXFwiIGF0dHJpYnV0ZSBmb3Igc2NvcGVkIHNsb3RzIGhhdmUgYmVlbiBkZXByZWNhdGVkIGFuZCBcIiArXG4gICAgICAgIFwicmVwbGFjZWQgYnkgXFxcInNsb3Qtc2NvcGVcXFwiIHNpbmNlIDIuNS4gVGhlIG5ldyBcXFwic2xvdC1zY29wZVxcXCIgYXR0cmlidXRlIFwiICtcbiAgICAgICAgXCJjYW4gYWxzbyBiZSB1c2VkIG9uIHBsYWluIGVsZW1lbnRzIGluIGFkZGl0aW9uIHRvIDx0ZW1wbGF0ZT4gdG8gXCIgK1xuICAgICAgICBcImRlbm90ZSBzY29wZWQgc2xvdHMuXCIsXG4gICAgICAgIGVsLnJhd0F0dHJzTWFwWydzY29wZSddLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgIH1cbiAgICBlbC5zbG90U2NvcGUgPSBzbG90U2NvcGUgfHwgZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3Nsb3Qtc2NvcGUnKTtcbiAgfSBlbHNlIGlmICgoc2xvdFNjb3BlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3Nsb3Qtc2NvcGUnKSkpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBlbC5hdHRyc01hcFsndi1mb3InXSkge1xuICAgICAgd2FybiQyKFxuICAgICAgICBcIkFtYmlndW91cyBjb21iaW5lZCB1c2FnZSBvZiBzbG90LXNjb3BlIGFuZCB2LWZvciBvbiA8XCIgKyAoZWwudGFnKSArIFwiPiBcIiArXG4gICAgICAgIFwiKHYtZm9yIHRha2VzIGhpZ2hlciBwcmlvcml0eSkuIFVzZSBhIHdyYXBwZXIgPHRlbXBsYXRlPiBmb3IgdGhlIFwiICtcbiAgICAgICAgXCJzY29wZWQgc2xvdCB0byBtYWtlIGl0IGNsZWFyZXIuXCIsXG4gICAgICAgIGVsLnJhd0F0dHJzTWFwWydzbG90LXNjb3BlJ10sXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgfVxuICAgIGVsLnNsb3RTY29wZSA9IHNsb3RTY29wZTtcbiAgfVxuXG4gIC8vIHNsb3Q9XCJ4eHhcIlxuICB2YXIgc2xvdFRhcmdldCA9IGdldEJpbmRpbmdBdHRyKGVsLCAnc2xvdCcpO1xuICBpZiAoc2xvdFRhcmdldCkge1xuICAgIGVsLnNsb3RUYXJnZXQgPSBzbG90VGFyZ2V0ID09PSAnXCJcIicgPyAnXCJkZWZhdWx0XCInIDogc2xvdFRhcmdldDtcbiAgICBlbC5zbG90VGFyZ2V0RHluYW1pYyA9ICEhKGVsLmF0dHJzTWFwWyc6c2xvdCddIHx8IGVsLmF0dHJzTWFwWyd2LWJpbmQ6c2xvdCddKTtcbiAgICAvLyBwcmVzZXJ2ZSBzbG90IGFzIGFuIGF0dHJpYnV0ZSBmb3IgbmF0aXZlIHNoYWRvdyBET00gY29tcGF0XG4gICAgLy8gb25seSBmb3Igbm9uLXNjb3BlZCBzbG90cy5cbiAgICBpZiAoZWwudGFnICE9PSAndGVtcGxhdGUnICYmICFlbC5zbG90U2NvcGUpIHtcbiAgICAgIGFkZEF0dHIoZWwsICdzbG90Jywgc2xvdFRhcmdldCwgZ2V0UmF3QmluZGluZ0F0dHIoZWwsICdzbG90JykpO1xuICAgIH1cbiAgfVxuXG4gIC8vIDIuNiB2LXNsb3Qgc3ludGF4XG4gIHtcbiAgICBpZiAoZWwudGFnID09PSAndGVtcGxhdGUnKSB7XG4gICAgICAvLyB2LXNsb3Qgb24gPHRlbXBsYXRlPlxuICAgICAgdmFyIHNsb3RCaW5kaW5nID0gZ2V0QW5kUmVtb3ZlQXR0ckJ5UmVnZXgoZWwsIHNsb3RSRSk7XG4gICAgICBpZiAoc2xvdEJpbmRpbmcpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBpZiAoZWwuc2xvdFRhcmdldCB8fCBlbC5zbG90U2NvcGUpIHtcbiAgICAgICAgICAgIHdhcm4kMihcbiAgICAgICAgICAgICAgXCJVbmV4cGVjdGVkIG1peGVkIHVzYWdlIG9mIGRpZmZlcmVudCBzbG90IHN5bnRheGVzLlwiLFxuICAgICAgICAgICAgICBlbFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVsLnBhcmVudCAmJiAhbWF5YmVDb21wb25lbnQoZWwucGFyZW50KSkge1xuICAgICAgICAgICAgd2FybiQyKFxuICAgICAgICAgICAgICBcIjx0ZW1wbGF0ZSB2LXNsb3Q+IGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgcm9vdCBsZXZlbCBpbnNpZGUgXCIgK1xuICAgICAgICAgICAgICBcInRoZSByZWNlaXZpbmcgdGhlIGNvbXBvbmVudFwiLFxuICAgICAgICAgICAgICBlbFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlZiA9IGdldFNsb3ROYW1lKHNsb3RCaW5kaW5nKTtcbiAgICAgICAgdmFyIG5hbWUgPSByZWYubmFtZTtcbiAgICAgICAgdmFyIGR5bmFtaWMgPSByZWYuZHluYW1pYztcbiAgICAgICAgZWwuc2xvdFRhcmdldCA9IG5hbWU7XG4gICAgICAgIGVsLnNsb3RUYXJnZXREeW5hbWljID0gZHluYW1pYztcbiAgICAgICAgZWwuc2xvdFNjb3BlID0gc2xvdEJpbmRpbmcudmFsdWUgfHwgZW1wdHlTbG90U2NvcGVUb2tlbjsgLy8gZm9yY2UgaXQgaW50byBhIHNjb3BlZCBzbG90IGZvciBwZXJmXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHYtc2xvdCBvbiBjb21wb25lbnQsIGRlbm90ZXMgZGVmYXVsdCBzbG90XG4gICAgICB2YXIgc2xvdEJpbmRpbmckMSA9IGdldEFuZFJlbW92ZUF0dHJCeVJlZ2V4KGVsLCBzbG90UkUpO1xuICAgICAgaWYgKHNsb3RCaW5kaW5nJDEpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBpZiAoIW1heWJlQ29tcG9uZW50KGVsKSkge1xuICAgICAgICAgICAgd2FybiQyKFxuICAgICAgICAgICAgICBcInYtc2xvdCBjYW4gb25seSBiZSB1c2VkIG9uIGNvbXBvbmVudHMgb3IgPHRlbXBsYXRlPi5cIixcbiAgICAgICAgICAgICAgc2xvdEJpbmRpbmckMVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVsLnNsb3RTY29wZSB8fCBlbC5zbG90VGFyZ2V0KSB7XG4gICAgICAgICAgICB3YXJuJDIoXG4gICAgICAgICAgICAgIFwiVW5leHBlY3RlZCBtaXhlZCB1c2FnZSBvZiBkaWZmZXJlbnQgc2xvdCBzeW50YXhlcy5cIixcbiAgICAgICAgICAgICAgZWxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbC5zY29wZWRTbG90cykge1xuICAgICAgICAgICAgd2FybiQyKFxuICAgICAgICAgICAgICBcIlRvIGF2b2lkIHNjb3BlIGFtYmlndWl0eSwgdGhlIGRlZmF1bHQgc2xvdCBzaG91bGQgYWxzbyB1c2UgXCIgK1xuICAgICAgICAgICAgICBcIjx0ZW1wbGF0ZT4gc3ludGF4IHdoZW4gdGhlcmUgYXJlIG90aGVyIG5hbWVkIHNsb3RzLlwiLFxuICAgICAgICAgICAgICBzbG90QmluZGluZyQxXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBhZGQgdGhlIGNvbXBvbmVudCdzIGNoaWxkcmVuIHRvIGl0cyBkZWZhdWx0IHNsb3RcbiAgICAgICAgdmFyIHNsb3RzID0gZWwuc2NvcGVkU2xvdHMgfHwgKGVsLnNjb3BlZFNsb3RzID0ge30pO1xuICAgICAgICB2YXIgcmVmJDEgPSBnZXRTbG90TmFtZShzbG90QmluZGluZyQxKTtcbiAgICAgICAgdmFyIG5hbWUkMSA9IHJlZiQxLm5hbWU7XG4gICAgICAgIHZhciBkeW5hbWljJDEgPSByZWYkMS5keW5hbWljO1xuICAgICAgICB2YXIgc2xvdENvbnRhaW5lciA9IHNsb3RzW25hbWUkMV0gPSBjcmVhdGVBU1RFbGVtZW50KCd0ZW1wbGF0ZScsIFtdLCBlbCk7XG4gICAgICAgIHNsb3RDb250YWluZXIuc2xvdFRhcmdldCA9IG5hbWUkMTtcbiAgICAgICAgc2xvdENvbnRhaW5lci5zbG90VGFyZ2V0RHluYW1pYyA9IGR5bmFtaWMkMTtcbiAgICAgICAgc2xvdENvbnRhaW5lci5jaGlsZHJlbiA9IGVsLmNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbiAoYykge1xuICAgICAgICAgIGlmICghYy5zbG90U2NvcGUpIHtcbiAgICAgICAgICAgIGMucGFyZW50ID0gc2xvdENvbnRhaW5lcjtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc2xvdENvbnRhaW5lci5zbG90U2NvcGUgPSBzbG90QmluZGluZyQxLnZhbHVlIHx8IGVtcHR5U2xvdFNjb3BlVG9rZW47XG4gICAgICAgIC8vIHJlbW92ZSBjaGlsZHJlbiBhcyB0aGV5IGFyZSByZXR1cm5lZCBmcm9tIHNjb3BlZFNsb3RzIG5vd1xuICAgICAgICBlbC5jaGlsZHJlbiA9IFtdO1xuICAgICAgICAvLyBtYXJrIGVsIG5vbi1wbGFpbiBzbyBkYXRhIGdldHMgZ2VuZXJhdGVkXG4gICAgICAgIGVsLnBsYWluID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFNsb3ROYW1lIChiaW5kaW5nKSB7XG4gIHZhciBuYW1lID0gYmluZGluZy5uYW1lLnJlcGxhY2Uoc2xvdFJFLCAnJyk7XG4gIGlmICghbmFtZSkge1xuICAgIGlmIChiaW5kaW5nLm5hbWVbMF0gIT09ICcjJykge1xuICAgICAgbmFtZSA9ICdkZWZhdWx0JztcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHdhcm4kMihcbiAgICAgICAgXCJ2LXNsb3Qgc2hvcnRoYW5kIHN5bnRheCByZXF1aXJlcyBhIHNsb3QgbmFtZS5cIixcbiAgICAgICAgYmluZGluZ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGR5bmFtaWNBcmdSRS50ZXN0KG5hbWUpXG4gICAgLy8gZHluYW1pYyBbbmFtZV1cbiAgICA/IHsgbmFtZTogbmFtZS5zbGljZSgxLCAtMSksIGR5bmFtaWM6IHRydWUgfVxuICAgIC8vIHN0YXRpYyBuYW1lXG4gICAgOiB7IG5hbWU6IChcIlxcXCJcIiArIG5hbWUgKyBcIlxcXCJcIiksIGR5bmFtaWM6IGZhbHNlIH1cbn1cblxuLy8gaGFuZGxlIDxzbG90Lz4gb3V0bGV0c1xuZnVuY3Rpb24gcHJvY2Vzc1Nsb3RPdXRsZXQgKGVsKSB7XG4gIGlmIChlbC50YWcgPT09ICdzbG90Jykge1xuICAgIGVsLnNsb3ROYW1lID0gZ2V0QmluZGluZ0F0dHIoZWwsICduYW1lJyk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZWwua2V5KSB7XG4gICAgICB3YXJuJDIoXG4gICAgICAgIFwiYGtleWAgZG9lcyBub3Qgd29yayBvbiA8c2xvdD4gYmVjYXVzZSBzbG90cyBhcmUgYWJzdHJhY3Qgb3V0bGV0cyBcIiArXG4gICAgICAgIFwiYW5kIGNhbiBwb3NzaWJseSBleHBhbmQgaW50byBtdWx0aXBsZSBlbGVtZW50cy4gXCIgK1xuICAgICAgICBcIlVzZSB0aGUga2V5IG9uIGEgd3JhcHBpbmcgZWxlbWVudCBpbnN0ZWFkLlwiLFxuICAgICAgICBnZXRSYXdCaW5kaW5nQXR0cihlbCwgJ2tleScpXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzQ29tcG9uZW50IChlbCkge1xuICB2YXIgYmluZGluZztcbiAgaWYgKChiaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICdpcycpKSkge1xuICAgIGVsLmNvbXBvbmVudCA9IGJpbmRpbmc7XG4gIH1cbiAgaWYgKGdldEFuZFJlbW92ZUF0dHIoZWwsICdpbmxpbmUtdGVtcGxhdGUnKSAhPSBudWxsKSB7XG4gICAgZWwuaW5saW5lVGVtcGxhdGUgPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NBdHRycyAoZWwpIHtcbiAgdmFyIGxpc3QgPSBlbC5hdHRyc0xpc3Q7XG4gIHZhciBpLCBsLCBuYW1lLCByYXdOYW1lLCB2YWx1ZSwgbW9kaWZpZXJzLCBzeW5jR2VuLCBpc0R5bmFtaWM7XG4gIGZvciAoaSA9IDAsIGwgPSBsaXN0Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIG5hbWUgPSByYXdOYW1lID0gbGlzdFtpXS5uYW1lO1xuICAgIHZhbHVlID0gbGlzdFtpXS52YWx1ZTtcbiAgICBpZiAoZGlyUkUudGVzdChuYW1lKSkge1xuICAgICAgLy8gbWFyayBlbGVtZW50IGFzIGR5bmFtaWNcbiAgICAgIGVsLmhhc0JpbmRpbmdzID0gdHJ1ZTtcbiAgICAgIC8vIG1vZGlmaWVyc1xuICAgICAgbW9kaWZpZXJzID0gcGFyc2VNb2RpZmllcnMobmFtZS5yZXBsYWNlKGRpclJFLCAnJykpO1xuICAgICAgLy8gc3VwcG9ydCAuZm9vIHNob3J0aGFuZCBzeW50YXggZm9yIHRoZSAucHJvcCBtb2RpZmllclxuICAgICAgaWYgKG1vZGlmaWVycykge1xuICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKG1vZGlmaWVyUkUsICcnKTtcbiAgICAgIH1cbiAgICAgIGlmIChiaW5kUkUudGVzdChuYW1lKSkgeyAvLyB2LWJpbmRcbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShiaW5kUkUsICcnKTtcbiAgICAgICAgdmFsdWUgPSBwYXJzZUZpbHRlcnModmFsdWUpO1xuICAgICAgICBpc0R5bmFtaWMgPSBkeW5hbWljQXJnUkUudGVzdChuYW1lKTtcbiAgICAgICAgaWYgKGlzRHluYW1pYykge1xuICAgICAgICAgIG5hbWUgPSBuYW1lLnNsaWNlKDEsIC0xKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgICAgICAgIHZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgd2FybiQyKFxuICAgICAgICAgICAgKFwiVGhlIHZhbHVlIGZvciBhIHYtYmluZCBleHByZXNzaW9uIGNhbm5vdCBiZSBlbXB0eS4gRm91bmQgaW4gXFxcInYtYmluZDpcIiArIG5hbWUgKyBcIlxcXCJcIilcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtb2RpZmllcnMpIHtcbiAgICAgICAgICBpZiAobW9kaWZpZXJzLnByb3AgJiYgIWlzRHluYW1pYykge1xuICAgICAgICAgICAgbmFtZSA9IGNhbWVsaXplKG5hbWUpO1xuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdpbm5lckh0bWwnKSB7IG5hbWUgPSAnaW5uZXJIVE1MJzsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobW9kaWZpZXJzLmNhbWVsICYmICFpc0R5bmFtaWMpIHtcbiAgICAgICAgICAgIG5hbWUgPSBjYW1lbGl6ZShuYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1vZGlmaWVycy5zeW5jKSB7XG4gICAgICAgICAgICBzeW5jR2VuID0gZ2VuQXNzaWdubWVudENvZGUodmFsdWUsIFwiJGV2ZW50XCIpO1xuICAgICAgICAgICAgaWYgKCFpc0R5bmFtaWMpIHtcbiAgICAgICAgICAgICAgYWRkSGFuZGxlcihcbiAgICAgICAgICAgICAgICBlbCxcbiAgICAgICAgICAgICAgICAoXCJ1cGRhdGU6XCIgKyAoY2FtZWxpemUobmFtZSkpKSxcbiAgICAgICAgICAgICAgICBzeW5jR2VuLFxuICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgd2FybiQyLFxuICAgICAgICAgICAgICAgIGxpc3RbaV1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgaWYgKGh5cGhlbmF0ZShuYW1lKSAhPT0gY2FtZWxpemUobmFtZSkpIHtcbiAgICAgICAgICAgICAgICBhZGRIYW5kbGVyKFxuICAgICAgICAgICAgICAgICAgZWwsXG4gICAgICAgICAgICAgICAgICAoXCJ1cGRhdGU6XCIgKyAoaHlwaGVuYXRlKG5hbWUpKSksXG4gICAgICAgICAgICAgICAgICBzeW5jR2VuLFxuICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgd2FybiQyLFxuICAgICAgICAgICAgICAgICAgbGlzdFtpXVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIGhhbmRsZXIgdy8gZHluYW1pYyBldmVudCBuYW1lXG4gICAgICAgICAgICAgIGFkZEhhbmRsZXIoXG4gICAgICAgICAgICAgICAgZWwsXG4gICAgICAgICAgICAgICAgKFwiXFxcInVwZGF0ZTpcXFwiKyhcIiArIG5hbWUgKyBcIilcIiksXG4gICAgICAgICAgICAgICAgc3luY0dlbixcbiAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgIHdhcm4kMixcbiAgICAgICAgICAgICAgICBsaXN0W2ldLFxuICAgICAgICAgICAgICAgIHRydWUgLy8gZHluYW1pY1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKG1vZGlmaWVycyAmJiBtb2RpZmllcnMucHJvcCkgfHwgKFxuICAgICAgICAgICFlbC5jb21wb25lbnQgJiYgcGxhdGZvcm1NdXN0VXNlUHJvcChlbC50YWcsIGVsLmF0dHJzTWFwLnR5cGUsIG5hbWUpXG4gICAgICAgICkpIHtcbiAgICAgICAgICBhZGRQcm9wKGVsLCBuYW1lLCB2YWx1ZSwgbGlzdFtpXSwgaXNEeW5hbWljKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRBdHRyKGVsLCBuYW1lLCB2YWx1ZSwgbGlzdFtpXSwgaXNEeW5hbWljKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChvblJFLnRlc3QobmFtZSkpIHsgLy8gdi1vblxuICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKG9uUkUsICcnKTtcbiAgICAgICAgaXNEeW5hbWljID0gZHluYW1pY0FyZ1JFLnRlc3QobmFtZSk7XG4gICAgICAgIGlmIChpc0R5bmFtaWMpIHtcbiAgICAgICAgICBuYW1lID0gbmFtZS5zbGljZSgxLCAtMSk7XG4gICAgICAgIH1cbiAgICAgICAgYWRkSGFuZGxlcihlbCwgbmFtZSwgdmFsdWUsIG1vZGlmaWVycywgZmFsc2UsIHdhcm4kMiwgbGlzdFtpXSwgaXNEeW5hbWljKTtcbiAgICAgIH0gZWxzZSB7IC8vIG5vcm1hbCBkaXJlY3RpdmVzXG4gICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoZGlyUkUsICcnKTtcbiAgICAgICAgLy8gcGFyc2UgYXJnXG4gICAgICAgIHZhciBhcmdNYXRjaCA9IG5hbWUubWF0Y2goYXJnUkUpO1xuICAgICAgICB2YXIgYXJnID0gYXJnTWF0Y2ggJiYgYXJnTWF0Y2hbMV07XG4gICAgICAgIGlzRHluYW1pYyA9IGZhbHNlO1xuICAgICAgICBpZiAoYXJnKSB7XG4gICAgICAgICAgbmFtZSA9IG5hbWUuc2xpY2UoMCwgLShhcmcubGVuZ3RoICsgMSkpO1xuICAgICAgICAgIGlmIChkeW5hbWljQXJnUkUudGVzdChhcmcpKSB7XG4gICAgICAgICAgICBhcmcgPSBhcmcuc2xpY2UoMSwgLTEpO1xuICAgICAgICAgICAgaXNEeW5hbWljID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYWRkRGlyZWN0aXZlKGVsLCBuYW1lLCByYXdOYW1lLCB2YWx1ZSwgYXJnLCBpc0R5bmFtaWMsIG1vZGlmaWVycywgbGlzdFtpXSk7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIG5hbWUgPT09ICdtb2RlbCcpIHtcbiAgICAgICAgICBjaGVja0ZvckFsaWFzTW9kZWwoZWwsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBsaXRlcmFsIGF0dHJpYnV0ZVxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFyIHJlcyA9IHBhcnNlVGV4dCh2YWx1ZSwgZGVsaW1pdGVycyk7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICB3YXJuJDIoXG4gICAgICAgICAgICBuYW1lICsgXCI9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCI6IFwiICtcbiAgICAgICAgICAgICdJbnRlcnBvbGF0aW9uIGluc2lkZSBhdHRyaWJ1dGVzIGhhcyBiZWVuIHJlbW92ZWQuICcgK1xuICAgICAgICAgICAgJ1VzZSB2LWJpbmQgb3IgdGhlIGNvbG9uIHNob3J0aGFuZCBpbnN0ZWFkLiBGb3IgZXhhbXBsZSwgJyArXG4gICAgICAgICAgICAnaW5zdGVhZCBvZiA8ZGl2IGlkPVwie3sgdmFsIH19XCI+LCB1c2UgPGRpdiA6aWQ9XCJ2YWxcIj4uJyxcbiAgICAgICAgICAgIGxpc3RbaV1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhZGRBdHRyKGVsLCBuYW1lLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSksIGxpc3RbaV0pO1xuICAgICAgLy8gIzY4ODcgZmlyZWZveCBkb2Vzbid0IHVwZGF0ZSBtdXRlZCBzdGF0ZSBpZiBzZXQgdmlhIGF0dHJpYnV0ZVxuICAgICAgLy8gZXZlbiBpbW1lZGlhdGVseSBhZnRlciBlbGVtZW50IGNyZWF0aW9uXG4gICAgICBpZiAoIWVsLmNvbXBvbmVudCAmJlxuICAgICAgICAgIG5hbWUgPT09ICdtdXRlZCcgJiZcbiAgICAgICAgICBwbGF0Zm9ybU11c3RVc2VQcm9wKGVsLnRhZywgZWwuYXR0cnNNYXAudHlwZSwgbmFtZSkpIHtcbiAgICAgICAgYWRkUHJvcChlbCwgbmFtZSwgJ3RydWUnLCBsaXN0W2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tJbkZvciAoZWwpIHtcbiAgdmFyIHBhcmVudCA9IGVsO1xuICB3aGlsZSAocGFyZW50KSB7XG4gICAgaWYgKHBhcmVudC5mb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gcGFyc2VNb2RpZmllcnMgKG5hbWUpIHtcbiAgdmFyIG1hdGNoID0gbmFtZS5tYXRjaChtb2RpZmllclJFKTtcbiAgaWYgKG1hdGNoKSB7XG4gICAgdmFyIHJldCA9IHt9O1xuICAgIG1hdGNoLmZvckVhY2goZnVuY3Rpb24gKG0pIHsgcmV0W20uc2xpY2UoMSldID0gdHJ1ZTsgfSk7XG4gICAgcmV0dXJuIHJldFxuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VBdHRyc01hcCAoYXR0cnMpIHtcbiAgdmFyIG1hcCA9IHt9O1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGF0dHJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGlmIChcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgIG1hcFthdHRyc1tpXS5uYW1lXSAmJiAhaXNJRSAmJiAhaXNFZGdlXG4gICAgKSB7XG4gICAgICB3YXJuJDIoJ2R1cGxpY2F0ZSBhdHRyaWJ1dGU6ICcgKyBhdHRyc1tpXS5uYW1lLCBhdHRyc1tpXSk7XG4gICAgfVxuICAgIG1hcFthdHRyc1tpXS5uYW1lXSA9IGF0dHJzW2ldLnZhbHVlO1xuICB9XG4gIHJldHVybiBtYXBcbn1cblxuLy8gZm9yIHNjcmlwdCAoZS5nLiB0eXBlPVwieC90ZW1wbGF0ZVwiKSBvciBzdHlsZSwgZG8gbm90IGRlY29kZSBjb250ZW50XG5mdW5jdGlvbiBpc1RleHRUYWcgKGVsKSB7XG4gIHJldHVybiBlbC50YWcgPT09ICdzY3JpcHQnIHx8IGVsLnRhZyA9PT0gJ3N0eWxlJ1xufVxuXG5mdW5jdGlvbiBpc0ZvcmJpZGRlblRhZyAoZWwpIHtcbiAgcmV0dXJuIChcbiAgICBlbC50YWcgPT09ICdzdHlsZScgfHxcbiAgICAoZWwudGFnID09PSAnc2NyaXB0JyAmJiAoXG4gICAgICAhZWwuYXR0cnNNYXAudHlwZSB8fFxuICAgICAgZWwuYXR0cnNNYXAudHlwZSA9PT0gJ3RleHQvamF2YXNjcmlwdCdcbiAgICApKVxuICApXG59XG5cbnZhciBpZU5TQnVnID0gL154bWxuczpOU1xcZCsvO1xudmFyIGllTlNQcmVmaXggPSAvXk5TXFxkKzovO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gZ3VhcmRJRVNWR0J1ZyAoYXR0cnMpIHtcbiAgdmFyIHJlcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGF0dHIgPSBhdHRyc1tpXTtcbiAgICBpZiAoIWllTlNCdWcudGVzdChhdHRyLm5hbWUpKSB7XG4gICAgICBhdHRyLm5hbWUgPSBhdHRyLm5hbWUucmVwbGFjZShpZU5TUHJlZml4LCAnJyk7XG4gICAgICByZXMucHVzaChhdHRyKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBjaGVja0ZvckFsaWFzTW9kZWwgKGVsLCB2YWx1ZSkge1xuICB2YXIgX2VsID0gZWw7XG4gIHdoaWxlIChfZWwpIHtcbiAgICBpZiAoX2VsLmZvciAmJiBfZWwuYWxpYXMgPT09IHZhbHVlKSB7XG4gICAgICB3YXJuJDIoXG4gICAgICAgIFwiPFwiICsgKGVsLnRhZykgKyBcIiB2LW1vZGVsPVxcXCJcIiArIHZhbHVlICsgXCJcXFwiPjogXCIgK1xuICAgICAgICBcIllvdSBhcmUgYmluZGluZyB2LW1vZGVsIGRpcmVjdGx5IHRvIGEgdi1mb3IgaXRlcmF0aW9uIGFsaWFzLiBcIiArXG4gICAgICAgIFwiVGhpcyB3aWxsIG5vdCBiZSBhYmxlIHRvIG1vZGlmeSB0aGUgdi1mb3Igc291cmNlIGFycmF5IGJlY2F1c2UgXCIgK1xuICAgICAgICBcIndyaXRpbmcgdG8gdGhlIGFsaWFzIGlzIGxpa2UgbW9kaWZ5aW5nIGEgZnVuY3Rpb24gbG9jYWwgdmFyaWFibGUuIFwiICtcbiAgICAgICAgXCJDb25zaWRlciB1c2luZyBhbiBhcnJheSBvZiBvYmplY3RzIGFuZCB1c2Ugdi1tb2RlbCBvbiBhbiBvYmplY3QgcHJvcGVydHkgaW5zdGVhZC5cIixcbiAgICAgICAgZWwucmF3QXR0cnNNYXBbJ3YtbW9kZWwnXVxuICAgICAgKTtcbiAgICB9XG4gICAgX2VsID0gX2VsLnBhcmVudDtcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gcHJlVHJhbnNmb3JtTm9kZSAoZWwsIG9wdGlvbnMpIHtcbiAgaWYgKGVsLnRhZyA9PT0gJ2lucHV0Jykge1xuICAgIHZhciBtYXAgPSBlbC5hdHRyc01hcDtcbiAgICBpZiAoIW1hcFsndi1tb2RlbCddKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgdHlwZUJpbmRpbmc7XG4gICAgaWYgKG1hcFsnOnR5cGUnXSB8fCBtYXBbJ3YtYmluZDp0eXBlJ10pIHtcbiAgICAgIHR5cGVCaW5kaW5nID0gZ2V0QmluZGluZ0F0dHIoZWwsICd0eXBlJyk7XG4gICAgfVxuICAgIGlmICghbWFwLnR5cGUgJiYgIXR5cGVCaW5kaW5nICYmIG1hcFsndi1iaW5kJ10pIHtcbiAgICAgIHR5cGVCaW5kaW5nID0gXCIoXCIgKyAobWFwWyd2LWJpbmQnXSkgKyBcIikudHlwZVwiO1xuICAgIH1cblxuICAgIGlmICh0eXBlQmluZGluZykge1xuICAgICAgdmFyIGlmQ29uZGl0aW9uID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtaWYnLCB0cnVlKTtcbiAgICAgIHZhciBpZkNvbmRpdGlvbkV4dHJhID0gaWZDb25kaXRpb24gPyAoXCImJihcIiArIGlmQ29uZGl0aW9uICsgXCIpXCIpIDogXCJcIjtcbiAgICAgIHZhciBoYXNFbHNlID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtZWxzZScsIHRydWUpICE9IG51bGw7XG4gICAgICB2YXIgZWxzZUlmQ29uZGl0aW9uID0gZ2V0QW5kUmVtb3ZlQXR0cihlbCwgJ3YtZWxzZS1pZicsIHRydWUpO1xuICAgICAgLy8gMS4gY2hlY2tib3hcbiAgICAgIHZhciBicmFuY2gwID0gY2xvbmVBU1RFbGVtZW50KGVsKTtcbiAgICAgIC8vIHByb2Nlc3MgZm9yIG9uIHRoZSBtYWluIG5vZGVcbiAgICAgIHByb2Nlc3NGb3IoYnJhbmNoMCk7XG4gICAgICBhZGRSYXdBdHRyKGJyYW5jaDAsICd0eXBlJywgJ2NoZWNrYm94Jyk7XG4gICAgICBwcm9jZXNzRWxlbWVudChicmFuY2gwLCBvcHRpb25zKTtcbiAgICAgIGJyYW5jaDAucHJvY2Vzc2VkID0gdHJ1ZTsgLy8gcHJldmVudCBpdCBmcm9tIGRvdWJsZS1wcm9jZXNzZWRcbiAgICAgIGJyYW5jaDAuaWYgPSBcIihcIiArIHR5cGVCaW5kaW5nICsgXCIpPT09J2NoZWNrYm94J1wiICsgaWZDb25kaXRpb25FeHRyYTtcbiAgICAgIGFkZElmQ29uZGl0aW9uKGJyYW5jaDAsIHtcbiAgICAgICAgZXhwOiBicmFuY2gwLmlmLFxuICAgICAgICBibG9jazogYnJhbmNoMFxuICAgICAgfSk7XG4gICAgICAvLyAyLiBhZGQgcmFkaW8gZWxzZS1pZiBjb25kaXRpb25cbiAgICAgIHZhciBicmFuY2gxID0gY2xvbmVBU1RFbGVtZW50KGVsKTtcbiAgICAgIGdldEFuZFJlbW92ZUF0dHIoYnJhbmNoMSwgJ3YtZm9yJywgdHJ1ZSk7XG4gICAgICBhZGRSYXdBdHRyKGJyYW5jaDEsICd0eXBlJywgJ3JhZGlvJyk7XG4gICAgICBwcm9jZXNzRWxlbWVudChicmFuY2gxLCBvcHRpb25zKTtcbiAgICAgIGFkZElmQ29uZGl0aW9uKGJyYW5jaDAsIHtcbiAgICAgICAgZXhwOiBcIihcIiArIHR5cGVCaW5kaW5nICsgXCIpPT09J3JhZGlvJ1wiICsgaWZDb25kaXRpb25FeHRyYSxcbiAgICAgICAgYmxvY2s6IGJyYW5jaDFcbiAgICAgIH0pO1xuICAgICAgLy8gMy4gb3RoZXJcbiAgICAgIHZhciBicmFuY2gyID0gY2xvbmVBU1RFbGVtZW50KGVsKTtcbiAgICAgIGdldEFuZFJlbW92ZUF0dHIoYnJhbmNoMiwgJ3YtZm9yJywgdHJ1ZSk7XG4gICAgICBhZGRSYXdBdHRyKGJyYW5jaDIsICc6dHlwZScsIHR5cGVCaW5kaW5nKTtcbiAgICAgIHByb2Nlc3NFbGVtZW50KGJyYW5jaDIsIG9wdGlvbnMpO1xuICAgICAgYWRkSWZDb25kaXRpb24oYnJhbmNoMCwge1xuICAgICAgICBleHA6IGlmQ29uZGl0aW9uLFxuICAgICAgICBibG9jazogYnJhbmNoMlxuICAgICAgfSk7XG5cbiAgICAgIGlmIChoYXNFbHNlKSB7XG4gICAgICAgIGJyYW5jaDAuZWxzZSA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGVsc2VJZkNvbmRpdGlvbikge1xuICAgICAgICBicmFuY2gwLmVsc2VpZiA9IGVsc2VJZkNvbmRpdGlvbjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGJyYW5jaDBcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2xvbmVBU1RFbGVtZW50IChlbCkge1xuICByZXR1cm4gY3JlYXRlQVNURWxlbWVudChlbC50YWcsIGVsLmF0dHJzTGlzdC5zbGljZSgpLCBlbC5wYXJlbnQpXG59XG5cbnZhciBtb2RlbCQxID0ge1xuICBwcmVUcmFuc2Zvcm1Ob2RlOiBwcmVUcmFuc2Zvcm1Ob2RlXG59O1xuXG52YXIgbW9kdWxlcyQxID0gW1xuICBrbGFzcyQxLFxuICBzdHlsZSQxLFxuICBtb2RlbCQxXG5dO1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gdGV4dCAoZWwsIGRpcikge1xuICBpZiAoZGlyLnZhbHVlKSB7XG4gICAgYWRkUHJvcChlbCwgJ3RleHRDb250ZW50JywgKFwiX3MoXCIgKyAoZGlyLnZhbHVlKSArIFwiKVwiKSwgZGlyKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaHRtbCAoZWwsIGRpcikge1xuICBpZiAoZGlyLnZhbHVlKSB7XG4gICAgYWRkUHJvcChlbCwgJ2lubmVySFRNTCcsIChcIl9zKFwiICsgKGRpci52YWx1ZSkgKyBcIilcIiksIGRpcik7XG4gIH1cbn1cblxudmFyIGRpcmVjdGl2ZXMkMSA9IHtcbiAgbW9kZWw6IG1vZGVsLFxuICB0ZXh0OiB0ZXh0LFxuICBodG1sOiBodG1sXG59O1xuXG4vKiAgKi9cblxudmFyIGJhc2VPcHRpb25zID0ge1xuICBleHBlY3RIVE1MOiB0cnVlLFxuICBtb2R1bGVzOiBtb2R1bGVzJDEsXG4gIGRpcmVjdGl2ZXM6IGRpcmVjdGl2ZXMkMSxcbiAgaXNQcmVUYWc6IGlzUHJlVGFnLFxuICBpc1VuYXJ5VGFnOiBpc1VuYXJ5VGFnLFxuICBtdXN0VXNlUHJvcDogbXVzdFVzZVByb3AsXG4gIGNhbkJlTGVmdE9wZW5UYWc6IGNhbkJlTGVmdE9wZW5UYWcsXG4gIGlzUmVzZXJ2ZWRUYWc6IGlzUmVzZXJ2ZWRUYWcsXG4gIGdldFRhZ05hbWVzcGFjZTogZ2V0VGFnTmFtZXNwYWNlLFxuICBzdGF0aWNLZXlzOiBnZW5TdGF0aWNLZXlzKG1vZHVsZXMkMSlcbn07XG5cbi8qICAqL1xuXG52YXIgaXNTdGF0aWNLZXk7XG52YXIgaXNQbGF0Zm9ybVJlc2VydmVkVGFnO1xuXG52YXIgZ2VuU3RhdGljS2V5c0NhY2hlZCA9IGNhY2hlZChnZW5TdGF0aWNLZXlzJDEpO1xuXG4vKipcbiAqIEdvYWwgb2YgdGhlIG9wdGltaXplcjogd2FsayB0aGUgZ2VuZXJhdGVkIHRlbXBsYXRlIEFTVCB0cmVlXG4gKiBhbmQgZGV0ZWN0IHN1Yi10cmVlcyB0aGF0IGFyZSBwdXJlbHkgc3RhdGljLCBpLmUuIHBhcnRzIG9mXG4gKiB0aGUgRE9NIHRoYXQgbmV2ZXIgbmVlZHMgdG8gY2hhbmdlLlxuICpcbiAqIE9uY2Ugd2UgZGV0ZWN0IHRoZXNlIHN1Yi10cmVlcywgd2UgY2FuOlxuICpcbiAqIDEuIEhvaXN0IHRoZW0gaW50byBjb25zdGFudHMsIHNvIHRoYXQgd2Ugbm8gbG9uZ2VyIG5lZWQgdG9cbiAqICAgIGNyZWF0ZSBmcmVzaCBub2RlcyBmb3IgdGhlbSBvbiBlYWNoIHJlLXJlbmRlcjtcbiAqIDIuIENvbXBsZXRlbHkgc2tpcCB0aGVtIGluIHRoZSBwYXRjaGluZyBwcm9jZXNzLlxuICovXG5mdW5jdGlvbiBvcHRpbWl6ZSAocm9vdCwgb3B0aW9ucykge1xuICBpZiAoIXJvb3QpIHsgcmV0dXJuIH1cbiAgaXNTdGF0aWNLZXkgPSBnZW5TdGF0aWNLZXlzQ2FjaGVkKG9wdGlvbnMuc3RhdGljS2V5cyB8fCAnJyk7XG4gIGlzUGxhdGZvcm1SZXNlcnZlZFRhZyA9IG9wdGlvbnMuaXNSZXNlcnZlZFRhZyB8fCBubztcbiAgLy8gZmlyc3QgcGFzczogbWFyayBhbGwgbm9uLXN0YXRpYyBub2Rlcy5cbiAgbWFya1N0YXRpYyQxKHJvb3QpO1xuICAvLyBzZWNvbmQgcGFzczogbWFyayBzdGF0aWMgcm9vdHMuXG4gIG1hcmtTdGF0aWNSb290cyhyb290LCBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIGdlblN0YXRpY0tleXMkMSAoa2V5cykge1xuICByZXR1cm4gbWFrZU1hcChcbiAgICAndHlwZSx0YWcsYXR0cnNMaXN0LGF0dHJzTWFwLHBsYWluLHBhcmVudCxjaGlsZHJlbixhdHRycyxzdGFydCxlbmQscmF3QXR0cnNNYXAnICtcbiAgICAoa2V5cyA/ICcsJyArIGtleXMgOiAnJylcbiAgKVxufVxuXG5mdW5jdGlvbiBtYXJrU3RhdGljJDEgKG5vZGUpIHtcbiAgbm9kZS5zdGF0aWMgPSBpc1N0YXRpYyhub2RlKTtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMSkge1xuICAgIC8vIGRvIG5vdCBtYWtlIGNvbXBvbmVudCBzbG90IGNvbnRlbnQgc3RhdGljLiB0aGlzIGF2b2lkc1xuICAgIC8vIDEuIGNvbXBvbmVudHMgbm90IGFibGUgdG8gbXV0YXRlIHNsb3Qgbm9kZXNcbiAgICAvLyAyLiBzdGF0aWMgc2xvdCBjb250ZW50IGZhaWxzIGZvciBob3QtcmVsb2FkaW5nXG4gICAgaWYgKFxuICAgICAgIWlzUGxhdGZvcm1SZXNlcnZlZFRhZyhub2RlLnRhZykgJiZcbiAgICAgIG5vZGUudGFnICE9PSAnc2xvdCcgJiZcbiAgICAgIG5vZGUuYXR0cnNNYXBbJ2lubGluZS10ZW1wbGF0ZSddID09IG51bGxcbiAgICApIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgY2hpbGQgPSBub2RlLmNoaWxkcmVuW2ldO1xuICAgICAgbWFya1N0YXRpYyQxKGNoaWxkKTtcbiAgICAgIGlmICghY2hpbGQuc3RhdGljKSB7XG4gICAgICAgIG5vZGUuc3RhdGljID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChub2RlLmlmQ29uZGl0aW9ucykge1xuICAgICAgZm9yICh2YXIgaSQxID0gMSwgbCQxID0gbm9kZS5pZkNvbmRpdGlvbnMubGVuZ3RoOyBpJDEgPCBsJDE7IGkkMSsrKSB7XG4gICAgICAgIHZhciBibG9jayA9IG5vZGUuaWZDb25kaXRpb25zW2kkMV0uYmxvY2s7XG4gICAgICAgIG1hcmtTdGF0aWMkMShibG9jayk7XG4gICAgICAgIGlmICghYmxvY2suc3RhdGljKSB7XG4gICAgICAgICAgbm9kZS5zdGF0aWMgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBtYXJrU3RhdGljUm9vdHMgKG5vZGUsIGlzSW5Gb3IpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMSkge1xuICAgIGlmIChub2RlLnN0YXRpYyB8fCBub2RlLm9uY2UpIHtcbiAgICAgIG5vZGUuc3RhdGljSW5Gb3IgPSBpc0luRm9yO1xuICAgIH1cbiAgICAvLyBGb3IgYSBub2RlIHRvIHF1YWxpZnkgYXMgYSBzdGF0aWMgcm9vdCwgaXQgc2hvdWxkIGhhdmUgY2hpbGRyZW4gdGhhdFxuICAgIC8vIGFyZSBub3QganVzdCBzdGF0aWMgdGV4dC4gT3RoZXJ3aXNlIHRoZSBjb3N0IG9mIGhvaXN0aW5nIG91dCB3aWxsXG4gICAgLy8gb3V0d2VpZ2ggdGhlIGJlbmVmaXRzIGFuZCBpdCdzIGJldHRlciBvZmYgdG8ganVzdCBhbHdheXMgcmVuZGVyIGl0IGZyZXNoLlxuICAgIGlmIChub2RlLnN0YXRpYyAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCAmJiAhKFxuICAgICAgbm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiZcbiAgICAgIG5vZGUuY2hpbGRyZW5bMF0udHlwZSA9PT0gM1xuICAgICkpIHtcbiAgICAgIG5vZGUuc3RhdGljUm9vdCA9IHRydWU7XG4gICAgICByZXR1cm5cbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZS5zdGF0aWNSb290ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIG1hcmtTdGF0aWNSb290cyhub2RlLmNoaWxkcmVuW2ldLCBpc0luRm9yIHx8ICEhbm9kZS5mb3IpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobm9kZS5pZkNvbmRpdGlvbnMpIHtcbiAgICAgIGZvciAodmFyIGkkMSA9IDEsIGwkMSA9IG5vZGUuaWZDb25kaXRpb25zLmxlbmd0aDsgaSQxIDwgbCQxOyBpJDErKykge1xuICAgICAgICBtYXJrU3RhdGljUm9vdHMobm9kZS5pZkNvbmRpdGlvbnNbaSQxXS5ibG9jaywgaXNJbkZvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzU3RhdGljIChub2RlKSB7XG4gIGlmIChub2RlLnR5cGUgPT09IDIpIHsgLy8gZXhwcmVzc2lvblxuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGlmIChub2RlLnR5cGUgPT09IDMpIHsgLy8gdGV4dFxuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgcmV0dXJuICEhKG5vZGUucHJlIHx8IChcbiAgICAhbm9kZS5oYXNCaW5kaW5ncyAmJiAvLyBubyBkeW5hbWljIGJpbmRpbmdzXG4gICAgIW5vZGUuaWYgJiYgIW5vZGUuZm9yICYmIC8vIG5vdCB2LWlmIG9yIHYtZm9yIG9yIHYtZWxzZVxuICAgICFpc0J1aWx0SW5UYWcobm9kZS50YWcpICYmIC8vIG5vdCBhIGJ1aWx0LWluXG4gICAgaXNQbGF0Zm9ybVJlc2VydmVkVGFnKG5vZGUudGFnKSAmJiAvLyBub3QgYSBjb21wb25lbnRcbiAgICAhaXNEaXJlY3RDaGlsZE9mVGVtcGxhdGVGb3Iobm9kZSkgJiZcbiAgICBPYmplY3Qua2V5cyhub2RlKS5ldmVyeShpc1N0YXRpY0tleSlcbiAgKSlcbn1cblxuZnVuY3Rpb24gaXNEaXJlY3RDaGlsZE9mVGVtcGxhdGVGb3IgKG5vZGUpIHtcbiAgd2hpbGUgKG5vZGUucGFyZW50KSB7XG4gICAgbm9kZSA9IG5vZGUucGFyZW50O1xuICAgIGlmIChub2RlLnRhZyAhPT0gJ3RlbXBsYXRlJykge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIGlmIChub2RlLmZvcikge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qICAqL1xuXG52YXIgZm5FeHBSRSA9IC9eKFtcXHckX10rfFxcKFteKV0qP1xcKSlcXHMqPT58XmZ1bmN0aW9uXFxzKig/OltcXHckXSspP1xccypcXCgvO1xudmFyIGZuSW52b2tlUkUgPSAvXFwoW14pXSo/XFwpOyokLztcbnZhciBzaW1wbGVQYXRoUkUgPSAvXltBLVphLXpfJF1bXFx3JF0qKD86XFwuW0EtWmEtel8kXVtcXHckXSp8XFxbJ1teJ10qPyddfFxcW1wiW15cIl0qP1wiXXxcXFtcXGQrXXxcXFtbQS1aYS16XyRdW1xcdyRdKl0pKiQvO1xuXG4vLyBLZXlib2FyZEV2ZW50LmtleUNvZGUgYWxpYXNlc1xudmFyIGtleUNvZGVzID0ge1xuICBlc2M6IDI3LFxuICB0YWI6IDksXG4gIGVudGVyOiAxMyxcbiAgc3BhY2U6IDMyLFxuICB1cDogMzgsXG4gIGxlZnQ6IDM3LFxuICByaWdodDogMzksXG4gIGRvd246IDQwLFxuICAnZGVsZXRlJzogWzgsIDQ2XVxufTtcblxuLy8gS2V5Ym9hcmRFdmVudC5rZXkgYWxpYXNlc1xudmFyIGtleU5hbWVzID0ge1xuICAvLyAjNzg4MDogSUUxMSBhbmQgRWRnZSB1c2UgYEVzY2AgZm9yIEVzY2FwZSBrZXkgbmFtZS5cbiAgZXNjOiBbJ0VzYycsICdFc2NhcGUnXSxcbiAgdGFiOiAnVGFiJyxcbiAgZW50ZXI6ICdFbnRlcicsXG4gIC8vICM5MTEyOiBJRTExIHVzZXMgYFNwYWNlYmFyYCBmb3IgU3BhY2Uga2V5IG5hbWUuXG4gIHNwYWNlOiBbJyAnLCAnU3BhY2ViYXInXSxcbiAgLy8gIzc4MDY6IElFMTEgdXNlcyBrZXkgbmFtZXMgd2l0aG91dCBgQXJyb3dgIHByZWZpeCBmb3IgYXJyb3cga2V5cy5cbiAgdXA6IFsnVXAnLCAnQXJyb3dVcCddLFxuICBsZWZ0OiBbJ0xlZnQnLCAnQXJyb3dMZWZ0J10sXG4gIHJpZ2h0OiBbJ1JpZ2h0JywgJ0Fycm93UmlnaHQnXSxcbiAgZG93bjogWydEb3duJywgJ0Fycm93RG93biddLFxuICAvLyAjOTExMjogSUUxMSB1c2VzIGBEZWxgIGZvciBEZWxldGUga2V5IG5hbWUuXG4gICdkZWxldGUnOiBbJ0JhY2tzcGFjZScsICdEZWxldGUnLCAnRGVsJ11cbn07XG5cbi8vICM0ODY4OiBtb2RpZmllcnMgdGhhdCBwcmV2ZW50IHRoZSBleGVjdXRpb24gb2YgdGhlIGxpc3RlbmVyXG4vLyBuZWVkIHRvIGV4cGxpY2l0bHkgcmV0dXJuIG51bGwgc28gdGhhdCB3ZSBjYW4gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gcmVtb3ZlXG4vLyB0aGUgbGlzdGVuZXIgZm9yIC5vbmNlXG52YXIgZ2VuR3VhcmQgPSBmdW5jdGlvbiAoY29uZGl0aW9uKSB7IHJldHVybiAoXCJpZihcIiArIGNvbmRpdGlvbiArIFwiKXJldHVybiBudWxsO1wiKTsgfTtcblxudmFyIG1vZGlmaWVyQ29kZSA9IHtcbiAgc3RvcDogJyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsnLFxuICBwcmV2ZW50OiAnJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7JyxcbiAgc2VsZjogZ2VuR3VhcmQoXCIkZXZlbnQudGFyZ2V0ICE9PSAkZXZlbnQuY3VycmVudFRhcmdldFwiKSxcbiAgY3RybDogZ2VuR3VhcmQoXCIhJGV2ZW50LmN0cmxLZXlcIiksXG4gIHNoaWZ0OiBnZW5HdWFyZChcIiEkZXZlbnQuc2hpZnRLZXlcIiksXG4gIGFsdDogZ2VuR3VhcmQoXCIhJGV2ZW50LmFsdEtleVwiKSxcbiAgbWV0YTogZ2VuR3VhcmQoXCIhJGV2ZW50Lm1ldGFLZXlcIiksXG4gIGxlZnQ6IGdlbkd1YXJkKFwiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDBcIiksXG4gIG1pZGRsZTogZ2VuR3VhcmQoXCInYnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMVwiKSxcbiAgcmlnaHQ6IGdlbkd1YXJkKFwiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDJcIilcbn07XG5cbmZ1bmN0aW9uIGdlbkhhbmRsZXJzIChcbiAgZXZlbnRzLFxuICBpc05hdGl2ZVxuKSB7XG4gIHZhciBwcmVmaXggPSBpc05hdGl2ZSA/ICduYXRpdmVPbjonIDogJ29uOic7XG4gIHZhciBzdGF0aWNIYW5kbGVycyA9IFwiXCI7XG4gIHZhciBkeW5hbWljSGFuZGxlcnMgPSBcIlwiO1xuICBmb3IgKHZhciBuYW1lIGluIGV2ZW50cykge1xuICAgIHZhciBoYW5kbGVyQ29kZSA9IGdlbkhhbmRsZXIoZXZlbnRzW25hbWVdKTtcbiAgICBpZiAoZXZlbnRzW25hbWVdICYmIGV2ZW50c1tuYW1lXS5keW5hbWljKSB7XG4gICAgICBkeW5hbWljSGFuZGxlcnMgKz0gbmFtZSArIFwiLFwiICsgaGFuZGxlckNvZGUgKyBcIixcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGljSGFuZGxlcnMgKz0gXCJcXFwiXCIgKyBuYW1lICsgXCJcXFwiOlwiICsgaGFuZGxlckNvZGUgKyBcIixcIjtcbiAgICB9XG4gIH1cbiAgc3RhdGljSGFuZGxlcnMgPSBcIntcIiArIChzdGF0aWNIYW5kbGVycy5zbGljZSgwLCAtMSkpICsgXCJ9XCI7XG4gIGlmIChkeW5hbWljSGFuZGxlcnMpIHtcbiAgICByZXR1cm4gcHJlZml4ICsgXCJfZChcIiArIHN0YXRpY0hhbmRsZXJzICsgXCIsW1wiICsgKGR5bmFtaWNIYW5kbGVycy5zbGljZSgwLCAtMSkpICsgXCJdKVwiXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHByZWZpeCArIHN0YXRpY0hhbmRsZXJzXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuSGFuZGxlciAoaGFuZGxlcikge1xuICBpZiAoIWhhbmRsZXIpIHtcbiAgICByZXR1cm4gJ2Z1bmN0aW9uKCl7fSdcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KGhhbmRsZXIpKSB7XG4gICAgcmV0dXJuIChcIltcIiArIChoYW5kbGVyLm1hcChmdW5jdGlvbiAoaGFuZGxlcikgeyByZXR1cm4gZ2VuSGFuZGxlcihoYW5kbGVyKTsgfSkuam9pbignLCcpKSArIFwiXVwiKVxuICB9XG5cbiAgdmFyIGlzTWV0aG9kUGF0aCA9IHNpbXBsZVBhdGhSRS50ZXN0KGhhbmRsZXIudmFsdWUpO1xuICB2YXIgaXNGdW5jdGlvbkV4cHJlc3Npb24gPSBmbkV4cFJFLnRlc3QoaGFuZGxlci52YWx1ZSk7XG4gIHZhciBpc0Z1bmN0aW9uSW52b2NhdGlvbiA9IHNpbXBsZVBhdGhSRS50ZXN0KGhhbmRsZXIudmFsdWUucmVwbGFjZShmbkludm9rZVJFLCAnJykpO1xuXG4gIGlmICghaGFuZGxlci5tb2RpZmllcnMpIHtcbiAgICBpZiAoaXNNZXRob2RQYXRoIHx8IGlzRnVuY3Rpb25FeHByZXNzaW9uKSB7XG4gICAgICByZXR1cm4gaGFuZGxlci52YWx1ZVxuICAgIH1cbiAgICByZXR1cm4gKFwiZnVuY3Rpb24oJGV2ZW50KXtcIiArIChpc0Z1bmN0aW9uSW52b2NhdGlvbiA/IChcInJldHVybiBcIiArIChoYW5kbGVyLnZhbHVlKSkgOiBoYW5kbGVyLnZhbHVlKSArIFwifVwiKSAvLyBpbmxpbmUgc3RhdGVtZW50XG4gIH0gZWxzZSB7XG4gICAgdmFyIGNvZGUgPSAnJztcbiAgICB2YXIgZ2VuTW9kaWZpZXJDb2RlID0gJyc7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gaGFuZGxlci5tb2RpZmllcnMpIHtcbiAgICAgIGlmIChtb2RpZmllckNvZGVba2V5XSkge1xuICAgICAgICBnZW5Nb2RpZmllckNvZGUgKz0gbW9kaWZpZXJDb2RlW2tleV07XG4gICAgICAgIC8vIGxlZnQvcmlnaHRcbiAgICAgICAgaWYgKGtleUNvZGVzW2tleV0pIHtcbiAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdleGFjdCcpIHtcbiAgICAgICAgdmFyIG1vZGlmaWVycyA9IChoYW5kbGVyLm1vZGlmaWVycyk7XG4gICAgICAgIGdlbk1vZGlmaWVyQ29kZSArPSBnZW5HdWFyZChcbiAgICAgICAgICBbJ2N0cmwnLCAnc2hpZnQnLCAnYWx0JywgJ21ldGEnXVxuICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoa2V5TW9kaWZpZXIpIHsgcmV0dXJuICFtb2RpZmllcnNba2V5TW9kaWZpZXJdOyB9KVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAoa2V5TW9kaWZpZXIpIHsgcmV0dXJuIChcIiRldmVudC5cIiArIGtleU1vZGlmaWVyICsgXCJLZXlcIik7IH0pXG4gICAgICAgICAgICAuam9pbignfHwnKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChrZXlzLmxlbmd0aCkge1xuICAgICAgY29kZSArPSBnZW5LZXlGaWx0ZXIoa2V5cyk7XG4gICAgfVxuICAgIC8vIE1ha2Ugc3VyZSBtb2RpZmllcnMgbGlrZSBwcmV2ZW50IGFuZCBzdG9wIGdldCBleGVjdXRlZCBhZnRlciBrZXkgZmlsdGVyaW5nXG4gICAgaWYgKGdlbk1vZGlmaWVyQ29kZSkge1xuICAgICAgY29kZSArPSBnZW5Nb2RpZmllckNvZGU7XG4gICAgfVxuICAgIHZhciBoYW5kbGVyQ29kZSA9IGlzTWV0aG9kUGF0aFxuICAgICAgPyAoXCJyZXR1cm4gXCIgKyAoaGFuZGxlci52YWx1ZSkgKyBcIigkZXZlbnQpXCIpXG4gICAgICA6IGlzRnVuY3Rpb25FeHByZXNzaW9uXG4gICAgICAgID8gKFwicmV0dXJuIChcIiArIChoYW5kbGVyLnZhbHVlKSArIFwiKSgkZXZlbnQpXCIpXG4gICAgICAgIDogaXNGdW5jdGlvbkludm9jYXRpb25cbiAgICAgICAgICA/IChcInJldHVybiBcIiArIChoYW5kbGVyLnZhbHVlKSlcbiAgICAgICAgICA6IGhhbmRsZXIudmFsdWU7XG4gICAgcmV0dXJuIChcImZ1bmN0aW9uKCRldmVudCl7XCIgKyBjb2RlICsgaGFuZGxlckNvZGUgKyBcIn1cIilcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5LZXlGaWx0ZXIgKGtleXMpIHtcbiAgcmV0dXJuIChcbiAgICAvLyBtYWtlIHN1cmUgdGhlIGtleSBmaWx0ZXJzIG9ubHkgYXBwbHkgdG8gS2V5Ym9hcmRFdmVudHNcbiAgICAvLyAjOTQ0MTogY2FuJ3QgdXNlICdrZXlDb2RlJyBpbiAkZXZlbnQgYmVjYXVzZSBDaHJvbWUgYXV0b2ZpbGwgZmlyZXMgZmFrZVxuICAgIC8vIGtleSBldmVudHMgdGhhdCBkbyBub3QgaGF2ZSBrZXlDb2RlIHByb3BlcnR5Li4uXG4gICAgXCJpZighJGV2ZW50LnR5cGUuaW5kZXhPZigna2V5JykmJlwiICtcbiAgICAoa2V5cy5tYXAoZ2VuRmlsdGVyQ29kZSkuam9pbignJiYnKSkgKyBcIilyZXR1cm4gbnVsbDtcIlxuICApXG59XG5cbmZ1bmN0aW9uIGdlbkZpbHRlckNvZGUgKGtleSkge1xuICB2YXIga2V5VmFsID0gcGFyc2VJbnQoa2V5LCAxMCk7XG4gIGlmIChrZXlWYWwpIHtcbiAgICByZXR1cm4gKFwiJGV2ZW50LmtleUNvZGUhPT1cIiArIGtleVZhbClcbiAgfVxuICB2YXIga2V5Q29kZSA9IGtleUNvZGVzW2tleV07XG4gIHZhciBrZXlOYW1lID0ga2V5TmFtZXNba2V5XTtcbiAgcmV0dXJuIChcbiAgICBcIl9rKCRldmVudC5rZXlDb2RlLFwiICtcbiAgICAoSlNPTi5zdHJpbmdpZnkoa2V5KSkgKyBcIixcIiArXG4gICAgKEpTT04uc3RyaW5naWZ5KGtleUNvZGUpKSArIFwiLFwiICtcbiAgICBcIiRldmVudC5rZXksXCIgK1xuICAgIFwiXCIgKyAoSlNPTi5zdHJpbmdpZnkoa2V5TmFtZSkpICtcbiAgICBcIilcIlxuICApXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBvbiAoZWwsIGRpcikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBkaXIubW9kaWZpZXJzKSB7XG4gICAgd2FybihcInYtb24gd2l0aG91dCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IG1vZGlmaWVycy5cIik7XG4gIH1cbiAgZWwud3JhcExpc3RlbmVycyA9IGZ1bmN0aW9uIChjb2RlKSB7IHJldHVybiAoXCJfZyhcIiArIGNvZGUgKyBcIixcIiArIChkaXIudmFsdWUpICsgXCIpXCIpOyB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gYmluZCQxIChlbCwgZGlyKSB7XG4gIGVsLndyYXBEYXRhID0gZnVuY3Rpb24gKGNvZGUpIHtcbiAgICByZXR1cm4gKFwiX2IoXCIgKyBjb2RlICsgXCIsJ1wiICsgKGVsLnRhZykgKyBcIicsXCIgKyAoZGlyLnZhbHVlKSArIFwiLFwiICsgKGRpci5tb2RpZmllcnMgJiYgZGlyLm1vZGlmaWVycy5wcm9wID8gJ3RydWUnIDogJ2ZhbHNlJykgKyAoZGlyLm1vZGlmaWVycyAmJiBkaXIubW9kaWZpZXJzLnN5bmMgPyAnLHRydWUnIDogJycpICsgXCIpXCIpXG4gIH07XG59XG5cbi8qICAqL1xuXG52YXIgYmFzZURpcmVjdGl2ZXMgPSB7XG4gIG9uOiBvbixcbiAgYmluZDogYmluZCQxLFxuICBjbG9hazogbm9vcFxufTtcblxuLyogICovXG5cblxuXG5cblxudmFyIENvZGVnZW5TdGF0ZSA9IGZ1bmN0aW9uIENvZGVnZW5TdGF0ZSAob3B0aW9ucykge1xuICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB0aGlzLndhcm4gPSBvcHRpb25zLndhcm4gfHwgYmFzZVdhcm47XG4gIHRoaXMudHJhbnNmb3JtcyA9IHBsdWNrTW9kdWxlRnVuY3Rpb24ob3B0aW9ucy5tb2R1bGVzLCAndHJhbnNmb3JtQ29kZScpO1xuICB0aGlzLmRhdGFHZW5GbnMgPSBwbHVja01vZHVsZUZ1bmN0aW9uKG9wdGlvbnMubW9kdWxlcywgJ2dlbkRhdGEnKTtcbiAgdGhpcy5kaXJlY3RpdmVzID0gZXh0ZW5kKGV4dGVuZCh7fSwgYmFzZURpcmVjdGl2ZXMpLCBvcHRpb25zLmRpcmVjdGl2ZXMpO1xuICB2YXIgaXNSZXNlcnZlZFRhZyA9IG9wdGlvbnMuaXNSZXNlcnZlZFRhZyB8fCBubztcbiAgdGhpcy5tYXliZUNvbXBvbmVudCA9IGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gISFlbC5jb21wb25lbnQgfHwgIWlzUmVzZXJ2ZWRUYWcoZWwudGFnKTsgfTtcbiAgdGhpcy5vbmNlSWQgPSAwO1xuICB0aGlzLnN0YXRpY1JlbmRlckZucyA9IFtdO1xuICB0aGlzLnByZSA9IGZhbHNlO1xufTtcblxuXG5cbmZ1bmN0aW9uIGdlbmVyYXRlIChcbiAgYXN0LFxuICBvcHRpb25zXG4pIHtcbiAgdmFyIHN0YXRlID0gbmV3IENvZGVnZW5TdGF0ZShvcHRpb25zKTtcbiAgdmFyIGNvZGUgPSBhc3QgPyBnZW5FbGVtZW50KGFzdCwgc3RhdGUpIDogJ19jKFwiZGl2XCIpJztcbiAgcmV0dXJuIHtcbiAgICByZW5kZXI6IChcIndpdGgodGhpcyl7cmV0dXJuIFwiICsgY29kZSArIFwifVwiKSxcbiAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRlLnN0YXRpY1JlbmRlckZuc1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbkVsZW1lbnQgKGVsLCBzdGF0ZSkge1xuICBpZiAoZWwucGFyZW50KSB7XG4gICAgZWwucHJlID0gZWwucHJlIHx8IGVsLnBhcmVudC5wcmU7XG4gIH1cblxuICBpZiAoZWwuc3RhdGljUm9vdCAmJiAhZWwuc3RhdGljUHJvY2Vzc2VkKSB7XG4gICAgcmV0dXJuIGdlblN0YXRpYyhlbCwgc3RhdGUpXG4gIH0gZWxzZSBpZiAoZWwub25jZSAmJiAhZWwub25jZVByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5PbmNlKGVsLCBzdGF0ZSlcbiAgfSBlbHNlIGlmIChlbC5mb3IgJiYgIWVsLmZvclByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5Gb3IoZWwsIHN0YXRlKVxuICB9IGVsc2UgaWYgKGVsLmlmICYmICFlbC5pZlByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5JZihlbCwgc3RhdGUpXG4gIH0gZWxzZSBpZiAoZWwudGFnID09PSAndGVtcGxhdGUnICYmICFlbC5zbG90VGFyZ2V0ICYmICFzdGF0ZS5wcmUpIHtcbiAgICByZXR1cm4gZ2VuQ2hpbGRyZW4oZWwsIHN0YXRlKSB8fCAndm9pZCAwJ1xuICB9IGVsc2UgaWYgKGVsLnRhZyA9PT0gJ3Nsb3QnKSB7XG4gICAgcmV0dXJuIGdlblNsb3QoZWwsIHN0YXRlKVxuICB9IGVsc2Uge1xuICAgIC8vIGNvbXBvbmVudCBvciBlbGVtZW50XG4gICAgdmFyIGNvZGU7XG4gICAgaWYgKGVsLmNvbXBvbmVudCkge1xuICAgICAgY29kZSA9IGdlbkNvbXBvbmVudChlbC5jb21wb25lbnQsIGVsLCBzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBkYXRhO1xuICAgICAgaWYgKCFlbC5wbGFpbiB8fCAoZWwucHJlICYmIHN0YXRlLm1heWJlQ29tcG9uZW50KGVsKSkpIHtcbiAgICAgICAgZGF0YSA9IGdlbkRhdGEkMihlbCwgc3RhdGUpO1xuICAgICAgfVxuXG4gICAgICB2YXIgY2hpbGRyZW4gPSBlbC5pbmxpbmVUZW1wbGF0ZSA/IG51bGwgOiBnZW5DaGlsZHJlbihlbCwgc3RhdGUsIHRydWUpO1xuICAgICAgY29kZSA9IFwiX2MoJ1wiICsgKGVsLnRhZykgKyBcIidcIiArIChkYXRhID8gKFwiLFwiICsgZGF0YSkgOiAnJykgKyAoY2hpbGRyZW4gPyAoXCIsXCIgKyBjaGlsZHJlbikgOiAnJykgKyBcIilcIjtcbiAgICB9XG4gICAgLy8gbW9kdWxlIHRyYW5zZm9ybXNcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlLnRyYW5zZm9ybXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvZGUgPSBzdGF0ZS50cmFuc2Zvcm1zW2ldKGVsLCBjb2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvZGVcbiAgfVxufVxuXG4vLyBob2lzdCBzdGF0aWMgc3ViLXRyZWVzIG91dFxuZnVuY3Rpb24gZ2VuU3RhdGljIChlbCwgc3RhdGUpIHtcbiAgZWwuc3RhdGljUHJvY2Vzc2VkID0gdHJ1ZTtcbiAgLy8gU29tZSBlbGVtZW50cyAodGVtcGxhdGVzKSBuZWVkIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSBpbnNpZGUgb2YgYSB2LXByZVxuICAvLyBub2RlLiAgQWxsIHByZSBub2RlcyBhcmUgc3RhdGljIHJvb3RzLCBzbyB3ZSBjYW4gdXNlIHRoaXMgYXMgYSBsb2NhdGlvbiB0b1xuICAvLyB3cmFwIGEgc3RhdGUgY2hhbmdlIGFuZCByZXNldCBpdCB1cG9uIGV4aXRpbmcgdGhlIHByZSBub2RlLlxuICB2YXIgb3JpZ2luYWxQcmVTdGF0ZSA9IHN0YXRlLnByZTtcbiAgaWYgKGVsLnByZSkge1xuICAgIHN0YXRlLnByZSA9IGVsLnByZTtcbiAgfVxuICBzdGF0ZS5zdGF0aWNSZW5kZXJGbnMucHVzaCgoXCJ3aXRoKHRoaXMpe3JldHVybiBcIiArIChnZW5FbGVtZW50KGVsLCBzdGF0ZSkpICsgXCJ9XCIpKTtcbiAgc3RhdGUucHJlID0gb3JpZ2luYWxQcmVTdGF0ZTtcbiAgcmV0dXJuIChcIl9tKFwiICsgKHN0YXRlLnN0YXRpY1JlbmRlckZucy5sZW5ndGggLSAxKSArIChlbC5zdGF0aWNJbkZvciA/ICcsdHJ1ZScgOiAnJykgKyBcIilcIilcbn1cblxuLy8gdi1vbmNlXG5mdW5jdGlvbiBnZW5PbmNlIChlbCwgc3RhdGUpIHtcbiAgZWwub25jZVByb2Nlc3NlZCA9IHRydWU7XG4gIGlmIChlbC5pZiAmJiAhZWwuaWZQcm9jZXNzZWQpIHtcbiAgICByZXR1cm4gZ2VuSWYoZWwsIHN0YXRlKVxuICB9IGVsc2UgaWYgKGVsLnN0YXRpY0luRm9yKSB7XG4gICAgdmFyIGtleSA9ICcnO1xuICAgIHZhciBwYXJlbnQgPSBlbC5wYXJlbnQ7XG4gICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgaWYgKHBhcmVudC5mb3IpIHtcbiAgICAgICAga2V5ID0gcGFyZW50LmtleTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XG4gICAgfVxuICAgIGlmICgha2V5KSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHN0YXRlLndhcm4oXG4gICAgICAgIFwidi1vbmNlIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlIHYtZm9yIHRoYXQgaXMga2V5ZWQuIFwiLFxuICAgICAgICBlbC5yYXdBdHRyc01hcFsndi1vbmNlJ11cbiAgICAgICk7XG4gICAgICByZXR1cm4gZ2VuRWxlbWVudChlbCwgc3RhdGUpXG4gICAgfVxuICAgIHJldHVybiAoXCJfbyhcIiArIChnZW5FbGVtZW50KGVsLCBzdGF0ZSkpICsgXCIsXCIgKyAoc3RhdGUub25jZUlkKyspICsgXCIsXCIgKyBrZXkgKyBcIilcIilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2VuU3RhdGljKGVsLCBzdGF0ZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5JZiAoXG4gIGVsLFxuICBzdGF0ZSxcbiAgYWx0R2VuLFxuICBhbHRFbXB0eVxuKSB7XG4gIGVsLmlmUHJvY2Vzc2VkID0gdHJ1ZTsgLy8gYXZvaWQgcmVjdXJzaW9uXG4gIHJldHVybiBnZW5JZkNvbmRpdGlvbnMoZWwuaWZDb25kaXRpb25zLnNsaWNlKCksIHN0YXRlLCBhbHRHZW4sIGFsdEVtcHR5KVxufVxuXG5mdW5jdGlvbiBnZW5JZkNvbmRpdGlvbnMgKFxuICBjb25kaXRpb25zLFxuICBzdGF0ZSxcbiAgYWx0R2VuLFxuICBhbHRFbXB0eVxuKSB7XG4gIGlmICghY29uZGl0aW9ucy5sZW5ndGgpIHtcbiAgICByZXR1cm4gYWx0RW1wdHkgfHwgJ19lKCknXG4gIH1cblxuICB2YXIgY29uZGl0aW9uID0gY29uZGl0aW9ucy5zaGlmdCgpO1xuICBpZiAoY29uZGl0aW9uLmV4cCkge1xuICAgIHJldHVybiAoXCIoXCIgKyAoY29uZGl0aW9uLmV4cCkgKyBcIik/XCIgKyAoZ2VuVGVybmFyeUV4cChjb25kaXRpb24uYmxvY2spKSArIFwiOlwiICsgKGdlbklmQ29uZGl0aW9ucyhjb25kaXRpb25zLCBzdGF0ZSwgYWx0R2VuLCBhbHRFbXB0eSkpKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiAoXCJcIiArIChnZW5UZXJuYXJ5RXhwKGNvbmRpdGlvbi5ibG9jaykpKVxuICB9XG5cbiAgLy8gdi1pZiB3aXRoIHYtb25jZSBzaG91bGQgZ2VuZXJhdGUgY29kZSBsaWtlIChhKT9fbSgwKTpfbSgxKVxuICBmdW5jdGlvbiBnZW5UZXJuYXJ5RXhwIChlbCkge1xuICAgIHJldHVybiBhbHRHZW5cbiAgICAgID8gYWx0R2VuKGVsLCBzdGF0ZSlcbiAgICAgIDogZWwub25jZVxuICAgICAgICA/IGdlbk9uY2UoZWwsIHN0YXRlKVxuICAgICAgICA6IGdlbkVsZW1lbnQoZWwsIHN0YXRlKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdlbkZvciAoXG4gIGVsLFxuICBzdGF0ZSxcbiAgYWx0R2VuLFxuICBhbHRIZWxwZXJcbikge1xuICB2YXIgZXhwID0gZWwuZm9yO1xuICB2YXIgYWxpYXMgPSBlbC5hbGlhcztcbiAgdmFyIGl0ZXJhdG9yMSA9IGVsLml0ZXJhdG9yMSA/IChcIixcIiArIChlbC5pdGVyYXRvcjEpKSA6ICcnO1xuICB2YXIgaXRlcmF0b3IyID0gZWwuaXRlcmF0b3IyID8gKFwiLFwiICsgKGVsLml0ZXJhdG9yMikpIDogJyc7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICBzdGF0ZS5tYXliZUNvbXBvbmVudChlbCkgJiZcbiAgICBlbC50YWcgIT09ICdzbG90JyAmJlxuICAgIGVsLnRhZyAhPT0gJ3RlbXBsYXRlJyAmJlxuICAgICFlbC5rZXlcbiAgKSB7XG4gICAgc3RhdGUud2FybihcbiAgICAgIFwiPFwiICsgKGVsLnRhZykgKyBcIiB2LWZvcj1cXFwiXCIgKyBhbGlhcyArIFwiIGluIFwiICsgZXhwICsgXCJcXFwiPjogY29tcG9uZW50IGxpc3RzIHJlbmRlcmVkIHdpdGggXCIgK1xuICAgICAgXCJ2LWZvciBzaG91bGQgaGF2ZSBleHBsaWNpdCBrZXlzLiBcIiArXG4gICAgICBcIlNlZSBodHRwczovL3Z1ZWpzLm9yZy9ndWlkZS9saXN0Lmh0bWwja2V5IGZvciBtb3JlIGluZm8uXCIsXG4gICAgICBlbC5yYXdBdHRyc01hcFsndi1mb3InXSxcbiAgICAgIHRydWUgLyogdGlwICovXG4gICAgKTtcbiAgfVxuXG4gIGVsLmZvclByb2Nlc3NlZCA9IHRydWU7IC8vIGF2b2lkIHJlY3Vyc2lvblxuICByZXR1cm4gKGFsdEhlbHBlciB8fCAnX2wnKSArIFwiKChcIiArIGV4cCArIFwiKSxcIiArXG4gICAgXCJmdW5jdGlvbihcIiArIGFsaWFzICsgaXRlcmF0b3IxICsgaXRlcmF0b3IyICsgXCIpe1wiICtcbiAgICAgIFwicmV0dXJuIFwiICsgKChhbHRHZW4gfHwgZ2VuRWxlbWVudCkoZWwsIHN0YXRlKSkgK1xuICAgICd9KSdcbn1cblxuZnVuY3Rpb24gZ2VuRGF0YSQyIChlbCwgc3RhdGUpIHtcbiAgdmFyIGRhdGEgPSAneyc7XG5cbiAgLy8gZGlyZWN0aXZlcyBmaXJzdC5cbiAgLy8gZGlyZWN0aXZlcyBtYXkgbXV0YXRlIHRoZSBlbCdzIG90aGVyIHByb3BlcnRpZXMgYmVmb3JlIHRoZXkgYXJlIGdlbmVyYXRlZC5cbiAgdmFyIGRpcnMgPSBnZW5EaXJlY3RpdmVzKGVsLCBzdGF0ZSk7XG4gIGlmIChkaXJzKSB7IGRhdGEgKz0gZGlycyArICcsJzsgfVxuXG4gIC8vIGtleVxuICBpZiAoZWwua2V5KSB7XG4gICAgZGF0YSArPSBcImtleTpcIiArIChlbC5rZXkpICsgXCIsXCI7XG4gIH1cbiAgLy8gcmVmXG4gIGlmIChlbC5yZWYpIHtcbiAgICBkYXRhICs9IFwicmVmOlwiICsgKGVsLnJlZikgKyBcIixcIjtcbiAgfVxuICBpZiAoZWwucmVmSW5Gb3IpIHtcbiAgICBkYXRhICs9IFwicmVmSW5Gb3I6dHJ1ZSxcIjtcbiAgfVxuICAvLyBwcmVcbiAgaWYgKGVsLnByZSkge1xuICAgIGRhdGEgKz0gXCJwcmU6dHJ1ZSxcIjtcbiAgfVxuICAvLyByZWNvcmQgb3JpZ2luYWwgdGFnIG5hbWUgZm9yIGNvbXBvbmVudHMgdXNpbmcgXCJpc1wiIGF0dHJpYnV0ZVxuICBpZiAoZWwuY29tcG9uZW50KSB7XG4gICAgZGF0YSArPSBcInRhZzpcXFwiXCIgKyAoZWwudGFnKSArIFwiXFxcIixcIjtcbiAgfVxuICAvLyBtb2R1bGUgZGF0YSBnZW5lcmF0aW9uIGZ1bmN0aW9uc1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlLmRhdGFHZW5GbnMubGVuZ3RoOyBpKyspIHtcbiAgICBkYXRhICs9IHN0YXRlLmRhdGFHZW5GbnNbaV0oZWwpO1xuICB9XG4gIC8vIGF0dHJpYnV0ZXNcbiAgaWYgKGVsLmF0dHJzKSB7XG4gICAgZGF0YSArPSBcImF0dHJzOlwiICsgKGdlblByb3BzKGVsLmF0dHJzKSkgKyBcIixcIjtcbiAgfVxuICAvLyBET00gcHJvcHNcbiAgaWYgKGVsLnByb3BzKSB7XG4gICAgZGF0YSArPSBcImRvbVByb3BzOlwiICsgKGdlblByb3BzKGVsLnByb3BzKSkgKyBcIixcIjtcbiAgfVxuICAvLyBldmVudCBoYW5kbGVyc1xuICBpZiAoZWwuZXZlbnRzKSB7XG4gICAgZGF0YSArPSAoZ2VuSGFuZGxlcnMoZWwuZXZlbnRzLCBmYWxzZSkpICsgXCIsXCI7XG4gIH1cbiAgaWYgKGVsLm5hdGl2ZUV2ZW50cykge1xuICAgIGRhdGEgKz0gKGdlbkhhbmRsZXJzKGVsLm5hdGl2ZUV2ZW50cywgdHJ1ZSkpICsgXCIsXCI7XG4gIH1cbiAgLy8gc2xvdCB0YXJnZXRcbiAgLy8gb25seSBmb3Igbm9uLXNjb3BlZCBzbG90c1xuICBpZiAoZWwuc2xvdFRhcmdldCAmJiAhZWwuc2xvdFNjb3BlKSB7XG4gICAgZGF0YSArPSBcInNsb3Q6XCIgKyAoZWwuc2xvdFRhcmdldCkgKyBcIixcIjtcbiAgfVxuICAvLyBzY29wZWQgc2xvdHNcbiAgaWYgKGVsLnNjb3BlZFNsb3RzKSB7XG4gICAgZGF0YSArPSAoZ2VuU2NvcGVkU2xvdHMoZWwsIGVsLnNjb3BlZFNsb3RzLCBzdGF0ZSkpICsgXCIsXCI7XG4gIH1cbiAgLy8gY29tcG9uZW50IHYtbW9kZWxcbiAgaWYgKGVsLm1vZGVsKSB7XG4gICAgZGF0YSArPSBcIm1vZGVsOnt2YWx1ZTpcIiArIChlbC5tb2RlbC52YWx1ZSkgKyBcIixjYWxsYmFjazpcIiArIChlbC5tb2RlbC5jYWxsYmFjaykgKyBcIixleHByZXNzaW9uOlwiICsgKGVsLm1vZGVsLmV4cHJlc3Npb24pICsgXCJ9LFwiO1xuICB9XG4gIC8vIGlubGluZS10ZW1wbGF0ZVxuICBpZiAoZWwuaW5saW5lVGVtcGxhdGUpIHtcbiAgICB2YXIgaW5saW5lVGVtcGxhdGUgPSBnZW5JbmxpbmVUZW1wbGF0ZShlbCwgc3RhdGUpO1xuICAgIGlmIChpbmxpbmVUZW1wbGF0ZSkge1xuICAgICAgZGF0YSArPSBpbmxpbmVUZW1wbGF0ZSArIFwiLFwiO1xuICAgIH1cbiAgfVxuICBkYXRhID0gZGF0YS5yZXBsYWNlKC8sJC8sICcnKSArICd9JztcbiAgLy8gdi1iaW5kIGR5bmFtaWMgYXJndW1lbnQgd3JhcFxuICAvLyB2LWJpbmQgd2l0aCBkeW5hbWljIGFyZ3VtZW50cyBtdXN0IGJlIGFwcGxpZWQgdXNpbmcgdGhlIHNhbWUgdi1iaW5kIG9iamVjdFxuICAvLyBtZXJnZSBoZWxwZXIgc28gdGhhdCBjbGFzcy9zdHlsZS9tdXN0VXNlUHJvcCBhdHRycyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuXG4gIGlmIChlbC5keW5hbWljQXR0cnMpIHtcbiAgICBkYXRhID0gXCJfYihcIiArIGRhdGEgKyBcIixcXFwiXCIgKyAoZWwudGFnKSArIFwiXFxcIixcIiArIChnZW5Qcm9wcyhlbC5keW5hbWljQXR0cnMpKSArIFwiKVwiO1xuICB9XG4gIC8vIHYtYmluZCBkYXRhIHdyYXBcbiAgaWYgKGVsLndyYXBEYXRhKSB7XG4gICAgZGF0YSA9IGVsLndyYXBEYXRhKGRhdGEpO1xuICB9XG4gIC8vIHYtb24gZGF0YSB3cmFwXG4gIGlmIChlbC53cmFwTGlzdGVuZXJzKSB7XG4gICAgZGF0YSA9IGVsLndyYXBMaXN0ZW5lcnMoZGF0YSk7XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cblxuZnVuY3Rpb24gZ2VuRGlyZWN0aXZlcyAoZWwsIHN0YXRlKSB7XG4gIHZhciBkaXJzID0gZWwuZGlyZWN0aXZlcztcbiAgaWYgKCFkaXJzKSB7IHJldHVybiB9XG4gIHZhciByZXMgPSAnZGlyZWN0aXZlczpbJztcbiAgdmFyIGhhc1J1bnRpbWUgPSBmYWxzZTtcbiAgdmFyIGksIGwsIGRpciwgbmVlZFJ1bnRpbWU7XG4gIGZvciAoaSA9IDAsIGwgPSBkaXJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGRpciA9IGRpcnNbaV07XG4gICAgbmVlZFJ1bnRpbWUgPSB0cnVlO1xuICAgIHZhciBnZW4gPSBzdGF0ZS5kaXJlY3RpdmVzW2Rpci5uYW1lXTtcbiAgICBpZiAoZ2VuKSB7XG4gICAgICAvLyBjb21waWxlLXRpbWUgZGlyZWN0aXZlIHRoYXQgbWFuaXB1bGF0ZXMgQVNULlxuICAgICAgLy8gcmV0dXJucyB0cnVlIGlmIGl0IGFsc28gbmVlZHMgYSBydW50aW1lIGNvdW50ZXJwYXJ0LlxuICAgICAgbmVlZFJ1bnRpbWUgPSAhIWdlbihlbCwgZGlyLCBzdGF0ZS53YXJuKTtcbiAgICB9XG4gICAgaWYgKG5lZWRSdW50aW1lKSB7XG4gICAgICBoYXNSdW50aW1lID0gdHJ1ZTtcbiAgICAgIHJlcyArPSBcIntuYW1lOlxcXCJcIiArIChkaXIubmFtZSkgKyBcIlxcXCIscmF3TmFtZTpcXFwiXCIgKyAoZGlyLnJhd05hbWUpICsgXCJcXFwiXCIgKyAoZGlyLnZhbHVlID8gKFwiLHZhbHVlOihcIiArIChkaXIudmFsdWUpICsgXCIpLGV4cHJlc3Npb246XCIgKyAoSlNPTi5zdHJpbmdpZnkoZGlyLnZhbHVlKSkpIDogJycpICsgKGRpci5hcmcgPyAoXCIsYXJnOlwiICsgKGRpci5pc0R5bmFtaWNBcmcgPyBkaXIuYXJnIDogKFwiXFxcIlwiICsgKGRpci5hcmcpICsgXCJcXFwiXCIpKSkgOiAnJykgKyAoZGlyLm1vZGlmaWVycyA/IChcIixtb2RpZmllcnM6XCIgKyAoSlNPTi5zdHJpbmdpZnkoZGlyLm1vZGlmaWVycykpKSA6ICcnKSArIFwifSxcIjtcbiAgICB9XG4gIH1cbiAgaWYgKGhhc1J1bnRpbWUpIHtcbiAgICByZXR1cm4gcmVzLnNsaWNlKDAsIC0xKSArICddJ1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbklubGluZVRlbXBsYXRlIChlbCwgc3RhdGUpIHtcbiAgdmFyIGFzdCA9IGVsLmNoaWxkcmVuWzBdO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAoXG4gICAgZWwuY2hpbGRyZW4ubGVuZ3RoICE9PSAxIHx8IGFzdC50eXBlICE9PSAxXG4gICkpIHtcbiAgICBzdGF0ZS53YXJuKFxuICAgICAgJ0lubGluZS10ZW1wbGF0ZSBjb21wb25lbnRzIG11c3QgaGF2ZSBleGFjdGx5IG9uZSBjaGlsZCBlbGVtZW50LicsXG4gICAgICB7IHN0YXJ0OiBlbC5zdGFydCB9XG4gICAgKTtcbiAgfVxuICBpZiAoYXN0ICYmIGFzdC50eXBlID09PSAxKSB7XG4gICAgdmFyIGlubGluZVJlbmRlckZucyA9IGdlbmVyYXRlKGFzdCwgc3RhdGUub3B0aW9ucyk7XG4gICAgcmV0dXJuIChcImlubGluZVRlbXBsYXRlOntyZW5kZXI6ZnVuY3Rpb24oKXtcIiArIChpbmxpbmVSZW5kZXJGbnMucmVuZGVyKSArIFwifSxzdGF0aWNSZW5kZXJGbnM6W1wiICsgKGlubGluZVJlbmRlckZucy5zdGF0aWNSZW5kZXJGbnMubWFwKGZ1bmN0aW9uIChjb2RlKSB7IHJldHVybiAoXCJmdW5jdGlvbigpe1wiICsgY29kZSArIFwifVwiKTsgfSkuam9pbignLCcpKSArIFwiXX1cIilcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5TY29wZWRTbG90cyAoXG4gIGVsLFxuICBzbG90cyxcbiAgc3RhdGVcbikge1xuICAvLyBieSBkZWZhdWx0IHNjb3BlZCBzbG90cyBhcmUgY29uc2lkZXJlZCBcInN0YWJsZVwiLCB0aGlzIGFsbG93cyBjaGlsZFxuICAvLyBjb21wb25lbnRzIHdpdGggb25seSBzY29wZWQgc2xvdHMgdG8gc2tpcCBmb3JjZWQgdXBkYXRlcyBmcm9tIHBhcmVudC5cbiAgLy8gYnV0IGluIHNvbWUgY2FzZXMgd2UgaGF2ZSB0byBiYWlsLW91dCBvZiB0aGlzIG9wdGltaXphdGlvblxuICAvLyBmb3IgZXhhbXBsZSBpZiB0aGUgc2xvdCBjb250YWlucyBkeW5hbWljIG5hbWVzLCBoYXMgdi1pZiBvciB2LWZvciBvbiB0aGVtLi4uXG4gIHZhciBuZWVkc0ZvcmNlVXBkYXRlID0gZWwuZm9yIHx8IE9iamVjdC5rZXlzKHNsb3RzKS5zb21lKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgc2xvdCA9IHNsb3RzW2tleV07XG4gICAgcmV0dXJuIChcbiAgICAgIHNsb3Quc2xvdFRhcmdldER5bmFtaWMgfHxcbiAgICAgIHNsb3QuaWYgfHxcbiAgICAgIHNsb3QuZm9yIHx8XG4gICAgICBjb250YWluc1Nsb3RDaGlsZChzbG90KSAvLyBpcyBwYXNzaW5nIGRvd24gc2xvdCBmcm9tIHBhcmVudCB3aGljaCBtYXkgYmUgZHluYW1pY1xuICAgIClcbiAgfSk7XG5cbiAgLy8gIzk1MzQ6IGlmIGEgY29tcG9uZW50IHdpdGggc2NvcGVkIHNsb3RzIGlzIGluc2lkZSBhIGNvbmRpdGlvbmFsIGJyYW5jaCxcbiAgLy8gaXQncyBwb3NzaWJsZSBmb3IgdGhlIHNhbWUgY29tcG9uZW50IHRvIGJlIHJldXNlZCBidXQgd2l0aCBkaWZmZXJlbnRcbiAgLy8gY29tcGlsZWQgc2xvdCBjb250ZW50LiBUbyBhdm9pZCB0aGF0LCB3ZSBnZW5lcmF0ZSBhIHVuaXF1ZSBrZXkgYmFzZWQgb25cbiAgLy8gdGhlIGdlbmVyYXRlZCBjb2RlIG9mIGFsbCB0aGUgc2xvdCBjb250ZW50cy5cbiAgdmFyIG5lZWRzS2V5ID0gISFlbC5pZjtcblxuICAvLyBPUiB3aGVuIGl0IGlzIGluc2lkZSBhbm90aGVyIHNjb3BlZCBzbG90IG9yIHYtZm9yICh0aGUgcmVhY3Rpdml0eSBtYXkgYmVcbiAgLy8gZGlzY29ubmVjdGVkIGR1ZSB0byB0aGUgaW50ZXJtZWRpYXRlIHNjb3BlIHZhcmlhYmxlKVxuICAvLyAjOTQzOCwgIzk1MDZcbiAgLy8gVE9ETzogdGhpcyBjYW4gYmUgZnVydGhlciBvcHRpbWl6ZWQgYnkgcHJvcGVybHkgYW5hbHl6aW5nIGluLXNjb3BlIGJpbmRpbmdzXG4gIC8vIGFuZCBza2lwIGZvcmNlIHVwZGF0aW5nIG9uZXMgdGhhdCBkbyBub3QgYWN0dWFsbHkgdXNlIHNjb3BlIHZhcmlhYmxlcy5cbiAgaWYgKCFuZWVkc0ZvcmNlVXBkYXRlKSB7XG4gICAgdmFyIHBhcmVudCA9IGVsLnBhcmVudDtcbiAgICB3aGlsZSAocGFyZW50KSB7XG4gICAgICBpZiAoXG4gICAgICAgIChwYXJlbnQuc2xvdFNjb3BlICYmIHBhcmVudC5zbG90U2NvcGUgIT09IGVtcHR5U2xvdFNjb3BlVG9rZW4pIHx8XG4gICAgICAgIHBhcmVudC5mb3JcbiAgICAgICkge1xuICAgICAgICBuZWVkc0ZvcmNlVXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJlbnQuaWYpIHtcbiAgICAgICAgbmVlZHNLZXkgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgICB9XG4gIH1cblxuICB2YXIgZ2VuZXJhdGVkU2xvdHMgPSBPYmplY3Qua2V5cyhzbG90cylcbiAgICAubWFwKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIGdlblNjb3BlZFNsb3Qoc2xvdHNba2V5XSwgc3RhdGUpOyB9KVxuICAgIC5qb2luKCcsJyk7XG5cbiAgcmV0dXJuIChcInNjb3BlZFNsb3RzOl91KFtcIiArIGdlbmVyYXRlZFNsb3RzICsgXCJdXCIgKyAobmVlZHNGb3JjZVVwZGF0ZSA/IFwiLG51bGwsdHJ1ZVwiIDogXCJcIikgKyAoIW5lZWRzRm9yY2VVcGRhdGUgJiYgbmVlZHNLZXkgPyAoXCIsbnVsbCxmYWxzZSxcIiArIChoYXNoKGdlbmVyYXRlZFNsb3RzKSkpIDogXCJcIikgKyBcIilcIilcbn1cblxuZnVuY3Rpb24gaGFzaChzdHIpIHtcbiAgdmFyIGhhc2ggPSA1MzgxO1xuICB2YXIgaSA9IHN0ci5sZW5ndGg7XG4gIHdoaWxlKGkpIHtcbiAgICBoYXNoID0gKGhhc2ggKiAzMykgXiBzdHIuY2hhckNvZGVBdCgtLWkpO1xuICB9XG4gIHJldHVybiBoYXNoID4+PiAwXG59XG5cbmZ1bmN0aW9uIGNvbnRhaW5zU2xvdENoaWxkIChlbCkge1xuICBpZiAoZWwudHlwZSA9PT0gMSkge1xuICAgIGlmIChlbC50YWcgPT09ICdzbG90Jykge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgcmV0dXJuIGVsLmNoaWxkcmVuLnNvbWUoY29udGFpbnNTbG90Q2hpbGQpXG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGdlblNjb3BlZFNsb3QgKFxuICBlbCxcbiAgc3RhdGVcbikge1xuICB2YXIgaXNMZWdhY3lTeW50YXggPSBlbC5hdHRyc01hcFsnc2xvdC1zY29wZSddO1xuICBpZiAoZWwuaWYgJiYgIWVsLmlmUHJvY2Vzc2VkICYmICFpc0xlZ2FjeVN5bnRheCkge1xuICAgIHJldHVybiBnZW5JZihlbCwgc3RhdGUsIGdlblNjb3BlZFNsb3QsIFwibnVsbFwiKVxuICB9XG4gIGlmIChlbC5mb3IgJiYgIWVsLmZvclByb2Nlc3NlZCkge1xuICAgIHJldHVybiBnZW5Gb3IoZWwsIHN0YXRlLCBnZW5TY29wZWRTbG90KVxuICB9XG4gIHZhciBzbG90U2NvcGUgPSBlbC5zbG90U2NvcGUgPT09IGVtcHR5U2xvdFNjb3BlVG9rZW5cbiAgICA/IFwiXCJcbiAgICA6IFN0cmluZyhlbC5zbG90U2NvcGUpO1xuICB2YXIgZm4gPSBcImZ1bmN0aW9uKFwiICsgc2xvdFNjb3BlICsgXCIpe1wiICtcbiAgICBcInJldHVybiBcIiArIChlbC50YWcgPT09ICd0ZW1wbGF0ZSdcbiAgICAgID8gZWwuaWYgJiYgaXNMZWdhY3lTeW50YXhcbiAgICAgICAgPyAoXCIoXCIgKyAoZWwuaWYpICsgXCIpP1wiICsgKGdlbkNoaWxkcmVuKGVsLCBzdGF0ZSkgfHwgJ3VuZGVmaW5lZCcpICsgXCI6dW5kZWZpbmVkXCIpXG4gICAgICAgIDogZ2VuQ2hpbGRyZW4oZWwsIHN0YXRlKSB8fCAndW5kZWZpbmVkJ1xuICAgICAgOiBnZW5FbGVtZW50KGVsLCBzdGF0ZSkpICsgXCJ9XCI7XG4gIC8vIHJldmVyc2UgcHJveHkgdi1zbG90IHdpdGhvdXQgc2NvcGUgb24gdGhpcy4kc2xvdHNcbiAgdmFyIHJldmVyc2VQcm94eSA9IHNsb3RTY29wZSA/IFwiXCIgOiBcIixwcm94eTp0cnVlXCI7XG4gIHJldHVybiAoXCJ7a2V5OlwiICsgKGVsLnNsb3RUYXJnZXQgfHwgXCJcXFwiZGVmYXVsdFxcXCJcIikgKyBcIixmbjpcIiArIGZuICsgcmV2ZXJzZVByb3h5ICsgXCJ9XCIpXG59XG5cbmZ1bmN0aW9uIGdlbkNoaWxkcmVuIChcbiAgZWwsXG4gIHN0YXRlLFxuICBjaGVja1NraXAsXG4gIGFsdEdlbkVsZW1lbnQsXG4gIGFsdEdlbk5vZGVcbikge1xuICB2YXIgY2hpbGRyZW4gPSBlbC5jaGlsZHJlbjtcbiAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xuICAgIHZhciBlbCQxID0gY2hpbGRyZW5bMF07XG4gICAgLy8gb3B0aW1pemUgc2luZ2xlIHYtZm9yXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgZWwkMS5mb3IgJiZcbiAgICAgIGVsJDEudGFnICE9PSAndGVtcGxhdGUnICYmXG4gICAgICBlbCQxLnRhZyAhPT0gJ3Nsb3QnXG4gICAgKSB7XG4gICAgICB2YXIgbm9ybWFsaXphdGlvblR5cGUgPSBjaGVja1NraXBcbiAgICAgICAgPyBzdGF0ZS5tYXliZUNvbXBvbmVudChlbCQxKSA/IFwiLDFcIiA6IFwiLDBcIlxuICAgICAgICA6IFwiXCI7XG4gICAgICByZXR1cm4gKFwiXCIgKyAoKGFsdEdlbkVsZW1lbnQgfHwgZ2VuRWxlbWVudCkoZWwkMSwgc3RhdGUpKSArIG5vcm1hbGl6YXRpb25UeXBlKVxuICAgIH1cbiAgICB2YXIgbm9ybWFsaXphdGlvblR5cGUkMSA9IGNoZWNrU2tpcFxuICAgICAgPyBnZXROb3JtYWxpemF0aW9uVHlwZShjaGlsZHJlbiwgc3RhdGUubWF5YmVDb21wb25lbnQpXG4gICAgICA6IDA7XG4gICAgdmFyIGdlbiA9IGFsdEdlbk5vZGUgfHwgZ2VuTm9kZTtcbiAgICByZXR1cm4gKFwiW1wiICsgKGNoaWxkcmVuLm1hcChmdW5jdGlvbiAoYykgeyByZXR1cm4gZ2VuKGMsIHN0YXRlKTsgfSkuam9pbignLCcpKSArIFwiXVwiICsgKG5vcm1hbGl6YXRpb25UeXBlJDEgPyAoXCIsXCIgKyBub3JtYWxpemF0aW9uVHlwZSQxKSA6ICcnKSlcbiAgfVxufVxuXG4vLyBkZXRlcm1pbmUgdGhlIG5vcm1hbGl6YXRpb24gbmVlZGVkIGZvciB0aGUgY2hpbGRyZW4gYXJyYXkuXG4vLyAwOiBubyBub3JtYWxpemF0aW9uIG5lZWRlZFxuLy8gMTogc2ltcGxlIG5vcm1hbGl6YXRpb24gbmVlZGVkIChwb3NzaWJsZSAxLWxldmVsIGRlZXAgbmVzdGVkIGFycmF5KVxuLy8gMjogZnVsbCBub3JtYWxpemF0aW9uIG5lZWRlZFxuZnVuY3Rpb24gZ2V0Tm9ybWFsaXphdGlvblR5cGUgKFxuICBjaGlsZHJlbixcbiAgbWF5YmVDb21wb25lbnRcbikge1xuICB2YXIgcmVzID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlbCA9IGNoaWxkcmVuW2ldO1xuICAgIGlmIChlbC50eXBlICE9PSAxKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAobmVlZHNOb3JtYWxpemF0aW9uKGVsKSB8fFxuICAgICAgICAoZWwuaWZDb25kaXRpb25zICYmIGVsLmlmQ29uZGl0aW9ucy5zb21lKGZ1bmN0aW9uIChjKSB7IHJldHVybiBuZWVkc05vcm1hbGl6YXRpb24oYy5ibG9jayk7IH0pKSkge1xuICAgICAgcmVzID0gMjtcbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIGlmIChtYXliZUNvbXBvbmVudChlbCkgfHxcbiAgICAgICAgKGVsLmlmQ29uZGl0aW9ucyAmJiBlbC5pZkNvbmRpdGlvbnMuc29tZShmdW5jdGlvbiAoYykgeyByZXR1cm4gbWF5YmVDb21wb25lbnQoYy5ibG9jayk7IH0pKSkge1xuICAgICAgcmVzID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBuZWVkc05vcm1hbGl6YXRpb24gKGVsKSB7XG4gIHJldHVybiBlbC5mb3IgIT09IHVuZGVmaW5lZCB8fCBlbC50YWcgPT09ICd0ZW1wbGF0ZScgfHwgZWwudGFnID09PSAnc2xvdCdcbn1cblxuZnVuY3Rpb24gZ2VuTm9kZSAobm9kZSwgc3RhdGUpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMSkge1xuICAgIHJldHVybiBnZW5FbGVtZW50KG5vZGUsIHN0YXRlKVxuICB9IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gMyAmJiBub2RlLmlzQ29tbWVudCkge1xuICAgIHJldHVybiBnZW5Db21tZW50KG5vZGUpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGdlblRleHQobm9kZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5UZXh0ICh0ZXh0KSB7XG4gIHJldHVybiAoXCJfdihcIiArICh0ZXh0LnR5cGUgPT09IDJcbiAgICA/IHRleHQuZXhwcmVzc2lvbiAvLyBubyBuZWVkIGZvciAoKSBiZWNhdXNlIGFscmVhZHkgd3JhcHBlZCBpbiBfcygpXG4gICAgOiB0cmFuc2Zvcm1TcGVjaWFsTmV3bGluZXMoSlNPTi5zdHJpbmdpZnkodGV4dC50ZXh0KSkpICsgXCIpXCIpXG59XG5cbmZ1bmN0aW9uIGdlbkNvbW1lbnQgKGNvbW1lbnQpIHtcbiAgcmV0dXJuIChcIl9lKFwiICsgKEpTT04uc3RyaW5naWZ5KGNvbW1lbnQudGV4dCkpICsgXCIpXCIpXG59XG5cbmZ1bmN0aW9uIGdlblNsb3QgKGVsLCBzdGF0ZSkge1xuICB2YXIgc2xvdE5hbWUgPSBlbC5zbG90TmFtZSB8fCAnXCJkZWZhdWx0XCInO1xuICB2YXIgY2hpbGRyZW4gPSBnZW5DaGlsZHJlbihlbCwgc3RhdGUpO1xuICB2YXIgcmVzID0gXCJfdChcIiArIHNsb3ROYW1lICsgKGNoaWxkcmVuID8gKFwiLFwiICsgY2hpbGRyZW4pIDogJycpO1xuICB2YXIgYXR0cnMgPSBlbC5hdHRycyB8fCBlbC5keW5hbWljQXR0cnNcbiAgICA/IGdlblByb3BzKChlbC5hdHRycyB8fCBbXSkuY29uY2F0KGVsLmR5bmFtaWNBdHRycyB8fCBbXSkubWFwKGZ1bmN0aW9uIChhdHRyKSB7IHJldHVybiAoe1xuICAgICAgICAvLyBzbG90IHByb3BzIGFyZSBjYW1lbGl6ZWRcbiAgICAgICAgbmFtZTogY2FtZWxpemUoYXR0ci5uYW1lKSxcbiAgICAgICAgdmFsdWU6IGF0dHIudmFsdWUsXG4gICAgICAgIGR5bmFtaWM6IGF0dHIuZHluYW1pY1xuICAgICAgfSk7IH0pKVxuICAgIDogbnVsbDtcbiAgdmFyIGJpbmQkJDEgPSBlbC5hdHRyc01hcFsndi1iaW5kJ107XG4gIGlmICgoYXR0cnMgfHwgYmluZCQkMSkgJiYgIWNoaWxkcmVuKSB7XG4gICAgcmVzICs9IFwiLG51bGxcIjtcbiAgfVxuICBpZiAoYXR0cnMpIHtcbiAgICByZXMgKz0gXCIsXCIgKyBhdHRycztcbiAgfVxuICBpZiAoYmluZCQkMSkge1xuICAgIHJlcyArPSAoYXR0cnMgPyAnJyA6ICcsbnVsbCcpICsgXCIsXCIgKyBiaW5kJCQxO1xuICB9XG4gIHJldHVybiByZXMgKyAnKSdcbn1cblxuLy8gY29tcG9uZW50TmFtZSBpcyBlbC5jb21wb25lbnQsIHRha2UgaXQgYXMgYXJndW1lbnQgdG8gc2h1biBmbG93J3MgcGVzc2ltaXN0aWMgcmVmaW5lbWVudFxuZnVuY3Rpb24gZ2VuQ29tcG9uZW50IChcbiAgY29tcG9uZW50TmFtZSxcbiAgZWwsXG4gIHN0YXRlXG4pIHtcbiAgdmFyIGNoaWxkcmVuID0gZWwuaW5saW5lVGVtcGxhdGUgPyBudWxsIDogZ2VuQ2hpbGRyZW4oZWwsIHN0YXRlLCB0cnVlKTtcbiAgcmV0dXJuIChcIl9jKFwiICsgY29tcG9uZW50TmFtZSArIFwiLFwiICsgKGdlbkRhdGEkMihlbCwgc3RhdGUpKSArIChjaGlsZHJlbiA/IChcIixcIiArIGNoaWxkcmVuKSA6ICcnKSArIFwiKVwiKVxufVxuXG5mdW5jdGlvbiBnZW5Qcm9wcyAocHJvcHMpIHtcbiAgdmFyIHN0YXRpY1Byb3BzID0gXCJcIjtcbiAgdmFyIGR5bmFtaWNQcm9wcyA9IFwiXCI7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcHJvcCA9IHByb3BzW2ldO1xuICAgIHZhciB2YWx1ZSA9IHRyYW5zZm9ybVNwZWNpYWxOZXdsaW5lcyhwcm9wLnZhbHVlKTtcbiAgICBpZiAocHJvcC5keW5hbWljKSB7XG4gICAgICBkeW5hbWljUHJvcHMgKz0gKHByb3AubmFtZSkgKyBcIixcIiArIHZhbHVlICsgXCIsXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRpY1Byb3BzICs9IFwiXFxcIlwiICsgKHByb3AubmFtZSkgKyBcIlxcXCI6XCIgKyB2YWx1ZSArIFwiLFwiO1xuICAgIH1cbiAgfVxuICBzdGF0aWNQcm9wcyA9IFwie1wiICsgKHN0YXRpY1Byb3BzLnNsaWNlKDAsIC0xKSkgKyBcIn1cIjtcbiAgaWYgKGR5bmFtaWNQcm9wcykge1xuICAgIHJldHVybiAoXCJfZChcIiArIHN0YXRpY1Byb3BzICsgXCIsW1wiICsgKGR5bmFtaWNQcm9wcy5zbGljZSgwLCAtMSkpICsgXCJdKVwiKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBzdGF0aWNQcm9wc1xuICB9XG59XG5cbi8vICMzODk1LCAjNDI2OFxuZnVuY3Rpb24gdHJhbnNmb3JtU3BlY2lhbE5ld2xpbmVzICh0ZXh0KSB7XG4gIHJldHVybiB0ZXh0XG4gICAgLnJlcGxhY2UoL1xcdTIwMjgvZywgJ1xcXFx1MjAyOCcpXG4gICAgLnJlcGxhY2UoL1xcdTIwMjkvZywgJ1xcXFx1MjAyOScpXG59XG5cbi8qICAqL1xuXG5cblxuLy8gdGhlc2Uga2V5d29yZHMgc2hvdWxkIG5vdCBhcHBlYXIgaW5zaWRlIGV4cHJlc3Npb25zLCBidXQgb3BlcmF0b3JzIGxpa2Vcbi8vIHR5cGVvZiwgaW5zdGFuY2VvZiBhbmQgaW4gYXJlIGFsbG93ZWRcbnZhciBwcm9oaWJpdGVkS2V5d29yZFJFID0gbmV3IFJlZ0V4cCgnXFxcXGInICsgKFxuICAnZG8saWYsZm9yLGxldCxuZXcsdHJ5LHZhcixjYXNlLGVsc2Usd2l0aCxhd2FpdCxicmVhayxjYXRjaCxjbGFzcyxjb25zdCwnICtcbiAgJ3N1cGVyLHRocm93LHdoaWxlLHlpZWxkLGRlbGV0ZSxleHBvcnQsaW1wb3J0LHJldHVybixzd2l0Y2gsZGVmYXVsdCwnICtcbiAgJ2V4dGVuZHMsZmluYWxseSxjb250aW51ZSxkZWJ1Z2dlcixmdW5jdGlvbixhcmd1bWVudHMnXG4pLnNwbGl0KCcsJykuam9pbignXFxcXGJ8XFxcXGInKSArICdcXFxcYicpO1xuXG4vLyB0aGVzZSB1bmFyeSBvcGVyYXRvcnMgc2hvdWxkIG5vdCBiZSB1c2VkIGFzIHByb3BlcnR5L21ldGhvZCBuYW1lc1xudmFyIHVuYXJ5T3BlcmF0b3JzUkUgPSBuZXcgUmVnRXhwKCdcXFxcYicgKyAoXG4gICdkZWxldGUsdHlwZW9mLHZvaWQnXG4pLnNwbGl0KCcsJykuam9pbignXFxcXHMqXFxcXChbXlxcXFwpXSpcXFxcKXxcXFxcYicpICsgJ1xcXFxzKlxcXFwoW15cXFxcKV0qXFxcXCknKTtcblxuLy8gc3RyaXAgc3RyaW5ncyBpbiBleHByZXNzaW9uc1xudmFyIHN0cmlwU3RyaW5nUkUgPSAvJyg/OlteJ1xcXFxdfFxcXFwuKSonfFwiKD86W15cIlxcXFxdfFxcXFwuKSpcInxgKD86W15gXFxcXF18XFxcXC4pKlxcJFxce3xcXH0oPzpbXmBcXFxcXXxcXFxcLikqYHxgKD86W15gXFxcXF18XFxcXC4pKmAvZztcblxuLy8gZGV0ZWN0IHByb2JsZW1hdGljIGV4cHJlc3Npb25zIGluIGEgdGVtcGxhdGVcbmZ1bmN0aW9uIGRldGVjdEVycm9ycyAoYXN0LCB3YXJuKSB7XG4gIGlmIChhc3QpIHtcbiAgICBjaGVja05vZGUoYXN0LCB3YXJuKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja05vZGUgKG5vZGUsIHdhcm4pIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMSkge1xuICAgIGZvciAodmFyIG5hbWUgaW4gbm9kZS5hdHRyc01hcCkge1xuICAgICAgaWYgKGRpclJFLnRlc3QobmFtZSkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gbm9kZS5hdHRyc01hcFtuYW1lXTtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgdmFyIHJhbmdlID0gbm9kZS5yYXdBdHRyc01hcFtuYW1lXTtcbiAgICAgICAgICBpZiAobmFtZSA9PT0gJ3YtZm9yJykge1xuICAgICAgICAgICAgY2hlY2tGb3Iobm9kZSwgKFwidi1mb3I9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCJcIiksIHdhcm4sIHJhbmdlKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG9uUkUudGVzdChuYW1lKSkge1xuICAgICAgICAgICAgY2hlY2tFdmVudCh2YWx1ZSwgKG5hbWUgKyBcIj1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIlwiKSwgd2FybiwgcmFuZ2UpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGVja0V4cHJlc3Npb24odmFsdWUsIChuYW1lICsgXCI9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCJcIiksIHdhcm4sIHJhbmdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBjaGVja05vZGUobm9kZS5jaGlsZHJlbltpXSwgd2Fybik7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gMikge1xuICAgIGNoZWNrRXhwcmVzc2lvbihub2RlLmV4cHJlc3Npb24sIG5vZGUudGV4dCwgd2Fybiwgbm9kZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tFdmVudCAoZXhwLCB0ZXh0LCB3YXJuLCByYW5nZSkge1xuICB2YXIgc3RpcHBlZCA9IGV4cC5yZXBsYWNlKHN0cmlwU3RyaW5nUkUsICcnKTtcbiAgdmFyIGtleXdvcmRNYXRjaCA9IHN0aXBwZWQubWF0Y2godW5hcnlPcGVyYXRvcnNSRSk7XG4gIGlmIChrZXl3b3JkTWF0Y2ggJiYgc3RpcHBlZC5jaGFyQXQoa2V5d29yZE1hdGNoLmluZGV4IC0gMSkgIT09ICckJykge1xuICAgIHdhcm4oXG4gICAgICBcImF2b2lkIHVzaW5nIEphdmFTY3JpcHQgdW5hcnkgb3BlcmF0b3IgYXMgcHJvcGVydHkgbmFtZTogXCIgK1xuICAgICAgXCJcXFwiXCIgKyAoa2V5d29yZE1hdGNoWzBdKSArIFwiXFxcIiBpbiBleHByZXNzaW9uIFwiICsgKHRleHQudHJpbSgpKSxcbiAgICAgIHJhbmdlXG4gICAgKTtcbiAgfVxuICBjaGVja0V4cHJlc3Npb24oZXhwLCB0ZXh0LCB3YXJuLCByYW5nZSk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrRm9yIChub2RlLCB0ZXh0LCB3YXJuLCByYW5nZSkge1xuICBjaGVja0V4cHJlc3Npb24obm9kZS5mb3IgfHwgJycsIHRleHQsIHdhcm4sIHJhbmdlKTtcbiAgY2hlY2tJZGVudGlmaWVyKG5vZGUuYWxpYXMsICd2LWZvciBhbGlhcycsIHRleHQsIHdhcm4sIHJhbmdlKTtcbiAgY2hlY2tJZGVudGlmaWVyKG5vZGUuaXRlcmF0b3IxLCAndi1mb3IgaXRlcmF0b3InLCB0ZXh0LCB3YXJuLCByYW5nZSk7XG4gIGNoZWNrSWRlbnRpZmllcihub2RlLml0ZXJhdG9yMiwgJ3YtZm9yIGl0ZXJhdG9yJywgdGV4dCwgd2FybiwgcmFuZ2UpO1xufVxuXG5mdW5jdGlvbiBjaGVja0lkZW50aWZpZXIgKFxuICBpZGVudCxcbiAgdHlwZSxcbiAgdGV4dCxcbiAgd2FybixcbiAgcmFuZ2Vcbikge1xuICBpZiAodHlwZW9mIGlkZW50ID09PSAnc3RyaW5nJykge1xuICAgIHRyeSB7XG4gICAgICBuZXcgRnVuY3Rpb24oKFwidmFyIFwiICsgaWRlbnQgKyBcIj1fXCIpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB3YXJuKChcImludmFsaWQgXCIgKyB0eXBlICsgXCIgXFxcIlwiICsgaWRlbnQgKyBcIlxcXCIgaW4gZXhwcmVzc2lvbjogXCIgKyAodGV4dC50cmltKCkpKSwgcmFuZ2UpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja0V4cHJlc3Npb24gKGV4cCwgdGV4dCwgd2FybiwgcmFuZ2UpIHtcbiAgdHJ5IHtcbiAgICBuZXcgRnVuY3Rpb24oKFwicmV0dXJuIFwiICsgZXhwKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB2YXIga2V5d29yZE1hdGNoID0gZXhwLnJlcGxhY2Uoc3RyaXBTdHJpbmdSRSwgJycpLm1hdGNoKHByb2hpYml0ZWRLZXl3b3JkUkUpO1xuICAgIGlmIChrZXl3b3JkTWF0Y2gpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIFwiYXZvaWQgdXNpbmcgSmF2YVNjcmlwdCBrZXl3b3JkIGFzIHByb3BlcnR5IG5hbWU6IFwiICtcbiAgICAgICAgXCJcXFwiXCIgKyAoa2V5d29yZE1hdGNoWzBdKSArIFwiXFxcIlxcbiAgUmF3IGV4cHJlc3Npb246IFwiICsgKHRleHQudHJpbSgpKSxcbiAgICAgICAgcmFuZ2VcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIFwiaW52YWxpZCBleHByZXNzaW9uOiBcIiArIChlLm1lc3NhZ2UpICsgXCIgaW5cXG5cXG5cIiArXG4gICAgICAgIFwiICAgIFwiICsgZXhwICsgXCJcXG5cXG5cIiArXG4gICAgICAgIFwiICBSYXcgZXhwcmVzc2lvbjogXCIgKyAodGV4dC50cmltKCkpICsgXCJcXG5cIixcbiAgICAgICAgcmFuZ2VcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG52YXIgcmFuZ2UgPSAyO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZUNvZGVGcmFtZSAoXG4gIHNvdXJjZSxcbiAgc3RhcnQsXG4gIGVuZFxuKSB7XG4gIGlmICggc3RhcnQgPT09IHZvaWQgMCApIHN0YXJ0ID0gMDtcbiAgaWYgKCBlbmQgPT09IHZvaWQgMCApIGVuZCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgdmFyIGxpbmVzID0gc291cmNlLnNwbGl0KC9cXHI/XFxuLyk7XG4gIHZhciBjb3VudCA9IDA7XG4gIHZhciByZXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIGNvdW50ICs9IGxpbmVzW2ldLmxlbmd0aCArIDE7XG4gICAgaWYgKGNvdW50ID49IHN0YXJ0KSB7XG4gICAgICBmb3IgKHZhciBqID0gaSAtIHJhbmdlOyBqIDw9IGkgKyByYW5nZSB8fCBlbmQgPiBjb3VudDsgaisrKSB7XG4gICAgICAgIGlmIChqIDwgMCB8fCBqID49IGxpbmVzLmxlbmd0aCkgeyBjb250aW51ZSB9XG4gICAgICAgIHJlcy5wdXNoKChcIlwiICsgKGogKyAxKSArIChyZXBlYXQkMShcIiBcIiwgMyAtIFN0cmluZyhqICsgMSkubGVuZ3RoKSkgKyBcInwgIFwiICsgKGxpbmVzW2pdKSkpO1xuICAgICAgICB2YXIgbGluZUxlbmd0aCA9IGxpbmVzW2pdLmxlbmd0aDtcbiAgICAgICAgaWYgKGogPT09IGkpIHtcbiAgICAgICAgICAvLyBwdXNoIHVuZGVybGluZVxuICAgICAgICAgIHZhciBwYWQgPSBzdGFydCAtIChjb3VudCAtIGxpbmVMZW5ndGgpICsgMTtcbiAgICAgICAgICB2YXIgbGVuZ3RoID0gZW5kID4gY291bnQgPyBsaW5lTGVuZ3RoIC0gcGFkIDogZW5kIC0gc3RhcnQ7XG4gICAgICAgICAgcmVzLnB1c2goXCIgICB8ICBcIiArIHJlcGVhdCQxKFwiIFwiLCBwYWQpICsgcmVwZWF0JDEoXCJeXCIsIGxlbmd0aCkpO1xuICAgICAgICB9IGVsc2UgaWYgKGogPiBpKSB7XG4gICAgICAgICAgaWYgKGVuZCA+IGNvdW50KSB7XG4gICAgICAgICAgICB2YXIgbGVuZ3RoJDEgPSBNYXRoLm1pbihlbmQgLSBjb3VudCwgbGluZUxlbmd0aCk7XG4gICAgICAgICAgICByZXMucHVzaChcIiAgIHwgIFwiICsgcmVwZWF0JDEoXCJeXCIsIGxlbmd0aCQxKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvdW50ICs9IGxpbmVMZW5ndGggKyAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzLmpvaW4oJ1xcbicpXG59XG5cbmZ1bmN0aW9uIHJlcGVhdCQxIChzdHIsIG4pIHtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICBpZiAobiA+IDApIHtcbiAgICB3aGlsZSAodHJ1ZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICBpZiAobiAmIDEpIHsgcmVzdWx0ICs9IHN0cjsgfVxuICAgICAgbiA+Pj49IDE7XG4gICAgICBpZiAobiA8PSAwKSB7IGJyZWFrIH1cbiAgICAgIHN0ciArPSBzdHI7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHRcbn1cblxuLyogICovXG5cblxuXG5mdW5jdGlvbiBjcmVhdGVGdW5jdGlvbiAoY29kZSwgZXJyb3JzKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBGdW5jdGlvbihjb2RlKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBlcnJvcnMucHVzaCh7IGVycjogZXJyLCBjb2RlOiBjb2RlIH0pO1xuICAgIHJldHVybiBub29wXG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29tcGlsZVRvRnVuY3Rpb25GbiAoY29tcGlsZSkge1xuICB2YXIgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIHJldHVybiBmdW5jdGlvbiBjb21waWxlVG9GdW5jdGlvbnMgKFxuICAgIHRlbXBsYXRlLFxuICAgIG9wdGlvbnMsXG4gICAgdm1cbiAgKSB7XG4gICAgb3B0aW9ucyA9IGV4dGVuZCh7fSwgb3B0aW9ucyk7XG4gICAgdmFyIHdhcm4kJDEgPSBvcHRpb25zLndhcm4gfHwgd2FybjtcbiAgICBkZWxldGUgb3B0aW9ucy53YXJuO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIGRldGVjdCBwb3NzaWJsZSBDU1AgcmVzdHJpY3Rpb25cbiAgICAgIHRyeSB7XG4gICAgICAgIG5ldyBGdW5jdGlvbigncmV0dXJuIDEnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGUudG9TdHJpbmcoKS5tYXRjaCgvdW5zYWZlLWV2YWx8Q1NQLykpIHtcbiAgICAgICAgICB3YXJuJCQxKFxuICAgICAgICAgICAgJ0l0IHNlZW1zIHlvdSBhcmUgdXNpbmcgdGhlIHN0YW5kYWxvbmUgYnVpbGQgb2YgVnVlLmpzIGluIGFuICcgK1xuICAgICAgICAgICAgJ2Vudmlyb25tZW50IHdpdGggQ29udGVudCBTZWN1cml0eSBQb2xpY3kgdGhhdCBwcm9oaWJpdHMgdW5zYWZlLWV2YWwuICcgK1xuICAgICAgICAgICAgJ1RoZSB0ZW1wbGF0ZSBjb21waWxlciBjYW5ub3Qgd29yayBpbiB0aGlzIGVudmlyb25tZW50LiBDb25zaWRlciAnICtcbiAgICAgICAgICAgICdyZWxheGluZyB0aGUgcG9saWN5IHRvIGFsbG93IHVuc2FmZS1ldmFsIG9yIHByZS1jb21waWxpbmcgeW91ciAnICtcbiAgICAgICAgICAgICd0ZW1wbGF0ZXMgaW50byByZW5kZXIgZnVuY3Rpb25zLidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgY2FjaGVcbiAgICB2YXIga2V5ID0gb3B0aW9ucy5kZWxpbWl0ZXJzXG4gICAgICA/IFN0cmluZyhvcHRpb25zLmRlbGltaXRlcnMpICsgdGVtcGxhdGVcbiAgICAgIDogdGVtcGxhdGU7XG4gICAgaWYgKGNhY2hlW2tleV0pIHtcbiAgICAgIHJldHVybiBjYWNoZVtrZXldXG4gICAgfVxuXG4gICAgLy8gY29tcGlsZVxuICAgIHZhciBjb21waWxlZCA9IGNvbXBpbGUodGVtcGxhdGUsIG9wdGlvbnMpO1xuXG4gICAgLy8gY2hlY2sgY29tcGlsYXRpb24gZXJyb3JzL3RpcHNcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGNvbXBpbGVkLmVycm9ycyAmJiBjb21waWxlZC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgIGlmIChvcHRpb25zLm91dHB1dFNvdXJjZVJhbmdlKSB7XG4gICAgICAgICAgY29tcGlsZWQuZXJyb3JzLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHdhcm4kJDEoXG4gICAgICAgICAgICAgIFwiRXJyb3IgY29tcGlsaW5nIHRlbXBsYXRlOlxcblxcblwiICsgKGUubXNnKSArIFwiXFxuXFxuXCIgK1xuICAgICAgICAgICAgICBnZW5lcmF0ZUNvZGVGcmFtZSh0ZW1wbGF0ZSwgZS5zdGFydCwgZS5lbmQpLFxuICAgICAgICAgICAgICB2bVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3YXJuJCQxKFxuICAgICAgICAgICAgXCJFcnJvciBjb21waWxpbmcgdGVtcGxhdGU6XFxuXFxuXCIgKyB0ZW1wbGF0ZSArIFwiXFxuXFxuXCIgK1xuICAgICAgICAgICAgY29tcGlsZWQuZXJyb3JzLm1hcChmdW5jdGlvbiAoZSkgeyByZXR1cm4gKFwiLSBcIiArIGUpOyB9KS5qb2luKCdcXG4nKSArICdcXG4nLFxuICAgICAgICAgICAgdm1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY29tcGlsZWQudGlwcyAmJiBjb21waWxlZC50aXBzLmxlbmd0aCkge1xuICAgICAgICBpZiAob3B0aW9ucy5vdXRwdXRTb3VyY2VSYW5nZSkge1xuICAgICAgICAgIGNvbXBpbGVkLnRpcHMuZm9yRWFjaChmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGlwKGUubXNnLCB2bSk7IH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbXBpbGVkLnRpcHMuZm9yRWFjaChmdW5jdGlvbiAobXNnKSB7IHJldHVybiB0aXAobXNnLCB2bSk7IH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gdHVybiBjb2RlIGludG8gZnVuY3Rpb25zXG4gICAgdmFyIHJlcyA9IHt9O1xuICAgIHZhciBmbkdlbkVycm9ycyA9IFtdO1xuICAgIHJlcy5yZW5kZXIgPSBjcmVhdGVGdW5jdGlvbihjb21waWxlZC5yZW5kZXIsIGZuR2VuRXJyb3JzKTtcbiAgICByZXMuc3RhdGljUmVuZGVyRm5zID0gY29tcGlsZWQuc3RhdGljUmVuZGVyRm5zLm1hcChmdW5jdGlvbiAoY29kZSkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUZ1bmN0aW9uKGNvZGUsIGZuR2VuRXJyb3JzKVxuICAgIH0pO1xuXG4gICAgLy8gY2hlY2sgZnVuY3Rpb24gZ2VuZXJhdGlvbiBlcnJvcnMuXG4gICAgLy8gdGhpcyBzaG91bGQgb25seSBoYXBwZW4gaWYgdGhlcmUgaXMgYSBidWcgaW4gdGhlIGNvbXBpbGVyIGl0c2VsZi5cbiAgICAvLyBtb3N0bHkgZm9yIGNvZGVnZW4gZGV2ZWxvcG1lbnQgdXNlXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICgoIWNvbXBpbGVkLmVycm9ycyB8fCAhY29tcGlsZWQuZXJyb3JzLmxlbmd0aCkgJiYgZm5HZW5FcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgIHdhcm4kJDEoXG4gICAgICAgICAgXCJGYWlsZWQgdG8gZ2VuZXJhdGUgcmVuZGVyIGZ1bmN0aW9uOlxcblxcblwiICtcbiAgICAgICAgICBmbkdlbkVycm9ycy5tYXAoZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgdmFyIGVyciA9IHJlZi5lcnI7XG4gICAgICAgICAgICB2YXIgY29kZSA9IHJlZi5jb2RlO1xuXG4gICAgICAgICAgICByZXR1cm4gKChlcnIudG9TdHJpbmcoKSkgKyBcIiBpblxcblxcblwiICsgY29kZSArIFwiXFxuXCIpO1xuICAgICAgICB9KS5qb2luKCdcXG4nKSxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoY2FjaGVba2V5XSA9IHJlcylcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gY3JlYXRlQ29tcGlsZXJDcmVhdG9yIChiYXNlQ29tcGlsZSkge1xuICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlQ29tcGlsZXIgKGJhc2VPcHRpb25zKSB7XG4gICAgZnVuY3Rpb24gY29tcGlsZSAoXG4gICAgICB0ZW1wbGF0ZSxcbiAgICAgIG9wdGlvbnNcbiAgICApIHtcbiAgICAgIHZhciBmaW5hbE9wdGlvbnMgPSBPYmplY3QuY3JlYXRlKGJhc2VPcHRpb25zKTtcbiAgICAgIHZhciBlcnJvcnMgPSBbXTtcbiAgICAgIHZhciB0aXBzID0gW107XG5cbiAgICAgIHZhciB3YXJuID0gZnVuY3Rpb24gKG1zZywgcmFuZ2UsIHRpcCkge1xuICAgICAgICAodGlwID8gdGlwcyA6IGVycm9ycykucHVzaChtc2cpO1xuICAgICAgfTtcblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgb3B0aW9ucy5vdXRwdXRTb3VyY2VSYW5nZSkge1xuICAgICAgICAgIC8vICRmbG93LWRpc2FibGUtbGluZVxuICAgICAgICAgIHZhciBsZWFkaW5nU3BhY2VMZW5ndGggPSB0ZW1wbGF0ZS5tYXRjaCgvXlxccyovKVswXS5sZW5ndGg7XG5cbiAgICAgICAgICB3YXJuID0gZnVuY3Rpb24gKG1zZywgcmFuZ2UsIHRpcCkge1xuICAgICAgICAgICAgdmFyIGRhdGEgPSB7IG1zZzogbXNnIH07XG4gICAgICAgICAgICBpZiAocmFuZ2UpIHtcbiAgICAgICAgICAgICAgaWYgKHJhbmdlLnN0YXJ0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBkYXRhLnN0YXJ0ID0gcmFuZ2Uuc3RhcnQgKyBsZWFkaW5nU3BhY2VMZW5ndGg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHJhbmdlLmVuZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5lbmQgPSByYW5nZS5lbmQgKyBsZWFkaW5nU3BhY2VMZW5ndGg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICh0aXAgPyB0aXBzIDogZXJyb3JzKS5wdXNoKGRhdGEpO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gbWVyZ2UgY3VzdG9tIG1vZHVsZXNcbiAgICAgICAgaWYgKG9wdGlvbnMubW9kdWxlcykge1xuICAgICAgICAgIGZpbmFsT3B0aW9ucy5tb2R1bGVzID1cbiAgICAgICAgICAgIChiYXNlT3B0aW9ucy5tb2R1bGVzIHx8IFtdKS5jb25jYXQob3B0aW9ucy5tb2R1bGVzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBtZXJnZSBjdXN0b20gZGlyZWN0aXZlc1xuICAgICAgICBpZiAob3B0aW9ucy5kaXJlY3RpdmVzKSB7XG4gICAgICAgICAgZmluYWxPcHRpb25zLmRpcmVjdGl2ZXMgPSBleHRlbmQoXG4gICAgICAgICAgICBPYmplY3QuY3JlYXRlKGJhc2VPcHRpb25zLmRpcmVjdGl2ZXMgfHwgbnVsbCksXG4gICAgICAgICAgICBvcHRpb25zLmRpcmVjdGl2ZXNcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvcHkgb3RoZXIgb3B0aW9uc1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gb3B0aW9ucykge1xuICAgICAgICAgIGlmIChrZXkgIT09ICdtb2R1bGVzJyAmJiBrZXkgIT09ICdkaXJlY3RpdmVzJykge1xuICAgICAgICAgICAgZmluYWxPcHRpb25zW2tleV0gPSBvcHRpb25zW2tleV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZpbmFsT3B0aW9ucy53YXJuID0gd2FybjtcblxuICAgICAgdmFyIGNvbXBpbGVkID0gYmFzZUNvbXBpbGUodGVtcGxhdGUudHJpbSgpLCBmaW5hbE9wdGlvbnMpO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgZGV0ZWN0RXJyb3JzKGNvbXBpbGVkLmFzdCwgd2Fybik7XG4gICAgICB9XG4gICAgICBjb21waWxlZC5lcnJvcnMgPSBlcnJvcnM7XG4gICAgICBjb21waWxlZC50aXBzID0gdGlwcztcbiAgICAgIHJldHVybiBjb21waWxlZFxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb21waWxlOiBjb21waWxlLFxuICAgICAgY29tcGlsZVRvRnVuY3Rpb25zOiBjcmVhdGVDb21waWxlVG9GdW5jdGlvbkZuKGNvbXBpbGUpXG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG4vLyBgY3JlYXRlQ29tcGlsZXJDcmVhdG9yYCBhbGxvd3MgY3JlYXRpbmcgY29tcGlsZXJzIHRoYXQgdXNlIGFsdGVybmF0aXZlXG4vLyBwYXJzZXIvb3B0aW1pemVyL2NvZGVnZW4sIGUuZyB0aGUgU1NSIG9wdGltaXppbmcgY29tcGlsZXIuXG4vLyBIZXJlIHdlIGp1c3QgZXhwb3J0IGEgZGVmYXVsdCBjb21waWxlciB1c2luZyB0aGUgZGVmYXVsdCBwYXJ0cy5cbnZhciBjcmVhdGVDb21waWxlciA9IGNyZWF0ZUNvbXBpbGVyQ3JlYXRvcihmdW5jdGlvbiBiYXNlQ29tcGlsZSAoXG4gIHRlbXBsYXRlLFxuICBvcHRpb25zXG4pIHtcbiAgdmFyIGFzdCA9IHBhcnNlKHRlbXBsYXRlLnRyaW0oKSwgb3B0aW9ucyk7XG4gIGlmIChvcHRpb25zLm9wdGltaXplICE9PSBmYWxzZSkge1xuICAgIG9wdGltaXplKGFzdCwgb3B0aW9ucyk7XG4gIH1cbiAgdmFyIGNvZGUgPSBnZW5lcmF0ZShhc3QsIG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIGFzdDogYXN0LFxuICAgIHJlbmRlcjogY29kZS5yZW5kZXIsXG4gICAgc3RhdGljUmVuZGVyRm5zOiBjb2RlLnN0YXRpY1JlbmRlckZuc1xuICB9XG59KTtcblxuLyogICovXG5cbnZhciByZWYkMSA9IGNyZWF0ZUNvbXBpbGVyKGJhc2VPcHRpb25zKTtcbnZhciBjb21waWxlID0gcmVmJDEuY29tcGlsZTtcbnZhciBjb21waWxlVG9GdW5jdGlvbnMgPSByZWYkMS5jb21waWxlVG9GdW5jdGlvbnM7XG5cbi8qICAqL1xuXG4vLyBjaGVjayB3aGV0aGVyIGN1cnJlbnQgYnJvd3NlciBlbmNvZGVzIGEgY2hhciBpbnNpZGUgYXR0cmlidXRlIHZhbHVlc1xudmFyIGRpdjtcbmZ1bmN0aW9uIGdldFNob3VsZERlY29kZSAoaHJlZikge1xuICBkaXYgPSBkaXYgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRpdi5pbm5lckhUTUwgPSBocmVmID8gXCI8YSBocmVmPVxcXCJcXG5cXFwiLz5cIiA6IFwiPGRpdiBhPVxcXCJcXG5cXFwiLz5cIjtcbiAgcmV0dXJuIGRpdi5pbm5lckhUTUwuaW5kZXhPZignJiMxMDsnKSA+IDBcbn1cblxuLy8gIzM2NjM6IElFIGVuY29kZXMgbmV3bGluZXMgaW5zaWRlIGF0dHJpYnV0ZSB2YWx1ZXMgd2hpbGUgb3RoZXIgYnJvd3NlcnMgZG9uJ3RcbnZhciBzaG91bGREZWNvZGVOZXdsaW5lcyA9IGluQnJvd3NlciA/IGdldFNob3VsZERlY29kZShmYWxzZSkgOiBmYWxzZTtcbi8vICM2ODI4OiBjaHJvbWUgZW5jb2RlcyBjb250ZW50IGluIGFbaHJlZl1cbnZhciBzaG91bGREZWNvZGVOZXdsaW5lc0ZvckhyZWYgPSBpbkJyb3dzZXIgPyBnZXRTaG91bGREZWNvZGUodHJ1ZSkgOiBmYWxzZTtcblxuLyogICovXG5cbnZhciBpZFRvVGVtcGxhdGUgPSBjYWNoZWQoZnVuY3Rpb24gKGlkKSB7XG4gIHZhciBlbCA9IHF1ZXJ5KGlkKTtcbiAgcmV0dXJuIGVsICYmIGVsLmlubmVySFRNTFxufSk7XG5cbnZhciBtb3VudCA9IFZ1ZS5wcm90b3R5cGUuJG1vdW50O1xuVnVlLnByb3RvdHlwZS4kbW91bnQgPSBmdW5jdGlvbiAoXG4gIGVsLFxuICBoeWRyYXRpbmdcbikge1xuICBlbCA9IGVsICYmIHF1ZXJ5KGVsKTtcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGVsID09PSBkb2N1bWVudC5ib2R5IHx8IGVsID09PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICBcIkRvIG5vdCBtb3VudCBWdWUgdG8gPGh0bWw+IG9yIDxib2R5PiAtIG1vdW50IHRvIG5vcm1hbCBlbGVtZW50cyBpbnN0ZWFkLlwiXG4gICAgKTtcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgdmFyIG9wdGlvbnMgPSB0aGlzLiRvcHRpb25zO1xuICAvLyByZXNvbHZlIHRlbXBsYXRlL2VsIGFuZCBjb252ZXJ0IHRvIHJlbmRlciBmdW5jdGlvblxuICBpZiAoIW9wdGlvbnMucmVuZGVyKSB7XG4gICAgdmFyIHRlbXBsYXRlID0gb3B0aW9ucy50ZW1wbGF0ZTtcbiAgICBpZiAodGVtcGxhdGUpIHtcbiAgICAgIGlmICh0eXBlb2YgdGVtcGxhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICh0ZW1wbGF0ZS5jaGFyQXQoMCkgPT09ICcjJykge1xuICAgICAgICAgIHRlbXBsYXRlID0gaWRUb1RlbXBsYXRlKHRlbXBsYXRlKTtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhdGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICAgIChcIlRlbXBsYXRlIGVsZW1lbnQgbm90IGZvdW5kIG9yIGlzIGVtcHR5OiBcIiArIChvcHRpb25zLnRlbXBsYXRlKSksXG4gICAgICAgICAgICAgIHRoaXNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRlbXBsYXRlLm5vZGVUeXBlKSB7XG4gICAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGUuaW5uZXJIVE1MO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3YXJuKCdpbnZhbGlkIHRlbXBsYXRlIG9wdGlvbjonICsgdGVtcGxhdGUsIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbCkge1xuICAgICAgdGVtcGxhdGUgPSBnZXRPdXRlckhUTUwoZWwpO1xuICAgIH1cbiAgICBpZiAodGVtcGxhdGUpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY29uZmlnLnBlcmZvcm1hbmNlICYmIG1hcmspIHtcbiAgICAgICAgbWFyaygnY29tcGlsZScpO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVmID0gY29tcGlsZVRvRnVuY3Rpb25zKHRlbXBsYXRlLCB7XG4gICAgICAgIG91dHB1dFNvdXJjZVJhbmdlOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nLFxuICAgICAgICBzaG91bGREZWNvZGVOZXdsaW5lczogc2hvdWxkRGVjb2RlTmV3bGluZXMsXG4gICAgICAgIHNob3VsZERlY29kZU5ld2xpbmVzRm9ySHJlZjogc2hvdWxkRGVjb2RlTmV3bGluZXNGb3JIcmVmLFxuICAgICAgICBkZWxpbWl0ZXJzOiBvcHRpb25zLmRlbGltaXRlcnMsXG4gICAgICAgIGNvbW1lbnRzOiBvcHRpb25zLmNvbW1lbnRzXG4gICAgICB9LCB0aGlzKTtcbiAgICAgIHZhciByZW5kZXIgPSByZWYucmVuZGVyO1xuICAgICAgdmFyIHN0YXRpY1JlbmRlckZucyA9IHJlZi5zdGF0aWNSZW5kZXJGbnM7XG4gICAgICBvcHRpb25zLnJlbmRlciA9IHJlbmRlcjtcbiAgICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gc3RhdGljUmVuZGVyRm5zO1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNvbmZpZy5wZXJmb3JtYW5jZSAmJiBtYXJrKSB7XG4gICAgICAgIG1hcmsoJ2NvbXBpbGUgZW5kJyk7XG4gICAgICAgIG1lYXN1cmUoKFwidnVlIFwiICsgKHRoaXMuX25hbWUpICsgXCIgY29tcGlsZVwiKSwgJ2NvbXBpbGUnLCAnY29tcGlsZSBlbmQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1vdW50LmNhbGwodGhpcywgZWwsIGh5ZHJhdGluZylcbn07XG5cbi8qKlxuICogR2V0IG91dGVySFRNTCBvZiBlbGVtZW50cywgdGFraW5nIGNhcmVcbiAqIG9mIFNWRyBlbGVtZW50cyBpbiBJRSBhcyB3ZWxsLlxuICovXG5mdW5jdGlvbiBnZXRPdXRlckhUTUwgKGVsKSB7XG4gIGlmIChlbC5vdXRlckhUTUwpIHtcbiAgICByZXR1cm4gZWwub3V0ZXJIVE1MXG4gIH0gZWxzZSB7XG4gICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChlbC5jbG9uZU5vZGUodHJ1ZSkpO1xuICAgIHJldHVybiBjb250YWluZXIuaW5uZXJIVE1MXG4gIH1cbn1cblxuVnVlLmNvbXBpbGUgPSBjb21waWxlVG9GdW5jdGlvbnM7XG5cbmV4cG9ydCBkZWZhdWx0IFZ1ZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3Z1ZS9kaXN0L3Z1ZS5lc20uanNcbi8vIG1vZHVsZSBpZCA9IDUwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///50\n"); /***/ }), /* 51 */ @@ -441,7 +441,7 @@ eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__object__ = __webpack /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BBreadcrumbItem; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__breadcrumb_link__ = __webpack_require__(108);\n\n\n // @vue/component\n\nvar BBreadcrumbItem =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BBreadcrumbItem',\n functional: true,\n props: __WEBPACK_IMPORTED_MODULE_2__breadcrumb_link__[\"b\" /* props */],\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('li', Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'breadcrumb-item',\n class: {\n active: props.active\n }\n }), [h(__WEBPACK_IMPORTED_MODULE_2__breadcrumb_link__[\"a\" /* BBreadcrumbLink */], {\n props: props\n }, children)]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWItaXRlbS5qcz9mY2ViIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ29CO0FBQ0s7O0FBRXBEO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQSxTQUFTLCtEQUFLO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0ZBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLE1BQU0seUVBQWU7QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjU0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgbWVyZ2VEYXRhIH0gZnJvbSAndnVlLWZ1bmN0aW9uYWwtZGF0YS1tZXJnZSc7XG5pbXBvcnQgeyBCQnJlYWRjcnVtYkxpbmssIHByb3BzIH0gZnJvbSAnLi9icmVhZGNydW1iLWxpbmsnOyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJCcmVhZGNydW1iSXRlbSA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JCcmVhZGNydW1iSXRlbScsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiBwcm9wcyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgICByZXR1cm4gaCgnbGknLCBtZXJnZURhdGEoZGF0YSwge1xuICAgICAgc3RhdGljQ2xhc3M6ICdicmVhZGNydW1iLWl0ZW0nLFxuICAgICAgY2xhc3M6IHtcbiAgICAgICAgYWN0aXZlOiBwcm9wcy5hY3RpdmVcbiAgICAgIH1cbiAgICB9KSwgW2goQkJyZWFkY3J1bWJMaW5rLCB7XG4gICAgICBwcm9wczogcHJvcHNcbiAgICB9LCBjaGlsZHJlbildKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWItaXRlbS5qc1xuLy8gbW9kdWxlIGlkID0gNTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///54\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BBreadcrumbItem; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__breadcrumb_link__ = __webpack_require__(110);\n\n\n // @vue/component\n\nvar BBreadcrumbItem =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BBreadcrumbItem',\n functional: true,\n props: __WEBPACK_IMPORTED_MODULE_2__breadcrumb_link__[\"b\" /* props */],\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('li', Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'breadcrumb-item',\n class: {\n active: props.active\n }\n }), [h(__WEBPACK_IMPORTED_MODULE_2__breadcrumb_link__[\"a\" /* BBreadcrumbLink */], {\n props: props\n }, children)]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWItaXRlbS5qcz9mY2ViIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ29CO0FBQ0s7O0FBRXBEO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQSxTQUFTLCtEQUFLO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0ZBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLE1BQU0seUVBQWU7QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjU0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgbWVyZ2VEYXRhIH0gZnJvbSAndnVlLWZ1bmN0aW9uYWwtZGF0YS1tZXJnZSc7XG5pbXBvcnQgeyBCQnJlYWRjcnVtYkxpbmssIHByb3BzIH0gZnJvbSAnLi9icmVhZGNydW1iLWxpbmsnOyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJCcmVhZGNydW1iSXRlbSA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JCcmVhZGNydW1iSXRlbScsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiBwcm9wcyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgICByZXR1cm4gaCgnbGknLCBtZXJnZURhdGEoZGF0YSwge1xuICAgICAgc3RhdGljQ2xhc3M6ICdicmVhZGNydW1iLWl0ZW0nLFxuICAgICAgY2xhc3M6IHtcbiAgICAgICAgYWN0aXZlOiBwcm9wcy5hY3RpdmVcbiAgICAgIH1cbiAgICB9KSwgW2goQkJyZWFkY3J1bWJMaW5rLCB7XG4gICAgICBwcm9wczogcHJvcHNcbiAgICB9LCBjaGlsZHJlbildKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWItaXRlbS5qc1xuLy8gbW9kdWxlIGlkID0gNTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///54\n"); /***/ }), /* 55 */ @@ -497,14 +497,14 @@ eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return props; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BImgLazy; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_env__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__directives_visible__ = __webpack_require__(117);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__img__ = __webpack_require__(38);\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\nvar NAME = 'BImgLazy';\nvar props = {\n src: {\n type: String,\n default: null,\n required: true\n },\n alt: {\n type: String,\n default: null\n },\n width: {\n type: [Number, String],\n default: null\n },\n height: {\n type: [Number, String],\n default: null\n },\n blankSrc: {\n // If null, a blank image is generated\n type: String,\n default: null\n },\n blankColor: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'blankColor');\n }\n },\n blankWidth: {\n type: [Number, String],\n default: null\n },\n blankHeight: {\n type: [Number, String],\n default: null\n },\n show: {\n type: Boolean,\n default: false\n },\n fluid: {\n type: Boolean,\n default: false\n },\n fluidGrow: {\n type: Boolean,\n default: false\n },\n block: {\n type: Boolean,\n default: false\n },\n thumbnail: {\n type: Boolean,\n default: false\n },\n rounded: {\n type: [Boolean, String],\n default: false\n },\n left: {\n type: Boolean,\n default: false\n },\n right: {\n type: Boolean,\n default: false\n },\n center: {\n type: Boolean,\n default: false\n },\n offset: {\n // Distance away from viewport (in pixels) before being\n // considered \"visible\"\n type: [Number, String],\n default: 360\n }\n}; // @vue/component\n\nvar BImgLazy =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n directives: {\n bVisible: __WEBPACK_IMPORTED_MODULE_3__directives_visible__[\"a\" /* VBVisible */]\n },\n props: props,\n data: function data() {\n return {\n isShown: this.show\n };\n },\n computed: {\n computedSrc: function computedSrc() {\n return !this.blankSrc || this.isShown ? this.src : this.blankSrc;\n },\n computedBlank: function computedBlank() {\n return !(this.isShown || this.blankSrc);\n },\n computedWidth: function computedWidth() {\n return this.isShown ? this.width : this.blankWidth || this.width;\n },\n computedHeight: function computedHeight() {\n return this.isShown ? this.height : this.blankHeight || this.height;\n }\n },\n watch: {\n show: function show(newVal, oldVal) {\n if (newVal !== oldVal) {\n // If IntersectionObserver support is not available, image is always shown\n var visible = __WEBPACK_IMPORTED_MODULE_2__utils_env__[\"c\" /* hasIntersectionObserverSupport */] ? newVal : true;\n this.isShown = visible;\n\n if (visible !== newVal) {\n // Ensure the show prop is synced (when no IntersectionObserver)\n this.$nextTick(this.updateShowProp);\n }\n }\n },\n isShown: function isShown(newVal, oldVal) {\n if (newVal !== oldVal) {\n // Update synched show prop\n this.updateShowProp();\n }\n }\n },\n mounted: function mounted() {\n // If IntersectionObserver is not available, image is always shown\n this.isShown = __WEBPACK_IMPORTED_MODULE_2__utils_env__[\"c\" /* hasIntersectionObserverSupport */] ? this.show : true;\n },\n methods: {\n updateShowProp: function updateShowProp() {\n this.$emit('update:show', this.isShown);\n },\n doShow: function doShow(visible) {\n // If IntersectionObserver is not supported, the callback\n // will be called with `null` rather than `true` or `false`\n if ((visible || visible === null) && !this.isShown) {\n this.isShown = true;\n }\n }\n },\n render: function render(h) {\n var directives = [];\n\n if (!this.isShown) {\n var _modifiers;\n\n // We only add the visible directive if we are not shown\n directives.push({\n // Visible directive will silently do nothing if\n // IntersectionObserver is not supported\n name: 'b-visible',\n // Value expects a callback (passed one arg of `visible` = `true` or `false`)\n value: this.doShow,\n modifiers: (_modifiers = {}, _defineProperty(_modifiers, \"\".concat(parseInt(this.offset, 10) || 0), true), _defineProperty(_modifiers, \"once\", true), _modifiers)\n });\n }\n\n return h(__WEBPACK_IMPORTED_MODULE_4__img__[\"a\" /* BImg */], {\n directives: directives,\n props: {\n // Computed value props\n src: this.computedSrc,\n blank: this.computedBlank,\n width: this.computedWidth,\n height: this.computedHeight,\n // Passthrough props\n alt: this.alt,\n blankColor: this.blankColor,\n fluid: this.fluid,\n fluidGrow: this.fluidGrow,\n block: this.block,\n thumbnail: this.thumbnail,\n rounded: this.rounded,\n left: this.left,\n right: this.right,\n center: this.center\n }\n });\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9pbWFnZS9pbWctbGF6eS5qcz8zZjY5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ3NCO0FBQ1M7QUFDWjtBQUN4QjtBQUM3QjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRkFBa0I7QUFDL0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVLO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQSxjQUFjLHNFQUFTO0FBQ3ZCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLGtGQUE4QjtBQUNwRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbUJBQW1CLGtGQUE4QjtBQUNqRCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQyxPQUFPO0FBQ1A7O0FBRUEsYUFBYSxrREFBSTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiNjIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi8uLi91dGlscy9jb25maWcnO1xuaW1wb3J0IHsgaGFzSW50ZXJzZWN0aW9uT2JzZXJ2ZXJTdXBwb3J0IH0gZnJvbSAnLi4vLi4vdXRpbHMvZW52JztcbmltcG9ydCB7IFZCVmlzaWJsZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdmlzaWJsZSc7XG5pbXBvcnQgeyBCSW1nIH0gZnJvbSAnLi9pbWcnO1xudmFyIE5BTUUgPSAnQkltZ0xhenknO1xuZXhwb3J0IHZhciBwcm9wcyA9IHtcbiAgc3JjOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgcmVxdWlyZWQ6IHRydWVcbiAgfSxcbiAgYWx0OiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgd2lkdGg6IHtcbiAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgaGVpZ2h0OiB7XG4gICAgdHlwZTogW051bWJlciwgU3RyaW5nXSxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH0sXG4gIGJsYW5rU3JjOiB7XG4gICAgLy8gSWYgbnVsbCwgYSBibGFuayBpbWFnZSBpcyBnZW5lcmF0ZWRcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBibGFua0NvbG9yOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAnYmxhbmtDb2xvcicpO1xuICAgIH1cbiAgfSxcbiAgYmxhbmtXaWR0aDoge1xuICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBibGFua0hlaWdodDoge1xuICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBzaG93OiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBmbHVpZDoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgZmx1aWRHcm93OiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBibG9jazoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgdGh1bWJuYWlsOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICByb3VuZGVkOiB7XG4gICAgdHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgbGVmdDoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgcmlnaHQ6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIGNlbnRlcjoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgb2Zmc2V0OiB7XG4gICAgLy8gRGlzdGFuY2UgYXdheSBmcm9tIHZpZXdwb3J0IChpbiBwaXhlbHMpIGJlZm9yZSBiZWluZ1xuICAgIC8vIGNvbnNpZGVyZWQgXCJ2aXNpYmxlXCJcbiAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxuICAgIGRlZmF1bHQ6IDM2MFxuICB9XG59OyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJJbWdMYXp5ID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBkaXJlY3RpdmVzOiB7XG4gICAgYlZpc2libGU6IFZCVmlzaWJsZVxuICB9LFxuICBwcm9wczogcHJvcHMsXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzU2hvd246IHRoaXMuc2hvd1xuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgY29tcHV0ZWRTcmM6IGZ1bmN0aW9uIGNvbXB1dGVkU3JjKCkge1xuICAgICAgcmV0dXJuICF0aGlzLmJsYW5rU3JjIHx8IHRoaXMuaXNTaG93biA/IHRoaXMuc3JjIDogdGhpcy5ibGFua1NyYztcbiAgICB9LFxuICAgIGNvbXB1dGVkQmxhbms6IGZ1bmN0aW9uIGNvbXB1dGVkQmxhbmsoKSB7XG4gICAgICByZXR1cm4gISh0aGlzLmlzU2hvd24gfHwgdGhpcy5ibGFua1NyYyk7XG4gICAgfSxcbiAgICBjb21wdXRlZFdpZHRoOiBmdW5jdGlvbiBjb21wdXRlZFdpZHRoKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNTaG93biA/IHRoaXMud2lkdGggOiB0aGlzLmJsYW5rV2lkdGggfHwgdGhpcy53aWR0aDtcbiAgICB9LFxuICAgIGNvbXB1dGVkSGVpZ2h0OiBmdW5jdGlvbiBjb21wdXRlZEhlaWdodCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzU2hvd24gPyB0aGlzLmhlaWdodCA6IHRoaXMuYmxhbmtIZWlnaHQgfHwgdGhpcy5oZWlnaHQ7XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIHNob3c6IGZ1bmN0aW9uIHNob3cobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIGlmIChuZXdWYWwgIT09IG9sZFZhbCkge1xuICAgICAgICAvLyBJZiBJbnRlcnNlY3Rpb25PYnNlcnZlciBzdXBwb3J0IGlzIG5vdCBhdmFpbGFibGUsIGltYWdlIGlzIGFsd2F5cyBzaG93blxuICAgICAgICB2YXIgdmlzaWJsZSA9IGhhc0ludGVyc2VjdGlvbk9ic2VydmVyU3VwcG9ydCA/IG5ld1ZhbCA6IHRydWU7XG4gICAgICAgIHRoaXMuaXNTaG93biA9IHZpc2libGU7XG5cbiAgICAgICAgaWYgKHZpc2libGUgIT09IG5ld1ZhbCkge1xuICAgICAgICAgIC8vIEVuc3VyZSB0aGUgc2hvdyBwcm9wIGlzIHN5bmNlZCAod2hlbiBubyBJbnRlcnNlY3Rpb25PYnNlcnZlcilcbiAgICAgICAgICB0aGlzLiRuZXh0VGljayh0aGlzLnVwZGF0ZVNob3dQcm9wKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgaXNTaG93bjogZnVuY3Rpb24gaXNTaG93bihuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgaWYgKG5ld1ZhbCAhPT0gb2xkVmFsKSB7XG4gICAgICAgIC8vIFVwZGF0ZSBzeW5jaGVkIHNob3cgcHJvcFxuICAgICAgICB0aGlzLnVwZGF0ZVNob3dQcm9wKCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIC8vIElmIEludGVyc2VjdGlvbk9ic2VydmVyIGlzIG5vdCBhdmFpbGFibGUsIGltYWdlIGlzIGFsd2F5cyBzaG93blxuICAgIHRoaXMuaXNTaG93biA9IGhhc0ludGVyc2VjdGlvbk9ic2VydmVyU3VwcG9ydCA/IHRoaXMuc2hvdyA6IHRydWU7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICB1cGRhdGVTaG93UHJvcDogZnVuY3Rpb24gdXBkYXRlU2hvd1Byb3AoKSB7XG4gICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6c2hvdycsIHRoaXMuaXNTaG93bik7XG4gICAgfSxcbiAgICBkb1Nob3c6IGZ1bmN0aW9uIGRvU2hvdyh2aXNpYmxlKSB7XG4gICAgICAvLyBJZiBJbnRlcnNlY3Rpb25PYnNlcnZlciBpcyBub3Qgc3VwcG9ydGVkLCB0aGUgY2FsbGJhY2tcbiAgICAgIC8vIHdpbGwgYmUgY2FsbGVkIHdpdGggYG51bGxgIHJhdGhlciB0aGFuIGB0cnVlYCBvciBgZmFsc2VgXG4gICAgICBpZiAoKHZpc2libGUgfHwgdmlzaWJsZSA9PT0gbnVsbCkgJiYgIXRoaXMuaXNTaG93bikge1xuICAgICAgICB0aGlzLmlzU2hvd24gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBkaXJlY3RpdmVzID0gW107XG5cbiAgICBpZiAoIXRoaXMuaXNTaG93bikge1xuICAgICAgdmFyIF9tb2RpZmllcnM7XG5cbiAgICAgIC8vIFdlIG9ubHkgYWRkIHRoZSB2aXNpYmxlIGRpcmVjdGl2ZSBpZiB3ZSBhcmUgbm90IHNob3duXG4gICAgICBkaXJlY3RpdmVzLnB1c2goe1xuICAgICAgICAvLyBWaXNpYmxlIGRpcmVjdGl2ZSB3aWxsIHNpbGVudGx5IGRvIG5vdGhpbmcgaWZcbiAgICAgICAgLy8gSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgaXMgbm90IHN1cHBvcnRlZFxuICAgICAgICBuYW1lOiAnYi12aXNpYmxlJyxcbiAgICAgICAgLy8gVmFsdWUgZXhwZWN0cyBhIGNhbGxiYWNrIChwYXNzZWQgb25lIGFyZyBvZiBgdmlzaWJsZWAgPSBgdHJ1ZWAgb3IgYGZhbHNlYClcbiAgICAgICAgdmFsdWU6IHRoaXMuZG9TaG93LFxuICAgICAgICBtb2RpZmllcnM6IChfbW9kaWZpZXJzID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfbW9kaWZpZXJzLCBcIlwiLmNvbmNhdChwYXJzZUludCh0aGlzLm9mZnNldCwgMTApIHx8IDApLCB0cnVlKSwgX2RlZmluZVByb3BlcnR5KF9tb2RpZmllcnMsIFwib25jZVwiLCB0cnVlKSwgX21vZGlmaWVycylcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBoKEJJbWcsIHtcbiAgICAgIGRpcmVjdGl2ZXM6IGRpcmVjdGl2ZXMsXG4gICAgICBwcm9wczoge1xuICAgICAgICAvLyBDb21wdXRlZCB2YWx1ZSBwcm9wc1xuICAgICAgICBzcmM6IHRoaXMuY29tcHV0ZWRTcmMsXG4gICAgICAgIGJsYW5rOiB0aGlzLmNvbXB1dGVkQmxhbmssXG4gICAgICAgIHdpZHRoOiB0aGlzLmNvbXB1dGVkV2lkdGgsXG4gICAgICAgIGhlaWdodDogdGhpcy5jb21wdXRlZEhlaWdodCxcbiAgICAgICAgLy8gUGFzc3Rocm91Z2ggcHJvcHNcbiAgICAgICAgYWx0OiB0aGlzLmFsdCxcbiAgICAgICAgYmxhbmtDb2xvcjogdGhpcy5ibGFua0NvbG9yLFxuICAgICAgICBmbHVpZDogdGhpcy5mbHVpZCxcbiAgICAgICAgZmx1aWRHcm93OiB0aGlzLmZsdWlkR3JvdyxcbiAgICAgICAgYmxvY2s6IHRoaXMuYmxvY2ssXG4gICAgICAgIHRodW1ibmFpbDogdGhpcy50aHVtYm5haWwsXG4gICAgICAgIHJvdW5kZWQ6IHRoaXMucm91bmRlZCxcbiAgICAgICAgbGVmdDogdGhpcy5sZWZ0LFxuICAgICAgICByaWdodDogdGhpcy5yaWdodCxcbiAgICAgICAgY2VudGVyOiB0aGlzLmNlbnRlclxuICAgICAgfVxuICAgIH0pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2ltYWdlL2ltZy1sYXp5LmpzXG4vLyBtb2R1bGUgaWQgPSA2MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///62\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return props; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BImgLazy; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_env__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__directives_visible__ = __webpack_require__(119);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__img__ = __webpack_require__(38);\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\nvar NAME = 'BImgLazy';\nvar props = {\n src: {\n type: String,\n default: null,\n required: true\n },\n alt: {\n type: String,\n default: null\n },\n width: {\n type: [Number, String],\n default: null\n },\n height: {\n type: [Number, String],\n default: null\n },\n blankSrc: {\n // If null, a blank image is generated\n type: String,\n default: null\n },\n blankColor: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'blankColor');\n }\n },\n blankWidth: {\n type: [Number, String],\n default: null\n },\n blankHeight: {\n type: [Number, String],\n default: null\n },\n show: {\n type: Boolean,\n default: false\n },\n fluid: {\n type: Boolean,\n default: false\n },\n fluidGrow: {\n type: Boolean,\n default: false\n },\n block: {\n type: Boolean,\n default: false\n },\n thumbnail: {\n type: Boolean,\n default: false\n },\n rounded: {\n type: [Boolean, String],\n default: false\n },\n left: {\n type: Boolean,\n default: false\n },\n right: {\n type: Boolean,\n default: false\n },\n center: {\n type: Boolean,\n default: false\n },\n offset: {\n // Distance away from viewport (in pixels) before being\n // considered \"visible\"\n type: [Number, String],\n default: 360\n }\n}; // @vue/component\n\nvar BImgLazy =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n directives: {\n bVisible: __WEBPACK_IMPORTED_MODULE_3__directives_visible__[\"a\" /* VBVisible */]\n },\n props: props,\n data: function data() {\n return {\n isShown: this.show\n };\n },\n computed: {\n computedSrc: function computedSrc() {\n return !this.blankSrc || this.isShown ? this.src : this.blankSrc;\n },\n computedBlank: function computedBlank() {\n return !(this.isShown || this.blankSrc);\n },\n computedWidth: function computedWidth() {\n return this.isShown ? this.width : this.blankWidth || this.width;\n },\n computedHeight: function computedHeight() {\n return this.isShown ? this.height : this.blankHeight || this.height;\n }\n },\n watch: {\n show: function show(newVal, oldVal) {\n if (newVal !== oldVal) {\n // If IntersectionObserver support is not available, image is always shown\n var visible = __WEBPACK_IMPORTED_MODULE_2__utils_env__[\"c\" /* hasIntersectionObserverSupport */] ? newVal : true;\n this.isShown = visible;\n\n if (visible !== newVal) {\n // Ensure the show prop is synced (when no IntersectionObserver)\n this.$nextTick(this.updateShowProp);\n }\n }\n },\n isShown: function isShown(newVal, oldVal) {\n if (newVal !== oldVal) {\n // Update synched show prop\n this.updateShowProp();\n }\n }\n },\n mounted: function mounted() {\n // If IntersectionObserver is not available, image is always shown\n this.isShown = __WEBPACK_IMPORTED_MODULE_2__utils_env__[\"c\" /* hasIntersectionObserverSupport */] ? this.show : true;\n },\n methods: {\n updateShowProp: function updateShowProp() {\n this.$emit('update:show', this.isShown);\n },\n doShow: function doShow(visible) {\n // If IntersectionObserver is not supported, the callback\n // will be called with `null` rather than `true` or `false`\n if ((visible || visible === null) && !this.isShown) {\n this.isShown = true;\n }\n }\n },\n render: function render(h) {\n var directives = [];\n\n if (!this.isShown) {\n var _modifiers;\n\n // We only add the visible directive if we are not shown\n directives.push({\n // Visible directive will silently do nothing if\n // IntersectionObserver is not supported\n name: 'b-visible',\n // Value expects a callback (passed one arg of `visible` = `true` or `false`)\n value: this.doShow,\n modifiers: (_modifiers = {}, _defineProperty(_modifiers, \"\".concat(parseInt(this.offset, 10) || 0), true), _defineProperty(_modifiers, \"once\", true), _modifiers)\n });\n }\n\n return h(__WEBPACK_IMPORTED_MODULE_4__img__[\"a\" /* BImg */], {\n directives: directives,\n props: {\n // Computed value props\n src: this.computedSrc,\n blank: this.computedBlank,\n width: this.computedWidth,\n height: this.computedHeight,\n // Passthrough props\n alt: this.alt,\n blankColor: this.blankColor,\n fluid: this.fluid,\n fluidGrow: this.fluidGrow,\n block: this.block,\n thumbnail: this.thumbnail,\n rounded: this.rounded,\n left: this.left,\n right: this.right,\n center: this.center\n }\n });\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9pbWFnZS9pbWctbGF6eS5qcz8zZjY5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ3NCO0FBQ1M7QUFDWjtBQUN4QjtBQUM3QjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRkFBa0I7QUFDL0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVLO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQSxjQUFjLHNFQUFTO0FBQ3ZCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLGtGQUE4QjtBQUNwRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbUJBQW1CLGtGQUE4QjtBQUNqRCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQyxPQUFPO0FBQ1A7O0FBRUEsYUFBYSxrREFBSTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiNjIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi8uLi91dGlscy9jb25maWcnO1xuaW1wb3J0IHsgaGFzSW50ZXJzZWN0aW9uT2JzZXJ2ZXJTdXBwb3J0IH0gZnJvbSAnLi4vLi4vdXRpbHMvZW52JztcbmltcG9ydCB7IFZCVmlzaWJsZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdmlzaWJsZSc7XG5pbXBvcnQgeyBCSW1nIH0gZnJvbSAnLi9pbWcnO1xudmFyIE5BTUUgPSAnQkltZ0xhenknO1xuZXhwb3J0IHZhciBwcm9wcyA9IHtcbiAgc3JjOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgcmVxdWlyZWQ6IHRydWVcbiAgfSxcbiAgYWx0OiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgd2lkdGg6IHtcbiAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgaGVpZ2h0OiB7XG4gICAgdHlwZTogW051bWJlciwgU3RyaW5nXSxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH0sXG4gIGJsYW5rU3JjOiB7XG4gICAgLy8gSWYgbnVsbCwgYSBibGFuayBpbWFnZSBpcyBnZW5lcmF0ZWRcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBibGFua0NvbG9yOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAnYmxhbmtDb2xvcicpO1xuICAgIH1cbiAgfSxcbiAgYmxhbmtXaWR0aDoge1xuICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBibGFua0hlaWdodDoge1xuICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBzaG93OiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBmbHVpZDoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgZmx1aWRHcm93OiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBibG9jazoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgdGh1bWJuYWlsOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICByb3VuZGVkOiB7XG4gICAgdHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgbGVmdDoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgcmlnaHQ6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIGNlbnRlcjoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgb2Zmc2V0OiB7XG4gICAgLy8gRGlzdGFuY2UgYXdheSBmcm9tIHZpZXdwb3J0IChpbiBwaXhlbHMpIGJlZm9yZSBiZWluZ1xuICAgIC8vIGNvbnNpZGVyZWQgXCJ2aXNpYmxlXCJcbiAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxuICAgIGRlZmF1bHQ6IDM2MFxuICB9XG59OyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJJbWdMYXp5ID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBkaXJlY3RpdmVzOiB7XG4gICAgYlZpc2libGU6IFZCVmlzaWJsZVxuICB9LFxuICBwcm9wczogcHJvcHMsXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzU2hvd246IHRoaXMuc2hvd1xuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgY29tcHV0ZWRTcmM6IGZ1bmN0aW9uIGNvbXB1dGVkU3JjKCkge1xuICAgICAgcmV0dXJuICF0aGlzLmJsYW5rU3JjIHx8IHRoaXMuaXNTaG93biA/IHRoaXMuc3JjIDogdGhpcy5ibGFua1NyYztcbiAgICB9LFxuICAgIGNvbXB1dGVkQmxhbms6IGZ1bmN0aW9uIGNvbXB1dGVkQmxhbmsoKSB7XG4gICAgICByZXR1cm4gISh0aGlzLmlzU2hvd24gfHwgdGhpcy5ibGFua1NyYyk7XG4gICAgfSxcbiAgICBjb21wdXRlZFdpZHRoOiBmdW5jdGlvbiBjb21wdXRlZFdpZHRoKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNTaG93biA/IHRoaXMud2lkdGggOiB0aGlzLmJsYW5rV2lkdGggfHwgdGhpcy53aWR0aDtcbiAgICB9LFxuICAgIGNvbXB1dGVkSGVpZ2h0OiBmdW5jdGlvbiBjb21wdXRlZEhlaWdodCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzU2hvd24gPyB0aGlzLmhlaWdodCA6IHRoaXMuYmxhbmtIZWlnaHQgfHwgdGhpcy5oZWlnaHQ7XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIHNob3c6IGZ1bmN0aW9uIHNob3cobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIGlmIChuZXdWYWwgIT09IG9sZFZhbCkge1xuICAgICAgICAvLyBJZiBJbnRlcnNlY3Rpb25PYnNlcnZlciBzdXBwb3J0IGlzIG5vdCBhdmFpbGFibGUsIGltYWdlIGlzIGFsd2F5cyBzaG93blxuICAgICAgICB2YXIgdmlzaWJsZSA9IGhhc0ludGVyc2VjdGlvbk9ic2VydmVyU3VwcG9ydCA/IG5ld1ZhbCA6IHRydWU7XG4gICAgICAgIHRoaXMuaXNTaG93biA9IHZpc2libGU7XG5cbiAgICAgICAgaWYgKHZpc2libGUgIT09IG5ld1ZhbCkge1xuICAgICAgICAgIC8vIEVuc3VyZSB0aGUgc2hvdyBwcm9wIGlzIHN5bmNlZCAod2hlbiBubyBJbnRlcnNlY3Rpb25PYnNlcnZlcilcbiAgICAgICAgICB0aGlzLiRuZXh0VGljayh0aGlzLnVwZGF0ZVNob3dQcm9wKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgaXNTaG93bjogZnVuY3Rpb24gaXNTaG93bihuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgaWYgKG5ld1ZhbCAhPT0gb2xkVmFsKSB7XG4gICAgICAgIC8vIFVwZGF0ZSBzeW5jaGVkIHNob3cgcHJvcFxuICAgICAgICB0aGlzLnVwZGF0ZVNob3dQcm9wKCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIC8vIElmIEludGVyc2VjdGlvbk9ic2VydmVyIGlzIG5vdCBhdmFpbGFibGUsIGltYWdlIGlzIGFsd2F5cyBzaG93blxuICAgIHRoaXMuaXNTaG93biA9IGhhc0ludGVyc2VjdGlvbk9ic2VydmVyU3VwcG9ydCA/IHRoaXMuc2hvdyA6IHRydWU7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICB1cGRhdGVTaG93UHJvcDogZnVuY3Rpb24gdXBkYXRlU2hvd1Byb3AoKSB7XG4gICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6c2hvdycsIHRoaXMuaXNTaG93bik7XG4gICAgfSxcbiAgICBkb1Nob3c6IGZ1bmN0aW9uIGRvU2hvdyh2aXNpYmxlKSB7XG4gICAgICAvLyBJZiBJbnRlcnNlY3Rpb25PYnNlcnZlciBpcyBub3Qgc3VwcG9ydGVkLCB0aGUgY2FsbGJhY2tcbiAgICAgIC8vIHdpbGwgYmUgY2FsbGVkIHdpdGggYG51bGxgIHJhdGhlciB0aGFuIGB0cnVlYCBvciBgZmFsc2VgXG4gICAgICBpZiAoKHZpc2libGUgfHwgdmlzaWJsZSA9PT0gbnVsbCkgJiYgIXRoaXMuaXNTaG93bikge1xuICAgICAgICB0aGlzLmlzU2hvd24gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBkaXJlY3RpdmVzID0gW107XG5cbiAgICBpZiAoIXRoaXMuaXNTaG93bikge1xuICAgICAgdmFyIF9tb2RpZmllcnM7XG5cbiAgICAgIC8vIFdlIG9ubHkgYWRkIHRoZSB2aXNpYmxlIGRpcmVjdGl2ZSBpZiB3ZSBhcmUgbm90IHNob3duXG4gICAgICBkaXJlY3RpdmVzLnB1c2goe1xuICAgICAgICAvLyBWaXNpYmxlIGRpcmVjdGl2ZSB3aWxsIHNpbGVudGx5IGRvIG5vdGhpbmcgaWZcbiAgICAgICAgLy8gSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgaXMgbm90IHN1cHBvcnRlZFxuICAgICAgICBuYW1lOiAnYi12aXNpYmxlJyxcbiAgICAgICAgLy8gVmFsdWUgZXhwZWN0cyBhIGNhbGxiYWNrIChwYXNzZWQgb25lIGFyZyBvZiBgdmlzaWJsZWAgPSBgdHJ1ZWAgb3IgYGZhbHNlYClcbiAgICAgICAgdmFsdWU6IHRoaXMuZG9TaG93LFxuICAgICAgICBtb2RpZmllcnM6IChfbW9kaWZpZXJzID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfbW9kaWZpZXJzLCBcIlwiLmNvbmNhdChwYXJzZUludCh0aGlzLm9mZnNldCwgMTApIHx8IDApLCB0cnVlKSwgX2RlZmluZVByb3BlcnR5KF9tb2RpZmllcnMsIFwib25jZVwiLCB0cnVlKSwgX21vZGlmaWVycylcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBoKEJJbWcsIHtcbiAgICAgIGRpcmVjdGl2ZXM6IGRpcmVjdGl2ZXMsXG4gICAgICBwcm9wczoge1xuICAgICAgICAvLyBDb21wdXRlZCB2YWx1ZSBwcm9wc1xuICAgICAgICBzcmM6IHRoaXMuY29tcHV0ZWRTcmMsXG4gICAgICAgIGJsYW5rOiB0aGlzLmNvbXB1dGVkQmxhbmssXG4gICAgICAgIHdpZHRoOiB0aGlzLmNvbXB1dGVkV2lkdGgsXG4gICAgICAgIGhlaWdodDogdGhpcy5jb21wdXRlZEhlaWdodCxcbiAgICAgICAgLy8gUGFzc3Rocm91Z2ggcHJvcHNcbiAgICAgICAgYWx0OiB0aGlzLmFsdCxcbiAgICAgICAgYmxhbmtDb2xvcjogdGhpcy5ibGFua0NvbG9yLFxuICAgICAgICBmbHVpZDogdGhpcy5mbHVpZCxcbiAgICAgICAgZmx1aWRHcm93OiB0aGlzLmZsdWlkR3JvdyxcbiAgICAgICAgYmxvY2s6IHRoaXMuYmxvY2ssXG4gICAgICAgIHRodW1ibmFpbDogdGhpcy50aHVtYm5haWwsXG4gICAgICAgIHJvdW5kZWQ6IHRoaXMucm91bmRlZCxcbiAgICAgICAgbGVmdDogdGhpcy5sZWZ0LFxuICAgICAgICByaWdodDogdGhpcy5yaWdodCxcbiAgICAgICAgY2VudGVyOiB0aGlzLmNlbnRlclxuICAgICAgfVxuICAgIH0pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2ltYWdlL2ltZy1sYXp5LmpzXG4vLyBtb2R1bGUgaWQgPSA2MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///62\n"); /***/ }), /* 63 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return CollapsePlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__collapse__ = __webpack_require__(123);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__directives_toggle_toggle__ = __webpack_require__(64);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BCollapse */\n\n\n\nvar CollapsePlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BCollapse: __WEBPACK_IMPORTED_MODULE_0__collapse__[\"a\" /* BCollapse */]\n },\n directives: {\n VBToggle: __WEBPACK_IMPORTED_MODULE_1__directives_toggle_toggle__[\"a\" /* VBToggle */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jb2xsYXBzZS9pbmRleC5qcz85MmI2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBdUM7QUFDbUI7QUFDTjtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGVBQWUsNERBQVM7QUFDeEIsR0FBRztBQUNIO0FBQ0EsY0FBYywyRUFBUTtBQUN0QjtBQUNBLENBQUMiLCJmaWxlIjoiNjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCQ29sbGFwc2UgfSBmcm9tICcuL2NvbGxhcHNlJztcbmltcG9ydCB7IFZCVG9nZ2xlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy90b2dnbGUvdG9nZ2xlJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBDb2xsYXBzZVBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJDb2xsYXBzZTogQkNvbGxhcHNlXG4gIH0sXG4gIGRpcmVjdGl2ZXM6IHtcbiAgICBWQlRvZ2dsZTogVkJUb2dnbGVcbiAgfVxufSk7XG5leHBvcnQgeyBDb2xsYXBzZVBsdWdpbiwgQkNvbGxhcHNlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jb2xsYXBzZS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///63\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return CollapsePlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__collapse__ = __webpack_require__(125);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__directives_toggle_toggle__ = __webpack_require__(64);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BCollapse */\n\n\n\nvar CollapsePlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BCollapse: __WEBPACK_IMPORTED_MODULE_0__collapse__[\"a\" /* BCollapse */]\n },\n directives: {\n VBToggle: __WEBPACK_IMPORTED_MODULE_1__directives_toggle_toggle__[\"a\" /* VBToggle */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jb2xsYXBzZS9pbmRleC5qcz85MmI2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBdUM7QUFDbUI7QUFDTjtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGVBQWUsNERBQVM7QUFDeEIsR0FBRztBQUNIO0FBQ0EsY0FBYywyRUFBUTtBQUN0QjtBQUNBLENBQUMiLCJmaWxlIjoiNjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCQ29sbGFwc2UgfSBmcm9tICcuL2NvbGxhcHNlJztcbmltcG9ydCB7IFZCVG9nZ2xlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy90b2dnbGUvdG9nZ2xlJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBDb2xsYXBzZVBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJDb2xsYXBzZTogQkNvbGxhcHNlXG4gIH0sXG4gIGRpcmVjdGl2ZXM6IHtcbiAgICBWQlRvZ2dsZTogVkJUb2dnbGVcbiAgfVxufSk7XG5leHBvcnQgeyBDb2xsYXBzZVBsdWdpbiwgQkNvbGxhcHNlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jb2xsYXBzZS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///63\n"); /***/ }), /* 64 */ @@ -518,7 +518,7 @@ eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return props; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BDropdown; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_html__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_safe_types__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_dropdown__ = __webpack_require__(124);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__button_button__ = __webpack_require__(34);\n\n\n\n\n\n\n\n\n\nvar NAME = 'BDropdown';\nvar props = {\n toggleText: {\n // This really should be toggleLabel\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'toggleText');\n }\n },\n size: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'size');\n }\n },\n variant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant');\n }\n },\n menuClass: {\n type: [String, Array],\n default: null\n },\n toggleTag: {\n type: String,\n default: 'button'\n },\n toggleClass: {\n type: [String, Array],\n default: null\n },\n noCaret: {\n type: Boolean,\n default: false\n },\n split: {\n type: Boolean,\n default: false\n },\n splitHref: {\n type: String // default: undefined\n\n },\n splitTo: {\n type: [String, Object] // default: undefined\n\n },\n splitVariant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'splitVariant');\n }\n },\n splitButtonType: {\n type: String,\n default: 'button',\n validator: function validator(value) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"a\" /* arrayIncludes */])(['button', 'submit', 'reset'], value);\n }\n },\n role: {\n type: String,\n default: 'menu'\n },\n boundary: {\n // String: `scrollParent`, `window` or `viewport`\n // HTMLElement: HTML Element reference\n type: [String, __WEBPACK_IMPORTED_MODULE_4__utils_safe_types__[\"b\" /* HTMLElement */]],\n default: 'scrollParent'\n }\n}; // @vue/component\n\nvar BDropdown =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n mixins: [__WEBPACK_IMPORTED_MODULE_5__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__mixins_dropdown__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__mixins_normalize_slot__[\"a\" /* default */]],\n props: props,\n computed: {\n dropdownClasses: function dropdownClasses() {\n return [this.directionClass, {\n show: this.visible,\n // Position `static` is needed to allow menu to \"breakout\" of the scrollParent boundaries\n // when boundary is anything other than `scrollParent`\n // See https://github.com/twbs/bootstrap/issues/24251#issuecomment-341413786\n 'position-static': this.boundary !== 'scrollParent' || !this.boundary\n }];\n },\n menuClasses: function menuClasses() {\n return [this.menuClass, {\n 'dropdown-menu-right': this.right,\n show: this.visible\n }];\n },\n toggleClasses: function toggleClasses() {\n return [this.toggleClass, {\n 'dropdown-toggle-split': this.split,\n 'dropdown-toggle-no-caret': this.noCaret && !this.split\n }];\n }\n },\n render: function render(h) {\n var split = h();\n var buttonContent = this.normalizeSlot('button-content') || this.html || Object(__WEBPACK_IMPORTED_MODULE_2__utils_html__[\"b\" /* stripTags */])(this.text);\n\n if (this.split) {\n var btnProps = {\n disabled: this.disabled,\n variant: this.splitVariant || this.variant,\n size: this.size\n }; // We add these as needed due to router-link issues with defined property with undefined/null values\n\n if (this.splitTo) {\n btnProps.to = this.splitTo;\n } else if (this.splitHref) {\n btnProps.href = this.splitHref;\n } else if (this.splitButtonType) {\n btnProps.type = this.splitButtonType;\n }\n\n split = h(__WEBPACK_IMPORTED_MODULE_8__button_button__[\"a\" /* BButton */], {\n ref: 'button',\n props: btnProps,\n attrs: {\n id: this.safeId('_BV_button_')\n },\n on: {\n click: this.click\n }\n }, [buttonContent]);\n }\n\n var toggle = h(__WEBPACK_IMPORTED_MODULE_8__button_button__[\"a\" /* BButton */], {\n ref: 'toggle',\n staticClass: 'dropdown-toggle',\n class: this.toggleClasses,\n props: {\n variant: this.variant,\n size: this.size,\n disabled: this.disabled,\n tag: this.toggleTag\n },\n attrs: {\n id: this.safeId('_BV_toggle_'),\n 'aria-haspopup': 'true',\n 'aria-expanded': this.visible ? 'true' : 'false'\n },\n on: {\n click: this.toggle,\n // click\n keydown: this.toggle // enter, space, down\n\n }\n }, [this.split ? h('span', {\n class: ['sr-only']\n }, [this.toggleText]) : buttonContent]);\n var menu = h('ul', {\n ref: 'menu',\n staticClass: 'dropdown-menu',\n class: this.menuClasses,\n attrs: {\n role: this.role,\n tabindex: '-1',\n 'aria-labelledby': this.safeId(this.split ? '_BV_button_' : '_BV_toggle_')\n },\n on: {\n keydown: this.onKeydown // up, down, esc\n\n }\n }, !this.lazy || this.visible ? this.normalizeSlot('default', {\n hide: this.hide\n }) : [h()]);\n return h('div', {\n staticClass: 'dropdown btn-group b-dropdown',\n class: this.dropdownClasses,\n attrs: {\n id: this.safeId()\n }\n }, [split, toggle, menu]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi5qcz9jODRlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDZ0I7QUFDTDtBQUNXO0FBQ0g7QUFDZjtBQUNZO0FBQ1c7QUFDbEI7QUFDM0M7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRkFBa0I7QUFDL0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRkFBa0I7QUFDL0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRkFBa0I7QUFDL0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsMkVBQWE7QUFDMUI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixzRUFBVztBQUM5QjtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsMkRBQU8sRUFBRSxpRUFBYSxFQUFFLHVFQUFrQjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsNkVBQTZFLHNFQUFTOztBQUV0RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTs7QUFFUjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUEsZ0JBQWdCLCtEQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQSxtQkFBbUIsK0RBQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiI2NS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IGFycmF5SW5jbHVkZXMgfSBmcm9tICcuLi8uLi91dGlscy9hcnJheSc7XG5pbXBvcnQgeyBzdHJpcFRhZ3MgfSBmcm9tICcuLi8uLi91dGlscy9odG1sJztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBIVE1MRWxlbWVudCB9IGZyb20gJy4uLy4uL3V0aWxzL3NhZmUtdHlwZXMnO1xuaW1wb3J0IGlkTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2lkJztcbmltcG9ydCBkcm9wZG93bk1peGluIGZyb20gJy4uLy4uL21peGlucy9kcm9wZG93bic7XG5pbXBvcnQgbm9ybWFsaXplU2xvdE1peGluIGZyb20gJy4uLy4uL21peGlucy9ub3JtYWxpemUtc2xvdCc7XG5pbXBvcnQgeyBCQnV0dG9uIH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbic7XG52YXIgTkFNRSA9ICdCRHJvcGRvd24nO1xuZXhwb3J0IHZhciBwcm9wcyA9IHtcbiAgdG9nZ2xlVGV4dDoge1xuICAgIC8vIFRoaXMgcmVhbGx5IHNob3VsZCBiZSB0b2dnbGVMYWJlbFxuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ3RvZ2dsZVRleHQnKTtcbiAgICB9XG4gIH0sXG4gIHNpemU6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdzaXplJyk7XG4gICAgfVxuICB9LFxuICB2YXJpYW50OiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAndmFyaWFudCcpO1xuICAgIH1cbiAgfSxcbiAgbWVudUNsYXNzOiB7XG4gICAgdHlwZTogW1N0cmluZywgQXJyYXldLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgdG9nZ2xlVGFnOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdidXR0b24nXG4gIH0sXG4gIHRvZ2dsZUNsYXNzOiB7XG4gICAgdHlwZTogW1N0cmluZywgQXJyYXldLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgbm9DYXJldDoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgc3BsaXQ6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIHNwbGl0SHJlZjoge1xuICAgIHR5cGU6IFN0cmluZyAvLyBkZWZhdWx0OiB1bmRlZmluZWRcblxuICB9LFxuICBzcGxpdFRvOiB7XG4gICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSAvLyBkZWZhdWx0OiB1bmRlZmluZWRcblxuICB9LFxuICBzcGxpdFZhcmlhbnQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdzcGxpdFZhcmlhbnQnKTtcbiAgICB9XG4gIH0sXG4gIHNwbGl0QnV0dG9uVHlwZToge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAnYnV0dG9uJyxcbiAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGFycmF5SW5jbHVkZXMoWydidXR0b24nLCAnc3VibWl0JywgJ3Jlc2V0J10sIHZhbHVlKTtcbiAgICB9XG4gIH0sXG4gIHJvbGU6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ21lbnUnXG4gIH0sXG4gIGJvdW5kYXJ5OiB7XG4gICAgLy8gU3RyaW5nOiBgc2Nyb2xsUGFyZW50YCwgYHdpbmRvd2Agb3IgYHZpZXdwb3J0YFxuICAgIC8vIEhUTUxFbGVtZW50OiBIVE1MIEVsZW1lbnQgcmVmZXJlbmNlXG4gICAgdHlwZTogW1N0cmluZywgSFRNTEVsZW1lbnRdLFxuICAgIGRlZmF1bHQ6ICdzY3JvbGxQYXJlbnQnXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkRyb3Bkb3duID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBtaXhpbnM6IFtpZE1peGluLCBkcm9wZG93bk1peGluLCBub3JtYWxpemVTbG90TWl4aW5dLFxuICBwcm9wczogcHJvcHMsXG4gIGNvbXB1dGVkOiB7XG4gICAgZHJvcGRvd25DbGFzc2VzOiBmdW5jdGlvbiBkcm9wZG93bkNsYXNzZXMoKSB7XG4gICAgICByZXR1cm4gW3RoaXMuZGlyZWN0aW9uQ2xhc3MsIHtcbiAgICAgICAgc2hvdzogdGhpcy52aXNpYmxlLFxuICAgICAgICAvLyBQb3NpdGlvbiBgc3RhdGljYCBpcyBuZWVkZWQgdG8gYWxsb3cgbWVudSB0byBcImJyZWFrb3V0XCIgb2YgdGhlIHNjcm9sbFBhcmVudCBib3VuZGFyaWVzXG4gICAgICAgIC8vIHdoZW4gYm91bmRhcnkgaXMgYW55dGhpbmcgb3RoZXIgdGhhbiBgc2Nyb2xsUGFyZW50YFxuICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yNDI1MSNpc3N1ZWNvbW1lbnQtMzQxNDEzNzg2XG4gICAgICAgICdwb3NpdGlvbi1zdGF0aWMnOiB0aGlzLmJvdW5kYXJ5ICE9PSAnc2Nyb2xsUGFyZW50JyB8fCAhdGhpcy5ib3VuZGFyeVxuICAgICAgfV07XG4gICAgfSxcbiAgICBtZW51Q2xhc3NlczogZnVuY3Rpb24gbWVudUNsYXNzZXMoKSB7XG4gICAgICByZXR1cm4gW3RoaXMubWVudUNsYXNzLCB7XG4gICAgICAgICdkcm9wZG93bi1tZW51LXJpZ2h0JzogdGhpcy5yaWdodCxcbiAgICAgICAgc2hvdzogdGhpcy52aXNpYmxlXG4gICAgICB9XTtcbiAgICB9LFxuICAgIHRvZ2dsZUNsYXNzZXM6IGZ1bmN0aW9uIHRvZ2dsZUNsYXNzZXMoKSB7XG4gICAgICByZXR1cm4gW3RoaXMudG9nZ2xlQ2xhc3MsIHtcbiAgICAgICAgJ2Ryb3Bkb3duLXRvZ2dsZS1zcGxpdCc6IHRoaXMuc3BsaXQsXG4gICAgICAgICdkcm9wZG93bi10b2dnbGUtbm8tY2FyZXQnOiB0aGlzLm5vQ2FyZXQgJiYgIXRoaXMuc3BsaXRcbiAgICAgIH1dO1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBzcGxpdCA9IGgoKTtcbiAgICB2YXIgYnV0dG9uQ29udGVudCA9IHRoaXMubm9ybWFsaXplU2xvdCgnYnV0dG9uLWNvbnRlbnQnKSB8fCB0aGlzLmh0bWwgfHwgc3RyaXBUYWdzKHRoaXMudGV4dCk7XG5cbiAgICBpZiAodGhpcy5zcGxpdCkge1xuICAgICAgdmFyIGJ0blByb3BzID0ge1xuICAgICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCxcbiAgICAgICAgdmFyaWFudDogdGhpcy5zcGxpdFZhcmlhbnQgfHwgdGhpcy52YXJpYW50LFxuICAgICAgICBzaXplOiB0aGlzLnNpemVcbiAgICAgIH07IC8vIFdlIGFkZCB0aGVzZSBhcyBuZWVkZWQgZHVlIHRvIHJvdXRlci1saW5rIGlzc3VlcyB3aXRoIGRlZmluZWQgcHJvcGVydHkgd2l0aCB1bmRlZmluZWQvbnVsbCB2YWx1ZXNcblxuICAgICAgaWYgKHRoaXMuc3BsaXRUbykge1xuICAgICAgICBidG5Qcm9wcy50byA9IHRoaXMuc3BsaXRUbztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zcGxpdEhyZWYpIHtcbiAgICAgICAgYnRuUHJvcHMuaHJlZiA9IHRoaXMuc3BsaXRIcmVmO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNwbGl0QnV0dG9uVHlwZSkge1xuICAgICAgICBidG5Qcm9wcy50eXBlID0gdGhpcy5zcGxpdEJ1dHRvblR5cGU7XG4gICAgICB9XG5cbiAgICAgIHNwbGl0ID0gaChCQnV0dG9uLCB7XG4gICAgICAgIHJlZjogJ2J1dHRvbicsXG4gICAgICAgIHByb3BzOiBidG5Qcm9wcyxcbiAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICBpZDogdGhpcy5zYWZlSWQoJ19CVl9idXR0b25fJylcbiAgICAgICAgfSxcbiAgICAgICAgb246IHtcbiAgICAgICAgICBjbGljazogdGhpcy5jbGlja1xuICAgICAgICB9XG4gICAgICB9LCBbYnV0dG9uQ29udGVudF0pO1xuICAgIH1cblxuICAgIHZhciB0b2dnbGUgPSBoKEJCdXR0b24sIHtcbiAgICAgIHJlZjogJ3RvZ2dsZScsXG4gICAgICBzdGF0aWNDbGFzczogJ2Ryb3Bkb3duLXRvZ2dsZScsXG4gICAgICBjbGFzczogdGhpcy50b2dnbGVDbGFzc2VzLFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgdmFyaWFudDogdGhpcy52YXJpYW50LFxuICAgICAgICBzaXplOiB0aGlzLnNpemUsXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkLFxuICAgICAgICB0YWc6IHRoaXMudG9nZ2xlVGFnXG4gICAgICB9LFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgaWQ6IHRoaXMuc2FmZUlkKCdfQlZfdG9nZ2xlXycpLFxuICAgICAgICAnYXJpYS1oYXNwb3B1cCc6ICd0cnVlJyxcbiAgICAgICAgJ2FyaWEtZXhwYW5kZWQnOiB0aGlzLnZpc2libGUgPyAndHJ1ZScgOiAnZmFsc2UnXG4gICAgICB9LFxuICAgICAgb246IHtcbiAgICAgICAgY2xpY2s6IHRoaXMudG9nZ2xlLFxuICAgICAgICAvLyBjbGlja1xuICAgICAgICBrZXlkb3duOiB0aGlzLnRvZ2dsZSAvLyBlbnRlciwgc3BhY2UsIGRvd25cblxuICAgICAgfVxuICAgIH0sIFt0aGlzLnNwbGl0ID8gaCgnc3BhbicsIHtcbiAgICAgIGNsYXNzOiBbJ3NyLW9ubHknXVxuICAgIH0sIFt0aGlzLnRvZ2dsZVRleHRdKSA6IGJ1dHRvbkNvbnRlbnRdKTtcbiAgICB2YXIgbWVudSA9IGgoJ3VsJywge1xuICAgICAgcmVmOiAnbWVudScsXG4gICAgICBzdGF0aWNDbGFzczogJ2Ryb3Bkb3duLW1lbnUnLFxuICAgICAgY2xhc3M6IHRoaXMubWVudUNsYXNzZXMsXG4gICAgICBhdHRyczoge1xuICAgICAgICByb2xlOiB0aGlzLnJvbGUsXG4gICAgICAgIHRhYmluZGV4OiAnLTEnLFxuICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogdGhpcy5zYWZlSWQodGhpcy5zcGxpdCA/ICdfQlZfYnV0dG9uXycgOiAnX0JWX3RvZ2dsZV8nKVxuICAgICAgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIGtleWRvd246IHRoaXMub25LZXlkb3duIC8vIHVwLCBkb3duLCBlc2NcblxuICAgICAgfVxuICAgIH0sICF0aGlzLmxhenkgfHwgdGhpcy52aXNpYmxlID8gdGhpcy5ub3JtYWxpemVTbG90KCdkZWZhdWx0Jywge1xuICAgICAgaGlkZTogdGhpcy5oaWRlXG4gICAgfSkgOiBbaCgpXSk7XG4gICAgcmV0dXJuIGgoJ2RpdicsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnZHJvcGRvd24gYnRuLWdyb3VwIGItZHJvcGRvd24nLFxuICAgICAgY2xhc3M6IHRoaXMuZHJvcGRvd25DbGFzc2VzLFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgaWQ6IHRoaXMuc2FmZUlkKClcbiAgICAgIH1cbiAgICB9LCBbc3BsaXQsIHRvZ2dsZSwgbWVudV0pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLmpzXG4vLyBtb2R1bGUgaWQgPSA2NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///65\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return props; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BDropdown; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_html__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_safe_types__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_dropdown__ = __webpack_require__(126);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__button_button__ = __webpack_require__(34);\n\n\n\n\n\n\n\n\n\nvar NAME = 'BDropdown';\nvar props = {\n toggleText: {\n // This really should be toggleLabel\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'toggleText');\n }\n },\n size: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'size');\n }\n },\n variant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant');\n }\n },\n menuClass: {\n type: [String, Array],\n default: null\n },\n toggleTag: {\n type: String,\n default: 'button'\n },\n toggleClass: {\n type: [String, Array],\n default: null\n },\n noCaret: {\n type: Boolean,\n default: false\n },\n split: {\n type: Boolean,\n default: false\n },\n splitHref: {\n type: String // default: undefined\n\n },\n splitTo: {\n type: [String, Object] // default: undefined\n\n },\n splitVariant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'splitVariant');\n }\n },\n splitButtonType: {\n type: String,\n default: 'button',\n validator: function validator(value) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"a\" /* arrayIncludes */])(['button', 'submit', 'reset'], value);\n }\n },\n role: {\n type: String,\n default: 'menu'\n },\n boundary: {\n // String: `scrollParent`, `window` or `viewport`\n // HTMLElement: HTML Element reference\n type: [String, __WEBPACK_IMPORTED_MODULE_4__utils_safe_types__[\"b\" /* HTMLElement */]],\n default: 'scrollParent'\n }\n}; // @vue/component\n\nvar BDropdown =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n mixins: [__WEBPACK_IMPORTED_MODULE_5__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__mixins_dropdown__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__mixins_normalize_slot__[\"a\" /* default */]],\n props: props,\n computed: {\n dropdownClasses: function dropdownClasses() {\n return [this.directionClass, {\n show: this.visible,\n // Position `static` is needed to allow menu to \"breakout\" of the scrollParent boundaries\n // when boundary is anything other than `scrollParent`\n // See https://github.com/twbs/bootstrap/issues/24251#issuecomment-341413786\n 'position-static': this.boundary !== 'scrollParent' || !this.boundary\n }];\n },\n menuClasses: function menuClasses() {\n return [this.menuClass, {\n 'dropdown-menu-right': this.right,\n show: this.visible\n }];\n },\n toggleClasses: function toggleClasses() {\n return [this.toggleClass, {\n 'dropdown-toggle-split': this.split,\n 'dropdown-toggle-no-caret': this.noCaret && !this.split\n }];\n }\n },\n render: function render(h) {\n var split = h();\n var buttonContent = this.normalizeSlot('button-content') || this.html || Object(__WEBPACK_IMPORTED_MODULE_2__utils_html__[\"b\" /* stripTags */])(this.text);\n\n if (this.split) {\n var btnProps = {\n disabled: this.disabled,\n variant: this.splitVariant || this.variant,\n size: this.size\n }; // We add these as needed due to router-link issues with defined property with undefined/null values\n\n if (this.splitTo) {\n btnProps.to = this.splitTo;\n } else if (this.splitHref) {\n btnProps.href = this.splitHref;\n } else if (this.splitButtonType) {\n btnProps.type = this.splitButtonType;\n }\n\n split = h(__WEBPACK_IMPORTED_MODULE_8__button_button__[\"a\" /* BButton */], {\n ref: 'button',\n props: btnProps,\n attrs: {\n id: this.safeId('_BV_button_')\n },\n on: {\n click: this.click\n }\n }, [buttonContent]);\n }\n\n var toggle = h(__WEBPACK_IMPORTED_MODULE_8__button_button__[\"a\" /* BButton */], {\n ref: 'toggle',\n staticClass: 'dropdown-toggle',\n class: this.toggleClasses,\n props: {\n variant: this.variant,\n size: this.size,\n disabled: this.disabled,\n tag: this.toggleTag\n },\n attrs: {\n id: this.safeId('_BV_toggle_'),\n 'aria-haspopup': 'true',\n 'aria-expanded': this.visible ? 'true' : 'false'\n },\n on: {\n click: this.toggle,\n // click\n keydown: this.toggle // enter, space, down\n\n }\n }, [this.split ? h('span', {\n class: ['sr-only']\n }, [this.toggleText]) : buttonContent]);\n var menu = h('ul', {\n ref: 'menu',\n staticClass: 'dropdown-menu',\n class: this.menuClasses,\n attrs: {\n role: this.role,\n tabindex: '-1',\n 'aria-labelledby': this.safeId(this.split ? '_BV_button_' : '_BV_toggle_')\n },\n on: {\n keydown: this.onKeydown // up, down, esc\n\n }\n }, !this.lazy || this.visible ? this.normalizeSlot('default', {\n hide: this.hide\n }) : [h()]);\n return h('div', {\n staticClass: 'dropdown btn-group b-dropdown',\n class: this.dropdownClasses,\n attrs: {\n id: this.safeId()\n }\n }, [split, toggle, menu]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi5qcz9jODRlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDZ0I7QUFDTDtBQUNXO0FBQ0g7QUFDZjtBQUNZO0FBQ1c7QUFDbEI7QUFDM0M7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRkFBa0I7QUFDL0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRkFBa0I7QUFDL0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRkFBa0I7QUFDL0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsMkVBQWE7QUFDMUI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixzRUFBVztBQUM5QjtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsMkRBQU8sRUFBRSxpRUFBYSxFQUFFLHVFQUFrQjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsNkVBQTZFLHNFQUFTOztBQUV0RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTs7QUFFUjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUEsZ0JBQWdCLCtEQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQSxtQkFBbUIsK0RBQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiI2NS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IGFycmF5SW5jbHVkZXMgfSBmcm9tICcuLi8uLi91dGlscy9hcnJheSc7XG5pbXBvcnQgeyBzdHJpcFRhZ3MgfSBmcm9tICcuLi8uLi91dGlscy9odG1sJztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBIVE1MRWxlbWVudCB9IGZyb20gJy4uLy4uL3V0aWxzL3NhZmUtdHlwZXMnO1xuaW1wb3J0IGlkTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2lkJztcbmltcG9ydCBkcm9wZG93bk1peGluIGZyb20gJy4uLy4uL21peGlucy9kcm9wZG93bic7XG5pbXBvcnQgbm9ybWFsaXplU2xvdE1peGluIGZyb20gJy4uLy4uL21peGlucy9ub3JtYWxpemUtc2xvdCc7XG5pbXBvcnQgeyBCQnV0dG9uIH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbic7XG52YXIgTkFNRSA9ICdCRHJvcGRvd24nO1xuZXhwb3J0IHZhciBwcm9wcyA9IHtcbiAgdG9nZ2xlVGV4dDoge1xuICAgIC8vIFRoaXMgcmVhbGx5IHNob3VsZCBiZSB0b2dnbGVMYWJlbFxuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ3RvZ2dsZVRleHQnKTtcbiAgICB9XG4gIH0sXG4gIHNpemU6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdzaXplJyk7XG4gICAgfVxuICB9LFxuICB2YXJpYW50OiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAndmFyaWFudCcpO1xuICAgIH1cbiAgfSxcbiAgbWVudUNsYXNzOiB7XG4gICAgdHlwZTogW1N0cmluZywgQXJyYXldLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgdG9nZ2xlVGFnOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdidXR0b24nXG4gIH0sXG4gIHRvZ2dsZUNsYXNzOiB7XG4gICAgdHlwZTogW1N0cmluZywgQXJyYXldLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgbm9DYXJldDoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgc3BsaXQ6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIHNwbGl0SHJlZjoge1xuICAgIHR5cGU6IFN0cmluZyAvLyBkZWZhdWx0OiB1bmRlZmluZWRcblxuICB9LFxuICBzcGxpdFRvOiB7XG4gICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSAvLyBkZWZhdWx0OiB1bmRlZmluZWRcblxuICB9LFxuICBzcGxpdFZhcmlhbnQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdzcGxpdFZhcmlhbnQnKTtcbiAgICB9XG4gIH0sXG4gIHNwbGl0QnV0dG9uVHlwZToge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAnYnV0dG9uJyxcbiAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGFycmF5SW5jbHVkZXMoWydidXR0b24nLCAnc3VibWl0JywgJ3Jlc2V0J10sIHZhbHVlKTtcbiAgICB9XG4gIH0sXG4gIHJvbGU6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ21lbnUnXG4gIH0sXG4gIGJvdW5kYXJ5OiB7XG4gICAgLy8gU3RyaW5nOiBgc2Nyb2xsUGFyZW50YCwgYHdpbmRvd2Agb3IgYHZpZXdwb3J0YFxuICAgIC8vIEhUTUxFbGVtZW50OiBIVE1MIEVsZW1lbnQgcmVmZXJlbmNlXG4gICAgdHlwZTogW1N0cmluZywgSFRNTEVsZW1lbnRdLFxuICAgIGRlZmF1bHQ6ICdzY3JvbGxQYXJlbnQnXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkRyb3Bkb3duID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBtaXhpbnM6IFtpZE1peGluLCBkcm9wZG93bk1peGluLCBub3JtYWxpemVTbG90TWl4aW5dLFxuICBwcm9wczogcHJvcHMsXG4gIGNvbXB1dGVkOiB7XG4gICAgZHJvcGRvd25DbGFzc2VzOiBmdW5jdGlvbiBkcm9wZG93bkNsYXNzZXMoKSB7XG4gICAgICByZXR1cm4gW3RoaXMuZGlyZWN0aW9uQ2xhc3MsIHtcbiAgICAgICAgc2hvdzogdGhpcy52aXNpYmxlLFxuICAgICAgICAvLyBQb3NpdGlvbiBgc3RhdGljYCBpcyBuZWVkZWQgdG8gYWxsb3cgbWVudSB0byBcImJyZWFrb3V0XCIgb2YgdGhlIHNjcm9sbFBhcmVudCBib3VuZGFyaWVzXG4gICAgICAgIC8vIHdoZW4gYm91bmRhcnkgaXMgYW55dGhpbmcgb3RoZXIgdGhhbiBgc2Nyb2xsUGFyZW50YFxuICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yNDI1MSNpc3N1ZWNvbW1lbnQtMzQxNDEzNzg2XG4gICAgICAgICdwb3NpdGlvbi1zdGF0aWMnOiB0aGlzLmJvdW5kYXJ5ICE9PSAnc2Nyb2xsUGFyZW50JyB8fCAhdGhpcy5ib3VuZGFyeVxuICAgICAgfV07XG4gICAgfSxcbiAgICBtZW51Q2xhc3NlczogZnVuY3Rpb24gbWVudUNsYXNzZXMoKSB7XG4gICAgICByZXR1cm4gW3RoaXMubWVudUNsYXNzLCB7XG4gICAgICAgICdkcm9wZG93bi1tZW51LXJpZ2h0JzogdGhpcy5yaWdodCxcbiAgICAgICAgc2hvdzogdGhpcy52aXNpYmxlXG4gICAgICB9XTtcbiAgICB9LFxuICAgIHRvZ2dsZUNsYXNzZXM6IGZ1bmN0aW9uIHRvZ2dsZUNsYXNzZXMoKSB7XG4gICAgICByZXR1cm4gW3RoaXMudG9nZ2xlQ2xhc3MsIHtcbiAgICAgICAgJ2Ryb3Bkb3duLXRvZ2dsZS1zcGxpdCc6IHRoaXMuc3BsaXQsXG4gICAgICAgICdkcm9wZG93bi10b2dnbGUtbm8tY2FyZXQnOiB0aGlzLm5vQ2FyZXQgJiYgIXRoaXMuc3BsaXRcbiAgICAgIH1dO1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBzcGxpdCA9IGgoKTtcbiAgICB2YXIgYnV0dG9uQ29udGVudCA9IHRoaXMubm9ybWFsaXplU2xvdCgnYnV0dG9uLWNvbnRlbnQnKSB8fCB0aGlzLmh0bWwgfHwgc3RyaXBUYWdzKHRoaXMudGV4dCk7XG5cbiAgICBpZiAodGhpcy5zcGxpdCkge1xuICAgICAgdmFyIGJ0blByb3BzID0ge1xuICAgICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCxcbiAgICAgICAgdmFyaWFudDogdGhpcy5zcGxpdFZhcmlhbnQgfHwgdGhpcy52YXJpYW50LFxuICAgICAgICBzaXplOiB0aGlzLnNpemVcbiAgICAgIH07IC8vIFdlIGFkZCB0aGVzZSBhcyBuZWVkZWQgZHVlIHRvIHJvdXRlci1saW5rIGlzc3VlcyB3aXRoIGRlZmluZWQgcHJvcGVydHkgd2l0aCB1bmRlZmluZWQvbnVsbCB2YWx1ZXNcblxuICAgICAgaWYgKHRoaXMuc3BsaXRUbykge1xuICAgICAgICBidG5Qcm9wcy50byA9IHRoaXMuc3BsaXRUbztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zcGxpdEhyZWYpIHtcbiAgICAgICAgYnRuUHJvcHMuaHJlZiA9IHRoaXMuc3BsaXRIcmVmO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNwbGl0QnV0dG9uVHlwZSkge1xuICAgICAgICBidG5Qcm9wcy50eXBlID0gdGhpcy5zcGxpdEJ1dHRvblR5cGU7XG4gICAgICB9XG5cbiAgICAgIHNwbGl0ID0gaChCQnV0dG9uLCB7XG4gICAgICAgIHJlZjogJ2J1dHRvbicsXG4gICAgICAgIHByb3BzOiBidG5Qcm9wcyxcbiAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICBpZDogdGhpcy5zYWZlSWQoJ19CVl9idXR0b25fJylcbiAgICAgICAgfSxcbiAgICAgICAgb246IHtcbiAgICAgICAgICBjbGljazogdGhpcy5jbGlja1xuICAgICAgICB9XG4gICAgICB9LCBbYnV0dG9uQ29udGVudF0pO1xuICAgIH1cblxuICAgIHZhciB0b2dnbGUgPSBoKEJCdXR0b24sIHtcbiAgICAgIHJlZjogJ3RvZ2dsZScsXG4gICAgICBzdGF0aWNDbGFzczogJ2Ryb3Bkb3duLXRvZ2dsZScsXG4gICAgICBjbGFzczogdGhpcy50b2dnbGVDbGFzc2VzLFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgdmFyaWFudDogdGhpcy52YXJpYW50LFxuICAgICAgICBzaXplOiB0aGlzLnNpemUsXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkLFxuICAgICAgICB0YWc6IHRoaXMudG9nZ2xlVGFnXG4gICAgICB9LFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgaWQ6IHRoaXMuc2FmZUlkKCdfQlZfdG9nZ2xlXycpLFxuICAgICAgICAnYXJpYS1oYXNwb3B1cCc6ICd0cnVlJyxcbiAgICAgICAgJ2FyaWEtZXhwYW5kZWQnOiB0aGlzLnZpc2libGUgPyAndHJ1ZScgOiAnZmFsc2UnXG4gICAgICB9LFxuICAgICAgb246IHtcbiAgICAgICAgY2xpY2s6IHRoaXMudG9nZ2xlLFxuICAgICAgICAvLyBjbGlja1xuICAgICAgICBrZXlkb3duOiB0aGlzLnRvZ2dsZSAvLyBlbnRlciwgc3BhY2UsIGRvd25cblxuICAgICAgfVxuICAgIH0sIFt0aGlzLnNwbGl0ID8gaCgnc3BhbicsIHtcbiAgICAgIGNsYXNzOiBbJ3NyLW9ubHknXVxuICAgIH0sIFt0aGlzLnRvZ2dsZVRleHRdKSA6IGJ1dHRvbkNvbnRlbnRdKTtcbiAgICB2YXIgbWVudSA9IGgoJ3VsJywge1xuICAgICAgcmVmOiAnbWVudScsXG4gICAgICBzdGF0aWNDbGFzczogJ2Ryb3Bkb3duLW1lbnUnLFxuICAgICAgY2xhc3M6IHRoaXMubWVudUNsYXNzZXMsXG4gICAgICBhdHRyczoge1xuICAgICAgICByb2xlOiB0aGlzLnJvbGUsXG4gICAgICAgIHRhYmluZGV4OiAnLTEnLFxuICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogdGhpcy5zYWZlSWQodGhpcy5zcGxpdCA/ICdfQlZfYnV0dG9uXycgOiAnX0JWX3RvZ2dsZV8nKVxuICAgICAgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIGtleWRvd246IHRoaXMub25LZXlkb3duIC8vIHVwLCBkb3duLCBlc2NcblxuICAgICAgfVxuICAgIH0sICF0aGlzLmxhenkgfHwgdGhpcy52aXNpYmxlID8gdGhpcy5ub3JtYWxpemVTbG90KCdkZWZhdWx0Jywge1xuICAgICAgaGlkZTogdGhpcy5oaWRlXG4gICAgfSkgOiBbaCgpXSk7XG4gICAgcmV0dXJuIGgoJ2RpdicsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnZHJvcGRvd24gYnRuLWdyb3VwIGItZHJvcGRvd24nLFxuICAgICAgY2xhc3M6IHRoaXMuZHJvcGRvd25DbGFzc2VzLFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgaWQ6IHRoaXMuc2FmZUlkKClcbiAgICAgIH1cbiAgICB9LCBbc3BsaXQsIHRvZ2dsZSwgbWVudV0pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLmpzXG4vLyBtb2R1bGUgaWQgPSA2NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///65\n"); /***/ }), /* 66 */ @@ -553,14 +553,14 @@ eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BFormCheckbox; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_loose_equal__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_loose_index_of__ = __webpack_require__(254);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mixins_form__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__mixins_form_radio_check__ = __webpack_require__(140);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_form_size__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__mixins_form_state__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__mixins_id__ = __webpack_require__(9);\n\n\n\n\n\n\n\n\n // @vue/component\n\nvar BFormCheckbox =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BFormCheckbox',\n mixins: [__WEBPACK_IMPORTED_MODULE_5__mixins_form_radio_check__[\"a\" /* default */], // Includes shared render function\n __WEBPACK_IMPORTED_MODULE_8__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__mixins_form__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__mixins_form_size__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__mixins_form_state__[\"a\" /* default */]],\n inject: {\n bvGroup: {\n from: 'bvCheckGroup',\n default: false\n }\n },\n props: {\n value: {\n // type: [String, Number, Boolean, Object],\n default: true\n },\n uncheckedValue: {\n // type: [String, Number, Boolean, Object],\n // Not applicable in multi-check mode\n default: false\n },\n indeterminate: {\n // Not applicable in multi-check mode\n type: Boolean,\n default: false\n },\n switch: {\n // Custom switch styling\n type: Boolean,\n default: false\n },\n checked: {\n // v-model (Array when multiple checkboxes have same name)\n // type: [String, Number, Boolean, Object, Array],\n default: null\n }\n },\n computed: {\n isChecked: function isChecked() {\n var checked = this.computedLocalChecked;\n var value = this.value;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"a\" /* isArray */])(checked)) {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_loose_index_of__[\"a\" /* default */])(checked, value) > -1;\n } else {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_loose_equal__[\"a\" /* default */])(checked, value);\n }\n },\n isRadio: function isRadio() {\n return false;\n },\n isCheck: function isCheck() {\n return true;\n }\n },\n watch: {\n computedLocalChecked: function computedLocalChecked(newVal, oldVal) {\n this.$emit('input', newVal);\n\n if (this.$refs && this.$refs.input) {\n this.$emit('update:indeterminate', this.$refs.input.indeterminate);\n }\n },\n indeterminate: function indeterminate(newVal, oldVal) {\n this.setIndeterminate(newVal);\n }\n },\n mounted: function mounted() {\n // Set initial indeterminate state\n this.setIndeterminate(this.indeterminate);\n },\n methods: {\n handleChange: function handleChange(_ref) {\n var _ref$target = _ref.target,\n checked = _ref$target.checked,\n indeterminate = _ref$target.indeterminate;\n var localChecked = this.computedLocalChecked;\n var value = this.value;\n var isArr = Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"a\" /* isArray */])(localChecked);\n var uncheckedValue = isArr ? null : this.uncheckedValue; // Update computedLocalChecked\n\n if (isArr) {\n var idx = Object(__WEBPACK_IMPORTED_MODULE_2__utils_loose_index_of__[\"a\" /* default */])(localChecked, value);\n\n if (checked && idx < 0) {\n // Add value to array\n localChecked = localChecked.concat(value);\n } else if (!checked && idx > -1) {\n // Remove value from array\n localChecked = localChecked.slice(0, idx).concat(localChecked.slice(idx + 1));\n }\n } else {\n localChecked = checked ? value : uncheckedValue;\n }\n\n this.computedLocalChecked = localChecked; // Change is only emitted on user interaction\n\n this.$emit('change', checked ? value : uncheckedValue); // If this is a child of form-checkbox-group, we emit a change event on it as well\n\n if (this.isGroup) {\n this.bvGroup.$emit('change', localChecked);\n }\n\n this.$emit('update:indeterminate', indeterminate);\n },\n setIndeterminate: function setIndeterminate(state) {\n // Indeterminate only supported in single checkbox mode\n if (Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"a\" /* isArray */])(this.computedLocalChecked)) {\n state = false;\n }\n\n if (this.$refs && this.$refs.input) {\n this.$refs.input.indeterminate = state; // Emit update event to prop\n\n this.$emit('update:indeterminate', state);\n }\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWNoZWNrYm94L2Zvcm0tY2hlY2tib3guanM/ZDc3ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNlO0FBQ0s7QUFDUjtBQUNKO0FBQ3NCO0FBQ2I7QUFDRTtBQUNmOztBQUUvQjtBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcseUVBQW1CO0FBQzlCLEVBQUUsMkRBQU8sRUFBRSw2REFBUyxFQUFFLGtFQUFhLEVBQUUsbUVBQWM7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVUsdUVBQU87QUFDakIsZUFBZSw4RUFBWTtBQUMzQixPQUFPO0FBQ1AsZUFBZSwyRUFBVTtBQUN6QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsdUVBQU87QUFDekIsOERBQThEOztBQUU5RDtBQUNBLGtCQUFrQiw4RUFBWTs7QUFFOUI7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBLCtDQUErQzs7QUFFL0MsNkRBQTZEOztBQUU3RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFVBQVUsdUVBQU87QUFDakI7QUFDQTs7QUFFQTtBQUNBLCtDQUErQzs7QUFFL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6IjcwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IGxvb3NlRXF1YWwgZnJvbSAnLi4vLi4vdXRpbHMvbG9vc2UtZXF1YWwnO1xuaW1wb3J0IGxvb3NlSW5kZXhPZiBmcm9tICcuLi8uLi91dGlscy9sb29zZS1pbmRleC1vZic7XG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgZm9ybU1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtJztcbmltcG9ydCBmb3JtUmFkaW9DaGVja01peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXJhZGlvLWNoZWNrJztcbmltcG9ydCBmb3JtU2l6ZU1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXNpemUnO1xuaW1wb3J0IGZvcm1TdGF0ZU1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXN0YXRlJztcbmltcG9ydCBpZE1peGluIGZyb20gJy4uLy4uL21peGlucy9pZCc7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkZvcm1DaGVja2JveCA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JGb3JtQ2hlY2tib3gnLFxuICBtaXhpbnM6IFtmb3JtUmFkaW9DaGVja01peGluLCAvLyBJbmNsdWRlcyBzaGFyZWQgcmVuZGVyIGZ1bmN0aW9uXG4gIGlkTWl4aW4sIGZvcm1NaXhpbiwgZm9ybVNpemVNaXhpbiwgZm9ybVN0YXRlTWl4aW5dLFxuICBpbmplY3Q6IHtcbiAgICBidkdyb3VwOiB7XG4gICAgICBmcm9tOiAnYnZDaGVja0dyb3VwJyxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LFxuICBwcm9wczoge1xuICAgIHZhbHVlOiB7XG4gICAgICAvLyB0eXBlOiBbU3RyaW5nLCBOdW1iZXIsIEJvb2xlYW4sIE9iamVjdF0sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICB1bmNoZWNrZWRWYWx1ZToge1xuICAgICAgLy8gdHlwZTogW1N0cmluZywgTnVtYmVyLCBCb29sZWFuLCBPYmplY3RdLFxuICAgICAgLy8gTm90IGFwcGxpY2FibGUgaW4gbXVsdGktY2hlY2sgbW9kZVxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGluZGV0ZXJtaW5hdGU6IHtcbiAgICAgIC8vIE5vdCBhcHBsaWNhYmxlIGluIG11bHRpLWNoZWNrIG1vZGVcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgc3dpdGNoOiB7XG4gICAgICAvLyBDdXN0b20gc3dpdGNoIHN0eWxpbmdcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgY2hlY2tlZDoge1xuICAgICAgLy8gdi1tb2RlbCAoQXJyYXkgd2hlbiBtdWx0aXBsZSBjaGVja2JveGVzIGhhdmUgc2FtZSBuYW1lKVxuICAgICAgLy8gdHlwZTogW1N0cmluZywgTnVtYmVyLCBCb29sZWFuLCBPYmplY3QsIEFycmF5XSxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgaXNDaGVja2VkOiBmdW5jdGlvbiBpc0NoZWNrZWQoKSB7XG4gICAgICB2YXIgY2hlY2tlZCA9IHRoaXMuY29tcHV0ZWRMb2NhbENoZWNrZWQ7XG4gICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlO1xuXG4gICAgICBpZiAoaXNBcnJheShjaGVja2VkKSkge1xuICAgICAgICByZXR1cm4gbG9vc2VJbmRleE9mKGNoZWNrZWQsIHZhbHVlKSA+IC0xO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGxvb3NlRXF1YWwoY2hlY2tlZCwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaXNSYWRpbzogZnVuY3Rpb24gaXNSYWRpbygpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIGlzQ2hlY2s6IGZ1bmN0aW9uIGlzQ2hlY2soKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgY29tcHV0ZWRMb2NhbENoZWNrZWQ6IGZ1bmN0aW9uIGNvbXB1dGVkTG9jYWxDaGVja2VkKG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIG5ld1ZhbCk7XG5cbiAgICAgIGlmICh0aGlzLiRyZWZzICYmIHRoaXMuJHJlZnMuaW5wdXQpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgndXBkYXRlOmluZGV0ZXJtaW5hdGUnLCB0aGlzLiRyZWZzLmlucHV0LmluZGV0ZXJtaW5hdGUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaW5kZXRlcm1pbmF0ZTogZnVuY3Rpb24gaW5kZXRlcm1pbmF0ZShuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgdGhpcy5zZXRJbmRldGVybWluYXRlKG5ld1ZhbCk7XG4gICAgfVxuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIC8vIFNldCBpbml0aWFsIGluZGV0ZXJtaW5hdGUgc3RhdGVcbiAgICB0aGlzLnNldEluZGV0ZXJtaW5hdGUodGhpcy5pbmRldGVybWluYXRlKTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGhhbmRsZUNoYW5nZTogZnVuY3Rpb24gaGFuZGxlQ2hhbmdlKF9yZWYpIHtcbiAgICAgIHZhciBfcmVmJHRhcmdldCA9IF9yZWYudGFyZ2V0LFxuICAgICAgICAgIGNoZWNrZWQgPSBfcmVmJHRhcmdldC5jaGVja2VkLFxuICAgICAgICAgIGluZGV0ZXJtaW5hdGUgPSBfcmVmJHRhcmdldC5pbmRldGVybWluYXRlO1xuICAgICAgdmFyIGxvY2FsQ2hlY2tlZCA9IHRoaXMuY29tcHV0ZWRMb2NhbENoZWNrZWQ7XG4gICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgdmFyIGlzQXJyID0gaXNBcnJheShsb2NhbENoZWNrZWQpO1xuICAgICAgdmFyIHVuY2hlY2tlZFZhbHVlID0gaXNBcnIgPyBudWxsIDogdGhpcy51bmNoZWNrZWRWYWx1ZTsgLy8gVXBkYXRlIGNvbXB1dGVkTG9jYWxDaGVja2VkXG5cbiAgICAgIGlmIChpc0Fycikge1xuICAgICAgICB2YXIgaWR4ID0gbG9vc2VJbmRleE9mKGxvY2FsQ2hlY2tlZCwgdmFsdWUpO1xuXG4gICAgICAgIGlmIChjaGVja2VkICYmIGlkeCA8IDApIHtcbiAgICAgICAgICAvLyBBZGQgdmFsdWUgdG8gYXJyYXlcbiAgICAgICAgICBsb2NhbENoZWNrZWQgPSBsb2NhbENoZWNrZWQuY29uY2F0KHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmICghY2hlY2tlZCAmJiBpZHggPiAtMSkge1xuICAgICAgICAgIC8vIFJlbW92ZSB2YWx1ZSBmcm9tIGFycmF5XG4gICAgICAgICAgbG9jYWxDaGVja2VkID0gbG9jYWxDaGVja2VkLnNsaWNlKDAsIGlkeCkuY29uY2F0KGxvY2FsQ2hlY2tlZC5zbGljZShpZHggKyAxKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvY2FsQ2hlY2tlZCA9IGNoZWNrZWQgPyB2YWx1ZSA6IHVuY2hlY2tlZFZhbHVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbXB1dGVkTG9jYWxDaGVja2VkID0gbG9jYWxDaGVja2VkOyAvLyBDaGFuZ2UgaXMgb25seSBlbWl0dGVkIG9uIHVzZXIgaW50ZXJhY3Rpb25cblxuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgY2hlY2tlZCA/IHZhbHVlIDogdW5jaGVja2VkVmFsdWUpOyAvLyBJZiB0aGlzIGlzIGEgY2hpbGQgb2YgZm9ybS1jaGVja2JveC1ncm91cCwgd2UgZW1pdCBhIGNoYW5nZSBldmVudCBvbiBpdCBhcyB3ZWxsXG5cbiAgICAgIGlmICh0aGlzLmlzR3JvdXApIHtcbiAgICAgICAgdGhpcy5idkdyb3VwLiRlbWl0KCdjaGFuZ2UnLCBsb2NhbENoZWNrZWQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6aW5kZXRlcm1pbmF0ZScsIGluZGV0ZXJtaW5hdGUpO1xuICAgIH0sXG4gICAgc2V0SW5kZXRlcm1pbmF0ZTogZnVuY3Rpb24gc2V0SW5kZXRlcm1pbmF0ZShzdGF0ZSkge1xuICAgICAgLy8gSW5kZXRlcm1pbmF0ZSBvbmx5IHN1cHBvcnRlZCBpbiBzaW5nbGUgY2hlY2tib3ggbW9kZVxuICAgICAgaWYgKGlzQXJyYXkodGhpcy5jb21wdXRlZExvY2FsQ2hlY2tlZCkpIHtcbiAgICAgICAgc3RhdGUgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuJHJlZnMgJiYgdGhpcy4kcmVmcy5pbnB1dCkge1xuICAgICAgICB0aGlzLiRyZWZzLmlucHV0LmluZGV0ZXJtaW5hdGUgPSBzdGF0ZTsgLy8gRW1pdCB1cGRhdGUgZXZlbnQgdG8gcHJvcFxuXG4gICAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZTppbmRldGVybWluYXRlJywgc3RhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWNoZWNrYm94L2Zvcm0tY2hlY2tib3guanNcbi8vIG1vZHVsZSBpZCA9IDcwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///70\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BFormCheckbox; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_loose_equal__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_loose_index_of__ = __webpack_require__(254);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mixins_form__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__mixins_form_radio_check__ = __webpack_require__(142);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_form_size__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__mixins_form_state__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__mixins_id__ = __webpack_require__(9);\n\n\n\n\n\n\n\n\n // @vue/component\n\nvar BFormCheckbox =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BFormCheckbox',\n mixins: [__WEBPACK_IMPORTED_MODULE_5__mixins_form_radio_check__[\"a\" /* default */], // Includes shared render function\n __WEBPACK_IMPORTED_MODULE_8__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__mixins_form__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__mixins_form_size__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__mixins_form_state__[\"a\" /* default */]],\n inject: {\n bvGroup: {\n from: 'bvCheckGroup',\n default: false\n }\n },\n props: {\n value: {\n // type: [String, Number, Boolean, Object],\n default: true\n },\n uncheckedValue: {\n // type: [String, Number, Boolean, Object],\n // Not applicable in multi-check mode\n default: false\n },\n indeterminate: {\n // Not applicable in multi-check mode\n type: Boolean,\n default: false\n },\n switch: {\n // Custom switch styling\n type: Boolean,\n default: false\n },\n checked: {\n // v-model (Array when multiple checkboxes have same name)\n // type: [String, Number, Boolean, Object, Array],\n default: null\n }\n },\n computed: {\n isChecked: function isChecked() {\n var checked = this.computedLocalChecked;\n var value = this.value;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"a\" /* isArray */])(checked)) {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_loose_index_of__[\"a\" /* default */])(checked, value) > -1;\n } else {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_loose_equal__[\"a\" /* default */])(checked, value);\n }\n },\n isRadio: function isRadio() {\n return false;\n },\n isCheck: function isCheck() {\n return true;\n }\n },\n watch: {\n computedLocalChecked: function computedLocalChecked(newVal, oldVal) {\n this.$emit('input', newVal);\n\n if (this.$refs && this.$refs.input) {\n this.$emit('update:indeterminate', this.$refs.input.indeterminate);\n }\n },\n indeterminate: function indeterminate(newVal, oldVal) {\n this.setIndeterminate(newVal);\n }\n },\n mounted: function mounted() {\n // Set initial indeterminate state\n this.setIndeterminate(this.indeterminate);\n },\n methods: {\n handleChange: function handleChange(_ref) {\n var _ref$target = _ref.target,\n checked = _ref$target.checked,\n indeterminate = _ref$target.indeterminate;\n var localChecked = this.computedLocalChecked;\n var value = this.value;\n var isArr = Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"a\" /* isArray */])(localChecked);\n var uncheckedValue = isArr ? null : this.uncheckedValue; // Update computedLocalChecked\n\n if (isArr) {\n var idx = Object(__WEBPACK_IMPORTED_MODULE_2__utils_loose_index_of__[\"a\" /* default */])(localChecked, value);\n\n if (checked && idx < 0) {\n // Add value to array\n localChecked = localChecked.concat(value);\n } else if (!checked && idx > -1) {\n // Remove value from array\n localChecked = localChecked.slice(0, idx).concat(localChecked.slice(idx + 1));\n }\n } else {\n localChecked = checked ? value : uncheckedValue;\n }\n\n this.computedLocalChecked = localChecked; // Change is only emitted on user interaction\n\n this.$emit('change', checked ? value : uncheckedValue); // If this is a child of form-checkbox-group, we emit a change event on it as well\n\n if (this.isGroup) {\n this.bvGroup.$emit('change', localChecked);\n }\n\n this.$emit('update:indeterminate', indeterminate);\n },\n setIndeterminate: function setIndeterminate(state) {\n // Indeterminate only supported in single checkbox mode\n if (Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"a\" /* isArray */])(this.computedLocalChecked)) {\n state = false;\n }\n\n if (this.$refs && this.$refs.input) {\n this.$refs.input.indeterminate = state; // Emit update event to prop\n\n this.$emit('update:indeterminate', state);\n }\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWNoZWNrYm94L2Zvcm0tY2hlY2tib3guanM/ZDc3ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNlO0FBQ0s7QUFDUjtBQUNKO0FBQ3NCO0FBQ2I7QUFDRTtBQUNmOztBQUUvQjtBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcseUVBQW1CO0FBQzlCLEVBQUUsMkRBQU8sRUFBRSw2REFBUyxFQUFFLGtFQUFhLEVBQUUsbUVBQWM7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVUsdUVBQU87QUFDakIsZUFBZSw4RUFBWTtBQUMzQixPQUFPO0FBQ1AsZUFBZSwyRUFBVTtBQUN6QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsdUVBQU87QUFDekIsOERBQThEOztBQUU5RDtBQUNBLGtCQUFrQiw4RUFBWTs7QUFFOUI7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBLCtDQUErQzs7QUFFL0MsNkRBQTZEOztBQUU3RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFVBQVUsdUVBQU87QUFDakI7QUFDQTs7QUFFQTtBQUNBLCtDQUErQzs7QUFFL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6IjcwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IGxvb3NlRXF1YWwgZnJvbSAnLi4vLi4vdXRpbHMvbG9vc2UtZXF1YWwnO1xuaW1wb3J0IGxvb3NlSW5kZXhPZiBmcm9tICcuLi8uLi91dGlscy9sb29zZS1pbmRleC1vZic7XG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgZm9ybU1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtJztcbmltcG9ydCBmb3JtUmFkaW9DaGVja01peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXJhZGlvLWNoZWNrJztcbmltcG9ydCBmb3JtU2l6ZU1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXNpemUnO1xuaW1wb3J0IGZvcm1TdGF0ZU1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXN0YXRlJztcbmltcG9ydCBpZE1peGluIGZyb20gJy4uLy4uL21peGlucy9pZCc7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkZvcm1DaGVja2JveCA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JGb3JtQ2hlY2tib3gnLFxuICBtaXhpbnM6IFtmb3JtUmFkaW9DaGVja01peGluLCAvLyBJbmNsdWRlcyBzaGFyZWQgcmVuZGVyIGZ1bmN0aW9uXG4gIGlkTWl4aW4sIGZvcm1NaXhpbiwgZm9ybVNpemVNaXhpbiwgZm9ybVN0YXRlTWl4aW5dLFxuICBpbmplY3Q6IHtcbiAgICBidkdyb3VwOiB7XG4gICAgICBmcm9tOiAnYnZDaGVja0dyb3VwJyxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LFxuICBwcm9wczoge1xuICAgIHZhbHVlOiB7XG4gICAgICAvLyB0eXBlOiBbU3RyaW5nLCBOdW1iZXIsIEJvb2xlYW4sIE9iamVjdF0sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICB1bmNoZWNrZWRWYWx1ZToge1xuICAgICAgLy8gdHlwZTogW1N0cmluZywgTnVtYmVyLCBCb29sZWFuLCBPYmplY3RdLFxuICAgICAgLy8gTm90IGFwcGxpY2FibGUgaW4gbXVsdGktY2hlY2sgbW9kZVxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGluZGV0ZXJtaW5hdGU6IHtcbiAgICAgIC8vIE5vdCBhcHBsaWNhYmxlIGluIG11bHRpLWNoZWNrIG1vZGVcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgc3dpdGNoOiB7XG4gICAgICAvLyBDdXN0b20gc3dpdGNoIHN0eWxpbmdcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgY2hlY2tlZDoge1xuICAgICAgLy8gdi1tb2RlbCAoQXJyYXkgd2hlbiBtdWx0aXBsZSBjaGVja2JveGVzIGhhdmUgc2FtZSBuYW1lKVxuICAgICAgLy8gdHlwZTogW1N0cmluZywgTnVtYmVyLCBCb29sZWFuLCBPYmplY3QsIEFycmF5XSxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgaXNDaGVja2VkOiBmdW5jdGlvbiBpc0NoZWNrZWQoKSB7XG4gICAgICB2YXIgY2hlY2tlZCA9IHRoaXMuY29tcHV0ZWRMb2NhbENoZWNrZWQ7XG4gICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlO1xuXG4gICAgICBpZiAoaXNBcnJheShjaGVja2VkKSkge1xuICAgICAgICByZXR1cm4gbG9vc2VJbmRleE9mKGNoZWNrZWQsIHZhbHVlKSA+IC0xO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGxvb3NlRXF1YWwoY2hlY2tlZCwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaXNSYWRpbzogZnVuY3Rpb24gaXNSYWRpbygpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIGlzQ2hlY2s6IGZ1bmN0aW9uIGlzQ2hlY2soKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgY29tcHV0ZWRMb2NhbENoZWNrZWQ6IGZ1bmN0aW9uIGNvbXB1dGVkTG9jYWxDaGVja2VkKG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIG5ld1ZhbCk7XG5cbiAgICAgIGlmICh0aGlzLiRyZWZzICYmIHRoaXMuJHJlZnMuaW5wdXQpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgndXBkYXRlOmluZGV0ZXJtaW5hdGUnLCB0aGlzLiRyZWZzLmlucHV0LmluZGV0ZXJtaW5hdGUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaW5kZXRlcm1pbmF0ZTogZnVuY3Rpb24gaW5kZXRlcm1pbmF0ZShuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgdGhpcy5zZXRJbmRldGVybWluYXRlKG5ld1ZhbCk7XG4gICAgfVxuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIC8vIFNldCBpbml0aWFsIGluZGV0ZXJtaW5hdGUgc3RhdGVcbiAgICB0aGlzLnNldEluZGV0ZXJtaW5hdGUodGhpcy5pbmRldGVybWluYXRlKTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGhhbmRsZUNoYW5nZTogZnVuY3Rpb24gaGFuZGxlQ2hhbmdlKF9yZWYpIHtcbiAgICAgIHZhciBfcmVmJHRhcmdldCA9IF9yZWYudGFyZ2V0LFxuICAgICAgICAgIGNoZWNrZWQgPSBfcmVmJHRhcmdldC5jaGVja2VkLFxuICAgICAgICAgIGluZGV0ZXJtaW5hdGUgPSBfcmVmJHRhcmdldC5pbmRldGVybWluYXRlO1xuICAgICAgdmFyIGxvY2FsQ2hlY2tlZCA9IHRoaXMuY29tcHV0ZWRMb2NhbENoZWNrZWQ7XG4gICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgdmFyIGlzQXJyID0gaXNBcnJheShsb2NhbENoZWNrZWQpO1xuICAgICAgdmFyIHVuY2hlY2tlZFZhbHVlID0gaXNBcnIgPyBudWxsIDogdGhpcy51bmNoZWNrZWRWYWx1ZTsgLy8gVXBkYXRlIGNvbXB1dGVkTG9jYWxDaGVja2VkXG5cbiAgICAgIGlmIChpc0Fycikge1xuICAgICAgICB2YXIgaWR4ID0gbG9vc2VJbmRleE9mKGxvY2FsQ2hlY2tlZCwgdmFsdWUpO1xuXG4gICAgICAgIGlmIChjaGVja2VkICYmIGlkeCA8IDApIHtcbiAgICAgICAgICAvLyBBZGQgdmFsdWUgdG8gYXJyYXlcbiAgICAgICAgICBsb2NhbENoZWNrZWQgPSBsb2NhbENoZWNrZWQuY29uY2F0KHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmICghY2hlY2tlZCAmJiBpZHggPiAtMSkge1xuICAgICAgICAgIC8vIFJlbW92ZSB2YWx1ZSBmcm9tIGFycmF5XG4gICAgICAgICAgbG9jYWxDaGVja2VkID0gbG9jYWxDaGVja2VkLnNsaWNlKDAsIGlkeCkuY29uY2F0KGxvY2FsQ2hlY2tlZC5zbGljZShpZHggKyAxKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvY2FsQ2hlY2tlZCA9IGNoZWNrZWQgPyB2YWx1ZSA6IHVuY2hlY2tlZFZhbHVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbXB1dGVkTG9jYWxDaGVja2VkID0gbG9jYWxDaGVja2VkOyAvLyBDaGFuZ2UgaXMgb25seSBlbWl0dGVkIG9uIHVzZXIgaW50ZXJhY3Rpb25cblxuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgY2hlY2tlZCA/IHZhbHVlIDogdW5jaGVja2VkVmFsdWUpOyAvLyBJZiB0aGlzIGlzIGEgY2hpbGQgb2YgZm9ybS1jaGVja2JveC1ncm91cCwgd2UgZW1pdCBhIGNoYW5nZSBldmVudCBvbiBpdCBhcyB3ZWxsXG5cbiAgICAgIGlmICh0aGlzLmlzR3JvdXApIHtcbiAgICAgICAgdGhpcy5idkdyb3VwLiRlbWl0KCdjaGFuZ2UnLCBsb2NhbENoZWNrZWQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6aW5kZXRlcm1pbmF0ZScsIGluZGV0ZXJtaW5hdGUpO1xuICAgIH0sXG4gICAgc2V0SW5kZXRlcm1pbmF0ZTogZnVuY3Rpb24gc2V0SW5kZXRlcm1pbmF0ZShzdGF0ZSkge1xuICAgICAgLy8gSW5kZXRlcm1pbmF0ZSBvbmx5IHN1cHBvcnRlZCBpbiBzaW5nbGUgY2hlY2tib3ggbW9kZVxuICAgICAgaWYgKGlzQXJyYXkodGhpcy5jb21wdXRlZExvY2FsQ2hlY2tlZCkpIHtcbiAgICAgICAgc3RhdGUgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuJHJlZnMgJiYgdGhpcy4kcmVmcy5pbnB1dCkge1xuICAgICAgICB0aGlzLiRyZWZzLmlucHV0LmluZGV0ZXJtaW5hdGUgPSBzdGF0ZTsgLy8gRW1pdCB1cGRhdGUgZXZlbnQgdG8gcHJvcFxuXG4gICAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZTppbmRldGVybWluYXRlJywgc3RhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWNoZWNrYm94L2Zvcm0tY2hlY2tib3guanNcbi8vIG1vZHVsZSBpZCA9IDcwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///70\n"); /***/ }), /* 71 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BFormRadio; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_form__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mixins_form_state__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mixins_form_size__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__mixins_form_radio_check__ = __webpack_require__(140);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_loose_equal__ = __webpack_require__(12);\n\n\n\n\n\n\n // @vue/component\n\nvar BFormRadio =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BFormRadio',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__mixins_form_radio_check__[\"a\" /* default */], // Includes shared render function\n __WEBPACK_IMPORTED_MODULE_2__mixins_form__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__mixins_form_size__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__mixins_form_state__[\"a\" /* default */]],\n inject: {\n bvGroup: {\n from: 'bvRadioGroup',\n default: false\n }\n },\n props: {\n checked: {\n // v-model\n // type: [String, Number, Boolean, Object],\n default: null\n }\n },\n computed: {\n // Radio Groups can only have a single value, so determining if checked is simple\n isChecked: function isChecked() {\n return Object(__WEBPACK_IMPORTED_MODULE_6__utils_loose_equal__[\"a\" /* default */])(this.value, this.computedLocalChecked);\n },\n // Flags for form-radio-check mixin\n isRadio: function isRadio() {\n return true;\n },\n isCheck: function isCheck() {\n return false;\n }\n },\n watch: {\n // Radio Groups can only have a single value, so our watchers are simple\n computedLocalChecked: function computedLocalChecked(newVal, oldVal) {\n this.$emit('input', this.computedLocalChecked);\n }\n },\n methods: {\n handleChange: function handleChange(_ref) {\n var checked = _ref.target.checked;\n var value = this.value;\n this.computedLocalChecked = value; // Change is only emitted on user interaction\n\n this.$emit('change', checked ? value : null); // If this is a child of form-radio-group, we emit a change event on it as well\n\n if (this.isGroup) {\n this.bvGroup.$emit('change', checked ? value : null);\n }\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLXJhZGlvL2Zvcm0tcmFkaW8uanM/MDRmNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ0k7QUFDSTtBQUNXO0FBQ0Y7QUFDYTtBQUNmOztBQUUxQztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsMkRBQU8sRUFBRSx5RUFBbUI7QUFDdkMsRUFBRSw2REFBUyxFQUFFLGtFQUFhLEVBQUUsbUVBQWM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSwyRUFBVTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDOztBQUV4QyxtREFBbUQ7O0FBRW5EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6IjcxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IGlkTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2lkJztcbmltcG9ydCBmb3JtTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0nO1xuaW1wb3J0IGZvcm1TdGF0ZU1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXN0YXRlJztcbmltcG9ydCBmb3JtU2l6ZU1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXNpemUnO1xuaW1wb3J0IGZvcm1SYWRpb0NoZWNrTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tcmFkaW8tY2hlY2snO1xuaW1wb3J0IGxvb3NlRXF1YWwgZnJvbSAnLi4vLi4vdXRpbHMvbG9vc2UtZXF1YWwnOyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJGb3JtUmFkaW8gPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCRm9ybVJhZGlvJyxcbiAgbWl4aW5zOiBbaWRNaXhpbiwgZm9ybVJhZGlvQ2hlY2tNaXhpbiwgLy8gSW5jbHVkZXMgc2hhcmVkIHJlbmRlciBmdW5jdGlvblxuICBmb3JtTWl4aW4sIGZvcm1TaXplTWl4aW4sIGZvcm1TdGF0ZU1peGluXSxcbiAgaW5qZWN0OiB7XG4gICAgYnZHcm91cDoge1xuICAgICAgZnJvbTogJ2J2UmFkaW9Hcm91cCcsXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgcHJvcHM6IHtcbiAgICBjaGVja2VkOiB7XG4gICAgICAvLyB2LW1vZGVsXG4gICAgICAvLyB0eXBlOiBbU3RyaW5nLCBOdW1iZXIsIEJvb2xlYW4sIE9iamVjdF0sXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIC8vIFJhZGlvIEdyb3VwcyBjYW4gb25seSBoYXZlIGEgc2luZ2xlIHZhbHVlLCBzbyBkZXRlcm1pbmluZyBpZiBjaGVja2VkIGlzIHNpbXBsZVxuICAgIGlzQ2hlY2tlZDogZnVuY3Rpb24gaXNDaGVja2VkKCkge1xuICAgICAgcmV0dXJuIGxvb3NlRXF1YWwodGhpcy52YWx1ZSwgdGhpcy5jb21wdXRlZExvY2FsQ2hlY2tlZCk7XG4gICAgfSxcbiAgICAvLyBGbGFncyBmb3IgZm9ybS1yYWRpby1jaGVjayBtaXhpblxuICAgIGlzUmFkaW86IGZ1bmN0aW9uIGlzUmFkaW8oKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIGlzQ2hlY2s6IGZ1bmN0aW9uIGlzQ2hlY2soKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIC8vIFJhZGlvIEdyb3VwcyBjYW4gb25seSBoYXZlIGEgc2luZ2xlIHZhbHVlLCBzbyBvdXIgd2F0Y2hlcnMgYXJlIHNpbXBsZVxuICAgIGNvbXB1dGVkTG9jYWxDaGVja2VkOiBmdW5jdGlvbiBjb21wdXRlZExvY2FsQ2hlY2tlZChuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB0aGlzLmNvbXB1dGVkTG9jYWxDaGVja2VkKTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBoYW5kbGVDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUNoYW5nZShfcmVmKSB7XG4gICAgICB2YXIgY2hlY2tlZCA9IF9yZWYudGFyZ2V0LmNoZWNrZWQ7XG4gICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgdGhpcy5jb21wdXRlZExvY2FsQ2hlY2tlZCA9IHZhbHVlOyAvLyBDaGFuZ2UgaXMgb25seSBlbWl0dGVkIG9uIHVzZXIgaW50ZXJhY3Rpb25cblxuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgY2hlY2tlZCA/IHZhbHVlIDogbnVsbCk7IC8vIElmIHRoaXMgaXMgYSBjaGlsZCBvZiBmb3JtLXJhZGlvLWdyb3VwLCB3ZSBlbWl0IGEgY2hhbmdlIGV2ZW50IG9uIGl0IGFzIHdlbGxcblxuICAgICAgaWYgKHRoaXMuaXNHcm91cCkge1xuICAgICAgICB0aGlzLmJ2R3JvdXAuJGVtaXQoJ2NoYW5nZScsIGNoZWNrZWQgPyB2YWx1ZSA6IG51bGwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLXJhZGlvL2Zvcm0tcmFkaW8uanNcbi8vIG1vZHVsZSBpZCA9IDcxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///71\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BFormRadio; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_form__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mixins_form_state__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mixins_form_size__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__mixins_form_radio_check__ = __webpack_require__(142);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_loose_equal__ = __webpack_require__(12);\n\n\n\n\n\n\n // @vue/component\n\nvar BFormRadio =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BFormRadio',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__mixins_form_radio_check__[\"a\" /* default */], // Includes shared render function\n __WEBPACK_IMPORTED_MODULE_2__mixins_form__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__mixins_form_size__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__mixins_form_state__[\"a\" /* default */]],\n inject: {\n bvGroup: {\n from: 'bvRadioGroup',\n default: false\n }\n },\n props: {\n checked: {\n // v-model\n // type: [String, Number, Boolean, Object],\n default: null\n }\n },\n computed: {\n // Radio Groups can only have a single value, so determining if checked is simple\n isChecked: function isChecked() {\n return Object(__WEBPACK_IMPORTED_MODULE_6__utils_loose_equal__[\"a\" /* default */])(this.value, this.computedLocalChecked);\n },\n // Flags for form-radio-check mixin\n isRadio: function isRadio() {\n return true;\n },\n isCheck: function isCheck() {\n return false;\n }\n },\n watch: {\n // Radio Groups can only have a single value, so our watchers are simple\n computedLocalChecked: function computedLocalChecked(newVal, oldVal) {\n this.$emit('input', this.computedLocalChecked);\n }\n },\n methods: {\n handleChange: function handleChange(_ref) {\n var checked = _ref.target.checked;\n var value = this.value;\n this.computedLocalChecked = value; // Change is only emitted on user interaction\n\n this.$emit('change', checked ? value : null); // If this is a child of form-radio-group, we emit a change event on it as well\n\n if (this.isGroup) {\n this.bvGroup.$emit('change', checked ? value : null);\n }\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLXJhZGlvL2Zvcm0tcmFkaW8uanM/MDRmNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ0k7QUFDSTtBQUNXO0FBQ0Y7QUFDYTtBQUNmOztBQUUxQztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsMkRBQU8sRUFBRSx5RUFBbUI7QUFDdkMsRUFBRSw2REFBUyxFQUFFLGtFQUFhLEVBQUUsbUVBQWM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSwyRUFBVTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDOztBQUV4QyxtREFBbUQ7O0FBRW5EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6IjcxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IGlkTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2lkJztcbmltcG9ydCBmb3JtTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0nO1xuaW1wb3J0IGZvcm1TdGF0ZU1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXN0YXRlJztcbmltcG9ydCBmb3JtU2l6ZU1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXNpemUnO1xuaW1wb3J0IGZvcm1SYWRpb0NoZWNrTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tcmFkaW8tY2hlY2snO1xuaW1wb3J0IGxvb3NlRXF1YWwgZnJvbSAnLi4vLi4vdXRpbHMvbG9vc2UtZXF1YWwnOyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJGb3JtUmFkaW8gPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCRm9ybVJhZGlvJyxcbiAgbWl4aW5zOiBbaWRNaXhpbiwgZm9ybVJhZGlvQ2hlY2tNaXhpbiwgLy8gSW5jbHVkZXMgc2hhcmVkIHJlbmRlciBmdW5jdGlvblxuICBmb3JtTWl4aW4sIGZvcm1TaXplTWl4aW4sIGZvcm1TdGF0ZU1peGluXSxcbiAgaW5qZWN0OiB7XG4gICAgYnZHcm91cDoge1xuICAgICAgZnJvbTogJ2J2UmFkaW9Hcm91cCcsXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgcHJvcHM6IHtcbiAgICBjaGVja2VkOiB7XG4gICAgICAvLyB2LW1vZGVsXG4gICAgICAvLyB0eXBlOiBbU3RyaW5nLCBOdW1iZXIsIEJvb2xlYW4sIE9iamVjdF0sXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIC8vIFJhZGlvIEdyb3VwcyBjYW4gb25seSBoYXZlIGEgc2luZ2xlIHZhbHVlLCBzbyBkZXRlcm1pbmluZyBpZiBjaGVja2VkIGlzIHNpbXBsZVxuICAgIGlzQ2hlY2tlZDogZnVuY3Rpb24gaXNDaGVja2VkKCkge1xuICAgICAgcmV0dXJuIGxvb3NlRXF1YWwodGhpcy52YWx1ZSwgdGhpcy5jb21wdXRlZExvY2FsQ2hlY2tlZCk7XG4gICAgfSxcbiAgICAvLyBGbGFncyBmb3IgZm9ybS1yYWRpby1jaGVjayBtaXhpblxuICAgIGlzUmFkaW86IGZ1bmN0aW9uIGlzUmFkaW8oKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIGlzQ2hlY2s6IGZ1bmN0aW9uIGlzQ2hlY2soKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIC8vIFJhZGlvIEdyb3VwcyBjYW4gb25seSBoYXZlIGEgc2luZ2xlIHZhbHVlLCBzbyBvdXIgd2F0Y2hlcnMgYXJlIHNpbXBsZVxuICAgIGNvbXB1dGVkTG9jYWxDaGVja2VkOiBmdW5jdGlvbiBjb21wdXRlZExvY2FsQ2hlY2tlZChuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB0aGlzLmNvbXB1dGVkTG9jYWxDaGVja2VkKTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBoYW5kbGVDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUNoYW5nZShfcmVmKSB7XG4gICAgICB2YXIgY2hlY2tlZCA9IF9yZWYudGFyZ2V0LmNoZWNrZWQ7XG4gICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgdGhpcy5jb21wdXRlZExvY2FsQ2hlY2tlZCA9IHZhbHVlOyAvLyBDaGFuZ2UgaXMgb25seSBlbWl0dGVkIG9uIHVzZXIgaW50ZXJhY3Rpb25cblxuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgY2hlY2tlZCA/IHZhbHVlIDogbnVsbCk7IC8vIElmIHRoaXMgaXMgYSBjaGlsZCBvZiBmb3JtLXJhZGlvLWdyb3VwLCB3ZSBlbWl0IGEgY2hhbmdlIGV2ZW50IG9uIGl0IGFzIHdlbGxcblxuICAgICAgaWYgKHRoaXMuaXNHcm91cCkge1xuICAgICAgICB0aGlzLmJ2R3JvdXAuJGVtaXQoJ2NoYW5nZScsIGNoZWNrZWQgPyB2YWx1ZSA6IG51bGwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLXJhZGlvL2Zvcm0tcmFkaW8uanNcbi8vIG1vZHVsZSBpZCA9IDcxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///71\n"); /***/ }), /* 72 */ @@ -623,7 +623,7 @@ eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return NavPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__nav__ = __webpack_require__(47);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__nav_item__ = __webpack_require__(172);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__nav_text__ = __webpack_require__(173);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__nav_form__ = __webpack_require__(174);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__nav_item_dropdown__ = __webpack_require__(175);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__dropdown__ = __webpack_require__(40);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BNav */\n/* unused harmony reexport BNavItem */\n/* unused harmony reexport BNavText */\n/* unused harmony reexport BNavForm */\n/* unused harmony reexport BNavItemDropdown */\n\n\n\n\n\n\n\nvar NavPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_6__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BNav: __WEBPACK_IMPORTED_MODULE_0__nav__[\"a\" /* BNav */],\n BNavItem: __WEBPACK_IMPORTED_MODULE_1__nav_item__[\"a\" /* BNavItem */],\n BNavText: __WEBPACK_IMPORTED_MODULE_2__nav_text__[\"a\" /* BNavText */],\n BNavForm: __WEBPACK_IMPORTED_MODULE_3__nav_form__[\"a\" /* BNavForm */],\n BNavItemDropdown: __WEBPACK_IMPORTED_MODULE_4__nav_item_dropdown__[\"a\" /* BNavItemDropdown */],\n BNavItemDd: __WEBPACK_IMPORTED_MODULE_4__nav_item_dropdown__[\"a\" /* BNavItemDropdown */],\n BNavDropdown: __WEBPACK_IMPORTED_MODULE_4__nav_item_dropdown__[\"a\" /* BNavItemDropdown */],\n BNavDd: __WEBPACK_IMPORTED_MODULE_4__nav_item_dropdown__[\"a\" /* BNavItemDropdown */]\n },\n plugins: {\n DropdownPlugin: __WEBPACK_IMPORTED_MODULE_5__dropdown__[\"a\" /* DropdownPlugin */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXYvaW5kZXguanM/YTg0NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2QjtBQUNTO0FBQ0E7QUFDQTtBQUNpQjtBQUNWO0FBQ087QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxVQUFVLGtEQUFJO0FBQ2QsY0FBYywyREFBUTtBQUN0QixjQUFjLDJEQUFRO0FBQ3RCLGNBQWMsMkRBQVE7QUFDdEIsc0JBQXNCLDRFQUFnQjtBQUN0QyxnQkFBZ0IsNEVBQWdCO0FBQ2hDLGtCQUFrQiw0RUFBZ0I7QUFDbEMsWUFBWSw0RUFBZ0I7QUFDNUIsR0FBRztBQUNIO0FBQ0Esb0JBQW9CLGlFQUFjO0FBQ2xDO0FBQ0EsQ0FBQyIsImZpbGUiOiI4MC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJOYXYgfSBmcm9tICcuL25hdic7XG5pbXBvcnQgeyBCTmF2SXRlbSB9IGZyb20gJy4vbmF2LWl0ZW0nO1xuaW1wb3J0IHsgQk5hdlRleHQgfSBmcm9tICcuL25hdi10ZXh0JztcbmltcG9ydCB7IEJOYXZGb3JtIH0gZnJvbSAnLi9uYXYtZm9ybSc7XG5pbXBvcnQgeyBCTmF2SXRlbURyb3Bkb3duIH0gZnJvbSAnLi9uYXYtaXRlbS1kcm9wZG93bic7XG5pbXBvcnQgeyBEcm9wZG93blBsdWdpbiB9IGZyb20gJy4uL2Ryb3Bkb3duJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBOYXZQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCTmF2OiBCTmF2LFxuICAgIEJOYXZJdGVtOiBCTmF2SXRlbSxcbiAgICBCTmF2VGV4dDogQk5hdlRleHQsXG4gICAgQk5hdkZvcm06IEJOYXZGb3JtLFxuICAgIEJOYXZJdGVtRHJvcGRvd246IEJOYXZJdGVtRHJvcGRvd24sXG4gICAgQk5hdkl0ZW1EZDogQk5hdkl0ZW1Ecm9wZG93bixcbiAgICBCTmF2RHJvcGRvd246IEJOYXZJdGVtRHJvcGRvd24sXG4gICAgQk5hdkRkOiBCTmF2SXRlbURyb3Bkb3duXG4gIH0sXG4gIHBsdWdpbnM6IHtcbiAgICBEcm9wZG93blBsdWdpbjogRHJvcGRvd25QbHVnaW5cbiAgfVxufSk7XG5leHBvcnQgeyBOYXZQbHVnaW4sIEJOYXYsIEJOYXZJdGVtLCBCTmF2VGV4dCwgQk5hdkZvcm0sIEJOYXZJdGVtRHJvcGRvd24gfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL25hdi9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gODBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///80\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return NavPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__nav__ = __webpack_require__(47);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__nav_item__ = __webpack_require__(174);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__nav_text__ = __webpack_require__(175);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__nav_form__ = __webpack_require__(176);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__nav_item_dropdown__ = __webpack_require__(177);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__dropdown__ = __webpack_require__(40);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BNav */\n/* unused harmony reexport BNavItem */\n/* unused harmony reexport BNavText */\n/* unused harmony reexport BNavForm */\n/* unused harmony reexport BNavItemDropdown */\n\n\n\n\n\n\n\nvar NavPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_6__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BNav: __WEBPACK_IMPORTED_MODULE_0__nav__[\"a\" /* BNav */],\n BNavItem: __WEBPACK_IMPORTED_MODULE_1__nav_item__[\"a\" /* BNavItem */],\n BNavText: __WEBPACK_IMPORTED_MODULE_2__nav_text__[\"a\" /* BNavText */],\n BNavForm: __WEBPACK_IMPORTED_MODULE_3__nav_form__[\"a\" /* BNavForm */],\n BNavItemDropdown: __WEBPACK_IMPORTED_MODULE_4__nav_item_dropdown__[\"a\" /* BNavItemDropdown */],\n BNavItemDd: __WEBPACK_IMPORTED_MODULE_4__nav_item_dropdown__[\"a\" /* BNavItemDropdown */],\n BNavDropdown: __WEBPACK_IMPORTED_MODULE_4__nav_item_dropdown__[\"a\" /* BNavItemDropdown */],\n BNavDd: __WEBPACK_IMPORTED_MODULE_4__nav_item_dropdown__[\"a\" /* BNavItemDropdown */]\n },\n plugins: {\n DropdownPlugin: __WEBPACK_IMPORTED_MODULE_5__dropdown__[\"a\" /* DropdownPlugin */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXYvaW5kZXguanM/YTg0NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2QjtBQUNTO0FBQ0E7QUFDQTtBQUNpQjtBQUNWO0FBQ087QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxVQUFVLGtEQUFJO0FBQ2QsY0FBYywyREFBUTtBQUN0QixjQUFjLDJEQUFRO0FBQ3RCLGNBQWMsMkRBQVE7QUFDdEIsc0JBQXNCLDRFQUFnQjtBQUN0QyxnQkFBZ0IsNEVBQWdCO0FBQ2hDLGtCQUFrQiw0RUFBZ0I7QUFDbEMsWUFBWSw0RUFBZ0I7QUFDNUIsR0FBRztBQUNIO0FBQ0Esb0JBQW9CLGlFQUFjO0FBQ2xDO0FBQ0EsQ0FBQyIsImZpbGUiOiI4MC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJOYXYgfSBmcm9tICcuL25hdic7XG5pbXBvcnQgeyBCTmF2SXRlbSB9IGZyb20gJy4vbmF2LWl0ZW0nO1xuaW1wb3J0IHsgQk5hdlRleHQgfSBmcm9tICcuL25hdi10ZXh0JztcbmltcG9ydCB7IEJOYXZGb3JtIH0gZnJvbSAnLi9uYXYtZm9ybSc7XG5pbXBvcnQgeyBCTmF2SXRlbURyb3Bkb3duIH0gZnJvbSAnLi9uYXYtaXRlbS1kcm9wZG93bic7XG5pbXBvcnQgeyBEcm9wZG93blBsdWdpbiB9IGZyb20gJy4uL2Ryb3Bkb3duJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBOYXZQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCTmF2OiBCTmF2LFxuICAgIEJOYXZJdGVtOiBCTmF2SXRlbSxcbiAgICBCTmF2VGV4dDogQk5hdlRleHQsXG4gICAgQk5hdkZvcm06IEJOYXZGb3JtLFxuICAgIEJOYXZJdGVtRHJvcGRvd246IEJOYXZJdGVtRHJvcGRvd24sXG4gICAgQk5hdkl0ZW1EZDogQk5hdkl0ZW1Ecm9wZG93bixcbiAgICBCTmF2RHJvcGRvd246IEJOYXZJdGVtRHJvcGRvd24sXG4gICAgQk5hdkRkOiBCTmF2SXRlbURyb3Bkb3duXG4gIH0sXG4gIHBsdWdpbnM6IHtcbiAgICBEcm9wZG93blBsdWdpbjogRHJvcGRvd25QbHVnaW5cbiAgfVxufSk7XG5leHBvcnQgeyBOYXZQbHVnaW4sIEJOYXYsIEJOYXZJdGVtLCBCTmF2VGV4dCwgQk5hdkZvcm0sIEJOYXZJdGVtRHJvcGRvd24gfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL25hdi9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gODBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///80\n"); /***/ }), /* 81 */ @@ -637,14 +637,14 @@ eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BVTooltip; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_get_scope_id__ = __webpack_require__(32);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_loose_equal__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__utils_warn__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__utils_bv_event_class__ = __webpack_require__(41);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__bv_tooltip_template__ = __webpack_require__(189);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n// Tooltip \"Class\" (Built as a renderless Vue instance)\n//\n// Handles trigger events, etc.\n// Instantiates template on demand\n\n\n\n\n\n\n\n\n\n\nvar NAME = 'BVTooltip'; // Modal container selector for appending tooltip/popover\n\nvar MODAL_SELECTOR = '.modal-content'; // Modal `$root` hidden event\n\nvar MODAL_CLOSE_EVENT = 'bv::modal::hidden'; // For dropdown sniffing\n\nvar DROPDOWN_CLASS = 'dropdown';\nvar DROPDOWN_OPEN_SELECTOR = '.dropdown-menu.show'; // Options for Native Event Listeners (since we never call preventDefault)\n\nvar EvtOpts = {\n passive: true,\n capture: false\n}; // Data specific to popper and template\n// We don't use props, as we need reactivity (we can't pass reactive props)\n\nvar templateData = {\n // Text string or Scoped slot function\n title: '',\n // Text string or Scoped slot function\n content: '',\n // String\n variant: null,\n // String, Array, Object\n customClass: null,\n // String or array of Strings (overwritten by BVPopper)\n triggers: '',\n // String (overwritten by BVPopper)\n placement: 'auto',\n // String or array of strings\n fallbackPlacement: 'flip',\n // Element or Component reference (or function that returns element) of\n // the element that will have the trigger events bound, and is also\n // default element for positioning\n target: null,\n // HTML ID, Element or Component reference\n container: null,\n // 'body'\n // Boolean\n noFade: false,\n // 'scrollParent', 'viewport', 'window', Element, or Component reference\n boundary: 'scrollParent',\n // Tooltip/popover will try and stay away from\n // boundary edge by this many pixels (Number)\n boundaryPadding: 5,\n // Arrow offset (Number)\n offset: 0,\n // Hover/focus delay (Number or Object)\n delay: 0,\n // Arrow of Tooltip/popover will try and stay away from\n // the edge of tooltip/popover edge by this many pixels\n arrowPadding: 6,\n // Disabled state (Boolean)\n disabled: false,\n // ID to use for tooltip/popover\n id: null,\n // Flag used by directives only, for HTML content\n html: false\n}; // @vue/component\n\nvar BVTooltip =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n props: {// None\n },\n data: function data() {\n return _objectSpread({}, templateData, {\n // State management data\n activeTrigger: {\n // manual: false,\n hover: false,\n click: false,\n focus: false\n },\n localShow: false\n });\n },\n computed: {\n templateType: function templateType() {\n // Overwritten by BVPopover\n return 'tooltip';\n },\n computedId: function computedId() {\n return this.id || \"__bv_\".concat(this.templateType, \"_\").concat(this._uid, \"__\");\n },\n computedDelay: function computedDelay() {\n // Normalizes delay into object form\n var delay = {\n show: 0,\n hide: 0\n };\n\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"j\" /* isPlainObject */])(this.delay)) {\n delay.show = Math.max(parseInt(this.delay.show, 10) || 0, 0);\n delay.hide = Math.max(parseInt(this.delay.hide, 10) || 0, 0);\n } else if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"h\" /* isNumber */])(this.delay) || Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"m\" /* isString */])(this.delay)) {\n delay.show = delay.hide = Math.max(parseInt(this.delay, 10) || 0, 0);\n }\n\n return delay;\n },\n computedTriggers: function computedTriggers() {\n // Returns the triggers in sorted array form\n // TODO: Switch this to object form for easier lookup\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"b\" /* concat */])(this.triggers).filter(Boolean).join(' ').trim().toLowerCase().split(/\\s+/).sort();\n },\n isWithActiveTrigger: function isWithActiveTrigger() {\n for (var trigger in this.activeTrigger) {\n if (this.activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n },\n computedTemplateData: function computedTemplateData() {\n return {\n title: this.title,\n content: this.content,\n variant: this.variant,\n customClass: this.customClass,\n noFade: this.noFade\n };\n }\n },\n watch: {\n computedTriggers: function computedTriggers(newTriggers, oldTriggers) {\n var _this = this;\n\n // Triggers have changed, so re-register them\n\n /* istanbul ignore next */\n if (!Object(__WEBPACK_IMPORTED_MODULE_2__utils_loose_equal__[\"a\" /* default */])(newTriggers, oldTriggers)) {\n this.$nextTick(function () {\n // Disable trigger listeners\n _this.unListen(); // Clear any active triggers that are no longer in the list of triggers\n\n\n oldTriggers.forEach(function (trigger) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"a\" /* arrayIncludes */])(newTriggers, trigger)) {\n if (_this.activeTrigger[trigger]) {\n _this.activeTrigger[trigger] = false;\n }\n }\n }); // Re-enable the trigger listeners\n\n _this.listen();\n });\n }\n },\n computedTemplateData: function computedTemplateData() {\n // If any of the while open reactive \"props\" change,\n // ensure that the template updates accordingly\n this.handleTemplateUpdate();\n },\n disabled: function disabled(newVal) {\n newVal ? this.disable() : this.enable();\n }\n },\n created: function created() {\n var _this2 = this;\n\n // Create non-reactive properties\n this.$_tip = null;\n this.$_hoverTimeout = null;\n this.$_hoverState = '';\n this.$_visibleInterval = null;\n this.$_enabled = !this.disabled;\n\n this.$_noop = function () {}; // Destroy ourselves when the parent is destroyed\n\n\n if (this.$parent) {\n this.$parent.$once('hook:beforeDestroy', this.$destroy);\n }\n\n this.$nextTick(function () {\n var target = _this2.getTarget();\n\n if (target && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(document.body, target)) {\n // Copy the parent's scoped style attribute\n _this2.scopeId = Object(__WEBPACK_IMPORTED_MODULE_1__utils_get_scope_id__[\"a\" /* default */])(_this2.$parent); // Set up all trigger handlers and listeners\n\n _this2.listen();\n } else {\n /* istanbul ignore next */\n Object(__WEBPACK_IMPORTED_MODULE_7__utils_warn__[\"b\" /* warn */])(\"\".concat(_this2.templateType, \" unable to find target element in document\"));\n }\n });\n },\n updated: function updated()\n /* istanbul ignore next */\n {\n // Usually called when the slots/data changes\n this.$nextTick(this.handleTemplateUpdate);\n },\n deactivated: function deactivated()\n /* istanbul ignore next */\n {\n // In a keepalive that has been deactivated, so hide\n // the tooltip/popover if it is showing\n this.forceHide();\n },\n beforeDestroy: function beforeDestroy()\n /* istanbul ignore next */\n {\n // Remove all handler/listeners\n this.unListen();\n this.setWhileOpenListeners(false); // Clear any timeouts/Timers\n\n clearTimeout(this.$_hoverTimeout);\n this.$_hoverTimeout = null;\n this.destroyTemplate();\n this.restoreTitle();\n },\n methods: {\n //\n // Methods for creating and destroying the template\n //\n getTemplate: function getTemplate() {\n // Overridden by BVPopover\n return __WEBPACK_IMPORTED_MODULE_9__bv_tooltip_template__[\"a\" /* BVTooltipTemplate */];\n },\n updateData: function updateData() {\n var _this3 = this;\n\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Method for updating popper/template data\n // We only update data if it exists, and has not changed\n var titleUpdated = false;\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_object__[\"j\" /* keys */])(templateData).forEach(function (prop) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"n\" /* isUndefined */])(data[prop]) && _this3[prop] !== data[prop]) {\n _this3[prop] = data[prop];\n\n if (prop === 'title') {\n titleUpdated = true;\n }\n }\n });\n\n if (titleUpdated && this.localShow) {\n // If the title has updated, we may need to handle the title\n // attribute on the trigger target. We only do this while the\n // template is open\n this.fixTitle();\n }\n },\n createTemplateAndShow: function createTemplateAndShow() {\n // Creates the template instance and show it\n // this.destroyTemplate()\n var container = this.getContainer();\n var Template = this.getTemplate();\n var $tip = this.$_tip = new Template({\n parent: this,\n // The following is not reactive to changes in the props data\n propsData: {\n // These values cannot be changed while template is showing\n id: this.computedId,\n html: this.html,\n placement: this.placement,\n fallbackPlacement: this.fallbackPlacement,\n target: this.getPlacementTarget(),\n boundary: this.getBoundary(),\n // Ensure the following are integers\n offset: parseInt(this.offset, 10) || 0,\n arrowPadding: parseInt(this.arrowPadding, 10) || 0,\n boundaryPadding: parseInt(this.boundaryPadding, 10) || 0\n }\n }); // We set the initial reactive data (values that can be changed while open)\n\n this.handleTemplateUpdate(); // Template transition phase events (handled once only)\n // When the template has mounted, but not visibly shown yet\n\n $tip.$once('show', this.onTemplateShow); // When the template has completed showing\n\n $tip.$once('shown', this.onTemplateShown); // When the template has started to hide\n\n $tip.$once('hide', this.onTemplateHide); // When the template has completed hiding\n\n $tip.$once('hidden', this.onTemplateHidden); // When the template gets destroyed for any reason\n\n $tip.$once('hook:destroyed', this.destroyTemplate); // Convenience events from template\n // To save us from manually adding/removing DOM\n // listeners to tip element when it is open\n\n $tip.$on('focusin', this.handleEvent);\n $tip.$on('focusout', this.handleEvent);\n $tip.$on('mouseenter', this.handleEvent);\n $tip.$on('mouseleave', this.handleEvent); // Mount (which triggers the `show`)\n\n $tip.$mount(container.appendChild(document.createElement('div'))); // Template will automatically remove its markup from DOM when hidden\n },\n hideTemplate: function hideTemplate() {\n // Trigger the template to start hiding\n // The template will emit the `hide` event after this and\n // then emit the `hidden` event once it is fully hidden\n // The `hook:destroyed` will also be called (safety measure)\n this.$_tip && this.$_tip.hide();\n },\n destroyTemplate: function destroyTemplate() {\n // Destroy the template instance and reset state\n this.setWhileOpenListeners(false);\n clearTimeout(this.$_hoverTimeout);\n this.$_hoverTimout = null;\n this.$_hoverState = '';\n this.clearActiveTriggers();\n this.localPlacementTarget = null;\n\n try {\n this.$_tip && this.$_tip.$destroy();\n } catch (_unused) {}\n\n this.$_tip = null;\n this.localShow = false;\n },\n getTemplateElement: function getTemplateElement() {\n return this.$_tip ? this.$_tip.$el : null;\n },\n handleTemplateUpdate: function handleTemplateUpdate() {\n var _this4 = this;\n\n // Update our template title/content \"props\"\n // So that the template updates accordingly\n var $tip = this.$_tip;\n\n if ($tip) {\n var props = ['title', 'content', 'variant', 'customClass', 'noFade']; // Only update the values if they have changed\n\n props.forEach(function (prop) {\n if ($tip[prop] !== _this4[prop]) {\n $tip[prop] = _this4[prop];\n }\n });\n }\n },\n //\n // Show and Hide handlers\n //\n show: function show() {\n // Show the tooltip\n var target = this.getTarget();\n\n if (!target || !Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(document.body, target) || !Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"p\" /* isVisible */])(target) || this.dropdownOpen() || (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"o\" /* isUndefinedOrNull */])(this.title) || this.title === '') && (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"o\" /* isUndefinedOrNull */])(this.content) || this.content === '')) {\n // If trigger element isn't in the DOM or is not visible, or\n // is on an open dropdown toggle, or has no content, then\n // we exit without showing\n return;\n }\n\n if (this.$_tip || this.localShow) {\n // If tip already exists, exit early\n\n /* istanbul ignore next */\n return;\n } // In the process of showing\n\n\n this.localShow = true; // Create a cancelable BvEvent\n\n var showEvt = this.buildEvent('show', {\n cancelable: true\n });\n this.emitEvent(showEvt);\n /* istanbul ignore next: ignore for now */\n\n if (showEvt.defaultPrevented) {\n // Don't show if event cancelled\n // Destroy the template (if for some reason it was created)\n\n /* istanbul ignore next */\n this.destroyTemplate(); // Clear the localShow flag\n\n /* istanbul ignore next */\n\n this.localShow = false;\n /* istanbul ignore next */\n\n return;\n } // Fix the title attribute on target\n\n\n this.fixTitle(); // Set aria-describedby on target\n\n this.addAriaDescribedby(); // Create and show the tooltip\n\n this.createTemplateAndShow();\n },\n hide: function hide() {\n var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n // Hide the tooltip\n var tip = this.getTemplateElement();\n\n if (!tip || !this.localShow) {\n /* istanbul ignore next */\n this.restoreTitle();\n /* istanbul ignore next */\n\n return;\n } // Emit cancelable BvEvent 'hide'\n // We disable cancelling if `force` is true\n\n\n var hideEvt = this.buildEvent('hide', {\n cancelable: !force\n });\n this.emitEvent(hideEvt);\n /* istanbul ignore next: ignore for now */\n\n if (hideEvt.defaultPrevented) {\n // Don't hide if event cancelled\n\n /* istanbul ignore next */\n return;\n } // Tell the template to hide\n\n\n this.hideTemplate(); // TODO: The following could be added to `hideTemplate()`\n // Clear out any stragging active triggers\n\n this.clearActiveTriggers(); // Reset the hover state\n\n this.$_hoverState = '';\n },\n forceHide: function forceHide() {\n // Forcefully hides/destroys the template, regardless of any active triggers\n var tip = this.getTemplateElement();\n\n if (!tip || !this.localShow) {\n /* istanbul ignore next */\n return;\n } // Disable while open listeners/watchers\n // This is also done in the template `hide` evt handler\n\n\n this.setWhileOpenListeners(false); // Clear any hover enter/leave event\n\n clearTimeout(this.hoverTimeout);\n this.$_hoverTimeout = null;\n this.$_hoverState = '';\n this.clearActiveTriggers(); // Disable the fade animation on the template\n\n if (this.$_tip) {\n this.$_tip.noFade = true;\n } // Hide the tip (with force = true)\n\n\n this.hide(true);\n },\n enable: function enable() {\n this.$_enabled = true; // Create a non-cancelable BvEvent\n\n this.emitEvent(this.buildEvent('enabled', {}));\n },\n disable: function disable() {\n this.$_enabled = false; // Create a non-cancelable BvEvent\n\n this.emitEvent(this.buildEvent('disabled', {}));\n },\n //\n // Handlers for template events\n //\n onTemplateShow: function onTemplateShow() {\n // When template is inserted into DOM, but not yet shown\n // Enable while open listeners/watchers\n this.setWhileOpenListeners(true);\n },\n onTemplateShown: function onTemplateShown() {\n // When template show transition completes\n var prevHoverState = this.$_hoverState;\n this.$_hoverState = '';\n\n if (prevHoverState === 'out') {\n this.leave(null);\n } // Emit a non-cancelable BvEvent 'shown'\n\n\n this.emitEvent(this.buildEvent('shown', {}));\n },\n onTemplateHide: function onTemplateHide() {\n // When template is starting to hide\n // Disable while open listeners/watchers\n this.setWhileOpenListeners(false);\n },\n onTemplateHidden: function onTemplateHidden() {\n // When template has completed closing (just before it self destructs)\n // TODO:\n // The next two lines could be moved into `destroyTemplate()`\n this.removeAriaDescribedby();\n this.restoreTitle();\n this.destroyTemplate(); // Emit a non-cancelable BvEvent 'shown'\n\n this.emitEvent(this.buildEvent('hidden', {}));\n },\n //\n // Utility methods\n //\n getTarget: function getTarget() {\n // Handle case where target may be a component ref\n var target = this.target ? this.target.$el || this.target : null; // If an ID\n\n target = Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"m\" /* isString */])(target) ? Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"i\" /* getById */])(target.replace(/^#/, '')) : target; // If a function\n\n target = Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"f\" /* isFunction */])(target) ? target() : target; // If an element ref\n\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"o\" /* isElement */])(target) ? target : null;\n },\n getPlacementTarget: function getPlacementTarget() {\n // This is the target that the tooltip will be placed on, which may not\n // necessarily be the same element that has the trigger event listeners\n // For now, this is the same as target\n // TODO:\n // Add in child selector support\n // Add in visibility checks for this element\n // Fallback to target if not found\n return this.getTarget();\n },\n getTargetId: function getTargetId() {\n // Returns the ID of the trigger element\n var target = this.getTarget();\n return target && target.id ? target.id : null;\n },\n getContainer: function getContainer() {\n // Handle case where container may be a component ref\n var container = this.container ? this.container.$el || this.container : false;\n var body = document.body;\n var target = this.getTarget(); // If we are in a modal, we append to the modal instead\n // of body, unless a container is specified\n // TODO:\n // Template should periodically check to see if it is in dom\n // And if not, self destruct (if container got v-if'ed out of DOM)\n // Or this could possibly be part of the visibility check\n\n return container === false ? Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"c\" /* closest */])(MODAL_SELECTOR, target) || body : Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"m\" /* isString */])(container) ? Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"i\" /* getById */])(container.replace(/^#/, '')) || body : body;\n },\n getBoundary: function getBoundary() {\n return this.boundary ? this.boundary.$el || this.boundary : 'scrollParent';\n },\n isInModal: function isInModal() {\n var target = this.getTarget();\n return target && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"c\" /* closest */])(MODAL_SELECTOR, target);\n },\n isDropdown: function isDropdown() {\n // Returns true if trigger is a dropdown\n var target = this.getTarget();\n return target && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"m\" /* hasClass */])(target, DROPDOWN_CLASS);\n },\n dropdownOpen: function dropdownOpen() {\n // Returns true if trigger is a dropdown and the dropdown menu is open\n var target = this.getTarget();\n return this.isDropdown() && target && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"x\" /* select */])(DROPDOWN_OPEN_SELECTOR, target);\n },\n clearActiveTriggers: function clearActiveTriggers() {\n for (var trigger in this.activeTrigger) {\n this.activeTrigger[trigger] = false;\n }\n },\n addAriaDescribedby: function addAriaDescribedby() {\n // Add aria-describedby on trigger element, without removing any other IDs\n var target = this.getTarget();\n var desc = Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"g\" /* getAttr */])(target, 'aria-describedby') || '';\n desc = desc.split(/\\s+/).concat(this.computedId).join(' ').trim(); // Update/add aria-described by\n\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"z\" /* setAttr */])(target, 'aria-describedby', desc);\n },\n removeAriaDescribedby: function removeAriaDescribedby() {\n var _this5 = this;\n\n // Remove aria-describedby on trigger element, without removing any other IDs\n var target = this.getTarget();\n var desc = Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"g\" /* getAttr */])(target, 'aria-describedby') || '';\n desc = desc.split(/\\s+/).filter(function (d) {\n return d !== _this5.computedId;\n }).join(' ').trim(); // Update or remove aria-describedby\n\n if (desc) {\n /* istanbul ignore next */\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"z\" /* setAttr */])(target, 'aria-describedby', desc);\n } else {\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"u\" /* removeAttr */])(target, 'aria-describedby');\n }\n },\n fixTitle: function fixTitle() {\n // If the target has a title attribute, null it out and\n // store on data-title\n var target = this.getTarget();\n\n if (target && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"g\" /* getAttr */])(target, 'title')) {\n // We only update title attribute if it has a value\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"z\" /* setAttr */])(target, 'data-original-title', Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"g\" /* getAttr */])(target, 'title') || '');\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"z\" /* setAttr */])(target, 'title', '');\n }\n },\n restoreTitle: function restoreTitle() {\n // If target had a title, restore the title attribute\n // and remove the data-title attribute\n var target = this.getTarget();\n\n if (target && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"l\" /* hasAttr */])(target, 'data-original-title')) {\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"z\" /* setAttr */])(target, 'title', Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"g\" /* getAttr */])(target, 'data-original-title') || '');\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"u\" /* removeAttr */])(target, 'data-original-title');\n }\n },\n //\n // BvEvent helpers\n //\n buildEvent: function buildEvent(type) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // Defaults to a non-cancellable event\n return new __WEBPACK_IMPORTED_MODULE_8__utils_bv_event_class__[\"a\" /* BvEvent */](type, _objectSpread({\n cancelable: false,\n target: this.getTarget(),\n relatedTarget: this.getTemplateElement() || null,\n componentId: this.computedId,\n vueTarget: this\n }, opts));\n },\n emitEvent: function emitEvent(bvEvt) {\n // Emits a BvEvent on $root and this instance\n var evtName = bvEvt.type;\n var $root = this.$root;\n\n if ($root && $root.$emit) {\n // Emit an event on $root\n $root.$emit(\"bv::\".concat(this.templateType, \"::\").concat(evtName), bvEvt);\n }\n\n this.$emit(evtName, bvEvt);\n },\n //\n // Event handler setup methods\n //\n listen: function listen() {\n var _this6 = this;\n\n // Enable trigger event handlers\n var el = this.getTarget();\n\n if (!el) {\n /* istanbul ignore next */\n return;\n } // Listen for global show/hide events\n\n\n this.setRootListener(true); // Set up our listeners on the target trigger element\n\n this.computedTriggers.forEach(function (trigger) {\n if (trigger === 'click') {\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"f\" /* eventOn */])(el, 'click', _this6.handleEvent, EvtOpts);\n } else if (trigger === 'focus') {\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"f\" /* eventOn */])(el, 'focusin', _this6.handleEvent, EvtOpts);\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"f\" /* eventOn */])(el, 'focusout', _this6.handleEvent, EvtOpts);\n } else if (trigger === 'blur') {\n // Used to close $tip when element looses focus\n\n /* istanbul ignore next */\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"f\" /* eventOn */])(el, 'focusout', _this6.handleEvent, EvtOpts);\n } else if (trigger === 'hover') {\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"f\" /* eventOn */])(el, 'mouseenter', _this6.handleEvent, EvtOpts);\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"f\" /* eventOn */])(el, 'mouseleave', _this6.handleEvent, EvtOpts);\n }\n }, this);\n },\n unListen: function unListen()\n /* istanbul ignore next */\n {\n var _this7 = this;\n\n // Remove trigger event handlers\n var events = ['click', 'focusin', 'focusout', 'mouseenter', 'mouseleave'];\n var target = this.getTarget(); // Stop listening for global show/hide/enable/disable events\n\n this.setRootListener(false); // Clear out any active target listeners\n\n events.forEach(function (evt) {\n target && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"e\" /* eventOff */])(target, evt, _this7.handleEvent, EvtOpts);\n }, this);\n },\n setRootListener: function setRootListener(on) {\n // Listen for global `bv::{hide|show}::{tooltip|popover}` hide request event\n var $root = this.$root;\n\n if ($root) {\n var method = on ? '$on' : '$off';\n var type = this.templateType;\n $root[method](\"bv::hide::\".concat(type), this.doHide);\n $root[method](\"bv::show::\".concat(type), this.doShow);\n $root[method](\"bv::disable::\".concat(type), this.doDisable);\n $root[method](\"bv::enable::\".concat(type), this.doEnable);\n }\n },\n setWhileOpenListeners: function setWhileOpenListeners(on) {\n // Events that are only registered when the template is showing\n // Modal close events\n this.setModalListener(on); // Dropdown open events (if we are attached to a dropdown)\n\n this.setDropdownListener(on); // Periodic $element visibility check\n // For handling when tip target is in <keepalive>, tabs, carousel, etc\n\n this.visibleCheck(on); // On-touch start listeners\n\n this.setOnTouchStartListener(on);\n },\n visibleCheck: function visibleCheck(on) {\n var _this8 = this;\n\n // Handler for periodic visibility check\n clearInterval(this.$_visibleInterval);\n this.$_visibleInterval = null;\n var target = this.getTarget();\n var tip = this.getTemplateElement();\n\n if (on) {\n this.visibleInterval = setInterval(function () {\n if (tip && _this8.localShow && (!target.parentNode || !Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"p\" /* isVisible */])(target))) {\n // Target element is no longer visible or not in DOM, so force-hide the tooltip\n _this8.forceHide();\n }\n }, 100);\n }\n },\n setModalListener: function setModalListener(on) {\n // Handle case where tooltip/target is in a modal\n if (this.isInModal()) {\n // We can listen for modal hidden events on `$root`\n this.$root[on ? '$on' : '$off'](MODAL_CLOSE_EVENT, this.forceHide);\n }\n },\n setOnTouchStartListener: function setOnTouchStartListener(on)\n /* istanbul ignore next: JSDOM doesn't support `ontouchstart` */\n {\n var _this9 = this;\n\n // If this is a touch-enabled device we add extra empty\n // `mouseover` listeners to the body's immediate children\n // Only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n var method = on ? __WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"f\" /* eventOn */] : __WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"e\" /* eventOff */];\n Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"c\" /* from */])(document.body.children).forEach(function (el) {\n method(el, 'mouseover', _this9.$_noop);\n });\n }\n },\n setDropdownListener: function setDropdownListener(on) {\n var target = this.getTarget();\n\n if (!target || !this.$root || !this.isDropdown) {\n return;\n } // We can listen for dropdown shown events on it's instance\n // TODO:\n // We could grab the ID from the dropdown, and listen for\n // $root events for that particular dropdown id\n // Dropdown shown and hidden events will need to emit\n // Note: Dropdown auto-ID happens in a `$nextTick()` after mount\n // So the ID lookup would need to be done in a `$nextTick()`\n\n\n if (target.__vue__) {\n target.__vue__[on ? '$on' : '$off']('shown', this.forceHide);\n }\n },\n //\n // Event handlers\n //\n handleEvent: function handleEvent(evt) {\n // General trigger event handler\n // target is the trigger element\n var target = this.getTarget();\n\n if (!target || Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"n\" /* isDisabled */])(target) || !this.$_enabled || this.dropdownOpen()) {\n // If disabled or not enabled, or if a dropdown that is open, don't do anything\n // If tip is shown before element gets disabled, then tip will not\n // close until no longer disabled or forcefully closed\n return;\n }\n\n var type = evt.type;\n var triggers = this.computedTriggers;\n\n if (type === 'click' && Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"a\" /* arrayIncludes */])(triggers, 'click')) {\n this.click(evt);\n } else if (type === 'mouseenter' && Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"a\" /* arrayIncludes */])(triggers, 'hover')) {\n // `mouseenter` is a non-bubbling event\n this.enter(evt);\n } else if (type === 'focusin' && Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"a\" /* arrayIncludes */])(triggers, 'focus')) {\n // `focusin` is a bubbling event\n // `evt` includes `relatedTarget` (element loosing focus)\n this.enter(evt);\n } else if (type === 'focusout' && (Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"a\" /* arrayIncludes */])(triggers, 'focus') || Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"a\" /* arrayIncludes */])(triggers, 'blur')) || type === 'mouseleave' && Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"a\" /* arrayIncludes */])(triggers, 'hover')) {\n // `focusout` is a bubbling event\n // `mouseleave` is a non-bubbling event\n // `tip` is the template (will be null if not open)\n var tip = this.getTemplateElement(); // `evtTarget` is the element which is loosing focus/hover and\n\n var evtTarget = evt.target; // `relatedTarget` is the element gaining focus/hover\n\n var relatedTarget = evt.relatedTarget;\n /* istanbul ignore next */\n\n if ( // From tip to target\n tip && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(tip, evtTarget) && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(target, relatedTarget) || // From target to tip\n tip && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(target, evtTarget) && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(tip, relatedTarget) || // Within tip\n tip && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(tip, evtTarget) && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(tip, relatedTarget) || // Within target\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(target, evtTarget) && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(target, relatedTarget)) {\n // If focus/hover moves within `tip` and `target`, don't trigger a leave\n return;\n } // Otherwise trigger a leave\n\n\n this.leave(evt);\n }\n },\n doHide: function doHide(id) {\n // Programmatically hide tooltip or popover\n if (!id || this.getTargetId() === id || this.computedId === id) {\n // Close all tooltips or popovers, or this specific tip (with ID)\n this.forceHide();\n }\n },\n doShow: function doShow(id) {\n // Programmatically show tooltip or popover\n if (!id || this.getTargetId() === id || this.computedId === id) {\n // Open all tooltips or popovers, or this specific tip (with ID)\n this.show();\n }\n },\n doDisable: function doDisable(id)\n /*istanbul ignore next: ignore for now */\n {\n // Programmatically disable tooltip or popover\n if (!id || this.getTargetId() === id || this.computedId === id) {\n // Disable all tooltips or popovers (no ID), or this specific tip (with ID)\n this.disable();\n }\n },\n doEnable: function doEnable(id)\n /*istanbul ignore next: ignore for now */\n {\n // Programmatically enable tooltip or popover\n if (!id || this.getTargetId() === id || this.computedId === id) {\n // Enable all tooltips or popovers (no ID), or this specific tip (with ID)\n this.enable();\n }\n },\n click: function click(evt) {\n if (!this.$_enabled || this.dropdownOpen()) {\n /* istanbul ignore next */\n return;\n }\n\n this.activeTrigger.click = !this.activeTrigger.click;\n\n if (this.isWithActiveTrigger) {\n this.enter(null);\n } else {\n /* istanbul ignore next */\n this.leave(null);\n }\n },\n toggle: function toggle()\n /* istanbul ignore next */\n {\n // Manual toggle handler\n if (!this.$_enabled || this.dropdownOpen()) {\n /* istanbul ignore next */\n return;\n } // Should we register as an active trigger?\n // this.activeTrigger.manual = !this.activeTrigger.manual\n\n\n if (this.localShow) {\n this.leave(null);\n } else {\n this.enter(null);\n }\n },\n enter: function enter() {\n var _this10 = this;\n\n var evt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n // Opening trigger handler\n // Note: Click events are sent with evt === null\n if (evt) {\n this.activeTrigger[evt.type === 'focusin' ? 'focus' : 'hover'] = true;\n }\n /* istanbul ignore next */\n\n\n if (this.localShow || this.$_hoverState === 'in') {\n this.$_hoverState = 'in';\n return;\n }\n\n clearTimeout(this.hoverTimeout);\n this.$_hoverState = 'in';\n\n if (!this.computedDelay.show) {\n this.show();\n } else {\n // Hide any title attribute while enter delay is active\n this.fixTitle();\n this.hoverTimeout = setTimeout(function () {\n /* istanbul ignore else */\n if (_this10.$_hoverState === 'in') {\n _this10.show();\n } else if (!_this10.localShow) {\n _this10.restoreTitle();\n }\n }, this.computedDelay.show);\n }\n },\n leave: function leave() {\n var _this11 = this;\n\n var evt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n // Closing trigger handler\n // Note: Click events are sent with evt === null\n if (evt) {\n this.activeTrigger[evt.type === 'focusout' ? 'focus' : 'hover'] = false;\n /* istanbul ignore next */\n\n if (evt.type === 'focusout' && Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"a\" /* arrayIncludes */])(this.computedTriggers, 'blur')) {\n // Special case for `blur`: we clear out the other triggers\n this.activeTrigger.click = false;\n this.activeTrigger.hover = false;\n }\n }\n /* istanbul ignore next: ignore for now */\n\n\n if (this.isWithActiveTrigger) {\n return;\n }\n\n clearTimeout(this.hoverTimeout);\n this.$_hoverState = 'out';\n\n if (!this.computedDelay.hide) {\n this.hide();\n } else {\n this.$hoverTimeout = setTimeout(function () {\n if (_this11.$_hoverState === 'out') {\n _this11.hide();\n }\n }, this.computedDelay.hide);\n }\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90b29sdGlwL2hlbHBlcnMvYnYtdG9vbHRpcC5qcz8wZmZiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRS9NO0FBQ0E7QUFDQTtBQUNBO0FBQ3FDO0FBQ2U7QUFDQTtBQUM0QjtBQUM4RjtBQUN2RDtBQUMxRTtBQUNGO0FBQ2E7QUFDRTtBQUMxRCx1QkFBdUI7O0FBRXZCLHNDQUFzQzs7QUFFdEMsNENBQTRDOztBQUU1QztBQUNBLG1EQUFtRDs7QUFFbkQ7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUs7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQSxVQUFVO0FBQ1YsR0FBRztBQUNIO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsVUFBVSw2RUFBYTtBQUN2QjtBQUNBO0FBQ0EsT0FBTyxVQUFVLHdFQUFRLGdCQUFnQix3RUFBUTtBQUNqRDtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGFBQWEsb0VBQU07QUFDbkIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsV0FBVywyRUFBVTtBQUNyQjtBQUNBO0FBQ0EsMkJBQTJCOzs7QUFHM0I7QUFDQSxpQkFBaUIsMkVBQWE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7O0FBRWI7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlDQUFpQzs7O0FBR2pDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG9CQUFvQixvRUFBUTtBQUM1QjtBQUNBLHlCQUF5Qiw0RUFBUyxpQkFBaUI7O0FBRW5EO0FBQ0EsT0FBTztBQUNQO0FBQ0EsUUFBUSxpRUFBSTtBQUNaO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDOztBQUV0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLCtFQUFpQjtBQUM5QixLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sbUVBQUk7QUFDVixhQUFhLDJFQUFXO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVULGtDQUFrQztBQUNsQzs7QUFFQSw4Q0FBOEM7O0FBRTlDLGdEQUFnRDs7QUFFaEQsOENBQThDOztBQUU5QyxrREFBa0Q7O0FBRWxELHlEQUF5RDtBQUN6RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQzs7QUFFL0Msd0VBQXdFO0FBQ3hFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2RUFBNkU7O0FBRTdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0Isb0VBQVEsNEJBQTRCLHFFQUFTLG9DQUFvQyxpRkFBaUIsdUNBQXVDLGlGQUFpQjtBQUNoTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87OztBQUdQLDRCQUE0Qjs7QUFFNUI7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtCQUErQjs7QUFFL0I7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLE9BQU87OztBQUdQLHNCQUFzQjs7QUFFdEIsZ0NBQWdDOztBQUVoQztBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDs7O0FBR0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87OztBQUdQLDBCQUEwQjtBQUMxQjs7QUFFQSxpQ0FBaUM7O0FBRWpDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7OztBQUdBLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDOztBQUVqQztBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQSxLQUFLO0FBQ0w7QUFDQSw0QkFBNEI7O0FBRTVCLGtEQUFrRDtBQUNsRCxLQUFLO0FBQ0w7QUFDQSw2QkFBNkI7O0FBRTdCLG1EQUFtRDtBQUNuRCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87OztBQUdQLGdEQUFnRDtBQUNoRCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QixpREFBaUQ7QUFDakQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1RUFBdUU7O0FBRXZFLGVBQWUsd0VBQVEsV0FBVyxtRUFBTyxvQ0FBb0M7O0FBRTdFLGVBQWUsMEVBQVUsNkJBQTZCOztBQUV0RCxhQUFhLHFFQUFTO0FBQ3RCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQ0FBbUMsbUVBQU8sbUNBQW1DLHdFQUFRLGNBQWMsbUVBQU87QUFDMUcsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLHVCQUF1QixtRUFBTztBQUM5QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLG9FQUFRO0FBQy9CLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsa0VBQU07QUFDbEQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixtRUFBTztBQUN4Qix3RUFBd0U7O0FBRXhFLE1BQU0sbUVBQU87QUFDYixLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCLG1FQUFPO0FBQ3hCO0FBQ0E7QUFDQSxPQUFPLG1CQUFtQjs7QUFFMUI7QUFDQTtBQUNBLFFBQVEsbUVBQU87QUFDZixPQUFPO0FBQ1AsUUFBUSxzRUFBVTtBQUNsQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsbUVBQU87QUFDM0I7QUFDQSxRQUFRLG1FQUFPLGdDQUFnQyxtRUFBTztBQUN0RCxRQUFRLG1FQUFPO0FBQ2Y7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLG1FQUFPO0FBQzNCLFFBQVEsbUVBQU8sa0JBQWtCLG1FQUFPO0FBQ3hDLFFBQVEsc0VBQVU7QUFDbEI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNFQUFPO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUCxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQSxVQUFVLG1FQUFPO0FBQ2pCLFNBQVM7QUFDVCxVQUFVLG1FQUFPO0FBQ2pCLFVBQVUsbUVBQU87QUFDakIsU0FBUztBQUNUOztBQUVBO0FBQ0EsVUFBVSxtRUFBTztBQUNqQixTQUFTO0FBQ1QsVUFBVSxtRUFBTztBQUNqQixVQUFVLG1FQUFPO0FBQ2pCO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esb0NBQW9DOztBQUVwQyxrQ0FBa0M7O0FBRWxDO0FBQ0Esa0JBQWtCLG9FQUFRO0FBQzFCLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxpQ0FBaUMsVUFBVSxHQUFHLGdCQUFnQjtBQUM5RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQzs7QUFFaEMsbUNBQW1DO0FBQ25DOztBQUVBLDRCQUE0Qjs7QUFFNUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpRUFBaUUscUVBQVM7QUFDMUU7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDJEQUFPLEdBQUcsNERBQVE7QUFDNUMsUUFBUSxrRUFBUztBQUNqQjtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLHNFQUFVO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSw4QkFBOEIsMkVBQWE7QUFDM0M7QUFDQSxPQUFPLG1DQUFtQywyRUFBYTtBQUN2RDtBQUNBO0FBQ0EsT0FBTyxnQ0FBZ0MsMkVBQWE7QUFDcEQ7QUFDQTtBQUNBO0FBQ0EsT0FBTyxrQ0FBa0MsMkVBQWEsdUJBQXVCLDJFQUFhLGdEQUFnRCwyRUFBYTtBQUN2SjtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7O0FBRTVDLG1DQUFtQzs7QUFFbkM7QUFDQTs7QUFFQTtBQUNBLGVBQWUsb0VBQVEsb0JBQW9CLG9FQUFRO0FBQ25ELGVBQWUsb0VBQVEsdUJBQXVCLG9FQUFRO0FBQ3RELGVBQWUsb0VBQVEsb0JBQW9CLG9FQUFRO0FBQ25ELFFBQVEsb0VBQVEsdUJBQXVCLG9FQUFRO0FBQy9DO0FBQ0E7QUFDQSxTQUFTOzs7QUFHVDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7OztBQUdBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1Q0FBdUMsMkVBQWE7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiODIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG4vLyBUb29sdGlwIFwiQ2xhc3NcIiAoQnVpbHQgYXMgYSByZW5kZXJsZXNzIFZ1ZSBpbnN0YW5jZSlcbi8vXG4vLyBIYW5kbGVzIHRyaWdnZXIgZXZlbnRzLCBldGMuXG4vLyBJbnN0YW50aWF0ZXMgdGVtcGxhdGUgb24gZGVtYW5kXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgZ2V0U2NvcElkIGZyb20gJy4uLy4uLy4uL3V0aWxzL2dldC1zY29wZS1pZCc7XG5pbXBvcnQgbG9vc2VFcXVhbCBmcm9tICcuLi8uLi8uLi91dGlscy9sb29zZS1lcXVhbCc7XG5pbXBvcnQgeyBhcnJheUluY2x1ZGVzLCBjb25jYXQsIGZyb20gYXMgYXJyYXlGcm9tIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYXJyYXknO1xuaW1wb3J0IHsgaXNFbGVtZW50LCBpc0Rpc2FibGVkLCBpc1Zpc2libGUsIGNsb3Nlc3QsIGNvbnRhaW5zLCBzZWxlY3QsIGdldEJ5SWQsIGhhc0NsYXNzLCBnZXRBdHRyLCBoYXNBdHRyLCBzZXRBdHRyLCByZW1vdmVBdHRyLCBldmVudE9uLCBldmVudE9mZiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uLCBpc051bWJlciwgaXNQbGFpbk9iamVjdCwgaXNTdHJpbmcsIGlzVW5kZWZpbmVkLCBpc1VuZGVmaW5lZE9yTnVsbCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2luc3BlY3QnO1xuaW1wb3J0IHsga2V5cyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL29iamVjdCc7XG5pbXBvcnQgeyB3YXJuIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvd2Fybic7XG5pbXBvcnQgeyBCdkV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYnYtZXZlbnQuY2xhc3MnO1xuaW1wb3J0IHsgQlZUb29sdGlwVGVtcGxhdGUgfSBmcm9tICcuL2J2LXRvb2x0aXAtdGVtcGxhdGUnO1xudmFyIE5BTUUgPSAnQlZUb29sdGlwJzsgLy8gTW9kYWwgY29udGFpbmVyIHNlbGVjdG9yIGZvciBhcHBlbmRpbmcgdG9vbHRpcC9wb3BvdmVyXG5cbnZhciBNT0RBTF9TRUxFQ1RPUiA9ICcubW9kYWwtY29udGVudCc7IC8vIE1vZGFsIGAkcm9vdGAgaGlkZGVuIGV2ZW50XG5cbnZhciBNT0RBTF9DTE9TRV9FVkVOVCA9ICdidjo6bW9kYWw6OmhpZGRlbic7IC8vIEZvciBkcm9wZG93biBzbmlmZmluZ1xuXG52YXIgRFJPUERPV05fQ0xBU1MgPSAnZHJvcGRvd24nO1xudmFyIERST1BET1dOX09QRU5fU0VMRUNUT1IgPSAnLmRyb3Bkb3duLW1lbnUuc2hvdyc7IC8vIE9wdGlvbnMgZm9yIE5hdGl2ZSBFdmVudCBMaXN0ZW5lcnMgKHNpbmNlIHdlIG5ldmVyIGNhbGwgcHJldmVudERlZmF1bHQpXG5cbnZhciBFdnRPcHRzID0ge1xuICBwYXNzaXZlOiB0cnVlLFxuICBjYXB0dXJlOiBmYWxzZVxufTsgLy8gRGF0YSBzcGVjaWZpYyB0byBwb3BwZXIgYW5kIHRlbXBsYXRlXG4vLyBXZSBkb24ndCB1c2UgcHJvcHMsIGFzIHdlIG5lZWQgcmVhY3Rpdml0eSAod2UgY2FuJ3QgcGFzcyByZWFjdGl2ZSBwcm9wcylcblxudmFyIHRlbXBsYXRlRGF0YSA9IHtcbiAgLy8gVGV4dCBzdHJpbmcgb3IgU2NvcGVkIHNsb3QgZnVuY3Rpb25cbiAgdGl0bGU6ICcnLFxuICAvLyBUZXh0IHN0cmluZyBvciBTY29wZWQgc2xvdCBmdW5jdGlvblxuICBjb250ZW50OiAnJyxcbiAgLy8gU3RyaW5nXG4gIHZhcmlhbnQ6IG51bGwsXG4gIC8vIFN0cmluZywgQXJyYXksIE9iamVjdFxuICBjdXN0b21DbGFzczogbnVsbCxcbiAgLy8gU3RyaW5nIG9yIGFycmF5IG9mIFN0cmluZ3MgKG92ZXJ3cml0dGVuIGJ5IEJWUG9wcGVyKVxuICB0cmlnZ2VyczogJycsXG4gIC8vIFN0cmluZyAob3ZlcndyaXR0ZW4gYnkgQlZQb3BwZXIpXG4gIHBsYWNlbWVudDogJ2F1dG8nLFxuICAvLyBTdHJpbmcgb3IgYXJyYXkgb2Ygc3RyaW5nc1xuICBmYWxsYmFja1BsYWNlbWVudDogJ2ZsaXAnLFxuICAvLyBFbGVtZW50IG9yIENvbXBvbmVudCByZWZlcmVuY2UgKG9yIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBlbGVtZW50KSBvZlxuICAvLyB0aGUgZWxlbWVudCB0aGF0IHdpbGwgaGF2ZSB0aGUgdHJpZ2dlciBldmVudHMgYm91bmQsIGFuZCBpcyBhbHNvXG4gIC8vIGRlZmF1bHQgZWxlbWVudCBmb3IgcG9zaXRpb25pbmdcbiAgdGFyZ2V0OiBudWxsLFxuICAvLyBIVE1MIElELCBFbGVtZW50IG9yIENvbXBvbmVudCByZWZlcmVuY2VcbiAgY29udGFpbmVyOiBudWxsLFxuICAvLyAnYm9keSdcbiAgLy8gQm9vbGVhblxuICBub0ZhZGU6IGZhbHNlLFxuICAvLyAnc2Nyb2xsUGFyZW50JywgJ3ZpZXdwb3J0JywgJ3dpbmRvdycsIEVsZW1lbnQsIG9yIENvbXBvbmVudCByZWZlcmVuY2VcbiAgYm91bmRhcnk6ICdzY3JvbGxQYXJlbnQnLFxuICAvLyBUb29sdGlwL3BvcG92ZXIgd2lsbCB0cnkgYW5kIHN0YXkgYXdheSBmcm9tXG4gIC8vIGJvdW5kYXJ5IGVkZ2UgYnkgdGhpcyBtYW55IHBpeGVscyAoTnVtYmVyKVxuICBib3VuZGFyeVBhZGRpbmc6IDUsXG4gIC8vIEFycm93IG9mZnNldCAoTnVtYmVyKVxuICBvZmZzZXQ6IDAsXG4gIC8vIEhvdmVyL2ZvY3VzIGRlbGF5IChOdW1iZXIgb3IgT2JqZWN0KVxuICBkZWxheTogMCxcbiAgLy8gQXJyb3cgb2YgVG9vbHRpcC9wb3BvdmVyIHdpbGwgdHJ5IGFuZCBzdGF5IGF3YXkgZnJvbVxuICAvLyB0aGUgZWRnZSBvZiB0b29sdGlwL3BvcG92ZXIgZWRnZSBieSB0aGlzIG1hbnkgcGl4ZWxzXG4gIGFycm93UGFkZGluZzogNixcbiAgLy8gRGlzYWJsZWQgc3RhdGUgKEJvb2xlYW4pXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgLy8gSUQgdG8gdXNlIGZvciB0b29sdGlwL3BvcG92ZXJcbiAgaWQ6IG51bGwsXG4gIC8vIEZsYWcgdXNlZCBieSBkaXJlY3RpdmVzIG9ubHksIGZvciBIVE1MIGNvbnRlbnRcbiAgaHRtbDogZmFsc2Vcbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQlZUb29sdGlwID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBwcm9wczogey8vIE5vbmVcbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7fSwgdGVtcGxhdGVEYXRhLCB7XG4gICAgICAvLyBTdGF0ZSBtYW5hZ2VtZW50IGRhdGFcbiAgICAgIGFjdGl2ZVRyaWdnZXI6IHtcbiAgICAgICAgLy8gbWFudWFsOiBmYWxzZSxcbiAgICAgICAgaG92ZXI6IGZhbHNlLFxuICAgICAgICBjbGljazogZmFsc2UsXG4gICAgICAgIGZvY3VzOiBmYWxzZVxuICAgICAgfSxcbiAgICAgIGxvY2FsU2hvdzogZmFsc2VcbiAgICB9KTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICB0ZW1wbGF0ZVR5cGU6IGZ1bmN0aW9uIHRlbXBsYXRlVHlwZSgpIHtcbiAgICAgIC8vIE92ZXJ3cml0dGVuIGJ5IEJWUG9wb3ZlclxuICAgICAgcmV0dXJuICd0b29sdGlwJztcbiAgICB9LFxuICAgIGNvbXB1dGVkSWQ6IGZ1bmN0aW9uIGNvbXB1dGVkSWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pZCB8fCBcIl9fYnZfXCIuY29uY2F0KHRoaXMudGVtcGxhdGVUeXBlLCBcIl9cIikuY29uY2F0KHRoaXMuX3VpZCwgXCJfX1wiKTtcbiAgICB9LFxuICAgIGNvbXB1dGVkRGVsYXk6IGZ1bmN0aW9uIGNvbXB1dGVkRGVsYXkoKSB7XG4gICAgICAvLyBOb3JtYWxpemVzIGRlbGF5IGludG8gb2JqZWN0IGZvcm1cbiAgICAgIHZhciBkZWxheSA9IHtcbiAgICAgICAgc2hvdzogMCxcbiAgICAgICAgaGlkZTogMFxuICAgICAgfTtcblxuICAgICAgaWYgKGlzUGxhaW5PYmplY3QodGhpcy5kZWxheSkpIHtcbiAgICAgICAgZGVsYXkuc2hvdyA9IE1hdGgubWF4KHBhcnNlSW50KHRoaXMuZGVsYXkuc2hvdywgMTApIHx8IDAsIDApO1xuICAgICAgICBkZWxheS5oaWRlID0gTWF0aC5tYXgocGFyc2VJbnQodGhpcy5kZWxheS5oaWRlLCAxMCkgfHwgMCwgMCk7XG4gICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKHRoaXMuZGVsYXkpIHx8IGlzU3RyaW5nKHRoaXMuZGVsYXkpKSB7XG4gICAgICAgIGRlbGF5LnNob3cgPSBkZWxheS5oaWRlID0gTWF0aC5tYXgocGFyc2VJbnQodGhpcy5kZWxheSwgMTApIHx8IDAsIDApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGVsYXk7XG4gICAgfSxcbiAgICBjb21wdXRlZFRyaWdnZXJzOiBmdW5jdGlvbiBjb21wdXRlZFRyaWdnZXJzKCkge1xuICAgICAgLy8gUmV0dXJucyB0aGUgdHJpZ2dlcnMgaW4gc29ydGVkIGFycmF5IGZvcm1cbiAgICAgIC8vIFRPRE86IFN3aXRjaCB0aGlzIHRvIG9iamVjdCBmb3JtIGZvciBlYXNpZXIgbG9va3VwXG4gICAgICByZXR1cm4gY29uY2F0KHRoaXMudHJpZ2dlcnMpLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJykudHJpbSgpLnRvTG93ZXJDYXNlKCkuc3BsaXQoL1xccysvKS5zb3J0KCk7XG4gICAgfSxcbiAgICBpc1dpdGhBY3RpdmVUcmlnZ2VyOiBmdW5jdGlvbiBpc1dpdGhBY3RpdmVUcmlnZ2VyKCkge1xuICAgICAgZm9yICh2YXIgdHJpZ2dlciBpbiB0aGlzLmFjdGl2ZVRyaWdnZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlVHJpZ2dlclt0cmlnZ2VyXSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIGNvbXB1dGVkVGVtcGxhdGVEYXRhOiBmdW5jdGlvbiBjb21wdXRlZFRlbXBsYXRlRGF0YSgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnRpdGxlLFxuICAgICAgICBjb250ZW50OiB0aGlzLmNvbnRlbnQsXG4gICAgICAgIHZhcmlhbnQ6IHRoaXMudmFyaWFudCxcbiAgICAgICAgY3VzdG9tQ2xhc3M6IHRoaXMuY3VzdG9tQ2xhc3MsXG4gICAgICAgIG5vRmFkZTogdGhpcy5ub0ZhZGVcbiAgICAgIH07XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIGNvbXB1dGVkVHJpZ2dlcnM6IGZ1bmN0aW9uIGNvbXB1dGVkVHJpZ2dlcnMobmV3VHJpZ2dlcnMsIG9sZFRyaWdnZXJzKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAvLyBUcmlnZ2VycyBoYXZlIGNoYW5nZWQsIHNvIHJlLXJlZ2lzdGVyIHRoZW1cblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGlmICghbG9vc2VFcXVhbChuZXdUcmlnZ2Vycywgb2xkVHJpZ2dlcnMpKSB7XG4gICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAvLyBEaXNhYmxlIHRyaWdnZXIgbGlzdGVuZXJzXG4gICAgICAgICAgX3RoaXMudW5MaXN0ZW4oKTsgLy8gQ2xlYXIgYW55IGFjdGl2ZSB0cmlnZ2VycyB0aGF0IGFyZSBubyBsb25nZXIgaW4gdGhlIGxpc3Qgb2YgdHJpZ2dlcnNcblxuXG4gICAgICAgICAgb2xkVHJpZ2dlcnMuZm9yRWFjaChmdW5jdGlvbiAodHJpZ2dlcikge1xuICAgICAgICAgICAgaWYgKCFhcnJheUluY2x1ZGVzKG5ld1RyaWdnZXJzLCB0cmlnZ2VyKSkge1xuICAgICAgICAgICAgICBpZiAoX3RoaXMuYWN0aXZlVHJpZ2dlclt0cmlnZ2VyXSkge1xuICAgICAgICAgICAgICAgIF90aGlzLmFjdGl2ZVRyaWdnZXJbdHJpZ2dlcl0gPSBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pOyAvLyBSZS1lbmFibGUgdGhlIHRyaWdnZXIgbGlzdGVuZXJzXG5cbiAgICAgICAgICBfdGhpcy5saXN0ZW4oKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBjb21wdXRlZFRlbXBsYXRlRGF0YTogZnVuY3Rpb24gY29tcHV0ZWRUZW1wbGF0ZURhdGEoKSB7XG4gICAgICAvLyBJZiBhbnkgb2YgdGhlIHdoaWxlIG9wZW4gcmVhY3RpdmUgXCJwcm9wc1wiIGNoYW5nZSxcbiAgICAgIC8vIGVuc3VyZSB0aGF0IHRoZSB0ZW1wbGF0ZSB1cGRhdGVzIGFjY29yZGluZ2x5XG4gICAgICB0aGlzLmhhbmRsZVRlbXBsYXRlVXBkYXRlKCk7XG4gICAgfSxcbiAgICBkaXNhYmxlZDogZnVuY3Rpb24gZGlzYWJsZWQobmV3VmFsKSB7XG4gICAgICBuZXdWYWwgPyB0aGlzLmRpc2FibGUoKSA6IHRoaXMuZW5hYmxlKCk7XG4gICAgfVxuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgLy8gQ3JlYXRlIG5vbi1yZWFjdGl2ZSBwcm9wZXJ0aWVzXG4gICAgdGhpcy4kX3RpcCA9IG51bGw7XG4gICAgdGhpcy4kX2hvdmVyVGltZW91dCA9IG51bGw7XG4gICAgdGhpcy4kX2hvdmVyU3RhdGUgPSAnJztcbiAgICB0aGlzLiRfdmlzaWJsZUludGVydmFsID0gbnVsbDtcbiAgICB0aGlzLiRfZW5hYmxlZCA9ICF0aGlzLmRpc2FibGVkO1xuXG4gICAgdGhpcy4kX25vb3AgPSBmdW5jdGlvbiAoKSB7fTsgLy8gRGVzdHJveSBvdXJzZWx2ZXMgd2hlbiB0aGUgcGFyZW50IGlzIGRlc3Ryb3llZFxuXG5cbiAgICBpZiAodGhpcy4kcGFyZW50KSB7XG4gICAgICB0aGlzLiRwYXJlbnQuJG9uY2UoJ2hvb2s6YmVmb3JlRGVzdHJveScsIHRoaXMuJGRlc3Ryb3kpO1xuICAgIH1cblxuICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0YXJnZXQgPSBfdGhpczIuZ2V0VGFyZ2V0KCk7XG5cbiAgICAgIGlmICh0YXJnZXQgJiYgY29udGFpbnMoZG9jdW1lbnQuYm9keSwgdGFyZ2V0KSkge1xuICAgICAgICAvLyBDb3B5IHRoZSBwYXJlbnQncyBzY29wZWQgc3R5bGUgYXR0cmlidXRlXG4gICAgICAgIF90aGlzMi5zY29wZUlkID0gZ2V0U2NvcElkKF90aGlzMi4kcGFyZW50KTsgLy8gU2V0IHVwIGFsbCB0cmlnZ2VyIGhhbmRsZXJzIGFuZCBsaXN0ZW5lcnNcblxuICAgICAgICBfdGhpczIubGlzdGVuKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICB3YXJuKFwiXCIuY29uY2F0KF90aGlzMi50ZW1wbGF0ZVR5cGUsIFwiIHVuYWJsZSB0byBmaW5kIHRhcmdldCBlbGVtZW50IGluIGRvY3VtZW50XCIpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcbiAgdXBkYXRlZDogZnVuY3Rpb24gdXBkYXRlZCgpXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHtcbiAgICAvLyBVc3VhbGx5IGNhbGxlZCB3aGVuIHRoZSBzbG90cy9kYXRhIGNoYW5nZXNcbiAgICB0aGlzLiRuZXh0VGljayh0aGlzLmhhbmRsZVRlbXBsYXRlVXBkYXRlKTtcbiAgfSxcbiAgZGVhY3RpdmF0ZWQ6IGZ1bmN0aW9uIGRlYWN0aXZhdGVkKClcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAge1xuICAgIC8vIEluIGEga2VlcGFsaXZlIHRoYXQgaGFzIGJlZW4gZGVhY3RpdmF0ZWQsIHNvIGhpZGVcbiAgICAvLyB0aGUgdG9vbHRpcC9wb3BvdmVyIGlmIGl0IGlzIHNob3dpbmdcbiAgICB0aGlzLmZvcmNlSGlkZSgpO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KClcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAge1xuICAgIC8vIFJlbW92ZSBhbGwgaGFuZGxlci9saXN0ZW5lcnNcbiAgICB0aGlzLnVuTGlzdGVuKCk7XG4gICAgdGhpcy5zZXRXaGlsZU9wZW5MaXN0ZW5lcnMoZmFsc2UpOyAvLyBDbGVhciBhbnkgdGltZW91dHMvVGltZXJzXG5cbiAgICBjbGVhclRpbWVvdXQodGhpcy4kX2hvdmVyVGltZW91dCk7XG4gICAgdGhpcy4kX2hvdmVyVGltZW91dCA9IG51bGw7XG4gICAgdGhpcy5kZXN0cm95VGVtcGxhdGUoKTtcbiAgICB0aGlzLnJlc3RvcmVUaXRsZSgpO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgLy9cbiAgICAvLyBNZXRob2RzIGZvciBjcmVhdGluZyBhbmQgZGVzdHJveWluZyB0aGUgdGVtcGxhdGVcbiAgICAvL1xuICAgIGdldFRlbXBsYXRlOiBmdW5jdGlvbiBnZXRUZW1wbGF0ZSgpIHtcbiAgICAgIC8vIE92ZXJyaWRkZW4gYnkgQlZQb3BvdmVyXG4gICAgICByZXR1cm4gQlZUb29sdGlwVGVtcGxhdGU7XG4gICAgfSxcbiAgICB1cGRhdGVEYXRhOiBmdW5jdGlvbiB1cGRhdGVEYXRhKCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHZhciBkYXRhID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcbiAgICAgIC8vIE1ldGhvZCBmb3IgdXBkYXRpbmcgcG9wcGVyL3RlbXBsYXRlIGRhdGFcbiAgICAgIC8vIFdlIG9ubHkgdXBkYXRlIGRhdGEgaWYgaXQgZXhpc3RzLCBhbmQgaGFzIG5vdCBjaGFuZ2VkXG4gICAgICB2YXIgdGl0bGVVcGRhdGVkID0gZmFsc2U7XG4gICAgICBrZXlzKHRlbXBsYXRlRGF0YSkuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGRhdGFbcHJvcF0pICYmIF90aGlzM1twcm9wXSAhPT0gZGF0YVtwcm9wXSkge1xuICAgICAgICAgIF90aGlzM1twcm9wXSA9IGRhdGFbcHJvcF07XG5cbiAgICAgICAgICBpZiAocHJvcCA9PT0gJ3RpdGxlJykge1xuICAgICAgICAgICAgdGl0bGVVcGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGl0bGVVcGRhdGVkICYmIHRoaXMubG9jYWxTaG93KSB7XG4gICAgICAgIC8vIElmIHRoZSB0aXRsZSBoYXMgdXBkYXRlZCwgd2UgbWF5IG5lZWQgdG8gaGFuZGxlIHRoZSB0aXRsZVxuICAgICAgICAvLyBhdHRyaWJ1dGUgb24gdGhlIHRyaWdnZXIgdGFyZ2V0LiBXZSBvbmx5IGRvIHRoaXMgd2hpbGUgdGhlXG4gICAgICAgIC8vIHRlbXBsYXRlIGlzIG9wZW5cbiAgICAgICAgdGhpcy5maXhUaXRsZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgY3JlYXRlVGVtcGxhdGVBbmRTaG93OiBmdW5jdGlvbiBjcmVhdGVUZW1wbGF0ZUFuZFNob3coKSB7XG4gICAgICAvLyBDcmVhdGVzIHRoZSB0ZW1wbGF0ZSBpbnN0YW5jZSBhbmQgc2hvdyBpdFxuICAgICAgLy8gdGhpcy5kZXN0cm95VGVtcGxhdGUoKVxuICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuZ2V0Q29udGFpbmVyKCk7XG4gICAgICB2YXIgVGVtcGxhdGUgPSB0aGlzLmdldFRlbXBsYXRlKCk7XG4gICAgICB2YXIgJHRpcCA9IHRoaXMuJF90aXAgPSBuZXcgVGVtcGxhdGUoe1xuICAgICAgICBwYXJlbnQ6IHRoaXMsXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgaXMgbm90IHJlYWN0aXZlIHRvIGNoYW5nZXMgaW4gdGhlIHByb3BzIGRhdGFcbiAgICAgICAgcHJvcHNEYXRhOiB7XG4gICAgICAgICAgLy8gVGhlc2UgdmFsdWVzIGNhbm5vdCBiZSBjaGFuZ2VkIHdoaWxlIHRlbXBsYXRlIGlzIHNob3dpbmdcbiAgICAgICAgICBpZDogdGhpcy5jb21wdXRlZElkLFxuICAgICAgICAgIGh0bWw6IHRoaXMuaHRtbCxcbiAgICAgICAgICBwbGFjZW1lbnQ6IHRoaXMucGxhY2VtZW50LFxuICAgICAgICAgIGZhbGxiYWNrUGxhY2VtZW50OiB0aGlzLmZhbGxiYWNrUGxhY2VtZW50LFxuICAgICAgICAgIHRhcmdldDogdGhpcy5nZXRQbGFjZW1lbnRUYXJnZXQoKSxcbiAgICAgICAgICBib3VuZGFyeTogdGhpcy5nZXRCb3VuZGFyeSgpLFxuICAgICAgICAgIC8vIEVuc3VyZSB0aGUgZm9sbG93aW5nIGFyZSBpbnRlZ2Vyc1xuICAgICAgICAgIG9mZnNldDogcGFyc2VJbnQodGhpcy5vZmZzZXQsIDEwKSB8fCAwLFxuICAgICAgICAgIGFycm93UGFkZGluZzogcGFyc2VJbnQodGhpcy5hcnJvd1BhZGRpbmcsIDEwKSB8fCAwLFxuICAgICAgICAgIGJvdW5kYXJ5UGFkZGluZzogcGFyc2VJbnQodGhpcy5ib3VuZGFyeVBhZGRpbmcsIDEwKSB8fCAwXG4gICAgICAgIH1cbiAgICAgIH0pOyAvLyBXZSBzZXQgdGhlIGluaXRpYWwgcmVhY3RpdmUgZGF0YSAodmFsdWVzIHRoYXQgY2FuIGJlIGNoYW5nZWQgd2hpbGUgb3BlbilcblxuICAgICAgdGhpcy5oYW5kbGVUZW1wbGF0ZVVwZGF0ZSgpOyAvLyBUZW1wbGF0ZSB0cmFuc2l0aW9uIHBoYXNlIGV2ZW50cyAoaGFuZGxlZCBvbmNlIG9ubHkpXG4gICAgICAvLyBXaGVuIHRoZSB0ZW1wbGF0ZSBoYXMgbW91bnRlZCwgYnV0IG5vdCB2aXNpYmx5IHNob3duIHlldFxuXG4gICAgICAkdGlwLiRvbmNlKCdzaG93JywgdGhpcy5vblRlbXBsYXRlU2hvdyk7IC8vIFdoZW4gdGhlIHRlbXBsYXRlIGhhcyBjb21wbGV0ZWQgc2hvd2luZ1xuXG4gICAgICAkdGlwLiRvbmNlKCdzaG93bicsIHRoaXMub25UZW1wbGF0ZVNob3duKTsgLy8gV2hlbiB0aGUgdGVtcGxhdGUgaGFzIHN0YXJ0ZWQgdG8gaGlkZVxuXG4gICAgICAkdGlwLiRvbmNlKCdoaWRlJywgdGhpcy5vblRlbXBsYXRlSGlkZSk7IC8vIFdoZW4gdGhlIHRlbXBsYXRlIGhhcyBjb21wbGV0ZWQgaGlkaW5nXG5cbiAgICAgICR0aXAuJG9uY2UoJ2hpZGRlbicsIHRoaXMub25UZW1wbGF0ZUhpZGRlbik7IC8vIFdoZW4gdGhlIHRlbXBsYXRlIGdldHMgZGVzdHJveWVkIGZvciBhbnkgcmVhc29uXG5cbiAgICAgICR0aXAuJG9uY2UoJ2hvb2s6ZGVzdHJveWVkJywgdGhpcy5kZXN0cm95VGVtcGxhdGUpOyAvLyBDb252ZW5pZW5jZSBldmVudHMgZnJvbSB0ZW1wbGF0ZVxuICAgICAgLy8gVG8gc2F2ZSB1cyBmcm9tIG1hbnVhbGx5IGFkZGluZy9yZW1vdmluZyBET01cbiAgICAgIC8vIGxpc3RlbmVycyB0byB0aXAgZWxlbWVudCB3aGVuIGl0IGlzIG9wZW5cblxuICAgICAgJHRpcC4kb24oJ2ZvY3VzaW4nLCB0aGlzLmhhbmRsZUV2ZW50KTtcbiAgICAgICR0aXAuJG9uKCdmb2N1c291dCcsIHRoaXMuaGFuZGxlRXZlbnQpO1xuICAgICAgJHRpcC4kb24oJ21vdXNlZW50ZXInLCB0aGlzLmhhbmRsZUV2ZW50KTtcbiAgICAgICR0aXAuJG9uKCdtb3VzZWxlYXZlJywgdGhpcy5oYW5kbGVFdmVudCk7IC8vIE1vdW50ICh3aGljaCB0cmlnZ2VycyB0aGUgYHNob3dgKVxuXG4gICAgICAkdGlwLiRtb3VudChjb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpKTsgLy8gVGVtcGxhdGUgd2lsbCBhdXRvbWF0aWNhbGx5IHJlbW92ZSBpdHMgbWFya3VwIGZyb20gRE9NIHdoZW4gaGlkZGVuXG4gICAgfSxcbiAgICBoaWRlVGVtcGxhdGU6IGZ1bmN0aW9uIGhpZGVUZW1wbGF0ZSgpIHtcbiAgICAgIC8vIFRyaWdnZXIgdGhlIHRlbXBsYXRlIHRvIHN0YXJ0IGhpZGluZ1xuICAgICAgLy8gVGhlIHRlbXBsYXRlIHdpbGwgZW1pdCB0aGUgYGhpZGVgIGV2ZW50IGFmdGVyIHRoaXMgYW5kXG4gICAgICAvLyB0aGVuIGVtaXQgdGhlIGBoaWRkZW5gIGV2ZW50IG9uY2UgaXQgaXMgZnVsbHkgaGlkZGVuXG4gICAgICAvLyBUaGUgYGhvb2s6ZGVzdHJveWVkYCB3aWxsIGFsc28gYmUgY2FsbGVkIChzYWZldHkgbWVhc3VyZSlcbiAgICAgIHRoaXMuJF90aXAgJiYgdGhpcy4kX3RpcC5oaWRlKCk7XG4gICAgfSxcbiAgICBkZXN0cm95VGVtcGxhdGU6IGZ1bmN0aW9uIGRlc3Ryb3lUZW1wbGF0ZSgpIHtcbiAgICAgIC8vIERlc3Ryb3kgdGhlIHRlbXBsYXRlIGluc3RhbmNlIGFuZCByZXNldCBzdGF0ZVxuICAgICAgdGhpcy5zZXRXaGlsZU9wZW5MaXN0ZW5lcnMoZmFsc2UpO1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuJF9ob3ZlclRpbWVvdXQpO1xuICAgICAgdGhpcy4kX2hvdmVyVGltb3V0ID0gbnVsbDtcbiAgICAgIHRoaXMuJF9ob3ZlclN0YXRlID0gJyc7XG4gICAgICB0aGlzLmNsZWFyQWN0aXZlVHJpZ2dlcnMoKTtcbiAgICAgIHRoaXMubG9jYWxQbGFjZW1lbnRUYXJnZXQgPSBudWxsO1xuXG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLiRfdGlwICYmIHRoaXMuJF90aXAuJGRlc3Ryb3koKTtcbiAgICAgIH0gY2F0Y2ggKF91bnVzZWQpIHt9XG5cbiAgICAgIHRoaXMuJF90aXAgPSBudWxsO1xuICAgICAgdGhpcy5sb2NhbFNob3cgPSBmYWxzZTtcbiAgICB9LFxuICAgIGdldFRlbXBsYXRlRWxlbWVudDogZnVuY3Rpb24gZ2V0VGVtcGxhdGVFbGVtZW50KCkge1xuICAgICAgcmV0dXJuIHRoaXMuJF90aXAgPyB0aGlzLiRfdGlwLiRlbCA6IG51bGw7XG4gICAgfSxcbiAgICBoYW5kbGVUZW1wbGF0ZVVwZGF0ZTogZnVuY3Rpb24gaGFuZGxlVGVtcGxhdGVVcGRhdGUoKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgLy8gVXBkYXRlIG91ciB0ZW1wbGF0ZSB0aXRsZS9jb250ZW50IFwicHJvcHNcIlxuICAgICAgLy8gU28gdGhhdCB0aGUgdGVtcGxhdGUgdXBkYXRlcyBhY2NvcmRpbmdseVxuICAgICAgdmFyICR0aXAgPSB0aGlzLiRfdGlwO1xuXG4gICAgICBpZiAoJHRpcCkge1xuICAgICAgICB2YXIgcHJvcHMgPSBbJ3RpdGxlJywgJ2NvbnRlbnQnLCAndmFyaWFudCcsICdjdXN0b21DbGFzcycsICdub0ZhZGUnXTsgLy8gT25seSB1cGRhdGUgdGhlIHZhbHVlcyBpZiB0aGV5IGhhdmUgY2hhbmdlZFxuXG4gICAgICAgIHByb3BzLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgICAgICBpZiAoJHRpcFtwcm9wXSAhPT0gX3RoaXM0W3Byb3BdKSB7XG4gICAgICAgICAgICAkdGlwW3Byb3BdID0gX3RoaXM0W3Byb3BdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICAvL1xuICAgIC8vIFNob3cgYW5kIEhpZGUgaGFuZGxlcnNcbiAgICAvL1xuICAgIHNob3c6IGZ1bmN0aW9uIHNob3coKSB7XG4gICAgICAvLyBTaG93IHRoZSB0b29sdGlwXG4gICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5nZXRUYXJnZXQoKTtcblxuICAgICAgaWYgKCF0YXJnZXQgfHwgIWNvbnRhaW5zKGRvY3VtZW50LmJvZHksIHRhcmdldCkgfHwgIWlzVmlzaWJsZSh0YXJnZXQpIHx8IHRoaXMuZHJvcGRvd25PcGVuKCkgfHwgKGlzVW5kZWZpbmVkT3JOdWxsKHRoaXMudGl0bGUpIHx8IHRoaXMudGl0bGUgPT09ICcnKSAmJiAoaXNVbmRlZmluZWRPck51bGwodGhpcy5jb250ZW50KSB8fCB0aGlzLmNvbnRlbnQgPT09ICcnKSkge1xuICAgICAgICAvLyBJZiB0cmlnZ2VyIGVsZW1lbnQgaXNuJ3QgaW4gdGhlIERPTSBvciBpcyBub3QgdmlzaWJsZSwgb3JcbiAgICAgICAgLy8gaXMgb24gYW4gb3BlbiBkcm9wZG93biB0b2dnbGUsIG9yIGhhcyBubyBjb250ZW50LCB0aGVuXG4gICAgICAgIC8vIHdlIGV4aXQgd2l0aG91dCBzaG93aW5nXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuJF90aXAgfHwgdGhpcy5sb2NhbFNob3cpIHtcbiAgICAgICAgLy8gSWYgdGlwIGFscmVhZHkgZXhpc3RzLCBleGl0IGVhcmx5XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBJbiB0aGUgcHJvY2VzcyBvZiBzaG93aW5nXG5cblxuICAgICAgdGhpcy5sb2NhbFNob3cgPSB0cnVlOyAvLyBDcmVhdGUgYSBjYW5jZWxhYmxlIEJ2RXZlbnRcblxuICAgICAgdmFyIHNob3dFdnQgPSB0aGlzLmJ1aWxkRXZlbnQoJ3Nob3cnLCB7XG4gICAgICAgIGNhbmNlbGFibGU6IHRydWVcbiAgICAgIH0pO1xuICAgICAgdGhpcy5lbWl0RXZlbnQoc2hvd0V2dCk7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogaWdub3JlIGZvciBub3cgKi9cblxuICAgICAgaWYgKHNob3dFdnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAvLyBEb24ndCBzaG93IGlmIGV2ZW50IGNhbmNlbGxlZFxuICAgICAgICAvLyBEZXN0cm95IHRoZSB0ZW1wbGF0ZSAoaWYgZm9yIHNvbWUgcmVhc29uIGl0IHdhcyBjcmVhdGVkKVxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHRoaXMuZGVzdHJveVRlbXBsYXRlKCk7IC8vIENsZWFyIHRoZSBsb2NhbFNob3cgZmxhZ1xuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cbiAgICAgICAgdGhpcy5sb2NhbFNob3cgPSBmYWxzZTtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblxuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIEZpeCB0aGUgdGl0bGUgYXR0cmlidXRlIG9uIHRhcmdldFxuXG5cbiAgICAgIHRoaXMuZml4VGl0bGUoKTsgLy8gU2V0IGFyaWEtZGVzY3JpYmVkYnkgb24gdGFyZ2V0XG5cbiAgICAgIHRoaXMuYWRkQXJpYURlc2NyaWJlZGJ5KCk7IC8vIENyZWF0ZSBhbmQgc2hvdyB0aGUgdG9vbHRpcFxuXG4gICAgICB0aGlzLmNyZWF0ZVRlbXBsYXRlQW5kU2hvdygpO1xuICAgIH0sXG4gICAgaGlkZTogZnVuY3Rpb24gaGlkZSgpIHtcbiAgICAgIHZhciBmb3JjZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZmFsc2U7XG4gICAgICAvLyBIaWRlIHRoZSB0b29sdGlwXG4gICAgICB2YXIgdGlwID0gdGhpcy5nZXRUZW1wbGF0ZUVsZW1lbnQoKTtcblxuICAgICAgaWYgKCF0aXAgfHwgIXRoaXMubG9jYWxTaG93KSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHRoaXMucmVzdG9yZVRpdGxlKCk7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBFbWl0IGNhbmNlbGFibGUgQnZFdmVudCAnaGlkZSdcbiAgICAgIC8vIFdlIGRpc2FibGUgY2FuY2VsbGluZyBpZiBgZm9yY2VgIGlzIHRydWVcblxuXG4gICAgICB2YXIgaGlkZUV2dCA9IHRoaXMuYnVpbGRFdmVudCgnaGlkZScsIHtcbiAgICAgICAgY2FuY2VsYWJsZTogIWZvcmNlXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZW1pdEV2ZW50KGhpZGVFdnQpO1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGlnbm9yZSBmb3Igbm93ICovXG5cbiAgICAgIGlmIChoaWRlRXZ0LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgLy8gRG9uJ3QgaGlkZSBpZiBldmVudCBjYW5jZWxsZWRcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIFRlbGwgdGhlIHRlbXBsYXRlIHRvIGhpZGVcblxuXG4gICAgICB0aGlzLmhpZGVUZW1wbGF0ZSgpOyAvLyBUT0RPOiBUaGUgZm9sbG93aW5nIGNvdWxkIGJlIGFkZGVkIHRvIGBoaWRlVGVtcGxhdGUoKWBcbiAgICAgIC8vIENsZWFyIG91dCBhbnkgc3RyYWdnaW5nIGFjdGl2ZSB0cmlnZ2Vyc1xuXG4gICAgICB0aGlzLmNsZWFyQWN0aXZlVHJpZ2dlcnMoKTsgLy8gUmVzZXQgdGhlIGhvdmVyIHN0YXRlXG5cbiAgICAgIHRoaXMuJF9ob3ZlclN0YXRlID0gJyc7XG4gICAgfSxcbiAgICBmb3JjZUhpZGU6IGZ1bmN0aW9uIGZvcmNlSGlkZSgpIHtcbiAgICAgIC8vIEZvcmNlZnVsbHkgaGlkZXMvZGVzdHJveXMgdGhlIHRlbXBsYXRlLCByZWdhcmRsZXNzIG9mIGFueSBhY3RpdmUgdHJpZ2dlcnNcbiAgICAgIHZhciB0aXAgPSB0aGlzLmdldFRlbXBsYXRlRWxlbWVudCgpO1xuXG4gICAgICBpZiAoIXRpcCB8fCAhdGhpcy5sb2NhbFNob3cpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBEaXNhYmxlIHdoaWxlIG9wZW4gbGlzdGVuZXJzL3dhdGNoZXJzXG4gICAgICAvLyBUaGlzIGlzIGFsc28gZG9uZSBpbiB0aGUgdGVtcGxhdGUgYGhpZGVgIGV2dCBoYW5kbGVyXG5cblxuICAgICAgdGhpcy5zZXRXaGlsZU9wZW5MaXN0ZW5lcnMoZmFsc2UpOyAvLyBDbGVhciBhbnkgaG92ZXIgZW50ZXIvbGVhdmUgZXZlbnRcblxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaG92ZXJUaW1lb3V0KTtcbiAgICAgIHRoaXMuJF9ob3ZlclRpbWVvdXQgPSBudWxsO1xuICAgICAgdGhpcy4kX2hvdmVyU3RhdGUgPSAnJztcbiAgICAgIHRoaXMuY2xlYXJBY3RpdmVUcmlnZ2VycygpOyAvLyBEaXNhYmxlIHRoZSBmYWRlIGFuaW1hdGlvbiBvbiB0aGUgdGVtcGxhdGVcblxuICAgICAgaWYgKHRoaXMuJF90aXApIHtcbiAgICAgICAgdGhpcy4kX3RpcC5ub0ZhZGUgPSB0cnVlO1xuICAgICAgfSAvLyBIaWRlIHRoZSB0aXAgKHdpdGggZm9yY2UgPSB0cnVlKVxuXG5cbiAgICAgIHRoaXMuaGlkZSh0cnVlKTtcbiAgICB9LFxuICAgIGVuYWJsZTogZnVuY3Rpb24gZW5hYmxlKCkge1xuICAgICAgdGhpcy4kX2VuYWJsZWQgPSB0cnVlOyAvLyBDcmVhdGUgYSBub24tY2FuY2VsYWJsZSBCdkV2ZW50XG5cbiAgICAgIHRoaXMuZW1pdEV2ZW50KHRoaXMuYnVpbGRFdmVudCgnZW5hYmxlZCcsIHt9KSk7XG4gICAgfSxcbiAgICBkaXNhYmxlOiBmdW5jdGlvbiBkaXNhYmxlKCkge1xuICAgICAgdGhpcy4kX2VuYWJsZWQgPSBmYWxzZTsgLy8gQ3JlYXRlIGEgbm9uLWNhbmNlbGFibGUgQnZFdmVudFxuXG4gICAgICB0aGlzLmVtaXRFdmVudCh0aGlzLmJ1aWxkRXZlbnQoJ2Rpc2FibGVkJywge30pKTtcbiAgICB9LFxuICAgIC8vXG4gICAgLy8gSGFuZGxlcnMgZm9yIHRlbXBsYXRlIGV2ZW50c1xuICAgIC8vXG4gICAgb25UZW1wbGF0ZVNob3c6IGZ1bmN0aW9uIG9uVGVtcGxhdGVTaG93KCkge1xuICAgICAgLy8gV2hlbiB0ZW1wbGF0ZSBpcyBpbnNlcnRlZCBpbnRvIERPTSwgYnV0IG5vdCB5ZXQgc2hvd25cbiAgICAgIC8vIEVuYWJsZSB3aGlsZSBvcGVuIGxpc3RlbmVycy93YXRjaGVyc1xuICAgICAgdGhpcy5zZXRXaGlsZU9wZW5MaXN0ZW5lcnModHJ1ZSk7XG4gICAgfSxcbiAgICBvblRlbXBsYXRlU2hvd246IGZ1bmN0aW9uIG9uVGVtcGxhdGVTaG93bigpIHtcbiAgICAgIC8vIFdoZW4gdGVtcGxhdGUgc2hvdyB0cmFuc2l0aW9uIGNvbXBsZXRlc1xuICAgICAgdmFyIHByZXZIb3ZlclN0YXRlID0gdGhpcy4kX2hvdmVyU3RhdGU7XG4gICAgICB0aGlzLiRfaG92ZXJTdGF0ZSA9ICcnO1xuXG4gICAgICBpZiAocHJldkhvdmVyU3RhdGUgPT09ICdvdXQnKSB7XG4gICAgICAgIHRoaXMubGVhdmUobnVsbCk7XG4gICAgICB9IC8vIEVtaXQgYSBub24tY2FuY2VsYWJsZSBCdkV2ZW50ICdzaG93bidcblxuXG4gICAgICB0aGlzLmVtaXRFdmVudCh0aGlzLmJ1aWxkRXZlbnQoJ3Nob3duJywge30pKTtcbiAgICB9LFxuICAgIG9uVGVtcGxhdGVIaWRlOiBmdW5jdGlvbiBvblRlbXBsYXRlSGlkZSgpIHtcbiAgICAgIC8vIFdoZW4gdGVtcGxhdGUgaXMgc3RhcnRpbmcgdG8gaGlkZVxuICAgICAgLy8gRGlzYWJsZSB3aGlsZSBvcGVuIGxpc3RlbmVycy93YXRjaGVyc1xuICAgICAgdGhpcy5zZXRXaGlsZU9wZW5MaXN0ZW5lcnMoZmFsc2UpO1xuICAgIH0sXG4gICAgb25UZW1wbGF0ZUhpZGRlbjogZnVuY3Rpb24gb25UZW1wbGF0ZUhpZGRlbigpIHtcbiAgICAgIC8vIFdoZW4gdGVtcGxhdGUgaGFzIGNvbXBsZXRlZCBjbG9zaW5nIChqdXN0IGJlZm9yZSBpdCBzZWxmIGRlc3RydWN0cylcbiAgICAgIC8vIFRPRE86XG4gICAgICAvLyAgIFRoZSBuZXh0IHR3byBsaW5lcyBjb3VsZCBiZSBtb3ZlZCBpbnRvIGBkZXN0cm95VGVtcGxhdGUoKWBcbiAgICAgIHRoaXMucmVtb3ZlQXJpYURlc2NyaWJlZGJ5KCk7XG4gICAgICB0aGlzLnJlc3RvcmVUaXRsZSgpO1xuICAgICAgdGhpcy5kZXN0cm95VGVtcGxhdGUoKTsgLy8gRW1pdCBhIG5vbi1jYW5jZWxhYmxlIEJ2RXZlbnQgJ3Nob3duJ1xuXG4gICAgICB0aGlzLmVtaXRFdmVudCh0aGlzLmJ1aWxkRXZlbnQoJ2hpZGRlbicsIHt9KSk7XG4gICAgfSxcbiAgICAvL1xuICAgIC8vIFV0aWxpdHkgbWV0aG9kc1xuICAgIC8vXG4gICAgZ2V0VGFyZ2V0OiBmdW5jdGlvbiBnZXRUYXJnZXQoKSB7XG4gICAgICAvLyBIYW5kbGUgY2FzZSB3aGVyZSB0YXJnZXQgbWF5IGJlIGEgY29tcG9uZW50IHJlZlxuICAgICAgdmFyIHRhcmdldCA9IHRoaXMudGFyZ2V0ID8gdGhpcy50YXJnZXQuJGVsIHx8IHRoaXMudGFyZ2V0IDogbnVsbDsgLy8gSWYgYW4gSURcblxuICAgICAgdGFyZ2V0ID0gaXNTdHJpbmcodGFyZ2V0KSA/IGdldEJ5SWQodGFyZ2V0LnJlcGxhY2UoL14jLywgJycpKSA6IHRhcmdldDsgLy8gSWYgYSBmdW5jdGlvblxuXG4gICAgICB0YXJnZXQgPSBpc0Z1bmN0aW9uKHRhcmdldCkgPyB0YXJnZXQoKSA6IHRhcmdldDsgLy8gSWYgYW4gZWxlbWVudCByZWZcblxuICAgICAgcmV0dXJuIGlzRWxlbWVudCh0YXJnZXQpID8gdGFyZ2V0IDogbnVsbDtcbiAgICB9LFxuICAgIGdldFBsYWNlbWVudFRhcmdldDogZnVuY3Rpb24gZ2V0UGxhY2VtZW50VGFyZ2V0KCkge1xuICAgICAgLy8gVGhpcyBpcyB0aGUgdGFyZ2V0IHRoYXQgdGhlIHRvb2x0aXAgd2lsbCBiZSBwbGFjZWQgb24sIHdoaWNoIG1heSBub3RcbiAgICAgIC8vIG5lY2Vzc2FyaWx5IGJlIHRoZSBzYW1lIGVsZW1lbnQgdGhhdCBoYXMgdGhlIHRyaWdnZXIgZXZlbnQgbGlzdGVuZXJzXG4gICAgICAvLyBGb3Igbm93LCB0aGlzIGlzIHRoZSBzYW1lIGFzIHRhcmdldFxuICAgICAgLy8gVE9ETzpcbiAgICAgIC8vICAgQWRkIGluIGNoaWxkIHNlbGVjdG9yIHN1cHBvcnRcbiAgICAgIC8vICAgQWRkIGluIHZpc2liaWxpdHkgY2hlY2tzIGZvciB0aGlzIGVsZW1lbnRcbiAgICAgIC8vICAgRmFsbGJhY2sgdG8gdGFyZ2V0IGlmIG5vdCBmb3VuZFxuICAgICAgcmV0dXJuIHRoaXMuZ2V0VGFyZ2V0KCk7XG4gICAgfSxcbiAgICBnZXRUYXJnZXRJZDogZnVuY3Rpb24gZ2V0VGFyZ2V0SWQoKSB7XG4gICAgICAvLyBSZXR1cm5zIHRoZSBJRCBvZiB0aGUgdHJpZ2dlciBlbGVtZW50XG4gICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5nZXRUYXJnZXQoKTtcbiAgICAgIHJldHVybiB0YXJnZXQgJiYgdGFyZ2V0LmlkID8gdGFyZ2V0LmlkIDogbnVsbDtcbiAgICB9LFxuICAgIGdldENvbnRhaW5lcjogZnVuY3Rpb24gZ2V0Q29udGFpbmVyKCkge1xuICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlcmUgY29udGFpbmVyIG1heSBiZSBhIGNvbXBvbmVudCByZWZcbiAgICAgIHZhciBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lciA/IHRoaXMuY29udGFpbmVyLiRlbCB8fCB0aGlzLmNvbnRhaW5lciA6IGZhbHNlO1xuICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuICAgICAgdmFyIHRhcmdldCA9IHRoaXMuZ2V0VGFyZ2V0KCk7IC8vIElmIHdlIGFyZSBpbiBhIG1vZGFsLCB3ZSBhcHBlbmQgdG8gdGhlIG1vZGFsIGluc3RlYWRcbiAgICAgIC8vIG9mIGJvZHksIHVubGVzcyBhIGNvbnRhaW5lciBpcyBzcGVjaWZpZWRcbiAgICAgIC8vIFRPRE86XG4gICAgICAvLyAgIFRlbXBsYXRlIHNob3VsZCBwZXJpb2RpY2FsbHkgY2hlY2sgdG8gc2VlIGlmIGl0IGlzIGluIGRvbVxuICAgICAgLy8gICBBbmQgaWYgbm90LCBzZWxmIGRlc3RydWN0IChpZiBjb250YWluZXIgZ290IHYtaWYnZWQgb3V0IG9mIERPTSlcbiAgICAgIC8vICAgT3IgdGhpcyBjb3VsZCBwb3NzaWJseSBiZSBwYXJ0IG9mIHRoZSB2aXNpYmlsaXR5IGNoZWNrXG5cbiAgICAgIHJldHVybiBjb250YWluZXIgPT09IGZhbHNlID8gY2xvc2VzdChNT0RBTF9TRUxFQ1RPUiwgdGFyZ2V0KSB8fCBib2R5IDogaXNTdHJpbmcoY29udGFpbmVyKSA/IGdldEJ5SWQoY29udGFpbmVyLnJlcGxhY2UoL14jLywgJycpKSB8fCBib2R5IDogYm9keTtcbiAgICB9LFxuICAgIGdldEJvdW5kYXJ5OiBmdW5jdGlvbiBnZXRCb3VuZGFyeSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmJvdW5kYXJ5ID8gdGhpcy5ib3VuZGFyeS4kZWwgfHwgdGhpcy5ib3VuZGFyeSA6ICdzY3JvbGxQYXJlbnQnO1xuICAgIH0sXG4gICAgaXNJbk1vZGFsOiBmdW5jdGlvbiBpc0luTW9kYWwoKSB7XG4gICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5nZXRUYXJnZXQoKTtcbiAgICAgIHJldHVybiB0YXJnZXQgJiYgY2xvc2VzdChNT0RBTF9TRUxFQ1RPUiwgdGFyZ2V0KTtcbiAgICB9LFxuICAgIGlzRHJvcGRvd246IGZ1bmN0aW9uIGlzRHJvcGRvd24oKSB7XG4gICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdHJpZ2dlciBpcyBhIGRyb3Bkb3duXG4gICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5nZXRUYXJnZXQoKTtcbiAgICAgIHJldHVybiB0YXJnZXQgJiYgaGFzQ2xhc3ModGFyZ2V0LCBEUk9QRE9XTl9DTEFTUyk7XG4gICAgfSxcbiAgICBkcm9wZG93bk9wZW46IGZ1bmN0aW9uIGRyb3Bkb3duT3BlbigpIHtcbiAgICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0cmlnZ2VyIGlzIGEgZHJvcGRvd24gYW5kIHRoZSBkcm9wZG93biBtZW51IGlzIG9wZW5cbiAgICAgIHZhciB0YXJnZXQgPSB0aGlzLmdldFRhcmdldCgpO1xuICAgICAgcmV0dXJuIHRoaXMuaXNEcm9wZG93bigpICYmIHRhcmdldCAmJiBzZWxlY3QoRFJPUERPV05fT1BFTl9TRUxFQ1RPUiwgdGFyZ2V0KTtcbiAgICB9LFxuICAgIGNsZWFyQWN0aXZlVHJpZ2dlcnM6IGZ1bmN0aW9uIGNsZWFyQWN0aXZlVHJpZ2dlcnMoKSB7XG4gICAgICBmb3IgKHZhciB0cmlnZ2VyIGluIHRoaXMuYWN0aXZlVHJpZ2dlcikge1xuICAgICAgICB0aGlzLmFjdGl2ZVRyaWdnZXJbdHJpZ2dlcl0gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFkZEFyaWFEZXNjcmliZWRieTogZnVuY3Rpb24gYWRkQXJpYURlc2NyaWJlZGJ5KCkge1xuICAgICAgLy8gQWRkIGFyaWEtZGVzY3JpYmVkYnkgb24gdHJpZ2dlciBlbGVtZW50LCB3aXRob3V0IHJlbW92aW5nIGFueSBvdGhlciBJRHNcbiAgICAgIHZhciB0YXJnZXQgPSB0aGlzLmdldFRhcmdldCgpO1xuICAgICAgdmFyIGRlc2MgPSBnZXRBdHRyKHRhcmdldCwgJ2FyaWEtZGVzY3JpYmVkYnknKSB8fCAnJztcbiAgICAgIGRlc2MgPSBkZXNjLnNwbGl0KC9cXHMrLykuY29uY2F0KHRoaXMuY29tcHV0ZWRJZCkuam9pbignICcpLnRyaW0oKTsgLy8gVXBkYXRlL2FkZCBhcmlhLWRlc2NyaWJlZCBieVxuXG4gICAgICBzZXRBdHRyKHRhcmdldCwgJ2FyaWEtZGVzY3JpYmVkYnknLCBkZXNjKTtcbiAgICB9LFxuICAgIHJlbW92ZUFyaWFEZXNjcmliZWRieTogZnVuY3Rpb24gcmVtb3ZlQXJpYURlc2NyaWJlZGJ5KCkge1xuICAgICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICAgIC8vIFJlbW92ZSBhcmlhLWRlc2NyaWJlZGJ5IG9uIHRyaWdnZXIgZWxlbWVudCwgd2l0aG91dCByZW1vdmluZyBhbnkgb3RoZXIgSURzXG4gICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5nZXRUYXJnZXQoKTtcbiAgICAgIHZhciBkZXNjID0gZ2V0QXR0cih0YXJnZXQsICdhcmlhLWRlc2NyaWJlZGJ5JykgfHwgJyc7XG4gICAgICBkZXNjID0gZGVzYy5zcGxpdCgvXFxzKy8pLmZpbHRlcihmdW5jdGlvbiAoZCkge1xuICAgICAgICByZXR1cm4gZCAhPT0gX3RoaXM1LmNvbXB1dGVkSWQ7XG4gICAgICB9KS5qb2luKCcgJykudHJpbSgpOyAvLyBVcGRhdGUgb3IgcmVtb3ZlIGFyaWEtZGVzY3JpYmVkYnlcblxuICAgICAgaWYgKGRlc2MpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgc2V0QXR0cih0YXJnZXQsICdhcmlhLWRlc2NyaWJlZGJ5JywgZGVzYyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZW1vdmVBdHRyKHRhcmdldCwgJ2FyaWEtZGVzY3JpYmVkYnknKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGZpeFRpdGxlOiBmdW5jdGlvbiBmaXhUaXRsZSgpIHtcbiAgICAgIC8vIElmIHRoZSB0YXJnZXQgaGFzIGEgdGl0bGUgYXR0cmlidXRlLCBudWxsIGl0IG91dCBhbmRcbiAgICAgIC8vIHN0b3JlIG9uIGRhdGEtdGl0bGVcbiAgICAgIHZhciB0YXJnZXQgPSB0aGlzLmdldFRhcmdldCgpO1xuXG4gICAgICBpZiAodGFyZ2V0ICYmIGdldEF0dHIodGFyZ2V0LCAndGl0bGUnKSkge1xuICAgICAgICAvLyBXZSBvbmx5IHVwZGF0ZSB0aXRsZSBhdHRyaWJ1dGUgaWYgaXQgaGFzIGEgdmFsdWVcbiAgICAgICAgc2V0QXR0cih0YXJnZXQsICdkYXRhLW9yaWdpbmFsLXRpdGxlJywgZ2V0QXR0cih0YXJnZXQsICd0aXRsZScpIHx8ICcnKTtcbiAgICAgICAgc2V0QXR0cih0YXJnZXQsICd0aXRsZScsICcnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlc3RvcmVUaXRsZTogZnVuY3Rpb24gcmVzdG9yZVRpdGxlKCkge1xuICAgICAgLy8gSWYgdGFyZ2V0IGhhZCBhIHRpdGxlLCByZXN0b3JlIHRoZSB0aXRsZSBhdHRyaWJ1dGVcbiAgICAgIC8vIGFuZCByZW1vdmUgdGhlIGRhdGEtdGl0bGUgYXR0cmlidXRlXG4gICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5nZXRUYXJnZXQoKTtcblxuICAgICAgaWYgKHRhcmdldCAmJiBoYXNBdHRyKHRhcmdldCwgJ2RhdGEtb3JpZ2luYWwtdGl0bGUnKSkge1xuICAgICAgICBzZXRBdHRyKHRhcmdldCwgJ3RpdGxlJywgZ2V0QXR0cih0YXJnZXQsICdkYXRhLW9yaWdpbmFsLXRpdGxlJykgfHwgJycpO1xuICAgICAgICByZW1vdmVBdHRyKHRhcmdldCwgJ2RhdGEtb3JpZ2luYWwtdGl0bGUnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vXG4gICAgLy8gQnZFdmVudCBoZWxwZXJzXG4gICAgLy9cbiAgICBidWlsZEV2ZW50OiBmdW5jdGlvbiBidWlsZEV2ZW50KHR5cGUpIHtcbiAgICAgIHZhciBvcHRzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgICAgIC8vIERlZmF1bHRzIHRvIGEgbm9uLWNhbmNlbGxhYmxlIGV2ZW50XG4gICAgICByZXR1cm4gbmV3IEJ2RXZlbnQodHlwZSwgX29iamVjdFNwcmVhZCh7XG4gICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgICB0YXJnZXQ6IHRoaXMuZ2V0VGFyZ2V0KCksXG4gICAgICAgIHJlbGF0ZWRUYXJnZXQ6IHRoaXMuZ2V0VGVtcGxhdGVFbGVtZW50KCkgfHwgbnVsbCxcbiAgICAgICAgY29tcG9uZW50SWQ6IHRoaXMuY29tcHV0ZWRJZCxcbiAgICAgICAgdnVlVGFyZ2V0OiB0aGlzXG4gICAgICB9LCBvcHRzKSk7XG4gICAgfSxcbiAgICBlbWl0RXZlbnQ6IGZ1bmN0aW9uIGVtaXRFdmVudChidkV2dCkge1xuICAgICAgLy8gRW1pdHMgYSBCdkV2ZW50IG9uICRyb290IGFuZCB0aGlzIGluc3RhbmNlXG4gICAgICB2YXIgZXZ0TmFtZSA9IGJ2RXZ0LnR5cGU7XG4gICAgICB2YXIgJHJvb3QgPSB0aGlzLiRyb290O1xuXG4gICAgICBpZiAoJHJvb3QgJiYgJHJvb3QuJGVtaXQpIHtcbiAgICAgICAgLy8gRW1pdCBhbiBldmVudCBvbiAkcm9vdFxuICAgICAgICAkcm9vdC4kZW1pdChcImJ2OjpcIi5jb25jYXQodGhpcy50ZW1wbGF0ZVR5cGUsIFwiOjpcIikuY29uY2F0KGV2dE5hbWUpLCBidkV2dCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuJGVtaXQoZXZ0TmFtZSwgYnZFdnQpO1xuICAgIH0sXG4gICAgLy9cbiAgICAvLyBFdmVudCBoYW5kbGVyIHNldHVwIG1ldGhvZHNcbiAgICAvL1xuICAgIGxpc3RlbjogZnVuY3Rpb24gbGlzdGVuKCkge1xuICAgICAgdmFyIF90aGlzNiA9IHRoaXM7XG5cbiAgICAgIC8vIEVuYWJsZSB0cmlnZ2VyIGV2ZW50IGhhbmRsZXJzXG4gICAgICB2YXIgZWwgPSB0aGlzLmdldFRhcmdldCgpO1xuXG4gICAgICBpZiAoIWVsKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gTGlzdGVuIGZvciBnbG9iYWwgc2hvdy9oaWRlIGV2ZW50c1xuXG5cbiAgICAgIHRoaXMuc2V0Um9vdExpc3RlbmVyKHRydWUpOyAvLyBTZXQgdXAgb3VyIGxpc3RlbmVycyBvbiB0aGUgdGFyZ2V0IHRyaWdnZXIgZWxlbWVudFxuXG4gICAgICB0aGlzLmNvbXB1dGVkVHJpZ2dlcnMuZm9yRWFjaChmdW5jdGlvbiAodHJpZ2dlcikge1xuICAgICAgICBpZiAodHJpZ2dlciA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgIGV2ZW50T24oZWwsICdjbGljaycsIF90aGlzNi5oYW5kbGVFdmVudCwgRXZ0T3B0cyk7XG4gICAgICAgIH0gZWxzZSBpZiAodHJpZ2dlciA9PT0gJ2ZvY3VzJykge1xuICAgICAgICAgIGV2ZW50T24oZWwsICdmb2N1c2luJywgX3RoaXM2LmhhbmRsZUV2ZW50LCBFdnRPcHRzKTtcbiAgICAgICAgICBldmVudE9uKGVsLCAnZm9jdXNvdXQnLCBfdGhpczYuaGFuZGxlRXZlbnQsIEV2dE9wdHMpO1xuICAgICAgICB9IGVsc2UgaWYgKHRyaWdnZXIgPT09ICdibHVyJykge1xuICAgICAgICAgIC8vIFVzZWQgdG8gY2xvc2UgJHRpcCB3aGVuIGVsZW1lbnQgbG9vc2VzIGZvY3VzXG5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgIGV2ZW50T24oZWwsICdmb2N1c291dCcsIF90aGlzNi5oYW5kbGVFdmVudCwgRXZ0T3B0cyk7XG4gICAgICAgIH0gZWxzZSBpZiAodHJpZ2dlciA9PT0gJ2hvdmVyJykge1xuICAgICAgICAgIGV2ZW50T24oZWwsICdtb3VzZWVudGVyJywgX3RoaXM2LmhhbmRsZUV2ZW50LCBFdnRPcHRzKTtcbiAgICAgICAgICBldmVudE9uKGVsLCAnbW91c2VsZWF2ZScsIF90aGlzNi5oYW5kbGVFdmVudCwgRXZ0T3B0cyk7XG4gICAgICAgIH1cbiAgICAgIH0sIHRoaXMpO1xuICAgIH0sXG4gICAgdW5MaXN0ZW46IGZ1bmN0aW9uIHVuTGlzdGVuKClcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHtcbiAgICAgIHZhciBfdGhpczcgPSB0aGlzO1xuXG4gICAgICAvLyBSZW1vdmUgdHJpZ2dlciBldmVudCBoYW5kbGVyc1xuICAgICAgdmFyIGV2ZW50cyA9IFsnY2xpY2snLCAnZm9jdXNpbicsICdmb2N1c291dCcsICdtb3VzZWVudGVyJywgJ21vdXNlbGVhdmUnXTtcbiAgICAgIHZhciB0YXJnZXQgPSB0aGlzLmdldFRhcmdldCgpOyAvLyBTdG9wIGxpc3RlbmluZyBmb3IgZ2xvYmFsIHNob3cvaGlkZS9lbmFibGUvZGlzYWJsZSBldmVudHNcblxuICAgICAgdGhpcy5zZXRSb290TGlzdGVuZXIoZmFsc2UpOyAvLyBDbGVhciBvdXQgYW55IGFjdGl2ZSB0YXJnZXQgbGlzdGVuZXJzXG5cbiAgICAgIGV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgdGFyZ2V0ICYmIGV2ZW50T2ZmKHRhcmdldCwgZXZ0LCBfdGhpczcuaGFuZGxlRXZlbnQsIEV2dE9wdHMpO1xuICAgICAgfSwgdGhpcyk7XG4gICAgfSxcbiAgICBzZXRSb290TGlzdGVuZXI6IGZ1bmN0aW9uIHNldFJvb3RMaXN0ZW5lcihvbikge1xuICAgICAgLy8gTGlzdGVuIGZvciBnbG9iYWwgYGJ2Ojp7aGlkZXxzaG93fTo6e3Rvb2x0aXB8cG9wb3Zlcn1gIGhpZGUgcmVxdWVzdCBldmVudFxuICAgICAgdmFyICRyb290ID0gdGhpcy4kcm9vdDtcblxuICAgICAgaWYgKCRyb290KSB7XG4gICAgICAgIHZhciBtZXRob2QgPSBvbiA/ICckb24nIDogJyRvZmYnO1xuICAgICAgICB2YXIgdHlwZSA9IHRoaXMudGVtcGxhdGVUeXBlO1xuICAgICAgICAkcm9vdFttZXRob2RdKFwiYnY6OmhpZGU6OlwiLmNvbmNhdCh0eXBlKSwgdGhpcy5kb0hpZGUpO1xuICAgICAgICAkcm9vdFttZXRob2RdKFwiYnY6OnNob3c6OlwiLmNvbmNhdCh0eXBlKSwgdGhpcy5kb1Nob3cpO1xuICAgICAgICAkcm9vdFttZXRob2RdKFwiYnY6OmRpc2FibGU6OlwiLmNvbmNhdCh0eXBlKSwgdGhpcy5kb0Rpc2FibGUpO1xuICAgICAgICAkcm9vdFttZXRob2RdKFwiYnY6OmVuYWJsZTo6XCIuY29uY2F0KHR5cGUpLCB0aGlzLmRvRW5hYmxlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNldFdoaWxlT3Blbkxpc3RlbmVyczogZnVuY3Rpb24gc2V0V2hpbGVPcGVuTGlzdGVuZXJzKG9uKSB7XG4gICAgICAvLyBFdmVudHMgdGhhdCBhcmUgb25seSByZWdpc3RlcmVkIHdoZW4gdGhlIHRlbXBsYXRlIGlzIHNob3dpbmdcbiAgICAgIC8vIE1vZGFsIGNsb3NlIGV2ZW50c1xuICAgICAgdGhpcy5zZXRNb2RhbExpc3RlbmVyKG9uKTsgLy8gRHJvcGRvd24gb3BlbiBldmVudHMgKGlmIHdlIGFyZSBhdHRhY2hlZCB0byBhIGRyb3Bkb3duKVxuXG4gICAgICB0aGlzLnNldERyb3Bkb3duTGlzdGVuZXIob24pOyAvLyBQZXJpb2RpYyAkZWxlbWVudCB2aXNpYmlsaXR5IGNoZWNrXG4gICAgICAvLyBGb3IgaGFuZGxpbmcgd2hlbiB0aXAgdGFyZ2V0IGlzIGluIDxrZWVwYWxpdmU+LCB0YWJzLCBjYXJvdXNlbCwgZXRjXG5cbiAgICAgIHRoaXMudmlzaWJsZUNoZWNrKG9uKTsgLy8gT24tdG91Y2ggc3RhcnQgbGlzdGVuZXJzXG5cbiAgICAgIHRoaXMuc2V0T25Ub3VjaFN0YXJ0TGlzdGVuZXIob24pO1xuICAgIH0sXG4gICAgdmlzaWJsZUNoZWNrOiBmdW5jdGlvbiB2aXNpYmxlQ2hlY2sob24pIHtcbiAgICAgIHZhciBfdGhpczggPSB0aGlzO1xuXG4gICAgICAvLyBIYW5kbGVyIGZvciBwZXJpb2RpYyB2aXNpYmlsaXR5IGNoZWNrXG4gICAgICBjbGVhckludGVydmFsKHRoaXMuJF92aXNpYmxlSW50ZXJ2YWwpO1xuICAgICAgdGhpcy4kX3Zpc2libGVJbnRlcnZhbCA9IG51bGw7XG4gICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5nZXRUYXJnZXQoKTtcbiAgICAgIHZhciB0aXAgPSB0aGlzLmdldFRlbXBsYXRlRWxlbWVudCgpO1xuXG4gICAgICBpZiAob24pIHtcbiAgICAgICAgdGhpcy52aXNpYmxlSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKHRpcCAmJiBfdGhpczgubG9jYWxTaG93ICYmICghdGFyZ2V0LnBhcmVudE5vZGUgfHwgIWlzVmlzaWJsZSh0YXJnZXQpKSkge1xuICAgICAgICAgICAgLy8gVGFyZ2V0IGVsZW1lbnQgaXMgbm8gbG9uZ2VyIHZpc2libGUgb3Igbm90IGluIERPTSwgc28gZm9yY2UtaGlkZSB0aGUgdG9vbHRpcFxuICAgICAgICAgICAgX3RoaXM4LmZvcmNlSGlkZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNldE1vZGFsTGlzdGVuZXI6IGZ1bmN0aW9uIHNldE1vZGFsTGlzdGVuZXIob24pIHtcbiAgICAgIC8vIEhhbmRsZSBjYXNlIHdoZXJlIHRvb2x0aXAvdGFyZ2V0IGlzIGluIGEgbW9kYWxcbiAgICAgIGlmICh0aGlzLmlzSW5Nb2RhbCgpKSB7XG4gICAgICAgIC8vIFdlIGNhbiBsaXN0ZW4gZm9yIG1vZGFsIGhpZGRlbiBldmVudHMgb24gYCRyb290YFxuICAgICAgICB0aGlzLiRyb290W29uID8gJyRvbicgOiAnJG9mZiddKE1PREFMX0NMT1NFX0VWRU5ULCB0aGlzLmZvcmNlSGlkZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzZXRPblRvdWNoU3RhcnRMaXN0ZW5lcjogZnVuY3Rpb24gc2V0T25Ub3VjaFN0YXJ0TGlzdGVuZXIob24pXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IEpTRE9NIGRvZXNuJ3Qgc3VwcG9ydCBgb250b3VjaHN0YXJ0YCAqL1xuICAgIHtcbiAgICAgIHZhciBfdGhpczkgPSB0aGlzO1xuXG4gICAgICAvLyBJZiB0aGlzIGlzIGEgdG91Y2gtZW5hYmxlZCBkZXZpY2Ugd2UgYWRkIGV4dHJhIGVtcHR5XG4gICAgICAvLyBgbW91c2VvdmVyYCBsaXN0ZW5lcnMgdG8gdGhlIGJvZHkncyBpbW1lZGlhdGUgY2hpbGRyZW5cbiAgICAgIC8vIE9ubHkgbmVlZGVkIGJlY2F1c2Ugb2YgYnJva2VuIGV2ZW50IGRlbGVnYXRpb24gb24gaU9TXG4gICAgICAvLyBodHRwczovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMTQvMDIvbW91c2VfZXZlbnRfYnViLmh0bWxcbiAgICAgIGlmICgnb250b3VjaHN0YXJ0JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgICAgdmFyIG1ldGhvZCA9IG9uID8gZXZlbnRPbiA6IGV2ZW50T2ZmO1xuICAgICAgICBhcnJheUZyb20oZG9jdW1lbnQuYm9keS5jaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICBtZXRob2QoZWwsICdtb3VzZW92ZXInLCBfdGhpczkuJF9ub29wKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzZXREcm9wZG93bkxpc3RlbmVyOiBmdW5jdGlvbiBzZXREcm9wZG93bkxpc3RlbmVyKG9uKSB7XG4gICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5nZXRUYXJnZXQoKTtcblxuICAgICAgaWYgKCF0YXJnZXQgfHwgIXRoaXMuJHJvb3QgfHwgIXRoaXMuaXNEcm9wZG93bikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIFdlIGNhbiBsaXN0ZW4gZm9yIGRyb3Bkb3duIHNob3duIGV2ZW50cyBvbiBpdCdzIGluc3RhbmNlXG4gICAgICAvLyBUT0RPOlxuICAgICAgLy8gICBXZSBjb3VsZCBncmFiIHRoZSBJRCBmcm9tIHRoZSBkcm9wZG93biwgYW5kIGxpc3RlbiBmb3JcbiAgICAgIC8vICAgJHJvb3QgZXZlbnRzIGZvciB0aGF0IHBhcnRpY3VsYXIgZHJvcGRvd24gaWRcbiAgICAgIC8vICAgRHJvcGRvd24gc2hvd24gYW5kIGhpZGRlbiBldmVudHMgd2lsbCBuZWVkIHRvIGVtaXRcbiAgICAgIC8vICAgTm90ZTogRHJvcGRvd24gYXV0by1JRCBoYXBwZW5zIGluIGEgYCRuZXh0VGljaygpYCBhZnRlciBtb3VudFxuICAgICAgLy8gICAgICAgICBTbyB0aGUgSUQgbG9va3VwIHdvdWxkIG5lZWQgdG8gYmUgZG9uZSBpbiBhIGAkbmV4dFRpY2soKWBcblxuXG4gICAgICBpZiAodGFyZ2V0Ll9fdnVlX18pIHtcbiAgICAgICAgdGFyZ2V0Ll9fdnVlX19bb24gPyAnJG9uJyA6ICckb2ZmJ10oJ3Nob3duJywgdGhpcy5mb3JjZUhpZGUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy9cbiAgICAvLyBFdmVudCBoYW5kbGVyc1xuICAgIC8vXG4gICAgaGFuZGxlRXZlbnQ6IGZ1bmN0aW9uIGhhbmRsZUV2ZW50KGV2dCkge1xuICAgICAgLy8gR2VuZXJhbCB0cmlnZ2VyIGV2ZW50IGhhbmRsZXJcbiAgICAgIC8vIHRhcmdldCBpcyB0aGUgdHJpZ2dlciBlbGVtZW50XG4gICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5nZXRUYXJnZXQoKTtcblxuICAgICAgaWYgKCF0YXJnZXQgfHwgaXNEaXNhYmxlZCh0YXJnZXQpIHx8ICF0aGlzLiRfZW5hYmxlZCB8fCB0aGlzLmRyb3Bkb3duT3BlbigpKSB7XG4gICAgICAgIC8vIElmIGRpc2FibGVkIG9yIG5vdCBlbmFibGVkLCBvciBpZiBhIGRyb3Bkb3duIHRoYXQgaXMgb3BlbiwgZG9uJ3QgZG8gYW55dGhpbmdcbiAgICAgICAgLy8gSWYgdGlwIGlzIHNob3duIGJlZm9yZSBlbGVtZW50IGdldHMgZGlzYWJsZWQsIHRoZW4gdGlwIHdpbGwgbm90XG4gICAgICAgIC8vIGNsb3NlIHVudGlsIG5vIGxvbmdlciBkaXNhYmxlZCBvciBmb3JjZWZ1bGx5IGNsb3NlZFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciB0eXBlID0gZXZ0LnR5cGU7XG4gICAgICB2YXIgdHJpZ2dlcnMgPSB0aGlzLmNvbXB1dGVkVHJpZ2dlcnM7XG5cbiAgICAgIGlmICh0eXBlID09PSAnY2xpY2snICYmIGFycmF5SW5jbHVkZXModHJpZ2dlcnMsICdjbGljaycpKSB7XG4gICAgICAgIHRoaXMuY2xpY2soZXZ0KTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ21vdXNlZW50ZXInICYmIGFycmF5SW5jbHVkZXModHJpZ2dlcnMsICdob3ZlcicpKSB7XG4gICAgICAgIC8vIGBtb3VzZWVudGVyYCBpcyBhIG5vbi1idWJibGluZyBldmVudFxuICAgICAgICB0aGlzLmVudGVyKGV2dCk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdmb2N1c2luJyAmJiBhcnJheUluY2x1ZGVzKHRyaWdnZXJzLCAnZm9jdXMnKSkge1xuICAgICAgICAvLyBgZm9jdXNpbmAgaXMgYSBidWJibGluZyBldmVudFxuICAgICAgICAvLyBgZXZ0YCBpbmNsdWRlcyBgcmVsYXRlZFRhcmdldGAgKGVsZW1lbnQgbG9vc2luZyBmb2N1cylcbiAgICAgICAgdGhpcy5lbnRlcihldnQpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnZm9jdXNvdXQnICYmIChhcnJheUluY2x1ZGVzKHRyaWdnZXJzLCAnZm9jdXMnKSB8fCBhcnJheUluY2x1ZGVzKHRyaWdnZXJzLCAnYmx1cicpKSB8fCB0eXBlID09PSAnbW91c2VsZWF2ZScgJiYgYXJyYXlJbmNsdWRlcyh0cmlnZ2VycywgJ2hvdmVyJykpIHtcbiAgICAgICAgLy8gYGZvY3Vzb3V0YCBpcyBhIGJ1YmJsaW5nIGV2ZW50XG4gICAgICAgIC8vIGBtb3VzZWxlYXZlYCBpcyBhIG5vbi1idWJibGluZyBldmVudFxuICAgICAgICAvLyBgdGlwYCBpcyB0aGUgdGVtcGxhdGUgKHdpbGwgYmUgbnVsbCBpZiBub3Qgb3BlbilcbiAgICAgICAgdmFyIHRpcCA9IHRoaXMuZ2V0VGVtcGxhdGVFbGVtZW50KCk7IC8vIGBldnRUYXJnZXRgIGlzIHRoZSBlbGVtZW50IHdoaWNoIGlzIGxvb3NpbmcgZm9jdXMvaG92ZXIgYW5kXG5cbiAgICAgICAgdmFyIGV2dFRhcmdldCA9IGV2dC50YXJnZXQ7IC8vIGByZWxhdGVkVGFyZ2V0YCBpcyB0aGUgZWxlbWVudCBnYWluaW5nIGZvY3VzL2hvdmVyXG5cbiAgICAgICAgdmFyIHJlbGF0ZWRUYXJnZXQgPSBldnQucmVsYXRlZFRhcmdldDtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblxuICAgICAgICBpZiAoIC8vIEZyb20gdGlwIHRvIHRhcmdldFxuICAgICAgICB0aXAgJiYgY29udGFpbnModGlwLCBldnRUYXJnZXQpICYmIGNvbnRhaW5zKHRhcmdldCwgcmVsYXRlZFRhcmdldCkgfHwgLy8gRnJvbSB0YXJnZXQgdG8gdGlwXG4gICAgICAgIHRpcCAmJiBjb250YWlucyh0YXJnZXQsIGV2dFRhcmdldCkgJiYgY29udGFpbnModGlwLCByZWxhdGVkVGFyZ2V0KSB8fCAvLyBXaXRoaW4gdGlwXG4gICAgICAgIHRpcCAmJiBjb250YWlucyh0aXAsIGV2dFRhcmdldCkgJiYgY29udGFpbnModGlwLCByZWxhdGVkVGFyZ2V0KSB8fCAvLyBXaXRoaW4gdGFyZ2V0XG4gICAgICAgIGNvbnRhaW5zKHRhcmdldCwgZXZ0VGFyZ2V0KSAmJiBjb250YWlucyh0YXJnZXQsIHJlbGF0ZWRUYXJnZXQpKSB7XG4gICAgICAgICAgLy8gSWYgZm9jdXMvaG92ZXIgbW92ZXMgd2l0aGluIGB0aXBgIGFuZCBgdGFyZ2V0YCwgZG9uJ3QgdHJpZ2dlciBhIGxlYXZlXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIE90aGVyd2lzZSB0cmlnZ2VyIGEgbGVhdmVcblxuXG4gICAgICAgIHRoaXMubGVhdmUoZXZ0KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRvSGlkZTogZnVuY3Rpb24gZG9IaWRlKGlkKSB7XG4gICAgICAvLyBQcm9ncmFtbWF0aWNhbGx5IGhpZGUgdG9vbHRpcCBvciBwb3BvdmVyXG4gICAgICBpZiAoIWlkIHx8IHRoaXMuZ2V0VGFyZ2V0SWQoKSA9PT0gaWQgfHwgdGhpcy5jb21wdXRlZElkID09PSBpZCkge1xuICAgICAgICAvLyBDbG9zZSBhbGwgdG9vbHRpcHMgb3IgcG9wb3ZlcnMsIG9yIHRoaXMgc3BlY2lmaWMgdGlwICh3aXRoIElEKVxuICAgICAgICB0aGlzLmZvcmNlSGlkZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgZG9TaG93OiBmdW5jdGlvbiBkb1Nob3coaWQpIHtcbiAgICAgIC8vIFByb2dyYW1tYXRpY2FsbHkgc2hvdyB0b29sdGlwIG9yIHBvcG92ZXJcbiAgICAgIGlmICghaWQgfHwgdGhpcy5nZXRUYXJnZXRJZCgpID09PSBpZCB8fCB0aGlzLmNvbXB1dGVkSWQgPT09IGlkKSB7XG4gICAgICAgIC8vIE9wZW4gYWxsIHRvb2x0aXBzIG9yIHBvcG92ZXJzLCBvciB0aGlzIHNwZWNpZmljIHRpcCAod2l0aCBJRClcbiAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBkb0Rpc2FibGU6IGZ1bmN0aW9uIGRvRGlzYWJsZShpZClcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBuZXh0OiBpZ25vcmUgZm9yIG5vdyAqL1xuICAgIHtcbiAgICAgIC8vIFByb2dyYW1tYXRpY2FsbHkgZGlzYWJsZSB0b29sdGlwIG9yIHBvcG92ZXJcbiAgICAgIGlmICghaWQgfHwgdGhpcy5nZXRUYXJnZXRJZCgpID09PSBpZCB8fCB0aGlzLmNvbXB1dGVkSWQgPT09IGlkKSB7XG4gICAgICAgIC8vIERpc2FibGUgYWxsIHRvb2x0aXBzIG9yIHBvcG92ZXJzIChubyBJRCksIG9yIHRoaXMgc3BlY2lmaWMgdGlwICh3aXRoIElEKVxuICAgICAgICB0aGlzLmRpc2FibGUoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRvRW5hYmxlOiBmdW5jdGlvbiBkb0VuYWJsZShpZClcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBuZXh0OiBpZ25vcmUgZm9yIG5vdyAqL1xuICAgIHtcbiAgICAgIC8vIFByb2dyYW1tYXRpY2FsbHkgZW5hYmxlIHRvb2x0aXAgb3IgcG9wb3ZlclxuICAgICAgaWYgKCFpZCB8fCB0aGlzLmdldFRhcmdldElkKCkgPT09IGlkIHx8IHRoaXMuY29tcHV0ZWRJZCA9PT0gaWQpIHtcbiAgICAgICAgLy8gRW5hYmxlIGFsbCB0b29sdGlwcyBvciBwb3BvdmVycyAobm8gSUQpLCBvciB0aGlzIHNwZWNpZmljIHRpcCAod2l0aCBJRClcbiAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGNsaWNrOiBmdW5jdGlvbiBjbGljayhldnQpIHtcbiAgICAgIGlmICghdGhpcy4kX2VuYWJsZWQgfHwgdGhpcy5kcm9wZG93bk9wZW4oKSkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWN0aXZlVHJpZ2dlci5jbGljayA9ICF0aGlzLmFjdGl2ZVRyaWdnZXIuY2xpY2s7XG5cbiAgICAgIGlmICh0aGlzLmlzV2l0aEFjdGl2ZVRyaWdnZXIpIHtcbiAgICAgICAgdGhpcy5lbnRlcihudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHRoaXMubGVhdmUobnVsbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB0b2dnbGU6IGZ1bmN0aW9uIHRvZ2dsZSgpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB7XG4gICAgICAvLyBNYW51YWwgdG9nZ2xlIGhhbmRsZXJcbiAgICAgIGlmICghdGhpcy4kX2VuYWJsZWQgfHwgdGhpcy5kcm9wZG93bk9wZW4oKSkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIFNob3VsZCB3ZSByZWdpc3RlciBhcyBhbiBhY3RpdmUgdHJpZ2dlcj9cbiAgICAgIC8vIHRoaXMuYWN0aXZlVHJpZ2dlci5tYW51YWwgPSAhdGhpcy5hY3RpdmVUcmlnZ2VyLm1hbnVhbFxuXG5cbiAgICAgIGlmICh0aGlzLmxvY2FsU2hvdykge1xuICAgICAgICB0aGlzLmxlYXZlKG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lbnRlcihudWxsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGVudGVyOiBmdW5jdGlvbiBlbnRlcigpIHtcbiAgICAgIHZhciBfdGhpczEwID0gdGhpcztcblxuICAgICAgdmFyIGV2dCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogbnVsbDtcblxuICAgICAgLy8gT3BlbmluZyB0cmlnZ2VyIGhhbmRsZXJcbiAgICAgIC8vIE5vdGU6IENsaWNrIGV2ZW50cyBhcmUgc2VudCB3aXRoIGV2dCA9PT0gbnVsbFxuICAgICAgaWYgKGV2dCkge1xuICAgICAgICB0aGlzLmFjdGl2ZVRyaWdnZXJbZXZ0LnR5cGUgPT09ICdmb2N1c2luJyA/ICdmb2N1cycgOiAnaG92ZXInXSA9IHRydWU7XG4gICAgICB9XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuXG5cbiAgICAgIGlmICh0aGlzLmxvY2FsU2hvdyB8fCB0aGlzLiRfaG92ZXJTdGF0ZSA9PT0gJ2luJykge1xuICAgICAgICB0aGlzLiRfaG92ZXJTdGF0ZSA9ICdpbic7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaG92ZXJUaW1lb3V0KTtcbiAgICAgIHRoaXMuJF9ob3ZlclN0YXRlID0gJ2luJztcblxuICAgICAgaWYgKCF0aGlzLmNvbXB1dGVkRGVsYXkuc2hvdykge1xuICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEhpZGUgYW55IHRpdGxlIGF0dHJpYnV0ZSB3aGlsZSBlbnRlciBkZWxheSBpcyBhY3RpdmVcbiAgICAgICAgdGhpcy5maXhUaXRsZSgpO1xuICAgICAgICB0aGlzLmhvdmVyVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKF90aGlzMTAuJF9ob3ZlclN0YXRlID09PSAnaW4nKSB7XG4gICAgICAgICAgICBfdGhpczEwLnNob3coKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFfdGhpczEwLmxvY2FsU2hvdykge1xuICAgICAgICAgICAgX3RoaXMxMC5yZXN0b3JlVGl0bGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHRoaXMuY29tcHV0ZWREZWxheS5zaG93KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGxlYXZlOiBmdW5jdGlvbiBsZWF2ZSgpIHtcbiAgICAgIHZhciBfdGhpczExID0gdGhpcztcblxuICAgICAgdmFyIGV2dCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogbnVsbDtcblxuICAgICAgLy8gQ2xvc2luZyB0cmlnZ2VyIGhhbmRsZXJcbiAgICAgIC8vIE5vdGU6IENsaWNrIGV2ZW50cyBhcmUgc2VudCB3aXRoIGV2dCA9PT0gbnVsbFxuICAgICAgaWYgKGV2dCkge1xuICAgICAgICB0aGlzLmFjdGl2ZVRyaWdnZXJbZXZ0LnR5cGUgPT09ICdmb2N1c291dCcgPyAnZm9jdXMnIDogJ2hvdmVyJ10gPSBmYWxzZTtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblxuICAgICAgICBpZiAoZXZ0LnR5cGUgPT09ICdmb2N1c291dCcgJiYgYXJyYXlJbmNsdWRlcyh0aGlzLmNvbXB1dGVkVHJpZ2dlcnMsICdibHVyJykpIHtcbiAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGBibHVyYDogd2UgY2xlYXIgb3V0IHRoZSBvdGhlciB0cmlnZ2Vyc1xuICAgICAgICAgIHRoaXMuYWN0aXZlVHJpZ2dlci5jbGljayA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuYWN0aXZlVHJpZ2dlci5ob3ZlciA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogaWdub3JlIGZvciBub3cgKi9cblxuXG4gICAgICBpZiAodGhpcy5pc1dpdGhBY3RpdmVUcmlnZ2VyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaG92ZXJUaW1lb3V0KTtcbiAgICAgIHRoaXMuJF9ob3ZlclN0YXRlID0gJ291dCc7XG5cbiAgICAgIGlmICghdGhpcy5jb21wdXRlZERlbGF5LmhpZGUpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiRob3ZlclRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoX3RoaXMxMS4kX2hvdmVyU3RhdGUgPT09ICdvdXQnKSB7XG4gICAgICAgICAgICBfdGhpczExLmhpZGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHRoaXMuY29tcHV0ZWREZWxheS5oaWRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdG9vbHRpcC9oZWxwZXJzL2J2LXRvb2x0aXAuanNcbi8vIG1vZHVsZSBpZCA9IDgyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///82\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BVTooltip; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_get_scope_id__ = __webpack_require__(32);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_loose_equal__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__utils_warn__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__utils_bv_event_class__ = __webpack_require__(41);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__bv_tooltip_template__ = __webpack_require__(191);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n// Tooltip \"Class\" (Built as a renderless Vue instance)\n//\n// Handles trigger events, etc.\n// Instantiates template on demand\n\n\n\n\n\n\n\n\n\n\nvar NAME = 'BVTooltip'; // Modal container selector for appending tooltip/popover\n\nvar MODAL_SELECTOR = '.modal-content'; // Modal `$root` hidden event\n\nvar MODAL_CLOSE_EVENT = 'bv::modal::hidden'; // For dropdown sniffing\n\nvar DROPDOWN_CLASS = 'dropdown';\nvar DROPDOWN_OPEN_SELECTOR = '.dropdown-menu.show'; // Options for Native Event Listeners (since we never call preventDefault)\n\nvar EvtOpts = {\n passive: true,\n capture: false\n}; // Data specific to popper and template\n// We don't use props, as we need reactivity (we can't pass reactive props)\n\nvar templateData = {\n // Text string or Scoped slot function\n title: '',\n // Text string or Scoped slot function\n content: '',\n // String\n variant: null,\n // String, Array, Object\n customClass: null,\n // String or array of Strings (overwritten by BVPopper)\n triggers: '',\n // String (overwritten by BVPopper)\n placement: 'auto',\n // String or array of strings\n fallbackPlacement: 'flip',\n // Element or Component reference (or function that returns element) of\n // the element that will have the trigger events bound, and is also\n // default element for positioning\n target: null,\n // HTML ID, Element or Component reference\n container: null,\n // 'body'\n // Boolean\n noFade: false,\n // 'scrollParent', 'viewport', 'window', Element, or Component reference\n boundary: 'scrollParent',\n // Tooltip/popover will try and stay away from\n // boundary edge by this many pixels (Number)\n boundaryPadding: 5,\n // Arrow offset (Number)\n offset: 0,\n // Hover/focus delay (Number or Object)\n delay: 0,\n // Arrow of Tooltip/popover will try and stay away from\n // the edge of tooltip/popover edge by this many pixels\n arrowPadding: 6,\n // Disabled state (Boolean)\n disabled: false,\n // ID to use for tooltip/popover\n id: null,\n // Flag used by directives only, for HTML content\n html: false\n}; // @vue/component\n\nvar BVTooltip =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n props: {// None\n },\n data: function data() {\n return _objectSpread({}, templateData, {\n // State management data\n activeTrigger: {\n // manual: false,\n hover: false,\n click: false,\n focus: false\n },\n localShow: false\n });\n },\n computed: {\n templateType: function templateType() {\n // Overwritten by BVPopover\n return 'tooltip';\n },\n computedId: function computedId() {\n return this.id || \"__bv_\".concat(this.templateType, \"_\").concat(this._uid, \"__\");\n },\n computedDelay: function computedDelay() {\n // Normalizes delay into object form\n var delay = {\n show: 0,\n hide: 0\n };\n\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"j\" /* isPlainObject */])(this.delay)) {\n delay.show = Math.max(parseInt(this.delay.show, 10) || 0, 0);\n delay.hide = Math.max(parseInt(this.delay.hide, 10) || 0, 0);\n } else if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"h\" /* isNumber */])(this.delay) || Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"m\" /* isString */])(this.delay)) {\n delay.show = delay.hide = Math.max(parseInt(this.delay, 10) || 0, 0);\n }\n\n return delay;\n },\n computedTriggers: function computedTriggers() {\n // Returns the triggers in sorted array form\n // TODO: Switch this to object form for easier lookup\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"b\" /* concat */])(this.triggers).filter(Boolean).join(' ').trim().toLowerCase().split(/\\s+/).sort();\n },\n isWithActiveTrigger: function isWithActiveTrigger() {\n for (var trigger in this.activeTrigger) {\n if (this.activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n },\n computedTemplateData: function computedTemplateData() {\n return {\n title: this.title,\n content: this.content,\n variant: this.variant,\n customClass: this.customClass,\n noFade: this.noFade\n };\n }\n },\n watch: {\n computedTriggers: function computedTriggers(newTriggers, oldTriggers) {\n var _this = this;\n\n // Triggers have changed, so re-register them\n\n /* istanbul ignore next */\n if (!Object(__WEBPACK_IMPORTED_MODULE_2__utils_loose_equal__[\"a\" /* default */])(newTriggers, oldTriggers)) {\n this.$nextTick(function () {\n // Disable trigger listeners\n _this.unListen(); // Clear any active triggers that are no longer in the list of triggers\n\n\n oldTriggers.forEach(function (trigger) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"a\" /* arrayIncludes */])(newTriggers, trigger)) {\n if (_this.activeTrigger[trigger]) {\n _this.activeTrigger[trigger] = false;\n }\n }\n }); // Re-enable the trigger listeners\n\n _this.listen();\n });\n }\n },\n computedTemplateData: function computedTemplateData() {\n // If any of the while open reactive \"props\" change,\n // ensure that the template updates accordingly\n this.handleTemplateUpdate();\n },\n disabled: function disabled(newVal) {\n newVal ? this.disable() : this.enable();\n }\n },\n created: function created() {\n var _this2 = this;\n\n // Create non-reactive properties\n this.$_tip = null;\n this.$_hoverTimeout = null;\n this.$_hoverState = '';\n this.$_visibleInterval = null;\n this.$_enabled = !this.disabled;\n\n this.$_noop = function () {}; // Destroy ourselves when the parent is destroyed\n\n\n if (this.$parent) {\n this.$parent.$once('hook:beforeDestroy', this.$destroy);\n }\n\n this.$nextTick(function () {\n var target = _this2.getTarget();\n\n if (target && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(document.body, target)) {\n // Copy the parent's scoped style attribute\n _this2.scopeId = Object(__WEBPACK_IMPORTED_MODULE_1__utils_get_scope_id__[\"a\" /* default */])(_this2.$parent); // Set up all trigger handlers and listeners\n\n _this2.listen();\n } else {\n /* istanbul ignore next */\n Object(__WEBPACK_IMPORTED_MODULE_7__utils_warn__[\"b\" /* warn */])(\"\".concat(_this2.templateType, \" unable to find target element in document\"));\n }\n });\n },\n updated: function updated()\n /* istanbul ignore next */\n {\n // Usually called when the slots/data changes\n this.$nextTick(this.handleTemplateUpdate);\n },\n deactivated: function deactivated()\n /* istanbul ignore next */\n {\n // In a keepalive that has been deactivated, so hide\n // the tooltip/popover if it is showing\n this.forceHide();\n },\n beforeDestroy: function beforeDestroy()\n /* istanbul ignore next */\n {\n // Remove all handler/listeners\n this.unListen();\n this.setWhileOpenListeners(false); // Clear any timeouts/Timers\n\n clearTimeout(this.$_hoverTimeout);\n this.$_hoverTimeout = null;\n this.destroyTemplate();\n this.restoreTitle();\n },\n methods: {\n //\n // Methods for creating and destroying the template\n //\n getTemplate: function getTemplate() {\n // Overridden by BVPopover\n return __WEBPACK_IMPORTED_MODULE_9__bv_tooltip_template__[\"a\" /* BVTooltipTemplate */];\n },\n updateData: function updateData() {\n var _this3 = this;\n\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Method for updating popper/template data\n // We only update data if it exists, and has not changed\n var titleUpdated = false;\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_object__[\"j\" /* keys */])(templateData).forEach(function (prop) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"n\" /* isUndefined */])(data[prop]) && _this3[prop] !== data[prop]) {\n _this3[prop] = data[prop];\n\n if (prop === 'title') {\n titleUpdated = true;\n }\n }\n });\n\n if (titleUpdated && this.localShow) {\n // If the title has updated, we may need to handle the title\n // attribute on the trigger target. We only do this while the\n // template is open\n this.fixTitle();\n }\n },\n createTemplateAndShow: function createTemplateAndShow() {\n // Creates the template instance and show it\n // this.destroyTemplate()\n var container = this.getContainer();\n var Template = this.getTemplate();\n var $tip = this.$_tip = new Template({\n parent: this,\n // The following is not reactive to changes in the props data\n propsData: {\n // These values cannot be changed while template is showing\n id: this.computedId,\n html: this.html,\n placement: this.placement,\n fallbackPlacement: this.fallbackPlacement,\n target: this.getPlacementTarget(),\n boundary: this.getBoundary(),\n // Ensure the following are integers\n offset: parseInt(this.offset, 10) || 0,\n arrowPadding: parseInt(this.arrowPadding, 10) || 0,\n boundaryPadding: parseInt(this.boundaryPadding, 10) || 0\n }\n }); // We set the initial reactive data (values that can be changed while open)\n\n this.handleTemplateUpdate(); // Template transition phase events (handled once only)\n // When the template has mounted, but not visibly shown yet\n\n $tip.$once('show', this.onTemplateShow); // When the template has completed showing\n\n $tip.$once('shown', this.onTemplateShown); // When the template has started to hide\n\n $tip.$once('hide', this.onTemplateHide); // When the template has completed hiding\n\n $tip.$once('hidden', this.onTemplateHidden); // When the template gets destroyed for any reason\n\n $tip.$once('hook:destroyed', this.destroyTemplate); // Convenience events from template\n // To save us from manually adding/removing DOM\n // listeners to tip element when it is open\n\n $tip.$on('focusin', this.handleEvent);\n $tip.$on('focusout', this.handleEvent);\n $tip.$on('mouseenter', this.handleEvent);\n $tip.$on('mouseleave', this.handleEvent); // Mount (which triggers the `show`)\n\n $tip.$mount(container.appendChild(document.createElement('div'))); // Template will automatically remove its markup from DOM when hidden\n },\n hideTemplate: function hideTemplate() {\n // Trigger the template to start hiding\n // The template will emit the `hide` event after this and\n // then emit the `hidden` event once it is fully hidden\n // The `hook:destroyed` will also be called (safety measure)\n this.$_tip && this.$_tip.hide();\n },\n destroyTemplate: function destroyTemplate() {\n // Destroy the template instance and reset state\n this.setWhileOpenListeners(false);\n clearTimeout(this.$_hoverTimeout);\n this.$_hoverTimout = null;\n this.$_hoverState = '';\n this.clearActiveTriggers();\n this.localPlacementTarget = null;\n\n try {\n this.$_tip && this.$_tip.$destroy();\n } catch (_unused) {}\n\n this.$_tip = null;\n this.localShow = false;\n },\n getTemplateElement: function getTemplateElement() {\n return this.$_tip ? this.$_tip.$el : null;\n },\n handleTemplateUpdate: function handleTemplateUpdate() {\n var _this4 = this;\n\n // Update our template title/content \"props\"\n // So that the template updates accordingly\n var $tip = this.$_tip;\n\n if ($tip) {\n var props = ['title', 'content', 'variant', 'customClass', 'noFade']; // Only update the values if they have changed\n\n props.forEach(function (prop) {\n if ($tip[prop] !== _this4[prop]) {\n $tip[prop] = _this4[prop];\n }\n });\n }\n },\n //\n // Show and Hide handlers\n //\n show: function show() {\n // Show the tooltip\n var target = this.getTarget();\n\n if (!target || !Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(document.body, target) || !Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"p\" /* isVisible */])(target) || this.dropdownOpen() || (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"o\" /* isUndefinedOrNull */])(this.title) || this.title === '') && (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"o\" /* isUndefinedOrNull */])(this.content) || this.content === '')) {\n // If trigger element isn't in the DOM or is not visible, or\n // is on an open dropdown toggle, or has no content, then\n // we exit without showing\n return;\n }\n\n if (this.$_tip || this.localShow) {\n // If tip already exists, exit early\n\n /* istanbul ignore next */\n return;\n } // In the process of showing\n\n\n this.localShow = true; // Create a cancelable BvEvent\n\n var showEvt = this.buildEvent('show', {\n cancelable: true\n });\n this.emitEvent(showEvt);\n /* istanbul ignore next: ignore for now */\n\n if (showEvt.defaultPrevented) {\n // Don't show if event cancelled\n // Destroy the template (if for some reason it was created)\n\n /* istanbul ignore next */\n this.destroyTemplate(); // Clear the localShow flag\n\n /* istanbul ignore next */\n\n this.localShow = false;\n /* istanbul ignore next */\n\n return;\n } // Fix the title attribute on target\n\n\n this.fixTitle(); // Set aria-describedby on target\n\n this.addAriaDescribedby(); // Create and show the tooltip\n\n this.createTemplateAndShow();\n },\n hide: function hide() {\n var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n // Hide the tooltip\n var tip = this.getTemplateElement();\n\n if (!tip || !this.localShow) {\n /* istanbul ignore next */\n this.restoreTitle();\n /* istanbul ignore next */\n\n return;\n } // Emit cancelable BvEvent 'hide'\n // We disable cancelling if `force` is true\n\n\n var hideEvt = this.buildEvent('hide', {\n cancelable: !force\n });\n this.emitEvent(hideEvt);\n /* istanbul ignore next: ignore for now */\n\n if (hideEvt.defaultPrevented) {\n // Don't hide if event cancelled\n\n /* istanbul ignore next */\n return;\n } // Tell the template to hide\n\n\n this.hideTemplate(); // TODO: The following could be added to `hideTemplate()`\n // Clear out any stragging active triggers\n\n this.clearActiveTriggers(); // Reset the hover state\n\n this.$_hoverState = '';\n },\n forceHide: function forceHide() {\n // Forcefully hides/destroys the template, regardless of any active triggers\n var tip = this.getTemplateElement();\n\n if (!tip || !this.localShow) {\n /* istanbul ignore next */\n return;\n } // Disable while open listeners/watchers\n // This is also done in the template `hide` evt handler\n\n\n this.setWhileOpenListeners(false); // Clear any hover enter/leave event\n\n clearTimeout(this.hoverTimeout);\n this.$_hoverTimeout = null;\n this.$_hoverState = '';\n this.clearActiveTriggers(); // Disable the fade animation on the template\n\n if (this.$_tip) {\n this.$_tip.noFade = true;\n } // Hide the tip (with force = true)\n\n\n this.hide(true);\n },\n enable: function enable() {\n this.$_enabled = true; // Create a non-cancelable BvEvent\n\n this.emitEvent(this.buildEvent('enabled', {}));\n },\n disable: function disable() {\n this.$_enabled = false; // Create a non-cancelable BvEvent\n\n this.emitEvent(this.buildEvent('disabled', {}));\n },\n //\n // Handlers for template events\n //\n onTemplateShow: function onTemplateShow() {\n // When template is inserted into DOM, but not yet shown\n // Enable while open listeners/watchers\n this.setWhileOpenListeners(true);\n },\n onTemplateShown: function onTemplateShown() {\n // When template show transition completes\n var prevHoverState = this.$_hoverState;\n this.$_hoverState = '';\n\n if (prevHoverState === 'out') {\n this.leave(null);\n } // Emit a non-cancelable BvEvent 'shown'\n\n\n this.emitEvent(this.buildEvent('shown', {}));\n },\n onTemplateHide: function onTemplateHide() {\n // When template is starting to hide\n // Disable while open listeners/watchers\n this.setWhileOpenListeners(false);\n },\n onTemplateHidden: function onTemplateHidden() {\n // When template has completed closing (just before it self destructs)\n // TODO:\n // The next two lines could be moved into `destroyTemplate()`\n this.removeAriaDescribedby();\n this.restoreTitle();\n this.destroyTemplate(); // Emit a non-cancelable BvEvent 'shown'\n\n this.emitEvent(this.buildEvent('hidden', {}));\n },\n //\n // Utility methods\n //\n getTarget: function getTarget() {\n // Handle case where target may be a component ref\n var target = this.target ? this.target.$el || this.target : null; // If an ID\n\n target = Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"m\" /* isString */])(target) ? Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"i\" /* getById */])(target.replace(/^#/, '')) : target; // If a function\n\n target = Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"f\" /* isFunction */])(target) ? target() : target; // If an element ref\n\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"o\" /* isElement */])(target) ? target : null;\n },\n getPlacementTarget: function getPlacementTarget() {\n // This is the target that the tooltip will be placed on, which may not\n // necessarily be the same element that has the trigger event listeners\n // For now, this is the same as target\n // TODO:\n // Add in child selector support\n // Add in visibility checks for this element\n // Fallback to target if not found\n return this.getTarget();\n },\n getTargetId: function getTargetId() {\n // Returns the ID of the trigger element\n var target = this.getTarget();\n return target && target.id ? target.id : null;\n },\n getContainer: function getContainer() {\n // Handle case where container may be a component ref\n var container = this.container ? this.container.$el || this.container : false;\n var body = document.body;\n var target = this.getTarget(); // If we are in a modal, we append to the modal instead\n // of body, unless a container is specified\n // TODO:\n // Template should periodically check to see if it is in dom\n // And if not, self destruct (if container got v-if'ed out of DOM)\n // Or this could possibly be part of the visibility check\n\n return container === false ? Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"c\" /* closest */])(MODAL_SELECTOR, target) || body : Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"m\" /* isString */])(container) ? Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"i\" /* getById */])(container.replace(/^#/, '')) || body : body;\n },\n getBoundary: function getBoundary() {\n return this.boundary ? this.boundary.$el || this.boundary : 'scrollParent';\n },\n isInModal: function isInModal() {\n var target = this.getTarget();\n return target && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"c\" /* closest */])(MODAL_SELECTOR, target);\n },\n isDropdown: function isDropdown() {\n // Returns true if trigger is a dropdown\n var target = this.getTarget();\n return target && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"m\" /* hasClass */])(target, DROPDOWN_CLASS);\n },\n dropdownOpen: function dropdownOpen() {\n // Returns true if trigger is a dropdown and the dropdown menu is open\n var target = this.getTarget();\n return this.isDropdown() && target && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"x\" /* select */])(DROPDOWN_OPEN_SELECTOR, target);\n },\n clearActiveTriggers: function clearActiveTriggers() {\n for (var trigger in this.activeTrigger) {\n this.activeTrigger[trigger] = false;\n }\n },\n addAriaDescribedby: function addAriaDescribedby() {\n // Add aria-describedby on trigger element, without removing any other IDs\n var target = this.getTarget();\n var desc = Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"g\" /* getAttr */])(target, 'aria-describedby') || '';\n desc = desc.split(/\\s+/).concat(this.computedId).join(' ').trim(); // Update/add aria-described by\n\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"z\" /* setAttr */])(target, 'aria-describedby', desc);\n },\n removeAriaDescribedby: function removeAriaDescribedby() {\n var _this5 = this;\n\n // Remove aria-describedby on trigger element, without removing any other IDs\n var target = this.getTarget();\n var desc = Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"g\" /* getAttr */])(target, 'aria-describedby') || '';\n desc = desc.split(/\\s+/).filter(function (d) {\n return d !== _this5.computedId;\n }).join(' ').trim(); // Update or remove aria-describedby\n\n if (desc) {\n /* istanbul ignore next */\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"z\" /* setAttr */])(target, 'aria-describedby', desc);\n } else {\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"u\" /* removeAttr */])(target, 'aria-describedby');\n }\n },\n fixTitle: function fixTitle() {\n // If the target has a title attribute, null it out and\n // store on data-title\n var target = this.getTarget();\n\n if (target && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"g\" /* getAttr */])(target, 'title')) {\n // We only update title attribute if it has a value\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"z\" /* setAttr */])(target, 'data-original-title', Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"g\" /* getAttr */])(target, 'title') || '');\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"z\" /* setAttr */])(target, 'title', '');\n }\n },\n restoreTitle: function restoreTitle() {\n // If target had a title, restore the title attribute\n // and remove the data-title attribute\n var target = this.getTarget();\n\n if (target && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"l\" /* hasAttr */])(target, 'data-original-title')) {\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"z\" /* setAttr */])(target, 'title', Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"g\" /* getAttr */])(target, 'data-original-title') || '');\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"u\" /* removeAttr */])(target, 'data-original-title');\n }\n },\n //\n // BvEvent helpers\n //\n buildEvent: function buildEvent(type) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // Defaults to a non-cancellable event\n return new __WEBPACK_IMPORTED_MODULE_8__utils_bv_event_class__[\"a\" /* BvEvent */](type, _objectSpread({\n cancelable: false,\n target: this.getTarget(),\n relatedTarget: this.getTemplateElement() || null,\n componentId: this.computedId,\n vueTarget: this\n }, opts));\n },\n emitEvent: function emitEvent(bvEvt) {\n // Emits a BvEvent on $root and this instance\n var evtName = bvEvt.type;\n var $root = this.$root;\n\n if ($root && $root.$emit) {\n // Emit an event on $root\n $root.$emit(\"bv::\".concat(this.templateType, \"::\").concat(evtName), bvEvt);\n }\n\n this.$emit(evtName, bvEvt);\n },\n //\n // Event handler setup methods\n //\n listen: function listen() {\n var _this6 = this;\n\n // Enable trigger event handlers\n var el = this.getTarget();\n\n if (!el) {\n /* istanbul ignore next */\n return;\n } // Listen for global show/hide events\n\n\n this.setRootListener(true); // Set up our listeners on the target trigger element\n\n this.computedTriggers.forEach(function (trigger) {\n if (trigger === 'click') {\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"f\" /* eventOn */])(el, 'click', _this6.handleEvent, EvtOpts);\n } else if (trigger === 'focus') {\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"f\" /* eventOn */])(el, 'focusin', _this6.handleEvent, EvtOpts);\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"f\" /* eventOn */])(el, 'focusout', _this6.handleEvent, EvtOpts);\n } else if (trigger === 'blur') {\n // Used to close $tip when element looses focus\n\n /* istanbul ignore next */\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"f\" /* eventOn */])(el, 'focusout', _this6.handleEvent, EvtOpts);\n } else if (trigger === 'hover') {\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"f\" /* eventOn */])(el, 'mouseenter', _this6.handleEvent, EvtOpts);\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"f\" /* eventOn */])(el, 'mouseleave', _this6.handleEvent, EvtOpts);\n }\n }, this);\n },\n unListen: function unListen()\n /* istanbul ignore next */\n {\n var _this7 = this;\n\n // Remove trigger event handlers\n var events = ['click', 'focusin', 'focusout', 'mouseenter', 'mouseleave'];\n var target = this.getTarget(); // Stop listening for global show/hide/enable/disable events\n\n this.setRootListener(false); // Clear out any active target listeners\n\n events.forEach(function (evt) {\n target && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"e\" /* eventOff */])(target, evt, _this7.handleEvent, EvtOpts);\n }, this);\n },\n setRootListener: function setRootListener(on) {\n // Listen for global `bv::{hide|show}::{tooltip|popover}` hide request event\n var $root = this.$root;\n\n if ($root) {\n var method = on ? '$on' : '$off';\n var type = this.templateType;\n $root[method](\"bv::hide::\".concat(type), this.doHide);\n $root[method](\"bv::show::\".concat(type), this.doShow);\n $root[method](\"bv::disable::\".concat(type), this.doDisable);\n $root[method](\"bv::enable::\".concat(type), this.doEnable);\n }\n },\n setWhileOpenListeners: function setWhileOpenListeners(on) {\n // Events that are only registered when the template is showing\n // Modal close events\n this.setModalListener(on); // Dropdown open events (if we are attached to a dropdown)\n\n this.setDropdownListener(on); // Periodic $element visibility check\n // For handling when tip target is in <keepalive>, tabs, carousel, etc\n\n this.visibleCheck(on); // On-touch start listeners\n\n this.setOnTouchStartListener(on);\n },\n visibleCheck: function visibleCheck(on) {\n var _this8 = this;\n\n // Handler for periodic visibility check\n clearInterval(this.$_visibleInterval);\n this.$_visibleInterval = null;\n var target = this.getTarget();\n var tip = this.getTemplateElement();\n\n if (on) {\n this.visibleInterval = setInterval(function () {\n if (tip && _this8.localShow && (!target.parentNode || !Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"p\" /* isVisible */])(target))) {\n // Target element is no longer visible or not in DOM, so force-hide the tooltip\n _this8.forceHide();\n }\n }, 100);\n }\n },\n setModalListener: function setModalListener(on) {\n // Handle case where tooltip/target is in a modal\n if (this.isInModal()) {\n // We can listen for modal hidden events on `$root`\n this.$root[on ? '$on' : '$off'](MODAL_CLOSE_EVENT, this.forceHide);\n }\n },\n setOnTouchStartListener: function setOnTouchStartListener(on)\n /* istanbul ignore next: JSDOM doesn't support `ontouchstart` */\n {\n var _this9 = this;\n\n // If this is a touch-enabled device we add extra empty\n // `mouseover` listeners to the body's immediate children\n // Only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n var method = on ? __WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"f\" /* eventOn */] : __WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"e\" /* eventOff */];\n Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"c\" /* from */])(document.body.children).forEach(function (el) {\n method(el, 'mouseover', _this9.$_noop);\n });\n }\n },\n setDropdownListener: function setDropdownListener(on) {\n var target = this.getTarget();\n\n if (!target || !this.$root || !this.isDropdown) {\n return;\n } // We can listen for dropdown shown events on it's instance\n // TODO:\n // We could grab the ID from the dropdown, and listen for\n // $root events for that particular dropdown id\n // Dropdown shown and hidden events will need to emit\n // Note: Dropdown auto-ID happens in a `$nextTick()` after mount\n // So the ID lookup would need to be done in a `$nextTick()`\n\n\n if (target.__vue__) {\n target.__vue__[on ? '$on' : '$off']('shown', this.forceHide);\n }\n },\n //\n // Event handlers\n //\n handleEvent: function handleEvent(evt) {\n // General trigger event handler\n // target is the trigger element\n var target = this.getTarget();\n\n if (!target || Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"n\" /* isDisabled */])(target) || !this.$_enabled || this.dropdownOpen()) {\n // If disabled or not enabled, or if a dropdown that is open, don't do anything\n // If tip is shown before element gets disabled, then tip will not\n // close until no longer disabled or forcefully closed\n return;\n }\n\n var type = evt.type;\n var triggers = this.computedTriggers;\n\n if (type === 'click' && Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"a\" /* arrayIncludes */])(triggers, 'click')) {\n this.click(evt);\n } else if (type === 'mouseenter' && Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"a\" /* arrayIncludes */])(triggers, 'hover')) {\n // `mouseenter` is a non-bubbling event\n this.enter(evt);\n } else if (type === 'focusin' && Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"a\" /* arrayIncludes */])(triggers, 'focus')) {\n // `focusin` is a bubbling event\n // `evt` includes `relatedTarget` (element loosing focus)\n this.enter(evt);\n } else if (type === 'focusout' && (Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"a\" /* arrayIncludes */])(triggers, 'focus') || Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"a\" /* arrayIncludes */])(triggers, 'blur')) || type === 'mouseleave' && Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"a\" /* arrayIncludes */])(triggers, 'hover')) {\n // `focusout` is a bubbling event\n // `mouseleave` is a non-bubbling event\n // `tip` is the template (will be null if not open)\n var tip = this.getTemplateElement(); // `evtTarget` is the element which is loosing focus/hover and\n\n var evtTarget = evt.target; // `relatedTarget` is the element gaining focus/hover\n\n var relatedTarget = evt.relatedTarget;\n /* istanbul ignore next */\n\n if ( // From tip to target\n tip && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(tip, evtTarget) && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(target, relatedTarget) || // From target to tip\n tip && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(target, evtTarget) && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(tip, relatedTarget) || // Within tip\n tip && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(tip, evtTarget) && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(tip, relatedTarget) || // Within target\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(target, evtTarget) && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(target, relatedTarget)) {\n // If focus/hover moves within `tip` and `target`, don't trigger a leave\n return;\n } // Otherwise trigger a leave\n\n\n this.leave(evt);\n }\n },\n doHide: function doHide(id) {\n // Programmatically hide tooltip or popover\n if (!id || this.getTargetId() === id || this.computedId === id) {\n // Close all tooltips or popovers, or this specific tip (with ID)\n this.forceHide();\n }\n },\n doShow: function doShow(id) {\n // Programmatically show tooltip or popover\n if (!id || this.getTargetId() === id || this.computedId === id) {\n // Open all tooltips or popovers, or this specific tip (with ID)\n this.show();\n }\n },\n doDisable: function doDisable(id)\n /*istanbul ignore next: ignore for now */\n {\n // Programmatically disable tooltip or popover\n if (!id || this.getTargetId() === id || this.computedId === id) {\n // Disable all tooltips or popovers (no ID), or this specific tip (with ID)\n this.disable();\n }\n },\n doEnable: function doEnable(id)\n /*istanbul ignore next: ignore for now */\n {\n // Programmatically enable tooltip or popover\n if (!id || this.getTargetId() === id || this.computedId === id) {\n // Enable all tooltips or popovers (no ID), or this specific tip (with ID)\n this.enable();\n }\n },\n click: function click(evt) {\n if (!this.$_enabled || this.dropdownOpen()) {\n /* istanbul ignore next */\n return;\n }\n\n this.activeTrigger.click = !this.activeTrigger.click;\n\n if (this.isWithActiveTrigger) {\n this.enter(null);\n } else {\n /* istanbul ignore next */\n this.leave(null);\n }\n },\n toggle: function toggle()\n /* istanbul ignore next */\n {\n // Manual toggle handler\n if (!this.$_enabled || this.dropdownOpen()) {\n /* istanbul ignore next */\n return;\n } // Should we register as an active trigger?\n // this.activeTrigger.manual = !this.activeTrigger.manual\n\n\n if (this.localShow) {\n this.leave(null);\n } else {\n this.enter(null);\n }\n },\n enter: function enter() {\n var _this10 = this;\n\n var evt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n // Opening trigger handler\n // Note: Click events are sent with evt === null\n if (evt) {\n this.activeTrigger[evt.type === 'focusin' ? 'focus' : 'hover'] = true;\n }\n /* istanbul ignore next */\n\n\n if (this.localShow || this.$_hoverState === 'in') {\n this.$_hoverState = 'in';\n return;\n }\n\n clearTimeout(this.hoverTimeout);\n this.$_hoverState = 'in';\n\n if (!this.computedDelay.show) {\n this.show();\n } else {\n // Hide any title attribute while enter delay is active\n this.fixTitle();\n this.hoverTimeout = setTimeout(function () {\n /* istanbul ignore else */\n if (_this10.$_hoverState === 'in') {\n _this10.show();\n } else if (!_this10.localShow) {\n _this10.restoreTitle();\n }\n }, this.computedDelay.show);\n }\n },\n leave: function leave() {\n var _this11 = this;\n\n var evt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n // Closing trigger handler\n // Note: Click events are sent with evt === null\n if (evt) {\n this.activeTrigger[evt.type === 'focusout' ? 'focus' : 'hover'] = false;\n /* istanbul ignore next */\n\n if (evt.type === 'focusout' && Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"a\" /* arrayIncludes */])(this.computedTriggers, 'blur')) {\n // Special case for `blur`: we clear out the other triggers\n this.activeTrigger.click = false;\n this.activeTrigger.hover = false;\n }\n }\n /* istanbul ignore next: ignore for now */\n\n\n if (this.isWithActiveTrigger) {\n return;\n }\n\n clearTimeout(this.hoverTimeout);\n this.$_hoverState = 'out';\n\n if (!this.computedDelay.hide) {\n this.hide();\n } else {\n this.$hoverTimeout = setTimeout(function () {\n if (_this11.$_hoverState === 'out') {\n _this11.hide();\n }\n }, this.computedDelay.hide);\n }\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90b29sdGlwL2hlbHBlcnMvYnYtdG9vbHRpcC5qcz8wZmZiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRS9NO0FBQ0E7QUFDQTtBQUNBO0FBQ3FDO0FBQ2U7QUFDQTtBQUM0QjtBQUM4RjtBQUN2RDtBQUMxRTtBQUNGO0FBQ2E7QUFDRTtBQUMxRCx1QkFBdUI7O0FBRXZCLHNDQUFzQzs7QUFFdEMsNENBQTRDOztBQUU1QztBQUNBLG1EQUFtRDs7QUFFbkQ7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUs7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQSxVQUFVO0FBQ1YsR0FBRztBQUNIO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsVUFBVSw2RUFBYTtBQUN2QjtBQUNBO0FBQ0EsT0FBTyxVQUFVLHdFQUFRLGdCQUFnQix3RUFBUTtBQUNqRDtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGFBQWEsb0VBQU07QUFDbkIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsV0FBVywyRUFBVTtBQUNyQjtBQUNBO0FBQ0EsMkJBQTJCOzs7QUFHM0I7QUFDQSxpQkFBaUIsMkVBQWE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7O0FBRWI7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlDQUFpQzs7O0FBR2pDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG9CQUFvQixvRUFBUTtBQUM1QjtBQUNBLHlCQUF5Qiw0RUFBUyxpQkFBaUI7O0FBRW5EO0FBQ0EsT0FBTztBQUNQO0FBQ0EsUUFBUSxpRUFBSTtBQUNaO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDOztBQUV0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLCtFQUFpQjtBQUM5QixLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sbUVBQUk7QUFDVixhQUFhLDJFQUFXO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVULGtDQUFrQztBQUNsQzs7QUFFQSw4Q0FBOEM7O0FBRTlDLGdEQUFnRDs7QUFFaEQsOENBQThDOztBQUU5QyxrREFBa0Q7O0FBRWxELHlEQUF5RDtBQUN6RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQzs7QUFFL0Msd0VBQXdFO0FBQ3hFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2RUFBNkU7O0FBRTdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0Isb0VBQVEsNEJBQTRCLHFFQUFTLG9DQUFvQyxpRkFBaUIsdUNBQXVDLGlGQUFpQjtBQUNoTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87OztBQUdQLDRCQUE0Qjs7QUFFNUI7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtCQUErQjs7QUFFL0I7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLE9BQU87OztBQUdQLHNCQUFzQjs7QUFFdEIsZ0NBQWdDOztBQUVoQztBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDs7O0FBR0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87OztBQUdQLDBCQUEwQjtBQUMxQjs7QUFFQSxpQ0FBaUM7O0FBRWpDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7OztBQUdBLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDOztBQUVqQztBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQSxLQUFLO0FBQ0w7QUFDQSw0QkFBNEI7O0FBRTVCLGtEQUFrRDtBQUNsRCxLQUFLO0FBQ0w7QUFDQSw2QkFBNkI7O0FBRTdCLG1EQUFtRDtBQUNuRCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87OztBQUdQLGdEQUFnRDtBQUNoRCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QixpREFBaUQ7QUFDakQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1RUFBdUU7O0FBRXZFLGVBQWUsd0VBQVEsV0FBVyxtRUFBTyxvQ0FBb0M7O0FBRTdFLGVBQWUsMEVBQVUsNkJBQTZCOztBQUV0RCxhQUFhLHFFQUFTO0FBQ3RCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQ0FBbUMsbUVBQU8sbUNBQW1DLHdFQUFRLGNBQWMsbUVBQU87QUFDMUcsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLHVCQUF1QixtRUFBTztBQUM5QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLG9FQUFRO0FBQy9CLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsa0VBQU07QUFDbEQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixtRUFBTztBQUN4Qix3RUFBd0U7O0FBRXhFLE1BQU0sbUVBQU87QUFDYixLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCLG1FQUFPO0FBQ3hCO0FBQ0E7QUFDQSxPQUFPLG1CQUFtQjs7QUFFMUI7QUFDQTtBQUNBLFFBQVEsbUVBQU87QUFDZixPQUFPO0FBQ1AsUUFBUSxzRUFBVTtBQUNsQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsbUVBQU87QUFDM0I7QUFDQSxRQUFRLG1FQUFPLGdDQUFnQyxtRUFBTztBQUN0RCxRQUFRLG1FQUFPO0FBQ2Y7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLG1FQUFPO0FBQzNCLFFBQVEsbUVBQU8sa0JBQWtCLG1FQUFPO0FBQ3hDLFFBQVEsc0VBQVU7QUFDbEI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNFQUFPO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUCxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQSxVQUFVLG1FQUFPO0FBQ2pCLFNBQVM7QUFDVCxVQUFVLG1FQUFPO0FBQ2pCLFVBQVUsbUVBQU87QUFDakIsU0FBUztBQUNUOztBQUVBO0FBQ0EsVUFBVSxtRUFBTztBQUNqQixTQUFTO0FBQ1QsVUFBVSxtRUFBTztBQUNqQixVQUFVLG1FQUFPO0FBQ2pCO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esb0NBQW9DOztBQUVwQyxrQ0FBa0M7O0FBRWxDO0FBQ0Esa0JBQWtCLG9FQUFRO0FBQzFCLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxpQ0FBaUMsVUFBVSxHQUFHLGdCQUFnQjtBQUM5RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQzs7QUFFaEMsbUNBQW1DO0FBQ25DOztBQUVBLDRCQUE0Qjs7QUFFNUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpRUFBaUUscUVBQVM7QUFDMUU7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDJEQUFPLEdBQUcsNERBQVE7QUFDNUMsUUFBUSxrRUFBUztBQUNqQjtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLHNFQUFVO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSw4QkFBOEIsMkVBQWE7QUFDM0M7QUFDQSxPQUFPLG1DQUFtQywyRUFBYTtBQUN2RDtBQUNBO0FBQ0EsT0FBTyxnQ0FBZ0MsMkVBQWE7QUFDcEQ7QUFDQTtBQUNBO0FBQ0EsT0FBTyxrQ0FBa0MsMkVBQWEsdUJBQXVCLDJFQUFhLGdEQUFnRCwyRUFBYTtBQUN2SjtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7O0FBRTVDLG1DQUFtQzs7QUFFbkM7QUFDQTs7QUFFQTtBQUNBLGVBQWUsb0VBQVEsb0JBQW9CLG9FQUFRO0FBQ25ELGVBQWUsb0VBQVEsdUJBQXVCLG9FQUFRO0FBQ3RELGVBQWUsb0VBQVEsb0JBQW9CLG9FQUFRO0FBQ25ELFFBQVEsb0VBQVEsdUJBQXVCLG9FQUFRO0FBQy9DO0FBQ0E7QUFDQSxTQUFTOzs7QUFHVDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7OztBQUdBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1Q0FBdUMsMkVBQWE7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiODIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG4vLyBUb29sdGlwIFwiQ2xhc3NcIiAoQnVpbHQgYXMgYSByZW5kZXJsZXNzIFZ1ZSBpbnN0YW5jZSlcbi8vXG4vLyBIYW5kbGVzIHRyaWdnZXIgZXZlbnRzLCBldGMuXG4vLyBJbnN0YW50aWF0ZXMgdGVtcGxhdGUgb24gZGVtYW5kXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgZ2V0U2NvcElkIGZyb20gJy4uLy4uLy4uL3V0aWxzL2dldC1zY29wZS1pZCc7XG5pbXBvcnQgbG9vc2VFcXVhbCBmcm9tICcuLi8uLi8uLi91dGlscy9sb29zZS1lcXVhbCc7XG5pbXBvcnQgeyBhcnJheUluY2x1ZGVzLCBjb25jYXQsIGZyb20gYXMgYXJyYXlGcm9tIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYXJyYXknO1xuaW1wb3J0IHsgaXNFbGVtZW50LCBpc0Rpc2FibGVkLCBpc1Zpc2libGUsIGNsb3Nlc3QsIGNvbnRhaW5zLCBzZWxlY3QsIGdldEJ5SWQsIGhhc0NsYXNzLCBnZXRBdHRyLCBoYXNBdHRyLCBzZXRBdHRyLCByZW1vdmVBdHRyLCBldmVudE9uLCBldmVudE9mZiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uLCBpc051bWJlciwgaXNQbGFpbk9iamVjdCwgaXNTdHJpbmcsIGlzVW5kZWZpbmVkLCBpc1VuZGVmaW5lZE9yTnVsbCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2luc3BlY3QnO1xuaW1wb3J0IHsga2V5cyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL29iamVjdCc7XG5pbXBvcnQgeyB3YXJuIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvd2Fybic7XG5pbXBvcnQgeyBCdkV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYnYtZXZlbnQuY2xhc3MnO1xuaW1wb3J0IHsgQlZUb29sdGlwVGVtcGxhdGUgfSBmcm9tICcuL2J2LXRvb2x0aXAtdGVtcGxhdGUnO1xudmFyIE5BTUUgPSAnQlZUb29sdGlwJzsgLy8gTW9kYWwgY29udGFpbmVyIHNlbGVjdG9yIGZvciBhcHBlbmRpbmcgdG9vbHRpcC9wb3BvdmVyXG5cbnZhciBNT0RBTF9TRUxFQ1RPUiA9ICcubW9kYWwtY29udGVudCc7IC8vIE1vZGFsIGAkcm9vdGAgaGlkZGVuIGV2ZW50XG5cbnZhciBNT0RBTF9DTE9TRV9FVkVOVCA9ICdidjo6bW9kYWw6OmhpZGRlbic7IC8vIEZvciBkcm9wZG93biBzbmlmZmluZ1xuXG52YXIgRFJPUERPV05fQ0xBU1MgPSAnZHJvcGRvd24nO1xudmFyIERST1BET1dOX09QRU5fU0VMRUNUT1IgPSAnLmRyb3Bkb3duLW1lbnUuc2hvdyc7IC8vIE9wdGlvbnMgZm9yIE5hdGl2ZSBFdmVudCBMaXN0ZW5lcnMgKHNpbmNlIHdlIG5ldmVyIGNhbGwgcHJldmVudERlZmF1bHQpXG5cbnZhciBFdnRPcHRzID0ge1xuICBwYXNzaXZlOiB0cnVlLFxuICBjYXB0dXJlOiBmYWxzZVxufTsgLy8gRGF0YSBzcGVjaWZpYyB0byBwb3BwZXIgYW5kIHRlbXBsYXRlXG4vLyBXZSBkb24ndCB1c2UgcHJvcHMsIGFzIHdlIG5lZWQgcmVhY3Rpdml0eSAod2UgY2FuJ3QgcGFzcyByZWFjdGl2ZSBwcm9wcylcblxudmFyIHRlbXBsYXRlRGF0YSA9IHtcbiAgLy8gVGV4dCBzdHJpbmcgb3IgU2NvcGVkIHNsb3QgZnVuY3Rpb25cbiAgdGl0bGU6ICcnLFxuICAvLyBUZXh0IHN0cmluZyBvciBTY29wZWQgc2xvdCBmdW5jdGlvblxuICBjb250ZW50OiAnJyxcbiAgLy8gU3RyaW5nXG4gIHZhcmlhbnQ6IG51bGwsXG4gIC8vIFN0cmluZywgQXJyYXksIE9iamVjdFxuICBjdXN0b21DbGFzczogbnVsbCxcbiAgLy8gU3RyaW5nIG9yIGFycmF5IG9mIFN0cmluZ3MgKG92ZXJ3cml0dGVuIGJ5IEJWUG9wcGVyKVxuICB0cmlnZ2VyczogJycsXG4gIC8vIFN0cmluZyAob3ZlcndyaXR0ZW4gYnkgQlZQb3BwZXIpXG4gIHBsYWNlbWVudDogJ2F1dG8nLFxuICAvLyBTdHJpbmcgb3IgYXJyYXkgb2Ygc3RyaW5nc1xuICBmYWxsYmFja1BsYWNlbWVudDogJ2ZsaXAnLFxuICAvLyBFbGVtZW50IG9yIENvbXBvbmVudCByZWZlcmVuY2UgKG9yIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBlbGVtZW50KSBvZlxuICAvLyB0aGUgZWxlbWVudCB0aGF0IHdpbGwgaGF2ZSB0aGUgdHJpZ2dlciBldmVudHMgYm91bmQsIGFuZCBpcyBhbHNvXG4gIC8vIGRlZmF1bHQgZWxlbWVudCBmb3IgcG9zaXRpb25pbmdcbiAgdGFyZ2V0OiBudWxsLFxuICAvLyBIVE1MIElELCBFbGVtZW50IG9yIENvbXBvbmVudCByZWZlcmVuY2VcbiAgY29udGFpbmVyOiBudWxsLFxuICAvLyAnYm9keSdcbiAgLy8gQm9vbGVhblxuICBub0ZhZGU6IGZhbHNlLFxuICAvLyAnc2Nyb2xsUGFyZW50JywgJ3ZpZXdwb3J0JywgJ3dpbmRvdycsIEVsZW1lbnQsIG9yIENvbXBvbmVudCByZWZlcmVuY2VcbiAgYm91bmRhcnk6ICdzY3JvbGxQYXJlbnQnLFxuICAvLyBUb29sdGlwL3BvcG92ZXIgd2lsbCB0cnkgYW5kIHN0YXkgYXdheSBmcm9tXG4gIC8vIGJvdW5kYXJ5IGVkZ2UgYnkgdGhpcyBtYW55IHBpeGVscyAoTnVtYmVyKVxuICBib3VuZGFyeVBhZGRpbmc6IDUsXG4gIC8vIEFycm93IG9mZnNldCAoTnVtYmVyKVxuICBvZmZzZXQ6IDAsXG4gIC8vIEhvdmVyL2ZvY3VzIGRlbGF5IChOdW1iZXIgb3IgT2JqZWN0KVxuICBkZWxheTogMCxcbiAgLy8gQXJyb3cgb2YgVG9vbHRpcC9wb3BvdmVyIHdpbGwgdHJ5IGFuZCBzdGF5IGF3YXkgZnJvbVxuICAvLyB0aGUgZWRnZSBvZiB0b29sdGlwL3BvcG92ZXIgZWRnZSBieSB0aGlzIG1hbnkgcGl4ZWxzXG4gIGFycm93UGFkZGluZzogNixcbiAgLy8gRGlzYWJsZWQgc3RhdGUgKEJvb2xlYW4pXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgLy8gSUQgdG8gdXNlIGZvciB0b29sdGlwL3BvcG92ZXJcbiAgaWQ6IG51bGwsXG4gIC8vIEZsYWcgdXNlZCBieSBkaXJlY3RpdmVzIG9ubHksIGZvciBIVE1MIGNvbnRlbnRcbiAgaHRtbDogZmFsc2Vcbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQlZUb29sdGlwID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBwcm9wczogey8vIE5vbmVcbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7fSwgdGVtcGxhdGVEYXRhLCB7XG4gICAgICAvLyBTdGF0ZSBtYW5hZ2VtZW50IGRhdGFcbiAgICAgIGFjdGl2ZVRyaWdnZXI6IHtcbiAgICAgICAgLy8gbWFudWFsOiBmYWxzZSxcbiAgICAgICAgaG92ZXI6IGZhbHNlLFxuICAgICAgICBjbGljazogZmFsc2UsXG4gICAgICAgIGZvY3VzOiBmYWxzZVxuICAgICAgfSxcbiAgICAgIGxvY2FsU2hvdzogZmFsc2VcbiAgICB9KTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICB0ZW1wbGF0ZVR5cGU6IGZ1bmN0aW9uIHRlbXBsYXRlVHlwZSgpIHtcbiAgICAgIC8vIE92ZXJ3cml0dGVuIGJ5IEJWUG9wb3ZlclxuICAgICAgcmV0dXJuICd0b29sdGlwJztcbiAgICB9LFxuICAgIGNvbXB1dGVkSWQ6IGZ1bmN0aW9uIGNvbXB1dGVkSWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pZCB8fCBcIl9fYnZfXCIuY29uY2F0KHRoaXMudGVtcGxhdGVUeXBlLCBcIl9cIikuY29uY2F0KHRoaXMuX3VpZCwgXCJfX1wiKTtcbiAgICB9LFxuICAgIGNvbXB1dGVkRGVsYXk6IGZ1bmN0aW9uIGNvbXB1dGVkRGVsYXkoKSB7XG4gICAgICAvLyBOb3JtYWxpemVzIGRlbGF5IGludG8gb2JqZWN0IGZvcm1cbiAgICAgIHZhciBkZWxheSA9IHtcbiAgICAgICAgc2hvdzogMCxcbiAgICAgICAgaGlkZTogMFxuICAgICAgfTtcblxuICAgICAgaWYgKGlzUGxhaW5PYmplY3QodGhpcy5kZWxheSkpIHtcbiAgICAgICAgZGVsYXkuc2hvdyA9IE1hdGgubWF4KHBhcnNlSW50KHRoaXMuZGVsYXkuc2hvdywgMTApIHx8IDAsIDApO1xuICAgICAgICBkZWxheS5oaWRlID0gTWF0aC5tYXgocGFyc2VJbnQodGhpcy5kZWxheS5oaWRlLCAxMCkgfHwgMCwgMCk7XG4gICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKHRoaXMuZGVsYXkpIHx8IGlzU3RyaW5nKHRoaXMuZGVsYXkpKSB7XG4gICAgICAgIGRlbGF5LnNob3cgPSBkZWxheS5oaWRlID0gTWF0aC5tYXgocGFyc2VJbnQodGhpcy5kZWxheSwgMTApIHx8IDAsIDApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGVsYXk7XG4gICAgfSxcbiAgICBjb21wdXRlZFRyaWdnZXJzOiBmdW5jdGlvbiBjb21wdXRlZFRyaWdnZXJzKCkge1xuICAgICAgLy8gUmV0dXJucyB0aGUgdHJpZ2dlcnMgaW4gc29ydGVkIGFycmF5IGZvcm1cbiAgICAgIC8vIFRPRE86IFN3aXRjaCB0aGlzIHRvIG9iamVjdCBmb3JtIGZvciBlYXNpZXIgbG9va3VwXG4gICAgICByZXR1cm4gY29uY2F0KHRoaXMudHJpZ2dlcnMpLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJykudHJpbSgpLnRvTG93ZXJDYXNlKCkuc3BsaXQoL1xccysvKS5zb3J0KCk7XG4gICAgfSxcbiAgICBpc1dpdGhBY3RpdmVUcmlnZ2VyOiBmdW5jdGlvbiBpc1dpdGhBY3RpdmVUcmlnZ2VyKCkge1xuICAgICAgZm9yICh2YXIgdHJpZ2dlciBpbiB0aGlzLmFjdGl2ZVRyaWdnZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlVHJpZ2dlclt0cmlnZ2VyXSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIGNvbXB1dGVkVGVtcGxhdGVEYXRhOiBmdW5jdGlvbiBjb21wdXRlZFRlbXBsYXRlRGF0YSgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnRpdGxlLFxuICAgICAgICBjb250ZW50OiB0aGlzLmNvbnRlbnQsXG4gICAgICAgIHZhcmlhbnQ6IHRoaXMudmFyaWFudCxcbiAgICAgICAgY3VzdG9tQ2xhc3M6IHRoaXMuY3VzdG9tQ2xhc3MsXG4gICAgICAgIG5vRmFkZTogdGhpcy5ub0ZhZGVcbiAgICAgIH07XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIGNvbXB1dGVkVHJpZ2dlcnM6IGZ1bmN0aW9uIGNvbXB1dGVkVHJpZ2dlcnMobmV3VHJpZ2dlcnMsIG9sZFRyaWdnZXJzKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAvLyBUcmlnZ2VycyBoYXZlIGNoYW5nZWQsIHNvIHJlLXJlZ2lzdGVyIHRoZW1cblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGlmICghbG9vc2VFcXVhbChuZXdUcmlnZ2Vycywgb2xkVHJpZ2dlcnMpKSB7XG4gICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAvLyBEaXNhYmxlIHRyaWdnZXIgbGlzdGVuZXJzXG4gICAgICAgICAgX3RoaXMudW5MaXN0ZW4oKTsgLy8gQ2xlYXIgYW55IGFjdGl2ZSB0cmlnZ2VycyB0aGF0IGFyZSBubyBsb25nZXIgaW4gdGhlIGxpc3Qgb2YgdHJpZ2dlcnNcblxuXG4gICAgICAgICAgb2xkVHJpZ2dlcnMuZm9yRWFjaChmdW5jdGlvbiAodHJpZ2dlcikge1xuICAgICAgICAgICAgaWYgKCFhcnJheUluY2x1ZGVzKG5ld1RyaWdnZXJzLCB0cmlnZ2VyKSkge1xuICAgICAgICAgICAgICBpZiAoX3RoaXMuYWN0aXZlVHJpZ2dlclt0cmlnZ2VyXSkge1xuICAgICAgICAgICAgICAgIF90aGlzLmFjdGl2ZVRyaWdnZXJbdHJpZ2dlcl0gPSBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pOyAvLyBSZS1lbmFibGUgdGhlIHRyaWdnZXIgbGlzdGVuZXJzXG5cbiAgICAgICAgICBfdGhpcy5saXN0ZW4oKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBjb21wdXRlZFRlbXBsYXRlRGF0YTogZnVuY3Rpb24gY29tcHV0ZWRUZW1wbGF0ZURhdGEoKSB7XG4gICAgICAvLyBJZiBhbnkgb2YgdGhlIHdoaWxlIG9wZW4gcmVhY3RpdmUgXCJwcm9wc1wiIGNoYW5nZSxcbiAgICAgIC8vIGVuc3VyZSB0aGF0IHRoZSB0ZW1wbGF0ZSB1cGRhdGVzIGFjY29yZGluZ2x5XG4gICAgICB0aGlzLmhhbmRsZVRlbXBsYXRlVXBkYXRlKCk7XG4gICAgfSxcbiAgICBkaXNhYmxlZDogZnVuY3Rpb24gZGlzYWJsZWQobmV3VmFsKSB7XG4gICAgICBuZXdWYWwgPyB0aGlzLmRpc2FibGUoKSA6IHRoaXMuZW5hYmxlKCk7XG4gICAgfVxuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgLy8gQ3JlYXRlIG5vbi1yZWFjdGl2ZSBwcm9wZXJ0aWVzXG4gICAgdGhpcy4kX3RpcCA9IG51bGw7XG4gICAgdGhpcy4kX2hvdmVyVGltZW91dCA9IG51bGw7XG4gICAgdGhpcy4kX2hvdmVyU3RhdGUgPSAnJztcbiAgICB0aGlzLiRfdmlzaWJsZUludGVydmFsID0gbnVsbDtcbiAgICB0aGlzLiRfZW5hYmxlZCA9ICF0aGlzLmRpc2FibGVkO1xuXG4gICAgdGhpcy4kX25vb3AgPSBmdW5jdGlvbiAoKSB7fTsgLy8gRGVzdHJveSBvdXJzZWx2ZXMgd2hlbiB0aGUgcGFyZW50IGlzIGRlc3Ryb3llZFxuXG5cbiAgICBpZiAodGhpcy4kcGFyZW50KSB7XG4gICAgICB0aGlzLiRwYXJlbnQuJG9uY2UoJ2hvb2s6YmVmb3JlRGVzdHJveScsIHRoaXMuJGRlc3Ryb3kpO1xuICAgIH1cblxuICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0YXJnZXQgPSBfdGhpczIuZ2V0VGFyZ2V0KCk7XG5cbiAgICAgIGlmICh0YXJnZXQgJiYgY29udGFpbnMoZG9jdW1lbnQuYm9keSwgdGFyZ2V0KSkge1xuICAgICAgICAvLyBDb3B5IHRoZSBwYXJlbnQncyBzY29wZWQgc3R5bGUgYXR0cmlidXRlXG4gICAgICAgIF90aGlzMi5zY29wZUlkID0gZ2V0U2NvcElkKF90aGlzMi4kcGFyZW50KTsgLy8gU2V0IHVwIGFsbCB0cmlnZ2VyIGhhbmRsZXJzIGFuZCBsaXN0ZW5lcnNcblxuICAgICAgICBfdGhpczIubGlzdGVuKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICB3YXJuKFwiXCIuY29uY2F0KF90aGlzMi50ZW1wbGF0ZVR5cGUsIFwiIHVuYWJsZSB0byBmaW5kIHRhcmdldCBlbGVtZW50IGluIGRvY3VtZW50XCIpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcbiAgdXBkYXRlZDogZnVuY3Rpb24gdXBkYXRlZCgpXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHtcbiAgICAvLyBVc3VhbGx5IGNhbGxlZCB3aGVuIHRoZSBzbG90cy9kYXRhIGNoYW5nZXNcbiAgICB0aGlzLiRuZXh0VGljayh0aGlzLmhhbmRsZVRlbXBsYXRlVXBkYXRlKTtcbiAgfSxcbiAgZGVhY3RpdmF0ZWQ6IGZ1bmN0aW9uIGRlYWN0aXZhdGVkKClcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAge1xuICAgIC8vIEluIGEga2VlcGFsaXZlIHRoYXQgaGFzIGJlZW4gZGVhY3RpdmF0ZWQsIHNvIGhpZGVcbiAgICAvLyB0aGUgdG9vbHRpcC9wb3BvdmVyIGlmIGl0IGlzIHNob3dpbmdcbiAgICB0aGlzLmZvcmNlSGlkZSgpO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KClcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAge1xuICAgIC8vIFJlbW92ZSBhbGwgaGFuZGxlci9saXN0ZW5lcnNcbiAgICB0aGlzLnVuTGlzdGVuKCk7XG4gICAgdGhpcy5zZXRXaGlsZU9wZW5MaXN0ZW5lcnMoZmFsc2UpOyAvLyBDbGVhciBhbnkgdGltZW91dHMvVGltZXJzXG5cbiAgICBjbGVhclRpbWVvdXQodGhpcy4kX2hvdmVyVGltZW91dCk7XG4gICAgdGhpcy4kX2hvdmVyVGltZW91dCA9IG51bGw7XG4gICAgdGhpcy5kZXN0cm95VGVtcGxhdGUoKTtcbiAgICB0aGlzLnJlc3RvcmVUaXRsZSgpO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgLy9cbiAgICAvLyBNZXRob2RzIGZvciBjcmVhdGluZyBhbmQgZGVzdHJveWluZyB0aGUgdGVtcGxhdGVcbiAgICAvL1xuICAgIGdldFRlbXBsYXRlOiBmdW5jdGlvbiBnZXRUZW1wbGF0ZSgpIHtcbiAgICAgIC8vIE92ZXJyaWRkZW4gYnkgQlZQb3BvdmVyXG4gICAgICByZXR1cm4gQlZUb29sdGlwVGVtcGxhdGU7XG4gICAgfSxcbiAgICB1cGRhdGVEYXRhOiBmdW5jdGlvbiB1cGRhdGVEYXRhKCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHZhciBkYXRhID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcbiAgICAgIC8vIE1ldGhvZCBmb3IgdXBkYXRpbmcgcG9wcGVyL3RlbXBsYXRlIGRhdGFcbiAgICAgIC8vIFdlIG9ubHkgdXBkYXRlIGRhdGEgaWYgaXQgZXhpc3RzLCBhbmQgaGFzIG5vdCBjaGFuZ2VkXG4gICAgICB2YXIgdGl0bGVVcGRhdGVkID0gZmFsc2U7XG4gICAgICBrZXlzKHRlbXBsYXRlRGF0YSkuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGRhdGFbcHJvcF0pICYmIF90aGlzM1twcm9wXSAhPT0gZGF0YVtwcm9wXSkge1xuICAgICAgICAgIF90aGlzM1twcm9wXSA9IGRhdGFbcHJvcF07XG5cbiAgICAgICAgICBpZiAocHJvcCA9PT0gJ3RpdGxlJykge1xuICAgICAgICAgICAgdGl0bGVVcGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGl0bGVVcGRhdGVkICYmIHRoaXMubG9jYWxTaG93KSB7XG4gICAgICAgIC8vIElmIHRoZSB0aXRsZSBoYXMgdXBkYXRlZCwgd2UgbWF5IG5lZWQgdG8gaGFuZGxlIHRoZSB0aXRsZVxuICAgICAgICAvLyBhdHRyaWJ1dGUgb24gdGhlIHRyaWdnZXIgdGFyZ2V0LiBXZSBvbmx5IGRvIHRoaXMgd2hpbGUgdGhlXG4gICAgICAgIC8vIHRlbXBsYXRlIGlzIG9wZW5cbiAgICAgICAgdGhpcy5maXhUaXRsZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgY3JlYXRlVGVtcGxhdGVBbmRTaG93OiBmdW5jdGlvbiBjcmVhdGVUZW1wbGF0ZUFuZFNob3coKSB7XG4gICAgICAvLyBDcmVhdGVzIHRoZSB0ZW1wbGF0ZSBpbnN0YW5jZSBhbmQgc2hvdyBpdFxuICAgICAgLy8gdGhpcy5kZXN0cm95VGVtcGxhdGUoKVxuICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuZ2V0Q29udGFpbmVyKCk7XG4gICAgICB2YXIgVGVtcGxhdGUgPSB0aGlzLmdldFRlbXBsYXRlKCk7XG4gICAgICB2YXIgJHRpcCA9IHRoaXMuJF90aXAgPSBuZXcgVGVtcGxhdGUoe1xuICAgICAgICBwYXJlbnQ6IHRoaXMsXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgaXMgbm90IHJlYWN0aXZlIHRvIGNoYW5nZXMgaW4gdGhlIHByb3BzIGRhdGFcbiAgICAgICAgcHJvcHNEYXRhOiB7XG4gICAgICAgICAgLy8gVGhlc2UgdmFsdWVzIGNhbm5vdCBiZSBjaGFuZ2VkIHdoaWxlIHRlbXBsYXRlIGlzIHNob3dpbmdcbiAgICAgICAgICBpZDogdGhpcy5jb21wdXRlZElkLFxuICAgICAgICAgIGh0bWw6IHRoaXMuaHRtbCxcbiAgICAgICAgICBwbGFjZW1lbnQ6IHRoaXMucGxhY2VtZW50LFxuICAgICAgICAgIGZhbGxiYWNrUGxhY2VtZW50OiB0aGlzLmZhbGxiYWNrUGxhY2VtZW50LFxuICAgICAgICAgIHRhcmdldDogdGhpcy5nZXRQbGFjZW1lbnRUYXJnZXQoKSxcbiAgICAgICAgICBib3VuZGFyeTogdGhpcy5nZXRCb3VuZGFyeSgpLFxuICAgICAgICAgIC8vIEVuc3VyZSB0aGUgZm9sbG93aW5nIGFyZSBpbnRlZ2Vyc1xuICAgICAgICAgIG9mZnNldDogcGFyc2VJbnQodGhpcy5vZmZzZXQsIDEwKSB8fCAwLFxuICAgICAgICAgIGFycm93UGFkZGluZzogcGFyc2VJbnQodGhpcy5hcnJvd1BhZGRpbmcsIDEwKSB8fCAwLFxuICAgICAgICAgIGJvdW5kYXJ5UGFkZGluZzogcGFyc2VJbnQodGhpcy5ib3VuZGFyeVBhZGRpbmcsIDEwKSB8fCAwXG4gICAgICAgIH1cbiAgICAgIH0pOyAvLyBXZSBzZXQgdGhlIGluaXRpYWwgcmVhY3RpdmUgZGF0YSAodmFsdWVzIHRoYXQgY2FuIGJlIGNoYW5nZWQgd2hpbGUgb3BlbilcblxuICAgICAgdGhpcy5oYW5kbGVUZW1wbGF0ZVVwZGF0ZSgpOyAvLyBUZW1wbGF0ZSB0cmFuc2l0aW9uIHBoYXNlIGV2ZW50cyAoaGFuZGxlZCBvbmNlIG9ubHkpXG4gICAgICAvLyBXaGVuIHRoZSB0ZW1wbGF0ZSBoYXMgbW91bnRlZCwgYnV0IG5vdCB2aXNpYmx5IHNob3duIHlldFxuXG4gICAgICAkdGlwLiRvbmNlKCdzaG93JywgdGhpcy5vblRlbXBsYXRlU2hvdyk7IC8vIFdoZW4gdGhlIHRlbXBsYXRlIGhhcyBjb21wbGV0ZWQgc2hvd2luZ1xuXG4gICAgICAkdGlwLiRvbmNlKCdzaG93bicsIHRoaXMub25UZW1wbGF0ZVNob3duKTsgLy8gV2hlbiB0aGUgdGVtcGxhdGUgaGFzIHN0YXJ0ZWQgdG8gaGlkZVxuXG4gICAgICAkdGlwLiRvbmNlKCdoaWRlJywgdGhpcy5vblRlbXBsYXRlSGlkZSk7IC8vIFdoZW4gdGhlIHRlbXBsYXRlIGhhcyBjb21wbGV0ZWQgaGlkaW5nXG5cbiAgICAgICR0aXAuJG9uY2UoJ2hpZGRlbicsIHRoaXMub25UZW1wbGF0ZUhpZGRlbik7IC8vIFdoZW4gdGhlIHRlbXBsYXRlIGdldHMgZGVzdHJveWVkIGZvciBhbnkgcmVhc29uXG5cbiAgICAgICR0aXAuJG9uY2UoJ2hvb2s6ZGVzdHJveWVkJywgdGhpcy5kZXN0cm95VGVtcGxhdGUpOyAvLyBDb252ZW5pZW5jZSBldmVudHMgZnJvbSB0ZW1wbGF0ZVxuICAgICAgLy8gVG8gc2F2ZSB1cyBmcm9tIG1hbnVhbGx5IGFkZGluZy9yZW1vdmluZyBET01cbiAgICAgIC8vIGxpc3RlbmVycyB0byB0aXAgZWxlbWVudCB3aGVuIGl0IGlzIG9wZW5cblxuICAgICAgJHRpcC4kb24oJ2ZvY3VzaW4nLCB0aGlzLmhhbmRsZUV2ZW50KTtcbiAgICAgICR0aXAuJG9uKCdmb2N1c291dCcsIHRoaXMuaGFuZGxlRXZlbnQpO1xuICAgICAgJHRpcC4kb24oJ21vdXNlZW50ZXInLCB0aGlzLmhhbmRsZUV2ZW50KTtcbiAgICAgICR0aXAuJG9uKCdtb3VzZWxlYXZlJywgdGhpcy5oYW5kbGVFdmVudCk7IC8vIE1vdW50ICh3aGljaCB0cmlnZ2VycyB0aGUgYHNob3dgKVxuXG4gICAgICAkdGlwLiRtb3VudChjb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpKTsgLy8gVGVtcGxhdGUgd2lsbCBhdXRvbWF0aWNhbGx5IHJlbW92ZSBpdHMgbWFya3VwIGZyb20gRE9NIHdoZW4gaGlkZGVuXG4gICAgfSxcbiAgICBoaWRlVGVtcGxhdGU6IGZ1bmN0aW9uIGhpZGVUZW1wbGF0ZSgpIHtcbiAgICAgIC8vIFRyaWdnZXIgdGhlIHRlbXBsYXRlIHRvIHN0YXJ0IGhpZGluZ1xuICAgICAgLy8gVGhlIHRlbXBsYXRlIHdpbGwgZW1pdCB0aGUgYGhpZGVgIGV2ZW50IGFmdGVyIHRoaXMgYW5kXG4gICAgICAvLyB0aGVuIGVtaXQgdGhlIGBoaWRkZW5gIGV2ZW50IG9uY2UgaXQgaXMgZnVsbHkgaGlkZGVuXG4gICAgICAvLyBUaGUgYGhvb2s6ZGVzdHJveWVkYCB3aWxsIGFsc28gYmUgY2FsbGVkIChzYWZldHkgbWVhc3VyZSlcbiAgICAgIHRoaXMuJF90aXAgJiYgdGhpcy4kX3RpcC5oaWRlKCk7XG4gICAgfSxcbiAgICBkZXN0cm95VGVtcGxhdGU6IGZ1bmN0aW9uIGRlc3Ryb3lUZW1wbGF0ZSgpIHtcbiAgICAgIC8vIERlc3Ryb3kgdGhlIHRlbXBsYXRlIGluc3RhbmNlIGFuZCByZXNldCBzdGF0ZVxuICAgICAgdGhpcy5zZXRXaGlsZU9wZW5MaXN0ZW5lcnMoZmFsc2UpO1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuJF9ob3ZlclRpbWVvdXQpO1xuICAgICAgdGhpcy4kX2hvdmVyVGltb3V0ID0gbnVsbDtcbiAgICAgIHRoaXMuJF9ob3ZlclN0YXRlID0gJyc7XG4gICAgICB0aGlzLmNsZWFyQWN0aXZlVHJpZ2dlcnMoKTtcbiAgICAgIHRoaXMubG9jYWxQbGFjZW1lbnRUYXJnZXQgPSBudWxsO1xuXG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLiRfdGlwICYmIHRoaXMuJF90aXAuJGRlc3Ryb3koKTtcbiAgICAgIH0gY2F0Y2ggKF91bnVzZWQpIHt9XG5cbiAgICAgIHRoaXMuJF90aXAgPSBudWxsO1xuICAgICAgdGhpcy5sb2NhbFNob3cgPSBmYWxzZTtcbiAgICB9LFxuICAgIGdldFRlbXBsYXRlRWxlbWVudDogZnVuY3Rpb24gZ2V0VGVtcGxhdGVFbGVtZW50KCkge1xuICAgICAgcmV0dXJuIHRoaXMuJF90aXAgPyB0aGlzLiRfdGlwLiRlbCA6IG51bGw7XG4gICAgfSxcbiAgICBoYW5kbGVUZW1wbGF0ZVVwZGF0ZTogZnVuY3Rpb24gaGFuZGxlVGVtcGxhdGVVcGRhdGUoKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgLy8gVXBkYXRlIG91ciB0ZW1wbGF0ZSB0aXRsZS9jb250ZW50IFwicHJvcHNcIlxuICAgICAgLy8gU28gdGhhdCB0aGUgdGVtcGxhdGUgdXBkYXRlcyBhY2NvcmRpbmdseVxuICAgICAgdmFyICR0aXAgPSB0aGlzLiRfdGlwO1xuXG4gICAgICBpZiAoJHRpcCkge1xuICAgICAgICB2YXIgcHJvcHMgPSBbJ3RpdGxlJywgJ2NvbnRlbnQnLCAndmFyaWFudCcsICdjdXN0b21DbGFzcycsICdub0ZhZGUnXTsgLy8gT25seSB1cGRhdGUgdGhlIHZhbHVlcyBpZiB0aGV5IGhhdmUgY2hhbmdlZFxuXG4gICAgICAgIHByb3BzLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgICAgICBpZiAoJHRpcFtwcm9wXSAhPT0gX3RoaXM0W3Byb3BdKSB7XG4gICAgICAgICAgICAkdGlwW3Byb3BdID0gX3RoaXM0W3Byb3BdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICAvL1xuICAgIC8vIFNob3cgYW5kIEhpZGUgaGFuZGxlcnNcbiAgICAvL1xuICAgIHNob3c6IGZ1bmN0aW9uIHNob3coKSB7XG4gICAgICAvLyBTaG93IHRoZSB0b29sdGlwXG4gICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5nZXRUYXJnZXQoKTtcblxuICAgICAgaWYgKCF0YXJnZXQgfHwgIWNvbnRhaW5zKGRvY3VtZW50LmJvZHksIHRhcmdldCkgfHwgIWlzVmlzaWJsZSh0YXJnZXQpIHx8IHRoaXMuZHJvcGRvd25PcGVuKCkgfHwgKGlzVW5kZWZpbmVkT3JOdWxsKHRoaXMudGl0bGUpIHx8IHRoaXMudGl0bGUgPT09ICcnKSAmJiAoaXNVbmRlZmluZWRPck51bGwodGhpcy5jb250ZW50KSB8fCB0aGlzLmNvbnRlbnQgPT09ICcnKSkge1xuICAgICAgICAvLyBJZiB0cmlnZ2VyIGVsZW1lbnQgaXNuJ3QgaW4gdGhlIERPTSBvciBpcyBub3QgdmlzaWJsZSwgb3JcbiAgICAgICAgLy8gaXMgb24gYW4gb3BlbiBkcm9wZG93biB0b2dnbGUsIG9yIGhhcyBubyBjb250ZW50LCB0aGVuXG4gICAgICAgIC8vIHdlIGV4aXQgd2l0aG91dCBzaG93aW5nXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuJF90aXAgfHwgdGhpcy5sb2NhbFNob3cpIHtcbiAgICAgICAgLy8gSWYgdGlwIGFscmVhZHkgZXhpc3RzLCBleGl0IGVhcmx5XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBJbiB0aGUgcHJvY2VzcyBvZiBzaG93aW5nXG5cblxuICAgICAgdGhpcy5sb2NhbFNob3cgPSB0cnVlOyAvLyBDcmVhdGUgYSBjYW5jZWxhYmxlIEJ2RXZlbnRcblxuICAgICAgdmFyIHNob3dFdnQgPSB0aGlzLmJ1aWxkRXZlbnQoJ3Nob3cnLCB7XG4gICAgICAgIGNhbmNlbGFibGU6IHRydWVcbiAgICAgIH0pO1xuICAgICAgdGhpcy5lbWl0RXZlbnQoc2hvd0V2dCk7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogaWdub3JlIGZvciBub3cgKi9cblxuICAgICAgaWYgKHNob3dFdnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAvLyBEb24ndCBzaG93IGlmIGV2ZW50IGNhbmNlbGxlZFxuICAgICAgICAvLyBEZXN0cm95IHRoZSB0ZW1wbGF0ZSAoaWYgZm9yIHNvbWUgcmVhc29uIGl0IHdhcyBjcmVhdGVkKVxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHRoaXMuZGVzdHJveVRlbXBsYXRlKCk7IC8vIENsZWFyIHRoZSBsb2NhbFNob3cgZmxhZ1xuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cbiAgICAgICAgdGhpcy5sb2NhbFNob3cgPSBmYWxzZTtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblxuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIEZpeCB0aGUgdGl0bGUgYXR0cmlidXRlIG9uIHRhcmdldFxuXG5cbiAgICAgIHRoaXMuZml4VGl0bGUoKTsgLy8gU2V0IGFyaWEtZGVzY3JpYmVkYnkgb24gdGFyZ2V0XG5cbiAgICAgIHRoaXMuYWRkQXJpYURlc2NyaWJlZGJ5KCk7IC8vIENyZWF0ZSBhbmQgc2hvdyB0aGUgdG9vbHRpcFxuXG4gICAgICB0aGlzLmNyZWF0ZVRlbXBsYXRlQW5kU2hvdygpO1xuICAgIH0sXG4gICAgaGlkZTogZnVuY3Rpb24gaGlkZSgpIHtcbiAgICAgIHZhciBmb3JjZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZmFsc2U7XG4gICAgICAvLyBIaWRlIHRoZSB0b29sdGlwXG4gICAgICB2YXIgdGlwID0gdGhpcy5nZXRUZW1wbGF0ZUVsZW1lbnQoKTtcblxuICAgICAgaWYgKCF0aXAgfHwgIXRoaXMubG9jYWxTaG93KSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHRoaXMucmVzdG9yZVRpdGxlKCk7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBFbWl0IGNhbmNlbGFibGUgQnZFdmVudCAnaGlkZSdcbiAgICAgIC8vIFdlIGRpc2FibGUgY2FuY2VsbGluZyBpZiBgZm9yY2VgIGlzIHRydWVcblxuXG4gICAgICB2YXIgaGlkZUV2dCA9IHRoaXMuYnVpbGRFdmVudCgnaGlkZScsIHtcbiAgICAgICAgY2FuY2VsYWJsZTogIWZvcmNlXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZW1pdEV2ZW50KGhpZGVFdnQpO1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGlnbm9yZSBmb3Igbm93ICovXG5cbiAgICAgIGlmIChoaWRlRXZ0LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgLy8gRG9uJ3QgaGlkZSBpZiBldmVudCBjYW5jZWxsZWRcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIFRlbGwgdGhlIHRlbXBsYXRlIHRvIGhpZGVcblxuXG4gICAgICB0aGlzLmhpZGVUZW1wbGF0ZSgpOyAvLyBUT0RPOiBUaGUgZm9sbG93aW5nIGNvdWxkIGJlIGFkZGVkIHRvIGBoaWRlVGVtcGxhdGUoKWBcbiAgICAgIC8vIENsZWFyIG91dCBhbnkgc3RyYWdnaW5nIGFjdGl2ZSB0cmlnZ2Vyc1xuXG4gICAgICB0aGlzLmNsZWFyQWN0aXZlVHJpZ2dlcnMoKTsgLy8gUmVzZXQgdGhlIGhvdmVyIHN0YXRlXG5cbiAgICAgIHRoaXMuJF9ob3ZlclN0YXRlID0gJyc7XG4gICAgfSxcbiAgICBmb3JjZUhpZGU6IGZ1bmN0aW9uIGZvcmNlSGlkZSgpIHtcbiAgICAgIC8vIEZvcmNlZnVsbHkgaGlkZXMvZGVzdHJveXMgdGhlIHRlbXBsYXRlLCByZWdhcmRsZXNzIG9mIGFueSBhY3RpdmUgdHJpZ2dlcnNcbiAgICAgIHZhciB0aXAgPSB0aGlzLmdldFRlbXBsYXRlRWxlbWVudCgpO1xuXG4gICAgICBpZiAoIXRpcCB8fCAhdGhpcy5sb2NhbFNob3cpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBEaXNhYmxlIHdoaWxlIG9wZW4gbGlzdGVuZXJzL3dhdGNoZXJzXG4gICAgICAvLyBUaGlzIGlzIGFsc28gZG9uZSBpbiB0aGUgdGVtcGxhdGUgYGhpZGVgIGV2dCBoYW5kbGVyXG5cblxuICAgICAgdGhpcy5zZXRXaGlsZU9wZW5MaXN0ZW5lcnMoZmFsc2UpOyAvLyBDbGVhciBhbnkgaG92ZXIgZW50ZXIvbGVhdmUgZXZlbnRcblxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaG92ZXJUaW1lb3V0KTtcbiAgICAgIHRoaXMuJF9ob3ZlclRpbWVvdXQgPSBudWxsO1xuICAgICAgdGhpcy4kX2hvdmVyU3RhdGUgPSAnJztcbiAgICAgIHRoaXMuY2xlYXJBY3RpdmVUcmlnZ2VycygpOyAvLyBEaXNhYmxlIHRoZSBmYWRlIGFuaW1hdGlvbiBvbiB0aGUgdGVtcGxhdGVcblxuICAgICAgaWYgKHRoaXMuJF90aXApIHtcbiAgICAgICAgdGhpcy4kX3RpcC5ub0ZhZGUgPSB0cnVlO1xuICAgICAgfSAvLyBIaWRlIHRoZSB0aXAgKHdpdGggZm9yY2UgPSB0cnVlKVxuXG5cbiAgICAgIHRoaXMuaGlkZSh0cnVlKTtcbiAgICB9LFxuICAgIGVuYWJsZTogZnVuY3Rpb24gZW5hYmxlKCkge1xuICAgICAgdGhpcy4kX2VuYWJsZWQgPSB0cnVlOyAvLyBDcmVhdGUgYSBub24tY2FuY2VsYWJsZSBCdkV2ZW50XG5cbiAgICAgIHRoaXMuZW1pdEV2ZW50KHRoaXMuYnVpbGRFdmVudCgnZW5hYmxlZCcsIHt9KSk7XG4gICAgfSxcbiAgICBkaXNhYmxlOiBmdW5jdGlvbiBkaXNhYmxlKCkge1xuICAgICAgdGhpcy4kX2VuYWJsZWQgPSBmYWxzZTsgLy8gQ3JlYXRlIGEgbm9uLWNhbmNlbGFibGUgQnZFdmVudFxuXG4gICAgICB0aGlzLmVtaXRFdmVudCh0aGlzLmJ1aWxkRXZlbnQoJ2Rpc2FibGVkJywge30pKTtcbiAgICB9LFxuICAgIC8vXG4gICAgLy8gSGFuZGxlcnMgZm9yIHRlbXBsYXRlIGV2ZW50c1xuICAgIC8vXG4gICAgb25UZW1wbGF0ZVNob3c6IGZ1bmN0aW9uIG9uVGVtcGxhdGVTaG93KCkge1xuICAgICAgLy8gV2hlbiB0ZW1wbGF0ZSBpcyBpbnNlcnRlZCBpbnRvIERPTSwgYnV0IG5vdCB5ZXQgc2hvd25cbiAgICAgIC8vIEVuYWJsZSB3aGlsZSBvcGVuIGxpc3RlbmVycy93YXRjaGVyc1xuICAgICAgdGhpcy5zZXRXaGlsZU9wZW5MaXN0ZW5lcnModHJ1ZSk7XG4gICAgfSxcbiAgICBvblRlbXBsYXRlU2hvd246IGZ1bmN0aW9uIG9uVGVtcGxhdGVTaG93bigpIHtcbiAgICAgIC8vIFdoZW4gdGVtcGxhdGUgc2hvdyB0cmFuc2l0aW9uIGNvbXBsZXRlc1xuICAgICAgdmFyIHByZXZIb3ZlclN0YXRlID0gdGhpcy4kX2hvdmVyU3RhdGU7XG4gICAgICB0aGlzLiRfaG92ZXJTdGF0ZSA9ICcnO1xuXG4gICAgICBpZiAocHJldkhvdmVyU3RhdGUgPT09ICdvdXQnKSB7XG4gICAgICAgIHRoaXMubGVhdmUobnVsbCk7XG4gICAgICB9IC8vIEVtaXQgYSBub24tY2FuY2VsYWJsZSBCdkV2ZW50ICdzaG93bidcblxuXG4gICAgICB0aGlzLmVtaXRFdmVudCh0aGlzLmJ1aWxkRXZlbnQoJ3Nob3duJywge30pKTtcbiAgICB9LFxuICAgIG9uVGVtcGxhdGVIaWRlOiBmdW5jdGlvbiBvblRlbXBsYXRlSGlkZSgpIHtcbiAgICAgIC8vIFdoZW4gdGVtcGxhdGUgaXMgc3RhcnRpbmcgdG8gaGlkZVxuICAgICAgLy8gRGlzYWJsZSB3aGlsZSBvcGVuIGxpc3RlbmVycy93YXRjaGVyc1xuICAgICAgdGhpcy5zZXRXaGlsZU9wZW5MaXN0ZW5lcnMoZmFsc2UpO1xuICAgIH0sXG4gICAgb25UZW1wbGF0ZUhpZGRlbjogZnVuY3Rpb24gb25UZW1wbGF0ZUhpZGRlbigpIHtcbiAgICAgIC8vIFdoZW4gdGVtcGxhdGUgaGFzIGNvbXBsZXRlZCBjbG9zaW5nIChqdXN0IGJlZm9yZSBpdCBzZWxmIGRlc3RydWN0cylcbiAgICAgIC8vIFRPRE86XG4gICAgICAvLyAgIFRoZSBuZXh0IHR3byBsaW5lcyBjb3VsZCBiZSBtb3ZlZCBpbnRvIGBkZXN0cm95VGVtcGxhdGUoKWBcbiAgICAgIHRoaXMucmVtb3ZlQXJpYURlc2NyaWJlZGJ5KCk7XG4gICAgICB0aGlzLnJlc3RvcmVUaXRsZSgpO1xuICAgICAgdGhpcy5kZXN0cm95VGVtcGxhdGUoKTsgLy8gRW1pdCBhIG5vbi1jYW5jZWxhYmxlIEJ2RXZlbnQgJ3Nob3duJ1xuXG4gICAgICB0aGlzLmVtaXRFdmVudCh0aGlzLmJ1aWxkRXZlbnQoJ2hpZGRlbicsIHt9KSk7XG4gICAgfSxcbiAgICAvL1xuICAgIC8vIFV0aWxpdHkgbWV0aG9kc1xuICAgIC8vXG4gICAgZ2V0VGFyZ2V0OiBmdW5jdGlvbiBnZXRUYXJnZXQoKSB7XG4gICAgICAvLyBIYW5kbGUgY2FzZSB3aGVyZSB0YXJnZXQgbWF5IGJlIGEgY29tcG9uZW50IHJlZlxuICAgICAgdmFyIHRhcmdldCA9IHRoaXMudGFyZ2V0ID8gdGhpcy50YXJnZXQuJGVsIHx8IHRoaXMudGFyZ2V0IDogbnVsbDsgLy8gSWYgYW4gSURcblxuICAgICAgdGFyZ2V0ID0gaXNTdHJpbmcodGFyZ2V0KSA/IGdldEJ5SWQodGFyZ2V0LnJlcGxhY2UoL14jLywgJycpKSA6IHRhcmdldDsgLy8gSWYgYSBmdW5jdGlvblxuXG4gICAgICB0YXJnZXQgPSBpc0Z1bmN0aW9uKHRhcmdldCkgPyB0YXJnZXQoKSA6IHRhcmdldDsgLy8gSWYgYW4gZWxlbWVudCByZWZcblxuICAgICAgcmV0dXJuIGlzRWxlbWVudCh0YXJnZXQpID8gdGFyZ2V0IDogbnVsbDtcbiAgICB9LFxuICAgIGdldFBsYWNlbWVudFRhcmdldDogZnVuY3Rpb24gZ2V0UGxhY2VtZW50VGFyZ2V0KCkge1xuICAgICAgLy8gVGhpcyBpcyB0aGUgdGFyZ2V0IHRoYXQgdGhlIHRvb2x0aXAgd2lsbCBiZSBwbGFjZWQgb24sIHdoaWNoIG1heSBub3RcbiAgICAgIC8vIG5lY2Vzc2FyaWx5IGJlIHRoZSBzYW1lIGVsZW1lbnQgdGhhdCBoYXMgdGhlIHRyaWdnZXIgZXZlbnQgbGlzdGVuZXJzXG4gICAgICAvLyBGb3Igbm93LCB0aGlzIGlzIHRoZSBzYW1lIGFzIHRhcmdldFxuICAgICAgLy8gVE9ETzpcbiAgICAgIC8vICAgQWRkIGluIGNoaWxkIHNlbGVjdG9yIHN1cHBvcnRcbiAgICAgIC8vICAgQWRkIGluIHZpc2liaWxpdHkgY2hlY2tzIGZvciB0aGlzIGVsZW1lbnRcbiAgICAgIC8vICAgRmFsbGJhY2sgdG8gdGFyZ2V0IGlmIG5vdCBmb3VuZFxuICAgICAgcmV0dXJuIHRoaXMuZ2V0VGFyZ2V0KCk7XG4gICAgfSxcbiAgICBnZXRUYXJnZXRJZDogZnVuY3Rpb24gZ2V0VGFyZ2V0SWQoKSB7XG4gICAgICAvLyBSZXR1cm5zIHRoZSBJRCBvZiB0aGUgdHJpZ2dlciBlbGVtZW50XG4gICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5nZXRUYXJnZXQoKTtcbiAgICAgIHJldHVybiB0YXJnZXQgJiYgdGFyZ2V0LmlkID8gdGFyZ2V0LmlkIDogbnVsbDtcbiAgICB9LFxuICAgIGdldENvbnRhaW5lcjogZnVuY3Rpb24gZ2V0Q29udGFpbmVyKCkge1xuICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlcmUgY29udGFpbmVyIG1heSBiZSBhIGNvbXBvbmVudCByZWZcbiAgICAgIHZhciBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lciA/IHRoaXMuY29udGFpbmVyLiRlbCB8fCB0aGlzLmNvbnRhaW5lciA6IGZhbHNlO1xuICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuICAgICAgdmFyIHRhcmdldCA9IHRoaXMuZ2V0VGFyZ2V0KCk7IC8vIElmIHdlIGFyZSBpbiBhIG1vZGFsLCB3ZSBhcHBlbmQgdG8gdGhlIG1vZGFsIGluc3RlYWRcbiAgICAgIC8vIG9mIGJvZHksIHVubGVzcyBhIGNvbnRhaW5lciBpcyBzcGVjaWZpZWRcbiAgICAgIC8vIFRPRE86XG4gICAgICAvLyAgIFRlbXBsYXRlIHNob3VsZCBwZXJpb2RpY2FsbHkgY2hlY2sgdG8gc2VlIGlmIGl0IGlzIGluIGRvbVxuICAgICAgLy8gICBBbmQgaWYgbm90LCBzZWxmIGRlc3RydWN0IChpZiBjb250YWluZXIgZ290IHYtaWYnZWQgb3V0IG9mIERPTSlcbiAgICAgIC8vICAgT3IgdGhpcyBjb3VsZCBwb3NzaWJseSBiZSBwYXJ0IG9mIHRoZSB2aXNpYmlsaXR5IGNoZWNrXG5cbiAgICAgIHJldHVybiBjb250YWluZXIgPT09IGZhbHNlID8gY2xvc2VzdChNT0RBTF9TRUxFQ1RPUiwgdGFyZ2V0KSB8fCBib2R5IDogaXNTdHJpbmcoY29udGFpbmVyKSA/IGdldEJ5SWQoY29udGFpbmVyLnJlcGxhY2UoL14jLywgJycpKSB8fCBib2R5IDogYm9keTtcbiAgICB9LFxuICAgIGdldEJvdW5kYXJ5OiBmdW5jdGlvbiBnZXRCb3VuZGFyeSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmJvdW5kYXJ5ID8gdGhpcy5ib3VuZGFyeS4kZWwgfHwgdGhpcy5ib3VuZGFyeSA6ICdzY3JvbGxQYXJlbnQnO1xuICAgIH0sXG4gICAgaXNJbk1vZGFsOiBmdW5jdGlvbiBpc0luTW9kYWwoKSB7XG4gICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5nZXRUYXJnZXQoKTtcbiAgICAgIHJldHVybiB0YXJnZXQgJiYgY2xvc2VzdChNT0RBTF9TRUxFQ1RPUiwgdGFyZ2V0KTtcbiAgICB9LFxuICAgIGlzRHJvcGRvd246IGZ1bmN0aW9uIGlzRHJvcGRvd24oKSB7XG4gICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdHJpZ2dlciBpcyBhIGRyb3Bkb3duXG4gICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5nZXRUYXJnZXQoKTtcbiAgICAgIHJldHVybiB0YXJnZXQgJiYgaGFzQ2xhc3ModGFyZ2V0LCBEUk9QRE9XTl9DTEFTUyk7XG4gICAgfSxcbiAgICBkcm9wZG93bk9wZW46IGZ1bmN0aW9uIGRyb3Bkb3duT3BlbigpIHtcbiAgICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0cmlnZ2VyIGlzIGEgZHJvcGRvd24gYW5kIHRoZSBkcm9wZG93biBtZW51IGlzIG9wZW5cbiAgICAgIHZhciB0YXJnZXQgPSB0aGlzLmdldFRhcmdldCgpO1xuICAgICAgcmV0dXJuIHRoaXMuaXNEcm9wZG93bigpICYmIHRhcmdldCAmJiBzZWxlY3QoRFJPUERPV05fT1BFTl9TRUxFQ1RPUiwgdGFyZ2V0KTtcbiAgICB9LFxuICAgIGNsZWFyQWN0aXZlVHJpZ2dlcnM6IGZ1bmN0aW9uIGNsZWFyQWN0aXZlVHJpZ2dlcnMoKSB7XG4gICAgICBmb3IgKHZhciB0cmlnZ2VyIGluIHRoaXMuYWN0aXZlVHJpZ2dlcikge1xuICAgICAgICB0aGlzLmFjdGl2ZVRyaWdnZXJbdHJpZ2dlcl0gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFkZEFyaWFEZXNjcmliZWRieTogZnVuY3Rpb24gYWRkQXJpYURlc2NyaWJlZGJ5KCkge1xuICAgICAgLy8gQWRkIGFyaWEtZGVzY3JpYmVkYnkgb24gdHJpZ2dlciBlbGVtZW50LCB3aXRob3V0IHJlbW92aW5nIGFueSBvdGhlciBJRHNcbiAgICAgIHZhciB0YXJnZXQgPSB0aGlzLmdldFRhcmdldCgpO1xuICAgICAgdmFyIGRlc2MgPSBnZXRBdHRyKHRhcmdldCwgJ2FyaWEtZGVzY3JpYmVkYnknKSB8fCAnJztcbiAgICAgIGRlc2MgPSBkZXNjLnNwbGl0KC9cXHMrLykuY29uY2F0KHRoaXMuY29tcHV0ZWRJZCkuam9pbignICcpLnRyaW0oKTsgLy8gVXBkYXRlL2FkZCBhcmlhLWRlc2NyaWJlZCBieVxuXG4gICAgICBzZXRBdHRyKHRhcmdldCwgJ2FyaWEtZGVzY3JpYmVkYnknLCBkZXNjKTtcbiAgICB9LFxuICAgIHJlbW92ZUFyaWFEZXNjcmliZWRieTogZnVuY3Rpb24gcmVtb3ZlQXJpYURlc2NyaWJlZGJ5KCkge1xuICAgICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICAgIC8vIFJlbW92ZSBhcmlhLWRlc2NyaWJlZGJ5IG9uIHRyaWdnZXIgZWxlbWVudCwgd2l0aG91dCByZW1vdmluZyBhbnkgb3RoZXIgSURzXG4gICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5nZXRUYXJnZXQoKTtcbiAgICAgIHZhciBkZXNjID0gZ2V0QXR0cih0YXJnZXQsICdhcmlhLWRlc2NyaWJlZGJ5JykgfHwgJyc7XG4gICAgICBkZXNjID0gZGVzYy5zcGxpdCgvXFxzKy8pLmZpbHRlcihmdW5jdGlvbiAoZCkge1xuICAgICAgICByZXR1cm4gZCAhPT0gX3RoaXM1LmNvbXB1dGVkSWQ7XG4gICAgICB9KS5qb2luKCcgJykudHJpbSgpOyAvLyBVcGRhdGUgb3IgcmVtb3ZlIGFyaWEtZGVzY3JpYmVkYnlcblxuICAgICAgaWYgKGRlc2MpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgc2V0QXR0cih0YXJnZXQsICdhcmlhLWRlc2NyaWJlZGJ5JywgZGVzYyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZW1vdmVBdHRyKHRhcmdldCwgJ2FyaWEtZGVzY3JpYmVkYnknKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGZpeFRpdGxlOiBmdW5jdGlvbiBmaXhUaXRsZSgpIHtcbiAgICAgIC8vIElmIHRoZSB0YXJnZXQgaGFzIGEgdGl0bGUgYXR0cmlidXRlLCBudWxsIGl0IG91dCBhbmRcbiAgICAgIC8vIHN0b3JlIG9uIGRhdGEtdGl0bGVcbiAgICAgIHZhciB0YXJnZXQgPSB0aGlzLmdldFRhcmdldCgpO1xuXG4gICAgICBpZiAodGFyZ2V0ICYmIGdldEF0dHIodGFyZ2V0LCAndGl0bGUnKSkge1xuICAgICAgICAvLyBXZSBvbmx5IHVwZGF0ZSB0aXRsZSBhdHRyaWJ1dGUgaWYgaXQgaGFzIGEgdmFsdWVcbiAgICAgICAgc2V0QXR0cih0YXJnZXQsICdkYXRhLW9yaWdpbmFsLXRpdGxlJywgZ2V0QXR0cih0YXJnZXQsICd0aXRsZScpIHx8ICcnKTtcbiAgICAgICAgc2V0QXR0cih0YXJnZXQsICd0aXRsZScsICcnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlc3RvcmVUaXRsZTogZnVuY3Rpb24gcmVzdG9yZVRpdGxlKCkge1xuICAgICAgLy8gSWYgdGFyZ2V0IGhhZCBhIHRpdGxlLCByZXN0b3JlIHRoZSB0aXRsZSBhdHRyaWJ1dGVcbiAgICAgIC8vIGFuZCByZW1vdmUgdGhlIGRhdGEtdGl0bGUgYXR0cmlidXRlXG4gICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5nZXRUYXJnZXQoKTtcblxuICAgICAgaWYgKHRhcmdldCAmJiBoYXNBdHRyKHRhcmdldCwgJ2RhdGEtb3JpZ2luYWwtdGl0bGUnKSkge1xuICAgICAgICBzZXRBdHRyKHRhcmdldCwgJ3RpdGxlJywgZ2V0QXR0cih0YXJnZXQsICdkYXRhLW9yaWdpbmFsLXRpdGxlJykgfHwgJycpO1xuICAgICAgICByZW1vdmVBdHRyKHRhcmdldCwgJ2RhdGEtb3JpZ2luYWwtdGl0bGUnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vXG4gICAgLy8gQnZFdmVudCBoZWxwZXJzXG4gICAgLy9cbiAgICBidWlsZEV2ZW50OiBmdW5jdGlvbiBidWlsZEV2ZW50KHR5cGUpIHtcbiAgICAgIHZhciBvcHRzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgICAgIC8vIERlZmF1bHRzIHRvIGEgbm9uLWNhbmNlbGxhYmxlIGV2ZW50XG4gICAgICByZXR1cm4gbmV3IEJ2RXZlbnQodHlwZSwgX29iamVjdFNwcmVhZCh7XG4gICAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgICB0YXJnZXQ6IHRoaXMuZ2V0VGFyZ2V0KCksXG4gICAgICAgIHJlbGF0ZWRUYXJnZXQ6IHRoaXMuZ2V0VGVtcGxhdGVFbGVtZW50KCkgfHwgbnVsbCxcbiAgICAgICAgY29tcG9uZW50SWQ6IHRoaXMuY29tcHV0ZWRJZCxcbiAgICAgICAgdnVlVGFyZ2V0OiB0aGlzXG4gICAgICB9LCBvcHRzKSk7XG4gICAgfSxcbiAgICBlbWl0RXZlbnQ6IGZ1bmN0aW9uIGVtaXRFdmVudChidkV2dCkge1xuICAgICAgLy8gRW1pdHMgYSBCdkV2ZW50IG9uICRyb290IGFuZCB0aGlzIGluc3RhbmNlXG4gICAgICB2YXIgZXZ0TmFtZSA9IGJ2RXZ0LnR5cGU7XG4gICAgICB2YXIgJHJvb3QgPSB0aGlzLiRyb290O1xuXG4gICAgICBpZiAoJHJvb3QgJiYgJHJvb3QuJGVtaXQpIHtcbiAgICAgICAgLy8gRW1pdCBhbiBldmVudCBvbiAkcm9vdFxuICAgICAgICAkcm9vdC4kZW1pdChcImJ2OjpcIi5jb25jYXQodGhpcy50ZW1wbGF0ZVR5cGUsIFwiOjpcIikuY29uY2F0KGV2dE5hbWUpLCBidkV2dCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuJGVtaXQoZXZ0TmFtZSwgYnZFdnQpO1xuICAgIH0sXG4gICAgLy9cbiAgICAvLyBFdmVudCBoYW5kbGVyIHNldHVwIG1ldGhvZHNcbiAgICAvL1xuICAgIGxpc3RlbjogZnVuY3Rpb24gbGlzdGVuKCkge1xuICAgICAgdmFyIF90aGlzNiA9IHRoaXM7XG5cbiAgICAgIC8vIEVuYWJsZSB0cmlnZ2VyIGV2ZW50IGhhbmRsZXJzXG4gICAgICB2YXIgZWwgPSB0aGlzLmdldFRhcmdldCgpO1xuXG4gICAgICBpZiAoIWVsKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gTGlzdGVuIGZvciBnbG9iYWwgc2hvdy9oaWRlIGV2ZW50c1xuXG5cbiAgICAgIHRoaXMuc2V0Um9vdExpc3RlbmVyKHRydWUpOyAvLyBTZXQgdXAgb3VyIGxpc3RlbmVycyBvbiB0aGUgdGFyZ2V0IHRyaWdnZXIgZWxlbWVudFxuXG4gICAgICB0aGlzLmNvbXB1dGVkVHJpZ2dlcnMuZm9yRWFjaChmdW5jdGlvbiAodHJpZ2dlcikge1xuICAgICAgICBpZiAodHJpZ2dlciA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgIGV2ZW50T24oZWwsICdjbGljaycsIF90aGlzNi5oYW5kbGVFdmVudCwgRXZ0T3B0cyk7XG4gICAgICAgIH0gZWxzZSBpZiAodHJpZ2dlciA9PT0gJ2ZvY3VzJykge1xuICAgICAgICAgIGV2ZW50T24oZWwsICdmb2N1c2luJywgX3RoaXM2LmhhbmRsZUV2ZW50LCBFdnRPcHRzKTtcbiAgICAgICAgICBldmVudE9uKGVsLCAnZm9jdXNvdXQnLCBfdGhpczYuaGFuZGxlRXZlbnQsIEV2dE9wdHMpO1xuICAgICAgICB9IGVsc2UgaWYgKHRyaWdnZXIgPT09ICdibHVyJykge1xuICAgICAgICAgIC8vIFVzZWQgdG8gY2xvc2UgJHRpcCB3aGVuIGVsZW1lbnQgbG9vc2VzIGZvY3VzXG5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgIGV2ZW50T24oZWwsICdmb2N1c291dCcsIF90aGlzNi5oYW5kbGVFdmVudCwgRXZ0T3B0cyk7XG4gICAgICAgIH0gZWxzZSBpZiAodHJpZ2dlciA9PT0gJ2hvdmVyJykge1xuICAgICAgICAgIGV2ZW50T24oZWwsICdtb3VzZWVudGVyJywgX3RoaXM2LmhhbmRsZUV2ZW50LCBFdnRPcHRzKTtcbiAgICAgICAgICBldmVudE9uKGVsLCAnbW91c2VsZWF2ZScsIF90aGlzNi5oYW5kbGVFdmVudCwgRXZ0T3B0cyk7XG4gICAgICAgIH1cbiAgICAgIH0sIHRoaXMpO1xuICAgIH0sXG4gICAgdW5MaXN0ZW46IGZ1bmN0aW9uIHVuTGlzdGVuKClcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHtcbiAgICAgIHZhciBfdGhpczcgPSB0aGlzO1xuXG4gICAgICAvLyBSZW1vdmUgdHJpZ2dlciBldmVudCBoYW5kbGVyc1xuICAgICAgdmFyIGV2ZW50cyA9IFsnY2xpY2snLCAnZm9jdXNpbicsICdmb2N1c291dCcsICdtb3VzZWVudGVyJywgJ21vdXNlbGVhdmUnXTtcbiAgICAgIHZhciB0YXJnZXQgPSB0aGlzLmdldFRhcmdldCgpOyAvLyBTdG9wIGxpc3RlbmluZyBmb3IgZ2xvYmFsIHNob3cvaGlkZS9lbmFibGUvZGlzYWJsZSBldmVudHNcblxuICAgICAgdGhpcy5zZXRSb290TGlzdGVuZXIoZmFsc2UpOyAvLyBDbGVhciBvdXQgYW55IGFjdGl2ZSB0YXJnZXQgbGlzdGVuZXJzXG5cbiAgICAgIGV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgdGFyZ2V0ICYmIGV2ZW50T2ZmKHRhcmdldCwgZXZ0LCBfdGhpczcuaGFuZGxlRXZlbnQsIEV2dE9wdHMpO1xuICAgICAgfSwgdGhpcyk7XG4gICAgfSxcbiAgICBzZXRSb290TGlzdGVuZXI6IGZ1bmN0aW9uIHNldFJvb3RMaXN0ZW5lcihvbikge1xuICAgICAgLy8gTGlzdGVuIGZvciBnbG9iYWwgYGJ2Ojp7aGlkZXxzaG93fTo6e3Rvb2x0aXB8cG9wb3Zlcn1gIGhpZGUgcmVxdWVzdCBldmVudFxuICAgICAgdmFyICRyb290ID0gdGhpcy4kcm9vdDtcblxuICAgICAgaWYgKCRyb290KSB7XG4gICAgICAgIHZhciBtZXRob2QgPSBvbiA/ICckb24nIDogJyRvZmYnO1xuICAgICAgICB2YXIgdHlwZSA9IHRoaXMudGVtcGxhdGVUeXBlO1xuICAgICAgICAkcm9vdFttZXRob2RdKFwiYnY6OmhpZGU6OlwiLmNvbmNhdCh0eXBlKSwgdGhpcy5kb0hpZGUpO1xuICAgICAgICAkcm9vdFttZXRob2RdKFwiYnY6OnNob3c6OlwiLmNvbmNhdCh0eXBlKSwgdGhpcy5kb1Nob3cpO1xuICAgICAgICAkcm9vdFttZXRob2RdKFwiYnY6OmRpc2FibGU6OlwiLmNvbmNhdCh0eXBlKSwgdGhpcy5kb0Rpc2FibGUpO1xuICAgICAgICAkcm9vdFttZXRob2RdKFwiYnY6OmVuYWJsZTo6XCIuY29uY2F0KHR5cGUpLCB0aGlzLmRvRW5hYmxlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNldFdoaWxlT3Blbkxpc3RlbmVyczogZnVuY3Rpb24gc2V0V2hpbGVPcGVuTGlzdGVuZXJzKG9uKSB7XG4gICAgICAvLyBFdmVudHMgdGhhdCBhcmUgb25seSByZWdpc3RlcmVkIHdoZW4gdGhlIHRlbXBsYXRlIGlzIHNob3dpbmdcbiAgICAgIC8vIE1vZGFsIGNsb3NlIGV2ZW50c1xuICAgICAgdGhpcy5zZXRNb2RhbExpc3RlbmVyKG9uKTsgLy8gRHJvcGRvd24gb3BlbiBldmVudHMgKGlmIHdlIGFyZSBhdHRhY2hlZCB0byBhIGRyb3Bkb3duKVxuXG4gICAgICB0aGlzLnNldERyb3Bkb3duTGlzdGVuZXIob24pOyAvLyBQZXJpb2RpYyAkZWxlbWVudCB2aXNpYmlsaXR5IGNoZWNrXG4gICAgICAvLyBGb3IgaGFuZGxpbmcgd2hlbiB0aXAgdGFyZ2V0IGlzIGluIDxrZWVwYWxpdmU+LCB0YWJzLCBjYXJvdXNlbCwgZXRjXG5cbiAgICAgIHRoaXMudmlzaWJsZUNoZWNrKG9uKTsgLy8gT24tdG91Y2ggc3RhcnQgbGlzdGVuZXJzXG5cbiAgICAgIHRoaXMuc2V0T25Ub3VjaFN0YXJ0TGlzdGVuZXIob24pO1xuICAgIH0sXG4gICAgdmlzaWJsZUNoZWNrOiBmdW5jdGlvbiB2aXNpYmxlQ2hlY2sob24pIHtcbiAgICAgIHZhciBfdGhpczggPSB0aGlzO1xuXG4gICAgICAvLyBIYW5kbGVyIGZvciBwZXJpb2RpYyB2aXNpYmlsaXR5IGNoZWNrXG4gICAgICBjbGVhckludGVydmFsKHRoaXMuJF92aXNpYmxlSW50ZXJ2YWwpO1xuICAgICAgdGhpcy4kX3Zpc2libGVJbnRlcnZhbCA9IG51bGw7XG4gICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5nZXRUYXJnZXQoKTtcbiAgICAgIHZhciB0aXAgPSB0aGlzLmdldFRlbXBsYXRlRWxlbWVudCgpO1xuXG4gICAgICBpZiAob24pIHtcbiAgICAgICAgdGhpcy52aXNpYmxlSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKHRpcCAmJiBfdGhpczgubG9jYWxTaG93ICYmICghdGFyZ2V0LnBhcmVudE5vZGUgfHwgIWlzVmlzaWJsZSh0YXJnZXQpKSkge1xuICAgICAgICAgICAgLy8gVGFyZ2V0IGVsZW1lbnQgaXMgbm8gbG9uZ2VyIHZpc2libGUgb3Igbm90IGluIERPTSwgc28gZm9yY2UtaGlkZSB0aGUgdG9vbHRpcFxuICAgICAgICAgICAgX3RoaXM4LmZvcmNlSGlkZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNldE1vZGFsTGlzdGVuZXI6IGZ1bmN0aW9uIHNldE1vZGFsTGlzdGVuZXIob24pIHtcbiAgICAgIC8vIEhhbmRsZSBjYXNlIHdoZXJlIHRvb2x0aXAvdGFyZ2V0IGlzIGluIGEgbW9kYWxcbiAgICAgIGlmICh0aGlzLmlzSW5Nb2RhbCgpKSB7XG4gICAgICAgIC8vIFdlIGNhbiBsaXN0ZW4gZm9yIG1vZGFsIGhpZGRlbiBldmVudHMgb24gYCRyb290YFxuICAgICAgICB0aGlzLiRyb290W29uID8gJyRvbicgOiAnJG9mZiddKE1PREFMX0NMT1NFX0VWRU5ULCB0aGlzLmZvcmNlSGlkZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzZXRPblRvdWNoU3RhcnRMaXN0ZW5lcjogZnVuY3Rpb24gc2V0T25Ub3VjaFN0YXJ0TGlzdGVuZXIob24pXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IEpTRE9NIGRvZXNuJ3Qgc3VwcG9ydCBgb250b3VjaHN0YXJ0YCAqL1xuICAgIHtcbiAgICAgIHZhciBfdGhpczkgPSB0aGlzO1xuXG4gICAgICAvLyBJZiB0aGlzIGlzIGEgdG91Y2gtZW5hYmxlZCBkZXZpY2Ugd2UgYWRkIGV4dHJhIGVtcHR5XG4gICAgICAvLyBgbW91c2VvdmVyYCBsaXN0ZW5lcnMgdG8gdGhlIGJvZHkncyBpbW1lZGlhdGUgY2hpbGRyZW5cbiAgICAgIC8vIE9ubHkgbmVlZGVkIGJlY2F1c2Ugb2YgYnJva2VuIGV2ZW50IGRlbGVnYXRpb24gb24gaU9TXG4gICAgICAvLyBodHRwczovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMTQvMDIvbW91c2VfZXZlbnRfYnViLmh0bWxcbiAgICAgIGlmICgnb250b3VjaHN0YXJ0JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgICAgdmFyIG1ldGhvZCA9IG9uID8gZXZlbnRPbiA6IGV2ZW50T2ZmO1xuICAgICAgICBhcnJheUZyb20oZG9jdW1lbnQuYm9keS5jaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICBtZXRob2QoZWwsICdtb3VzZW92ZXInLCBfdGhpczkuJF9ub29wKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzZXREcm9wZG93bkxpc3RlbmVyOiBmdW5jdGlvbiBzZXREcm9wZG93bkxpc3RlbmVyKG9uKSB7XG4gICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5nZXRUYXJnZXQoKTtcblxuICAgICAgaWYgKCF0YXJnZXQgfHwgIXRoaXMuJHJvb3QgfHwgIXRoaXMuaXNEcm9wZG93bikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIFdlIGNhbiBsaXN0ZW4gZm9yIGRyb3Bkb3duIHNob3duIGV2ZW50cyBvbiBpdCdzIGluc3RhbmNlXG4gICAgICAvLyBUT0RPOlxuICAgICAgLy8gICBXZSBjb3VsZCBncmFiIHRoZSBJRCBmcm9tIHRoZSBkcm9wZG93biwgYW5kIGxpc3RlbiBmb3JcbiAgICAgIC8vICAgJHJvb3QgZXZlbnRzIGZvciB0aGF0IHBhcnRpY3VsYXIgZHJvcGRvd24gaWRcbiAgICAgIC8vICAgRHJvcGRvd24gc2hvd24gYW5kIGhpZGRlbiBldmVudHMgd2lsbCBuZWVkIHRvIGVtaXRcbiAgICAgIC8vICAgTm90ZTogRHJvcGRvd24gYXV0by1JRCBoYXBwZW5zIGluIGEgYCRuZXh0VGljaygpYCBhZnRlciBtb3VudFxuICAgICAgLy8gICAgICAgICBTbyB0aGUgSUQgbG9va3VwIHdvdWxkIG5lZWQgdG8gYmUgZG9uZSBpbiBhIGAkbmV4dFRpY2soKWBcblxuXG4gICAgICBpZiAodGFyZ2V0Ll9fdnVlX18pIHtcbiAgICAgICAgdGFyZ2V0Ll9fdnVlX19bb24gPyAnJG9uJyA6ICckb2ZmJ10oJ3Nob3duJywgdGhpcy5mb3JjZUhpZGUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy9cbiAgICAvLyBFdmVudCBoYW5kbGVyc1xuICAgIC8vXG4gICAgaGFuZGxlRXZlbnQ6IGZ1bmN0aW9uIGhhbmRsZUV2ZW50KGV2dCkge1xuICAgICAgLy8gR2VuZXJhbCB0cmlnZ2VyIGV2ZW50IGhhbmRsZXJcbiAgICAgIC8vIHRhcmdldCBpcyB0aGUgdHJpZ2dlciBlbGVtZW50XG4gICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5nZXRUYXJnZXQoKTtcblxuICAgICAgaWYgKCF0YXJnZXQgfHwgaXNEaXNhYmxlZCh0YXJnZXQpIHx8ICF0aGlzLiRfZW5hYmxlZCB8fCB0aGlzLmRyb3Bkb3duT3BlbigpKSB7XG4gICAgICAgIC8vIElmIGRpc2FibGVkIG9yIG5vdCBlbmFibGVkLCBvciBpZiBhIGRyb3Bkb3duIHRoYXQgaXMgb3BlbiwgZG9uJ3QgZG8gYW55dGhpbmdcbiAgICAgICAgLy8gSWYgdGlwIGlzIHNob3duIGJlZm9yZSBlbGVtZW50IGdldHMgZGlzYWJsZWQsIHRoZW4gdGlwIHdpbGwgbm90XG4gICAgICAgIC8vIGNsb3NlIHVudGlsIG5vIGxvbmdlciBkaXNhYmxlZCBvciBmb3JjZWZ1bGx5IGNsb3NlZFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciB0eXBlID0gZXZ0LnR5cGU7XG4gICAgICB2YXIgdHJpZ2dlcnMgPSB0aGlzLmNvbXB1dGVkVHJpZ2dlcnM7XG5cbiAgICAgIGlmICh0eXBlID09PSAnY2xpY2snICYmIGFycmF5SW5jbHVkZXModHJpZ2dlcnMsICdjbGljaycpKSB7XG4gICAgICAgIHRoaXMuY2xpY2soZXZ0KTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ21vdXNlZW50ZXInICYmIGFycmF5SW5jbHVkZXModHJpZ2dlcnMsICdob3ZlcicpKSB7XG4gICAgICAgIC8vIGBtb3VzZWVudGVyYCBpcyBhIG5vbi1idWJibGluZyBldmVudFxuICAgICAgICB0aGlzLmVudGVyKGV2dCk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdmb2N1c2luJyAmJiBhcnJheUluY2x1ZGVzKHRyaWdnZXJzLCAnZm9jdXMnKSkge1xuICAgICAgICAvLyBgZm9jdXNpbmAgaXMgYSBidWJibGluZyBldmVudFxuICAgICAgICAvLyBgZXZ0YCBpbmNsdWRlcyBgcmVsYXRlZFRhcmdldGAgKGVsZW1lbnQgbG9vc2luZyBmb2N1cylcbiAgICAgICAgdGhpcy5lbnRlcihldnQpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnZm9jdXNvdXQnICYmIChhcnJheUluY2x1ZGVzKHRyaWdnZXJzLCAnZm9jdXMnKSB8fCBhcnJheUluY2x1ZGVzKHRyaWdnZXJzLCAnYmx1cicpKSB8fCB0eXBlID09PSAnbW91c2VsZWF2ZScgJiYgYXJyYXlJbmNsdWRlcyh0cmlnZ2VycywgJ2hvdmVyJykpIHtcbiAgICAgICAgLy8gYGZvY3Vzb3V0YCBpcyBhIGJ1YmJsaW5nIGV2ZW50XG4gICAgICAgIC8vIGBtb3VzZWxlYXZlYCBpcyBhIG5vbi1idWJibGluZyBldmVudFxuICAgICAgICAvLyBgdGlwYCBpcyB0aGUgdGVtcGxhdGUgKHdpbGwgYmUgbnVsbCBpZiBub3Qgb3BlbilcbiAgICAgICAgdmFyIHRpcCA9IHRoaXMuZ2V0VGVtcGxhdGVFbGVtZW50KCk7IC8vIGBldnRUYXJnZXRgIGlzIHRoZSBlbGVtZW50IHdoaWNoIGlzIGxvb3NpbmcgZm9jdXMvaG92ZXIgYW5kXG5cbiAgICAgICAgdmFyIGV2dFRhcmdldCA9IGV2dC50YXJnZXQ7IC8vIGByZWxhdGVkVGFyZ2V0YCBpcyB0aGUgZWxlbWVudCBnYWluaW5nIGZvY3VzL2hvdmVyXG5cbiAgICAgICAgdmFyIHJlbGF0ZWRUYXJnZXQgPSBldnQucmVsYXRlZFRhcmdldDtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblxuICAgICAgICBpZiAoIC8vIEZyb20gdGlwIHRvIHRhcmdldFxuICAgICAgICB0aXAgJiYgY29udGFpbnModGlwLCBldnRUYXJnZXQpICYmIGNvbnRhaW5zKHRhcmdldCwgcmVsYXRlZFRhcmdldCkgfHwgLy8gRnJvbSB0YXJnZXQgdG8gdGlwXG4gICAgICAgIHRpcCAmJiBjb250YWlucyh0YXJnZXQsIGV2dFRhcmdldCkgJiYgY29udGFpbnModGlwLCByZWxhdGVkVGFyZ2V0KSB8fCAvLyBXaXRoaW4gdGlwXG4gICAgICAgIHRpcCAmJiBjb250YWlucyh0aXAsIGV2dFRhcmdldCkgJiYgY29udGFpbnModGlwLCByZWxhdGVkVGFyZ2V0KSB8fCAvLyBXaXRoaW4gdGFyZ2V0XG4gICAgICAgIGNvbnRhaW5zKHRhcmdldCwgZXZ0VGFyZ2V0KSAmJiBjb250YWlucyh0YXJnZXQsIHJlbGF0ZWRUYXJnZXQpKSB7XG4gICAgICAgICAgLy8gSWYgZm9jdXMvaG92ZXIgbW92ZXMgd2l0aGluIGB0aXBgIGFuZCBgdGFyZ2V0YCwgZG9uJ3QgdHJpZ2dlciBhIGxlYXZlXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIE90aGVyd2lzZSB0cmlnZ2VyIGEgbGVhdmVcblxuXG4gICAgICAgIHRoaXMubGVhdmUoZXZ0KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRvSGlkZTogZnVuY3Rpb24gZG9IaWRlKGlkKSB7XG4gICAgICAvLyBQcm9ncmFtbWF0aWNhbGx5IGhpZGUgdG9vbHRpcCBvciBwb3BvdmVyXG4gICAgICBpZiAoIWlkIHx8IHRoaXMuZ2V0VGFyZ2V0SWQoKSA9PT0gaWQgfHwgdGhpcy5jb21wdXRlZElkID09PSBpZCkge1xuICAgICAgICAvLyBDbG9zZSBhbGwgdG9vbHRpcHMgb3IgcG9wb3ZlcnMsIG9yIHRoaXMgc3BlY2lmaWMgdGlwICh3aXRoIElEKVxuICAgICAgICB0aGlzLmZvcmNlSGlkZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgZG9TaG93OiBmdW5jdGlvbiBkb1Nob3coaWQpIHtcbiAgICAgIC8vIFByb2dyYW1tYXRpY2FsbHkgc2hvdyB0b29sdGlwIG9yIHBvcG92ZXJcbiAgICAgIGlmICghaWQgfHwgdGhpcy5nZXRUYXJnZXRJZCgpID09PSBpZCB8fCB0aGlzLmNvbXB1dGVkSWQgPT09IGlkKSB7XG4gICAgICAgIC8vIE9wZW4gYWxsIHRvb2x0aXBzIG9yIHBvcG92ZXJzLCBvciB0aGlzIHNwZWNpZmljIHRpcCAod2l0aCBJRClcbiAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBkb0Rpc2FibGU6IGZ1bmN0aW9uIGRvRGlzYWJsZShpZClcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBuZXh0OiBpZ25vcmUgZm9yIG5vdyAqL1xuICAgIHtcbiAgICAgIC8vIFByb2dyYW1tYXRpY2FsbHkgZGlzYWJsZSB0b29sdGlwIG9yIHBvcG92ZXJcbiAgICAgIGlmICghaWQgfHwgdGhpcy5nZXRUYXJnZXRJZCgpID09PSBpZCB8fCB0aGlzLmNvbXB1dGVkSWQgPT09IGlkKSB7XG4gICAgICAgIC8vIERpc2FibGUgYWxsIHRvb2x0aXBzIG9yIHBvcG92ZXJzIChubyBJRCksIG9yIHRoaXMgc3BlY2lmaWMgdGlwICh3aXRoIElEKVxuICAgICAgICB0aGlzLmRpc2FibGUoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRvRW5hYmxlOiBmdW5jdGlvbiBkb0VuYWJsZShpZClcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBuZXh0OiBpZ25vcmUgZm9yIG5vdyAqL1xuICAgIHtcbiAgICAgIC8vIFByb2dyYW1tYXRpY2FsbHkgZW5hYmxlIHRvb2x0aXAgb3IgcG9wb3ZlclxuICAgICAgaWYgKCFpZCB8fCB0aGlzLmdldFRhcmdldElkKCkgPT09IGlkIHx8IHRoaXMuY29tcHV0ZWRJZCA9PT0gaWQpIHtcbiAgICAgICAgLy8gRW5hYmxlIGFsbCB0b29sdGlwcyBvciBwb3BvdmVycyAobm8gSUQpLCBvciB0aGlzIHNwZWNpZmljIHRpcCAod2l0aCBJRClcbiAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGNsaWNrOiBmdW5jdGlvbiBjbGljayhldnQpIHtcbiAgICAgIGlmICghdGhpcy4kX2VuYWJsZWQgfHwgdGhpcy5kcm9wZG93bk9wZW4oKSkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWN0aXZlVHJpZ2dlci5jbGljayA9ICF0aGlzLmFjdGl2ZVRyaWdnZXIuY2xpY2s7XG5cbiAgICAgIGlmICh0aGlzLmlzV2l0aEFjdGl2ZVRyaWdnZXIpIHtcbiAgICAgICAgdGhpcy5lbnRlcihudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHRoaXMubGVhdmUobnVsbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB0b2dnbGU6IGZ1bmN0aW9uIHRvZ2dsZSgpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB7XG4gICAgICAvLyBNYW51YWwgdG9nZ2xlIGhhbmRsZXJcbiAgICAgIGlmICghdGhpcy4kX2VuYWJsZWQgfHwgdGhpcy5kcm9wZG93bk9wZW4oKSkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIFNob3VsZCB3ZSByZWdpc3RlciBhcyBhbiBhY3RpdmUgdHJpZ2dlcj9cbiAgICAgIC8vIHRoaXMuYWN0aXZlVHJpZ2dlci5tYW51YWwgPSAhdGhpcy5hY3RpdmVUcmlnZ2VyLm1hbnVhbFxuXG5cbiAgICAgIGlmICh0aGlzLmxvY2FsU2hvdykge1xuICAgICAgICB0aGlzLmxlYXZlKG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lbnRlcihudWxsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGVudGVyOiBmdW5jdGlvbiBlbnRlcigpIHtcbiAgICAgIHZhciBfdGhpczEwID0gdGhpcztcblxuICAgICAgdmFyIGV2dCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogbnVsbDtcblxuICAgICAgLy8gT3BlbmluZyB0cmlnZ2VyIGhhbmRsZXJcbiAgICAgIC8vIE5vdGU6IENsaWNrIGV2ZW50cyBhcmUgc2VudCB3aXRoIGV2dCA9PT0gbnVsbFxuICAgICAgaWYgKGV2dCkge1xuICAgICAgICB0aGlzLmFjdGl2ZVRyaWdnZXJbZXZ0LnR5cGUgPT09ICdmb2N1c2luJyA/ICdmb2N1cycgOiAnaG92ZXInXSA9IHRydWU7XG4gICAgICB9XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuXG5cbiAgICAgIGlmICh0aGlzLmxvY2FsU2hvdyB8fCB0aGlzLiRfaG92ZXJTdGF0ZSA9PT0gJ2luJykge1xuICAgICAgICB0aGlzLiRfaG92ZXJTdGF0ZSA9ICdpbic7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaG92ZXJUaW1lb3V0KTtcbiAgICAgIHRoaXMuJF9ob3ZlclN0YXRlID0gJ2luJztcblxuICAgICAgaWYgKCF0aGlzLmNvbXB1dGVkRGVsYXkuc2hvdykge1xuICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEhpZGUgYW55IHRpdGxlIGF0dHJpYnV0ZSB3aGlsZSBlbnRlciBkZWxheSBpcyBhY3RpdmVcbiAgICAgICAgdGhpcy5maXhUaXRsZSgpO1xuICAgICAgICB0aGlzLmhvdmVyVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKF90aGlzMTAuJF9ob3ZlclN0YXRlID09PSAnaW4nKSB7XG4gICAgICAgICAgICBfdGhpczEwLnNob3coKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFfdGhpczEwLmxvY2FsU2hvdykge1xuICAgICAgICAgICAgX3RoaXMxMC5yZXN0b3JlVGl0bGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHRoaXMuY29tcHV0ZWREZWxheS5zaG93KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGxlYXZlOiBmdW5jdGlvbiBsZWF2ZSgpIHtcbiAgICAgIHZhciBfdGhpczExID0gdGhpcztcblxuICAgICAgdmFyIGV2dCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogbnVsbDtcblxuICAgICAgLy8gQ2xvc2luZyB0cmlnZ2VyIGhhbmRsZXJcbiAgICAgIC8vIE5vdGU6IENsaWNrIGV2ZW50cyBhcmUgc2VudCB3aXRoIGV2dCA9PT0gbnVsbFxuICAgICAgaWYgKGV2dCkge1xuICAgICAgICB0aGlzLmFjdGl2ZVRyaWdnZXJbZXZ0LnR5cGUgPT09ICdmb2N1c291dCcgPyAnZm9jdXMnIDogJ2hvdmVyJ10gPSBmYWxzZTtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblxuICAgICAgICBpZiAoZXZ0LnR5cGUgPT09ICdmb2N1c291dCcgJiYgYXJyYXlJbmNsdWRlcyh0aGlzLmNvbXB1dGVkVHJpZ2dlcnMsICdibHVyJykpIHtcbiAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGBibHVyYDogd2UgY2xlYXIgb3V0IHRoZSBvdGhlciB0cmlnZ2Vyc1xuICAgICAgICAgIHRoaXMuYWN0aXZlVHJpZ2dlci5jbGljayA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuYWN0aXZlVHJpZ2dlci5ob3ZlciA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogaWdub3JlIGZvciBub3cgKi9cblxuXG4gICAgICBpZiAodGhpcy5pc1dpdGhBY3RpdmVUcmlnZ2VyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaG92ZXJUaW1lb3V0KTtcbiAgICAgIHRoaXMuJF9ob3ZlclN0YXRlID0gJ291dCc7XG5cbiAgICAgIGlmICghdGhpcy5jb21wdXRlZERlbGF5LmhpZGUpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiRob3ZlclRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoX3RoaXMxMS4kX2hvdmVyU3RhdGUgPT09ICdvdXQnKSB7XG4gICAgICAgICAgICBfdGhpczExLmhpZGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHRoaXMuY29tcHV0ZWREZWxheS5oaWRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdG9vbHRpcC9oZWxwZXJzL2J2LXRvb2x0aXAuanNcbi8vIG1vZHVsZSBpZCA9IDgyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///82\n"); /***/ }), /* 83 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return VBPopoverPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__popover__ = __webpack_require__(191);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport VBPopover */\n\n\nvar VBPopoverPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n directives: {\n VBPopover: __WEBPACK_IMPORTED_MODULE_0__popover__[\"a\" /* VBPopover */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy9wb3BvdmVyL2luZGV4LmpzPzAxNjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0M7QUFDYztBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGVBQWUsMkRBQVM7QUFDeEI7QUFDQSxDQUFDIiwiZmlsZSI6IjgzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVkJQb3BvdmVyIH0gZnJvbSAnLi9wb3BvdmVyJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBWQlBvcG92ZXJQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGRpcmVjdGl2ZXM6IHtcbiAgICBWQlBvcG92ZXI6IFZCUG9wb3ZlclxuICB9XG59KTtcbmV4cG9ydCB7IFZCUG9wb3ZlclBsdWdpbiwgVkJQb3BvdmVyIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy9wb3BvdmVyL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA4M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///83\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return VBPopoverPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__popover__ = __webpack_require__(193);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport VBPopover */\n\n\nvar VBPopoverPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n directives: {\n VBPopover: __WEBPACK_IMPORTED_MODULE_0__popover__[\"a\" /* VBPopover */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy9wb3BvdmVyL2luZGV4LmpzPzAxNjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0M7QUFDYztBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGVBQWUsMkRBQVM7QUFDeEI7QUFDQSxDQUFDIiwiZmlsZSI6IjgzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVkJQb3BvdmVyIH0gZnJvbSAnLi9wb3BvdmVyJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBWQlBvcG92ZXJQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGRpcmVjdGl2ZXM6IHtcbiAgICBWQlBvcG92ZXI6IFZCUG9wb3ZlclxuICB9XG59KTtcbmV4cG9ydCB7IFZCUG9wb3ZlclBsdWdpbiwgVkJQb3BvdmVyIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy9wb3BvdmVyL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA4M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///83\n"); /***/ }), /* 84 */ @@ -700,1022 +700,1022 @@ eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_inspect__ = __ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return props; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BToast; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_portal_vue__ = __webpack_require__(216);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_portal_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_portal_vue__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_bv_transition__ = __webpack_require__(30);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_bv_event_class__ = __webpack_require__(41);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__mixins_listen_on_root__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__mixins_scoped_style_attrs__ = __webpack_require__(78);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__toaster__ = __webpack_require__(92);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__button_button_close__ = __webpack_require__(31);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__link_link__ = __webpack_require__(14);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n\n\n\n\n\n // --- Constants ---\n\nvar NAME = 'BToast';\nvar MIN_DURATION = 1000;\nvar EVENT_OPTIONS = {\n passive: true,\n capture: false\n}; // --- Props ---\n\nvar props = {\n id: {\n // Even though the ID prop is provided by idMixin, we\n // add it here for $bvToast props filtering\n type: String,\n default: null\n },\n title: {\n type: String,\n default: null\n },\n toaster: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'toaster');\n }\n },\n visible: {\n type: Boolean,\n default: false\n },\n variant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant');\n }\n },\n isStatus: {\n // Switches role to 'status' and aria-live to 'polite'\n type: Boolean,\n default: false\n },\n appendToast: {\n type: Boolean,\n default: false\n },\n noAutoHide: {\n type: Boolean,\n default: false\n },\n autoHideDelay: {\n type: [Number, String],\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'autoHideDelay');\n }\n },\n noCloseButton: {\n type: Boolean,\n default: false\n },\n noFade: {\n type: Boolean,\n default: false\n },\n noHoverPause: {\n type: Boolean,\n default: false\n },\n solid: {\n type: Boolean,\n default: false\n },\n toastClass: {\n type: [String, Object, Array],\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'toastClass');\n }\n },\n headerClass: {\n type: [String, Object, Array],\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'headerClass');\n }\n },\n bodyClass: {\n type: [String, Object, Array],\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'bodyClass');\n }\n },\n href: {\n type: String,\n default: null\n },\n to: {\n type: [String, Object],\n default: null\n },\n static: {\n // Render the toast in place, rather than in a portal-target\n type: Boolean,\n default: false\n }\n}; // @vue/component\n\nvar BToast =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n mixins: [__WEBPACK_IMPORTED_MODULE_6__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__mixins_listen_on_root__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_8__mixins_normalize_slot__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_9__mixins_scoped_style_attrs__[\"a\" /* default */]],\n inheritAttrs: false,\n model: {\n prop: 'visible',\n event: 'change'\n },\n props: props,\n data: function data() {\n return {\n isMounted: false,\n doRender: false,\n localShow: false,\n isTransitioning: false,\n isHiding: false,\n order: 0,\n timer: null,\n dismissStarted: 0,\n resumeDismiss: 0\n };\n },\n computed: {\n bToastClasses: function bToastClasses() {\n return _defineProperty({\n 'b-toast-solid': this.solid,\n 'b-toast-append': this.appendToast,\n 'b-toast-prepend': !this.appendToast\n }, \"b-toast-\".concat(this.variant), this.variant);\n },\n slotScope: function slotScope() {\n return {\n hide: this.hide\n };\n },\n computedDuration: function computedDuration() {\n // Minimum supported duration is 1 second\n return Math.max(parseInt(this.autoHideDelay, 10) || 0, MIN_DURATION);\n },\n computedToaster: function computedToaster() {\n return String(this.toaster);\n },\n transitionHandlers: function transitionHandlers() {\n return {\n beforeEnter: this.onBeforeEnter,\n afterEnter: this.onAfterEnter,\n beforeLeave: this.onBeforeLeave,\n afterLeave: this.onAfterLeave\n };\n }\n },\n watch: {\n visible: function visible(newVal) {\n newVal ? this.show() : this.hide();\n },\n localShow: function localShow(newVal) {\n if (newVal !== this.visible) {\n this.$emit('change', newVal);\n }\n },\n toaster: function toaster(newVal)\n /* istanbul ignore next */\n {\n var _this = this;\n\n // If toaster target changed, make sure toaster exists\n this.$nextTick(function () {\n return _this.ensureToaster;\n });\n },\n static: function _static(newVal)\n /* istanbul ignore next */\n {\n // If static changes to true, and the toast is showing,\n // ensure the toaster target exists\n if (newVal && this.localShow) {\n this.ensureToaster();\n }\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n this.isMounted = true;\n this.$nextTick(function () {\n if (_this2.visible) {\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"w\" /* requestAF */])(function () {\n _this2.show();\n });\n }\n }); // Listen for global $root show events\n\n this.listenOnRoot('bv::show::toast', function (id) {\n if (id === _this2.safeId()) {\n _this2.show();\n }\n }); // Listen for global $root hide events\n\n this.listenOnRoot('bv::hide::toast', function (id) {\n if (!id || id === _this2.safeId()) {\n _this2.hide();\n }\n }); // Make sure we hide when toaster is destroyed\n\n /* istanbul ignore next: difficult to test */\n\n this.listenOnRoot('bv::toaster::destroyed', function (toaster) {\n /* istanbul ignore next */\n if (toaster === _this2.computedToaster) {\n /* istanbul ignore next */\n _this2.hide();\n }\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.clearDismissTimer();\n },\n methods: {\n show: function show() {\n var _this3 = this;\n\n if (!this.localShow) {\n this.ensureToaster();\n var showEvt = this.buildEvent('show');\n this.emitEvent(showEvt);\n this.dismissStarted = this.resumeDismiss = 0;\n this.order = Date.now() * (this.appendToast ? 1 : -1);\n this.isHiding = false;\n this.doRender = true;\n this.$nextTick(function () {\n // We show the toast after we have rendered the portal and b-toast wrapper\n // so that screen readers will properly announce the toast\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"w\" /* requestAF */])(function () {\n _this3.localShow = true;\n });\n });\n }\n },\n hide: function hide() {\n var _this4 = this;\n\n if (this.localShow) {\n var hideEvt = this.buildEvent('hide');\n this.emitEvent(hideEvt);\n this.setHoverHandler(false);\n this.dismissStarted = this.resumeDismiss = 0;\n this.clearDismissTimer();\n this.isHiding = true;\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"w\" /* requestAF */])(function () {\n _this4.localShow = false;\n });\n }\n },\n buildEvent: function buildEvent(type) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new __WEBPACK_IMPORTED_MODULE_3__utils_bv_event_class__[\"a\" /* BvEvent */](type, _objectSpread({\n cancelable: false,\n target: this.$el || null,\n relatedTarget: null\n }, opts, {\n vueTarget: this,\n componentId: this.safeId()\n }));\n },\n emitEvent: function emitEvent(bvEvt) {\n var type = bvEvt.type;\n this.$root.$emit(\"bv::toast:\".concat(type), bvEvt);\n this.$emit(type, bvEvt);\n },\n ensureToaster: function ensureToaster() {\n if (this.static) {\n return;\n }\n\n if (!__WEBPACK_IMPORTED_MODULE_1_portal_vue__[\"Wormhole\"].hasTarget(this.computedToaster)) {\n var div = document.createElement('div');\n document.body.appendChild(div);\n var toaster = new __WEBPACK_IMPORTED_MODULE_10__toaster__[\"a\" /* BToaster */]({\n parent: this.$root,\n propsData: {\n name: this.computedToaster\n }\n });\n toaster.$mount(div);\n }\n },\n startDismissTimer: function startDismissTimer() {\n this.clearDismissTimer();\n\n if (!this.noAutoHide) {\n this.timer = setTimeout(this.hide, this.resumeDismiss || this.computedDuration);\n this.dismissStarted = Date.now();\n this.resumeDismiss = 0;\n }\n },\n clearDismissTimer: function clearDismissTimer() {\n clearTimeout(this.timer);\n this.timer = null;\n },\n setHoverHandler: function setHoverHandler(on) {\n var method = on ? __WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"f\" /* eventOn */] : __WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"e\" /* eventOff */];\n var el = this.$refs['b-toast'];\n method(el, 'mouseenter', this.onPause, EVENT_OPTIONS);\n method(el, 'mouseleave', this.onUnPause, EVENT_OPTIONS);\n },\n onPause: function onPause(evt) {\n // Determine time remaining, and then pause timer\n if (this.noAutoHide || this.noHoverPause || !this.timer || this.resumeDismiss) {\n return;\n }\n\n var passed = Date.now() - this.dismissStarted;\n\n if (passed > 0) {\n this.clearDismissTimer();\n this.resumeDismiss = Math.max(this.computedDuration - passed, MIN_DURATION);\n }\n },\n onUnPause: function onUnPause(evt) {\n // Restart timer with max of time remaining or 1 second\n if (this.noAutoHide || this.noHoverPause || !this.resumeDismiss) {\n this.resumeDismiss = this.dismissStarted = 0;\n return;\n }\n\n this.startDismissTimer();\n },\n onLinkClick: function onLinkClick() {\n var _this5 = this;\n\n // We delay the close to allow time for the\n // browser to process the link click\n this.$nextTick(function () {\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"w\" /* requestAF */])(function () {\n _this5.hide();\n });\n });\n },\n onBeforeEnter: function onBeforeEnter() {\n this.isTransitioning = true;\n },\n onAfterEnter: function onAfterEnter() {\n this.isTransitioning = false;\n var hiddenEvt = this.buildEvent('shown');\n this.emitEvent(hiddenEvt);\n this.startDismissTimer();\n this.setHoverHandler(true);\n },\n onBeforeLeave: function onBeforeLeave() {\n this.isTransitioning = true;\n },\n onAfterLeave: function onAfterLeave() {\n this.isTransitioning = false;\n this.order = 0;\n this.resumeDismiss = this.dismissStarted = 0;\n var hiddenEvt = this.buildEvent('hidden');\n this.emitEvent(hiddenEvt);\n this.doRender = false;\n },\n makeToast: function makeToast(h) {\n var _this6 = this;\n\n // Render helper for generating the toast\n // Assemble the header content\n var $headerContent = [];\n var $title = this.normalizeSlot('toast-title', this.slotScope);\n\n if ($title) {\n $headerContent.push($title);\n } else if (this.title) {\n $headerContent.push(h('strong', {\n staticClass: 'mr-2'\n }, this.title));\n }\n\n if (!this.noCloseButton) {\n $headerContent.push(h(__WEBPACK_IMPORTED_MODULE_11__button_button_close__[\"a\" /* BButtonClose */], {\n staticClass: 'ml-auto mb-1',\n on: {\n click: function click(evt) {\n _this6.hide();\n }\n }\n }));\n } // Assemble the header (if needed)\n\n\n var $header = h();\n\n if ($headerContent.length > 0) {\n $header = h('header', {\n staticClass: 'toast-header',\n class: this.headerClass\n }, $headerContent);\n } // Toast body\n\n\n var isLink = this.href || this.to;\n var $body = h(isLink ? __WEBPACK_IMPORTED_MODULE_12__link_link__[\"a\" /* BLink */] : 'div', {\n staticClass: 'toast-body',\n class: this.bodyClass,\n props: isLink ? {\n to: this.to,\n href: this.href\n } : {},\n on: isLink ? {\n click: this.onLinkClick\n } : {}\n }, [this.normalizeSlot('default', this.slotScope) || h()]); // Build the toast\n\n var $toast = h('div', {\n key: \"toast-\".concat(this._uid),\n ref: 'toast',\n staticClass: 'toast',\n class: this.toastClass,\n attrs: _objectSpread({}, this.$attrs, {\n tabindex: '0',\n id: this.safeId()\n })\n }, [$header, $body]);\n return $toast;\n }\n },\n render: function render(h) {\n if (!this.doRender || !this.isMounted) {\n return h();\n }\n\n var name = \"b-toast-\".concat(this._uid); // If scoped styles are applied and the toast is not static,\n // make sure the scoped style data attribute is applied\n\n var scopedStyleAttrs = !this.static ? this.scopedStyleAttrs : {};\n return h(__WEBPACK_IMPORTED_MODULE_1_portal_vue__[\"Portal\"], {\n props: {\n name: name,\n to: this.computedToaster,\n order: this.order,\n slim: true,\n disabled: this.static\n }\n }, [h('div', {\n key: name,\n ref: 'b-toast',\n staticClass: 'b-toast',\n class: this.bToastClasses,\n attrs: _objectSpread({}, scopedStyleAttrs, {\n id: this.safeId('_toast_outer'),\n role: this.isHiding ? null : this.isStatus ? 'status' : 'alert',\n 'aria-live': this.isHiding ? null : this.isStatus ? 'polite' : 'assertive',\n 'aria-atomic': this.isHiding ? null : 'true'\n })\n }, [h(__WEBPACK_IMPORTED_MODULE_2__utils_bv_transition__[\"b\" /* default */], {\n props: {\n noFade: this.noFade\n },\n on: this.transitionHandlers\n }, [this.localShow ? this.makeToast(h) : h()])])]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90b2FzdC90b2FzdC5qcz9kYmE0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNZO0FBQ087QUFDQTtBQUNHO0FBQ087QUFDekI7QUFDc0I7QUFDQztBQUNPO0FBQy9CO0FBQ2lCO0FBQ2pCOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaUZBQWtCO0FBQy9CO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaUZBQWtCO0FBQy9CO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVLO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0EsV0FBVywyREFBTyxFQUFFLHVFQUFpQixFQUFFLHVFQUFrQixFQUFFLDJFQUFxQjtBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUSxxRUFBUztBQUNqQjtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLHFFQUFTO0FBQ25CO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxxRUFBUztBQUNqQjtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsaUJBQWlCLHNFQUFPO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxXQUFXLG9EQUFRO0FBQ25CO0FBQ0E7QUFDQSwwQkFBMEIsMkRBQVE7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0Esd0JBQXdCLDJEQUFPLEdBQUcsNERBQVE7QUFDMUM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUSxxRUFBUztBQUNqQjtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQSw4QkFBOEIsMkVBQVk7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87OztBQUdQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87OztBQUdQO0FBQ0EsNkJBQTZCLDBEQUFLO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQUs7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU8sMERBQTBEOztBQUVqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNENBQTRDO0FBQzVDOztBQUVBO0FBQ0EsYUFBYSxrREFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLLEtBQUsscUVBQVk7QUFDdEI7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiOTEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBQb3J0YWwsIFdvcm1ob2xlIH0gZnJvbSAncG9ydGFsLXZ1ZSc7XG5pbXBvcnQgQlZUcmFuc2l0aW9uIGZyb20gJy4uLy4uL3V0aWxzL2J2LXRyYW5zaXRpb24nO1xuaW1wb3J0IHsgQnZFdmVudCB9IGZyb20gJy4uLy4uL3V0aWxzL2J2LWV2ZW50LmNsYXNzJztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyByZXF1ZXN0QUYsIGV2ZW50T24sIGV2ZW50T2ZmIH0gZnJvbSAnLi4vLi4vdXRpbHMvZG9tJztcbmltcG9ydCBpZE1peGluIGZyb20gJy4uLy4uL21peGlucy9pZCc7XG5pbXBvcnQgbGlzdGVuT25Sb290TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2xpc3Rlbi1vbi1yb290JztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JztcbmltcG9ydCBzY29wZWRTdHlsZUF0dHJzTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL3Njb3BlZC1zdHlsZS1hdHRycyc7XG5pbXBvcnQgeyBCVG9hc3RlciB9IGZyb20gJy4vdG9hc3Rlcic7XG5pbXBvcnQgeyBCQnV0dG9uQ2xvc2UgfSBmcm9tICcuLi9idXR0b24vYnV0dG9uLWNsb3NlJztcbmltcG9ydCB7IEJMaW5rIH0gZnJvbSAnLi4vbGluay9saW5rJzsgLy8gLS0tIENvbnN0YW50cyAtLS1cblxudmFyIE5BTUUgPSAnQlRvYXN0JztcbnZhciBNSU5fRFVSQVRJT04gPSAxMDAwO1xudmFyIEVWRU5UX09QVElPTlMgPSB7XG4gIHBhc3NpdmU6IHRydWUsXG4gIGNhcHR1cmU6IGZhbHNlXG59OyAvLyAtLS0gUHJvcHMgLS0tXG5cbmV4cG9ydCB2YXIgcHJvcHMgPSB7XG4gIGlkOiB7XG4gICAgLy8gRXZlbiB0aG91Z2ggdGhlIElEIHByb3AgaXMgcHJvdmlkZWQgYnkgaWRNaXhpbiwgd2VcbiAgICAvLyBhZGQgaXQgaGVyZSBmb3IgJGJ2VG9hc3QgcHJvcHMgZmlsdGVyaW5nXG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgdGl0bGU6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICB0b2FzdGVyOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAndG9hc3RlcicpO1xuICAgIH1cbiAgfSxcbiAgdmlzaWJsZToge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgdmFyaWFudDoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ3ZhcmlhbnQnKTtcbiAgICB9XG4gIH0sXG4gIGlzU3RhdHVzOiB7XG4gICAgLy8gU3dpdGNoZXMgcm9sZSB0byAnc3RhdHVzJyBhbmQgYXJpYS1saXZlIHRvICdwb2xpdGUnXG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBhcHBlbmRUb2FzdDoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgbm9BdXRvSGlkZToge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgYXV0b0hpZGVEZWxheToge1xuICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdhdXRvSGlkZURlbGF5Jyk7XG4gICAgfVxuICB9LFxuICBub0Nsb3NlQnV0dG9uOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBub0ZhZGU6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIG5vSG92ZXJQYXVzZToge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgc29saWQ6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIHRvYXN0Q2xhc3M6IHtcbiAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3QsIEFycmF5XSxcbiAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ3RvYXN0Q2xhc3MnKTtcbiAgICB9XG4gIH0sXG4gIGhlYWRlckNsYXNzOiB7XG4gICAgdHlwZTogW1N0cmluZywgT2JqZWN0LCBBcnJheV0sXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdoZWFkZXJDbGFzcycpO1xuICAgIH1cbiAgfSxcbiAgYm9keUNsYXNzOiB7XG4gICAgdHlwZTogW1N0cmluZywgT2JqZWN0LCBBcnJheV0sXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdib2R5Q2xhc3MnKTtcbiAgICB9XG4gIH0sXG4gIGhyZWY6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICB0bzoge1xuICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBzdGF0aWM6IHtcbiAgICAvLyBSZW5kZXIgdGhlIHRvYXN0IGluIHBsYWNlLCByYXRoZXIgdGhhbiBpbiBhIHBvcnRhbC10YXJnZXRcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQlRvYXN0ID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBtaXhpbnM6IFtpZE1peGluLCBsaXN0ZW5PblJvb3RNaXhpbiwgbm9ybWFsaXplU2xvdE1peGluLCBzY29wZWRTdHlsZUF0dHJzTWl4aW5dLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBtb2RlbDoge1xuICAgIHByb3A6ICd2aXNpYmxlJyxcbiAgICBldmVudDogJ2NoYW5nZSdcbiAgfSxcbiAgcHJvcHM6IHByb3BzLFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpc01vdW50ZWQ6IGZhbHNlLFxuICAgICAgZG9SZW5kZXI6IGZhbHNlLFxuICAgICAgbG9jYWxTaG93OiBmYWxzZSxcbiAgICAgIGlzVHJhbnNpdGlvbmluZzogZmFsc2UsXG4gICAgICBpc0hpZGluZzogZmFsc2UsXG4gICAgICBvcmRlcjogMCxcbiAgICAgIHRpbWVyOiBudWxsLFxuICAgICAgZGlzbWlzc1N0YXJ0ZWQ6IDAsXG4gICAgICByZXN1bWVEaXNtaXNzOiAwXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBiVG9hc3RDbGFzc2VzOiBmdW5jdGlvbiBiVG9hc3RDbGFzc2VzKCkge1xuICAgICAgcmV0dXJuIF9kZWZpbmVQcm9wZXJ0eSh7XG4gICAgICAgICdiLXRvYXN0LXNvbGlkJzogdGhpcy5zb2xpZCxcbiAgICAgICAgJ2ItdG9hc3QtYXBwZW5kJzogdGhpcy5hcHBlbmRUb2FzdCxcbiAgICAgICAgJ2ItdG9hc3QtcHJlcGVuZCc6ICF0aGlzLmFwcGVuZFRvYXN0XG4gICAgICB9LCBcImItdG9hc3QtXCIuY29uY2F0KHRoaXMudmFyaWFudCksIHRoaXMudmFyaWFudCk7XG4gICAgfSxcbiAgICBzbG90U2NvcGU6IGZ1bmN0aW9uIHNsb3RTY29wZSgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhpZGU6IHRoaXMuaGlkZVxuICAgICAgfTtcbiAgICB9LFxuICAgIGNvbXB1dGVkRHVyYXRpb246IGZ1bmN0aW9uIGNvbXB1dGVkRHVyYXRpb24oKSB7XG4gICAgICAvLyBNaW5pbXVtIHN1cHBvcnRlZCBkdXJhdGlvbiBpcyAxIHNlY29uZFxuICAgICAgcmV0dXJuIE1hdGgubWF4KHBhcnNlSW50KHRoaXMuYXV0b0hpZGVEZWxheSwgMTApIHx8IDAsIE1JTl9EVVJBVElPTik7XG4gICAgfSxcbiAgICBjb21wdXRlZFRvYXN0ZXI6IGZ1bmN0aW9uIGNvbXB1dGVkVG9hc3RlcigpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodGhpcy50b2FzdGVyKTtcbiAgICB9LFxuICAgIHRyYW5zaXRpb25IYW5kbGVyczogZnVuY3Rpb24gdHJhbnNpdGlvbkhhbmRsZXJzKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmVmb3JlRW50ZXI6IHRoaXMub25CZWZvcmVFbnRlcixcbiAgICAgICAgYWZ0ZXJFbnRlcjogdGhpcy5vbkFmdGVyRW50ZXIsXG4gICAgICAgIGJlZm9yZUxlYXZlOiB0aGlzLm9uQmVmb3JlTGVhdmUsXG4gICAgICAgIGFmdGVyTGVhdmU6IHRoaXMub25BZnRlckxlYXZlXG4gICAgICB9O1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICB2aXNpYmxlOiBmdW5jdGlvbiB2aXNpYmxlKG5ld1ZhbCkge1xuICAgICAgbmV3VmFsID8gdGhpcy5zaG93KCkgOiB0aGlzLmhpZGUoKTtcbiAgICB9LFxuICAgIGxvY2FsU2hvdzogZnVuY3Rpb24gbG9jYWxTaG93KG5ld1ZhbCkge1xuICAgICAgaWYgKG5ld1ZhbCAhPT0gdGhpcy52aXNpYmxlKSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIG5ld1ZhbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB0b2FzdGVyOiBmdW5jdGlvbiB0b2FzdGVyKG5ld1ZhbClcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIC8vIElmIHRvYXN0ZXIgdGFyZ2V0IGNoYW5nZWQsIG1ha2Ugc3VyZSB0b2FzdGVyIGV4aXN0c1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RoaXMuZW5zdXJlVG9hc3RlcjtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgc3RhdGljOiBmdW5jdGlvbiBfc3RhdGljKG5ld1ZhbClcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHtcbiAgICAgIC8vIElmIHN0YXRpYyBjaGFuZ2VzIHRvIHRydWUsIGFuZCB0aGUgdG9hc3QgaXMgc2hvd2luZyxcbiAgICAgIC8vIGVuc3VyZSB0aGUgdG9hc3RlciB0YXJnZXQgZXhpc3RzXG4gICAgICBpZiAobmV3VmFsICYmIHRoaXMubG9jYWxTaG93KSB7XG4gICAgICAgIHRoaXMuZW5zdXJlVG9hc3RlcigpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIHRoaXMuaXNNb3VudGVkID0gdHJ1ZTtcbiAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMyLnZpc2libGUpIHtcbiAgICAgICAgcmVxdWVzdEFGKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfdGhpczIuc2hvdygpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTsgLy8gTGlzdGVuIGZvciBnbG9iYWwgJHJvb3Qgc2hvdyBldmVudHNcblxuICAgIHRoaXMubGlzdGVuT25Sb290KCdidjo6c2hvdzo6dG9hc3QnLCBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIGlmIChpZCA9PT0gX3RoaXMyLnNhZmVJZCgpKSB7XG4gICAgICAgIF90aGlzMi5zaG93KCk7XG4gICAgICB9XG4gICAgfSk7IC8vIExpc3RlbiBmb3IgZ2xvYmFsICRyb290IGhpZGUgZXZlbnRzXG5cbiAgICB0aGlzLmxpc3Rlbk9uUm9vdCgnYnY6OmhpZGU6OnRvYXN0JywgZnVuY3Rpb24gKGlkKSB7XG4gICAgICBpZiAoIWlkIHx8IGlkID09PSBfdGhpczIuc2FmZUlkKCkpIHtcbiAgICAgICAgX3RoaXMyLmhpZGUoKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gTWFrZSBzdXJlIHdlIGhpZGUgd2hlbiB0b2FzdGVyIGlzIGRlc3Ryb3llZFxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGRpZmZpY3VsdCB0byB0ZXN0ICovXG5cbiAgICB0aGlzLmxpc3Rlbk9uUm9vdCgnYnY6OnRvYXN0ZXI6OmRlc3Ryb3llZCcsIGZ1bmN0aW9uICh0b2FzdGVyKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgaWYgKHRvYXN0ZXIgPT09IF90aGlzMi5jb21wdXRlZFRvYXN0ZXIpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgX3RoaXMyLmhpZGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICB0aGlzLmNsZWFyRGlzbWlzc1RpbWVyKCk7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBzaG93OiBmdW5jdGlvbiBzaG93KCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIGlmICghdGhpcy5sb2NhbFNob3cpIHtcbiAgICAgICAgdGhpcy5lbnN1cmVUb2FzdGVyKCk7XG4gICAgICAgIHZhciBzaG93RXZ0ID0gdGhpcy5idWlsZEV2ZW50KCdzaG93Jyk7XG4gICAgICAgIHRoaXMuZW1pdEV2ZW50KHNob3dFdnQpO1xuICAgICAgICB0aGlzLmRpc21pc3NTdGFydGVkID0gdGhpcy5yZXN1bWVEaXNtaXNzID0gMDtcbiAgICAgICAgdGhpcy5vcmRlciA9IERhdGUubm93KCkgKiAodGhpcy5hcHBlbmRUb2FzdCA/IDEgOiAtMSk7XG4gICAgICAgIHRoaXMuaXNIaWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5kb1JlbmRlciA9IHRydWU7XG4gICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAvLyBXZSBzaG93IHRoZSB0b2FzdCBhZnRlciB3ZSBoYXZlIHJlbmRlcmVkIHRoZSBwb3J0YWwgYW5kIGItdG9hc3Qgd3JhcHBlclxuICAgICAgICAgIC8vIHNvIHRoYXQgc2NyZWVuIHJlYWRlcnMgd2lsbCBwcm9wZXJseSBhbm5vdW5jZSB0aGUgdG9hc3RcbiAgICAgICAgICByZXF1ZXN0QUYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMzLmxvY2FsU2hvdyA9IHRydWU7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGlkZTogZnVuY3Rpb24gaGlkZSgpIHtcbiAgICAgIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5sb2NhbFNob3cpIHtcbiAgICAgICAgdmFyIGhpZGVFdnQgPSB0aGlzLmJ1aWxkRXZlbnQoJ2hpZGUnKTtcbiAgICAgICAgdGhpcy5lbWl0RXZlbnQoaGlkZUV2dCk7XG4gICAgICAgIHRoaXMuc2V0SG92ZXJIYW5kbGVyKGZhbHNlKTtcbiAgICAgICAgdGhpcy5kaXNtaXNzU3RhcnRlZCA9IHRoaXMucmVzdW1lRGlzbWlzcyA9IDA7XG4gICAgICAgIHRoaXMuY2xlYXJEaXNtaXNzVGltZXIoKTtcbiAgICAgICAgdGhpcy5pc0hpZGluZyA9IHRydWU7XG4gICAgICAgIHJlcXVlc3RBRihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXM0LmxvY2FsU2hvdyA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGJ1aWxkRXZlbnQ6IGZ1bmN0aW9uIGJ1aWxkRXZlbnQodHlwZSkge1xuICAgICAgdmFyIG9wdHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAgICAgcmV0dXJuIG5ldyBCdkV2ZW50KHR5cGUsIF9vYmplY3RTcHJlYWQoe1xuICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgdGFyZ2V0OiB0aGlzLiRlbCB8fCBudWxsLFxuICAgICAgICByZWxhdGVkVGFyZ2V0OiBudWxsXG4gICAgICB9LCBvcHRzLCB7XG4gICAgICAgIHZ1ZVRhcmdldDogdGhpcyxcbiAgICAgICAgY29tcG9uZW50SWQ6IHRoaXMuc2FmZUlkKClcbiAgICAgIH0pKTtcbiAgICB9LFxuICAgIGVtaXRFdmVudDogZnVuY3Rpb24gZW1pdEV2ZW50KGJ2RXZ0KSB7XG4gICAgICB2YXIgdHlwZSA9IGJ2RXZ0LnR5cGU7XG4gICAgICB0aGlzLiRyb290LiRlbWl0KFwiYnY6OnRvYXN0OlwiLmNvbmNhdCh0eXBlKSwgYnZFdnQpO1xuICAgICAgdGhpcy4kZW1pdCh0eXBlLCBidkV2dCk7XG4gICAgfSxcbiAgICBlbnN1cmVUb2FzdGVyOiBmdW5jdGlvbiBlbnN1cmVUb2FzdGVyKCkge1xuICAgICAgaWYgKHRoaXMuc3RhdGljKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFXb3JtaG9sZS5oYXNUYXJnZXQodGhpcy5jb21wdXRlZFRvYXN0ZXIpKSB7XG4gICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpO1xuICAgICAgICB2YXIgdG9hc3RlciA9IG5ldyBCVG9hc3Rlcih7XG4gICAgICAgICAgcGFyZW50OiB0aGlzLiRyb290LFxuICAgICAgICAgIHByb3BzRGF0YToge1xuICAgICAgICAgICAgbmFtZTogdGhpcy5jb21wdXRlZFRvYXN0ZXJcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0b2FzdGVyLiRtb3VudChkaXYpO1xuICAgICAgfVxuICAgIH0sXG4gICAgc3RhcnREaXNtaXNzVGltZXI6IGZ1bmN0aW9uIHN0YXJ0RGlzbWlzc1RpbWVyKCkge1xuICAgICAgdGhpcy5jbGVhckRpc21pc3NUaW1lcigpO1xuXG4gICAgICBpZiAoIXRoaXMubm9BdXRvSGlkZSkge1xuICAgICAgICB0aGlzLnRpbWVyID0gc2V0VGltZW91dCh0aGlzLmhpZGUsIHRoaXMucmVzdW1lRGlzbWlzcyB8fCB0aGlzLmNvbXB1dGVkRHVyYXRpb24pO1xuICAgICAgICB0aGlzLmRpc21pc3NTdGFydGVkID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdGhpcy5yZXN1bWVEaXNtaXNzID0gMDtcbiAgICAgIH1cbiAgICB9LFxuICAgIGNsZWFyRGlzbWlzc1RpbWVyOiBmdW5jdGlvbiBjbGVhckRpc21pc3NUaW1lcigpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcbiAgICAgIHRoaXMudGltZXIgPSBudWxsO1xuICAgIH0sXG4gICAgc2V0SG92ZXJIYW5kbGVyOiBmdW5jdGlvbiBzZXRIb3ZlckhhbmRsZXIob24pIHtcbiAgICAgIHZhciBtZXRob2QgPSBvbiA/IGV2ZW50T24gOiBldmVudE9mZjtcbiAgICAgIHZhciBlbCA9IHRoaXMuJHJlZnNbJ2ItdG9hc3QnXTtcbiAgICAgIG1ldGhvZChlbCwgJ21vdXNlZW50ZXInLCB0aGlzLm9uUGF1c2UsIEVWRU5UX09QVElPTlMpO1xuICAgICAgbWV0aG9kKGVsLCAnbW91c2VsZWF2ZScsIHRoaXMub25VblBhdXNlLCBFVkVOVF9PUFRJT05TKTtcbiAgICB9LFxuICAgIG9uUGF1c2U6IGZ1bmN0aW9uIG9uUGF1c2UoZXZ0KSB7XG4gICAgICAvLyBEZXRlcm1pbmUgdGltZSByZW1haW5pbmcsIGFuZCB0aGVuIHBhdXNlIHRpbWVyXG4gICAgICBpZiAodGhpcy5ub0F1dG9IaWRlIHx8IHRoaXMubm9Ib3ZlclBhdXNlIHx8ICF0aGlzLnRpbWVyIHx8IHRoaXMucmVzdW1lRGlzbWlzcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBwYXNzZWQgPSBEYXRlLm5vdygpIC0gdGhpcy5kaXNtaXNzU3RhcnRlZDtcblxuICAgICAgaWYgKHBhc3NlZCA+IDApIHtcbiAgICAgICAgdGhpcy5jbGVhckRpc21pc3NUaW1lcigpO1xuICAgICAgICB0aGlzLnJlc3VtZURpc21pc3MgPSBNYXRoLm1heCh0aGlzLmNvbXB1dGVkRHVyYXRpb24gLSBwYXNzZWQsIE1JTl9EVVJBVElPTik7XG4gICAgICB9XG4gICAgfSxcbiAgICBvblVuUGF1c2U6IGZ1bmN0aW9uIG9uVW5QYXVzZShldnQpIHtcbiAgICAgIC8vIFJlc3RhcnQgdGltZXIgd2l0aCBtYXggb2YgdGltZSByZW1haW5pbmcgb3IgMSBzZWNvbmRcbiAgICAgIGlmICh0aGlzLm5vQXV0b0hpZGUgfHwgdGhpcy5ub0hvdmVyUGF1c2UgfHwgIXRoaXMucmVzdW1lRGlzbWlzcykge1xuICAgICAgICB0aGlzLnJlc3VtZURpc21pc3MgPSB0aGlzLmRpc21pc3NTdGFydGVkID0gMDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnN0YXJ0RGlzbWlzc1RpbWVyKCk7XG4gICAgfSxcbiAgICBvbkxpbmtDbGljazogZnVuY3Rpb24gb25MaW5rQ2xpY2soKSB7XG4gICAgICB2YXIgX3RoaXM1ID0gdGhpcztcblxuICAgICAgLy8gV2UgZGVsYXkgdGhlIGNsb3NlIHRvIGFsbG93IHRpbWUgZm9yIHRoZVxuICAgICAgLy8gYnJvd3NlciB0byBwcm9jZXNzIHRoZSBsaW5rIGNsaWNrXG4gICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJlcXVlc3RBRihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXM1LmhpZGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uQmVmb3JlRW50ZXI6IGZ1bmN0aW9uIG9uQmVmb3JlRW50ZXIoKSB7XG4gICAgICB0aGlzLmlzVHJhbnNpdGlvbmluZyA9IHRydWU7XG4gICAgfSxcbiAgICBvbkFmdGVyRW50ZXI6IGZ1bmN0aW9uIG9uQWZ0ZXJFbnRlcigpIHtcbiAgICAgIHRoaXMuaXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7XG4gICAgICB2YXIgaGlkZGVuRXZ0ID0gdGhpcy5idWlsZEV2ZW50KCdzaG93bicpO1xuICAgICAgdGhpcy5lbWl0RXZlbnQoaGlkZGVuRXZ0KTtcbiAgICAgIHRoaXMuc3RhcnREaXNtaXNzVGltZXIoKTtcbiAgICAgIHRoaXMuc2V0SG92ZXJIYW5kbGVyKHRydWUpO1xuICAgIH0sXG4gICAgb25CZWZvcmVMZWF2ZTogZnVuY3Rpb24gb25CZWZvcmVMZWF2ZSgpIHtcbiAgICAgIHRoaXMuaXNUcmFuc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICB9LFxuICAgIG9uQWZ0ZXJMZWF2ZTogZnVuY3Rpb24gb25BZnRlckxlYXZlKCkge1xuICAgICAgdGhpcy5pc1RyYW5zaXRpb25pbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMub3JkZXIgPSAwO1xuICAgICAgdGhpcy5yZXN1bWVEaXNtaXNzID0gdGhpcy5kaXNtaXNzU3RhcnRlZCA9IDA7XG4gICAgICB2YXIgaGlkZGVuRXZ0ID0gdGhpcy5idWlsZEV2ZW50KCdoaWRkZW4nKTtcbiAgICAgIHRoaXMuZW1pdEV2ZW50KGhpZGRlbkV2dCk7XG4gICAgICB0aGlzLmRvUmVuZGVyID0gZmFsc2U7XG4gICAgfSxcbiAgICBtYWtlVG9hc3Q6IGZ1bmN0aW9uIG1ha2VUb2FzdChoKSB7XG4gICAgICB2YXIgX3RoaXM2ID0gdGhpcztcblxuICAgICAgLy8gUmVuZGVyIGhlbHBlciBmb3IgZ2VuZXJhdGluZyB0aGUgdG9hc3RcbiAgICAgIC8vIEFzc2VtYmxlIHRoZSBoZWFkZXIgY29udGVudFxuICAgICAgdmFyICRoZWFkZXJDb250ZW50ID0gW107XG4gICAgICB2YXIgJHRpdGxlID0gdGhpcy5ub3JtYWxpemVTbG90KCd0b2FzdC10aXRsZScsIHRoaXMuc2xvdFNjb3BlKTtcblxuICAgICAgaWYgKCR0aXRsZSkge1xuICAgICAgICAkaGVhZGVyQ29udGVudC5wdXNoKCR0aXRsZSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudGl0bGUpIHtcbiAgICAgICAgJGhlYWRlckNvbnRlbnQucHVzaChoKCdzdHJvbmcnLCB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6ICdtci0yJ1xuICAgICAgICB9LCB0aGlzLnRpdGxlKSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5ub0Nsb3NlQnV0dG9uKSB7XG4gICAgICAgICRoZWFkZXJDb250ZW50LnB1c2goaChCQnV0dG9uQ2xvc2UsIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogJ21sLWF1dG8gbWItMScsXG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbiBjbGljayhldnQpIHtcbiAgICAgICAgICAgICAgX3RoaXM2LmhpZGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgICAgIH0gLy8gQXNzZW1ibGUgdGhlIGhlYWRlciAoaWYgbmVlZGVkKVxuXG5cbiAgICAgIHZhciAkaGVhZGVyID0gaCgpO1xuXG4gICAgICBpZiAoJGhlYWRlckNvbnRlbnQubGVuZ3RoID4gMCkge1xuICAgICAgICAkaGVhZGVyID0gaCgnaGVhZGVyJywge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiAndG9hc3QtaGVhZGVyJyxcbiAgICAgICAgICBjbGFzczogdGhpcy5oZWFkZXJDbGFzc1xuICAgICAgICB9LCAkaGVhZGVyQ29udGVudCk7XG4gICAgICB9IC8vIFRvYXN0IGJvZHlcblxuXG4gICAgICB2YXIgaXNMaW5rID0gdGhpcy5ocmVmIHx8IHRoaXMudG87XG4gICAgICB2YXIgJGJvZHkgPSBoKGlzTGluayA/IEJMaW5rIDogJ2RpdicsIHtcbiAgICAgICAgc3RhdGljQ2xhc3M6ICd0b2FzdC1ib2R5JyxcbiAgICAgICAgY2xhc3M6IHRoaXMuYm9keUNsYXNzLFxuICAgICAgICBwcm9wczogaXNMaW5rID8ge1xuICAgICAgICAgIHRvOiB0aGlzLnRvLFxuICAgICAgICAgIGhyZWY6IHRoaXMuaHJlZlxuICAgICAgICB9IDoge30sXG4gICAgICAgIG9uOiBpc0xpbmsgPyB7XG4gICAgICAgICAgY2xpY2s6IHRoaXMub25MaW5rQ2xpY2tcbiAgICAgICAgfSA6IHt9XG4gICAgICB9LCBbdGhpcy5ub3JtYWxpemVTbG90KCdkZWZhdWx0JywgdGhpcy5zbG90U2NvcGUpIHx8IGgoKV0pOyAvLyBCdWlsZCB0aGUgdG9hc3RcblxuICAgICAgdmFyICR0b2FzdCA9IGgoJ2RpdicsIHtcbiAgICAgICAga2V5OiBcInRvYXN0LVwiLmNvbmNhdCh0aGlzLl91aWQpLFxuICAgICAgICByZWY6ICd0b2FzdCcsXG4gICAgICAgIHN0YXRpY0NsYXNzOiAndG9hc3QnLFxuICAgICAgICBjbGFzczogdGhpcy50b2FzdENsYXNzLFxuICAgICAgICBhdHRyczogX29iamVjdFNwcmVhZCh7fSwgdGhpcy4kYXR0cnMsIHtcbiAgICAgICAgICB0YWJpbmRleDogJzAnLFxuICAgICAgICAgIGlkOiB0aGlzLnNhZmVJZCgpXG4gICAgICAgIH0pXG4gICAgICB9LCBbJGhlYWRlciwgJGJvZHldKTtcbiAgICAgIHJldHVybiAkdG9hc3Q7XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgaWYgKCF0aGlzLmRvUmVuZGVyIHx8ICF0aGlzLmlzTW91bnRlZCkge1xuICAgICAgcmV0dXJuIGgoKTtcbiAgICB9XG5cbiAgICB2YXIgbmFtZSA9IFwiYi10b2FzdC1cIi5jb25jYXQodGhpcy5fdWlkKTsgLy8gSWYgc2NvcGVkIHN0eWxlcyBhcmUgYXBwbGllZCBhbmQgdGhlIHRvYXN0IGlzIG5vdCBzdGF0aWMsXG4gICAgLy8gbWFrZSBzdXJlIHRoZSBzY29wZWQgc3R5bGUgZGF0YSBhdHRyaWJ1dGUgaXMgYXBwbGllZFxuXG4gICAgdmFyIHNjb3BlZFN0eWxlQXR0cnMgPSAhdGhpcy5zdGF0aWMgPyB0aGlzLnNjb3BlZFN0eWxlQXR0cnMgOiB7fTtcbiAgICByZXR1cm4gaChQb3J0YWwsIHtcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIHRvOiB0aGlzLmNvbXB1dGVkVG9hc3RlcixcbiAgICAgICAgb3JkZXI6IHRoaXMub3JkZXIsXG4gICAgICAgIHNsaW06IHRydWUsXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLnN0YXRpY1xuICAgICAgfVxuICAgIH0sIFtoKCdkaXYnLCB7XG4gICAgICBrZXk6IG5hbWUsXG4gICAgICByZWY6ICdiLXRvYXN0JyxcbiAgICAgIHN0YXRpY0NsYXNzOiAnYi10b2FzdCcsXG4gICAgICBjbGFzczogdGhpcy5iVG9hc3RDbGFzc2VzLFxuICAgICAgYXR0cnM6IF9vYmplY3RTcHJlYWQoe30sIHNjb3BlZFN0eWxlQXR0cnMsIHtcbiAgICAgICAgaWQ6IHRoaXMuc2FmZUlkKCdfdG9hc3Rfb3V0ZXInKSxcbiAgICAgICAgcm9sZTogdGhpcy5pc0hpZGluZyA/IG51bGwgOiB0aGlzLmlzU3RhdHVzID8gJ3N0YXR1cycgOiAnYWxlcnQnLFxuICAgICAgICAnYXJpYS1saXZlJzogdGhpcy5pc0hpZGluZyA/IG51bGwgOiB0aGlzLmlzU3RhdHVzID8gJ3BvbGl0ZScgOiAnYXNzZXJ0aXZlJyxcbiAgICAgICAgJ2FyaWEtYXRvbWljJzogdGhpcy5pc0hpZGluZyA/IG51bGwgOiAndHJ1ZSdcbiAgICAgIH0pXG4gICAgfSwgW2goQlZUcmFuc2l0aW9uLCB7XG4gICAgICBwcm9wczoge1xuICAgICAgICBub0ZhZGU6IHRoaXMubm9GYWRlXG4gICAgICB9LFxuICAgICAgb246IHRoaXMudHJhbnNpdGlvbkhhbmRsZXJzXG4gICAgfSwgW3RoaXMubG9jYWxTaG93ID8gdGhpcy5tYWtlVG9hc3QoaCkgOiBoKCldKV0pXSk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdG9hc3QvdG9hc3QuanNcbi8vIG1vZHVsZSBpZCA9IDkxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///91\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return props; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BToast; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_portal_vue__ = __webpack_require__(218);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_portal_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_portal_vue__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_bv_transition__ = __webpack_require__(30);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_bv_event_class__ = __webpack_require__(41);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__mixins_listen_on_root__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__mixins_scoped_style_attrs__ = __webpack_require__(78);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__toaster__ = __webpack_require__(92);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__button_button_close__ = __webpack_require__(31);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__link_link__ = __webpack_require__(14);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n\n\n\n\n\n // --- Constants ---\n\nvar NAME = 'BToast';\nvar MIN_DURATION = 1000;\nvar EVENT_OPTIONS = {\n passive: true,\n capture: false\n}; // --- Props ---\n\nvar props = {\n id: {\n // Even though the ID prop is provided by idMixin, we\n // add it here for $bvToast props filtering\n type: String,\n default: null\n },\n title: {\n type: String,\n default: null\n },\n toaster: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'toaster');\n }\n },\n visible: {\n type: Boolean,\n default: false\n },\n variant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant');\n }\n },\n isStatus: {\n // Switches role to 'status' and aria-live to 'polite'\n type: Boolean,\n default: false\n },\n appendToast: {\n type: Boolean,\n default: false\n },\n noAutoHide: {\n type: Boolean,\n default: false\n },\n autoHideDelay: {\n type: [Number, String],\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'autoHideDelay');\n }\n },\n noCloseButton: {\n type: Boolean,\n default: false\n },\n noFade: {\n type: Boolean,\n default: false\n },\n noHoverPause: {\n type: Boolean,\n default: false\n },\n solid: {\n type: Boolean,\n default: false\n },\n toastClass: {\n type: [String, Object, Array],\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'toastClass');\n }\n },\n headerClass: {\n type: [String, Object, Array],\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'headerClass');\n }\n },\n bodyClass: {\n type: [String, Object, Array],\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'bodyClass');\n }\n },\n href: {\n type: String,\n default: null\n },\n to: {\n type: [String, Object],\n default: null\n },\n static: {\n // Render the toast in place, rather than in a portal-target\n type: Boolean,\n default: false\n }\n}; // @vue/component\n\nvar BToast =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n mixins: [__WEBPACK_IMPORTED_MODULE_6__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__mixins_listen_on_root__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_8__mixins_normalize_slot__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_9__mixins_scoped_style_attrs__[\"a\" /* default */]],\n inheritAttrs: false,\n model: {\n prop: 'visible',\n event: 'change'\n },\n props: props,\n data: function data() {\n return {\n isMounted: false,\n doRender: false,\n localShow: false,\n isTransitioning: false,\n isHiding: false,\n order: 0,\n timer: null,\n dismissStarted: 0,\n resumeDismiss: 0\n };\n },\n computed: {\n bToastClasses: function bToastClasses() {\n return _defineProperty({\n 'b-toast-solid': this.solid,\n 'b-toast-append': this.appendToast,\n 'b-toast-prepend': !this.appendToast\n }, \"b-toast-\".concat(this.variant), this.variant);\n },\n slotScope: function slotScope() {\n return {\n hide: this.hide\n };\n },\n computedDuration: function computedDuration() {\n // Minimum supported duration is 1 second\n return Math.max(parseInt(this.autoHideDelay, 10) || 0, MIN_DURATION);\n },\n computedToaster: function computedToaster() {\n return String(this.toaster);\n },\n transitionHandlers: function transitionHandlers() {\n return {\n beforeEnter: this.onBeforeEnter,\n afterEnter: this.onAfterEnter,\n beforeLeave: this.onBeforeLeave,\n afterLeave: this.onAfterLeave\n };\n }\n },\n watch: {\n visible: function visible(newVal) {\n newVal ? this.show() : this.hide();\n },\n localShow: function localShow(newVal) {\n if (newVal !== this.visible) {\n this.$emit('change', newVal);\n }\n },\n toaster: function toaster(newVal)\n /* istanbul ignore next */\n {\n var _this = this;\n\n // If toaster target changed, make sure toaster exists\n this.$nextTick(function () {\n return _this.ensureToaster;\n });\n },\n static: function _static(newVal)\n /* istanbul ignore next */\n {\n // If static changes to true, and the toast is showing,\n // ensure the toaster target exists\n if (newVal && this.localShow) {\n this.ensureToaster();\n }\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n this.isMounted = true;\n this.$nextTick(function () {\n if (_this2.visible) {\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"w\" /* requestAF */])(function () {\n _this2.show();\n });\n }\n }); // Listen for global $root show events\n\n this.listenOnRoot('bv::show::toast', function (id) {\n if (id === _this2.safeId()) {\n _this2.show();\n }\n }); // Listen for global $root hide events\n\n this.listenOnRoot('bv::hide::toast', function (id) {\n if (!id || id === _this2.safeId()) {\n _this2.hide();\n }\n }); // Make sure we hide when toaster is destroyed\n\n /* istanbul ignore next: difficult to test */\n\n this.listenOnRoot('bv::toaster::destroyed', function (toaster) {\n /* istanbul ignore next */\n if (toaster === _this2.computedToaster) {\n /* istanbul ignore next */\n _this2.hide();\n }\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.clearDismissTimer();\n },\n methods: {\n show: function show() {\n var _this3 = this;\n\n if (!this.localShow) {\n this.ensureToaster();\n var showEvt = this.buildEvent('show');\n this.emitEvent(showEvt);\n this.dismissStarted = this.resumeDismiss = 0;\n this.order = Date.now() * (this.appendToast ? 1 : -1);\n this.isHiding = false;\n this.doRender = true;\n this.$nextTick(function () {\n // We show the toast after we have rendered the portal and b-toast wrapper\n // so that screen readers will properly announce the toast\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"w\" /* requestAF */])(function () {\n _this3.localShow = true;\n });\n });\n }\n },\n hide: function hide() {\n var _this4 = this;\n\n if (this.localShow) {\n var hideEvt = this.buildEvent('hide');\n this.emitEvent(hideEvt);\n this.setHoverHandler(false);\n this.dismissStarted = this.resumeDismiss = 0;\n this.clearDismissTimer();\n this.isHiding = true;\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"w\" /* requestAF */])(function () {\n _this4.localShow = false;\n });\n }\n },\n buildEvent: function buildEvent(type) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new __WEBPACK_IMPORTED_MODULE_3__utils_bv_event_class__[\"a\" /* BvEvent */](type, _objectSpread({\n cancelable: false,\n target: this.$el || null,\n relatedTarget: null\n }, opts, {\n vueTarget: this,\n componentId: this.safeId()\n }));\n },\n emitEvent: function emitEvent(bvEvt) {\n var type = bvEvt.type;\n this.$root.$emit(\"bv::toast:\".concat(type), bvEvt);\n this.$emit(type, bvEvt);\n },\n ensureToaster: function ensureToaster() {\n if (this.static) {\n return;\n }\n\n if (!__WEBPACK_IMPORTED_MODULE_1_portal_vue__[\"Wormhole\"].hasTarget(this.computedToaster)) {\n var div = document.createElement('div');\n document.body.appendChild(div);\n var toaster = new __WEBPACK_IMPORTED_MODULE_10__toaster__[\"a\" /* BToaster */]({\n parent: this.$root,\n propsData: {\n name: this.computedToaster\n }\n });\n toaster.$mount(div);\n }\n },\n startDismissTimer: function startDismissTimer() {\n this.clearDismissTimer();\n\n if (!this.noAutoHide) {\n this.timer = setTimeout(this.hide, this.resumeDismiss || this.computedDuration);\n this.dismissStarted = Date.now();\n this.resumeDismiss = 0;\n }\n },\n clearDismissTimer: function clearDismissTimer() {\n clearTimeout(this.timer);\n this.timer = null;\n },\n setHoverHandler: function setHoverHandler(on) {\n var method = on ? __WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"f\" /* eventOn */] : __WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"e\" /* eventOff */];\n var el = this.$refs['b-toast'];\n method(el, 'mouseenter', this.onPause, EVENT_OPTIONS);\n method(el, 'mouseleave', this.onUnPause, EVENT_OPTIONS);\n },\n onPause: function onPause(evt) {\n // Determine time remaining, and then pause timer\n if (this.noAutoHide || this.noHoverPause || !this.timer || this.resumeDismiss) {\n return;\n }\n\n var passed = Date.now() - this.dismissStarted;\n\n if (passed > 0) {\n this.clearDismissTimer();\n this.resumeDismiss = Math.max(this.computedDuration - passed, MIN_DURATION);\n }\n },\n onUnPause: function onUnPause(evt) {\n // Restart timer with max of time remaining or 1 second\n if (this.noAutoHide || this.noHoverPause || !this.resumeDismiss) {\n this.resumeDismiss = this.dismissStarted = 0;\n return;\n }\n\n this.startDismissTimer();\n },\n onLinkClick: function onLinkClick() {\n var _this5 = this;\n\n // We delay the close to allow time for the\n // browser to process the link click\n this.$nextTick(function () {\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"w\" /* requestAF */])(function () {\n _this5.hide();\n });\n });\n },\n onBeforeEnter: function onBeforeEnter() {\n this.isTransitioning = true;\n },\n onAfterEnter: function onAfterEnter() {\n this.isTransitioning = false;\n var hiddenEvt = this.buildEvent('shown');\n this.emitEvent(hiddenEvt);\n this.startDismissTimer();\n this.setHoverHandler(true);\n },\n onBeforeLeave: function onBeforeLeave() {\n this.isTransitioning = true;\n },\n onAfterLeave: function onAfterLeave() {\n this.isTransitioning = false;\n this.order = 0;\n this.resumeDismiss = this.dismissStarted = 0;\n var hiddenEvt = this.buildEvent('hidden');\n this.emitEvent(hiddenEvt);\n this.doRender = false;\n },\n makeToast: function makeToast(h) {\n var _this6 = this;\n\n // Render helper for generating the toast\n // Assemble the header content\n var $headerContent = [];\n var $title = this.normalizeSlot('toast-title', this.slotScope);\n\n if ($title) {\n $headerContent.push($title);\n } else if (this.title) {\n $headerContent.push(h('strong', {\n staticClass: 'mr-2'\n }, this.title));\n }\n\n if (!this.noCloseButton) {\n $headerContent.push(h(__WEBPACK_IMPORTED_MODULE_11__button_button_close__[\"a\" /* BButtonClose */], {\n staticClass: 'ml-auto mb-1',\n on: {\n click: function click(evt) {\n _this6.hide();\n }\n }\n }));\n } // Assemble the header (if needed)\n\n\n var $header = h();\n\n if ($headerContent.length > 0) {\n $header = h('header', {\n staticClass: 'toast-header',\n class: this.headerClass\n }, $headerContent);\n } // Toast body\n\n\n var isLink = this.href || this.to;\n var $body = h(isLink ? __WEBPACK_IMPORTED_MODULE_12__link_link__[\"a\" /* BLink */] : 'div', {\n staticClass: 'toast-body',\n class: this.bodyClass,\n props: isLink ? {\n to: this.to,\n href: this.href\n } : {},\n on: isLink ? {\n click: this.onLinkClick\n } : {}\n }, [this.normalizeSlot('default', this.slotScope) || h()]); // Build the toast\n\n var $toast = h('div', {\n key: \"toast-\".concat(this._uid),\n ref: 'toast',\n staticClass: 'toast',\n class: this.toastClass,\n attrs: _objectSpread({}, this.$attrs, {\n tabindex: '0',\n id: this.safeId()\n })\n }, [$header, $body]);\n return $toast;\n }\n },\n render: function render(h) {\n if (!this.doRender || !this.isMounted) {\n return h();\n }\n\n var name = \"b-toast-\".concat(this._uid); // If scoped styles are applied and the toast is not static,\n // make sure the scoped style data attribute is applied\n\n var scopedStyleAttrs = !this.static ? this.scopedStyleAttrs : {};\n return h(__WEBPACK_IMPORTED_MODULE_1_portal_vue__[\"Portal\"], {\n props: {\n name: name,\n to: this.computedToaster,\n order: this.order,\n slim: true,\n disabled: this.static\n }\n }, [h('div', {\n key: name,\n ref: 'b-toast',\n staticClass: 'b-toast',\n class: this.bToastClasses,\n attrs: _objectSpread({}, scopedStyleAttrs, {\n id: this.safeId('_toast_outer'),\n role: this.isHiding ? null : this.isStatus ? 'status' : 'alert',\n 'aria-live': this.isHiding ? null : this.isStatus ? 'polite' : 'assertive',\n 'aria-atomic': this.isHiding ? null : 'true'\n })\n }, [h(__WEBPACK_IMPORTED_MODULE_2__utils_bv_transition__[\"b\" /* default */], {\n props: {\n noFade: this.noFade\n },\n on: this.transitionHandlers\n }, [this.localShow ? this.makeToast(h) : h()])])]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90b2FzdC90b2FzdC5qcz9kYmE0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNZO0FBQ087QUFDQTtBQUNHO0FBQ087QUFDekI7QUFDc0I7QUFDQztBQUNPO0FBQy9CO0FBQ2lCO0FBQ2pCOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaUZBQWtCO0FBQy9CO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaUZBQWtCO0FBQy9CO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVLO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0EsV0FBVywyREFBTyxFQUFFLHVFQUFpQixFQUFFLHVFQUFrQixFQUFFLDJFQUFxQjtBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUSxxRUFBUztBQUNqQjtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLHFFQUFTO0FBQ25CO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxxRUFBUztBQUNqQjtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsaUJBQWlCLHNFQUFPO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxXQUFXLG9EQUFRO0FBQ25CO0FBQ0E7QUFDQSwwQkFBMEIsMkRBQVE7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0Esd0JBQXdCLDJEQUFPLEdBQUcsNERBQVE7QUFDMUM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUSxxRUFBUztBQUNqQjtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQSw4QkFBOEIsMkVBQVk7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87OztBQUdQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87OztBQUdQO0FBQ0EsNkJBQTZCLDBEQUFLO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQUs7QUFDZDtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU8sMERBQTBEOztBQUVqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNENBQTRDO0FBQzVDOztBQUVBO0FBQ0EsYUFBYSxrREFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLLEtBQUsscUVBQVk7QUFDdEI7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiOTEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBQb3J0YWwsIFdvcm1ob2xlIH0gZnJvbSAncG9ydGFsLXZ1ZSc7XG5pbXBvcnQgQlZUcmFuc2l0aW9uIGZyb20gJy4uLy4uL3V0aWxzL2J2LXRyYW5zaXRpb24nO1xuaW1wb3J0IHsgQnZFdmVudCB9IGZyb20gJy4uLy4uL3V0aWxzL2J2LWV2ZW50LmNsYXNzJztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyByZXF1ZXN0QUYsIGV2ZW50T24sIGV2ZW50T2ZmIH0gZnJvbSAnLi4vLi4vdXRpbHMvZG9tJztcbmltcG9ydCBpZE1peGluIGZyb20gJy4uLy4uL21peGlucy9pZCc7XG5pbXBvcnQgbGlzdGVuT25Sb290TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2xpc3Rlbi1vbi1yb290JztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JztcbmltcG9ydCBzY29wZWRTdHlsZUF0dHJzTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL3Njb3BlZC1zdHlsZS1hdHRycyc7XG5pbXBvcnQgeyBCVG9hc3RlciB9IGZyb20gJy4vdG9hc3Rlcic7XG5pbXBvcnQgeyBCQnV0dG9uQ2xvc2UgfSBmcm9tICcuLi9idXR0b24vYnV0dG9uLWNsb3NlJztcbmltcG9ydCB7IEJMaW5rIH0gZnJvbSAnLi4vbGluay9saW5rJzsgLy8gLS0tIENvbnN0YW50cyAtLS1cblxudmFyIE5BTUUgPSAnQlRvYXN0JztcbnZhciBNSU5fRFVSQVRJT04gPSAxMDAwO1xudmFyIEVWRU5UX09QVElPTlMgPSB7XG4gIHBhc3NpdmU6IHRydWUsXG4gIGNhcHR1cmU6IGZhbHNlXG59OyAvLyAtLS0gUHJvcHMgLS0tXG5cbmV4cG9ydCB2YXIgcHJvcHMgPSB7XG4gIGlkOiB7XG4gICAgLy8gRXZlbiB0aG91Z2ggdGhlIElEIHByb3AgaXMgcHJvdmlkZWQgYnkgaWRNaXhpbiwgd2VcbiAgICAvLyBhZGQgaXQgaGVyZSBmb3IgJGJ2VG9hc3QgcHJvcHMgZmlsdGVyaW5nXG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgdGl0bGU6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICB0b2FzdGVyOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAndG9hc3RlcicpO1xuICAgIH1cbiAgfSxcbiAgdmlzaWJsZToge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgdmFyaWFudDoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ3ZhcmlhbnQnKTtcbiAgICB9XG4gIH0sXG4gIGlzU3RhdHVzOiB7XG4gICAgLy8gU3dpdGNoZXMgcm9sZSB0byAnc3RhdHVzJyBhbmQgYXJpYS1saXZlIHRvICdwb2xpdGUnXG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBhcHBlbmRUb2FzdDoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgbm9BdXRvSGlkZToge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgYXV0b0hpZGVEZWxheToge1xuICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdhdXRvSGlkZURlbGF5Jyk7XG4gICAgfVxuICB9LFxuICBub0Nsb3NlQnV0dG9uOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBub0ZhZGU6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIG5vSG92ZXJQYXVzZToge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgc29saWQ6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIHRvYXN0Q2xhc3M6IHtcbiAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3QsIEFycmF5XSxcbiAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ3RvYXN0Q2xhc3MnKTtcbiAgICB9XG4gIH0sXG4gIGhlYWRlckNsYXNzOiB7XG4gICAgdHlwZTogW1N0cmluZywgT2JqZWN0LCBBcnJheV0sXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdoZWFkZXJDbGFzcycpO1xuICAgIH1cbiAgfSxcbiAgYm9keUNsYXNzOiB7XG4gICAgdHlwZTogW1N0cmluZywgT2JqZWN0LCBBcnJheV0sXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdib2R5Q2xhc3MnKTtcbiAgICB9XG4gIH0sXG4gIGhyZWY6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICB0bzoge1xuICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdF0sXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBzdGF0aWM6IHtcbiAgICAvLyBSZW5kZXIgdGhlIHRvYXN0IGluIHBsYWNlLCByYXRoZXIgdGhhbiBpbiBhIHBvcnRhbC10YXJnZXRcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQlRvYXN0ID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBtaXhpbnM6IFtpZE1peGluLCBsaXN0ZW5PblJvb3RNaXhpbiwgbm9ybWFsaXplU2xvdE1peGluLCBzY29wZWRTdHlsZUF0dHJzTWl4aW5dLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBtb2RlbDoge1xuICAgIHByb3A6ICd2aXNpYmxlJyxcbiAgICBldmVudDogJ2NoYW5nZSdcbiAgfSxcbiAgcHJvcHM6IHByb3BzLFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpc01vdW50ZWQ6IGZhbHNlLFxuICAgICAgZG9SZW5kZXI6IGZhbHNlLFxuICAgICAgbG9jYWxTaG93OiBmYWxzZSxcbiAgICAgIGlzVHJhbnNpdGlvbmluZzogZmFsc2UsXG4gICAgICBpc0hpZGluZzogZmFsc2UsXG4gICAgICBvcmRlcjogMCxcbiAgICAgIHRpbWVyOiBudWxsLFxuICAgICAgZGlzbWlzc1N0YXJ0ZWQ6IDAsXG4gICAgICByZXN1bWVEaXNtaXNzOiAwXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBiVG9hc3RDbGFzc2VzOiBmdW5jdGlvbiBiVG9hc3RDbGFzc2VzKCkge1xuICAgICAgcmV0dXJuIF9kZWZpbmVQcm9wZXJ0eSh7XG4gICAgICAgICdiLXRvYXN0LXNvbGlkJzogdGhpcy5zb2xpZCxcbiAgICAgICAgJ2ItdG9hc3QtYXBwZW5kJzogdGhpcy5hcHBlbmRUb2FzdCxcbiAgICAgICAgJ2ItdG9hc3QtcHJlcGVuZCc6ICF0aGlzLmFwcGVuZFRvYXN0XG4gICAgICB9LCBcImItdG9hc3QtXCIuY29uY2F0KHRoaXMudmFyaWFudCksIHRoaXMudmFyaWFudCk7XG4gICAgfSxcbiAgICBzbG90U2NvcGU6IGZ1bmN0aW9uIHNsb3RTY29wZSgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhpZGU6IHRoaXMuaGlkZVxuICAgICAgfTtcbiAgICB9LFxuICAgIGNvbXB1dGVkRHVyYXRpb246IGZ1bmN0aW9uIGNvbXB1dGVkRHVyYXRpb24oKSB7XG4gICAgICAvLyBNaW5pbXVtIHN1cHBvcnRlZCBkdXJhdGlvbiBpcyAxIHNlY29uZFxuICAgICAgcmV0dXJuIE1hdGgubWF4KHBhcnNlSW50KHRoaXMuYXV0b0hpZGVEZWxheSwgMTApIHx8IDAsIE1JTl9EVVJBVElPTik7XG4gICAgfSxcbiAgICBjb21wdXRlZFRvYXN0ZXI6IGZ1bmN0aW9uIGNvbXB1dGVkVG9hc3RlcigpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodGhpcy50b2FzdGVyKTtcbiAgICB9LFxuICAgIHRyYW5zaXRpb25IYW5kbGVyczogZnVuY3Rpb24gdHJhbnNpdGlvbkhhbmRsZXJzKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmVmb3JlRW50ZXI6IHRoaXMub25CZWZvcmVFbnRlcixcbiAgICAgICAgYWZ0ZXJFbnRlcjogdGhpcy5vbkFmdGVyRW50ZXIsXG4gICAgICAgIGJlZm9yZUxlYXZlOiB0aGlzLm9uQmVmb3JlTGVhdmUsXG4gICAgICAgIGFmdGVyTGVhdmU6IHRoaXMub25BZnRlckxlYXZlXG4gICAgICB9O1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICB2aXNpYmxlOiBmdW5jdGlvbiB2aXNpYmxlKG5ld1ZhbCkge1xuICAgICAgbmV3VmFsID8gdGhpcy5zaG93KCkgOiB0aGlzLmhpZGUoKTtcbiAgICB9LFxuICAgIGxvY2FsU2hvdzogZnVuY3Rpb24gbG9jYWxTaG93KG5ld1ZhbCkge1xuICAgICAgaWYgKG5ld1ZhbCAhPT0gdGhpcy52aXNpYmxlKSB7XG4gICAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIG5ld1ZhbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB0b2FzdGVyOiBmdW5jdGlvbiB0b2FzdGVyKG5ld1ZhbClcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIC8vIElmIHRvYXN0ZXIgdGFyZ2V0IGNoYW5nZWQsIG1ha2Ugc3VyZSB0b2FzdGVyIGV4aXN0c1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RoaXMuZW5zdXJlVG9hc3RlcjtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgc3RhdGljOiBmdW5jdGlvbiBfc3RhdGljKG5ld1ZhbClcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHtcbiAgICAgIC8vIElmIHN0YXRpYyBjaGFuZ2VzIHRvIHRydWUsIGFuZCB0aGUgdG9hc3QgaXMgc2hvd2luZyxcbiAgICAgIC8vIGVuc3VyZSB0aGUgdG9hc3RlciB0YXJnZXQgZXhpc3RzXG4gICAgICBpZiAobmV3VmFsICYmIHRoaXMubG9jYWxTaG93KSB7XG4gICAgICAgIHRoaXMuZW5zdXJlVG9hc3RlcigpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIHRoaXMuaXNNb3VudGVkID0gdHJ1ZTtcbiAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMyLnZpc2libGUpIHtcbiAgICAgICAgcmVxdWVzdEFGKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfdGhpczIuc2hvdygpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTsgLy8gTGlzdGVuIGZvciBnbG9iYWwgJHJvb3Qgc2hvdyBldmVudHNcblxuICAgIHRoaXMubGlzdGVuT25Sb290KCdidjo6c2hvdzo6dG9hc3QnLCBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIGlmIChpZCA9PT0gX3RoaXMyLnNhZmVJZCgpKSB7XG4gICAgICAgIF90aGlzMi5zaG93KCk7XG4gICAgICB9XG4gICAgfSk7IC8vIExpc3RlbiBmb3IgZ2xvYmFsICRyb290IGhpZGUgZXZlbnRzXG5cbiAgICB0aGlzLmxpc3Rlbk9uUm9vdCgnYnY6OmhpZGU6OnRvYXN0JywgZnVuY3Rpb24gKGlkKSB7XG4gICAgICBpZiAoIWlkIHx8IGlkID09PSBfdGhpczIuc2FmZUlkKCkpIHtcbiAgICAgICAgX3RoaXMyLmhpZGUoKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gTWFrZSBzdXJlIHdlIGhpZGUgd2hlbiB0b2FzdGVyIGlzIGRlc3Ryb3llZFxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGRpZmZpY3VsdCB0byB0ZXN0ICovXG5cbiAgICB0aGlzLmxpc3Rlbk9uUm9vdCgnYnY6OnRvYXN0ZXI6OmRlc3Ryb3llZCcsIGZ1bmN0aW9uICh0b2FzdGVyKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgaWYgKHRvYXN0ZXIgPT09IF90aGlzMi5jb21wdXRlZFRvYXN0ZXIpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgX3RoaXMyLmhpZGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICB0aGlzLmNsZWFyRGlzbWlzc1RpbWVyKCk7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBzaG93OiBmdW5jdGlvbiBzaG93KCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIGlmICghdGhpcy5sb2NhbFNob3cpIHtcbiAgICAgICAgdGhpcy5lbnN1cmVUb2FzdGVyKCk7XG4gICAgICAgIHZhciBzaG93RXZ0ID0gdGhpcy5idWlsZEV2ZW50KCdzaG93Jyk7XG4gICAgICAgIHRoaXMuZW1pdEV2ZW50KHNob3dFdnQpO1xuICAgICAgICB0aGlzLmRpc21pc3NTdGFydGVkID0gdGhpcy5yZXN1bWVEaXNtaXNzID0gMDtcbiAgICAgICAgdGhpcy5vcmRlciA9IERhdGUubm93KCkgKiAodGhpcy5hcHBlbmRUb2FzdCA/IDEgOiAtMSk7XG4gICAgICAgIHRoaXMuaXNIaWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5kb1JlbmRlciA9IHRydWU7XG4gICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAvLyBXZSBzaG93IHRoZSB0b2FzdCBhZnRlciB3ZSBoYXZlIHJlbmRlcmVkIHRoZSBwb3J0YWwgYW5kIGItdG9hc3Qgd3JhcHBlclxuICAgICAgICAgIC8vIHNvIHRoYXQgc2NyZWVuIHJlYWRlcnMgd2lsbCBwcm9wZXJseSBhbm5vdW5jZSB0aGUgdG9hc3RcbiAgICAgICAgICByZXF1ZXN0QUYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMzLmxvY2FsU2hvdyA9IHRydWU7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgaGlkZTogZnVuY3Rpb24gaGlkZSgpIHtcbiAgICAgIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5sb2NhbFNob3cpIHtcbiAgICAgICAgdmFyIGhpZGVFdnQgPSB0aGlzLmJ1aWxkRXZlbnQoJ2hpZGUnKTtcbiAgICAgICAgdGhpcy5lbWl0RXZlbnQoaGlkZUV2dCk7XG4gICAgICAgIHRoaXMuc2V0SG92ZXJIYW5kbGVyKGZhbHNlKTtcbiAgICAgICAgdGhpcy5kaXNtaXNzU3RhcnRlZCA9IHRoaXMucmVzdW1lRGlzbWlzcyA9IDA7XG4gICAgICAgIHRoaXMuY2xlYXJEaXNtaXNzVGltZXIoKTtcbiAgICAgICAgdGhpcy5pc0hpZGluZyA9IHRydWU7XG4gICAgICAgIHJlcXVlc3RBRihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXM0LmxvY2FsU2hvdyA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGJ1aWxkRXZlbnQ6IGZ1bmN0aW9uIGJ1aWxkRXZlbnQodHlwZSkge1xuICAgICAgdmFyIG9wdHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAgICAgcmV0dXJuIG5ldyBCdkV2ZW50KHR5cGUsIF9vYmplY3RTcHJlYWQoe1xuICAgICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgICAgdGFyZ2V0OiB0aGlzLiRlbCB8fCBudWxsLFxuICAgICAgICByZWxhdGVkVGFyZ2V0OiBudWxsXG4gICAgICB9LCBvcHRzLCB7XG4gICAgICAgIHZ1ZVRhcmdldDogdGhpcyxcbiAgICAgICAgY29tcG9uZW50SWQ6IHRoaXMuc2FmZUlkKClcbiAgICAgIH0pKTtcbiAgICB9LFxuICAgIGVtaXRFdmVudDogZnVuY3Rpb24gZW1pdEV2ZW50KGJ2RXZ0KSB7XG4gICAgICB2YXIgdHlwZSA9IGJ2RXZ0LnR5cGU7XG4gICAgICB0aGlzLiRyb290LiRlbWl0KFwiYnY6OnRvYXN0OlwiLmNvbmNhdCh0eXBlKSwgYnZFdnQpO1xuICAgICAgdGhpcy4kZW1pdCh0eXBlLCBidkV2dCk7XG4gICAgfSxcbiAgICBlbnN1cmVUb2FzdGVyOiBmdW5jdGlvbiBlbnN1cmVUb2FzdGVyKCkge1xuICAgICAgaWYgKHRoaXMuc3RhdGljKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFXb3JtaG9sZS5oYXNUYXJnZXQodGhpcy5jb21wdXRlZFRvYXN0ZXIpKSB7XG4gICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpO1xuICAgICAgICB2YXIgdG9hc3RlciA9IG5ldyBCVG9hc3Rlcih7XG4gICAgICAgICAgcGFyZW50OiB0aGlzLiRyb290LFxuICAgICAgICAgIHByb3BzRGF0YToge1xuICAgICAgICAgICAgbmFtZTogdGhpcy5jb21wdXRlZFRvYXN0ZXJcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0b2FzdGVyLiRtb3VudChkaXYpO1xuICAgICAgfVxuICAgIH0sXG4gICAgc3RhcnREaXNtaXNzVGltZXI6IGZ1bmN0aW9uIHN0YXJ0RGlzbWlzc1RpbWVyKCkge1xuICAgICAgdGhpcy5jbGVhckRpc21pc3NUaW1lcigpO1xuXG4gICAgICBpZiAoIXRoaXMubm9BdXRvSGlkZSkge1xuICAgICAgICB0aGlzLnRpbWVyID0gc2V0VGltZW91dCh0aGlzLmhpZGUsIHRoaXMucmVzdW1lRGlzbWlzcyB8fCB0aGlzLmNvbXB1dGVkRHVyYXRpb24pO1xuICAgICAgICB0aGlzLmRpc21pc3NTdGFydGVkID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdGhpcy5yZXN1bWVEaXNtaXNzID0gMDtcbiAgICAgIH1cbiAgICB9LFxuICAgIGNsZWFyRGlzbWlzc1RpbWVyOiBmdW5jdGlvbiBjbGVhckRpc21pc3NUaW1lcigpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcbiAgICAgIHRoaXMudGltZXIgPSBudWxsO1xuICAgIH0sXG4gICAgc2V0SG92ZXJIYW5kbGVyOiBmdW5jdGlvbiBzZXRIb3ZlckhhbmRsZXIob24pIHtcbiAgICAgIHZhciBtZXRob2QgPSBvbiA/IGV2ZW50T24gOiBldmVudE9mZjtcbiAgICAgIHZhciBlbCA9IHRoaXMuJHJlZnNbJ2ItdG9hc3QnXTtcbiAgICAgIG1ldGhvZChlbCwgJ21vdXNlZW50ZXInLCB0aGlzLm9uUGF1c2UsIEVWRU5UX09QVElPTlMpO1xuICAgICAgbWV0aG9kKGVsLCAnbW91c2VsZWF2ZScsIHRoaXMub25VblBhdXNlLCBFVkVOVF9PUFRJT05TKTtcbiAgICB9LFxuICAgIG9uUGF1c2U6IGZ1bmN0aW9uIG9uUGF1c2UoZXZ0KSB7XG4gICAgICAvLyBEZXRlcm1pbmUgdGltZSByZW1haW5pbmcsIGFuZCB0aGVuIHBhdXNlIHRpbWVyXG4gICAgICBpZiAodGhpcy5ub0F1dG9IaWRlIHx8IHRoaXMubm9Ib3ZlclBhdXNlIHx8ICF0aGlzLnRpbWVyIHx8IHRoaXMucmVzdW1lRGlzbWlzcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBwYXNzZWQgPSBEYXRlLm5vdygpIC0gdGhpcy5kaXNtaXNzU3RhcnRlZDtcblxuICAgICAgaWYgKHBhc3NlZCA+IDApIHtcbiAgICAgICAgdGhpcy5jbGVhckRpc21pc3NUaW1lcigpO1xuICAgICAgICB0aGlzLnJlc3VtZURpc21pc3MgPSBNYXRoLm1heCh0aGlzLmNvbXB1dGVkRHVyYXRpb24gLSBwYXNzZWQsIE1JTl9EVVJBVElPTik7XG4gICAgICB9XG4gICAgfSxcbiAgICBvblVuUGF1c2U6IGZ1bmN0aW9uIG9uVW5QYXVzZShldnQpIHtcbiAgICAgIC8vIFJlc3RhcnQgdGltZXIgd2l0aCBtYXggb2YgdGltZSByZW1haW5pbmcgb3IgMSBzZWNvbmRcbiAgICAgIGlmICh0aGlzLm5vQXV0b0hpZGUgfHwgdGhpcy5ub0hvdmVyUGF1c2UgfHwgIXRoaXMucmVzdW1lRGlzbWlzcykge1xuICAgICAgICB0aGlzLnJlc3VtZURpc21pc3MgPSB0aGlzLmRpc21pc3NTdGFydGVkID0gMDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnN0YXJ0RGlzbWlzc1RpbWVyKCk7XG4gICAgfSxcbiAgICBvbkxpbmtDbGljazogZnVuY3Rpb24gb25MaW5rQ2xpY2soKSB7XG4gICAgICB2YXIgX3RoaXM1ID0gdGhpcztcblxuICAgICAgLy8gV2UgZGVsYXkgdGhlIGNsb3NlIHRvIGFsbG93IHRpbWUgZm9yIHRoZVxuICAgICAgLy8gYnJvd3NlciB0byBwcm9jZXNzIHRoZSBsaW5rIGNsaWNrXG4gICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJlcXVlc3RBRihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXM1LmhpZGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uQmVmb3JlRW50ZXI6IGZ1bmN0aW9uIG9uQmVmb3JlRW50ZXIoKSB7XG4gICAgICB0aGlzLmlzVHJhbnNpdGlvbmluZyA9IHRydWU7XG4gICAgfSxcbiAgICBvbkFmdGVyRW50ZXI6IGZ1bmN0aW9uIG9uQWZ0ZXJFbnRlcigpIHtcbiAgICAgIHRoaXMuaXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7XG4gICAgICB2YXIgaGlkZGVuRXZ0ID0gdGhpcy5idWlsZEV2ZW50KCdzaG93bicpO1xuICAgICAgdGhpcy5lbWl0RXZlbnQoaGlkZGVuRXZ0KTtcbiAgICAgIHRoaXMuc3RhcnREaXNtaXNzVGltZXIoKTtcbiAgICAgIHRoaXMuc2V0SG92ZXJIYW5kbGVyKHRydWUpO1xuICAgIH0sXG4gICAgb25CZWZvcmVMZWF2ZTogZnVuY3Rpb24gb25CZWZvcmVMZWF2ZSgpIHtcbiAgICAgIHRoaXMuaXNUcmFuc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICB9LFxuICAgIG9uQWZ0ZXJMZWF2ZTogZnVuY3Rpb24gb25BZnRlckxlYXZlKCkge1xuICAgICAgdGhpcy5pc1RyYW5zaXRpb25pbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMub3JkZXIgPSAwO1xuICAgICAgdGhpcy5yZXN1bWVEaXNtaXNzID0gdGhpcy5kaXNtaXNzU3RhcnRlZCA9IDA7XG4gICAgICB2YXIgaGlkZGVuRXZ0ID0gdGhpcy5idWlsZEV2ZW50KCdoaWRkZW4nKTtcbiAgICAgIHRoaXMuZW1pdEV2ZW50KGhpZGRlbkV2dCk7XG4gICAgICB0aGlzLmRvUmVuZGVyID0gZmFsc2U7XG4gICAgfSxcbiAgICBtYWtlVG9hc3Q6IGZ1bmN0aW9uIG1ha2VUb2FzdChoKSB7XG4gICAgICB2YXIgX3RoaXM2ID0gdGhpcztcblxuICAgICAgLy8gUmVuZGVyIGhlbHBlciBmb3IgZ2VuZXJhdGluZyB0aGUgdG9hc3RcbiAgICAgIC8vIEFzc2VtYmxlIHRoZSBoZWFkZXIgY29udGVudFxuICAgICAgdmFyICRoZWFkZXJDb250ZW50ID0gW107XG4gICAgICB2YXIgJHRpdGxlID0gdGhpcy5ub3JtYWxpemVTbG90KCd0b2FzdC10aXRsZScsIHRoaXMuc2xvdFNjb3BlKTtcblxuICAgICAgaWYgKCR0aXRsZSkge1xuICAgICAgICAkaGVhZGVyQ29udGVudC5wdXNoKCR0aXRsZSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudGl0bGUpIHtcbiAgICAgICAgJGhlYWRlckNvbnRlbnQucHVzaChoKCdzdHJvbmcnLCB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6ICdtci0yJ1xuICAgICAgICB9LCB0aGlzLnRpdGxlKSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5ub0Nsb3NlQnV0dG9uKSB7XG4gICAgICAgICRoZWFkZXJDb250ZW50LnB1c2goaChCQnV0dG9uQ2xvc2UsIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogJ21sLWF1dG8gbWItMScsXG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbiBjbGljayhldnQpIHtcbiAgICAgICAgICAgICAgX3RoaXM2LmhpZGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgICAgIH0gLy8gQXNzZW1ibGUgdGhlIGhlYWRlciAoaWYgbmVlZGVkKVxuXG5cbiAgICAgIHZhciAkaGVhZGVyID0gaCgpO1xuXG4gICAgICBpZiAoJGhlYWRlckNvbnRlbnQubGVuZ3RoID4gMCkge1xuICAgICAgICAkaGVhZGVyID0gaCgnaGVhZGVyJywge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiAndG9hc3QtaGVhZGVyJyxcbiAgICAgICAgICBjbGFzczogdGhpcy5oZWFkZXJDbGFzc1xuICAgICAgICB9LCAkaGVhZGVyQ29udGVudCk7XG4gICAgICB9IC8vIFRvYXN0IGJvZHlcblxuXG4gICAgICB2YXIgaXNMaW5rID0gdGhpcy5ocmVmIHx8IHRoaXMudG87XG4gICAgICB2YXIgJGJvZHkgPSBoKGlzTGluayA/IEJMaW5rIDogJ2RpdicsIHtcbiAgICAgICAgc3RhdGljQ2xhc3M6ICd0b2FzdC1ib2R5JyxcbiAgICAgICAgY2xhc3M6IHRoaXMuYm9keUNsYXNzLFxuICAgICAgICBwcm9wczogaXNMaW5rID8ge1xuICAgICAgICAgIHRvOiB0aGlzLnRvLFxuICAgICAgICAgIGhyZWY6IHRoaXMuaHJlZlxuICAgICAgICB9IDoge30sXG4gICAgICAgIG9uOiBpc0xpbmsgPyB7XG4gICAgICAgICAgY2xpY2s6IHRoaXMub25MaW5rQ2xpY2tcbiAgICAgICAgfSA6IHt9XG4gICAgICB9LCBbdGhpcy5ub3JtYWxpemVTbG90KCdkZWZhdWx0JywgdGhpcy5zbG90U2NvcGUpIHx8IGgoKV0pOyAvLyBCdWlsZCB0aGUgdG9hc3RcblxuICAgICAgdmFyICR0b2FzdCA9IGgoJ2RpdicsIHtcbiAgICAgICAga2V5OiBcInRvYXN0LVwiLmNvbmNhdCh0aGlzLl91aWQpLFxuICAgICAgICByZWY6ICd0b2FzdCcsXG4gICAgICAgIHN0YXRpY0NsYXNzOiAndG9hc3QnLFxuICAgICAgICBjbGFzczogdGhpcy50b2FzdENsYXNzLFxuICAgICAgICBhdHRyczogX29iamVjdFNwcmVhZCh7fSwgdGhpcy4kYXR0cnMsIHtcbiAgICAgICAgICB0YWJpbmRleDogJzAnLFxuICAgICAgICAgIGlkOiB0aGlzLnNhZmVJZCgpXG4gICAgICAgIH0pXG4gICAgICB9LCBbJGhlYWRlciwgJGJvZHldKTtcbiAgICAgIHJldHVybiAkdG9hc3Q7XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgaWYgKCF0aGlzLmRvUmVuZGVyIHx8ICF0aGlzLmlzTW91bnRlZCkge1xuICAgICAgcmV0dXJuIGgoKTtcbiAgICB9XG5cbiAgICB2YXIgbmFtZSA9IFwiYi10b2FzdC1cIi5jb25jYXQodGhpcy5fdWlkKTsgLy8gSWYgc2NvcGVkIHN0eWxlcyBhcmUgYXBwbGllZCBhbmQgdGhlIHRvYXN0IGlzIG5vdCBzdGF0aWMsXG4gICAgLy8gbWFrZSBzdXJlIHRoZSBzY29wZWQgc3R5bGUgZGF0YSBhdHRyaWJ1dGUgaXMgYXBwbGllZFxuXG4gICAgdmFyIHNjb3BlZFN0eWxlQXR0cnMgPSAhdGhpcy5zdGF0aWMgPyB0aGlzLnNjb3BlZFN0eWxlQXR0cnMgOiB7fTtcbiAgICByZXR1cm4gaChQb3J0YWwsIHtcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIHRvOiB0aGlzLmNvbXB1dGVkVG9hc3RlcixcbiAgICAgICAgb3JkZXI6IHRoaXMub3JkZXIsXG4gICAgICAgIHNsaW06IHRydWUsXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLnN0YXRpY1xuICAgICAgfVxuICAgIH0sIFtoKCdkaXYnLCB7XG4gICAgICBrZXk6IG5hbWUsXG4gICAgICByZWY6ICdiLXRvYXN0JyxcbiAgICAgIHN0YXRpY0NsYXNzOiAnYi10b2FzdCcsXG4gICAgICBjbGFzczogdGhpcy5iVG9hc3RDbGFzc2VzLFxuICAgICAgYXR0cnM6IF9vYmplY3RTcHJlYWQoe30sIHNjb3BlZFN0eWxlQXR0cnMsIHtcbiAgICAgICAgaWQ6IHRoaXMuc2FmZUlkKCdfdG9hc3Rfb3V0ZXInKSxcbiAgICAgICAgcm9sZTogdGhpcy5pc0hpZGluZyA/IG51bGwgOiB0aGlzLmlzU3RhdHVzID8gJ3N0YXR1cycgOiAnYWxlcnQnLFxuICAgICAgICAnYXJpYS1saXZlJzogdGhpcy5pc0hpZGluZyA/IG51bGwgOiB0aGlzLmlzU3RhdHVzID8gJ3BvbGl0ZScgOiAnYXNzZXJ0aXZlJyxcbiAgICAgICAgJ2FyaWEtYXRvbWljJzogdGhpcy5pc0hpZGluZyA/IG51bGwgOiAndHJ1ZSdcbiAgICAgIH0pXG4gICAgfSwgW2goQlZUcmFuc2l0aW9uLCB7XG4gICAgICBwcm9wczoge1xuICAgICAgICBub0ZhZGU6IHRoaXMubm9GYWRlXG4gICAgICB9LFxuICAgICAgb246IHRoaXMudHJhbnNpdGlvbkhhbmRsZXJzXG4gICAgfSwgW3RoaXMubG9jYWxTaG93ID8gdGhpcy5tYWtlVG9hc3QoaCkgOiBoKCldKV0pXSk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdG9hc3QvdG9hc3QuanNcbi8vIG1vZHVsZSBpZCA9IDkxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///91\n"); /***/ }), /* 92 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* unused harmony export DefaultTransition */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BToaster; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_portal_vue__ = __webpack_require__(216);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_portal_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_portal_vue__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_warn__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_dom__ = __webpack_require__(6);\n\n\n\n\n // --- Constants ---\n\nvar NAME = 'BToaster';\nvar props = {\n name: {\n type: String,\n required: true\n },\n ariaLive: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'ariaLive');\n }\n },\n ariaAtomic: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'ariaAtomic');\n } // Allowed: 'true' or 'false' or null\n\n },\n role: {\n // Aria role\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'role');\n }\n }\n /*\n transition: {\n type: [Boolean, String, Object],\n default: false\n }\n */\n\n}; // @vue/component\n\nvar DefaultTransition =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n data: function data() {\n return {\n // Transition classes base name\n name: 'b-toaster'\n };\n },\n methods: {\n onAfterEnter: function onAfterEnter(el) {\n var _this = this;\n\n // Handle bug where enter-to class is not removed.\n // Bug is related to portal-vue and transition-groups.\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"w\" /* requestAF */])(function () {\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"v\" /* removeClass */])(el, \"\".concat(_this.name, \"-enter-to\")); // The *-move class is also stuck on elements that moved,\n // but there are no javascript hooks to handle after move.\n });\n }\n },\n render: function render(h) {\n return h('transition-group', {\n props: {\n tag: 'div',\n name: this.name\n },\n on: {\n afterEnter: this.onAfterEnter\n }\n }, this.$slots.default);\n }\n}); // @vue/component\n\nvar BToaster =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n props: props,\n data: function data() {\n return {\n // We don't render on SSR or if a an existing target found\n doRender: false,\n dead: false,\n // Toaster names cannot change once created\n staticName: this.name\n };\n },\n beforeMount: function beforeMount() {\n var _this2 = this;\n\n this.staticName = this.name;\n /* istanbul ignore if */\n\n if (__WEBPACK_IMPORTED_MODULE_1_portal_vue__[\"Wormhole\"].hasTarget(this.staticName)) {\n Object(__WEBPACK_IMPORTED_MODULE_2__utils_warn__[\"a\" /* default */])(\"b-toaster: A <portal-target> with name '\".concat(this.name, \"' already exists in the document.\"));\n this.dead = true;\n } else {\n this.doRender = true;\n this.$once('hook:beforeDestroy', function () {\n // Let toasts made with `this.$bvToast.toast()` know that this toaster\n // is being destroyed and should should also destroy/hide themselves\n _this2.$root.$emit('bv::toaster::destroyed', _this2.staticName);\n });\n }\n },\n destroyed: function destroyed() {\n // Remove from DOM if needed\n\n /* istanbul ignore next: difficult to test */\n if (this.$el && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n },\n render: function render(h) {\n var $toaster = h('div', {\n class: ['d-none', {\n 'b-dead-toaster': this.dead\n }]\n });\n\n if (this.doRender) {\n var $target = h(__WEBPACK_IMPORTED_MODULE_1_portal_vue__[\"PortalTarget\"], {\n staticClass: 'b-toaster-slot',\n props: {\n name: this.staticName,\n multiple: true,\n tag: 'div',\n slim: false,\n // transition: this.transition || DefaultTransition\n transition: DefaultTransition\n }\n });\n $toaster = h('div', {\n staticClass: 'b-toaster',\n class: [this.staticName],\n attrs: {\n id: this.staticName,\n role: this.role || null,\n // Fallback to null to make sure attribute doesn't exist\n 'aria-live': this.ariaLive,\n 'aria-atomic': this.ariaAtomic\n }\n }, [$target]);\n }\n\n return $toaster;\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90b2FzdC90b2FzdGVyLmpzP2E1MTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ2tCO0FBQ2hCO0FBQ29CO0FBQ0M7O0FBRXpEO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRkFBa0I7QUFDL0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRkFBa0I7QUFDL0IsS0FBSzs7QUFFTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUU7O0FBRUs7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU0scUVBQVM7QUFDZixRQUFRLHVFQUFXLHlDQUF5QztBQUM1RDtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMsRUFBRTs7QUFFSTtBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsUUFBUSxvREFBUTtBQUNoQixNQUFNLG9FQUFJO0FBQ1Y7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQSxzQkFBc0Isd0RBQVk7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6IjkyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgUG9ydGFsVGFyZ2V0LCBXb3JtaG9sZSB9IGZyb20gJ3BvcnRhbC12dWUnO1xuaW1wb3J0IHdhcm4gZnJvbSAnLi4vLi4vdXRpbHMvd2Fybic7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi8uLi91dGlscy9jb25maWcnO1xuaW1wb3J0IHsgcmVtb3ZlQ2xhc3MsIHJlcXVlc3RBRiB9IGZyb20gJy4uLy4uL3V0aWxzL2RvbSc7IC8vIC0tLSBDb25zdGFudHMgLS0tXG5cbnZhciBOQU1FID0gJ0JUb2FzdGVyJztcbmV4cG9ydCB2YXIgcHJvcHMgPSB7XG4gIG5hbWU6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgcmVxdWlyZWQ6IHRydWVcbiAgfSxcbiAgYXJpYUxpdmU6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdhcmlhTGl2ZScpO1xuICAgIH1cbiAgfSxcbiAgYXJpYUF0b21pYzoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ2FyaWFBdG9taWMnKTtcbiAgICB9IC8vIEFsbG93ZWQ6ICd0cnVlJyBvciAnZmFsc2UnIG9yIG51bGxcblxuICB9LFxuICByb2xlOiB7XG4gICAgLy8gQXJpYSByb2xlXG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAncm9sZScpO1xuICAgIH1cbiAgfVxuICAvKlxuICB0cmFuc2l0aW9uOiB7XG4gICAgdHlwZTogW0Jvb2xlYW4sIFN0cmluZywgT2JqZWN0XSxcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9XG4gICovXG5cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgRGVmYXVsdFRyYW5zaXRpb24gPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIFRyYW5zaXRpb24gY2xhc3NlcyBiYXNlIG5hbWVcbiAgICAgIG5hbWU6ICdiLXRvYXN0ZXInXG4gICAgfTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIG9uQWZ0ZXJFbnRlcjogZnVuY3Rpb24gb25BZnRlckVudGVyKGVsKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAvLyBIYW5kbGUgYnVnIHdoZXJlIGVudGVyLXRvIGNsYXNzIGlzIG5vdCByZW1vdmVkLlxuICAgICAgLy8gQnVnIGlzIHJlbGF0ZWQgdG8gcG9ydGFsLXZ1ZSBhbmQgdHJhbnNpdGlvbi1ncm91cHMuXG4gICAgICByZXF1ZXN0QUYoZnVuY3Rpb24gKCkge1xuICAgICAgICByZW1vdmVDbGFzcyhlbCwgXCJcIi5jb25jYXQoX3RoaXMubmFtZSwgXCItZW50ZXItdG9cIikpOyAvLyBUaGUgKi1tb3ZlIGNsYXNzIGlzIGFsc28gc3R1Y2sgb24gZWxlbWVudHMgdGhhdCBtb3ZlZCxcbiAgICAgICAgLy8gYnV0IHRoZXJlIGFyZSBubyBqYXZhc2NyaXB0IGhvb2tzIHRvIGhhbmRsZSBhZnRlciBtb3ZlLlxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgcmV0dXJuIGgoJ3RyYW5zaXRpb24tZ3JvdXAnLCB7XG4gICAgICBwcm9wczoge1xuICAgICAgICB0YWc6ICdkaXYnLFxuICAgICAgICBuYW1lOiB0aGlzLm5hbWVcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAgICBhZnRlckVudGVyOiB0aGlzLm9uQWZ0ZXJFbnRlclxuICAgICAgfVxuICAgIH0sIHRoaXMuJHNsb3RzLmRlZmF1bHQpO1xuICB9XG59KTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCVG9hc3RlciA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogTkFNRSxcbiAgcHJvcHM6IHByb3BzLFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICAvLyBXZSBkb24ndCByZW5kZXIgb24gU1NSIG9yIGlmIGEgYW4gZXhpc3RpbmcgdGFyZ2V0IGZvdW5kXG4gICAgICBkb1JlbmRlcjogZmFsc2UsXG4gICAgICBkZWFkOiBmYWxzZSxcbiAgICAgIC8vIFRvYXN0ZXIgbmFtZXMgY2Fubm90IGNoYW5nZSBvbmNlIGNyZWF0ZWRcbiAgICAgIHN0YXRpY05hbWU6IHRoaXMubmFtZVxuICAgIH07XG4gIH0sXG4gIGJlZm9yZU1vdW50OiBmdW5jdGlvbiBiZWZvcmVNb3VudCgpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIHRoaXMuc3RhdGljTmFtZSA9IHRoaXMubmFtZTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cblxuICAgIGlmIChXb3JtaG9sZS5oYXNUYXJnZXQodGhpcy5zdGF0aWNOYW1lKSkge1xuICAgICAgd2FybihcImItdG9hc3RlcjogQSA8cG9ydGFsLXRhcmdldD4gd2l0aCBuYW1lICdcIi5jb25jYXQodGhpcy5uYW1lLCBcIicgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGRvY3VtZW50LlwiKSk7XG4gICAgICB0aGlzLmRlYWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRvUmVuZGVyID0gdHJ1ZTtcbiAgICAgIHRoaXMuJG9uY2UoJ2hvb2s6YmVmb3JlRGVzdHJveScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gTGV0IHRvYXN0cyBtYWRlIHdpdGggYHRoaXMuJGJ2VG9hc3QudG9hc3QoKWAga25vdyB0aGF0IHRoaXMgdG9hc3RlclxuICAgICAgICAvLyBpcyBiZWluZyBkZXN0cm95ZWQgYW5kIHNob3VsZCBzaG91bGQgYWxzbyBkZXN0cm95L2hpZGUgdGhlbXNlbHZlc1xuICAgICAgICBfdGhpczIuJHJvb3QuJGVtaXQoJ2J2Ojp0b2FzdGVyOjpkZXN0cm95ZWQnLCBfdGhpczIuc3RhdGljTmFtZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkKCkge1xuICAgIC8vIFJlbW92ZSBmcm9tIERPTSBpZiBuZWVkZWRcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBkaWZmaWN1bHQgdG8gdGVzdCAqL1xuICAgIGlmICh0aGlzLiRlbCAmJiB0aGlzLiRlbC5wYXJlbnROb2RlKSB7XG4gICAgICB0aGlzLiRlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuJGVsKTtcbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgJHRvYXN0ZXIgPSBoKCdkaXYnLCB7XG4gICAgICBjbGFzczogWydkLW5vbmUnLCB7XG4gICAgICAgICdiLWRlYWQtdG9hc3Rlcic6IHRoaXMuZGVhZFxuICAgICAgfV1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmRvUmVuZGVyKSB7XG4gICAgICB2YXIgJHRhcmdldCA9IGgoUG9ydGFsVGFyZ2V0LCB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiAnYi10b2FzdGVyLXNsb3QnLFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgIG5hbWU6IHRoaXMuc3RhdGljTmFtZSxcbiAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICB0YWc6ICdkaXYnLFxuICAgICAgICAgIHNsaW06IGZhbHNlLFxuICAgICAgICAgIC8vIHRyYW5zaXRpb246IHRoaXMudHJhbnNpdGlvbiB8fCBEZWZhdWx0VHJhbnNpdGlvblxuICAgICAgICAgIHRyYW5zaXRpb246IERlZmF1bHRUcmFuc2l0aW9uXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgJHRvYXN0ZXIgPSBoKCdkaXYnLCB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiAnYi10b2FzdGVyJyxcbiAgICAgICAgY2xhc3M6IFt0aGlzLnN0YXRpY05hbWVdLFxuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIGlkOiB0aGlzLnN0YXRpY05hbWUsXG4gICAgICAgICAgcm9sZTogdGhpcy5yb2xlIHx8IG51bGwsXG4gICAgICAgICAgLy8gRmFsbGJhY2sgdG8gbnVsbCB0byBtYWtlIHN1cmUgYXR0cmlidXRlIGRvZXNuJ3QgZXhpc3RcbiAgICAgICAgICAnYXJpYS1saXZlJzogdGhpcy5hcmlhTGl2ZSxcbiAgICAgICAgICAnYXJpYS1hdG9taWMnOiB0aGlzLmFyaWFBdG9taWNcbiAgICAgICAgfVxuICAgICAgfSwgWyR0YXJnZXRdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gJHRvYXN0ZXI7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdG9hc3QvdG9hc3Rlci5qc1xuLy8gbW9kdWxlIGlkID0gOTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///92\n"); +eval("/* unused harmony export props */\n/* unused harmony export DefaultTransition */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BToaster; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_portal_vue__ = __webpack_require__(218);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_portal_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_portal_vue__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_warn__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_dom__ = __webpack_require__(6);\n\n\n\n\n // --- Constants ---\n\nvar NAME = 'BToaster';\nvar props = {\n name: {\n type: String,\n required: true\n },\n ariaLive: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'ariaLive');\n }\n },\n ariaAtomic: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'ariaAtomic');\n } // Allowed: 'true' or 'false' or null\n\n },\n role: {\n // Aria role\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'role');\n }\n }\n /*\n transition: {\n type: [Boolean, String, Object],\n default: false\n }\n */\n\n}; // @vue/component\n\nvar DefaultTransition =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n data: function data() {\n return {\n // Transition classes base name\n name: 'b-toaster'\n };\n },\n methods: {\n onAfterEnter: function onAfterEnter(el) {\n var _this = this;\n\n // Handle bug where enter-to class is not removed.\n // Bug is related to portal-vue and transition-groups.\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"w\" /* requestAF */])(function () {\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"v\" /* removeClass */])(el, \"\".concat(_this.name, \"-enter-to\")); // The *-move class is also stuck on elements that moved,\n // but there are no javascript hooks to handle after move.\n });\n }\n },\n render: function render(h) {\n return h('transition-group', {\n props: {\n tag: 'div',\n name: this.name\n },\n on: {\n afterEnter: this.onAfterEnter\n }\n }, this.$slots.default);\n }\n}); // @vue/component\n\nvar BToaster =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n props: props,\n data: function data() {\n return {\n // We don't render on SSR or if a an existing target found\n doRender: false,\n dead: false,\n // Toaster names cannot change once created\n staticName: this.name\n };\n },\n beforeMount: function beforeMount() {\n var _this2 = this;\n\n this.staticName = this.name;\n /* istanbul ignore if */\n\n if (__WEBPACK_IMPORTED_MODULE_1_portal_vue__[\"Wormhole\"].hasTarget(this.staticName)) {\n Object(__WEBPACK_IMPORTED_MODULE_2__utils_warn__[\"a\" /* default */])(\"b-toaster: A <portal-target> with name '\".concat(this.name, \"' already exists in the document.\"));\n this.dead = true;\n } else {\n this.doRender = true;\n this.$once('hook:beforeDestroy', function () {\n // Let toasts made with `this.$bvToast.toast()` know that this toaster\n // is being destroyed and should should also destroy/hide themselves\n _this2.$root.$emit('bv::toaster::destroyed', _this2.staticName);\n });\n }\n },\n destroyed: function destroyed() {\n // Remove from DOM if needed\n\n /* istanbul ignore next: difficult to test */\n if (this.$el && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n },\n render: function render(h) {\n var $toaster = h('div', {\n class: ['d-none', {\n 'b-dead-toaster': this.dead\n }]\n });\n\n if (this.doRender) {\n var $target = h(__WEBPACK_IMPORTED_MODULE_1_portal_vue__[\"PortalTarget\"], {\n staticClass: 'b-toaster-slot',\n props: {\n name: this.staticName,\n multiple: true,\n tag: 'div',\n slim: false,\n // transition: this.transition || DefaultTransition\n transition: DefaultTransition\n }\n });\n $toaster = h('div', {\n staticClass: 'b-toaster',\n class: [this.staticName],\n attrs: {\n id: this.staticName,\n role: this.role || null,\n // Fallback to null to make sure attribute doesn't exist\n 'aria-live': this.ariaLive,\n 'aria-atomic': this.ariaAtomic\n }\n }, [$target]);\n }\n\n return $toaster;\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90b2FzdC90b2FzdGVyLmpzP2E1MTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ2tCO0FBQ2hCO0FBQ29CO0FBQ0M7O0FBRXpEO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRkFBa0I7QUFDL0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRkFBa0I7QUFDL0IsS0FBSzs7QUFFTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUU7O0FBRUs7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU0scUVBQVM7QUFDZixRQUFRLHVFQUFXLHlDQUF5QztBQUM1RDtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMsRUFBRTs7QUFFSTtBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsUUFBUSxvREFBUTtBQUNoQixNQUFNLG9FQUFJO0FBQ1Y7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQSxzQkFBc0Isd0RBQVk7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6IjkyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgUG9ydGFsVGFyZ2V0LCBXb3JtaG9sZSB9IGZyb20gJ3BvcnRhbC12dWUnO1xuaW1wb3J0IHdhcm4gZnJvbSAnLi4vLi4vdXRpbHMvd2Fybic7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi8uLi91dGlscy9jb25maWcnO1xuaW1wb3J0IHsgcmVtb3ZlQ2xhc3MsIHJlcXVlc3RBRiB9IGZyb20gJy4uLy4uL3V0aWxzL2RvbSc7IC8vIC0tLSBDb25zdGFudHMgLS0tXG5cbnZhciBOQU1FID0gJ0JUb2FzdGVyJztcbmV4cG9ydCB2YXIgcHJvcHMgPSB7XG4gIG5hbWU6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgcmVxdWlyZWQ6IHRydWVcbiAgfSxcbiAgYXJpYUxpdmU6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdhcmlhTGl2ZScpO1xuICAgIH1cbiAgfSxcbiAgYXJpYUF0b21pYzoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ2FyaWFBdG9taWMnKTtcbiAgICB9IC8vIEFsbG93ZWQ6ICd0cnVlJyBvciAnZmFsc2UnIG9yIG51bGxcblxuICB9LFxuICByb2xlOiB7XG4gICAgLy8gQXJpYSByb2xlXG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAncm9sZScpO1xuICAgIH1cbiAgfVxuICAvKlxuICB0cmFuc2l0aW9uOiB7XG4gICAgdHlwZTogW0Jvb2xlYW4sIFN0cmluZywgT2JqZWN0XSxcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9XG4gICovXG5cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgRGVmYXVsdFRyYW5zaXRpb24gPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIFRyYW5zaXRpb24gY2xhc3NlcyBiYXNlIG5hbWVcbiAgICAgIG5hbWU6ICdiLXRvYXN0ZXInXG4gICAgfTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIG9uQWZ0ZXJFbnRlcjogZnVuY3Rpb24gb25BZnRlckVudGVyKGVsKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAvLyBIYW5kbGUgYnVnIHdoZXJlIGVudGVyLXRvIGNsYXNzIGlzIG5vdCByZW1vdmVkLlxuICAgICAgLy8gQnVnIGlzIHJlbGF0ZWQgdG8gcG9ydGFsLXZ1ZSBhbmQgdHJhbnNpdGlvbi1ncm91cHMuXG4gICAgICByZXF1ZXN0QUYoZnVuY3Rpb24gKCkge1xuICAgICAgICByZW1vdmVDbGFzcyhlbCwgXCJcIi5jb25jYXQoX3RoaXMubmFtZSwgXCItZW50ZXItdG9cIikpOyAvLyBUaGUgKi1tb3ZlIGNsYXNzIGlzIGFsc28gc3R1Y2sgb24gZWxlbWVudHMgdGhhdCBtb3ZlZCxcbiAgICAgICAgLy8gYnV0IHRoZXJlIGFyZSBubyBqYXZhc2NyaXB0IGhvb2tzIHRvIGhhbmRsZSBhZnRlciBtb3ZlLlxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgcmV0dXJuIGgoJ3RyYW5zaXRpb24tZ3JvdXAnLCB7XG4gICAgICBwcm9wczoge1xuICAgICAgICB0YWc6ICdkaXYnLFxuICAgICAgICBuYW1lOiB0aGlzLm5hbWVcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAgICBhZnRlckVudGVyOiB0aGlzLm9uQWZ0ZXJFbnRlclxuICAgICAgfVxuICAgIH0sIHRoaXMuJHNsb3RzLmRlZmF1bHQpO1xuICB9XG59KTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCVG9hc3RlciA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogTkFNRSxcbiAgcHJvcHM6IHByb3BzLFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICAvLyBXZSBkb24ndCByZW5kZXIgb24gU1NSIG9yIGlmIGEgYW4gZXhpc3RpbmcgdGFyZ2V0IGZvdW5kXG4gICAgICBkb1JlbmRlcjogZmFsc2UsXG4gICAgICBkZWFkOiBmYWxzZSxcbiAgICAgIC8vIFRvYXN0ZXIgbmFtZXMgY2Fubm90IGNoYW5nZSBvbmNlIGNyZWF0ZWRcbiAgICAgIHN0YXRpY05hbWU6IHRoaXMubmFtZVxuICAgIH07XG4gIH0sXG4gIGJlZm9yZU1vdW50OiBmdW5jdGlvbiBiZWZvcmVNb3VudCgpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIHRoaXMuc3RhdGljTmFtZSA9IHRoaXMubmFtZTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cblxuICAgIGlmIChXb3JtaG9sZS5oYXNUYXJnZXQodGhpcy5zdGF0aWNOYW1lKSkge1xuICAgICAgd2FybihcImItdG9hc3RlcjogQSA8cG9ydGFsLXRhcmdldD4gd2l0aCBuYW1lICdcIi5jb25jYXQodGhpcy5uYW1lLCBcIicgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGRvY3VtZW50LlwiKSk7XG4gICAgICB0aGlzLmRlYWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRvUmVuZGVyID0gdHJ1ZTtcbiAgICAgIHRoaXMuJG9uY2UoJ2hvb2s6YmVmb3JlRGVzdHJveScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gTGV0IHRvYXN0cyBtYWRlIHdpdGggYHRoaXMuJGJ2VG9hc3QudG9hc3QoKWAga25vdyB0aGF0IHRoaXMgdG9hc3RlclxuICAgICAgICAvLyBpcyBiZWluZyBkZXN0cm95ZWQgYW5kIHNob3VsZCBzaG91bGQgYWxzbyBkZXN0cm95L2hpZGUgdGhlbXNlbHZlc1xuICAgICAgICBfdGhpczIuJHJvb3QuJGVtaXQoJ2J2Ojp0b2FzdGVyOjpkZXN0cm95ZWQnLCBfdGhpczIuc3RhdGljTmFtZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkKCkge1xuICAgIC8vIFJlbW92ZSBmcm9tIERPTSBpZiBuZWVkZWRcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBkaWZmaWN1bHQgdG8gdGVzdCAqL1xuICAgIGlmICh0aGlzLiRlbCAmJiB0aGlzLiRlbC5wYXJlbnROb2RlKSB7XG4gICAgICB0aGlzLiRlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuJGVsKTtcbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgJHRvYXN0ZXIgPSBoKCdkaXYnLCB7XG4gICAgICBjbGFzczogWydkLW5vbmUnLCB7XG4gICAgICAgICdiLWRlYWQtdG9hc3Rlcic6IHRoaXMuZGVhZFxuICAgICAgfV1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmRvUmVuZGVyKSB7XG4gICAgICB2YXIgJHRhcmdldCA9IGgoUG9ydGFsVGFyZ2V0LCB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiAnYi10b2FzdGVyLXNsb3QnLFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgIG5hbWU6IHRoaXMuc3RhdGljTmFtZSxcbiAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICB0YWc6ICdkaXYnLFxuICAgICAgICAgIHNsaW06IGZhbHNlLFxuICAgICAgICAgIC8vIHRyYW5zaXRpb246IHRoaXMudHJhbnNpdGlvbiB8fCBEZWZhdWx0VHJhbnNpdGlvblxuICAgICAgICAgIHRyYW5zaXRpb246IERlZmF1bHRUcmFuc2l0aW9uXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgJHRvYXN0ZXIgPSBoKCdkaXYnLCB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiAnYi10b2FzdGVyJyxcbiAgICAgICAgY2xhc3M6IFt0aGlzLnN0YXRpY05hbWVdLFxuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIGlkOiB0aGlzLnN0YXRpY05hbWUsXG4gICAgICAgICAgcm9sZTogdGhpcy5yb2xlIHx8IG51bGwsXG4gICAgICAgICAgLy8gRmFsbGJhY2sgdG8gbnVsbCB0byBtYWtlIHN1cmUgYXR0cmlidXRlIGRvZXNuJ3QgZXhpc3RcbiAgICAgICAgICAnYXJpYS1saXZlJzogdGhpcy5hcmlhTGl2ZSxcbiAgICAgICAgICAnYXJpYS1hdG9taWMnOiB0aGlzLmFyaWFBdG9taWNcbiAgICAgICAgfVxuICAgICAgfSwgWyR0YXJnZXRdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gJHRvYXN0ZXI7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdG9hc3QvdG9hc3Rlci5qc1xuLy8gbW9kdWxlIGlkID0gOTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///92\n"); /***/ }), /* 93 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return VBTooltipPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tooltip__ = __webpack_require__(218);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport VBTooltip */\n\n\nvar VBTooltipPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n directives: {\n VBTooltip: __WEBPACK_IMPORTED_MODULE_0__tooltip__[\"a\" /* VBTooltip */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy90b29sdGlwL2luZGV4LmpzP2E4Y2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0M7QUFDYztBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGVBQWUsMkRBQVM7QUFDeEI7QUFDQSxDQUFDIiwiZmlsZSI6IjkzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVkJUb29sdGlwIH0gZnJvbSAnLi90b29sdGlwJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBWQlRvb2x0aXBQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGRpcmVjdGl2ZXM6IHtcbiAgICBWQlRvb2x0aXA6IFZCVG9vbHRpcFxuICB9XG59KTtcbmV4cG9ydCB7IFZCVG9vbHRpcFBsdWdpbiwgVkJUb29sdGlwIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy90b29sdGlwL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA5M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///93\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return VBTooltipPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tooltip__ = __webpack_require__(220);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport VBTooltip */\n\n\nvar VBTooltipPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n directives: {\n VBTooltip: __WEBPACK_IMPORTED_MODULE_0__tooltip__[\"a\" /* VBTooltip */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy90b29sdGlwL2luZGV4LmpzP2E4Y2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0M7QUFDYztBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGVBQWUsMkRBQVM7QUFDeEI7QUFDQSxDQUFDIiwiZmlsZSI6IjkzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVkJUb29sdGlwIH0gZnJvbSAnLi90b29sdGlwJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBWQlRvb2x0aXBQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGRpcmVjdGl2ZXM6IHtcbiAgICBWQlRvb2x0aXA6IFZCVG9vbHRpcFxuICB9XG59KTtcbmV4cG9ydCB7IFZCVG9vbHRpcFBsdWdpbiwgVkJUb29sdGlwIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy90b29sdGlwL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA5M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///93\n"); /***/ }), /* 94 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__OcrdProcessorList_vue__ = __webpack_require__(230);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__OcrdProjectList_vue__ = __webpack_require__(234);\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\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/* harmony default export */ __webpack_exports__[\"a\"] = ({\n components: {\n OcrdProcessorList: __WEBPACK_IMPORTED_MODULE_0__OcrdProcessorList_vue__[\"a\" /* default */],\n OcrdProjectList: __WEBPACK_IMPORTED_MODULE_1__OcrdProjectList_vue__[\"a\" /* default */]\n },\n data: function data() {\n return {\n repos_raw: [],\n category_filter: [],\n step_filter: []\n };\n },\n\n computed: {\n repos: function repos() {\n return this.repos_raw;\n },\n steps: function steps() {\n return this.all_processors.reduce(function (all, processor) {\n all.push.apply(all, _toConsumableArray(processor.steps.filter(function (step) {\n return all.indexOf(step) == -1;\n })));\n return all;\n }, []);\n },\n categories: function categories() {\n return this.all_processors.reduce(function (all, processor) {\n all.push.apply(all, _toConsumableArray(processor.categories.filter(function (category) {\n return all.indexOf(category) == -1;\n })));\n return all;\n }, []);\n },\n all_processors: function all_processors() {\n return this.repos_raw.reduce(function (all, repo) {\n if (repo.ocrd_tool) all.push.apply(all, _toConsumableArray(Object.values(repo.ocrd_tool.tools).map(function (tool) {\n tool.part_of = repo.org_plus_name;\n return tool;\n })));\n return all;\n }, []);\n },\n processors: function processors() {\n var _this = this;\n\n return this.all_processors.filter(function (tool) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = _this.step_filter[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var step_filter = _step.value;\n\n if (tool.steps.indexOf(step_filter) == -1) return false;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = _this.category_filter[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var category_filter = _step2.value;\n\n if (tool.categories.indexOf(category_filter) == -1) return false;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return true;\n });\n }\n },\n mounted: function mounted() {\n this.fetchRepoData();\n },\n\n methods: {\n fetchRepoData: function fetchRepoData() {\n var _this2 = this;\n\n fetch('repos.json').then(function (resp) {\n return resp.json();\n }).then(function (repos) {\n var _repos_raw;\n\n _this2.repos_raw.splice(0, _this2.repos_raw.length);\n (_repos_raw = _this2.repos_raw).push.apply(_repos_raw, _toConsumableArray(repos));\n });\n },\n toggleStepFilter: function toggleStepFilter(v) {\n if (v in this.step_filter) {\n this.step_filter = this.step_filter.splice(this.step_filter.indexOf(v), 1);\n } else {\n this.step_filter.push(v);\n }\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL0FwcC52dWU/ZWE5OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhGQURBO0FBRUE7QUFGQSxHQURBO0FBS0EsTUFMQSxrQkFLQTtBQUNBO0FBQ0EsbUJBREE7QUFFQSx5QkFGQTtBQUdBO0FBSEE7QUFLQSxHQVhBOztBQVlBO0FBQ0EsU0FEQSxtQkFDQTtBQUNBO0FBQ0EsS0FIQTtBQUlBLFNBSkEsbUJBSUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0EsT0FIQSxFQUdBLEVBSEE7QUFJQSxLQVRBO0FBVUEsY0FWQSx3QkFVQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQSxPQUhBLEVBR0EsRUFIQTtBQUlBLEtBZkE7QUFnQkEsa0JBaEJBLDRCQWdCQTtBQUNBO0FBQ0EsNEJBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FIQTtBQUlBO0FBQ0EsT0FQQSxFQU9BLEVBUEE7QUFRQSxLQXpCQTtBQTBCQSxjQTFCQSx3QkEwQkE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUNBO0FBQUE7O0FBQ0EsdURBQ0E7QUFDQTtBQUpBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBS0E7QUFBQTs7QUFDQSxnRUFDQTtBQUNBO0FBUkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFTQTtBQUNBLE9BVkE7QUFXQTtBQXRDQSxHQVpBO0FBb0RBLFNBcERBLHFCQW9EQTtBQUNBO0FBQ0EsR0F0REE7O0FBdURBO0FBQ0EsaUJBREEsMkJBQ0E7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUNBO0FBQ0EsT0FIQTtBQUtBLEtBUEE7QUFRQSxvQkFSQSw0QkFRQSxDQVJBLEVBUUE7QUFDQTtBQUNBO0FBQ0EsT0FGQSxNQUVBO0FBQ0E7QUFDQTtBQUNBO0FBZEE7QUF2REEiLCJmaWxlIjoiOTQuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gIDxiLWNvbnRhaW5lciBmbHVpZD5cbiAgICA8Yi1yb3c+XG4gICAgICA8YnV0dG9uIEBjbGljaz1cImZldGNoUmVwb0RhdGFcIj5GZXRjaCE8L2J1dHRvbj5cbiAgICA8L2Itcm93PlxuICAgIDxiLXRhYnM+XG4gICAgICA8Yi10YWIgdGl0bGU9XCJQcm9jZXNzb3JzXCI+XG4gICAgICAgIDxvY3JkLXByb2Nlc3Nvci1saXN0XG4gICAgICAgICAgOnByb2Nlc3NvcnM9XCJwcm9jZXNzb3JzXCJcbiAgICAgICAgICA6c3RlcHM9XCJzdGVwc1wiXG4gICAgICAgICAgOnN0ZXBfZmlsdGVyPVwic3RlcF9maWx0ZXJcIlxuICAgICAgICAgIDpjYXRlZ29yaWVzPVwiY2F0ZWdvcmllc1wiXG4gICAgICAgICAgOmNhdGVnb3J5X2ZpbHRlcj1cImNhdGVnb3J5X2ZpbHRlclwiXG4gICAgICAgICAgPjwvb2NyZC1wcm9jZXNzb3ItbGlzdD5cbiAgICAgIDwvYi10YWI+XG4gICAgICA8Yi10YWIgdGl0bGU9XCJQcm9qZWN0c1wiPlxuICAgICAgICA8b2NyZC1wcm9qZWN0LWxpc3RcbiAgICAgICAgICA6cmVwb3M9XCJyZXBvc1wiXG4gICAgICAgICAgPjwvb2NyZC1wcm9qZWN0LWxpc3Q+XG4gICAgICA8L2ItdGFiPlxuICAgIDwvYi10YWJzPlxuICA8L2ItY29udGFpbmVyPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBPY3JkUHJvY2Vzc29yTGlzdCBmcm9tICcuL09jcmRQcm9jZXNzb3JMaXN0LnZ1ZSdcbmltcG9ydCBPY3JkUHJvamVjdExpc3QgZnJvbSAnLi9PY3JkUHJvamVjdExpc3QudnVlJ1xuZXhwb3J0IGRlZmF1bHQge1xuICBjb21wb25lbnRzOiB7XG4gICAgT2NyZFByb2Nlc3Nvckxpc3QsXG4gICAgT2NyZFByb2plY3RMaXN0XG4gIH0sXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcG9zX3JhdzogW10sXG4gICAgICBjYXRlZ29yeV9maWx0ZXI6IFtdLFxuICAgICAgc3RlcF9maWx0ZXI6IFtdLFxuICAgIH1cbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICByZXBvcygpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcG9zX3Jhd1xuICAgIH0sXG4gICAgc3RlcHMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5hbGxfcHJvY2Vzc29ycy5yZWR1Y2UoKGFsbCwgcHJvY2Vzc29yKSA9PiB7XG4gICAgICAgIGFsbC5wdXNoKC4uLnByb2Nlc3Nvci5zdGVwcy5maWx0ZXIoc3RlcCA9PiBhbGwuaW5kZXhPZihzdGVwKSA9PSAtMSkpXG4gICAgICAgIHJldHVybiBhbGxcbiAgICAgIH0sIFtdKVxuICAgIH0sXG4gICAgY2F0ZWdvcmllcygpIHtcbiAgICAgIHJldHVybiB0aGlzLmFsbF9wcm9jZXNzb3JzLnJlZHVjZSgoYWxsLCBwcm9jZXNzb3IpID0+IHtcbiAgICAgICAgYWxsLnB1c2goLi4ucHJvY2Vzc29yLmNhdGVnb3JpZXMuZmlsdGVyKGNhdGVnb3J5ID0+IGFsbC5pbmRleE9mKGNhdGVnb3J5KSA9PSAtMSkpXG4gICAgICAgIHJldHVybiBhbGxcbiAgICAgIH0sIFtdKVxuICAgIH0sXG4gICAgYWxsX3Byb2Nlc3NvcnMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXBvc19yYXcucmVkdWNlKChhbGwsIHJlcG8pID0+IHtcbiAgICAgICAgaWYgKHJlcG8ub2NyZF90b29sKVxuICAgICAgICAgIGFsbC5wdXNoKC4uLk9iamVjdC52YWx1ZXMocmVwby5vY3JkX3Rvb2wudG9vbHMpLm1hcCh0b29sID0+IHtcbiAgICAgICAgICAgIHRvb2wucGFydF9vZiA9IHJlcG8ub3JnX3BsdXNfbmFtZVxuICAgICAgICAgICAgcmV0dXJuIHRvb2xcbiAgICAgICAgICB9KSlcbiAgICAgICAgcmV0dXJuIGFsbFxuICAgICAgfSwgW10pXG4gICAgfSxcbiAgICBwcm9jZXNzb3JzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWxsX3Byb2Nlc3NvcnMuZmlsdGVyKHRvb2wgPT4ge1xuICAgICAgICBmb3IgKGxldCBzdGVwX2ZpbHRlciBvZiB0aGlzLnN0ZXBfZmlsdGVyKSB7XG4gICAgICAgICAgaWYgKHRvb2wuc3RlcHMuaW5kZXhPZihzdGVwX2ZpbHRlcikgPT0gLTEpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBjYXRlZ29yeV9maWx0ZXIgb2YgdGhpcy5jYXRlZ29yeV9maWx0ZXIpIHtcbiAgICAgICAgICBpZiAodG9vbC5jYXRlZ29yaWVzLmluZGV4T2YoY2F0ZWdvcnlfZmlsdGVyKSA9PSAtMSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9KVxuICAgIH1cbiAgfSxcbiAgbW91bnRlZCgpIHtcbiAgICAgIHRoaXMuZmV0Y2hSZXBvRGF0YSgpXG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBmZXRjaFJlcG9EYXRhKCkge1xuICAgICAgZmV0Y2goJ3JlcG9zLmpzb24nKS50aGVuKHJlc3AgPT4gcmVzcC5qc29uKCkpLnRoZW4ocmVwb3MgPT4ge1xuICAgICAgICAgIHRoaXMucmVwb3NfcmF3LnNwbGljZSgwLCB0aGlzLnJlcG9zX3Jhdy5sZW5ndGgpXG4gICAgICAgICAgdGhpcy5yZXBvc19yYXcucHVzaCguLi5yZXBvcylcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH0sXG4gICAgdG9nZ2xlU3RlcEZpbHRlcih2KSB7XG4gICAgICBpZiAodiBpbiB0aGlzLnN0ZXBfZmlsdGVyKSB7XG4gICAgICAgIHRoaXMuc3RlcF9maWx0ZXIgPSB0aGlzLnN0ZXBfZmlsdGVyLnNwbGljZSh0aGlzLnN0ZXBfZmlsdGVyLmluZGV4T2YodiksIDEpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0ZXBfZmlsdGVyLnB1c2godilcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbjwvc2NyaXB0PlxuXG48c3R5bGU+XG48L3N0eWxlPlxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9BcHAudnVlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///94\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__OcrdProcessorList_vue__ = __webpack_require__(232);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__OcrdProjectList_vue__ = __webpack_require__(235);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__OcrdProcessorListItem_vue__ = __webpack_require__(96);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__OcrdProjectListItem_vue__ = __webpack_require__(99);\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\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/* harmony default export */ __webpack_exports__[\"a\"] = ({\n components: {\n OcrdProcessorList: __WEBPACK_IMPORTED_MODULE_0__OcrdProcessorList_vue__[\"a\" /* default */],\n OcrdProjectList: __WEBPACK_IMPORTED_MODULE_1__OcrdProjectList_vue__[\"a\" /* default */],\n OcrdProcessorListItem: __WEBPACK_IMPORTED_MODULE_2__OcrdProcessorListItem_vue__[\"a\" /* default */],\n OcrdProjectListItem: __WEBPACK_IMPORTED_MODULE_3__OcrdProjectListItem_vue__[\"a\" /* default */]\n },\n data: function data() {\n return {\n modalProjectIndex: 0,\n modalProcessorIndex: 0,\n modalProjectVisible: false,\n modalProcessorVisible: false,\n repos_raw: [],\n category_filter: [],\n step_filter: []\n };\n },\n\n computed: {\n repos: function repos() {\n return this.repos_raw;\n },\n steps: function steps() {\n return this.all_processors.reduce(function (all, processor) {\n all.push.apply(all, _toConsumableArray(processor.steps.filter(function (step) {\n return all.indexOf(step) == -1;\n })));\n return all;\n }, []);\n },\n categories: function categories() {\n return this.all_processors.reduce(function (all, processor) {\n all.push.apply(all, _toConsumableArray(processor.categories.filter(function (category) {\n return all.indexOf(category) == -1;\n })));\n return all;\n }, []);\n },\n all_processors: function all_processors() {\n return this.repos_raw.reduce(function (all, repo) {\n tool_idx = 0;\n if (repo.ocrd_tool) all.push.apply(all, _toConsumableArray(Object.values(repo.ocrd_tool.tools).map(function (tool) {\n tool.idx = tool_idx++;\n tool.part_of = repo.org_plus_name;\n return tool;\n })));\n return all;\n }, []);\n },\n processors: function processors() {\n var _this = this;\n\n return this.all_processors.filter(function (tool) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = _this.step_filter[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var step_filter = _step.value;\n\n if (tool.steps.indexOf(step_filter) == -1) return false;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = _this.category_filter[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var category_filter = _step2.value;\n\n if (tool.categories.indexOf(category_filter) == -1) return false;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return true;\n });\n }\n },\n mounted: function mounted() {\n this.fetchRepoData();\n },\n\n methods: {\n fetchRepoData: function fetchRepoData() {\n var _this2 = this;\n\n fetch('repos.json').then(function (resp) {\n return resp.json();\n }).then(function (repos) {\n var _repos_raw;\n\n repos.map(function (repo, idx) {\n return repo.idx = idx;\n });\n _this2.repos_raw.splice(0, _this2.repos_raw.length);\n (_repos_raw = _this2.repos_raw).push.apply(_repos_raw, _toConsumableArray(repos));\n });\n },\n toggleStepFilter: function toggleStepFilter(v) {\n if (v in this.step_filter) {\n this.step_filter = this.step_filter.splice(this.step_filter.indexOf(v), 1);\n } else {\n this.step_filter.push(v);\n }\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL0FwcC52dWU/ZWE5OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEZBREE7QUFFQSwwRkFGQTtBQUdBLHNHQUhBO0FBSUE7QUFKQSxHQURBO0FBT0EsTUFQQSxrQkFPQTtBQUNBO0FBQ0EsMEJBREE7QUFFQSw0QkFGQTtBQUdBLGdDQUhBO0FBSUEsa0NBSkE7QUFLQSxtQkFMQTtBQU1BLHlCQU5BO0FBT0E7QUFQQTtBQVNBLEdBakJBOztBQWtCQTtBQUNBLFNBREEsbUJBQ0E7QUFDQTtBQUNBLEtBSEE7QUFJQSxTQUpBLG1CQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBLE9BSEEsRUFHQSxFQUhBO0FBSUEsS0FUQTtBQVVBLGNBVkEsd0JBVUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0EsT0FIQSxFQUdBLEVBSEE7QUFJQSxLQWZBO0FBZ0JBLGtCQWhCQSw0QkFnQkE7QUFDQTtBQUNBO0FBQ0EsNEJBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUpBO0FBS0E7QUFDQSxPQVRBLEVBU0EsRUFUQTtBQVVBLEtBM0JBO0FBNEJBLGNBNUJBLHdCQTRCQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQ0E7QUFBQTs7QUFDQSx1REFDQTtBQUNBO0FBSkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFLQTtBQUFBOztBQUNBLGdFQUNBO0FBQ0E7QUFSQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQVNBO0FBQ0EsT0FWQTtBQVdBO0FBeENBLEdBbEJBO0FBNERBLFNBNURBLHFCQTREQTtBQUNBO0FBQ0EsR0E5REE7O0FBK0RBO0FBQ0EsaUJBREEsMkJBQ0E7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0EsT0FKQTtBQU1BLEtBUkE7QUFTQSxvQkFUQSw0QkFTQSxDQVRBLEVBU0E7QUFDQTtBQUNBO0FBQ0EsT0FGQSxNQUVBO0FBQ0E7QUFDQTtBQUNBO0FBZkE7QUEvREEiLCJmaWxlIjoiOTQuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gIDxiLWNvbnRhaW5lciBmbHVpZD5cbiAgICA8Yi1yb3c+XG4gICAgICA8YnV0dG9uIEBjbGljaz1cImZldGNoUmVwb0RhdGFcIj5GZXRjaCE8L2J1dHRvbj5cbiAgICA8L2Itcm93PlxuICAgIDxiLXRhYnM+XG4gICAgICA8Yi10YWIgdGl0bGU9XCJQcm9jZXNzb3JzXCI+XG4gICAgICAgIDxvY3JkLXByb2Nlc3Nvci1saXN0XG4gICAgICAgICAgOnByb2Nlc3NvcnM9XCJwcm9jZXNzb3JzXCJcbiAgICAgICAgICA6c3RlcHM9XCJzdGVwc1wiXG4gICAgICAgICAgOnN0ZXBfZmlsdGVyPVwic3RlcF9maWx0ZXJcIlxuICAgICAgICAgIDpjYXRlZ29yaWVzPVwiY2F0ZWdvcmllc1wiXG4gICAgICAgICAgOmNhdGVnb3J5X2ZpbHRlcj1cImNhdGVnb3J5X2ZpbHRlclwiXG4gICAgICAgICAgPjwvb2NyZC1wcm9jZXNzb3ItbGlzdD5cbiAgICAgIDwvYi10YWI+XG4gICAgICA8Yi10YWIgYWN0aXZlIHRpdGxlPVwiUHJvamVjdHNcIj5cbiAgICAgICAgPG9jcmQtcHJvamVjdC1saXN0XG4gICAgICAgICAgOnJlcG9zPVwicmVwb3NcIlxuICAgICAgICAgID48L29jcmQtcHJvamVjdC1saXN0PlxuICAgICAgPC9iLXRhYj5cbiAgICA8L2ItdGFicz5cbiAgICA8IS0tIDxiLW1vZGFsIGlkPVwicHJvY2Vzc29yLW1vZGFsXCI+XG4gICAgPC9iLW1vZGFsPiAtLT5cbiAgICA8Yi1tb2RhbCBpZD1cInByb2plY3QtbW9kYWxcIj5cbiAgICAgIDxvY3JkLXByb2plY3QtbGlzdC1pdGVtXG4gICAgICAgIDpyZXBvPVwicmVwb3NbbW9kYWxQcm9qZWN0SW5kZXhdXCJcbiAgICAgICAgPlxuICAgICAgPC9vY3JkLXByb2plY3QtbGlzdC1pdGVtPlxuICAgIDwvYi1tb2RhbD5cbiAgPC9iLWNvbnRhaW5lcj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgT2NyZFByb2Nlc3Nvckxpc3QgZnJvbSAnLi9PY3JkUHJvY2Vzc29yTGlzdC52dWUnXG5pbXBvcnQgT2NyZFByb2plY3RMaXN0IGZyb20gJy4vT2NyZFByb2plY3RMaXN0LnZ1ZSdcbmltcG9ydCBPY3JkUHJvY2Vzc29yTGlzdEl0ZW0gZnJvbSAnLi9PY3JkUHJvY2Vzc29yTGlzdEl0ZW0udnVlJ1xuaW1wb3J0IE9jcmRQcm9qZWN0TGlzdEl0ZW0gZnJvbSAnLi9PY3JkUHJvamVjdExpc3RJdGVtLnZ1ZSdcbmV4cG9ydCBkZWZhdWx0IHtcbiAgY29tcG9uZW50czoge1xuICAgIE9jcmRQcm9jZXNzb3JMaXN0LFxuICAgIE9jcmRQcm9qZWN0TGlzdCxcbiAgICBPY3JkUHJvY2Vzc29yTGlzdEl0ZW0sXG4gICAgT2NyZFByb2plY3RMaXN0SXRlbVxuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBtb2RhbFByb2plY3RJbmRleDogMCxcbiAgICAgIG1vZGFsUHJvY2Vzc29ySW5kZXg6IDAsXG4gICAgICBtb2RhbFByb2plY3RWaXNpYmxlOiBmYWxzZSxcbiAgICAgIG1vZGFsUHJvY2Vzc29yVmlzaWJsZTogZmFsc2UsXG4gICAgICByZXBvc19yYXc6IFtdLFxuICAgICAgY2F0ZWdvcnlfZmlsdGVyOiBbXSxcbiAgICAgIHN0ZXBfZmlsdGVyOiBbXSxcbiAgICB9XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgcmVwb3MoKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXBvc19yYXdcbiAgICB9LFxuICAgIHN0ZXBzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWxsX3Byb2Nlc3NvcnMucmVkdWNlKChhbGwsIHByb2Nlc3NvcikgPT4ge1xuICAgICAgICBhbGwucHVzaCguLi5wcm9jZXNzb3Iuc3RlcHMuZmlsdGVyKHN0ZXAgPT4gYWxsLmluZGV4T2Yoc3RlcCkgPT0gLTEpKVxuICAgICAgICByZXR1cm4gYWxsXG4gICAgICB9LCBbXSlcbiAgICB9LFxuICAgIGNhdGVnb3JpZXMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5hbGxfcHJvY2Vzc29ycy5yZWR1Y2UoKGFsbCwgcHJvY2Vzc29yKSA9PiB7XG4gICAgICAgIGFsbC5wdXNoKC4uLnByb2Nlc3Nvci5jYXRlZ29yaWVzLmZpbHRlcihjYXRlZ29yeSA9PiBhbGwuaW5kZXhPZihjYXRlZ29yeSkgPT0gLTEpKVxuICAgICAgICByZXR1cm4gYWxsXG4gICAgICB9LCBbXSlcbiAgICB9LFxuICAgIGFsbF9wcm9jZXNzb3JzKCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVwb3NfcmF3LnJlZHVjZSgoYWxsLCByZXBvKSA9PiB7XG4gICAgICAgIHRvb2xfaWR4ID0gMFxuICAgICAgICBpZiAocmVwby5vY3JkX3Rvb2wpXG4gICAgICAgICAgYWxsLnB1c2goLi4uT2JqZWN0LnZhbHVlcyhyZXBvLm9jcmRfdG9vbC50b29scykubWFwKHRvb2wgPT4ge1xuICAgICAgICAgICAgdG9vbC5pZHggPSB0b29sX2lkeCsrXG4gICAgICAgICAgICB0b29sLnBhcnRfb2YgPSByZXBvLm9yZ19wbHVzX25hbWVcbiAgICAgICAgICAgIHJldHVybiB0b29sXG4gICAgICAgICAgfSkpXG4gICAgICAgIHJldHVybiBhbGxcbiAgICAgIH0sIFtdKVxuICAgIH0sXG4gICAgcHJvY2Vzc29ycygpIHtcbiAgICAgIHJldHVybiB0aGlzLmFsbF9wcm9jZXNzb3JzLmZpbHRlcih0b29sID0+IHtcbiAgICAgICAgZm9yIChsZXQgc3RlcF9maWx0ZXIgb2YgdGhpcy5zdGVwX2ZpbHRlcikge1xuICAgICAgICAgIGlmICh0b29sLnN0ZXBzLmluZGV4T2Yoc3RlcF9maWx0ZXIpID09IC0xKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgY2F0ZWdvcnlfZmlsdGVyIG9mIHRoaXMuY2F0ZWdvcnlfZmlsdGVyKSB7XG4gICAgICAgICAgaWYgKHRvb2wuY2F0ZWdvcmllcy5pbmRleE9mKGNhdGVnb3J5X2ZpbHRlcikgPT0gLTEpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSlcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQoKSB7XG4gICAgICB0aGlzLmZldGNoUmVwb0RhdGEoKVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgZmV0Y2hSZXBvRGF0YSgpIHtcbiAgICAgIGZldGNoKCdyZXBvcy5qc29uJykudGhlbihyZXNwID0+IHJlc3AuanNvbigpKS50aGVuKHJlcG9zID0+IHtcbiAgICAgICAgICByZXBvcy5tYXAoKHJlcG8sIGlkeCkgPT4gcmVwby5pZHggPSBpZHgpXG4gICAgICAgICAgdGhpcy5yZXBvc19yYXcuc3BsaWNlKDAsIHRoaXMucmVwb3NfcmF3Lmxlbmd0aClcbiAgICAgICAgICB0aGlzLnJlcG9zX3Jhdy5wdXNoKC4uLnJlcG9zKVxuICAgICAgICB9XG4gICAgICApXG4gICAgfSxcbiAgICB0b2dnbGVTdGVwRmlsdGVyKHYpIHtcbiAgICAgIGlmICh2IGluIHRoaXMuc3RlcF9maWx0ZXIpIHtcbiAgICAgICAgdGhpcy5zdGVwX2ZpbHRlciA9IHRoaXMuc3RlcF9maWx0ZXIuc3BsaWNlKHRoaXMuc3RlcF9maWx0ZXIuaW5kZXhPZih2KSwgMSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RlcF9maWx0ZXIucHVzaCh2KVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuPC9zY3JpcHQ+XG5cbjxzdHlsZT5cbjwvc3R5bGU+XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL0FwcC52dWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///94\n"); /***/ }), /* 95 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__OcrdProcessorListItem_vue__ = __webpack_require__(231);\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/* harmony default export */ __webpack_exports__[\"a\"] = ({\n components: {\n OcrdProcessorListItem: __WEBPACK_IMPORTED_MODULE_0__OcrdProcessorListItem_vue__[\"a\" /* default */]\n },\n props: {\n processors: { required: true },\n steps: { required: true },\n step_filter: { require: true },\n categories: { required: true },\n category_filter: { require: true }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL09jcmRQcm9jZXNzb3JMaXN0LnZ1ZT83NDIzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdDQTtBQUNBO0FBQ0E7QUFDQTtBQURBLEdBREE7QUFJQTtBQUNBLGtDQURBO0FBRUEsNkJBRkE7QUFHQSxrQ0FIQTtBQUlBLGtDQUpBO0FBS0E7QUFMQTtBQUpBIiwiZmlsZSI6Ijk1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICA8ZGl2PlxuICAgIDxiLXJvdz5cbiAgICAgIEZpbHRlciBieSBjYXRlZ29yeTpcbiAgICAgIDxiLWJhZGdlXG4gICAgICAgIHYtZm9yPVwiY2F0ZWdvcnkgaW4gY2F0ZWdvcmllc1wiXG4gICAgICAgIDp2YXJpYW50PVwiY2F0ZWdvcnlfZmlsdGVyLmluZGV4T2YoY2F0ZWdvcnkpICE9IC0xID8gJ3ByaW1hcnknIDogJ3NlY29uZGFyeSdcIlxuICAgICAgICBAY2xpY2s9XCJjYXRlZ29yeV9maWx0ZXIuaW5kZXhPZihjYXRlZ29yeSkgIT0gLTEgPyBjYXRlZ29yeV9maWx0ZXIuc3BsaWNlKGNhdGVnb3J5X2ZpbHRlci5pbmRleE9mKGNhdGVnb3J5KSwgMSkgOiBjYXRlZ29yeV9maWx0ZXIucHVzaChjYXRlZ29yeSlcIlxuICAgICAgICA+XG4gICAgICAgIHt7IGNhdGVnb3J5IH19XG4gICAgICA8L2ItYmFkZ2U+XG4gICAgPC9iLXJvdz5cbiAgICA8Yi1yb3c+XG4gICAgICBGaWx0ZXIgYnkgc3RlcDpcbiAgICAgIDxiLWJhZGdlXG4gICAgICAgIHYtZm9yPVwic3RlcCBpbiBzdGVwc1wiXG4gICAgICAgIDp2YXJpYW50PVwic3RlcF9maWx0ZXIuaW5kZXhPZihzdGVwKSAhPSAtMSA/ICdwcmltYXJ5JyA6ICdzZWNvbmRhcnknXCJcbiAgICAgICAgQGNsaWNrPVwic3RlcF9maWx0ZXIuaW5kZXhPZihzdGVwKSAhPSAtMSA/IHN0ZXBfZmlsdGVyLnNwbGljZShzdGVwX2ZpbHRlci5pbmRleE9mKHN0ZXApLCAxKSA6IHN0ZXBfZmlsdGVyLnB1c2goc3RlcClcIlxuICAgICAgICA+XG4gICAgICAgIHt7IHN0ZXAgfX1cbiAgICAgIDwvYi1iYWRnZT5cbiAgICA8L2Itcm93PlxuICAgIDxiLXJvdz5cbiAgICAgICAgPG9jcmQtcHJvY2Vzc29yLWxpc3QtaXRlbVxuICAgICAgICAgIHYtZm9yPVwicHJvY2Vzc29yIGluIHByb2Nlc3NvcnNcIlxuICAgICAgICAgIDpwcm9jZXNzb3I9XCJwcm9jZXNzb3JcIlxuICAgICAgICA+PC9vY3JkLXByb2Nlc3Nvci1saXN0LWl0ZW0+XG4gICAgPC9iLXJvdz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IE9jcmRQcm9jZXNzb3JMaXN0SXRlbSBmcm9tICcuL09jcmRQcm9jZXNzb3JMaXN0SXRlbS52dWUnXG5leHBvcnQgZGVmYXVsdCB7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBPY3JkUHJvY2Vzc29yTGlzdEl0ZW1cbiAgfSxcbiAgcHJvcHM6IHtcbiAgICBwcm9jZXNzb3JzOiB7cmVxdWlyZWQ6IHRydWV9LFxuICAgIHN0ZXBzOiB7cmVxdWlyZWQ6IHRydWV9LFxuICAgIHN0ZXBfZmlsdGVyOiB7cmVxdWlyZTogdHJ1ZX0sXG4gICAgY2F0ZWdvcmllczoge3JlcXVpcmVkOiB0cnVlfSxcbiAgICBjYXRlZ29yeV9maWx0ZXI6IHtyZXF1aXJlOiB0cnVlfSxcbiAgfSxcbn1cbjwvc2NyaXB0PlxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9PY3JkUHJvY2Vzc29yTGlzdC52dWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///95\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__OcrdProcessorListItem_vue__ = __webpack_require__(96);\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/* harmony default export */ __webpack_exports__[\"a\"] = ({\n components: {\n OcrdProcessorListItem: __WEBPACK_IMPORTED_MODULE_0__OcrdProcessorListItem_vue__[\"a\" /* default */]\n },\n props: {\n processors: { required: true },\n steps: { required: true },\n step_filter: { require: true },\n categories: { required: true },\n category_filter: { require: true }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL09jcmRQcm9jZXNzb3JMaXN0LnZ1ZT83NDIzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdDQTtBQUNBO0FBQ0E7QUFDQTtBQURBLEdBREE7QUFJQTtBQUNBLGtDQURBO0FBRUEsNkJBRkE7QUFHQSxrQ0FIQTtBQUlBLGtDQUpBO0FBS0E7QUFMQTtBQUpBIiwiZmlsZSI6Ijk1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICA8ZGl2PlxuICAgIDxiLXJvdz5cbiAgICAgIEZpbHRlciBieSBjYXRlZ29yeTpcbiAgICAgIDxiLWJhZGdlXG4gICAgICAgIHYtZm9yPVwiY2F0ZWdvcnkgaW4gY2F0ZWdvcmllc1wiXG4gICAgICAgIDp2YXJpYW50PVwiY2F0ZWdvcnlfZmlsdGVyLmluZGV4T2YoY2F0ZWdvcnkpICE9IC0xID8gJ3ByaW1hcnknIDogJ3NlY29uZGFyeSdcIlxuICAgICAgICBAY2xpY2s9XCJjYXRlZ29yeV9maWx0ZXIuaW5kZXhPZihjYXRlZ29yeSkgIT0gLTEgPyBjYXRlZ29yeV9maWx0ZXIuc3BsaWNlKGNhdGVnb3J5X2ZpbHRlci5pbmRleE9mKGNhdGVnb3J5KSwgMSkgOiBjYXRlZ29yeV9maWx0ZXIucHVzaChjYXRlZ29yeSlcIlxuICAgICAgICA+XG4gICAgICAgIHt7IGNhdGVnb3J5IH19XG4gICAgICA8L2ItYmFkZ2U+XG4gICAgPC9iLXJvdz5cbiAgICA8Yi1yb3c+XG4gICAgICBGaWx0ZXIgYnkgc3RlcDpcbiAgICAgIDxiLWJhZGdlXG4gICAgICAgIHYtZm9yPVwic3RlcCBpbiBzdGVwc1wiXG4gICAgICAgIDp2YXJpYW50PVwic3RlcF9maWx0ZXIuaW5kZXhPZihzdGVwKSAhPSAtMSA/ICdwcmltYXJ5JyA6ICdzZWNvbmRhcnknXCJcbiAgICAgICAgQGNsaWNrPVwic3RlcF9maWx0ZXIuaW5kZXhPZihzdGVwKSAhPSAtMSA/IHN0ZXBfZmlsdGVyLnNwbGljZShzdGVwX2ZpbHRlci5pbmRleE9mKHN0ZXApLCAxKSA6IHN0ZXBfZmlsdGVyLnB1c2goc3RlcClcIlxuICAgICAgICA+XG4gICAgICAgIHt7IHN0ZXAgfX1cbiAgICAgIDwvYi1iYWRnZT5cbiAgICA8L2Itcm93PlxuICAgIDxiLXJvdz5cbiAgICAgICAgPG9jcmQtcHJvY2Vzc29yLWxpc3QtaXRlbVxuICAgICAgICAgIHYtZm9yPVwicHJvY2Vzc29yIGluIHByb2Nlc3NvcnNcIlxuICAgICAgICAgIDpwcm9jZXNzb3I9XCJwcm9jZXNzb3JcIlxuICAgICAgICA+PC9vY3JkLXByb2Nlc3Nvci1saXN0LWl0ZW0+XG4gICAgPC9iLXJvdz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IE9jcmRQcm9jZXNzb3JMaXN0SXRlbSBmcm9tICcuL09jcmRQcm9jZXNzb3JMaXN0SXRlbS52dWUnXG5leHBvcnQgZGVmYXVsdCB7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBPY3JkUHJvY2Vzc29yTGlzdEl0ZW1cbiAgfSxcbiAgcHJvcHM6IHtcbiAgICBwcm9jZXNzb3JzOiB7cmVxdWlyZWQ6IHRydWV9LFxuICAgIHN0ZXBzOiB7cmVxdWlyZWQ6IHRydWV9LFxuICAgIHN0ZXBfZmlsdGVyOiB7cmVxdWlyZTogdHJ1ZX0sXG4gICAgY2F0ZWdvcmllczoge3JlcXVpcmVkOiB0cnVlfSxcbiAgICBjYXRlZ29yeV9maWx0ZXI6IHtyZXF1aXJlOiB0cnVlfSxcbiAgfSxcbn1cbjwvc2NyaXB0PlxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9PY3JkUHJvY2Vzc29yTGlzdC52dWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///95\n"); /***/ }), /* 96 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("//\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/* harmony default export */ __webpack_exports__[\"a\"] = ({\n props: {\n processor: { required: true }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL09jcmRQcm9jZXNzb3JMaXN0SXRlbS52dWU/NDk1MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNDQTtBQUNBO0FBQ0E7QUFEQTtBQURBIiwiZmlsZSI6Ijk2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICA8Yi1jYXJkXG4gICAgdGFnPVwiYXJ0aWNsZVwiXG4gICAgOnRpdGxlPVwicHJvY2Vzc29yLmV4ZWN1dGFibGUucmVwbGFjZSgnb2NyZC0nLCAnJylcIlxuICAgIGNsYXNzPVwibWItNVwiXG4gICAgPlxuICAgIDxiLWNhcmQtdGV4dD5cblxuICAgICAgPGItdGFicz5cbiAgICAgICAgPGItdGFiIHRpdGxlPVwiRGVzY3JpcHRpb25cIj5cbiAgICAgICAgICA8YmxvY2txdW90ZT5cbiAgICAgICAgICAgIHt7IHByb2Nlc3Nvci5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgIDwvYmxvY2txdW90ZT5cbiAgICAgICAgICA8Yi1iYWRnZSB2YXJpYW50PVwiaW5mb1wiIHYtZm9yPVwic3RlcCBpbiBwcm9jZXNzb3Iuc3RlcHNcIj57eyBzdGVwIH19PC9iLWJhZGdlPlxuICA8Yi1iYWRnZSB2YXJpYW50PVwic3VjY2Vzc1wiIHYtZm9yPVwiY2F0ZWdvcnkgaW4gcHJvY2Vzc29yLmNhdGVnb3JpZXNcIj57eyBjYXRlZ29yeSB9fTwvYi1iYWRnZT5cbiAgICAgICAgICA8cD5cbiAgICAgICAgICAgIFBhcnQgb2YgPGEgaHJlZj1cIlwiPnt7IHByb2Nlc3Nvci5wYXJ0X29mIH19PC9hPlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8cD5cbiAgICAgICAgICAgIDxhIGhyZWY9XCJcIj5SZWFkIHRoZSBEb2N1bWVudGF0aW9uITwvYT5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvYi10YWI+XG5cbiAgICAgICAgPGItdGFiIHRpdGxlPVwiUGFyYW1ldGVyc1wiPlxuICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgIDxsaSB2LWZvcj1cInBhcmFtLCBuYW1lIGluIHByb2Nlc3Nvci5wYXJhbWV0ZXJzXCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgbmFtZSB9fTwvc3Ryb25nPiB7eyBwYXJhbSB9fVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2ItdGFiPlxuXG4gICAgICA8L2ItdGFicz5cblxuICAgIDwvYi1jYXJkLXRleHQ+XG4gIDwvYi1jYXJkPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgcHJvcHM6IHtcbiAgICBwcm9jZXNzb3I6IHtyZXF1aXJlZDogdHJ1ZX1cbiAgfVxufVxuPC9zY3JpcHQ+XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL09jcmRQcm9jZXNzb3JMaXN0SXRlbS52dWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///96\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_OcrdProcessorListItem_vue__ = __webpack_require__(97);\n/* unused harmony namespace reexport */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7a8fbc74_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_OcrdProcessorListItem_vue__ = __webpack_require__(233);\nvar disposed = false\nvar normalizeComponent = __webpack_require__(29)\n/* script */\n\n\n/* template */\n\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_OcrdProcessorListItem_vue__[\"a\" /* default */],\n __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7a8fbc74_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_OcrdProcessorListItem_vue__[\"a\" /* default */],\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/OcrdProcessorListItem.vue\"\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-7a8fbc74\", Component.options)\n } else {\n hotAPI.reload(\"data-v-7a8fbc74\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Component.exports);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2Nlc3Nvckxpc3RJdGVtLnZ1ZT9lMzliIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0EseUJBQXlCLG1CQUFPLENBQUMsRUFBc0Q7QUFDdkY7QUFDc0g7QUFDYTtBQUNuSTtBQUNnUTtBQUNoUTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLGlKQUFjO0FBQ2hCLEVBQUUsOE9BQWdCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBVSxHQUFHO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxDQUFDOztBQUVjLDBFQUFpQiIsImZpbGUiOiI5Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkaXNwb3NlZCA9IGZhbHNlXG52YXIgbm9ybWFsaXplQ29tcG9uZW50ID0gcmVxdWlyZShcIiEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvY29tcG9uZW50LW5vcm1hbGl6ZXJcIilcbi8qIHNjcmlwdCAqL1xuZXhwb3J0ICogZnJvbSBcIiEhYmFiZWwtbG9hZGVyIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXNjcmlwdCZpbmRleD0wIS4vT2NyZFByb2Nlc3Nvckxpc3RJdGVtLnZ1ZVwiXG5pbXBvcnQgX192dWVfc2NyaXB0X18gZnJvbSBcIiEhYmFiZWwtbG9hZGVyIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXNjcmlwdCZpbmRleD0wIS4vT2NyZFByb2Nlc3Nvckxpc3RJdGVtLnZ1ZVwiXG4vKiB0ZW1wbGF0ZSAqL1xuaW1wb3J0IF9fdnVlX3RlbXBsYXRlX18gZnJvbSBcIiEhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3RlbXBsYXRlLWNvbXBpbGVyL2luZGV4P3tcXFwiaWRcXFwiOlxcXCJkYXRhLXYtN2E4ZmJjNzRcXFwiLFxcXCJoYXNTY29wZWRcXFwiOmZhbHNlLFxcXCJidWJsZVxcXCI6e1xcXCJ0cmFuc2Zvcm1zXFxcIjp7fX19IS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9PY3JkUHJvY2Vzc29yTGlzdEl0ZW0udnVlXCJcbi8qIHRlbXBsYXRlIGZ1bmN0aW9uYWwgKi9cbnZhciBfX3Z1ZV90ZW1wbGF0ZV9mdW5jdGlvbmFsX18gPSBmYWxzZVxuLyogc3R5bGVzICovXG52YXIgX192dWVfc3R5bGVzX18gPSBudWxsXG4vKiBzY29wZUlkICovXG52YXIgX192dWVfc2NvcGVJZF9fID0gbnVsbFxuLyogbW9kdWxlSWRlbnRpZmllciAoc2VydmVyIG9ubHkpICovXG52YXIgX192dWVfbW9kdWxlX2lkZW50aWZpZXJfXyA9IG51bGxcbnZhciBDb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIF9fdnVlX3NjcmlwdF9fLFxuICBfX3Z1ZV90ZW1wbGF0ZV9fLFxuICBfX3Z1ZV90ZW1wbGF0ZV9mdW5jdGlvbmFsX18sXG4gIF9fdnVlX3N0eWxlc19fLFxuICBfX3Z1ZV9zY29wZUlkX18sXG4gIF9fdnVlX21vZHVsZV9pZGVudGlmaWVyX19cbilcbkNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL09jcmRQcm9jZXNzb3JMaXN0SXRlbS52dWVcIlxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkgeyhmdW5jdGlvbiAoKSB7XG4gIHZhciBob3RBUEkgPSByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpXG4gIGhvdEFQSS5pbnN0YWxsKHJlcXVpcmUoXCJ2dWVcIiksIGZhbHNlKVxuICBpZiAoIWhvdEFQSS5jb21wYXRpYmxlKSByZXR1cm5cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIW1vZHVsZS5ob3QuZGF0YSkge1xuICAgIGhvdEFQSS5jcmVhdGVSZWNvcmQoXCJkYXRhLXYtN2E4ZmJjNzRcIiwgQ29tcG9uZW50Lm9wdGlvbnMpXG4gIH0gZWxzZSB7XG4gICAgaG90QVBJLnJlbG9hZChcImRhdGEtdi03YThmYmM3NFwiLCBDb21wb25lbnQub3B0aW9ucylcbiAgfVxuICBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24gKGRhdGEpIHtcbiAgICBkaXNwb3NlZCA9IHRydWVcbiAgfSlcbn0pKCl9XG5cbmV4cG9ydCBkZWZhdWx0IENvbXBvbmVudC5leHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9PY3JkUHJvY2Vzc29yTGlzdEl0ZW0udnVlXG4vLyBtb2R1bGUgaWQgPSA5NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///96\n"); /***/ }), /* 97 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__OcrdProjectListItem_vue__ = __webpack_require__(237);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n components: {\n OcrdProjectListItem: __WEBPACK_IMPORTED_MODULE_0__OcrdProjectListItem_vue__[\"a\" /* default */]\n },\n props: {\n repos: { required: true }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL09jcmRQcm9qZWN0TGlzdC52dWU/ZDRmNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBZUE7QUFDQTtBQUNBO0FBQ0E7QUFEQSxHQURBO0FBSUE7QUFDQTtBQURBO0FBSkEiLCJmaWxlIjoiOTcuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gIDxkaXY+XG4gICAgPGItcm93PlxuICAgICAgPG9jcmQtcHJvamVjdC1saXN0LWl0ZW1cbiAgICAgICAgdi1mb3I9XCJyZXBvIGluIHJlcG9zXCJcbiAgICAgICAgOmtleT1cInJlcG8ub3JnX3BsdXNfbmFtZVwiXG4gICAgICAgIDpyZXBvPVwicmVwb1wiXG4gICAgICA+XG4gICAgICA8L29jcmQtcHJvamVjdC1saXN0LWl0ZW0+XG4gICAgPC9iLXJvdz5cblxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgT2NyZFByb2plY3RMaXN0SXRlbSBmcm9tICcuL09jcmRQcm9qZWN0TGlzdEl0ZW0udnVlJ1xuZXhwb3J0IGRlZmF1bHQge1xuICBjb21wb25lbnRzOiB7XG4gICAgT2NyZFByb2plY3RMaXN0SXRlbVxuICB9LFxuICBwcm9wczoge1xuICAgIHJlcG9zOiB7cmVxdWlyZWQ6IHRydWV9XG4gIH1cbn1cbjwvc2NyaXB0PlxuXG48c3R5bGU+XG5cbjwvc3R5bGU+XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL09jcmRQcm9qZWN0TGlzdC52dWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///97\n"); +eval("//\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/* harmony default export */ __webpack_exports__[\"a\"] = ({\n props: {\n processor: { required: true }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL09jcmRQcm9jZXNzb3JMaXN0SXRlbS52dWU/NDk1MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNDQTtBQUNBO0FBQ0E7QUFEQTtBQURBIiwiZmlsZSI6Ijk3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICA8Yi1jYXJkXG4gICAgdGFnPVwiYXJ0aWNsZVwiXG4gICAgOnRpdGxlPVwicHJvY2Vzc29yLmV4ZWN1dGFibGUucmVwbGFjZSgnb2NyZC0nLCAnJylcIlxuICAgIGNsYXNzPVwibWItNVwiXG4gICAgPlxuICAgIDxiLWNhcmQtdGV4dD5cblxuICAgICAgPGItdGFicz5cbiAgICAgICAgPGItdGFiIHRpdGxlPVwiRGVzY3JpcHRpb25cIj5cbiAgICAgICAgICA8YmxvY2txdW90ZT5cbiAgICAgICAgICAgIHt7IHByb2Nlc3Nvci5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgIDwvYmxvY2txdW90ZT5cbiAgICAgICAgICA8Yi1iYWRnZSB2YXJpYW50PVwiaW5mb1wiIHYtZm9yPVwic3RlcCBpbiBwcm9jZXNzb3Iuc3RlcHNcIj57eyBzdGVwIH19PC9iLWJhZGdlPlxuICA8Yi1iYWRnZSB2YXJpYW50PVwic3VjY2Vzc1wiIHYtZm9yPVwiY2F0ZWdvcnkgaW4gcHJvY2Vzc29yLmNhdGVnb3JpZXNcIj57eyBjYXRlZ29yeSB9fTwvYi1iYWRnZT5cbiAgICAgICAgICA8cD5cbiAgICAgICAgICAgIFBhcnQgb2YgPGEgaHJlZj1cIlwiPnt7IHByb2Nlc3Nvci5wYXJ0X29mIH19PC9hPlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8cD5cbiAgICAgICAgICAgIDxhIGhyZWY9XCJcIj5SZWFkIHRoZSBEb2N1bWVudGF0aW9uITwvYT5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvYi10YWI+XG5cbiAgICAgICAgPGItdGFiIHRpdGxlPVwiUGFyYW1ldGVyc1wiPlxuICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgIDxsaSB2LWZvcj1cInBhcmFtLCBuYW1lIGluIHByb2Nlc3Nvci5wYXJhbWV0ZXJzXCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgbmFtZSB9fTwvc3Ryb25nPiB7eyBwYXJhbSB9fVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2ItdGFiPlxuXG4gICAgICA8L2ItdGFicz5cblxuICAgIDwvYi1jYXJkLXRleHQ+XG4gIDwvYi1jYXJkPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgcHJvcHM6IHtcbiAgICBwcm9jZXNzb3I6IHtyZXF1aXJlZDogdHJ1ZX1cbiAgfVxufVxuPC9zY3JpcHQ+XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL09jcmRQcm9jZXNzb3JMaXN0SXRlbS52dWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///97\n"); /***/ }), /* 98 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_marked__ = __webpack_require__(240);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_marked___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_marked__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_code_highlight__ = __webpack_require__(241);\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//\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n components: {\n VueCodeHighlight: __WEBPACK_IMPORTED_MODULE_1_vue_code_highlight__[\"a\" /* component */]\n },\n props: {\n repo: { required: true }\n },\n computed: {\n cleanId: function cleanId() {\n return this.repo.org_plus_name.replace(/[^A-Za-z0-9]/g, '-');\n },\n compiledReadme: function compiledReadme() {\n var src = this.repo.files['README.md'];\n if (!src) src = '`# NO README`';\n return __WEBPACK_IMPORTED_MODULE_0_marked___default()(src);\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL09jcmRQcm9qZWN0TGlzdEl0ZW0udnVlP2NjZWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBREEsR0FEQTtBQUlBO0FBQ0E7QUFEQSxHQUpBO0FBT0E7QUFDQSxXQURBLHFCQUNBO0FBQ0E7QUFDQSxLQUhBO0FBSUEsa0JBSkEsNEJBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBUEEiLCJmaWxlIjoiOTguanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gIDxiLWNhcmRcbiAgICA6dGl0bGU9XCJyZXBvLm9yZ19wbHVzX25hbWVcIlxuICAgIHRhZz1cImFydGljbGVcIlxuICAgIGNsYXNzPVwibWItNSBvY3JkLXByb2plY3QtbGlzdC1pdGVtXCJcbiAgICA+XG4gICAgPGItdGFicz5cbiAgICAgIDxiLXRhYiB0aXRsZT1cIlJFQURNRVwiPlxuICAgICAgICA8ZGl2IHYtaHRtbD1cImNvbXBpbGVkUmVhZG1lXCI+PC9kaXY+XG4gICAgICA8L2ItdGFiPlxuICAgICAgPGItdGFiIHRpdGxlPVwiRG9ja2VyZmlsZVwiPlxuICAgICAgICA8dnVlLWNvZGUtaGlnaGxpZ2h0Pnt7IHJlcG8uZmlsZXMuRG9ja2VyZmlsZSB8fCAnIyBOTyBET0NLRVJGSUxFJyB9fTwvdnVlLWNvZGUtaGlnaGxpZ2h0PlxuICAgICAgPC9iLXRhYj5cbiAgICAgIDxiLXRhYiB0aXRsZT1cIkdpdFwiPlxuICAgICAgICA8Yi1jYXJkLXRleHQ+XG4gICAgICAgICAgPHA+XG4gICAgICAgICAgICA8YSBocmVmPVwiYGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC8keyByZXBvLnB5dGhvbi5uYW1lIH0vYFwiPiAgICAgICAgICAgICA8aW1nIDpzcmM9XCJgaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvJHsgcmVwby5weXRob24ubmFtZSB9LnN2Z2BcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPiA8L2E+XG4gICAgICAgICAgICA8IS0tIDxhIGhyZWY9XCJgaHR0cHM6Ly90cmF2aXMtY2kub3JnLyR7IHJlcG8ub3JnX3BsdXNfbmFtZSB9YFwiPiAgICAgICAgICAgICAgIDxpbWcgOnNyYz1cImBodHRwczovL3RyYXZpcy1jaS5vcmcvJHsgcmVwby5vcmdfcGx1c19uYW1lIH0uc3ZnP2JyYW5jaD1tYXN0ZXJgXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+IDwvYT4gLS0+XG4gICAgICAgICAgICA8IS0tIDxhIGhyZWY9XCJgaHR0cHM6Ly9jaXJjbGVjaS5jb20vZ2gvJHsgcmVwby5vcmdfcGx1c19uYW1lIH1gXCI+ICAgICAgICAgICAgIDxpbWcgOnNyYz1cImBodHRwczovL2NpcmNsZWNpLmNvbS9naC8keyByZXBvLm9yZ19wbHVzX25hbWUgfS5zdmc/c3R5bGU9c3ZnYFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+IDwvYT4gLS0+XG4gICAgICAgICAgICA8IS0tIDxhIGhyZWY9XCJgaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL29jcmQvY29yZS90YWdzL2BcIj4gICAgICAgICAgICAgICAgICAgICA8aW1nIDpzcmM9XCJgaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kb2NrZXIvYXV0b21hdGVkL29jcmQvY29yZS5zdmdgXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz4gPC9hPiAtLT5cbiAgICAgICAgICAgIDwhLS0gPGEgaHJlZj1cImBodHRwczovL2NvZGVjb3YuaW8vZ2gvJHsgcmVwby5vcmdfcGx1c19uYW1lIH1gXCI+ICAgICAgICAgICAgICAgPGltZyA6c3JjPVwiYGh0dHBzOi8vY29kZWNvdi5pby9naC8keyByZXBvLm9yZ19wbHVzX25hbWUgfS9icmFuY2gvbWFzdGVyL2dyYXBoL2JhZGdlLnN2Z2BcIiAgICAgICAgICAgICAgICAgLz4gPC9hPiAtLT5cbiAgICAgICAgICAgIDwhLS0gPGEgaHJlZj1cImBodHRwczovL3NjcnV0aW5pemVyLWNpLmNvbS9nLyR7IHJlcG8ub3JnX3BsdXNfbmFtZSB9YFwiPiAgICAgICAgPGltZyA6c3JjPVwiYGh0dHBzOi8vc2NydXRpbml6ZXItY2kuY29tL2cvJHsgcmVwby5vcmdfcGx1c19uYW1lIH0vYmFkZ2VzL3F1YWxpdHktc2NvcmUucG5nP2I9bWFzdGVyYFwiICAgICAgLz4gPC9hPiAtLT5cbiAgICAgICAgICAgIDwhLS0gPGEgaHJlZj1cImBodHRwczovL2xndG0uY29tL3Byb2plY3RzL2cvJHsgcmVwby5vcmdfcGx1c19uYW1lIH0vYWxlcnRzL2BcIj4gPGltZyA6c3JjPVwiYGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbGd0bS9hbGVydHMvZy8keyByZXBvLm9yZ19wbHVzX25hbWUgfS5zdmc/bG9nbz1sZ3RtJmFtcDtsb2dvV2lkdGg9MThgXCIgLz4gPC9hPiAtLT5cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGItdGFibGUgdi1pZj1cInJlcG8uZ2l0XCIgOml0ZW1zPVwiW3JlcG8uZ2l0XVwiPjwvYi10YWJsZT5cbiAgICAgICAgPC9iLWNhcmQtdGV4dD5cbiAgICAgIDwvYi10YWI+XG5cbiAgICAgIDxiLXRhYiB0aXRsZT1cIm9jcmQtdG9vbCB2YWxpZGF0aW9uXCI+XG4gICAgICAgIDxiLWNhcmQtdGV4dD5cbiAgICAgICAgICA8dnVlLWNvZGUtaGlnaGxpZ2h0Pnt7IHJlcG8ub2NyZF90b29sX3ZhbGlkYXRlIHx8ICcjIE5PIHZhbGlkYXRpb24gZGF0YScgfX08L3Z1ZS1jb2RlLWhpZ2hsaWdodD5cbiAgICAgICAgPC9iLWNhcmQtdGV4dD5cbiAgICAgIDwvYi10YWI+XG5cbiAgICAgIDxiLXRhYiB0aXRsZT1cIlB5dGhvblwiPlxuICAgICAgICA8Yi1jYXJkLXRleHQ+XG4gICAgICAgICAgPGItdGFibGUgdi1pZj1cInJlcG8ucHl0aG9uXCIgOml0ZW1zPVwiW3JlcG8ucHl0aG9uXVwiPjwvYi10YWJsZT5cbiAgICAgICAgPC9iLWNhcmQtdGV4dD5cbiAgICAgIDwvYi10YWI+XG5cbiAgICA8L2ItdGFicz5cbiAgPC9iLWNhcmQ+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IG1hcmtlZCBmcm9tICdtYXJrZWQnXG5pbXBvcnQgeyBjb21wb25lbnQgYXMgVnVlQ29kZUhpZ2hsaWdodCB9IGZyb20gJ3Z1ZS1jb2RlLWhpZ2hsaWdodCdcblxuZXhwb3J0IGRlZmF1bHQge1xuICBjb21wb25lbnRzOiB7XG4gICAgVnVlQ29kZUhpZ2hsaWdodFxuICB9LFxuICBwcm9wczoge1xuICAgIHJlcG86IHtyZXF1aXJlZDogdHJ1ZX0sXG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgY2xlYW5JZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcG8ub3JnX3BsdXNfbmFtZS5yZXBsYWNlKC9bXkEtWmEtejAtOV0vZywgJy0nKVxuICAgIH0sXG4gICAgY29tcGlsZWRSZWFkbWUoKSB7XG4gICAgICBsZXQgc3JjID0gdGhpcy5yZXBvLmZpbGVzWydSRUFETUUubWQnXVxuICAgICAgaWYgKCFzcmMpIHNyYyA9ICdgIyBOTyBSRUFETUVgJ1xuICAgICAgcmV0dXJuIG1hcmtlZChzcmMpXG4gICAgfVxuICB9XG59XG48L3NjcmlwdD5cblxuPHN0eWxlPlxuXG4ub2NyZC1wcm9qZWN0LWxpc3QtaXRlbSB7XG4gIG1heC13aWR0aDogMzByZW07XG4gIG1heC1oZWlnaHQ6IDMwcmVtO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbjwvc3R5bGU+XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL09jcmRQcm9qZWN0TGlzdEl0ZW0udnVlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///98\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__OcrdProjectListItem_vue__ = __webpack_require__(99);\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/* harmony default export */ __webpack_exports__[\"a\"] = ({\n data: function data() {\n return {\n name_filter: '',\n tabIndex: 0\n };\n },\n\n computed: {\n filtered_repos: function filtered_repos() {\n var _this = this;\n\n return this.repos.filter(function (repo) {\n return repo.name.toLowerCase().includes(_this.name_filter.toLowerCase());\n });\n }\n },\n components: {\n OcrdProjectListItem: __WEBPACK_IMPORTED_MODULE_0__OcrdProjectListItem_vue__[\"a\" /* default */]\n },\n props: {\n repos: { required: true }\n },\n methods: {\n switchTab: function switchTab(delta) {\n this.tabIndex += delta;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL09jcmRQcm9qZWN0TGlzdC52dWU/ZDRmNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2QkE7QUFDQTtBQUNBLE1BREEsa0JBQ0E7QUFDQTtBQUNBLHFCQURBO0FBRUE7QUFGQTtBQUlBLEdBTkE7O0FBT0E7QUFDQSxrQkFEQSw0QkFDQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUNBO0FBSEEsR0FQQTtBQVlBO0FBQ0E7QUFEQSxHQVpBO0FBZUE7QUFDQTtBQURBLEdBZkE7QUFrQkE7QUFDQSxhQURBLHFCQUNBLEtBREEsRUFDQTtBQUNBO0FBQ0E7QUFIQTtBQWxCQSIsImZpbGUiOiI5OC5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cbiAgPGRpdj5cbiAgICA8Yi1yb3c+XG4gICAgICA8Yi1idXR0b24gdi1iLXRvZ2dsZS5wcm9qZWN0LWNvbnRyb2xzIGNsYXNzPVwibS0xXCI+VG9nZ2xlIENvbnRyb2xzPC9iLWJ1dHRvbj5cbiAgICAgIDxiLWNvbGxhcHNlIGlkPVwicHJvamVjdC1jb250cm9sc1wiPlxuICAgICAgICA8Yi1jb250YWluZXI+XG4gICAgICAgICAgPGItcm93PlxuICAgICAgICAgICAgRmlsdGVyIGJ5IG5hbWU6IDxpbnB1dCB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJuYW1lX2ZpbHRlclwiLz4gKFNob3dpbmcge3sgZmlsdGVyZWRfcmVwb3MubGVuZ3RoIH19IG9mIHt7IHJlcG9zLmxlbmd0aH19IHJlcG9zKVxuICAgICAgICAgIDwvYi1yb3c+XG4gICAgICAgICAgPGItcm93PlxuICAgICAgICAgICAgVGFiczogPGItYnV0dG9uIEBjbGljaz1cInRhYkluZGV4IC09IDFcIj4mbHQ7PC9iLWJ1dHRvbj4gPGItYnV0dG9uIEBjbGljaz1cInRhYkluZGV4ICs9IDFcIj4mZ3Q7PC9iLWJ1dHRvbj5cbiAgICAgICAgICA8L2Itcm93PlxuICAgICAgICA8L2ItY29udGFpbmVyPlxuICAgICAgPC9iLWNvbGxhcHNlPlxuICAgIDwvYi1yb3c+XG4gICAgPGItcm93PlxuICAgICAgPG9jcmQtcHJvamVjdC1saXN0LWl0ZW1cbiAgICAgICAgdi1mb3I9XCJyZXBvLCBpZHggaW4gZmlsdGVyZWRfcmVwb3NcIlxuICAgICAgICA6a2V5PVwicmVwby5vcmdfcGx1c19uYW1lXCJcbiAgICAgICAgOnJlcG89XCJyZXBvXCJcbiAgICAgICAgOnRhYkluZGV4PVwidGFiSW5kZXhcIlxuICAgICAgPlxuICAgICAgPC9vY3JkLXByb2plY3QtbGlzdC1pdGVtPlxuICAgIDwvYi1yb3c+XG5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IE9jcmRQcm9qZWN0TGlzdEl0ZW0gZnJvbSAnLi9PY3JkUHJvamVjdExpc3RJdGVtLnZ1ZSdcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZV9maWx0ZXI6ICcnLFxuICAgICAgdGFiSW5kZXg6IDAsXG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGZpbHRlcmVkX3JlcG9zKCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVwb3MuZmlsdGVyKHJlcG8gPT4gcmVwby5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5uYW1lX2ZpbHRlci50b0xvd2VyQ2FzZSgpKSlcbiAgICB9XG4gIH0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICBPY3JkUHJvamVjdExpc3RJdGVtXG4gIH0sXG4gIHByb3BzOiB7XG4gICAgcmVwb3M6IHtyZXF1aXJlZDogdHJ1ZX1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHN3aXRjaFRhYihkZWx0YSkge1xuICAgICAgdGhpcy50YWJJbmRleCArPSBkZWx0YVxuICAgIH1cbiAgfVxufVxuPC9zY3JpcHQ+XG5cbjxzdHlsZT5cblxuPC9zdHlsZT5cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvT2NyZFByb2plY3RMaXN0LnZ1ZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///98\n"); /***/ }), /* 99 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__object__ = __webpack_require__(8);\n // --- General BootstrapVue configuration ---\n// NOTES\n//\n// The global config SHALL NOT be used to set defaults for Boolean props, as the props\n// would loose their semantic meaning, and force people writing 3rd party components to\n// explicity set a true or false value using the v-bind syntax on boolean props\n//\n// Supported config values (depending on the prop's supported type(s)):\n// `String`, `Array`, `Object`, `null` or `undefined`\n// BREAKPOINT DEFINITIONS\n//\n// Some components (`<b-col>` and `<b-form-group>`) generate props based on breakpoints,\n// and this occurs when the component is first loaded (evaluated), which may happen\n// before the config is created/modified\n//\n// To get around this we make these components' props async (lazy evaluation)\n// The component definition is only called/executed when the first access to the\n// component is used (and cached on subsequent uses)\n// PROP DEFAULTS\n//\n// For default values on props, we use the default value factory function approach so\n// that the default values are pulled in at each component instantiation\n//\n// props: {\n// variant: {\n// type: String,\n// default: () => getConfigComponent('BAlert', 'variant')\n// }\n// }\n//\n// We also provide a cached getter for breakpoints, which are \"frozen\" on first access\n// prettier-ignore\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__object__[\"c\" /* deepFreeze */])({\n // Breakpoints\n breakpoints: ['xs', 'sm', 'md', 'lg', 'xl'],\n // Form controls\n formControls: {\n size: null\n },\n // Component specific defaults are keyed by the component\n // name (PascalCase) and prop name (camelCase)\n BAlert: {\n dismissLabel: 'Close',\n variant: 'info'\n },\n BBadge: {\n variant: 'secondary'\n },\n BButton: {\n size: null,\n variant: 'secondary'\n },\n BButtonClose: {\n // `textVariant` is `null` to inherit the current text color\n textVariant: null,\n ariaLabel: 'Close'\n },\n BCardSubTitle: {\n // `<b-card>` and `<b-card-body>` also inherit this prop\n subTitleTextVariant: 'muted'\n },\n BCarousel: {\n labelPrev: 'Previous Slide',\n labelNext: 'Next Slide',\n labelGotoSlide: 'Goto Slide',\n labelIndicators: 'Select a slide to display'\n },\n BDropdown: {\n toggleText: 'Toggle Dropdown',\n size: null,\n variant: 'secondary',\n splitVariant: null\n },\n BFormFile: {\n browseText: 'Browse',\n // Chrome default file prompt\n placeholder: 'No file chosen',\n dropPlaceholder: 'Drop files here'\n },\n BFormText: {\n textVariant: 'muted'\n },\n BImg: {\n blankColor: 'transparent'\n },\n BImgLazy: {\n blankColor: 'transparent'\n },\n BInputGroup: {\n size: null\n },\n BJumbotron: {\n bgVariant: null,\n borderVariant: null,\n textVariant: null\n },\n BListGroupItem: {\n variant: null\n },\n BModal: {\n titleTag: 'h5',\n size: 'md',\n headerBgVariant: null,\n headerBorderVariant: null,\n headerTextVariant: null,\n headerCloseVariant: null,\n bodyBgVariant: null,\n bodyTextVariant: null,\n footerBgVariant: null,\n footerBorderVariant: null,\n footerTextVariant: null,\n cancelTitle: 'Cancel',\n cancelVariant: 'secondary',\n okTitle: 'OK',\n okVariant: 'primary',\n headerCloseLabel: 'Close'\n },\n BNavbar: {\n variant: null\n },\n BNavbarToggle: {\n label: 'Toggle navigation'\n },\n BPagination: {\n size: null\n },\n BPaginationNav: {\n size: null\n },\n BPopover: {\n boundary: 'scrollParent',\n boundaryPadding: 5,\n customClass: null,\n delay: 50,\n variant: null\n },\n BProgress: {\n variant: null\n },\n BProgressBar: {\n variant: null\n },\n BSpinner: {\n variant: null\n },\n BTable: {\n selectedVariant: 'primary',\n headVariant: null,\n footVariant: null\n },\n BToast: {\n toaster: 'b-toaster-top-right',\n autoHideDelay: 5000,\n variant: null,\n toastClass: null,\n headerClass: null,\n bodyClass: null\n },\n BToaster: {\n ariaLive: null,\n ariaAtomic: null,\n role: null\n },\n BTooltip: {\n boundary: 'scrollParent',\n boundaryPadding: 5,\n customClass: null,\n delay: 50,\n variant: null\n }\n}));\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvY29uZmlnLWRlZmF1bHRzLmpzPzk1ZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWUsNEhBQVU7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyIsImZpbGUiOiI5OS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZXBGcmVlemUgfSBmcm9tICcuL29iamVjdCc7IC8vIC0tLSBHZW5lcmFsIEJvb3RzdHJhcFZ1ZSBjb25maWd1cmF0aW9uIC0tLVxuLy8gTk9URVNcbi8vXG4vLyBUaGUgZ2xvYmFsIGNvbmZpZyBTSEFMTCBOT1QgYmUgdXNlZCB0byBzZXQgZGVmYXVsdHMgZm9yIEJvb2xlYW4gcHJvcHMsIGFzIHRoZSBwcm9wc1xuLy8gd291bGQgbG9vc2UgdGhlaXIgc2VtYW50aWMgbWVhbmluZywgYW5kIGZvcmNlIHBlb3BsZSB3cml0aW5nIDNyZCBwYXJ0eSBjb21wb25lbnRzIHRvXG4vLyBleHBsaWNpdHkgc2V0IGEgdHJ1ZSBvciBmYWxzZSB2YWx1ZSB1c2luZyB0aGUgdi1iaW5kIHN5bnRheCBvbiBib29sZWFuIHByb3BzXG4vL1xuLy8gU3VwcG9ydGVkIGNvbmZpZyB2YWx1ZXMgKGRlcGVuZGluZyBvbiB0aGUgcHJvcCdzIHN1cHBvcnRlZCB0eXBlKHMpKTpcbi8vIGBTdHJpbmdgLCBgQXJyYXlgLCBgT2JqZWN0YCwgYG51bGxgIG9yIGB1bmRlZmluZWRgXG4vLyBCUkVBS1BPSU5UIERFRklOSVRJT05TXG4vL1xuLy8gU29tZSBjb21wb25lbnRzIChgPGItY29sPmAgYW5kIGA8Yi1mb3JtLWdyb3VwPmApIGdlbmVyYXRlIHByb3BzIGJhc2VkIG9uIGJyZWFrcG9pbnRzLFxuLy8gYW5kIHRoaXMgb2NjdXJzIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBmaXJzdCBsb2FkZWQgKGV2YWx1YXRlZCksIHdoaWNoIG1heSBoYXBwZW5cbi8vIGJlZm9yZSB0aGUgY29uZmlnIGlzIGNyZWF0ZWQvbW9kaWZpZWRcbi8vXG4vLyBUbyBnZXQgYXJvdW5kIHRoaXMgd2UgbWFrZSB0aGVzZSBjb21wb25lbnRzJyBwcm9wcyBhc3luYyAobGF6eSBldmFsdWF0aW9uKVxuLy8gVGhlIGNvbXBvbmVudCBkZWZpbml0aW9uIGlzIG9ubHkgY2FsbGVkL2V4ZWN1dGVkIHdoZW4gdGhlIGZpcnN0IGFjY2VzcyB0byB0aGVcbi8vIGNvbXBvbmVudCBpcyB1c2VkIChhbmQgY2FjaGVkIG9uIHN1YnNlcXVlbnQgdXNlcylcbi8vIFBST1AgREVGQVVMVFNcbi8vXG4vLyBGb3IgZGVmYXVsdCB2YWx1ZXMgb24gcHJvcHMsIHdlIHVzZSB0aGUgZGVmYXVsdCB2YWx1ZSBmYWN0b3J5IGZ1bmN0aW9uIGFwcHJvYWNoIHNvXG4vLyB0aGF0IHRoZSBkZWZhdWx0IHZhbHVlcyBhcmUgcHVsbGVkIGluIGF0IGVhY2ggY29tcG9uZW50IGluc3RhbnRpYXRpb25cbi8vXG4vLyAgcHJvcHM6IHtcbi8vICAgIHZhcmlhbnQ6IHtcbi8vICAgICAgdHlwZTogU3RyaW5nLFxuLy8gICAgICBkZWZhdWx0OiAoKSA9PiBnZXRDb25maWdDb21wb25lbnQoJ0JBbGVydCcsICd2YXJpYW50Jylcbi8vICAgIH1cbi8vICB9XG4vL1xuLy8gV2UgYWxzbyBwcm92aWRlIGEgY2FjaGVkIGdldHRlciBmb3IgYnJlYWtwb2ludHMsIHdoaWNoIGFyZSBcImZyb3plblwiIG9uIGZpcnN0IGFjY2Vzc1xuLy8gcHJldHRpZXItaWdub3JlXG5cbmV4cG9ydCBkZWZhdWx0IGRlZXBGcmVlemUoe1xuICAvLyBCcmVha3BvaW50c1xuICBicmVha3BvaW50czogWyd4cycsICdzbScsICdtZCcsICdsZycsICd4bCddLFxuICAvLyBGb3JtIGNvbnRyb2xzXG4gIGZvcm1Db250cm9sczoge1xuICAgIHNpemU6IG51bGxcbiAgfSxcbiAgLy8gQ29tcG9uZW50IHNwZWNpZmljIGRlZmF1bHRzIGFyZSBrZXllZCBieSB0aGUgY29tcG9uZW50XG4gIC8vIG5hbWUgKFBhc2NhbENhc2UpIGFuZCBwcm9wIG5hbWUgKGNhbWVsQ2FzZSlcbiAgQkFsZXJ0OiB7XG4gICAgZGlzbWlzc0xhYmVsOiAnQ2xvc2UnLFxuICAgIHZhcmlhbnQ6ICdpbmZvJ1xuICB9LFxuICBCQmFkZ2U6IHtcbiAgICB2YXJpYW50OiAnc2Vjb25kYXJ5J1xuICB9LFxuICBCQnV0dG9uOiB7XG4gICAgc2l6ZTogbnVsbCxcbiAgICB2YXJpYW50OiAnc2Vjb25kYXJ5J1xuICB9LFxuICBCQnV0dG9uQ2xvc2U6IHtcbiAgICAvLyBgdGV4dFZhcmlhbnRgIGlzIGBudWxsYCB0byBpbmhlcml0IHRoZSBjdXJyZW50IHRleHQgY29sb3JcbiAgICB0ZXh0VmFyaWFudDogbnVsbCxcbiAgICBhcmlhTGFiZWw6ICdDbG9zZSdcbiAgfSxcbiAgQkNhcmRTdWJUaXRsZToge1xuICAgIC8vIGA8Yi1jYXJkPmAgYW5kIGA8Yi1jYXJkLWJvZHk+YCBhbHNvIGluaGVyaXQgdGhpcyBwcm9wXG4gICAgc3ViVGl0bGVUZXh0VmFyaWFudDogJ211dGVkJ1xuICB9LFxuICBCQ2Fyb3VzZWw6IHtcbiAgICBsYWJlbFByZXY6ICdQcmV2aW91cyBTbGlkZScsXG4gICAgbGFiZWxOZXh0OiAnTmV4dCBTbGlkZScsXG4gICAgbGFiZWxHb3RvU2xpZGU6ICdHb3RvIFNsaWRlJyxcbiAgICBsYWJlbEluZGljYXRvcnM6ICdTZWxlY3QgYSBzbGlkZSB0byBkaXNwbGF5J1xuICB9LFxuICBCRHJvcGRvd246IHtcbiAgICB0b2dnbGVUZXh0OiAnVG9nZ2xlIERyb3Bkb3duJyxcbiAgICBzaXplOiBudWxsLFxuICAgIHZhcmlhbnQ6ICdzZWNvbmRhcnknLFxuICAgIHNwbGl0VmFyaWFudDogbnVsbFxuICB9LFxuICBCRm9ybUZpbGU6IHtcbiAgICBicm93c2VUZXh0OiAnQnJvd3NlJyxcbiAgICAvLyBDaHJvbWUgZGVmYXVsdCBmaWxlIHByb21wdFxuICAgIHBsYWNlaG9sZGVyOiAnTm8gZmlsZSBjaG9zZW4nLFxuICAgIGRyb3BQbGFjZWhvbGRlcjogJ0Ryb3AgZmlsZXMgaGVyZSdcbiAgfSxcbiAgQkZvcm1UZXh0OiB7XG4gICAgdGV4dFZhcmlhbnQ6ICdtdXRlZCdcbiAgfSxcbiAgQkltZzoge1xuICAgIGJsYW5rQ29sb3I6ICd0cmFuc3BhcmVudCdcbiAgfSxcbiAgQkltZ0xhenk6IHtcbiAgICBibGFua0NvbG9yOiAndHJhbnNwYXJlbnQnXG4gIH0sXG4gIEJJbnB1dEdyb3VwOiB7XG4gICAgc2l6ZTogbnVsbFxuICB9LFxuICBCSnVtYm90cm9uOiB7XG4gICAgYmdWYXJpYW50OiBudWxsLFxuICAgIGJvcmRlclZhcmlhbnQ6IG51bGwsXG4gICAgdGV4dFZhcmlhbnQ6IG51bGxcbiAgfSxcbiAgQkxpc3RHcm91cEl0ZW06IHtcbiAgICB2YXJpYW50OiBudWxsXG4gIH0sXG4gIEJNb2RhbDoge1xuICAgIHRpdGxlVGFnOiAnaDUnLFxuICAgIHNpemU6ICdtZCcsXG4gICAgaGVhZGVyQmdWYXJpYW50OiBudWxsLFxuICAgIGhlYWRlckJvcmRlclZhcmlhbnQ6IG51bGwsXG4gICAgaGVhZGVyVGV4dFZhcmlhbnQ6IG51bGwsXG4gICAgaGVhZGVyQ2xvc2VWYXJpYW50OiBudWxsLFxuICAgIGJvZHlCZ1ZhcmlhbnQ6IG51bGwsXG4gICAgYm9keVRleHRWYXJpYW50OiBudWxsLFxuICAgIGZvb3RlckJnVmFyaWFudDogbnVsbCxcbiAgICBmb290ZXJCb3JkZXJWYXJpYW50OiBudWxsLFxuICAgIGZvb3RlclRleHRWYXJpYW50OiBudWxsLFxuICAgIGNhbmNlbFRpdGxlOiAnQ2FuY2VsJyxcbiAgICBjYW5jZWxWYXJpYW50OiAnc2Vjb25kYXJ5JyxcbiAgICBva1RpdGxlOiAnT0snLFxuICAgIG9rVmFyaWFudDogJ3ByaW1hcnknLFxuICAgIGhlYWRlckNsb3NlTGFiZWw6ICdDbG9zZSdcbiAgfSxcbiAgQk5hdmJhcjoge1xuICAgIHZhcmlhbnQ6IG51bGxcbiAgfSxcbiAgQk5hdmJhclRvZ2dsZToge1xuICAgIGxhYmVsOiAnVG9nZ2xlIG5hdmlnYXRpb24nXG4gIH0sXG4gIEJQYWdpbmF0aW9uOiB7XG4gICAgc2l6ZTogbnVsbFxuICB9LFxuICBCUGFnaW5hdGlvbk5hdjoge1xuICAgIHNpemU6IG51bGxcbiAgfSxcbiAgQlBvcG92ZXI6IHtcbiAgICBib3VuZGFyeTogJ3Njcm9sbFBhcmVudCcsXG4gICAgYm91bmRhcnlQYWRkaW5nOiA1LFxuICAgIGN1c3RvbUNsYXNzOiBudWxsLFxuICAgIGRlbGF5OiA1MCxcbiAgICB2YXJpYW50OiBudWxsXG4gIH0sXG4gIEJQcm9ncmVzczoge1xuICAgIHZhcmlhbnQ6IG51bGxcbiAgfSxcbiAgQlByb2dyZXNzQmFyOiB7XG4gICAgdmFyaWFudDogbnVsbFxuICB9LFxuICBCU3Bpbm5lcjoge1xuICAgIHZhcmlhbnQ6IG51bGxcbiAgfSxcbiAgQlRhYmxlOiB7XG4gICAgc2VsZWN0ZWRWYXJpYW50OiAncHJpbWFyeScsXG4gICAgaGVhZFZhcmlhbnQ6IG51bGwsXG4gICAgZm9vdFZhcmlhbnQ6IG51bGxcbiAgfSxcbiAgQlRvYXN0OiB7XG4gICAgdG9hc3RlcjogJ2ItdG9hc3Rlci10b3AtcmlnaHQnLFxuICAgIGF1dG9IaWRlRGVsYXk6IDUwMDAsXG4gICAgdmFyaWFudDogbnVsbCxcbiAgICB0b2FzdENsYXNzOiBudWxsLFxuICAgIGhlYWRlckNsYXNzOiBudWxsLFxuICAgIGJvZHlDbGFzczogbnVsbFxuICB9LFxuICBCVG9hc3Rlcjoge1xuICAgIGFyaWFMaXZlOiBudWxsLFxuICAgIGFyaWFBdG9taWM6IG51bGwsXG4gICAgcm9sZTogbnVsbFxuICB9LFxuICBCVG9vbHRpcDoge1xuICAgIGJvdW5kYXJ5OiAnc2Nyb2xsUGFyZW50JyxcbiAgICBib3VuZGFyeVBhZGRpbmc6IDUsXG4gICAgY3VzdG9tQ2xhc3M6IG51bGwsXG4gICAgZGVsYXk6IDUwLFxuICAgIHZhcmlhbnQ6IG51bGxcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvY29uZmlnLWRlZmF1bHRzLmpzXG4vLyBtb2R1bGUgaWQgPSA5OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///99\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_OcrdProjectListItem_vue__ = __webpack_require__(100);\n/* unused harmony namespace reexport */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_ab156a8a_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_OcrdProjectListItem_vue__ = __webpack_require__(243);\nvar disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n __webpack_require__(238)\n}\nvar normalizeComponent = __webpack_require__(29)\n/* script */\n\n\n/* template */\n\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_OcrdProjectListItem_vue__[\"a\" /* default */],\n __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_ab156a8a_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_OcrdProjectListItem_vue__[\"a\" /* default */],\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/OcrdProjectListItem.vue\"\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-ab156a8a\", Component.options)\n } else {\n hotAPI.reload(\"data-v-ab156a8a\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Component.exports);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2plY3RMaXN0SXRlbS52dWU/YWI2NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLG1CQUFPLENBQUMsR0FBd1E7QUFDbFI7QUFDQSx5QkFBeUIsbUJBQU8sQ0FBQyxFQUFzRDtBQUN2RjtBQUNvSDtBQUNhO0FBQ2pJO0FBQzhQO0FBQzlQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0lBQWM7QUFDaEIsRUFBRSw0T0FBZ0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFVLEdBQUc7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILENBQUM7O0FBRWMsMEVBQWlCIiwiZmlsZSI6Ijk5LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGRpc3Bvc2VkID0gZmFsc2VcbmZ1bmN0aW9uIGluamVjdFN0eWxlIChzc3JDb250ZXh0KSB7XG4gIGlmIChkaXNwb3NlZCkgcmV0dXJuXG4gIHJlcXVpcmUoXCIhIXZ1ZS1zdHlsZS1sb2FkZXIhY3NzLWxvYWRlcj9zb3VyY2VNYXAhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyL2luZGV4P3tcXFwidnVlXFxcIjp0cnVlLFxcXCJpZFxcXCI6XFxcImRhdGEtdi1hYjE1NmE4YVxcXCIsXFxcInNjb3BlZFxcXCI6ZmFsc2UsXFxcImhhc0lubGluZUNvbmZpZ1xcXCI6ZmFsc2V9IS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXN0eWxlcyZpbmRleD0wIS4vT2NyZFByb2plY3RMaXN0SXRlbS52dWVcIilcbn1cbnZhciBub3JtYWxpemVDb21wb25lbnQgPSByZXF1aXJlKFwiIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9jb21wb25lbnQtbm9ybWFsaXplclwiKVxuLyogc2NyaXB0ICovXG5leHBvcnQgKiBmcm9tIFwiISFiYWJlbC1sb2FkZXIhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9PY3JkUHJvamVjdExpc3RJdGVtLnZ1ZVwiXG5pbXBvcnQgX192dWVfc2NyaXB0X18gZnJvbSBcIiEhYmFiZWwtbG9hZGVyIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXNjcmlwdCZpbmRleD0wIS4vT2NyZFByb2plY3RMaXN0SXRlbS52dWVcIlxuLyogdGVtcGxhdGUgKi9cbmltcG9ydCBfX3Z1ZV90ZW1wbGF0ZV9fIGZyb20gXCIhIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxlci9pbmRleD97XFxcImlkXFxcIjpcXFwiZGF0YS12LWFiMTU2YThhXFxcIixcXFwiaGFzU2NvcGVkXFxcIjpmYWxzZSxcXFwiYnVibGVcXFwiOntcXFwidHJhbnNmb3Jtc1xcXCI6e319fSEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vT2NyZFByb2plY3RMaXN0SXRlbS52dWVcIlxuLyogdGVtcGxhdGUgZnVuY3Rpb25hbCAqL1xudmFyIF9fdnVlX3RlbXBsYXRlX2Z1bmN0aW9uYWxfXyA9IGZhbHNlXG4vKiBzdHlsZXMgKi9cbnZhciBfX3Z1ZV9zdHlsZXNfXyA9IGluamVjdFN0eWxlXG4vKiBzY29wZUlkICovXG52YXIgX192dWVfc2NvcGVJZF9fID0gbnVsbFxuLyogbW9kdWxlSWRlbnRpZmllciAoc2VydmVyIG9ubHkpICovXG52YXIgX192dWVfbW9kdWxlX2lkZW50aWZpZXJfXyA9IG51bGxcbnZhciBDb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIF9fdnVlX3NjcmlwdF9fLFxuICBfX3Z1ZV90ZW1wbGF0ZV9fLFxuICBfX3Z1ZV90ZW1wbGF0ZV9mdW5jdGlvbmFsX18sXG4gIF9fdnVlX3N0eWxlc19fLFxuICBfX3Z1ZV9zY29wZUlkX18sXG4gIF9fdnVlX21vZHVsZV9pZGVudGlmaWVyX19cbilcbkNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL09jcmRQcm9qZWN0TGlzdEl0ZW0udnVlXCJcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHsoZnVuY3Rpb24gKCkge1xuICB2YXIgaG90QVBJID0gcmVxdWlyZShcInZ1ZS1ob3QtcmVsb2FkLWFwaVwiKVxuICBob3RBUEkuaW5zdGFsbChyZXF1aXJlKFwidnVlXCIpLCBmYWxzZSlcbiAgaWYgKCFob3RBUEkuY29tcGF0aWJsZSkgcmV0dXJuXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFtb2R1bGUuaG90LmRhdGEpIHtcbiAgICBob3RBUEkuY3JlYXRlUmVjb3JkKFwiZGF0YS12LWFiMTU2YThhXCIsIENvbXBvbmVudC5vcHRpb25zKVxuICB9IGVsc2Uge1xuICAgIGhvdEFQSS5yZWxvYWQoXCJkYXRhLXYtYWIxNTZhOGFcIiwgQ29tcG9uZW50Lm9wdGlvbnMpXG4gIH1cbiAgbW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgZGlzcG9zZWQgPSB0cnVlXG4gIH0pXG59KSgpfVxuXG5leHBvcnQgZGVmYXVsdCBDb21wb25lbnQuZXhwb3J0c1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvT2NyZFByb2plY3RMaXN0SXRlbS52dWVcbi8vIG1vZHVsZSBpZCA9IDk5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///99\n"); /***/ }), /* 100 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return AlertPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__alert__ = __webpack_require__(101);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BAlert */\n\n\nvar AlertPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BAlert: __WEBPACK_IMPORTED_MODULE_0__alert__[\"a\" /* BAlert */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9hbGVydC9pbmRleC5qcz8wMTEyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ21CO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsWUFBWSxzREFBTTtBQUNsQjtBQUNBLENBQUMiLCJmaWxlIjoiMTAwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkFsZXJ0IH0gZnJvbSAnLi9hbGVydCc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgQWxlcnRQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCQWxlcnQ6IEJBbGVydFxuICB9XG59KTtcbmV4cG9ydCB7IEFsZXJ0UGx1Z2luLCBCQWxlcnQgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2FsZXJ0L2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///100\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_marked__ = __webpack_require__(240);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_marked___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_marked__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_code_highlight__ = __webpack_require__(241);\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//\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n components: {\n VueCodeHighlight: __WEBPACK_IMPORTED_MODULE_1_vue_code_highlight__[\"a\" /* component */]\n },\n // data() {\n // return {\n // tabIndex: 0\n // }\n // },\n props: {\n repo: { required: true },\n tabIndex: { default: 0 }\n },\n computed: {\n cleanId: function cleanId() {\n return this.repo.org_plus_name.replace(/[^A-Za-z0-9]/g, '-');\n },\n compiledReadme: function compiledReadme() {\n var src = this.repo.files['README.md'];\n if (!src) src = '`# NO README`';\n return __WEBPACK_IMPORTED_MODULE_0_marked___default()(src);\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL09jcmRQcm9qZWN0TGlzdEl0ZW0udnVlP2NjZWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBREEsR0FEQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQURBO0FBRUE7QUFGQSxHQVRBO0FBYUE7QUFDQSxXQURBLHFCQUNBO0FBQ0E7QUFDQSxLQUhBO0FBSUEsa0JBSkEsNEJBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBYkEiLCJmaWxlIjoiMTAwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICA8Yi1jYXJkXG4gICAgOnRpdGxlPVwicmVwby5vcmdfcGx1c19uYW1lXCJcbiAgICB0YWc9XCJhcnRpY2xlXCJcbiAgICBjbGFzcz1cIm1iLTUgb2NyZC1wcm9qZWN0LWxpc3QtaXRlbVwiXG4gICAgPlxuICAgIDxiLXRhYnMgdi1tb2RlbD1cInRhYkluZGV4XCI+XG4gICAgICA8Yi10YWIgdGl0bGU9XCJSRUFETUVcIj5cbiAgICAgICAgPGRpdiB2LWh0bWw9XCJjb21waWxlZFJlYWRtZVwiPjwvZGl2PlxuICAgICAgPC9iLXRhYj5cbiAgICAgIDxiLXRhYiB0aXRsZT1cIkRvY2tlcmZpbGVcIj5cbiAgICAgICAgPHZ1ZS1jb2RlLWhpZ2hsaWdodD57eyByZXBvLmZpbGVzLkRvY2tlcmZpbGUgfHwgJyMgTk8gRE9DS0VSRklMRScgfX08L3Z1ZS1jb2RlLWhpZ2hsaWdodD5cbiAgICAgIDwvYi10YWI+XG4gICAgICA8Yi10YWIgdGl0bGU9XCJHaXRcIj5cbiAgICAgICAgPGItY2FyZC10ZXh0PlxuICAgICAgICAgIDxwPlxuICAgICAgICAgICAgPGEgaHJlZj1cImBodHRwczovL3B5cGkub3JnL3Byb2plY3QvJHsgcmVwby5weXRob24ubmFtZSB9L2BcIj4gICAgICAgICAgICAgPGltZyA6c3JjPVwiYGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92LyR7IHJlcG8ucHl0aG9uLm5hbWUgfS5zdmdgXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz4gPC9hPlxuICAgICAgICAgICAgPCEtLSA8YSBocmVmPVwiYGh0dHBzOi8vdHJhdmlzLWNpLm9yZy8keyByZXBvLm9yZ19wbHVzX25hbWUgfWBcIj4gICAgICAgICAgICAgICA8aW1nIDpzcmM9XCJgaHR0cHM6Ly90cmF2aXMtY2kub3JnLyR7IHJlcG8ub3JnX3BsdXNfbmFtZSB9LnN2Zz9icmFuY2g9bWFzdGVyYFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPiA8L2E+IC0tPlxuICAgICAgICAgICAgPCEtLSA8YSBocmVmPVwiYGh0dHBzOi8vY2lyY2xlY2kuY29tL2doLyR7IHJlcG8ub3JnX3BsdXNfbmFtZSB9YFwiPiAgICAgICAgICAgICA8aW1nIDpzcmM9XCJgaHR0cHM6Ly9jaXJjbGVjaS5jb20vZ2gvJHsgcmVwby5vcmdfcGx1c19uYW1lIH0uc3ZnP3N0eWxlPXN2Z2BcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPiA8L2E+IC0tPlxuICAgICAgICAgICAgPCEtLSA8YSBocmVmPVwiYGh0dHBzOi8vaHViLmRvY2tlci5jb20vci9vY3JkL2NvcmUvdGFncy9gXCI+ICAgICAgICAgICAgICAgICAgICAgPGltZyA6c3JjPVwiYGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZG9ja2VyL2F1dG9tYXRlZC9vY3JkL2NvcmUuc3ZnYFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+IDwvYT4gLS0+XG4gICAgICAgICAgICA8IS0tIDxhIGhyZWY9XCJgaHR0cHM6Ly9jb2RlY292LmlvL2doLyR7IHJlcG8ub3JnX3BsdXNfbmFtZSB9YFwiPiAgICAgICAgICAgICAgIDxpbWcgOnNyYz1cImBodHRwczovL2NvZGVjb3YuaW8vZ2gvJHsgcmVwby5vcmdfcGx1c19uYW1lIH0vYnJhbmNoL21hc3Rlci9ncmFwaC9iYWRnZS5zdmdgXCIgICAgICAgICAgICAgICAgIC8+IDwvYT4gLS0+XG4gICAgICAgICAgICA8IS0tIDxhIGhyZWY9XCJgaHR0cHM6Ly9zY3J1dGluaXplci1jaS5jb20vZy8keyByZXBvLm9yZ19wbHVzX25hbWUgfWBcIj4gICAgICAgIDxpbWcgOnNyYz1cImBodHRwczovL3NjcnV0aW5pemVyLWNpLmNvbS9nLyR7IHJlcG8ub3JnX3BsdXNfbmFtZSB9L2JhZGdlcy9xdWFsaXR5LXNjb3JlLnBuZz9iPW1hc3RlcmBcIiAgICAgIC8+IDwvYT4gLS0+XG4gICAgICAgICAgICA8IS0tIDxhIGhyZWY9XCJgaHR0cHM6Ly9sZ3RtLmNvbS9wcm9qZWN0cy9nLyR7IHJlcG8ub3JnX3BsdXNfbmFtZSB9L2FsZXJ0cy9gXCI+IDxpbWcgOnNyYz1cImBodHRwczovL2ltZy5zaGllbGRzLmlvL2xndG0vYWxlcnRzL2cvJHsgcmVwby5vcmdfcGx1c19uYW1lIH0uc3ZnP2xvZ289bGd0bSZhbXA7bG9nb1dpZHRoPTE4YFwiIC8+IDwvYT4gLS0+XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxiLXRhYmxlIHYtaWY9XCJyZXBvLmdpdFwiIDppdGVtcz1cIltyZXBvLmdpdF1cIj48L2ItdGFibGU+XG4gICAgICAgIDwvYi1jYXJkLXRleHQ+XG4gICAgICA8L2ItdGFiPlxuXG4gICAgICA8Yi10YWIgdGl0bGU9XCJvY3JkLXRvb2wgdmFsaWRhdGlvblwiPlxuICAgICAgICA8Yi1jYXJkLXRleHQ+XG4gICAgICAgICAgPHZ1ZS1jb2RlLWhpZ2hsaWdodD57eyByZXBvLm9jcmRfdG9vbF92YWxpZGF0ZSB8fCAnIyBOTyB2YWxpZGF0aW9uIGRhdGEnIH19PC92dWUtY29kZS1oaWdobGlnaHQ+XG4gICAgICAgIDwvYi1jYXJkLXRleHQ+XG4gICAgICA8L2ItdGFiPlxuXG4gICAgICA8Yi10YWIgdGl0bGU9XCJQeXRob25cIj5cbiAgICAgICAgPGItY2FyZC10ZXh0PlxuICAgICAgICAgIDxiLXRhYmxlIHYtaWY9XCJyZXBvLnB5dGhvblwiIDppdGVtcz1cIltyZXBvLnB5dGhvbl1cIj48L2ItdGFibGU+XG4gICAgICAgIDwvYi1jYXJkLXRleHQ+XG4gICAgICA8L2ItdGFiPlxuXG4gICAgPC9iLXRhYnM+XG4gIDwvYi1jYXJkPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBtYXJrZWQgZnJvbSAnbWFya2VkJ1xuaW1wb3J0IHsgY29tcG9uZW50IGFzIFZ1ZUNvZGVIaWdobGlnaHQgfSBmcm9tICd2dWUtY29kZS1oaWdobGlnaHQnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY29tcG9uZW50czoge1xuICAgIFZ1ZUNvZGVIaWdobGlnaHRcbiAgfSxcbiAgLy8gIGRhdGEoKSB7XG4gIC8vICAgIHJldHVybiB7XG4gIC8vICAgICAgdGFiSW5kZXg6IDBcbiAgLy8gICAgfVxuICAvLyAgfSxcbiAgcHJvcHM6IHtcbiAgICByZXBvOiB7cmVxdWlyZWQ6IHRydWV9LFxuICAgIHRhYkluZGV4OiB7ZGVmYXVsdDogMH0sXG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgY2xlYW5JZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcG8ub3JnX3BsdXNfbmFtZS5yZXBsYWNlKC9bXkEtWmEtejAtOV0vZywgJy0nKVxuICAgIH0sXG4gICAgY29tcGlsZWRSZWFkbWUoKSB7XG4gICAgICBsZXQgc3JjID0gdGhpcy5yZXBvLmZpbGVzWydSRUFETUUubWQnXVxuICAgICAgaWYgKCFzcmMpIHNyYyA9ICdgIyBOTyBSRUFETUVgJ1xuICAgICAgcmV0dXJuIG1hcmtlZChzcmMpXG4gICAgfVxuICB9XG59XG48L3NjcmlwdD5cblxuPHN0eWxlPlxuXG4ub2NyZC1wcm9qZWN0LWxpc3QtaXRlbSB7XG4gIG1heC13aWR0aDogMzByZW07XG4gIG1heC1oZWlnaHQ6IDMwcmVtO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbjwvc3R5bGU+XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL09jcmRQcm9qZWN0TGlzdEl0ZW0udnVlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///100\n"); /***/ }), /* 101 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BAlert; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_bv_transition__ = __webpack_require__(30);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__button_button_close__ = __webpack_require__(31);\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\nvar NAME = 'BAlert'; // Convert `show` value to a number\n\nvar parseCountDown = function parseCountDown(show) {\n if (show === '' || Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"b\" /* isBoolean */])(show)) {\n return 0;\n }\n\n show = parseInt(show, 10);\n return show > 0 ? show : 0;\n}; // Convert `show` value to a boolean\n\n\nvar parseShow = function parseShow(show) {\n if (show === '' || show === true) {\n return true;\n }\n\n if (parseInt(show, 10) < 1) {\n // Boolean will always return false for the above comparison\n return false;\n }\n\n return Boolean(show);\n}; // Is a value number like (i.e. a number or a number as string)\n\n\nvar isNumericLike = function isNumericLike(value) {\n return !isNaN(parseInt(value, 10));\n}; // @vue/component\n\n\nvar BAlert =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n mixins: [__WEBPACK_IMPORTED_MODULE_5__mixins_normalize_slot__[\"a\" /* default */]],\n model: {\n prop: 'show',\n event: 'input'\n },\n props: {\n variant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant');\n }\n },\n dismissible: {\n type: Boolean,\n default: false\n },\n dismissLabel: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'dismissLabel');\n }\n },\n show: {\n type: [Boolean, Number, String],\n default: false\n },\n fade: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n countDownTimerId: null,\n countDown: 0,\n // If initially shown, we need to set these for SSR\n localShow: parseShow(this.show)\n };\n },\n watch: {\n show: function show(newVal) {\n this.countDown = parseCountDown(newVal);\n this.localShow = parseShow(newVal);\n },\n countDown: function countDown(newVal) {\n var _this = this;\n\n this.clearTimer();\n\n if (isNumericLike(this.show)) {\n // Ignore if this.show transitions to a boolean value.\n this.$emit('dismiss-count-down', newVal);\n\n if (this.show !== newVal) {\n // Update the v-model if needed\n this.$emit('input', newVal);\n }\n\n if (newVal > 0) {\n this.localShow = true;\n this.countDownTimerId = setTimeout(function () {\n _this.countDown--;\n }, 1000);\n } else {\n // Slightly delay the hide to allow any UI updates\n this.$nextTick(function () {\n Object(__WEBPACK_IMPORTED_MODULE_2__utils_dom__[\"w\" /* requestAF */])(function () {\n _this.localShow = false;\n });\n });\n }\n }\n },\n localShow: function localShow(newVal) {\n if (!newVal && (this.dismissible || isNumericLike(this.show))) {\n // Only emit dismissed events for dismissible or auto dismissing alerts\n this.$emit('dismissed');\n }\n\n if (!isNumericLike(this.show) && this.show !== newVal) {\n // Only emit booleans if we weren't passed a number via `this.show`\n this.$emit('input', newVal);\n }\n }\n },\n created: function created() {\n this.countDown = parseCountDown(this.show);\n this.localShow = parseShow(this.show);\n },\n mounted: function mounted() {\n this.countDown = parseCountDown(this.show);\n this.localShow = parseShow(this.show);\n },\n beforeDestroy: function beforeDestroy() {\n this.clearTimer();\n },\n methods: {\n dismiss: function dismiss() {\n this.clearTimer();\n this.countDown = 0;\n this.localShow = false;\n },\n clearTimer: function clearTimer() {\n if (this.countDownTimerId) {\n clearInterval(this.countDownTimerId);\n this.countDownTimerId = null;\n }\n }\n },\n render: function render(h) {\n var $alert; // undefined\n\n if (this.localShow) {\n var $dismissBtn = h();\n\n if (this.dismissible) {\n // Add dismiss button\n $dismissBtn = h(__WEBPACK_IMPORTED_MODULE_6__button_button_close__[\"a\" /* BButtonClose */], {\n attrs: {\n 'aria-label': this.dismissLabel\n },\n on: {\n click: this.dismiss\n }\n }, [this.normalizeSlot('dismiss')]);\n }\n\n $alert = h('div', {\n key: this._uid,\n staticClass: 'alert',\n class: _defineProperty({\n 'alert-dismissible': this.dismissible\n }, \"alert-\".concat(this.variant), this.variant),\n attrs: {\n role: 'alert',\n 'aria-live': 'polite',\n 'aria-atomic': true\n }\n }, [$dismissBtn, this.normalizeSlot('default')]);\n $alert = [$alert];\n }\n\n return h(__WEBPACK_IMPORTED_MODULE_4__utils_bv_transition__[\"b\" /* default */], {\n props: {\n noFade: !this.fade\n }\n }, $alert);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9hbGVydC9hbGVydC5qcz8yMmRlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwyQ0FBMkMsa0JBQWtCLGtDQUFrQyxxRUFBcUUsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEVBQUUsWUFBWTs7QUFFN0s7QUFDc0I7QUFDWjtBQUNJO0FBQ0s7QUFDUTtBQUNQO0FBQ3RELG9CQUFvQjs7QUFFcEI7QUFDQSxxQkFBcUIseUVBQVM7QUFDOUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0EsRUFBRTs7O0FBR0s7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQSxXQUFXLHVFQUFrQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlGQUFrQjtBQUNqQztBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBO0FBQ0EsWUFBWSxxRUFBUztBQUNyQjtBQUNBLGFBQWE7QUFDYixXQUFXO0FBQ1g7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZUFBZTs7QUFFZjtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0IsMEVBQVk7QUFDcEM7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUEsYUFBYSxxRUFBWTtBQUN6QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjEwMS5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyByZXF1ZXN0QUYgfSBmcm9tICcuLi8uLi91dGlscy9kb20nO1xuaW1wb3J0IHsgaXNCb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgQlZUcmFuc2l0aW9uIGZyb20gJy4uLy4uL3V0aWxzL2J2LXRyYW5zaXRpb24nO1xuaW1wb3J0IG5vcm1hbGl6ZVNsb3RNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvbm9ybWFsaXplLXNsb3QnO1xuaW1wb3J0IHsgQkJ1dHRvbkNsb3NlIH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi1jbG9zZSc7XG52YXIgTkFNRSA9ICdCQWxlcnQnOyAvLyBDb252ZXJ0IGBzaG93YCB2YWx1ZSB0byBhIG51bWJlclxuXG52YXIgcGFyc2VDb3VudERvd24gPSBmdW5jdGlvbiBwYXJzZUNvdW50RG93bihzaG93KSB7XG4gIGlmIChzaG93ID09PSAnJyB8fCBpc0Jvb2xlYW4oc2hvdykpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHNob3cgPSBwYXJzZUludChzaG93LCAxMCk7XG4gIHJldHVybiBzaG93ID4gMCA/IHNob3cgOiAwO1xufTsgLy8gQ29udmVydCBgc2hvd2AgdmFsdWUgdG8gYSBib29sZWFuXG5cblxudmFyIHBhcnNlU2hvdyA9IGZ1bmN0aW9uIHBhcnNlU2hvdyhzaG93KSB7XG4gIGlmIChzaG93ID09PSAnJyB8fCBzaG93ID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAocGFyc2VJbnQoc2hvdywgMTApIDwgMSkge1xuICAgIC8vIEJvb2xlYW4gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgYWJvdmUgY29tcGFyaXNvblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBCb29sZWFuKHNob3cpO1xufTsgLy8gSXMgYSB2YWx1ZSBudW1iZXIgbGlrZSAoaS5lLiBhIG51bWJlciBvciBhIG51bWJlciBhcyBzdHJpbmcpXG5cblxudmFyIGlzTnVtZXJpY0xpa2UgPSBmdW5jdGlvbiBpc051bWVyaWNMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhaXNOYU4ocGFyc2VJbnQodmFsdWUsIDEwKSk7XG59OyAvLyBAdnVlL2NvbXBvbmVudFxuXG5cbmV4cG9ydCB2YXIgQkFsZXJ0ID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBtaXhpbnM6IFtub3JtYWxpemVTbG90TWl4aW5dLFxuICBtb2RlbDoge1xuICAgIHByb3A6ICdzaG93JyxcbiAgICBldmVudDogJ2lucHV0J1xuICB9LFxuICBwcm9wczoge1xuICAgIHZhcmlhbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICd2YXJpYW50Jyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBkaXNtaXNzaWJsZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBkaXNtaXNzTGFiZWw6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdkaXNtaXNzTGFiZWwnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNob3c6IHtcbiAgICAgIHR5cGU6IFtCb29sZWFuLCBOdW1iZXIsIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgZmFkZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjb3VudERvd25UaW1lcklkOiBudWxsLFxuICAgICAgY291bnREb3duOiAwLFxuICAgICAgLy8gSWYgaW5pdGlhbGx5IHNob3duLCB3ZSBuZWVkIHRvIHNldCB0aGVzZSBmb3IgU1NSXG4gICAgICBsb2NhbFNob3c6IHBhcnNlU2hvdyh0aGlzLnNob3cpXG4gICAgfTtcbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBzaG93OiBmdW5jdGlvbiBzaG93KG5ld1ZhbCkge1xuICAgICAgdGhpcy5jb3VudERvd24gPSBwYXJzZUNvdW50RG93bihuZXdWYWwpO1xuICAgICAgdGhpcy5sb2NhbFNob3cgPSBwYXJzZVNob3cobmV3VmFsKTtcbiAgICB9LFxuICAgIGNvdW50RG93bjogZnVuY3Rpb24gY291bnREb3duKG5ld1ZhbCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG5cbiAgICAgIGlmIChpc051bWVyaWNMaWtlKHRoaXMuc2hvdykpIHtcbiAgICAgICAgLy8gSWdub3JlIGlmIHRoaXMuc2hvdyB0cmFuc2l0aW9ucyB0byBhIGJvb2xlYW4gdmFsdWUuXG4gICAgICAgIHRoaXMuJGVtaXQoJ2Rpc21pc3MtY291bnQtZG93bicsIG5ld1ZhbCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2hvdyAhPT0gbmV3VmFsKSB7XG4gICAgICAgICAgLy8gVXBkYXRlIHRoZSB2LW1vZGVsIGlmIG5lZWRlZFxuICAgICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgbmV3VmFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXdWYWwgPiAwKSB7XG4gICAgICAgICAgdGhpcy5sb2NhbFNob3cgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY291bnREb3duVGltZXJJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMuY291bnREb3duLS07XG4gICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gU2xpZ2h0bHkgZGVsYXkgdGhlIGhpZGUgdG8gYWxsb3cgYW55IFVJIHVwZGF0ZXNcbiAgICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXF1ZXN0QUYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICBfdGhpcy5sb2NhbFNob3cgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBsb2NhbFNob3c6IGZ1bmN0aW9uIGxvY2FsU2hvdyhuZXdWYWwpIHtcbiAgICAgIGlmICghbmV3VmFsICYmICh0aGlzLmRpc21pc3NpYmxlIHx8IGlzTnVtZXJpY0xpa2UodGhpcy5zaG93KSkpIHtcbiAgICAgICAgLy8gT25seSBlbWl0IGRpc21pc3NlZCBldmVudHMgZm9yIGRpc21pc3NpYmxlIG9yIGF1dG8gZGlzbWlzc2luZyBhbGVydHNcbiAgICAgICAgdGhpcy4kZW1pdCgnZGlzbWlzc2VkJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOdW1lcmljTGlrZSh0aGlzLnNob3cpICYmIHRoaXMuc2hvdyAhPT0gbmV3VmFsKSB7XG4gICAgICAgIC8vIE9ubHkgZW1pdCBib29sZWFucyBpZiB3ZSB3ZXJlbid0IHBhc3NlZCBhIG51bWJlciB2aWEgYHRoaXMuc2hvd2BcbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBuZXdWYWwpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcbiAgICB0aGlzLmNvdW50RG93biA9IHBhcnNlQ291bnREb3duKHRoaXMuc2hvdyk7XG4gICAgdGhpcy5sb2NhbFNob3cgPSBwYXJzZVNob3codGhpcy5zaG93KTtcbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB0aGlzLmNvdW50RG93biA9IHBhcnNlQ291bnREb3duKHRoaXMuc2hvdyk7XG4gICAgdGhpcy5sb2NhbFNob3cgPSBwYXJzZVNob3codGhpcy5zaG93KTtcbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICB0aGlzLmNsZWFyVGltZXIoKTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGRpc21pc3M6IGZ1bmN0aW9uIGRpc21pc3MoKSB7XG4gICAgICB0aGlzLmNsZWFyVGltZXIoKTtcbiAgICAgIHRoaXMuY291bnREb3duID0gMDtcbiAgICAgIHRoaXMubG9jYWxTaG93ID0gZmFsc2U7XG4gICAgfSxcbiAgICBjbGVhclRpbWVyOiBmdW5jdGlvbiBjbGVhclRpbWVyKCkge1xuICAgICAgaWYgKHRoaXMuY291bnREb3duVGltZXJJZCkge1xuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuY291bnREb3duVGltZXJJZCk7XG4gICAgICAgIHRoaXMuY291bnREb3duVGltZXJJZCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyICRhbGVydDsgLy8gdW5kZWZpbmVkXG5cbiAgICBpZiAodGhpcy5sb2NhbFNob3cpIHtcbiAgICAgIHZhciAkZGlzbWlzc0J0biA9IGgoKTtcblxuICAgICAgaWYgKHRoaXMuZGlzbWlzc2libGUpIHtcbiAgICAgICAgLy8gQWRkIGRpc21pc3MgYnV0dG9uXG4gICAgICAgICRkaXNtaXNzQnRuID0gaChCQnV0dG9uQ2xvc2UsIHtcbiAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgJ2FyaWEtbGFiZWwnOiB0aGlzLmRpc21pc3NMYWJlbFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgIGNsaWNrOiB0aGlzLmRpc21pc3NcbiAgICAgICAgICB9XG4gICAgICAgIH0sIFt0aGlzLm5vcm1hbGl6ZVNsb3QoJ2Rpc21pc3MnKV0pO1xuICAgICAgfVxuXG4gICAgICAkYWxlcnQgPSBoKCdkaXYnLCB7XG4gICAgICAgIGtleTogdGhpcy5fdWlkLFxuICAgICAgICBzdGF0aWNDbGFzczogJ2FsZXJ0JyxcbiAgICAgICAgY2xhc3M6IF9kZWZpbmVQcm9wZXJ0eSh7XG4gICAgICAgICAgJ2FsZXJ0LWRpc21pc3NpYmxlJzogdGhpcy5kaXNtaXNzaWJsZVxuICAgICAgICB9LCBcImFsZXJ0LVwiLmNvbmNhdCh0aGlzLnZhcmlhbnQpLCB0aGlzLnZhcmlhbnQpLFxuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIHJvbGU6ICdhbGVydCcsXG4gICAgICAgICAgJ2FyaWEtbGl2ZSc6ICdwb2xpdGUnLFxuICAgICAgICAgICdhcmlhLWF0b21pYyc6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSwgWyRkaXNtaXNzQnRuLCB0aGlzLm5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnKV0pO1xuICAgICAgJGFsZXJ0ID0gWyRhbGVydF07XG4gICAgfVxuXG4gICAgcmV0dXJuIGgoQlZUcmFuc2l0aW9uLCB7XG4gICAgICBwcm9wczoge1xuICAgICAgICBub0ZhZGU6ICF0aGlzLmZhZGVcbiAgICAgIH1cbiAgICB9LCAkYWxlcnQpO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2FsZXJ0L2FsZXJ0LmpzXG4vLyBtb2R1bGUgaWQgPSAxMDFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///101\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__object__ = __webpack_require__(8);\n // --- General BootstrapVue configuration ---\n// NOTES\n//\n// The global config SHALL NOT be used to set defaults for Boolean props, as the props\n// would loose their semantic meaning, and force people writing 3rd party components to\n// explicity set a true or false value using the v-bind syntax on boolean props\n//\n// Supported config values (depending on the prop's supported type(s)):\n// `String`, `Array`, `Object`, `null` or `undefined`\n// BREAKPOINT DEFINITIONS\n//\n// Some components (`<b-col>` and `<b-form-group>`) generate props based on breakpoints,\n// and this occurs when the component is first loaded (evaluated), which may happen\n// before the config is created/modified\n//\n// To get around this we make these components' props async (lazy evaluation)\n// The component definition is only called/executed when the first access to the\n// component is used (and cached on subsequent uses)\n// PROP DEFAULTS\n//\n// For default values on props, we use the default value factory function approach so\n// that the default values are pulled in at each component instantiation\n//\n// props: {\n// variant: {\n// type: String,\n// default: () => getConfigComponent('BAlert', 'variant')\n// }\n// }\n//\n// We also provide a cached getter for breakpoints, which are \"frozen\" on first access\n// prettier-ignore\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__object__[\"c\" /* deepFreeze */])({\n // Breakpoints\n breakpoints: ['xs', 'sm', 'md', 'lg', 'xl'],\n // Form controls\n formControls: {\n size: null\n },\n // Component specific defaults are keyed by the component\n // name (PascalCase) and prop name (camelCase)\n BAlert: {\n dismissLabel: 'Close',\n variant: 'info'\n },\n BBadge: {\n variant: 'secondary'\n },\n BButton: {\n size: null,\n variant: 'secondary'\n },\n BButtonClose: {\n // `textVariant` is `null` to inherit the current text color\n textVariant: null,\n ariaLabel: 'Close'\n },\n BCardSubTitle: {\n // `<b-card>` and `<b-card-body>` also inherit this prop\n subTitleTextVariant: 'muted'\n },\n BCarousel: {\n labelPrev: 'Previous Slide',\n labelNext: 'Next Slide',\n labelGotoSlide: 'Goto Slide',\n labelIndicators: 'Select a slide to display'\n },\n BDropdown: {\n toggleText: 'Toggle Dropdown',\n size: null,\n variant: 'secondary',\n splitVariant: null\n },\n BFormFile: {\n browseText: 'Browse',\n // Chrome default file prompt\n placeholder: 'No file chosen',\n dropPlaceholder: 'Drop files here'\n },\n BFormText: {\n textVariant: 'muted'\n },\n BImg: {\n blankColor: 'transparent'\n },\n BImgLazy: {\n blankColor: 'transparent'\n },\n BInputGroup: {\n size: null\n },\n BJumbotron: {\n bgVariant: null,\n borderVariant: null,\n textVariant: null\n },\n BListGroupItem: {\n variant: null\n },\n BModal: {\n titleTag: 'h5',\n size: 'md',\n headerBgVariant: null,\n headerBorderVariant: null,\n headerTextVariant: null,\n headerCloseVariant: null,\n bodyBgVariant: null,\n bodyTextVariant: null,\n footerBgVariant: null,\n footerBorderVariant: null,\n footerTextVariant: null,\n cancelTitle: 'Cancel',\n cancelVariant: 'secondary',\n okTitle: 'OK',\n okVariant: 'primary',\n headerCloseLabel: 'Close'\n },\n BNavbar: {\n variant: null\n },\n BNavbarToggle: {\n label: 'Toggle navigation'\n },\n BPagination: {\n size: null\n },\n BPaginationNav: {\n size: null\n },\n BPopover: {\n boundary: 'scrollParent',\n boundaryPadding: 5,\n customClass: null,\n delay: 50,\n variant: null\n },\n BProgress: {\n variant: null\n },\n BProgressBar: {\n variant: null\n },\n BSpinner: {\n variant: null\n },\n BTable: {\n selectedVariant: 'primary',\n headVariant: null,\n footVariant: null\n },\n BToast: {\n toaster: 'b-toaster-top-right',\n autoHideDelay: 5000,\n variant: null,\n toastClass: null,\n headerClass: null,\n bodyClass: null\n },\n BToaster: {\n ariaLive: null,\n ariaAtomic: null,\n role: null\n },\n BTooltip: {\n boundary: 'scrollParent',\n boundaryPadding: 5,\n customClass: null,\n delay: 50,\n variant: null\n }\n}));\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvY29uZmlnLWRlZmF1bHRzLmpzPzk1ZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWUsNEhBQVU7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyIsImZpbGUiOiIxMDEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWVwRnJlZXplIH0gZnJvbSAnLi9vYmplY3QnOyAvLyAtLS0gR2VuZXJhbCBCb290c3RyYXBWdWUgY29uZmlndXJhdGlvbiAtLS1cbi8vIE5PVEVTXG4vL1xuLy8gVGhlIGdsb2JhbCBjb25maWcgU0hBTEwgTk9UIGJlIHVzZWQgdG8gc2V0IGRlZmF1bHRzIGZvciBCb29sZWFuIHByb3BzLCBhcyB0aGUgcHJvcHNcbi8vIHdvdWxkIGxvb3NlIHRoZWlyIHNlbWFudGljIG1lYW5pbmcsIGFuZCBmb3JjZSBwZW9wbGUgd3JpdGluZyAzcmQgcGFydHkgY29tcG9uZW50cyB0b1xuLy8gZXhwbGljaXR5IHNldCBhIHRydWUgb3IgZmFsc2UgdmFsdWUgdXNpbmcgdGhlIHYtYmluZCBzeW50YXggb24gYm9vbGVhbiBwcm9wc1xuLy9cbi8vIFN1cHBvcnRlZCBjb25maWcgdmFsdWVzIChkZXBlbmRpbmcgb24gdGhlIHByb3AncyBzdXBwb3J0ZWQgdHlwZShzKSk6XG4vLyBgU3RyaW5nYCwgYEFycmF5YCwgYE9iamVjdGAsIGBudWxsYCBvciBgdW5kZWZpbmVkYFxuLy8gQlJFQUtQT0lOVCBERUZJTklUSU9OU1xuLy9cbi8vIFNvbWUgY29tcG9uZW50cyAoYDxiLWNvbD5gIGFuZCBgPGItZm9ybS1ncm91cD5gKSBnZW5lcmF0ZSBwcm9wcyBiYXNlZCBvbiBicmVha3BvaW50cyxcbi8vIGFuZCB0aGlzIG9jY3VycyB3aGVuIHRoZSBjb21wb25lbnQgaXMgZmlyc3QgbG9hZGVkIChldmFsdWF0ZWQpLCB3aGljaCBtYXkgaGFwcGVuXG4vLyBiZWZvcmUgdGhlIGNvbmZpZyBpcyBjcmVhdGVkL21vZGlmaWVkXG4vL1xuLy8gVG8gZ2V0IGFyb3VuZCB0aGlzIHdlIG1ha2UgdGhlc2UgY29tcG9uZW50cycgcHJvcHMgYXN5bmMgKGxhenkgZXZhbHVhdGlvbilcbi8vIFRoZSBjb21wb25lbnQgZGVmaW5pdGlvbiBpcyBvbmx5IGNhbGxlZC9leGVjdXRlZCB3aGVuIHRoZSBmaXJzdCBhY2Nlc3MgdG8gdGhlXG4vLyBjb21wb25lbnQgaXMgdXNlZCAoYW5kIGNhY2hlZCBvbiBzdWJzZXF1ZW50IHVzZXMpXG4vLyBQUk9QIERFRkFVTFRTXG4vL1xuLy8gRm9yIGRlZmF1bHQgdmFsdWVzIG9uIHByb3BzLCB3ZSB1c2UgdGhlIGRlZmF1bHQgdmFsdWUgZmFjdG9yeSBmdW5jdGlvbiBhcHByb2FjaCBzb1xuLy8gdGhhdCB0aGUgZGVmYXVsdCB2YWx1ZXMgYXJlIHB1bGxlZCBpbiBhdCBlYWNoIGNvbXBvbmVudCBpbnN0YW50aWF0aW9uXG4vL1xuLy8gIHByb3BzOiB7XG4vLyAgICB2YXJpYW50OiB7XG4vLyAgICAgIHR5cGU6IFN0cmluZyxcbi8vICAgICAgZGVmYXVsdDogKCkgPT4gZ2V0Q29uZmlnQ29tcG9uZW50KCdCQWxlcnQnLCAndmFyaWFudCcpXG4vLyAgICB9XG4vLyAgfVxuLy9cbi8vIFdlIGFsc28gcHJvdmlkZSBhIGNhY2hlZCBnZXR0ZXIgZm9yIGJyZWFrcG9pbnRzLCB3aGljaCBhcmUgXCJmcm96ZW5cIiBvbiBmaXJzdCBhY2Nlc3Ncbi8vIHByZXR0aWVyLWlnbm9yZVxuXG5leHBvcnQgZGVmYXVsdCBkZWVwRnJlZXplKHtcbiAgLy8gQnJlYWtwb2ludHNcbiAgYnJlYWtwb2ludHM6IFsneHMnLCAnc20nLCAnbWQnLCAnbGcnLCAneGwnXSxcbiAgLy8gRm9ybSBjb250cm9sc1xuICBmb3JtQ29udHJvbHM6IHtcbiAgICBzaXplOiBudWxsXG4gIH0sXG4gIC8vIENvbXBvbmVudCBzcGVjaWZpYyBkZWZhdWx0cyBhcmUga2V5ZWQgYnkgdGhlIGNvbXBvbmVudFxuICAvLyBuYW1lIChQYXNjYWxDYXNlKSBhbmQgcHJvcCBuYW1lIChjYW1lbENhc2UpXG4gIEJBbGVydDoge1xuICAgIGRpc21pc3NMYWJlbDogJ0Nsb3NlJyxcbiAgICB2YXJpYW50OiAnaW5mbydcbiAgfSxcbiAgQkJhZGdlOiB7XG4gICAgdmFyaWFudDogJ3NlY29uZGFyeSdcbiAgfSxcbiAgQkJ1dHRvbjoge1xuICAgIHNpemU6IG51bGwsXG4gICAgdmFyaWFudDogJ3NlY29uZGFyeSdcbiAgfSxcbiAgQkJ1dHRvbkNsb3NlOiB7XG4gICAgLy8gYHRleHRWYXJpYW50YCBpcyBgbnVsbGAgdG8gaW5oZXJpdCB0aGUgY3VycmVudCB0ZXh0IGNvbG9yXG4gICAgdGV4dFZhcmlhbnQ6IG51bGwsXG4gICAgYXJpYUxhYmVsOiAnQ2xvc2UnXG4gIH0sXG4gIEJDYXJkU3ViVGl0bGU6IHtcbiAgICAvLyBgPGItY2FyZD5gIGFuZCBgPGItY2FyZC1ib2R5PmAgYWxzbyBpbmhlcml0IHRoaXMgcHJvcFxuICAgIHN1YlRpdGxlVGV4dFZhcmlhbnQ6ICdtdXRlZCdcbiAgfSxcbiAgQkNhcm91c2VsOiB7XG4gICAgbGFiZWxQcmV2OiAnUHJldmlvdXMgU2xpZGUnLFxuICAgIGxhYmVsTmV4dDogJ05leHQgU2xpZGUnLFxuICAgIGxhYmVsR290b1NsaWRlOiAnR290byBTbGlkZScsXG4gICAgbGFiZWxJbmRpY2F0b3JzOiAnU2VsZWN0IGEgc2xpZGUgdG8gZGlzcGxheSdcbiAgfSxcbiAgQkRyb3Bkb3duOiB7XG4gICAgdG9nZ2xlVGV4dDogJ1RvZ2dsZSBEcm9wZG93bicsXG4gICAgc2l6ZTogbnVsbCxcbiAgICB2YXJpYW50OiAnc2Vjb25kYXJ5JyxcbiAgICBzcGxpdFZhcmlhbnQ6IG51bGxcbiAgfSxcbiAgQkZvcm1GaWxlOiB7XG4gICAgYnJvd3NlVGV4dDogJ0Jyb3dzZScsXG4gICAgLy8gQ2hyb21lIGRlZmF1bHQgZmlsZSBwcm9tcHRcbiAgICBwbGFjZWhvbGRlcjogJ05vIGZpbGUgY2hvc2VuJyxcbiAgICBkcm9wUGxhY2Vob2xkZXI6ICdEcm9wIGZpbGVzIGhlcmUnXG4gIH0sXG4gIEJGb3JtVGV4dDoge1xuICAgIHRleHRWYXJpYW50OiAnbXV0ZWQnXG4gIH0sXG4gIEJJbWc6IHtcbiAgICBibGFua0NvbG9yOiAndHJhbnNwYXJlbnQnXG4gIH0sXG4gIEJJbWdMYXp5OiB7XG4gICAgYmxhbmtDb2xvcjogJ3RyYW5zcGFyZW50J1xuICB9LFxuICBCSW5wdXRHcm91cDoge1xuICAgIHNpemU6IG51bGxcbiAgfSxcbiAgQkp1bWJvdHJvbjoge1xuICAgIGJnVmFyaWFudDogbnVsbCxcbiAgICBib3JkZXJWYXJpYW50OiBudWxsLFxuICAgIHRleHRWYXJpYW50OiBudWxsXG4gIH0sXG4gIEJMaXN0R3JvdXBJdGVtOiB7XG4gICAgdmFyaWFudDogbnVsbFxuICB9LFxuICBCTW9kYWw6IHtcbiAgICB0aXRsZVRhZzogJ2g1JyxcbiAgICBzaXplOiAnbWQnLFxuICAgIGhlYWRlckJnVmFyaWFudDogbnVsbCxcbiAgICBoZWFkZXJCb3JkZXJWYXJpYW50OiBudWxsLFxuICAgIGhlYWRlclRleHRWYXJpYW50OiBudWxsLFxuICAgIGhlYWRlckNsb3NlVmFyaWFudDogbnVsbCxcbiAgICBib2R5QmdWYXJpYW50OiBudWxsLFxuICAgIGJvZHlUZXh0VmFyaWFudDogbnVsbCxcbiAgICBmb290ZXJCZ1ZhcmlhbnQ6IG51bGwsXG4gICAgZm9vdGVyQm9yZGVyVmFyaWFudDogbnVsbCxcbiAgICBmb290ZXJUZXh0VmFyaWFudDogbnVsbCxcbiAgICBjYW5jZWxUaXRsZTogJ0NhbmNlbCcsXG4gICAgY2FuY2VsVmFyaWFudDogJ3NlY29uZGFyeScsXG4gICAgb2tUaXRsZTogJ09LJyxcbiAgICBva1ZhcmlhbnQ6ICdwcmltYXJ5JyxcbiAgICBoZWFkZXJDbG9zZUxhYmVsOiAnQ2xvc2UnXG4gIH0sXG4gIEJOYXZiYXI6IHtcbiAgICB2YXJpYW50OiBudWxsXG4gIH0sXG4gIEJOYXZiYXJUb2dnbGU6IHtcbiAgICBsYWJlbDogJ1RvZ2dsZSBuYXZpZ2F0aW9uJ1xuICB9LFxuICBCUGFnaW5hdGlvbjoge1xuICAgIHNpemU6IG51bGxcbiAgfSxcbiAgQlBhZ2luYXRpb25OYXY6IHtcbiAgICBzaXplOiBudWxsXG4gIH0sXG4gIEJQb3BvdmVyOiB7XG4gICAgYm91bmRhcnk6ICdzY3JvbGxQYXJlbnQnLFxuICAgIGJvdW5kYXJ5UGFkZGluZzogNSxcbiAgICBjdXN0b21DbGFzczogbnVsbCxcbiAgICBkZWxheTogNTAsXG4gICAgdmFyaWFudDogbnVsbFxuICB9LFxuICBCUHJvZ3Jlc3M6IHtcbiAgICB2YXJpYW50OiBudWxsXG4gIH0sXG4gIEJQcm9ncmVzc0Jhcjoge1xuICAgIHZhcmlhbnQ6IG51bGxcbiAgfSxcbiAgQlNwaW5uZXI6IHtcbiAgICB2YXJpYW50OiBudWxsXG4gIH0sXG4gIEJUYWJsZToge1xuICAgIHNlbGVjdGVkVmFyaWFudDogJ3ByaW1hcnknLFxuICAgIGhlYWRWYXJpYW50OiBudWxsLFxuICAgIGZvb3RWYXJpYW50OiBudWxsXG4gIH0sXG4gIEJUb2FzdDoge1xuICAgIHRvYXN0ZXI6ICdiLXRvYXN0ZXItdG9wLXJpZ2h0JyxcbiAgICBhdXRvSGlkZURlbGF5OiA1MDAwLFxuICAgIHZhcmlhbnQ6IG51bGwsXG4gICAgdG9hc3RDbGFzczogbnVsbCxcbiAgICBoZWFkZXJDbGFzczogbnVsbCxcbiAgICBib2R5Q2xhc3M6IG51bGxcbiAgfSxcbiAgQlRvYXN0ZXI6IHtcbiAgICBhcmlhTGl2ZTogbnVsbCxcbiAgICBhcmlhQXRvbWljOiBudWxsLFxuICAgIHJvbGU6IG51bGxcbiAgfSxcbiAgQlRvb2x0aXA6IHtcbiAgICBib3VuZGFyeTogJ3Njcm9sbFBhcmVudCcsXG4gICAgYm91bmRhcnlQYWRkaW5nOiA1LFxuICAgIGN1c3RvbUNsYXNzOiBudWxsLFxuICAgIGRlbGF5OiA1MCxcbiAgICB2YXJpYW50OiBudWxsXG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL3V0aWxzL2NvbmZpZy1kZWZhdWx0cy5qc1xuLy8gbW9kdWxlIGlkID0gMTAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///101\n"); /***/ }), /* 102 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BadgePlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__badge__ = __webpack_require__(103);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BBadge */\n\n\nvar BadgePlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BBadge: __WEBPACK_IMPORTED_MODULE_0__badge__[\"a\" /* BBadge */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9iYWRnZS9pbmRleC5qcz9mMTU2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ21CO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsWUFBWSxzREFBTTtBQUNsQjtBQUNBLENBQUMiLCJmaWxlIjoiMTAyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkJhZGdlIH0gZnJvbSAnLi9iYWRnZSc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgQmFkZ2VQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCQmFkZ2U6IEJCYWRnZVxuICB9XG59KTtcbmV4cG9ydCB7IEJhZGdlUGx1Z2luLCBCQmFkZ2UgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2JhZGdlL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///102\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return AlertPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__alert__ = __webpack_require__(103);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BAlert */\n\n\nvar AlertPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BAlert: __WEBPACK_IMPORTED_MODULE_0__alert__[\"a\" /* BAlert */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9hbGVydC9pbmRleC5qcz8wMTEyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ21CO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsWUFBWSxzREFBTTtBQUNsQjtBQUNBLENBQUMiLCJmaWxlIjoiMTAyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkFsZXJ0IH0gZnJvbSAnLi9hbGVydCc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgQWxlcnRQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCQWxlcnQ6IEJBbGVydFxuICB9XG59KTtcbmV4cG9ydCB7IEFsZXJ0UGx1Z2luLCBCQWxlcnQgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2FsZXJ0L2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///102\n"); /***/ }), /* 103 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BBadge; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_pluck_props__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__link_link__ = __webpack_require__(14);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\nvar NAME = 'BBadge';\nvar linkProps = Object(__WEBPACK_IMPORTED_MODULE_4__link_link__[\"b\" /* propsFactory */])();\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nvar props = _objectSpread({}, linkProps, {\n tag: {\n type: String,\n default: 'span'\n },\n variant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant');\n }\n },\n pill: {\n type: Boolean,\n default: false\n }\n}); // @vue/component\n\nvar BBadge =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var tag = !props.href && !props.to ? props.tag : __WEBPACK_IMPORTED_MODULE_4__link_link__[\"a\" /* BLink */];\n var componentData = {\n staticClass: 'badge',\n class: [props.variant ? \"badge-\".concat(props.variant) : 'badge-secondary', {\n 'badge-pill': Boolean(props.pill),\n active: props.active,\n disabled: props.disabled\n }],\n props: Object(__WEBPACK_IMPORTED_MODULE_3__utils_pluck_props__[\"a\" /* default */])(linkProps, props)\n };\n return h(tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, componentData), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9iYWRnZS9iYWRnZS5qcz8yM2Q5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNvQjtBQUNFO0FBQ1A7QUFDc0I7QUFDdkU7QUFDQSxnQkFBZ0Isd0VBQWdCO0FBQ2hDO0FBQ0E7QUFDTyw0QkFBNEI7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaUZBQWtCO0FBQy9CO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFFOztBQUVJO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELHlEQUFLO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxhQUFhLDJFQUFVO0FBQ3ZCO0FBQ0Esa0JBQWtCLG9GQUFTO0FBQzNCO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMDMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgcGx1Y2tQcm9wcyBmcm9tICcuLi8uLi91dGlscy9wbHVjay1wcm9wcyc7XG5pbXBvcnQgeyBCTGluaywgcHJvcHNGYWN0b3J5IGFzIGxpbmtQcm9wc0ZhY3RvcnkgfSBmcm9tICcuLi9saW5rL2xpbmsnO1xudmFyIE5BTUUgPSAnQkJhZGdlJztcbnZhciBsaW5rUHJvcHMgPSBsaW5rUHJvcHNGYWN0b3J5KCk7XG5kZWxldGUgbGlua1Byb3BzLmhyZWYuZGVmYXVsdDtcbmRlbGV0ZSBsaW5rUHJvcHMudG8uZGVmYXVsdDtcbmV4cG9ydCB2YXIgcHJvcHMgPSBfb2JqZWN0U3ByZWFkKHt9LCBsaW5rUHJvcHMsIHtcbiAgdGFnOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdzcGFuJ1xuICB9LFxuICB2YXJpYW50OiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAndmFyaWFudCcpO1xuICAgIH1cbiAgfSxcbiAgcGlsbDoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfVxufSk7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkJhZGdlID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogcHJvcHMsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgICBkYXRhID0gX3JlZi5kYXRhLFxuICAgICAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW47XG4gICAgdmFyIHRhZyA9ICFwcm9wcy5ocmVmICYmICFwcm9wcy50byA/IHByb3BzLnRhZyA6IEJMaW5rO1xuICAgIHZhciBjb21wb25lbnREYXRhID0ge1xuICAgICAgc3RhdGljQ2xhc3M6ICdiYWRnZScsXG4gICAgICBjbGFzczogW3Byb3BzLnZhcmlhbnQgPyBcImJhZGdlLVwiLmNvbmNhdChwcm9wcy52YXJpYW50KSA6ICdiYWRnZS1zZWNvbmRhcnknLCB7XG4gICAgICAgICdiYWRnZS1waWxsJzogQm9vbGVhbihwcm9wcy5waWxsKSxcbiAgICAgICAgYWN0aXZlOiBwcm9wcy5hY3RpdmUsXG4gICAgICAgIGRpc2FibGVkOiBwcm9wcy5kaXNhYmxlZFxuICAgICAgfV0sXG4gICAgICBwcm9wczogcGx1Y2tQcm9wcyhsaW5rUHJvcHMsIHByb3BzKVxuICAgIH07XG4gICAgcmV0dXJuIGgodGFnLCBtZXJnZURhdGEoZGF0YSwgY29tcG9uZW50RGF0YSksIGNoaWxkcmVuKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9iYWRnZS9iYWRnZS5qc1xuLy8gbW9kdWxlIGlkID0gMTAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///103\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BAlert; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_bv_transition__ = __webpack_require__(30);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__button_button_close__ = __webpack_require__(31);\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\nvar NAME = 'BAlert'; // Convert `show` value to a number\n\nvar parseCountDown = function parseCountDown(show) {\n if (show === '' || Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"b\" /* isBoolean */])(show)) {\n return 0;\n }\n\n show = parseInt(show, 10);\n return show > 0 ? show : 0;\n}; // Convert `show` value to a boolean\n\n\nvar parseShow = function parseShow(show) {\n if (show === '' || show === true) {\n return true;\n }\n\n if (parseInt(show, 10) < 1) {\n // Boolean will always return false for the above comparison\n return false;\n }\n\n return Boolean(show);\n}; // Is a value number like (i.e. a number or a number as string)\n\n\nvar isNumericLike = function isNumericLike(value) {\n return !isNaN(parseInt(value, 10));\n}; // @vue/component\n\n\nvar BAlert =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n mixins: [__WEBPACK_IMPORTED_MODULE_5__mixins_normalize_slot__[\"a\" /* default */]],\n model: {\n prop: 'show',\n event: 'input'\n },\n props: {\n variant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant');\n }\n },\n dismissible: {\n type: Boolean,\n default: false\n },\n dismissLabel: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'dismissLabel');\n }\n },\n show: {\n type: [Boolean, Number, String],\n default: false\n },\n fade: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n countDownTimerId: null,\n countDown: 0,\n // If initially shown, we need to set these for SSR\n localShow: parseShow(this.show)\n };\n },\n watch: {\n show: function show(newVal) {\n this.countDown = parseCountDown(newVal);\n this.localShow = parseShow(newVal);\n },\n countDown: function countDown(newVal) {\n var _this = this;\n\n this.clearTimer();\n\n if (isNumericLike(this.show)) {\n // Ignore if this.show transitions to a boolean value.\n this.$emit('dismiss-count-down', newVal);\n\n if (this.show !== newVal) {\n // Update the v-model if needed\n this.$emit('input', newVal);\n }\n\n if (newVal > 0) {\n this.localShow = true;\n this.countDownTimerId = setTimeout(function () {\n _this.countDown--;\n }, 1000);\n } else {\n // Slightly delay the hide to allow any UI updates\n this.$nextTick(function () {\n Object(__WEBPACK_IMPORTED_MODULE_2__utils_dom__[\"w\" /* requestAF */])(function () {\n _this.localShow = false;\n });\n });\n }\n }\n },\n localShow: function localShow(newVal) {\n if (!newVal && (this.dismissible || isNumericLike(this.show))) {\n // Only emit dismissed events for dismissible or auto dismissing alerts\n this.$emit('dismissed');\n }\n\n if (!isNumericLike(this.show) && this.show !== newVal) {\n // Only emit booleans if we weren't passed a number via `this.show`\n this.$emit('input', newVal);\n }\n }\n },\n created: function created() {\n this.countDown = parseCountDown(this.show);\n this.localShow = parseShow(this.show);\n },\n mounted: function mounted() {\n this.countDown = parseCountDown(this.show);\n this.localShow = parseShow(this.show);\n },\n beforeDestroy: function beforeDestroy() {\n this.clearTimer();\n },\n methods: {\n dismiss: function dismiss() {\n this.clearTimer();\n this.countDown = 0;\n this.localShow = false;\n },\n clearTimer: function clearTimer() {\n if (this.countDownTimerId) {\n clearInterval(this.countDownTimerId);\n this.countDownTimerId = null;\n }\n }\n },\n render: function render(h) {\n var $alert; // undefined\n\n if (this.localShow) {\n var $dismissBtn = h();\n\n if (this.dismissible) {\n // Add dismiss button\n $dismissBtn = h(__WEBPACK_IMPORTED_MODULE_6__button_button_close__[\"a\" /* BButtonClose */], {\n attrs: {\n 'aria-label': this.dismissLabel\n },\n on: {\n click: this.dismiss\n }\n }, [this.normalizeSlot('dismiss')]);\n }\n\n $alert = h('div', {\n key: this._uid,\n staticClass: 'alert',\n class: _defineProperty({\n 'alert-dismissible': this.dismissible\n }, \"alert-\".concat(this.variant), this.variant),\n attrs: {\n role: 'alert',\n 'aria-live': 'polite',\n 'aria-atomic': true\n }\n }, [$dismissBtn, this.normalizeSlot('default')]);\n $alert = [$alert];\n }\n\n return h(__WEBPACK_IMPORTED_MODULE_4__utils_bv_transition__[\"b\" /* default */], {\n props: {\n noFade: !this.fade\n }\n }, $alert);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9hbGVydC9hbGVydC5qcz8yMmRlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwyQ0FBMkMsa0JBQWtCLGtDQUFrQyxxRUFBcUUsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEVBQUUsWUFBWTs7QUFFN0s7QUFDc0I7QUFDWjtBQUNJO0FBQ0s7QUFDUTtBQUNQO0FBQ3RELG9CQUFvQjs7QUFFcEI7QUFDQSxxQkFBcUIseUVBQVM7QUFDOUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0EsRUFBRTs7O0FBR0s7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQSxXQUFXLHVFQUFrQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlGQUFrQjtBQUNqQztBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBO0FBQ0EsWUFBWSxxRUFBUztBQUNyQjtBQUNBLGFBQWE7QUFDYixXQUFXO0FBQ1g7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZUFBZTs7QUFFZjtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0IsMEVBQVk7QUFDcEM7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUEsYUFBYSxxRUFBWTtBQUN6QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjEwMy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyByZXF1ZXN0QUYgfSBmcm9tICcuLi8uLi91dGlscy9kb20nO1xuaW1wb3J0IHsgaXNCb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgQlZUcmFuc2l0aW9uIGZyb20gJy4uLy4uL3V0aWxzL2J2LXRyYW5zaXRpb24nO1xuaW1wb3J0IG5vcm1hbGl6ZVNsb3RNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvbm9ybWFsaXplLXNsb3QnO1xuaW1wb3J0IHsgQkJ1dHRvbkNsb3NlIH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi1jbG9zZSc7XG52YXIgTkFNRSA9ICdCQWxlcnQnOyAvLyBDb252ZXJ0IGBzaG93YCB2YWx1ZSB0byBhIG51bWJlclxuXG52YXIgcGFyc2VDb3VudERvd24gPSBmdW5jdGlvbiBwYXJzZUNvdW50RG93bihzaG93KSB7XG4gIGlmIChzaG93ID09PSAnJyB8fCBpc0Jvb2xlYW4oc2hvdykpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHNob3cgPSBwYXJzZUludChzaG93LCAxMCk7XG4gIHJldHVybiBzaG93ID4gMCA/IHNob3cgOiAwO1xufTsgLy8gQ29udmVydCBgc2hvd2AgdmFsdWUgdG8gYSBib29sZWFuXG5cblxudmFyIHBhcnNlU2hvdyA9IGZ1bmN0aW9uIHBhcnNlU2hvdyhzaG93KSB7XG4gIGlmIChzaG93ID09PSAnJyB8fCBzaG93ID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAocGFyc2VJbnQoc2hvdywgMTApIDwgMSkge1xuICAgIC8vIEJvb2xlYW4gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgYWJvdmUgY29tcGFyaXNvblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBCb29sZWFuKHNob3cpO1xufTsgLy8gSXMgYSB2YWx1ZSBudW1iZXIgbGlrZSAoaS5lLiBhIG51bWJlciBvciBhIG51bWJlciBhcyBzdHJpbmcpXG5cblxudmFyIGlzTnVtZXJpY0xpa2UgPSBmdW5jdGlvbiBpc051bWVyaWNMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhaXNOYU4ocGFyc2VJbnQodmFsdWUsIDEwKSk7XG59OyAvLyBAdnVlL2NvbXBvbmVudFxuXG5cbmV4cG9ydCB2YXIgQkFsZXJ0ID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBtaXhpbnM6IFtub3JtYWxpemVTbG90TWl4aW5dLFxuICBtb2RlbDoge1xuICAgIHByb3A6ICdzaG93JyxcbiAgICBldmVudDogJ2lucHV0J1xuICB9LFxuICBwcm9wczoge1xuICAgIHZhcmlhbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICd2YXJpYW50Jyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBkaXNtaXNzaWJsZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBkaXNtaXNzTGFiZWw6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdkaXNtaXNzTGFiZWwnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNob3c6IHtcbiAgICAgIHR5cGU6IFtCb29sZWFuLCBOdW1iZXIsIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgZmFkZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjb3VudERvd25UaW1lcklkOiBudWxsLFxuICAgICAgY291bnREb3duOiAwLFxuICAgICAgLy8gSWYgaW5pdGlhbGx5IHNob3duLCB3ZSBuZWVkIHRvIHNldCB0aGVzZSBmb3IgU1NSXG4gICAgICBsb2NhbFNob3c6IHBhcnNlU2hvdyh0aGlzLnNob3cpXG4gICAgfTtcbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBzaG93OiBmdW5jdGlvbiBzaG93KG5ld1ZhbCkge1xuICAgICAgdGhpcy5jb3VudERvd24gPSBwYXJzZUNvdW50RG93bihuZXdWYWwpO1xuICAgICAgdGhpcy5sb2NhbFNob3cgPSBwYXJzZVNob3cobmV3VmFsKTtcbiAgICB9LFxuICAgIGNvdW50RG93bjogZnVuY3Rpb24gY291bnREb3duKG5ld1ZhbCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG5cbiAgICAgIGlmIChpc051bWVyaWNMaWtlKHRoaXMuc2hvdykpIHtcbiAgICAgICAgLy8gSWdub3JlIGlmIHRoaXMuc2hvdyB0cmFuc2l0aW9ucyB0byBhIGJvb2xlYW4gdmFsdWUuXG4gICAgICAgIHRoaXMuJGVtaXQoJ2Rpc21pc3MtY291bnQtZG93bicsIG5ld1ZhbCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2hvdyAhPT0gbmV3VmFsKSB7XG4gICAgICAgICAgLy8gVXBkYXRlIHRoZSB2LW1vZGVsIGlmIG5lZWRlZFxuICAgICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgbmV3VmFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXdWYWwgPiAwKSB7XG4gICAgICAgICAgdGhpcy5sb2NhbFNob3cgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY291bnREb3duVGltZXJJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMuY291bnREb3duLS07XG4gICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gU2xpZ2h0bHkgZGVsYXkgdGhlIGhpZGUgdG8gYWxsb3cgYW55IFVJIHVwZGF0ZXNcbiAgICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXF1ZXN0QUYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICBfdGhpcy5sb2NhbFNob3cgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBsb2NhbFNob3c6IGZ1bmN0aW9uIGxvY2FsU2hvdyhuZXdWYWwpIHtcbiAgICAgIGlmICghbmV3VmFsICYmICh0aGlzLmRpc21pc3NpYmxlIHx8IGlzTnVtZXJpY0xpa2UodGhpcy5zaG93KSkpIHtcbiAgICAgICAgLy8gT25seSBlbWl0IGRpc21pc3NlZCBldmVudHMgZm9yIGRpc21pc3NpYmxlIG9yIGF1dG8gZGlzbWlzc2luZyBhbGVydHNcbiAgICAgICAgdGhpcy4kZW1pdCgnZGlzbWlzc2VkJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOdW1lcmljTGlrZSh0aGlzLnNob3cpICYmIHRoaXMuc2hvdyAhPT0gbmV3VmFsKSB7XG4gICAgICAgIC8vIE9ubHkgZW1pdCBib29sZWFucyBpZiB3ZSB3ZXJlbid0IHBhc3NlZCBhIG51bWJlciB2aWEgYHRoaXMuc2hvd2BcbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBuZXdWYWwpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcbiAgICB0aGlzLmNvdW50RG93biA9IHBhcnNlQ291bnREb3duKHRoaXMuc2hvdyk7XG4gICAgdGhpcy5sb2NhbFNob3cgPSBwYXJzZVNob3codGhpcy5zaG93KTtcbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB0aGlzLmNvdW50RG93biA9IHBhcnNlQ291bnREb3duKHRoaXMuc2hvdyk7XG4gICAgdGhpcy5sb2NhbFNob3cgPSBwYXJzZVNob3codGhpcy5zaG93KTtcbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICB0aGlzLmNsZWFyVGltZXIoKTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGRpc21pc3M6IGZ1bmN0aW9uIGRpc21pc3MoKSB7XG4gICAgICB0aGlzLmNsZWFyVGltZXIoKTtcbiAgICAgIHRoaXMuY291bnREb3duID0gMDtcbiAgICAgIHRoaXMubG9jYWxTaG93ID0gZmFsc2U7XG4gICAgfSxcbiAgICBjbGVhclRpbWVyOiBmdW5jdGlvbiBjbGVhclRpbWVyKCkge1xuICAgICAgaWYgKHRoaXMuY291bnREb3duVGltZXJJZCkge1xuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuY291bnREb3duVGltZXJJZCk7XG4gICAgICAgIHRoaXMuY291bnREb3duVGltZXJJZCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyICRhbGVydDsgLy8gdW5kZWZpbmVkXG5cbiAgICBpZiAodGhpcy5sb2NhbFNob3cpIHtcbiAgICAgIHZhciAkZGlzbWlzc0J0biA9IGgoKTtcblxuICAgICAgaWYgKHRoaXMuZGlzbWlzc2libGUpIHtcbiAgICAgICAgLy8gQWRkIGRpc21pc3MgYnV0dG9uXG4gICAgICAgICRkaXNtaXNzQnRuID0gaChCQnV0dG9uQ2xvc2UsIHtcbiAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgJ2FyaWEtbGFiZWwnOiB0aGlzLmRpc21pc3NMYWJlbFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgIGNsaWNrOiB0aGlzLmRpc21pc3NcbiAgICAgICAgICB9XG4gICAgICAgIH0sIFt0aGlzLm5vcm1hbGl6ZVNsb3QoJ2Rpc21pc3MnKV0pO1xuICAgICAgfVxuXG4gICAgICAkYWxlcnQgPSBoKCdkaXYnLCB7XG4gICAgICAgIGtleTogdGhpcy5fdWlkLFxuICAgICAgICBzdGF0aWNDbGFzczogJ2FsZXJ0JyxcbiAgICAgICAgY2xhc3M6IF9kZWZpbmVQcm9wZXJ0eSh7XG4gICAgICAgICAgJ2FsZXJ0LWRpc21pc3NpYmxlJzogdGhpcy5kaXNtaXNzaWJsZVxuICAgICAgICB9LCBcImFsZXJ0LVwiLmNvbmNhdCh0aGlzLnZhcmlhbnQpLCB0aGlzLnZhcmlhbnQpLFxuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIHJvbGU6ICdhbGVydCcsXG4gICAgICAgICAgJ2FyaWEtbGl2ZSc6ICdwb2xpdGUnLFxuICAgICAgICAgICdhcmlhLWF0b21pYyc6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSwgWyRkaXNtaXNzQnRuLCB0aGlzLm5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnKV0pO1xuICAgICAgJGFsZXJ0ID0gWyRhbGVydF07XG4gICAgfVxuXG4gICAgcmV0dXJuIGgoQlZUcmFuc2l0aW9uLCB7XG4gICAgICBwcm9wczoge1xuICAgICAgICBub0ZhZGU6ICF0aGlzLmZhZGVcbiAgICAgIH1cbiAgICB9LCAkYWxlcnQpO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2FsZXJ0L2FsZXJ0LmpzXG4vLyBtb2R1bGUgaWQgPSAxMDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///103\n"); /***/ }), /* 104 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("var identity = function identity(x) {\n return x;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (identity);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvaWRlbnRpdHkuanM/ZmM3OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7O0FBRWUsaUVBQVEiLCJmaWxlIjoiMTA0LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlkZW50aXR5ID0gZnVuY3Rpb24gaWRlbnRpdHkoeCkge1xuICByZXR1cm4geDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGlkZW50aXR5O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL3V0aWxzL2lkZW50aXR5LmpzXG4vLyBtb2R1bGUgaWQgPSAxMDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///104\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BadgePlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__badge__ = __webpack_require__(105);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BBadge */\n\n\nvar BadgePlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BBadge: __WEBPACK_IMPORTED_MODULE_0__badge__[\"a\" /* BBadge */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9iYWRnZS9pbmRleC5qcz9mMTU2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ21CO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsWUFBWSxzREFBTTtBQUNsQjtBQUNBLENBQUMiLCJmaWxlIjoiMTA0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkJhZGdlIH0gZnJvbSAnLi9iYWRnZSc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgQmFkZ2VQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCQmFkZ2U6IEJCYWRnZVxuICB9XG59KTtcbmV4cG9ydCB7IEJhZGdlUGx1Z2luLCBCQmFkZ2UgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2JhZGdlL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///104\n"); /***/ }), /* 105 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export stringifyQueryObj */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return parseQuery; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return isRouterLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return computeTag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return computeRel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return computeHref; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__to_string__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__object__ = __webpack_require__(8);\n\n\n\nvar ANCHOR_TAG = 'a'; // Precompile RegExp\n\nvar commaRE = /%2C/g;\nvar encodeReserveRE = /[!'()*]/g; // Method to replace reserved chars\n\nvar encodeReserveReplacer = function encodeReserveReplacer(c) {\n return '%' + c.charCodeAt(0).toString(16);\n}; // Fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\n\n\nvar encode = function encode(str) {\n return encodeURIComponent(Object(__WEBPACK_IMPORTED_MODULE_0__to_string__[\"a\" /* default */])(str)).replace(encodeReserveRE, encodeReserveReplacer).replace(commaRE, ',');\n};\n\nvar decode = decodeURIComponent; // Stringifies an object of query parameters\n// See: https://github.com/vuejs/vue-router/blob/dev/src/util/query.js\n\nvar stringifyQueryObj = function stringifyQueryObj(obj) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"j\" /* isPlainObject */])(obj)) {\n return '';\n }\n\n var query = Object(__WEBPACK_IMPORTED_MODULE_2__object__[\"j\" /* keys */])(obj).map(function (key) {\n var val = obj[key];\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"n\" /* isUndefined */])(val)) {\n return '';\n } else if (Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"g\" /* isNull */])(val)) {\n return encode(key);\n } else if (Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"a\" /* isArray */])(val)) {\n return val.reduce(function (results, val2) {\n if (Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"g\" /* isNull */])(val2)) {\n results.push(encode(key));\n } else if (!Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"n\" /* isUndefined */])(val2)) {\n // Faster than string interpolation\n results.push(encode(key) + '=' + encode(val2));\n }\n\n return results;\n }, []).join('&');\n } // Faster than string interpolation\n\n\n return encode(key) + '=' + encode(val);\n })\n /* must check for length, as we only want to filter empty strings, not things that look falsey! */\n .filter(function (x) {\n return x.length > 0;\n }).join('&');\n return query ? \"?\".concat(query) : '';\n};\nvar parseQuery = function parseQuery(query) {\n var parsed = {};\n query = Object(__WEBPACK_IMPORTED_MODULE_0__to_string__[\"a\" /* default */])(query).trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return parsed;\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"n\" /* isUndefined */])(parsed[key])) {\n parsed[key] = val;\n } else if (Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"a\" /* isArray */])(parsed[key])) {\n parsed[key].push(val);\n } else {\n parsed[key] = [parsed[key], val];\n }\n });\n return parsed;\n};\nvar isRouterLink = function isRouterLink(tag) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__to_string__[\"a\" /* default */])(tag).toLowerCase() !== ANCHOR_TAG;\n};\nvar computeTag = function computeTag() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n to = _ref.to,\n disabled = _ref.disabled;\n\n var thisOrParent = arguments.length > 1 ? arguments[1] : undefined;\n return thisOrParent.$router && to && !disabled ? thisOrParent.$nuxt ? 'nuxt-link' : 'router-link' : ANCHOR_TAG;\n};\nvar computeRel = function computeRel() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n target = _ref2.target,\n rel = _ref2.rel;\n\n if (target === '_blank' && Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"g\" /* isNull */])(rel)) {\n return 'noopener';\n }\n\n return rel || null;\n};\nvar computeHref = function computeHref() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n href = _ref3.href,\n to = _ref3.to;\n\n var tag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ANCHOR_TAG;\n var fallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '#';\n var toFallback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '/';\n\n // We've already checked the $router in computeTag(), so isRouterLink() indicates a live router.\n // When deferring to Vue Router's router-link, don't use the href attribute at all.\n // We return null, and then remove href from the attributes passed to router-link\n if (isRouterLink(tag)) {\n return null;\n } // Return `href` when explicitly provided\n\n\n if (href) {\n return href;\n } // Reconstruct `href` when `to` used, but no router\n\n\n if (to) {\n // Fallback to `to` prop (if `to` is a string)\n if (Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"m\" /* isString */])(to)) {\n return to || toFallback;\n } // Fallback to `to.path + to.query + to.hash` prop (if `to` is an object)\n\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"j\" /* isPlainObject */])(to) && (to.path || to.query || to.hash)) {\n var path = Object(__WEBPACK_IMPORTED_MODULE_0__to_string__[\"a\" /* default */])(to.path);\n var query = stringifyQueryObj(to.query);\n var hash = Object(__WEBPACK_IMPORTED_MODULE_0__to_string__[\"a\" /* default */])(to.hash);\n hash = !hash || hash.charAt(0) === '#' ? hash : \"#\".concat(hash);\n return \"\".concat(path).concat(query).concat(hash) || toFallback;\n }\n } // If nothing is provided return the fallback\n\n\n return fallback;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvcm91dGVyLmpzPzVlNGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQytDO0FBQ2xEO0FBQ2hDLHFCQUFxQjs7QUFFckI7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7O0FBR0E7QUFDQSw0QkFBNEIsbUVBQVE7QUFDcEM7O0FBRUEsZ0NBQWdDO0FBQ2hDOztBQUVPO0FBQ1AsT0FBTyx1RUFBYTtBQUNwQjtBQUNBOztBQUVBLGNBQWMsNkRBQUk7QUFDbEI7O0FBRUEsUUFBUSxxRUFBVztBQUNuQjtBQUNBLEtBQUssVUFBVSxnRUFBTTtBQUNyQjtBQUNBLEtBQUssVUFBVSxpRUFBTztBQUN0QjtBQUNBLFlBQVksZ0VBQU07QUFDbEI7QUFDQSxTQUFTLFdBQVcscUVBQVc7QUFDL0I7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUs7OztBQUdMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ087QUFDUDtBQUNBLFVBQVUsbUVBQVE7O0FBRWxCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLHFFQUFXO0FBQ25CO0FBQ0EsS0FBSyxVQUFVLGlFQUFPO0FBQ3RCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNPO0FBQ1AsU0FBUyxtRUFBUTtBQUNqQjtBQUNPO0FBQ1AsbUZBQW1GO0FBQ25GO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ087QUFDUCxvRkFBb0Y7QUFDcEY7QUFDQTs7QUFFQSw2QkFBNkIsZ0VBQU07QUFDbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUCxvRkFBb0Y7QUFDcEY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsUUFBUSxrRUFBUTtBQUNoQjtBQUNBLEtBQUs7OztBQUdMLFFBQVEsdUVBQWE7QUFDckIsaUJBQWlCLG1FQUFRO0FBQ3pCO0FBQ0EsaUJBQWlCLG1FQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0EiLCJmaWxlIjoiMTA1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRvU3RyaW5nIGZyb20gJy4vdG8tc3RyaW5nJztcbmltcG9ydCB7IGlzQXJyYXksIGlzTnVsbCwgaXNQbGFpbk9iamVjdCwgaXNTdHJpbmcsIGlzVW5kZWZpbmVkIH0gZnJvbSAnLi9pbnNwZWN0JztcbmltcG9ydCB7IGtleXMgfSBmcm9tICcuL29iamVjdCc7XG52YXIgQU5DSE9SX1RBRyA9ICdhJzsgLy8gUHJlY29tcGlsZSBSZWdFeHBcblxudmFyIGNvbW1hUkUgPSAvJTJDL2c7XG52YXIgZW5jb2RlUmVzZXJ2ZVJFID0gL1shJygpKl0vZzsgLy8gTWV0aG9kIHRvIHJlcGxhY2UgcmVzZXJ2ZWQgY2hhcnNcblxudmFyIGVuY29kZVJlc2VydmVSZXBsYWNlciA9IGZ1bmN0aW9uIGVuY29kZVJlc2VydmVSZXBsYWNlcihjKSB7XG4gIHJldHVybiAnJScgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpO1xufTsgLy8gRml4ZWQgZW5jb2RlVVJJQ29tcG9uZW50IHdoaWNoIGlzIG1vcmUgY29uZm9ybWFudCB0byBSRkMzOTg2OlxuLy8gLSBlc2NhcGVzIFshJygpKl1cbi8vIC0gcHJlc2VydmUgY29tbWFzXG5cblxudmFyIGVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShzdHIpIHtcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh0b1N0cmluZyhzdHIpKS5yZXBsYWNlKGVuY29kZVJlc2VydmVSRSwgZW5jb2RlUmVzZXJ2ZVJlcGxhY2VyKS5yZXBsYWNlKGNvbW1hUkUsICcsJyk7XG59O1xuXG52YXIgZGVjb2RlID0gZGVjb2RlVVJJQ29tcG9uZW50OyAvLyBTdHJpbmdpZmllcyBhbiBvYmplY3Qgb2YgcXVlcnkgcGFyYW1ldGVyc1xuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlLXJvdXRlci9ibG9iL2Rldi9zcmMvdXRpbC9xdWVyeS5qc1xuXG5leHBvcnQgdmFyIHN0cmluZ2lmeVF1ZXJ5T2JqID0gZnVuY3Rpb24gc3RyaW5naWZ5UXVlcnlPYmoob2JqKSB7XG4gIGlmICghaXNQbGFpbk9iamVjdChvYmopKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgdmFyIHF1ZXJ5ID0ga2V5cyhvYmopLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIHZhbCA9IG9ialtrZXldO1xuXG4gICAgaWYgKGlzVW5kZWZpbmVkKHZhbCkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9IGVsc2UgaWYgKGlzTnVsbCh2YWwpKSB7XG4gICAgICByZXR1cm4gZW5jb2RlKGtleSk7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHtcbiAgICAgIHJldHVybiB2YWwucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHRzLCB2YWwyKSB7XG4gICAgICAgIGlmIChpc051bGwodmFsMikpIHtcbiAgICAgICAgICByZXN1bHRzLnB1c2goZW5jb2RlKGtleSkpO1xuICAgICAgICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZCh2YWwyKSkge1xuICAgICAgICAgIC8vIEZhc3RlciB0aGFuIHN0cmluZyBpbnRlcnBvbGF0aW9uXG4gICAgICAgICAgcmVzdWx0cy5wdXNoKGVuY29kZShrZXkpICsgJz0nICsgZW5jb2RlKHZhbDIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgICAgfSwgW10pLmpvaW4oJyYnKTtcbiAgICB9IC8vIEZhc3RlciB0aGFuIHN0cmluZyBpbnRlcnBvbGF0aW9uXG5cblxuICAgIHJldHVybiBlbmNvZGUoa2V5KSArICc9JyArIGVuY29kZSh2YWwpO1xuICB9KVxuICAvKiBtdXN0IGNoZWNrIGZvciBsZW5ndGgsIGFzIHdlIG9ubHkgd2FudCB0byBmaWx0ZXIgZW1wdHkgc3RyaW5ncywgbm90IHRoaW5ncyB0aGF0IGxvb2sgZmFsc2V5ISAqL1xuICAuZmlsdGVyKGZ1bmN0aW9uICh4KSB7XG4gICAgcmV0dXJuIHgubGVuZ3RoID4gMDtcbiAgfSkuam9pbignJicpO1xuICByZXR1cm4gcXVlcnkgPyBcIj9cIi5jb25jYXQocXVlcnkpIDogJyc7XG59O1xuZXhwb3J0IHZhciBwYXJzZVF1ZXJ5ID0gZnVuY3Rpb24gcGFyc2VRdWVyeShxdWVyeSkge1xuICB2YXIgcGFyc2VkID0ge307XG4gIHF1ZXJ5ID0gdG9TdHJpbmcocXVlcnkpLnRyaW0oKS5yZXBsYWNlKC9eKFxcP3wjfCYpLywgJycpO1xuXG4gIGlmICghcXVlcnkpIHtcbiAgICByZXR1cm4gcGFyc2VkO1xuICB9XG5cbiAgcXVlcnkuc3BsaXQoJyYnKS5mb3JFYWNoKGZ1bmN0aW9uIChwYXJhbSkge1xuICAgIHZhciBwYXJ0cyA9IHBhcmFtLnJlcGxhY2UoL1xcKy9nLCAnICcpLnNwbGl0KCc9Jyk7XG4gICAgdmFyIGtleSA9IGRlY29kZShwYXJ0cy5zaGlmdCgpKTtcbiAgICB2YXIgdmFsID0gcGFydHMubGVuZ3RoID4gMCA/IGRlY29kZShwYXJ0cy5qb2luKCc9JykpIDogbnVsbDtcblxuICAgIGlmIChpc1VuZGVmaW5lZChwYXJzZWRba2V5XSkpIHtcbiAgICAgIHBhcnNlZFtrZXldID0gdmFsO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShwYXJzZWRba2V5XSkpIHtcbiAgICAgIHBhcnNlZFtrZXldLnB1c2godmFsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyc2VkW2tleV0gPSBbcGFyc2VkW2tleV0sIHZhbF07XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHBhcnNlZDtcbn07XG5leHBvcnQgdmFyIGlzUm91dGVyTGluayA9IGZ1bmN0aW9uIGlzUm91dGVyTGluayh0YWcpIHtcbiAgcmV0dXJuIHRvU3RyaW5nKHRhZykudG9Mb3dlckNhc2UoKSAhPT0gQU5DSE9SX1RBRztcbn07XG5leHBvcnQgdmFyIGNvbXB1dGVUYWcgPSBmdW5jdGlvbiBjb21wdXRlVGFnKCkge1xuICB2YXIgX3JlZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge30sXG4gICAgICB0byA9IF9yZWYudG8sXG4gICAgICBkaXNhYmxlZCA9IF9yZWYuZGlzYWJsZWQ7XG5cbiAgdmFyIHRoaXNPclBhcmVudCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICByZXR1cm4gdGhpc09yUGFyZW50LiRyb3V0ZXIgJiYgdG8gJiYgIWRpc2FibGVkID8gdGhpc09yUGFyZW50LiRudXh0ID8gJ251eHQtbGluaycgOiAncm91dGVyLWxpbmsnIDogQU5DSE9SX1RBRztcbn07XG5leHBvcnQgdmFyIGNvbXB1dGVSZWwgPSBmdW5jdGlvbiBjb21wdXRlUmVsKCkge1xuICB2YXIgX3JlZjIgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9LFxuICAgICAgdGFyZ2V0ID0gX3JlZjIudGFyZ2V0LFxuICAgICAgcmVsID0gX3JlZjIucmVsO1xuXG4gIGlmICh0YXJnZXQgPT09ICdfYmxhbmsnICYmIGlzTnVsbChyZWwpKSB7XG4gICAgcmV0dXJuICdub29wZW5lcic7XG4gIH1cblxuICByZXR1cm4gcmVsIHx8IG51bGw7XG59O1xuZXhwb3J0IHZhciBjb21wdXRlSHJlZiA9IGZ1bmN0aW9uIGNvbXB1dGVIcmVmKCkge1xuICB2YXIgX3JlZjMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9LFxuICAgICAgaHJlZiA9IF9yZWYzLmhyZWYsXG4gICAgICB0byA9IF9yZWYzLnRvO1xuXG4gIHZhciB0YWcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IEFOQ0hPUl9UQUc7XG4gIHZhciBmYWxsYmFjayA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogJyMnO1xuICB2YXIgdG9GYWxsYmFjayA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogJy8nO1xuXG4gIC8vIFdlJ3ZlIGFscmVhZHkgY2hlY2tlZCB0aGUgJHJvdXRlciBpbiBjb21wdXRlVGFnKCksIHNvIGlzUm91dGVyTGluaygpIGluZGljYXRlcyBhIGxpdmUgcm91dGVyLlxuICAvLyBXaGVuIGRlZmVycmluZyB0byBWdWUgUm91dGVyJ3Mgcm91dGVyLWxpbmssIGRvbid0IHVzZSB0aGUgaHJlZiBhdHRyaWJ1dGUgYXQgYWxsLlxuICAvLyBXZSByZXR1cm4gbnVsbCwgYW5kIHRoZW4gcmVtb3ZlIGhyZWYgZnJvbSB0aGUgYXR0cmlidXRlcyBwYXNzZWQgdG8gcm91dGVyLWxpbmtcbiAgaWYgKGlzUm91dGVyTGluayh0YWcpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gUmV0dXJuIGBocmVmYCB3aGVuIGV4cGxpY2l0bHkgcHJvdmlkZWRcblxuXG4gIGlmIChocmVmKSB7XG4gICAgcmV0dXJuIGhyZWY7XG4gIH0gLy8gUmVjb25zdHJ1Y3QgYGhyZWZgIHdoZW4gYHRvYCB1c2VkLCBidXQgbm8gcm91dGVyXG5cblxuICBpZiAodG8pIHtcbiAgICAvLyBGYWxsYmFjayB0byBgdG9gIHByb3AgKGlmIGB0b2AgaXMgYSBzdHJpbmcpXG4gICAgaWYgKGlzU3RyaW5nKHRvKSkge1xuICAgICAgcmV0dXJuIHRvIHx8IHRvRmFsbGJhY2s7XG4gICAgfSAvLyBGYWxsYmFjayB0byBgdG8ucGF0aCArIHRvLnF1ZXJ5ICsgdG8uaGFzaGAgcHJvcCAoaWYgYHRvYCBpcyBhbiBvYmplY3QpXG5cblxuICAgIGlmIChpc1BsYWluT2JqZWN0KHRvKSAmJiAodG8ucGF0aCB8fCB0by5xdWVyeSB8fCB0by5oYXNoKSkge1xuICAgICAgdmFyIHBhdGggPSB0b1N0cmluZyh0by5wYXRoKTtcbiAgICAgIHZhciBxdWVyeSA9IHN0cmluZ2lmeVF1ZXJ5T2JqKHRvLnF1ZXJ5KTtcbiAgICAgIHZhciBoYXNoID0gdG9TdHJpbmcodG8uaGFzaCk7XG4gICAgICBoYXNoID0gIWhhc2ggfHwgaGFzaC5jaGFyQXQoMCkgPT09ICcjJyA/IGhhc2ggOiBcIiNcIi5jb25jYXQoaGFzaCk7XG4gICAgICByZXR1cm4gXCJcIi5jb25jYXQocGF0aCkuY29uY2F0KHF1ZXJ5KS5jb25jYXQoaGFzaCkgfHwgdG9GYWxsYmFjaztcbiAgICB9XG4gIH0gLy8gSWYgbm90aGluZyBpcyBwcm92aWRlZCByZXR1cm4gdGhlIGZhbGxiYWNrXG5cblxuICByZXR1cm4gZmFsbGJhY2s7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL3V0aWxzL3JvdXRlci5qc1xuLy8gbW9kdWxlIGlkID0gMTA1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///105\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BBadge; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_pluck_props__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__link_link__ = __webpack_require__(14);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\nvar NAME = 'BBadge';\nvar linkProps = Object(__WEBPACK_IMPORTED_MODULE_4__link_link__[\"b\" /* propsFactory */])();\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nvar props = _objectSpread({}, linkProps, {\n tag: {\n type: String,\n default: 'span'\n },\n variant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant');\n }\n },\n pill: {\n type: Boolean,\n default: false\n }\n}); // @vue/component\n\nvar BBadge =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var tag = !props.href && !props.to ? props.tag : __WEBPACK_IMPORTED_MODULE_4__link_link__[\"a\" /* BLink */];\n var componentData = {\n staticClass: 'badge',\n class: [props.variant ? \"badge-\".concat(props.variant) : 'badge-secondary', {\n 'badge-pill': Boolean(props.pill),\n active: props.active,\n disabled: props.disabled\n }],\n props: Object(__WEBPACK_IMPORTED_MODULE_3__utils_pluck_props__[\"a\" /* default */])(linkProps, props)\n };\n return h(tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, componentData), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9iYWRnZS9iYWRnZS5qcz8yM2Q5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNvQjtBQUNFO0FBQ1A7QUFDc0I7QUFDdkU7QUFDQSxnQkFBZ0Isd0VBQWdCO0FBQ2hDO0FBQ0E7QUFDTyw0QkFBNEI7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaUZBQWtCO0FBQy9CO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFFOztBQUVJO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELHlEQUFLO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxhQUFhLDJFQUFVO0FBQ3ZCO0FBQ0Esa0JBQWtCLG9GQUFTO0FBQzNCO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMDUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgcGx1Y2tQcm9wcyBmcm9tICcuLi8uLi91dGlscy9wbHVjay1wcm9wcyc7XG5pbXBvcnQgeyBCTGluaywgcHJvcHNGYWN0b3J5IGFzIGxpbmtQcm9wc0ZhY3RvcnkgfSBmcm9tICcuLi9saW5rL2xpbmsnO1xudmFyIE5BTUUgPSAnQkJhZGdlJztcbnZhciBsaW5rUHJvcHMgPSBsaW5rUHJvcHNGYWN0b3J5KCk7XG5kZWxldGUgbGlua1Byb3BzLmhyZWYuZGVmYXVsdDtcbmRlbGV0ZSBsaW5rUHJvcHMudG8uZGVmYXVsdDtcbmV4cG9ydCB2YXIgcHJvcHMgPSBfb2JqZWN0U3ByZWFkKHt9LCBsaW5rUHJvcHMsIHtcbiAgdGFnOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdzcGFuJ1xuICB9LFxuICB2YXJpYW50OiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAndmFyaWFudCcpO1xuICAgIH1cbiAgfSxcbiAgcGlsbDoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfVxufSk7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkJhZGdlID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogcHJvcHMsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgICBkYXRhID0gX3JlZi5kYXRhLFxuICAgICAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW47XG4gICAgdmFyIHRhZyA9ICFwcm9wcy5ocmVmICYmICFwcm9wcy50byA/IHByb3BzLnRhZyA6IEJMaW5rO1xuICAgIHZhciBjb21wb25lbnREYXRhID0ge1xuICAgICAgc3RhdGljQ2xhc3M6ICdiYWRnZScsXG4gICAgICBjbGFzczogW3Byb3BzLnZhcmlhbnQgPyBcImJhZGdlLVwiLmNvbmNhdChwcm9wcy52YXJpYW50KSA6ICdiYWRnZS1zZWNvbmRhcnknLCB7XG4gICAgICAgICdiYWRnZS1waWxsJzogQm9vbGVhbihwcm9wcy5waWxsKSxcbiAgICAgICAgYWN0aXZlOiBwcm9wcy5hY3RpdmUsXG4gICAgICAgIGRpc2FibGVkOiBwcm9wcy5kaXNhYmxlZFxuICAgICAgfV0sXG4gICAgICBwcm9wczogcGx1Y2tQcm9wcyhsaW5rUHJvcHMsIHByb3BzKVxuICAgIH07XG4gICAgcmV0dXJuIGgodGFnLCBtZXJnZURhdGEoZGF0YSwgY29tcG9uZW50RGF0YSksIGNoaWxkcmVuKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9iYWRnZS9iYWRnZS5qc1xuLy8gbW9kdWxlIGlkID0gMTA1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///105\n"); /***/ }), /* 106 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BreadcrumbPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__breadcrumb__ = __webpack_require__(107);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__breadcrumb_item__ = __webpack_require__(54);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__breadcrumb_link__ = __webpack_require__(108);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BBreadcrumb */\n/* unused harmony reexport BBreadcrumbItem */\n/* unused harmony reexport BBreadcrumbLink */\n\n\n\n\nvar BreadcrumbPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_3__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BBreadcrumb: __WEBPACK_IMPORTED_MODULE_0__breadcrumb__[\"a\" /* BBreadcrumb */],\n BBreadcrumbItem: __WEBPACK_IMPORTED_MODULE_1__breadcrumb_item__[\"a\" /* BBreadcrumbItem */],\n BBreadcrumbLink: __WEBPACK_IMPORTED_MODULE_2__breadcrumb_link__[\"a\" /* BBreadcrumbLink */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9icmVhZGNydW1iL2luZGV4LmpzP2Q4ZWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEyQztBQUNTO0FBQ0E7QUFDQTtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGlCQUFpQixnRUFBVztBQUM1QixxQkFBcUIseUVBQWU7QUFDcEMscUJBQXFCLHlFQUFlO0FBQ3BDO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMDYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCQnJlYWRjcnVtYiB9IGZyb20gJy4vYnJlYWRjcnVtYic7XG5pbXBvcnQgeyBCQnJlYWRjcnVtYkl0ZW0gfSBmcm9tICcuL2JyZWFkY3J1bWItaXRlbSc7XG5pbXBvcnQgeyBCQnJlYWRjcnVtYkxpbmsgfSBmcm9tICcuL2JyZWFkY3J1bWItbGluayc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgQnJlYWRjcnVtYlBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJCcmVhZGNydW1iOiBCQnJlYWRjcnVtYixcbiAgICBCQnJlYWRjcnVtYkl0ZW06IEJCcmVhZGNydW1iSXRlbSxcbiAgICBCQnJlYWRjcnVtYkxpbms6IEJCcmVhZGNydW1iTGlua1xuICB9XG59KTtcbmV4cG9ydCB7IEJyZWFkY3J1bWJQbHVnaW4sIEJCcmVhZGNydW1iLCBCQnJlYWRjcnVtYkl0ZW0sIEJCcmVhZGNydW1iTGluayB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvYnJlYWRjcnVtYi9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///106\n"); +eval("var identity = function identity(x) {\n return x;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (identity);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvaWRlbnRpdHkuanM/ZmM3OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7O0FBRWUsaUVBQVEiLCJmaWxlIjoiMTA2LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlkZW50aXR5ID0gZnVuY3Rpb24gaWRlbnRpdHkoeCkge1xuICByZXR1cm4geDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGlkZW50aXR5O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL3V0aWxzL2lkZW50aXR5LmpzXG4vLyBtb2R1bGUgaWQgPSAxMDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///106\n"); /***/ }), /* 107 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BBreadcrumb; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_to_string__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__breadcrumb_item__ = __webpack_require__(54);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\nvar props = {\n items: {\n type: Array,\n default: null\n }\n}; // @vue/component\n\nvar BBreadcrumb =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BBreadcrumb',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var childNodes = children; // Build child nodes from items if given.\n\n if (Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"a\" /* isArray */])(props.items)) {\n var activeDefined = false;\n childNodes = props.items.map(function (item, idx) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"i\" /* isObject */])(item)) {\n item = {\n text: Object(__WEBPACK_IMPORTED_MODULE_2__utils_to_string__[\"a\" /* default */])(item)\n };\n } // Copy the value here so we can normalize it.\n\n\n var active = item.active;\n\n if (active) {\n activeDefined = true;\n }\n\n if (!active && !activeDefined) {\n // Auto-detect active by position in list.\n active = idx + 1 === props.items.length;\n }\n\n return h(__WEBPACK_IMPORTED_MODULE_4__breadcrumb_item__[\"a\" /* BBreadcrumbItem */], {\n props: _objectSpread({}, item, {\n active: active\n })\n });\n });\n }\n\n return h('ol', Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'breadcrumb'\n }), childNodes);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWIuanM/YTNlMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLCtDQUErQywyQ0FBMkMsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8seUNBQXlDLGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBnQiwyQ0FBMkMsa0JBQWtCLGtDQUFrQyxxRUFBcUUsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEVBQUUsWUFBWTs7QUFFN0s7QUFDb0I7QUFDVDtBQUNXO0FBQ0o7QUFDN0M7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUs7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7O0FBRTlCLFFBQVEsdUVBQU87QUFDZjtBQUNBO0FBQ0EsYUFBYSx3RUFBUTtBQUNyQjtBQUNBLGtCQUFrQix5RUFBUTtBQUMxQjtBQUNBLFNBQVM7OztBQUdUOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIseUVBQWU7QUFDaEMsaUNBQWlDO0FBQ2pDO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVCxPQUFPO0FBQ1A7O0FBRUEsbUJBQW1CLG9GQUFTO0FBQzVCO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMDcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCB0b1N0cmluZyBmcm9tICcuLi8uLi91dGlscy90by1zdHJpbmcnO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNPYmplY3QgfSBmcm9tICcuLi8uLi91dGlscy9pbnNwZWN0JztcbmltcG9ydCB7IEJCcmVhZGNydW1iSXRlbSB9IGZyb20gJy4vYnJlYWRjcnVtYi1pdGVtJztcbmV4cG9ydCB2YXIgcHJvcHMgPSB7XG4gIGl0ZW1zOiB7XG4gICAgdHlwZTogQXJyYXksXG4gICAgZGVmYXVsdDogbnVsbFxuICB9XG59OyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJCcmVhZGNydW1iID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQkJyZWFkY3J1bWInLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogcHJvcHMsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgICBkYXRhID0gX3JlZi5kYXRhLFxuICAgICAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW47XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBjaGlsZHJlbjsgLy8gQnVpbGQgY2hpbGQgbm9kZXMgZnJvbSBpdGVtcyBpZiBnaXZlbi5cblxuICAgIGlmIChpc0FycmF5KHByb3BzLml0ZW1zKSkge1xuICAgICAgdmFyIGFjdGl2ZURlZmluZWQgPSBmYWxzZTtcbiAgICAgIGNoaWxkTm9kZXMgPSBwcm9wcy5pdGVtcy5tYXAoZnVuY3Rpb24gKGl0ZW0sIGlkeCkge1xuICAgICAgICBpZiAoIWlzT2JqZWN0KGl0ZW0pKSB7XG4gICAgICAgICAgaXRlbSA9IHtcbiAgICAgICAgICAgIHRleHQ6IHRvU3RyaW5nKGl0ZW0pXG4gICAgICAgICAgfTtcbiAgICAgICAgfSAvLyBDb3B5IHRoZSB2YWx1ZSBoZXJlIHNvIHdlIGNhbiBub3JtYWxpemUgaXQuXG5cblxuICAgICAgICB2YXIgYWN0aXZlID0gaXRlbS5hY3RpdmU7XG5cbiAgICAgICAgaWYgKGFjdGl2ZSkge1xuICAgICAgICAgIGFjdGl2ZURlZmluZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFhY3RpdmUgJiYgIWFjdGl2ZURlZmluZWQpIHtcbiAgICAgICAgICAvLyBBdXRvLWRldGVjdCBhY3RpdmUgYnkgcG9zaXRpb24gaW4gbGlzdC5cbiAgICAgICAgICBhY3RpdmUgPSBpZHggKyAxID09PSBwcm9wcy5pdGVtcy5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaChCQnJlYWRjcnVtYkl0ZW0sIHtcbiAgICAgICAgICBwcm9wczogX29iamVjdFNwcmVhZCh7fSwgaXRlbSwge1xuICAgICAgICAgICAgYWN0aXZlOiBhY3RpdmVcbiAgICAgICAgICB9KVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBoKCdvbCcsIG1lcmdlRGF0YShkYXRhLCB7XG4gICAgICBzdGF0aWNDbGFzczogJ2JyZWFkY3J1bWInXG4gICAgfSksIGNoaWxkTm9kZXMpO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5qc1xuLy8gbW9kdWxlIGlkID0gMTA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///107\n"); +eval("/* unused harmony export stringifyQueryObj */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return parseQuery; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return isRouterLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return computeTag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return computeRel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return computeHref; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__to_string__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__object__ = __webpack_require__(8);\n\n\n\nvar ANCHOR_TAG = 'a'; // Precompile RegExp\n\nvar commaRE = /%2C/g;\nvar encodeReserveRE = /[!'()*]/g; // Method to replace reserved chars\n\nvar encodeReserveReplacer = function encodeReserveReplacer(c) {\n return '%' + c.charCodeAt(0).toString(16);\n}; // Fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\n\n\nvar encode = function encode(str) {\n return encodeURIComponent(Object(__WEBPACK_IMPORTED_MODULE_0__to_string__[\"a\" /* default */])(str)).replace(encodeReserveRE, encodeReserveReplacer).replace(commaRE, ',');\n};\n\nvar decode = decodeURIComponent; // Stringifies an object of query parameters\n// See: https://github.com/vuejs/vue-router/blob/dev/src/util/query.js\n\nvar stringifyQueryObj = function stringifyQueryObj(obj) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"j\" /* isPlainObject */])(obj)) {\n return '';\n }\n\n var query = Object(__WEBPACK_IMPORTED_MODULE_2__object__[\"j\" /* keys */])(obj).map(function (key) {\n var val = obj[key];\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"n\" /* isUndefined */])(val)) {\n return '';\n } else if (Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"g\" /* isNull */])(val)) {\n return encode(key);\n } else if (Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"a\" /* isArray */])(val)) {\n return val.reduce(function (results, val2) {\n if (Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"g\" /* isNull */])(val2)) {\n results.push(encode(key));\n } else if (!Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"n\" /* isUndefined */])(val2)) {\n // Faster than string interpolation\n results.push(encode(key) + '=' + encode(val2));\n }\n\n return results;\n }, []).join('&');\n } // Faster than string interpolation\n\n\n return encode(key) + '=' + encode(val);\n })\n /* must check for length, as we only want to filter empty strings, not things that look falsey! */\n .filter(function (x) {\n return x.length > 0;\n }).join('&');\n return query ? \"?\".concat(query) : '';\n};\nvar parseQuery = function parseQuery(query) {\n var parsed = {};\n query = Object(__WEBPACK_IMPORTED_MODULE_0__to_string__[\"a\" /* default */])(query).trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return parsed;\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"n\" /* isUndefined */])(parsed[key])) {\n parsed[key] = val;\n } else if (Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"a\" /* isArray */])(parsed[key])) {\n parsed[key].push(val);\n } else {\n parsed[key] = [parsed[key], val];\n }\n });\n return parsed;\n};\nvar isRouterLink = function isRouterLink(tag) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__to_string__[\"a\" /* default */])(tag).toLowerCase() !== ANCHOR_TAG;\n};\nvar computeTag = function computeTag() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n to = _ref.to,\n disabled = _ref.disabled;\n\n var thisOrParent = arguments.length > 1 ? arguments[1] : undefined;\n return thisOrParent.$router && to && !disabled ? thisOrParent.$nuxt ? 'nuxt-link' : 'router-link' : ANCHOR_TAG;\n};\nvar computeRel = function computeRel() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n target = _ref2.target,\n rel = _ref2.rel;\n\n if (target === '_blank' && Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"g\" /* isNull */])(rel)) {\n return 'noopener';\n }\n\n return rel || null;\n};\nvar computeHref = function computeHref() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n href = _ref3.href,\n to = _ref3.to;\n\n var tag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ANCHOR_TAG;\n var fallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '#';\n var toFallback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '/';\n\n // We've already checked the $router in computeTag(), so isRouterLink() indicates a live router.\n // When deferring to Vue Router's router-link, don't use the href attribute at all.\n // We return null, and then remove href from the attributes passed to router-link\n if (isRouterLink(tag)) {\n return null;\n } // Return `href` when explicitly provided\n\n\n if (href) {\n return href;\n } // Reconstruct `href` when `to` used, but no router\n\n\n if (to) {\n // Fallback to `to` prop (if `to` is a string)\n if (Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"m\" /* isString */])(to)) {\n return to || toFallback;\n } // Fallback to `to.path + to.query + to.hash` prop (if `to` is an object)\n\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__inspect__[\"j\" /* isPlainObject */])(to) && (to.path || to.query || to.hash)) {\n var path = Object(__WEBPACK_IMPORTED_MODULE_0__to_string__[\"a\" /* default */])(to.path);\n var query = stringifyQueryObj(to.query);\n var hash = Object(__WEBPACK_IMPORTED_MODULE_0__to_string__[\"a\" /* default */])(to.hash);\n hash = !hash || hash.charAt(0) === '#' ? hash : \"#\".concat(hash);\n return \"\".concat(path).concat(query).concat(hash) || toFallback;\n }\n } // If nothing is provided return the fallback\n\n\n return fallback;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvcm91dGVyLmpzPzVlNGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQytDO0FBQ2xEO0FBQ2hDLHFCQUFxQjs7QUFFckI7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7O0FBR0E7QUFDQSw0QkFBNEIsbUVBQVE7QUFDcEM7O0FBRUEsZ0NBQWdDO0FBQ2hDOztBQUVPO0FBQ1AsT0FBTyx1RUFBYTtBQUNwQjtBQUNBOztBQUVBLGNBQWMsNkRBQUk7QUFDbEI7O0FBRUEsUUFBUSxxRUFBVztBQUNuQjtBQUNBLEtBQUssVUFBVSxnRUFBTTtBQUNyQjtBQUNBLEtBQUssVUFBVSxpRUFBTztBQUN0QjtBQUNBLFlBQVksZ0VBQU07QUFDbEI7QUFDQSxTQUFTLFdBQVcscUVBQVc7QUFDL0I7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUs7OztBQUdMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ087QUFDUDtBQUNBLFVBQVUsbUVBQVE7O0FBRWxCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLHFFQUFXO0FBQ25CO0FBQ0EsS0FBSyxVQUFVLGlFQUFPO0FBQ3RCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNPO0FBQ1AsU0FBUyxtRUFBUTtBQUNqQjtBQUNPO0FBQ1AsbUZBQW1GO0FBQ25GO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ087QUFDUCxvRkFBb0Y7QUFDcEY7QUFDQTs7QUFFQSw2QkFBNkIsZ0VBQU07QUFDbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUCxvRkFBb0Y7QUFDcEY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsUUFBUSxrRUFBUTtBQUNoQjtBQUNBLEtBQUs7OztBQUdMLFFBQVEsdUVBQWE7QUFDckIsaUJBQWlCLG1FQUFRO0FBQ3pCO0FBQ0EsaUJBQWlCLG1FQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0EiLCJmaWxlIjoiMTA3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRvU3RyaW5nIGZyb20gJy4vdG8tc3RyaW5nJztcbmltcG9ydCB7IGlzQXJyYXksIGlzTnVsbCwgaXNQbGFpbk9iamVjdCwgaXNTdHJpbmcsIGlzVW5kZWZpbmVkIH0gZnJvbSAnLi9pbnNwZWN0JztcbmltcG9ydCB7IGtleXMgfSBmcm9tICcuL29iamVjdCc7XG52YXIgQU5DSE9SX1RBRyA9ICdhJzsgLy8gUHJlY29tcGlsZSBSZWdFeHBcblxudmFyIGNvbW1hUkUgPSAvJTJDL2c7XG52YXIgZW5jb2RlUmVzZXJ2ZVJFID0gL1shJygpKl0vZzsgLy8gTWV0aG9kIHRvIHJlcGxhY2UgcmVzZXJ2ZWQgY2hhcnNcblxudmFyIGVuY29kZVJlc2VydmVSZXBsYWNlciA9IGZ1bmN0aW9uIGVuY29kZVJlc2VydmVSZXBsYWNlcihjKSB7XG4gIHJldHVybiAnJScgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpO1xufTsgLy8gRml4ZWQgZW5jb2RlVVJJQ29tcG9uZW50IHdoaWNoIGlzIG1vcmUgY29uZm9ybWFudCB0byBSRkMzOTg2OlxuLy8gLSBlc2NhcGVzIFshJygpKl1cbi8vIC0gcHJlc2VydmUgY29tbWFzXG5cblxudmFyIGVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShzdHIpIHtcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh0b1N0cmluZyhzdHIpKS5yZXBsYWNlKGVuY29kZVJlc2VydmVSRSwgZW5jb2RlUmVzZXJ2ZVJlcGxhY2VyKS5yZXBsYWNlKGNvbW1hUkUsICcsJyk7XG59O1xuXG52YXIgZGVjb2RlID0gZGVjb2RlVVJJQ29tcG9uZW50OyAvLyBTdHJpbmdpZmllcyBhbiBvYmplY3Qgb2YgcXVlcnkgcGFyYW1ldGVyc1xuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlLXJvdXRlci9ibG9iL2Rldi9zcmMvdXRpbC9xdWVyeS5qc1xuXG5leHBvcnQgdmFyIHN0cmluZ2lmeVF1ZXJ5T2JqID0gZnVuY3Rpb24gc3RyaW5naWZ5UXVlcnlPYmoob2JqKSB7XG4gIGlmICghaXNQbGFpbk9iamVjdChvYmopKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgdmFyIHF1ZXJ5ID0ga2V5cyhvYmopLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIHZhbCA9IG9ialtrZXldO1xuXG4gICAgaWYgKGlzVW5kZWZpbmVkKHZhbCkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9IGVsc2UgaWYgKGlzTnVsbCh2YWwpKSB7XG4gICAgICByZXR1cm4gZW5jb2RlKGtleSk7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHtcbiAgICAgIHJldHVybiB2YWwucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHRzLCB2YWwyKSB7XG4gICAgICAgIGlmIChpc051bGwodmFsMikpIHtcbiAgICAgICAgICByZXN1bHRzLnB1c2goZW5jb2RlKGtleSkpO1xuICAgICAgICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZCh2YWwyKSkge1xuICAgICAgICAgIC8vIEZhc3RlciB0aGFuIHN0cmluZyBpbnRlcnBvbGF0aW9uXG4gICAgICAgICAgcmVzdWx0cy5wdXNoKGVuY29kZShrZXkpICsgJz0nICsgZW5jb2RlKHZhbDIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgICAgfSwgW10pLmpvaW4oJyYnKTtcbiAgICB9IC8vIEZhc3RlciB0aGFuIHN0cmluZyBpbnRlcnBvbGF0aW9uXG5cblxuICAgIHJldHVybiBlbmNvZGUoa2V5KSArICc9JyArIGVuY29kZSh2YWwpO1xuICB9KVxuICAvKiBtdXN0IGNoZWNrIGZvciBsZW5ndGgsIGFzIHdlIG9ubHkgd2FudCB0byBmaWx0ZXIgZW1wdHkgc3RyaW5ncywgbm90IHRoaW5ncyB0aGF0IGxvb2sgZmFsc2V5ISAqL1xuICAuZmlsdGVyKGZ1bmN0aW9uICh4KSB7XG4gICAgcmV0dXJuIHgubGVuZ3RoID4gMDtcbiAgfSkuam9pbignJicpO1xuICByZXR1cm4gcXVlcnkgPyBcIj9cIi5jb25jYXQocXVlcnkpIDogJyc7XG59O1xuZXhwb3J0IHZhciBwYXJzZVF1ZXJ5ID0gZnVuY3Rpb24gcGFyc2VRdWVyeShxdWVyeSkge1xuICB2YXIgcGFyc2VkID0ge307XG4gIHF1ZXJ5ID0gdG9TdHJpbmcocXVlcnkpLnRyaW0oKS5yZXBsYWNlKC9eKFxcP3wjfCYpLywgJycpO1xuXG4gIGlmICghcXVlcnkpIHtcbiAgICByZXR1cm4gcGFyc2VkO1xuICB9XG5cbiAgcXVlcnkuc3BsaXQoJyYnKS5mb3JFYWNoKGZ1bmN0aW9uIChwYXJhbSkge1xuICAgIHZhciBwYXJ0cyA9IHBhcmFtLnJlcGxhY2UoL1xcKy9nLCAnICcpLnNwbGl0KCc9Jyk7XG4gICAgdmFyIGtleSA9IGRlY29kZShwYXJ0cy5zaGlmdCgpKTtcbiAgICB2YXIgdmFsID0gcGFydHMubGVuZ3RoID4gMCA/IGRlY29kZShwYXJ0cy5qb2luKCc9JykpIDogbnVsbDtcblxuICAgIGlmIChpc1VuZGVmaW5lZChwYXJzZWRba2V5XSkpIHtcbiAgICAgIHBhcnNlZFtrZXldID0gdmFsO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShwYXJzZWRba2V5XSkpIHtcbiAgICAgIHBhcnNlZFtrZXldLnB1c2godmFsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyc2VkW2tleV0gPSBbcGFyc2VkW2tleV0sIHZhbF07XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHBhcnNlZDtcbn07XG5leHBvcnQgdmFyIGlzUm91dGVyTGluayA9IGZ1bmN0aW9uIGlzUm91dGVyTGluayh0YWcpIHtcbiAgcmV0dXJuIHRvU3RyaW5nKHRhZykudG9Mb3dlckNhc2UoKSAhPT0gQU5DSE9SX1RBRztcbn07XG5leHBvcnQgdmFyIGNvbXB1dGVUYWcgPSBmdW5jdGlvbiBjb21wdXRlVGFnKCkge1xuICB2YXIgX3JlZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge30sXG4gICAgICB0byA9IF9yZWYudG8sXG4gICAgICBkaXNhYmxlZCA9IF9yZWYuZGlzYWJsZWQ7XG5cbiAgdmFyIHRoaXNPclBhcmVudCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICByZXR1cm4gdGhpc09yUGFyZW50LiRyb3V0ZXIgJiYgdG8gJiYgIWRpc2FibGVkID8gdGhpc09yUGFyZW50LiRudXh0ID8gJ251eHQtbGluaycgOiAncm91dGVyLWxpbmsnIDogQU5DSE9SX1RBRztcbn07XG5leHBvcnQgdmFyIGNvbXB1dGVSZWwgPSBmdW5jdGlvbiBjb21wdXRlUmVsKCkge1xuICB2YXIgX3JlZjIgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9LFxuICAgICAgdGFyZ2V0ID0gX3JlZjIudGFyZ2V0LFxuICAgICAgcmVsID0gX3JlZjIucmVsO1xuXG4gIGlmICh0YXJnZXQgPT09ICdfYmxhbmsnICYmIGlzTnVsbChyZWwpKSB7XG4gICAgcmV0dXJuICdub29wZW5lcic7XG4gIH1cblxuICByZXR1cm4gcmVsIHx8IG51bGw7XG59O1xuZXhwb3J0IHZhciBjb21wdXRlSHJlZiA9IGZ1bmN0aW9uIGNvbXB1dGVIcmVmKCkge1xuICB2YXIgX3JlZjMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9LFxuICAgICAgaHJlZiA9IF9yZWYzLmhyZWYsXG4gICAgICB0byA9IF9yZWYzLnRvO1xuXG4gIHZhciB0YWcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IEFOQ0hPUl9UQUc7XG4gIHZhciBmYWxsYmFjayA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogJyMnO1xuICB2YXIgdG9GYWxsYmFjayA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogJy8nO1xuXG4gIC8vIFdlJ3ZlIGFscmVhZHkgY2hlY2tlZCB0aGUgJHJvdXRlciBpbiBjb21wdXRlVGFnKCksIHNvIGlzUm91dGVyTGluaygpIGluZGljYXRlcyBhIGxpdmUgcm91dGVyLlxuICAvLyBXaGVuIGRlZmVycmluZyB0byBWdWUgUm91dGVyJ3Mgcm91dGVyLWxpbmssIGRvbid0IHVzZSB0aGUgaHJlZiBhdHRyaWJ1dGUgYXQgYWxsLlxuICAvLyBXZSByZXR1cm4gbnVsbCwgYW5kIHRoZW4gcmVtb3ZlIGhyZWYgZnJvbSB0aGUgYXR0cmlidXRlcyBwYXNzZWQgdG8gcm91dGVyLWxpbmtcbiAgaWYgKGlzUm91dGVyTGluayh0YWcpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gUmV0dXJuIGBocmVmYCB3aGVuIGV4cGxpY2l0bHkgcHJvdmlkZWRcblxuXG4gIGlmIChocmVmKSB7XG4gICAgcmV0dXJuIGhyZWY7XG4gIH0gLy8gUmVjb25zdHJ1Y3QgYGhyZWZgIHdoZW4gYHRvYCB1c2VkLCBidXQgbm8gcm91dGVyXG5cblxuICBpZiAodG8pIHtcbiAgICAvLyBGYWxsYmFjayB0byBgdG9gIHByb3AgKGlmIGB0b2AgaXMgYSBzdHJpbmcpXG4gICAgaWYgKGlzU3RyaW5nKHRvKSkge1xuICAgICAgcmV0dXJuIHRvIHx8IHRvRmFsbGJhY2s7XG4gICAgfSAvLyBGYWxsYmFjayB0byBgdG8ucGF0aCArIHRvLnF1ZXJ5ICsgdG8uaGFzaGAgcHJvcCAoaWYgYHRvYCBpcyBhbiBvYmplY3QpXG5cblxuICAgIGlmIChpc1BsYWluT2JqZWN0KHRvKSAmJiAodG8ucGF0aCB8fCB0by5xdWVyeSB8fCB0by5oYXNoKSkge1xuICAgICAgdmFyIHBhdGggPSB0b1N0cmluZyh0by5wYXRoKTtcbiAgICAgIHZhciBxdWVyeSA9IHN0cmluZ2lmeVF1ZXJ5T2JqKHRvLnF1ZXJ5KTtcbiAgICAgIHZhciBoYXNoID0gdG9TdHJpbmcodG8uaGFzaCk7XG4gICAgICBoYXNoID0gIWhhc2ggfHwgaGFzaC5jaGFyQXQoMCkgPT09ICcjJyA/IGhhc2ggOiBcIiNcIi5jb25jYXQoaGFzaCk7XG4gICAgICByZXR1cm4gXCJcIi5jb25jYXQocGF0aCkuY29uY2F0KHF1ZXJ5KS5jb25jYXQoaGFzaCkgfHwgdG9GYWxsYmFjaztcbiAgICB9XG4gIH0gLy8gSWYgbm90aGluZyBpcyBwcm92aWRlZCByZXR1cm4gdGhlIGZhbGxiYWNrXG5cblxuICByZXR1cm4gZmFsbGJhY2s7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL3V0aWxzL3JvdXRlci5qc1xuLy8gbW9kdWxlIGlkID0gMTA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///107\n"); /***/ }), /* 108 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return props; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BBreadcrumbLink; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_pluck_props__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_html__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__link_link__ = __webpack_require__(14);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\nvar props = _objectSpread({}, Object(__WEBPACK_IMPORTED_MODULE_4__link_link__[\"b\" /* propsFactory */])(), {\n text: {\n type: String,\n default: null\n },\n html: {\n type: String,\n default: null\n },\n ariaCurrent: {\n type: String,\n default: 'location'\n }\n}); // @vue/component\n\nvar BBreadcrumbLink =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BBreadcrumbLink',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var suppliedProps = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var tag = suppliedProps.active ? 'span' : __WEBPACK_IMPORTED_MODULE_4__link_link__[\"a\" /* BLink */];\n var componentData = {\n props: Object(__WEBPACK_IMPORTED_MODULE_2__utils_pluck_props__[\"a\" /* default */])(props, suppliedProps)\n };\n\n if (suppliedProps.active) {\n componentData.attrs = {\n 'aria-current': suppliedProps.ariaCurrent\n };\n }\n\n if (!children) {\n componentData.domProps = Object(__WEBPACK_IMPORTED_MODULE_3__utils_html__[\"a\" /* htmlOrText */])(suppliedProps.html, suppliedProps.text);\n }\n\n return h(tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, componentData), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWItbGluay5qcz9mMGQyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNvQjtBQUNMO0FBQ0g7QUFDeUI7QUFDaEUsNEJBQTRCLEVBQUUsd0VBQWdCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUU7O0FBRUk7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMseURBQUs7QUFDbkQ7QUFDQSxhQUFhLDJFQUFVO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0IsdUVBQVU7QUFDekM7O0FBRUEsa0JBQWtCLG9GQUFTO0FBQzNCO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMDguanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCBwbHVja1Byb3BzIGZyb20gJy4uLy4uL3V0aWxzL3BsdWNrLXByb3BzJztcbmltcG9ydCB7IGh0bWxPclRleHQgfSBmcm9tICcuLi8uLi91dGlscy9odG1sJztcbmltcG9ydCB7IEJMaW5rLCBwcm9wc0ZhY3RvcnkgYXMgbGlua1Byb3BzRmFjdG9yeSB9IGZyb20gJy4uL2xpbmsvbGluayc7XG5leHBvcnQgdmFyIHByb3BzID0gX29iamVjdFNwcmVhZCh7fSwgbGlua1Byb3BzRmFjdG9yeSgpLCB7XG4gIHRleHQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBodG1sOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgYXJpYUN1cnJlbnQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ2xvY2F0aW9uJ1xuICB9XG59KTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCQnJlYWRjcnVtYkxpbmsgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCQnJlYWRjcnVtYkxpbmsnLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogcHJvcHMsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgc3VwcGxpZWRQcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgICB2YXIgdGFnID0gc3VwcGxpZWRQcm9wcy5hY3RpdmUgPyAnc3BhbicgOiBCTGluaztcbiAgICB2YXIgY29tcG9uZW50RGF0YSA9IHtcbiAgICAgIHByb3BzOiBwbHVja1Byb3BzKHByb3BzLCBzdXBwbGllZFByb3BzKVxuICAgIH07XG5cbiAgICBpZiAoc3VwcGxpZWRQcm9wcy5hY3RpdmUpIHtcbiAgICAgIGNvbXBvbmVudERhdGEuYXR0cnMgPSB7XG4gICAgICAgICdhcmlhLWN1cnJlbnQnOiBzdXBwbGllZFByb3BzLmFyaWFDdXJyZW50XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICghY2hpbGRyZW4pIHtcbiAgICAgIGNvbXBvbmVudERhdGEuZG9tUHJvcHMgPSBodG1sT3JUZXh0KHN1cHBsaWVkUHJvcHMuaHRtbCwgc3VwcGxpZWRQcm9wcy50ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaCh0YWcsIG1lcmdlRGF0YShkYXRhLCBjb21wb25lbnREYXRhKSwgY2hpbGRyZW4pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi1saW5rLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///108\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BreadcrumbPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__breadcrumb__ = __webpack_require__(109);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__breadcrumb_item__ = __webpack_require__(54);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__breadcrumb_link__ = __webpack_require__(110);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BBreadcrumb */\n/* unused harmony reexport BBreadcrumbItem */\n/* unused harmony reexport BBreadcrumbLink */\n\n\n\n\nvar BreadcrumbPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_3__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BBreadcrumb: __WEBPACK_IMPORTED_MODULE_0__breadcrumb__[\"a\" /* BBreadcrumb */],\n BBreadcrumbItem: __WEBPACK_IMPORTED_MODULE_1__breadcrumb_item__[\"a\" /* BBreadcrumbItem */],\n BBreadcrumbLink: __WEBPACK_IMPORTED_MODULE_2__breadcrumb_link__[\"a\" /* BBreadcrumbLink */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9icmVhZGNydW1iL2luZGV4LmpzP2Q4ZWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEyQztBQUNTO0FBQ0E7QUFDQTtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGlCQUFpQixnRUFBVztBQUM1QixxQkFBcUIseUVBQWU7QUFDcEMscUJBQXFCLHlFQUFlO0FBQ3BDO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMDguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCQnJlYWRjcnVtYiB9IGZyb20gJy4vYnJlYWRjcnVtYic7XG5pbXBvcnQgeyBCQnJlYWRjcnVtYkl0ZW0gfSBmcm9tICcuL2JyZWFkY3J1bWItaXRlbSc7XG5pbXBvcnQgeyBCQnJlYWRjcnVtYkxpbmsgfSBmcm9tICcuL2JyZWFkY3J1bWItbGluayc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgQnJlYWRjcnVtYlBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJCcmVhZGNydW1iOiBCQnJlYWRjcnVtYixcbiAgICBCQnJlYWRjcnVtYkl0ZW06IEJCcmVhZGNydW1iSXRlbSxcbiAgICBCQnJlYWRjcnVtYkxpbms6IEJCcmVhZGNydW1iTGlua1xuICB9XG59KTtcbmV4cG9ydCB7IEJyZWFkY3J1bWJQbHVnaW4sIEJCcmVhZGNydW1iLCBCQnJlYWRjcnVtYkl0ZW0sIEJCcmVhZGNydW1iTGluayB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvYnJlYWRjcnVtYi9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///108\n"); /***/ }), /* 109 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ButtonPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__button__ = __webpack_require__(34);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__button_close__ = __webpack_require__(31);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BButton */\n/* unused harmony reexport BButtonClose */\n\n\n\nvar ButtonPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BButton: __WEBPACK_IMPORTED_MODULE_0__button__[\"a\" /* BButton */],\n BBtn: __WEBPACK_IMPORTED_MODULE_0__button__[\"a\" /* BButton */],\n BButtonClose: __WEBPACK_IMPORTED_MODULE_1__button_close__[\"a\" /* BButtonClose */],\n BBtnClose: __WEBPACK_IMPORTED_MODULE_1__button_close__[\"a\" /* BButtonClose */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9idXR0b24vaW5kZXguanM/ZGU1YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBbUM7QUFDVztBQUNNO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsYUFBYSx3REFBTztBQUNwQixVQUFVLHdEQUFPO0FBQ2pCLGtCQUFrQixtRUFBWTtBQUM5QixlQUFlLG1FQUFZO0FBQzNCO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMDkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCQnV0dG9uIH0gZnJvbSAnLi9idXR0b24nO1xuaW1wb3J0IHsgQkJ1dHRvbkNsb3NlIH0gZnJvbSAnLi9idXR0b24tY2xvc2UnO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIEJ1dHRvblBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJCdXR0b246IEJCdXR0b24sXG4gICAgQkJ0bjogQkJ1dHRvbixcbiAgICBCQnV0dG9uQ2xvc2U6IEJCdXR0b25DbG9zZSxcbiAgICBCQnRuQ2xvc2U6IEJCdXR0b25DbG9zZVxuICB9XG59KTtcbmV4cG9ydCB7IEJ1dHRvblBsdWdpbiwgQkJ1dHRvbiwgQkJ1dHRvbkNsb3NlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9idXR0b24vaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDEwOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///109\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BBreadcrumb; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_to_string__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__breadcrumb_item__ = __webpack_require__(54);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\nvar props = {\n items: {\n type: Array,\n default: null\n }\n}; // @vue/component\n\nvar BBreadcrumb =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BBreadcrumb',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var childNodes = children; // Build child nodes from items if given.\n\n if (Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"a\" /* isArray */])(props.items)) {\n var activeDefined = false;\n childNodes = props.items.map(function (item, idx) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"i\" /* isObject */])(item)) {\n item = {\n text: Object(__WEBPACK_IMPORTED_MODULE_2__utils_to_string__[\"a\" /* default */])(item)\n };\n } // Copy the value here so we can normalize it.\n\n\n var active = item.active;\n\n if (active) {\n activeDefined = true;\n }\n\n if (!active && !activeDefined) {\n // Auto-detect active by position in list.\n active = idx + 1 === props.items.length;\n }\n\n return h(__WEBPACK_IMPORTED_MODULE_4__breadcrumb_item__[\"a\" /* BBreadcrumbItem */], {\n props: _objectSpread({}, item, {\n active: active\n })\n });\n });\n }\n\n return h('ol', Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'breadcrumb'\n }), childNodes);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWIuanM/YTNlMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLCtDQUErQywyQ0FBMkMsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8seUNBQXlDLGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBnQiwyQ0FBMkMsa0JBQWtCLGtDQUFrQyxxRUFBcUUsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEVBQUUsWUFBWTs7QUFFN0s7QUFDb0I7QUFDVDtBQUNXO0FBQ0o7QUFDN0M7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUs7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7O0FBRTlCLFFBQVEsdUVBQU87QUFDZjtBQUNBO0FBQ0EsYUFBYSx3RUFBUTtBQUNyQjtBQUNBLGtCQUFrQix5RUFBUTtBQUMxQjtBQUNBLFNBQVM7OztBQUdUOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIseUVBQWU7QUFDaEMsaUNBQWlDO0FBQ2pDO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVCxPQUFPO0FBQ1A7O0FBRUEsbUJBQW1CLG9GQUFTO0FBQzVCO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMDkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCB0b1N0cmluZyBmcm9tICcuLi8uLi91dGlscy90by1zdHJpbmcnO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNPYmplY3QgfSBmcm9tICcuLi8uLi91dGlscy9pbnNwZWN0JztcbmltcG9ydCB7IEJCcmVhZGNydW1iSXRlbSB9IGZyb20gJy4vYnJlYWRjcnVtYi1pdGVtJztcbmV4cG9ydCB2YXIgcHJvcHMgPSB7XG4gIGl0ZW1zOiB7XG4gICAgdHlwZTogQXJyYXksXG4gICAgZGVmYXVsdDogbnVsbFxuICB9XG59OyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJCcmVhZGNydW1iID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQkJyZWFkY3J1bWInLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogcHJvcHMsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgICBkYXRhID0gX3JlZi5kYXRhLFxuICAgICAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW47XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBjaGlsZHJlbjsgLy8gQnVpbGQgY2hpbGQgbm9kZXMgZnJvbSBpdGVtcyBpZiBnaXZlbi5cblxuICAgIGlmIChpc0FycmF5KHByb3BzLml0ZW1zKSkge1xuICAgICAgdmFyIGFjdGl2ZURlZmluZWQgPSBmYWxzZTtcbiAgICAgIGNoaWxkTm9kZXMgPSBwcm9wcy5pdGVtcy5tYXAoZnVuY3Rpb24gKGl0ZW0sIGlkeCkge1xuICAgICAgICBpZiAoIWlzT2JqZWN0KGl0ZW0pKSB7XG4gICAgICAgICAgaXRlbSA9IHtcbiAgICAgICAgICAgIHRleHQ6IHRvU3RyaW5nKGl0ZW0pXG4gICAgICAgICAgfTtcbiAgICAgICAgfSAvLyBDb3B5IHRoZSB2YWx1ZSBoZXJlIHNvIHdlIGNhbiBub3JtYWxpemUgaXQuXG5cblxuICAgICAgICB2YXIgYWN0aXZlID0gaXRlbS5hY3RpdmU7XG5cbiAgICAgICAgaWYgKGFjdGl2ZSkge1xuICAgICAgICAgIGFjdGl2ZURlZmluZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFhY3RpdmUgJiYgIWFjdGl2ZURlZmluZWQpIHtcbiAgICAgICAgICAvLyBBdXRvLWRldGVjdCBhY3RpdmUgYnkgcG9zaXRpb24gaW4gbGlzdC5cbiAgICAgICAgICBhY3RpdmUgPSBpZHggKyAxID09PSBwcm9wcy5pdGVtcy5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaChCQnJlYWRjcnVtYkl0ZW0sIHtcbiAgICAgICAgICBwcm9wczogX29iamVjdFNwcmVhZCh7fSwgaXRlbSwge1xuICAgICAgICAgICAgYWN0aXZlOiBhY3RpdmVcbiAgICAgICAgICB9KVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBoKCdvbCcsIG1lcmdlRGF0YShkYXRhLCB7XG4gICAgICBzdGF0aWNDbGFzczogJ2JyZWFkY3J1bWInXG4gICAgfSksIGNoaWxkTm9kZXMpO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5qc1xuLy8gbW9kdWxlIGlkID0gMTA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///109\n"); /***/ }), /* 110 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ButtonGroupPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__button_group__ = __webpack_require__(111);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BButtonGroup */\n\n\nvar ButtonGroupPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BButtonGroup: __WEBPACK_IMPORTED_MODULE_0__button_group__[\"a\" /* BButtonGroup */],\n BBtnGroup: __WEBPACK_IMPORTED_MODULE_0__button_group__[\"a\" /* BButtonGroup */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9idXR0b24tZ3JvdXAvaW5kZXguanM/Y2U5MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE4QztBQUNNO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0Esa0JBQWtCLG1FQUFZO0FBQzlCLGVBQWUsbUVBQVk7QUFDM0I7QUFDQSxDQUFDIiwiZmlsZSI6IjExMC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJCdXR0b25Hcm91cCB9IGZyb20gJy4vYnV0dG9uLWdyb3VwJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBCdXR0b25Hcm91cFBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJCdXR0b25Hcm91cDogQkJ1dHRvbkdyb3VwLFxuICAgIEJCdG5Hcm91cDogQkJ1dHRvbkdyb3VwXG4gIH1cbn0pO1xuZXhwb3J0IHsgQnV0dG9uR3JvdXBQbHVnaW4sIEJCdXR0b25Hcm91cCB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvYnV0dG9uLWdyb3VwL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///110\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return props; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BBreadcrumbLink; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_pluck_props__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_html__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__link_link__ = __webpack_require__(14);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\nvar props = _objectSpread({}, Object(__WEBPACK_IMPORTED_MODULE_4__link_link__[\"b\" /* propsFactory */])(), {\n text: {\n type: String,\n default: null\n },\n html: {\n type: String,\n default: null\n },\n ariaCurrent: {\n type: String,\n default: 'location'\n }\n}); // @vue/component\n\nvar BBreadcrumbLink =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BBreadcrumbLink',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var suppliedProps = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var tag = suppliedProps.active ? 'span' : __WEBPACK_IMPORTED_MODULE_4__link_link__[\"a\" /* BLink */];\n var componentData = {\n props: Object(__WEBPACK_IMPORTED_MODULE_2__utils_pluck_props__[\"a\" /* default */])(props, suppliedProps)\n };\n\n if (suppliedProps.active) {\n componentData.attrs = {\n 'aria-current': suppliedProps.ariaCurrent\n };\n }\n\n if (!children) {\n componentData.domProps = Object(__WEBPACK_IMPORTED_MODULE_3__utils_html__[\"a\" /* htmlOrText */])(suppliedProps.html, suppliedProps.text);\n }\n\n return h(tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, componentData), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWItbGluay5qcz9mMGQyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNvQjtBQUNMO0FBQ0g7QUFDeUI7QUFDaEUsNEJBQTRCLEVBQUUsd0VBQWdCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUU7O0FBRUk7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMseURBQUs7QUFDbkQ7QUFDQSxhQUFhLDJFQUFVO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0IsdUVBQVU7QUFDekM7O0FBRUEsa0JBQWtCLG9GQUFTO0FBQzNCO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMTAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCBwbHVja1Byb3BzIGZyb20gJy4uLy4uL3V0aWxzL3BsdWNrLXByb3BzJztcbmltcG9ydCB7IGh0bWxPclRleHQgfSBmcm9tICcuLi8uLi91dGlscy9odG1sJztcbmltcG9ydCB7IEJMaW5rLCBwcm9wc0ZhY3RvcnkgYXMgbGlua1Byb3BzRmFjdG9yeSB9IGZyb20gJy4uL2xpbmsvbGluayc7XG5leHBvcnQgdmFyIHByb3BzID0gX29iamVjdFNwcmVhZCh7fSwgbGlua1Byb3BzRmFjdG9yeSgpLCB7XG4gIHRleHQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBodG1sOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgYXJpYUN1cnJlbnQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ2xvY2F0aW9uJ1xuICB9XG59KTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCQnJlYWRjcnVtYkxpbmsgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCQnJlYWRjcnVtYkxpbmsnLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogcHJvcHMsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgc3VwcGxpZWRQcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgICB2YXIgdGFnID0gc3VwcGxpZWRQcm9wcy5hY3RpdmUgPyAnc3BhbicgOiBCTGluaztcbiAgICB2YXIgY29tcG9uZW50RGF0YSA9IHtcbiAgICAgIHByb3BzOiBwbHVja1Byb3BzKHByb3BzLCBzdXBwbGllZFByb3BzKVxuICAgIH07XG5cbiAgICBpZiAoc3VwcGxpZWRQcm9wcy5hY3RpdmUpIHtcbiAgICAgIGNvbXBvbmVudERhdGEuYXR0cnMgPSB7XG4gICAgICAgICdhcmlhLWN1cnJlbnQnOiBzdXBwbGllZFByb3BzLmFyaWFDdXJyZW50XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICghY2hpbGRyZW4pIHtcbiAgICAgIGNvbXBvbmVudERhdGEuZG9tUHJvcHMgPSBodG1sT3JUZXh0KHN1cHBsaWVkUHJvcHMuaHRtbCwgc3VwcGxpZWRQcm9wcy50ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaCh0YWcsIG1lcmdlRGF0YShkYXRhLCBjb21wb25lbnREYXRhKSwgY2hpbGRyZW4pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi1saW5rLmpzXG4vLyBtb2R1bGUgaWQgPSAxMTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///110\n"); /***/ }), /* 111 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BButtonGroup; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_config__ = __webpack_require__(4);\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\nvar NAME = 'BButtonGroup';\nvar props = {\n vertical: {\n type: Boolean,\n default: false\n },\n size: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])('BButton', 'size');\n }\n },\n tag: {\n type: String,\n default: 'div'\n },\n ariaRole: {\n type: String,\n default: 'group'\n }\n}; // @vue/component\n\nvar BButtonGroup =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n class: _defineProperty({\n 'btn-group': !props.vertical,\n 'btn-group-vertical': props.vertical\n }, \"btn-group-\".concat(props.size), Boolean(props.size)),\n attrs: {\n role: props.ariaRole\n }\n }), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9idXR0b24tZ3JvdXAvYnV0dG9uLWdyb3VwLmpzPzUzNDYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNvQjtBQUNFO0FBQ3hEO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRkFBa0I7QUFDL0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixvRkFBUztBQUNqQztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMTEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG52YXIgTkFNRSA9ICdCQnV0dG9uR3JvdXAnO1xuZXhwb3J0IHZhciBwcm9wcyA9IHtcbiAgdmVydGljYWw6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIHNpemU6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKCdCQnV0dG9uJywgJ3NpemUnKTtcbiAgICB9XG4gIH0sXG4gIHRhZzoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAnZGl2J1xuICB9LFxuICBhcmlhUm9sZToge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAnZ3JvdXAnXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkJ1dHRvbkdyb3VwID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogcHJvcHMsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgICBkYXRhID0gX3JlZi5kYXRhLFxuICAgICAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW47XG4gICAgcmV0dXJuIGgocHJvcHMudGFnLCBtZXJnZURhdGEoZGF0YSwge1xuICAgICAgY2xhc3M6IF9kZWZpbmVQcm9wZXJ0eSh7XG4gICAgICAgICdidG4tZ3JvdXAnOiAhcHJvcHMudmVydGljYWwsXG4gICAgICAgICdidG4tZ3JvdXAtdmVydGljYWwnOiBwcm9wcy52ZXJ0aWNhbFxuICAgICAgfSwgXCJidG4tZ3JvdXAtXCIuY29uY2F0KHByb3BzLnNpemUpLCBCb29sZWFuKHByb3BzLnNpemUpKSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6IHByb3BzLmFyaWFSb2xlXG4gICAgICB9XG4gICAgfSksIGNoaWxkcmVuKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9idXR0b24tZ3JvdXAvYnV0dG9uLWdyb3VwLmpzXG4vLyBtb2R1bGUgaWQgPSAxMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///111\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ButtonPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__button__ = __webpack_require__(34);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__button_close__ = __webpack_require__(31);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BButton */\n/* unused harmony reexport BButtonClose */\n\n\n\nvar ButtonPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BButton: __WEBPACK_IMPORTED_MODULE_0__button__[\"a\" /* BButton */],\n BBtn: __WEBPACK_IMPORTED_MODULE_0__button__[\"a\" /* BButton */],\n BButtonClose: __WEBPACK_IMPORTED_MODULE_1__button_close__[\"a\" /* BButtonClose */],\n BBtnClose: __WEBPACK_IMPORTED_MODULE_1__button_close__[\"a\" /* BButtonClose */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9idXR0b24vaW5kZXguanM/ZGU1YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBbUM7QUFDVztBQUNNO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsYUFBYSx3REFBTztBQUNwQixVQUFVLHdEQUFPO0FBQ2pCLGtCQUFrQixtRUFBWTtBQUM5QixlQUFlLG1FQUFZO0FBQzNCO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMTEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCQnV0dG9uIH0gZnJvbSAnLi9idXR0b24nO1xuaW1wb3J0IHsgQkJ1dHRvbkNsb3NlIH0gZnJvbSAnLi9idXR0b24tY2xvc2UnO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIEJ1dHRvblBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJCdXR0b246IEJCdXR0b24sXG4gICAgQkJ0bjogQkJ1dHRvbixcbiAgICBCQnV0dG9uQ2xvc2U6IEJCdXR0b25DbG9zZSxcbiAgICBCQnRuQ2xvc2U6IEJCdXR0b25DbG9zZVxuICB9XG59KTtcbmV4cG9ydCB7IEJ1dHRvblBsdWdpbiwgQkJ1dHRvbiwgQkJ1dHRvbkNsb3NlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9idXR0b24vaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDExMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///111\n"); /***/ }), /* 112 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ButtonToolbarPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__button_toolbar__ = __webpack_require__(113);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BButtonToolbar */\n\n\nvar ButtonToolbarPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BButtonToolbar: __WEBPACK_IMPORTED_MODULE_0__button_toolbar__[\"a\" /* BButtonToolbar */],\n BBtnToolbar: __WEBPACK_IMPORTED_MODULE_0__button_toolbar__[\"a\" /* BButtonToolbar */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9idXR0b24tdG9vbGJhci9pbmRleC5qcz81NjY2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtEO0FBQ0U7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxvQkFBb0IsdUVBQWM7QUFDbEMsaUJBQWlCLHVFQUFjO0FBQy9CO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMTIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCQnV0dG9uVG9vbGJhciB9IGZyb20gJy4vYnV0dG9uLXRvb2xiYXInO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIEJ1dHRvblRvb2xiYXJQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCQnV0dG9uVG9vbGJhcjogQkJ1dHRvblRvb2xiYXIsXG4gICAgQkJ0blRvb2xiYXI6IEJCdXR0b25Ub29sYmFyXG4gIH1cbn0pO1xuZXhwb3J0IHsgQnV0dG9uVG9vbGJhclBsdWdpbiwgQkJ1dHRvblRvb2xiYXIgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2J1dHRvbi10b29sYmFyL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///112\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ButtonGroupPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__button_group__ = __webpack_require__(113);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BButtonGroup */\n\n\nvar ButtonGroupPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BButtonGroup: __WEBPACK_IMPORTED_MODULE_0__button_group__[\"a\" /* BButtonGroup */],\n BBtnGroup: __WEBPACK_IMPORTED_MODULE_0__button_group__[\"a\" /* BButtonGroup */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9idXR0b24tZ3JvdXAvaW5kZXguanM/Y2U5MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE4QztBQUNNO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0Esa0JBQWtCLG1FQUFZO0FBQzlCLGVBQWUsbUVBQVk7QUFDM0I7QUFDQSxDQUFDIiwiZmlsZSI6IjExMi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJCdXR0b25Hcm91cCB9IGZyb20gJy4vYnV0dG9uLWdyb3VwJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBCdXR0b25Hcm91cFBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJCdXR0b25Hcm91cDogQkJ1dHRvbkdyb3VwLFxuICAgIEJCdG5Hcm91cDogQkJ1dHRvbkdyb3VwXG4gIH1cbn0pO1xuZXhwb3J0IHsgQnV0dG9uR3JvdXBQbHVnaW4sIEJCdXR0b25Hcm91cCB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvYnV0dG9uLWdyb3VwL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///112\n"); /***/ }), /* 113 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BButtonToolbar; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_key_codes__ = __webpack_require__(19);\n\n\n\n\nvar ITEM_SELECTOR = ['.btn:not(.disabled):not([disabled]):not(.dropdown-item)', '.form-control:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'input[type=\"checkbox\"]:not(.disabled)', 'input[type=\"radio\"]:not(.disabled)'].join(','); // @vue/component\n\nvar BButtonToolbar =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BButtonToolbar',\n mixins: [__WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__[\"a\" /* default */]],\n props: {\n justify: {\n type: Boolean,\n default: false\n },\n keyNav: {\n type: Boolean,\n default: false\n }\n },\n mounted: function mounted() {\n if (this.keyNav) {\n // Pre-set the tabindexes if the markup does not include tabindex=\"-1\" on the toolbar items\n this.getItems();\n }\n },\n methods: {\n onFocusin: function onFocusin(evt) {\n if (evt.target === this.$el) {\n evt.preventDefault();\n evt.stopPropagation();\n this.focusFirst(evt);\n }\n },\n stop: function stop(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n },\n onKeydown: function onKeydown(evt) {\n if (!this.keyNav) {\n /* istanbul ignore next: should never happen */\n return;\n }\n\n var key = evt.keyCode;\n var shift = evt.shiftKey;\n\n if (key === __WEBPACK_IMPORTED_MODULE_3__utils_key_codes__[\"a\" /* default */].UP || key === __WEBPACK_IMPORTED_MODULE_3__utils_key_codes__[\"a\" /* default */].LEFT) {\n this.stop(evt);\n shift ? this.focusFirst(evt) : this.focusPrev(evt);\n } else if (key === __WEBPACK_IMPORTED_MODULE_3__utils_key_codes__[\"a\" /* default */].DOWN || key === __WEBPACK_IMPORTED_MODULE_3__utils_key_codes__[\"a\" /* default */].RIGHT) {\n this.stop(evt);\n shift ? this.focusLast(evt) : this.focusNext(evt);\n }\n },\n setItemFocus: function setItemFocus(item) {\n item && item.focus && item.focus();\n },\n focusFirst: function focusFirst(evt) {\n var items = this.getItems();\n this.setItemFocus(items[0]);\n },\n focusPrev: function focusPrev(evt) {\n var items = this.getItems();\n var index = items.indexOf(evt.target);\n\n if (index > -1) {\n items = items.slice(0, index).reverse();\n this.setItemFocus(items[0]);\n }\n },\n focusNext: function focusNext(evt) {\n var items = this.getItems();\n var index = items.indexOf(evt.target);\n\n if (index > -1) {\n items = items.slice(index + 1);\n this.setItemFocus(items[0]);\n }\n },\n focusLast: function focusLast(evt) {\n var items = this.getItems().reverse();\n this.setItemFocus(items[0]);\n },\n getItems: function getItems() {\n var items = Object(__WEBPACK_IMPORTED_MODULE_1__utils_dom__[\"y\" /* selectAll */])(ITEM_SELECTOR, this.$el);\n items.forEach(function (item) {\n // Ensure tabfocus is -1 on any new elements\n item.tabIndex = -1;\n });\n return items.filter(function (el) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_dom__[\"p\" /* isVisible */])(el);\n });\n }\n },\n render: function render(h) {\n return h('div', {\n staticClass: 'btn-toolbar',\n class: {\n 'justify-content-between': this.justify\n },\n attrs: {\n role: 'toolbar',\n tabindex: this.keyNav ? '0' : null\n },\n on: this.keyNav ? {\n focusin: this.onFocusin,\n keydown: this.onKeydown\n } : {}\n }, [this.normalizeSlot('default')]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9idXR0b24tdG9vbGJhci9idXR0b24tdG9vbGJhci5qcz80NjcyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDcUI7QUFDTTtBQUNoQjtBQUM3QyxrUUFBa1E7O0FBRTNQO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0EsV0FBVyx1RUFBa0I7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGtCQUFrQixpRUFBUSxlQUFlLGlFQUFRO0FBQ2pEO0FBQ0E7QUFDQSxPQUFPLGtCQUFrQixpRUFBUSxpQkFBaUIsaUVBQVE7QUFDMUQ7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0Esa0JBQWtCLHFFQUFTO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLGVBQWUscUVBQVM7QUFDeEIsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjExMy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IGlzVmlzaWJsZSwgc2VsZWN0QWxsIH0gZnJvbSAnLi4vLi4vdXRpbHMvZG9tJztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JztcbmltcG9ydCBLZXlDb2RlcyBmcm9tICcuLi8uLi91dGlscy9rZXktY29kZXMnO1xudmFyIElURU1fU0VMRUNUT1IgPSBbJy5idG46bm90KC5kaXNhYmxlZCk6bm90KFtkaXNhYmxlZF0pOm5vdCguZHJvcGRvd24taXRlbSknLCAnLmZvcm0tY29udHJvbDpub3QoLmRpc2FibGVkKTpub3QoW2Rpc2FibGVkXSknLCAnc2VsZWN0Om5vdCguZGlzYWJsZWQpOm5vdChbZGlzYWJsZWRdKScsICdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl06bm90KC5kaXNhYmxlZCknLCAnaW5wdXRbdHlwZT1cInJhZGlvXCJdOm5vdCguZGlzYWJsZWQpJ10uam9pbignLCcpOyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJCdXR0b25Ub29sYmFyID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQkJ1dHRvblRvb2xiYXInLFxuICBtaXhpbnM6IFtub3JtYWxpemVTbG90TWl4aW5dLFxuICBwcm9wczoge1xuICAgIGp1c3RpZnk6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAga2V5TmF2OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgaWYgKHRoaXMua2V5TmF2KSB7XG4gICAgICAvLyBQcmUtc2V0IHRoZSB0YWJpbmRleGVzIGlmIHRoZSBtYXJrdXAgZG9lcyBub3QgaW5jbHVkZSB0YWJpbmRleD1cIi0xXCIgb24gdGhlIHRvb2xiYXIgaXRlbXNcbiAgICAgIHRoaXMuZ2V0SXRlbXMoKTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBvbkZvY3VzaW46IGZ1bmN0aW9uIG9uRm9jdXNpbihldnQpIHtcbiAgICAgIGlmIChldnQudGFyZ2V0ID09PSB0aGlzLiRlbCkge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmZvY3VzRmlyc3QoZXZ0KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHN0b3A6IGZ1bmN0aW9uIHN0b3AoZXZ0KSB7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9LFxuICAgIG9uS2V5ZG93bjogZnVuY3Rpb24gb25LZXlkb3duKGV2dCkge1xuICAgICAgaWYgKCF0aGlzLmtleU5hdikge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogc2hvdWxkIG5ldmVyIGhhcHBlbiAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBrZXkgPSBldnQua2V5Q29kZTtcbiAgICAgIHZhciBzaGlmdCA9IGV2dC5zaGlmdEtleTtcblxuICAgICAgaWYgKGtleSA9PT0gS2V5Q29kZXMuVVAgfHwga2V5ID09PSBLZXlDb2Rlcy5MRUZUKSB7XG4gICAgICAgIHRoaXMuc3RvcChldnQpO1xuICAgICAgICBzaGlmdCA/IHRoaXMuZm9jdXNGaXJzdChldnQpIDogdGhpcy5mb2N1c1ByZXYoZXZ0KTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBLZXlDb2Rlcy5ET1dOIHx8IGtleSA9PT0gS2V5Q29kZXMuUklHSFQpIHtcbiAgICAgICAgdGhpcy5zdG9wKGV2dCk7XG4gICAgICAgIHNoaWZ0ID8gdGhpcy5mb2N1c0xhc3QoZXZ0KSA6IHRoaXMuZm9jdXNOZXh0KGV2dCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzZXRJdGVtRm9jdXM6IGZ1bmN0aW9uIHNldEl0ZW1Gb2N1cyhpdGVtKSB7XG4gICAgICBpdGVtICYmIGl0ZW0uZm9jdXMgJiYgaXRlbS5mb2N1cygpO1xuICAgIH0sXG4gICAgZm9jdXNGaXJzdDogZnVuY3Rpb24gZm9jdXNGaXJzdChldnQpIHtcbiAgICAgIHZhciBpdGVtcyA9IHRoaXMuZ2V0SXRlbXMoKTtcbiAgICAgIHRoaXMuc2V0SXRlbUZvY3VzKGl0ZW1zWzBdKTtcbiAgICB9LFxuICAgIGZvY3VzUHJldjogZnVuY3Rpb24gZm9jdXNQcmV2KGV2dCkge1xuICAgICAgdmFyIGl0ZW1zID0gdGhpcy5nZXRJdGVtcygpO1xuICAgICAgdmFyIGluZGV4ID0gaXRlbXMuaW5kZXhPZihldnQudGFyZ2V0KTtcblxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgaXRlbXMgPSBpdGVtcy5zbGljZSgwLCBpbmRleCkucmV2ZXJzZSgpO1xuICAgICAgICB0aGlzLnNldEl0ZW1Gb2N1cyhpdGVtc1swXSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBmb2N1c05leHQ6IGZ1bmN0aW9uIGZvY3VzTmV4dChldnQpIHtcbiAgICAgIHZhciBpdGVtcyA9IHRoaXMuZ2V0SXRlbXMoKTtcbiAgICAgIHZhciBpbmRleCA9IGl0ZW1zLmluZGV4T2YoZXZ0LnRhcmdldCk7XG5cbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIGl0ZW1zID0gaXRlbXMuc2xpY2UoaW5kZXggKyAxKTtcbiAgICAgICAgdGhpcy5zZXRJdGVtRm9jdXMoaXRlbXNbMF0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgZm9jdXNMYXN0OiBmdW5jdGlvbiBmb2N1c0xhc3QoZXZ0KSB7XG4gICAgICB2YXIgaXRlbXMgPSB0aGlzLmdldEl0ZW1zKCkucmV2ZXJzZSgpO1xuICAgICAgdGhpcy5zZXRJdGVtRm9jdXMoaXRlbXNbMF0pO1xuICAgIH0sXG4gICAgZ2V0SXRlbXM6IGZ1bmN0aW9uIGdldEl0ZW1zKCkge1xuICAgICAgdmFyIGl0ZW1zID0gc2VsZWN0QWxsKElURU1fU0VMRUNUT1IsIHRoaXMuJGVsKTtcbiAgICAgIGl0ZW1zLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgLy8gRW5zdXJlIHRhYmZvY3VzIGlzIC0xIG9uIGFueSBuZXcgZWxlbWVudHNcbiAgICAgICAgaXRlbS50YWJJbmRleCA9IC0xO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gaXRlbXMuZmlsdGVyKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICByZXR1cm4gaXNWaXNpYmxlKGVsKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHJldHVybiBoKCdkaXYnLCB7XG4gICAgICBzdGF0aWNDbGFzczogJ2J0bi10b29sYmFyJyxcbiAgICAgIGNsYXNzOiB7XG4gICAgICAgICdqdXN0aWZ5LWNvbnRlbnQtYmV0d2Vlbic6IHRoaXMuanVzdGlmeVxuICAgICAgfSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6ICd0b29sYmFyJyxcbiAgICAgICAgdGFiaW5kZXg6IHRoaXMua2V5TmF2ID8gJzAnIDogbnVsbFxuICAgICAgfSxcbiAgICAgIG9uOiB0aGlzLmtleU5hdiA/IHtcbiAgICAgICAgZm9jdXNpbjogdGhpcy5vbkZvY3VzaW4sXG4gICAgICAgIGtleWRvd246IHRoaXMub25LZXlkb3duXG4gICAgICB9IDoge31cbiAgICB9LCBbdGhpcy5ub3JtYWxpemVTbG90KCdkZWZhdWx0JyldKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9idXR0b24tdG9vbGJhci9idXR0b24tdG9vbGJhci5qc1xuLy8gbW9kdWxlIGlkID0gMTEzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///113\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BButtonGroup; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_config__ = __webpack_require__(4);\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\nvar NAME = 'BButtonGroup';\nvar props = {\n vertical: {\n type: Boolean,\n default: false\n },\n size: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])('BButton', 'size');\n }\n },\n tag: {\n type: String,\n default: 'div'\n },\n ariaRole: {\n type: String,\n default: 'group'\n }\n}; // @vue/component\n\nvar BButtonGroup =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n class: _defineProperty({\n 'btn-group': !props.vertical,\n 'btn-group-vertical': props.vertical\n }, \"btn-group-\".concat(props.size), Boolean(props.size)),\n attrs: {\n role: props.ariaRole\n }\n }), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9idXR0b24tZ3JvdXAvYnV0dG9uLWdyb3VwLmpzPzUzNDYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNvQjtBQUNFO0FBQ3hEO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRkFBa0I7QUFDL0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixvRkFBUztBQUNqQztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMTMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG52YXIgTkFNRSA9ICdCQnV0dG9uR3JvdXAnO1xuZXhwb3J0IHZhciBwcm9wcyA9IHtcbiAgdmVydGljYWw6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIHNpemU6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKCdCQnV0dG9uJywgJ3NpemUnKTtcbiAgICB9XG4gIH0sXG4gIHRhZzoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAnZGl2J1xuICB9LFxuICBhcmlhUm9sZToge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAnZ3JvdXAnXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkJ1dHRvbkdyb3VwID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogcHJvcHMsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgICBkYXRhID0gX3JlZi5kYXRhLFxuICAgICAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW47XG4gICAgcmV0dXJuIGgocHJvcHMudGFnLCBtZXJnZURhdGEoZGF0YSwge1xuICAgICAgY2xhc3M6IF9kZWZpbmVQcm9wZXJ0eSh7XG4gICAgICAgICdidG4tZ3JvdXAnOiAhcHJvcHMudmVydGljYWwsXG4gICAgICAgICdidG4tZ3JvdXAtdmVydGljYWwnOiBwcm9wcy52ZXJ0aWNhbFxuICAgICAgfSwgXCJidG4tZ3JvdXAtXCIuY29uY2F0KHByb3BzLnNpemUpLCBCb29sZWFuKHByb3BzLnNpemUpKSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6IHByb3BzLmFyaWFSb2xlXG4gICAgICB9XG4gICAgfSksIGNoaWxkcmVuKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9idXR0b24tZ3JvdXAvYnV0dG9uLWdyb3VwLmpzXG4vLyBtb2R1bGUgaWQgPSAxMTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///113\n"); /***/ }), /* 114 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return CardPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__card__ = __webpack_require__(115);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__card_header__ = __webpack_require__(59);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__card_body__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__card_title__ = __webpack_require__(57);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__card_sub_title__ = __webpack_require__(58);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__card_footer__ = __webpack_require__(60);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__card_img__ = __webpack_require__(61);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__card_img_lazy__ = __webpack_require__(116);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__card_text__ = __webpack_require__(118);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__card_group__ = __webpack_require__(119);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BCard */\n/* unused harmony reexport BCardHeader */\n/* unused harmony reexport BCardBody */\n/* unused harmony reexport BCardTitle */\n/* unused harmony reexport BCardSubTitle */\n/* unused harmony reexport BCardFooter */\n/* unused harmony reexport BCardImg */\n/* unused harmony reexport BCardImgLazy */\n/* unused harmony reexport BCardText */\n/* unused harmony reexport BCardGroup */\n\n\n\n\n\n\n\n\n\n\n\nvar CardPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_10__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BCard: __WEBPACK_IMPORTED_MODULE_0__card__[\"a\" /* BCard */],\n BCardHeader: __WEBPACK_IMPORTED_MODULE_1__card_header__[\"a\" /* BCardHeader */],\n BCardBody: __WEBPACK_IMPORTED_MODULE_2__card_body__[\"a\" /* BCardBody */],\n BCardTitle: __WEBPACK_IMPORTED_MODULE_3__card_title__[\"a\" /* BCardTitle */],\n BCardSubTitle: __WEBPACK_IMPORTED_MODULE_4__card_sub_title__[\"a\" /* BCardSubTitle */],\n BCardFooter: __WEBPACK_IMPORTED_MODULE_5__card_footer__[\"a\" /* BCardFooter */],\n BCardImg: __WEBPACK_IMPORTED_MODULE_6__card_img__[\"a\" /* BCardImg */],\n BCardImgLazy: __WEBPACK_IMPORTED_MODULE_7__card_img_lazy__[\"a\" /* BCardImgLazy */],\n BCardText: __WEBPACK_IMPORTED_MODULE_8__card_text__[\"a\" /* BCardText */],\n BCardGroup: __WEBPACK_IMPORTED_MODULE_9__card_group__[\"a\" /* BCardGroup */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJkL2luZGV4LmpzPzNkOTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBK0I7QUFDYTtBQUNKO0FBQ0U7QUFDTztBQUNMO0FBQ047QUFDUztBQUNQO0FBQ0U7QUFDVTtBQUNwRDtBQUNBO0FBQ0EsOEVBQWE7QUFDYjtBQUNBLFdBQVcsb0RBQUs7QUFDaEIsaUJBQWlCLGlFQUFXO0FBQzVCLGVBQWUsNkRBQVM7QUFDeEIsZ0JBQWdCLCtEQUFVO0FBQzFCLG1CQUFtQixzRUFBYTtBQUNoQyxpQkFBaUIsaUVBQVc7QUFDNUIsY0FBYywyREFBUTtBQUN0QixrQkFBa0Isb0VBQVk7QUFDOUIsZUFBZSw2REFBUztBQUN4QixnQkFBZ0IsK0RBQVU7QUFDMUI7QUFDQSxDQUFDIiwiZmlsZSI6IjExNC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJDYXJkIH0gZnJvbSAnLi9jYXJkJztcbmltcG9ydCB7IEJDYXJkSGVhZGVyIH0gZnJvbSAnLi9jYXJkLWhlYWRlcic7XG5pbXBvcnQgeyBCQ2FyZEJvZHkgfSBmcm9tICcuL2NhcmQtYm9keSc7XG5pbXBvcnQgeyBCQ2FyZFRpdGxlIH0gZnJvbSAnLi9jYXJkLXRpdGxlJztcbmltcG9ydCB7IEJDYXJkU3ViVGl0bGUgfSBmcm9tICcuL2NhcmQtc3ViLXRpdGxlJztcbmltcG9ydCB7IEJDYXJkRm9vdGVyIH0gZnJvbSAnLi9jYXJkLWZvb3Rlcic7XG5pbXBvcnQgeyBCQ2FyZEltZyB9IGZyb20gJy4vY2FyZC1pbWcnO1xuaW1wb3J0IHsgQkNhcmRJbWdMYXp5IH0gZnJvbSAnLi9jYXJkLWltZy1sYXp5JztcbmltcG9ydCB7IEJDYXJkVGV4dCB9IGZyb20gJy4vY2FyZC10ZXh0JztcbmltcG9ydCB7IEJDYXJkR3JvdXAgfSBmcm9tICcuL2NhcmQtZ3JvdXAnO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIENhcmRQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCQ2FyZDogQkNhcmQsXG4gICAgQkNhcmRIZWFkZXI6IEJDYXJkSGVhZGVyLFxuICAgIEJDYXJkQm9keTogQkNhcmRCb2R5LFxuICAgIEJDYXJkVGl0bGU6IEJDYXJkVGl0bGUsXG4gICAgQkNhcmRTdWJUaXRsZTogQkNhcmRTdWJUaXRsZSxcbiAgICBCQ2FyZEZvb3RlcjogQkNhcmRGb290ZXIsXG4gICAgQkNhcmRJbWc6IEJDYXJkSW1nLFxuICAgIEJDYXJkSW1nTGF6eTogQkNhcmRJbWdMYXp5LFxuICAgIEJDYXJkVGV4dDogQkNhcmRUZXh0LFxuICAgIEJDYXJkR3JvdXA6IEJDYXJkR3JvdXBcbiAgfVxufSk7XG5leHBvcnQgeyBDYXJkUGx1Z2luLCBCQ2FyZCwgQkNhcmRIZWFkZXIsIEJDYXJkQm9keSwgQkNhcmRUaXRsZSwgQkNhcmRTdWJUaXRsZSwgQkNhcmRGb290ZXIsIEJDYXJkSW1nLCBCQ2FyZEltZ0xhenksIEJDYXJkVGV4dCwgQkNhcmRHcm91cCB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvY2FyZC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTE0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///114\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ButtonToolbarPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__button_toolbar__ = __webpack_require__(115);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BButtonToolbar */\n\n\nvar ButtonToolbarPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BButtonToolbar: __WEBPACK_IMPORTED_MODULE_0__button_toolbar__[\"a\" /* BButtonToolbar */],\n BBtnToolbar: __WEBPACK_IMPORTED_MODULE_0__button_toolbar__[\"a\" /* BButtonToolbar */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9idXR0b24tdG9vbGJhci9pbmRleC5qcz81NjY2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtEO0FBQ0U7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxvQkFBb0IsdUVBQWM7QUFDbEMsaUJBQWlCLHVFQUFjO0FBQy9CO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMTQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCQnV0dG9uVG9vbGJhciB9IGZyb20gJy4vYnV0dG9uLXRvb2xiYXInO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIEJ1dHRvblRvb2xiYXJQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCQnV0dG9uVG9vbGJhcjogQkJ1dHRvblRvb2xiYXIsXG4gICAgQkJ0blRvb2xiYXI6IEJCdXR0b25Ub29sYmFyXG4gIH1cbn0pO1xuZXhwb3J0IHsgQnV0dG9uVG9vbGJhclBsdWdpbiwgQkJ1dHRvblRvb2xiYXIgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2J1dHRvbi10b29sYmFyL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///114\n"); /***/ }), /* 115 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BCard; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_prefix_prop_name__ = __webpack_require__(35);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_unprefix_prop_name__ = __webpack_require__(249);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_copy_props__ = __webpack_require__(36);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_pluck_props__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_normalize_slot__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__mixins_card__ = __webpack_require__(37);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__card_body__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__card_header__ = __webpack_require__(59);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__card_footer__ = __webpack_require__(60);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__card_img__ = __webpack_require__(61);\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 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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n\n\n\n\n\nvar cardImgProps = Object(__WEBPACK_IMPORTED_MODULE_4__utils_copy_props__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_11__card_img__[\"b\" /* props */], __WEBPACK_IMPORTED_MODULE_2__utils_prefix_prop_name__[\"a\" /* default */].bind(null, 'img'));\ncardImgProps.imgSrc.required = false;\nvar props = _objectSpread({}, __WEBPACK_IMPORTED_MODULE_8__card_body__[\"b\" /* props */], {}, __WEBPACK_IMPORTED_MODULE_9__card_header__[\"b\" /* props */], {}, __WEBPACK_IMPORTED_MODULE_10__card_footer__[\"b\" /* props */], {}, cardImgProps, {}, Object(__WEBPACK_IMPORTED_MODULE_4__utils_copy_props__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_7__mixins_card__[\"a\" /* default */].props), {\n align: {\n type: String,\n default: null\n },\n noBody: {\n type: Boolean,\n default: false\n }\n}); // @vue/component\n\nvar BCard =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BCard',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots(); // Vue < 2.6.x may return undefined for scopedSlots\n\n var $scopedSlots = scopedSlots || {}; // Create placeholder elements for each section\n\n var imgFirst = h();\n var header = h();\n var content = h();\n var footer = h();\n var imgLast = h();\n\n if (props.imgSrc) {\n var img = h(__WEBPACK_IMPORTED_MODULE_11__card_img__[\"a\" /* BCardImg */], {\n props: Object(__WEBPACK_IMPORTED_MODULE_5__utils_pluck_props__[\"a\" /* default */])(cardImgProps, props, __WEBPACK_IMPORTED_MODULE_3__utils_unprefix_prop_name__[\"a\" /* default */].bind(null, 'img'))\n });\n\n if (props.imgBottom) {\n imgLast = img;\n } else {\n imgFirst = img;\n }\n }\n\n if (props.header || Object(__WEBPACK_IMPORTED_MODULE_6__utils_normalize_slot__[\"a\" /* hasNormalizedSlot */])('header', $scopedSlots, $slots)) {\n header = h(__WEBPACK_IMPORTED_MODULE_9__card_header__[\"a\" /* BCardHeader */], {\n props: Object(__WEBPACK_IMPORTED_MODULE_5__utils_pluck_props__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_9__card_header__[\"b\" /* props */], props)\n }, Object(__WEBPACK_IMPORTED_MODULE_6__utils_normalize_slot__[\"b\" /* normalizeSlot */])('header', {}, $scopedSlots, $slots));\n }\n\n content = Object(__WEBPACK_IMPORTED_MODULE_6__utils_normalize_slot__[\"b\" /* normalizeSlot */])('default', {}, $scopedSlots, $slots) || [];\n\n if (!props.noBody) {\n // Wrap content in card-body\n content = [h(__WEBPACK_IMPORTED_MODULE_8__card_body__[\"a\" /* BCardBody */], {\n props: Object(__WEBPACK_IMPORTED_MODULE_5__utils_pluck_props__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_8__card_body__[\"b\" /* props */], props)\n }, _toConsumableArray(content))];\n }\n\n if (props.footer || Object(__WEBPACK_IMPORTED_MODULE_6__utils_normalize_slot__[\"a\" /* hasNormalizedSlot */])('footer', $scopedSlots, $slots)) {\n footer = h(__WEBPACK_IMPORTED_MODULE_10__card_footer__[\"a\" /* BCardFooter */], {\n props: Object(__WEBPACK_IMPORTED_MODULE_5__utils_pluck_props__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_10__card_footer__[\"b\" /* props */], props)\n }, Object(__WEBPACK_IMPORTED_MODULE_6__utils_normalize_slot__[\"b\" /* normalizeSlot */])('footer', {}, $scopedSlots, $slots));\n }\n\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'card',\n class: (_class = {\n 'flex-row': props.imgLeft || props.imgStart,\n 'flex-row-reverse': (props.imgRight || props.imgEnd) && !(props.imgLeft || props.imgStart)\n }, _defineProperty(_class, \"text-\".concat(props.align), Boolean(props.align)), _defineProperty(_class, \"bg-\".concat(props.bgVariant), Boolean(props.bgVariant)), _defineProperty(_class, \"border-\".concat(props.borderVariant), Boolean(props.borderVariant)), _defineProperty(_class, \"text-\".concat(props.textVariant), Boolean(props.textVariant)), _class)\n }), [imgFirst, header].concat(_toConsumableArray(content), [footer, imgLast]));\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJkL2NhcmQuanM/OGUzMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsa0NBQWtDLGlGQUFpRjs7QUFFbkgsK0JBQStCLHdFQUF3RTs7QUFFdkcsaUNBQWlDLCtIQUErSDs7QUFFaEssa0NBQWtDLDBCQUEwQiw4Q0FBOEMsZ0JBQWdCLE9BQU8sa0JBQWtCLEVBQUUsYUFBYSxFQUFFOztBQUVwSywwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ29CO0FBQ0k7QUFDSTtBQUNmO0FBQ0U7QUFDNkI7QUFDcEM7QUFDa0I7QUFDTTtBQUNBO0FBQ1Q7QUFDekQsbUJBQW1CLDBFQUFTLENBQUMseURBQVEsRUFBRSx3RUFBYztBQUNyRDtBQUNPLDRCQUE0QixFQUFFLHlEQUFTLElBQUksRUFBRSwyREFBVyxJQUFJLEVBQUUsNERBQVcsSUFBSSxrQkFBa0IsRUFBRSwwRUFBUyxDQUFDLDZEQUFTO0FBQzNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRTs7QUFFSTtBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCOztBQUV6Qix5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IsNERBQVE7QUFDMUIsZUFBZSwyRUFBVSxzQkFBc0IsMEVBQWdCO0FBQy9ELE9BQU87O0FBRVA7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUEsd0JBQXdCLHdGQUFpQjtBQUN6QyxpQkFBaUIsaUVBQVc7QUFDNUIsZUFBZSwyRUFBVSxDQUFDLDJEQUFXO0FBQ3JDLE9BQU8sRUFBRSxvRkFBYSxhQUFhO0FBQ25DOztBQUVBLGNBQWMsb0ZBQWEsY0FBYzs7QUFFekM7QUFDQTtBQUNBLG1CQUFtQiw2REFBUztBQUM1QixlQUFlLDJFQUFVLENBQUMseURBQVM7QUFDbkMsT0FBTztBQUNQOztBQUVBLHdCQUF3Qix3RkFBaUI7QUFDekMsaUJBQWlCLGtFQUFXO0FBQzVCLGVBQWUsMkVBQVUsQ0FBQyw0REFBVztBQUNyQyxPQUFPLEVBQUUsb0ZBQWEsYUFBYTtBQUNuQzs7QUFFQSx3QkFBd0Isb0ZBQVM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMTUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IHJldHVybiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5KGFycikgfHwgX25vbkl0ZXJhYmxlU3ByZWFkKCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2VcIik7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShpdGVyKSB7IGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGl0ZXIpIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpdGVyKSA9PT0gXCJbb2JqZWN0IEFyZ3VtZW50c11cIikgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH0gfVxuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCBwcmVmaXhQcm9wTmFtZSBmcm9tICcuLi8uLi91dGlscy9wcmVmaXgtcHJvcC1uYW1lJztcbmltcG9ydCB1blByZWZpeFByb3BOYW1lIGZyb20gJy4uLy4uL3V0aWxzL3VucHJlZml4LXByb3AtbmFtZSc7XG5pbXBvcnQgY29weVByb3BzIGZyb20gJy4uLy4uL3V0aWxzL2NvcHktcHJvcHMnO1xuaW1wb3J0IHBsdWNrUHJvcHMgZnJvbSAnLi4vLi4vdXRpbHMvcGx1Y2stcHJvcHMnO1xuaW1wb3J0IHsgaGFzTm9ybWFsaXplZFNsb3QsIG5vcm1hbGl6ZVNsb3QgfSBmcm9tICcuLi8uLi91dGlscy9ub3JtYWxpemUtc2xvdCc7XG5pbXBvcnQgY2FyZE1peGluIGZyb20gJy4uLy4uL21peGlucy9jYXJkJztcbmltcG9ydCB7IEJDYXJkQm9keSwgcHJvcHMgYXMgYm9keVByb3BzIH0gZnJvbSAnLi9jYXJkLWJvZHknO1xuaW1wb3J0IHsgQkNhcmRIZWFkZXIsIHByb3BzIGFzIGhlYWRlclByb3BzIH0gZnJvbSAnLi9jYXJkLWhlYWRlcic7XG5pbXBvcnQgeyBCQ2FyZEZvb3RlciwgcHJvcHMgYXMgZm9vdGVyUHJvcHMgfSBmcm9tICcuL2NhcmQtZm9vdGVyJztcbmltcG9ydCB7IEJDYXJkSW1nLCBwcm9wcyBhcyBpbWdQcm9wcyB9IGZyb20gJy4vY2FyZC1pbWcnO1xudmFyIGNhcmRJbWdQcm9wcyA9IGNvcHlQcm9wcyhpbWdQcm9wcywgcHJlZml4UHJvcE5hbWUuYmluZChudWxsLCAnaW1nJykpO1xuY2FyZEltZ1Byb3BzLmltZ1NyYy5yZXF1aXJlZCA9IGZhbHNlO1xuZXhwb3J0IHZhciBwcm9wcyA9IF9vYmplY3RTcHJlYWQoe30sIGJvZHlQcm9wcywge30sIGhlYWRlclByb3BzLCB7fSwgZm9vdGVyUHJvcHMsIHt9LCBjYXJkSW1nUHJvcHMsIHt9LCBjb3B5UHJvcHMoY2FyZE1peGluLnByb3BzKSwge1xuICBhbGlnbjoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH0sXG4gIG5vQm9keToge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfVxufSk7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkNhcmQgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCQ2FyZCcsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiBwcm9wcyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBfY2xhc3M7XG5cbiAgICB2YXIgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgICBkYXRhID0gX3JlZi5kYXRhLFxuICAgICAgICBzbG90cyA9IF9yZWYuc2xvdHMsXG4gICAgICAgIHNjb3BlZFNsb3RzID0gX3JlZi5zY29wZWRTbG90cztcbiAgICB2YXIgJHNsb3RzID0gc2xvdHMoKTsgLy8gVnVlIDwgMi42LnggbWF5IHJldHVybiB1bmRlZmluZWQgZm9yIHNjb3BlZFNsb3RzXG5cbiAgICB2YXIgJHNjb3BlZFNsb3RzID0gc2NvcGVkU2xvdHMgfHwge307IC8vIENyZWF0ZSBwbGFjZWhvbGRlciBlbGVtZW50cyBmb3IgZWFjaCBzZWN0aW9uXG5cbiAgICB2YXIgaW1nRmlyc3QgPSBoKCk7XG4gICAgdmFyIGhlYWRlciA9IGgoKTtcbiAgICB2YXIgY29udGVudCA9IGgoKTtcbiAgICB2YXIgZm9vdGVyID0gaCgpO1xuICAgIHZhciBpbWdMYXN0ID0gaCgpO1xuXG4gICAgaWYgKHByb3BzLmltZ1NyYykge1xuICAgICAgdmFyIGltZyA9IGgoQkNhcmRJbWcsIHtcbiAgICAgICAgcHJvcHM6IHBsdWNrUHJvcHMoY2FyZEltZ1Byb3BzLCBwcm9wcywgdW5QcmVmaXhQcm9wTmFtZS5iaW5kKG51bGwsICdpbWcnKSlcbiAgICAgIH0pO1xuXG4gICAgICBpZiAocHJvcHMuaW1nQm90dG9tKSB7XG4gICAgICAgIGltZ0xhc3QgPSBpbWc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbWdGaXJzdCA9IGltZztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvcHMuaGVhZGVyIHx8IGhhc05vcm1hbGl6ZWRTbG90KCdoZWFkZXInLCAkc2NvcGVkU2xvdHMsICRzbG90cykpIHtcbiAgICAgIGhlYWRlciA9IGgoQkNhcmRIZWFkZXIsIHtcbiAgICAgICAgcHJvcHM6IHBsdWNrUHJvcHMoaGVhZGVyUHJvcHMsIHByb3BzKVxuICAgICAgfSwgbm9ybWFsaXplU2xvdCgnaGVhZGVyJywge30sICRzY29wZWRTbG90cywgJHNsb3RzKSk7XG4gICAgfVxuXG4gICAgY29udGVudCA9IG5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnLCB7fSwgJHNjb3BlZFNsb3RzLCAkc2xvdHMpIHx8IFtdO1xuXG4gICAgaWYgKCFwcm9wcy5ub0JvZHkpIHtcbiAgICAgIC8vIFdyYXAgY29udGVudCBpbiBjYXJkLWJvZHlcbiAgICAgIGNvbnRlbnQgPSBbaChCQ2FyZEJvZHksIHtcbiAgICAgICAgcHJvcHM6IHBsdWNrUHJvcHMoYm9keVByb3BzLCBwcm9wcylcbiAgICAgIH0sIF90b0NvbnN1bWFibGVBcnJheShjb250ZW50KSldO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5mb290ZXIgfHwgaGFzTm9ybWFsaXplZFNsb3QoJ2Zvb3RlcicsICRzY29wZWRTbG90cywgJHNsb3RzKSkge1xuICAgICAgZm9vdGVyID0gaChCQ2FyZEZvb3Rlciwge1xuICAgICAgICBwcm9wczogcGx1Y2tQcm9wcyhmb290ZXJQcm9wcywgcHJvcHMpXG4gICAgICB9LCBub3JtYWxpemVTbG90KCdmb290ZXInLCB7fSwgJHNjb3BlZFNsb3RzLCAkc2xvdHMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaChwcm9wcy50YWcsIG1lcmdlRGF0YShkYXRhLCB7XG4gICAgICBzdGF0aWNDbGFzczogJ2NhcmQnLFxuICAgICAgY2xhc3M6IChfY2xhc3MgPSB7XG4gICAgICAgICdmbGV4LXJvdyc6IHByb3BzLmltZ0xlZnQgfHwgcHJvcHMuaW1nU3RhcnQsXG4gICAgICAgICdmbGV4LXJvdy1yZXZlcnNlJzogKHByb3BzLmltZ1JpZ2h0IHx8IHByb3BzLmltZ0VuZCkgJiYgIShwcm9wcy5pbWdMZWZ0IHx8IHByb3BzLmltZ1N0YXJ0KVxuICAgICAgfSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJ0ZXh0LVwiLmNvbmNhdChwcm9wcy5hbGlnbiksIEJvb2xlYW4ocHJvcHMuYWxpZ24pKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJiZy1cIi5jb25jYXQocHJvcHMuYmdWYXJpYW50KSwgQm9vbGVhbihwcm9wcy5iZ1ZhcmlhbnQpKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJib3JkZXItXCIuY29uY2F0KHByb3BzLmJvcmRlclZhcmlhbnQpLCBCb29sZWFuKHByb3BzLmJvcmRlclZhcmlhbnQpKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJ0ZXh0LVwiLmNvbmNhdChwcm9wcy50ZXh0VmFyaWFudCksIEJvb2xlYW4ocHJvcHMudGV4dFZhcmlhbnQpKSwgX2NsYXNzKVxuICAgIH0pLCBbaW1nRmlyc3QsIGhlYWRlcl0uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShjb250ZW50KSwgW2Zvb3RlciwgaW1nTGFzdF0pKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJkL2NhcmQuanNcbi8vIG1vZHVsZSBpZCA9IDExNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///115\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BButtonToolbar; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_key_codes__ = __webpack_require__(19);\n\n\n\n\nvar ITEM_SELECTOR = ['.btn:not(.disabled):not([disabled]):not(.dropdown-item)', '.form-control:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'input[type=\"checkbox\"]:not(.disabled)', 'input[type=\"radio\"]:not(.disabled)'].join(','); // @vue/component\n\nvar BButtonToolbar =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BButtonToolbar',\n mixins: [__WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__[\"a\" /* default */]],\n props: {\n justify: {\n type: Boolean,\n default: false\n },\n keyNav: {\n type: Boolean,\n default: false\n }\n },\n mounted: function mounted() {\n if (this.keyNav) {\n // Pre-set the tabindexes if the markup does not include tabindex=\"-1\" on the toolbar items\n this.getItems();\n }\n },\n methods: {\n onFocusin: function onFocusin(evt) {\n if (evt.target === this.$el) {\n evt.preventDefault();\n evt.stopPropagation();\n this.focusFirst(evt);\n }\n },\n stop: function stop(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n },\n onKeydown: function onKeydown(evt) {\n if (!this.keyNav) {\n /* istanbul ignore next: should never happen */\n return;\n }\n\n var key = evt.keyCode;\n var shift = evt.shiftKey;\n\n if (key === __WEBPACK_IMPORTED_MODULE_3__utils_key_codes__[\"a\" /* default */].UP || key === __WEBPACK_IMPORTED_MODULE_3__utils_key_codes__[\"a\" /* default */].LEFT) {\n this.stop(evt);\n shift ? this.focusFirst(evt) : this.focusPrev(evt);\n } else if (key === __WEBPACK_IMPORTED_MODULE_3__utils_key_codes__[\"a\" /* default */].DOWN || key === __WEBPACK_IMPORTED_MODULE_3__utils_key_codes__[\"a\" /* default */].RIGHT) {\n this.stop(evt);\n shift ? this.focusLast(evt) : this.focusNext(evt);\n }\n },\n setItemFocus: function setItemFocus(item) {\n item && item.focus && item.focus();\n },\n focusFirst: function focusFirst(evt) {\n var items = this.getItems();\n this.setItemFocus(items[0]);\n },\n focusPrev: function focusPrev(evt) {\n var items = this.getItems();\n var index = items.indexOf(evt.target);\n\n if (index > -1) {\n items = items.slice(0, index).reverse();\n this.setItemFocus(items[0]);\n }\n },\n focusNext: function focusNext(evt) {\n var items = this.getItems();\n var index = items.indexOf(evt.target);\n\n if (index > -1) {\n items = items.slice(index + 1);\n this.setItemFocus(items[0]);\n }\n },\n focusLast: function focusLast(evt) {\n var items = this.getItems().reverse();\n this.setItemFocus(items[0]);\n },\n getItems: function getItems() {\n var items = Object(__WEBPACK_IMPORTED_MODULE_1__utils_dom__[\"y\" /* selectAll */])(ITEM_SELECTOR, this.$el);\n items.forEach(function (item) {\n // Ensure tabfocus is -1 on any new elements\n item.tabIndex = -1;\n });\n return items.filter(function (el) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_dom__[\"p\" /* isVisible */])(el);\n });\n }\n },\n render: function render(h) {\n return h('div', {\n staticClass: 'btn-toolbar',\n class: {\n 'justify-content-between': this.justify\n },\n attrs: {\n role: 'toolbar',\n tabindex: this.keyNav ? '0' : null\n },\n on: this.keyNav ? {\n focusin: this.onFocusin,\n keydown: this.onKeydown\n } : {}\n }, [this.normalizeSlot('default')]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9idXR0b24tdG9vbGJhci9idXR0b24tdG9vbGJhci5qcz80NjcyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDcUI7QUFDTTtBQUNoQjtBQUM3QyxrUUFBa1E7O0FBRTNQO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0EsV0FBVyx1RUFBa0I7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGtCQUFrQixpRUFBUSxlQUFlLGlFQUFRO0FBQ2pEO0FBQ0E7QUFDQSxPQUFPLGtCQUFrQixpRUFBUSxpQkFBaUIsaUVBQVE7QUFDMUQ7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0Esa0JBQWtCLHFFQUFTO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLGVBQWUscUVBQVM7QUFDeEIsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjExNS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IGlzVmlzaWJsZSwgc2VsZWN0QWxsIH0gZnJvbSAnLi4vLi4vdXRpbHMvZG9tJztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JztcbmltcG9ydCBLZXlDb2RlcyBmcm9tICcuLi8uLi91dGlscy9rZXktY29kZXMnO1xudmFyIElURU1fU0VMRUNUT1IgPSBbJy5idG46bm90KC5kaXNhYmxlZCk6bm90KFtkaXNhYmxlZF0pOm5vdCguZHJvcGRvd24taXRlbSknLCAnLmZvcm0tY29udHJvbDpub3QoLmRpc2FibGVkKTpub3QoW2Rpc2FibGVkXSknLCAnc2VsZWN0Om5vdCguZGlzYWJsZWQpOm5vdChbZGlzYWJsZWRdKScsICdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl06bm90KC5kaXNhYmxlZCknLCAnaW5wdXRbdHlwZT1cInJhZGlvXCJdOm5vdCguZGlzYWJsZWQpJ10uam9pbignLCcpOyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJCdXR0b25Ub29sYmFyID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQkJ1dHRvblRvb2xiYXInLFxuICBtaXhpbnM6IFtub3JtYWxpemVTbG90TWl4aW5dLFxuICBwcm9wczoge1xuICAgIGp1c3RpZnk6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAga2V5TmF2OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgaWYgKHRoaXMua2V5TmF2KSB7XG4gICAgICAvLyBQcmUtc2V0IHRoZSB0YWJpbmRleGVzIGlmIHRoZSBtYXJrdXAgZG9lcyBub3QgaW5jbHVkZSB0YWJpbmRleD1cIi0xXCIgb24gdGhlIHRvb2xiYXIgaXRlbXNcbiAgICAgIHRoaXMuZ2V0SXRlbXMoKTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBvbkZvY3VzaW46IGZ1bmN0aW9uIG9uRm9jdXNpbihldnQpIHtcbiAgICAgIGlmIChldnQudGFyZ2V0ID09PSB0aGlzLiRlbCkge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmZvY3VzRmlyc3QoZXZ0KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHN0b3A6IGZ1bmN0aW9uIHN0b3AoZXZ0KSB7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9LFxuICAgIG9uS2V5ZG93bjogZnVuY3Rpb24gb25LZXlkb3duKGV2dCkge1xuICAgICAgaWYgKCF0aGlzLmtleU5hdikge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogc2hvdWxkIG5ldmVyIGhhcHBlbiAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBrZXkgPSBldnQua2V5Q29kZTtcbiAgICAgIHZhciBzaGlmdCA9IGV2dC5zaGlmdEtleTtcblxuICAgICAgaWYgKGtleSA9PT0gS2V5Q29kZXMuVVAgfHwga2V5ID09PSBLZXlDb2Rlcy5MRUZUKSB7XG4gICAgICAgIHRoaXMuc3RvcChldnQpO1xuICAgICAgICBzaGlmdCA/IHRoaXMuZm9jdXNGaXJzdChldnQpIDogdGhpcy5mb2N1c1ByZXYoZXZ0KTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBLZXlDb2Rlcy5ET1dOIHx8IGtleSA9PT0gS2V5Q29kZXMuUklHSFQpIHtcbiAgICAgICAgdGhpcy5zdG9wKGV2dCk7XG4gICAgICAgIHNoaWZ0ID8gdGhpcy5mb2N1c0xhc3QoZXZ0KSA6IHRoaXMuZm9jdXNOZXh0KGV2dCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzZXRJdGVtRm9jdXM6IGZ1bmN0aW9uIHNldEl0ZW1Gb2N1cyhpdGVtKSB7XG4gICAgICBpdGVtICYmIGl0ZW0uZm9jdXMgJiYgaXRlbS5mb2N1cygpO1xuICAgIH0sXG4gICAgZm9jdXNGaXJzdDogZnVuY3Rpb24gZm9jdXNGaXJzdChldnQpIHtcbiAgICAgIHZhciBpdGVtcyA9IHRoaXMuZ2V0SXRlbXMoKTtcbiAgICAgIHRoaXMuc2V0SXRlbUZvY3VzKGl0ZW1zWzBdKTtcbiAgICB9LFxuICAgIGZvY3VzUHJldjogZnVuY3Rpb24gZm9jdXNQcmV2KGV2dCkge1xuICAgICAgdmFyIGl0ZW1zID0gdGhpcy5nZXRJdGVtcygpO1xuICAgICAgdmFyIGluZGV4ID0gaXRlbXMuaW5kZXhPZihldnQudGFyZ2V0KTtcblxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgaXRlbXMgPSBpdGVtcy5zbGljZSgwLCBpbmRleCkucmV2ZXJzZSgpO1xuICAgICAgICB0aGlzLnNldEl0ZW1Gb2N1cyhpdGVtc1swXSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBmb2N1c05leHQ6IGZ1bmN0aW9uIGZvY3VzTmV4dChldnQpIHtcbiAgICAgIHZhciBpdGVtcyA9IHRoaXMuZ2V0SXRlbXMoKTtcbiAgICAgIHZhciBpbmRleCA9IGl0ZW1zLmluZGV4T2YoZXZ0LnRhcmdldCk7XG5cbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIGl0ZW1zID0gaXRlbXMuc2xpY2UoaW5kZXggKyAxKTtcbiAgICAgICAgdGhpcy5zZXRJdGVtRm9jdXMoaXRlbXNbMF0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgZm9jdXNMYXN0OiBmdW5jdGlvbiBmb2N1c0xhc3QoZXZ0KSB7XG4gICAgICB2YXIgaXRlbXMgPSB0aGlzLmdldEl0ZW1zKCkucmV2ZXJzZSgpO1xuICAgICAgdGhpcy5zZXRJdGVtRm9jdXMoaXRlbXNbMF0pO1xuICAgIH0sXG4gICAgZ2V0SXRlbXM6IGZ1bmN0aW9uIGdldEl0ZW1zKCkge1xuICAgICAgdmFyIGl0ZW1zID0gc2VsZWN0QWxsKElURU1fU0VMRUNUT1IsIHRoaXMuJGVsKTtcbiAgICAgIGl0ZW1zLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgLy8gRW5zdXJlIHRhYmZvY3VzIGlzIC0xIG9uIGFueSBuZXcgZWxlbWVudHNcbiAgICAgICAgaXRlbS50YWJJbmRleCA9IC0xO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gaXRlbXMuZmlsdGVyKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICByZXR1cm4gaXNWaXNpYmxlKGVsKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHJldHVybiBoKCdkaXYnLCB7XG4gICAgICBzdGF0aWNDbGFzczogJ2J0bi10b29sYmFyJyxcbiAgICAgIGNsYXNzOiB7XG4gICAgICAgICdqdXN0aWZ5LWNvbnRlbnQtYmV0d2Vlbic6IHRoaXMuanVzdGlmeVxuICAgICAgfSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6ICd0b29sYmFyJyxcbiAgICAgICAgdGFiaW5kZXg6IHRoaXMua2V5TmF2ID8gJzAnIDogbnVsbFxuICAgICAgfSxcbiAgICAgIG9uOiB0aGlzLmtleU5hdiA/IHtcbiAgICAgICAgZm9jdXNpbjogdGhpcy5vbkZvY3VzaW4sXG4gICAgICAgIGtleWRvd246IHRoaXMub25LZXlkb3duXG4gICAgICB9IDoge31cbiAgICB9LCBbdGhpcy5ub3JtYWxpemVTbG90KCdkZWZhdWx0JyldKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9idXR0b24tdG9vbGJhci9idXR0b24tdG9vbGJhci5qc1xuLy8gbW9kdWxlIGlkID0gMTE1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///115\n"); /***/ }), /* 116 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BCardImgLazy; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__image_img_lazy__ = __webpack_require__(62);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n // Copy of `<b-img-lazy>` props, and remove conflicting/non-applicable props\n// The `omit()` util creates a new object, so we can just pass the original props\n\nvar lazyProps = Object(__WEBPACK_IMPORTED_MODULE_1__utils_object__[\"k\" /* omit */])(__WEBPACK_IMPORTED_MODULE_3__image_img_lazy__[\"b\" /* props */], ['left', 'right', 'center', 'block', 'rounded', 'thumbnail', 'fluid', 'fluidGrow']);\nvar props = _objectSpread({}, lazyProps, {\n top: {\n type: Boolean,\n default: false\n },\n bottom: {\n type: Boolean,\n default: false\n },\n start: {\n type: Boolean,\n default: false\n },\n left: {\n // alias of 'start'\n type: Boolean,\n default: false\n },\n end: {\n type: Boolean,\n default: false\n },\n right: {\n // alias of 'end'\n type: Boolean,\n default: false\n }\n}); // @vue/component\n\nvar BCardImgLazy =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BCardImgLazy',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n var baseClass = 'card-img';\n\n if (props.top) {\n baseClass += '-top';\n } else if (props.right || props.end) {\n baseClass += '-right';\n } else if (props.bottom) {\n baseClass += '-bottom';\n } else if (props.left || props.start) {\n baseClass += '-left';\n } // False out the left/center/right props before passing to b-img-lazy\n\n\n var lazyProps = _objectSpread({}, props, {\n left: false,\n right: false,\n center: false\n });\n\n return h(__WEBPACK_IMPORTED_MODULE_3__image_img_lazy__[\"a\" /* BImgLazy */], Object(__WEBPACK_IMPORTED_MODULE_2_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n class: [baseClass],\n props: lazyProps\n }));\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJkL2NhcmQtaW1nLWxhenkuanM/OTM3MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ1E7QUFDWTtBQUNjO0FBQ3BFOztBQUVBLGdCQUFnQixtRUFBSSxDQUFDLDhEQUFZO0FBQzFCLDRCQUE0QjtBQUNuQztBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRTs7QUFFSTtBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSzs7O0FBR0wsb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUwsYUFBYSxpRUFBUSxFQUFFLG9GQUFTO0FBQ2hDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjExNi5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhzb3VyY2UsIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IG9taXQgfSBmcm9tICcuLi8uLi91dGlscy9vYmplY3QnO1xuaW1wb3J0IHsgbWVyZ2VEYXRhIH0gZnJvbSAndnVlLWZ1bmN0aW9uYWwtZGF0YS1tZXJnZSc7XG5pbXBvcnQgeyBCSW1nTGF6eSwgcHJvcHMgYXMgaW1nTGF6eVByb3BzIH0gZnJvbSAnLi4vaW1hZ2UvaW1nLWxhenknOyAvLyBDb3B5IG9mIGA8Yi1pbWctbGF6eT5gIHByb3BzLCBhbmQgcmVtb3ZlIGNvbmZsaWN0aW5nL25vbi1hcHBsaWNhYmxlIHByb3BzXG4vLyBUaGUgYG9taXQoKWAgdXRpbCBjcmVhdGVzIGEgbmV3IG9iamVjdCwgc28gd2UgY2FuIGp1c3QgcGFzcyB0aGUgb3JpZ2luYWwgcHJvcHNcblxudmFyIGxhenlQcm9wcyA9IG9taXQoaW1nTGF6eVByb3BzLCBbJ2xlZnQnLCAncmlnaHQnLCAnY2VudGVyJywgJ2Jsb2NrJywgJ3JvdW5kZWQnLCAndGh1bWJuYWlsJywgJ2ZsdWlkJywgJ2ZsdWlkR3JvdyddKTtcbmV4cG9ydCB2YXIgcHJvcHMgPSBfb2JqZWN0U3ByZWFkKHt9LCBsYXp5UHJvcHMsIHtcbiAgdG9wOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBib3R0b206IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIHN0YXJ0OiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBsZWZ0OiB7XG4gICAgLy8gYWxpYXMgb2YgJ3N0YXJ0J1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgZW5kOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICByaWdodDoge1xuICAgIC8vIGFsaWFzIG9mICdlbmQnXG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9XG59KTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCQ2FyZEltZ0xhenkgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCQ2FyZEltZ0xhenknLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogcHJvcHMsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgICBkYXRhID0gX3JlZi5kYXRhO1xuICAgIHZhciBiYXNlQ2xhc3MgPSAnY2FyZC1pbWcnO1xuXG4gICAgaWYgKHByb3BzLnRvcCkge1xuICAgICAgYmFzZUNsYXNzICs9ICctdG9wJztcbiAgICB9IGVsc2UgaWYgKHByb3BzLnJpZ2h0IHx8IHByb3BzLmVuZCkge1xuICAgICAgYmFzZUNsYXNzICs9ICctcmlnaHQnO1xuICAgIH0gZWxzZSBpZiAocHJvcHMuYm90dG9tKSB7XG4gICAgICBiYXNlQ2xhc3MgKz0gJy1ib3R0b20nO1xuICAgIH0gZWxzZSBpZiAocHJvcHMubGVmdCB8fCBwcm9wcy5zdGFydCkge1xuICAgICAgYmFzZUNsYXNzICs9ICctbGVmdCc7XG4gICAgfSAvLyBGYWxzZSBvdXQgdGhlIGxlZnQvY2VudGVyL3JpZ2h0IHByb3BzIGJlZm9yZSBwYXNzaW5nIHRvIGItaW1nLWxhenlcblxuXG4gICAgdmFyIGxhenlQcm9wcyA9IF9vYmplY3RTcHJlYWQoe30sIHByb3BzLCB7XG4gICAgICBsZWZ0OiBmYWxzZSxcbiAgICAgIHJpZ2h0OiBmYWxzZSxcbiAgICAgIGNlbnRlcjogZmFsc2VcbiAgICB9KTtcblxuICAgIHJldHVybiBoKEJJbWdMYXp5LCBtZXJnZURhdGEoZGF0YSwge1xuICAgICAgY2xhc3M6IFtiYXNlQ2xhc3NdLFxuICAgICAgcHJvcHM6IGxhenlQcm9wc1xuICAgIH0pKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJkL2NhcmQtaW1nLWxhenkuanNcbi8vIG1vZHVsZSBpZCA9IDExNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///116\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return CardPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__card__ = __webpack_require__(117);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__card_header__ = __webpack_require__(59);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__card_body__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__card_title__ = __webpack_require__(57);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__card_sub_title__ = __webpack_require__(58);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__card_footer__ = __webpack_require__(60);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__card_img__ = __webpack_require__(61);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__card_img_lazy__ = __webpack_require__(118);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__card_text__ = __webpack_require__(120);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__card_group__ = __webpack_require__(121);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BCard */\n/* unused harmony reexport BCardHeader */\n/* unused harmony reexport BCardBody */\n/* unused harmony reexport BCardTitle */\n/* unused harmony reexport BCardSubTitle */\n/* unused harmony reexport BCardFooter */\n/* unused harmony reexport BCardImg */\n/* unused harmony reexport BCardImgLazy */\n/* unused harmony reexport BCardText */\n/* unused harmony reexport BCardGroup */\n\n\n\n\n\n\n\n\n\n\n\nvar CardPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_10__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BCard: __WEBPACK_IMPORTED_MODULE_0__card__[\"a\" /* BCard */],\n BCardHeader: __WEBPACK_IMPORTED_MODULE_1__card_header__[\"a\" /* BCardHeader */],\n BCardBody: __WEBPACK_IMPORTED_MODULE_2__card_body__[\"a\" /* BCardBody */],\n BCardTitle: __WEBPACK_IMPORTED_MODULE_3__card_title__[\"a\" /* BCardTitle */],\n BCardSubTitle: __WEBPACK_IMPORTED_MODULE_4__card_sub_title__[\"a\" /* BCardSubTitle */],\n BCardFooter: __WEBPACK_IMPORTED_MODULE_5__card_footer__[\"a\" /* BCardFooter */],\n BCardImg: __WEBPACK_IMPORTED_MODULE_6__card_img__[\"a\" /* BCardImg */],\n BCardImgLazy: __WEBPACK_IMPORTED_MODULE_7__card_img_lazy__[\"a\" /* BCardImgLazy */],\n BCardText: __WEBPACK_IMPORTED_MODULE_8__card_text__[\"a\" /* BCardText */],\n BCardGroup: __WEBPACK_IMPORTED_MODULE_9__card_group__[\"a\" /* BCardGroup */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJkL2luZGV4LmpzPzNkOTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBK0I7QUFDYTtBQUNKO0FBQ0U7QUFDTztBQUNMO0FBQ047QUFDUztBQUNQO0FBQ0U7QUFDVTtBQUNwRDtBQUNBO0FBQ0EsOEVBQWE7QUFDYjtBQUNBLFdBQVcsb0RBQUs7QUFDaEIsaUJBQWlCLGlFQUFXO0FBQzVCLGVBQWUsNkRBQVM7QUFDeEIsZ0JBQWdCLCtEQUFVO0FBQzFCLG1CQUFtQixzRUFBYTtBQUNoQyxpQkFBaUIsaUVBQVc7QUFDNUIsY0FBYywyREFBUTtBQUN0QixrQkFBa0Isb0VBQVk7QUFDOUIsZUFBZSw2REFBUztBQUN4QixnQkFBZ0IsK0RBQVU7QUFDMUI7QUFDQSxDQUFDIiwiZmlsZSI6IjExNi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJDYXJkIH0gZnJvbSAnLi9jYXJkJztcbmltcG9ydCB7IEJDYXJkSGVhZGVyIH0gZnJvbSAnLi9jYXJkLWhlYWRlcic7XG5pbXBvcnQgeyBCQ2FyZEJvZHkgfSBmcm9tICcuL2NhcmQtYm9keSc7XG5pbXBvcnQgeyBCQ2FyZFRpdGxlIH0gZnJvbSAnLi9jYXJkLXRpdGxlJztcbmltcG9ydCB7IEJDYXJkU3ViVGl0bGUgfSBmcm9tICcuL2NhcmQtc3ViLXRpdGxlJztcbmltcG9ydCB7IEJDYXJkRm9vdGVyIH0gZnJvbSAnLi9jYXJkLWZvb3Rlcic7XG5pbXBvcnQgeyBCQ2FyZEltZyB9IGZyb20gJy4vY2FyZC1pbWcnO1xuaW1wb3J0IHsgQkNhcmRJbWdMYXp5IH0gZnJvbSAnLi9jYXJkLWltZy1sYXp5JztcbmltcG9ydCB7IEJDYXJkVGV4dCB9IGZyb20gJy4vY2FyZC10ZXh0JztcbmltcG9ydCB7IEJDYXJkR3JvdXAgfSBmcm9tICcuL2NhcmQtZ3JvdXAnO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIENhcmRQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCQ2FyZDogQkNhcmQsXG4gICAgQkNhcmRIZWFkZXI6IEJDYXJkSGVhZGVyLFxuICAgIEJDYXJkQm9keTogQkNhcmRCb2R5LFxuICAgIEJDYXJkVGl0bGU6IEJDYXJkVGl0bGUsXG4gICAgQkNhcmRTdWJUaXRsZTogQkNhcmRTdWJUaXRsZSxcbiAgICBCQ2FyZEZvb3RlcjogQkNhcmRGb290ZXIsXG4gICAgQkNhcmRJbWc6IEJDYXJkSW1nLFxuICAgIEJDYXJkSW1nTGF6eTogQkNhcmRJbWdMYXp5LFxuICAgIEJDYXJkVGV4dDogQkNhcmRUZXh0LFxuICAgIEJDYXJkR3JvdXA6IEJDYXJkR3JvdXBcbiAgfVxufSk7XG5leHBvcnQgeyBDYXJkUGx1Z2luLCBCQ2FyZCwgQkNhcmRIZWFkZXIsIEJDYXJkQm9keSwgQkNhcmRUaXRsZSwgQkNhcmRTdWJUaXRsZSwgQkNhcmRGb290ZXIsIEJDYXJkSW1nLCBCQ2FyZEltZ0xhenksIEJDYXJkVGV4dCwgQkNhcmRHcm91cCB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvY2FyZC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTE2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///116\n"); /***/ }), /* 117 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return VBVisible; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_loose_equal__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_object__ = __webpack_require__(8);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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 _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// v-b-visible\n// Private visibility check directive\n// Based on IntersectionObserver\n//\n// Usage:\n// v-b-visibility.<margin>.<once>=\"<callback>\"\n//\n// Value:\n// <callback>: method to be called when visibility state changes, receives one arg:\n// true: element is visible\n// false: element is not visible\n// null: IntersectionObserver not supported\n//\n// Modifiers:\n// <margin>: a positive decimal value of pixels away from viewport edge\n// before being considered \"visible\". default is 0\n// <once>: keyword 'once', meaning when the element becomes visible and\n// callback is called observation/notification will stop.\n//\n// When used in a render function:\n// export default {\n// directives: { 'b-visible': VBVisible },\n// render(h) {\n// h(\n// 'div',\n// {\n// directives: [\n// { name: 'b-visible', value=this.callback, modifiers: { '123':true, 'once':true } }\n// ]\n// }\n// )\n// }\n\n\n\n\nvar OBSERVER_PROP_NAME = '__bv__visibility_observer';\n\nvar VisibilityObserver =\n/*#__PURE__*/\nfunction () {\n function VisibilityObserver(el, options, vnode) {\n _classCallCheck(this, VisibilityObserver);\n\n this.el = el;\n this.callback = options.callback;\n this.margin = options.margin || 0;\n this.once = options.once || false;\n this.observer = null;\n this.visible = undefined;\n this.doneOnce = false; // Create the observer instance (if possible)\n\n this.createObserver(vnode);\n }\n\n _createClass(VisibilityObserver, [{\n key: \"createObserver\",\n value: function createObserver(vnode) {\n var _this = this;\n\n // Remove any previous observer\n if (this.observer) {\n /* istanbul ignore next */\n this.stop();\n } // Should only be called once and `callback` prop should be a function\n\n\n if (this.doneOnce || !Object(__WEBPACK_IMPORTED_MODULE_2__utils_inspect__[\"f\" /* isFunction */])(this.callback)) {\n /* istanbul ignore next */\n return;\n } // Create the observer instance\n\n\n try {\n // Future: Possibly add in other modifiers for left/right/top/bottom\n // offsets, root element reference, and thresholds\n this.observer = new IntersectionObserver(this.handler.bind(this), {\n // `null` = 'viewport'\n root: null,\n // Pixels away from view port to consider \"visible\"\n rootMargin: this.margin,\n // Intersection ratio of el and root (as a value from 0 to 1)\n threshold: 0\n });\n } catch (_unused) {\n // No IntersectionObserver support, so just stop trying to observe\n this.doneOnce = true;\n this.observer = undefined;\n this.callback(null);\n return;\n } // Start observing in a `$nextTick()` (to allow DOM to complete rendering)\n\n /* istanbul ignore next: IntersectionObserver not supported in JSDOM */\n\n\n vnode.context.$nextTick(function () {\n Object(__WEBPACK_IMPORTED_MODULE_1__utils_dom__[\"w\" /* requestAF */])(function () {\n // Placed in an `if` just in case we were destroyed before\n // this `requestAnimationFrame` runs\n if (_this.observer) {\n _this.observer.observe(_this.el);\n }\n });\n });\n }\n }, {\n key: \"handler\",\n value: function handler(entries)\n /* istanbul ignore next: IntersectionObserver not supported in JSDOM */\n {\n var entry = entries ? entries[0] : {};\n var isIntersecting = Boolean(entry.isIntersecting || entry.intersectionRatio > 0.0);\n\n if (isIntersecting !== this.visible) {\n this.visible = isIntersecting;\n this.callback(isIntersecting);\n\n if (this.once && this.visible) {\n this.doneOnce = true;\n this.stop();\n }\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n var observer = this.observer;\n /* istanbul ignore next */\n\n if (observer && observer.disconnect) {\n observer.disconnect();\n }\n\n this.observer = null;\n }\n }]);\n\n return VisibilityObserver;\n}();\n\nvar destroy = function destroy(el) {\n var observer = el[OBSERVER_PROP_NAME];\n\n if (observer && observer.stop) {\n observer.stop();\n }\n\n delete el[OBSERVER_PROP_NAME];\n};\n\nvar bind = function bind(el, _ref, vnode) {\n var value = _ref.value,\n modifiers = _ref.modifiers;\n // `value` is the callback function\n var options = {\n margin: '0px',\n once: false,\n callback: value\n }; // Parse modifiers\n\n Object(__WEBPACK_IMPORTED_MODULE_3__utils_object__[\"j\" /* keys */])(modifiers).forEach(function (mod) {\n /* istanbul ignore else: Until <b-img-lazy> is switched to use this directive */\n if (/^\\d+$/.test(mod)) {\n options.margin = \"\".concat(mod, \"px\");\n } else if (mod.toLowerCase() === 'once') {\n options.once = true;\n }\n }); // Destroy any previous observer\n\n destroy(el); // Create new observer\n\n el[OBSERVER_PROP_NAME] = new VisibilityObserver(el, options, vnode); // Store the current modifiers on the object (cloned)\n\n el[OBSERVER_PROP_NAME]._prevModifiers = _objectSpread({}, modifiers);\n}; // When the directive options may have been updated (or element)\n\n\nvar componentUpdated = function componentUpdated(el, _ref2, vnode) {\n var value = _ref2.value,\n oldValue = _ref2.oldValue,\n modifiers = _ref2.modifiers;\n\n // Compare value/oldValue and modifiers to see if anything has changed\n // and if so, destroy old observer and create new observer\n\n /* istanbul ignore next */\n if (value !== oldValue || !el[OBSERVER_PROP_NAME] || !Object(__WEBPACK_IMPORTED_MODULE_0__utils_loose_equal__[\"a\" /* default */])(modifiers, el[OBSERVER_PROP_NAME]._prevModifiers)) {\n // Re-bind on element\n bind(el, {\n value: value,\n modifiers: modifiers\n }, vnode);\n }\n}; // When directive un-binds from element\n\n\nvar unbind = function unbind(el) {\n // Remove the observer\n destroy(el);\n}; // Export the directive\n\n\nvar VBVisible = {\n bind: bind,\n componentUpdated: componentUpdated,\n unbind: unbind\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy92aXNpYmxlLmpzP2FjNmQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLCtDQUErQywyQ0FBMkMsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8seUNBQXlDLGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBnQiwyQ0FBMkMsa0JBQWtCLGtDQUFrQyxxRUFBcUUsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEVBQUUsWUFBWTs7QUFFL00saURBQWlELDBDQUEwQywwREFBMEQsRUFBRTs7QUFFdkosMkNBQTJDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQsMkRBQTJELEVBQUU7O0FBRTNULDZEQUE2RCxzRUFBc0UsOERBQThELG9CQUFvQjs7QUFFck47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHlCQUF5QjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxxREFBcUQsMEJBQTBCO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQzhDO0FBQ0w7QUFDSztBQUNQO0FBQ3ZDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCOztBQUUxQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1AsNEJBQTRCLDBFQUFVO0FBQ3RDO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7OztBQUdBO0FBQ0EsUUFBUSxxRUFBUztBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUosRUFBRSxtRUFBSTtBQUNOO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMLGNBQWM7O0FBRWQsc0VBQXNFOztBQUV0RSwwREFBMEQ7QUFDMUQsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHdEQUF3RCwyRUFBVTtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBLEVBQUU7OztBQUdLO0FBQ1A7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTE3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG4vLyB2LWItdmlzaWJsZVxuLy8gUHJpdmF0ZSB2aXNpYmlsaXR5IGNoZWNrIGRpcmVjdGl2ZVxuLy8gQmFzZWQgb24gSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcbi8vXG4vLyBVc2FnZTpcbi8vICB2LWItdmlzaWJpbGl0eS48bWFyZ2luPi48b25jZT49XCI8Y2FsbGJhY2s+XCJcbi8vXG4vLyAgVmFsdWU6XG4vLyAgPGNhbGxiYWNrPjogbWV0aG9kIHRvIGJlIGNhbGxlZCB3aGVuIHZpc2liaWxpdHkgc3RhdGUgY2hhbmdlcywgcmVjZWl2ZXMgb25lIGFyZzpcbi8vICAgICB0cnVlOiAgZWxlbWVudCBpcyB2aXNpYmxlXG4vLyAgICAgZmFsc2U6IGVsZW1lbnQgaXMgbm90IHZpc2libGVcbi8vICAgICBudWxsOiAgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgbm90IHN1cHBvcnRlZFxuLy9cbi8vICBNb2RpZmllcnM6XG4vLyAgICA8bWFyZ2luPjogYSBwb3NpdGl2ZSBkZWNpbWFsIHZhbHVlIG9mIHBpeGVscyBhd2F5IGZyb20gdmlld3BvcnQgZWRnZVxuLy8gICAgICAgICAgICAgIGJlZm9yZSBiZWluZyBjb25zaWRlcmVkIFwidmlzaWJsZVwiLiBkZWZhdWx0IGlzIDBcbi8vICAgIDxvbmNlPjogICBrZXl3b3JkICdvbmNlJywgbWVhbmluZyB3aGVuIHRoZSBlbGVtZW50IGJlY29tZXMgdmlzaWJsZSBhbmRcbi8vICAgICAgICAgICAgICBjYWxsYmFjayBpcyBjYWxsZWQgb2JzZXJ2YXRpb24vbm90aWZpY2F0aW9uIHdpbGwgc3RvcC5cbi8vXG4vLyBXaGVuIHVzZWQgaW4gYSByZW5kZXIgZnVuY3Rpb246XG4vLyBleHBvcnQgZGVmYXVsdCB7XG4vLyAgIGRpcmVjdGl2ZXM6IHsgJ2ItdmlzaWJsZSc6IFZCVmlzaWJsZSB9LFxuLy8gICByZW5kZXIoaCkge1xuLy8gICAgIGgoXG4vLyAgICAgICAnZGl2Jyxcbi8vICAgICAgIHtcbi8vICAgICAgICAgZGlyZWN0aXZlczogW1xuLy8gICAgICAgICAgIHsgbmFtZTogJ2ItdmlzaWJsZScsIHZhbHVlPXRoaXMuY2FsbGJhY2ssIG1vZGlmaWVyczogeyAnMTIzJzp0cnVlLCAnb25jZSc6dHJ1ZSB9IH1cbi8vICAgICAgICAgXVxuLy8gICAgICAgfVxuLy8gICAgIClcbi8vICAgfVxuaW1wb3J0IGxvb3NlRXF1YWwgZnJvbSAnLi4vdXRpbHMvbG9vc2UtZXF1YWwnO1xuaW1wb3J0IHsgcmVxdWVzdEFGIH0gZnJvbSAnLi4vdXRpbHMvZG9tJztcbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICcuLi91dGlscy9pbnNwZWN0JztcbmltcG9ydCB7IGtleXMgfSBmcm9tICcuLi91dGlscy9vYmplY3QnO1xudmFyIE9CU0VSVkVSX1BST1BfTkFNRSA9ICdfX2J2X192aXNpYmlsaXR5X29ic2VydmVyJztcblxudmFyIFZpc2liaWxpdHlPYnNlcnZlciA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFZpc2liaWxpdHlPYnNlcnZlcihlbCwgb3B0aW9ucywgdm5vZGUpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVmlzaWJpbGl0eU9ic2VydmVyKTtcblxuICAgIHRoaXMuZWwgPSBlbDtcbiAgICB0aGlzLmNhbGxiYWNrID0gb3B0aW9ucy5jYWxsYmFjaztcbiAgICB0aGlzLm1hcmdpbiA9IG9wdGlvbnMubWFyZ2luIHx8IDA7XG4gICAgdGhpcy5vbmNlID0gb3B0aW9ucy5vbmNlIHx8IGZhbHNlO1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBudWxsO1xuICAgIHRoaXMudmlzaWJsZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmRvbmVPbmNlID0gZmFsc2U7IC8vIENyZWF0ZSB0aGUgb2JzZXJ2ZXIgaW5zdGFuY2UgKGlmIHBvc3NpYmxlKVxuXG4gICAgdGhpcy5jcmVhdGVPYnNlcnZlcih2bm9kZSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVmlzaWJpbGl0eU9ic2VydmVyLCBbe1xuICAgIGtleTogXCJjcmVhdGVPYnNlcnZlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVPYnNlcnZlcih2bm9kZSkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgLy8gUmVtb3ZlIGFueSBwcmV2aW91cyBvYnNlcnZlclxuICAgICAgaWYgKHRoaXMub2JzZXJ2ZXIpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgdGhpcy5zdG9wKCk7XG4gICAgICB9IC8vIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlIGFuZCBgY2FsbGJhY2tgIHByb3Agc2hvdWxkIGJlIGEgZnVuY3Rpb25cblxuXG4gICAgICBpZiAodGhpcy5kb25lT25jZSB8fCAhaXNGdW5jdGlvbih0aGlzLmNhbGxiYWNrKSkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIENyZWF0ZSB0aGUgb2JzZXJ2ZXIgaW5zdGFuY2VcblxuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBGdXR1cmU6IFBvc3NpYmx5IGFkZCBpbiBvdGhlciBtb2RpZmllcnMgZm9yIGxlZnQvcmlnaHQvdG9wL2JvdHRvbVxuICAgICAgICAvLyBvZmZzZXRzLCByb290IGVsZW1lbnQgcmVmZXJlbmNlLCBhbmQgdGhyZXNob2xkc1xuICAgICAgICB0aGlzLm9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKHRoaXMuaGFuZGxlci5iaW5kKHRoaXMpLCB7XG4gICAgICAgICAgLy8gYG51bGxgID0gJ3ZpZXdwb3J0J1xuICAgICAgICAgIHJvb3Q6IG51bGwsXG4gICAgICAgICAgLy8gUGl4ZWxzIGF3YXkgZnJvbSB2aWV3IHBvcnQgdG8gY29uc2lkZXIgXCJ2aXNpYmxlXCJcbiAgICAgICAgICByb290TWFyZ2luOiB0aGlzLm1hcmdpbixcbiAgICAgICAgICAvLyBJbnRlcnNlY3Rpb24gcmF0aW8gb2YgZWwgYW5kIHJvb3QgKGFzIGEgdmFsdWUgZnJvbSAwIHRvIDEpXG4gICAgICAgICAgdGhyZXNob2xkOiAwXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoX3VudXNlZCkge1xuICAgICAgICAvLyBObyBJbnRlcnNlY3Rpb25PYnNlcnZlciBzdXBwb3J0LCBzbyBqdXN0IHN0b3AgdHJ5aW5nIHRvIG9ic2VydmVcbiAgICAgICAgdGhpcy5kb25lT25jZSA9IHRydWU7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY2FsbGJhY2sobnVsbCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gU3RhcnQgb2JzZXJ2aW5nIGluIGEgYCRuZXh0VGljaygpYCAodG8gYWxsb3cgRE9NIHRvIGNvbXBsZXRlIHJlbmRlcmluZylcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IEludGVyc2VjdGlvbk9ic2VydmVyIG5vdCBzdXBwb3J0ZWQgaW4gSlNET00gKi9cblxuXG4gICAgICB2bm9kZS5jb250ZXh0LiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJlcXVlc3RBRihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgLy8gUGxhY2VkIGluIGFuIGBpZmAganVzdCBpbiBjYXNlIHdlIHdlcmUgZGVzdHJveWVkIGJlZm9yZVxuICAgICAgICAgIC8vIHRoaXMgYHJlcXVlc3RBbmltYXRpb25GcmFtZWAgcnVuc1xuICAgICAgICAgIGlmIChfdGhpcy5vYnNlcnZlcikge1xuICAgICAgICAgICAgX3RoaXMub2JzZXJ2ZXIub2JzZXJ2ZShfdGhpcy5lbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYW5kbGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZXIoZW50cmllcylcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgbm90IHN1cHBvcnRlZCBpbiBKU0RPTSAqL1xuICAgIHtcbiAgICAgIHZhciBlbnRyeSA9IGVudHJpZXMgPyBlbnRyaWVzWzBdIDoge307XG4gICAgICB2YXIgaXNJbnRlcnNlY3RpbmcgPSBCb29sZWFuKGVudHJ5LmlzSW50ZXJzZWN0aW5nIHx8IGVudHJ5LmludGVyc2VjdGlvblJhdGlvID4gMC4wKTtcblxuICAgICAgaWYgKGlzSW50ZXJzZWN0aW5nICE9PSB0aGlzLnZpc2libGUpIHtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gaXNJbnRlcnNlY3Rpbmc7XG4gICAgICAgIHRoaXMuY2FsbGJhY2soaXNJbnRlcnNlY3RpbmcpO1xuXG4gICAgICAgIGlmICh0aGlzLm9uY2UgJiYgdGhpcy52aXNpYmxlKSB7XG4gICAgICAgICAgdGhpcy5kb25lT25jZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5zdG9wKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RvcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdG9wKCkge1xuICAgICAgdmFyIG9ic2VydmVyID0gdGhpcy5vYnNlcnZlcjtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cbiAgICAgIGlmIChvYnNlcnZlciAmJiBvYnNlcnZlci5kaXNjb25uZWN0KSB7XG4gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5vYnNlcnZlciA9IG51bGw7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFZpc2liaWxpdHlPYnNlcnZlcjtcbn0oKTtcblxudmFyIGRlc3Ryb3kgPSBmdW5jdGlvbiBkZXN0cm95KGVsKSB7XG4gIHZhciBvYnNlcnZlciA9IGVsW09CU0VSVkVSX1BST1BfTkFNRV07XG5cbiAgaWYgKG9ic2VydmVyICYmIG9ic2VydmVyLnN0b3ApIHtcbiAgICBvYnNlcnZlci5zdG9wKCk7XG4gIH1cblxuICBkZWxldGUgZWxbT0JTRVJWRVJfUFJPUF9OQU1FXTtcbn07XG5cbnZhciBiaW5kID0gZnVuY3Rpb24gYmluZChlbCwgX3JlZiwgdm5vZGUpIHtcbiAgdmFyIHZhbHVlID0gX3JlZi52YWx1ZSxcbiAgICAgIG1vZGlmaWVycyA9IF9yZWYubW9kaWZpZXJzO1xuICAvLyBgdmFsdWVgIGlzIHRoZSBjYWxsYmFjayBmdW5jdGlvblxuICB2YXIgb3B0aW9ucyA9IHtcbiAgICBtYXJnaW46ICcwcHgnLFxuICAgIG9uY2U6IGZhbHNlLFxuICAgIGNhbGxiYWNrOiB2YWx1ZVxuICB9OyAvLyBQYXJzZSBtb2RpZmllcnNcblxuICBrZXlzKG1vZGlmaWVycykuZm9yRWFjaChmdW5jdGlvbiAobW9kKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2U6IFVudGlsIDxiLWltZy1sYXp5PiBpcyBzd2l0Y2hlZCB0byB1c2UgdGhpcyBkaXJlY3RpdmUgKi9cbiAgICBpZiAoL15cXGQrJC8udGVzdChtb2QpKSB7XG4gICAgICBvcHRpb25zLm1hcmdpbiA9IFwiXCIuY29uY2F0KG1vZCwgXCJweFwiKTtcbiAgICB9IGVsc2UgaWYgKG1vZC50b0xvd2VyQ2FzZSgpID09PSAnb25jZScpIHtcbiAgICAgIG9wdGlvbnMub25jZSA9IHRydWU7XG4gICAgfVxuICB9KTsgLy8gRGVzdHJveSBhbnkgcHJldmlvdXMgb2JzZXJ2ZXJcblxuICBkZXN0cm95KGVsKTsgLy8gQ3JlYXRlIG5ldyBvYnNlcnZlclxuXG4gIGVsW09CU0VSVkVSX1BST1BfTkFNRV0gPSBuZXcgVmlzaWJpbGl0eU9ic2VydmVyKGVsLCBvcHRpb25zLCB2bm9kZSk7IC8vIFN0b3JlIHRoZSBjdXJyZW50IG1vZGlmaWVycyBvbiB0aGUgb2JqZWN0IChjbG9uZWQpXG5cbiAgZWxbT0JTRVJWRVJfUFJPUF9OQU1FXS5fcHJldk1vZGlmaWVycyA9IF9vYmplY3RTcHJlYWQoe30sIG1vZGlmaWVycyk7XG59OyAvLyBXaGVuIHRoZSBkaXJlY3RpdmUgb3B0aW9ucyBtYXkgaGF2ZSBiZWVuIHVwZGF0ZWQgKG9yIGVsZW1lbnQpXG5cblxudmFyIGNvbXBvbmVudFVwZGF0ZWQgPSBmdW5jdGlvbiBjb21wb25lbnRVcGRhdGVkKGVsLCBfcmVmMiwgdm5vZGUpIHtcbiAgdmFyIHZhbHVlID0gX3JlZjIudmFsdWUsXG4gICAgICBvbGRWYWx1ZSA9IF9yZWYyLm9sZFZhbHVlLFxuICAgICAgbW9kaWZpZXJzID0gX3JlZjIubW9kaWZpZXJzO1xuXG4gIC8vIENvbXBhcmUgdmFsdWUvb2xkVmFsdWUgYW5kIG1vZGlmaWVycyB0byBzZWUgaWYgYW55dGhpbmcgaGFzIGNoYW5nZWRcbiAgLy8gYW5kIGlmIHNvLCBkZXN0cm95IG9sZCBvYnNlcnZlciBhbmQgY3JlYXRlIG5ldyBvYnNlcnZlclxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICh2YWx1ZSAhPT0gb2xkVmFsdWUgfHwgIWVsW09CU0VSVkVSX1BST1BfTkFNRV0gfHwgIWxvb3NlRXF1YWwobW9kaWZpZXJzLCBlbFtPQlNFUlZFUl9QUk9QX05BTUVdLl9wcmV2TW9kaWZpZXJzKSkge1xuICAgIC8vIFJlLWJpbmQgb24gZWxlbWVudFxuICAgIGJpbmQoZWwsIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIG1vZGlmaWVyczogbW9kaWZpZXJzXG4gICAgfSwgdm5vZGUpO1xuICB9XG59OyAvLyBXaGVuIGRpcmVjdGl2ZSB1bi1iaW5kcyBmcm9tIGVsZW1lbnRcblxuXG52YXIgdW5iaW5kID0gZnVuY3Rpb24gdW5iaW5kKGVsKSB7XG4gIC8vIFJlbW92ZSB0aGUgb2JzZXJ2ZXJcbiAgZGVzdHJveShlbCk7XG59OyAvLyBFeHBvcnQgdGhlIGRpcmVjdGl2ZVxuXG5cbmV4cG9ydCB2YXIgVkJWaXNpYmxlID0ge1xuICBiaW5kOiBiaW5kLFxuICBjb21wb25lbnRVcGRhdGVkOiBjb21wb25lbnRVcGRhdGVkLFxuICB1bmJpbmQ6IHVuYmluZFxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9kaXJlY3RpdmVzL3Zpc2libGUuanNcbi8vIG1vZHVsZSBpZCA9IDExN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///117\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BCard; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_prefix_prop_name__ = __webpack_require__(35);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_unprefix_prop_name__ = __webpack_require__(249);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_copy_props__ = __webpack_require__(36);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_pluck_props__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_normalize_slot__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__mixins_card__ = __webpack_require__(37);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__card_body__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__card_header__ = __webpack_require__(59);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__card_footer__ = __webpack_require__(60);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__card_img__ = __webpack_require__(61);\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 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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n\n\n\n\n\nvar cardImgProps = Object(__WEBPACK_IMPORTED_MODULE_4__utils_copy_props__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_11__card_img__[\"b\" /* props */], __WEBPACK_IMPORTED_MODULE_2__utils_prefix_prop_name__[\"a\" /* default */].bind(null, 'img'));\ncardImgProps.imgSrc.required = false;\nvar props = _objectSpread({}, __WEBPACK_IMPORTED_MODULE_8__card_body__[\"b\" /* props */], {}, __WEBPACK_IMPORTED_MODULE_9__card_header__[\"b\" /* props */], {}, __WEBPACK_IMPORTED_MODULE_10__card_footer__[\"b\" /* props */], {}, cardImgProps, {}, Object(__WEBPACK_IMPORTED_MODULE_4__utils_copy_props__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_7__mixins_card__[\"a\" /* default */].props), {\n align: {\n type: String,\n default: null\n },\n noBody: {\n type: Boolean,\n default: false\n }\n}); // @vue/component\n\nvar BCard =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BCard',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots(); // Vue < 2.6.x may return undefined for scopedSlots\n\n var $scopedSlots = scopedSlots || {}; // Create placeholder elements for each section\n\n var imgFirst = h();\n var header = h();\n var content = h();\n var footer = h();\n var imgLast = h();\n\n if (props.imgSrc) {\n var img = h(__WEBPACK_IMPORTED_MODULE_11__card_img__[\"a\" /* BCardImg */], {\n props: Object(__WEBPACK_IMPORTED_MODULE_5__utils_pluck_props__[\"a\" /* default */])(cardImgProps, props, __WEBPACK_IMPORTED_MODULE_3__utils_unprefix_prop_name__[\"a\" /* default */].bind(null, 'img'))\n });\n\n if (props.imgBottom) {\n imgLast = img;\n } else {\n imgFirst = img;\n }\n }\n\n if (props.header || Object(__WEBPACK_IMPORTED_MODULE_6__utils_normalize_slot__[\"a\" /* hasNormalizedSlot */])('header', $scopedSlots, $slots)) {\n header = h(__WEBPACK_IMPORTED_MODULE_9__card_header__[\"a\" /* BCardHeader */], {\n props: Object(__WEBPACK_IMPORTED_MODULE_5__utils_pluck_props__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_9__card_header__[\"b\" /* props */], props)\n }, Object(__WEBPACK_IMPORTED_MODULE_6__utils_normalize_slot__[\"b\" /* normalizeSlot */])('header', {}, $scopedSlots, $slots));\n }\n\n content = Object(__WEBPACK_IMPORTED_MODULE_6__utils_normalize_slot__[\"b\" /* normalizeSlot */])('default', {}, $scopedSlots, $slots) || [];\n\n if (!props.noBody) {\n // Wrap content in card-body\n content = [h(__WEBPACK_IMPORTED_MODULE_8__card_body__[\"a\" /* BCardBody */], {\n props: Object(__WEBPACK_IMPORTED_MODULE_5__utils_pluck_props__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_8__card_body__[\"b\" /* props */], props)\n }, _toConsumableArray(content))];\n }\n\n if (props.footer || Object(__WEBPACK_IMPORTED_MODULE_6__utils_normalize_slot__[\"a\" /* hasNormalizedSlot */])('footer', $scopedSlots, $slots)) {\n footer = h(__WEBPACK_IMPORTED_MODULE_10__card_footer__[\"a\" /* BCardFooter */], {\n props: Object(__WEBPACK_IMPORTED_MODULE_5__utils_pluck_props__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_10__card_footer__[\"b\" /* props */], props)\n }, Object(__WEBPACK_IMPORTED_MODULE_6__utils_normalize_slot__[\"b\" /* normalizeSlot */])('footer', {}, $scopedSlots, $slots));\n }\n\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'card',\n class: (_class = {\n 'flex-row': props.imgLeft || props.imgStart,\n 'flex-row-reverse': (props.imgRight || props.imgEnd) && !(props.imgLeft || props.imgStart)\n }, _defineProperty(_class, \"text-\".concat(props.align), Boolean(props.align)), _defineProperty(_class, \"bg-\".concat(props.bgVariant), Boolean(props.bgVariant)), _defineProperty(_class, \"border-\".concat(props.borderVariant), Boolean(props.borderVariant)), _defineProperty(_class, \"text-\".concat(props.textVariant), Boolean(props.textVariant)), _class)\n }), [imgFirst, header].concat(_toConsumableArray(content), [footer, imgLast]));\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJkL2NhcmQuanM/OGUzMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsa0NBQWtDLGlGQUFpRjs7QUFFbkgsK0JBQStCLHdFQUF3RTs7QUFFdkcsaUNBQWlDLCtIQUErSDs7QUFFaEssa0NBQWtDLDBCQUEwQiw4Q0FBOEMsZ0JBQWdCLE9BQU8sa0JBQWtCLEVBQUUsYUFBYSxFQUFFOztBQUVwSywwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ29CO0FBQ0k7QUFDSTtBQUNmO0FBQ0U7QUFDNkI7QUFDcEM7QUFDa0I7QUFDTTtBQUNBO0FBQ1Q7QUFDekQsbUJBQW1CLDBFQUFTLENBQUMseURBQVEsRUFBRSx3RUFBYztBQUNyRDtBQUNPLDRCQUE0QixFQUFFLHlEQUFTLElBQUksRUFBRSwyREFBVyxJQUFJLEVBQUUsNERBQVcsSUFBSSxrQkFBa0IsRUFBRSwwRUFBUyxDQUFDLDZEQUFTO0FBQzNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRTs7QUFFSTtBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCOztBQUV6Qix5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IsNERBQVE7QUFDMUIsZUFBZSwyRUFBVSxzQkFBc0IsMEVBQWdCO0FBQy9ELE9BQU87O0FBRVA7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUEsd0JBQXdCLHdGQUFpQjtBQUN6QyxpQkFBaUIsaUVBQVc7QUFDNUIsZUFBZSwyRUFBVSxDQUFDLDJEQUFXO0FBQ3JDLE9BQU8sRUFBRSxvRkFBYSxhQUFhO0FBQ25DOztBQUVBLGNBQWMsb0ZBQWEsY0FBYzs7QUFFekM7QUFDQTtBQUNBLG1CQUFtQiw2REFBUztBQUM1QixlQUFlLDJFQUFVLENBQUMseURBQVM7QUFDbkMsT0FBTztBQUNQOztBQUVBLHdCQUF3Qix3RkFBaUI7QUFDekMsaUJBQWlCLGtFQUFXO0FBQzVCLGVBQWUsMkVBQVUsQ0FBQyw0REFBVztBQUNyQyxPQUFPLEVBQUUsb0ZBQWEsYUFBYTtBQUNuQzs7QUFFQSx3QkFBd0Isb0ZBQVM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMTcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IHJldHVybiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5KGFycikgfHwgX25vbkl0ZXJhYmxlU3ByZWFkKCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2VcIik7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShpdGVyKSB7IGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGl0ZXIpIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpdGVyKSA9PT0gXCJbb2JqZWN0IEFyZ3VtZW50c11cIikgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH0gfVxuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCBwcmVmaXhQcm9wTmFtZSBmcm9tICcuLi8uLi91dGlscy9wcmVmaXgtcHJvcC1uYW1lJztcbmltcG9ydCB1blByZWZpeFByb3BOYW1lIGZyb20gJy4uLy4uL3V0aWxzL3VucHJlZml4LXByb3AtbmFtZSc7XG5pbXBvcnQgY29weVByb3BzIGZyb20gJy4uLy4uL3V0aWxzL2NvcHktcHJvcHMnO1xuaW1wb3J0IHBsdWNrUHJvcHMgZnJvbSAnLi4vLi4vdXRpbHMvcGx1Y2stcHJvcHMnO1xuaW1wb3J0IHsgaGFzTm9ybWFsaXplZFNsb3QsIG5vcm1hbGl6ZVNsb3QgfSBmcm9tICcuLi8uLi91dGlscy9ub3JtYWxpemUtc2xvdCc7XG5pbXBvcnQgY2FyZE1peGluIGZyb20gJy4uLy4uL21peGlucy9jYXJkJztcbmltcG9ydCB7IEJDYXJkQm9keSwgcHJvcHMgYXMgYm9keVByb3BzIH0gZnJvbSAnLi9jYXJkLWJvZHknO1xuaW1wb3J0IHsgQkNhcmRIZWFkZXIsIHByb3BzIGFzIGhlYWRlclByb3BzIH0gZnJvbSAnLi9jYXJkLWhlYWRlcic7XG5pbXBvcnQgeyBCQ2FyZEZvb3RlciwgcHJvcHMgYXMgZm9vdGVyUHJvcHMgfSBmcm9tICcuL2NhcmQtZm9vdGVyJztcbmltcG9ydCB7IEJDYXJkSW1nLCBwcm9wcyBhcyBpbWdQcm9wcyB9IGZyb20gJy4vY2FyZC1pbWcnO1xudmFyIGNhcmRJbWdQcm9wcyA9IGNvcHlQcm9wcyhpbWdQcm9wcywgcHJlZml4UHJvcE5hbWUuYmluZChudWxsLCAnaW1nJykpO1xuY2FyZEltZ1Byb3BzLmltZ1NyYy5yZXF1aXJlZCA9IGZhbHNlO1xuZXhwb3J0IHZhciBwcm9wcyA9IF9vYmplY3RTcHJlYWQoe30sIGJvZHlQcm9wcywge30sIGhlYWRlclByb3BzLCB7fSwgZm9vdGVyUHJvcHMsIHt9LCBjYXJkSW1nUHJvcHMsIHt9LCBjb3B5UHJvcHMoY2FyZE1peGluLnByb3BzKSwge1xuICBhbGlnbjoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH0sXG4gIG5vQm9keToge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfVxufSk7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkNhcmQgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCQ2FyZCcsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiBwcm9wcyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBfY2xhc3M7XG5cbiAgICB2YXIgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgICBkYXRhID0gX3JlZi5kYXRhLFxuICAgICAgICBzbG90cyA9IF9yZWYuc2xvdHMsXG4gICAgICAgIHNjb3BlZFNsb3RzID0gX3JlZi5zY29wZWRTbG90cztcbiAgICB2YXIgJHNsb3RzID0gc2xvdHMoKTsgLy8gVnVlIDwgMi42LnggbWF5IHJldHVybiB1bmRlZmluZWQgZm9yIHNjb3BlZFNsb3RzXG5cbiAgICB2YXIgJHNjb3BlZFNsb3RzID0gc2NvcGVkU2xvdHMgfHwge307IC8vIENyZWF0ZSBwbGFjZWhvbGRlciBlbGVtZW50cyBmb3IgZWFjaCBzZWN0aW9uXG5cbiAgICB2YXIgaW1nRmlyc3QgPSBoKCk7XG4gICAgdmFyIGhlYWRlciA9IGgoKTtcbiAgICB2YXIgY29udGVudCA9IGgoKTtcbiAgICB2YXIgZm9vdGVyID0gaCgpO1xuICAgIHZhciBpbWdMYXN0ID0gaCgpO1xuXG4gICAgaWYgKHByb3BzLmltZ1NyYykge1xuICAgICAgdmFyIGltZyA9IGgoQkNhcmRJbWcsIHtcbiAgICAgICAgcHJvcHM6IHBsdWNrUHJvcHMoY2FyZEltZ1Byb3BzLCBwcm9wcywgdW5QcmVmaXhQcm9wTmFtZS5iaW5kKG51bGwsICdpbWcnKSlcbiAgICAgIH0pO1xuXG4gICAgICBpZiAocHJvcHMuaW1nQm90dG9tKSB7XG4gICAgICAgIGltZ0xhc3QgPSBpbWc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbWdGaXJzdCA9IGltZztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvcHMuaGVhZGVyIHx8IGhhc05vcm1hbGl6ZWRTbG90KCdoZWFkZXInLCAkc2NvcGVkU2xvdHMsICRzbG90cykpIHtcbiAgICAgIGhlYWRlciA9IGgoQkNhcmRIZWFkZXIsIHtcbiAgICAgICAgcHJvcHM6IHBsdWNrUHJvcHMoaGVhZGVyUHJvcHMsIHByb3BzKVxuICAgICAgfSwgbm9ybWFsaXplU2xvdCgnaGVhZGVyJywge30sICRzY29wZWRTbG90cywgJHNsb3RzKSk7XG4gICAgfVxuXG4gICAgY29udGVudCA9IG5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnLCB7fSwgJHNjb3BlZFNsb3RzLCAkc2xvdHMpIHx8IFtdO1xuXG4gICAgaWYgKCFwcm9wcy5ub0JvZHkpIHtcbiAgICAgIC8vIFdyYXAgY29udGVudCBpbiBjYXJkLWJvZHlcbiAgICAgIGNvbnRlbnQgPSBbaChCQ2FyZEJvZHksIHtcbiAgICAgICAgcHJvcHM6IHBsdWNrUHJvcHMoYm9keVByb3BzLCBwcm9wcylcbiAgICAgIH0sIF90b0NvbnN1bWFibGVBcnJheShjb250ZW50KSldO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5mb290ZXIgfHwgaGFzTm9ybWFsaXplZFNsb3QoJ2Zvb3RlcicsICRzY29wZWRTbG90cywgJHNsb3RzKSkge1xuICAgICAgZm9vdGVyID0gaChCQ2FyZEZvb3Rlciwge1xuICAgICAgICBwcm9wczogcGx1Y2tQcm9wcyhmb290ZXJQcm9wcywgcHJvcHMpXG4gICAgICB9LCBub3JtYWxpemVTbG90KCdmb290ZXInLCB7fSwgJHNjb3BlZFNsb3RzLCAkc2xvdHMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaChwcm9wcy50YWcsIG1lcmdlRGF0YShkYXRhLCB7XG4gICAgICBzdGF0aWNDbGFzczogJ2NhcmQnLFxuICAgICAgY2xhc3M6IChfY2xhc3MgPSB7XG4gICAgICAgICdmbGV4LXJvdyc6IHByb3BzLmltZ0xlZnQgfHwgcHJvcHMuaW1nU3RhcnQsXG4gICAgICAgICdmbGV4LXJvdy1yZXZlcnNlJzogKHByb3BzLmltZ1JpZ2h0IHx8IHByb3BzLmltZ0VuZCkgJiYgIShwcm9wcy5pbWdMZWZ0IHx8IHByb3BzLmltZ1N0YXJ0KVxuICAgICAgfSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJ0ZXh0LVwiLmNvbmNhdChwcm9wcy5hbGlnbiksIEJvb2xlYW4ocHJvcHMuYWxpZ24pKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJiZy1cIi5jb25jYXQocHJvcHMuYmdWYXJpYW50KSwgQm9vbGVhbihwcm9wcy5iZ1ZhcmlhbnQpKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJib3JkZXItXCIuY29uY2F0KHByb3BzLmJvcmRlclZhcmlhbnQpLCBCb29sZWFuKHByb3BzLmJvcmRlclZhcmlhbnQpKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJ0ZXh0LVwiLmNvbmNhdChwcm9wcy50ZXh0VmFyaWFudCksIEJvb2xlYW4ocHJvcHMudGV4dFZhcmlhbnQpKSwgX2NsYXNzKVxuICAgIH0pLCBbaW1nRmlyc3QsIGhlYWRlcl0uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShjb250ZW50KSwgW2Zvb3RlciwgaW1nTGFzdF0pKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJkL2NhcmQuanNcbi8vIG1vZHVsZSBpZCA9IDExN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///117\n"); /***/ }), /* 118 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BCardText; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n\n\nvar props = {\n textTag: {\n type: String,\n default: 'p'\n }\n}; // @vue/component\n\nvar BCardText =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BCardText',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.textTag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'card-text'\n }), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJkL2NhcmQtdGV4dC5qcz9hY2M1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ29CO0FBQy9DO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVLO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLG9GQUFTO0FBQ3JDO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMTguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmV4cG9ydCB2YXIgcHJvcHMgPSB7XG4gIHRleHRUYWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ3AnXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkNhcmRUZXh0ID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQkNhcmRUZXh0JyxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcHJvcHM6IHByb3BzLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBfcmVmKSB7XG4gICAgdmFyIHByb3BzID0gX3JlZi5wcm9wcyxcbiAgICAgICAgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICAgICAgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuO1xuICAgIHJldHVybiBoKHByb3BzLnRleHRUYWcsIG1lcmdlRGF0YShkYXRhLCB7XG4gICAgICBzdGF0aWNDbGFzczogJ2NhcmQtdGV4dCdcbiAgICB9KSwgY2hpbGRyZW4pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2NhcmQvY2FyZC10ZXh0LmpzXG4vLyBtb2R1bGUgaWQgPSAxMThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///118\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BCardImgLazy; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__image_img_lazy__ = __webpack_require__(62);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n // Copy of `<b-img-lazy>` props, and remove conflicting/non-applicable props\n// The `omit()` util creates a new object, so we can just pass the original props\n\nvar lazyProps = Object(__WEBPACK_IMPORTED_MODULE_1__utils_object__[\"k\" /* omit */])(__WEBPACK_IMPORTED_MODULE_3__image_img_lazy__[\"b\" /* props */], ['left', 'right', 'center', 'block', 'rounded', 'thumbnail', 'fluid', 'fluidGrow']);\nvar props = _objectSpread({}, lazyProps, {\n top: {\n type: Boolean,\n default: false\n },\n bottom: {\n type: Boolean,\n default: false\n },\n start: {\n type: Boolean,\n default: false\n },\n left: {\n // alias of 'start'\n type: Boolean,\n default: false\n },\n end: {\n type: Boolean,\n default: false\n },\n right: {\n // alias of 'end'\n type: Boolean,\n default: false\n }\n}); // @vue/component\n\nvar BCardImgLazy =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BCardImgLazy',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n var baseClass = 'card-img';\n\n if (props.top) {\n baseClass += '-top';\n } else if (props.right || props.end) {\n baseClass += '-right';\n } else if (props.bottom) {\n baseClass += '-bottom';\n } else if (props.left || props.start) {\n baseClass += '-left';\n } // False out the left/center/right props before passing to b-img-lazy\n\n\n var lazyProps = _objectSpread({}, props, {\n left: false,\n right: false,\n center: false\n });\n\n return h(__WEBPACK_IMPORTED_MODULE_3__image_img_lazy__[\"a\" /* BImgLazy */], Object(__WEBPACK_IMPORTED_MODULE_2_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n class: [baseClass],\n props: lazyProps\n }));\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJkL2NhcmQtaW1nLWxhenkuanM/OTM3MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ1E7QUFDWTtBQUNjO0FBQ3BFOztBQUVBLGdCQUFnQixtRUFBSSxDQUFDLDhEQUFZO0FBQzFCLDRCQUE0QjtBQUNuQztBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRTs7QUFFSTtBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSzs7O0FBR0wsb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUwsYUFBYSxpRUFBUSxFQUFFLG9GQUFTO0FBQ2hDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjExOC5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhzb3VyY2UsIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IG9taXQgfSBmcm9tICcuLi8uLi91dGlscy9vYmplY3QnO1xuaW1wb3J0IHsgbWVyZ2VEYXRhIH0gZnJvbSAndnVlLWZ1bmN0aW9uYWwtZGF0YS1tZXJnZSc7XG5pbXBvcnQgeyBCSW1nTGF6eSwgcHJvcHMgYXMgaW1nTGF6eVByb3BzIH0gZnJvbSAnLi4vaW1hZ2UvaW1nLWxhenknOyAvLyBDb3B5IG9mIGA8Yi1pbWctbGF6eT5gIHByb3BzLCBhbmQgcmVtb3ZlIGNvbmZsaWN0aW5nL25vbi1hcHBsaWNhYmxlIHByb3BzXG4vLyBUaGUgYG9taXQoKWAgdXRpbCBjcmVhdGVzIGEgbmV3IG9iamVjdCwgc28gd2UgY2FuIGp1c3QgcGFzcyB0aGUgb3JpZ2luYWwgcHJvcHNcblxudmFyIGxhenlQcm9wcyA9IG9taXQoaW1nTGF6eVByb3BzLCBbJ2xlZnQnLCAncmlnaHQnLCAnY2VudGVyJywgJ2Jsb2NrJywgJ3JvdW5kZWQnLCAndGh1bWJuYWlsJywgJ2ZsdWlkJywgJ2ZsdWlkR3JvdyddKTtcbmV4cG9ydCB2YXIgcHJvcHMgPSBfb2JqZWN0U3ByZWFkKHt9LCBsYXp5UHJvcHMsIHtcbiAgdG9wOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBib3R0b206IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIHN0YXJ0OiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBsZWZ0OiB7XG4gICAgLy8gYWxpYXMgb2YgJ3N0YXJ0J1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgZW5kOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICByaWdodDoge1xuICAgIC8vIGFsaWFzIG9mICdlbmQnXG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9XG59KTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCQ2FyZEltZ0xhenkgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCQ2FyZEltZ0xhenknLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogcHJvcHMsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgICBkYXRhID0gX3JlZi5kYXRhO1xuICAgIHZhciBiYXNlQ2xhc3MgPSAnY2FyZC1pbWcnO1xuXG4gICAgaWYgKHByb3BzLnRvcCkge1xuICAgICAgYmFzZUNsYXNzICs9ICctdG9wJztcbiAgICB9IGVsc2UgaWYgKHByb3BzLnJpZ2h0IHx8IHByb3BzLmVuZCkge1xuICAgICAgYmFzZUNsYXNzICs9ICctcmlnaHQnO1xuICAgIH0gZWxzZSBpZiAocHJvcHMuYm90dG9tKSB7XG4gICAgICBiYXNlQ2xhc3MgKz0gJy1ib3R0b20nO1xuICAgIH0gZWxzZSBpZiAocHJvcHMubGVmdCB8fCBwcm9wcy5zdGFydCkge1xuICAgICAgYmFzZUNsYXNzICs9ICctbGVmdCc7XG4gICAgfSAvLyBGYWxzZSBvdXQgdGhlIGxlZnQvY2VudGVyL3JpZ2h0IHByb3BzIGJlZm9yZSBwYXNzaW5nIHRvIGItaW1nLWxhenlcblxuXG4gICAgdmFyIGxhenlQcm9wcyA9IF9vYmplY3RTcHJlYWQoe30sIHByb3BzLCB7XG4gICAgICBsZWZ0OiBmYWxzZSxcbiAgICAgIHJpZ2h0OiBmYWxzZSxcbiAgICAgIGNlbnRlcjogZmFsc2VcbiAgICB9KTtcblxuICAgIHJldHVybiBoKEJJbWdMYXp5LCBtZXJnZURhdGEoZGF0YSwge1xuICAgICAgY2xhc3M6IFtiYXNlQ2xhc3NdLFxuICAgICAgcHJvcHM6IGxhenlQcm9wc1xuICAgIH0pKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJkL2NhcmQtaW1nLWxhenkuanNcbi8vIG1vZHVsZSBpZCA9IDExOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///118\n"); /***/ }), /* 119 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BCardGroup; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n\n\nvar props = {\n tag: {\n type: String,\n default: 'div'\n },\n deck: {\n type: Boolean,\n default: false\n },\n columns: {\n type: Boolean,\n default: false\n }\n}; // @vue/component\n\nvar BCardGroup =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BCardGroup',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var baseClass = 'card-group';\n\n if (props.deck) {\n baseClass = 'card-deck';\n } else if (props.columns) {\n baseClass = 'card-columns';\n }\n\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n class: baseClass\n }), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJkL2NhcmQtZ3JvdXAuanM/ZjE4OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNvQjtBQUMvQztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVLO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLHdCQUF3QixvRkFBUztBQUNqQztBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMTE5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgbWVyZ2VEYXRhIH0gZnJvbSAndnVlLWZ1bmN0aW9uYWwtZGF0YS1tZXJnZSc7XG5leHBvcnQgdmFyIHByb3BzID0ge1xuICB0YWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ2RpdidcbiAgfSxcbiAgZGVjazoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgY29sdW1uczoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfVxufTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCQ2FyZEdyb3VwID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQkNhcmRHcm91cCcsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiBwcm9wcyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgICB2YXIgYmFzZUNsYXNzID0gJ2NhcmQtZ3JvdXAnO1xuXG4gICAgaWYgKHByb3BzLmRlY2spIHtcbiAgICAgIGJhc2VDbGFzcyA9ICdjYXJkLWRlY2snO1xuICAgIH0gZWxzZSBpZiAocHJvcHMuY29sdW1ucykge1xuICAgICAgYmFzZUNsYXNzID0gJ2NhcmQtY29sdW1ucyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGgocHJvcHMudGFnLCBtZXJnZURhdGEoZGF0YSwge1xuICAgICAgY2xhc3M6IGJhc2VDbGFzc1xuICAgIH0pLCBjaGlsZHJlbik7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvY2FyZC9jYXJkLWdyb3VwLmpzXG4vLyBtb2R1bGUgaWQgPSAxMTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///119\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return VBVisible; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_loose_equal__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_object__ = __webpack_require__(8);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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 _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// v-b-visible\n// Private visibility check directive\n// Based on IntersectionObserver\n//\n// Usage:\n// v-b-visibility.<margin>.<once>=\"<callback>\"\n//\n// Value:\n// <callback>: method to be called when visibility state changes, receives one arg:\n// true: element is visible\n// false: element is not visible\n// null: IntersectionObserver not supported\n//\n// Modifiers:\n// <margin>: a positive decimal value of pixels away from viewport edge\n// before being considered \"visible\". default is 0\n// <once>: keyword 'once', meaning when the element becomes visible and\n// callback is called observation/notification will stop.\n//\n// When used in a render function:\n// export default {\n// directives: { 'b-visible': VBVisible },\n// render(h) {\n// h(\n// 'div',\n// {\n// directives: [\n// { name: 'b-visible', value=this.callback, modifiers: { '123':true, 'once':true } }\n// ]\n// }\n// )\n// }\n\n\n\n\nvar OBSERVER_PROP_NAME = '__bv__visibility_observer';\n\nvar VisibilityObserver =\n/*#__PURE__*/\nfunction () {\n function VisibilityObserver(el, options, vnode) {\n _classCallCheck(this, VisibilityObserver);\n\n this.el = el;\n this.callback = options.callback;\n this.margin = options.margin || 0;\n this.once = options.once || false;\n this.observer = null;\n this.visible = undefined;\n this.doneOnce = false; // Create the observer instance (if possible)\n\n this.createObserver(vnode);\n }\n\n _createClass(VisibilityObserver, [{\n key: \"createObserver\",\n value: function createObserver(vnode) {\n var _this = this;\n\n // Remove any previous observer\n if (this.observer) {\n /* istanbul ignore next */\n this.stop();\n } // Should only be called once and `callback` prop should be a function\n\n\n if (this.doneOnce || !Object(__WEBPACK_IMPORTED_MODULE_2__utils_inspect__[\"f\" /* isFunction */])(this.callback)) {\n /* istanbul ignore next */\n return;\n } // Create the observer instance\n\n\n try {\n // Future: Possibly add in other modifiers for left/right/top/bottom\n // offsets, root element reference, and thresholds\n this.observer = new IntersectionObserver(this.handler.bind(this), {\n // `null` = 'viewport'\n root: null,\n // Pixels away from view port to consider \"visible\"\n rootMargin: this.margin,\n // Intersection ratio of el and root (as a value from 0 to 1)\n threshold: 0\n });\n } catch (_unused) {\n // No IntersectionObserver support, so just stop trying to observe\n this.doneOnce = true;\n this.observer = undefined;\n this.callback(null);\n return;\n } // Start observing in a `$nextTick()` (to allow DOM to complete rendering)\n\n /* istanbul ignore next: IntersectionObserver not supported in JSDOM */\n\n\n vnode.context.$nextTick(function () {\n Object(__WEBPACK_IMPORTED_MODULE_1__utils_dom__[\"w\" /* requestAF */])(function () {\n // Placed in an `if` just in case we were destroyed before\n // this `requestAnimationFrame` runs\n if (_this.observer) {\n _this.observer.observe(_this.el);\n }\n });\n });\n }\n }, {\n key: \"handler\",\n value: function handler(entries)\n /* istanbul ignore next: IntersectionObserver not supported in JSDOM */\n {\n var entry = entries ? entries[0] : {};\n var isIntersecting = Boolean(entry.isIntersecting || entry.intersectionRatio > 0.0);\n\n if (isIntersecting !== this.visible) {\n this.visible = isIntersecting;\n this.callback(isIntersecting);\n\n if (this.once && this.visible) {\n this.doneOnce = true;\n this.stop();\n }\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n var observer = this.observer;\n /* istanbul ignore next */\n\n if (observer && observer.disconnect) {\n observer.disconnect();\n }\n\n this.observer = null;\n }\n }]);\n\n return VisibilityObserver;\n}();\n\nvar destroy = function destroy(el) {\n var observer = el[OBSERVER_PROP_NAME];\n\n if (observer && observer.stop) {\n observer.stop();\n }\n\n delete el[OBSERVER_PROP_NAME];\n};\n\nvar bind = function bind(el, _ref, vnode) {\n var value = _ref.value,\n modifiers = _ref.modifiers;\n // `value` is the callback function\n var options = {\n margin: '0px',\n once: false,\n callback: value\n }; // Parse modifiers\n\n Object(__WEBPACK_IMPORTED_MODULE_3__utils_object__[\"j\" /* keys */])(modifiers).forEach(function (mod) {\n /* istanbul ignore else: Until <b-img-lazy> is switched to use this directive */\n if (/^\\d+$/.test(mod)) {\n options.margin = \"\".concat(mod, \"px\");\n } else if (mod.toLowerCase() === 'once') {\n options.once = true;\n }\n }); // Destroy any previous observer\n\n destroy(el); // Create new observer\n\n el[OBSERVER_PROP_NAME] = new VisibilityObserver(el, options, vnode); // Store the current modifiers on the object (cloned)\n\n el[OBSERVER_PROP_NAME]._prevModifiers = _objectSpread({}, modifiers);\n}; // When the directive options may have been updated (or element)\n\n\nvar componentUpdated = function componentUpdated(el, _ref2, vnode) {\n var value = _ref2.value,\n oldValue = _ref2.oldValue,\n modifiers = _ref2.modifiers;\n\n // Compare value/oldValue and modifiers to see if anything has changed\n // and if so, destroy old observer and create new observer\n\n /* istanbul ignore next */\n if (value !== oldValue || !el[OBSERVER_PROP_NAME] || !Object(__WEBPACK_IMPORTED_MODULE_0__utils_loose_equal__[\"a\" /* default */])(modifiers, el[OBSERVER_PROP_NAME]._prevModifiers)) {\n // Re-bind on element\n bind(el, {\n value: value,\n modifiers: modifiers\n }, vnode);\n }\n}; // When directive un-binds from element\n\n\nvar unbind = function unbind(el) {\n // Remove the observer\n destroy(el);\n}; // Export the directive\n\n\nvar VBVisible = {\n bind: bind,\n componentUpdated: componentUpdated,\n unbind: unbind\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy92aXNpYmxlLmpzP2FjNmQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLCtDQUErQywyQ0FBMkMsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8seUNBQXlDLGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBnQiwyQ0FBMkMsa0JBQWtCLGtDQUFrQyxxRUFBcUUsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEVBQUUsWUFBWTs7QUFFL00saURBQWlELDBDQUEwQywwREFBMEQsRUFBRTs7QUFFdkosMkNBQTJDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQsMkRBQTJELEVBQUU7O0FBRTNULDZEQUE2RCxzRUFBc0UsOERBQThELG9CQUFvQjs7QUFFck47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHlCQUF5QjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxxREFBcUQsMEJBQTBCO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQzhDO0FBQ0w7QUFDSztBQUNQO0FBQ3ZDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCOztBQUUxQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1AsNEJBQTRCLDBFQUFVO0FBQ3RDO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7OztBQUdBO0FBQ0EsUUFBUSxxRUFBUztBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUosRUFBRSxtRUFBSTtBQUNOO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMLGNBQWM7O0FBRWQsc0VBQXNFOztBQUV0RSwwREFBMEQ7QUFDMUQsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHdEQUF3RCwyRUFBVTtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBLEVBQUU7OztBQUdLO0FBQ1A7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTE5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG4vLyB2LWItdmlzaWJsZVxuLy8gUHJpdmF0ZSB2aXNpYmlsaXR5IGNoZWNrIGRpcmVjdGl2ZVxuLy8gQmFzZWQgb24gSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcbi8vXG4vLyBVc2FnZTpcbi8vICB2LWItdmlzaWJpbGl0eS48bWFyZ2luPi48b25jZT49XCI8Y2FsbGJhY2s+XCJcbi8vXG4vLyAgVmFsdWU6XG4vLyAgPGNhbGxiYWNrPjogbWV0aG9kIHRvIGJlIGNhbGxlZCB3aGVuIHZpc2liaWxpdHkgc3RhdGUgY2hhbmdlcywgcmVjZWl2ZXMgb25lIGFyZzpcbi8vICAgICB0cnVlOiAgZWxlbWVudCBpcyB2aXNpYmxlXG4vLyAgICAgZmFsc2U6IGVsZW1lbnQgaXMgbm90IHZpc2libGVcbi8vICAgICBudWxsOiAgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgbm90IHN1cHBvcnRlZFxuLy9cbi8vICBNb2RpZmllcnM6XG4vLyAgICA8bWFyZ2luPjogYSBwb3NpdGl2ZSBkZWNpbWFsIHZhbHVlIG9mIHBpeGVscyBhd2F5IGZyb20gdmlld3BvcnQgZWRnZVxuLy8gICAgICAgICAgICAgIGJlZm9yZSBiZWluZyBjb25zaWRlcmVkIFwidmlzaWJsZVwiLiBkZWZhdWx0IGlzIDBcbi8vICAgIDxvbmNlPjogICBrZXl3b3JkICdvbmNlJywgbWVhbmluZyB3aGVuIHRoZSBlbGVtZW50IGJlY29tZXMgdmlzaWJsZSBhbmRcbi8vICAgICAgICAgICAgICBjYWxsYmFjayBpcyBjYWxsZWQgb2JzZXJ2YXRpb24vbm90aWZpY2F0aW9uIHdpbGwgc3RvcC5cbi8vXG4vLyBXaGVuIHVzZWQgaW4gYSByZW5kZXIgZnVuY3Rpb246XG4vLyBleHBvcnQgZGVmYXVsdCB7XG4vLyAgIGRpcmVjdGl2ZXM6IHsgJ2ItdmlzaWJsZSc6IFZCVmlzaWJsZSB9LFxuLy8gICByZW5kZXIoaCkge1xuLy8gICAgIGgoXG4vLyAgICAgICAnZGl2Jyxcbi8vICAgICAgIHtcbi8vICAgICAgICAgZGlyZWN0aXZlczogW1xuLy8gICAgICAgICAgIHsgbmFtZTogJ2ItdmlzaWJsZScsIHZhbHVlPXRoaXMuY2FsbGJhY2ssIG1vZGlmaWVyczogeyAnMTIzJzp0cnVlLCAnb25jZSc6dHJ1ZSB9IH1cbi8vICAgICAgICAgXVxuLy8gICAgICAgfVxuLy8gICAgIClcbi8vICAgfVxuaW1wb3J0IGxvb3NlRXF1YWwgZnJvbSAnLi4vdXRpbHMvbG9vc2UtZXF1YWwnO1xuaW1wb3J0IHsgcmVxdWVzdEFGIH0gZnJvbSAnLi4vdXRpbHMvZG9tJztcbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICcuLi91dGlscy9pbnNwZWN0JztcbmltcG9ydCB7IGtleXMgfSBmcm9tICcuLi91dGlscy9vYmplY3QnO1xudmFyIE9CU0VSVkVSX1BST1BfTkFNRSA9ICdfX2J2X192aXNpYmlsaXR5X29ic2VydmVyJztcblxudmFyIFZpc2liaWxpdHlPYnNlcnZlciA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFZpc2liaWxpdHlPYnNlcnZlcihlbCwgb3B0aW9ucywgdm5vZGUpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVmlzaWJpbGl0eU9ic2VydmVyKTtcblxuICAgIHRoaXMuZWwgPSBlbDtcbiAgICB0aGlzLmNhbGxiYWNrID0gb3B0aW9ucy5jYWxsYmFjaztcbiAgICB0aGlzLm1hcmdpbiA9IG9wdGlvbnMubWFyZ2luIHx8IDA7XG4gICAgdGhpcy5vbmNlID0gb3B0aW9ucy5vbmNlIHx8IGZhbHNlO1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBudWxsO1xuICAgIHRoaXMudmlzaWJsZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmRvbmVPbmNlID0gZmFsc2U7IC8vIENyZWF0ZSB0aGUgb2JzZXJ2ZXIgaW5zdGFuY2UgKGlmIHBvc3NpYmxlKVxuXG4gICAgdGhpcy5jcmVhdGVPYnNlcnZlcih2bm9kZSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVmlzaWJpbGl0eU9ic2VydmVyLCBbe1xuICAgIGtleTogXCJjcmVhdGVPYnNlcnZlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVPYnNlcnZlcih2bm9kZSkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgLy8gUmVtb3ZlIGFueSBwcmV2aW91cyBvYnNlcnZlclxuICAgICAgaWYgKHRoaXMub2JzZXJ2ZXIpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgdGhpcy5zdG9wKCk7XG4gICAgICB9IC8vIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlIGFuZCBgY2FsbGJhY2tgIHByb3Agc2hvdWxkIGJlIGEgZnVuY3Rpb25cblxuXG4gICAgICBpZiAodGhpcy5kb25lT25jZSB8fCAhaXNGdW5jdGlvbih0aGlzLmNhbGxiYWNrKSkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIENyZWF0ZSB0aGUgb2JzZXJ2ZXIgaW5zdGFuY2VcblxuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBGdXR1cmU6IFBvc3NpYmx5IGFkZCBpbiBvdGhlciBtb2RpZmllcnMgZm9yIGxlZnQvcmlnaHQvdG9wL2JvdHRvbVxuICAgICAgICAvLyBvZmZzZXRzLCByb290IGVsZW1lbnQgcmVmZXJlbmNlLCBhbmQgdGhyZXNob2xkc1xuICAgICAgICB0aGlzLm9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKHRoaXMuaGFuZGxlci5iaW5kKHRoaXMpLCB7XG4gICAgICAgICAgLy8gYG51bGxgID0gJ3ZpZXdwb3J0J1xuICAgICAgICAgIHJvb3Q6IG51bGwsXG4gICAgICAgICAgLy8gUGl4ZWxzIGF3YXkgZnJvbSB2aWV3IHBvcnQgdG8gY29uc2lkZXIgXCJ2aXNpYmxlXCJcbiAgICAgICAgICByb290TWFyZ2luOiB0aGlzLm1hcmdpbixcbiAgICAgICAgICAvLyBJbnRlcnNlY3Rpb24gcmF0aW8gb2YgZWwgYW5kIHJvb3QgKGFzIGEgdmFsdWUgZnJvbSAwIHRvIDEpXG4gICAgICAgICAgdGhyZXNob2xkOiAwXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoX3VudXNlZCkge1xuICAgICAgICAvLyBObyBJbnRlcnNlY3Rpb25PYnNlcnZlciBzdXBwb3J0LCBzbyBqdXN0IHN0b3AgdHJ5aW5nIHRvIG9ic2VydmVcbiAgICAgICAgdGhpcy5kb25lT25jZSA9IHRydWU7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY2FsbGJhY2sobnVsbCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gU3RhcnQgb2JzZXJ2aW5nIGluIGEgYCRuZXh0VGljaygpYCAodG8gYWxsb3cgRE9NIHRvIGNvbXBsZXRlIHJlbmRlcmluZylcblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IEludGVyc2VjdGlvbk9ic2VydmVyIG5vdCBzdXBwb3J0ZWQgaW4gSlNET00gKi9cblxuXG4gICAgICB2bm9kZS5jb250ZXh0LiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJlcXVlc3RBRihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgLy8gUGxhY2VkIGluIGFuIGBpZmAganVzdCBpbiBjYXNlIHdlIHdlcmUgZGVzdHJveWVkIGJlZm9yZVxuICAgICAgICAgIC8vIHRoaXMgYHJlcXVlc3RBbmltYXRpb25GcmFtZWAgcnVuc1xuICAgICAgICAgIGlmIChfdGhpcy5vYnNlcnZlcikge1xuICAgICAgICAgICAgX3RoaXMub2JzZXJ2ZXIub2JzZXJ2ZShfdGhpcy5lbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYW5kbGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZXIoZW50cmllcylcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgbm90IHN1cHBvcnRlZCBpbiBKU0RPTSAqL1xuICAgIHtcbiAgICAgIHZhciBlbnRyeSA9IGVudHJpZXMgPyBlbnRyaWVzWzBdIDoge307XG4gICAgICB2YXIgaXNJbnRlcnNlY3RpbmcgPSBCb29sZWFuKGVudHJ5LmlzSW50ZXJzZWN0aW5nIHx8IGVudHJ5LmludGVyc2VjdGlvblJhdGlvID4gMC4wKTtcblxuICAgICAgaWYgKGlzSW50ZXJzZWN0aW5nICE9PSB0aGlzLnZpc2libGUpIHtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gaXNJbnRlcnNlY3Rpbmc7XG4gICAgICAgIHRoaXMuY2FsbGJhY2soaXNJbnRlcnNlY3RpbmcpO1xuXG4gICAgICAgIGlmICh0aGlzLm9uY2UgJiYgdGhpcy52aXNpYmxlKSB7XG4gICAgICAgICAgdGhpcy5kb25lT25jZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5zdG9wKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RvcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdG9wKCkge1xuICAgICAgdmFyIG9ic2VydmVyID0gdGhpcy5vYnNlcnZlcjtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cbiAgICAgIGlmIChvYnNlcnZlciAmJiBvYnNlcnZlci5kaXNjb25uZWN0KSB7XG4gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5vYnNlcnZlciA9IG51bGw7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFZpc2liaWxpdHlPYnNlcnZlcjtcbn0oKTtcblxudmFyIGRlc3Ryb3kgPSBmdW5jdGlvbiBkZXN0cm95KGVsKSB7XG4gIHZhciBvYnNlcnZlciA9IGVsW09CU0VSVkVSX1BST1BfTkFNRV07XG5cbiAgaWYgKG9ic2VydmVyICYmIG9ic2VydmVyLnN0b3ApIHtcbiAgICBvYnNlcnZlci5zdG9wKCk7XG4gIH1cblxuICBkZWxldGUgZWxbT0JTRVJWRVJfUFJPUF9OQU1FXTtcbn07XG5cbnZhciBiaW5kID0gZnVuY3Rpb24gYmluZChlbCwgX3JlZiwgdm5vZGUpIHtcbiAgdmFyIHZhbHVlID0gX3JlZi52YWx1ZSxcbiAgICAgIG1vZGlmaWVycyA9IF9yZWYubW9kaWZpZXJzO1xuICAvLyBgdmFsdWVgIGlzIHRoZSBjYWxsYmFjayBmdW5jdGlvblxuICB2YXIgb3B0aW9ucyA9IHtcbiAgICBtYXJnaW46ICcwcHgnLFxuICAgIG9uY2U6IGZhbHNlLFxuICAgIGNhbGxiYWNrOiB2YWx1ZVxuICB9OyAvLyBQYXJzZSBtb2RpZmllcnNcblxuICBrZXlzKG1vZGlmaWVycykuZm9yRWFjaChmdW5jdGlvbiAobW9kKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2U6IFVudGlsIDxiLWltZy1sYXp5PiBpcyBzd2l0Y2hlZCB0byB1c2UgdGhpcyBkaXJlY3RpdmUgKi9cbiAgICBpZiAoL15cXGQrJC8udGVzdChtb2QpKSB7XG4gICAgICBvcHRpb25zLm1hcmdpbiA9IFwiXCIuY29uY2F0KG1vZCwgXCJweFwiKTtcbiAgICB9IGVsc2UgaWYgKG1vZC50b0xvd2VyQ2FzZSgpID09PSAnb25jZScpIHtcbiAgICAgIG9wdGlvbnMub25jZSA9IHRydWU7XG4gICAgfVxuICB9KTsgLy8gRGVzdHJveSBhbnkgcHJldmlvdXMgb2JzZXJ2ZXJcblxuICBkZXN0cm95KGVsKTsgLy8gQ3JlYXRlIG5ldyBvYnNlcnZlclxuXG4gIGVsW09CU0VSVkVSX1BST1BfTkFNRV0gPSBuZXcgVmlzaWJpbGl0eU9ic2VydmVyKGVsLCBvcHRpb25zLCB2bm9kZSk7IC8vIFN0b3JlIHRoZSBjdXJyZW50IG1vZGlmaWVycyBvbiB0aGUgb2JqZWN0IChjbG9uZWQpXG5cbiAgZWxbT0JTRVJWRVJfUFJPUF9OQU1FXS5fcHJldk1vZGlmaWVycyA9IF9vYmplY3RTcHJlYWQoe30sIG1vZGlmaWVycyk7XG59OyAvLyBXaGVuIHRoZSBkaXJlY3RpdmUgb3B0aW9ucyBtYXkgaGF2ZSBiZWVuIHVwZGF0ZWQgKG9yIGVsZW1lbnQpXG5cblxudmFyIGNvbXBvbmVudFVwZGF0ZWQgPSBmdW5jdGlvbiBjb21wb25lbnRVcGRhdGVkKGVsLCBfcmVmMiwgdm5vZGUpIHtcbiAgdmFyIHZhbHVlID0gX3JlZjIudmFsdWUsXG4gICAgICBvbGRWYWx1ZSA9IF9yZWYyLm9sZFZhbHVlLFxuICAgICAgbW9kaWZpZXJzID0gX3JlZjIubW9kaWZpZXJzO1xuXG4gIC8vIENvbXBhcmUgdmFsdWUvb2xkVmFsdWUgYW5kIG1vZGlmaWVycyB0byBzZWUgaWYgYW55dGhpbmcgaGFzIGNoYW5nZWRcbiAgLy8gYW5kIGlmIHNvLCBkZXN0cm95IG9sZCBvYnNlcnZlciBhbmQgY3JlYXRlIG5ldyBvYnNlcnZlclxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICh2YWx1ZSAhPT0gb2xkVmFsdWUgfHwgIWVsW09CU0VSVkVSX1BST1BfTkFNRV0gfHwgIWxvb3NlRXF1YWwobW9kaWZpZXJzLCBlbFtPQlNFUlZFUl9QUk9QX05BTUVdLl9wcmV2TW9kaWZpZXJzKSkge1xuICAgIC8vIFJlLWJpbmQgb24gZWxlbWVudFxuICAgIGJpbmQoZWwsIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIG1vZGlmaWVyczogbW9kaWZpZXJzXG4gICAgfSwgdm5vZGUpO1xuICB9XG59OyAvLyBXaGVuIGRpcmVjdGl2ZSB1bi1iaW5kcyBmcm9tIGVsZW1lbnRcblxuXG52YXIgdW5iaW5kID0gZnVuY3Rpb24gdW5iaW5kKGVsKSB7XG4gIC8vIFJlbW92ZSB0aGUgb2JzZXJ2ZXJcbiAgZGVzdHJveShlbCk7XG59OyAvLyBFeHBvcnQgdGhlIGRpcmVjdGl2ZVxuXG5cbmV4cG9ydCB2YXIgVkJWaXNpYmxlID0ge1xuICBiaW5kOiBiaW5kLFxuICBjb21wb25lbnRVcGRhdGVkOiBjb21wb25lbnRVcGRhdGVkLFxuICB1bmJpbmQ6IHVuYmluZFxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9kaXJlY3RpdmVzL3Zpc2libGUuanNcbi8vIG1vZHVsZSBpZCA9IDExOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///119\n"); /***/ }), /* 120 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return CarouselPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__carousel__ = __webpack_require__(121);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__carousel_slide__ = __webpack_require__(122);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BCarousel */\n/* unused harmony reexport BCarouselSlide */\n\n\n\nvar CarouselPlugin =\n/*#__PURE*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BCarousel: __WEBPACK_IMPORTED_MODULE_0__carousel__[\"a\" /* BCarousel */],\n BCarouselSlide: __WEBPACK_IMPORTED_MODULE_1__carousel_slide__[\"a\" /* BCarouselSlide */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJvdXNlbC9pbmRleC5qcz81YzZiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF1QztBQUNXO0FBQ0U7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxlQUFlLDREQUFTO0FBQ3hCLG9CQUFvQix1RUFBYztBQUNsQztBQUNBLENBQUMiLCJmaWxlIjoiMTIwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkNhcm91c2VsIH0gZnJvbSAnLi9jYXJvdXNlbCc7XG5pbXBvcnQgeyBCQ2Fyb3VzZWxTbGlkZSB9IGZyb20gJy4vY2Fyb3VzZWwtc2xpZGUnO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIENhcm91c2VsUGx1Z2luID1cbi8qI19fUFVSRSovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJDYXJvdXNlbDogQkNhcm91c2VsLFxuICAgIEJDYXJvdXNlbFNsaWRlOiBCQ2Fyb3VzZWxTbGlkZVxuICB9XG59KTtcbmV4cG9ydCB7IENhcm91c2VsUGx1Z2luLCBCQ2Fyb3VzZWwsIEJDYXJvdXNlbFNsaWRlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJvdXNlbC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTIwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///120\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BCardText; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n\n\nvar props = {\n textTag: {\n type: String,\n default: 'p'\n }\n}; // @vue/component\n\nvar BCardText =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BCardText',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.textTag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'card-text'\n }), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJkL2NhcmQtdGV4dC5qcz9hY2M1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ29CO0FBQy9DO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVLO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLG9GQUFTO0FBQ3JDO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMjAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmV4cG9ydCB2YXIgcHJvcHMgPSB7XG4gIHRleHRUYWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ3AnXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkNhcmRUZXh0ID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQkNhcmRUZXh0JyxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcHJvcHM6IHByb3BzLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBfcmVmKSB7XG4gICAgdmFyIHByb3BzID0gX3JlZi5wcm9wcyxcbiAgICAgICAgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICAgICAgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuO1xuICAgIHJldHVybiBoKHByb3BzLnRleHRUYWcsIG1lcmdlRGF0YShkYXRhLCB7XG4gICAgICBzdGF0aWNDbGFzczogJ2NhcmQtdGV4dCdcbiAgICB9KSwgY2hpbGRyZW4pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2NhcmQvY2FyZC10ZXh0LmpzXG4vLyBtb2R1bGUgaWQgPSAxMjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///120\n"); /***/ }), /* 121 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BCarousel; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_noop__ = __webpack_require__(251);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_observe_dom__ = __webpack_require__(39);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_env__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__mixins_normalize_slot__ = __webpack_require__(5);\n\n\n\n\n\n\n\n\n\n\nvar NAME = 'BCarousel'; // Slide directional classes\n\nvar DIRECTION = {\n next: {\n dirClass: 'carousel-item-left',\n overlayClass: 'carousel-item-next'\n },\n prev: {\n dirClass: 'carousel-item-right',\n overlayClass: 'carousel-item-prev'\n }\n}; // Fallback Transition duration (with a little buffer) in ms\n\nvar TRANS_DURATION = 600 + 50; // Time for mouse compat events to fire after touch\n\nvar TOUCH_EVENT_COMPAT_WAIT = 500; // Number of pixels to consider touch move a swipe\n\nvar SWIPE_THRESHOLD = 40; // PointerEvent pointer types\n\nvar PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n}; // Transition Event names\n\nvar TransitionEndEvents = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'otransitionend oTransitionEnd',\n transition: 'transitionend'\n};\nvar EventOptions = {\n passive: true,\n capture: false\n}; // Return the browser specific transitionEnd event name\n\nvar getTransitionEndEvent = function getTransitionEndEvent(el) {\n for (var name in TransitionEndEvents) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"n\" /* isUndefined */])(el.style[name])) {\n return TransitionEndEvents[name];\n }\n } // Fallback\n\n /* istanbul ignore next */\n\n\n return null;\n}; // @vue/component\n\n\nvar BCarousel =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n mixins: [__WEBPACK_IMPORTED_MODULE_8__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_9__mixins_normalize_slot__[\"a\" /* default */]],\n provide: function provide() {\n return {\n bvCarousel: this\n };\n },\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n labelPrev: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'labelPrev');\n }\n },\n labelNext: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'labelNext');\n }\n },\n labelGotoSlide: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'labelGotoSlide');\n }\n },\n labelIndicators: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'labelIndicators');\n }\n },\n interval: {\n type: Number,\n default: 5000\n },\n indicators: {\n type: Boolean,\n default: false\n },\n controls: {\n type: Boolean,\n default: false\n },\n noAnimation: {\n // Disable slide/fade animation\n type: Boolean,\n default: false\n },\n fade: {\n // Enable cross-fade animation instead of slide animation\n type: Boolean,\n default: false\n },\n noWrap: {\n // Disable wrapping/looping when start/end is reached\n type: Boolean,\n default: false\n },\n noTouch: {\n // Sniffed by carousel-slide\n type: Boolean,\n default: false\n },\n noHoverPause: {\n // Disable pause on hover\n type: Boolean,\n default: false\n },\n imgWidth: {\n // Sniffed by carousel-slide\n type: [Number, String] // default: undefined\n\n },\n imgHeight: {\n // Sniffed by carousel-slide\n type: [Number, String] // default: undefined\n\n },\n background: {\n type: String // default: undefined\n\n },\n value: {\n type: Number,\n default: 0\n }\n },\n data: function data() {\n return {\n index: this.value || 0,\n isSliding: false,\n transitionEndEvent: null,\n slides: [],\n direction: null,\n isPaused: !(parseInt(this.interval, 10) > 0),\n // Touch event handling values\n touchStartX: 0,\n touchDeltaX: 0\n };\n },\n computed: {\n numSlides: function numSlides() {\n return this.slides.length;\n }\n },\n watch: {\n value: function value(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.setSlide(parseInt(newVal, 10) || 0);\n }\n },\n interval: function interval(newVal, oldVal) {\n if (newVal === oldVal) {\n /* istanbul ignore next */\n return;\n }\n\n if (!newVal) {\n // Pausing slide show\n this.pause(false);\n } else {\n // Restarting or Changing interval\n this.pause(true);\n this.start(false);\n }\n },\n isPaused: function isPaused(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.$emit(newVal ? 'paused' : 'unpaused');\n }\n },\n index: function index(to, from) {\n if (to === from || this.isSliding) {\n /* istanbul ignore next */\n return;\n }\n\n this.doSlide(to, from);\n }\n },\n created: function created() {\n // Create private non-reactive props\n this._intervalId = null;\n this._animationTimeout = null;\n this._touchTimeout = null; // Set initial paused state\n\n this.isPaused = !(parseInt(this.interval, 10) > 0);\n },\n mounted: function mounted() {\n // Cache current browser transitionend event name\n this.transitionEndEvent = getTransitionEndEvent(this.$el) || null; // Get all slides\n\n this.updateSlides(); // Observe child changes so we can update slide list\n\n Object(__WEBPACK_IMPORTED_MODULE_3__utils_observe_dom__[\"a\" /* default */])(this.$refs.inner, this.updateSlides.bind(this), {\n subtree: false,\n childList: true,\n attributes: true,\n attributeFilter: ['id']\n });\n },\n beforeDestroy: function beforeDestroy() {\n clearTimeout(this._animationTimeout);\n clearTimeout(this._touchTimeout);\n clearInterval(this._intervalId);\n this._intervalId = null;\n this._animationTimeout = null;\n this._touchTimeout = null;\n },\n methods: {\n // Set slide\n setSlide: function setSlide(slide) {\n var _this = this;\n\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n // Don't animate when page is not visible\n\n /* istanbul ignore if: difficult to test */\n if (__WEBPACK_IMPORTED_MODULE_6__utils_env__[\"j\" /* isBrowser */] && document.visibilityState && document.hidden) {\n return;\n }\n\n var noWrap = this.noWrap;\n var numSlides = this.numSlides; // Make sure we have an integer (you never know!)\n\n slide = Math.floor(slide); // Don't do anything if nothing to slide to\n\n if (numSlides === 0) {\n return;\n } // Don't change slide while transitioning, wait until transition is done\n\n\n if (this.isSliding) {\n // Schedule slide after sliding complete\n this.$once('sliding-end', function () {\n return _this.setSlide(slide, direction);\n });\n return;\n }\n\n this.direction = direction; // Set new slide index\n // Wrap around if necessary (if no-wrap not enabled)\n\n this.index = slide >= numSlides ? noWrap ? numSlides - 1 : 0 : slide < 0 ? noWrap ? 0 : numSlides - 1 : slide; // Ensure the v-model is synched up if no-wrap is enabled\n // and user tried to slide pass either ends\n\n if (noWrap && this.index !== slide && this.index !== this.value) {\n this.$emit('input', this.index);\n }\n },\n // Previous slide\n prev: function prev() {\n this.setSlide(this.index - 1, 'prev');\n },\n // Next slide\n next: function next() {\n this.setSlide(this.index + 1, 'next');\n },\n // Pause auto rotation\n pause: function pause(evt) {\n if (!evt) {\n this.isPaused = true;\n }\n\n if (this._intervalId) {\n clearInterval(this._intervalId);\n this._intervalId = null;\n }\n },\n // Start auto rotate slides\n start: function start(evt) {\n if (!evt) {\n this.isPaused = false;\n }\n /* istanbul ignore next: most likely will never happen, but just in case */\n\n\n if (this._intervalId) {\n clearInterval(this._intervalId);\n this._intervalId = null;\n } // Don't start if no interval, or less than 2 slides\n\n\n if (this.interval && this.numSlides > 1) {\n this._intervalId = setInterval(this.next, Math.max(1000, this.interval));\n }\n },\n // Restart auto rotate slides when focus/hover leaves the carousel\n restart: function restart(evt)\n /* istanbul ignore next: difficult to test */\n {\n if (!this.$el.contains(document.activeElement)) {\n this.start();\n }\n },\n doSlide: function doSlide(to, from) {\n var _this2 = this;\n\n var isCycling = Boolean(this.interval); // Determine sliding direction\n\n var direction = this.calcDirection(this.direction, from, to);\n var overlayClass = direction.overlayClass;\n var dirClass = direction.dirClass; // Determine current and next slides\n\n var currentSlide = this.slides[from];\n var nextSlide = this.slides[to]; // Don't do anything if there aren't any slides to slide to\n\n if (!currentSlide || !nextSlide) {\n /* istanbul ignore next */\n return;\n } // Start animating\n\n\n this.isSliding = true;\n\n if (isCycling) {\n this.pause(false);\n }\n\n this.$emit('sliding-start', to); // Update v-model\n\n this.$emit('input', this.index);\n\n if (this.noAnimation) {\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"b\" /* addClass */])(nextSlide, 'active');\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"v\" /* removeClass */])(currentSlide, 'active');\n this.isSliding = false; // Notify ourselves that we're done sliding (slid)\n\n this.$nextTick(function () {\n return _this2.$emit('sliding-end', to);\n });\n } else {\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"b\" /* addClass */])(nextSlide, overlayClass); // Trigger a reflow of next slide\n\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"t\" /* reflow */])(nextSlide);\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"b\" /* addClass */])(currentSlide, dirClass);\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"b\" /* addClass */])(nextSlide, dirClass); // Transition End handler\n\n var called = false;\n /* istanbul ignore next: difficult to test */\n\n var onceTransEnd = function onceTransEnd(evt) {\n if (called) {\n return;\n }\n\n called = true;\n /* istanbul ignore if: transition events cant be tested in JSDOM */\n\n if (_this2.transitionEndEvent) {\n var events = _this2.transitionEndEvent.split(/\\s+/);\n\n events.forEach(function (evt) {\n return Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"e\" /* eventOff */])(currentSlide, evt, onceTransEnd, EventOptions);\n });\n }\n\n _this2._animationTimeout = null;\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"v\" /* removeClass */])(nextSlide, dirClass);\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"v\" /* removeClass */])(nextSlide, overlayClass);\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"b\" /* addClass */])(nextSlide, 'active');\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"v\" /* removeClass */])(currentSlide, 'active');\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"v\" /* removeClass */])(currentSlide, dirClass);\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"v\" /* removeClass */])(currentSlide, overlayClass);\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"z\" /* setAttr */])(currentSlide, 'aria-current', 'false');\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"z\" /* setAttr */])(nextSlide, 'aria-current', 'true');\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"z\" /* setAttr */])(currentSlide, 'aria-hidden', 'true');\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"z\" /* setAttr */])(nextSlide, 'aria-hidden', 'false');\n _this2.isSliding = false;\n _this2.direction = null; // Notify ourselves that we're done sliding (slid)\n\n _this2.$nextTick(function () {\n return _this2.$emit('sliding-end', to);\n });\n }; // Set up transitionend handler\n\n /* istanbul ignore if: transition events cant be tested in JSDOM */\n\n\n if (this.transitionEndEvent) {\n var events = this.transitionEndEvent.split(/\\s+/);\n events.forEach(function (event) {\n return Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"f\" /* eventOn */])(currentSlide, event, onceTransEnd, EventOptions);\n });\n } // Fallback to setTimeout()\n\n\n this._animationTimeout = setTimeout(onceTransEnd, TRANS_DURATION);\n }\n\n if (isCycling) {\n this.start(false);\n }\n },\n // Update slide list\n updateSlides: function updateSlides() {\n this.pause(true); // Get all slides as DOM elements\n\n this.slides = Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"y\" /* selectAll */])('.carousel-item', this.$refs.inner);\n var numSlides = this.slides.length; // Keep slide number in range\n\n var index = Math.max(0, Math.min(Math.floor(this.index), numSlides - 1));\n this.slides.forEach(function (slide, idx) {\n var n = idx + 1;\n\n if (idx === index) {\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"b\" /* addClass */])(slide, 'active');\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"z\" /* setAttr */])(slide, 'aria-current', 'true');\n } else {\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"v\" /* removeClass */])(slide, 'active');\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"z\" /* setAttr */])(slide, 'aria-current', 'false');\n }\n\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"z\" /* setAttr */])(slide, 'aria-posinset', String(n));\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"z\" /* setAttr */])(slide, 'aria-setsize', String(numSlides));\n }); // Set slide as active\n\n this.setSlide(index);\n this.start(this.isPaused);\n },\n calcDirection: function calcDirection() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var curIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var nextIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n if (!direction) {\n return nextIndex > curIndex ? DIRECTION.next : DIRECTION.prev;\n }\n\n return DIRECTION[direction];\n },\n handleClick: function handleClick(evt, fn) {\n var keyCode = evt.keyCode;\n\n if (evt.type === 'click' || keyCode === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].SPACE || keyCode === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].ENTER) {\n evt.preventDefault();\n evt.stopPropagation();\n fn();\n }\n },\n handleSwipe: function handleSwipe()\n /* istanbul ignore next: JSDOM doesn't support touch events */\n {\n var absDeltaX = Math.abs(this.touchDeltaX);\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n\n var direction = absDeltaX / this.touchDeltaX; // Reset touch delta X\n // https://github.com/twbs/bootstrap/pull/28558\n\n this.touchDeltaX = 0;\n\n if (direction > 0) {\n // Swipe left\n this.prev();\n } else if (direction < 0) {\n // Swipe right\n this.next();\n }\n },\n touchStart: function touchStart(evt)\n /* istanbul ignore next: JSDOM doesn't support touch events */\n {\n if (__WEBPACK_IMPORTED_MODULE_6__utils_env__[\"f\" /* hasPointerEventSupport */] && PointerType[evt.pointerType.toUpperCase()]) {\n this.touchStartX = evt.clientX;\n } else if (!__WEBPACK_IMPORTED_MODULE_6__utils_env__[\"f\" /* hasPointerEventSupport */]) {\n this.touchStartX = evt.touches[0].clientX;\n }\n },\n touchMove: function touchMove(evt)\n /* istanbul ignore next: JSDOM doesn't support touch events */\n {\n // Ensure swiping with one touch and not pinching\n if (evt.touches && evt.touches.length > 1) {\n this.touchDeltaX = 0;\n } else {\n this.touchDeltaX = evt.touches[0].clientX - this.touchStartX;\n }\n },\n touchEnd: function touchEnd(evt)\n /* istanbul ignore next: JSDOM doesn't support touch events */\n {\n if (__WEBPACK_IMPORTED_MODULE_6__utils_env__[\"f\" /* hasPointerEventSupport */] && PointerType[evt.pointerType.toUpperCase()]) {\n this.touchDeltaX = evt.clientX - this.touchStartX;\n }\n\n this.handleSwipe(); // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause(false);\n\n if (this._touchTimeout) {\n clearTimeout(this._touchTimeout);\n }\n\n this._touchTimeout = setTimeout(this.start, TOUCH_EVENT_COMPAT_WAIT + Math.max(1000, this.interval));\n }\n },\n render: function render(h) {\n var _this3 = this;\n\n // Wrapper for slides\n var inner = h('div', {\n ref: 'inner',\n class: ['carousel-inner'],\n attrs: {\n id: this.safeId('__BV_inner_'),\n role: 'list'\n }\n }, [this.normalizeSlot('default')]); // Prev and next controls\n\n var controls = h();\n\n if (this.controls) {\n var prevHandler = function prevHandler(evt) {\n /* istanbul ignore next */\n if (!_this3.isSliding) {\n _this3.handleClick(evt, _this3.prev);\n } else {\n evt.preventDefault();\n }\n };\n\n var nextHandler = function nextHandler(evt) {\n /* istanbul ignore next */\n if (!_this3.isSliding) {\n _this3.handleClick(evt, _this3.next);\n } else {\n evt.preventDefault();\n }\n };\n\n controls = [h('a', {\n class: ['carousel-control-prev'],\n attrs: {\n href: '#',\n role: 'button',\n 'aria-controls': this.safeId('__BV_inner_'),\n 'aria-disabled': this.isSliding ? 'true' : null\n },\n on: {\n click: prevHandler,\n keydown: prevHandler\n }\n }, [h('span', {\n class: ['carousel-control-prev-icon'],\n attrs: {\n 'aria-hidden': 'true'\n }\n }), h('span', {\n class: ['sr-only']\n }, [this.labelPrev])]), h('a', {\n class: ['carousel-control-next'],\n attrs: {\n href: '#',\n role: 'button',\n 'aria-controls': this.safeId('__BV_inner_'),\n 'aria-disabled': this.isSliding ? 'true' : null\n },\n on: {\n click: nextHandler,\n keydown: nextHandler\n }\n }, [h('span', {\n class: ['carousel-control-next-icon'],\n attrs: {\n 'aria-hidden': 'true'\n }\n }), h('span', {\n class: ['sr-only']\n }, [this.labelNext])])];\n } // Indicators\n\n\n var indicators = h('ol', {\n class: ['carousel-indicators'],\n directives: [{\n name: 'show',\n rawName: 'v-show',\n value: this.indicators,\n expression: 'indicators'\n }],\n attrs: {\n id: this.safeId('__BV_indicators_'),\n 'aria-hidden': this.indicators ? 'false' : 'true',\n 'aria-label': this.labelIndicators,\n 'aria-owns': this.safeId('__BV_inner_')\n }\n }, this.slides.map(function (slide, n) {\n return h('li', {\n key: \"slide_\".concat(n),\n class: {\n active: n === _this3.index\n },\n attrs: {\n role: 'button',\n id: _this3.safeId(\"__BV_indicator_\".concat(n + 1, \"_\")),\n tabindex: _this3.indicators ? '0' : '-1',\n 'aria-current': n === _this3.index ? 'true' : 'false',\n 'aria-label': \"\".concat(_this3.labelGotoSlide, \" \").concat(n + 1),\n 'aria-describedby': _this3.slides[n].id || null,\n 'aria-controls': _this3.safeId('__BV_inner_')\n },\n on: {\n click: function click(evt) {\n _this3.handleClick(evt, function () {\n _this3.setSlide(n);\n });\n },\n keydown: function keydown(evt) {\n _this3.handleClick(evt, function () {\n _this3.setSlide(n);\n });\n }\n }\n });\n }));\n var on = {\n mouseenter: this.noHoverPause ? __WEBPACK_IMPORTED_MODULE_2__utils_noop__[\"a\" /* default */] : this.pause,\n mouseleave: this.noHoverPause ? __WEBPACK_IMPORTED_MODULE_2__utils_noop__[\"a\" /* default */] : this.restart,\n focusin: this.pause,\n focusout: this.restart,\n keydown: function keydown(evt) {\n if (/input|textarea/i.test(evt.target.tagName)) {\n /* istanbul ignore next */\n return;\n }\n\n var keyCode = evt.keyCode;\n\n if (keyCode === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].LEFT || keyCode === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].RIGHT) {\n evt.preventDefault();\n evt.stopPropagation();\n\n _this3[keyCode === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].LEFT ? 'prev' : 'next']();\n }\n }\n }; // Touch support event handlers for environment\n\n if (!this.noTouch && __WEBPACK_IMPORTED_MODULE_6__utils_env__[\"h\" /* hasTouchSupport */]) {\n // Attach appropriate listeners (prepend event name with '&' for passive mode)\n\n /* istanbul ignore next: JSDOM doesn't support touch events */\n if (__WEBPACK_IMPORTED_MODULE_6__utils_env__[\"f\" /* hasPointerEventSupport */]) {\n on['&pointerdown'] = this.touchStart;\n on['&pointerup'] = this.touchEnd;\n } else {\n on['&touchstart'] = this.touchStart;\n on['&touchmove'] = this.touchMove;\n on['&touchend'] = this.touchEnd;\n }\n } // Return the carousel\n\n\n return h('div', {\n staticClass: 'carousel',\n class: {\n slide: !this.noAnimation,\n 'carousel-fade': !this.noAnimation && this.fade,\n 'pointer-event': !this.noTouch && __WEBPACK_IMPORTED_MODULE_6__utils_env__[\"h\" /* hasTouchSupport */] && __WEBPACK_IMPORTED_MODULE_6__utils_env__[\"f\" /* hasPointerEventSupport */]\n },\n style: {\n background: this.background\n },\n attrs: {\n role: 'region',\n id: this.safeId(),\n 'aria-busy': this.isSliding ? 'true' : 'false'\n },\n on: on\n }, [inner, controls, indicators]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJvdXNlbC9jYXJvdXNlbC5qcz83NTIzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDVztBQUNUO0FBQ2E7QUFDTztBQUMrQztBQUNsQjtBQUNuQztBQUNaO0FBQ3VCO0FBQzdELHVCQUF1Qjs7QUFFdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGLDhCQUE4Qjs7QUFFOUIsa0NBQWtDOztBQUVsQyx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0EsU0FBUywyRUFBVztBQUNwQjtBQUNBO0FBQ0EsR0FBRzs7QUFFSDs7O0FBR0E7QUFDQSxFQUFFOzs7QUFHSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsMkRBQU8sRUFBRSx1RUFBa0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qjs7QUFFOUI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHNFQUFzRTs7QUFFdEUsd0JBQXdCOztBQUV4QixJQUFJLDJFQUFVO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0EsVUFBVSw2REFBUztBQUNuQjtBQUNBOztBQUVBO0FBQ0EscUNBQXFDOztBQUVyQyxnQ0FBZ0M7O0FBRWhDO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBLGlDQUFpQztBQUNqQzs7QUFFQSxvSEFBb0g7QUFDcEg7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLDZDQUE2Qzs7QUFFN0M7QUFDQTtBQUNBLHdDQUF3Qzs7QUFFeEM7QUFDQSxzQ0FBc0M7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxzQ0FBc0M7O0FBRXRDOztBQUVBO0FBQ0EsUUFBUSxvRUFBUTtBQUNoQixRQUFRLHVFQUFXO0FBQ25CLCtCQUErQjs7QUFFL0I7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsUUFBUSxvRUFBUSwwQkFBMEI7O0FBRTFDLFFBQVEsa0VBQU07QUFDZCxRQUFRLG9FQUFRO0FBQ2hCLFFBQVEsb0VBQVEsc0JBQXNCOztBQUV0QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQixvRUFBUTtBQUM3QixhQUFhO0FBQ2I7O0FBRUE7QUFDQSxVQUFVLHVFQUFXO0FBQ3JCLFVBQVUsdUVBQVc7QUFDckIsVUFBVSxvRUFBUTtBQUNsQixVQUFVLHVFQUFXO0FBQ3JCLFVBQVUsdUVBQVc7QUFDckIsVUFBVSx1RUFBVztBQUNyQixVQUFVLG1FQUFPO0FBQ2pCLFVBQVUsbUVBQU87QUFDakIsVUFBVSxtRUFBTztBQUNqQixVQUFVLG1FQUFPO0FBQ2pCO0FBQ0Esa0NBQWtDOztBQUVsQztBQUNBO0FBQ0EsV0FBVztBQUNYLFVBQVU7O0FBRVY7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixtRUFBTztBQUMxQixXQUFXO0FBQ1gsU0FBUzs7O0FBR1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLHVCQUF1Qjs7QUFFdkIsb0JBQW9CLHFFQUFTO0FBQzdCLHlDQUF5Qzs7QUFFekM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVSxvRUFBUTtBQUNsQixVQUFVLG1FQUFPO0FBQ2pCLFNBQVM7QUFDVCxVQUFVLHVFQUFXO0FBQ3JCLFVBQVUsbUVBQU87QUFDakI7O0FBRUEsUUFBUSxtRUFBTztBQUNmLFFBQVEsbUVBQU87QUFDZixPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSw4Q0FBOEMsaUVBQVEsc0JBQXNCLGlFQUFRO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxtREFBbUQ7QUFDbkQ7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxVQUFVLDBFQUFzQjtBQUNoQztBQUNBLE9BQU8sV0FBVywwRUFBc0I7QUFDeEM7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxVQUFVLDBFQUFzQjtBQUNoQztBQUNBOztBQUVBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxtQ0FBbUM7O0FBRXhDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLHNDQUFzQyw0REFBSTtBQUMxQyxzQ0FBc0MsNERBQUk7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsd0JBQXdCLGlFQUFRLHFCQUFxQixpRUFBUTtBQUM3RDtBQUNBOztBQUVBLDZCQUE2QixpRUFBUTtBQUNyQztBQUNBO0FBQ0EsTUFBTTs7QUFFTix5QkFBeUIsbUVBQWU7QUFDeEM7O0FBRUE7QUFDQSxVQUFVLDBFQUFzQjtBQUNoQztBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxtRUFBZSxJQUFJLDBFQUFzQjtBQUNuRixPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMTIxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IEtleUNvZGVzIGZyb20gJy4uLy4uL3V0aWxzL2tleS1jb2Rlcyc7XG5pbXBvcnQgbm9vcCBmcm9tICcuLi8uLi91dGlscy9ub29wJztcbmltcG9ydCBvYnNlcnZlRG9tIGZyb20gJy4uLy4uL3V0aWxzL29ic2VydmUtZG9tJztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBzZWxlY3RBbGwsIHJlZmxvdywgYWRkQ2xhc3MsIHJlbW92ZUNsYXNzLCBzZXRBdHRyLCBldmVudE9uLCBldmVudE9mZiB9IGZyb20gJy4uLy4uL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyBpc0Jyb3dzZXIsIGhhc1RvdWNoU3VwcG9ydCwgaGFzUG9pbnRlckV2ZW50U3VwcG9ydCB9IGZyb20gJy4uLy4uL3V0aWxzL2Vudic7XG5pbXBvcnQgeyBpc1VuZGVmaW5lZCB9IGZyb20gJy4uLy4uL3V0aWxzL2luc3BlY3QnO1xuaW1wb3J0IGlkTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2lkJztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JztcbnZhciBOQU1FID0gJ0JDYXJvdXNlbCc7IC8vIFNsaWRlIGRpcmVjdGlvbmFsIGNsYXNzZXNcblxudmFyIERJUkVDVElPTiA9IHtcbiAgbmV4dDoge1xuICAgIGRpckNsYXNzOiAnY2Fyb3VzZWwtaXRlbS1sZWZ0JyxcbiAgICBvdmVybGF5Q2xhc3M6ICdjYXJvdXNlbC1pdGVtLW5leHQnXG4gIH0sXG4gIHByZXY6IHtcbiAgICBkaXJDbGFzczogJ2Nhcm91c2VsLWl0ZW0tcmlnaHQnLFxuICAgIG92ZXJsYXlDbGFzczogJ2Nhcm91c2VsLWl0ZW0tcHJldidcbiAgfVxufTsgLy8gRmFsbGJhY2sgVHJhbnNpdGlvbiBkdXJhdGlvbiAod2l0aCBhIGxpdHRsZSBidWZmZXIpIGluIG1zXG5cbnZhciBUUkFOU19EVVJBVElPTiA9IDYwMCArIDUwOyAvLyBUaW1lIGZvciBtb3VzZSBjb21wYXQgZXZlbnRzIHRvIGZpcmUgYWZ0ZXIgdG91Y2hcblxudmFyIFRPVUNIX0VWRU5UX0NPTVBBVF9XQUlUID0gNTAwOyAvLyBOdW1iZXIgb2YgcGl4ZWxzIHRvIGNvbnNpZGVyIHRvdWNoIG1vdmUgYSBzd2lwZVxuXG52YXIgU1dJUEVfVEhSRVNIT0xEID0gNDA7IC8vIFBvaW50ZXJFdmVudCBwb2ludGVyIHR5cGVzXG5cbnZhciBQb2ludGVyVHlwZSA9IHtcbiAgVE9VQ0g6ICd0b3VjaCcsXG4gIFBFTjogJ3Blbidcbn07IC8vIFRyYW5zaXRpb24gRXZlbnQgbmFtZXNcblxudmFyIFRyYW5zaXRpb25FbmRFdmVudHMgPSB7XG4gIFdlYmtpdFRyYW5zaXRpb246ICd3ZWJraXRUcmFuc2l0aW9uRW5kJyxcbiAgTW96VHJhbnNpdGlvbjogJ3RyYW5zaXRpb25lbmQnLFxuICBPVHJhbnNpdGlvbjogJ290cmFuc2l0aW9uZW5kIG9UcmFuc2l0aW9uRW5kJyxcbiAgdHJhbnNpdGlvbjogJ3RyYW5zaXRpb25lbmQnXG59O1xudmFyIEV2ZW50T3B0aW9ucyA9IHtcbiAgcGFzc2l2ZTogdHJ1ZSxcbiAgY2FwdHVyZTogZmFsc2Vcbn07IC8vIFJldHVybiB0aGUgYnJvd3NlciBzcGVjaWZpYyB0cmFuc2l0aW9uRW5kIGV2ZW50IG5hbWVcblxudmFyIGdldFRyYW5zaXRpb25FbmRFdmVudCA9IGZ1bmN0aW9uIGdldFRyYW5zaXRpb25FbmRFdmVudChlbCkge1xuICBmb3IgKHZhciBuYW1lIGluIFRyYW5zaXRpb25FbmRFdmVudHMpIHtcbiAgICBpZiAoIWlzVW5kZWZpbmVkKGVsLnN0eWxlW25hbWVdKSkge1xuICAgICAgcmV0dXJuIFRyYW5zaXRpb25FbmRFdmVudHNbbmFtZV07XG4gICAgfVxuICB9IC8vIEZhbGxiYWNrXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblxuXG4gIHJldHVybiBudWxsO1xufTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuXG5leHBvcnQgdmFyIEJDYXJvdXNlbCA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogTkFNRSxcbiAgbWl4aW5zOiBbaWRNaXhpbiwgbm9ybWFsaXplU2xvdE1peGluXSxcbiAgcHJvdmlkZTogZnVuY3Rpb24gcHJvdmlkZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnZDYXJvdXNlbDogdGhpc1xuICAgIH07XG4gIH0sXG4gIG1vZGVsOiB7XG4gICAgcHJvcDogJ3ZhbHVlJyxcbiAgICBldmVudDogJ2lucHV0J1xuICB9LFxuICBwcm9wczoge1xuICAgIGxhYmVsUHJldjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ2xhYmVsUHJldicpO1xuICAgICAgfVxuICAgIH0sXG4gICAgbGFiZWxOZXh0OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAnbGFiZWxOZXh0Jyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBsYWJlbEdvdG9TbGlkZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ2xhYmVsR290b1NsaWRlJyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBsYWJlbEluZGljYXRvcnM6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdsYWJlbEluZGljYXRvcnMnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGludGVydmFsOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiA1MDAwXG4gICAgfSxcbiAgICBpbmRpY2F0b3JzOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGNvbnRyb2xzOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIG5vQW5pbWF0aW9uOiB7XG4gICAgICAvLyBEaXNhYmxlIHNsaWRlL2ZhZGUgYW5pbWF0aW9uXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGZhZGU6IHtcbiAgICAgIC8vIEVuYWJsZSBjcm9zcy1mYWRlIGFuaW1hdGlvbiBpbnN0ZWFkIG9mIHNsaWRlIGFuaW1hdGlvblxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBub1dyYXA6IHtcbiAgICAgIC8vIERpc2FibGUgd3JhcHBpbmcvbG9vcGluZyB3aGVuIHN0YXJ0L2VuZCBpcyByZWFjaGVkXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIG5vVG91Y2g6IHtcbiAgICAgIC8vIFNuaWZmZWQgYnkgY2Fyb3VzZWwtc2xpZGVcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgbm9Ib3ZlclBhdXNlOiB7XG4gICAgICAvLyBEaXNhYmxlIHBhdXNlIG9uIGhvdmVyXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGltZ1dpZHRoOiB7XG4gICAgICAvLyBTbmlmZmVkIGJ5IGNhcm91c2VsLXNsaWRlXG4gICAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddIC8vIGRlZmF1bHQ6IHVuZGVmaW5lZFxuXG4gICAgfSxcbiAgICBpbWdIZWlnaHQ6IHtcbiAgICAgIC8vIFNuaWZmZWQgYnkgY2Fyb3VzZWwtc2xpZGVcbiAgICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10gLy8gZGVmYXVsdDogdW5kZWZpbmVkXG5cbiAgICB9LFxuICAgIGJhY2tncm91bmQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyAvLyBkZWZhdWx0OiB1bmRlZmluZWRcblxuICAgIH0sXG4gICAgdmFsdWU6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGluZGV4OiB0aGlzLnZhbHVlIHx8IDAsXG4gICAgICBpc1NsaWRpbmc6IGZhbHNlLFxuICAgICAgdHJhbnNpdGlvbkVuZEV2ZW50OiBudWxsLFxuICAgICAgc2xpZGVzOiBbXSxcbiAgICAgIGRpcmVjdGlvbjogbnVsbCxcbiAgICAgIGlzUGF1c2VkOiAhKHBhcnNlSW50KHRoaXMuaW50ZXJ2YWwsIDEwKSA+IDApLFxuICAgICAgLy8gVG91Y2ggZXZlbnQgaGFuZGxpbmcgdmFsdWVzXG4gICAgICB0b3VjaFN0YXJ0WDogMCxcbiAgICAgIHRvdWNoRGVsdGFYOiAwXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBudW1TbGlkZXM6IGZ1bmN0aW9uIG51bVNsaWRlcygpIHtcbiAgICAgIHJldHVybiB0aGlzLnNsaWRlcy5sZW5ndGg7XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgaWYgKG5ld1ZhbCAhPT0gb2xkVmFsKSB7XG4gICAgICAgIHRoaXMuc2V0U2xpZGUocGFyc2VJbnQobmV3VmFsLCAxMCkgfHwgMCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBpbnRlcnZhbDogZnVuY3Rpb24gaW50ZXJ2YWwobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIGlmIChuZXdWYWwgPT09IG9sZFZhbCkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghbmV3VmFsKSB7XG4gICAgICAgIC8vIFBhdXNpbmcgc2xpZGUgc2hvd1xuICAgICAgICB0aGlzLnBhdXNlKGZhbHNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlc3RhcnRpbmcgb3IgQ2hhbmdpbmcgaW50ZXJ2YWxcbiAgICAgICAgdGhpcy5wYXVzZSh0cnVlKTtcbiAgICAgICAgdGhpcy5zdGFydChmYWxzZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBpc1BhdXNlZDogZnVuY3Rpb24gaXNQYXVzZWQobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIGlmIChuZXdWYWwgIT09IG9sZFZhbCkge1xuICAgICAgICB0aGlzLiRlbWl0KG5ld1ZhbCA/ICdwYXVzZWQnIDogJ3VucGF1c2VkJyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBpbmRleDogZnVuY3Rpb24gaW5kZXgodG8sIGZyb20pIHtcbiAgICAgIGlmICh0byA9PT0gZnJvbSB8fCB0aGlzLmlzU2xpZGluZykge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZG9TbGlkZSh0bywgZnJvbSk7XG4gICAgfVxuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIC8vIENyZWF0ZSBwcml2YXRlIG5vbi1yZWFjdGl2ZSBwcm9wc1xuICAgIHRoaXMuX2ludGVydmFsSWQgPSBudWxsO1xuICAgIHRoaXMuX2FuaW1hdGlvblRpbWVvdXQgPSBudWxsO1xuICAgIHRoaXMuX3RvdWNoVGltZW91dCA9IG51bGw7IC8vIFNldCBpbml0aWFsIHBhdXNlZCBzdGF0ZVxuXG4gICAgdGhpcy5pc1BhdXNlZCA9ICEocGFyc2VJbnQodGhpcy5pbnRlcnZhbCwgMTApID4gMCk7XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgLy8gQ2FjaGUgY3VycmVudCBicm93c2VyIHRyYW5zaXRpb25lbmQgZXZlbnQgbmFtZVxuICAgIHRoaXMudHJhbnNpdGlvbkVuZEV2ZW50ID0gZ2V0VHJhbnNpdGlvbkVuZEV2ZW50KHRoaXMuJGVsKSB8fCBudWxsOyAvLyBHZXQgYWxsIHNsaWRlc1xuXG4gICAgdGhpcy51cGRhdGVTbGlkZXMoKTsgLy8gT2JzZXJ2ZSBjaGlsZCBjaGFuZ2VzIHNvIHdlIGNhbiB1cGRhdGUgc2xpZGUgbGlzdFxuXG4gICAgb2JzZXJ2ZURvbSh0aGlzLiRyZWZzLmlubmVyLCB0aGlzLnVwZGF0ZVNsaWRlcy5iaW5kKHRoaXMpLCB7XG4gICAgICBzdWJ0cmVlOiBmYWxzZSxcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnaWQnXVxuICAgIH0pO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9hbmltYXRpb25UaW1lb3V0KTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fdG91Y2hUaW1lb3V0KTtcbiAgICBjbGVhckludGVydmFsKHRoaXMuX2ludGVydmFsSWQpO1xuICAgIHRoaXMuX2ludGVydmFsSWQgPSBudWxsO1xuICAgIHRoaXMuX2FuaW1hdGlvblRpbWVvdXQgPSBudWxsO1xuICAgIHRoaXMuX3RvdWNoVGltZW91dCA9IG51bGw7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICAvLyBTZXQgc2xpZGVcbiAgICBzZXRTbGlkZTogZnVuY3Rpb24gc2V0U2xpZGUoc2xpZGUpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBkaXJlY3Rpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IG51bGw7XG5cbiAgICAgIC8vIERvbid0IGFuaW1hdGUgd2hlbiBwYWdlIGlzIG5vdCB2aXNpYmxlXG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZjogZGlmZmljdWx0IHRvIHRlc3QgKi9cbiAgICAgIGlmIChpc0Jyb3dzZXIgJiYgZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlICYmIGRvY3VtZW50LmhpZGRlbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBub1dyYXAgPSB0aGlzLm5vV3JhcDtcbiAgICAgIHZhciBudW1TbGlkZXMgPSB0aGlzLm51bVNsaWRlczsgLy8gTWFrZSBzdXJlIHdlIGhhdmUgYW4gaW50ZWdlciAoeW91IG5ldmVyIGtub3chKVxuXG4gICAgICBzbGlkZSA9IE1hdGguZmxvb3Ioc2xpZGUpOyAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiBub3RoaW5nIHRvIHNsaWRlIHRvXG5cbiAgICAgIGlmIChudW1TbGlkZXMgPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBEb24ndCBjaGFuZ2Ugc2xpZGUgd2hpbGUgdHJhbnNpdGlvbmluZywgd2FpdCB1bnRpbCB0cmFuc2l0aW9uIGlzIGRvbmVcblxuXG4gICAgICBpZiAodGhpcy5pc1NsaWRpbmcpIHtcbiAgICAgICAgLy8gU2NoZWR1bGUgc2xpZGUgYWZ0ZXIgc2xpZGluZyBjb21wbGV0ZVxuICAgICAgICB0aGlzLiRvbmNlKCdzbGlkaW5nLWVuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuc2V0U2xpZGUoc2xpZGUsIGRpcmVjdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uOyAvLyBTZXQgbmV3IHNsaWRlIGluZGV4XG4gICAgICAvLyBXcmFwIGFyb3VuZCBpZiBuZWNlc3NhcnkgKGlmIG5vLXdyYXAgbm90IGVuYWJsZWQpXG5cbiAgICAgIHRoaXMuaW5kZXggPSBzbGlkZSA+PSBudW1TbGlkZXMgPyBub1dyYXAgPyBudW1TbGlkZXMgLSAxIDogMCA6IHNsaWRlIDwgMCA/IG5vV3JhcCA/IDAgOiBudW1TbGlkZXMgLSAxIDogc2xpZGU7IC8vIEVuc3VyZSB0aGUgdi1tb2RlbCBpcyBzeW5jaGVkIHVwIGlmIG5vLXdyYXAgaXMgZW5hYmxlZFxuICAgICAgLy8gYW5kIHVzZXIgdHJpZWQgdG8gc2xpZGUgcGFzcyBlaXRoZXIgZW5kc1xuXG4gICAgICBpZiAobm9XcmFwICYmIHRoaXMuaW5kZXggIT09IHNsaWRlICYmIHRoaXMuaW5kZXggIT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB0aGlzLmluZGV4KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIFByZXZpb3VzIHNsaWRlXG4gICAgcHJldjogZnVuY3Rpb24gcHJldigpIHtcbiAgICAgIHRoaXMuc2V0U2xpZGUodGhpcy5pbmRleCAtIDEsICdwcmV2Jyk7XG4gICAgfSxcbiAgICAvLyBOZXh0IHNsaWRlXG4gICAgbmV4dDogZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIHRoaXMuc2V0U2xpZGUodGhpcy5pbmRleCArIDEsICduZXh0Jyk7XG4gICAgfSxcbiAgICAvLyBQYXVzZSBhdXRvIHJvdGF0aW9uXG4gICAgcGF1c2U6IGZ1bmN0aW9uIHBhdXNlKGV2dCkge1xuICAgICAgaWYgKCFldnQpIHtcbiAgICAgICAgdGhpcy5pc1BhdXNlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9pbnRlcnZhbElkKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWxJZCk7XG4gICAgICAgIHRoaXMuX2ludGVydmFsSWQgPSBudWxsO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8gU3RhcnQgYXV0byByb3RhdGUgc2xpZGVzXG4gICAgc3RhcnQ6IGZ1bmN0aW9uIHN0YXJ0KGV2dCkge1xuICAgICAgaWYgKCFldnQpIHtcbiAgICAgICAgdGhpcy5pc1BhdXNlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IG1vc3QgbGlrZWx5IHdpbGwgbmV2ZXIgaGFwcGVuLCBidXQganVzdCBpbiBjYXNlICovXG5cblxuICAgICAgaWYgKHRoaXMuX2ludGVydmFsSWQpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbElkKTtcbiAgICAgICAgdGhpcy5faW50ZXJ2YWxJZCA9IG51bGw7XG4gICAgICB9IC8vIERvbid0IHN0YXJ0IGlmIG5vIGludGVydmFsLCBvciBsZXNzIHRoYW4gMiBzbGlkZXNcblxuXG4gICAgICBpZiAodGhpcy5pbnRlcnZhbCAmJiB0aGlzLm51bVNsaWRlcyA+IDEpIHtcbiAgICAgICAgdGhpcy5faW50ZXJ2YWxJZCA9IHNldEludGVydmFsKHRoaXMubmV4dCwgTWF0aC5tYXgoMTAwMCwgdGhpcy5pbnRlcnZhbCkpO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8gUmVzdGFydCBhdXRvIHJvdGF0ZSBzbGlkZXMgd2hlbiBmb2N1cy9ob3ZlciBsZWF2ZXMgdGhlIGNhcm91c2VsXG4gICAgcmVzdGFydDogZnVuY3Rpb24gcmVzdGFydChldnQpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGRpZmZpY3VsdCB0byB0ZXN0ICovXG4gICAge1xuICAgICAgaWYgKCF0aGlzLiRlbC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSkge1xuICAgICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBkb1NsaWRlOiBmdW5jdGlvbiBkb1NsaWRlKHRvLCBmcm9tKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIGlzQ3ljbGluZyA9IEJvb2xlYW4odGhpcy5pbnRlcnZhbCk7IC8vIERldGVybWluZSBzbGlkaW5nIGRpcmVjdGlvblxuXG4gICAgICB2YXIgZGlyZWN0aW9uID0gdGhpcy5jYWxjRGlyZWN0aW9uKHRoaXMuZGlyZWN0aW9uLCBmcm9tLCB0byk7XG4gICAgICB2YXIgb3ZlcmxheUNsYXNzID0gZGlyZWN0aW9uLm92ZXJsYXlDbGFzcztcbiAgICAgIHZhciBkaXJDbGFzcyA9IGRpcmVjdGlvbi5kaXJDbGFzczsgLy8gRGV0ZXJtaW5lIGN1cnJlbnQgYW5kIG5leHQgc2xpZGVzXG5cbiAgICAgIHZhciBjdXJyZW50U2xpZGUgPSB0aGlzLnNsaWRlc1tmcm9tXTtcbiAgICAgIHZhciBuZXh0U2xpZGUgPSB0aGlzLnNsaWRlc1t0b107IC8vIERvbid0IGRvIGFueXRoaW5nIGlmIHRoZXJlIGFyZW4ndCBhbnkgc2xpZGVzIHRvIHNsaWRlIHRvXG5cbiAgICAgIGlmICghY3VycmVudFNsaWRlIHx8ICFuZXh0U2xpZGUpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBTdGFydCBhbmltYXRpbmdcblxuXG4gICAgICB0aGlzLmlzU2xpZGluZyA9IHRydWU7XG5cbiAgICAgIGlmIChpc0N5Y2xpbmcpIHtcbiAgICAgICAgdGhpcy5wYXVzZShmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuJGVtaXQoJ3NsaWRpbmctc3RhcnQnLCB0byk7IC8vIFVwZGF0ZSB2LW1vZGVsXG5cbiAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgdGhpcy5pbmRleCk7XG5cbiAgICAgIGlmICh0aGlzLm5vQW5pbWF0aW9uKSB7XG4gICAgICAgIGFkZENsYXNzKG5leHRTbGlkZSwgJ2FjdGl2ZScpO1xuICAgICAgICByZW1vdmVDbGFzcyhjdXJyZW50U2xpZGUsICdhY3RpdmUnKTtcbiAgICAgICAgdGhpcy5pc1NsaWRpbmcgPSBmYWxzZTsgLy8gTm90aWZ5IG91cnNlbHZlcyB0aGF0IHdlJ3JlIGRvbmUgc2xpZGluZyAoc2xpZClcblxuICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzMi4kZW1pdCgnc2xpZGluZy1lbmQnLCB0byk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRkQ2xhc3MobmV4dFNsaWRlLCBvdmVybGF5Q2xhc3MpOyAvLyBUcmlnZ2VyIGEgcmVmbG93IG9mIG5leHQgc2xpZGVcblxuICAgICAgICByZWZsb3cobmV4dFNsaWRlKTtcbiAgICAgICAgYWRkQ2xhc3MoY3VycmVudFNsaWRlLCBkaXJDbGFzcyk7XG4gICAgICAgIGFkZENsYXNzKG5leHRTbGlkZSwgZGlyQ2xhc3MpOyAvLyBUcmFuc2l0aW9uIEVuZCBoYW5kbGVyXG5cbiAgICAgICAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogZGlmZmljdWx0IHRvIHRlc3QgKi9cblxuICAgICAgICB2YXIgb25jZVRyYW5zRW5kID0gZnVuY3Rpb24gb25jZVRyYW5zRW5kKGV2dCkge1xuICAgICAgICAgIGlmIChjYWxsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZjogdHJhbnNpdGlvbiBldmVudHMgY2FudCBiZSB0ZXN0ZWQgaW4gSlNET00gKi9cblxuICAgICAgICAgIGlmIChfdGhpczIudHJhbnNpdGlvbkVuZEV2ZW50KSB7XG4gICAgICAgICAgICB2YXIgZXZlbnRzID0gX3RoaXMyLnRyYW5zaXRpb25FbmRFdmVudC5zcGxpdCgvXFxzKy8pO1xuXG4gICAgICAgICAgICBldmVudHMuZm9yRWFjaChmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgIHJldHVybiBldmVudE9mZihjdXJyZW50U2xpZGUsIGV2dCwgb25jZVRyYW5zRW5kLCBFdmVudE9wdGlvbnMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgX3RoaXMyLl9hbmltYXRpb25UaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgICByZW1vdmVDbGFzcyhuZXh0U2xpZGUsIGRpckNsYXNzKTtcbiAgICAgICAgICByZW1vdmVDbGFzcyhuZXh0U2xpZGUsIG92ZXJsYXlDbGFzcyk7XG4gICAgICAgICAgYWRkQ2xhc3MobmV4dFNsaWRlLCAnYWN0aXZlJyk7XG4gICAgICAgICAgcmVtb3ZlQ2xhc3MoY3VycmVudFNsaWRlLCAnYWN0aXZlJyk7XG4gICAgICAgICAgcmVtb3ZlQ2xhc3MoY3VycmVudFNsaWRlLCBkaXJDbGFzcyk7XG4gICAgICAgICAgcmVtb3ZlQ2xhc3MoY3VycmVudFNsaWRlLCBvdmVybGF5Q2xhc3MpO1xuICAgICAgICAgIHNldEF0dHIoY3VycmVudFNsaWRlLCAnYXJpYS1jdXJyZW50JywgJ2ZhbHNlJyk7XG4gICAgICAgICAgc2V0QXR0cihuZXh0U2xpZGUsICdhcmlhLWN1cnJlbnQnLCAndHJ1ZScpO1xuICAgICAgICAgIHNldEF0dHIoY3VycmVudFNsaWRlLCAnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICAgIHNldEF0dHIobmV4dFNsaWRlLCAnYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcbiAgICAgICAgICBfdGhpczIuaXNTbGlkaW5nID0gZmFsc2U7XG4gICAgICAgICAgX3RoaXMyLmRpcmVjdGlvbiA9IG51bGw7IC8vIE5vdGlmeSBvdXJzZWx2ZXMgdGhhdCB3ZSdyZSBkb25lIHNsaWRpbmcgKHNsaWQpXG5cbiAgICAgICAgICBfdGhpczIuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpczIuJGVtaXQoJ3NsaWRpbmctZW5kJywgdG8pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9OyAvLyBTZXQgdXAgdHJhbnNpdGlvbmVuZCBoYW5kbGVyXG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmOiB0cmFuc2l0aW9uIGV2ZW50cyBjYW50IGJlIHRlc3RlZCBpbiBKU0RPTSAqL1xuXG5cbiAgICAgICAgaWYgKHRoaXMudHJhbnNpdGlvbkVuZEV2ZW50KSB7XG4gICAgICAgICAgdmFyIGV2ZW50cyA9IHRoaXMudHJhbnNpdGlvbkVuZEV2ZW50LnNwbGl0KC9cXHMrLyk7XG4gICAgICAgICAgZXZlbnRzLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZXZlbnRPbihjdXJyZW50U2xpZGUsIGV2ZW50LCBvbmNlVHJhbnNFbmQsIEV2ZW50T3B0aW9ucyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gLy8gRmFsbGJhY2sgdG8gc2V0VGltZW91dCgpXG5cblxuICAgICAgICB0aGlzLl9hbmltYXRpb25UaW1lb3V0ID0gc2V0VGltZW91dChvbmNlVHJhbnNFbmQsIFRSQU5TX0RVUkFUSU9OKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzQ3ljbGluZykge1xuICAgICAgICB0aGlzLnN0YXJ0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIFVwZGF0ZSBzbGlkZSBsaXN0XG4gICAgdXBkYXRlU2xpZGVzOiBmdW5jdGlvbiB1cGRhdGVTbGlkZXMoKSB7XG4gICAgICB0aGlzLnBhdXNlKHRydWUpOyAvLyBHZXQgYWxsIHNsaWRlcyBhcyBET00gZWxlbWVudHNcblxuICAgICAgdGhpcy5zbGlkZXMgPSBzZWxlY3RBbGwoJy5jYXJvdXNlbC1pdGVtJywgdGhpcy4kcmVmcy5pbm5lcik7XG4gICAgICB2YXIgbnVtU2xpZGVzID0gdGhpcy5zbGlkZXMubGVuZ3RoOyAvLyBLZWVwIHNsaWRlIG51bWJlciBpbiByYW5nZVxuXG4gICAgICB2YXIgaW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihNYXRoLmZsb29yKHRoaXMuaW5kZXgpLCBudW1TbGlkZXMgLSAxKSk7XG4gICAgICB0aGlzLnNsaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChzbGlkZSwgaWR4KSB7XG4gICAgICAgIHZhciBuID0gaWR4ICsgMTtcblxuICAgICAgICBpZiAoaWR4ID09PSBpbmRleCkge1xuICAgICAgICAgIGFkZENsYXNzKHNsaWRlLCAnYWN0aXZlJyk7XG4gICAgICAgICAgc2V0QXR0cihzbGlkZSwgJ2FyaWEtY3VycmVudCcsICd0cnVlJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVtb3ZlQ2xhc3Moc2xpZGUsICdhY3RpdmUnKTtcbiAgICAgICAgICBzZXRBdHRyKHNsaWRlLCAnYXJpYS1jdXJyZW50JywgJ2ZhbHNlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRBdHRyKHNsaWRlLCAnYXJpYS1wb3NpbnNldCcsIFN0cmluZyhuKSk7XG4gICAgICAgIHNldEF0dHIoc2xpZGUsICdhcmlhLXNldHNpemUnLCBTdHJpbmcobnVtU2xpZGVzKSk7XG4gICAgICB9KTsgLy8gU2V0IHNsaWRlIGFzIGFjdGl2ZVxuXG4gICAgICB0aGlzLnNldFNsaWRlKGluZGV4KTtcbiAgICAgIHRoaXMuc3RhcnQodGhpcy5pc1BhdXNlZCk7XG4gICAgfSxcbiAgICBjYWxjRGlyZWN0aW9uOiBmdW5jdGlvbiBjYWxjRGlyZWN0aW9uKCkge1xuICAgICAgdmFyIGRpcmVjdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogbnVsbDtcbiAgICAgIHZhciBjdXJJbmRleCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMDtcbiAgICAgIHZhciBuZXh0SW5kZXggPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDA7XG5cbiAgICAgIGlmICghZGlyZWN0aW9uKSB7XG4gICAgICAgIHJldHVybiBuZXh0SW5kZXggPiBjdXJJbmRleCA/IERJUkVDVElPTi5uZXh0IDogRElSRUNUSU9OLnByZXY7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBESVJFQ1RJT05bZGlyZWN0aW9uXTtcbiAgICB9LFxuICAgIGhhbmRsZUNsaWNrOiBmdW5jdGlvbiBoYW5kbGVDbGljayhldnQsIGZuKSB7XG4gICAgICB2YXIga2V5Q29kZSA9IGV2dC5rZXlDb2RlO1xuXG4gICAgICBpZiAoZXZ0LnR5cGUgPT09ICdjbGljaycgfHwga2V5Q29kZSA9PT0gS2V5Q29kZXMuU1BBQ0UgfHwga2V5Q29kZSA9PT0gS2V5Q29kZXMuRU5URVIpIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZm4oKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZVN3aXBlOiBmdW5jdGlvbiBoYW5kbGVTd2lwZSgpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IEpTRE9NIGRvZXNuJ3Qgc3VwcG9ydCB0b3VjaCBldmVudHMgKi9cbiAgICB7XG4gICAgICB2YXIgYWJzRGVsdGFYID0gTWF0aC5hYnModGhpcy50b3VjaERlbHRhWCk7XG5cbiAgICAgIGlmIChhYnNEZWx0YVggPD0gU1dJUEVfVEhSRVNIT0xEKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIGRpcmVjdGlvbiA9IGFic0RlbHRhWCAvIHRoaXMudG91Y2hEZWx0YVg7IC8vIFJlc2V0IHRvdWNoIGRlbHRhIFhcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9wdWxsLzI4NTU4XG5cbiAgICAgIHRoaXMudG91Y2hEZWx0YVggPSAwO1xuXG4gICAgICBpZiAoZGlyZWN0aW9uID4gMCkge1xuICAgICAgICAvLyBTd2lwZSBsZWZ0XG4gICAgICAgIHRoaXMucHJldigpO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPCAwKSB7XG4gICAgICAgIC8vIFN3aXBlIHJpZ2h0XG4gICAgICAgIHRoaXMubmV4dCgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgdG91Y2hTdGFydDogZnVuY3Rpb24gdG91Y2hTdGFydChldnQpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IEpTRE9NIGRvZXNuJ3Qgc3VwcG9ydCB0b3VjaCBldmVudHMgKi9cbiAgICB7XG4gICAgICBpZiAoaGFzUG9pbnRlckV2ZW50U3VwcG9ydCAmJiBQb2ludGVyVHlwZVtldnQucG9pbnRlclR5cGUudG9VcHBlckNhc2UoKV0pIHtcbiAgICAgICAgdGhpcy50b3VjaFN0YXJ0WCA9IGV2dC5jbGllbnRYO1xuICAgICAgfSBlbHNlIGlmICghaGFzUG9pbnRlckV2ZW50U3VwcG9ydCkge1xuICAgICAgICB0aGlzLnRvdWNoU3RhcnRYID0gZXZ0LnRvdWNoZXNbMF0uY2xpZW50WDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHRvdWNoTW92ZTogZnVuY3Rpb24gdG91Y2hNb3ZlKGV2dClcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogSlNET00gZG9lc24ndCBzdXBwb3J0IHRvdWNoIGV2ZW50cyAqL1xuICAgIHtcbiAgICAgIC8vIEVuc3VyZSBzd2lwaW5nIHdpdGggb25lIHRvdWNoIGFuZCBub3QgcGluY2hpbmdcbiAgICAgIGlmIChldnQudG91Y2hlcyAmJiBldnQudG91Y2hlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRoaXMudG91Y2hEZWx0YVggPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50b3VjaERlbHRhWCA9IGV2dC50b3VjaGVzWzBdLmNsaWVudFggLSB0aGlzLnRvdWNoU3RhcnRYO1xuICAgICAgfVxuICAgIH0sXG4gICAgdG91Y2hFbmQ6IGZ1bmN0aW9uIHRvdWNoRW5kKGV2dClcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogSlNET00gZG9lc24ndCBzdXBwb3J0IHRvdWNoIGV2ZW50cyAqL1xuICAgIHtcbiAgICAgIGlmIChoYXNQb2ludGVyRXZlbnRTdXBwb3J0ICYmIFBvaW50ZXJUeXBlW2V2dC5wb2ludGVyVHlwZS50b1VwcGVyQ2FzZSgpXSkge1xuICAgICAgICB0aGlzLnRvdWNoRGVsdGFYID0gZXZ0LmNsaWVudFggLSB0aGlzLnRvdWNoU3RhcnRYO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhhbmRsZVN3aXBlKCk7IC8vIElmIGl0J3MgYSB0b3VjaC1lbmFibGVkIGRldmljZSwgbW91c2VlbnRlci9sZWF2ZSBhcmUgZmlyZWQgYXNcbiAgICAgIC8vIHBhcnQgb2YgdGhlIG1vdXNlIGNvbXBhdGliaWxpdHkgZXZlbnRzIG9uIGZpcnN0IHRhcCAtIHRoZSBjYXJvdXNlbFxuICAgICAgLy8gd291bGQgc3RvcCBjeWNsaW5nIHVudGlsIHVzZXIgdGFwcGVkIG91dCBvZiBpdDtcbiAgICAgIC8vIGhlcmUsIHdlIGxpc3RlbiBmb3IgdG91Y2hlbmQsIGV4cGxpY2l0bHkgcGF1c2UgdGhlIGNhcm91c2VsXG4gICAgICAvLyAoYXMgaWYgaXQncyB0aGUgc2Vjb25kIHRpbWUgd2UgdGFwIG9uIGl0LCBtb3VzZWVudGVyIGNvbXBhdCBldmVudFxuICAgICAgLy8gaXMgTk9UIGZpcmVkKSBhbmQgYWZ0ZXIgYSB0aW1lb3V0ICh0byBhbGxvdyBmb3IgbW91c2UgY29tcGF0aWJpbGl0eVxuICAgICAgLy8gZXZlbnRzIHRvIGZpcmUpIHdlIGV4cGxpY2l0bHkgcmVzdGFydCBjeWNsaW5nXG5cbiAgICAgIHRoaXMucGF1c2UoZmFsc2UpO1xuXG4gICAgICBpZiAodGhpcy5fdG91Y2hUaW1lb3V0KSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90b3VjaFRpbWVvdXQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl90b3VjaFRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuc3RhcnQsIFRPVUNIX0VWRU5UX0NPTVBBVF9XQUlUICsgTWF0aC5tYXgoMTAwMCwgdGhpcy5pbnRlcnZhbCkpO1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgLy8gV3JhcHBlciBmb3Igc2xpZGVzXG4gICAgdmFyIGlubmVyID0gaCgnZGl2Jywge1xuICAgICAgcmVmOiAnaW5uZXInLFxuICAgICAgY2xhc3M6IFsnY2Fyb3VzZWwtaW5uZXInXSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGlkOiB0aGlzLnNhZmVJZCgnX19CVl9pbm5lcl8nKSxcbiAgICAgICAgcm9sZTogJ2xpc3QnXG4gICAgICB9XG4gICAgfSwgW3RoaXMubm9ybWFsaXplU2xvdCgnZGVmYXVsdCcpXSk7IC8vIFByZXYgYW5kIG5leHQgY29udHJvbHNcblxuICAgIHZhciBjb250cm9scyA9IGgoKTtcblxuICAgIGlmICh0aGlzLmNvbnRyb2xzKSB7XG4gICAgICB2YXIgcHJldkhhbmRsZXIgPSBmdW5jdGlvbiBwcmV2SGFuZGxlcihldnQpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgaWYgKCFfdGhpczMuaXNTbGlkaW5nKSB7XG4gICAgICAgICAgX3RoaXMzLmhhbmRsZUNsaWNrKGV2dCwgX3RoaXMzLnByZXYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICB2YXIgbmV4dEhhbmRsZXIgPSBmdW5jdGlvbiBuZXh0SGFuZGxlcihldnQpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgaWYgKCFfdGhpczMuaXNTbGlkaW5nKSB7XG4gICAgICAgICAgX3RoaXMzLmhhbmRsZUNsaWNrKGV2dCwgX3RoaXMzLm5leHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb250cm9scyA9IFtoKCdhJywge1xuICAgICAgICBjbGFzczogWydjYXJvdXNlbC1jb250cm9sLXByZXYnXSxcbiAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICBocmVmOiAnIycsXG4gICAgICAgICAgcm9sZTogJ2J1dHRvbicsXG4gICAgICAgICAgJ2FyaWEtY29udHJvbHMnOiB0aGlzLnNhZmVJZCgnX19CVl9pbm5lcl8nKSxcbiAgICAgICAgICAnYXJpYS1kaXNhYmxlZCc6IHRoaXMuaXNTbGlkaW5nID8gJ3RydWUnIDogbnVsbFxuICAgICAgICB9LFxuICAgICAgICBvbjoge1xuICAgICAgICAgIGNsaWNrOiBwcmV2SGFuZGxlcixcbiAgICAgICAgICBrZXlkb3duOiBwcmV2SGFuZGxlclxuICAgICAgICB9XG4gICAgICB9LCBbaCgnc3BhbicsIHtcbiAgICAgICAgY2xhc3M6IFsnY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24nXSxcbiAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAnYXJpYS1oaWRkZW4nOiAndHJ1ZSdcbiAgICAgICAgfVxuICAgICAgfSksIGgoJ3NwYW4nLCB7XG4gICAgICAgIGNsYXNzOiBbJ3NyLW9ubHknXVxuICAgICAgfSwgW3RoaXMubGFiZWxQcmV2XSldKSwgaCgnYScsIHtcbiAgICAgICAgY2xhc3M6IFsnY2Fyb3VzZWwtY29udHJvbC1uZXh0J10sXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgaHJlZjogJyMnLFxuICAgICAgICAgIHJvbGU6ICdidXR0b24nLFxuICAgICAgICAgICdhcmlhLWNvbnRyb2xzJzogdGhpcy5zYWZlSWQoJ19fQlZfaW5uZXJfJyksXG4gICAgICAgICAgJ2FyaWEtZGlzYWJsZWQnOiB0aGlzLmlzU2xpZGluZyA/ICd0cnVlJyA6IG51bGxcbiAgICAgICAgfSxcbiAgICAgICAgb246IHtcbiAgICAgICAgICBjbGljazogbmV4dEhhbmRsZXIsXG4gICAgICAgICAga2V5ZG93bjogbmV4dEhhbmRsZXJcbiAgICAgICAgfVxuICAgICAgfSwgW2goJ3NwYW4nLCB7XG4gICAgICAgIGNsYXNzOiBbJ2Nhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uJ10sXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgJ2FyaWEtaGlkZGVuJzogJ3RydWUnXG4gICAgICAgIH1cbiAgICAgIH0pLCBoKCdzcGFuJywge1xuICAgICAgICBjbGFzczogWydzci1vbmx5J11cbiAgICAgIH0sIFt0aGlzLmxhYmVsTmV4dF0pXSldO1xuICAgIH0gLy8gSW5kaWNhdG9yc1xuXG5cbiAgICB2YXIgaW5kaWNhdG9ycyA9IGgoJ29sJywge1xuICAgICAgY2xhc3M6IFsnY2Fyb3VzZWwtaW5kaWNhdG9ycyddLFxuICAgICAgZGlyZWN0aXZlczogW3tcbiAgICAgICAgbmFtZTogJ3Nob3cnLFxuICAgICAgICByYXdOYW1lOiAndi1zaG93JyxcbiAgICAgICAgdmFsdWU6IHRoaXMuaW5kaWNhdG9ycyxcbiAgICAgICAgZXhwcmVzc2lvbjogJ2luZGljYXRvcnMnXG4gICAgICB9XSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGlkOiB0aGlzLnNhZmVJZCgnX19CVl9pbmRpY2F0b3JzXycpLFxuICAgICAgICAnYXJpYS1oaWRkZW4nOiB0aGlzLmluZGljYXRvcnMgPyAnZmFsc2UnIDogJ3RydWUnLFxuICAgICAgICAnYXJpYS1sYWJlbCc6IHRoaXMubGFiZWxJbmRpY2F0b3JzLFxuICAgICAgICAnYXJpYS1vd25zJzogdGhpcy5zYWZlSWQoJ19fQlZfaW5uZXJfJylcbiAgICAgIH1cbiAgICB9LCB0aGlzLnNsaWRlcy5tYXAoZnVuY3Rpb24gKHNsaWRlLCBuKSB7XG4gICAgICByZXR1cm4gaCgnbGknLCB7XG4gICAgICAgIGtleTogXCJzbGlkZV9cIi5jb25jYXQobiksXG4gICAgICAgIGNsYXNzOiB7XG4gICAgICAgICAgYWN0aXZlOiBuID09PSBfdGhpczMuaW5kZXhcbiAgICAgICAgfSxcbiAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICByb2xlOiAnYnV0dG9uJyxcbiAgICAgICAgICBpZDogX3RoaXMzLnNhZmVJZChcIl9fQlZfaW5kaWNhdG9yX1wiLmNvbmNhdChuICsgMSwgXCJfXCIpKSxcbiAgICAgICAgICB0YWJpbmRleDogX3RoaXMzLmluZGljYXRvcnMgPyAnMCcgOiAnLTEnLFxuICAgICAgICAgICdhcmlhLWN1cnJlbnQnOiBuID09PSBfdGhpczMuaW5kZXggPyAndHJ1ZScgOiAnZmFsc2UnLFxuICAgICAgICAgICdhcmlhLWxhYmVsJzogXCJcIi5jb25jYXQoX3RoaXMzLmxhYmVsR290b1NsaWRlLCBcIiBcIikuY29uY2F0KG4gKyAxKSxcbiAgICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc6IF90aGlzMy5zbGlkZXNbbl0uaWQgfHwgbnVsbCxcbiAgICAgICAgICAnYXJpYS1jb250cm9scyc6IF90aGlzMy5zYWZlSWQoJ19fQlZfaW5uZXJfJylcbiAgICAgICAgfSxcbiAgICAgICAgb246IHtcbiAgICAgICAgICBjbGljazogZnVuY3Rpb24gY2xpY2soZXZ0KSB7XG4gICAgICAgICAgICBfdGhpczMuaGFuZGxlQ2xpY2soZXZ0LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIF90aGlzMy5zZXRTbGlkZShuKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sXG4gICAgICAgICAga2V5ZG93bjogZnVuY3Rpb24ga2V5ZG93bihldnQpIHtcbiAgICAgICAgICAgIF90aGlzMy5oYW5kbGVDbGljayhldnQsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgX3RoaXMzLnNldFNsaWRlKG4pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KSk7XG4gICAgdmFyIG9uID0ge1xuICAgICAgbW91c2VlbnRlcjogdGhpcy5ub0hvdmVyUGF1c2UgPyBub29wIDogdGhpcy5wYXVzZSxcbiAgICAgIG1vdXNlbGVhdmU6IHRoaXMubm9Ib3ZlclBhdXNlID8gbm9vcCA6IHRoaXMucmVzdGFydCxcbiAgICAgIGZvY3VzaW46IHRoaXMucGF1c2UsXG4gICAgICBmb2N1c291dDogdGhpcy5yZXN0YXJ0LFxuICAgICAga2V5ZG93bjogZnVuY3Rpb24ga2V5ZG93bihldnQpIHtcbiAgICAgICAgaWYgKC9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QoZXZ0LnRhcmdldC50YWdOYW1lKSkge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGtleUNvZGUgPSBldnQua2V5Q29kZTtcblxuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gS2V5Q29kZXMuTEVGVCB8fCBrZXlDb2RlID09PSBLZXlDb2Rlcy5SSUdIVCkge1xuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgIF90aGlzM1trZXlDb2RlID09PSBLZXlDb2Rlcy5MRUZUID8gJ3ByZXYnIDogJ25leHQnXSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTsgLy8gVG91Y2ggc3VwcG9ydCBldmVudCBoYW5kbGVycyBmb3IgZW52aXJvbm1lbnRcblxuICAgIGlmICghdGhpcy5ub1RvdWNoICYmIGhhc1RvdWNoU3VwcG9ydCkge1xuICAgICAgLy8gQXR0YWNoIGFwcHJvcHJpYXRlIGxpc3RlbmVycyAocHJlcGVuZCBldmVudCBuYW1lIHdpdGggJyYnIGZvciBwYXNzaXZlIG1vZGUpXG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBKU0RPTSBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnRzICovXG4gICAgICBpZiAoaGFzUG9pbnRlckV2ZW50U3VwcG9ydCkge1xuICAgICAgICBvblsnJnBvaW50ZXJkb3duJ10gPSB0aGlzLnRvdWNoU3RhcnQ7XG4gICAgICAgIG9uWycmcG9pbnRlcnVwJ10gPSB0aGlzLnRvdWNoRW5kO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25bJyZ0b3VjaHN0YXJ0J10gPSB0aGlzLnRvdWNoU3RhcnQ7XG4gICAgICAgIG9uWycmdG91Y2htb3ZlJ10gPSB0aGlzLnRvdWNoTW92ZTtcbiAgICAgICAgb25bJyZ0b3VjaGVuZCddID0gdGhpcy50b3VjaEVuZDtcbiAgICAgIH1cbiAgICB9IC8vIFJldHVybiB0aGUgY2Fyb3VzZWxcblxuXG4gICAgcmV0dXJuIGgoJ2RpdicsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnY2Fyb3VzZWwnLFxuICAgICAgY2xhc3M6IHtcbiAgICAgICAgc2xpZGU6ICF0aGlzLm5vQW5pbWF0aW9uLFxuICAgICAgICAnY2Fyb3VzZWwtZmFkZSc6ICF0aGlzLm5vQW5pbWF0aW9uICYmIHRoaXMuZmFkZSxcbiAgICAgICAgJ3BvaW50ZXItZXZlbnQnOiAhdGhpcy5ub1RvdWNoICYmIGhhc1RvdWNoU3VwcG9ydCAmJiBoYXNQb2ludGVyRXZlbnRTdXBwb3J0XG4gICAgICB9LFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgYmFja2dyb3VuZDogdGhpcy5iYWNrZ3JvdW5kXG4gICAgICB9LFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcm9sZTogJ3JlZ2lvbicsXG4gICAgICAgIGlkOiB0aGlzLnNhZmVJZCgpLFxuICAgICAgICAnYXJpYS1idXN5JzogdGhpcy5pc1NsaWRpbmcgPyAndHJ1ZScgOiAnZmFsc2UnXG4gICAgICB9LFxuICAgICAgb246IG9uXG4gICAgfSwgW2lubmVyLCBjb250cm9scywgaW5kaWNhdG9yc10pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Nhcm91c2VsL2Nhcm91c2VsLmpzXG4vLyBtb2R1bGUgaWQgPSAxMjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///121\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BCardGroup; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n\n\nvar props = {\n tag: {\n type: String,\n default: 'div'\n },\n deck: {\n type: Boolean,\n default: false\n },\n columns: {\n type: Boolean,\n default: false\n }\n}; // @vue/component\n\nvar BCardGroup =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BCardGroup',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var baseClass = 'card-group';\n\n if (props.deck) {\n baseClass = 'card-deck';\n } else if (props.columns) {\n baseClass = 'card-columns';\n }\n\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n class: baseClass\n }), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJkL2NhcmQtZ3JvdXAuanM/ZjE4OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNvQjtBQUMvQztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVLO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLHdCQUF3QixvRkFBUztBQUNqQztBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMTIxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgbWVyZ2VEYXRhIH0gZnJvbSAndnVlLWZ1bmN0aW9uYWwtZGF0YS1tZXJnZSc7XG5leHBvcnQgdmFyIHByb3BzID0ge1xuICB0YWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ2RpdidcbiAgfSxcbiAgZGVjazoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgY29sdW1uczoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfVxufTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCQ2FyZEdyb3VwID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQkNhcmRHcm91cCcsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiBwcm9wcyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgICB2YXIgYmFzZUNsYXNzID0gJ2NhcmQtZ3JvdXAnO1xuXG4gICAgaWYgKHByb3BzLmRlY2spIHtcbiAgICAgIGJhc2VDbGFzcyA9ICdjYXJkLWRlY2snO1xuICAgIH0gZWxzZSBpZiAocHJvcHMuY29sdW1ucykge1xuICAgICAgYmFzZUNsYXNzID0gJ2NhcmQtY29sdW1ucyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGgocHJvcHMudGFnLCBtZXJnZURhdGEoZGF0YSwge1xuICAgICAgY2xhc3M6IGJhc2VDbGFzc1xuICAgIH0pLCBjaGlsZHJlbik7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvY2FyZC9jYXJkLWdyb3VwLmpzXG4vLyBtb2R1bGUgaWQgPSAxMjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///121\n"); /***/ }), /* 122 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BCarouselSlide; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_env__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_html__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__image_img__ = __webpack_require__(38);\n\n\n\n\n\n\nvar props = {\n imgSrc: {\n type: String // default: undefined\n\n },\n imgAlt: {\n type: String // default: undefined\n\n },\n imgWidth: {\n type: [Number, String] // default: undefined\n\n },\n imgHeight: {\n type: [Number, String] // default: undefined\n\n },\n imgBlank: {\n type: Boolean,\n default: false\n },\n imgBlankColor: {\n type: String,\n default: 'transparent'\n },\n contentVisibleUp: {\n type: String\n },\n contentTag: {\n type: String,\n default: 'div'\n },\n caption: {\n type: String\n },\n captionHtml: {\n type: String\n },\n captionTag: {\n type: String,\n default: 'h3'\n },\n text: {\n type: String\n },\n textHtml: {\n type: String\n },\n textTag: {\n type: String,\n default: 'p'\n },\n background: {\n type: String\n }\n}; // @vue/component\n\nvar BCarouselSlide =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BCarouselSlide',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__[\"a\" /* default */]],\n inject: {\n bvCarousel: {\n default: function _default() {\n return {\n // Explicitly disable touch if not a child of carousel\n noTouch: true\n };\n }\n }\n },\n props: props,\n computed: {\n contentClasses: function contentClasses() {\n return [this.contentVisibleUp ? 'd-none' : '', this.contentVisibleUp ? \"d-\".concat(this.contentVisibleUp, \"-block\") : ''];\n },\n computedWidth: function computedWidth() {\n // Use local width, or try parent width\n return this.imgWidth || this.bvCarousel.imgWidth || null;\n },\n computedHeight: function computedHeight() {\n // Use local height, or try parent height\n return this.imgHeight || this.bvCarousel.imgHeight || null;\n }\n },\n render: function render(h) {\n var noDrag = !this.bvCarousel.noTouch && __WEBPACK_IMPORTED_MODULE_3__utils_env__[\"h\" /* hasTouchSupport */];\n var img = this.normalizeSlot('img');\n\n if (!img && (this.imgSrc || this.imgBlank)) {\n img = h(__WEBPACK_IMPORTED_MODULE_5__image_img__[\"a\" /* BImg */], {\n props: {\n fluidGrow: true,\n block: true,\n src: this.imgSrc,\n blank: this.imgBlank,\n blankColor: this.imgBlankColor,\n width: this.computedWidth,\n height: this.computedHeight,\n alt: this.imgAlt\n },\n // Touch support event handler\n on: noDrag ? {\n dragstart: function dragstart(e) {\n /* istanbul ignore next: difficult to test in JSDOM */\n e.preventDefault();\n }\n } : {}\n });\n }\n\n if (!img) {\n img = h();\n }\n\n var content = h();\n var contentChildren = [this.caption || this.captionHtml ? h(this.captionTag, {\n domProps: Object(__WEBPACK_IMPORTED_MODULE_4__utils_html__[\"a\" /* htmlOrText */])(this.captionHtml, this.caption)\n }) : false, this.text || this.textHtml ? h(this.textTag, {\n domProps: Object(__WEBPACK_IMPORTED_MODULE_4__utils_html__[\"a\" /* htmlOrText */])(this.textHtml, this.text)\n }) : false, this.normalizeSlot('default') || false];\n\n if (contentChildren.some(Boolean)) {\n content = h(this.contentTag, {\n staticClass: 'carousel-caption',\n class: this.contentClasses\n }, contentChildren.map(function (i) {\n return i || h();\n }));\n }\n\n return h('div', {\n staticClass: 'carousel-item',\n style: {\n background: this.background || this.bvCarousel.background || null\n },\n attrs: {\n id: this.safeId(),\n role: 'listitem'\n }\n }, [img, content]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJvdXNlbC9jYXJvdXNlbC1zbGlkZS5qcz9mM2MyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDSTtBQUN1QjtBQUNYO0FBQ0o7QUFDVjtBQUM3QjtBQUNQO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUs7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQSxXQUFXLDJEQUFPLEVBQUUsdUVBQWtCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSw2Q0FBNkMsbUVBQWU7QUFDNUQ7O0FBRUE7QUFDQSxjQUFjLHdEQUFJO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCLHVFQUFVO0FBQzFCLEtBQUs7QUFDTCxnQkFBZ0IsdUVBQVU7QUFDMUIsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMTIyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IGlkTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2lkJztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JztcbmltcG9ydCB7IGhhc1RvdWNoU3VwcG9ydCB9IGZyb20gJy4uLy4uL3V0aWxzL2Vudic7XG5pbXBvcnQgeyBodG1sT3JUZXh0IH0gZnJvbSAnLi4vLi4vdXRpbHMvaHRtbCc7XG5pbXBvcnQgeyBCSW1nIH0gZnJvbSAnLi4vaW1hZ2UvaW1nJztcbmV4cG9ydCB2YXIgcHJvcHMgPSB7XG4gIGltZ1NyYzoge1xuICAgIHR5cGU6IFN0cmluZyAvLyBkZWZhdWx0OiB1bmRlZmluZWRcblxuICB9LFxuICBpbWdBbHQ6IHtcbiAgICB0eXBlOiBTdHJpbmcgLy8gZGVmYXVsdDogdW5kZWZpbmVkXG5cbiAgfSxcbiAgaW1nV2lkdGg6IHtcbiAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddIC8vIGRlZmF1bHQ6IHVuZGVmaW5lZFxuXG4gIH0sXG4gIGltZ0hlaWdodDoge1xuICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10gLy8gZGVmYXVsdDogdW5kZWZpbmVkXG5cbiAgfSxcbiAgaW1nQmxhbms6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIGltZ0JsYW5rQ29sb3I6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ3RyYW5zcGFyZW50J1xuICB9LFxuICBjb250ZW50VmlzaWJsZVVwOiB7XG4gICAgdHlwZTogU3RyaW5nXG4gIH0sXG4gIGNvbnRlbnRUYWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ2RpdidcbiAgfSxcbiAgY2FwdGlvbjoge1xuICAgIHR5cGU6IFN0cmluZ1xuICB9LFxuICBjYXB0aW9uSHRtbDoge1xuICAgIHR5cGU6IFN0cmluZ1xuICB9LFxuICBjYXB0aW9uVGFnOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdoMydcbiAgfSxcbiAgdGV4dDoge1xuICAgIHR5cGU6IFN0cmluZ1xuICB9LFxuICB0ZXh0SHRtbDoge1xuICAgIHR5cGU6IFN0cmluZ1xuICB9LFxuICB0ZXh0VGFnOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdwJ1xuICB9LFxuICBiYWNrZ3JvdW5kOiB7XG4gICAgdHlwZTogU3RyaW5nXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkNhcm91c2VsU2xpZGUgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCQ2Fyb3VzZWxTbGlkZScsXG4gIG1peGluczogW2lkTWl4aW4sIG5vcm1hbGl6ZVNsb3RNaXhpbl0sXG4gIGluamVjdDoge1xuICAgIGJ2Q2Fyb3VzZWw6IHtcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC8vIEV4cGxpY2l0bHkgZGlzYWJsZSB0b3VjaCBpZiBub3QgYSBjaGlsZCBvZiBjYXJvdXNlbFxuICAgICAgICAgIG5vVG91Y2g6IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHByb3BzOiBwcm9wcyxcbiAgY29tcHV0ZWQ6IHtcbiAgICBjb250ZW50Q2xhc3NlczogZnVuY3Rpb24gY29udGVudENsYXNzZXMoKSB7XG4gICAgICByZXR1cm4gW3RoaXMuY29udGVudFZpc2libGVVcCA/ICdkLW5vbmUnIDogJycsIHRoaXMuY29udGVudFZpc2libGVVcCA/IFwiZC1cIi5jb25jYXQodGhpcy5jb250ZW50VmlzaWJsZVVwLCBcIi1ibG9ja1wiKSA6ICcnXTtcbiAgICB9LFxuICAgIGNvbXB1dGVkV2lkdGg6IGZ1bmN0aW9uIGNvbXB1dGVkV2lkdGgoKSB7XG4gICAgICAvLyBVc2UgbG9jYWwgd2lkdGgsIG9yIHRyeSBwYXJlbnQgd2lkdGhcbiAgICAgIHJldHVybiB0aGlzLmltZ1dpZHRoIHx8IHRoaXMuYnZDYXJvdXNlbC5pbWdXaWR0aCB8fCBudWxsO1xuICAgIH0sXG4gICAgY29tcHV0ZWRIZWlnaHQ6IGZ1bmN0aW9uIGNvbXB1dGVkSGVpZ2h0KCkge1xuICAgICAgLy8gVXNlIGxvY2FsIGhlaWdodCwgb3IgdHJ5IHBhcmVudCBoZWlnaHRcbiAgICAgIHJldHVybiB0aGlzLmltZ0hlaWdodCB8fCB0aGlzLmJ2Q2Fyb3VzZWwuaW1nSGVpZ2h0IHx8IG51bGw7XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyIG5vRHJhZyA9ICF0aGlzLmJ2Q2Fyb3VzZWwubm9Ub3VjaCAmJiBoYXNUb3VjaFN1cHBvcnQ7XG4gICAgdmFyIGltZyA9IHRoaXMubm9ybWFsaXplU2xvdCgnaW1nJyk7XG5cbiAgICBpZiAoIWltZyAmJiAodGhpcy5pbWdTcmMgfHwgdGhpcy5pbWdCbGFuaykpIHtcbiAgICAgIGltZyA9IGgoQkltZywge1xuICAgICAgICBwcm9wczoge1xuICAgICAgICAgIGZsdWlkR3JvdzogdHJ1ZSxcbiAgICAgICAgICBibG9jazogdHJ1ZSxcbiAgICAgICAgICBzcmM6IHRoaXMuaW1nU3JjLFxuICAgICAgICAgIGJsYW5rOiB0aGlzLmltZ0JsYW5rLFxuICAgICAgICAgIGJsYW5rQ29sb3I6IHRoaXMuaW1nQmxhbmtDb2xvcixcbiAgICAgICAgICB3aWR0aDogdGhpcy5jb21wdXRlZFdpZHRoLFxuICAgICAgICAgIGhlaWdodDogdGhpcy5jb21wdXRlZEhlaWdodCxcbiAgICAgICAgICBhbHQ6IHRoaXMuaW1nQWx0XG4gICAgICAgIH0sXG4gICAgICAgIC8vIFRvdWNoIHN1cHBvcnQgZXZlbnQgaGFuZGxlclxuICAgICAgICBvbjogbm9EcmFnID8ge1xuICAgICAgICAgIGRyYWdzdGFydDogZnVuY3Rpb24gZHJhZ3N0YXJ0KGUpIHtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBkaWZmaWN1bHQgdG8gdGVzdCBpbiBKU0RPTSAqL1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSA6IHt9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIWltZykge1xuICAgICAgaW1nID0gaCgpO1xuICAgIH1cblxuICAgIHZhciBjb250ZW50ID0gaCgpO1xuICAgIHZhciBjb250ZW50Q2hpbGRyZW4gPSBbdGhpcy5jYXB0aW9uIHx8IHRoaXMuY2FwdGlvbkh0bWwgPyBoKHRoaXMuY2FwdGlvblRhZywge1xuICAgICAgZG9tUHJvcHM6IGh0bWxPclRleHQodGhpcy5jYXB0aW9uSHRtbCwgdGhpcy5jYXB0aW9uKVxuICAgIH0pIDogZmFsc2UsIHRoaXMudGV4dCB8fCB0aGlzLnRleHRIdG1sID8gaCh0aGlzLnRleHRUYWcsIHtcbiAgICAgIGRvbVByb3BzOiBodG1sT3JUZXh0KHRoaXMudGV4dEh0bWwsIHRoaXMudGV4dClcbiAgICB9KSA6IGZhbHNlLCB0aGlzLm5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnKSB8fCBmYWxzZV07XG5cbiAgICBpZiAoY29udGVudENoaWxkcmVuLnNvbWUoQm9vbGVhbikpIHtcbiAgICAgIGNvbnRlbnQgPSBoKHRoaXMuY29udGVudFRhZywge1xuICAgICAgICBzdGF0aWNDbGFzczogJ2Nhcm91c2VsLWNhcHRpb24nLFxuICAgICAgICBjbGFzczogdGhpcy5jb250ZW50Q2xhc3Nlc1xuICAgICAgfSwgY29udGVudENoaWxkcmVuLm1hcChmdW5jdGlvbiAoaSkge1xuICAgICAgICByZXR1cm4gaSB8fCBoKCk7XG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGgoJ2RpdicsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnY2Fyb3VzZWwtaXRlbScsXG4gICAgICBzdHlsZToge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0aGlzLmJhY2tncm91bmQgfHwgdGhpcy5idkNhcm91c2VsLmJhY2tncm91bmQgfHwgbnVsbFxuICAgICAgfSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGlkOiB0aGlzLnNhZmVJZCgpLFxuICAgICAgICByb2xlOiAnbGlzdGl0ZW0nXG4gICAgICB9XG4gICAgfSwgW2ltZywgY29udGVudF0pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Nhcm91c2VsL2Nhcm91c2VsLXNsaWRlLmpzXG4vLyBtb2R1bGUgaWQgPSAxMjJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///122\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return CarouselPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__carousel__ = __webpack_require__(123);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__carousel_slide__ = __webpack_require__(124);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BCarousel */\n/* unused harmony reexport BCarouselSlide */\n\n\n\nvar CarouselPlugin =\n/*#__PURE*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BCarousel: __WEBPACK_IMPORTED_MODULE_0__carousel__[\"a\" /* BCarousel */],\n BCarouselSlide: __WEBPACK_IMPORTED_MODULE_1__carousel_slide__[\"a\" /* BCarouselSlide */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJvdXNlbC9pbmRleC5qcz81YzZiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF1QztBQUNXO0FBQ0U7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxlQUFlLDREQUFTO0FBQ3hCLG9CQUFvQix1RUFBYztBQUNsQztBQUNBLENBQUMiLCJmaWxlIjoiMTIyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkNhcm91c2VsIH0gZnJvbSAnLi9jYXJvdXNlbCc7XG5pbXBvcnQgeyBCQ2Fyb3VzZWxTbGlkZSB9IGZyb20gJy4vY2Fyb3VzZWwtc2xpZGUnO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIENhcm91c2VsUGx1Z2luID1cbi8qI19fUFVSRSovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJDYXJvdXNlbDogQkNhcm91c2VsLFxuICAgIEJDYXJvdXNlbFNsaWRlOiBCQ2Fyb3VzZWxTbGlkZVxuICB9XG59KTtcbmV4cG9ydCB7IENhcm91c2VsUGx1Z2luLCBCQ2Fyb3VzZWwsIEJDYXJvdXNlbFNsaWRlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJvdXNlbC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTIyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///122\n"); /***/ }), /* 123 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BCollapse; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_listen_on_root__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_env__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_dom__ = __webpack_require__(6);\n\n\n\n\n\n // Events we emit on $root\n\nvar EVENT_STATE = 'bv::collapse::state';\nvar EVENT_ACCORDION = 'bv::collapse::accordion'; // Private event we emit on `$root` to ensure the toggle state is\n// always synced. It gets emitted even if the state has not changed!\n// This event is NOT to be documented as people should not be using it\n\nvar EVENT_STATE_SYNC = 'bv::collapse::sync::state'; // Events we listen to on `$root`\n\nvar EVENT_TOGGLE = 'bv::toggle::collapse';\nvar EVENT_STATE_REQUEST = 'bv::request::collapse::state'; // Event listener options\n\nvar EventOptions = {\n passive: true,\n capture: false\n}; // @vue/component\n\nvar BCollapse =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BCollapse',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_listen_on_root__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__mixins_normalize_slot__[\"a\" /* default */]],\n model: {\n prop: 'visible',\n event: 'input'\n },\n props: {\n isNav: {\n type: Boolean,\n default: false\n },\n accordion: {\n type: String,\n default: null\n },\n visible: {\n type: Boolean,\n default: false\n },\n tag: {\n type: String,\n default: 'div'\n }\n },\n data: function data() {\n return {\n show: this.visible,\n transitioning: false\n };\n },\n computed: {\n classObject: function classObject() {\n return {\n 'navbar-collapse': this.isNav,\n collapse: !this.transitioning,\n show: this.show && !this.transitioning\n };\n }\n },\n watch: {\n visible: function visible(newVal) {\n if (newVal !== this.show) {\n this.show = newVal;\n }\n },\n show: function show(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.emitState();\n }\n }\n },\n created: function created() {\n this.show = this.visible;\n },\n mounted: function mounted() {\n var _this = this;\n\n this.show = this.visible; // Listen for toggle events to open/close us\n\n this.listenOnRoot(EVENT_TOGGLE, this.handleToggleEvt); // Listen to other collapses for accordion events\n\n this.listenOnRoot(EVENT_ACCORDION, this.handleAccordionEvt);\n\n if (this.isNav) {\n // Set up handlers\n this.setWindowEvents(true);\n this.handleResize();\n }\n\n this.$nextTick(function () {\n _this.emitState();\n }); // Listen for \"Sync state\" requests from `v-b-toggle`\n\n this.listenOnRoot(EVENT_STATE_REQUEST, function (id) {\n if (id === _this.safeId()) {\n _this.$nextTick(_this.emitSync);\n }\n });\n },\n updated: function updated() {\n // Emit a private event every time this component updates to ensure\n // the toggle button is in sync with the collapse's state\n // It is emitted regardless if the visible state changes\n this.emitSync();\n },\n deactivated: function deactivated()\n /* istanbul ignore next */\n {\n if (this.isNav) {\n this.setWindowEvents(false);\n }\n },\n activated: function activated()\n /* istanbul ignore next */\n {\n if (this.isNav) {\n this.setWindowEvents(true);\n }\n\n this.emitSync();\n },\n beforeDestroy: function beforeDestroy() {\n // Trigger state emit if needed\n this.show = false;\n\n if (this.isNav && __WEBPACK_IMPORTED_MODULE_4__utils_env__[\"j\" /* isBrowser */]) {\n this.setWindowEvents(false);\n }\n },\n methods: {\n setWindowEvents: function setWindowEvents(on) {\n var method = on ? __WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"f\" /* eventOn */] : __WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"e\" /* eventOff */];\n method(window, 'resize', this.handleResize, EventOptions);\n method(window, 'orientationchange', this.handleResize, EventOptions);\n },\n toggle: function toggle() {\n this.show = !this.show;\n },\n onEnter: function onEnter(el) {\n el.style.height = 0;\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"t\" /* reflow */])(el);\n el.style.height = el.scrollHeight + 'px';\n this.transitioning = true; // This should be moved out so we can add cancellable events\n\n this.$emit('show');\n },\n onAfterEnter: function onAfterEnter(el) {\n el.style.height = null;\n this.transitioning = false;\n this.$emit('shown');\n },\n onLeave: function onLeave(el) {\n el.style.height = 'auto';\n el.style.display = 'block';\n el.style.height = Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"h\" /* getBCR */])(el).height + 'px';\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"t\" /* reflow */])(el);\n this.transitioning = true;\n el.style.height = 0; // This should be moved out so we can add cancellable events\n\n this.$emit('hide');\n },\n onAfterLeave: function onAfterLeave(el) {\n el.style.height = null;\n this.transitioning = false;\n this.$emit('hidden');\n },\n emitState: function emitState() {\n this.$emit('input', this.show); // Let v-b-toggle know the state of this collapse\n\n this.$root.$emit(EVENT_STATE, this.safeId(), this.show);\n\n if (this.accordion && this.show) {\n // Tell the other collapses in this accordion to close\n this.$root.$emit(EVENT_ACCORDION, this.safeId(), this.accordion);\n }\n },\n emitSync: function emitSync() {\n // Emit a private event every time this component updates to ensure\n // the toggle button is in sync with the collapse's state\n // It is emitted regardless if the visible state changes\n this.$root.$emit(EVENT_STATE_SYNC, this.safeId(), this.show);\n },\n checkDisplayBlock: function checkDisplayBlock() {\n // Check to see if the collapse has `display: block !important;` set.\n // We can't set `display: none;` directly on this.$el, as it would\n // trigger a new transition to start (or cancel a current one).\n var restore = Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"m\" /* hasClass */])(this.$el, 'show');\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"v\" /* removeClass */])(this.$el, 'show');\n var isBlock = Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"j\" /* getCS */])(this.$el).display === 'block';\n restore && Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"b\" /* addClass */])(this.$el, 'show');\n return isBlock;\n },\n clickHandler: function clickHandler(evt) {\n // If we are in a nav/navbar, close the collapse when non-disabled link clicked\n var el = evt.target;\n\n if (!this.isNav || !el || Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"j\" /* getCS */])(this.$el).display !== 'block') {\n /* istanbul ignore next: can't test getComputedStyle in JSDOM */\n return;\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"q\" /* matches */])(el, '.nav-link,.dropdown-item') || Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"c\" /* closest */])('.nav-link,.dropdown-item', el)) {\n if (!this.checkDisplayBlock()) {\n // Only close the collapse if it is not forced to be 'display: block !important;'\n this.show = false;\n }\n }\n },\n handleToggleEvt: function handleToggleEvt(target) {\n if (target !== this.safeId()) {\n return;\n }\n\n this.toggle();\n },\n handleAccordionEvt: function handleAccordionEvt(openedId, accordion) {\n if (!this.accordion || accordion !== this.accordion) {\n return;\n }\n\n if (openedId === this.safeId()) {\n // Open this collapse if not shown\n if (!this.show) {\n this.toggle();\n }\n } else {\n // Close this collapse if shown\n if (this.show) {\n this.toggle();\n }\n }\n },\n handleResize: function handleResize() {\n // Handler for orientation/resize to set collapsed state in nav/navbar\n this.show = Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"j\" /* getCS */])(this.$el).display === 'block';\n }\n },\n render: function render(h) {\n var content = h(this.tag, {\n class: this.classObject,\n directives: [{\n name: 'show',\n value: this.show\n }],\n attrs: {\n id: this.safeId()\n },\n on: {\n click: this.clickHandler\n }\n }, [this.normalizeSlot('default')]);\n return h('transition', {\n props: {\n enterClass: '',\n enterActiveClass: 'collapsing',\n enterToClass: '',\n leaveClass: '',\n leaveActiveClass: 'collapsing',\n leaveToClass: ''\n },\n on: {\n enter: this.onEnter,\n afterEnter: this.onAfterEnter,\n leave: this.onLeave,\n afterLeave: this.onAfterLeave\n }\n }, [content]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jb2xsYXBzZS9jb2xsYXBzZS5qcz9hMGMwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ0k7QUFDc0I7QUFDQztBQUNqQjtBQUNrRjs7QUFFOUg7QUFDQSxnREFBZ0Q7QUFDaEQ7QUFDQTs7QUFFQSxtREFBbUQ7O0FBRW5EO0FBQ0EseURBQXlEOztBQUV6RDtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVLO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0EsV0FBVywyREFBTyxFQUFFLHVFQUFpQixFQUFFLHVFQUFrQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSw2QkFBNkI7O0FBRTdCLDBEQUEwRDs7QUFFMUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLHNCQUFzQiw2REFBUztBQUMvQjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx3QkFBd0IsMkRBQU8sR0FBRyw0REFBUTtBQUMxQztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLE1BQU0sa0VBQU07QUFDWjtBQUNBLGdDQUFnQzs7QUFFaEM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGtFQUFNO0FBQzlCLE1BQU0sa0VBQU07QUFDWjtBQUNBLDBCQUEwQjs7QUFFMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxxQ0FBcUM7O0FBRXJDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxxRUFBcUU7QUFDckUscUNBQXFDO0FBQ3JDO0FBQ0Esb0JBQW9CLG9FQUFRO0FBQzVCLE1BQU0sdUVBQVc7QUFDakIsb0JBQW9CLGlFQUFLO0FBQ3pCLGlCQUFpQixvRUFBUTtBQUN6QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUEsZ0NBQWdDLGlFQUFLO0FBQ3JDO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLG1FQUFPLG9DQUFvQyxtRUFBTztBQUM1RDtBQUNBLDBGQUEwRjtBQUMxRjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxrQkFBa0IsaUVBQUs7QUFDdkI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgaWRNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvaWQnO1xuaW1wb3J0IGxpc3Rlbk9uUm9vdE1peGluIGZyb20gJy4uLy4uL21peGlucy9saXN0ZW4tb24tcm9vdCc7XG5pbXBvcnQgbm9ybWFsaXplU2xvdE1peGluIGZyb20gJy4uLy4uL21peGlucy9ub3JtYWxpemUtc2xvdCc7XG5pbXBvcnQgeyBpc0Jyb3dzZXIgfSBmcm9tICcuLi8uLi91dGlscy9lbnYnO1xuaW1wb3J0IHsgYWRkQ2xhc3MsIGhhc0NsYXNzLCByZW1vdmVDbGFzcywgY2xvc2VzdCwgbWF0Y2hlcywgcmVmbG93LCBnZXRDUywgZ2V0QkNSLCBldmVudE9uLCBldmVudE9mZiB9IGZyb20gJy4uLy4uL3V0aWxzL2RvbSc7IC8vIEV2ZW50cyB3ZSBlbWl0IG9uICRyb290XG5cbnZhciBFVkVOVF9TVEFURSA9ICdidjo6Y29sbGFwc2U6OnN0YXRlJztcbnZhciBFVkVOVF9BQ0NPUkRJT04gPSAnYnY6OmNvbGxhcHNlOjphY2NvcmRpb24nOyAvLyBQcml2YXRlIGV2ZW50IHdlIGVtaXQgb24gYCRyb290YCB0byBlbnN1cmUgdGhlIHRvZ2dsZSBzdGF0ZSBpc1xuLy8gYWx3YXlzIHN5bmNlZC4gSXQgZ2V0cyBlbWl0dGVkIGV2ZW4gaWYgdGhlIHN0YXRlIGhhcyBub3QgY2hhbmdlZCFcbi8vIFRoaXMgZXZlbnQgaXMgTk9UIHRvIGJlIGRvY3VtZW50ZWQgYXMgcGVvcGxlIHNob3VsZCBub3QgYmUgdXNpbmcgaXRcblxudmFyIEVWRU5UX1NUQVRFX1NZTkMgPSAnYnY6OmNvbGxhcHNlOjpzeW5jOjpzdGF0ZSc7IC8vIEV2ZW50cyB3ZSBsaXN0ZW4gdG8gb24gYCRyb290YFxuXG52YXIgRVZFTlRfVE9HR0xFID0gJ2J2Ojp0b2dnbGU6OmNvbGxhcHNlJztcbnZhciBFVkVOVF9TVEFURV9SRVFVRVNUID0gJ2J2OjpyZXF1ZXN0Ojpjb2xsYXBzZTo6c3RhdGUnOyAvLyBFdmVudCBsaXN0ZW5lciBvcHRpb25zXG5cbnZhciBFdmVudE9wdGlvbnMgPSB7XG4gIHBhc3NpdmU6IHRydWUsXG4gIGNhcHR1cmU6IGZhbHNlXG59OyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJDb2xsYXBzZSA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JDb2xsYXBzZScsXG4gIG1peGluczogW2lkTWl4aW4sIGxpc3Rlbk9uUm9vdE1peGluLCBub3JtYWxpemVTbG90TWl4aW5dLFxuICBtb2RlbDoge1xuICAgIHByb3A6ICd2aXNpYmxlJyxcbiAgICBldmVudDogJ2lucHV0J1xuICB9LFxuICBwcm9wczoge1xuICAgIGlzTmF2OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGFjY29yZGlvbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgdmlzaWJsZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICB0YWc6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdkaXYnXG4gICAgfVxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzaG93OiB0aGlzLnZpc2libGUsXG4gICAgICB0cmFuc2l0aW9uaW5nOiBmYWxzZVxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgY2xhc3NPYmplY3Q6IGZ1bmN0aW9uIGNsYXNzT2JqZWN0KCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJ25hdmJhci1jb2xsYXBzZSc6IHRoaXMuaXNOYXYsXG4gICAgICAgIGNvbGxhcHNlOiAhdGhpcy50cmFuc2l0aW9uaW5nLFxuICAgICAgICBzaG93OiB0aGlzLnNob3cgJiYgIXRoaXMudHJhbnNpdGlvbmluZ1xuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgdmlzaWJsZTogZnVuY3Rpb24gdmlzaWJsZShuZXdWYWwpIHtcbiAgICAgIGlmIChuZXdWYWwgIT09IHRoaXMuc2hvdykge1xuICAgICAgICB0aGlzLnNob3cgPSBuZXdWYWw7XG4gICAgICB9XG4gICAgfSxcbiAgICBzaG93OiBmdW5jdGlvbiBzaG93KG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICBpZiAobmV3VmFsICE9PSBvbGRWYWwpIHtcbiAgICAgICAgdGhpcy5lbWl0U3RhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG4gICAgdGhpcy5zaG93ID0gdGhpcy52aXNpYmxlO1xuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLnNob3cgPSB0aGlzLnZpc2libGU7IC8vIExpc3RlbiBmb3IgdG9nZ2xlIGV2ZW50cyB0byBvcGVuL2Nsb3NlIHVzXG5cbiAgICB0aGlzLmxpc3Rlbk9uUm9vdChFVkVOVF9UT0dHTEUsIHRoaXMuaGFuZGxlVG9nZ2xlRXZ0KTsgLy8gTGlzdGVuIHRvIG90aGVyIGNvbGxhcHNlcyBmb3IgYWNjb3JkaW9uIGV2ZW50c1xuXG4gICAgdGhpcy5saXN0ZW5PblJvb3QoRVZFTlRfQUNDT1JESU9OLCB0aGlzLmhhbmRsZUFjY29yZGlvbkV2dCk7XG5cbiAgICBpZiAodGhpcy5pc05hdikge1xuICAgICAgLy8gU2V0IHVwIGhhbmRsZXJzXG4gICAgICB0aGlzLnNldFdpbmRvd0V2ZW50cyh0cnVlKTtcbiAgICAgIHRoaXMuaGFuZGxlUmVzaXplKCk7XG4gICAgfVxuXG4gICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuZW1pdFN0YXRlKCk7XG4gICAgfSk7IC8vIExpc3RlbiBmb3IgXCJTeW5jIHN0YXRlXCIgcmVxdWVzdHMgZnJvbSBgdi1iLXRvZ2dsZWBcblxuICAgIHRoaXMubGlzdGVuT25Sb290KEVWRU5UX1NUQVRFX1JFUVVFU1QsIGZ1bmN0aW9uIChpZCkge1xuICAgICAgaWYgKGlkID09PSBfdGhpcy5zYWZlSWQoKSkge1xuICAgICAgICBfdGhpcy4kbmV4dFRpY2soX3RoaXMuZW1pdFN5bmMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuICB1cGRhdGVkOiBmdW5jdGlvbiB1cGRhdGVkKCkge1xuICAgIC8vIEVtaXQgYSBwcml2YXRlIGV2ZW50IGV2ZXJ5IHRpbWUgdGhpcyBjb21wb25lbnQgdXBkYXRlcyB0byBlbnN1cmVcbiAgICAvLyB0aGUgdG9nZ2xlIGJ1dHRvbiBpcyBpbiBzeW5jIHdpdGggdGhlIGNvbGxhcHNlJ3Mgc3RhdGVcbiAgICAvLyBJdCBpcyBlbWl0dGVkIHJlZ2FyZGxlc3MgaWYgdGhlIHZpc2libGUgc3RhdGUgY2hhbmdlc1xuICAgIHRoaXMuZW1pdFN5bmMoKTtcbiAgfSxcbiAgZGVhY3RpdmF0ZWQ6IGZ1bmN0aW9uIGRlYWN0aXZhdGVkKClcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAge1xuICAgIGlmICh0aGlzLmlzTmF2KSB7XG4gICAgICB0aGlzLnNldFdpbmRvd0V2ZW50cyhmYWxzZSk7XG4gICAgfVxuICB9LFxuICBhY3RpdmF0ZWQ6IGZ1bmN0aW9uIGFjdGl2YXRlZCgpXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHtcbiAgICBpZiAodGhpcy5pc05hdikge1xuICAgICAgdGhpcy5zZXRXaW5kb3dFdmVudHModHJ1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0U3luYygpO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIC8vIFRyaWdnZXIgc3RhdGUgZW1pdCBpZiBuZWVkZWRcbiAgICB0aGlzLnNob3cgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLmlzTmF2ICYmIGlzQnJvd3Nlcikge1xuICAgICAgdGhpcy5zZXRXaW5kb3dFdmVudHMoZmFsc2UpO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHNldFdpbmRvd0V2ZW50czogZnVuY3Rpb24gc2V0V2luZG93RXZlbnRzKG9uKSB7XG4gICAgICB2YXIgbWV0aG9kID0gb24gPyBldmVudE9uIDogZXZlbnRPZmY7XG4gICAgICBtZXRob2Qod2luZG93LCAncmVzaXplJywgdGhpcy5oYW5kbGVSZXNpemUsIEV2ZW50T3B0aW9ucyk7XG4gICAgICBtZXRob2Qod2luZG93LCAnb3JpZW50YXRpb25jaGFuZ2UnLCB0aGlzLmhhbmRsZVJlc2l6ZSwgRXZlbnRPcHRpb25zKTtcbiAgICB9LFxuICAgIHRvZ2dsZTogZnVuY3Rpb24gdG9nZ2xlKCkge1xuICAgICAgdGhpcy5zaG93ID0gIXRoaXMuc2hvdztcbiAgICB9LFxuICAgIG9uRW50ZXI6IGZ1bmN0aW9uIG9uRW50ZXIoZWwpIHtcbiAgICAgIGVsLnN0eWxlLmhlaWdodCA9IDA7XG4gICAgICByZWZsb3coZWwpO1xuICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gZWwuc2Nyb2xsSGVpZ2h0ICsgJ3B4JztcbiAgICAgIHRoaXMudHJhbnNpdGlvbmluZyA9IHRydWU7IC8vIFRoaXMgc2hvdWxkIGJlIG1vdmVkIG91dCBzbyB3ZSBjYW4gYWRkIGNhbmNlbGxhYmxlIGV2ZW50c1xuXG4gICAgICB0aGlzLiRlbWl0KCdzaG93Jyk7XG4gICAgfSxcbiAgICBvbkFmdGVyRW50ZXI6IGZ1bmN0aW9uIG9uQWZ0ZXJFbnRlcihlbCkge1xuICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gbnVsbDtcbiAgICAgIHRoaXMudHJhbnNpdGlvbmluZyA9IGZhbHNlO1xuICAgICAgdGhpcy4kZW1pdCgnc2hvd24nKTtcbiAgICB9LFxuICAgIG9uTGVhdmU6IGZ1bmN0aW9uIG9uTGVhdmUoZWwpIHtcbiAgICAgIGVsLnN0eWxlLmhlaWdodCA9ICdhdXRvJztcbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gZ2V0QkNSKGVsKS5oZWlnaHQgKyAncHgnO1xuICAgICAgcmVmbG93KGVsKTtcbiAgICAgIHRoaXMudHJhbnNpdGlvbmluZyA9IHRydWU7XG4gICAgICBlbC5zdHlsZS5oZWlnaHQgPSAwOyAvLyBUaGlzIHNob3VsZCBiZSBtb3ZlZCBvdXQgc28gd2UgY2FuIGFkZCBjYW5jZWxsYWJsZSBldmVudHNcblxuICAgICAgdGhpcy4kZW1pdCgnaGlkZScpO1xuICAgIH0sXG4gICAgb25BZnRlckxlYXZlOiBmdW5jdGlvbiBvbkFmdGVyTGVhdmUoZWwpIHtcbiAgICAgIGVsLnN0eWxlLmhlaWdodCA9IG51bGw7XG4gICAgICB0aGlzLnRyYW5zaXRpb25pbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuJGVtaXQoJ2hpZGRlbicpO1xuICAgIH0sXG4gICAgZW1pdFN0YXRlOiBmdW5jdGlvbiBlbWl0U3RhdGUoKSB7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHRoaXMuc2hvdyk7IC8vIExldCB2LWItdG9nZ2xlIGtub3cgdGhlIHN0YXRlIG9mIHRoaXMgY29sbGFwc2VcblxuICAgICAgdGhpcy4kcm9vdC4kZW1pdChFVkVOVF9TVEFURSwgdGhpcy5zYWZlSWQoKSwgdGhpcy5zaG93KTtcblxuICAgICAgaWYgKHRoaXMuYWNjb3JkaW9uICYmIHRoaXMuc2hvdykge1xuICAgICAgICAvLyBUZWxsIHRoZSBvdGhlciBjb2xsYXBzZXMgaW4gdGhpcyBhY2NvcmRpb24gdG8gY2xvc2VcbiAgICAgICAgdGhpcy4kcm9vdC4kZW1pdChFVkVOVF9BQ0NPUkRJT04sIHRoaXMuc2FmZUlkKCksIHRoaXMuYWNjb3JkaW9uKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGVtaXRTeW5jOiBmdW5jdGlvbiBlbWl0U3luYygpIHtcbiAgICAgIC8vIEVtaXQgYSBwcml2YXRlIGV2ZW50IGV2ZXJ5IHRpbWUgdGhpcyBjb21wb25lbnQgdXBkYXRlcyB0byBlbnN1cmVcbiAgICAgIC8vIHRoZSB0b2dnbGUgYnV0dG9uIGlzIGluIHN5bmMgd2l0aCB0aGUgY29sbGFwc2UncyBzdGF0ZVxuICAgICAgLy8gSXQgaXMgZW1pdHRlZCByZWdhcmRsZXNzIGlmIHRoZSB2aXNpYmxlIHN0YXRlIGNoYW5nZXNcbiAgICAgIHRoaXMuJHJvb3QuJGVtaXQoRVZFTlRfU1RBVEVfU1lOQywgdGhpcy5zYWZlSWQoKSwgdGhpcy5zaG93KTtcbiAgICB9LFxuICAgIGNoZWNrRGlzcGxheUJsb2NrOiBmdW5jdGlvbiBjaGVja0Rpc3BsYXlCbG9jaygpIHtcbiAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgY29sbGFwc2UgaGFzIGBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O2Agc2V0LlxuICAgICAgLy8gV2UgY2FuJ3Qgc2V0IGBkaXNwbGF5OiBub25lO2AgZGlyZWN0bHkgb24gdGhpcy4kZWwsIGFzIGl0IHdvdWxkXG4gICAgICAvLyB0cmlnZ2VyIGEgbmV3IHRyYW5zaXRpb24gdG8gc3RhcnQgKG9yIGNhbmNlbCBhIGN1cnJlbnQgb25lKS5cbiAgICAgIHZhciByZXN0b3JlID0gaGFzQ2xhc3ModGhpcy4kZWwsICdzaG93Jyk7XG4gICAgICByZW1vdmVDbGFzcyh0aGlzLiRlbCwgJ3Nob3cnKTtcbiAgICAgIHZhciBpc0Jsb2NrID0gZ2V0Q1ModGhpcy4kZWwpLmRpc3BsYXkgPT09ICdibG9jayc7XG4gICAgICByZXN0b3JlICYmIGFkZENsYXNzKHRoaXMuJGVsLCAnc2hvdycpO1xuICAgICAgcmV0dXJuIGlzQmxvY2s7XG4gICAgfSxcbiAgICBjbGlja0hhbmRsZXI6IGZ1bmN0aW9uIGNsaWNrSGFuZGxlcihldnQpIHtcbiAgICAgIC8vIElmIHdlIGFyZSBpbiBhIG5hdi9uYXZiYXIsIGNsb3NlIHRoZSBjb2xsYXBzZSB3aGVuIG5vbi1kaXNhYmxlZCBsaW5rIGNsaWNrZWRcbiAgICAgIHZhciBlbCA9IGV2dC50YXJnZXQ7XG5cbiAgICAgIGlmICghdGhpcy5pc05hdiB8fCAhZWwgfHwgZ2V0Q1ModGhpcy4kZWwpLmRpc3BsYXkgIT09ICdibG9jaycpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGNhbid0IHRlc3QgZ2V0Q29tcHV0ZWRTdHlsZSBpbiBKU0RPTSAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXRjaGVzKGVsLCAnLm5hdi1saW5rLC5kcm9wZG93bi1pdGVtJykgfHwgY2xvc2VzdCgnLm5hdi1saW5rLC5kcm9wZG93bi1pdGVtJywgZWwpKSB7XG4gICAgICAgIGlmICghdGhpcy5jaGVja0Rpc3BsYXlCbG9jaygpKSB7XG4gICAgICAgICAgLy8gT25seSBjbG9zZSB0aGUgY29sbGFwc2UgaWYgaXQgaXMgbm90IGZvcmNlZCB0byBiZSAnZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsnXG4gICAgICAgICAgdGhpcy5zaG93ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZVRvZ2dsZUV2dDogZnVuY3Rpb24gaGFuZGxlVG9nZ2xlRXZ0KHRhcmdldCkge1xuICAgICAgaWYgKHRhcmdldCAhPT0gdGhpcy5zYWZlSWQoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgfSxcbiAgICBoYW5kbGVBY2NvcmRpb25FdnQ6IGZ1bmN0aW9uIGhhbmRsZUFjY29yZGlvbkV2dChvcGVuZWRJZCwgYWNjb3JkaW9uKSB7XG4gICAgICBpZiAoIXRoaXMuYWNjb3JkaW9uIHx8IGFjY29yZGlvbiAhPT0gdGhpcy5hY2NvcmRpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAob3BlbmVkSWQgPT09IHRoaXMuc2FmZUlkKCkpIHtcbiAgICAgICAgLy8gT3BlbiB0aGlzIGNvbGxhcHNlIGlmIG5vdCBzaG93blxuICAgICAgICBpZiAoIXRoaXMuc2hvdykge1xuICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIENsb3NlIHRoaXMgY29sbGFwc2UgaWYgc2hvd25cbiAgICAgICAgaWYgKHRoaXMuc2hvdykge1xuICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZVJlc2l6ZTogZnVuY3Rpb24gaGFuZGxlUmVzaXplKCkge1xuICAgICAgLy8gSGFuZGxlciBmb3Igb3JpZW50YXRpb24vcmVzaXplIHRvIHNldCBjb2xsYXBzZWQgc3RhdGUgaW4gbmF2L25hdmJhclxuICAgICAgdGhpcy5zaG93ID0gZ2V0Q1ModGhpcy4kZWwpLmRpc3BsYXkgPT09ICdibG9jayc7XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyIGNvbnRlbnQgPSBoKHRoaXMudGFnLCB7XG4gICAgICBjbGFzczogdGhpcy5jbGFzc09iamVjdCxcbiAgICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAgICAgIG5hbWU6ICdzaG93JyxcbiAgICAgICAgdmFsdWU6IHRoaXMuc2hvd1xuICAgICAgfV0sXG4gICAgICBhdHRyczoge1xuICAgICAgICBpZDogdGhpcy5zYWZlSWQoKVxuICAgICAgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIGNsaWNrOiB0aGlzLmNsaWNrSGFuZGxlclxuICAgICAgfVxuICAgIH0sIFt0aGlzLm5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnKV0pO1xuICAgIHJldHVybiBoKCd0cmFuc2l0aW9uJywge1xuICAgICAgcHJvcHM6IHtcbiAgICAgICAgZW50ZXJDbGFzczogJycsXG4gICAgICAgIGVudGVyQWN0aXZlQ2xhc3M6ICdjb2xsYXBzaW5nJyxcbiAgICAgICAgZW50ZXJUb0NsYXNzOiAnJyxcbiAgICAgICAgbGVhdmVDbGFzczogJycsXG4gICAgICAgIGxlYXZlQWN0aXZlQ2xhc3M6ICdjb2xsYXBzaW5nJyxcbiAgICAgICAgbGVhdmVUb0NsYXNzOiAnJ1xuICAgICAgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIGVudGVyOiB0aGlzLm9uRW50ZXIsXG4gICAgICAgIGFmdGVyRW50ZXI6IHRoaXMub25BZnRlckVudGVyLFxuICAgICAgICBsZWF2ZTogdGhpcy5vbkxlYXZlLFxuICAgICAgICBhZnRlckxlYXZlOiB0aGlzLm9uQWZ0ZXJMZWF2ZVxuICAgICAgfVxuICAgIH0sIFtjb250ZW50XSk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvY29sbGFwc2UvY29sbGFwc2UuanNcbi8vIG1vZHVsZSBpZCA9IDEyM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///123\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BCarousel; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_noop__ = __webpack_require__(251);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_observe_dom__ = __webpack_require__(39);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_env__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__mixins_normalize_slot__ = __webpack_require__(5);\n\n\n\n\n\n\n\n\n\n\nvar NAME = 'BCarousel'; // Slide directional classes\n\nvar DIRECTION = {\n next: {\n dirClass: 'carousel-item-left',\n overlayClass: 'carousel-item-next'\n },\n prev: {\n dirClass: 'carousel-item-right',\n overlayClass: 'carousel-item-prev'\n }\n}; // Fallback Transition duration (with a little buffer) in ms\n\nvar TRANS_DURATION = 600 + 50; // Time for mouse compat events to fire after touch\n\nvar TOUCH_EVENT_COMPAT_WAIT = 500; // Number of pixels to consider touch move a swipe\n\nvar SWIPE_THRESHOLD = 40; // PointerEvent pointer types\n\nvar PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n}; // Transition Event names\n\nvar TransitionEndEvents = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'otransitionend oTransitionEnd',\n transition: 'transitionend'\n};\nvar EventOptions = {\n passive: true,\n capture: false\n}; // Return the browser specific transitionEnd event name\n\nvar getTransitionEndEvent = function getTransitionEndEvent(el) {\n for (var name in TransitionEndEvents) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"n\" /* isUndefined */])(el.style[name])) {\n return TransitionEndEvents[name];\n }\n } // Fallback\n\n /* istanbul ignore next */\n\n\n return null;\n}; // @vue/component\n\n\nvar BCarousel =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n mixins: [__WEBPACK_IMPORTED_MODULE_8__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_9__mixins_normalize_slot__[\"a\" /* default */]],\n provide: function provide() {\n return {\n bvCarousel: this\n };\n },\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n labelPrev: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'labelPrev');\n }\n },\n labelNext: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'labelNext');\n }\n },\n labelGotoSlide: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'labelGotoSlide');\n }\n },\n labelIndicators: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'labelIndicators');\n }\n },\n interval: {\n type: Number,\n default: 5000\n },\n indicators: {\n type: Boolean,\n default: false\n },\n controls: {\n type: Boolean,\n default: false\n },\n noAnimation: {\n // Disable slide/fade animation\n type: Boolean,\n default: false\n },\n fade: {\n // Enable cross-fade animation instead of slide animation\n type: Boolean,\n default: false\n },\n noWrap: {\n // Disable wrapping/looping when start/end is reached\n type: Boolean,\n default: false\n },\n noTouch: {\n // Sniffed by carousel-slide\n type: Boolean,\n default: false\n },\n noHoverPause: {\n // Disable pause on hover\n type: Boolean,\n default: false\n },\n imgWidth: {\n // Sniffed by carousel-slide\n type: [Number, String] // default: undefined\n\n },\n imgHeight: {\n // Sniffed by carousel-slide\n type: [Number, String] // default: undefined\n\n },\n background: {\n type: String // default: undefined\n\n },\n value: {\n type: Number,\n default: 0\n }\n },\n data: function data() {\n return {\n index: this.value || 0,\n isSliding: false,\n transitionEndEvent: null,\n slides: [],\n direction: null,\n isPaused: !(parseInt(this.interval, 10) > 0),\n // Touch event handling values\n touchStartX: 0,\n touchDeltaX: 0\n };\n },\n computed: {\n numSlides: function numSlides() {\n return this.slides.length;\n }\n },\n watch: {\n value: function value(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.setSlide(parseInt(newVal, 10) || 0);\n }\n },\n interval: function interval(newVal, oldVal) {\n if (newVal === oldVal) {\n /* istanbul ignore next */\n return;\n }\n\n if (!newVal) {\n // Pausing slide show\n this.pause(false);\n } else {\n // Restarting or Changing interval\n this.pause(true);\n this.start(false);\n }\n },\n isPaused: function isPaused(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.$emit(newVal ? 'paused' : 'unpaused');\n }\n },\n index: function index(to, from) {\n if (to === from || this.isSliding) {\n /* istanbul ignore next */\n return;\n }\n\n this.doSlide(to, from);\n }\n },\n created: function created() {\n // Create private non-reactive props\n this._intervalId = null;\n this._animationTimeout = null;\n this._touchTimeout = null; // Set initial paused state\n\n this.isPaused = !(parseInt(this.interval, 10) > 0);\n },\n mounted: function mounted() {\n // Cache current browser transitionend event name\n this.transitionEndEvent = getTransitionEndEvent(this.$el) || null; // Get all slides\n\n this.updateSlides(); // Observe child changes so we can update slide list\n\n Object(__WEBPACK_IMPORTED_MODULE_3__utils_observe_dom__[\"a\" /* default */])(this.$refs.inner, this.updateSlides.bind(this), {\n subtree: false,\n childList: true,\n attributes: true,\n attributeFilter: ['id']\n });\n },\n beforeDestroy: function beforeDestroy() {\n clearTimeout(this._animationTimeout);\n clearTimeout(this._touchTimeout);\n clearInterval(this._intervalId);\n this._intervalId = null;\n this._animationTimeout = null;\n this._touchTimeout = null;\n },\n methods: {\n // Set slide\n setSlide: function setSlide(slide) {\n var _this = this;\n\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n // Don't animate when page is not visible\n\n /* istanbul ignore if: difficult to test */\n if (__WEBPACK_IMPORTED_MODULE_6__utils_env__[\"j\" /* isBrowser */] && document.visibilityState && document.hidden) {\n return;\n }\n\n var noWrap = this.noWrap;\n var numSlides = this.numSlides; // Make sure we have an integer (you never know!)\n\n slide = Math.floor(slide); // Don't do anything if nothing to slide to\n\n if (numSlides === 0) {\n return;\n } // Don't change slide while transitioning, wait until transition is done\n\n\n if (this.isSliding) {\n // Schedule slide after sliding complete\n this.$once('sliding-end', function () {\n return _this.setSlide(slide, direction);\n });\n return;\n }\n\n this.direction = direction; // Set new slide index\n // Wrap around if necessary (if no-wrap not enabled)\n\n this.index = slide >= numSlides ? noWrap ? numSlides - 1 : 0 : slide < 0 ? noWrap ? 0 : numSlides - 1 : slide; // Ensure the v-model is synched up if no-wrap is enabled\n // and user tried to slide pass either ends\n\n if (noWrap && this.index !== slide && this.index !== this.value) {\n this.$emit('input', this.index);\n }\n },\n // Previous slide\n prev: function prev() {\n this.setSlide(this.index - 1, 'prev');\n },\n // Next slide\n next: function next() {\n this.setSlide(this.index + 1, 'next');\n },\n // Pause auto rotation\n pause: function pause(evt) {\n if (!evt) {\n this.isPaused = true;\n }\n\n if (this._intervalId) {\n clearInterval(this._intervalId);\n this._intervalId = null;\n }\n },\n // Start auto rotate slides\n start: function start(evt) {\n if (!evt) {\n this.isPaused = false;\n }\n /* istanbul ignore next: most likely will never happen, but just in case */\n\n\n if (this._intervalId) {\n clearInterval(this._intervalId);\n this._intervalId = null;\n } // Don't start if no interval, or less than 2 slides\n\n\n if (this.interval && this.numSlides > 1) {\n this._intervalId = setInterval(this.next, Math.max(1000, this.interval));\n }\n },\n // Restart auto rotate slides when focus/hover leaves the carousel\n restart: function restart(evt)\n /* istanbul ignore next: difficult to test */\n {\n if (!this.$el.contains(document.activeElement)) {\n this.start();\n }\n },\n doSlide: function doSlide(to, from) {\n var _this2 = this;\n\n var isCycling = Boolean(this.interval); // Determine sliding direction\n\n var direction = this.calcDirection(this.direction, from, to);\n var overlayClass = direction.overlayClass;\n var dirClass = direction.dirClass; // Determine current and next slides\n\n var currentSlide = this.slides[from];\n var nextSlide = this.slides[to]; // Don't do anything if there aren't any slides to slide to\n\n if (!currentSlide || !nextSlide) {\n /* istanbul ignore next */\n return;\n } // Start animating\n\n\n this.isSliding = true;\n\n if (isCycling) {\n this.pause(false);\n }\n\n this.$emit('sliding-start', to); // Update v-model\n\n this.$emit('input', this.index);\n\n if (this.noAnimation) {\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"b\" /* addClass */])(nextSlide, 'active');\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"v\" /* removeClass */])(currentSlide, 'active');\n this.isSliding = false; // Notify ourselves that we're done sliding (slid)\n\n this.$nextTick(function () {\n return _this2.$emit('sliding-end', to);\n });\n } else {\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"b\" /* addClass */])(nextSlide, overlayClass); // Trigger a reflow of next slide\n\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"t\" /* reflow */])(nextSlide);\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"b\" /* addClass */])(currentSlide, dirClass);\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"b\" /* addClass */])(nextSlide, dirClass); // Transition End handler\n\n var called = false;\n /* istanbul ignore next: difficult to test */\n\n var onceTransEnd = function onceTransEnd(evt) {\n if (called) {\n return;\n }\n\n called = true;\n /* istanbul ignore if: transition events cant be tested in JSDOM */\n\n if (_this2.transitionEndEvent) {\n var events = _this2.transitionEndEvent.split(/\\s+/);\n\n events.forEach(function (evt) {\n return Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"e\" /* eventOff */])(currentSlide, evt, onceTransEnd, EventOptions);\n });\n }\n\n _this2._animationTimeout = null;\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"v\" /* removeClass */])(nextSlide, dirClass);\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"v\" /* removeClass */])(nextSlide, overlayClass);\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"b\" /* addClass */])(nextSlide, 'active');\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"v\" /* removeClass */])(currentSlide, 'active');\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"v\" /* removeClass */])(currentSlide, dirClass);\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"v\" /* removeClass */])(currentSlide, overlayClass);\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"z\" /* setAttr */])(currentSlide, 'aria-current', 'false');\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"z\" /* setAttr */])(nextSlide, 'aria-current', 'true');\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"z\" /* setAttr */])(currentSlide, 'aria-hidden', 'true');\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"z\" /* setAttr */])(nextSlide, 'aria-hidden', 'false');\n _this2.isSliding = false;\n _this2.direction = null; // Notify ourselves that we're done sliding (slid)\n\n _this2.$nextTick(function () {\n return _this2.$emit('sliding-end', to);\n });\n }; // Set up transitionend handler\n\n /* istanbul ignore if: transition events cant be tested in JSDOM */\n\n\n if (this.transitionEndEvent) {\n var events = this.transitionEndEvent.split(/\\s+/);\n events.forEach(function (event) {\n return Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"f\" /* eventOn */])(currentSlide, event, onceTransEnd, EventOptions);\n });\n } // Fallback to setTimeout()\n\n\n this._animationTimeout = setTimeout(onceTransEnd, TRANS_DURATION);\n }\n\n if (isCycling) {\n this.start(false);\n }\n },\n // Update slide list\n updateSlides: function updateSlides() {\n this.pause(true); // Get all slides as DOM elements\n\n this.slides = Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"y\" /* selectAll */])('.carousel-item', this.$refs.inner);\n var numSlides = this.slides.length; // Keep slide number in range\n\n var index = Math.max(0, Math.min(Math.floor(this.index), numSlides - 1));\n this.slides.forEach(function (slide, idx) {\n var n = idx + 1;\n\n if (idx === index) {\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"b\" /* addClass */])(slide, 'active');\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"z\" /* setAttr */])(slide, 'aria-current', 'true');\n } else {\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"v\" /* removeClass */])(slide, 'active');\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"z\" /* setAttr */])(slide, 'aria-current', 'false');\n }\n\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"z\" /* setAttr */])(slide, 'aria-posinset', String(n));\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"z\" /* setAttr */])(slide, 'aria-setsize', String(numSlides));\n }); // Set slide as active\n\n this.setSlide(index);\n this.start(this.isPaused);\n },\n calcDirection: function calcDirection() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var curIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var nextIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n if (!direction) {\n return nextIndex > curIndex ? DIRECTION.next : DIRECTION.prev;\n }\n\n return DIRECTION[direction];\n },\n handleClick: function handleClick(evt, fn) {\n var keyCode = evt.keyCode;\n\n if (evt.type === 'click' || keyCode === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].SPACE || keyCode === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].ENTER) {\n evt.preventDefault();\n evt.stopPropagation();\n fn();\n }\n },\n handleSwipe: function handleSwipe()\n /* istanbul ignore next: JSDOM doesn't support touch events */\n {\n var absDeltaX = Math.abs(this.touchDeltaX);\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n\n var direction = absDeltaX / this.touchDeltaX; // Reset touch delta X\n // https://github.com/twbs/bootstrap/pull/28558\n\n this.touchDeltaX = 0;\n\n if (direction > 0) {\n // Swipe left\n this.prev();\n } else if (direction < 0) {\n // Swipe right\n this.next();\n }\n },\n touchStart: function touchStart(evt)\n /* istanbul ignore next: JSDOM doesn't support touch events */\n {\n if (__WEBPACK_IMPORTED_MODULE_6__utils_env__[\"f\" /* hasPointerEventSupport */] && PointerType[evt.pointerType.toUpperCase()]) {\n this.touchStartX = evt.clientX;\n } else if (!__WEBPACK_IMPORTED_MODULE_6__utils_env__[\"f\" /* hasPointerEventSupport */]) {\n this.touchStartX = evt.touches[0].clientX;\n }\n },\n touchMove: function touchMove(evt)\n /* istanbul ignore next: JSDOM doesn't support touch events */\n {\n // Ensure swiping with one touch and not pinching\n if (evt.touches && evt.touches.length > 1) {\n this.touchDeltaX = 0;\n } else {\n this.touchDeltaX = evt.touches[0].clientX - this.touchStartX;\n }\n },\n touchEnd: function touchEnd(evt)\n /* istanbul ignore next: JSDOM doesn't support touch events */\n {\n if (__WEBPACK_IMPORTED_MODULE_6__utils_env__[\"f\" /* hasPointerEventSupport */] && PointerType[evt.pointerType.toUpperCase()]) {\n this.touchDeltaX = evt.clientX - this.touchStartX;\n }\n\n this.handleSwipe(); // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause(false);\n\n if (this._touchTimeout) {\n clearTimeout(this._touchTimeout);\n }\n\n this._touchTimeout = setTimeout(this.start, TOUCH_EVENT_COMPAT_WAIT + Math.max(1000, this.interval));\n }\n },\n render: function render(h) {\n var _this3 = this;\n\n // Wrapper for slides\n var inner = h('div', {\n ref: 'inner',\n class: ['carousel-inner'],\n attrs: {\n id: this.safeId('__BV_inner_'),\n role: 'list'\n }\n }, [this.normalizeSlot('default')]); // Prev and next controls\n\n var controls = h();\n\n if (this.controls) {\n var prevHandler = function prevHandler(evt) {\n /* istanbul ignore next */\n if (!_this3.isSliding) {\n _this3.handleClick(evt, _this3.prev);\n } else {\n evt.preventDefault();\n }\n };\n\n var nextHandler = function nextHandler(evt) {\n /* istanbul ignore next */\n if (!_this3.isSliding) {\n _this3.handleClick(evt, _this3.next);\n } else {\n evt.preventDefault();\n }\n };\n\n controls = [h('a', {\n class: ['carousel-control-prev'],\n attrs: {\n href: '#',\n role: 'button',\n 'aria-controls': this.safeId('__BV_inner_'),\n 'aria-disabled': this.isSliding ? 'true' : null\n },\n on: {\n click: prevHandler,\n keydown: prevHandler\n }\n }, [h('span', {\n class: ['carousel-control-prev-icon'],\n attrs: {\n 'aria-hidden': 'true'\n }\n }), h('span', {\n class: ['sr-only']\n }, [this.labelPrev])]), h('a', {\n class: ['carousel-control-next'],\n attrs: {\n href: '#',\n role: 'button',\n 'aria-controls': this.safeId('__BV_inner_'),\n 'aria-disabled': this.isSliding ? 'true' : null\n },\n on: {\n click: nextHandler,\n keydown: nextHandler\n }\n }, [h('span', {\n class: ['carousel-control-next-icon'],\n attrs: {\n 'aria-hidden': 'true'\n }\n }), h('span', {\n class: ['sr-only']\n }, [this.labelNext])])];\n } // Indicators\n\n\n var indicators = h('ol', {\n class: ['carousel-indicators'],\n directives: [{\n name: 'show',\n rawName: 'v-show',\n value: this.indicators,\n expression: 'indicators'\n }],\n attrs: {\n id: this.safeId('__BV_indicators_'),\n 'aria-hidden': this.indicators ? 'false' : 'true',\n 'aria-label': this.labelIndicators,\n 'aria-owns': this.safeId('__BV_inner_')\n }\n }, this.slides.map(function (slide, n) {\n return h('li', {\n key: \"slide_\".concat(n),\n class: {\n active: n === _this3.index\n },\n attrs: {\n role: 'button',\n id: _this3.safeId(\"__BV_indicator_\".concat(n + 1, \"_\")),\n tabindex: _this3.indicators ? '0' : '-1',\n 'aria-current': n === _this3.index ? 'true' : 'false',\n 'aria-label': \"\".concat(_this3.labelGotoSlide, \" \").concat(n + 1),\n 'aria-describedby': _this3.slides[n].id || null,\n 'aria-controls': _this3.safeId('__BV_inner_')\n },\n on: {\n click: function click(evt) {\n _this3.handleClick(evt, function () {\n _this3.setSlide(n);\n });\n },\n keydown: function keydown(evt) {\n _this3.handleClick(evt, function () {\n _this3.setSlide(n);\n });\n }\n }\n });\n }));\n var on = {\n mouseenter: this.noHoverPause ? __WEBPACK_IMPORTED_MODULE_2__utils_noop__[\"a\" /* default */] : this.pause,\n mouseleave: this.noHoverPause ? __WEBPACK_IMPORTED_MODULE_2__utils_noop__[\"a\" /* default */] : this.restart,\n focusin: this.pause,\n focusout: this.restart,\n keydown: function keydown(evt) {\n if (/input|textarea/i.test(evt.target.tagName)) {\n /* istanbul ignore next */\n return;\n }\n\n var keyCode = evt.keyCode;\n\n if (keyCode === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].LEFT || keyCode === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].RIGHT) {\n evt.preventDefault();\n evt.stopPropagation();\n\n _this3[keyCode === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].LEFT ? 'prev' : 'next']();\n }\n }\n }; // Touch support event handlers for environment\n\n if (!this.noTouch && __WEBPACK_IMPORTED_MODULE_6__utils_env__[\"h\" /* hasTouchSupport */]) {\n // Attach appropriate listeners (prepend event name with '&' for passive mode)\n\n /* istanbul ignore next: JSDOM doesn't support touch events */\n if (__WEBPACK_IMPORTED_MODULE_6__utils_env__[\"f\" /* hasPointerEventSupport */]) {\n on['&pointerdown'] = this.touchStart;\n on['&pointerup'] = this.touchEnd;\n } else {\n on['&touchstart'] = this.touchStart;\n on['&touchmove'] = this.touchMove;\n on['&touchend'] = this.touchEnd;\n }\n } // Return the carousel\n\n\n return h('div', {\n staticClass: 'carousel',\n class: {\n slide: !this.noAnimation,\n 'carousel-fade': !this.noAnimation && this.fade,\n 'pointer-event': !this.noTouch && __WEBPACK_IMPORTED_MODULE_6__utils_env__[\"h\" /* hasTouchSupport */] && __WEBPACK_IMPORTED_MODULE_6__utils_env__[\"f\" /* hasPointerEventSupport */]\n },\n style: {\n background: this.background\n },\n attrs: {\n role: 'region',\n id: this.safeId(),\n 'aria-busy': this.isSliding ? 'true' : 'false'\n },\n on: on\n }, [inner, controls, indicators]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJvdXNlbC9jYXJvdXNlbC5qcz83NTIzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDVztBQUNUO0FBQ2E7QUFDTztBQUMrQztBQUNsQjtBQUNuQztBQUNaO0FBQ3VCO0FBQzdELHVCQUF1Qjs7QUFFdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGLDhCQUE4Qjs7QUFFOUIsa0NBQWtDOztBQUVsQyx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0EsU0FBUywyRUFBVztBQUNwQjtBQUNBO0FBQ0EsR0FBRzs7QUFFSDs7O0FBR0E7QUFDQSxFQUFFOzs7QUFHSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsMkRBQU8sRUFBRSx1RUFBa0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qjs7QUFFOUI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHNFQUFzRTs7QUFFdEUsd0JBQXdCOztBQUV4QixJQUFJLDJFQUFVO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0EsVUFBVSw2REFBUztBQUNuQjtBQUNBOztBQUVBO0FBQ0EscUNBQXFDOztBQUVyQyxnQ0FBZ0M7O0FBRWhDO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBLGlDQUFpQztBQUNqQzs7QUFFQSxvSEFBb0g7QUFDcEg7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLDZDQUE2Qzs7QUFFN0M7QUFDQTtBQUNBLHdDQUF3Qzs7QUFFeEM7QUFDQSxzQ0FBc0M7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxzQ0FBc0M7O0FBRXRDOztBQUVBO0FBQ0EsUUFBUSxvRUFBUTtBQUNoQixRQUFRLHVFQUFXO0FBQ25CLCtCQUErQjs7QUFFL0I7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsUUFBUSxvRUFBUSwwQkFBMEI7O0FBRTFDLFFBQVEsa0VBQU07QUFDZCxRQUFRLG9FQUFRO0FBQ2hCLFFBQVEsb0VBQVEsc0JBQXNCOztBQUV0QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQixvRUFBUTtBQUM3QixhQUFhO0FBQ2I7O0FBRUE7QUFDQSxVQUFVLHVFQUFXO0FBQ3JCLFVBQVUsdUVBQVc7QUFDckIsVUFBVSxvRUFBUTtBQUNsQixVQUFVLHVFQUFXO0FBQ3JCLFVBQVUsdUVBQVc7QUFDckIsVUFBVSx1RUFBVztBQUNyQixVQUFVLG1FQUFPO0FBQ2pCLFVBQVUsbUVBQU87QUFDakIsVUFBVSxtRUFBTztBQUNqQixVQUFVLG1FQUFPO0FBQ2pCO0FBQ0Esa0NBQWtDOztBQUVsQztBQUNBO0FBQ0EsV0FBVztBQUNYLFVBQVU7O0FBRVY7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixtRUFBTztBQUMxQixXQUFXO0FBQ1gsU0FBUzs7O0FBR1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLHVCQUF1Qjs7QUFFdkIsb0JBQW9CLHFFQUFTO0FBQzdCLHlDQUF5Qzs7QUFFekM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVSxvRUFBUTtBQUNsQixVQUFVLG1FQUFPO0FBQ2pCLFNBQVM7QUFDVCxVQUFVLHVFQUFXO0FBQ3JCLFVBQVUsbUVBQU87QUFDakI7O0FBRUEsUUFBUSxtRUFBTztBQUNmLFFBQVEsbUVBQU87QUFDZixPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSw4Q0FBOEMsaUVBQVEsc0JBQXNCLGlFQUFRO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxtREFBbUQ7QUFDbkQ7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxVQUFVLDBFQUFzQjtBQUNoQztBQUNBLE9BQU8sV0FBVywwRUFBc0I7QUFDeEM7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxVQUFVLDBFQUFzQjtBQUNoQztBQUNBOztBQUVBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxtQ0FBbUM7O0FBRXhDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLHNDQUFzQyw0REFBSTtBQUMxQyxzQ0FBc0MsNERBQUk7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsd0JBQXdCLGlFQUFRLHFCQUFxQixpRUFBUTtBQUM3RDtBQUNBOztBQUVBLDZCQUE2QixpRUFBUTtBQUNyQztBQUNBO0FBQ0EsTUFBTTs7QUFFTix5QkFBeUIsbUVBQWU7QUFDeEM7O0FBRUE7QUFDQSxVQUFVLDBFQUFzQjtBQUNoQztBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxtRUFBZSxJQUFJLDBFQUFzQjtBQUNuRixPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMTIzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IEtleUNvZGVzIGZyb20gJy4uLy4uL3V0aWxzL2tleS1jb2Rlcyc7XG5pbXBvcnQgbm9vcCBmcm9tICcuLi8uLi91dGlscy9ub29wJztcbmltcG9ydCBvYnNlcnZlRG9tIGZyb20gJy4uLy4uL3V0aWxzL29ic2VydmUtZG9tJztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBzZWxlY3RBbGwsIHJlZmxvdywgYWRkQ2xhc3MsIHJlbW92ZUNsYXNzLCBzZXRBdHRyLCBldmVudE9uLCBldmVudE9mZiB9IGZyb20gJy4uLy4uL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyBpc0Jyb3dzZXIsIGhhc1RvdWNoU3VwcG9ydCwgaGFzUG9pbnRlckV2ZW50U3VwcG9ydCB9IGZyb20gJy4uLy4uL3V0aWxzL2Vudic7XG5pbXBvcnQgeyBpc1VuZGVmaW5lZCB9IGZyb20gJy4uLy4uL3V0aWxzL2luc3BlY3QnO1xuaW1wb3J0IGlkTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2lkJztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JztcbnZhciBOQU1FID0gJ0JDYXJvdXNlbCc7IC8vIFNsaWRlIGRpcmVjdGlvbmFsIGNsYXNzZXNcblxudmFyIERJUkVDVElPTiA9IHtcbiAgbmV4dDoge1xuICAgIGRpckNsYXNzOiAnY2Fyb3VzZWwtaXRlbS1sZWZ0JyxcbiAgICBvdmVybGF5Q2xhc3M6ICdjYXJvdXNlbC1pdGVtLW5leHQnXG4gIH0sXG4gIHByZXY6IHtcbiAgICBkaXJDbGFzczogJ2Nhcm91c2VsLWl0ZW0tcmlnaHQnLFxuICAgIG92ZXJsYXlDbGFzczogJ2Nhcm91c2VsLWl0ZW0tcHJldidcbiAgfVxufTsgLy8gRmFsbGJhY2sgVHJhbnNpdGlvbiBkdXJhdGlvbiAod2l0aCBhIGxpdHRsZSBidWZmZXIpIGluIG1zXG5cbnZhciBUUkFOU19EVVJBVElPTiA9IDYwMCArIDUwOyAvLyBUaW1lIGZvciBtb3VzZSBjb21wYXQgZXZlbnRzIHRvIGZpcmUgYWZ0ZXIgdG91Y2hcblxudmFyIFRPVUNIX0VWRU5UX0NPTVBBVF9XQUlUID0gNTAwOyAvLyBOdW1iZXIgb2YgcGl4ZWxzIHRvIGNvbnNpZGVyIHRvdWNoIG1vdmUgYSBzd2lwZVxuXG52YXIgU1dJUEVfVEhSRVNIT0xEID0gNDA7IC8vIFBvaW50ZXJFdmVudCBwb2ludGVyIHR5cGVzXG5cbnZhciBQb2ludGVyVHlwZSA9IHtcbiAgVE9VQ0g6ICd0b3VjaCcsXG4gIFBFTjogJ3Blbidcbn07IC8vIFRyYW5zaXRpb24gRXZlbnQgbmFtZXNcblxudmFyIFRyYW5zaXRpb25FbmRFdmVudHMgPSB7XG4gIFdlYmtpdFRyYW5zaXRpb246ICd3ZWJraXRUcmFuc2l0aW9uRW5kJyxcbiAgTW96VHJhbnNpdGlvbjogJ3RyYW5zaXRpb25lbmQnLFxuICBPVHJhbnNpdGlvbjogJ290cmFuc2l0aW9uZW5kIG9UcmFuc2l0aW9uRW5kJyxcbiAgdHJhbnNpdGlvbjogJ3RyYW5zaXRpb25lbmQnXG59O1xudmFyIEV2ZW50T3B0aW9ucyA9IHtcbiAgcGFzc2l2ZTogdHJ1ZSxcbiAgY2FwdHVyZTogZmFsc2Vcbn07IC8vIFJldHVybiB0aGUgYnJvd3NlciBzcGVjaWZpYyB0cmFuc2l0aW9uRW5kIGV2ZW50IG5hbWVcblxudmFyIGdldFRyYW5zaXRpb25FbmRFdmVudCA9IGZ1bmN0aW9uIGdldFRyYW5zaXRpb25FbmRFdmVudChlbCkge1xuICBmb3IgKHZhciBuYW1lIGluIFRyYW5zaXRpb25FbmRFdmVudHMpIHtcbiAgICBpZiAoIWlzVW5kZWZpbmVkKGVsLnN0eWxlW25hbWVdKSkge1xuICAgICAgcmV0dXJuIFRyYW5zaXRpb25FbmRFdmVudHNbbmFtZV07XG4gICAgfVxuICB9IC8vIEZhbGxiYWNrXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblxuXG4gIHJldHVybiBudWxsO1xufTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuXG5leHBvcnQgdmFyIEJDYXJvdXNlbCA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogTkFNRSxcbiAgbWl4aW5zOiBbaWRNaXhpbiwgbm9ybWFsaXplU2xvdE1peGluXSxcbiAgcHJvdmlkZTogZnVuY3Rpb24gcHJvdmlkZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnZDYXJvdXNlbDogdGhpc1xuICAgIH07XG4gIH0sXG4gIG1vZGVsOiB7XG4gICAgcHJvcDogJ3ZhbHVlJyxcbiAgICBldmVudDogJ2lucHV0J1xuICB9LFxuICBwcm9wczoge1xuICAgIGxhYmVsUHJldjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ2xhYmVsUHJldicpO1xuICAgICAgfVxuICAgIH0sXG4gICAgbGFiZWxOZXh0OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAnbGFiZWxOZXh0Jyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBsYWJlbEdvdG9TbGlkZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ2xhYmVsR290b1NsaWRlJyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBsYWJlbEluZGljYXRvcnM6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdsYWJlbEluZGljYXRvcnMnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGludGVydmFsOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiA1MDAwXG4gICAgfSxcbiAgICBpbmRpY2F0b3JzOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGNvbnRyb2xzOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIG5vQW5pbWF0aW9uOiB7XG4gICAgICAvLyBEaXNhYmxlIHNsaWRlL2ZhZGUgYW5pbWF0aW9uXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGZhZGU6IHtcbiAgICAgIC8vIEVuYWJsZSBjcm9zcy1mYWRlIGFuaW1hdGlvbiBpbnN0ZWFkIG9mIHNsaWRlIGFuaW1hdGlvblxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBub1dyYXA6IHtcbiAgICAgIC8vIERpc2FibGUgd3JhcHBpbmcvbG9vcGluZyB3aGVuIHN0YXJ0L2VuZCBpcyByZWFjaGVkXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIG5vVG91Y2g6IHtcbiAgICAgIC8vIFNuaWZmZWQgYnkgY2Fyb3VzZWwtc2xpZGVcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgbm9Ib3ZlclBhdXNlOiB7XG4gICAgICAvLyBEaXNhYmxlIHBhdXNlIG9uIGhvdmVyXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGltZ1dpZHRoOiB7XG4gICAgICAvLyBTbmlmZmVkIGJ5IGNhcm91c2VsLXNsaWRlXG4gICAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddIC8vIGRlZmF1bHQ6IHVuZGVmaW5lZFxuXG4gICAgfSxcbiAgICBpbWdIZWlnaHQ6IHtcbiAgICAgIC8vIFNuaWZmZWQgYnkgY2Fyb3VzZWwtc2xpZGVcbiAgICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10gLy8gZGVmYXVsdDogdW5kZWZpbmVkXG5cbiAgICB9LFxuICAgIGJhY2tncm91bmQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyAvLyBkZWZhdWx0OiB1bmRlZmluZWRcblxuICAgIH0sXG4gICAgdmFsdWU6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGluZGV4OiB0aGlzLnZhbHVlIHx8IDAsXG4gICAgICBpc1NsaWRpbmc6IGZhbHNlLFxuICAgICAgdHJhbnNpdGlvbkVuZEV2ZW50OiBudWxsLFxuICAgICAgc2xpZGVzOiBbXSxcbiAgICAgIGRpcmVjdGlvbjogbnVsbCxcbiAgICAgIGlzUGF1c2VkOiAhKHBhcnNlSW50KHRoaXMuaW50ZXJ2YWwsIDEwKSA+IDApLFxuICAgICAgLy8gVG91Y2ggZXZlbnQgaGFuZGxpbmcgdmFsdWVzXG4gICAgICB0b3VjaFN0YXJ0WDogMCxcbiAgICAgIHRvdWNoRGVsdGFYOiAwXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBudW1TbGlkZXM6IGZ1bmN0aW9uIG51bVNsaWRlcygpIHtcbiAgICAgIHJldHVybiB0aGlzLnNsaWRlcy5sZW5ndGg7XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgaWYgKG5ld1ZhbCAhPT0gb2xkVmFsKSB7XG4gICAgICAgIHRoaXMuc2V0U2xpZGUocGFyc2VJbnQobmV3VmFsLCAxMCkgfHwgMCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBpbnRlcnZhbDogZnVuY3Rpb24gaW50ZXJ2YWwobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIGlmIChuZXdWYWwgPT09IG9sZFZhbCkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghbmV3VmFsKSB7XG4gICAgICAgIC8vIFBhdXNpbmcgc2xpZGUgc2hvd1xuICAgICAgICB0aGlzLnBhdXNlKGZhbHNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlc3RhcnRpbmcgb3IgQ2hhbmdpbmcgaW50ZXJ2YWxcbiAgICAgICAgdGhpcy5wYXVzZSh0cnVlKTtcbiAgICAgICAgdGhpcy5zdGFydChmYWxzZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBpc1BhdXNlZDogZnVuY3Rpb24gaXNQYXVzZWQobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIGlmIChuZXdWYWwgIT09IG9sZFZhbCkge1xuICAgICAgICB0aGlzLiRlbWl0KG5ld1ZhbCA/ICdwYXVzZWQnIDogJ3VucGF1c2VkJyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBpbmRleDogZnVuY3Rpb24gaW5kZXgodG8sIGZyb20pIHtcbiAgICAgIGlmICh0byA9PT0gZnJvbSB8fCB0aGlzLmlzU2xpZGluZykge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZG9TbGlkZSh0bywgZnJvbSk7XG4gICAgfVxuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIC8vIENyZWF0ZSBwcml2YXRlIG5vbi1yZWFjdGl2ZSBwcm9wc1xuICAgIHRoaXMuX2ludGVydmFsSWQgPSBudWxsO1xuICAgIHRoaXMuX2FuaW1hdGlvblRpbWVvdXQgPSBudWxsO1xuICAgIHRoaXMuX3RvdWNoVGltZW91dCA9IG51bGw7IC8vIFNldCBpbml0aWFsIHBhdXNlZCBzdGF0ZVxuXG4gICAgdGhpcy5pc1BhdXNlZCA9ICEocGFyc2VJbnQodGhpcy5pbnRlcnZhbCwgMTApID4gMCk7XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgLy8gQ2FjaGUgY3VycmVudCBicm93c2VyIHRyYW5zaXRpb25lbmQgZXZlbnQgbmFtZVxuICAgIHRoaXMudHJhbnNpdGlvbkVuZEV2ZW50ID0gZ2V0VHJhbnNpdGlvbkVuZEV2ZW50KHRoaXMuJGVsKSB8fCBudWxsOyAvLyBHZXQgYWxsIHNsaWRlc1xuXG4gICAgdGhpcy51cGRhdGVTbGlkZXMoKTsgLy8gT2JzZXJ2ZSBjaGlsZCBjaGFuZ2VzIHNvIHdlIGNhbiB1cGRhdGUgc2xpZGUgbGlzdFxuXG4gICAgb2JzZXJ2ZURvbSh0aGlzLiRyZWZzLmlubmVyLCB0aGlzLnVwZGF0ZVNsaWRlcy5iaW5kKHRoaXMpLCB7XG4gICAgICBzdWJ0cmVlOiBmYWxzZSxcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnaWQnXVxuICAgIH0pO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9hbmltYXRpb25UaW1lb3V0KTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fdG91Y2hUaW1lb3V0KTtcbiAgICBjbGVhckludGVydmFsKHRoaXMuX2ludGVydmFsSWQpO1xuICAgIHRoaXMuX2ludGVydmFsSWQgPSBudWxsO1xuICAgIHRoaXMuX2FuaW1hdGlvblRpbWVvdXQgPSBudWxsO1xuICAgIHRoaXMuX3RvdWNoVGltZW91dCA9IG51bGw7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICAvLyBTZXQgc2xpZGVcbiAgICBzZXRTbGlkZTogZnVuY3Rpb24gc2V0U2xpZGUoc2xpZGUpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBkaXJlY3Rpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IG51bGw7XG5cbiAgICAgIC8vIERvbid0IGFuaW1hdGUgd2hlbiBwYWdlIGlzIG5vdCB2aXNpYmxlXG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZjogZGlmZmljdWx0IHRvIHRlc3QgKi9cbiAgICAgIGlmIChpc0Jyb3dzZXIgJiYgZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlICYmIGRvY3VtZW50LmhpZGRlbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBub1dyYXAgPSB0aGlzLm5vV3JhcDtcbiAgICAgIHZhciBudW1TbGlkZXMgPSB0aGlzLm51bVNsaWRlczsgLy8gTWFrZSBzdXJlIHdlIGhhdmUgYW4gaW50ZWdlciAoeW91IG5ldmVyIGtub3chKVxuXG4gICAgICBzbGlkZSA9IE1hdGguZmxvb3Ioc2xpZGUpOyAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiBub3RoaW5nIHRvIHNsaWRlIHRvXG5cbiAgICAgIGlmIChudW1TbGlkZXMgPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBEb24ndCBjaGFuZ2Ugc2xpZGUgd2hpbGUgdHJhbnNpdGlvbmluZywgd2FpdCB1bnRpbCB0cmFuc2l0aW9uIGlzIGRvbmVcblxuXG4gICAgICBpZiAodGhpcy5pc1NsaWRpbmcpIHtcbiAgICAgICAgLy8gU2NoZWR1bGUgc2xpZGUgYWZ0ZXIgc2xpZGluZyBjb21wbGV0ZVxuICAgICAgICB0aGlzLiRvbmNlKCdzbGlkaW5nLWVuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuc2V0U2xpZGUoc2xpZGUsIGRpcmVjdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uOyAvLyBTZXQgbmV3IHNsaWRlIGluZGV4XG4gICAgICAvLyBXcmFwIGFyb3VuZCBpZiBuZWNlc3NhcnkgKGlmIG5vLXdyYXAgbm90IGVuYWJsZWQpXG5cbiAgICAgIHRoaXMuaW5kZXggPSBzbGlkZSA+PSBudW1TbGlkZXMgPyBub1dyYXAgPyBudW1TbGlkZXMgLSAxIDogMCA6IHNsaWRlIDwgMCA/IG5vV3JhcCA/IDAgOiBudW1TbGlkZXMgLSAxIDogc2xpZGU7IC8vIEVuc3VyZSB0aGUgdi1tb2RlbCBpcyBzeW5jaGVkIHVwIGlmIG5vLXdyYXAgaXMgZW5hYmxlZFxuICAgICAgLy8gYW5kIHVzZXIgdHJpZWQgdG8gc2xpZGUgcGFzcyBlaXRoZXIgZW5kc1xuXG4gICAgICBpZiAobm9XcmFwICYmIHRoaXMuaW5kZXggIT09IHNsaWRlICYmIHRoaXMuaW5kZXggIT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB0aGlzLmluZGV4KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIFByZXZpb3VzIHNsaWRlXG4gICAgcHJldjogZnVuY3Rpb24gcHJldigpIHtcbiAgICAgIHRoaXMuc2V0U2xpZGUodGhpcy5pbmRleCAtIDEsICdwcmV2Jyk7XG4gICAgfSxcbiAgICAvLyBOZXh0IHNsaWRlXG4gICAgbmV4dDogZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIHRoaXMuc2V0U2xpZGUodGhpcy5pbmRleCArIDEsICduZXh0Jyk7XG4gICAgfSxcbiAgICAvLyBQYXVzZSBhdXRvIHJvdGF0aW9uXG4gICAgcGF1c2U6IGZ1bmN0aW9uIHBhdXNlKGV2dCkge1xuICAgICAgaWYgKCFldnQpIHtcbiAgICAgICAgdGhpcy5pc1BhdXNlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9pbnRlcnZhbElkKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWxJZCk7XG4gICAgICAgIHRoaXMuX2ludGVydmFsSWQgPSBudWxsO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8gU3RhcnQgYXV0byByb3RhdGUgc2xpZGVzXG4gICAgc3RhcnQ6IGZ1bmN0aW9uIHN0YXJ0KGV2dCkge1xuICAgICAgaWYgKCFldnQpIHtcbiAgICAgICAgdGhpcy5pc1BhdXNlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IG1vc3QgbGlrZWx5IHdpbGwgbmV2ZXIgaGFwcGVuLCBidXQganVzdCBpbiBjYXNlICovXG5cblxuICAgICAgaWYgKHRoaXMuX2ludGVydmFsSWQpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbElkKTtcbiAgICAgICAgdGhpcy5faW50ZXJ2YWxJZCA9IG51bGw7XG4gICAgICB9IC8vIERvbid0IHN0YXJ0IGlmIG5vIGludGVydmFsLCBvciBsZXNzIHRoYW4gMiBzbGlkZXNcblxuXG4gICAgICBpZiAodGhpcy5pbnRlcnZhbCAmJiB0aGlzLm51bVNsaWRlcyA+IDEpIHtcbiAgICAgICAgdGhpcy5faW50ZXJ2YWxJZCA9IHNldEludGVydmFsKHRoaXMubmV4dCwgTWF0aC5tYXgoMTAwMCwgdGhpcy5pbnRlcnZhbCkpO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8gUmVzdGFydCBhdXRvIHJvdGF0ZSBzbGlkZXMgd2hlbiBmb2N1cy9ob3ZlciBsZWF2ZXMgdGhlIGNhcm91c2VsXG4gICAgcmVzdGFydDogZnVuY3Rpb24gcmVzdGFydChldnQpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGRpZmZpY3VsdCB0byB0ZXN0ICovXG4gICAge1xuICAgICAgaWYgKCF0aGlzLiRlbC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSkge1xuICAgICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBkb1NsaWRlOiBmdW5jdGlvbiBkb1NsaWRlKHRvLCBmcm9tKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIGlzQ3ljbGluZyA9IEJvb2xlYW4odGhpcy5pbnRlcnZhbCk7IC8vIERldGVybWluZSBzbGlkaW5nIGRpcmVjdGlvblxuXG4gICAgICB2YXIgZGlyZWN0aW9uID0gdGhpcy5jYWxjRGlyZWN0aW9uKHRoaXMuZGlyZWN0aW9uLCBmcm9tLCB0byk7XG4gICAgICB2YXIgb3ZlcmxheUNsYXNzID0gZGlyZWN0aW9uLm92ZXJsYXlDbGFzcztcbiAgICAgIHZhciBkaXJDbGFzcyA9IGRpcmVjdGlvbi5kaXJDbGFzczsgLy8gRGV0ZXJtaW5lIGN1cnJlbnQgYW5kIG5leHQgc2xpZGVzXG5cbiAgICAgIHZhciBjdXJyZW50U2xpZGUgPSB0aGlzLnNsaWRlc1tmcm9tXTtcbiAgICAgIHZhciBuZXh0U2xpZGUgPSB0aGlzLnNsaWRlc1t0b107IC8vIERvbid0IGRvIGFueXRoaW5nIGlmIHRoZXJlIGFyZW4ndCBhbnkgc2xpZGVzIHRvIHNsaWRlIHRvXG5cbiAgICAgIGlmICghY3VycmVudFNsaWRlIHx8ICFuZXh0U2xpZGUpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBTdGFydCBhbmltYXRpbmdcblxuXG4gICAgICB0aGlzLmlzU2xpZGluZyA9IHRydWU7XG5cbiAgICAgIGlmIChpc0N5Y2xpbmcpIHtcbiAgICAgICAgdGhpcy5wYXVzZShmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuJGVtaXQoJ3NsaWRpbmctc3RhcnQnLCB0byk7IC8vIFVwZGF0ZSB2LW1vZGVsXG5cbiAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgdGhpcy5pbmRleCk7XG5cbiAgICAgIGlmICh0aGlzLm5vQW5pbWF0aW9uKSB7XG4gICAgICAgIGFkZENsYXNzKG5leHRTbGlkZSwgJ2FjdGl2ZScpO1xuICAgICAgICByZW1vdmVDbGFzcyhjdXJyZW50U2xpZGUsICdhY3RpdmUnKTtcbiAgICAgICAgdGhpcy5pc1NsaWRpbmcgPSBmYWxzZTsgLy8gTm90aWZ5IG91cnNlbHZlcyB0aGF0IHdlJ3JlIGRvbmUgc2xpZGluZyAoc2xpZClcblxuICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzMi4kZW1pdCgnc2xpZGluZy1lbmQnLCB0byk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRkQ2xhc3MobmV4dFNsaWRlLCBvdmVybGF5Q2xhc3MpOyAvLyBUcmlnZ2VyIGEgcmVmbG93IG9mIG5leHQgc2xpZGVcblxuICAgICAgICByZWZsb3cobmV4dFNsaWRlKTtcbiAgICAgICAgYWRkQ2xhc3MoY3VycmVudFNsaWRlLCBkaXJDbGFzcyk7XG4gICAgICAgIGFkZENsYXNzKG5leHRTbGlkZSwgZGlyQ2xhc3MpOyAvLyBUcmFuc2l0aW9uIEVuZCBoYW5kbGVyXG5cbiAgICAgICAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogZGlmZmljdWx0IHRvIHRlc3QgKi9cblxuICAgICAgICB2YXIgb25jZVRyYW5zRW5kID0gZnVuY3Rpb24gb25jZVRyYW5zRW5kKGV2dCkge1xuICAgICAgICAgIGlmIChjYWxsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZjogdHJhbnNpdGlvbiBldmVudHMgY2FudCBiZSB0ZXN0ZWQgaW4gSlNET00gKi9cblxuICAgICAgICAgIGlmIChfdGhpczIudHJhbnNpdGlvbkVuZEV2ZW50KSB7XG4gICAgICAgICAgICB2YXIgZXZlbnRzID0gX3RoaXMyLnRyYW5zaXRpb25FbmRFdmVudC5zcGxpdCgvXFxzKy8pO1xuXG4gICAgICAgICAgICBldmVudHMuZm9yRWFjaChmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICAgIHJldHVybiBldmVudE9mZihjdXJyZW50U2xpZGUsIGV2dCwgb25jZVRyYW5zRW5kLCBFdmVudE9wdGlvbnMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgX3RoaXMyLl9hbmltYXRpb25UaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgICByZW1vdmVDbGFzcyhuZXh0U2xpZGUsIGRpckNsYXNzKTtcbiAgICAgICAgICByZW1vdmVDbGFzcyhuZXh0U2xpZGUsIG92ZXJsYXlDbGFzcyk7XG4gICAgICAgICAgYWRkQ2xhc3MobmV4dFNsaWRlLCAnYWN0aXZlJyk7XG4gICAgICAgICAgcmVtb3ZlQ2xhc3MoY3VycmVudFNsaWRlLCAnYWN0aXZlJyk7XG4gICAgICAgICAgcmVtb3ZlQ2xhc3MoY3VycmVudFNsaWRlLCBkaXJDbGFzcyk7XG4gICAgICAgICAgcmVtb3ZlQ2xhc3MoY3VycmVudFNsaWRlLCBvdmVybGF5Q2xhc3MpO1xuICAgICAgICAgIHNldEF0dHIoY3VycmVudFNsaWRlLCAnYXJpYS1jdXJyZW50JywgJ2ZhbHNlJyk7XG4gICAgICAgICAgc2V0QXR0cihuZXh0U2xpZGUsICdhcmlhLWN1cnJlbnQnLCAndHJ1ZScpO1xuICAgICAgICAgIHNldEF0dHIoY3VycmVudFNsaWRlLCAnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICAgIHNldEF0dHIobmV4dFNsaWRlLCAnYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcbiAgICAgICAgICBfdGhpczIuaXNTbGlkaW5nID0gZmFsc2U7XG4gICAgICAgICAgX3RoaXMyLmRpcmVjdGlvbiA9IG51bGw7IC8vIE5vdGlmeSBvdXJzZWx2ZXMgdGhhdCB3ZSdyZSBkb25lIHNsaWRpbmcgKHNsaWQpXG5cbiAgICAgICAgICBfdGhpczIuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpczIuJGVtaXQoJ3NsaWRpbmctZW5kJywgdG8pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9OyAvLyBTZXQgdXAgdHJhbnNpdGlvbmVuZCBoYW5kbGVyXG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmOiB0cmFuc2l0aW9uIGV2ZW50cyBjYW50IGJlIHRlc3RlZCBpbiBKU0RPTSAqL1xuXG5cbiAgICAgICAgaWYgKHRoaXMudHJhbnNpdGlvbkVuZEV2ZW50KSB7XG4gICAgICAgICAgdmFyIGV2ZW50cyA9IHRoaXMudHJhbnNpdGlvbkVuZEV2ZW50LnNwbGl0KC9cXHMrLyk7XG4gICAgICAgICAgZXZlbnRzLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZXZlbnRPbihjdXJyZW50U2xpZGUsIGV2ZW50LCBvbmNlVHJhbnNFbmQsIEV2ZW50T3B0aW9ucyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gLy8gRmFsbGJhY2sgdG8gc2V0VGltZW91dCgpXG5cblxuICAgICAgICB0aGlzLl9hbmltYXRpb25UaW1lb3V0ID0gc2V0VGltZW91dChvbmNlVHJhbnNFbmQsIFRSQU5TX0RVUkFUSU9OKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzQ3ljbGluZykge1xuICAgICAgICB0aGlzLnN0YXJ0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIFVwZGF0ZSBzbGlkZSBsaXN0XG4gICAgdXBkYXRlU2xpZGVzOiBmdW5jdGlvbiB1cGRhdGVTbGlkZXMoKSB7XG4gICAgICB0aGlzLnBhdXNlKHRydWUpOyAvLyBHZXQgYWxsIHNsaWRlcyBhcyBET00gZWxlbWVudHNcblxuICAgICAgdGhpcy5zbGlkZXMgPSBzZWxlY3RBbGwoJy5jYXJvdXNlbC1pdGVtJywgdGhpcy4kcmVmcy5pbm5lcik7XG4gICAgICB2YXIgbnVtU2xpZGVzID0gdGhpcy5zbGlkZXMubGVuZ3RoOyAvLyBLZWVwIHNsaWRlIG51bWJlciBpbiByYW5nZVxuXG4gICAgICB2YXIgaW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihNYXRoLmZsb29yKHRoaXMuaW5kZXgpLCBudW1TbGlkZXMgLSAxKSk7XG4gICAgICB0aGlzLnNsaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChzbGlkZSwgaWR4KSB7XG4gICAgICAgIHZhciBuID0gaWR4ICsgMTtcblxuICAgICAgICBpZiAoaWR4ID09PSBpbmRleCkge1xuICAgICAgICAgIGFkZENsYXNzKHNsaWRlLCAnYWN0aXZlJyk7XG4gICAgICAgICAgc2V0QXR0cihzbGlkZSwgJ2FyaWEtY3VycmVudCcsICd0cnVlJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVtb3ZlQ2xhc3Moc2xpZGUsICdhY3RpdmUnKTtcbiAgICAgICAgICBzZXRBdHRyKHNsaWRlLCAnYXJpYS1jdXJyZW50JywgJ2ZhbHNlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRBdHRyKHNsaWRlLCAnYXJpYS1wb3NpbnNldCcsIFN0cmluZyhuKSk7XG4gICAgICAgIHNldEF0dHIoc2xpZGUsICdhcmlhLXNldHNpemUnLCBTdHJpbmcobnVtU2xpZGVzKSk7XG4gICAgICB9KTsgLy8gU2V0IHNsaWRlIGFzIGFjdGl2ZVxuXG4gICAgICB0aGlzLnNldFNsaWRlKGluZGV4KTtcbiAgICAgIHRoaXMuc3RhcnQodGhpcy5pc1BhdXNlZCk7XG4gICAgfSxcbiAgICBjYWxjRGlyZWN0aW9uOiBmdW5jdGlvbiBjYWxjRGlyZWN0aW9uKCkge1xuICAgICAgdmFyIGRpcmVjdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogbnVsbDtcbiAgICAgIHZhciBjdXJJbmRleCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMDtcbiAgICAgIHZhciBuZXh0SW5kZXggPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDA7XG5cbiAgICAgIGlmICghZGlyZWN0aW9uKSB7XG4gICAgICAgIHJldHVybiBuZXh0SW5kZXggPiBjdXJJbmRleCA/IERJUkVDVElPTi5uZXh0IDogRElSRUNUSU9OLnByZXY7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBESVJFQ1RJT05bZGlyZWN0aW9uXTtcbiAgICB9LFxuICAgIGhhbmRsZUNsaWNrOiBmdW5jdGlvbiBoYW5kbGVDbGljayhldnQsIGZuKSB7XG4gICAgICB2YXIga2V5Q29kZSA9IGV2dC5rZXlDb2RlO1xuXG4gICAgICBpZiAoZXZ0LnR5cGUgPT09ICdjbGljaycgfHwga2V5Q29kZSA9PT0gS2V5Q29kZXMuU1BBQ0UgfHwga2V5Q29kZSA9PT0gS2V5Q29kZXMuRU5URVIpIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZm4oKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZVN3aXBlOiBmdW5jdGlvbiBoYW5kbGVTd2lwZSgpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IEpTRE9NIGRvZXNuJ3Qgc3VwcG9ydCB0b3VjaCBldmVudHMgKi9cbiAgICB7XG4gICAgICB2YXIgYWJzRGVsdGFYID0gTWF0aC5hYnModGhpcy50b3VjaERlbHRhWCk7XG5cbiAgICAgIGlmIChhYnNEZWx0YVggPD0gU1dJUEVfVEhSRVNIT0xEKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIGRpcmVjdGlvbiA9IGFic0RlbHRhWCAvIHRoaXMudG91Y2hEZWx0YVg7IC8vIFJlc2V0IHRvdWNoIGRlbHRhIFhcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9wdWxsLzI4NTU4XG5cbiAgICAgIHRoaXMudG91Y2hEZWx0YVggPSAwO1xuXG4gICAgICBpZiAoZGlyZWN0aW9uID4gMCkge1xuICAgICAgICAvLyBTd2lwZSBsZWZ0XG4gICAgICAgIHRoaXMucHJldigpO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPCAwKSB7XG4gICAgICAgIC8vIFN3aXBlIHJpZ2h0XG4gICAgICAgIHRoaXMubmV4dCgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgdG91Y2hTdGFydDogZnVuY3Rpb24gdG91Y2hTdGFydChldnQpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IEpTRE9NIGRvZXNuJ3Qgc3VwcG9ydCB0b3VjaCBldmVudHMgKi9cbiAgICB7XG4gICAgICBpZiAoaGFzUG9pbnRlckV2ZW50U3VwcG9ydCAmJiBQb2ludGVyVHlwZVtldnQucG9pbnRlclR5cGUudG9VcHBlckNhc2UoKV0pIHtcbiAgICAgICAgdGhpcy50b3VjaFN0YXJ0WCA9IGV2dC5jbGllbnRYO1xuICAgICAgfSBlbHNlIGlmICghaGFzUG9pbnRlckV2ZW50U3VwcG9ydCkge1xuICAgICAgICB0aGlzLnRvdWNoU3RhcnRYID0gZXZ0LnRvdWNoZXNbMF0uY2xpZW50WDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHRvdWNoTW92ZTogZnVuY3Rpb24gdG91Y2hNb3ZlKGV2dClcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogSlNET00gZG9lc24ndCBzdXBwb3J0IHRvdWNoIGV2ZW50cyAqL1xuICAgIHtcbiAgICAgIC8vIEVuc3VyZSBzd2lwaW5nIHdpdGggb25lIHRvdWNoIGFuZCBub3QgcGluY2hpbmdcbiAgICAgIGlmIChldnQudG91Y2hlcyAmJiBldnQudG91Y2hlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRoaXMudG91Y2hEZWx0YVggPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50b3VjaERlbHRhWCA9IGV2dC50b3VjaGVzWzBdLmNsaWVudFggLSB0aGlzLnRvdWNoU3RhcnRYO1xuICAgICAgfVxuICAgIH0sXG4gICAgdG91Y2hFbmQ6IGZ1bmN0aW9uIHRvdWNoRW5kKGV2dClcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogSlNET00gZG9lc24ndCBzdXBwb3J0IHRvdWNoIGV2ZW50cyAqL1xuICAgIHtcbiAgICAgIGlmIChoYXNQb2ludGVyRXZlbnRTdXBwb3J0ICYmIFBvaW50ZXJUeXBlW2V2dC5wb2ludGVyVHlwZS50b1VwcGVyQ2FzZSgpXSkge1xuICAgICAgICB0aGlzLnRvdWNoRGVsdGFYID0gZXZ0LmNsaWVudFggLSB0aGlzLnRvdWNoU3RhcnRYO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhhbmRsZVN3aXBlKCk7IC8vIElmIGl0J3MgYSB0b3VjaC1lbmFibGVkIGRldmljZSwgbW91c2VlbnRlci9sZWF2ZSBhcmUgZmlyZWQgYXNcbiAgICAgIC8vIHBhcnQgb2YgdGhlIG1vdXNlIGNvbXBhdGliaWxpdHkgZXZlbnRzIG9uIGZpcnN0IHRhcCAtIHRoZSBjYXJvdXNlbFxuICAgICAgLy8gd291bGQgc3RvcCBjeWNsaW5nIHVudGlsIHVzZXIgdGFwcGVkIG91dCBvZiBpdDtcbiAgICAgIC8vIGhlcmUsIHdlIGxpc3RlbiBmb3IgdG91Y2hlbmQsIGV4cGxpY2l0bHkgcGF1c2UgdGhlIGNhcm91c2VsXG4gICAgICAvLyAoYXMgaWYgaXQncyB0aGUgc2Vjb25kIHRpbWUgd2UgdGFwIG9uIGl0LCBtb3VzZWVudGVyIGNvbXBhdCBldmVudFxuICAgICAgLy8gaXMgTk9UIGZpcmVkKSBhbmQgYWZ0ZXIgYSB0aW1lb3V0ICh0byBhbGxvdyBmb3IgbW91c2UgY29tcGF0aWJpbGl0eVxuICAgICAgLy8gZXZlbnRzIHRvIGZpcmUpIHdlIGV4cGxpY2l0bHkgcmVzdGFydCBjeWNsaW5nXG5cbiAgICAgIHRoaXMucGF1c2UoZmFsc2UpO1xuXG4gICAgICBpZiAodGhpcy5fdG91Y2hUaW1lb3V0KSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90b3VjaFRpbWVvdXQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl90b3VjaFRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuc3RhcnQsIFRPVUNIX0VWRU5UX0NPTVBBVF9XQUlUICsgTWF0aC5tYXgoMTAwMCwgdGhpcy5pbnRlcnZhbCkpO1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgLy8gV3JhcHBlciBmb3Igc2xpZGVzXG4gICAgdmFyIGlubmVyID0gaCgnZGl2Jywge1xuICAgICAgcmVmOiAnaW5uZXInLFxuICAgICAgY2xhc3M6IFsnY2Fyb3VzZWwtaW5uZXInXSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGlkOiB0aGlzLnNhZmVJZCgnX19CVl9pbm5lcl8nKSxcbiAgICAgICAgcm9sZTogJ2xpc3QnXG4gICAgICB9XG4gICAgfSwgW3RoaXMubm9ybWFsaXplU2xvdCgnZGVmYXVsdCcpXSk7IC8vIFByZXYgYW5kIG5leHQgY29udHJvbHNcblxuICAgIHZhciBjb250cm9scyA9IGgoKTtcblxuICAgIGlmICh0aGlzLmNvbnRyb2xzKSB7XG4gICAgICB2YXIgcHJldkhhbmRsZXIgPSBmdW5jdGlvbiBwcmV2SGFuZGxlcihldnQpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgaWYgKCFfdGhpczMuaXNTbGlkaW5nKSB7XG4gICAgICAgICAgX3RoaXMzLmhhbmRsZUNsaWNrKGV2dCwgX3RoaXMzLnByZXYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICB2YXIgbmV4dEhhbmRsZXIgPSBmdW5jdGlvbiBuZXh0SGFuZGxlcihldnQpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgaWYgKCFfdGhpczMuaXNTbGlkaW5nKSB7XG4gICAgICAgICAgX3RoaXMzLmhhbmRsZUNsaWNrKGV2dCwgX3RoaXMzLm5leHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb250cm9scyA9IFtoKCdhJywge1xuICAgICAgICBjbGFzczogWydjYXJvdXNlbC1jb250cm9sLXByZXYnXSxcbiAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICBocmVmOiAnIycsXG4gICAgICAgICAgcm9sZTogJ2J1dHRvbicsXG4gICAgICAgICAgJ2FyaWEtY29udHJvbHMnOiB0aGlzLnNhZmVJZCgnX19CVl9pbm5lcl8nKSxcbiAgICAgICAgICAnYXJpYS1kaXNhYmxlZCc6IHRoaXMuaXNTbGlkaW5nID8gJ3RydWUnIDogbnVsbFxuICAgICAgICB9LFxuICAgICAgICBvbjoge1xuICAgICAgICAgIGNsaWNrOiBwcmV2SGFuZGxlcixcbiAgICAgICAgICBrZXlkb3duOiBwcmV2SGFuZGxlclxuICAgICAgICB9XG4gICAgICB9LCBbaCgnc3BhbicsIHtcbiAgICAgICAgY2xhc3M6IFsnY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24nXSxcbiAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAnYXJpYS1oaWRkZW4nOiAndHJ1ZSdcbiAgICAgICAgfVxuICAgICAgfSksIGgoJ3NwYW4nLCB7XG4gICAgICAgIGNsYXNzOiBbJ3NyLW9ubHknXVxuICAgICAgfSwgW3RoaXMubGFiZWxQcmV2XSldKSwgaCgnYScsIHtcbiAgICAgICAgY2xhc3M6IFsnY2Fyb3VzZWwtY29udHJvbC1uZXh0J10sXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgaHJlZjogJyMnLFxuICAgICAgICAgIHJvbGU6ICdidXR0b24nLFxuICAgICAgICAgICdhcmlhLWNvbnRyb2xzJzogdGhpcy5zYWZlSWQoJ19fQlZfaW5uZXJfJyksXG4gICAgICAgICAgJ2FyaWEtZGlzYWJsZWQnOiB0aGlzLmlzU2xpZGluZyA/ICd0cnVlJyA6IG51bGxcbiAgICAgICAgfSxcbiAgICAgICAgb246IHtcbiAgICAgICAgICBjbGljazogbmV4dEhhbmRsZXIsXG4gICAgICAgICAga2V5ZG93bjogbmV4dEhhbmRsZXJcbiAgICAgICAgfVxuICAgICAgfSwgW2goJ3NwYW4nLCB7XG4gICAgICAgIGNsYXNzOiBbJ2Nhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uJ10sXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgJ2FyaWEtaGlkZGVuJzogJ3RydWUnXG4gICAgICAgIH1cbiAgICAgIH0pLCBoKCdzcGFuJywge1xuICAgICAgICBjbGFzczogWydzci1vbmx5J11cbiAgICAgIH0sIFt0aGlzLmxhYmVsTmV4dF0pXSldO1xuICAgIH0gLy8gSW5kaWNhdG9yc1xuXG5cbiAgICB2YXIgaW5kaWNhdG9ycyA9IGgoJ29sJywge1xuICAgICAgY2xhc3M6IFsnY2Fyb3VzZWwtaW5kaWNhdG9ycyddLFxuICAgICAgZGlyZWN0aXZlczogW3tcbiAgICAgICAgbmFtZTogJ3Nob3cnLFxuICAgICAgICByYXdOYW1lOiAndi1zaG93JyxcbiAgICAgICAgdmFsdWU6IHRoaXMuaW5kaWNhdG9ycyxcbiAgICAgICAgZXhwcmVzc2lvbjogJ2luZGljYXRvcnMnXG4gICAgICB9XSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGlkOiB0aGlzLnNhZmVJZCgnX19CVl9pbmRpY2F0b3JzXycpLFxuICAgICAgICAnYXJpYS1oaWRkZW4nOiB0aGlzLmluZGljYXRvcnMgPyAnZmFsc2UnIDogJ3RydWUnLFxuICAgICAgICAnYXJpYS1sYWJlbCc6IHRoaXMubGFiZWxJbmRpY2F0b3JzLFxuICAgICAgICAnYXJpYS1vd25zJzogdGhpcy5zYWZlSWQoJ19fQlZfaW5uZXJfJylcbiAgICAgIH1cbiAgICB9LCB0aGlzLnNsaWRlcy5tYXAoZnVuY3Rpb24gKHNsaWRlLCBuKSB7XG4gICAgICByZXR1cm4gaCgnbGknLCB7XG4gICAgICAgIGtleTogXCJzbGlkZV9cIi5jb25jYXQobiksXG4gICAgICAgIGNsYXNzOiB7XG4gICAgICAgICAgYWN0aXZlOiBuID09PSBfdGhpczMuaW5kZXhcbiAgICAgICAgfSxcbiAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICByb2xlOiAnYnV0dG9uJyxcbiAgICAgICAgICBpZDogX3RoaXMzLnNhZmVJZChcIl9fQlZfaW5kaWNhdG9yX1wiLmNvbmNhdChuICsgMSwgXCJfXCIpKSxcbiAgICAgICAgICB0YWJpbmRleDogX3RoaXMzLmluZGljYXRvcnMgPyAnMCcgOiAnLTEnLFxuICAgICAgICAgICdhcmlhLWN1cnJlbnQnOiBuID09PSBfdGhpczMuaW5kZXggPyAndHJ1ZScgOiAnZmFsc2UnLFxuICAgICAgICAgICdhcmlhLWxhYmVsJzogXCJcIi5jb25jYXQoX3RoaXMzLmxhYmVsR290b1NsaWRlLCBcIiBcIikuY29uY2F0KG4gKyAxKSxcbiAgICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc6IF90aGlzMy5zbGlkZXNbbl0uaWQgfHwgbnVsbCxcbiAgICAgICAgICAnYXJpYS1jb250cm9scyc6IF90aGlzMy5zYWZlSWQoJ19fQlZfaW5uZXJfJylcbiAgICAgICAgfSxcbiAgICAgICAgb246IHtcbiAgICAgICAgICBjbGljazogZnVuY3Rpb24gY2xpY2soZXZ0KSB7XG4gICAgICAgICAgICBfdGhpczMuaGFuZGxlQ2xpY2soZXZ0LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIF90aGlzMy5zZXRTbGlkZShuKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sXG4gICAgICAgICAga2V5ZG93bjogZnVuY3Rpb24ga2V5ZG93bihldnQpIHtcbiAgICAgICAgICAgIF90aGlzMy5oYW5kbGVDbGljayhldnQsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgX3RoaXMzLnNldFNsaWRlKG4pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KSk7XG4gICAgdmFyIG9uID0ge1xuICAgICAgbW91c2VlbnRlcjogdGhpcy5ub0hvdmVyUGF1c2UgPyBub29wIDogdGhpcy5wYXVzZSxcbiAgICAgIG1vdXNlbGVhdmU6IHRoaXMubm9Ib3ZlclBhdXNlID8gbm9vcCA6IHRoaXMucmVzdGFydCxcbiAgICAgIGZvY3VzaW46IHRoaXMucGF1c2UsXG4gICAgICBmb2N1c291dDogdGhpcy5yZXN0YXJ0LFxuICAgICAga2V5ZG93bjogZnVuY3Rpb24ga2V5ZG93bihldnQpIHtcbiAgICAgICAgaWYgKC9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QoZXZ0LnRhcmdldC50YWdOYW1lKSkge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGtleUNvZGUgPSBldnQua2V5Q29kZTtcblxuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gS2V5Q29kZXMuTEVGVCB8fCBrZXlDb2RlID09PSBLZXlDb2Rlcy5SSUdIVCkge1xuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgIF90aGlzM1trZXlDb2RlID09PSBLZXlDb2Rlcy5MRUZUID8gJ3ByZXYnIDogJ25leHQnXSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTsgLy8gVG91Y2ggc3VwcG9ydCBldmVudCBoYW5kbGVycyBmb3IgZW52aXJvbm1lbnRcblxuICAgIGlmICghdGhpcy5ub1RvdWNoICYmIGhhc1RvdWNoU3VwcG9ydCkge1xuICAgICAgLy8gQXR0YWNoIGFwcHJvcHJpYXRlIGxpc3RlbmVycyAocHJlcGVuZCBldmVudCBuYW1lIHdpdGggJyYnIGZvciBwYXNzaXZlIG1vZGUpXG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBKU0RPTSBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnRzICovXG4gICAgICBpZiAoaGFzUG9pbnRlckV2ZW50U3VwcG9ydCkge1xuICAgICAgICBvblsnJnBvaW50ZXJkb3duJ10gPSB0aGlzLnRvdWNoU3RhcnQ7XG4gICAgICAgIG9uWycmcG9pbnRlcnVwJ10gPSB0aGlzLnRvdWNoRW5kO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25bJyZ0b3VjaHN0YXJ0J10gPSB0aGlzLnRvdWNoU3RhcnQ7XG4gICAgICAgIG9uWycmdG91Y2htb3ZlJ10gPSB0aGlzLnRvdWNoTW92ZTtcbiAgICAgICAgb25bJyZ0b3VjaGVuZCddID0gdGhpcy50b3VjaEVuZDtcbiAgICAgIH1cbiAgICB9IC8vIFJldHVybiB0aGUgY2Fyb3VzZWxcblxuXG4gICAgcmV0dXJuIGgoJ2RpdicsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnY2Fyb3VzZWwnLFxuICAgICAgY2xhc3M6IHtcbiAgICAgICAgc2xpZGU6ICF0aGlzLm5vQW5pbWF0aW9uLFxuICAgICAgICAnY2Fyb3VzZWwtZmFkZSc6ICF0aGlzLm5vQW5pbWF0aW9uICYmIHRoaXMuZmFkZSxcbiAgICAgICAgJ3BvaW50ZXItZXZlbnQnOiAhdGhpcy5ub1RvdWNoICYmIGhhc1RvdWNoU3VwcG9ydCAmJiBoYXNQb2ludGVyRXZlbnRTdXBwb3J0XG4gICAgICB9LFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgYmFja2dyb3VuZDogdGhpcy5iYWNrZ3JvdW5kXG4gICAgICB9LFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcm9sZTogJ3JlZ2lvbicsXG4gICAgICAgIGlkOiB0aGlzLnNhZmVJZCgpLFxuICAgICAgICAnYXJpYS1idXN5JzogdGhpcy5pc1NsaWRpbmcgPyAndHJ1ZScgOiAnZmFsc2UnXG4gICAgICB9LFxuICAgICAgb246IG9uXG4gICAgfSwgW2lubmVyLCBjb250cm9scywgaW5kaWNhdG9yc10pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Nhcm91c2VsL2Nhcm91c2VsLmpzXG4vLyBtb2R1bGUgaWQgPSAxMjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///123\n"); /***/ }), /* 124 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_popper_js__ = __webpack_require__(125);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_warn__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_bv_event_class__ = __webpack_require__(41);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__id__ = __webpack_require__(9);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n // Return an array of visible items\n\nvar filterVisibles = function filterVisibles(els) {\n return (els || []).filter(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"p\" /* isVisible */]);\n}; // Root dropdown event names\n\n\nvar ROOT_DROPDOWN_PREFIX = 'bv::dropdown::';\nvar ROOT_DROPDOWN_SHOWN = \"\".concat(ROOT_DROPDOWN_PREFIX, \"shown\");\nvar ROOT_DROPDOWN_HIDDEN = \"\".concat(ROOT_DROPDOWN_PREFIX, \"hidden\"); // Delay when loosing focus before closing menu (in ms)\n\nvar FOCUSOUT_DELAY = 100; // Dropdown item CSS selectors\n\nvar Selector = {\n FORM_CHILD: '.dropdown form',\n ITEM_SELECTOR: ['.dropdown-item', '.b-dropdown-form'].map(function (selector) {\n return \"\".concat(selector, \":not(.disabled):not([disabled])\");\n }).join(', ')\n}; // Popper attachment positions\n\nvar AttachmentMap = {\n // Dropup left align\n TOP: 'top-start',\n // Dropup right align\n TOPEND: 'top-end',\n // Dropdown left align\n BOTTOM: 'bottom-start',\n // Dropdown right align\n BOTTOMEND: 'bottom-end',\n // Dropright left align\n RIGHT: 'right-start',\n // Dropright right align\n RIGHTEND: 'right-end',\n // Dropleft left align\n LEFT: 'left-start',\n // Dropleft right align\n LEFTEND: 'left-end'\n}; // @vue/component\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n mixins: [__WEBPACK_IMPORTED_MODULE_6__id__[\"a\" /* default */]],\n provide: function provide() {\n return {\n bvDropdown: this\n };\n },\n props: {\n disabled: {\n type: Boolean,\n default: false\n },\n text: {\n // Button label\n type: String,\n default: ''\n },\n html: {\n // Button label\n type: String\n },\n dropup: {\n // place on top if possible\n type: Boolean,\n default: false\n },\n dropright: {\n // place right if possible\n type: Boolean,\n default: false\n },\n dropleft: {\n // place left if possible\n type: Boolean,\n default: false\n },\n right: {\n // Right align menu (default is left align)\n type: Boolean,\n default: false\n },\n offset: {\n // Number of pixels to offset menu, or a CSS unit value (i.e. 1px, 1rem, etc)\n type: [Number, String],\n default: 0\n },\n noFlip: {\n // Disable auto-flipping of menu from bottom<=>top\n type: Boolean,\n default: false\n },\n lazy: {\n // If true, only render menu contents when open\n type: Boolean,\n default: false\n },\n popperOpts: {\n // type: Object,\n default: function _default() {}\n }\n },\n data: function data() {\n return {\n visible: false,\n inNavbar: null,\n visibleChangePrevented: false\n };\n },\n computed: {\n toggler: function toggler() {\n var toggle = this.$refs.toggle;\n return toggle ? toggle.$el || toggle : null;\n },\n directionClass: function directionClass() {\n if (this.dropup) {\n return 'dropup';\n } else if (this.dropright) {\n return 'dropright';\n } else if (this.dropleft) {\n return 'dropleft';\n }\n\n return '';\n }\n },\n watch: {\n visible: function visible(newValue, oldValue) {\n if (this.visibleChangePrevented) {\n this.visibleChangePrevented = false;\n return;\n }\n\n if (newValue !== oldValue) {\n var evtName = newValue ? 'show' : 'hide';\n var bvEvt = new __WEBPACK_IMPORTED_MODULE_3__utils_bv_event_class__[\"a\" /* BvEvent */](evtName, {\n cancelable: true,\n vueTarget: this,\n target: this.$refs.menu,\n relatedTarget: null,\n componentId: this.safeId ? this.safeId() : this.id || null\n });\n this.emitEvent(bvEvt);\n\n if (bvEvt.defaultPrevented) {\n // Reset value and exit if canceled\n this.visibleChangePrevented = true;\n this.visible = oldValue; // Just in case a child element triggered this.hide(true)\n\n this.$off('hidden', this.focusToggler);\n return;\n }\n\n if (evtName === 'show') {\n this.showMenu();\n } else {\n this.hideMenu();\n }\n }\n },\n disabled: function disabled(newValue, oldValue) {\n if (newValue !== oldValue && newValue && this.visible) {\n // Hide dropdown if disabled changes to true\n this.visible = false;\n }\n }\n },\n created: function created() {\n // Create non-reactive property\n this._popper = null;\n },\n deactivated: function deactivated()\n /* istanbul ignore next: not easy to test */\n {\n // In case we are inside a `<keep-alive>`\n this.visible = false;\n this.whileOpenListen(false);\n this.removePopper();\n },\n beforeDestroy: function beforeDestroy() {\n this.visible = false;\n this.whileOpenListen(false);\n this.removePopper();\n },\n methods: {\n // Event emitter\n emitEvent: function emitEvent(bvEvt) {\n var type = bvEvt.type;\n this.$emit(type, bvEvt);\n this.$root.$emit(\"\".concat(ROOT_DROPDOWN_PREFIX).concat(type), bvEvt);\n },\n showMenu: function showMenu() {\n var _this = this;\n\n if (this.disabled) {\n /* istanbul ignore next */\n return;\n } // Are we in a navbar ?\n\n\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"g\" /* isNull */])(this.inNavbar) && this.isNav) {\n // We should use an injection for this\n\n /* istanbul ignore next */\n this.inNavbar = Boolean(Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"c\" /* closest */])('.navbar', this.$el));\n } // Disable totally Popper.js for Dropdown in Navbar\n\n\n if (!this.inNavbar) {\n if (typeof __WEBPACK_IMPORTED_MODULE_0_popper_js__[\"a\" /* default */] === 'undefined') {\n /* istanbul ignore next */\n Object(__WEBPACK_IMPORTED_MODULE_2__utils_warn__[\"a\" /* default */])('b-dropdown: Popper.js not found. Falling back to CSS positioning.');\n } else {\n // for dropup with alignment we use the parent element as popper container\n var element = this.dropup && this.right || this.split ? this.$el : this.$refs.toggle; // Make sure we have a reference to an element, not a component!\n\n element = element.$el || element; // Instantiate popper.js\n\n this.createPopper(element);\n }\n } // Ensure other menus are closed\n\n\n this.$root.$emit(ROOT_DROPDOWN_SHOWN, this);\n this.whileOpenListen(true); // Wrap in nextTick to ensure menu is fully rendered/shown\n\n this.$nextTick(function () {\n // Focus on the menu container on show\n _this.focusMenu(); // Emit the shown event\n\n\n _this.$emit('shown');\n });\n },\n hideMenu: function hideMenu() {\n this.whileOpenListen(false);\n this.$root.$emit(ROOT_DROPDOWN_HIDDEN, this);\n this.$emit('hidden');\n this.removePopper();\n },\n createPopper: function createPopper(element) {\n this.removePopper();\n this._popper = new __WEBPACK_IMPORTED_MODULE_0_popper_js__[\"a\" /* default */](element, this.$refs.menu, this.getPopperConfig());\n },\n removePopper: function removePopper() {\n if (this._popper) {\n // Ensure popper event listeners are removed cleanly\n this._popper.destroy();\n }\n\n this._popper = null;\n },\n getPopperConfig: function getPopperConfig() {\n var placement = AttachmentMap.BOTTOM;\n\n if (this.dropup) {\n placement = this.right ? AttachmentMap.TOPEND : AttachmentMap.TOP;\n } else if (this.dropright) {\n placement = AttachmentMap.RIGHT;\n } else if (this.dropleft) {\n placement = AttachmentMap.LEFT;\n } else if (this.right) {\n placement = AttachmentMap.BOTTOMEND;\n }\n\n var popperConfig = {\n placement: placement,\n modifiers: {\n offset: {\n offset: this.offset || 0\n },\n flip: {\n enabled: !this.noFlip\n }\n }\n };\n\n if (this.boundary) {\n popperConfig.modifiers.preventOverflow = {\n boundariesElement: this.boundary\n };\n }\n\n return _objectSpread({}, popperConfig, {}, this.popperOpts || {});\n },\n whileOpenListen: function whileOpenListen(isOpen) {\n // turn listeners on/off while open\n if (isOpen) {\n // If another dropdown is opened\n this.$root.$on(ROOT_DROPDOWN_SHOWN, this.rootCloseListener); // Hide the menu when focus moves out\n\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"f\" /* eventOn */])(this.$el, 'focusout', this.onFocusOut, {\n passive: true\n });\n } else {\n this.$root.$off(ROOT_DROPDOWN_SHOWN, this.rootCloseListener);\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"e\" /* eventOff */])(this.$el, 'focusout', this.onFocusOut, {\n passive: true\n });\n }\n },\n rootCloseListener: function rootCloseListener(vm) {\n if (vm !== this) {\n this.visible = false;\n }\n },\n show: function show() {\n var _this2 = this;\n\n // Public method to show dropdown\n if (this.disabled) {\n return;\n } // Wrap in a requestAnimationFrame to allow any previous\n // click handling to occur first\n\n\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"w\" /* requestAF */])(function () {\n _this2.visible = true;\n });\n },\n hide: function hide() {\n var refocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n // Public method to hide dropdown\n if (this.disabled) {\n /* istanbul ignore next */\n return;\n }\n\n this.visible = false;\n\n if (refocus) {\n // Child element is closing the dropdown on click\n this.$once('hidden', this.focusToggler);\n }\n },\n // Called only by a button that toggles the menu\n toggle: function toggle(evt) {\n evt = evt || {};\n var type = evt.type;\n var key = evt.keyCode;\n\n if (type !== 'click' && !(type === 'keydown' && (key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].ENTER || key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].SPACE || key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].DOWN))) {\n // We only toggle on Click, Enter, Space, and Arrow Down\n\n /* istanbul ignore next */\n return;\n }\n /* istanbul ignore next */\n\n\n if (this.disabled) {\n this.visible = false;\n return;\n }\n\n this.$emit('toggle', evt);\n evt.preventDefault();\n evt.stopPropagation(); // Toggle visibility\n\n if (this.visible) {\n this.hide(true);\n } else {\n this.show();\n }\n },\n // Called only in split button mode, for the split button\n click: function click(evt) {\n /* istanbul ignore next */\n if (this.disabled) {\n this.visible = false;\n return;\n }\n\n this.$emit('click', evt);\n },\n // Called from dropdown menu context\n onKeydown: function onKeydown(evt) {\n var key = evt.keyCode;\n\n if (key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].ESC) {\n // Close on ESC\n this.onEsc(evt);\n } else if (key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].DOWN) {\n // Down Arrow\n this.focusNext(evt, false);\n } else if (key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].UP) {\n // Up Arrow\n this.focusNext(evt, true);\n }\n },\n // If uses presses ESC to close menu\n onEsc: function onEsc(evt) {\n if (this.visible) {\n this.visible = false;\n evt.preventDefault();\n evt.stopPropagation(); // Return focus to original trigger button\n\n this.$once('hidden', this.focusToggler);\n }\n },\n // Dropdown wrapper focusOut handler\n onFocusOut: function onFocusOut(evt) {\n var _this3 = this;\n\n // `relatedTarget` is the element gaining focus\n var relatedTarget = evt.relatedTarget; // If focus moves outside the menu or toggler, then close menu\n\n if (this.visible && !Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(this.$refs.menu, relatedTarget) && !Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(this.toggler, relatedTarget)) {\n var doHide = function doHide() {\n _this3.visible = false;\n }; // When we are in a navbar (which has been responsively stacked), we\n // delay the dropdown's closing so that the next element has a chance\n // to have it's click handler fired (in case it's position moves on\n // the screen do to a navbar menu above it collapsing)\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/4113\n\n\n this.inNavbar ? setTimeout(doHide, FOCUSOUT_DELAY) : doHide();\n }\n },\n // Keyboard nav\n focusNext: function focusNext(evt, up) {\n var _this4 = this;\n\n // Ignore key up/down on form elements\n if (!this.visible || evt && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"c\" /* closest */])(Selector.FORM_CHILD, evt.target)) {\n /* istanbul ignore next: should never happen */\n return;\n }\n\n evt.preventDefault();\n evt.stopPropagation();\n this.$nextTick(function () {\n var items = _this4.getItems();\n\n if (items.length < 1) {\n /* istanbul ignore next: should never happen */\n return;\n }\n\n var index = items.indexOf(evt.target);\n\n if (up && index > 0) {\n index--;\n } else if (!up && index < items.length - 1) {\n index++;\n }\n\n if (index < 0) {\n /* istanbul ignore next: should never happen */\n index = 0;\n }\n\n _this4.focusItem(index, items);\n });\n },\n focusItem: function focusItem(idx, items) {\n var el = items.find(function (el, i) {\n return i === idx;\n });\n\n if (el && el.focus) {\n el.focus();\n }\n },\n getItems: function getItems() {\n // Get all items\n return filterVisibles(Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"y\" /* selectAll */])(Selector.ITEM_SELECTOR, this.$refs.menu));\n },\n focusMenu: function focusMenu() {\n this.$refs.menu.focus && this.$refs.menu.focus();\n },\n focusToggler: function focusToggler() {\n var _this5 = this;\n\n this.$nextTick(function () {\n var toggler = _this5.toggler;\n\n if (toggler && toggler.focus) {\n toggler.focus();\n }\n });\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vbWl4aW5zL2Ryb3Bkb3duLmpzP2MwYmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRWhMO0FBQ1c7QUFDVDtBQUNpQjtBQUNtRDtBQUMzRDtBQUNmOztBQUUzQjtBQUNBLDRCQUE0Qiw2REFBUztBQUNyQyxFQUFFOzs7QUFHRjtBQUNBO0FBQ0EscUVBQXFFOztBQUVyRSx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRWE7QUFDZixXQUFXLG9EQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QixzRUFBTztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1AsVUFBVSxzRUFBTTtBQUNoQjs7QUFFQTtBQUNBLGdDQUFnQyxtRUFBTztBQUN2QyxPQUFPOzs7QUFHUDtBQUNBLG1CQUFtQiwwREFBTTtBQUN6QjtBQUNBLFVBQVUsb0VBQUk7QUFDZCxTQUFTO0FBQ1Q7QUFDQSwrRkFBK0Y7O0FBRS9GLDJDQUEyQzs7QUFFM0M7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0EsaUNBQWlDOztBQUVqQztBQUNBO0FBQ0EsMEJBQTBCOzs7QUFHMUI7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLHlCQUF5QiwwREFBTTtBQUMvQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBNkIsa0JBQWtCLHVCQUF1QjtBQUN0RSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvRUFBb0U7O0FBRXBFLFFBQVEsbUVBQU87QUFDZjtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxRQUFRLG9FQUFRO0FBQ2hCO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOzs7QUFHQSxNQUFNLHFFQUFTO0FBQ2Y7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtEQUErRCxpRUFBUSxrQkFBa0IsaUVBQVEsa0JBQWtCLGlFQUFRO0FBQzNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBLGtCQUFrQixpRUFBUTtBQUMxQjtBQUNBO0FBQ0EsT0FBTyxrQkFBa0IsaUVBQVE7QUFDakM7QUFDQTtBQUNBLE9BQU8sa0JBQWtCLGlFQUFRO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCOztBQUU5QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRDQUE0Qzs7QUFFNUMsMkJBQTJCLG9FQUFRLHFDQUFxQyxvRUFBUTtBQUNoRjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtDQUFrQyxtRUFBTztBQUN6QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsNEJBQTRCLHFFQUFTO0FBQ3JDLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMTI0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IFBvcHBlciBmcm9tICdwb3BwZXIuanMnO1xuaW1wb3J0IEtleUNvZGVzIGZyb20gJy4uL3V0aWxzL2tleS1jb2Rlcyc7XG5pbXBvcnQgd2FybiBmcm9tICcuLi91dGlscy93YXJuJztcbmltcG9ydCB7IEJ2RXZlbnQgfSBmcm9tICcuLi91dGlscy9idi1ldmVudC5jbGFzcyc7XG5pbXBvcnQgeyBjbG9zZXN0LCBjb250YWlucywgaXNWaXNpYmxlLCByZXF1ZXN0QUYsIHNlbGVjdEFsbCwgZXZlbnRPbiwgZXZlbnRPZmYgfSBmcm9tICcuLi91dGlscy9kb20nO1xuaW1wb3J0IHsgaXNOdWxsIH0gZnJvbSAnLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgaWRNaXhpbiBmcm9tICcuL2lkJzsgLy8gUmV0dXJuIGFuIGFycmF5IG9mIHZpc2libGUgaXRlbXNcblxudmFyIGZpbHRlclZpc2libGVzID0gZnVuY3Rpb24gZmlsdGVyVmlzaWJsZXMoZWxzKSB7XG4gIHJldHVybiAoZWxzIHx8IFtdKS5maWx0ZXIoaXNWaXNpYmxlKTtcbn07IC8vIFJvb3QgZHJvcGRvd24gZXZlbnQgbmFtZXNcblxuXG52YXIgUk9PVF9EUk9QRE9XTl9QUkVGSVggPSAnYnY6OmRyb3Bkb3duOjonO1xudmFyIFJPT1RfRFJPUERPV05fU0hPV04gPSBcIlwiLmNvbmNhdChST09UX0RST1BET1dOX1BSRUZJWCwgXCJzaG93blwiKTtcbnZhciBST09UX0RST1BET1dOX0hJRERFTiA9IFwiXCIuY29uY2F0KFJPT1RfRFJPUERPV05fUFJFRklYLCBcImhpZGRlblwiKTsgLy8gRGVsYXkgd2hlbiBsb29zaW5nIGZvY3VzIGJlZm9yZSBjbG9zaW5nIG1lbnUgKGluIG1zKVxuXG52YXIgRk9DVVNPVVRfREVMQVkgPSAxMDA7IC8vIERyb3Bkb3duIGl0ZW0gQ1NTIHNlbGVjdG9yc1xuXG52YXIgU2VsZWN0b3IgPSB7XG4gIEZPUk1fQ0hJTEQ6ICcuZHJvcGRvd24gZm9ybScsXG4gIElURU1fU0VMRUNUT1I6IFsnLmRyb3Bkb3duLWl0ZW0nLCAnLmItZHJvcGRvd24tZm9ybSddLm1hcChmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQoc2VsZWN0b3IsIFwiOm5vdCguZGlzYWJsZWQpOm5vdChbZGlzYWJsZWRdKVwiKTtcbiAgfSkuam9pbignLCAnKVxufTsgLy8gUG9wcGVyIGF0dGFjaG1lbnQgcG9zaXRpb25zXG5cbnZhciBBdHRhY2htZW50TWFwID0ge1xuICAvLyBEcm9wdXAgbGVmdCBhbGlnblxuICBUT1A6ICd0b3Atc3RhcnQnLFxuICAvLyBEcm9wdXAgcmlnaHQgYWxpZ25cbiAgVE9QRU5EOiAndG9wLWVuZCcsXG4gIC8vIERyb3Bkb3duIGxlZnQgYWxpZ25cbiAgQk9UVE9NOiAnYm90dG9tLXN0YXJ0JyxcbiAgLy8gRHJvcGRvd24gcmlnaHQgYWxpZ25cbiAgQk9UVE9NRU5EOiAnYm90dG9tLWVuZCcsXG4gIC8vIERyb3ByaWdodCBsZWZ0IGFsaWduXG4gIFJJR0hUOiAncmlnaHQtc3RhcnQnLFxuICAvLyBEcm9wcmlnaHQgcmlnaHQgYWxpZ25cbiAgUklHSFRFTkQ6ICdyaWdodC1lbmQnLFxuICAvLyBEcm9wbGVmdCBsZWZ0IGFsaWduXG4gIExFRlQ6ICdsZWZ0LXN0YXJ0JyxcbiAgLy8gRHJvcGxlZnQgcmlnaHQgYWxpZ25cbiAgTEVGVEVORDogJ2xlZnQtZW5kJ1xufTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IGRlZmF1bHQge1xuICBtaXhpbnM6IFtpZE1peGluXSxcbiAgcHJvdmlkZTogZnVuY3Rpb24gcHJvdmlkZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnZEcm9wZG93bjogdGhpc1xuICAgIH07XG4gIH0sXG4gIHByb3BzOiB7XG4gICAgZGlzYWJsZWQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgdGV4dDoge1xuICAgICAgLy8gQnV0dG9uIGxhYmVsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgaHRtbDoge1xuICAgICAgLy8gQnV0dG9uIGxhYmVsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGRyb3B1cDoge1xuICAgICAgLy8gcGxhY2Ugb24gdG9wIGlmIHBvc3NpYmxlXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGRyb3ByaWdodDoge1xuICAgICAgLy8gcGxhY2UgcmlnaHQgaWYgcG9zc2libGVcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgZHJvcGxlZnQ6IHtcbiAgICAgIC8vIHBsYWNlIGxlZnQgaWYgcG9zc2libGVcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgcmlnaHQ6IHtcbiAgICAgIC8vIFJpZ2h0IGFsaWduIG1lbnUgKGRlZmF1bHQgaXMgbGVmdCBhbGlnbilcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgb2Zmc2V0OiB7XG4gICAgICAvLyBOdW1iZXIgb2YgcGl4ZWxzIHRvIG9mZnNldCBtZW51LCBvciBhIENTUyB1bml0IHZhbHVlIChpLmUuIDFweCwgMXJlbSwgZXRjKVxuICAgICAgdHlwZTogW051bWJlciwgU3RyaW5nXSxcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9LFxuICAgIG5vRmxpcDoge1xuICAgICAgLy8gRGlzYWJsZSBhdXRvLWZsaXBwaW5nIG9mIG1lbnUgZnJvbSBib3R0b208PT50b3BcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgbGF6eToge1xuICAgICAgLy8gSWYgdHJ1ZSwgb25seSByZW5kZXIgbWVudSBjb250ZW50cyB3aGVuIG9wZW5cbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgcG9wcGVyT3B0czoge1xuICAgICAgLy8gdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7fVxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICBpbk5hdmJhcjogbnVsbCxcbiAgICAgIHZpc2libGVDaGFuZ2VQcmV2ZW50ZWQ6IGZhbHNlXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICB0b2dnbGVyOiBmdW5jdGlvbiB0b2dnbGVyKCkge1xuICAgICAgdmFyIHRvZ2dsZSA9IHRoaXMuJHJlZnMudG9nZ2xlO1xuICAgICAgcmV0dXJuIHRvZ2dsZSA/IHRvZ2dsZS4kZWwgfHwgdG9nZ2xlIDogbnVsbDtcbiAgICB9LFxuICAgIGRpcmVjdGlvbkNsYXNzOiBmdW5jdGlvbiBkaXJlY3Rpb25DbGFzcygpIHtcbiAgICAgIGlmICh0aGlzLmRyb3B1cCkge1xuICAgICAgICByZXR1cm4gJ2Ryb3B1cCc7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZHJvcHJpZ2h0KSB7XG4gICAgICAgIHJldHVybiAnZHJvcHJpZ2h0JztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kcm9wbGVmdCkge1xuICAgICAgICByZXR1cm4gJ2Ryb3BsZWZ0JztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICB2aXNpYmxlOiBmdW5jdGlvbiB2aXNpYmxlKG5ld1ZhbHVlLCBvbGRWYWx1ZSkge1xuICAgICAgaWYgKHRoaXMudmlzaWJsZUNoYW5nZVByZXZlbnRlZCkge1xuICAgICAgICB0aGlzLnZpc2libGVDaGFuZ2VQcmV2ZW50ZWQgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlKSB7XG4gICAgICAgIHZhciBldnROYW1lID0gbmV3VmFsdWUgPyAnc2hvdycgOiAnaGlkZSc7XG4gICAgICAgIHZhciBidkV2dCA9IG5ldyBCdkV2ZW50KGV2dE5hbWUsIHtcbiAgICAgICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgICAgICAgIHZ1ZVRhcmdldDogdGhpcyxcbiAgICAgICAgICB0YXJnZXQ6IHRoaXMuJHJlZnMubWVudSxcbiAgICAgICAgICByZWxhdGVkVGFyZ2V0OiBudWxsLFxuICAgICAgICAgIGNvbXBvbmVudElkOiB0aGlzLnNhZmVJZCA/IHRoaXMuc2FmZUlkKCkgOiB0aGlzLmlkIHx8IG51bGxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZW1pdEV2ZW50KGJ2RXZ0KTtcblxuICAgICAgICBpZiAoYnZFdnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgIC8vIFJlc2V0IHZhbHVlIGFuZCBleGl0IGlmIGNhbmNlbGVkXG4gICAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlUHJldmVudGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnZpc2libGUgPSBvbGRWYWx1ZTsgLy8gSnVzdCBpbiBjYXNlIGEgY2hpbGQgZWxlbWVudCB0cmlnZ2VyZWQgdGhpcy5oaWRlKHRydWUpXG5cbiAgICAgICAgICB0aGlzLiRvZmYoJ2hpZGRlbicsIHRoaXMuZm9jdXNUb2dnbGVyKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZ0TmFtZSA9PT0gJ3Nob3cnKSB7XG4gICAgICAgICAgdGhpcy5zaG93TWVudSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaGlkZU1lbnUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgZGlzYWJsZWQ6IGZ1bmN0aW9uIGRpc2FibGVkKG5ld1ZhbHVlLCBvbGRWYWx1ZSkge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSAmJiBuZXdWYWx1ZSAmJiB0aGlzLnZpc2libGUpIHtcbiAgICAgICAgLy8gSGlkZSBkcm9wZG93biBpZiBkaXNhYmxlZCBjaGFuZ2VzIHRvIHRydWVcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIC8vIENyZWF0ZSBub24tcmVhY3RpdmUgcHJvcGVydHlcbiAgICB0aGlzLl9wb3BwZXIgPSBudWxsO1xuICB9LFxuICBkZWFjdGl2YXRlZDogZnVuY3Rpb24gZGVhY3RpdmF0ZWQoKVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogbm90IGVhc3kgdG8gdGVzdCAqL1xuICB7XG4gICAgLy8gSW4gY2FzZSB3ZSBhcmUgaW5zaWRlIGEgYDxrZWVwLWFsaXZlPmBcbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLndoaWxlT3Blbkxpc3RlbihmYWxzZSk7XG4gICAgdGhpcy5yZW1vdmVQb3BwZXIoKTtcbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLndoaWxlT3Blbkxpc3RlbihmYWxzZSk7XG4gICAgdGhpcy5yZW1vdmVQb3BwZXIoKTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIC8vIEV2ZW50IGVtaXR0ZXJcbiAgICBlbWl0RXZlbnQ6IGZ1bmN0aW9uIGVtaXRFdmVudChidkV2dCkge1xuICAgICAgdmFyIHR5cGUgPSBidkV2dC50eXBlO1xuICAgICAgdGhpcy4kZW1pdCh0eXBlLCBidkV2dCk7XG4gICAgICB0aGlzLiRyb290LiRlbWl0KFwiXCIuY29uY2F0KFJPT1RfRFJPUERPV05fUFJFRklYKS5jb25jYXQodHlwZSksIGJ2RXZ0KTtcbiAgICB9LFxuICAgIHNob3dNZW51OiBmdW5jdGlvbiBzaG93TWVudSgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gQXJlIHdlIGluIGEgbmF2YmFyID9cblxuXG4gICAgICBpZiAoaXNOdWxsKHRoaXMuaW5OYXZiYXIpICYmIHRoaXMuaXNOYXYpIHtcbiAgICAgICAgLy8gV2Ugc2hvdWxkIHVzZSBhbiBpbmplY3Rpb24gZm9yIHRoaXNcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICB0aGlzLmluTmF2YmFyID0gQm9vbGVhbihjbG9zZXN0KCcubmF2YmFyJywgdGhpcy4kZWwpKTtcbiAgICAgIH0gLy8gRGlzYWJsZSB0b3RhbGx5IFBvcHBlci5qcyBmb3IgRHJvcGRvd24gaW4gTmF2YmFyXG5cblxuICAgICAgaWYgKCF0aGlzLmluTmF2YmFyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgUG9wcGVyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgd2FybignYi1kcm9wZG93bjogUG9wcGVyLmpzIG5vdCBmb3VuZC4gRmFsbGluZyBiYWNrIHRvIENTUyBwb3NpdGlvbmluZy4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBmb3IgZHJvcHVwIHdpdGggYWxpZ25tZW50IHdlIHVzZSB0aGUgcGFyZW50IGVsZW1lbnQgYXMgcG9wcGVyIGNvbnRhaW5lclxuICAgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5kcm9wdXAgJiYgdGhpcy5yaWdodCB8fCB0aGlzLnNwbGl0ID8gdGhpcy4kZWwgOiB0aGlzLiRyZWZzLnRvZ2dsZTsgLy8gTWFrZSBzdXJlIHdlIGhhdmUgYSByZWZlcmVuY2UgdG8gYW4gZWxlbWVudCwgbm90IGEgY29tcG9uZW50IVxuXG4gICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQuJGVsIHx8IGVsZW1lbnQ7IC8vIEluc3RhbnRpYXRlIHBvcHBlci5qc1xuXG4gICAgICAgICAgdGhpcy5jcmVhdGVQb3BwZXIoZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gRW5zdXJlIG90aGVyIG1lbnVzIGFyZSBjbG9zZWRcblxuXG4gICAgICB0aGlzLiRyb290LiRlbWl0KFJPT1RfRFJPUERPV05fU0hPV04sIHRoaXMpO1xuICAgICAgdGhpcy53aGlsZU9wZW5MaXN0ZW4odHJ1ZSk7IC8vIFdyYXAgaW4gbmV4dFRpY2sgdG8gZW5zdXJlIG1lbnUgaXMgZnVsbHkgcmVuZGVyZWQvc2hvd25cblxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBGb2N1cyBvbiB0aGUgbWVudSBjb250YWluZXIgb24gc2hvd1xuICAgICAgICBfdGhpcy5mb2N1c01lbnUoKTsgLy8gRW1pdCB0aGUgc2hvd24gZXZlbnRcblxuXG4gICAgICAgIF90aGlzLiRlbWl0KCdzaG93bicpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBoaWRlTWVudTogZnVuY3Rpb24gaGlkZU1lbnUoKSB7XG4gICAgICB0aGlzLndoaWxlT3Blbkxpc3RlbihmYWxzZSk7XG4gICAgICB0aGlzLiRyb290LiRlbWl0KFJPT1RfRFJPUERPV05fSElEREVOLCB0aGlzKTtcbiAgICAgIHRoaXMuJGVtaXQoJ2hpZGRlbicpO1xuICAgICAgdGhpcy5yZW1vdmVQb3BwZXIoKTtcbiAgICB9LFxuICAgIGNyZWF0ZVBvcHBlcjogZnVuY3Rpb24gY3JlYXRlUG9wcGVyKGVsZW1lbnQpIHtcbiAgICAgIHRoaXMucmVtb3ZlUG9wcGVyKCk7XG4gICAgICB0aGlzLl9wb3BwZXIgPSBuZXcgUG9wcGVyKGVsZW1lbnQsIHRoaXMuJHJlZnMubWVudSwgdGhpcy5nZXRQb3BwZXJDb25maWcoKSk7XG4gICAgfSxcbiAgICByZW1vdmVQb3BwZXI6IGZ1bmN0aW9uIHJlbW92ZVBvcHBlcigpIHtcbiAgICAgIGlmICh0aGlzLl9wb3BwZXIpIHtcbiAgICAgICAgLy8gRW5zdXJlIHBvcHBlciBldmVudCBsaXN0ZW5lcnMgYXJlIHJlbW92ZWQgY2xlYW5seVxuICAgICAgICB0aGlzLl9wb3BwZXIuZGVzdHJveSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9wb3BwZXIgPSBudWxsO1xuICAgIH0sXG4gICAgZ2V0UG9wcGVyQ29uZmlnOiBmdW5jdGlvbiBnZXRQb3BwZXJDb25maWcoKSB7XG4gICAgICB2YXIgcGxhY2VtZW50ID0gQXR0YWNobWVudE1hcC5CT1RUT007XG5cbiAgICAgIGlmICh0aGlzLmRyb3B1cCkge1xuICAgICAgICBwbGFjZW1lbnQgPSB0aGlzLnJpZ2h0ID8gQXR0YWNobWVudE1hcC5UT1BFTkQgOiBBdHRhY2htZW50TWFwLlRPUDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kcm9wcmlnaHQpIHtcbiAgICAgICAgcGxhY2VtZW50ID0gQXR0YWNobWVudE1hcC5SSUdIVDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kcm9wbGVmdCkge1xuICAgICAgICBwbGFjZW1lbnQgPSBBdHRhY2htZW50TWFwLkxFRlQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMucmlnaHQpIHtcbiAgICAgICAgcGxhY2VtZW50ID0gQXR0YWNobWVudE1hcC5CT1RUT01FTkQ7XG4gICAgICB9XG5cbiAgICAgIHZhciBwb3BwZXJDb25maWcgPSB7XG4gICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgICBtb2RpZmllcnM6IHtcbiAgICAgICAgICBvZmZzZXQ6IHtcbiAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQgfHwgMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZmxpcDoge1xuICAgICAgICAgICAgZW5hYmxlZDogIXRoaXMubm9GbGlwXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5ib3VuZGFyeSkge1xuICAgICAgICBwb3BwZXJDb25maWcubW9kaWZpZXJzLnByZXZlbnRPdmVyZmxvdyA9IHtcbiAgICAgICAgICBib3VuZGFyaWVzRWxlbWVudDogdGhpcy5ib3VuZGFyeVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7fSwgcG9wcGVyQ29uZmlnLCB7fSwgdGhpcy5wb3BwZXJPcHRzIHx8IHt9KTtcbiAgICB9LFxuICAgIHdoaWxlT3Blbkxpc3RlbjogZnVuY3Rpb24gd2hpbGVPcGVuTGlzdGVuKGlzT3Blbikge1xuICAgICAgLy8gdHVybiBsaXN0ZW5lcnMgb24vb2ZmIHdoaWxlIG9wZW5cbiAgICAgIGlmIChpc09wZW4pIHtcbiAgICAgICAgLy8gSWYgYW5vdGhlciBkcm9wZG93biBpcyBvcGVuZWRcbiAgICAgICAgdGhpcy4kcm9vdC4kb24oUk9PVF9EUk9QRE9XTl9TSE9XTiwgdGhpcy5yb290Q2xvc2VMaXN0ZW5lcik7IC8vIEhpZGUgdGhlIG1lbnUgd2hlbiBmb2N1cyBtb3ZlcyBvdXRcblxuICAgICAgICBldmVudE9uKHRoaXMuJGVsLCAnZm9jdXNvdXQnLCB0aGlzLm9uRm9jdXNPdXQsIHtcbiAgICAgICAgICBwYXNzaXZlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4kcm9vdC4kb2ZmKFJPT1RfRFJPUERPV05fU0hPV04sIHRoaXMucm9vdENsb3NlTGlzdGVuZXIpO1xuICAgICAgICBldmVudE9mZih0aGlzLiRlbCwgJ2ZvY3Vzb3V0JywgdGhpcy5vbkZvY3VzT3V0LCB7XG4gICAgICAgICAgcGFzc2l2ZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJvb3RDbG9zZUxpc3RlbmVyOiBmdW5jdGlvbiByb290Q2xvc2VMaXN0ZW5lcih2bSkge1xuICAgICAgaWYgKHZtICE9PSB0aGlzKSB7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2hvdzogZnVuY3Rpb24gc2hvdygpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICAvLyBQdWJsaWMgbWV0aG9kIHRvIHNob3cgZHJvcGRvd25cbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gV3JhcCBpbiBhIHJlcXVlc3RBbmltYXRpb25GcmFtZSB0byBhbGxvdyBhbnkgcHJldmlvdXNcbiAgICAgIC8vIGNsaWNrIGhhbmRsaW5nIHRvIG9jY3VyIGZpcnN0XG5cblxuICAgICAgcmVxdWVzdEFGKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMyLnZpc2libGUgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBoaWRlOiBmdW5jdGlvbiBoaWRlKCkge1xuICAgICAgdmFyIHJlZm9jdXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGZhbHNlO1xuXG4gICAgICAvLyBQdWJsaWMgbWV0aG9kIHRvIGhpZGUgZHJvcGRvd25cbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG5cbiAgICAgIGlmIChyZWZvY3VzKSB7XG4gICAgICAgIC8vIENoaWxkIGVsZW1lbnQgaXMgY2xvc2luZyB0aGUgZHJvcGRvd24gb24gY2xpY2tcbiAgICAgICAgdGhpcy4kb25jZSgnaGlkZGVuJywgdGhpcy5mb2N1c1RvZ2dsZXIpO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8gQ2FsbGVkIG9ubHkgYnkgYSBidXR0b24gdGhhdCB0b2dnbGVzIHRoZSBtZW51XG4gICAgdG9nZ2xlOiBmdW5jdGlvbiB0b2dnbGUoZXZ0KSB7XG4gICAgICBldnQgPSBldnQgfHwge307XG4gICAgICB2YXIgdHlwZSA9IGV2dC50eXBlO1xuICAgICAgdmFyIGtleSA9IGV2dC5rZXlDb2RlO1xuXG4gICAgICBpZiAodHlwZSAhPT0gJ2NsaWNrJyAmJiAhKHR5cGUgPT09ICdrZXlkb3duJyAmJiAoa2V5ID09PSBLZXlDb2Rlcy5FTlRFUiB8fCBrZXkgPT09IEtleUNvZGVzLlNQQUNFIHx8IGtleSA9PT0gS2V5Q29kZXMuRE9XTikpKSB7XG4gICAgICAgIC8vIFdlIG9ubHkgdG9nZ2xlIG9uIENsaWNrLCBFbnRlciwgU3BhY2UsIGFuZCBBcnJvdyBEb3duXG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblxuXG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiRlbWl0KCd0b2dnbGUnLCBldnQpO1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIFRvZ2dsZSB2aXNpYmlsaXR5XG5cbiAgICAgIGlmICh0aGlzLnZpc2libGUpIHtcbiAgICAgICAgdGhpcy5oaWRlKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyBDYWxsZWQgb25seSBpbiBzcGxpdCBidXR0b24gbW9kZSwgZm9yIHRoZSBzcGxpdCBidXR0b25cbiAgICBjbGljazogZnVuY3Rpb24gY2xpY2soZXZ0KSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy4kZW1pdCgnY2xpY2snLCBldnQpO1xuICAgIH0sXG4gICAgLy8gQ2FsbGVkIGZyb20gZHJvcGRvd24gbWVudSBjb250ZXh0XG4gICAgb25LZXlkb3duOiBmdW5jdGlvbiBvbktleWRvd24oZXZ0KSB7XG4gICAgICB2YXIga2V5ID0gZXZ0LmtleUNvZGU7XG5cbiAgICAgIGlmIChrZXkgPT09IEtleUNvZGVzLkVTQykge1xuICAgICAgICAvLyBDbG9zZSBvbiBFU0NcbiAgICAgICAgdGhpcy5vbkVzYyhldnQpO1xuICAgICAgfSBlbHNlIGlmIChrZXkgPT09IEtleUNvZGVzLkRPV04pIHtcbiAgICAgICAgLy8gRG93biBBcnJvd1xuICAgICAgICB0aGlzLmZvY3VzTmV4dChldnQsIGZhbHNlKTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBLZXlDb2Rlcy5VUCkge1xuICAgICAgICAvLyBVcCBBcnJvd1xuICAgICAgICB0aGlzLmZvY3VzTmV4dChldnQsIHRydWUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8gSWYgdXNlcyBwcmVzc2VzIEVTQyB0byBjbG9zZSBtZW51XG4gICAgb25Fc2M6IGZ1bmN0aW9uIG9uRXNjKGV2dCkge1xuICAgICAgaWYgKHRoaXMudmlzaWJsZSkge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gUmV0dXJuIGZvY3VzIHRvIG9yaWdpbmFsIHRyaWdnZXIgYnV0dG9uXG5cbiAgICAgICAgdGhpcy4kb25jZSgnaGlkZGVuJywgdGhpcy5mb2N1c1RvZ2dsZXIpO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8gRHJvcGRvd24gd3JhcHBlciBmb2N1c091dCBoYW5kbGVyXG4gICAgb25Gb2N1c091dDogZnVuY3Rpb24gb25Gb2N1c091dChldnQpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICAvLyBgcmVsYXRlZFRhcmdldGAgaXMgdGhlIGVsZW1lbnQgZ2FpbmluZyBmb2N1c1xuICAgICAgdmFyIHJlbGF0ZWRUYXJnZXQgPSBldnQucmVsYXRlZFRhcmdldDsgLy8gSWYgZm9jdXMgbW92ZXMgb3V0c2lkZSB0aGUgbWVudSBvciB0b2dnbGVyLCB0aGVuIGNsb3NlIG1lbnVcblxuICAgICAgaWYgKHRoaXMudmlzaWJsZSAmJiAhY29udGFpbnModGhpcy4kcmVmcy5tZW51LCByZWxhdGVkVGFyZ2V0KSAmJiAhY29udGFpbnModGhpcy50b2dnbGVyLCByZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgICB2YXIgZG9IaWRlID0gZnVuY3Rpb24gZG9IaWRlKCkge1xuICAgICAgICAgIF90aGlzMy52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgIH07IC8vIFdoZW4gd2UgYXJlIGluIGEgbmF2YmFyICh3aGljaCBoYXMgYmVlbiByZXNwb25zaXZlbHkgc3RhY2tlZCksIHdlXG4gICAgICAgIC8vIGRlbGF5IHRoZSBkcm9wZG93bidzIGNsb3Npbmcgc28gdGhhdCB0aGUgbmV4dCBlbGVtZW50IGhhcyBhIGNoYW5jZVxuICAgICAgICAvLyB0byBoYXZlIGl0J3MgY2xpY2sgaGFuZGxlciBmaXJlZCAoaW4gY2FzZSBpdCdzIHBvc2l0aW9uIG1vdmVzIG9uXG4gICAgICAgIC8vIHRoZSBzY3JlZW4gZG8gdG8gYSBuYXZiYXIgbWVudSBhYm92ZSBpdCBjb2xsYXBzaW5nKVxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYm9vdHN0cmFwLXZ1ZS9ib290c3RyYXAtdnVlL2lzc3Vlcy80MTEzXG5cblxuICAgICAgICB0aGlzLmluTmF2YmFyID8gc2V0VGltZW91dChkb0hpZGUsIEZPQ1VTT1VUX0RFTEFZKSA6IGRvSGlkZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8gS2V5Ym9hcmQgbmF2XG4gICAgZm9jdXNOZXh0OiBmdW5jdGlvbiBmb2N1c05leHQoZXZ0LCB1cCkge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICAgIC8vIElnbm9yZSBrZXkgdXAvZG93biBvbiBmb3JtIGVsZW1lbnRzXG4gICAgICBpZiAoIXRoaXMudmlzaWJsZSB8fCBldnQgJiYgY2xvc2VzdChTZWxlY3Rvci5GT1JNX0NISUxELCBldnQudGFyZ2V0KSkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogc2hvdWxkIG5ldmVyIGhhcHBlbiAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgaXRlbXMgPSBfdGhpczQuZ2V0SXRlbXMoKTtcblxuICAgICAgICBpZiAoaXRlbXMubGVuZ3RoIDwgMSkge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBzaG91bGQgbmV2ZXIgaGFwcGVuICovXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGluZGV4ID0gaXRlbXMuaW5kZXhPZihldnQudGFyZ2V0KTtcblxuICAgICAgICBpZiAodXAgJiYgaW5kZXggPiAwKSB7XG4gICAgICAgICAgaW5kZXgtLTtcbiAgICAgICAgfSBlbHNlIGlmICghdXAgJiYgaW5kZXggPCBpdGVtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogc2hvdWxkIG5ldmVyIGhhcHBlbiAqL1xuICAgICAgICAgIGluZGV4ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzNC5mb2N1c0l0ZW0oaW5kZXgsIGl0ZW1zKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZm9jdXNJdGVtOiBmdW5jdGlvbiBmb2N1c0l0ZW0oaWR4LCBpdGVtcykge1xuICAgICAgdmFyIGVsID0gaXRlbXMuZmluZChmdW5jdGlvbiAoZWwsIGkpIHtcbiAgICAgICAgcmV0dXJuIGkgPT09IGlkeDtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoZWwgJiYgZWwuZm9jdXMpIHtcbiAgICAgICAgZWwuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGdldEl0ZW1zOiBmdW5jdGlvbiBnZXRJdGVtcygpIHtcbiAgICAgIC8vIEdldCBhbGwgaXRlbXNcbiAgICAgIHJldHVybiBmaWx0ZXJWaXNpYmxlcyhzZWxlY3RBbGwoU2VsZWN0b3IuSVRFTV9TRUxFQ1RPUiwgdGhpcy4kcmVmcy5tZW51KSk7XG4gICAgfSxcbiAgICBmb2N1c01lbnU6IGZ1bmN0aW9uIGZvY3VzTWVudSgpIHtcbiAgICAgIHRoaXMuJHJlZnMubWVudS5mb2N1cyAmJiB0aGlzLiRyZWZzLm1lbnUuZm9jdXMoKTtcbiAgICB9LFxuICAgIGZvY3VzVG9nZ2xlcjogZnVuY3Rpb24gZm9jdXNUb2dnbGVyKCkge1xuICAgICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRvZ2dsZXIgPSBfdGhpczUudG9nZ2xlcjtcblxuICAgICAgICBpZiAodG9nZ2xlciAmJiB0b2dnbGVyLmZvY3VzKSB7XG4gICAgICAgICAgdG9nZ2xlci5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vbWl4aW5zL2Ryb3Bkb3duLmpzXG4vLyBtb2R1bGUgaWQgPSAxMjRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///124\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BCarouselSlide; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_env__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_html__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__image_img__ = __webpack_require__(38);\n\n\n\n\n\n\nvar props = {\n imgSrc: {\n type: String // default: undefined\n\n },\n imgAlt: {\n type: String // default: undefined\n\n },\n imgWidth: {\n type: [Number, String] // default: undefined\n\n },\n imgHeight: {\n type: [Number, String] // default: undefined\n\n },\n imgBlank: {\n type: Boolean,\n default: false\n },\n imgBlankColor: {\n type: String,\n default: 'transparent'\n },\n contentVisibleUp: {\n type: String\n },\n contentTag: {\n type: String,\n default: 'div'\n },\n caption: {\n type: String\n },\n captionHtml: {\n type: String\n },\n captionTag: {\n type: String,\n default: 'h3'\n },\n text: {\n type: String\n },\n textHtml: {\n type: String\n },\n textTag: {\n type: String,\n default: 'p'\n },\n background: {\n type: String\n }\n}; // @vue/component\n\nvar BCarouselSlide =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BCarouselSlide',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__[\"a\" /* default */]],\n inject: {\n bvCarousel: {\n default: function _default() {\n return {\n // Explicitly disable touch if not a child of carousel\n noTouch: true\n };\n }\n }\n },\n props: props,\n computed: {\n contentClasses: function contentClasses() {\n return [this.contentVisibleUp ? 'd-none' : '', this.contentVisibleUp ? \"d-\".concat(this.contentVisibleUp, \"-block\") : ''];\n },\n computedWidth: function computedWidth() {\n // Use local width, or try parent width\n return this.imgWidth || this.bvCarousel.imgWidth || null;\n },\n computedHeight: function computedHeight() {\n // Use local height, or try parent height\n return this.imgHeight || this.bvCarousel.imgHeight || null;\n }\n },\n render: function render(h) {\n var noDrag = !this.bvCarousel.noTouch && __WEBPACK_IMPORTED_MODULE_3__utils_env__[\"h\" /* hasTouchSupport */];\n var img = this.normalizeSlot('img');\n\n if (!img && (this.imgSrc || this.imgBlank)) {\n img = h(__WEBPACK_IMPORTED_MODULE_5__image_img__[\"a\" /* BImg */], {\n props: {\n fluidGrow: true,\n block: true,\n src: this.imgSrc,\n blank: this.imgBlank,\n blankColor: this.imgBlankColor,\n width: this.computedWidth,\n height: this.computedHeight,\n alt: this.imgAlt\n },\n // Touch support event handler\n on: noDrag ? {\n dragstart: function dragstart(e) {\n /* istanbul ignore next: difficult to test in JSDOM */\n e.preventDefault();\n }\n } : {}\n });\n }\n\n if (!img) {\n img = h();\n }\n\n var content = h();\n var contentChildren = [this.caption || this.captionHtml ? h(this.captionTag, {\n domProps: Object(__WEBPACK_IMPORTED_MODULE_4__utils_html__[\"a\" /* htmlOrText */])(this.captionHtml, this.caption)\n }) : false, this.text || this.textHtml ? h(this.textTag, {\n domProps: Object(__WEBPACK_IMPORTED_MODULE_4__utils_html__[\"a\" /* htmlOrText */])(this.textHtml, this.text)\n }) : false, this.normalizeSlot('default') || false];\n\n if (contentChildren.some(Boolean)) {\n content = h(this.contentTag, {\n staticClass: 'carousel-caption',\n class: this.contentClasses\n }, contentChildren.map(function (i) {\n return i || h();\n }));\n }\n\n return h('div', {\n staticClass: 'carousel-item',\n style: {\n background: this.background || this.bvCarousel.background || null\n },\n attrs: {\n id: this.safeId(),\n role: 'listitem'\n }\n }, [img, content]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jYXJvdXNlbC9jYXJvdXNlbC1zbGlkZS5qcz9mM2MyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDSTtBQUN1QjtBQUNYO0FBQ0o7QUFDVjtBQUM3QjtBQUNQO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUs7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQSxXQUFXLDJEQUFPLEVBQUUsdUVBQWtCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSw2Q0FBNkMsbUVBQWU7QUFDNUQ7O0FBRUE7QUFDQSxjQUFjLHdEQUFJO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCLHVFQUFVO0FBQzFCLEtBQUs7QUFDTCxnQkFBZ0IsdUVBQVU7QUFDMUIsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMTI0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IGlkTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2lkJztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JztcbmltcG9ydCB7IGhhc1RvdWNoU3VwcG9ydCB9IGZyb20gJy4uLy4uL3V0aWxzL2Vudic7XG5pbXBvcnQgeyBodG1sT3JUZXh0IH0gZnJvbSAnLi4vLi4vdXRpbHMvaHRtbCc7XG5pbXBvcnQgeyBCSW1nIH0gZnJvbSAnLi4vaW1hZ2UvaW1nJztcbmV4cG9ydCB2YXIgcHJvcHMgPSB7XG4gIGltZ1NyYzoge1xuICAgIHR5cGU6IFN0cmluZyAvLyBkZWZhdWx0OiB1bmRlZmluZWRcblxuICB9LFxuICBpbWdBbHQ6IHtcbiAgICB0eXBlOiBTdHJpbmcgLy8gZGVmYXVsdDogdW5kZWZpbmVkXG5cbiAgfSxcbiAgaW1nV2lkdGg6IHtcbiAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddIC8vIGRlZmF1bHQ6IHVuZGVmaW5lZFxuXG4gIH0sXG4gIGltZ0hlaWdodDoge1xuICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10gLy8gZGVmYXVsdDogdW5kZWZpbmVkXG5cbiAgfSxcbiAgaW1nQmxhbms6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIGltZ0JsYW5rQ29sb3I6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ3RyYW5zcGFyZW50J1xuICB9LFxuICBjb250ZW50VmlzaWJsZVVwOiB7XG4gICAgdHlwZTogU3RyaW5nXG4gIH0sXG4gIGNvbnRlbnRUYWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ2RpdidcbiAgfSxcbiAgY2FwdGlvbjoge1xuICAgIHR5cGU6IFN0cmluZ1xuICB9LFxuICBjYXB0aW9uSHRtbDoge1xuICAgIHR5cGU6IFN0cmluZ1xuICB9LFxuICBjYXB0aW9uVGFnOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdoMydcbiAgfSxcbiAgdGV4dDoge1xuICAgIHR5cGU6IFN0cmluZ1xuICB9LFxuICB0ZXh0SHRtbDoge1xuICAgIHR5cGU6IFN0cmluZ1xuICB9LFxuICB0ZXh0VGFnOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdwJ1xuICB9LFxuICBiYWNrZ3JvdW5kOiB7XG4gICAgdHlwZTogU3RyaW5nXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkNhcm91c2VsU2xpZGUgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCQ2Fyb3VzZWxTbGlkZScsXG4gIG1peGluczogW2lkTWl4aW4sIG5vcm1hbGl6ZVNsb3RNaXhpbl0sXG4gIGluamVjdDoge1xuICAgIGJ2Q2Fyb3VzZWw6IHtcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC8vIEV4cGxpY2l0bHkgZGlzYWJsZSB0b3VjaCBpZiBub3QgYSBjaGlsZCBvZiBjYXJvdXNlbFxuICAgICAgICAgIG5vVG91Y2g6IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHByb3BzOiBwcm9wcyxcbiAgY29tcHV0ZWQ6IHtcbiAgICBjb250ZW50Q2xhc3NlczogZnVuY3Rpb24gY29udGVudENsYXNzZXMoKSB7XG4gICAgICByZXR1cm4gW3RoaXMuY29udGVudFZpc2libGVVcCA/ICdkLW5vbmUnIDogJycsIHRoaXMuY29udGVudFZpc2libGVVcCA/IFwiZC1cIi5jb25jYXQodGhpcy5jb250ZW50VmlzaWJsZVVwLCBcIi1ibG9ja1wiKSA6ICcnXTtcbiAgICB9LFxuICAgIGNvbXB1dGVkV2lkdGg6IGZ1bmN0aW9uIGNvbXB1dGVkV2lkdGgoKSB7XG4gICAgICAvLyBVc2UgbG9jYWwgd2lkdGgsIG9yIHRyeSBwYXJlbnQgd2lkdGhcbiAgICAgIHJldHVybiB0aGlzLmltZ1dpZHRoIHx8IHRoaXMuYnZDYXJvdXNlbC5pbWdXaWR0aCB8fCBudWxsO1xuICAgIH0sXG4gICAgY29tcHV0ZWRIZWlnaHQ6IGZ1bmN0aW9uIGNvbXB1dGVkSGVpZ2h0KCkge1xuICAgICAgLy8gVXNlIGxvY2FsIGhlaWdodCwgb3IgdHJ5IHBhcmVudCBoZWlnaHRcbiAgICAgIHJldHVybiB0aGlzLmltZ0hlaWdodCB8fCB0aGlzLmJ2Q2Fyb3VzZWwuaW1nSGVpZ2h0IHx8IG51bGw7XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyIG5vRHJhZyA9ICF0aGlzLmJ2Q2Fyb3VzZWwubm9Ub3VjaCAmJiBoYXNUb3VjaFN1cHBvcnQ7XG4gICAgdmFyIGltZyA9IHRoaXMubm9ybWFsaXplU2xvdCgnaW1nJyk7XG5cbiAgICBpZiAoIWltZyAmJiAodGhpcy5pbWdTcmMgfHwgdGhpcy5pbWdCbGFuaykpIHtcbiAgICAgIGltZyA9IGgoQkltZywge1xuICAgICAgICBwcm9wczoge1xuICAgICAgICAgIGZsdWlkR3JvdzogdHJ1ZSxcbiAgICAgICAgICBibG9jazogdHJ1ZSxcbiAgICAgICAgICBzcmM6IHRoaXMuaW1nU3JjLFxuICAgICAgICAgIGJsYW5rOiB0aGlzLmltZ0JsYW5rLFxuICAgICAgICAgIGJsYW5rQ29sb3I6IHRoaXMuaW1nQmxhbmtDb2xvcixcbiAgICAgICAgICB3aWR0aDogdGhpcy5jb21wdXRlZFdpZHRoLFxuICAgICAgICAgIGhlaWdodDogdGhpcy5jb21wdXRlZEhlaWdodCxcbiAgICAgICAgICBhbHQ6IHRoaXMuaW1nQWx0XG4gICAgICAgIH0sXG4gICAgICAgIC8vIFRvdWNoIHN1cHBvcnQgZXZlbnQgaGFuZGxlclxuICAgICAgICBvbjogbm9EcmFnID8ge1xuICAgICAgICAgIGRyYWdzdGFydDogZnVuY3Rpb24gZHJhZ3N0YXJ0KGUpIHtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBkaWZmaWN1bHQgdG8gdGVzdCBpbiBKU0RPTSAqL1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSA6IHt9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIWltZykge1xuICAgICAgaW1nID0gaCgpO1xuICAgIH1cblxuICAgIHZhciBjb250ZW50ID0gaCgpO1xuICAgIHZhciBjb250ZW50Q2hpbGRyZW4gPSBbdGhpcy5jYXB0aW9uIHx8IHRoaXMuY2FwdGlvbkh0bWwgPyBoKHRoaXMuY2FwdGlvblRhZywge1xuICAgICAgZG9tUHJvcHM6IGh0bWxPclRleHQodGhpcy5jYXB0aW9uSHRtbCwgdGhpcy5jYXB0aW9uKVxuICAgIH0pIDogZmFsc2UsIHRoaXMudGV4dCB8fCB0aGlzLnRleHRIdG1sID8gaCh0aGlzLnRleHRUYWcsIHtcbiAgICAgIGRvbVByb3BzOiBodG1sT3JUZXh0KHRoaXMudGV4dEh0bWwsIHRoaXMudGV4dClcbiAgICB9KSA6IGZhbHNlLCB0aGlzLm5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnKSB8fCBmYWxzZV07XG5cbiAgICBpZiAoY29udGVudENoaWxkcmVuLnNvbWUoQm9vbGVhbikpIHtcbiAgICAgIGNvbnRlbnQgPSBoKHRoaXMuY29udGVudFRhZywge1xuICAgICAgICBzdGF0aWNDbGFzczogJ2Nhcm91c2VsLWNhcHRpb24nLFxuICAgICAgICBjbGFzczogdGhpcy5jb250ZW50Q2xhc3Nlc1xuICAgICAgfSwgY29udGVudENoaWxkcmVuLm1hcChmdW5jdGlvbiAoaSkge1xuICAgICAgICByZXR1cm4gaSB8fCBoKCk7XG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGgoJ2RpdicsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnY2Fyb3VzZWwtaXRlbScsXG4gICAgICBzdHlsZToge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0aGlzLmJhY2tncm91bmQgfHwgdGhpcy5idkNhcm91c2VsLmJhY2tncm91bmQgfHwgbnVsbFxuICAgICAgfSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGlkOiB0aGlzLnNhZmVJZCgpLFxuICAgICAgICByb2xlOiAnbGlzdGl0ZW0nXG4gICAgICB9XG4gICAgfSwgW2ltZywgY29udGVudF0pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Nhcm91c2VsL2Nhcm91c2VsLXNsaWRlLmpzXG4vLyBtb2R1bGUgaWQgPSAxMjRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///124\n"); /***/ }), /* 125 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(global) {/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.0\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Popper);\n//# sourceMappingURL=popper.js.map\n\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(25)))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcG9wcGVyLmpzL2Rpc3QvZXNtL3BvcHBlci5qcz82NjBjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUIsa0NBQWtDO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxJQUFJO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0QixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsZUFBZTtBQUMxQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsY0FBYyxRQUFRO0FBQ3RCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0QixjQUFjLE9BQU87QUFDckIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFlBQVk7QUFDdkIsV0FBVyxRQUFRO0FBQ25CLFlBQVksT0FBTztBQUNuQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxvQkFBb0I7QUFDL0I7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWSxPQUFPO0FBQ25COztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixrQkFBa0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7OztBQU1EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsc0JBQXNCO0FBQ3ZDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFlBQVk7QUFDdkIsWUFBWSxPQUFPO0FBQ25CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsY0FBYyxRQUFRO0FBQ3RCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsYUFBYSxRQUFRO0FBQ3JCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFlBQVk7QUFDdkIsV0FBVyxZQUFZO0FBQ3ZCLFdBQVcsT0FBTztBQUNsQixXQUFXLFlBQVk7QUFDdkIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsb0JBQW9CO0FBQ3BCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsWUFBWTtBQUN2QixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE1BQU07QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFdBQVc7QUFDdEIsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsT0FBTztBQUNsQixhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjO0FBQ2QsbUJBQW1CO0FBQ25CLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixxQkFBcUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLGdCQUFnQjs7QUFFNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzRUFBc0UsZ0JBQWdCOztBQUV0RjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0QixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFlBQVk7QUFDdkIsV0FBVyxZQUFZO0FBQ3ZCLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCLHlEQUF5RDs7QUFFOUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxRQUFRO0FBQ3RCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0I7QUFDL0IsMkJBQTJCO0FBQzNCLGdDQUFnQzs7QUFFaEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsZ0RBQWdEOztBQUVoRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVixVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLFFBQVE7QUFDdEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsdUNBQXVDOztBQUV2QztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxjQUFjO0FBQzVCO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdEO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QixHQUFHOztBQUVIOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhCQUE4QjtBQUM5Qiw0QkFBNEI7QUFDNUI7O0FBRUEscUNBQXFDO0FBQ3JDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFdBQVc7QUFDekIsY0FBYyxPQUFPO0FBQ3JCLGFBQWEsV0FBVztBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QjtBQUNBLGVBQWUsUUFBUTtBQUN2QjtBQUNBLGVBQWUsV0FBVztBQUMxQjtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0EsZUFBZSxjQUFjO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQSxjQUFjLE1BQU07QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLG1CQUFtQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEI7QUFDQSxlQUFlLFFBQVE7QUFDdkI7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEI7QUFDQSxlQUFlLFFBQVE7QUFDdkI7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQSxlQUFlLG1CQUFtQjtBQUNsQztBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQSxjQUFjLGFBQWE7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxtQkFBbUI7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QjtBQUNBLGVBQWUsUUFBUTtBQUN2QjtBQUNBLGVBQWUsV0FBVztBQUMxQjtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QjtBQUNBLGVBQWUsUUFBUTtBQUN2QjtBQUNBLGVBQWUsV0FBVztBQUMxQjtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEI7QUFDQSxlQUFlLFFBQVE7QUFDdkI7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0EsZUFBZSxTQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixjQUFjLFFBQVE7QUFDdEIsY0FBYyxRQUFRO0FBQ3RCLGNBQWMsWUFBWTtBQUMxQixjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBLElBQUk7QUFDSjtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGtCQUFrQjtBQUM5QjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZLFFBQVE7QUFDcEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxXQUFXO0FBQ3RCOztBQUVBO0FBQ0E7QUFDQSxXQUFXLFdBQVc7QUFDdEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSx3QkFBd0I7QUFDckMsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsY0FBYztBQUNkLDhCQUE4Qjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCLGlEQUFpRCx1Q0FBdUMsa0RBQWtEO0FBQzFJLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxTQUFTO0FBQ3ZCO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFZSwrREFBTSxFQUFDO0FBQ3RCIiwiZmlsZSI6IjEyNS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiFcbiAqIEBmaWxlT3ZlcnZpZXcgS2lja2FzcyBsaWJyYXJ5IHRvIGNyZWF0ZSBhbmQgcGxhY2UgcG9wcGVycyBuZWFyIHRoZWlyIHJlZmVyZW5jZSBlbGVtZW50cy5cbiAqIEB2ZXJzaW9uIDEuMTYuMFxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAoYykgMjAxNiBGZWRlcmljbyBaaXZvbG8gYW5kIGNvbnRyaWJ1dG9yc1xuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cbnZhciBpc0Jyb3dzZXIgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnO1xuXG52YXIgdGltZW91dER1cmF0aW9uID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbG9uZ2VyVGltZW91dEJyb3dzZXJzID0gWydFZGdlJywgJ1RyaWRlbnQnLCAnRmlyZWZveCddO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxvbmdlclRpbWVvdXRCcm93c2Vycy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGlmIChpc0Jyb3dzZXIgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKGxvbmdlclRpbWVvdXRCcm93c2Vyc1tpXSkgPj0gMCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufSgpO1xuXG5mdW5jdGlvbiBtaWNyb3Rhc2tEZWJvdW5jZShmbikge1xuICB2YXIgY2FsbGVkID0gZmFsc2U7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGNhbGxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjYWxsZWQgPSB0cnVlO1xuICAgIHdpbmRvdy5Qcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhbGxlZCA9IGZhbHNlO1xuICAgICAgZm4oKTtcbiAgICB9KTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gdGFza0RlYm91bmNlKGZuKSB7XG4gIHZhciBzY2hlZHVsZWQgPSBmYWxzZTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXNjaGVkdWxlZCkge1xuICAgICAgc2NoZWR1bGVkID0gdHJ1ZTtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBzY2hlZHVsZWQgPSBmYWxzZTtcbiAgICAgICAgZm4oKTtcbiAgICAgIH0sIHRpbWVvdXREdXJhdGlvbik7XG4gICAgfVxuICB9O1xufVxuXG52YXIgc3VwcG9ydHNNaWNyb1Rhc2tzID0gaXNCcm93c2VyICYmIHdpbmRvdy5Qcm9taXNlO1xuXG4vKipcbiogQ3JlYXRlIGEgZGVib3VuY2VkIHZlcnNpb24gb2YgYSBtZXRob2QsIHRoYXQncyBhc3luY2hyb25vdXNseSBkZWZlcnJlZFxuKiBidXQgY2FsbGVkIGluIHRoZSBtaW5pbXVtIHRpbWUgcG9zc2libGUuXG4qXG4qIEBtZXRob2RcbiogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuKiBAYXJndW1lbnQge0Z1bmN0aW9ufSBmblxuKiBAcmV0dXJucyB7RnVuY3Rpb259XG4qL1xudmFyIGRlYm91bmNlID0gc3VwcG9ydHNNaWNyb1Rhc2tzID8gbWljcm90YXNrRGVib3VuY2UgOiB0YXNrRGVib3VuY2U7XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGdpdmVuIHZhcmlhYmxlIGlzIGEgZnVuY3Rpb25cbiAqIEBtZXRob2RcbiAqIEBtZW1iZXJvZiBQb3BwZXIuVXRpbHNcbiAqIEBhcmd1bWVudCB7QW55fSBmdW5jdGlvblRvQ2hlY2sgLSB2YXJpYWJsZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IGFuc3dlciB0bzogaXMgYSBmdW5jdGlvbj9cbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbihmdW5jdGlvblRvQ2hlY2spIHtcbiAgdmFyIGdldFR5cGUgPSB7fTtcbiAgcmV0dXJuIGZ1bmN0aW9uVG9DaGVjayAmJiBnZXRUeXBlLnRvU3RyaW5nLmNhbGwoZnVuY3Rpb25Ub0NoZWNrKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbn1cblxuLyoqXG4gKiBHZXQgQ1NTIGNvbXB1dGVkIHByb3BlcnR5IG9mIHRoZSBnaXZlbiBlbGVtZW50XG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAYXJndW1lbnQge0VlbWVudH0gZWxlbWVudFxuICogQGFyZ3VtZW50IHtTdHJpbmd9IHByb3BlcnR5XG4gKi9cbmZ1bmN0aW9uIGdldFN0eWxlQ29tcHV0ZWRQcm9wZXJ0eShlbGVtZW50LCBwcm9wZXJ0eSkge1xuICBpZiAoZWxlbWVudC5ub2RlVHlwZSAhPT0gMSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICAvLyBOT1RFOiAxIERPTSBhY2Nlc3MgaGVyZVxuICB2YXIgd2luZG93ID0gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuICB2YXIgY3NzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgbnVsbCk7XG4gIHJldHVybiBwcm9wZXJ0eSA/IGNzc1twcm9wZXJ0eV0gOiBjc3M7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcGFyZW50Tm9kZSBvciB0aGUgaG9zdCBvZiB0aGUgZWxlbWVudFxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtFbGVtZW50fSBlbGVtZW50XG4gKiBAcmV0dXJucyB7RWxlbWVudH0gcGFyZW50XG4gKi9cbmZ1bmN0aW9uIGdldFBhcmVudE5vZGUoZWxlbWVudCkge1xuICBpZiAoZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0hUTUwnKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIGVsZW1lbnQucGFyZW50Tm9kZSB8fCBlbGVtZW50Lmhvc3Q7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgc2Nyb2xsaW5nIHBhcmVudCBvZiB0aGUgZ2l2ZW4gZWxlbWVudFxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtFbGVtZW50fSBlbGVtZW50XG4gKiBAcmV0dXJucyB7RWxlbWVudH0gc2Nyb2xsIHBhcmVudFxuICovXG5mdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQoZWxlbWVudCkge1xuICAvLyBSZXR1cm4gYm9keSwgYGdldFNjcm9sbGAgd2lsbCB0YWtlIGNhcmUgdG8gZ2V0IHRoZSBjb3JyZWN0IGBzY3JvbGxUb3BgIGZyb20gaXRcbiAgaWYgKCFlbGVtZW50KSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmJvZHk7XG4gIH1cblxuICBzd2l0Y2ggKGVsZW1lbnQubm9kZU5hbWUpIHtcbiAgICBjYXNlICdIVE1MJzpcbiAgICBjYXNlICdCT0RZJzpcbiAgICAgIHJldHVybiBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgICBjYXNlICcjZG9jdW1lbnQnOlxuICAgICAgcmV0dXJuIGVsZW1lbnQuYm9keTtcbiAgfVxuXG4gIC8vIEZpcmVmb3ggd2FudCB1cyB0byBjaGVjayBgLXhgIGFuZCBgLXlgIHZhcmlhdGlvbnMgYXMgd2VsbFxuXG4gIHZhciBfZ2V0U3R5bGVDb21wdXRlZFByb3AgPSBnZXRTdHlsZUNvbXB1dGVkUHJvcGVydHkoZWxlbWVudCksXG4gICAgICBvdmVyZmxvdyA9IF9nZXRTdHlsZUNvbXB1dGVkUHJvcC5vdmVyZmxvdyxcbiAgICAgIG92ZXJmbG93WCA9IF9nZXRTdHlsZUNvbXB1dGVkUHJvcC5vdmVyZmxvd1gsXG4gICAgICBvdmVyZmxvd1kgPSBfZ2V0U3R5bGVDb21wdXRlZFByb3Aub3ZlcmZsb3dZO1xuXG4gIGlmICgvKGF1dG98c2Nyb2xsfG92ZXJsYXkpLy50ZXN0KG92ZXJmbG93ICsgb3ZlcmZsb3dZICsgb3ZlcmZsb3dYKSkge1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgcmV0dXJuIGdldFNjcm9sbFBhcmVudChnZXRQYXJlbnROb2RlKGVsZW1lbnQpKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSByZWZlcmVuY2Ugbm9kZSBvZiB0aGUgcmVmZXJlbmNlIG9iamVjdCwgb3IgdGhlIHJlZmVyZW5jZSBvYmplY3QgaXRzZWxmLlxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQHBhcmFtIHtFbGVtZW50fE9iamVjdH0gcmVmZXJlbmNlIC0gdGhlIHJlZmVyZW5jZSBlbGVtZW50ICh0aGUgcG9wcGVyIHdpbGwgYmUgcmVsYXRpdmUgdG8gdGhpcylcbiAqIEByZXR1cm5zIHtFbGVtZW50fSBwYXJlbnRcbiAqL1xuZnVuY3Rpb24gZ2V0UmVmZXJlbmNlTm9kZShyZWZlcmVuY2UpIHtcbiAgcmV0dXJuIHJlZmVyZW5jZSAmJiByZWZlcmVuY2UucmVmZXJlbmNlTm9kZSA/IHJlZmVyZW5jZS5yZWZlcmVuY2VOb2RlIDogcmVmZXJlbmNlO1xufVxuXG52YXIgaXNJRTExID0gaXNCcm93c2VyICYmICEhKHdpbmRvdy5NU0lucHV0TWV0aG9kQ29udGV4dCAmJiBkb2N1bWVudC5kb2N1bWVudE1vZGUpO1xudmFyIGlzSUUxMCA9IGlzQnJvd3NlciAmJiAvTVNJRSAxMC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBicm93c2VyIGlzIEludGVybmV0IEV4cGxvcmVyXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAcGFyYW0ge051bWJlcn0gdmVyc2lvbiB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IGlzSUVcbiAqL1xuZnVuY3Rpb24gaXNJRSh2ZXJzaW9uKSB7XG4gIGlmICh2ZXJzaW9uID09PSAxMSkge1xuICAgIHJldHVybiBpc0lFMTE7XG4gIH1cbiAgaWYgKHZlcnNpb24gPT09IDEwKSB7XG4gICAgcmV0dXJuIGlzSUUxMDtcbiAgfVxuICByZXR1cm4gaXNJRTExIHx8IGlzSUUxMDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvZmZzZXQgcGFyZW50IG9mIHRoZSBnaXZlbiBlbGVtZW50XG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAYXJndW1lbnQge0VsZW1lbnR9IGVsZW1lbnRcbiAqIEByZXR1cm5zIHtFbGVtZW50fSBvZmZzZXQgcGFyZW50XG4gKi9cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50KSB7XG4gIGlmICghZWxlbWVudCkge1xuICAgIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gIH1cblxuICB2YXIgbm9PZmZzZXRQYXJlbnQgPSBpc0lFKDEwKSA/IGRvY3VtZW50LmJvZHkgOiBudWxsO1xuXG4gIC8vIE5PVEU6IDEgRE9NIGFjY2VzcyBoZXJlXG4gIHZhciBvZmZzZXRQYXJlbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudCB8fCBudWxsO1xuICAvLyBTa2lwIGhpZGRlbiBlbGVtZW50cyB3aGljaCBkb24ndCBoYXZlIGFuIG9mZnNldFBhcmVudFxuICB3aGlsZSAob2Zmc2V0UGFyZW50ID09PSBub09mZnNldFBhcmVudCAmJiBlbGVtZW50Lm5leHRFbGVtZW50U2libGluZykge1xuICAgIG9mZnNldFBhcmVudCA9IChlbGVtZW50ID0gZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcpLm9mZnNldFBhcmVudDtcbiAgfVxuXG4gIHZhciBub2RlTmFtZSA9IG9mZnNldFBhcmVudCAmJiBvZmZzZXRQYXJlbnQubm9kZU5hbWU7XG5cbiAgaWYgKCFub2RlTmFtZSB8fCBub2RlTmFtZSA9PT0gJ0JPRFknIHx8IG5vZGVOYW1lID09PSAnSFRNTCcpIHtcbiAgICByZXR1cm4gZWxlbWVudCA/IGVsZW1lbnQub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gIH1cblxuICAvLyAub2Zmc2V0UGFyZW50IHdpbGwgcmV0dXJuIHRoZSBjbG9zZXN0IFRILCBURCBvciBUQUJMRSBpbiBjYXNlXG4gIC8vIG5vIG9mZnNldFBhcmVudCBpcyBwcmVzZW50LCBJIGhhdGUgdGhpcyBqb2IuLi5cbiAgaWYgKFsnVEgnLCAnVEQnLCAnVEFCTEUnXS5pbmRleE9mKG9mZnNldFBhcmVudC5ub2RlTmFtZSkgIT09IC0xICYmIGdldFN0eWxlQ29tcHV0ZWRQcm9wZXJ0eShvZmZzZXRQYXJlbnQsICdwb3NpdGlvbicpID09PSAnc3RhdGljJykge1xuICAgIHJldHVybiBnZXRPZmZzZXRQYXJlbnQob2Zmc2V0UGFyZW50KTtcbiAgfVxuXG4gIHJldHVybiBvZmZzZXRQYXJlbnQ7XG59XG5cbmZ1bmN0aW9uIGlzT2Zmc2V0Q29udGFpbmVyKGVsZW1lbnQpIHtcbiAgdmFyIG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZTtcblxuICBpZiAobm9kZU5hbWUgPT09ICdCT0RZJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gbm9kZU5hbWUgPT09ICdIVE1MJyB8fCBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCkgPT09IGVsZW1lbnQ7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIHJvb3Qgbm9kZSAoZG9jdW1lbnQsIHNoYWRvd0RPTSByb290KSBvZiB0aGUgZ2l2ZW4gZWxlbWVudFxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtFbGVtZW50fSBub2RlXG4gKiBAcmV0dXJucyB7RWxlbWVudH0gcm9vdCBub2RlXG4gKi9cbmZ1bmN0aW9uIGdldFJvb3Qobm9kZSkge1xuICBpZiAobm9kZS5wYXJlbnROb2RlICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIGdldFJvb3Qobm9kZS5wYXJlbnROb2RlKTtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufVxuXG4vKipcbiAqIEZpbmRzIHRoZSBvZmZzZXQgcGFyZW50IGNvbW1vbiB0byB0aGUgdHdvIHByb3ZpZGVkIG5vZGVzXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAYXJndW1lbnQge0VsZW1lbnR9IGVsZW1lbnQxXG4gKiBAYXJndW1lbnQge0VsZW1lbnR9IGVsZW1lbnQyXG4gKiBAcmV0dXJucyB7RWxlbWVudH0gY29tbW9uIG9mZnNldCBwYXJlbnRcbiAqL1xuZnVuY3Rpb24gZmluZENvbW1vbk9mZnNldFBhcmVudChlbGVtZW50MSwgZWxlbWVudDIpIHtcbiAgLy8gVGhpcyBjaGVjayBpcyBuZWVkZWQgdG8gYXZvaWQgZXJyb3JzIGluIGNhc2Ugb25lIG9mIHRoZSBlbGVtZW50cyBpc24ndCBkZWZpbmVkIGZvciBhbnkgcmVhc29uXG4gIGlmICghZWxlbWVudDEgfHwgIWVsZW1lbnQxLm5vZGVUeXBlIHx8ICFlbGVtZW50MiB8fCAhZWxlbWVudDIubm9kZVR5cGUpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICB9XG5cbiAgLy8gSGVyZSB3ZSBtYWtlIHN1cmUgdG8gZ2l2ZSBhcyBcInN0YXJ0XCIgdGhlIGVsZW1lbnQgdGhhdCBjb21lcyBmaXJzdCBpbiB0aGUgRE9NXG4gIHZhciBvcmRlciA9IGVsZW1lbnQxLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGVsZW1lbnQyKSAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HO1xuICB2YXIgc3RhcnQgPSBvcmRlciA/IGVsZW1lbnQxIDogZWxlbWVudDI7XG4gIHZhciBlbmQgPSBvcmRlciA/IGVsZW1lbnQyIDogZWxlbWVudDE7XG5cbiAgLy8gR2V0IGNvbW1vbiBhbmNlc3RvciBjb250YWluZXJcbiAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgcmFuZ2Uuc2V0U3RhcnQoc3RhcnQsIDApO1xuICByYW5nZS5zZXRFbmQoZW5kLCAwKTtcbiAgdmFyIGNvbW1vbkFuY2VzdG9yQ29udGFpbmVyID0gcmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXI7XG5cbiAgLy8gQm90aCBub2RlcyBhcmUgaW5zaWRlICNkb2N1bWVudFxuXG4gIGlmIChlbGVtZW50MSAhPT0gY29tbW9uQW5jZXN0b3JDb250YWluZXIgJiYgZWxlbWVudDIgIT09IGNvbW1vbkFuY2VzdG9yQ29udGFpbmVyIHx8IHN0YXJ0LmNvbnRhaW5zKGVuZCkpIHtcbiAgICBpZiAoaXNPZmZzZXRDb250YWluZXIoY29tbW9uQW5jZXN0b3JDb250YWluZXIpKSB7XG4gICAgICByZXR1cm4gY29tbW9uQW5jZXN0b3JDb250YWluZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldE9mZnNldFBhcmVudChjb21tb25BbmNlc3RvckNvbnRhaW5lcik7XG4gIH1cblxuICAvLyBvbmUgb2YgdGhlIG5vZGVzIGlzIGluc2lkZSBzaGFkb3dET00sIGZpbmQgd2hpY2ggb25lXG4gIHZhciBlbGVtZW50MXJvb3QgPSBnZXRSb290KGVsZW1lbnQxKTtcbiAgaWYgKGVsZW1lbnQxcm9vdC5ob3N0KSB7XG4gICAgcmV0dXJuIGZpbmRDb21tb25PZmZzZXRQYXJlbnQoZWxlbWVudDFyb290Lmhvc3QsIGVsZW1lbnQyKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmluZENvbW1vbk9mZnNldFBhcmVudChlbGVtZW50MSwgZ2V0Um9vdChlbGVtZW50MikuaG9zdCk7XG4gIH1cbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBzY3JvbGwgdmFsdWUgb2YgdGhlIGdpdmVuIGVsZW1lbnQgaW4gdGhlIGdpdmVuIHNpZGUgKHRvcCBhbmQgbGVmdClcbiAqIEBtZXRob2RcbiAqIEBtZW1iZXJvZiBQb3BwZXIuVXRpbHNcbiAqIEBhcmd1bWVudCB7RWxlbWVudH0gZWxlbWVudFxuICogQGFyZ3VtZW50IHtTdHJpbmd9IHNpZGUgYHRvcGAgb3IgYGxlZnRgXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBhbW91bnQgb2Ygc2Nyb2xsZWQgcGl4ZWxzXG4gKi9cbmZ1bmN0aW9uIGdldFNjcm9sbChlbGVtZW50KSB7XG4gIHZhciBzaWRlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAndG9wJztcblxuICB2YXIgdXBwZXJTaWRlID0gc2lkZSA9PT0gJ3RvcCcgPyAnc2Nyb2xsVG9wJyA6ICdzY3JvbGxMZWZ0JztcbiAgdmFyIG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZTtcblxuICBpZiAobm9kZU5hbWUgPT09ICdCT0RZJyB8fCBub2RlTmFtZSA9PT0gJ0hUTUwnKSB7XG4gICAgdmFyIGh0bWwgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIHZhciBzY3JvbGxpbmdFbGVtZW50ID0gZWxlbWVudC5vd25lckRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQgfHwgaHRtbDtcbiAgICByZXR1cm4gc2Nyb2xsaW5nRWxlbWVudFt1cHBlclNpZGVdO1xuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnRbdXBwZXJTaWRlXTtcbn1cblxuLypcbiAqIFN1bSBvciBzdWJ0cmFjdCB0aGUgZWxlbWVudCBzY3JvbGwgdmFsdWVzIChsZWZ0IGFuZCB0b3ApIGZyb20gYSBnaXZlbiByZWN0IG9iamVjdFxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQHBhcmFtIHtPYmplY3R9IHJlY3QgLSBSZWN0IG9iamVjdCB5b3Ugd2FudCB0byBjaGFuZ2VcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnQgLSBUaGUgZWxlbWVudCBmcm9tIHRoZSBmdW5jdGlvbiByZWFkcyB0aGUgc2Nyb2xsIHZhbHVlc1xuICogQHBhcmFtIHtCb29sZWFufSBzdWJ0cmFjdCAtIHNldCB0byB0cnVlIGlmIHlvdSB3YW50IHRvIHN1YnRyYWN0IHRoZSBzY3JvbGwgdmFsdWVzXG4gKiBAcmV0dXJuIHtPYmplY3R9IHJlY3QgLSBUaGUgbW9kaWZpZXIgcmVjdCBvYmplY3RcbiAqL1xuZnVuY3Rpb24gaW5jbHVkZVNjcm9sbChyZWN0LCBlbGVtZW50KSB7XG4gIHZhciBzdWJ0cmFjdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogZmFsc2U7XG5cbiAgdmFyIHNjcm9sbFRvcCA9IGdldFNjcm9sbChlbGVtZW50LCAndG9wJyk7XG4gIHZhciBzY3JvbGxMZWZ0ID0gZ2V0U2Nyb2xsKGVsZW1lbnQsICdsZWZ0Jyk7XG4gIHZhciBtb2RpZmllciA9IHN1YnRyYWN0ID8gLTEgOiAxO1xuICByZWN0LnRvcCArPSBzY3JvbGxUb3AgKiBtb2RpZmllcjtcbiAgcmVjdC5ib3R0b20gKz0gc2Nyb2xsVG9wICogbW9kaWZpZXI7XG4gIHJlY3QubGVmdCArPSBzY3JvbGxMZWZ0ICogbW9kaWZpZXI7XG4gIHJlY3QucmlnaHQgKz0gc2Nyb2xsTGVmdCAqIG1vZGlmaWVyO1xuICByZXR1cm4gcmVjdDtcbn1cblxuLypcbiAqIEhlbHBlciB0byBkZXRlY3QgYm9yZGVycyBvZiBhIGdpdmVuIGVsZW1lbnRcbiAqIEBtZXRob2RcbiAqIEBtZW1iZXJvZiBQb3BwZXIuVXRpbHNcbiAqIEBwYXJhbSB7Q1NTU3R5bGVEZWNsYXJhdGlvbn0gc3R5bGVzXG4gKiBSZXN1bHQgb2YgYGdldFN0eWxlQ29tcHV0ZWRQcm9wZXJ0eWAgb24gdGhlIGdpdmVuIGVsZW1lbnRcbiAqIEBwYXJhbSB7U3RyaW5nfSBheGlzIC0gYHhgIG9yIGB5YFxuICogQHJldHVybiB7bnVtYmVyfSBib3JkZXJzIC0gVGhlIGJvcmRlcnMgc2l6ZSBvZiB0aGUgZ2l2ZW4gYXhpc1xuICovXG5cbmZ1bmN0aW9uIGdldEJvcmRlcnNTaXplKHN0eWxlcywgYXhpcykge1xuICB2YXIgc2lkZUEgPSBheGlzID09PSAneCcgPyAnTGVmdCcgOiAnVG9wJztcbiAgdmFyIHNpZGVCID0gc2lkZUEgPT09ICdMZWZ0JyA/ICdSaWdodCcgOiAnQm90dG9tJztcblxuICByZXR1cm4gcGFyc2VGbG9hdChzdHlsZXNbJ2JvcmRlcicgKyBzaWRlQSArICdXaWR0aCddLCAxMCkgKyBwYXJzZUZsb2F0KHN0eWxlc1snYm9yZGVyJyArIHNpZGVCICsgJ1dpZHRoJ10sIDEwKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2l6ZShheGlzLCBib2R5LCBodG1sLCBjb21wdXRlZFN0eWxlKSB7XG4gIHJldHVybiBNYXRoLm1heChib2R5WydvZmZzZXQnICsgYXhpc10sIGJvZHlbJ3Njcm9sbCcgKyBheGlzXSwgaHRtbFsnY2xpZW50JyArIGF4aXNdLCBodG1sWydvZmZzZXQnICsgYXhpc10sIGh0bWxbJ3Njcm9sbCcgKyBheGlzXSwgaXNJRSgxMCkgPyBwYXJzZUludChodG1sWydvZmZzZXQnICsgYXhpc10pICsgcGFyc2VJbnQoY29tcHV0ZWRTdHlsZVsnbWFyZ2luJyArIChheGlzID09PSAnSGVpZ2h0JyA/ICdUb3AnIDogJ0xlZnQnKV0pICsgcGFyc2VJbnQoY29tcHV0ZWRTdHlsZVsnbWFyZ2luJyArIChheGlzID09PSAnSGVpZ2h0JyA/ICdCb3R0b20nIDogJ1JpZ2h0JyldKSA6IDApO1xufVxuXG5mdW5jdGlvbiBnZXRXaW5kb3dTaXplcyhkb2N1bWVudCkge1xuICB2YXIgYm9keSA9IGRvY3VtZW50LmJvZHk7XG4gIHZhciBodG1sID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICB2YXIgY29tcHV0ZWRTdHlsZSA9IGlzSUUoMTApICYmIGdldENvbXB1dGVkU3R5bGUoaHRtbCk7XG5cbiAgcmV0dXJuIHtcbiAgICBoZWlnaHQ6IGdldFNpemUoJ0hlaWdodCcsIGJvZHksIGh0bWwsIGNvbXB1dGVkU3R5bGUpLFxuICAgIHdpZHRoOiBnZXRTaXplKCdXaWR0aCcsIGJvZHksIGh0bWwsIGNvbXB1dGVkU3R5bGUpXG4gIH07XG59XG5cbnZhciBjbGFzc0NhbGxDaGVjayA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59O1xuXG52YXIgY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gICAgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgICBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH07XG59KCk7XG5cblxuXG5cblxudmFyIGRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gKG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59O1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufTtcblxuLyoqXG4gKiBHaXZlbiBlbGVtZW50IG9mZnNldHMsIGdlbmVyYXRlIGFuIG91dHB1dCBzaW1pbGFyIHRvIGdldEJvdW5kaW5nQ2xpZW50UmVjdFxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtPYmplY3R9IG9mZnNldHNcbiAqIEByZXR1cm5zIHtPYmplY3R9IENsaWVudFJlY3QgbGlrZSBvdXRwdXRcbiAqL1xuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdChvZmZzZXRzKSB7XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb2Zmc2V0cywge1xuICAgIHJpZ2h0OiBvZmZzZXRzLmxlZnQgKyBvZmZzZXRzLndpZHRoLFxuICAgIGJvdHRvbTogb2Zmc2V0cy50b3AgKyBvZmZzZXRzLmhlaWdodFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgYm91bmRpbmcgY2xpZW50IHJlY3Qgb2YgZ2l2ZW4gZWxlbWVudFxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudFxuICogQHJldHVybiB7T2JqZWN0fSBjbGllbnQgcmVjdFxuICovXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IHt9O1xuXG4gIC8vIElFMTAgMTAgRklYOiBQbGVhc2UsIGRvbid0IGFzaywgdGhlIGVsZW1lbnQgaXNuJ3RcbiAgLy8gY29uc2lkZXJlZCBpbiBET00gaW4gc29tZSBjaXJjdW1zdGFuY2VzLi4uXG4gIC8vIFRoaXMgaXNuJ3QgcmVwcm9kdWNpYmxlIGluIElFMTAgY29tcGF0aWJpbGl0eSBtb2RlIG9mIElFMTFcbiAgdHJ5IHtcbiAgICBpZiAoaXNJRSgxMCkpIHtcbiAgICAgIHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgdmFyIHNjcm9sbFRvcCA9IGdldFNjcm9sbChlbGVtZW50LCAndG9wJyk7XG4gICAgICB2YXIgc2Nyb2xsTGVmdCA9IGdldFNjcm9sbChlbGVtZW50LCAnbGVmdCcpO1xuICAgICAgcmVjdC50b3AgKz0gc2Nyb2xsVG9wO1xuICAgICAgcmVjdC5sZWZ0ICs9IHNjcm9sbExlZnQ7XG4gICAgICByZWN0LmJvdHRvbSArPSBzY3JvbGxUb3A7XG4gICAgICByZWN0LnJpZ2h0ICs9IHNjcm9sbExlZnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0ge1xuICAgIGxlZnQ6IHJlY3QubGVmdCxcbiAgICB0b3A6IHJlY3QudG9wLFxuICAgIHdpZHRoOiByZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0LFxuICAgIGhlaWdodDogcmVjdC5ib3R0b20gLSByZWN0LnRvcFxuICB9O1xuXG4gIC8vIHN1YnRyYWN0IHNjcm9sbGJhciBzaXplIGZyb20gc2l6ZXNcbiAgdmFyIHNpemVzID0gZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0hUTUwnID8gZ2V0V2luZG93U2l6ZXMoZWxlbWVudC5vd25lckRvY3VtZW50KSA6IHt9O1xuICB2YXIgd2lkdGggPSBzaXplcy53aWR0aCB8fCBlbGVtZW50LmNsaWVudFdpZHRoIHx8IHJlc3VsdC53aWR0aDtcbiAgdmFyIGhlaWdodCA9IHNpemVzLmhlaWdodCB8fCBlbGVtZW50LmNsaWVudEhlaWdodCB8fCByZXN1bHQuaGVpZ2h0O1xuXG4gIHZhciBob3JpelNjcm9sbGJhciA9IGVsZW1lbnQub2Zmc2V0V2lkdGggLSB3aWR0aDtcbiAgdmFyIHZlcnRTY3JvbGxiYXIgPSBlbGVtZW50Lm9mZnNldEhlaWdodCAtIGhlaWdodDtcblxuICAvLyBpZiBhbiBoeXBvdGhldGljYWwgc2Nyb2xsYmFyIGlzIGRldGVjdGVkLCB3ZSBtdXN0IGJlIHN1cmUgaXQncyBub3QgYSBgYm9yZGVyYFxuICAvLyB3ZSBtYWtlIHRoaXMgY2hlY2sgY29uZGl0aW9uYWwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnNcbiAgaWYgKGhvcml6U2Nyb2xsYmFyIHx8IHZlcnRTY3JvbGxiYXIpIHtcbiAgICB2YXIgc3R5bGVzID0gZ2V0U3R5bGVDb21wdXRlZFByb3BlcnR5KGVsZW1lbnQpO1xuICAgIGhvcml6U2Nyb2xsYmFyIC09IGdldEJvcmRlcnNTaXplKHN0eWxlcywgJ3gnKTtcbiAgICB2ZXJ0U2Nyb2xsYmFyIC09IGdldEJvcmRlcnNTaXplKHN0eWxlcywgJ3knKTtcblxuICAgIHJlc3VsdC53aWR0aCAtPSBob3JpelNjcm9sbGJhcjtcbiAgICByZXN1bHQuaGVpZ2h0IC09IHZlcnRTY3JvbGxiYXI7XG4gIH1cblxuICByZXR1cm4gZ2V0Q2xpZW50UmVjdChyZXN1bHQpO1xufVxuXG5mdW5jdGlvbiBnZXRPZmZzZXRSZWN0UmVsYXRpdmVUb0FyYml0cmFyeU5vZGUoY2hpbGRyZW4sIHBhcmVudCkge1xuICB2YXIgZml4ZWRQb3NpdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogZmFsc2U7XG5cbiAgdmFyIGlzSUUxMCA9IGlzSUUoMTApO1xuICB2YXIgaXNIVE1MID0gcGFyZW50Lm5vZGVOYW1lID09PSAnSFRNTCc7XG4gIHZhciBjaGlsZHJlblJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoY2hpbGRyZW4pO1xuICB2YXIgcGFyZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChwYXJlbnQpO1xuICB2YXIgc2Nyb2xsUGFyZW50ID0gZ2V0U2Nyb2xsUGFyZW50KGNoaWxkcmVuKTtcblxuICB2YXIgc3R5bGVzID0gZ2V0U3R5bGVDb21wdXRlZFByb3BlcnR5KHBhcmVudCk7XG4gIHZhciBib3JkZXJUb3BXaWR0aCA9IHBhcnNlRmxvYXQoc3R5bGVzLmJvcmRlclRvcFdpZHRoLCAxMCk7XG4gIHZhciBib3JkZXJMZWZ0V2lkdGggPSBwYXJzZUZsb2F0KHN0eWxlcy5ib3JkZXJMZWZ0V2lkdGgsIDEwKTtcblxuICAvLyBJbiBjYXNlcyB3aGVyZSB0aGUgcGFyZW50IGlzIGZpeGVkLCB3ZSBtdXN0IGlnbm9yZSBuZWdhdGl2ZSBzY3JvbGwgaW4gb2Zmc2V0IGNhbGNcbiAgaWYgKGZpeGVkUG9zaXRpb24gJiYgaXNIVE1MKSB7XG4gICAgcGFyZW50UmVjdC50b3AgPSBNYXRoLm1heChwYXJlbnRSZWN0LnRvcCwgMCk7XG4gICAgcGFyZW50UmVjdC5sZWZ0ID0gTWF0aC5tYXgocGFyZW50UmVjdC5sZWZ0LCAwKTtcbiAgfVxuICB2YXIgb2Zmc2V0cyA9IGdldENsaWVudFJlY3Qoe1xuICAgIHRvcDogY2hpbGRyZW5SZWN0LnRvcCAtIHBhcmVudFJlY3QudG9wIC0gYm9yZGVyVG9wV2lkdGgsXG4gICAgbGVmdDogY2hpbGRyZW5SZWN0LmxlZnQgLSBwYXJlbnRSZWN0LmxlZnQgLSBib3JkZXJMZWZ0V2lkdGgsXG4gICAgd2lkdGg6IGNoaWxkcmVuUmVjdC53aWR0aCxcbiAgICBoZWlnaHQ6IGNoaWxkcmVuUmVjdC5oZWlnaHRcbiAgfSk7XG4gIG9mZnNldHMubWFyZ2luVG9wID0gMDtcbiAgb2Zmc2V0cy5tYXJnaW5MZWZ0ID0gMDtcblxuICAvLyBTdWJ0cmFjdCBtYXJnaW5zIG9mIGRvY3VtZW50RWxlbWVudCBpbiBjYXNlIGl0J3MgYmVpbmcgdXNlZCBhcyBwYXJlbnRcbiAgLy8gd2UgZG8gdGhpcyBvbmx5IG9uIEhUTUwgYmVjYXVzZSBpdCdzIHRoZSBvbmx5IGVsZW1lbnQgdGhhdCBiZWhhdmVzXG4gIC8vIGRpZmZlcmVudGx5IHdoZW4gbWFyZ2lucyBhcmUgYXBwbGllZCB0byBpdC4gVGhlIG1hcmdpbnMgYXJlIGluY2x1ZGVkIGluXG4gIC8vIHRoZSBib3ggb2YgdGhlIGRvY3VtZW50RWxlbWVudCwgaW4gdGhlIG90aGVyIGNhc2VzIG5vdC5cbiAgaWYgKCFpc0lFMTAgJiYgaXNIVE1MKSB7XG4gICAgdmFyIG1hcmdpblRvcCA9IHBhcnNlRmxvYXQoc3R5bGVzLm1hcmdpblRvcCwgMTApO1xuICAgIHZhciBtYXJnaW5MZWZ0ID0gcGFyc2VGbG9hdChzdHlsZXMubWFyZ2luTGVmdCwgMTApO1xuXG4gICAgb2Zmc2V0cy50b3AgLT0gYm9yZGVyVG9wV2lkdGggLSBtYXJnaW5Ub3A7XG4gICAgb2Zmc2V0cy5ib3R0b20gLT0gYm9yZGVyVG9wV2lkdGggLSBtYXJnaW5Ub3A7XG4gICAgb2Zmc2V0cy5sZWZ0IC09IGJvcmRlckxlZnRXaWR0aCAtIG1hcmdpbkxlZnQ7XG4gICAgb2Zmc2V0cy5yaWdodCAtPSBib3JkZXJMZWZ0V2lkdGggLSBtYXJnaW5MZWZ0O1xuXG4gICAgLy8gQXR0YWNoIG1hcmdpblRvcCBhbmQgbWFyZ2luTGVmdCBiZWNhdXNlIGluIHNvbWUgY2lyY3Vtc3RhbmNlcyB3ZSBtYXkgbmVlZCB0aGVtXG4gICAgb2Zmc2V0cy5tYXJnaW5Ub3AgPSBtYXJnaW5Ub3A7XG4gICAgb2Zmc2V0cy5tYXJnaW5MZWZ0ID0gbWFyZ2luTGVmdDtcbiAgfVxuXG4gIGlmIChpc0lFMTAgJiYgIWZpeGVkUG9zaXRpb24gPyBwYXJlbnQuY29udGFpbnMoc2Nyb2xsUGFyZW50KSA6IHBhcmVudCA9PT0gc2Nyb2xsUGFyZW50ICYmIHNjcm9sbFBhcmVudC5ub2RlTmFtZSAhPT0gJ0JPRFknKSB7XG4gICAgb2Zmc2V0cyA9IGluY2x1ZGVTY3JvbGwob2Zmc2V0cywgcGFyZW50KTtcbiAgfVxuXG4gIHJldHVybiBvZmZzZXRzO1xufVxuXG5mdW5jdGlvbiBnZXRWaWV3cG9ydE9mZnNldFJlY3RSZWxhdGl2ZVRvQXJ0Yml0cmFyeU5vZGUoZWxlbWVudCkge1xuICB2YXIgZXhjbHVkZVNjcm9sbCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogZmFsc2U7XG5cbiAgdmFyIGh0bWwgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICB2YXIgcmVsYXRpdmVPZmZzZXQgPSBnZXRPZmZzZXRSZWN0UmVsYXRpdmVUb0FyYml0cmFyeU5vZGUoZWxlbWVudCwgaHRtbCk7XG4gIHZhciB3aWR0aCA9IE1hdGgubWF4KGh0bWwuY2xpZW50V2lkdGgsIHdpbmRvdy5pbm5lcldpZHRoIHx8IDApO1xuICB2YXIgaGVpZ2h0ID0gTWF0aC5tYXgoaHRtbC5jbGllbnRIZWlnaHQsIHdpbmRvdy5pbm5lckhlaWdodCB8fCAwKTtcblxuICB2YXIgc2Nyb2xsVG9wID0gIWV4Y2x1ZGVTY3JvbGwgPyBnZXRTY3JvbGwoaHRtbCkgOiAwO1xuICB2YXIgc2Nyb2xsTGVmdCA9ICFleGNsdWRlU2Nyb2xsID8gZ2V0U2Nyb2xsKGh0bWwsICdsZWZ0JykgOiAwO1xuXG4gIHZhciBvZmZzZXQgPSB7XG4gICAgdG9wOiBzY3JvbGxUb3AgLSByZWxhdGl2ZU9mZnNldC50b3AgKyByZWxhdGl2ZU9mZnNldC5tYXJnaW5Ub3AsXG4gICAgbGVmdDogc2Nyb2xsTGVmdCAtIHJlbGF0aXZlT2Zmc2V0LmxlZnQgKyByZWxhdGl2ZU9mZnNldC5tYXJnaW5MZWZ0LFxuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9O1xuXG4gIHJldHVybiBnZXRDbGllbnRSZWN0KG9mZnNldCk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGdpdmVuIGVsZW1lbnQgaXMgZml4ZWQgb3IgaXMgaW5zaWRlIGEgZml4ZWQgcGFyZW50XG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAYXJndW1lbnQge0VsZW1lbnR9IGVsZW1lbnRcbiAqIEBhcmd1bWVudCB7RWxlbWVudH0gY3VzdG9tQ29udGFpbmVyXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gYW5zd2VyIHRvIFwiaXNGaXhlZD9cIlxuICovXG5mdW5jdGlvbiBpc0ZpeGVkKGVsZW1lbnQpIHtcbiAgdmFyIG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZTtcbiAgaWYgKG5vZGVOYW1lID09PSAnQk9EWScgfHwgbm9kZU5hbWUgPT09ICdIVE1MJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoZ2V0U3R5bGVDb21wdXRlZFByb3BlcnR5KGVsZW1lbnQsICdwb3NpdGlvbicpID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICBpZiAoIXBhcmVudE5vZGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGlzRml4ZWQocGFyZW50Tm9kZSk7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIGZpcnN0IHBhcmVudCBvZiBhbiBlbGVtZW50IHRoYXQgaGFzIGEgdHJhbnNmb3JtZWQgcHJvcGVydHkgZGVmaW5lZFxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtFbGVtZW50fSBlbGVtZW50XG4gKiBAcmV0dXJucyB7RWxlbWVudH0gZmlyc3QgdHJhbnNmb3JtZWQgcGFyZW50IG9yIGRvY3VtZW50RWxlbWVudFxuICovXG5cbmZ1bmN0aW9uIGdldEZpeGVkUG9zaXRpb25PZmZzZXRQYXJlbnQoZWxlbWVudCkge1xuICAvLyBUaGlzIGNoZWNrIGlzIG5lZWRlZCB0byBhdm9pZCBlcnJvcnMgaW4gY2FzZSBvbmUgb2YgdGhlIGVsZW1lbnRzIGlzbid0IGRlZmluZWQgZm9yIGFueSByZWFzb25cbiAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LnBhcmVudEVsZW1lbnQgfHwgaXNJRSgpKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgfVxuICB2YXIgZWwgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gIHdoaWxlIChlbCAmJiBnZXRTdHlsZUNvbXB1dGVkUHJvcGVydHkoZWwsICd0cmFuc2Zvcm0nKSA9PT0gJ25vbmUnKSB7XG4gICAgZWwgPSBlbC5wYXJlbnRFbGVtZW50O1xuICB9XG4gIHJldHVybiBlbCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG59XG5cbi8qKlxuICogQ29tcHV0ZWQgdGhlIGJvdW5kYXJpZXMgbGltaXRzIGFuZCByZXR1cm4gdGhlbVxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gcG9wcGVyXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSByZWZlcmVuY2VcbiAqIEBwYXJhbSB7bnVtYmVyfSBwYWRkaW5nXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBib3VuZGFyaWVzRWxlbWVudCAtIEVsZW1lbnQgdXNlZCB0byBkZWZpbmUgdGhlIGJvdW5kYXJpZXNcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gZml4ZWRQb3NpdGlvbiAtIElzIGluIGZpeGVkIHBvc2l0aW9uIG1vZGVcbiAqIEByZXR1cm5zIHtPYmplY3R9IENvb3JkaW5hdGVzIG9mIHRoZSBib3VuZGFyaWVzXG4gKi9cbmZ1bmN0aW9uIGdldEJvdW5kYXJpZXMocG9wcGVyLCByZWZlcmVuY2UsIHBhZGRpbmcsIGJvdW5kYXJpZXNFbGVtZW50KSB7XG4gIHZhciBmaXhlZFBvc2l0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiBmYWxzZTtcblxuICAvLyBOT1RFOiAxIERPTSBhY2Nlc3MgaGVyZVxuXG4gIHZhciBib3VuZGFyaWVzID0geyB0b3A6IDAsIGxlZnQ6IDAgfTtcbiAgdmFyIG9mZnNldFBhcmVudCA9IGZpeGVkUG9zaXRpb24gPyBnZXRGaXhlZFBvc2l0aW9uT2Zmc2V0UGFyZW50KHBvcHBlcikgOiBmaW5kQ29tbW9uT2Zmc2V0UGFyZW50KHBvcHBlciwgZ2V0UmVmZXJlbmNlTm9kZShyZWZlcmVuY2UpKTtcblxuICAvLyBIYW5kbGUgdmlld3BvcnQgY2FzZVxuICBpZiAoYm91bmRhcmllc0VsZW1lbnQgPT09ICd2aWV3cG9ydCcpIHtcbiAgICBib3VuZGFyaWVzID0gZ2V0Vmlld3BvcnRPZmZzZXRSZWN0UmVsYXRpdmVUb0FydGJpdHJhcnlOb2RlKG9mZnNldFBhcmVudCwgZml4ZWRQb3NpdGlvbik7XG4gIH0gZWxzZSB7XG4gICAgLy8gSGFuZGxlIG90aGVyIGNhc2VzIGJhc2VkIG9uIERPTSBlbGVtZW50IHVzZWQgYXMgYm91bmRhcmllc1xuICAgIHZhciBib3VuZGFyaWVzTm9kZSA9IHZvaWQgMDtcbiAgICBpZiAoYm91bmRhcmllc0VsZW1lbnQgPT09ICdzY3JvbGxQYXJlbnQnKSB7XG4gICAgICBib3VuZGFyaWVzTm9kZSA9IGdldFNjcm9sbFBhcmVudChnZXRQYXJlbnROb2RlKHJlZmVyZW5jZSkpO1xuICAgICAgaWYgKGJvdW5kYXJpZXNOb2RlLm5vZGVOYW1lID09PSAnQk9EWScpIHtcbiAgICAgICAgYm91bmRhcmllc05vZGUgPSBwb3BwZXIub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChib3VuZGFyaWVzRWxlbWVudCA9PT0gJ3dpbmRvdycpIHtcbiAgICAgIGJvdW5kYXJpZXNOb2RlID0gcG9wcGVyLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBib3VuZGFyaWVzTm9kZSA9IGJvdW5kYXJpZXNFbGVtZW50O1xuICAgIH1cblxuICAgIHZhciBvZmZzZXRzID0gZ2V0T2Zmc2V0UmVjdFJlbGF0aXZlVG9BcmJpdHJhcnlOb2RlKGJvdW5kYXJpZXNOb2RlLCBvZmZzZXRQYXJlbnQsIGZpeGVkUG9zaXRpb24pO1xuXG4gICAgLy8gSW4gY2FzZSBvZiBIVE1MLCB3ZSBuZWVkIGEgZGlmZmVyZW50IGNvbXB1dGF0aW9uXG4gICAgaWYgKGJvdW5kYXJpZXNOb2RlLm5vZGVOYW1lID09PSAnSFRNTCcgJiYgIWlzRml4ZWQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgdmFyIF9nZXRXaW5kb3dTaXplcyA9IGdldFdpbmRvd1NpemVzKHBvcHBlci5vd25lckRvY3VtZW50KSxcbiAgICAgICAgICBoZWlnaHQgPSBfZ2V0V2luZG93U2l6ZXMuaGVpZ2h0LFxuICAgICAgICAgIHdpZHRoID0gX2dldFdpbmRvd1NpemVzLndpZHRoO1xuXG4gICAgICBib3VuZGFyaWVzLnRvcCArPSBvZmZzZXRzLnRvcCAtIG9mZnNldHMubWFyZ2luVG9wO1xuICAgICAgYm91bmRhcmllcy5ib3R0b20gPSBoZWlnaHQgKyBvZmZzZXRzLnRvcDtcbiAgICAgIGJvdW5kYXJpZXMubGVmdCArPSBvZmZzZXRzLmxlZnQgLSBvZmZzZXRzLm1hcmdpbkxlZnQ7XG4gICAgICBib3VuZGFyaWVzLnJpZ2h0ID0gd2lkdGggKyBvZmZzZXRzLmxlZnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGZvciBhbGwgdGhlIG90aGVyIERPTSBlbGVtZW50cywgdGhpcyBvbmUgaXMgZ29vZFxuICAgICAgYm91bmRhcmllcyA9IG9mZnNldHM7XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIHBhZGRpbmdzXG4gIHBhZGRpbmcgPSBwYWRkaW5nIHx8IDA7XG4gIHZhciBpc1BhZGRpbmdOdW1iZXIgPSB0eXBlb2YgcGFkZGluZyA9PT0gJ251bWJlcic7XG4gIGJvdW5kYXJpZXMubGVmdCArPSBpc1BhZGRpbmdOdW1iZXIgPyBwYWRkaW5nIDogcGFkZGluZy5sZWZ0IHx8IDA7XG4gIGJvdW5kYXJpZXMudG9wICs9IGlzUGFkZGluZ051bWJlciA/IHBhZGRpbmcgOiBwYWRkaW5nLnRvcCB8fCAwO1xuICBib3VuZGFyaWVzLnJpZ2h0IC09IGlzUGFkZGluZ051bWJlciA/IHBhZGRpbmcgOiBwYWRkaW5nLnJpZ2h0IHx8IDA7XG4gIGJvdW5kYXJpZXMuYm90dG9tIC09IGlzUGFkZGluZ051bWJlciA/IHBhZGRpbmcgOiBwYWRkaW5nLmJvdHRvbSB8fCAwO1xuXG4gIHJldHVybiBib3VuZGFyaWVzO1xufVxuXG5mdW5jdGlvbiBnZXRBcmVhKF9yZWYpIHtcbiAgdmFyIHdpZHRoID0gX3JlZi53aWR0aCxcbiAgICAgIGhlaWdodCA9IF9yZWYuaGVpZ2h0O1xuXG4gIHJldHVybiB3aWR0aCAqIGhlaWdodDtcbn1cblxuLyoqXG4gKiBVdGlsaXR5IHVzZWQgdG8gdHJhbnNmb3JtIHRoZSBgYXV0b2AgcGxhY2VtZW50IHRvIHRoZSBwbGFjZW1lbnQgd2l0aCBtb3JlXG4gKiBhdmFpbGFibGUgc3BhY2UuXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAYXJndW1lbnQge09iamVjdH0gZGF0YSAtIFRoZSBkYXRhIG9iamVjdCBnZW5lcmF0ZWQgYnkgdXBkYXRlIG1ldGhvZFxuICogQGFyZ3VtZW50IHtPYmplY3R9IG9wdGlvbnMgLSBNb2RpZmllcnMgY29uZmlndXJhdGlvbiBhbmQgb3B0aW9uc1xuICogQHJldHVybnMge09iamVjdH0gVGhlIGRhdGEgb2JqZWN0LCBwcm9wZXJseSBtb2RpZmllZFxuICovXG5mdW5jdGlvbiBjb21wdXRlQXV0b1BsYWNlbWVudChwbGFjZW1lbnQsIHJlZlJlY3QsIHBvcHBlciwgcmVmZXJlbmNlLCBib3VuZGFyaWVzRWxlbWVudCkge1xuICB2YXIgcGFkZGluZyA9IGFyZ3VtZW50cy5sZW5ndGggPiA1ICYmIGFyZ3VtZW50c1s1XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzVdIDogMDtcblxuICBpZiAocGxhY2VtZW50LmluZGV4T2YoJ2F1dG8nKSA9PT0gLTEpIHtcbiAgICByZXR1cm4gcGxhY2VtZW50O1xuICB9XG5cbiAgdmFyIGJvdW5kYXJpZXMgPSBnZXRCb3VuZGFyaWVzKHBvcHBlciwgcmVmZXJlbmNlLCBwYWRkaW5nLCBib3VuZGFyaWVzRWxlbWVudCk7XG5cbiAgdmFyIHJlY3RzID0ge1xuICAgIHRvcDoge1xuICAgICAgd2lkdGg6IGJvdW5kYXJpZXMud2lkdGgsXG4gICAgICBoZWlnaHQ6IHJlZlJlY3QudG9wIC0gYm91bmRhcmllcy50b3BcbiAgICB9LFxuICAgIHJpZ2h0OiB7XG4gICAgICB3aWR0aDogYm91bmRhcmllcy5yaWdodCAtIHJlZlJlY3QucmlnaHQsXG4gICAgICBoZWlnaHQ6IGJvdW5kYXJpZXMuaGVpZ2h0XG4gICAgfSxcbiAgICBib3R0b206IHtcbiAgICAgIHdpZHRoOiBib3VuZGFyaWVzLndpZHRoLFxuICAgICAgaGVpZ2h0OiBib3VuZGFyaWVzLmJvdHRvbSAtIHJlZlJlY3QuYm90dG9tXG4gICAgfSxcbiAgICBsZWZ0OiB7XG4gICAgICB3aWR0aDogcmVmUmVjdC5sZWZ0IC0gYm91bmRhcmllcy5sZWZ0LFxuICAgICAgaGVpZ2h0OiBib3VuZGFyaWVzLmhlaWdodFxuICAgIH1cbiAgfTtcblxuICB2YXIgc29ydGVkQXJlYXMgPSBPYmplY3Qua2V5cyhyZWN0cykubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gX2V4dGVuZHMoe1xuICAgICAga2V5OiBrZXlcbiAgICB9LCByZWN0c1trZXldLCB7XG4gICAgICBhcmVhOiBnZXRBcmVhKHJlY3RzW2tleV0pXG4gICAgfSk7XG4gIH0pLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYi5hcmVhIC0gYS5hcmVhO1xuICB9KTtcblxuICB2YXIgZmlsdGVyZWRBcmVhcyA9IHNvcnRlZEFyZWFzLmZpbHRlcihmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICB2YXIgd2lkdGggPSBfcmVmMi53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gX3JlZjIuaGVpZ2h0O1xuICAgIHJldHVybiB3aWR0aCA+PSBwb3BwZXIuY2xpZW50V2lkdGggJiYgaGVpZ2h0ID49IHBvcHBlci5jbGllbnRIZWlnaHQ7XG4gIH0pO1xuXG4gIHZhciBjb21wdXRlZFBsYWNlbWVudCA9IGZpbHRlcmVkQXJlYXMubGVuZ3RoID4gMCA/IGZpbHRlcmVkQXJlYXNbMF0ua2V5IDogc29ydGVkQXJlYXNbMF0ua2V5O1xuXG4gIHZhciB2YXJpYXRpb24gPSBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcblxuICByZXR1cm4gY29tcHV0ZWRQbGFjZW1lbnQgKyAodmFyaWF0aW9uID8gJy0nICsgdmFyaWF0aW9uIDogJycpO1xufVxuXG4vKipcbiAqIEdldCBvZmZzZXRzIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudFxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQHBhcmFtIHtPYmplY3R9IHN0YXRlXG4gKiBAcGFyYW0ge0VsZW1lbnR9IHBvcHBlciAtIHRoZSBwb3BwZXIgZWxlbWVudFxuICogQHBhcmFtIHtFbGVtZW50fSByZWZlcmVuY2UgLSB0aGUgcmVmZXJlbmNlIGVsZW1lbnQgKHRoZSBwb3BwZXIgd2lsbCBiZSByZWxhdGl2ZSB0byB0aGlzKVxuICogQHBhcmFtIHtFbGVtZW50fSBmaXhlZFBvc2l0aW9uIC0gaXMgaW4gZml4ZWQgcG9zaXRpb24gbW9kZVxuICogQHJldHVybnMge09iamVjdH0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG9mZnNldHMgd2hpY2ggd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBwb3BwZXJcbiAqL1xuZnVuY3Rpb24gZ2V0UmVmZXJlbmNlT2Zmc2V0cyhzdGF0ZSwgcG9wcGVyLCByZWZlcmVuY2UpIHtcbiAgdmFyIGZpeGVkUG9zaXRpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IG51bGw7XG5cbiAgdmFyIGNvbW1vbk9mZnNldFBhcmVudCA9IGZpeGVkUG9zaXRpb24gPyBnZXRGaXhlZFBvc2l0aW9uT2Zmc2V0UGFyZW50KHBvcHBlcikgOiBmaW5kQ29tbW9uT2Zmc2V0UGFyZW50KHBvcHBlciwgZ2V0UmVmZXJlbmNlTm9kZShyZWZlcmVuY2UpKTtcbiAgcmV0dXJuIGdldE9mZnNldFJlY3RSZWxhdGl2ZVRvQXJiaXRyYXJ5Tm9kZShyZWZlcmVuY2UsIGNvbW1vbk9mZnNldFBhcmVudCwgZml4ZWRQb3NpdGlvbik7XG59XG5cbi8qKlxuICogR2V0IHRoZSBvdXRlciBzaXplcyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCAob2Zmc2V0IHNpemUgKyBtYXJnaW5zKVxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtFbGVtZW50fSBlbGVtZW50XG4gKiBAcmV0dXJucyB7T2JqZWN0fSBvYmplY3QgY29udGFpbmluZyB3aWR0aCBhbmQgaGVpZ2h0IHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gZ2V0T3V0ZXJTaXplcyhlbGVtZW50KSB7XG4gIHZhciB3aW5kb3cgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7XG4gIHZhciBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgdmFyIHggPSBwYXJzZUZsb2F0KHN0eWxlcy5tYXJnaW5Ub3AgfHwgMCkgKyBwYXJzZUZsb2F0KHN0eWxlcy5tYXJnaW5Cb3R0b20gfHwgMCk7XG4gIHZhciB5ID0gcGFyc2VGbG9hdChzdHlsZXMubWFyZ2luTGVmdCB8fCAwKSArIHBhcnNlRmxvYXQoc3R5bGVzLm1hcmdpblJpZ2h0IHx8IDApO1xuICB2YXIgcmVzdWx0ID0ge1xuICAgIHdpZHRoOiBlbGVtZW50Lm9mZnNldFdpZHRoICsgeSxcbiAgICBoZWlnaHQ6IGVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgeFxuICB9O1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEdldCB0aGUgb3Bwb3NpdGUgcGxhY2VtZW50IG9mIHRoZSBnaXZlbiBvbmVcbiAqIEBtZXRob2RcbiAqIEBtZW1iZXJvZiBQb3BwZXIuVXRpbHNcbiAqIEBhcmd1bWVudCB7U3RyaW5nfSBwbGFjZW1lbnRcbiAqIEByZXR1cm5zIHtTdHJpbmd9IGZsaXBwZWQgcGxhY2VtZW50XG4gKi9cbmZ1bmN0aW9uIGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICB2YXIgaGFzaCA9IHsgbGVmdDogJ3JpZ2h0JywgcmlnaHQ6ICdsZWZ0JywgYm90dG9tOiAndG9wJywgdG9wOiAnYm90dG9tJyB9O1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgIHJldHVybiBoYXNoW21hdGNoZWRdO1xuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgb2Zmc2V0cyB0byB0aGUgcG9wcGVyXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAcGFyYW0ge09iamVjdH0gcG9zaXRpb24gLSBDU1MgcG9zaXRpb24gdGhlIFBvcHBlciB3aWxsIGdldCBhcHBsaWVkXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBwb3BwZXIgLSB0aGUgcG9wcGVyIGVsZW1lbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSByZWZlcmVuY2VPZmZzZXRzIC0gdGhlIHJlZmVyZW5jZSBvZmZzZXRzICh0aGUgcG9wcGVyIHdpbGwgYmUgcmVsYXRpdmUgdG8gdGhpcylcbiAqIEBwYXJhbSB7U3RyaW5nfSBwbGFjZW1lbnQgLSBvbmUgb2YgdGhlIHZhbGlkIHBsYWNlbWVudCBvcHRpb25zXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBwb3BwZXJPZmZzZXRzIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG9mZnNldHMgd2hpY2ggd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBwb3BwZXJcbiAqL1xuZnVuY3Rpb24gZ2V0UG9wcGVyT2Zmc2V0cyhwb3BwZXIsIHJlZmVyZW5jZU9mZnNldHMsIHBsYWNlbWVudCkge1xuICBwbGFjZW1lbnQgPSBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcblxuICAvLyBHZXQgcG9wcGVyIG5vZGUgc2l6ZXNcbiAgdmFyIHBvcHBlclJlY3QgPSBnZXRPdXRlclNpemVzKHBvcHBlcik7XG5cbiAgLy8gQWRkIHBvc2l0aW9uLCB3aWR0aCBhbmQgaGVpZ2h0IHRvIG91ciBvZmZzZXRzIG9iamVjdFxuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IHtcbiAgICB3aWR0aDogcG9wcGVyUmVjdC53aWR0aCxcbiAgICBoZWlnaHQ6IHBvcHBlclJlY3QuaGVpZ2h0XG4gIH07XG5cbiAgLy8gZGVwZW5kaW5nIGJ5IHRoZSBwb3BwZXIgcGxhY2VtZW50IHdlIGhhdmUgdG8gY29tcHV0ZSBpdHMgb2Zmc2V0cyBzbGlnaHRseSBkaWZmZXJlbnRseVxuICB2YXIgaXNIb3JpeiA9IFsncmlnaHQnLCAnbGVmdCddLmluZGV4T2YocGxhY2VtZW50KSAhPT0gLTE7XG4gIHZhciBtYWluU2lkZSA9IGlzSG9yaXogPyAndG9wJyA6ICdsZWZ0JztcbiAgdmFyIHNlY29uZGFyeVNpZGUgPSBpc0hvcml6ID8gJ2xlZnQnIDogJ3RvcCc7XG4gIHZhciBtZWFzdXJlbWVudCA9IGlzSG9yaXogPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gIHZhciBzZWNvbmRhcnlNZWFzdXJlbWVudCA9ICFpc0hvcml6ID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gIHBvcHBlck9mZnNldHNbbWFpblNpZGVdID0gcmVmZXJlbmNlT2Zmc2V0c1ttYWluU2lkZV0gKyByZWZlcmVuY2VPZmZzZXRzW21lYXN1cmVtZW50XSAvIDIgLSBwb3BwZXJSZWN0W21lYXN1cmVtZW50XSAvIDI7XG4gIGlmIChwbGFjZW1lbnQgPT09IHNlY29uZGFyeVNpZGUpIHtcbiAgICBwb3BwZXJPZmZzZXRzW3NlY29uZGFyeVNpZGVdID0gcmVmZXJlbmNlT2Zmc2V0c1tzZWNvbmRhcnlTaWRlXSAtIHBvcHBlclJlY3Rbc2Vjb25kYXJ5TWVhc3VyZW1lbnRdO1xuICB9IGVsc2Uge1xuICAgIHBvcHBlck9mZnNldHNbc2Vjb25kYXJ5U2lkZV0gPSByZWZlcmVuY2VPZmZzZXRzW2dldE9wcG9zaXRlUGxhY2VtZW50KHNlY29uZGFyeVNpZGUpXTtcbiAgfVxuXG4gIHJldHVybiBwb3BwZXJPZmZzZXRzO1xufVxuXG4vKipcbiAqIE1pbWljcyB0aGUgYGZpbmRgIG1ldGhvZCBvZiBBcnJheVxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtBcnJheX0gYXJyXG4gKiBAYXJndW1lbnQgcHJvcFxuICogQGFyZ3VtZW50IHZhbHVlXG4gKiBAcmV0dXJucyBpbmRleCBvciAtMVxuICovXG5mdW5jdGlvbiBmaW5kKGFyciwgY2hlY2spIHtcbiAgLy8gdXNlIG5hdGl2ZSBmaW5kIGlmIHN1cHBvcnRlZFxuICBpZiAoQXJyYXkucHJvdG90eXBlLmZpbmQpIHtcbiAgICByZXR1cm4gYXJyLmZpbmQoY2hlY2spO1xuICB9XG5cbiAgLy8gdXNlIGBmaWx0ZXJgIHRvIG9idGFpbiB0aGUgc2FtZSBiZWhhdmlvciBvZiBgZmluZGBcbiAgcmV0dXJuIGFyci5maWx0ZXIoY2hlY2spWzBdO1xufVxuXG4vKipcbiAqIFJldHVybiB0aGUgaW5kZXggb2YgdGhlIG1hdGNoaW5nIG9iamVjdFxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtBcnJheX0gYXJyXG4gKiBAYXJndW1lbnQgcHJvcFxuICogQGFyZ3VtZW50IHZhbHVlXG4gKiBAcmV0dXJucyBpbmRleCBvciAtMVxuICovXG5mdW5jdGlvbiBmaW5kSW5kZXgoYXJyLCBwcm9wLCB2YWx1ZSkge1xuICAvLyB1c2UgbmF0aXZlIGZpbmRJbmRleCBpZiBzdXBwb3J0ZWRcbiAgaWYgKEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXgpIHtcbiAgICByZXR1cm4gYXJyLmZpbmRJbmRleChmdW5jdGlvbiAoY3VyKSB7XG4gICAgICByZXR1cm4gY3VyW3Byb3BdID09PSB2YWx1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHVzZSBgZmluZGAgKyBgaW5kZXhPZmAgaWYgYGZpbmRJbmRleGAgaXNuJ3Qgc3VwcG9ydGVkXG4gIHZhciBtYXRjaCA9IGZpbmQoYXJyLCBmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIG9ialtwcm9wXSA9PT0gdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gYXJyLmluZGV4T2YobWF0Y2gpO1xufVxuXG4vKipcbiAqIExvb3AgdHJvdWdoIHRoZSBsaXN0IG9mIG1vZGlmaWVycyBhbmQgcnVuIHRoZW0gaW4gb3JkZXIsXG4gKiBlYWNoIG9mIHRoZW0gd2lsbCB0aGVuIGVkaXQgdGhlIGRhdGEgb2JqZWN0LlxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQHBhcmFtIHtkYXRhT2JqZWN0fSBkYXRhXG4gKiBAcGFyYW0ge0FycmF5fSBtb2RpZmllcnNcbiAqIEBwYXJhbSB7U3RyaW5nfSBlbmRzIC0gT3B0aW9uYWwgbW9kaWZpZXIgbmFtZSB1c2VkIGFzIHN0b3BwZXJcbiAqIEByZXR1cm5zIHtkYXRhT2JqZWN0fVxuICovXG5mdW5jdGlvbiBydW5Nb2RpZmllcnMobW9kaWZpZXJzLCBkYXRhLCBlbmRzKSB7XG4gIHZhciBtb2RpZmllcnNUb1J1biA9IGVuZHMgPT09IHVuZGVmaW5lZCA/IG1vZGlmaWVycyA6IG1vZGlmaWVycy5zbGljZSgwLCBmaW5kSW5kZXgobW9kaWZpZXJzLCAnbmFtZScsIGVuZHMpKTtcblxuICBtb2RpZmllcnNUb1J1bi5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgIGlmIChtb2RpZmllclsnZnVuY3Rpb24nXSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBkb3Qtbm90YXRpb25cbiAgICAgIGNvbnNvbGUud2FybignYG1vZGlmaWVyLmZ1bmN0aW9uYCBpcyBkZXByZWNhdGVkLCB1c2UgYG1vZGlmaWVyLmZuYCEnKTtcbiAgICB9XG4gICAgdmFyIGZuID0gbW9kaWZpZXJbJ2Z1bmN0aW9uJ10gfHwgbW9kaWZpZXIuZm47IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZG90LW5vdGF0aW9uXG4gICAgaWYgKG1vZGlmaWVyLmVuYWJsZWQgJiYgaXNGdW5jdGlvbihmbikpIHtcbiAgICAgIC8vIEFkZCBwcm9wZXJ0aWVzIHRvIG9mZnNldHMgdG8gbWFrZSB0aGVtIGEgY29tcGxldGUgY2xpZW50UmVjdCBvYmplY3RcbiAgICAgIC8vIHdlIGRvIHRoaXMgYmVmb3JlIGVhY2ggbW9kaWZpZXIgdG8gbWFrZSBzdXJlIHRoZSBwcmV2aW91cyBvbmUgZG9lc24ndFxuICAgICAgLy8gbWVzcyB3aXRoIHRoZXNlIHZhbHVlc1xuICAgICAgZGF0YS5vZmZzZXRzLnBvcHBlciA9IGdldENsaWVudFJlY3QoZGF0YS5vZmZzZXRzLnBvcHBlcik7XG4gICAgICBkYXRhLm9mZnNldHMucmVmZXJlbmNlID0gZ2V0Q2xpZW50UmVjdChkYXRhLm9mZnNldHMucmVmZXJlbmNlKTtcblxuICAgICAgZGF0YSA9IGZuKGRhdGEsIG1vZGlmaWVyKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBkYXRhO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBwb3BwZXIsIGNvbXB1dGluZyB0aGUgbmV3IG9mZnNldHMgYW5kIGFwcGx5aW5nXG4gKiB0aGUgbmV3IHN0eWxlLjxiciAvPlxuICogUHJlZmVyIGBzY2hlZHVsZVVwZGF0ZWAgb3ZlciBgdXBkYXRlYCBiZWNhdXNlIG9mIHBlcmZvcm1hbmNlIHJlYXNvbnMuXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgLy8gaWYgcG9wcGVyIGlzIGRlc3Ryb3llZCwgZG9uJ3QgcGVyZm9ybSBhbnkgZnVydGhlciB1cGRhdGVcbiAgaWYgKHRoaXMuc3RhdGUuaXNEZXN0cm95ZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgZGF0YSA9IHtcbiAgICBpbnN0YW5jZTogdGhpcyxcbiAgICBzdHlsZXM6IHt9LFxuICAgIGFycm93U3R5bGVzOiB7fSxcbiAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICBmbGlwcGVkOiBmYWxzZSxcbiAgICBvZmZzZXRzOiB7fVxuICB9O1xuXG4gIC8vIGNvbXB1dGUgcmVmZXJlbmNlIGVsZW1lbnQgb2Zmc2V0c1xuICBkYXRhLm9mZnNldHMucmVmZXJlbmNlID0gZ2V0UmVmZXJlbmNlT2Zmc2V0cyh0aGlzLnN0YXRlLCB0aGlzLnBvcHBlciwgdGhpcy5yZWZlcmVuY2UsIHRoaXMub3B0aW9ucy5wb3NpdGlvbkZpeGVkKTtcblxuICAvLyBjb21wdXRlIGF1dG8gcGxhY2VtZW50LCBzdG9yZSBwbGFjZW1lbnQgaW5zaWRlIHRoZSBkYXRhIG9iamVjdCxcbiAgLy8gbW9kaWZpZXJzIHdpbGwgYmUgYWJsZSB0byBlZGl0IGBwbGFjZW1lbnRgIGlmIG5lZWRlZFxuICAvLyBhbmQgcmVmZXIgdG8gb3JpZ2luYWxQbGFjZW1lbnQgdG8ga25vdyB0aGUgb3JpZ2luYWwgdmFsdWVcbiAgZGF0YS5wbGFjZW1lbnQgPSBjb21wdXRlQXV0b1BsYWNlbWVudCh0aGlzLm9wdGlvbnMucGxhY2VtZW50LCBkYXRhLm9mZnNldHMucmVmZXJlbmNlLCB0aGlzLnBvcHBlciwgdGhpcy5yZWZlcmVuY2UsIHRoaXMub3B0aW9ucy5tb2RpZmllcnMuZmxpcC5ib3VuZGFyaWVzRWxlbWVudCwgdGhpcy5vcHRpb25zLm1vZGlmaWVycy5mbGlwLnBhZGRpbmcpO1xuXG4gIC8vIHN0b3JlIHRoZSBjb21wdXRlZCBwbGFjZW1lbnQgaW5zaWRlIGBvcmlnaW5hbFBsYWNlbWVudGBcbiAgZGF0YS5vcmlnaW5hbFBsYWNlbWVudCA9IGRhdGEucGxhY2VtZW50O1xuXG4gIGRhdGEucG9zaXRpb25GaXhlZCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbkZpeGVkO1xuXG4gIC8vIGNvbXB1dGUgdGhlIHBvcHBlciBvZmZzZXRzXG4gIGRhdGEub2Zmc2V0cy5wb3BwZXIgPSBnZXRQb3BwZXJPZmZzZXRzKHRoaXMucG9wcGVyLCBkYXRhLm9mZnNldHMucmVmZXJlbmNlLCBkYXRhLnBsYWNlbWVudCk7XG5cbiAgZGF0YS5vZmZzZXRzLnBvcHBlci5wb3NpdGlvbiA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbkZpeGVkID8gJ2ZpeGVkJyA6ICdhYnNvbHV0ZSc7XG5cbiAgLy8gcnVuIHRoZSBtb2RpZmllcnNcbiAgZGF0YSA9IHJ1bk1vZGlmaWVycyh0aGlzLm1vZGlmaWVycywgZGF0YSk7XG5cbiAgLy8gdGhlIGZpcnN0IGB1cGRhdGVgIHdpbGwgY2FsbCBgb25DcmVhdGVgIGNhbGxiYWNrXG4gIC8vIHRoZSBvdGhlciBvbmVzIHdpbGwgY2FsbCBgb25VcGRhdGVgIGNhbGxiYWNrXG4gIGlmICghdGhpcy5zdGF0ZS5pc0NyZWF0ZWQpIHtcbiAgICB0aGlzLnN0YXRlLmlzQ3JlYXRlZCA9IHRydWU7XG4gICAgdGhpcy5vcHRpb25zLm9uQ3JlYXRlKGRhdGEpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMub3B0aW9ucy5vblVwZGF0ZShkYXRhKTtcbiAgfVxufVxuXG4vKipcbiAqIEhlbHBlciB1c2VkIHRvIGtub3cgaWYgdGhlIGdpdmVuIG1vZGlmaWVyIGlzIGVuYWJsZWQuXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNNb2RpZmllckVuYWJsZWQobW9kaWZpZXJzLCBtb2RpZmllck5hbWUpIHtcbiAgcmV0dXJuIG1vZGlmaWVycy5zb21lKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgICAgIGVuYWJsZWQgPSBfcmVmLmVuYWJsZWQ7XG4gICAgcmV0dXJuIGVuYWJsZWQgJiYgbmFtZSA9PT0gbW9kaWZpZXJOYW1lO1xuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHByZWZpeGVkIHN1cHBvcnRlZCBwcm9wZXJ0eSBuYW1lXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAYXJndW1lbnQge1N0cmluZ30gcHJvcGVydHkgKGNhbWVsQ2FzZSlcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHByZWZpeGVkIHByb3BlcnR5IChjYW1lbENhc2Ugb3IgUGFzY2FsQ2FzZSwgZGVwZW5kaW5nIG9uIHRoZSB2ZW5kb3IgcHJlZml4KVxuICovXG5mdW5jdGlvbiBnZXRTdXBwb3J0ZWRQcm9wZXJ0eU5hbWUocHJvcGVydHkpIHtcbiAgdmFyIHByZWZpeGVzID0gW2ZhbHNlLCAnbXMnLCAnV2Via2l0JywgJ01veicsICdPJ107XG4gIHZhciB1cHBlclByb3AgPSBwcm9wZXJ0eS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHByb3BlcnR5LnNsaWNlKDEpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlZml4ZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcHJlZml4ID0gcHJlZml4ZXNbaV07XG4gICAgdmFyIHRvQ2hlY2sgPSBwcmVmaXggPyAnJyArIHByZWZpeCArIHVwcGVyUHJvcCA6IHByb3BlcnR5O1xuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQuYm9keS5zdHlsZVt0b0NoZWNrXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiB0b0NoZWNrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBEZXN0cm95cyB0aGUgcG9wcGVyLlxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlclxuICovXG5mdW5jdGlvbiBkZXN0cm95KCkge1xuICB0aGlzLnN0YXRlLmlzRGVzdHJveWVkID0gdHJ1ZTtcblxuICAvLyB0b3VjaCBET00gb25seSBpZiBgYXBwbHlTdHlsZWAgbW9kaWZpZXIgaXMgZW5hYmxlZFxuICBpZiAoaXNNb2RpZmllckVuYWJsZWQodGhpcy5tb2RpZmllcnMsICdhcHBseVN0eWxlJykpIHtcbiAgICB0aGlzLnBvcHBlci5yZW1vdmVBdHRyaWJ1dGUoJ3gtcGxhY2VtZW50Jyk7XG4gICAgdGhpcy5wb3BwZXIuc3R5bGUucG9zaXRpb24gPSAnJztcbiAgICB0aGlzLnBvcHBlci5zdHlsZS50b3AgPSAnJztcbiAgICB0aGlzLnBvcHBlci5zdHlsZS5sZWZ0ID0gJyc7XG4gICAgdGhpcy5wb3BwZXIuc3R5bGUucmlnaHQgPSAnJztcbiAgICB0aGlzLnBvcHBlci5zdHlsZS5ib3R0b20gPSAnJztcbiAgICB0aGlzLnBvcHBlci5zdHlsZS53aWxsQ2hhbmdlID0gJyc7XG4gICAgdGhpcy5wb3BwZXIuc3R5bGVbZ2V0U3VwcG9ydGVkUHJvcGVydHlOYW1lKCd0cmFuc2Zvcm0nKV0gPSAnJztcbiAgfVxuXG4gIHRoaXMuZGlzYWJsZUV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgLy8gcmVtb3ZlIHRoZSBwb3BwZXIgaWYgdXNlciBleHBsaWNpdGx5IGFza2VkIGZvciB0aGUgZGVsZXRpb24gb24gZGVzdHJveVxuICAvLyBkbyBub3QgdXNlIGByZW1vdmVgIGJlY2F1c2UgSUUxMSBkb2Vzbid0IHN1cHBvcnQgaXRcbiAgaWYgKHRoaXMub3B0aW9ucy5yZW1vdmVPbkRlc3Ryb3kpIHtcbiAgICB0aGlzLnBvcHBlci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMucG9wcGVyKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHdpbmRvdyBhc3NvY2lhdGVkIHdpdGggdGhlIGVsZW1lbnRcbiAqIEBhcmd1bWVudCB7RWxlbWVudH0gZWxlbWVudFxuICogQHJldHVybnMge1dpbmRvd31cbiAqL1xuZnVuY3Rpb24gZ2V0V2luZG93KGVsZW1lbnQpIHtcbiAgdmFyIG93bmVyRG9jdW1lbnQgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQ7XG4gIHJldHVybiBvd25lckRvY3VtZW50ID8gb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyA6IHdpbmRvdztcbn1cblxuZnVuY3Rpb24gYXR0YWNoVG9TY3JvbGxQYXJlbnRzKHNjcm9sbFBhcmVudCwgZXZlbnQsIGNhbGxiYWNrLCBzY3JvbGxQYXJlbnRzKSB7XG4gIHZhciBpc0JvZHkgPSBzY3JvbGxQYXJlbnQubm9kZU5hbWUgPT09ICdCT0RZJztcbiAgdmFyIHRhcmdldCA9IGlzQm9keSA/IHNjcm9sbFBhcmVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IDogc2Nyb2xsUGFyZW50O1xuICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgY2FsbGJhY2ssIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcblxuICBpZiAoIWlzQm9keSkge1xuICAgIGF0dGFjaFRvU2Nyb2xsUGFyZW50cyhnZXRTY3JvbGxQYXJlbnQodGFyZ2V0LnBhcmVudE5vZGUpLCBldmVudCwgY2FsbGJhY2ssIHNjcm9sbFBhcmVudHMpO1xuICB9XG4gIHNjcm9sbFBhcmVudHMucHVzaCh0YXJnZXQpO1xufVxuXG4vKipcbiAqIFNldHVwIG5lZWRlZCBldmVudCBsaXN0ZW5lcnMgdXNlZCB0byB1cGRhdGUgdGhlIHBvcHBlciBwb3NpdGlvblxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gc2V0dXBFdmVudExpc3RlbmVycyhyZWZlcmVuY2UsIG9wdGlvbnMsIHN0YXRlLCB1cGRhdGVCb3VuZCkge1xuICAvLyBSZXNpemUgZXZlbnQgbGlzdGVuZXIgb24gd2luZG93XG4gIHN0YXRlLnVwZGF0ZUJvdW5kID0gdXBkYXRlQm91bmQ7XG4gIGdldFdpbmRvdyhyZWZlcmVuY2UpLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHN0YXRlLnVwZGF0ZUJvdW5kLCB7IHBhc3NpdmU6IHRydWUgfSk7XG5cbiAgLy8gU2Nyb2xsIGV2ZW50IGxpc3RlbmVyIG9uIHNjcm9sbCBwYXJlbnRzXG4gIHZhciBzY3JvbGxFbGVtZW50ID0gZ2V0U2Nyb2xsUGFyZW50KHJlZmVyZW5jZSk7XG4gIGF0dGFjaFRvU2Nyb2xsUGFyZW50cyhzY3JvbGxFbGVtZW50LCAnc2Nyb2xsJywgc3RhdGUudXBkYXRlQm91bmQsIHN0YXRlLnNjcm9sbFBhcmVudHMpO1xuICBzdGF0ZS5zY3JvbGxFbGVtZW50ID0gc2Nyb2xsRWxlbWVudDtcbiAgc3RhdGUuZXZlbnRzRW5hYmxlZCA9IHRydWU7XG5cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG4vKipcbiAqIEl0IHdpbGwgYWRkIHJlc2l6ZS9zY3JvbGwgZXZlbnRzIGFuZCBzdGFydCByZWNhbGN1bGF0aW5nXG4gKiBwb3NpdGlvbiBvZiB0aGUgcG9wcGVyIGVsZW1lbnQgd2hlbiB0aGV5IGFyZSB0cmlnZ2VyZWQuXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyXG4gKi9cbmZ1bmN0aW9uIGVuYWJsZUV2ZW50TGlzdGVuZXJzKCkge1xuICBpZiAoIXRoaXMuc3RhdGUuZXZlbnRzRW5hYmxlZCkge1xuICAgIHRoaXMuc3RhdGUgPSBzZXR1cEV2ZW50TGlzdGVuZXJzKHRoaXMucmVmZXJlbmNlLCB0aGlzLm9wdGlvbnMsIHRoaXMuc3RhdGUsIHRoaXMuc2NoZWR1bGVVcGRhdGUpO1xuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlIGV2ZW50IGxpc3RlbmVycyB1c2VkIHRvIHVwZGF0ZSB0aGUgcG9wcGVyIHBvc2l0aW9uXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVycyhyZWZlcmVuY2UsIHN0YXRlKSB7XG4gIC8vIFJlbW92ZSByZXNpemUgZXZlbnQgbGlzdGVuZXIgb24gd2luZG93XG4gIGdldFdpbmRvdyhyZWZlcmVuY2UpLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHN0YXRlLnVwZGF0ZUJvdW5kKTtcblxuICAvLyBSZW1vdmUgc2Nyb2xsIGV2ZW50IGxpc3RlbmVyIG9uIHNjcm9sbCBwYXJlbnRzXG4gIHN0YXRlLnNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHN0YXRlLnVwZGF0ZUJvdW5kKTtcbiAgfSk7XG5cbiAgLy8gUmVzZXQgc3RhdGVcbiAgc3RhdGUudXBkYXRlQm91bmQgPSBudWxsO1xuICBzdGF0ZS5zY3JvbGxQYXJlbnRzID0gW107XG4gIHN0YXRlLnNjcm9sbEVsZW1lbnQgPSBudWxsO1xuICBzdGF0ZS5ldmVudHNFbmFibGVkID0gZmFsc2U7XG4gIHJldHVybiBzdGF0ZTtcbn1cblxuLyoqXG4gKiBJdCB3aWxsIHJlbW92ZSByZXNpemUvc2Nyb2xsIGV2ZW50cyBhbmQgd29uJ3QgcmVjYWxjdWxhdGUgcG9wcGVyIHBvc2l0aW9uXG4gKiB3aGVuIHRoZXkgYXJlIHRyaWdnZXJlZC4gSXQgYWxzbyB3b24ndCB0cmlnZ2VyIGBvblVwZGF0ZWAgY2FsbGJhY2sgYW55bW9yZSxcbiAqIHVubGVzcyB5b3UgY2FsbCBgdXBkYXRlYCBtZXRob2QgbWFudWFsbHkuXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyXG4gKi9cbmZ1bmN0aW9uIGRpc2FibGVFdmVudExpc3RlbmVycygpIHtcbiAgaWYgKHRoaXMuc3RhdGUuZXZlbnRzRW5hYmxlZCkge1xuICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuc2NoZWR1bGVVcGRhdGUpO1xuICAgIHRoaXMuc3RhdGUgPSByZW1vdmVFdmVudExpc3RlbmVycyh0aGlzLnJlZmVyZW5jZSwgdGhpcy5zdGF0ZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBUZWxscyBpZiBhIGdpdmVuIGlucHV0IGlzIGEgbnVtYmVyXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAcGFyYW0geyp9IGlucHV0IHRvIGNoZWNrXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICovXG5mdW5jdGlvbiBpc051bWVyaWMobikge1xuICByZXR1cm4gbiAhPT0gJycgJiYgIWlzTmFOKHBhcnNlRmxvYXQobikpICYmIGlzRmluaXRlKG4pO1xufVxuXG4vKipcbiAqIFNldCB0aGUgc3R5bGUgdG8gdGhlIGdpdmVuIHBvcHBlclxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byBhcHBseSB0aGUgc3R5bGUgdG9cbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBzdHlsZXNcbiAqIE9iamVjdCB3aXRoIGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMgd2hpY2ggd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBlbGVtZW50XG4gKi9cbmZ1bmN0aW9uIHNldFN0eWxlcyhlbGVtZW50LCBzdHlsZXMpIHtcbiAgT2JqZWN0LmtleXMoc3R5bGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgdmFyIHVuaXQgPSAnJztcbiAgICAvLyBhZGQgdW5pdCBpZiB0aGUgdmFsdWUgaXMgbnVtZXJpYyBhbmQgaXMgb25lIG9mIHRoZSBmb2xsb3dpbmdcbiAgICBpZiAoWyd3aWR0aCcsICdoZWlnaHQnLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10uaW5kZXhPZihwcm9wKSAhPT0gLTEgJiYgaXNOdW1lcmljKHN0eWxlc1twcm9wXSkpIHtcbiAgICAgIHVuaXQgPSAncHgnO1xuICAgIH1cbiAgICBlbGVtZW50LnN0eWxlW3Byb3BdID0gc3R5bGVzW3Byb3BdICsgdW5pdDtcbiAgfSk7XG59XG5cbi8qKlxuICogU2V0IHRoZSBhdHRyaWJ1dGVzIHRvIHRoZSBnaXZlbiBwb3BwZXJcbiAqIEBtZXRob2RcbiAqIEBtZW1iZXJvZiBQb3BwZXIuVXRpbHNcbiAqIEBhcmd1bWVudCB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gYXBwbHkgdGhlIGF0dHJpYnV0ZXMgdG9cbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBzdHlsZXNcbiAqIE9iamVjdCB3aXRoIGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMgd2hpY2ggd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBlbGVtZW50XG4gKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXMoZWxlbWVudCwgYXR0cmlidXRlcykge1xuICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgdmFyIHZhbHVlID0gYXR0cmlidXRlc1twcm9wXTtcbiAgICBpZiAodmFsdWUgIT09IGZhbHNlKSB7XG4gICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShwcm9wLCBhdHRyaWJ1dGVzW3Byb3BdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUocHJvcCk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBAZnVuY3Rpb25cbiAqIEBtZW1iZXJvZiBNb2RpZmllcnNcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IGdlbmVyYXRlZCBieSBgdXBkYXRlYCBtZXRob2RcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBkYXRhLnN0eWxlcyAtIExpc3Qgb2Ygc3R5bGUgcHJvcGVydGllcyAtIHZhbHVlcyB0byBhcHBseSB0byBwb3BwZXIgZWxlbWVudFxuICogQGFyZ3VtZW50IHtPYmplY3R9IGRhdGEuYXR0cmlidXRlcyAtIExpc3Qgb2YgYXR0cmlidXRlIHByb3BlcnRpZXMgLSB2YWx1ZXMgdG8gYXBwbHkgdG8gcG9wcGVyIGVsZW1lbnRcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBvcHRpb25zIC0gTW9kaWZpZXJzIGNvbmZpZ3VyYXRpb24gYW5kIG9wdGlvbnNcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBzYW1lIGRhdGEgb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIGFwcGx5U3R5bGUoZGF0YSkge1xuICAvLyBhbnkgcHJvcGVydHkgcHJlc2VudCBpbiBgZGF0YS5zdHlsZXNgIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcG9wcGVyLFxuICAvLyBpbiB0aGlzIHdheSB3ZSBjYW4gbWFrZSB0aGUgM3JkIHBhcnR5IG1vZGlmaWVycyBhZGQgY3VzdG9tIHN0eWxlcyB0byBpdFxuICAvLyBCZSBhd2FyZSwgbW9kaWZpZXJzIGNvdWxkIG92ZXJyaWRlIHRoZSBwcm9wZXJ0aWVzIGRlZmluZWQgaW4gdGhlIHByZXZpb3VzXG4gIC8vIGxpbmVzIG9mIHRoaXMgbW9kaWZpZXIhXG4gIHNldFN0eWxlcyhkYXRhLmluc3RhbmNlLnBvcHBlciwgZGF0YS5zdHlsZXMpO1xuXG4gIC8vIGFueSBwcm9wZXJ0eSBwcmVzZW50IGluIGBkYXRhLmF0dHJpYnV0ZXNgIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcG9wcGVyLFxuICAvLyB0aGV5IHdpbGwgYmUgc2V0IGFzIEhUTUwgYXR0cmlidXRlcyBvZiB0aGUgZWxlbWVudFxuICBzZXRBdHRyaWJ1dGVzKGRhdGEuaW5zdGFuY2UucG9wcGVyLCBkYXRhLmF0dHJpYnV0ZXMpO1xuXG4gIC8vIGlmIGFycm93RWxlbWVudCBpcyBkZWZpbmVkIGFuZCBhcnJvd1N0eWxlcyBoYXMgc29tZSBwcm9wZXJ0aWVzXG4gIGlmIChkYXRhLmFycm93RWxlbWVudCAmJiBPYmplY3Qua2V5cyhkYXRhLmFycm93U3R5bGVzKS5sZW5ndGgpIHtcbiAgICBzZXRTdHlsZXMoZGF0YS5hcnJvd0VsZW1lbnQsIGRhdGEuYXJyb3dTdHlsZXMpO1xuICB9XG5cbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8qKlxuICogU2V0IHRoZSB4LXBsYWNlbWVudCBhdHRyaWJ1dGUgYmVmb3JlIGV2ZXJ5dGhpbmcgZWxzZSBiZWNhdXNlIGl0IGNvdWxkIGJlIHVzZWRcbiAqIHRvIGFkZCBtYXJnaW5zIHRvIHRoZSBwb3BwZXIgbWFyZ2lucyBuZWVkcyB0byBiZSBjYWxjdWxhdGVkIHRvIGdldCB0aGVcbiAqIGNvcnJlY3QgcG9wcGVyIG9mZnNldHMuXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLm1vZGlmaWVyc1xuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gcmVmZXJlbmNlIC0gVGhlIHJlZmVyZW5jZSBlbGVtZW50IHVzZWQgdG8gcG9zaXRpb24gdGhlIHBvcHBlclxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gcG9wcGVyIC0gVGhlIEhUTUwgZWxlbWVudCB1c2VkIGFzIHBvcHBlclxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBQb3BwZXIuanMgb3B0aW9uc1xuICovXG5mdW5jdGlvbiBhcHBseVN0eWxlT25Mb2FkKHJlZmVyZW5jZSwgcG9wcGVyLCBvcHRpb25zLCBtb2RpZmllck9wdGlvbnMsIHN0YXRlKSB7XG4gIC8vIGNvbXB1dGUgcmVmZXJlbmNlIGVsZW1lbnQgb2Zmc2V0c1xuICB2YXIgcmVmZXJlbmNlT2Zmc2V0cyA9IGdldFJlZmVyZW5jZU9mZnNldHMoc3RhdGUsIHBvcHBlciwgcmVmZXJlbmNlLCBvcHRpb25zLnBvc2l0aW9uRml4ZWQpO1xuXG4gIC8vIGNvbXB1dGUgYXV0byBwbGFjZW1lbnQsIHN0b3JlIHBsYWNlbWVudCBpbnNpZGUgdGhlIGRhdGEgb2JqZWN0LFxuICAvLyBtb2RpZmllcnMgd2lsbCBiZSBhYmxlIHRvIGVkaXQgYHBsYWNlbWVudGAgaWYgbmVlZGVkXG4gIC8vIGFuZCByZWZlciB0byBvcmlnaW5hbFBsYWNlbWVudCB0byBrbm93IHRoZSBvcmlnaW5hbCB2YWx1ZVxuICB2YXIgcGxhY2VtZW50ID0gY29tcHV0ZUF1dG9QbGFjZW1lbnQob3B0aW9ucy5wbGFjZW1lbnQsIHJlZmVyZW5jZU9mZnNldHMsIHBvcHBlciwgcmVmZXJlbmNlLCBvcHRpb25zLm1vZGlmaWVycy5mbGlwLmJvdW5kYXJpZXNFbGVtZW50LCBvcHRpb25zLm1vZGlmaWVycy5mbGlwLnBhZGRpbmcpO1xuXG4gIHBvcHBlci5zZXRBdHRyaWJ1dGUoJ3gtcGxhY2VtZW50JywgcGxhY2VtZW50KTtcblxuICAvLyBBcHBseSBgcG9zaXRpb25gIHRvIHBvcHBlciBiZWZvcmUgYW55dGhpbmcgZWxzZSBiZWNhdXNlXG4gIC8vIHdpdGhvdXQgdGhlIHBvc2l0aW9uIGFwcGxpZWQgd2UgY2FuJ3QgZ3VhcmFudGVlIGNvcnJlY3QgY29tcHV0YXRpb25zXG4gIHNldFN0eWxlcyhwb3BwZXIsIHsgcG9zaXRpb246IG9wdGlvbnMucG9zaXRpb25GaXhlZCA/ICdmaXhlZCcgOiAnYWJzb2x1dGUnIH0pO1xuXG4gIHJldHVybiBvcHRpb25zO1xufVxuXG4vKipcbiAqIEBmdW5jdGlvblxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtPYmplY3R9IGRhdGEgLSBUaGUgZGF0YSBvYmplY3QgZ2VuZXJhdGVkIGJ5IGB1cGRhdGVgIG1ldGhvZFxuICogQGFyZ3VtZW50IHtCb29sZWFufSBzaG91bGRSb3VuZCAtIElmIHRoZSBvZmZzZXRzIHNob3VsZCBiZSByb3VuZGVkIGF0IGFsbFxuICogQHJldHVybnMge09iamVjdH0gVGhlIHBvcHBlcidzIHBvc2l0aW9uIG9mZnNldHMgcm91bmRlZFxuICpcbiAqIFRoZSB0YWxlIG9mIHBpeGVsLXBlcmZlY3QgcG9zaXRpb25pbmcuIEl0J3Mgc3RpbGwgbm90IDEwMCUgcGVyZmVjdCwgYnV0IGFzXG4gKiBnb29kIGFzIGl0IGNhbiBiZSB3aXRoaW4gcmVhc29uLlxuICogRGlzY3Vzc2lvbiBoZXJlOiBodHRwczovL2dpdGh1Yi5jb20vRmV6VnJhc3RhL3BvcHBlci5qcy9wdWxsLzcxNVxuICpcbiAqIExvdyBEUEkgc2NyZWVucyBjYXVzZSBhIHBvcHBlciB0byBiZSBibHVycnkgaWYgbm90IHVzaW5nIGZ1bGwgcGl4ZWxzIChTYWZhcmlcbiAqIGFzIHdlbGwgb24gSGlnaCBEUEkgc2NyZWVucykuXG4gKlxuICogRmlyZWZveCBwcmVmZXJzIG5vIHJvdW5kaW5nIGZvciBwb3NpdGlvbmluZyBhbmQgZG9lcyBub3QgaGF2ZSBibHVycmluZXNzIG9uXG4gKiBoaWdoIERQSSBzY3JlZW5zLlxuICpcbiAqIE9ubHkgaG9yaXpvbnRhbCBwbGFjZW1lbnQgYW5kIGxlZnQvcmlnaHQgdmFsdWVzIG5lZWQgdG8gYmUgY29uc2lkZXJlZC5cbiAqL1xuZnVuY3Rpb24gZ2V0Um91bmRlZE9mZnNldHMoZGF0YSwgc2hvdWxkUm91bmQpIHtcbiAgdmFyIF9kYXRhJG9mZnNldHMgPSBkYXRhLm9mZnNldHMsXG4gICAgICBwb3BwZXIgPSBfZGF0YSRvZmZzZXRzLnBvcHBlcixcbiAgICAgIHJlZmVyZW5jZSA9IF9kYXRhJG9mZnNldHMucmVmZXJlbmNlO1xuICB2YXIgcm91bmQgPSBNYXRoLnJvdW5kLFxuICAgICAgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4gIHZhciBub1JvdW5kID0gZnVuY3Rpb24gbm9Sb3VuZCh2KSB7XG4gICAgcmV0dXJuIHY7XG4gIH07XG5cbiAgdmFyIHJlZmVyZW5jZVdpZHRoID0gcm91bmQocmVmZXJlbmNlLndpZHRoKTtcbiAgdmFyIHBvcHBlcldpZHRoID0gcm91bmQocG9wcGVyLndpZHRoKTtcblxuICB2YXIgaXNWZXJ0aWNhbCA9IFsnbGVmdCcsICdyaWdodCddLmluZGV4T2YoZGF0YS5wbGFjZW1lbnQpICE9PSAtMTtcbiAgdmFyIGlzVmFyaWF0aW9uID0gZGF0YS5wbGFjZW1lbnQuaW5kZXhPZignLScpICE9PSAtMTtcbiAgdmFyIHNhbWVXaWR0aFBhcml0eSA9IHJlZmVyZW5jZVdpZHRoICUgMiA9PT0gcG9wcGVyV2lkdGggJSAyO1xuICB2YXIgYm90aE9kZFdpZHRoID0gcmVmZXJlbmNlV2lkdGggJSAyID09PSAxICYmIHBvcHBlcldpZHRoICUgMiA9PT0gMTtcblxuICB2YXIgaG9yaXpvbnRhbFRvSW50ZWdlciA9ICFzaG91bGRSb3VuZCA/IG5vUm91bmQgOiBpc1ZlcnRpY2FsIHx8IGlzVmFyaWF0aW9uIHx8IHNhbWVXaWR0aFBhcml0eSA/IHJvdW5kIDogZmxvb3I7XG4gIHZhciB2ZXJ0aWNhbFRvSW50ZWdlciA9ICFzaG91bGRSb3VuZCA/IG5vUm91bmQgOiByb3VuZDtcblxuICByZXR1cm4ge1xuICAgIGxlZnQ6IGhvcml6b250YWxUb0ludGVnZXIoYm90aE9kZFdpZHRoICYmICFpc1ZhcmlhdGlvbiAmJiBzaG91bGRSb3VuZCA/IHBvcHBlci5sZWZ0IC0gMSA6IHBvcHBlci5sZWZ0KSxcbiAgICB0b3A6IHZlcnRpY2FsVG9JbnRlZ2VyKHBvcHBlci50b3ApLFxuICAgIGJvdHRvbTogdmVydGljYWxUb0ludGVnZXIocG9wcGVyLmJvdHRvbSksXG4gICAgcmlnaHQ6IGhvcml6b250YWxUb0ludGVnZXIocG9wcGVyLnJpZ2h0KVxuICB9O1xufVxuXG52YXIgaXNGaXJlZm94ID0gaXNCcm93c2VyICYmIC9GaXJlZm94L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLyoqXG4gKiBAZnVuY3Rpb25cbiAqIEBtZW1iZXJvZiBNb2RpZmllcnNcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IGdlbmVyYXRlZCBieSBgdXBkYXRlYCBtZXRob2RcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBvcHRpb25zIC0gTW9kaWZpZXJzIGNvbmZpZ3VyYXRpb24gYW5kIG9wdGlvbnNcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBkYXRhIG9iamVjdCwgcHJvcGVybHkgbW9kaWZpZWRcbiAqL1xuZnVuY3Rpb24gY29tcHV0ZVN0eWxlKGRhdGEsIG9wdGlvbnMpIHtcbiAgdmFyIHggPSBvcHRpb25zLngsXG4gICAgICB5ID0gb3B0aW9ucy55O1xuICB2YXIgcG9wcGVyID0gZGF0YS5vZmZzZXRzLnBvcHBlcjtcblxuICAvLyBSZW1vdmUgdGhpcyBsZWdhY3kgc3VwcG9ydCBpbiBQb3BwZXIuanMgdjJcblxuICB2YXIgbGVnYWN5R3B1QWNjZWxlcmF0aW9uT3B0aW9uID0gZmluZChkYXRhLmluc3RhbmNlLm1vZGlmaWVycywgZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgcmV0dXJuIG1vZGlmaWVyLm5hbWUgPT09ICdhcHBseVN0eWxlJztcbiAgfSkuZ3B1QWNjZWxlcmF0aW9uO1xuICBpZiAobGVnYWN5R3B1QWNjZWxlcmF0aW9uT3B0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zb2xlLndhcm4oJ1dBUk5JTkc6IGBncHVBY2NlbGVyYXRpb25gIG9wdGlvbiBtb3ZlZCB0byBgY29tcHV0ZVN0eWxlYCBtb2RpZmllciBhbmQgd2lsbCBub3QgYmUgc3VwcG9ydGVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBQb3BwZXIuanMhJyk7XG4gIH1cbiAgdmFyIGdwdUFjY2VsZXJhdGlvbiA9IGxlZ2FjeUdwdUFjY2VsZXJhdGlvbk9wdGlvbiAhPT0gdW5kZWZpbmVkID8gbGVnYWN5R3B1QWNjZWxlcmF0aW9uT3B0aW9uIDogb3B0aW9ucy5ncHVBY2NlbGVyYXRpb247XG5cbiAgdmFyIG9mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChkYXRhLmluc3RhbmNlLnBvcHBlcik7XG4gIHZhciBvZmZzZXRQYXJlbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCk7XG5cbiAgLy8gU3R5bGVzXG4gIHZhciBzdHlsZXMgPSB7XG4gICAgcG9zaXRpb246IHBvcHBlci5wb3NpdGlvblxuICB9O1xuXG4gIHZhciBvZmZzZXRzID0gZ2V0Um91bmRlZE9mZnNldHMoZGF0YSwgd2luZG93LmRldmljZVBpeGVsUmF0aW8gPCAyIHx8ICFpc0ZpcmVmb3gpO1xuXG4gIHZhciBzaWRlQSA9IHggPT09ICdib3R0b20nID8gJ3RvcCcgOiAnYm90dG9tJztcbiAgdmFyIHNpZGVCID0geSA9PT0gJ3JpZ2h0JyA/ICdsZWZ0JyA6ICdyaWdodCc7XG5cbiAgLy8gaWYgZ3B1QWNjZWxlcmF0aW9uIGlzIHNldCB0byBgdHJ1ZWAgYW5kIHRyYW5zZm9ybSBpcyBzdXBwb3J0ZWQsXG4gIC8vICB3ZSB1c2UgYHRyYW5zbGF0ZTNkYCB0byBhcHBseSB0aGUgcG9zaXRpb24gdG8gdGhlIHBvcHBlciB3ZVxuICAvLyBhdXRvbWF0aWNhbGx5IHVzZSB0aGUgc3VwcG9ydGVkIHByZWZpeGVkIHZlcnNpb24gaWYgbmVlZGVkXG4gIHZhciBwcmVmaXhlZFByb3BlcnR5ID0gZ2V0U3VwcG9ydGVkUHJvcGVydHlOYW1lKCd0cmFuc2Zvcm0nKTtcblxuICAvLyBub3csIGxldCdzIG1ha2UgYSBzdGVwIGJhY2sgYW5kIGxvb2sgYXQgdGhpcyBjb2RlIGNsb3NlbHkgKHd0Zj8pXG4gIC8vIElmIHRoZSBjb250ZW50IG9mIHRoZSBwb3BwZXIgZ3Jvd3Mgb25jZSBpdCdzIGJlZW4gcG9zaXRpb25lZCwgaXRcbiAgLy8gbWF5IGhhcHBlbiB0aGF0IHRoZSBwb3BwZXIgZ2V0cyBtaXNwbGFjZWQgYmVjYXVzZSBvZiB0aGUgbmV3IGNvbnRlbnRcbiAgLy8gb3ZlcmZsb3dpbmcgaXRzIHJlZmVyZW5jZSBlbGVtZW50XG4gIC8vIFRvIGF2b2lkIHRoaXMgcHJvYmxlbSwgd2UgcHJvdmlkZSB0d28gb3B0aW9ucyAoeCBhbmQgeSksIHdoaWNoIGFsbG93XG4gIC8vIHRoZSBjb25zdW1lciB0byBkZWZpbmUgdGhlIG9mZnNldCBvcmlnaW4uXG4gIC8vIElmIHdlIHBvc2l0aW9uIGEgcG9wcGVyIG9uIHRvcCBvZiBhIHJlZmVyZW5jZSBlbGVtZW50LCB3ZSBjYW4gc2V0XG4gIC8vIGB4YCB0byBgdG9wYCB0byBtYWtlIHRoZSBwb3BwZXIgZ3JvdyB0b3dhcmRzIGl0cyB0b3AgaW5zdGVhZCBvZlxuICAvLyBpdHMgYm90dG9tLlxuICB2YXIgbGVmdCA9IHZvaWQgMCxcbiAgICAgIHRvcCA9IHZvaWQgMDtcbiAgaWYgKHNpZGVBID09PSAnYm90dG9tJykge1xuICAgIC8vIHdoZW4gb2Zmc2V0UGFyZW50IGlzIDxodG1sPiB0aGUgcG9zaXRpb25pbmcgaXMgcmVsYXRpdmUgdG8gdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuIChleGNsdWRpbmcgdGhlIHNjcm9sbGJhcilcbiAgICAvLyBhbmQgbm90IHRoZSBib3R0b20gb2YgdGhlIGh0bWwgZWxlbWVudFxuICAgIGlmIChvZmZzZXRQYXJlbnQubm9kZU5hbWUgPT09ICdIVE1MJykge1xuICAgICAgdG9wID0gLW9mZnNldFBhcmVudC5jbGllbnRIZWlnaHQgKyBvZmZzZXRzLmJvdHRvbTtcbiAgICB9IGVsc2Uge1xuICAgICAgdG9wID0gLW9mZnNldFBhcmVudFJlY3QuaGVpZ2h0ICsgb2Zmc2V0cy5ib3R0b207XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRvcCA9IG9mZnNldHMudG9wO1xuICB9XG4gIGlmIChzaWRlQiA9PT0gJ3JpZ2h0Jykge1xuICAgIGlmIChvZmZzZXRQYXJlbnQubm9kZU5hbWUgPT09ICdIVE1MJykge1xuICAgICAgbGVmdCA9IC1vZmZzZXRQYXJlbnQuY2xpZW50V2lkdGggKyBvZmZzZXRzLnJpZ2h0O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZWZ0ID0gLW9mZnNldFBhcmVudFJlY3Qud2lkdGggKyBvZmZzZXRzLnJpZ2h0O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsZWZ0ID0gb2Zmc2V0cy5sZWZ0O1xuICB9XG4gIGlmIChncHVBY2NlbGVyYXRpb24gJiYgcHJlZml4ZWRQcm9wZXJ0eSkge1xuICAgIHN0eWxlc1twcmVmaXhlZFByb3BlcnR5XSA9ICd0cmFuc2xhdGUzZCgnICsgbGVmdCArICdweCwgJyArIHRvcCArICdweCwgMCknO1xuICAgIHN0eWxlc1tzaWRlQV0gPSAwO1xuICAgIHN0eWxlc1tzaWRlQl0gPSAwO1xuICAgIHN0eWxlcy53aWxsQ2hhbmdlID0gJ3RyYW5zZm9ybSc7XG4gIH0gZWxzZSB7XG4gICAgLy8gb3Rod2VyaXNlLCB3ZSB1c2UgdGhlIHN0YW5kYXJkIGB0b3BgLCBgbGVmdGAsIGBib3R0b21gIGFuZCBgcmlnaHRgIHByb3BlcnRpZXNcbiAgICB2YXIgaW52ZXJ0VG9wID0gc2lkZUEgPT09ICdib3R0b20nID8gLTEgOiAxO1xuICAgIHZhciBpbnZlcnRMZWZ0ID0gc2lkZUIgPT09ICdyaWdodCcgPyAtMSA6IDE7XG4gICAgc3R5bGVzW3NpZGVBXSA9IHRvcCAqIGludmVydFRvcDtcbiAgICBzdHlsZXNbc2lkZUJdID0gbGVmdCAqIGludmVydExlZnQ7XG4gICAgc3R5bGVzLndpbGxDaGFuZ2UgPSBzaWRlQSArICcsICcgKyBzaWRlQjtcbiAgfVxuXG4gIC8vIEF0dHJpYnV0ZXNcbiAgdmFyIGF0dHJpYnV0ZXMgPSB7XG4gICAgJ3gtcGxhY2VtZW50JzogZGF0YS5wbGFjZW1lbnRcbiAgfTtcblxuICAvLyBVcGRhdGUgYGRhdGFgIGF0dHJpYnV0ZXMsIHN0eWxlcyBhbmQgYXJyb3dTdHlsZXNcbiAgZGF0YS5hdHRyaWJ1dGVzID0gX2V4dGVuZHMoe30sIGF0dHJpYnV0ZXMsIGRhdGEuYXR0cmlidXRlcyk7XG4gIGRhdGEuc3R5bGVzID0gX2V4dGVuZHMoe30sIHN0eWxlcywgZGF0YS5zdHlsZXMpO1xuICBkYXRhLmFycm93U3R5bGVzID0gX2V4dGVuZHMoe30sIGRhdGEub2Zmc2V0cy5hcnJvdywgZGF0YS5hcnJvd1N0eWxlcyk7XG5cbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8qKlxuICogSGVscGVyIHVzZWQgdG8ga25vdyBpZiB0aGUgZ2l2ZW4gbW9kaWZpZXIgZGVwZW5kcyBmcm9tIGFub3RoZXIgb25lLjxiciAvPlxuICogSXQgY2hlY2tzIGlmIHRoZSBuZWVkZWQgbW9kaWZpZXIgaXMgbGlzdGVkIGFuZCBlbmFibGVkLlxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQHBhcmFtIHtBcnJheX0gbW9kaWZpZXJzIC0gbGlzdCBvZiBtb2RpZmllcnNcbiAqIEBwYXJhbSB7U3RyaW5nfSByZXF1ZXN0aW5nTmFtZSAtIG5hbWUgb2YgcmVxdWVzdGluZyBtb2RpZmllclxuICogQHBhcmFtIHtTdHJpbmd9IHJlcXVlc3RlZE5hbWUgLSBuYW1lIG9mIHJlcXVlc3RlZCBtb2RpZmllclxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzTW9kaWZpZXJSZXF1aXJlZChtb2RpZmllcnMsIHJlcXVlc3RpbmdOYW1lLCByZXF1ZXN0ZWROYW1lKSB7XG4gIHZhciByZXF1ZXN0aW5nID0gZmluZChtb2RpZmllcnMsIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmLm5hbWU7XG4gICAgcmV0dXJuIG5hbWUgPT09IHJlcXVlc3RpbmdOYW1lO1xuICB9KTtcblxuICB2YXIgaXNSZXF1aXJlZCA9ICEhcmVxdWVzdGluZyAmJiBtb2RpZmllcnMuc29tZShmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICByZXR1cm4gbW9kaWZpZXIubmFtZSA9PT0gcmVxdWVzdGVkTmFtZSAmJiBtb2RpZmllci5lbmFibGVkICYmIG1vZGlmaWVyLm9yZGVyIDwgcmVxdWVzdGluZy5vcmRlcjtcbiAgfSk7XG5cbiAgaWYgKCFpc1JlcXVpcmVkKSB7XG4gICAgdmFyIF9yZXF1ZXN0aW5nID0gJ2AnICsgcmVxdWVzdGluZ05hbWUgKyAnYCc7XG4gICAgdmFyIHJlcXVlc3RlZCA9ICdgJyArIHJlcXVlc3RlZE5hbWUgKyAnYCc7XG4gICAgY29uc29sZS53YXJuKHJlcXVlc3RlZCArICcgbW9kaWZpZXIgaXMgcmVxdWlyZWQgYnkgJyArIF9yZXF1ZXN0aW5nICsgJyBtb2RpZmllciBpbiBvcmRlciB0byB3b3JrLCBiZSBzdXJlIHRvIGluY2x1ZGUgaXQgYmVmb3JlICcgKyBfcmVxdWVzdGluZyArICchJyk7XG4gIH1cbiAgcmV0dXJuIGlzUmVxdWlyZWQ7XG59XG5cbi8qKlxuICogQGZ1bmN0aW9uXG4gKiBAbWVtYmVyb2YgTW9kaWZpZXJzXG4gKiBAYXJndW1lbnQge09iamVjdH0gZGF0YSAtIFRoZSBkYXRhIG9iamVjdCBnZW5lcmF0ZWQgYnkgdXBkYXRlIG1ldGhvZFxuICogQGFyZ3VtZW50IHtPYmplY3R9IG9wdGlvbnMgLSBNb2RpZmllcnMgY29uZmlndXJhdGlvbiBhbmQgb3B0aW9uc1xuICogQHJldHVybnMge09iamVjdH0gVGhlIGRhdGEgb2JqZWN0LCBwcm9wZXJseSBtb2RpZmllZFxuICovXG5mdW5jdGlvbiBhcnJvdyhkYXRhLCBvcHRpb25zKSB7XG4gIHZhciBfZGF0YSRvZmZzZXRzJGFycm93O1xuXG4gIC8vIGFycm93IGRlcGVuZHMgb24ga2VlcFRvZ2V0aGVyIGluIG9yZGVyIHRvIHdvcmtcbiAgaWYgKCFpc01vZGlmaWVyUmVxdWlyZWQoZGF0YS5pbnN0YW5jZS5tb2RpZmllcnMsICdhcnJvdycsICdrZWVwVG9nZXRoZXInKSkge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgdmFyIGFycm93RWxlbWVudCA9IG9wdGlvbnMuZWxlbWVudDtcblxuICAvLyBpZiBhcnJvd0VsZW1lbnQgaXMgYSBzdHJpbmcsIHN1cHBvc2UgaXQncyBhIENTUyBzZWxlY3RvclxuICBpZiAodHlwZW9mIGFycm93RWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICBhcnJvd0VsZW1lbnQgPSBkYXRhLmluc3RhbmNlLnBvcHBlci5xdWVyeVNlbGVjdG9yKGFycm93RWxlbWVudCk7XG5cbiAgICAvLyBpZiBhcnJvd0VsZW1lbnQgaXMgbm90IGZvdW5kLCBkb24ndCBydW4gdGhlIG1vZGlmaWVyXG4gICAgaWYgKCFhcnJvd0VsZW1lbnQpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBpZiB0aGUgYXJyb3dFbGVtZW50IGlzbid0IGEgcXVlcnkgc2VsZWN0b3Igd2UgbXVzdCBjaGVjayB0aGF0IHRoZVxuICAgIC8vIHByb3ZpZGVkIERPTSBub2RlIGlzIGNoaWxkIG9mIGl0cyBwb3BwZXIgbm9kZVxuICAgIGlmICghZGF0YS5pbnN0YW5jZS5wb3BwZXIuY29udGFpbnMoYXJyb3dFbGVtZW50KSkge1xuICAgICAgY29uc29sZS53YXJuKCdXQVJOSU5HOiBgYXJyb3cuZWxlbWVudGAgbXVzdCBiZSBjaGlsZCBvZiBpdHMgcG9wcGVyIGVsZW1lbnQhJyk7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gIH1cblxuICB2YXIgcGxhY2VtZW50ID0gZGF0YS5wbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbiAgdmFyIF9kYXRhJG9mZnNldHMgPSBkYXRhLm9mZnNldHMsXG4gICAgICBwb3BwZXIgPSBfZGF0YSRvZmZzZXRzLnBvcHBlcixcbiAgICAgIHJlZmVyZW5jZSA9IF9kYXRhJG9mZnNldHMucmVmZXJlbmNlO1xuXG4gIHZhciBpc1ZlcnRpY2FsID0gWydsZWZ0JywgJ3JpZ2h0J10uaW5kZXhPZihwbGFjZW1lbnQpICE9PSAtMTtcblxuICB2YXIgbGVuID0gaXNWZXJ0aWNhbCA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgdmFyIHNpZGVDYXBpdGFsaXplZCA9IGlzVmVydGljYWwgPyAnVG9wJyA6ICdMZWZ0JztcbiAgdmFyIHNpZGUgPSBzaWRlQ2FwaXRhbGl6ZWQudG9Mb3dlckNhc2UoKTtcbiAgdmFyIGFsdFNpZGUgPSBpc1ZlcnRpY2FsID8gJ2xlZnQnIDogJ3RvcCc7XG4gIHZhciBvcFNpZGUgPSBpc1ZlcnRpY2FsID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICB2YXIgYXJyb3dFbGVtZW50U2l6ZSA9IGdldE91dGVyU2l6ZXMoYXJyb3dFbGVtZW50KVtsZW5dO1xuXG4gIC8vXG4gIC8vIGV4dGVuZHMga2VlcFRvZ2V0aGVyIGJlaGF2aW9yIG1ha2luZyBzdXJlIHRoZSBwb3BwZXIgYW5kIGl0c1xuICAvLyByZWZlcmVuY2UgaGF2ZSBlbm91Z2ggcGl4ZWxzIGluIGNvbmp1bmN0aW9uXG4gIC8vXG5cbiAgLy8gdG9wL2xlZnQgc2lkZVxuICBpZiAocmVmZXJlbmNlW29wU2lkZV0gLSBhcnJvd0VsZW1lbnRTaXplIDwgcG9wcGVyW3NpZGVdKSB7XG4gICAgZGF0YS5vZmZzZXRzLnBvcHBlcltzaWRlXSAtPSBwb3BwZXJbc2lkZV0gLSAocmVmZXJlbmNlW29wU2lkZV0gLSBhcnJvd0VsZW1lbnRTaXplKTtcbiAgfVxuICAvLyBib3R0b20vcmlnaHQgc2lkZVxuICBpZiAocmVmZXJlbmNlW3NpZGVdICsgYXJyb3dFbGVtZW50U2l6ZSA+IHBvcHBlcltvcFNpZGVdKSB7XG4gICAgZGF0YS5vZmZzZXRzLnBvcHBlcltzaWRlXSArPSByZWZlcmVuY2Vbc2lkZV0gKyBhcnJvd0VsZW1lbnRTaXplIC0gcG9wcGVyW29wU2lkZV07XG4gIH1cbiAgZGF0YS5vZmZzZXRzLnBvcHBlciA9IGdldENsaWVudFJlY3QoZGF0YS5vZmZzZXRzLnBvcHBlcik7XG5cbiAgLy8gY29tcHV0ZSBjZW50ZXIgb2YgdGhlIHBvcHBlclxuICB2YXIgY2VudGVyID0gcmVmZXJlbmNlW3NpZGVdICsgcmVmZXJlbmNlW2xlbl0gLyAyIC0gYXJyb3dFbGVtZW50U2l6ZSAvIDI7XG5cbiAgLy8gQ29tcHV0ZSB0aGUgc2lkZVZhbHVlIHVzaW5nIHRoZSB1cGRhdGVkIHBvcHBlciBvZmZzZXRzXG4gIC8vIHRha2UgcG9wcGVyIG1hcmdpbiBpbiBhY2NvdW50IGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSB0aGlzIGluZm8gYXZhaWxhYmxlXG4gIHZhciBjc3MgPSBnZXRTdHlsZUNvbXB1dGVkUHJvcGVydHkoZGF0YS5pbnN0YW5jZS5wb3BwZXIpO1xuICB2YXIgcG9wcGVyTWFyZ2luU2lkZSA9IHBhcnNlRmxvYXQoY3NzWydtYXJnaW4nICsgc2lkZUNhcGl0YWxpemVkXSwgMTApO1xuICB2YXIgcG9wcGVyQm9yZGVyU2lkZSA9IHBhcnNlRmxvYXQoY3NzWydib3JkZXInICsgc2lkZUNhcGl0YWxpemVkICsgJ1dpZHRoJ10sIDEwKTtcbiAgdmFyIHNpZGVWYWx1ZSA9IGNlbnRlciAtIGRhdGEub2Zmc2V0cy5wb3BwZXJbc2lkZV0gLSBwb3BwZXJNYXJnaW5TaWRlIC0gcG9wcGVyQm9yZGVyU2lkZTtcblxuICAvLyBwcmV2ZW50IGFycm93RWxlbWVudCBmcm9tIGJlaW5nIHBsYWNlZCBub3QgY29udGlndW91c2x5IHRvIGl0cyBwb3BwZXJcbiAgc2lkZVZhbHVlID0gTWF0aC5tYXgoTWF0aC5taW4ocG9wcGVyW2xlbl0gLSBhcnJvd0VsZW1lbnRTaXplLCBzaWRlVmFsdWUpLCAwKTtcblxuICBkYXRhLmFycm93RWxlbWVudCA9IGFycm93RWxlbWVudDtcbiAgZGF0YS5vZmZzZXRzLmFycm93ID0gKF9kYXRhJG9mZnNldHMkYXJyb3cgPSB7fSwgZGVmaW5lUHJvcGVydHkoX2RhdGEkb2Zmc2V0cyRhcnJvdywgc2lkZSwgTWF0aC5yb3VuZChzaWRlVmFsdWUpKSwgZGVmaW5lUHJvcGVydHkoX2RhdGEkb2Zmc2V0cyRhcnJvdywgYWx0U2lkZSwgJycpLCBfZGF0YSRvZmZzZXRzJGFycm93KTtcblxuICByZXR1cm4gZGF0YTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIG9wcG9zaXRlIHBsYWNlbWVudCB2YXJpYXRpb24gb2YgdGhlIGdpdmVuIG9uZVxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtTdHJpbmd9IHBsYWNlbWVudCB2YXJpYXRpb25cbiAqIEByZXR1cm5zIHtTdHJpbmd9IGZsaXBwZWQgcGxhY2VtZW50IHZhcmlhdGlvblxuICovXG5mdW5jdGlvbiBnZXRPcHBvc2l0ZVZhcmlhdGlvbih2YXJpYXRpb24pIHtcbiAgaWYgKHZhcmlhdGlvbiA9PT0gJ2VuZCcpIHtcbiAgICByZXR1cm4gJ3N0YXJ0JztcbiAgfSBlbHNlIGlmICh2YXJpYXRpb24gPT09ICdzdGFydCcpIHtcbiAgICByZXR1cm4gJ2VuZCc7XG4gIH1cbiAgcmV0dXJuIHZhcmlhdGlvbjtcbn1cblxuLyoqXG4gKiBMaXN0IG9mIGFjY2VwdGVkIHBsYWNlbWVudHMgdG8gdXNlIGFzIHZhbHVlcyBvZiB0aGUgYHBsYWNlbWVudGAgb3B0aW9uLjxiciAvPlxuICogVmFsaWQgcGxhY2VtZW50cyBhcmU6XG4gKiAtIGBhdXRvYFxuICogLSBgdG9wYFxuICogLSBgcmlnaHRgXG4gKiAtIGBib3R0b21gXG4gKiAtIGBsZWZ0YFxuICpcbiAqIEVhY2ggcGxhY2VtZW50IGNhbiBoYXZlIGEgdmFyaWF0aW9uIGZyb20gdGhpcyBsaXN0OlxuICogLSBgLXN0YXJ0YFxuICogLSBgLWVuZGBcbiAqXG4gKiBWYXJpYXRpb25zIGFyZSBpbnRlcnByZXRlZCBlYXNpbHkgaWYgeW91IHRoaW5rIG9mIHRoZW0gYXMgdGhlIGxlZnQgdG8gcmlnaHRcbiAqIHdyaXR0ZW4gbGFuZ3VhZ2VzLiBIb3Jpem9udGFsbHkgKGB0b3BgIGFuZCBgYm90dG9tYCksIGBzdGFydGAgaXMgbGVmdCBhbmQgYGVuZGBcbiAqIGlzIHJpZ2h0LjxiciAvPlxuICogVmVydGljYWxseSAoYGxlZnRgIGFuZCBgcmlnaHRgKSwgYHN0YXJ0YCBpcyB0b3AgYW5kIGBlbmRgIGlzIGJvdHRvbS5cbiAqXG4gKiBTb21lIHZhbGlkIGV4YW1wbGVzIGFyZTpcbiAqIC0gYHRvcC1lbmRgIChvbiB0b3Agb2YgcmVmZXJlbmNlLCByaWdodCBhbGlnbmVkKVxuICogLSBgcmlnaHQtc3RhcnRgIChvbiByaWdodCBvZiByZWZlcmVuY2UsIHRvcCBhbGlnbmVkKVxuICogLSBgYm90dG9tYCAob24gYm90dG9tLCBjZW50ZXJlZClcbiAqIC0gYGF1dG8tZW5kYCAob24gdGhlIHNpZGUgd2l0aCBtb3JlIHNwYWNlIGF2YWlsYWJsZSwgYWxpZ25tZW50IGRlcGVuZHMgYnkgcGxhY2VtZW50KVxuICpcbiAqIEBzdGF0aWNcbiAqIEB0eXBlIHtBcnJheX1cbiAqIEBlbnVtIHtTdHJpbmd9XG4gKiBAcmVhZG9ubHlcbiAqIEBtZXRob2QgcGxhY2VtZW50c1xuICogQG1lbWJlcm9mIFBvcHBlclxuICovXG52YXIgcGxhY2VtZW50cyA9IFsnYXV0by1zdGFydCcsICdhdXRvJywgJ2F1dG8tZW5kJywgJ3RvcC1zdGFydCcsICd0b3AnLCAndG9wLWVuZCcsICdyaWdodC1zdGFydCcsICdyaWdodCcsICdyaWdodC1lbmQnLCAnYm90dG9tLWVuZCcsICdib3R0b20nLCAnYm90dG9tLXN0YXJ0JywgJ2xlZnQtZW5kJywgJ2xlZnQnLCAnbGVmdC1zdGFydCddO1xuXG4vLyBHZXQgcmlkIG9mIGBhdXRvYCBgYXV0by1zdGFydGAgYW5kIGBhdXRvLWVuZGBcbnZhciB2YWxpZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzLnNsaWNlKDMpO1xuXG4vKipcbiAqIEdpdmVuIGFuIGluaXRpYWwgcGxhY2VtZW50LCByZXR1cm5zIGFsbCB0aGUgc3Vic2VxdWVudCBwbGFjZW1lbnRzXG4gKiBjbG9ja3dpc2UgKG9yIGNvdW50ZXItY2xvY2t3aXNlKS5cbiAqXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAYXJndW1lbnQge1N0cmluZ30gcGxhY2VtZW50IC0gQSB2YWxpZCBwbGFjZW1lbnQgKGl0IGFjY2VwdHMgdmFyaWF0aW9ucylcbiAqIEBhcmd1bWVudCB7Qm9vbGVhbn0gY291bnRlciAtIFNldCB0byB0cnVlIHRvIHdhbGsgdGhlIHBsYWNlbWVudHMgY291bnRlcmNsb2Nrd2lzZVxuICogQHJldHVybnMge0FycmF5fSBwbGFjZW1lbnRzIGluY2x1ZGluZyB0aGVpciB2YXJpYXRpb25zXG4gKi9cbmZ1bmN0aW9uIGNsb2Nrd2lzZShwbGFjZW1lbnQpIHtcbiAgdmFyIGNvdW50ZXIgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlO1xuXG4gIHZhciBpbmRleCA9IHZhbGlkUGxhY2VtZW50cy5pbmRleE9mKHBsYWNlbWVudCk7XG4gIHZhciBhcnIgPSB2YWxpZFBsYWNlbWVudHMuc2xpY2UoaW5kZXggKyAxKS5jb25jYXQodmFsaWRQbGFjZW1lbnRzLnNsaWNlKDAsIGluZGV4KSk7XG4gIHJldHVybiBjb3VudGVyID8gYXJyLnJldmVyc2UoKSA6IGFycjtcbn1cblxudmFyIEJFSEFWSU9SUyA9IHtcbiAgRkxJUDogJ2ZsaXAnLFxuICBDTE9DS1dJU0U6ICdjbG9ja3dpc2UnLFxuICBDT1VOVEVSQ0xPQ0tXSVNFOiAnY291bnRlcmNsb2Nrd2lzZSdcbn07XG5cbi8qKlxuICogQGZ1bmN0aW9uXG4gKiBAbWVtYmVyb2YgTW9kaWZpZXJzXG4gKiBAYXJndW1lbnQge09iamVjdH0gZGF0YSAtIFRoZSBkYXRhIG9iamVjdCBnZW5lcmF0ZWQgYnkgdXBkYXRlIG1ldGhvZFxuICogQGFyZ3VtZW50IHtPYmplY3R9IG9wdGlvbnMgLSBNb2RpZmllcnMgY29uZmlndXJhdGlvbiBhbmQgb3B0aW9uc1xuICogQHJldHVybnMge09iamVjdH0gVGhlIGRhdGEgb2JqZWN0LCBwcm9wZXJseSBtb2RpZmllZFxuICovXG5mdW5jdGlvbiBmbGlwKGRhdGEsIG9wdGlvbnMpIHtcbiAgLy8gaWYgYGlubmVyYCBtb2RpZmllciBpcyBlbmFibGVkLCB3ZSBjYW4ndCB1c2UgdGhlIGBmbGlwYCBtb2RpZmllclxuICBpZiAoaXNNb2RpZmllckVuYWJsZWQoZGF0YS5pbnN0YW5jZS5tb2RpZmllcnMsICdpbm5lcicpKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBpZiAoZGF0YS5mbGlwcGVkICYmIGRhdGEucGxhY2VtZW50ID09PSBkYXRhLm9yaWdpbmFsUGxhY2VtZW50KSB7XG4gICAgLy8gc2VlbXMgbGlrZSBmbGlwIGlzIHRyeWluZyB0byBsb29wLCBwcm9iYWJseSB0aGVyZSdzIG5vdCBlbm91Z2ggc3BhY2Ugb24gYW55IG9mIHRoZSBmbGlwcGFibGUgc2lkZXNcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHZhciBib3VuZGFyaWVzID0gZ2V0Qm91bmRhcmllcyhkYXRhLmluc3RhbmNlLnBvcHBlciwgZGF0YS5pbnN0YW5jZS5yZWZlcmVuY2UsIG9wdGlvbnMucGFkZGluZywgb3B0aW9ucy5ib3VuZGFyaWVzRWxlbWVudCwgZGF0YS5wb3NpdGlvbkZpeGVkKTtcblxuICB2YXIgcGxhY2VtZW50ID0gZGF0YS5wbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbiAgdmFyIHBsYWNlbWVudE9wcG9zaXRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgdmFyIHZhcmlhdGlvbiA9IGRhdGEucGxhY2VtZW50LnNwbGl0KCctJylbMV0gfHwgJyc7XG5cbiAgdmFyIGZsaXBPcmRlciA9IFtdO1xuXG4gIHN3aXRjaCAob3B0aW9ucy5iZWhhdmlvcikge1xuICAgIGNhc2UgQkVIQVZJT1JTLkZMSVA6XG4gICAgICBmbGlwT3JkZXIgPSBbcGxhY2VtZW50LCBwbGFjZW1lbnRPcHBvc2l0ZV07XG4gICAgICBicmVhaztcbiAgICBjYXNlIEJFSEFWSU9SUy5DTE9DS1dJU0U6XG4gICAgICBmbGlwT3JkZXIgPSBjbG9ja3dpc2UocGxhY2VtZW50KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgQkVIQVZJT1JTLkNPVU5URVJDTE9DS1dJU0U6XG4gICAgICBmbGlwT3JkZXIgPSBjbG9ja3dpc2UocGxhY2VtZW50LCB0cnVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBmbGlwT3JkZXIgPSBvcHRpb25zLmJlaGF2aW9yO1xuICB9XG5cbiAgZmxpcE9yZGVyLmZvckVhY2goZnVuY3Rpb24gKHN0ZXAsIGluZGV4KSB7XG4gICAgaWYgKHBsYWNlbWVudCAhPT0gc3RlcCB8fCBmbGlwT3JkZXIubGVuZ3RoID09PSBpbmRleCArIDEpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIHBsYWNlbWVudCA9IGRhdGEucGxhY2VtZW50LnNwbGl0KCctJylbMF07XG4gICAgcGxhY2VtZW50T3Bwb3NpdGUgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuXG4gICAgdmFyIHBvcHBlck9mZnNldHMgPSBkYXRhLm9mZnNldHMucG9wcGVyO1xuICAgIHZhciByZWZPZmZzZXRzID0gZGF0YS5vZmZzZXRzLnJlZmVyZW5jZTtcblxuICAgIC8vIHVzaW5nIGZsb29yIGJlY2F1c2UgdGhlIHJlZmVyZW5jZSBvZmZzZXRzIG1heSBjb250YWluIGRlY2ltYWxzIHdlIGFyZSBub3QgZ29pbmcgdG8gY29uc2lkZXIgaGVyZVxuICAgIHZhciBmbG9vciA9IE1hdGguZmxvb3I7XG4gICAgdmFyIG92ZXJsYXBzUmVmID0gcGxhY2VtZW50ID09PSAnbGVmdCcgJiYgZmxvb3IocG9wcGVyT2Zmc2V0cy5yaWdodCkgPiBmbG9vcihyZWZPZmZzZXRzLmxlZnQpIHx8IHBsYWNlbWVudCA9PT0gJ3JpZ2h0JyAmJiBmbG9vcihwb3BwZXJPZmZzZXRzLmxlZnQpIDwgZmxvb3IocmVmT2Zmc2V0cy5yaWdodCkgfHwgcGxhY2VtZW50ID09PSAndG9wJyAmJiBmbG9vcihwb3BwZXJPZmZzZXRzLmJvdHRvbSkgPiBmbG9vcihyZWZPZmZzZXRzLnRvcCkgfHwgcGxhY2VtZW50ID09PSAnYm90dG9tJyAmJiBmbG9vcihwb3BwZXJPZmZzZXRzLnRvcCkgPCBmbG9vcihyZWZPZmZzZXRzLmJvdHRvbSk7XG5cbiAgICB2YXIgb3ZlcmZsb3dzTGVmdCA9IGZsb29yKHBvcHBlck9mZnNldHMubGVmdCkgPCBmbG9vcihib3VuZGFyaWVzLmxlZnQpO1xuICAgIHZhciBvdmVyZmxvd3NSaWdodCA9IGZsb29yKHBvcHBlck9mZnNldHMucmlnaHQpID4gZmxvb3IoYm91bmRhcmllcy5yaWdodCk7XG4gICAgdmFyIG92ZXJmbG93c1RvcCA9IGZsb29yKHBvcHBlck9mZnNldHMudG9wKSA8IGZsb29yKGJvdW5kYXJpZXMudG9wKTtcbiAgICB2YXIgb3ZlcmZsb3dzQm90dG9tID0gZmxvb3IocG9wcGVyT2Zmc2V0cy5ib3R0b20pID4gZmxvb3IoYm91bmRhcmllcy5ib3R0b20pO1xuXG4gICAgdmFyIG92ZXJmbG93c0JvdW5kYXJpZXMgPSBwbGFjZW1lbnQgPT09ICdsZWZ0JyAmJiBvdmVyZmxvd3NMZWZ0IHx8IHBsYWNlbWVudCA9PT0gJ3JpZ2h0JyAmJiBvdmVyZmxvd3NSaWdodCB8fCBwbGFjZW1lbnQgPT09ICd0b3AnICYmIG92ZXJmbG93c1RvcCB8fCBwbGFjZW1lbnQgPT09ICdib3R0b20nICYmIG92ZXJmbG93c0JvdHRvbTtcblxuICAgIC8vIGZsaXAgdGhlIHZhcmlhdGlvbiBpZiByZXF1aXJlZFxuICAgIHZhciBpc1ZlcnRpY2FsID0gWyd0b3AnLCAnYm90dG9tJ10uaW5kZXhPZihwbGFjZW1lbnQpICE9PSAtMTtcblxuICAgIC8vIGZsaXBzIHZhcmlhdGlvbiBpZiByZWZlcmVuY2UgZWxlbWVudCBvdmVyZmxvd3MgYm91bmRhcmllc1xuICAgIHZhciBmbGlwcGVkVmFyaWF0aW9uQnlSZWYgPSAhIW9wdGlvbnMuZmxpcFZhcmlhdGlvbnMgJiYgKGlzVmVydGljYWwgJiYgdmFyaWF0aW9uID09PSAnc3RhcnQnICYmIG92ZXJmbG93c0xlZnQgfHwgaXNWZXJ0aWNhbCAmJiB2YXJpYXRpb24gPT09ICdlbmQnICYmIG92ZXJmbG93c1JpZ2h0IHx8ICFpc1ZlcnRpY2FsICYmIHZhcmlhdGlvbiA9PT0gJ3N0YXJ0JyAmJiBvdmVyZmxvd3NUb3AgfHwgIWlzVmVydGljYWwgJiYgdmFyaWF0aW9uID09PSAnZW5kJyAmJiBvdmVyZmxvd3NCb3R0b20pO1xuXG4gICAgLy8gZmxpcHMgdmFyaWF0aW9uIGlmIHBvcHBlciBjb250ZW50IG92ZXJmbG93cyBib3VuZGFyaWVzXG4gICAgdmFyIGZsaXBwZWRWYXJpYXRpb25CeUNvbnRlbnQgPSAhIW9wdGlvbnMuZmxpcFZhcmlhdGlvbnNCeUNvbnRlbnQgJiYgKGlzVmVydGljYWwgJiYgdmFyaWF0aW9uID09PSAnc3RhcnQnICYmIG92ZXJmbG93c1JpZ2h0IHx8IGlzVmVydGljYWwgJiYgdmFyaWF0aW9uID09PSAnZW5kJyAmJiBvdmVyZmxvd3NMZWZ0IHx8ICFpc1ZlcnRpY2FsICYmIHZhcmlhdGlvbiA9PT0gJ3N0YXJ0JyAmJiBvdmVyZmxvd3NCb3R0b20gfHwgIWlzVmVydGljYWwgJiYgdmFyaWF0aW9uID09PSAnZW5kJyAmJiBvdmVyZmxvd3NUb3ApO1xuXG4gICAgdmFyIGZsaXBwZWRWYXJpYXRpb24gPSBmbGlwcGVkVmFyaWF0aW9uQnlSZWYgfHwgZmxpcHBlZFZhcmlhdGlvbkJ5Q29udGVudDtcblxuICAgIGlmIChvdmVybGFwc1JlZiB8fCBvdmVyZmxvd3NCb3VuZGFyaWVzIHx8IGZsaXBwZWRWYXJpYXRpb24pIHtcbiAgICAgIC8vIHRoaXMgYm9vbGVhbiB0byBkZXRlY3QgYW55IGZsaXAgbG9vcFxuICAgICAgZGF0YS5mbGlwcGVkID0gdHJ1ZTtcblxuICAgICAgaWYgKG92ZXJsYXBzUmVmIHx8IG92ZXJmbG93c0JvdW5kYXJpZXMpIHtcbiAgICAgICAgcGxhY2VtZW50ID0gZmxpcE9yZGVyW2luZGV4ICsgMV07XG4gICAgICB9XG5cbiAgICAgIGlmIChmbGlwcGVkVmFyaWF0aW9uKSB7XG4gICAgICAgIHZhcmlhdGlvbiA9IGdldE9wcG9zaXRlVmFyaWF0aW9uKHZhcmlhdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGRhdGEucGxhY2VtZW50ID0gcGxhY2VtZW50ICsgKHZhcmlhdGlvbiA/ICctJyArIHZhcmlhdGlvbiA6ICcnKTtcblxuICAgICAgLy8gdGhpcyBvYmplY3QgY29udGFpbnMgYHBvc2l0aW9uYCwgd2Ugd2FudCB0byBwcmVzZXJ2ZSBpdCBhbG9uZyB3aXRoXG4gICAgICAvLyBhbnkgYWRkaXRpb25hbCBwcm9wZXJ0eSB3ZSBtYXkgYWRkIGluIHRoZSBmdXR1cmVcbiAgICAgIGRhdGEub2Zmc2V0cy5wb3BwZXIgPSBfZXh0ZW5kcyh7fSwgZGF0YS5vZmZzZXRzLnBvcHBlciwgZ2V0UG9wcGVyT2Zmc2V0cyhkYXRhLmluc3RhbmNlLnBvcHBlciwgZGF0YS5vZmZzZXRzLnJlZmVyZW5jZSwgZGF0YS5wbGFjZW1lbnQpKTtcblxuICAgICAgZGF0YSA9IHJ1bk1vZGlmaWVycyhkYXRhLmluc3RhbmNlLm1vZGlmaWVycywgZGF0YSwgJ2ZsaXAnKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gZGF0YTtcbn1cblxuLyoqXG4gKiBAZnVuY3Rpb25cbiAqIEBtZW1iZXJvZiBNb2RpZmllcnNcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IGdlbmVyYXRlZCBieSB1cGRhdGUgbWV0aG9kXG4gKiBAYXJndW1lbnQge09iamVjdH0gb3B0aW9ucyAtIE1vZGlmaWVycyBjb25maWd1cmF0aW9uIGFuZCBvcHRpb25zXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgZGF0YSBvYmplY3QsIHByb3Blcmx5IG1vZGlmaWVkXG4gKi9cbmZ1bmN0aW9uIGtlZXBUb2dldGhlcihkYXRhKSB7XG4gIHZhciBfZGF0YSRvZmZzZXRzID0gZGF0YS5vZmZzZXRzLFxuICAgICAgcG9wcGVyID0gX2RhdGEkb2Zmc2V0cy5wb3BwZXIsXG4gICAgICByZWZlcmVuY2UgPSBfZGF0YSRvZmZzZXRzLnJlZmVyZW5jZTtcblxuICB2YXIgcGxhY2VtZW50ID0gZGF0YS5wbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbiAgdmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbiAgdmFyIGlzVmVydGljYWwgPSBbJ3RvcCcsICdib3R0b20nXS5pbmRleE9mKHBsYWNlbWVudCkgIT09IC0xO1xuICB2YXIgc2lkZSA9IGlzVmVydGljYWwgPyAncmlnaHQnIDogJ2JvdHRvbSc7XG4gIHZhciBvcFNpZGUgPSBpc1ZlcnRpY2FsID8gJ2xlZnQnIDogJ3RvcCc7XG4gIHZhciBtZWFzdXJlbWVudCA9IGlzVmVydGljYWwgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG5cbiAgaWYgKHBvcHBlcltzaWRlXSA8IGZsb29yKHJlZmVyZW5jZVtvcFNpZGVdKSkge1xuICAgIGRhdGEub2Zmc2V0cy5wb3BwZXJbb3BTaWRlXSA9IGZsb29yKHJlZmVyZW5jZVtvcFNpZGVdKSAtIHBvcHBlclttZWFzdXJlbWVudF07XG4gIH1cbiAgaWYgKHBvcHBlcltvcFNpZGVdID4gZmxvb3IocmVmZXJlbmNlW3NpZGVdKSkge1xuICAgIGRhdGEub2Zmc2V0cy5wb3BwZXJbb3BTaWRlXSA9IGZsb29yKHJlZmVyZW5jZVtzaWRlXSk7XG4gIH1cblxuICByZXR1cm4gZGF0YTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHN0cmluZyBjb250YWluaW5nIHZhbHVlICsgdW5pdCBpbnRvIGEgcHggdmFsdWUgbnVtYmVyXG4gKiBAZnVuY3Rpb25cbiAqIEBtZW1iZXJvZiB7bW9kaWZpZXJzfm9mZnNldH1cbiAqIEBwcml2YXRlXG4gKiBAYXJndW1lbnQge1N0cmluZ30gc3RyIC0gVmFsdWUgKyB1bml0IHN0cmluZ1xuICogQGFyZ3VtZW50IHtTdHJpbmd9IG1lYXN1cmVtZW50IC0gYGhlaWdodGAgb3IgYHdpZHRoYFxuICogQGFyZ3VtZW50IHtPYmplY3R9IHBvcHBlck9mZnNldHNcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSByZWZlcmVuY2VPZmZzZXRzXG4gKiBAcmV0dXJucyB7TnVtYmVyfFN0cmluZ31cbiAqIFZhbHVlIGluIHBpeGVscywgb3Igb3JpZ2luYWwgc3RyaW5nIGlmIG5vIHZhbHVlcyB3ZXJlIGV4dHJhY3RlZFxuICovXG5mdW5jdGlvbiB0b1ZhbHVlKHN0ciwgbWVhc3VyZW1lbnQsIHBvcHBlck9mZnNldHMsIHJlZmVyZW5jZU9mZnNldHMpIHtcbiAgLy8gc2VwYXJhdGUgdmFsdWUgZnJvbSB1bml0XG4gIHZhciBzcGxpdCA9IHN0ci5tYXRjaCgvKCg/OlxcLXxcXCspP1xcZCpcXC4/XFxkKikoLiopLyk7XG4gIHZhciB2YWx1ZSA9ICtzcGxpdFsxXTtcbiAgdmFyIHVuaXQgPSBzcGxpdFsyXTtcblxuICAvLyBJZiBpdCdzIG5vdCBhIG51bWJlciBpdCdzIGFuIG9wZXJhdG9yLCBJIGd1ZXNzXG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgaWYgKHVuaXQuaW5kZXhPZignJScpID09PSAwKSB7XG4gICAgdmFyIGVsZW1lbnQgPSB2b2lkIDA7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICBjYXNlICclcCc6XG4gICAgICAgIGVsZW1lbnQgPSBwb3BwZXJPZmZzZXRzO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJyUnOlxuICAgICAgY2FzZSAnJXInOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZWxlbWVudCA9IHJlZmVyZW5jZU9mZnNldHM7XG4gICAgfVxuXG4gICAgdmFyIHJlY3QgPSBnZXRDbGllbnRSZWN0KGVsZW1lbnQpO1xuICAgIHJldHVybiByZWN0W21lYXN1cmVtZW50XSAvIDEwMCAqIHZhbHVlO1xuICB9IGVsc2UgaWYgKHVuaXQgPT09ICd2aCcgfHwgdW5pdCA9PT0gJ3Z3Jykge1xuICAgIC8vIGlmIGlzIGEgdmggb3IgdncsIHdlIGNhbGN1bGF0ZSB0aGUgc2l6ZSBiYXNlZCBvbiB0aGUgdmlld3BvcnRcbiAgICB2YXIgc2l6ZSA9IHZvaWQgMDtcbiAgICBpZiAodW5pdCA9PT0gJ3ZoJykge1xuICAgICAgc2l6ZSA9IE1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsIHdpbmRvdy5pbm5lckhlaWdodCB8fCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2l6ZSA9IE1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCwgd2luZG93LmlubmVyV2lkdGggfHwgMCk7XG4gICAgfVxuICAgIHJldHVybiBzaXplIC8gMTAwICogdmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgLy8gaWYgaXMgYW4gZXhwbGljaXQgcGl4ZWwgdW5pdCwgd2UgZ2V0IHJpZCBvZiB0aGUgdW5pdCBhbmQga2VlcCB0aGUgdmFsdWVcbiAgICAvLyBpZiBpcyBhbiBpbXBsaWNpdCB1bml0LCBpdCdzIHB4LCBhbmQgd2UgcmV0dXJuIGp1c3QgdGhlIHZhbHVlXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogUGFyc2UgYW4gYG9mZnNldGAgc3RyaW5nIHRvIGV4dHJhcG9sYXRlIGB4YCBhbmQgYHlgIG51bWVyaWMgb2Zmc2V0cy5cbiAqIEBmdW5jdGlvblxuICogQG1lbWJlcm9mIHttb2RpZmllcnN+b2Zmc2V0fVxuICogQHByaXZhdGVcbiAqIEBhcmd1bWVudCB7U3RyaW5nfSBvZmZzZXRcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBwb3BwZXJPZmZzZXRzXG4gKiBAYXJndW1lbnQge09iamVjdH0gcmVmZXJlbmNlT2Zmc2V0c1xuICogQGFyZ3VtZW50IHtTdHJpbmd9IGJhc2VQbGFjZW1lbnRcbiAqIEByZXR1cm5zIHtBcnJheX0gYSB0d28gY2VsbHMgYXJyYXkgd2l0aCB4IGFuZCB5IG9mZnNldHMgaW4gbnVtYmVyc1xuICovXG5mdW5jdGlvbiBwYXJzZU9mZnNldChvZmZzZXQsIHBvcHBlck9mZnNldHMsIHJlZmVyZW5jZU9mZnNldHMsIGJhc2VQbGFjZW1lbnQpIHtcbiAgdmFyIG9mZnNldHMgPSBbMCwgMF07XG5cbiAgLy8gVXNlIGhlaWdodCBpZiBwbGFjZW1lbnQgaXMgbGVmdCBvciByaWdodCBhbmQgaW5kZXggaXMgMCBvdGhlcndpc2UgdXNlIHdpZHRoXG4gIC8vIGluIHRoaXMgd2F5IHRoZSBmaXJzdCBvZmZzZXQgd2lsbCB1c2UgYW4gYXhpcyBhbmQgdGhlIHNlY29uZCBvbmVcbiAgLy8gd2lsbCB1c2UgdGhlIG90aGVyIG9uZVxuICB2YXIgdXNlSGVpZ2h0ID0gWydyaWdodCcsICdsZWZ0J10uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTE7XG5cbiAgLy8gU3BsaXQgdGhlIG9mZnNldCBzdHJpbmcgdG8gb2J0YWluIGEgbGlzdCBvZiB2YWx1ZXMgYW5kIG9wZXJhbmRzXG4gIC8vIFRoZSByZWdleCBhZGRyZXNzZXMgdmFsdWVzIHdpdGggdGhlIHBsdXMgb3IgbWludXMgc2lnbiBpbiBmcm9udCAoKzEwLCAtMjAsIGV0YylcbiAgdmFyIGZyYWdtZW50cyA9IG9mZnNldC5zcGxpdCgvKFxcK3xcXC0pLykubWFwKGZ1bmN0aW9uIChmcmFnKSB7XG4gICAgcmV0dXJuIGZyYWcudHJpbSgpO1xuICB9KTtcblxuICAvLyBEZXRlY3QgaWYgdGhlIG9mZnNldCBzdHJpbmcgY29udGFpbnMgYSBwYWlyIG9mIHZhbHVlcyBvciBhIHNpbmdsZSBvbmVcbiAgLy8gdGhleSBjb3VsZCBiZSBzZXBhcmF0ZWQgYnkgY29tbWEgb3Igc3BhY2VcbiAgdmFyIGRpdmlkZXIgPSBmcmFnbWVudHMuaW5kZXhPZihmaW5kKGZyYWdtZW50cywgZnVuY3Rpb24gKGZyYWcpIHtcbiAgICByZXR1cm4gZnJhZy5zZWFyY2goLyx8XFxzLykgIT09IC0xO1xuICB9KSk7XG5cbiAgaWYgKGZyYWdtZW50c1tkaXZpZGVyXSAmJiBmcmFnbWVudHNbZGl2aWRlcl0uaW5kZXhPZignLCcpID09PSAtMSkge1xuICAgIGNvbnNvbGUud2FybignT2Zmc2V0cyBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UocykgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIGNvbW1hICgsKSBpbnN0ZWFkLicpO1xuICB9XG5cbiAgLy8gSWYgZGl2aWRlciBpcyBmb3VuZCwgd2UgZGl2aWRlIHRoZSBsaXN0IG9mIHZhbHVlcyBhbmQgb3BlcmFuZHMgdG8gZGl2aWRlXG4gIC8vIHRoZW0gYnkgb2ZzZXQgWCBhbmQgWS5cbiAgdmFyIHNwbGl0UmVnZXggPSAvXFxzKixcXHMqfFxccysvO1xuICB2YXIgb3BzID0gZGl2aWRlciAhPT0gLTEgPyBbZnJhZ21lbnRzLnNsaWNlKDAsIGRpdmlkZXIpLmNvbmNhdChbZnJhZ21lbnRzW2RpdmlkZXJdLnNwbGl0KHNwbGl0UmVnZXgpWzBdXSksIFtmcmFnbWVudHNbZGl2aWRlcl0uc3BsaXQoc3BsaXRSZWdleClbMV1dLmNvbmNhdChmcmFnbWVudHMuc2xpY2UoZGl2aWRlciArIDEpKV0gOiBbZnJhZ21lbnRzXTtcblxuICAvLyBDb252ZXJ0IHRoZSB2YWx1ZXMgd2l0aCB1bml0cyB0byBhYnNvbHV0ZSBwaXhlbHMgdG8gYWxsb3cgb3VyIGNvbXB1dGF0aW9uc1xuICBvcHMgPSBvcHMubWFwKGZ1bmN0aW9uIChvcCwgaW5kZXgpIHtcbiAgICAvLyBNb3N0IG9mIHRoZSB1bml0cyByZWx5IG9uIHRoZSBvcmllbnRhdGlvbiBvZiB0aGUgcG9wcGVyXG4gICAgdmFyIG1lYXN1cmVtZW50ID0gKGluZGV4ID09PSAxID8gIXVzZUhlaWdodCA6IHVzZUhlaWdodCkgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgdmFyIG1lcmdlV2l0aFByZXZpb3VzID0gZmFsc2U7XG4gICAgcmV0dXJuIG9wXG4gICAgLy8gVGhpcyBhZ2dyZWdhdGVzIGFueSBgK2Agb3IgYC1gIHNpZ24gdGhhdCBhcmVuJ3QgY29uc2lkZXJlZCBvcGVyYXRvcnNcbiAgICAvLyBlLmcuOiAxMCArICs1ID0+IFsxMCwgKywgKzVdXG4gICAgLnJlZHVjZShmdW5jdGlvbiAoYSwgYikge1xuICAgICAgaWYgKGFbYS5sZW5ndGggLSAxXSA9PT0gJycgJiYgWycrJywgJy0nXS5pbmRleE9mKGIpICE9PSAtMSkge1xuICAgICAgICBhW2EubGVuZ3RoIC0gMV0gPSBiO1xuICAgICAgICBtZXJnZVdpdGhQcmV2aW91cyA9IHRydWU7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfSBlbHNlIGlmIChtZXJnZVdpdGhQcmV2aW91cykge1xuICAgICAgICBhW2EubGVuZ3RoIC0gMV0gKz0gYjtcbiAgICAgICAgbWVyZ2VXaXRoUHJldmlvdXMgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYS5jb25jYXQoYik7XG4gICAgICB9XG4gICAgfSwgW10pXG4gICAgLy8gSGVyZSB3ZSBjb252ZXJ0IHRoZSBzdHJpbmcgdmFsdWVzIGludG8gbnVtYmVyIHZhbHVlcyAoaW4gcHgpXG4gICAgLm1hcChmdW5jdGlvbiAoc3RyKSB7XG4gICAgICByZXR1cm4gdG9WYWx1ZShzdHIsIG1lYXN1cmVtZW50LCBwb3BwZXJPZmZzZXRzLCByZWZlcmVuY2VPZmZzZXRzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gTG9vcCB0cm91Z2ggdGhlIG9mZnNldHMgYXJyYXlzIGFuZCBleGVjdXRlIHRoZSBvcGVyYXRpb25zXG4gIG9wcy5mb3JFYWNoKGZ1bmN0aW9uIChvcCwgaW5kZXgpIHtcbiAgICBvcC5mb3JFYWNoKGZ1bmN0aW9uIChmcmFnLCBpbmRleDIpIHtcbiAgICAgIGlmIChpc051bWVyaWMoZnJhZykpIHtcbiAgICAgICAgb2Zmc2V0c1tpbmRleF0gKz0gZnJhZyAqIChvcFtpbmRleDIgLSAxXSA9PT0gJy0nID8gLTEgOiAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBvZmZzZXRzO1xufVxuXG4vKipcbiAqIEBmdW5jdGlvblxuICogQG1lbWJlcm9mIE1vZGlmaWVyc1xuICogQGFyZ3VtZW50IHtPYmplY3R9IGRhdGEgLSBUaGUgZGF0YSBvYmplY3QgZ2VuZXJhdGVkIGJ5IHVwZGF0ZSBtZXRob2RcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBvcHRpb25zIC0gTW9kaWZpZXJzIGNvbmZpZ3VyYXRpb24gYW5kIG9wdGlvbnNcbiAqIEBhcmd1bWVudCB7TnVtYmVyfFN0cmluZ30gb3B0aW9ucy5vZmZzZXQ9MFxuICogVGhlIG9mZnNldCB2YWx1ZSBhcyBkZXNjcmliZWQgaW4gdGhlIG1vZGlmaWVyIGRlc2NyaXB0aW9uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgZGF0YSBvYmplY3QsIHByb3Blcmx5IG1vZGlmaWVkXG4gKi9cbmZ1bmN0aW9uIG9mZnNldChkYXRhLCBfcmVmKSB7XG4gIHZhciBvZmZzZXQgPSBfcmVmLm9mZnNldDtcbiAgdmFyIHBsYWNlbWVudCA9IGRhdGEucGxhY2VtZW50LFxuICAgICAgX2RhdGEkb2Zmc2V0cyA9IGRhdGEub2Zmc2V0cyxcbiAgICAgIHBvcHBlciA9IF9kYXRhJG9mZnNldHMucG9wcGVyLFxuICAgICAgcmVmZXJlbmNlID0gX2RhdGEkb2Zmc2V0cy5yZWZlcmVuY2U7XG5cbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcblxuICB2YXIgb2Zmc2V0cyA9IHZvaWQgMDtcbiAgaWYgKGlzTnVtZXJpYygrb2Zmc2V0KSkge1xuICAgIG9mZnNldHMgPSBbK29mZnNldCwgMF07XG4gIH0gZWxzZSB7XG4gICAgb2Zmc2V0cyA9IHBhcnNlT2Zmc2V0KG9mZnNldCwgcG9wcGVyLCByZWZlcmVuY2UsIGJhc2VQbGFjZW1lbnQpO1xuICB9XG5cbiAgaWYgKGJhc2VQbGFjZW1lbnQgPT09ICdsZWZ0Jykge1xuICAgIHBvcHBlci50b3AgKz0gb2Zmc2V0c1swXTtcbiAgICBwb3BwZXIubGVmdCAtPSBvZmZzZXRzWzFdO1xuICB9IGVsc2UgaWYgKGJhc2VQbGFjZW1lbnQgPT09ICdyaWdodCcpIHtcbiAgICBwb3BwZXIudG9wICs9IG9mZnNldHNbMF07XG4gICAgcG9wcGVyLmxlZnQgKz0gb2Zmc2V0c1sxXTtcbiAgfSBlbHNlIGlmIChiYXNlUGxhY2VtZW50ID09PSAndG9wJykge1xuICAgIHBvcHBlci5sZWZ0ICs9IG9mZnNldHNbMF07XG4gICAgcG9wcGVyLnRvcCAtPSBvZmZzZXRzWzFdO1xuICB9IGVsc2UgaWYgKGJhc2VQbGFjZW1lbnQgPT09ICdib3R0b20nKSB7XG4gICAgcG9wcGVyLmxlZnQgKz0gb2Zmc2V0c1swXTtcbiAgICBwb3BwZXIudG9wICs9IG9mZnNldHNbMV07XG4gIH1cblxuICBkYXRhLnBvcHBlciA9IHBvcHBlcjtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8qKlxuICogQGZ1bmN0aW9uXG4gKiBAbWVtYmVyb2YgTW9kaWZpZXJzXG4gKiBAYXJndW1lbnQge09iamVjdH0gZGF0YSAtIFRoZSBkYXRhIG9iamVjdCBnZW5lcmF0ZWQgYnkgYHVwZGF0ZWAgbWV0aG9kXG4gKiBAYXJndW1lbnQge09iamVjdH0gb3B0aW9ucyAtIE1vZGlmaWVycyBjb25maWd1cmF0aW9uIGFuZCBvcHRpb25zXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgZGF0YSBvYmplY3QsIHByb3Blcmx5IG1vZGlmaWVkXG4gKi9cbmZ1bmN0aW9uIHByZXZlbnRPdmVyZmxvdyhkYXRhLCBvcHRpb25zKSB7XG4gIHZhciBib3VuZGFyaWVzRWxlbWVudCA9IG9wdGlvbnMuYm91bmRhcmllc0VsZW1lbnQgfHwgZ2V0T2Zmc2V0UGFyZW50KGRhdGEuaW5zdGFuY2UucG9wcGVyKTtcblxuICAvLyBJZiBvZmZzZXRQYXJlbnQgaXMgdGhlIHJlZmVyZW5jZSBlbGVtZW50LCB3ZSByZWFsbHkgd2FudCB0b1xuICAvLyBnbyBvbmUgc3RlcCB1cCBhbmQgdXNlIHRoZSBuZXh0IG9mZnNldFBhcmVudCBhcyByZWZlcmVuY2UgdG9cbiAgLy8gYXZvaWQgdG8gbWFrZSB0aGlzIG1vZGlmaWVyIGNvbXBsZXRlbHkgdXNlbGVzcyBhbmQgbG9vayBsaWtlIGJyb2tlblxuICBpZiAoZGF0YS5pbnN0YW5jZS5yZWZlcmVuY2UgPT09IGJvdW5kYXJpZXNFbGVtZW50KSB7XG4gICAgYm91bmRhcmllc0VsZW1lbnQgPSBnZXRPZmZzZXRQYXJlbnQoYm91bmRhcmllc0VsZW1lbnQpO1xuICB9XG5cbiAgLy8gTk9URTogRE9NIGFjY2VzcyBoZXJlXG4gIC8vIHJlc2V0cyB0aGUgcG9wcGVyJ3MgcG9zaXRpb24gc28gdGhhdCB0aGUgZG9jdW1lbnQgc2l6ZSBjYW4gYmUgY2FsY3VsYXRlZCBleGNsdWRpbmdcbiAgLy8gdGhlIHNpemUgb2YgdGhlIHBvcHBlciBlbGVtZW50IGl0c2VsZlxuICB2YXIgdHJhbnNmb3JtUHJvcCA9IGdldFN1cHBvcnRlZFByb3BlcnR5TmFtZSgndHJhbnNmb3JtJyk7XG4gIHZhciBwb3BwZXJTdHlsZXMgPSBkYXRhLmluc3RhbmNlLnBvcHBlci5zdHlsZTsgLy8gYXNzaWdubWVudCB0byBoZWxwIG1pbmlmaWNhdGlvblxuICB2YXIgdG9wID0gcG9wcGVyU3R5bGVzLnRvcCxcbiAgICAgIGxlZnQgPSBwb3BwZXJTdHlsZXMubGVmdCxcbiAgICAgIHRyYW5zZm9ybSA9IHBvcHBlclN0eWxlc1t0cmFuc2Zvcm1Qcm9wXTtcblxuICBwb3BwZXJTdHlsZXMudG9wID0gJyc7XG4gIHBvcHBlclN0eWxlcy5sZWZ0ID0gJyc7XG4gIHBvcHBlclN0eWxlc1t0cmFuc2Zvcm1Qcm9wXSA9ICcnO1xuXG4gIHZhciBib3VuZGFyaWVzID0gZ2V0Qm91bmRhcmllcyhkYXRhLmluc3RhbmNlLnBvcHBlciwgZGF0YS5pbnN0YW5jZS5yZWZlcmVuY2UsIG9wdGlvbnMucGFkZGluZywgYm91bmRhcmllc0VsZW1lbnQsIGRhdGEucG9zaXRpb25GaXhlZCk7XG5cbiAgLy8gTk9URTogRE9NIGFjY2VzcyBoZXJlXG4gIC8vIHJlc3RvcmVzIHRoZSBvcmlnaW5hbCBzdHlsZSBwcm9wZXJ0aWVzIGFmdGVyIHRoZSBvZmZzZXRzIGhhdmUgYmVlbiBjb21wdXRlZFxuICBwb3BwZXJTdHlsZXMudG9wID0gdG9wO1xuICBwb3BwZXJTdHlsZXMubGVmdCA9IGxlZnQ7XG4gIHBvcHBlclN0eWxlc1t0cmFuc2Zvcm1Qcm9wXSA9IHRyYW5zZm9ybTtcblxuICBvcHRpb25zLmJvdW5kYXJpZXMgPSBib3VuZGFyaWVzO1xuXG4gIHZhciBvcmRlciA9IG9wdGlvbnMucHJpb3JpdHk7XG4gIHZhciBwb3BwZXIgPSBkYXRhLm9mZnNldHMucG9wcGVyO1xuXG4gIHZhciBjaGVjayA9IHtcbiAgICBwcmltYXJ5OiBmdW5jdGlvbiBwcmltYXJ5KHBsYWNlbWVudCkge1xuICAgICAgdmFyIHZhbHVlID0gcG9wcGVyW3BsYWNlbWVudF07XG4gICAgICBpZiAocG9wcGVyW3BsYWNlbWVudF0gPCBib3VuZGFyaWVzW3BsYWNlbWVudF0gJiYgIW9wdGlvbnMuZXNjYXBlV2l0aFJlZmVyZW5jZSkge1xuICAgICAgICB2YWx1ZSA9IE1hdGgubWF4KHBvcHBlcltwbGFjZW1lbnRdLCBib3VuZGFyaWVzW3BsYWNlbWVudF0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRlZmluZVByb3BlcnR5KHt9LCBwbGFjZW1lbnQsIHZhbHVlKTtcbiAgICB9LFxuICAgIHNlY29uZGFyeTogZnVuY3Rpb24gc2Vjb25kYXJ5KHBsYWNlbWVudCkge1xuICAgICAgdmFyIG1haW5TaWRlID0gcGxhY2VtZW50ID09PSAncmlnaHQnID8gJ2xlZnQnIDogJ3RvcCc7XG4gICAgICB2YXIgdmFsdWUgPSBwb3BwZXJbbWFpblNpZGVdO1xuICAgICAgaWYgKHBvcHBlcltwbGFjZW1lbnRdID4gYm91bmRhcmllc1twbGFjZW1lbnRdICYmICFvcHRpb25zLmVzY2FwZVdpdGhSZWZlcmVuY2UpIHtcbiAgICAgICAgdmFsdWUgPSBNYXRoLm1pbihwb3BwZXJbbWFpblNpZGVdLCBib3VuZGFyaWVzW3BsYWNlbWVudF0gLSAocGxhY2VtZW50ID09PSAncmlnaHQnID8gcG9wcGVyLndpZHRoIDogcG9wcGVyLmhlaWdodCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRlZmluZVByb3BlcnR5KHt9LCBtYWluU2lkZSwgdmFsdWUpO1xuICAgIH1cbiAgfTtcblxuICBvcmRlci5mb3JFYWNoKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICB2YXIgc2lkZSA9IFsnbGVmdCcsICd0b3AnXS5pbmRleE9mKHBsYWNlbWVudCkgIT09IC0xID8gJ3ByaW1hcnknIDogJ3NlY29uZGFyeSc7XG4gICAgcG9wcGVyID0gX2V4dGVuZHMoe30sIHBvcHBlciwgY2hlY2tbc2lkZV0ocGxhY2VtZW50KSk7XG4gIH0pO1xuXG4gIGRhdGEub2Zmc2V0cy5wb3BwZXIgPSBwb3BwZXI7XG5cbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8qKlxuICogQGZ1bmN0aW9uXG4gKiBAbWVtYmVyb2YgTW9kaWZpZXJzXG4gKiBAYXJndW1lbnQge09iamVjdH0gZGF0YSAtIFRoZSBkYXRhIG9iamVjdCBnZW5lcmF0ZWQgYnkgYHVwZGF0ZWAgbWV0aG9kXG4gKiBAYXJndW1lbnQge09iamVjdH0gb3B0aW9ucyAtIE1vZGlmaWVycyBjb25maWd1cmF0aW9uIGFuZCBvcHRpb25zXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgZGF0YSBvYmplY3QsIHByb3Blcmx5IG1vZGlmaWVkXG4gKi9cbmZ1bmN0aW9uIHNoaWZ0KGRhdGEpIHtcbiAgdmFyIHBsYWNlbWVudCA9IGRhdGEucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xuICB2YXIgc2hpZnR2YXJpYXRpb24gPSBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcblxuICAvLyBpZiBzaGlmdCBzaGlmdHZhcmlhdGlvbiBpcyBzcGVjaWZpZWQsIHJ1biB0aGUgbW9kaWZpZXJcbiAgaWYgKHNoaWZ0dmFyaWF0aW9uKSB7XG4gICAgdmFyIF9kYXRhJG9mZnNldHMgPSBkYXRhLm9mZnNldHMsXG4gICAgICAgIHJlZmVyZW5jZSA9IF9kYXRhJG9mZnNldHMucmVmZXJlbmNlLFxuICAgICAgICBwb3BwZXIgPSBfZGF0YSRvZmZzZXRzLnBvcHBlcjtcblxuICAgIHZhciBpc1ZlcnRpY2FsID0gWydib3R0b20nLCAndG9wJ10uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTE7XG4gICAgdmFyIHNpZGUgPSBpc1ZlcnRpY2FsID8gJ2xlZnQnIDogJ3RvcCc7XG4gICAgdmFyIG1lYXN1cmVtZW50ID0gaXNWZXJ0aWNhbCA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcblxuICAgIHZhciBzaGlmdE9mZnNldHMgPSB7XG4gICAgICBzdGFydDogZGVmaW5lUHJvcGVydHkoe30sIHNpZGUsIHJlZmVyZW5jZVtzaWRlXSksXG4gICAgICBlbmQ6IGRlZmluZVByb3BlcnR5KHt9LCBzaWRlLCByZWZlcmVuY2Vbc2lkZV0gKyByZWZlcmVuY2VbbWVhc3VyZW1lbnRdIC0gcG9wcGVyW21lYXN1cmVtZW50XSlcbiAgICB9O1xuXG4gICAgZGF0YS5vZmZzZXRzLnBvcHBlciA9IF9leHRlbmRzKHt9LCBwb3BwZXIsIHNoaWZ0T2Zmc2V0c1tzaGlmdHZhcmlhdGlvbl0pO1xuICB9XG5cbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8qKlxuICogQGZ1bmN0aW9uXG4gKiBAbWVtYmVyb2YgTW9kaWZpZXJzXG4gKiBAYXJndW1lbnQge09iamVjdH0gZGF0YSAtIFRoZSBkYXRhIG9iamVjdCBnZW5lcmF0ZWQgYnkgdXBkYXRlIG1ldGhvZFxuICogQGFyZ3VtZW50IHtPYmplY3R9IG9wdGlvbnMgLSBNb2RpZmllcnMgY29uZmlndXJhdGlvbiBhbmQgb3B0aW9uc1xuICogQHJldHVybnMge09iamVjdH0gVGhlIGRhdGEgb2JqZWN0LCBwcm9wZXJseSBtb2RpZmllZFxuICovXG5mdW5jdGlvbiBoaWRlKGRhdGEpIHtcbiAgaWYgKCFpc01vZGlmaWVyUmVxdWlyZWQoZGF0YS5pbnN0YW5jZS5tb2RpZmllcnMsICdoaWRlJywgJ3ByZXZlbnRPdmVyZmxvdycpKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICB2YXIgcmVmUmVjdCA9IGRhdGEub2Zmc2V0cy5yZWZlcmVuY2U7XG4gIHZhciBib3VuZCA9IGZpbmQoZGF0YS5pbnN0YW5jZS5tb2RpZmllcnMsIGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgIHJldHVybiBtb2RpZmllci5uYW1lID09PSAncHJldmVudE92ZXJmbG93JztcbiAgfSkuYm91bmRhcmllcztcblxuICBpZiAocmVmUmVjdC5ib3R0b20gPCBib3VuZC50b3AgfHwgcmVmUmVjdC5sZWZ0ID4gYm91bmQucmlnaHQgfHwgcmVmUmVjdC50b3AgPiBib3VuZC5ib3R0b20gfHwgcmVmUmVjdC5yaWdodCA8IGJvdW5kLmxlZnQpIHtcbiAgICAvLyBBdm9pZCB1bm5lY2Vzc2FyeSBET00gYWNjZXNzIGlmIHZpc2liaWxpdHkgaGFzbid0IGNoYW5nZWRcbiAgICBpZiAoZGF0YS5oaWRlID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBkYXRhLmhpZGUgPSB0cnVlO1xuICAgIGRhdGEuYXR0cmlidXRlc1sneC1vdXQtb2YtYm91bmRhcmllcyddID0gJyc7XG4gIH0gZWxzZSB7XG4gICAgLy8gQXZvaWQgdW5uZWNlc3NhcnkgRE9NIGFjY2VzcyBpZiB2aXNpYmlsaXR5IGhhc24ndCBjaGFuZ2VkXG4gICAgaWYgKGRhdGEuaGlkZSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIGRhdGEuaGlkZSA9IGZhbHNlO1xuICAgIGRhdGEuYXR0cmlidXRlc1sneC1vdXQtb2YtYm91bmRhcmllcyddID0gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gZGF0YTtcbn1cblxuLyoqXG4gKiBAZnVuY3Rpb25cbiAqIEBtZW1iZXJvZiBNb2RpZmllcnNcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IGdlbmVyYXRlZCBieSBgdXBkYXRlYCBtZXRob2RcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBvcHRpb25zIC0gTW9kaWZpZXJzIGNvbmZpZ3VyYXRpb24gYW5kIG9wdGlvbnNcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBkYXRhIG9iamVjdCwgcHJvcGVybHkgbW9kaWZpZWRcbiAqL1xuZnVuY3Rpb24gaW5uZXIoZGF0YSkge1xuICB2YXIgcGxhY2VtZW50ID0gZGF0YS5wbGFjZW1lbnQ7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG4gIHZhciBfZGF0YSRvZmZzZXRzID0gZGF0YS5vZmZzZXRzLFxuICAgICAgcG9wcGVyID0gX2RhdGEkb2Zmc2V0cy5wb3BwZXIsXG4gICAgICByZWZlcmVuY2UgPSBfZGF0YSRvZmZzZXRzLnJlZmVyZW5jZTtcblxuICB2YXIgaXNIb3JpeiA9IFsnbGVmdCcsICdyaWdodCddLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgIT09IC0xO1xuXG4gIHZhciBzdWJ0cmFjdExlbmd0aCA9IFsndG9wJywgJ2xlZnQnXS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID09PSAtMTtcblxuICBwb3BwZXJbaXNIb3JpeiA/ICdsZWZ0JyA6ICd0b3AnXSA9IHJlZmVyZW5jZVtiYXNlUGxhY2VtZW50XSAtIChzdWJ0cmFjdExlbmd0aCA/IHBvcHBlcltpc0hvcml6ID8gJ3dpZHRoJyA6ICdoZWlnaHQnXSA6IDApO1xuXG4gIGRhdGEucGxhY2VtZW50ID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgZGF0YS5vZmZzZXRzLnBvcHBlciA9IGdldENsaWVudFJlY3QocG9wcGVyKTtcblxuICByZXR1cm4gZGF0YTtcbn1cblxuLyoqXG4gKiBNb2RpZmllciBmdW5jdGlvbiwgZWFjaCBtb2RpZmllciBjYW4gaGF2ZSBhIGZ1bmN0aW9uIG9mIHRoaXMgdHlwZSBhc3NpZ25lZFxuICogdG8gaXRzIGBmbmAgcHJvcGVydHkuPGJyIC8+XG4gKiBUaGVzZSBmdW5jdGlvbnMgd2lsbCBiZSBjYWxsZWQgb24gZWFjaCB1cGRhdGUsIHRoaXMgbWVhbnMgdGhhdCB5b3UgbXVzdFxuICogbWFrZSBzdXJlIHRoZXkgYXJlIHBlcmZvcm1hbnQgZW5vdWdoIHRvIGF2b2lkIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLlxuICpcbiAqIEBmdW5jdGlvbiBNb2RpZmllckZuXG4gKiBAYXJndW1lbnQge2RhdGFPYmplY3R9IGRhdGEgLSBUaGUgZGF0YSBvYmplY3QgZ2VuZXJhdGVkIGJ5IGB1cGRhdGVgIG1ldGhvZFxuICogQGFyZ3VtZW50IHtPYmplY3R9IG9wdGlvbnMgLSBNb2RpZmllcnMgY29uZmlndXJhdGlvbiBhbmQgb3B0aW9uc1xuICogQHJldHVybnMge2RhdGFPYmplY3R9IFRoZSBkYXRhIG9iamVjdCwgcHJvcGVybHkgbW9kaWZpZWRcbiAqL1xuXG4vKipcbiAqIE1vZGlmaWVycyBhcmUgcGx1Z2lucyB1c2VkIHRvIGFsdGVyIHRoZSBiZWhhdmlvciBvZiB5b3VyIHBvcHBlcnMuPGJyIC8+XG4gKiBQb3BwZXIuanMgdXNlcyBhIHNldCBvZiA5IG1vZGlmaWVycyB0byBwcm92aWRlIGFsbCB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0aWVzXG4gKiBuZWVkZWQgYnkgdGhlIGxpYnJhcnkuXG4gKlxuICogVXN1YWxseSB5b3UgZG9uJ3Qgd2FudCB0byBvdmVycmlkZSB0aGUgYG9yZGVyYCwgYGZuYCBhbmQgYG9uTG9hZGAgcHJvcHMuXG4gKiBBbGwgdGhlIG90aGVyIHByb3BlcnRpZXMgYXJlIGNvbmZpZ3VyYXRpb25zIHRoYXQgY291bGQgYmUgdHdlYWtlZC5cbiAqIEBuYW1lc3BhY2UgbW9kaWZpZXJzXG4gKi9cbnZhciBtb2RpZmllcnMgPSB7XG4gIC8qKlxuICAgKiBNb2RpZmllciB1c2VkIHRvIHNoaWZ0IHRoZSBwb3BwZXIgb24gdGhlIHN0YXJ0IG9yIGVuZCBvZiBpdHMgcmVmZXJlbmNlXG4gICAqIGVsZW1lbnQuPGJyIC8+XG4gICAqIEl0IHdpbGwgcmVhZCB0aGUgdmFyaWF0aW9uIG9mIHRoZSBgcGxhY2VtZW50YCBwcm9wZXJ0eS48YnIgLz5cbiAgICogSXQgY2FuIGJlIG9uZSBlaXRoZXIgYC1lbmRgIG9yIGAtc3RhcnRgLlxuICAgKiBAbWVtYmVyb2YgbW9kaWZpZXJzXG4gICAqIEBpbm5lclxuICAgKi9cbiAgc2hpZnQ6IHtcbiAgICAvKiogQHByb3Age251bWJlcn0gb3JkZXI9MTAwIC0gSW5kZXggdXNlZCB0byBkZWZpbmUgdGhlIG9yZGVyIG9mIGV4ZWN1dGlvbiAqL1xuICAgIG9yZGVyOiAxMDAsXG4gICAgLyoqIEBwcm9wIHtCb29sZWFufSBlbmFibGVkPXRydWUgLSBXaGV0aGVyIHRoZSBtb2RpZmllciBpcyBlbmFibGVkIG9yIG5vdCAqL1xuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgLyoqIEBwcm9wIHtNb2RpZmllckZufSAqL1xuICAgIGZuOiBzaGlmdFxuICB9LFxuXG4gIC8qKlxuICAgKiBUaGUgYG9mZnNldGAgbW9kaWZpZXIgY2FuIHNoaWZ0IHlvdXIgcG9wcGVyIG9uIGJvdGggaXRzIGF4aXMuXG4gICAqXG4gICAqIEl0IGFjY2VwdHMgdGhlIGZvbGxvd2luZyB1bml0czpcbiAgICogLSBgcHhgIG9yIHVuaXQtbGVzcywgaW50ZXJwcmV0ZWQgYXMgcGl4ZWxzXG4gICAqIC0gYCVgIG9yIGAlcmAsIHBlcmNlbnRhZ2UgcmVsYXRpdmUgdG8gdGhlIGxlbmd0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnRcbiAgICogLSBgJXBgLCBwZXJjZW50YWdlIHJlbGF0aXZlIHRvIHRoZSBsZW5ndGggb2YgdGhlIHBvcHBlciBlbGVtZW50XG4gICAqIC0gYHZ3YCwgQ1NTIHZpZXdwb3J0IHdpZHRoIHVuaXRcbiAgICogLSBgdmhgLCBDU1Mgdmlld3BvcnQgaGVpZ2h0IHVuaXRcbiAgICpcbiAgICogRm9yIGxlbmd0aCBpcyBpbnRlbmRlZCB0aGUgbWFpbiBheGlzIHJlbGF0aXZlIHRvIHRoZSBwbGFjZW1lbnQgb2YgdGhlIHBvcHBlci48YnIgLz5cbiAgICogVGhpcyBtZWFucyB0aGF0IGlmIHRoZSBwbGFjZW1lbnQgaXMgYHRvcGAgb3IgYGJvdHRvbWAsIHRoZSBsZW5ndGggd2lsbCBiZSB0aGVcbiAgICogYHdpZHRoYC4gSW4gY2FzZSBvZiBgbGVmdGAgb3IgYHJpZ2h0YCwgaXQgd2lsbCBiZSB0aGUgYGhlaWdodGAuXG4gICAqXG4gICAqIFlvdSBjYW4gcHJvdmlkZSBhIHNpbmdsZSB2YWx1ZSAoYXMgYE51bWJlcmAgb3IgYFN0cmluZ2ApLCBvciBhIHBhaXIgb2YgdmFsdWVzXG4gICAqIGFzIGBTdHJpbmdgIGRpdmlkZWQgYnkgYSBjb21tYSBvciBvbmUgKG9yIG1vcmUpIHdoaXRlIHNwYWNlcy48YnIgLz5cbiAgICogVGhlIGxhdHRlciBpcyBhIGRlcHJlY2F0ZWQgbWV0aG9kIGJlY2F1c2UgaXQgbGVhZHMgdG8gY29uZnVzaW9uIGFuZCB3aWxsIGJlXG4gICAqIHJlbW92ZWQgaW4gdjIuPGJyIC8+XG4gICAqIEFkZGl0aW9uYWxseSwgaXQgYWNjZXB0cyBhZGRpdGlvbnMgYW5kIHN1YnRyYWN0aW9ucyBiZXR3ZWVuIGRpZmZlcmVudCB1bml0cy5cbiAgICogTm90ZSB0aGF0IG11bHRpcGxpY2F0aW9ucyBhbmQgZGl2aXNpb25zIGFyZW4ndCBzdXBwb3J0ZWQuXG4gICAqXG4gICAqIFZhbGlkIGV4YW1wbGVzIGFyZTpcbiAgICogYGBgXG4gICAqIDEwXG4gICAqICcxMCUnXG4gICAqICcxMCwgMTAnXG4gICAqICcxMCUsIDEwJ1xuICAgKiAnMTAgKyAxMCUnXG4gICAqICcxMCAtIDV2aCArIDMlJ1xuICAgKiAnLTEwcHggKyA1dmgsIDVweCAtIDYlJ1xuICAgKiBgYGBcbiAgICogPiAqKk5CKio6IElmIHlvdSBkZXNpcmUgdG8gYXBwbHkgb2Zmc2V0cyB0byB5b3VyIHBvcHBlcnMgaW4gYSB3YXkgdGhhdCBtYXkgbWFrZSB0aGVtIG92ZXJsYXBcbiAgICogPiB3aXRoIHRoZWlyIHJlZmVyZW5jZSBlbGVtZW50LCB1bmZvcnR1bmF0ZWx5LCB5b3Ugd2lsbCBoYXZlIHRvIGRpc2FibGUgdGhlIGBmbGlwYCBtb2RpZmllci5cbiAgICogPiBZb3UgY2FuIHJlYWQgbW9yZSBvbiB0aGlzIGF0IHRoaXMgW2lzc3VlXShodHRwczovL2dpdGh1Yi5jb20vRmV6VnJhc3RhL3BvcHBlci5qcy9pc3N1ZXMvMzczKS5cbiAgICpcbiAgICogQG1lbWJlcm9mIG1vZGlmaWVyc1xuICAgKiBAaW5uZXJcbiAgICovXG4gIG9mZnNldDoge1xuICAgIC8qKiBAcHJvcCB7bnVtYmVyfSBvcmRlcj0yMDAgLSBJbmRleCB1c2VkIHRvIGRlZmluZSB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uICovXG4gICAgb3JkZXI6IDIwMCxcbiAgICAvKiogQHByb3Age0Jvb2xlYW59IGVuYWJsZWQ9dHJ1ZSAtIFdoZXRoZXIgdGhlIG1vZGlmaWVyIGlzIGVuYWJsZWQgb3Igbm90ICovXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAvKiogQHByb3Age01vZGlmaWVyRm59ICovXG4gICAgZm46IG9mZnNldCxcbiAgICAvKiogQHByb3Age051bWJlcnxTdHJpbmd9IG9mZnNldD0wXG4gICAgICogVGhlIG9mZnNldCB2YWx1ZSBhcyBkZXNjcmliZWQgaW4gdGhlIG1vZGlmaWVyIGRlc2NyaXB0aW9uXG4gICAgICovXG4gICAgb2Zmc2V0OiAwXG4gIH0sXG5cbiAgLyoqXG4gICAqIE1vZGlmaWVyIHVzZWQgdG8gcHJldmVudCB0aGUgcG9wcGVyIGZyb20gYmVpbmcgcG9zaXRpb25lZCBvdXRzaWRlIHRoZSBib3VuZGFyeS5cbiAgICpcbiAgICogQSBzY2VuYXJpbyBleGlzdHMgd2hlcmUgdGhlIHJlZmVyZW5jZSBpdHNlbGYgaXMgbm90IHdpdGhpbiB0aGUgYm91bmRhcmllcy48YnIgLz5cbiAgICogV2UgY2FuIHNheSBpdCBoYXMgXCJlc2NhcGVkIHRoZSBib3VuZGFyaWVzXCIg4oCUIG9yIGp1c3QgXCJlc2NhcGVkXCIuPGJyIC8+XG4gICAqIEluIHRoaXMgY2FzZSB3ZSBuZWVkIHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBwb3BwZXIgc2hvdWxkIGVpdGhlcjpcbiAgICpcbiAgICogLSBkZXRhY2ggZnJvbSB0aGUgcmVmZXJlbmNlIGFuZCByZW1haW4gXCJ0cmFwcGVkXCIgaW4gdGhlIGJvdW5kYXJpZXMsIG9yXG4gICAqIC0gaWYgaXQgc2hvdWxkIGlnbm9yZSB0aGUgYm91bmRhcnkgYW5kIFwiZXNjYXBlIHdpdGggaXRzIHJlZmVyZW5jZVwiXG4gICAqXG4gICAqIFdoZW4gYGVzY2FwZVdpdGhSZWZlcmVuY2VgIGlzIHNldCB0b2B0cnVlYCBhbmQgcmVmZXJlbmNlIGlzIGNvbXBsZXRlbHlcbiAgICogb3V0c2lkZSBpdHMgYm91bmRhcmllcywgdGhlIHBvcHBlciB3aWxsIG92ZXJmbG93IChvciBjb21wbGV0ZWx5IGxlYXZlKVxuICAgKiB0aGUgYm91bmRhcmllcyBpbiBvcmRlciB0byByZW1haW4gYXR0YWNoZWQgdG8gdGhlIGVkZ2Ugb2YgdGhlIHJlZmVyZW5jZS5cbiAgICpcbiAgICogQG1lbWJlcm9mIG1vZGlmaWVyc1xuICAgKiBAaW5uZXJcbiAgICovXG4gIHByZXZlbnRPdmVyZmxvdzoge1xuICAgIC8qKiBAcHJvcCB7bnVtYmVyfSBvcmRlcj0zMDAgLSBJbmRleCB1c2VkIHRvIGRlZmluZSB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uICovXG4gICAgb3JkZXI6IDMwMCxcbiAgICAvKiogQHByb3Age0Jvb2xlYW59IGVuYWJsZWQ9dHJ1ZSAtIFdoZXRoZXIgdGhlIG1vZGlmaWVyIGlzIGVuYWJsZWQgb3Igbm90ICovXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAvKiogQHByb3Age01vZGlmaWVyRm59ICovXG4gICAgZm46IHByZXZlbnRPdmVyZmxvdyxcbiAgICAvKipcbiAgICAgKiBAcHJvcCB7QXJyYXl9IFtwcmlvcml0eT1bJ2xlZnQnLCdyaWdodCcsJ3RvcCcsJ2JvdHRvbSddXVxuICAgICAqIFBvcHBlciB3aWxsIHRyeSB0byBwcmV2ZW50IG92ZXJmbG93IGZvbGxvd2luZyB0aGVzZSBwcmlvcml0aWVzIGJ5IGRlZmF1bHQsXG4gICAgICogdGhlbiwgaXQgY291bGQgb3ZlcmZsb3cgb24gdGhlIGxlZnQgYW5kIG9uIHRvcCBvZiB0aGUgYGJvdW5kYXJpZXNFbGVtZW50YFxuICAgICAqL1xuICAgIHByaW9yaXR5OiBbJ2xlZnQnLCAncmlnaHQnLCAndG9wJywgJ2JvdHRvbSddLFxuICAgIC8qKlxuICAgICAqIEBwcm9wIHtudW1iZXJ9IHBhZGRpbmc9NVxuICAgICAqIEFtb3VudCBvZiBwaXhlbCB1c2VkIHRvIGRlZmluZSBhIG1pbmltdW0gZGlzdGFuY2UgYmV0d2VlbiB0aGUgYm91bmRhcmllc1xuICAgICAqIGFuZCB0aGUgcG9wcGVyLiBUaGlzIG1ha2VzIHN1cmUgdGhlIHBvcHBlciBhbHdheXMgaGFzIGEgbGl0dGxlIHBhZGRpbmdcbiAgICAgKiBiZXR3ZWVuIHRoZSBlZGdlcyBvZiBpdHMgY29udGFpbmVyXG4gICAgICovXG4gICAgcGFkZGluZzogNSxcbiAgICAvKipcbiAgICAgKiBAcHJvcCB7U3RyaW5nfEhUTUxFbGVtZW50fSBib3VuZGFyaWVzRWxlbWVudD0nc2Nyb2xsUGFyZW50J1xuICAgICAqIEJvdW5kYXJpZXMgdXNlZCBieSB0aGUgbW9kaWZpZXIuIENhbiBiZSBgc2Nyb2xsUGFyZW50YCwgYHdpbmRvd2AsXG4gICAgICogYHZpZXdwb3J0YCBvciBhbnkgRE9NIGVsZW1lbnQuXG4gICAgICovXG4gICAgYm91bmRhcmllc0VsZW1lbnQ6ICdzY3JvbGxQYXJlbnQnXG4gIH0sXG5cbiAgLyoqXG4gICAqIE1vZGlmaWVyIHVzZWQgdG8gbWFrZSBzdXJlIHRoZSByZWZlcmVuY2UgYW5kIGl0cyBwb3BwZXIgc3RheSBuZWFyIGVhY2ggb3RoZXJcbiAgICogd2l0aG91dCBsZWF2aW5nIGFueSBnYXAgYmV0d2VlbiB0aGUgdHdvLiBFc3BlY2lhbGx5IHVzZWZ1bCB3aGVuIHRoZSBhcnJvdyBpc1xuICAgKiBlbmFibGVkIGFuZCB5b3Ugd2FudCB0byBlbnN1cmUgdGhhdCBpdCBwb2ludHMgdG8gaXRzIHJlZmVyZW5jZSBlbGVtZW50LlxuICAgKiBJdCBjYXJlcyBvbmx5IGFib3V0IHRoZSBmaXJzdCBheGlzLiBZb3UgY2FuIHN0aWxsIGhhdmUgcG9wcGVycyB3aXRoIG1hcmdpblxuICAgKiBiZXR3ZWVuIHRoZSBwb3BwZXIgYW5kIGl0cyByZWZlcmVuY2UgZWxlbWVudC5cbiAgICogQG1lbWJlcm9mIG1vZGlmaWVyc1xuICAgKiBAaW5uZXJcbiAgICovXG4gIGtlZXBUb2dldGhlcjoge1xuICAgIC8qKiBAcHJvcCB7bnVtYmVyfSBvcmRlcj00MDAgLSBJbmRleCB1c2VkIHRvIGRlZmluZSB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uICovXG4gICAgb3JkZXI6IDQwMCxcbiAgICAvKiogQHByb3Age0Jvb2xlYW59IGVuYWJsZWQ9dHJ1ZSAtIFdoZXRoZXIgdGhlIG1vZGlmaWVyIGlzIGVuYWJsZWQgb3Igbm90ICovXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAvKiogQHByb3Age01vZGlmaWVyRm59ICovXG4gICAgZm46IGtlZXBUb2dldGhlclxuICB9LFxuXG4gIC8qKlxuICAgKiBUaGlzIG1vZGlmaWVyIGlzIHVzZWQgdG8gbW92ZSB0aGUgYGFycm93RWxlbWVudGAgb2YgdGhlIHBvcHBlciB0byBtYWtlXG4gICAqIHN1cmUgaXQgaXMgcG9zaXRpb25lZCBiZXR3ZWVuIHRoZSByZWZlcmVuY2UgZWxlbWVudCBhbmQgaXRzIHBvcHBlciBlbGVtZW50LlxuICAgKiBJdCB3aWxsIHJlYWQgdGhlIG91dGVyIHNpemUgb2YgdGhlIGBhcnJvd0VsZW1lbnRgIG5vZGUgdG8gZGV0ZWN0IGhvdyBtYW55XG4gICAqIHBpeGVscyBvZiBjb25qdW5jdGlvbiBhcmUgbmVlZGVkLlxuICAgKlxuICAgKiBJdCBoYXMgbm8gZWZmZWN0IGlmIG5vIGBhcnJvd0VsZW1lbnRgIGlzIHByb3ZpZGVkLlxuICAgKiBAbWVtYmVyb2YgbW9kaWZpZXJzXG4gICAqIEBpbm5lclxuICAgKi9cbiAgYXJyb3c6IHtcbiAgICAvKiogQHByb3Age251bWJlcn0gb3JkZXI9NTAwIC0gSW5kZXggdXNlZCB0byBkZWZpbmUgdGhlIG9yZGVyIG9mIGV4ZWN1dGlvbiAqL1xuICAgIG9yZGVyOiA1MDAsXG4gICAgLyoqIEBwcm9wIHtCb29sZWFufSBlbmFibGVkPXRydWUgLSBXaGV0aGVyIHRoZSBtb2RpZmllciBpcyBlbmFibGVkIG9yIG5vdCAqL1xuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgLyoqIEBwcm9wIHtNb2RpZmllckZufSAqL1xuICAgIGZuOiBhcnJvdyxcbiAgICAvKiogQHByb3Age1N0cmluZ3xIVE1MRWxlbWVudH0gZWxlbWVudD0nW3gtYXJyb3ddJyAtIFNlbGVjdG9yIG9yIG5vZGUgdXNlZCBhcyBhcnJvdyAqL1xuICAgIGVsZW1lbnQ6ICdbeC1hcnJvd10nXG4gIH0sXG5cbiAgLyoqXG4gICAqIE1vZGlmaWVyIHVzZWQgdG8gZmxpcCB0aGUgcG9wcGVyJ3MgcGxhY2VtZW50IHdoZW4gaXQgc3RhcnRzIHRvIG92ZXJsYXAgaXRzXG4gICAqIHJlZmVyZW5jZSBlbGVtZW50LlxuICAgKlxuICAgKiBSZXF1aXJlcyB0aGUgYHByZXZlbnRPdmVyZmxvd2AgbW9kaWZpZXIgYmVmb3JlIGl0IGluIG9yZGVyIHRvIHdvcmsuXG4gICAqXG4gICAqICoqTk9URToqKiB0aGlzIG1vZGlmaWVyIHdpbGwgaW50ZXJydXB0IHRoZSBjdXJyZW50IHVwZGF0ZSBjeWNsZSBhbmQgd2lsbFxuICAgKiByZXN0YXJ0IGl0IGlmIGl0IGRldGVjdHMgdGhlIG5lZWQgdG8gZmxpcCB0aGUgcGxhY2VtZW50LlxuICAgKiBAbWVtYmVyb2YgbW9kaWZpZXJzXG4gICAqIEBpbm5lclxuICAgKi9cbiAgZmxpcDoge1xuICAgIC8qKiBAcHJvcCB7bnVtYmVyfSBvcmRlcj02MDAgLSBJbmRleCB1c2VkIHRvIGRlZmluZSB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uICovXG4gICAgb3JkZXI6IDYwMCxcbiAgICAvKiogQHByb3Age0Jvb2xlYW59IGVuYWJsZWQ9dHJ1ZSAtIFdoZXRoZXIgdGhlIG1vZGlmaWVyIGlzIGVuYWJsZWQgb3Igbm90ICovXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAvKiogQHByb3Age01vZGlmaWVyRm59ICovXG4gICAgZm46IGZsaXAsXG4gICAgLyoqXG4gICAgICogQHByb3Age1N0cmluZ3xBcnJheX0gYmVoYXZpb3I9J2ZsaXAnXG4gICAgICogVGhlIGJlaGF2aW9yIHVzZWQgdG8gY2hhbmdlIHRoZSBwb3BwZXIncyBwbGFjZW1lbnQuIEl0IGNhbiBiZSBvbmUgb2ZcbiAgICAgKiBgZmxpcGAsIGBjbG9ja3dpc2VgLCBgY291bnRlcmNsb2Nrd2lzZWAgb3IgYW4gYXJyYXkgd2l0aCBhIGxpc3Qgb2YgdmFsaWRcbiAgICAgKiBwbGFjZW1lbnRzICh3aXRoIG9wdGlvbmFsIHZhcmlhdGlvbnMpXG4gICAgICovXG4gICAgYmVoYXZpb3I6ICdmbGlwJyxcbiAgICAvKipcbiAgICAgKiBAcHJvcCB7bnVtYmVyfSBwYWRkaW5nPTVcbiAgICAgKiBUaGUgcG9wcGVyIHdpbGwgZmxpcCBpZiBpdCBoaXRzIHRoZSBlZGdlcyBvZiB0aGUgYGJvdW5kYXJpZXNFbGVtZW50YFxuICAgICAqL1xuICAgIHBhZGRpbmc6IDUsXG4gICAgLyoqXG4gICAgICogQHByb3Age1N0cmluZ3xIVE1MRWxlbWVudH0gYm91bmRhcmllc0VsZW1lbnQ9J3ZpZXdwb3J0J1xuICAgICAqIFRoZSBlbGVtZW50IHdoaWNoIHdpbGwgZGVmaW5lIHRoZSBib3VuZGFyaWVzIG9mIHRoZSBwb3BwZXIgcG9zaXRpb24uXG4gICAgICogVGhlIHBvcHBlciB3aWxsIG5ldmVyIGJlIHBsYWNlZCBvdXRzaWRlIG9mIHRoZSBkZWZpbmVkIGJvdW5kYXJpZXNcbiAgICAgKiAoZXhjZXB0IGlmIGBrZWVwVG9nZXRoZXJgIGlzIGVuYWJsZWQpXG4gICAgICovXG4gICAgYm91bmRhcmllc0VsZW1lbnQ6ICd2aWV3cG9ydCcsXG4gICAgLyoqXG4gICAgICogQHByb3Age0Jvb2xlYW59IGZsaXBWYXJpYXRpb25zPWZhbHNlXG4gICAgICogVGhlIHBvcHBlciB3aWxsIHN3aXRjaCBwbGFjZW1lbnQgdmFyaWF0aW9uIGJldHdlZW4gYC1zdGFydGAgYW5kIGAtZW5kYCB3aGVuXG4gICAgICogdGhlIHJlZmVyZW5jZSBlbGVtZW50IG92ZXJsYXBzIGl0cyBib3VuZGFyaWVzLlxuICAgICAqXG4gICAgICogVGhlIG9yaWdpbmFsIHBsYWNlbWVudCBzaG91bGQgaGF2ZSBhIHNldCB2YXJpYXRpb24uXG4gICAgICovXG4gICAgZmxpcFZhcmlhdGlvbnM6IGZhbHNlLFxuICAgIC8qKlxuICAgICAqIEBwcm9wIHtCb29sZWFufSBmbGlwVmFyaWF0aW9uc0J5Q29udGVudD1mYWxzZVxuICAgICAqIFRoZSBwb3BwZXIgd2lsbCBzd2l0Y2ggcGxhY2VtZW50IHZhcmlhdGlvbiBiZXR3ZWVuIGAtc3RhcnRgIGFuZCBgLWVuZGAgd2hlblxuICAgICAqIHRoZSBwb3BwZXIgZWxlbWVudCBvdmVybGFwcyBpdHMgcmVmZXJlbmNlIGJvdW5kYXJpZXMuXG4gICAgICpcbiAgICAgKiBUaGUgb3JpZ2luYWwgcGxhY2VtZW50IHNob3VsZCBoYXZlIGEgc2V0IHZhcmlhdGlvbi5cbiAgICAgKi9cbiAgICBmbGlwVmFyaWF0aW9uc0J5Q29udGVudDogZmFsc2VcbiAgfSxcblxuICAvKipcbiAgICogTW9kaWZpZXIgdXNlZCB0byBtYWtlIHRoZSBwb3BwZXIgZmxvdyB0b3dhcmQgdGhlIGlubmVyIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAgICogQnkgZGVmYXVsdCwgd2hlbiB0aGlzIG1vZGlmaWVyIGlzIGRpc2FibGVkLCB0aGUgcG9wcGVyIHdpbGwgYmUgcGxhY2VkIG91dHNpZGVcbiAgICogdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICAgKiBAbWVtYmVyb2YgbW9kaWZpZXJzXG4gICAqIEBpbm5lclxuICAgKi9cbiAgaW5uZXI6IHtcbiAgICAvKiogQHByb3Age251bWJlcn0gb3JkZXI9NzAwIC0gSW5kZXggdXNlZCB0byBkZWZpbmUgdGhlIG9yZGVyIG9mIGV4ZWN1dGlvbiAqL1xuICAgIG9yZGVyOiA3MDAsXG4gICAgLyoqIEBwcm9wIHtCb29sZWFufSBlbmFibGVkPWZhbHNlIC0gV2hldGhlciB0aGUgbW9kaWZpZXIgaXMgZW5hYmxlZCBvciBub3QgKi9cbiAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAvKiogQHByb3Age01vZGlmaWVyRm59ICovXG4gICAgZm46IGlubmVyXG4gIH0sXG5cbiAgLyoqXG4gICAqIE1vZGlmaWVyIHVzZWQgdG8gaGlkZSB0aGUgcG9wcGVyIHdoZW4gaXRzIHJlZmVyZW5jZSBlbGVtZW50IGlzIG91dHNpZGUgb2YgdGhlXG4gICAqIHBvcHBlciBib3VuZGFyaWVzLiBJdCB3aWxsIHNldCBhIGB4LW91dC1vZi1ib3VuZGFyaWVzYCBhdHRyaWJ1dGUgd2hpY2ggY2FuXG4gICAqIGJlIHVzZWQgdG8gaGlkZSB3aXRoIGEgQ1NTIHNlbGVjdG9yIHRoZSBwb3BwZXIgd2hlbiBpdHMgcmVmZXJlbmNlIGlzXG4gICAqIG91dCBvZiBib3VuZGFyaWVzLlxuICAgKlxuICAgKiBSZXF1aXJlcyB0aGUgYHByZXZlbnRPdmVyZmxvd2AgbW9kaWZpZXIgYmVmb3JlIGl0IGluIG9yZGVyIHRvIHdvcmsuXG4gICAqIEBtZW1iZXJvZiBtb2RpZmllcnNcbiAgICogQGlubmVyXG4gICAqL1xuICBoaWRlOiB7XG4gICAgLyoqIEBwcm9wIHtudW1iZXJ9IG9yZGVyPTgwMCAtIEluZGV4IHVzZWQgdG8gZGVmaW5lIHRoZSBvcmRlciBvZiBleGVjdXRpb24gKi9cbiAgICBvcmRlcjogODAwLFxuICAgIC8qKiBAcHJvcCB7Qm9vbGVhbn0gZW5hYmxlZD10cnVlIC0gV2hldGhlciB0aGUgbW9kaWZpZXIgaXMgZW5hYmxlZCBvciBub3QgKi9cbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIC8qKiBAcHJvcCB7TW9kaWZpZXJGbn0gKi9cbiAgICBmbjogaGlkZVxuICB9LFxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgc3R5bGUgdGhhdCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHBvcHBlciBlbGVtZW50IHRvIGdldHNcbiAgICogcHJvcGVybHkgcG9zaXRpb25lZC5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoaXMgbW9kaWZpZXIgd2lsbCBub3QgdG91Y2ggdGhlIERPTSwgaXQganVzdCBwcmVwYXJlcyB0aGUgc3R5bGVzXG4gICAqIHNvIHRoYXQgYGFwcGx5U3R5bGVgIG1vZGlmaWVyIGNhbiBhcHBseSBpdC4gVGhpcyBzZXBhcmF0aW9uIGlzIHVzZWZ1bFxuICAgKiBpbiBjYXNlIHlvdSBuZWVkIHRvIHJlcGxhY2UgYGFwcGx5U3R5bGVgIHdpdGggYSBjdXN0b20gaW1wbGVtZW50YXRpb24uXG4gICAqXG4gICAqIFRoaXMgbW9kaWZpZXIgaGFzIGA4NTBgIGFzIGBvcmRlcmAgdmFsdWUgdG8gbWFpbnRhaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgKiB3aXRoIHByZXZpb3VzIHZlcnNpb25zIG9mIFBvcHBlci5qcy4gRXhwZWN0IHRoZSBtb2RpZmllcnMgb3JkZXJpbmcgbWV0aG9kXG4gICAqIHRvIGNoYW5nZSBpbiBmdXR1cmUgbWFqb3IgdmVyc2lvbnMgb2YgdGhlIGxpYnJhcnkuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBtb2RpZmllcnNcbiAgICogQGlubmVyXG4gICAqL1xuICBjb21wdXRlU3R5bGU6IHtcbiAgICAvKiogQHByb3Age251bWJlcn0gb3JkZXI9ODUwIC0gSW5kZXggdXNlZCB0byBkZWZpbmUgdGhlIG9yZGVyIG9mIGV4ZWN1dGlvbiAqL1xuICAgIG9yZGVyOiA4NTAsXG4gICAgLyoqIEBwcm9wIHtCb29sZWFufSBlbmFibGVkPXRydWUgLSBXaGV0aGVyIHRoZSBtb2RpZmllciBpcyBlbmFibGVkIG9yIG5vdCAqL1xuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgLyoqIEBwcm9wIHtNb2RpZmllckZufSAqL1xuICAgIGZuOiBjb21wdXRlU3R5bGUsXG4gICAgLyoqXG4gICAgICogQHByb3Age0Jvb2xlYW59IGdwdUFjY2VsZXJhdGlvbj10cnVlXG4gICAgICogSWYgdHJ1ZSwgaXQgdXNlcyB0aGUgQ1NTIDNEIHRyYW5zZm9ybWF0aW9uIHRvIHBvc2l0aW9uIHRoZSBwb3BwZXIuXG4gICAgICogT3RoZXJ3aXNlLCBpdCB3aWxsIHVzZSB0aGUgYHRvcGAgYW5kIGBsZWZ0YCBwcm9wZXJ0aWVzXG4gICAgICovXG4gICAgZ3B1QWNjZWxlcmF0aW9uOiB0cnVlLFxuICAgIC8qKlxuICAgICAqIEBwcm9wIHtzdHJpbmd9IFt4PSdib3R0b20nXVxuICAgICAqIFdoZXJlIHRvIGFuY2hvciB0aGUgWCBheGlzIChgYm90dG9tYCBvciBgdG9wYCkuIEFLQSBYIG9mZnNldCBvcmlnaW4uXG4gICAgICogQ2hhbmdlIHRoaXMgaWYgeW91ciBwb3BwZXIgc2hvdWxkIGdyb3cgaW4gYSBkaXJlY3Rpb24gZGlmZmVyZW50IGZyb20gYGJvdHRvbWBcbiAgICAgKi9cbiAgICB4OiAnYm90dG9tJyxcbiAgICAvKipcbiAgICAgKiBAcHJvcCB7c3RyaW5nfSBbeD0nbGVmdCddXG4gICAgICogV2hlcmUgdG8gYW5jaG9yIHRoZSBZIGF4aXMgKGBsZWZ0YCBvciBgcmlnaHRgKS4gQUtBIFkgb2Zmc2V0IG9yaWdpbi5cbiAgICAgKiBDaGFuZ2UgdGhpcyBpZiB5b3VyIHBvcHBlciBzaG91bGQgZ3JvdyBpbiBhIGRpcmVjdGlvbiBkaWZmZXJlbnQgZnJvbSBgcmlnaHRgXG4gICAgICovXG4gICAgeTogJ3JpZ2h0J1xuICB9LFxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSBjb21wdXRlZCBzdHlsZXMgdG8gdGhlIHBvcHBlciBlbGVtZW50LlxuICAgKlxuICAgKiBBbGwgdGhlIERPTSBtYW5pcHVsYXRpb25zIGFyZSBsaW1pdGVkIHRvIHRoaXMgbW9kaWZpZXIuIFRoaXMgaXMgdXNlZnVsIGluIGNhc2VcbiAgICogeW91IHdhbnQgdG8gaW50ZWdyYXRlIFBvcHBlci5qcyBpbnNpZGUgYSBmcmFtZXdvcmsgb3IgdmlldyBsaWJyYXJ5IGFuZCB5b3VcbiAgICogd2FudCB0byBkZWxlZ2F0ZSBhbGwgdGhlIERPTSBtYW5pcHVsYXRpb25zIHRvIGl0LlxuICAgKlxuICAgKiBOb3RlIHRoYXQgaWYgeW91IGRpc2FibGUgdGhpcyBtb2RpZmllciwgeW91IG11c3QgbWFrZSBzdXJlIHRoZSBwb3BwZXIgZWxlbWVudFxuICAgKiBoYXMgaXRzIHBvc2l0aW9uIHNldCB0byBgYWJzb2x1dGVgIGJlZm9yZSBQb3BwZXIuanMgY2FuIGRvIGl0cyB3b3JrIVxuICAgKlxuICAgKiBKdXN0IGRpc2FibGUgdGhpcyBtb2RpZmllciBhbmQgZGVmaW5lIHlvdXIgb3duIHRvIGFjaGlldmUgdGhlIGRlc2lyZWQgZWZmZWN0LlxuICAgKlxuICAgKiBAbWVtYmVyb2YgbW9kaWZpZXJzXG4gICAqIEBpbm5lclxuICAgKi9cbiAgYXBwbHlTdHlsZToge1xuICAgIC8qKiBAcHJvcCB7bnVtYmVyfSBvcmRlcj05MDAgLSBJbmRleCB1c2VkIHRvIGRlZmluZSB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uICovXG4gICAgb3JkZXI6IDkwMCxcbiAgICAvKiogQHByb3Age0Jvb2xlYW59IGVuYWJsZWQ9dHJ1ZSAtIFdoZXRoZXIgdGhlIG1vZGlmaWVyIGlzIGVuYWJsZWQgb3Igbm90ICovXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAvKiogQHByb3Age01vZGlmaWVyRm59ICovXG4gICAgZm46IGFwcGx5U3R5bGUsXG4gICAgLyoqIEBwcm9wIHtGdW5jdGlvbn0gKi9cbiAgICBvbkxvYWQ6IGFwcGx5U3R5bGVPbkxvYWQsXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAxLjEwLjAsIHRoZSBwcm9wZXJ0eSBtb3ZlZCB0byBgY29tcHV0ZVN0eWxlYCBtb2RpZmllclxuICAgICAqIEBwcm9wIHtCb29sZWFufSBncHVBY2NlbGVyYXRpb249dHJ1ZVxuICAgICAqIElmIHRydWUsIGl0IHVzZXMgdGhlIENTUyAzRCB0cmFuc2Zvcm1hdGlvbiB0byBwb3NpdGlvbiB0aGUgcG9wcGVyLlxuICAgICAqIE90aGVyd2lzZSwgaXQgd2lsbCB1c2UgdGhlIGB0b3BgIGFuZCBgbGVmdGAgcHJvcGVydGllc1xuICAgICAqL1xuICAgIGdwdUFjY2VsZXJhdGlvbjogdW5kZWZpbmVkXG4gIH1cbn07XG5cbi8qKlxuICogVGhlIGBkYXRhT2JqZWN0YCBpcyBhbiBvYmplY3QgY29udGFpbmluZyBhbGwgdGhlIGluZm9ybWF0aW9uIHVzZWQgYnkgUG9wcGVyLmpzLlxuICogVGhpcyBvYmplY3QgaXMgcGFzc2VkIHRvIG1vZGlmaWVycyBhbmQgdG8gdGhlIGBvbkNyZWF0ZWAgYW5kIGBvblVwZGF0ZWAgY2FsbGJhY2tzLlxuICogQG5hbWUgZGF0YU9iamVjdFxuICogQHByb3BlcnR5IHtPYmplY3R9IGRhdGEuaW5zdGFuY2UgVGhlIFBvcHBlci5qcyBpbnN0YW5jZVxuICogQHByb3BlcnR5IHtTdHJpbmd9IGRhdGEucGxhY2VtZW50IFBsYWNlbWVudCBhcHBsaWVkIHRvIHBvcHBlclxuICogQHByb3BlcnR5IHtTdHJpbmd9IGRhdGEub3JpZ2luYWxQbGFjZW1lbnQgUGxhY2VtZW50IG9yaWdpbmFsbHkgZGVmaW5lZCBvbiBpbml0XG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGRhdGEuZmxpcHBlZCBUcnVlIGlmIHBvcHBlciBoYXMgYmVlbiBmbGlwcGVkIGJ5IGZsaXAgbW9kaWZpZXJcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZGF0YS5oaWRlIFRydWUgaWYgdGhlIHJlZmVyZW5jZSBlbGVtZW50IGlzIG91dCBvZiBib3VuZGFyaWVzLCB1c2VmdWwgdG8ga25vdyB3aGVuIHRvIGhpZGUgdGhlIHBvcHBlclxuICogQHByb3BlcnR5IHtIVE1MRWxlbWVudH0gZGF0YS5hcnJvd0VsZW1lbnQgTm9kZSB1c2VkIGFzIGFycm93IGJ5IGFycm93IG1vZGlmaWVyXG4gKiBAcHJvcGVydHkge09iamVjdH0gZGF0YS5zdHlsZXMgQW55IENTUyBwcm9wZXJ0eSBkZWZpbmVkIGhlcmUgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBwb3BwZXIuIEl0IGV4cGVjdHMgdGhlIEphdmFTY3JpcHQgbm9tZW5jbGF0dXJlIChlZy4gYG1hcmdpbkJvdHRvbWApXG4gKiBAcHJvcGVydHkge09iamVjdH0gZGF0YS5hcnJvd1N0eWxlcyBBbnkgQ1NTIHByb3BlcnR5IGRlZmluZWQgaGVyZSB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHBvcHBlciBhcnJvdy4gSXQgZXhwZWN0cyB0aGUgSmF2YVNjcmlwdCBub21lbmNsYXR1cmUgKGVnLiBgbWFyZ2luQm90dG9tYClcbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBkYXRhLmJvdW5kYXJpZXMgT2Zmc2V0cyBvZiB0aGUgcG9wcGVyIGJvdW5kYXJpZXNcbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBkYXRhLm9mZnNldHMgVGhlIG1lYXN1cmVtZW50cyBvZiBwb3BwZXIsIHJlZmVyZW5jZSBhbmQgYXJyb3cgZWxlbWVudHNcbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBkYXRhLm9mZnNldHMucG9wcGVyIGB0b3BgLCBgbGVmdGAsIGB3aWR0aGAsIGBoZWlnaHRgIHZhbHVlc1xuICogQHByb3BlcnR5IHtPYmplY3R9IGRhdGEub2Zmc2V0cy5yZWZlcmVuY2UgYHRvcGAsIGBsZWZ0YCwgYHdpZHRoYCwgYGhlaWdodGAgdmFsdWVzXG4gKiBAcHJvcGVydHkge09iamVjdH0gZGF0YS5vZmZzZXRzLmFycm93XSBgdG9wYCBhbmQgYGxlZnRgIG9mZnNldHMsIG9ubHkgb25lIG9mIHRoZW0gd2lsbCBiZSBkaWZmZXJlbnQgZnJvbSAwXG4gKi9cblxuLyoqXG4gKiBEZWZhdWx0IG9wdGlvbnMgcHJvdmlkZWQgdG8gUG9wcGVyLmpzIGNvbnN0cnVjdG9yLjxiciAvPlxuICogVGhlc2UgY2FuIGJlIG92ZXJyaWRkZW4gdXNpbmcgdGhlIGBvcHRpb25zYCBhcmd1bWVudCBvZiBQb3BwZXIuanMuPGJyIC8+XG4gKiBUbyBvdmVycmlkZSBhbiBvcHRpb24sIHNpbXBseSBwYXNzIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lXG4gKiBzdHJ1Y3R1cmUgb2YgdGhlIGBvcHRpb25zYCBvYmplY3QsIGFzIHRoZSAzcmQgYXJndW1lbnQuIEZvciBleGFtcGxlOlxuICogYGBgXG4gKiBuZXcgUG9wcGVyKHJlZiwgcG9wLCB7XG4gKiAgIG1vZGlmaWVyczoge1xuICogICAgIHByZXZlbnRPdmVyZmxvdzogeyBlbmFibGVkOiBmYWxzZSB9XG4gKiAgIH1cbiAqIH0pXG4gKiBgYGBcbiAqIEB0eXBlIHtPYmplY3R9XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyb2YgUG9wcGVyXG4gKi9cbnZhciBEZWZhdWx0cyA9IHtcbiAgLyoqXG4gICAqIFBvcHBlcidzIHBsYWNlbWVudC5cbiAgICogQHByb3Age1BvcHBlci5wbGFjZW1lbnRzfSBwbGFjZW1lbnQ9J2JvdHRvbSdcbiAgICovXG4gIHBsYWNlbWVudDogJ2JvdHRvbScsXG5cbiAgLyoqXG4gICAqIFNldCB0aGlzIHRvIHRydWUgaWYgeW91IHdhbnQgcG9wcGVyIHRvIHBvc2l0aW9uIGl0IHNlbGYgaW4gJ2ZpeGVkJyBtb2RlXG4gICAqIEBwcm9wIHtCb29sZWFufSBwb3NpdGlvbkZpeGVkPWZhbHNlXG4gICAqL1xuICBwb3NpdGlvbkZpeGVkOiBmYWxzZSxcblxuICAvKipcbiAgICogV2hldGhlciBldmVudHMgKHJlc2l6ZSwgc2Nyb2xsKSBhcmUgaW5pdGlhbGx5IGVuYWJsZWQuXG4gICAqIEBwcm9wIHtCb29sZWFufSBldmVudHNFbmFibGVkPXRydWVcbiAgICovXG4gIGV2ZW50c0VuYWJsZWQ6IHRydWUsXG5cbiAgLyoqXG4gICAqIFNldCB0byB0cnVlIGlmIHlvdSB3YW50IHRvIGF1dG9tYXRpY2FsbHkgcmVtb3ZlIHRoZSBwb3BwZXIgd2hlblxuICAgKiB5b3UgY2FsbCB0aGUgYGRlc3Ryb3lgIG1ldGhvZC5cbiAgICogQHByb3Age0Jvb2xlYW59IHJlbW92ZU9uRGVzdHJveT1mYWxzZVxuICAgKi9cbiAgcmVtb3ZlT25EZXN0cm95OiBmYWxzZSxcblxuICAvKipcbiAgICogQ2FsbGJhY2sgY2FsbGVkIHdoZW4gdGhlIHBvcHBlciBpcyBjcmVhdGVkLjxiciAvPlxuICAgKiBCeSBkZWZhdWx0LCBpdCBpcyBzZXQgdG8gbm8tb3AuPGJyIC8+XG4gICAqIEFjY2VzcyBQb3BwZXIuanMgaW5zdGFuY2Ugd2l0aCBgZGF0YS5pbnN0YW5jZWAuXG4gICAqIEBwcm9wIHtvbkNyZWF0ZX1cbiAgICovXG4gIG9uQ3JlYXRlOiBmdW5jdGlvbiBvbkNyZWF0ZSgpIHt9LFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBjYWxsZWQgd2hlbiB0aGUgcG9wcGVyIGlzIHVwZGF0ZWQuIFRoaXMgY2FsbGJhY2sgaXMgbm90IGNhbGxlZFxuICAgKiBvbiB0aGUgaW5pdGlhbGl6YXRpb24vY3JlYXRpb24gb2YgdGhlIHBvcHBlciwgYnV0IG9ubHkgb24gc3Vic2VxdWVudFxuICAgKiB1cGRhdGVzLjxiciAvPlxuICAgKiBCeSBkZWZhdWx0LCBpdCBpcyBzZXQgdG8gbm8tb3AuPGJyIC8+XG4gICAqIEFjY2VzcyBQb3BwZXIuanMgaW5zdGFuY2Ugd2l0aCBgZGF0YS5pbnN0YW5jZWAuXG4gICAqIEBwcm9wIHtvblVwZGF0ZX1cbiAgICovXG4gIG9uVXBkYXRlOiBmdW5jdGlvbiBvblVwZGF0ZSgpIHt9LFxuXG4gIC8qKlxuICAgKiBMaXN0IG9mIG1vZGlmaWVycyB1c2VkIHRvIG1vZGlmeSB0aGUgb2Zmc2V0cyBiZWZvcmUgdGhleSBhcmUgYXBwbGllZCB0byB0aGUgcG9wcGVyLlxuICAgKiBUaGV5IHByb3ZpZGUgbW9zdCBvZiB0aGUgZnVuY3Rpb25hbGl0aWVzIG9mIFBvcHBlci5qcy5cbiAgICogQHByb3Age21vZGlmaWVyc31cbiAgICovXG4gIG1vZGlmaWVyczogbW9kaWZpZXJzXG59O1xuXG4vKipcbiAqIEBjYWxsYmFjayBvbkNyZWF0ZVxuICogQHBhcmFtIHtkYXRhT2JqZWN0fSBkYXRhXG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgb25VcGRhdGVcbiAqIEBwYXJhbSB7ZGF0YU9iamVjdH0gZGF0YVxuICovXG5cbi8vIFV0aWxzXG4vLyBNZXRob2RzXG52YXIgUG9wcGVyID0gZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBQb3BwZXIuanMgaW5zdGFuY2UuXG4gICAqIEBjbGFzcyBQb3BwZXJcbiAgICogQHBhcmFtIHtFbGVtZW50fHJlZmVyZW5jZU9iamVjdH0gcmVmZXJlbmNlIC0gVGhlIHJlZmVyZW5jZSBlbGVtZW50IHVzZWQgdG8gcG9zaXRpb24gdGhlIHBvcHBlclxuICAgKiBAcGFyYW0ge0VsZW1lbnR9IHBvcHBlciAtIFRoZSBIVE1MIC8gWE1MIGVsZW1lbnQgdXNlZCBhcyB0aGUgcG9wcGVyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gWW91ciBjdXN0b20gb3B0aW9ucyB0byBvdmVycmlkZSB0aGUgb25lcyBkZWZpbmVkIGluIFtEZWZhdWx0c10oI2RlZmF1bHRzKVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IGluc3RhbmNlIC0gVGhlIGdlbmVyYXRlZCBQb3BwZXIuanMgaW5zdGFuY2VcbiAgICovXG4gIGZ1bmN0aW9uIFBvcHBlcihyZWZlcmVuY2UsIHBvcHBlcikge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDoge307XG4gICAgY2xhc3NDYWxsQ2hlY2sodGhpcywgUG9wcGVyKTtcblxuICAgIHRoaXMuc2NoZWR1bGVVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKF90aGlzLnVwZGF0ZSk7XG4gICAgfTtcblxuICAgIC8vIG1ha2UgdXBkYXRlKCkgZGVib3VuY2VkLCBzbyB0aGF0IGl0IG9ubHkgcnVucyBhdCBtb3N0IG9uY2UtcGVyLXRpY2tcbiAgICB0aGlzLnVwZGF0ZSA9IGRlYm91bmNlKHRoaXMudXBkYXRlLmJpbmQodGhpcykpO1xuXG4gICAgLy8gd2l0aCB7fSB3ZSBjcmVhdGUgYSBuZXcgb2JqZWN0IHdpdGggdGhlIG9wdGlvbnMgaW5zaWRlIGl0XG4gICAgdGhpcy5vcHRpb25zID0gX2V4dGVuZHMoe30sIFBvcHBlci5EZWZhdWx0cywgb3B0aW9ucyk7XG5cbiAgICAvLyBpbml0IHN0YXRlXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGlzRGVzdHJveWVkOiBmYWxzZSxcbiAgICAgIGlzQ3JlYXRlZDogZmFsc2UsXG4gICAgICBzY3JvbGxQYXJlbnRzOiBbXVxuICAgIH07XG5cbiAgICAvLyBnZXQgcmVmZXJlbmNlIGFuZCBwb3BwZXIgZWxlbWVudHMgKGFsbG93IGpRdWVyeSB3cmFwcGVycylcbiAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZSAmJiByZWZlcmVuY2UuanF1ZXJ5ID8gcmVmZXJlbmNlWzBdIDogcmVmZXJlbmNlO1xuICAgIHRoaXMucG9wcGVyID0gcG9wcGVyICYmIHBvcHBlci5qcXVlcnkgPyBwb3BwZXJbMF0gOiBwb3BwZXI7XG5cbiAgICAvLyBEZWVwIG1lcmdlIG1vZGlmaWVycyBvcHRpb25zXG4gICAgdGhpcy5vcHRpb25zLm1vZGlmaWVycyA9IHt9O1xuICAgIE9iamVjdC5rZXlzKF9leHRlbmRzKHt9LCBQb3BwZXIuRGVmYXVsdHMubW9kaWZpZXJzLCBvcHRpb25zLm1vZGlmaWVycykpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIF90aGlzLm9wdGlvbnMubW9kaWZpZXJzW25hbWVdID0gX2V4dGVuZHMoe30sIFBvcHBlci5EZWZhdWx0cy5tb2RpZmllcnNbbmFtZV0gfHwge30sIG9wdGlvbnMubW9kaWZpZXJzID8gb3B0aW9ucy5tb2RpZmllcnNbbmFtZV0gOiB7fSk7XG4gICAgfSk7XG5cbiAgICAvLyBSZWZhY3RvcmluZyBtb2RpZmllcnMnIGxpc3QgKE9iamVjdCA9PiBBcnJheSlcbiAgICB0aGlzLm1vZGlmaWVycyA9IE9iamVjdC5rZXlzKHRoaXMub3B0aW9ucy5tb2RpZmllcnMpLm1hcChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgcmV0dXJuIF9leHRlbmRzKHtcbiAgICAgICAgbmFtZTogbmFtZVxuICAgICAgfSwgX3RoaXMub3B0aW9ucy5tb2RpZmllcnNbbmFtZV0pO1xuICAgIH0pXG4gICAgLy8gc29ydCB0aGUgbW9kaWZpZXJzIGJ5IG9yZGVyXG4gICAgLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhLm9yZGVyIC0gYi5vcmRlcjtcbiAgICB9KTtcblxuICAgIC8vIG1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIGV4ZWN1dGUgYXJiaXRyYXJ5IGNvZGUgd2hlbiBQb3BwZXIuanMgZ2V0IGluaXRlZFxuICAgIC8vIHN1Y2ggY29kZSBpcyBleGVjdXRlZCBpbiB0aGUgc2FtZSBvcmRlciBvZiBpdHMgbW9kaWZpZXJcbiAgICAvLyB0aGV5IGNvdWxkIGFkZCBuZXcgcHJvcGVydGllcyB0byB0aGVpciBvcHRpb25zIGNvbmZpZ3VyYXRpb25cbiAgICAvLyBCRSBBV0FSRTogZG9uJ3QgYWRkIG9wdGlvbnMgdG8gYG9wdGlvbnMubW9kaWZpZXJzLm5hbWVgIGJ1dCB0byBgbW9kaWZpZXJPcHRpb25zYCFcbiAgICB0aGlzLm1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllck9wdGlvbnMpIHtcbiAgICAgIGlmIChtb2RpZmllck9wdGlvbnMuZW5hYmxlZCAmJiBpc0Z1bmN0aW9uKG1vZGlmaWVyT3B0aW9ucy5vbkxvYWQpKSB7XG4gICAgICAgIG1vZGlmaWVyT3B0aW9ucy5vbkxvYWQoX3RoaXMucmVmZXJlbmNlLCBfdGhpcy5wb3BwZXIsIF90aGlzLm9wdGlvbnMsIG1vZGlmaWVyT3B0aW9ucywgX3RoaXMuc3RhdGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gZmlyZSB0aGUgZmlyc3QgdXBkYXRlIHRvIHBvc2l0aW9uIHRoZSBwb3BwZXIgaW4gdGhlIHJpZ2h0IHBsYWNlXG4gICAgdGhpcy51cGRhdGUoKTtcblxuICAgIHZhciBldmVudHNFbmFibGVkID0gdGhpcy5vcHRpb25zLmV2ZW50c0VuYWJsZWQ7XG4gICAgaWYgKGV2ZW50c0VuYWJsZWQpIHtcbiAgICAgIC8vIHNldHVwIGV2ZW50IGxpc3RlbmVycywgdGhleSB3aWxsIHRha2UgY2FyZSBvZiB1cGRhdGUgdGhlIHBvc2l0aW9uIGluIHNwZWNpZmljIHNpdHVhdGlvbnNcbiAgICAgIHRoaXMuZW5hYmxlRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlLmV2ZW50c0VuYWJsZWQgPSBldmVudHNFbmFibGVkO1xuICB9XG5cbiAgLy8gV2UgY2FuJ3QgdXNlIGNsYXNzIHByb3BlcnRpZXMgYmVjYXVzZSB0aGV5IGRvbid0IGdldCBsaXN0ZWQgaW4gdGhlXG4gIC8vIGNsYXNzIHByb3RvdHlwZSBhbmQgYnJlYWsgc3R1ZmYgbGlrZSBTaW5vbiBzdHVic1xuXG5cbiAgY3JlYXRlQ2xhc3MoUG9wcGVyLCBbe1xuICAgIGtleTogJ3VwZGF0ZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZSQkMSgpIHtcbiAgICAgIHJldHVybiB1cGRhdGUuY2FsbCh0aGlzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdkZXN0cm95JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSQkMSgpIHtcbiAgICAgIHJldHVybiBkZXN0cm95LmNhbGwodGhpcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZW5hYmxlRXZlbnRMaXN0ZW5lcnMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBlbmFibGVFdmVudExpc3RlbmVycyQkMSgpIHtcbiAgICAgIHJldHVybiBlbmFibGVFdmVudExpc3RlbmVycy5jYWxsKHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2Rpc2FibGVFdmVudExpc3RlbmVycycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRpc2FibGVFdmVudExpc3RlbmVycyQkMSgpIHtcbiAgICAgIHJldHVybiBkaXNhYmxlRXZlbnRMaXN0ZW5lcnMuY2FsbCh0aGlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTY2hlZHVsZXMgYW4gdXBkYXRlLiBJdCB3aWxsIHJ1biBvbiB0aGUgbmV4dCBVSSB1cGRhdGUgYXZhaWxhYmxlLlxuICAgICAqIEBtZXRob2Qgc2NoZWR1bGVVcGRhdGVcbiAgICAgKiBAbWVtYmVyb2YgUG9wcGVyXG4gICAgICovXG5cblxuICAgIC8qKlxuICAgICAqIENvbGxlY3Rpb24gb2YgdXRpbGl0aWVzIHVzZWZ1bCB3aGVuIHdyaXRpbmcgY3VzdG9tIG1vZGlmaWVycy5cbiAgICAgKiBTdGFydGluZyBmcm9tIHZlcnNpb24gMS43LCB0aGlzIG1ldGhvZCBpcyBhdmFpbGFibGUgb25seSBpZiB5b3VcbiAgICAgKiBpbmNsdWRlIGBwb3BwZXItdXRpbHMuanNgIGJlZm9yZSBgcG9wcGVyLmpzYC5cbiAgICAgKlxuICAgICAqICoqREVQUkVDQVRJT04qKjogVGhpcyB3YXkgdG8gYWNjZXNzIFBvcHBlclV0aWxzIGlzIGRlcHJlY2F0ZWRcbiAgICAgKiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHYyISBVc2UgdGhlIFBvcHBlclV0aWxzIG1vZHVsZSBkaXJlY3RseSBpbnN0ZWFkLlxuICAgICAqIER1ZSB0byB0aGUgaGlnaCBpbnN0YWJpbGl0eSBvZiB0aGUgbWV0aG9kcyBjb250YWluZWQgaW4gVXRpbHMsIHdlIGNhbid0XG4gICAgICogZ3VhcmFudGVlIHRoZW0gdG8gZm9sbG93IHNlbXZlci4gVXNlIHRoZW0gYXQgeW91ciBvd24gcmlzayFcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMS44XG4gICAgICogQG1lbWJlciBVdGlsc1xuICAgICAqIEBtZW1iZXJvZiBQb3BwZXJcbiAgICAgKi9cblxuICB9XSk7XG4gIHJldHVybiBQb3BwZXI7XG59KCk7XG5cbi8qKlxuICogVGhlIGByZWZlcmVuY2VPYmplY3RgIGlzIGFuIG9iamVjdCB0aGF0IHByb3ZpZGVzIGFuIGludGVyZmFjZSBjb21wYXRpYmxlIHdpdGggUG9wcGVyLmpzXG4gKiBhbmQgbGV0cyB5b3UgdXNlIGl0IGFzIHJlcGxhY2VtZW50IG9mIGEgcmVhbCBET00gbm9kZS48YnIgLz5cbiAqIFlvdSBjYW4gdXNlIHRoaXMgbWV0aG9kIHRvIHBvc2l0aW9uIGEgcG9wcGVyIHJlbGF0aXZlbHkgdG8gYSBzZXQgb2YgY29vcmRpbmF0ZXNcbiAqIGluIGNhc2UgeW91IGRvbid0IGhhdmUgYSBET00gbm9kZSB0byB1c2UgYXMgcmVmZXJlbmNlLlxuICpcbiAqIGBgYFxuICogbmV3IFBvcHBlcihyZWZlcmVuY2VPYmplY3QsIHBvcHBlck5vZGUpO1xuICogYGBgXG4gKlxuICogTkI6IFRoaXMgZmVhdHVyZSBpc24ndCBzdXBwb3J0ZWQgaW4gSW50ZXJuZXQgRXhwbG9yZXIgMTAuXG4gKiBAbmFtZSByZWZlcmVuY2VPYmplY3RcbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IGRhdGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG4gKiBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHNldCBvZiBjb29yZGluYXRlcyBjb21wYXRpYmxlIHdpdGggdGhlIG5hdGl2ZSBgZ2V0Qm91bmRpbmdDbGllbnRSZWN0YCBtZXRob2QuXG4gKiBAcHJvcGVydHkge251bWJlcn0gZGF0YS5jbGllbnRXaWR0aFxuICogQW4gRVM2IGdldHRlciB0aGF0IHdpbGwgcmV0dXJuIHRoZSB3aWR0aCBvZiB0aGUgdmlydHVhbCByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBkYXRhLmNsaWVudEhlaWdodFxuICogQW4gRVM2IGdldHRlciB0aGF0IHdpbGwgcmV0dXJuIHRoZSBoZWlnaHQgb2YgdGhlIHZpcnR1YWwgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKi9cblxuXG5Qb3BwZXIuVXRpbHMgPSAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiBnbG9iYWwpLlBvcHBlclV0aWxzO1xuUG9wcGVyLnBsYWNlbWVudHMgPSBwbGFjZW1lbnRzO1xuUG9wcGVyLkRlZmF1bHRzID0gRGVmYXVsdHM7XG5cbmV4cG9ydCBkZWZhdWx0IFBvcHBlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvcHBlci5qcy5tYXBcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3BvcHBlci5qcy9kaXN0L2VzbS9wb3BwZXIuanNcbi8vIG1vZHVsZSBpZCA9IDEyNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///125\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BCollapse; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_listen_on_root__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_env__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_dom__ = __webpack_require__(6);\n\n\n\n\n\n // Events we emit on $root\n\nvar EVENT_STATE = 'bv::collapse::state';\nvar EVENT_ACCORDION = 'bv::collapse::accordion'; // Private event we emit on `$root` to ensure the toggle state is\n// always synced. It gets emitted even if the state has not changed!\n// This event is NOT to be documented as people should not be using it\n\nvar EVENT_STATE_SYNC = 'bv::collapse::sync::state'; // Events we listen to on `$root`\n\nvar EVENT_TOGGLE = 'bv::toggle::collapse';\nvar EVENT_STATE_REQUEST = 'bv::request::collapse::state'; // Event listener options\n\nvar EventOptions = {\n passive: true,\n capture: false\n}; // @vue/component\n\nvar BCollapse =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BCollapse',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_listen_on_root__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__mixins_normalize_slot__[\"a\" /* default */]],\n model: {\n prop: 'visible',\n event: 'input'\n },\n props: {\n isNav: {\n type: Boolean,\n default: false\n },\n accordion: {\n type: String,\n default: null\n },\n visible: {\n type: Boolean,\n default: false\n },\n tag: {\n type: String,\n default: 'div'\n }\n },\n data: function data() {\n return {\n show: this.visible,\n transitioning: false\n };\n },\n computed: {\n classObject: function classObject() {\n return {\n 'navbar-collapse': this.isNav,\n collapse: !this.transitioning,\n show: this.show && !this.transitioning\n };\n }\n },\n watch: {\n visible: function visible(newVal) {\n if (newVal !== this.show) {\n this.show = newVal;\n }\n },\n show: function show(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.emitState();\n }\n }\n },\n created: function created() {\n this.show = this.visible;\n },\n mounted: function mounted() {\n var _this = this;\n\n this.show = this.visible; // Listen for toggle events to open/close us\n\n this.listenOnRoot(EVENT_TOGGLE, this.handleToggleEvt); // Listen to other collapses for accordion events\n\n this.listenOnRoot(EVENT_ACCORDION, this.handleAccordionEvt);\n\n if (this.isNav) {\n // Set up handlers\n this.setWindowEvents(true);\n this.handleResize();\n }\n\n this.$nextTick(function () {\n _this.emitState();\n }); // Listen for \"Sync state\" requests from `v-b-toggle`\n\n this.listenOnRoot(EVENT_STATE_REQUEST, function (id) {\n if (id === _this.safeId()) {\n _this.$nextTick(_this.emitSync);\n }\n });\n },\n updated: function updated() {\n // Emit a private event every time this component updates to ensure\n // the toggle button is in sync with the collapse's state\n // It is emitted regardless if the visible state changes\n this.emitSync();\n },\n deactivated: function deactivated()\n /* istanbul ignore next */\n {\n if (this.isNav) {\n this.setWindowEvents(false);\n }\n },\n activated: function activated()\n /* istanbul ignore next */\n {\n if (this.isNav) {\n this.setWindowEvents(true);\n }\n\n this.emitSync();\n },\n beforeDestroy: function beforeDestroy() {\n // Trigger state emit if needed\n this.show = false;\n\n if (this.isNav && __WEBPACK_IMPORTED_MODULE_4__utils_env__[\"j\" /* isBrowser */]) {\n this.setWindowEvents(false);\n }\n },\n methods: {\n setWindowEvents: function setWindowEvents(on) {\n var method = on ? __WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"f\" /* eventOn */] : __WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"e\" /* eventOff */];\n method(window, 'resize', this.handleResize, EventOptions);\n method(window, 'orientationchange', this.handleResize, EventOptions);\n },\n toggle: function toggle() {\n this.show = !this.show;\n },\n onEnter: function onEnter(el) {\n el.style.height = 0;\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"t\" /* reflow */])(el);\n el.style.height = el.scrollHeight + 'px';\n this.transitioning = true; // This should be moved out so we can add cancellable events\n\n this.$emit('show');\n },\n onAfterEnter: function onAfterEnter(el) {\n el.style.height = null;\n this.transitioning = false;\n this.$emit('shown');\n },\n onLeave: function onLeave(el) {\n el.style.height = 'auto';\n el.style.display = 'block';\n el.style.height = Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"h\" /* getBCR */])(el).height + 'px';\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"t\" /* reflow */])(el);\n this.transitioning = true;\n el.style.height = 0; // This should be moved out so we can add cancellable events\n\n this.$emit('hide');\n },\n onAfterLeave: function onAfterLeave(el) {\n el.style.height = null;\n this.transitioning = false;\n this.$emit('hidden');\n },\n emitState: function emitState() {\n this.$emit('input', this.show); // Let v-b-toggle know the state of this collapse\n\n this.$root.$emit(EVENT_STATE, this.safeId(), this.show);\n\n if (this.accordion && this.show) {\n // Tell the other collapses in this accordion to close\n this.$root.$emit(EVENT_ACCORDION, this.safeId(), this.accordion);\n }\n },\n emitSync: function emitSync() {\n // Emit a private event every time this component updates to ensure\n // the toggle button is in sync with the collapse's state\n // It is emitted regardless if the visible state changes\n this.$root.$emit(EVENT_STATE_SYNC, this.safeId(), this.show);\n },\n checkDisplayBlock: function checkDisplayBlock() {\n // Check to see if the collapse has `display: block !important;` set.\n // We can't set `display: none;` directly on this.$el, as it would\n // trigger a new transition to start (or cancel a current one).\n var restore = Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"m\" /* hasClass */])(this.$el, 'show');\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"v\" /* removeClass */])(this.$el, 'show');\n var isBlock = Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"j\" /* getCS */])(this.$el).display === 'block';\n restore && Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"b\" /* addClass */])(this.$el, 'show');\n return isBlock;\n },\n clickHandler: function clickHandler(evt) {\n // If we are in a nav/navbar, close the collapse when non-disabled link clicked\n var el = evt.target;\n\n if (!this.isNav || !el || Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"j\" /* getCS */])(this.$el).display !== 'block') {\n /* istanbul ignore next: can't test getComputedStyle in JSDOM */\n return;\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"q\" /* matches */])(el, '.nav-link,.dropdown-item') || Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"c\" /* closest */])('.nav-link,.dropdown-item', el)) {\n if (!this.checkDisplayBlock()) {\n // Only close the collapse if it is not forced to be 'display: block !important;'\n this.show = false;\n }\n }\n },\n handleToggleEvt: function handleToggleEvt(target) {\n if (target !== this.safeId()) {\n return;\n }\n\n this.toggle();\n },\n handleAccordionEvt: function handleAccordionEvt(openedId, accordion) {\n if (!this.accordion || accordion !== this.accordion) {\n return;\n }\n\n if (openedId === this.safeId()) {\n // Open this collapse if not shown\n if (!this.show) {\n this.toggle();\n }\n } else {\n // Close this collapse if shown\n if (this.show) {\n this.toggle();\n }\n }\n },\n handleResize: function handleResize() {\n // Handler for orientation/resize to set collapsed state in nav/navbar\n this.show = Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"j\" /* getCS */])(this.$el).display === 'block';\n }\n },\n render: function render(h) {\n var content = h(this.tag, {\n class: this.classObject,\n directives: [{\n name: 'show',\n value: this.show\n }],\n attrs: {\n id: this.safeId()\n },\n on: {\n click: this.clickHandler\n }\n }, [this.normalizeSlot('default')]);\n return h('transition', {\n props: {\n enterClass: '',\n enterActiveClass: 'collapsing',\n enterToClass: '',\n leaveClass: '',\n leaveActiveClass: 'collapsing',\n leaveToClass: ''\n },\n on: {\n enter: this.onEnter,\n afterEnter: this.onAfterEnter,\n leave: this.onLeave,\n afterLeave: this.onAfterLeave\n }\n }, [content]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9jb2xsYXBzZS9jb2xsYXBzZS5qcz9hMGMwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ0k7QUFDc0I7QUFDQztBQUNqQjtBQUNrRjs7QUFFOUg7QUFDQSxnREFBZ0Q7QUFDaEQ7QUFDQTs7QUFFQSxtREFBbUQ7O0FBRW5EO0FBQ0EseURBQXlEOztBQUV6RDtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVLO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0EsV0FBVywyREFBTyxFQUFFLHVFQUFpQixFQUFFLHVFQUFrQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSw2QkFBNkI7O0FBRTdCLDBEQUEwRDs7QUFFMUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLHNCQUFzQiw2REFBUztBQUMvQjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx3QkFBd0IsMkRBQU8sR0FBRyw0REFBUTtBQUMxQztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLE1BQU0sa0VBQU07QUFDWjtBQUNBLGdDQUFnQzs7QUFFaEM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGtFQUFNO0FBQzlCLE1BQU0sa0VBQU07QUFDWjtBQUNBLDBCQUEwQjs7QUFFMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxxQ0FBcUM7O0FBRXJDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxxRUFBcUU7QUFDckUscUNBQXFDO0FBQ3JDO0FBQ0Esb0JBQW9CLG9FQUFRO0FBQzVCLE1BQU0sdUVBQVc7QUFDakIsb0JBQW9CLGlFQUFLO0FBQ3pCLGlCQUFpQixvRUFBUTtBQUN6QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUEsZ0NBQWdDLGlFQUFLO0FBQ3JDO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLG1FQUFPLG9DQUFvQyxtRUFBTztBQUM1RDtBQUNBLDBGQUEwRjtBQUMxRjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxrQkFBa0IsaUVBQUs7QUFDdkI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMjUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgaWRNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvaWQnO1xuaW1wb3J0IGxpc3Rlbk9uUm9vdE1peGluIGZyb20gJy4uLy4uL21peGlucy9saXN0ZW4tb24tcm9vdCc7XG5pbXBvcnQgbm9ybWFsaXplU2xvdE1peGluIGZyb20gJy4uLy4uL21peGlucy9ub3JtYWxpemUtc2xvdCc7XG5pbXBvcnQgeyBpc0Jyb3dzZXIgfSBmcm9tICcuLi8uLi91dGlscy9lbnYnO1xuaW1wb3J0IHsgYWRkQ2xhc3MsIGhhc0NsYXNzLCByZW1vdmVDbGFzcywgY2xvc2VzdCwgbWF0Y2hlcywgcmVmbG93LCBnZXRDUywgZ2V0QkNSLCBldmVudE9uLCBldmVudE9mZiB9IGZyb20gJy4uLy4uL3V0aWxzL2RvbSc7IC8vIEV2ZW50cyB3ZSBlbWl0IG9uICRyb290XG5cbnZhciBFVkVOVF9TVEFURSA9ICdidjo6Y29sbGFwc2U6OnN0YXRlJztcbnZhciBFVkVOVF9BQ0NPUkRJT04gPSAnYnY6OmNvbGxhcHNlOjphY2NvcmRpb24nOyAvLyBQcml2YXRlIGV2ZW50IHdlIGVtaXQgb24gYCRyb290YCB0byBlbnN1cmUgdGhlIHRvZ2dsZSBzdGF0ZSBpc1xuLy8gYWx3YXlzIHN5bmNlZC4gSXQgZ2V0cyBlbWl0dGVkIGV2ZW4gaWYgdGhlIHN0YXRlIGhhcyBub3QgY2hhbmdlZCFcbi8vIFRoaXMgZXZlbnQgaXMgTk9UIHRvIGJlIGRvY3VtZW50ZWQgYXMgcGVvcGxlIHNob3VsZCBub3QgYmUgdXNpbmcgaXRcblxudmFyIEVWRU5UX1NUQVRFX1NZTkMgPSAnYnY6OmNvbGxhcHNlOjpzeW5jOjpzdGF0ZSc7IC8vIEV2ZW50cyB3ZSBsaXN0ZW4gdG8gb24gYCRyb290YFxuXG52YXIgRVZFTlRfVE9HR0xFID0gJ2J2Ojp0b2dnbGU6OmNvbGxhcHNlJztcbnZhciBFVkVOVF9TVEFURV9SRVFVRVNUID0gJ2J2OjpyZXF1ZXN0Ojpjb2xsYXBzZTo6c3RhdGUnOyAvLyBFdmVudCBsaXN0ZW5lciBvcHRpb25zXG5cbnZhciBFdmVudE9wdGlvbnMgPSB7XG4gIHBhc3NpdmU6IHRydWUsXG4gIGNhcHR1cmU6IGZhbHNlXG59OyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJDb2xsYXBzZSA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JDb2xsYXBzZScsXG4gIG1peGluczogW2lkTWl4aW4sIGxpc3Rlbk9uUm9vdE1peGluLCBub3JtYWxpemVTbG90TWl4aW5dLFxuICBtb2RlbDoge1xuICAgIHByb3A6ICd2aXNpYmxlJyxcbiAgICBldmVudDogJ2lucHV0J1xuICB9LFxuICBwcm9wczoge1xuICAgIGlzTmF2OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGFjY29yZGlvbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgdmlzaWJsZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICB0YWc6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdkaXYnXG4gICAgfVxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzaG93OiB0aGlzLnZpc2libGUsXG4gICAgICB0cmFuc2l0aW9uaW5nOiBmYWxzZVxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgY2xhc3NPYmplY3Q6IGZ1bmN0aW9uIGNsYXNzT2JqZWN0KCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJ25hdmJhci1jb2xsYXBzZSc6IHRoaXMuaXNOYXYsXG4gICAgICAgIGNvbGxhcHNlOiAhdGhpcy50cmFuc2l0aW9uaW5nLFxuICAgICAgICBzaG93OiB0aGlzLnNob3cgJiYgIXRoaXMudHJhbnNpdGlvbmluZ1xuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgdmlzaWJsZTogZnVuY3Rpb24gdmlzaWJsZShuZXdWYWwpIHtcbiAgICAgIGlmIChuZXdWYWwgIT09IHRoaXMuc2hvdykge1xuICAgICAgICB0aGlzLnNob3cgPSBuZXdWYWw7XG4gICAgICB9XG4gICAgfSxcbiAgICBzaG93OiBmdW5jdGlvbiBzaG93KG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICBpZiAobmV3VmFsICE9PSBvbGRWYWwpIHtcbiAgICAgICAgdGhpcy5lbWl0U3RhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG4gICAgdGhpcy5zaG93ID0gdGhpcy52aXNpYmxlO1xuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLnNob3cgPSB0aGlzLnZpc2libGU7IC8vIExpc3RlbiBmb3IgdG9nZ2xlIGV2ZW50cyB0byBvcGVuL2Nsb3NlIHVzXG5cbiAgICB0aGlzLmxpc3Rlbk9uUm9vdChFVkVOVF9UT0dHTEUsIHRoaXMuaGFuZGxlVG9nZ2xlRXZ0KTsgLy8gTGlzdGVuIHRvIG90aGVyIGNvbGxhcHNlcyBmb3IgYWNjb3JkaW9uIGV2ZW50c1xuXG4gICAgdGhpcy5saXN0ZW5PblJvb3QoRVZFTlRfQUNDT1JESU9OLCB0aGlzLmhhbmRsZUFjY29yZGlvbkV2dCk7XG5cbiAgICBpZiAodGhpcy5pc05hdikge1xuICAgICAgLy8gU2V0IHVwIGhhbmRsZXJzXG4gICAgICB0aGlzLnNldFdpbmRvd0V2ZW50cyh0cnVlKTtcbiAgICAgIHRoaXMuaGFuZGxlUmVzaXplKCk7XG4gICAgfVxuXG4gICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuZW1pdFN0YXRlKCk7XG4gICAgfSk7IC8vIExpc3RlbiBmb3IgXCJTeW5jIHN0YXRlXCIgcmVxdWVzdHMgZnJvbSBgdi1iLXRvZ2dsZWBcblxuICAgIHRoaXMubGlzdGVuT25Sb290KEVWRU5UX1NUQVRFX1JFUVVFU1QsIGZ1bmN0aW9uIChpZCkge1xuICAgICAgaWYgKGlkID09PSBfdGhpcy5zYWZlSWQoKSkge1xuICAgICAgICBfdGhpcy4kbmV4dFRpY2soX3RoaXMuZW1pdFN5bmMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuICB1cGRhdGVkOiBmdW5jdGlvbiB1cGRhdGVkKCkge1xuICAgIC8vIEVtaXQgYSBwcml2YXRlIGV2ZW50IGV2ZXJ5IHRpbWUgdGhpcyBjb21wb25lbnQgdXBkYXRlcyB0byBlbnN1cmVcbiAgICAvLyB0aGUgdG9nZ2xlIGJ1dHRvbiBpcyBpbiBzeW5jIHdpdGggdGhlIGNvbGxhcHNlJ3Mgc3RhdGVcbiAgICAvLyBJdCBpcyBlbWl0dGVkIHJlZ2FyZGxlc3MgaWYgdGhlIHZpc2libGUgc3RhdGUgY2hhbmdlc1xuICAgIHRoaXMuZW1pdFN5bmMoKTtcbiAgfSxcbiAgZGVhY3RpdmF0ZWQ6IGZ1bmN0aW9uIGRlYWN0aXZhdGVkKClcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAge1xuICAgIGlmICh0aGlzLmlzTmF2KSB7XG4gICAgICB0aGlzLnNldFdpbmRvd0V2ZW50cyhmYWxzZSk7XG4gICAgfVxuICB9LFxuICBhY3RpdmF0ZWQ6IGZ1bmN0aW9uIGFjdGl2YXRlZCgpXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHtcbiAgICBpZiAodGhpcy5pc05hdikge1xuICAgICAgdGhpcy5zZXRXaW5kb3dFdmVudHModHJ1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0U3luYygpO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIC8vIFRyaWdnZXIgc3RhdGUgZW1pdCBpZiBuZWVkZWRcbiAgICB0aGlzLnNob3cgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLmlzTmF2ICYmIGlzQnJvd3Nlcikge1xuICAgICAgdGhpcy5zZXRXaW5kb3dFdmVudHMoZmFsc2UpO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHNldFdpbmRvd0V2ZW50czogZnVuY3Rpb24gc2V0V2luZG93RXZlbnRzKG9uKSB7XG4gICAgICB2YXIgbWV0aG9kID0gb24gPyBldmVudE9uIDogZXZlbnRPZmY7XG4gICAgICBtZXRob2Qod2luZG93LCAncmVzaXplJywgdGhpcy5oYW5kbGVSZXNpemUsIEV2ZW50T3B0aW9ucyk7XG4gICAgICBtZXRob2Qod2luZG93LCAnb3JpZW50YXRpb25jaGFuZ2UnLCB0aGlzLmhhbmRsZVJlc2l6ZSwgRXZlbnRPcHRpb25zKTtcbiAgICB9LFxuICAgIHRvZ2dsZTogZnVuY3Rpb24gdG9nZ2xlKCkge1xuICAgICAgdGhpcy5zaG93ID0gIXRoaXMuc2hvdztcbiAgICB9LFxuICAgIG9uRW50ZXI6IGZ1bmN0aW9uIG9uRW50ZXIoZWwpIHtcbiAgICAgIGVsLnN0eWxlLmhlaWdodCA9IDA7XG4gICAgICByZWZsb3coZWwpO1xuICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gZWwuc2Nyb2xsSGVpZ2h0ICsgJ3B4JztcbiAgICAgIHRoaXMudHJhbnNpdGlvbmluZyA9IHRydWU7IC8vIFRoaXMgc2hvdWxkIGJlIG1vdmVkIG91dCBzbyB3ZSBjYW4gYWRkIGNhbmNlbGxhYmxlIGV2ZW50c1xuXG4gICAgICB0aGlzLiRlbWl0KCdzaG93Jyk7XG4gICAgfSxcbiAgICBvbkFmdGVyRW50ZXI6IGZ1bmN0aW9uIG9uQWZ0ZXJFbnRlcihlbCkge1xuICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gbnVsbDtcbiAgICAgIHRoaXMudHJhbnNpdGlvbmluZyA9IGZhbHNlO1xuICAgICAgdGhpcy4kZW1pdCgnc2hvd24nKTtcbiAgICB9LFxuICAgIG9uTGVhdmU6IGZ1bmN0aW9uIG9uTGVhdmUoZWwpIHtcbiAgICAgIGVsLnN0eWxlLmhlaWdodCA9ICdhdXRvJztcbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gZ2V0QkNSKGVsKS5oZWlnaHQgKyAncHgnO1xuICAgICAgcmVmbG93KGVsKTtcbiAgICAgIHRoaXMudHJhbnNpdGlvbmluZyA9IHRydWU7XG4gICAgICBlbC5zdHlsZS5oZWlnaHQgPSAwOyAvLyBUaGlzIHNob3VsZCBiZSBtb3ZlZCBvdXQgc28gd2UgY2FuIGFkZCBjYW5jZWxsYWJsZSBldmVudHNcblxuICAgICAgdGhpcy4kZW1pdCgnaGlkZScpO1xuICAgIH0sXG4gICAgb25BZnRlckxlYXZlOiBmdW5jdGlvbiBvbkFmdGVyTGVhdmUoZWwpIHtcbiAgICAgIGVsLnN0eWxlLmhlaWdodCA9IG51bGw7XG4gICAgICB0aGlzLnRyYW5zaXRpb25pbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuJGVtaXQoJ2hpZGRlbicpO1xuICAgIH0sXG4gICAgZW1pdFN0YXRlOiBmdW5jdGlvbiBlbWl0U3RhdGUoKSB7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHRoaXMuc2hvdyk7IC8vIExldCB2LWItdG9nZ2xlIGtub3cgdGhlIHN0YXRlIG9mIHRoaXMgY29sbGFwc2VcblxuICAgICAgdGhpcy4kcm9vdC4kZW1pdChFVkVOVF9TVEFURSwgdGhpcy5zYWZlSWQoKSwgdGhpcy5zaG93KTtcblxuICAgICAgaWYgKHRoaXMuYWNjb3JkaW9uICYmIHRoaXMuc2hvdykge1xuICAgICAgICAvLyBUZWxsIHRoZSBvdGhlciBjb2xsYXBzZXMgaW4gdGhpcyBhY2NvcmRpb24gdG8gY2xvc2VcbiAgICAgICAgdGhpcy4kcm9vdC4kZW1pdChFVkVOVF9BQ0NPUkRJT04sIHRoaXMuc2FmZUlkKCksIHRoaXMuYWNjb3JkaW9uKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGVtaXRTeW5jOiBmdW5jdGlvbiBlbWl0U3luYygpIHtcbiAgICAgIC8vIEVtaXQgYSBwcml2YXRlIGV2ZW50IGV2ZXJ5IHRpbWUgdGhpcyBjb21wb25lbnQgdXBkYXRlcyB0byBlbnN1cmVcbiAgICAgIC8vIHRoZSB0b2dnbGUgYnV0dG9uIGlzIGluIHN5bmMgd2l0aCB0aGUgY29sbGFwc2UncyBzdGF0ZVxuICAgICAgLy8gSXQgaXMgZW1pdHRlZCByZWdhcmRsZXNzIGlmIHRoZSB2aXNpYmxlIHN0YXRlIGNoYW5nZXNcbiAgICAgIHRoaXMuJHJvb3QuJGVtaXQoRVZFTlRfU1RBVEVfU1lOQywgdGhpcy5zYWZlSWQoKSwgdGhpcy5zaG93KTtcbiAgICB9LFxuICAgIGNoZWNrRGlzcGxheUJsb2NrOiBmdW5jdGlvbiBjaGVja0Rpc3BsYXlCbG9jaygpIHtcbiAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgY29sbGFwc2UgaGFzIGBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O2Agc2V0LlxuICAgICAgLy8gV2UgY2FuJ3Qgc2V0IGBkaXNwbGF5OiBub25lO2AgZGlyZWN0bHkgb24gdGhpcy4kZWwsIGFzIGl0IHdvdWxkXG4gICAgICAvLyB0cmlnZ2VyIGEgbmV3IHRyYW5zaXRpb24gdG8gc3RhcnQgKG9yIGNhbmNlbCBhIGN1cnJlbnQgb25lKS5cbiAgICAgIHZhciByZXN0b3JlID0gaGFzQ2xhc3ModGhpcy4kZWwsICdzaG93Jyk7XG4gICAgICByZW1vdmVDbGFzcyh0aGlzLiRlbCwgJ3Nob3cnKTtcbiAgICAgIHZhciBpc0Jsb2NrID0gZ2V0Q1ModGhpcy4kZWwpLmRpc3BsYXkgPT09ICdibG9jayc7XG4gICAgICByZXN0b3JlICYmIGFkZENsYXNzKHRoaXMuJGVsLCAnc2hvdycpO1xuICAgICAgcmV0dXJuIGlzQmxvY2s7XG4gICAgfSxcbiAgICBjbGlja0hhbmRsZXI6IGZ1bmN0aW9uIGNsaWNrSGFuZGxlcihldnQpIHtcbiAgICAgIC8vIElmIHdlIGFyZSBpbiBhIG5hdi9uYXZiYXIsIGNsb3NlIHRoZSBjb2xsYXBzZSB3aGVuIG5vbi1kaXNhYmxlZCBsaW5rIGNsaWNrZWRcbiAgICAgIHZhciBlbCA9IGV2dC50YXJnZXQ7XG5cbiAgICAgIGlmICghdGhpcy5pc05hdiB8fCAhZWwgfHwgZ2V0Q1ModGhpcy4kZWwpLmRpc3BsYXkgIT09ICdibG9jaycpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGNhbid0IHRlc3QgZ2V0Q29tcHV0ZWRTdHlsZSBpbiBKU0RPTSAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXRjaGVzKGVsLCAnLm5hdi1saW5rLC5kcm9wZG93bi1pdGVtJykgfHwgY2xvc2VzdCgnLm5hdi1saW5rLC5kcm9wZG93bi1pdGVtJywgZWwpKSB7XG4gICAgICAgIGlmICghdGhpcy5jaGVja0Rpc3BsYXlCbG9jaygpKSB7XG4gICAgICAgICAgLy8gT25seSBjbG9zZSB0aGUgY29sbGFwc2UgaWYgaXQgaXMgbm90IGZvcmNlZCB0byBiZSAnZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsnXG4gICAgICAgICAgdGhpcy5zaG93ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZVRvZ2dsZUV2dDogZnVuY3Rpb24gaGFuZGxlVG9nZ2xlRXZ0KHRhcmdldCkge1xuICAgICAgaWYgKHRhcmdldCAhPT0gdGhpcy5zYWZlSWQoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgfSxcbiAgICBoYW5kbGVBY2NvcmRpb25FdnQ6IGZ1bmN0aW9uIGhhbmRsZUFjY29yZGlvbkV2dChvcGVuZWRJZCwgYWNjb3JkaW9uKSB7XG4gICAgICBpZiAoIXRoaXMuYWNjb3JkaW9uIHx8IGFjY29yZGlvbiAhPT0gdGhpcy5hY2NvcmRpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAob3BlbmVkSWQgPT09IHRoaXMuc2FmZUlkKCkpIHtcbiAgICAgICAgLy8gT3BlbiB0aGlzIGNvbGxhcHNlIGlmIG5vdCBzaG93blxuICAgICAgICBpZiAoIXRoaXMuc2hvdykge1xuICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIENsb3NlIHRoaXMgY29sbGFwc2UgaWYgc2hvd25cbiAgICAgICAgaWYgKHRoaXMuc2hvdykge1xuICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGhhbmRsZVJlc2l6ZTogZnVuY3Rpb24gaGFuZGxlUmVzaXplKCkge1xuICAgICAgLy8gSGFuZGxlciBmb3Igb3JpZW50YXRpb24vcmVzaXplIHRvIHNldCBjb2xsYXBzZWQgc3RhdGUgaW4gbmF2L25hdmJhclxuICAgICAgdGhpcy5zaG93ID0gZ2V0Q1ModGhpcy4kZWwpLmRpc3BsYXkgPT09ICdibG9jayc7XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyIGNvbnRlbnQgPSBoKHRoaXMudGFnLCB7XG4gICAgICBjbGFzczogdGhpcy5jbGFzc09iamVjdCxcbiAgICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAgICAgIG5hbWU6ICdzaG93JyxcbiAgICAgICAgdmFsdWU6IHRoaXMuc2hvd1xuICAgICAgfV0sXG4gICAgICBhdHRyczoge1xuICAgICAgICBpZDogdGhpcy5zYWZlSWQoKVxuICAgICAgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIGNsaWNrOiB0aGlzLmNsaWNrSGFuZGxlclxuICAgICAgfVxuICAgIH0sIFt0aGlzLm5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnKV0pO1xuICAgIHJldHVybiBoKCd0cmFuc2l0aW9uJywge1xuICAgICAgcHJvcHM6IHtcbiAgICAgICAgZW50ZXJDbGFzczogJycsXG4gICAgICAgIGVudGVyQWN0aXZlQ2xhc3M6ICdjb2xsYXBzaW5nJyxcbiAgICAgICAgZW50ZXJUb0NsYXNzOiAnJyxcbiAgICAgICAgbGVhdmVDbGFzczogJycsXG4gICAgICAgIGxlYXZlQWN0aXZlQ2xhc3M6ICdjb2xsYXBzaW5nJyxcbiAgICAgICAgbGVhdmVUb0NsYXNzOiAnJ1xuICAgICAgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIGVudGVyOiB0aGlzLm9uRW50ZXIsXG4gICAgICAgIGFmdGVyRW50ZXI6IHRoaXMub25BZnRlckVudGVyLFxuICAgICAgICBsZWF2ZTogdGhpcy5vbkxlYXZlLFxuICAgICAgICBhZnRlckxlYXZlOiB0aGlzLm9uQWZ0ZXJMZWF2ZVxuICAgICAgfVxuICAgIH0sIFtjb250ZW50XSk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvY29sbGFwc2UvY29sbGFwc2UuanNcbi8vIG1vZHVsZSBpZCA9IDEyNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///125\n"); /***/ }), /* 126 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BDropdownItem; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__link_link__ = __webpack_require__(14);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\nvar props = Object(__WEBPACK_IMPORTED_MODULE_3__link_link__[\"b\" /* propsFactory */])(); // @vue/component\n\nvar BDropdownItem =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BDropdownItem',\n mixins: [__WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__[\"a\" /* default */]],\n inheritAttrs: false,\n inject: {\n bvDropdown: {\n default: null\n }\n },\n props: _objectSpread({}, props, {\n variant: {\n type: String,\n default: null\n }\n }),\n methods: {\n closeDropdown: function closeDropdown() {\n var _this = this;\n\n // Close on next animation frame to allow <b-link> time to process\n Object(__WEBPACK_IMPORTED_MODULE_1__utils_dom__[\"w\" /* requestAF */])(function () {\n if (_this.bvDropdown) {\n _this.bvDropdown.hide(true);\n }\n });\n },\n onClick: function onClick(evt) {\n this.$emit('click', evt);\n this.closeDropdown();\n }\n },\n render: function render(h) {\n return h('li', {\n attrs: {\n role: 'presentation'\n }\n }, [h(__WEBPACK_IMPORTED_MODULE_3__link_link__[\"a\" /* BLink */], {\n props: this.$props,\n staticClass: 'dropdown-item',\n class: _defineProperty({}, \"text-\".concat(this.variant), this.variant && !(this.active || this.disabled)),\n attrs: _objectSpread({}, this.$attrs, {\n role: 'menuitem'\n }),\n on: {\n click: this.onClick\n },\n ref: 'item'\n }, this.normalizeSlot('default'))]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1pdGVtLmpzPzA3YjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNVO0FBQ2dCO0FBQ1c7QUFDaEUsWUFBWSx3RUFBZ0IsR0FBRzs7QUFFL0I7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQSxXQUFXLHVFQUFpQjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNLHFFQUFTO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxLQUFLLHlEQUFLO0FBQ2Y7QUFDQTtBQUNBLCtCQUErQjtBQUMvQiw2QkFBNkI7QUFDN0I7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMTI2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgcmVxdWVzdEFGIH0gZnJvbSAnLi4vLi4vdXRpbHMvZG9tJztcbmltcG9ydCBub21hbGl6ZVNsb3RNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvbm9ybWFsaXplLXNsb3QnO1xuaW1wb3J0IHsgQkxpbmssIHByb3BzRmFjdG9yeSBhcyBsaW5rUHJvcHNGYWN0b3J5IH0gZnJvbSAnLi4vbGluay9saW5rJztcbmV4cG9ydCB2YXIgcHJvcHMgPSBsaW5rUHJvcHNGYWN0b3J5KCk7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkRyb3Bkb3duSXRlbSA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JEcm9wZG93bkl0ZW0nLFxuICBtaXhpbnM6IFtub21hbGl6ZVNsb3RNaXhpbl0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIGluamVjdDoge1xuICAgIGJ2RHJvcGRvd246IHtcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9XG4gIH0sXG4gIHByb3BzOiBfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcywge1xuICAgIHZhcmlhbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9XG4gIH0pLFxuICBtZXRob2RzOiB7XG4gICAgY2xvc2VEcm9wZG93bjogZnVuY3Rpb24gY2xvc2VEcm9wZG93bigpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIC8vIENsb3NlIG9uIG5leHQgYW5pbWF0aW9uIGZyYW1lIHRvIGFsbG93IDxiLWxpbms+IHRpbWUgdG8gcHJvY2Vzc1xuICAgICAgcmVxdWVzdEFGKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKF90aGlzLmJ2RHJvcGRvd24pIHtcbiAgICAgICAgICBfdGhpcy5idkRyb3Bkb3duLmhpZGUodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgb25DbGljazogZnVuY3Rpb24gb25DbGljayhldnQpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2NsaWNrJywgZXZ0KTtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHJldHVybiBoKCdsaScsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6ICdwcmVzZW50YXRpb24nXG4gICAgICB9XG4gICAgfSwgW2goQkxpbmssIHtcbiAgICAgIHByb3BzOiB0aGlzLiRwcm9wcyxcbiAgICAgIHN0YXRpY0NsYXNzOiAnZHJvcGRvd24taXRlbScsXG4gICAgICBjbGFzczogX2RlZmluZVByb3BlcnR5KHt9LCBcInRleHQtXCIuY29uY2F0KHRoaXMudmFyaWFudCksIHRoaXMudmFyaWFudCAmJiAhKHRoaXMuYWN0aXZlIHx8IHRoaXMuZGlzYWJsZWQpKSxcbiAgICAgIGF0dHJzOiBfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLiRhdHRycywge1xuICAgICAgICByb2xlOiAnbWVudWl0ZW0nXG4gICAgICB9KSxcbiAgICAgIG9uOiB7XG4gICAgICAgIGNsaWNrOiB0aGlzLm9uQ2xpY2tcbiAgICAgIH0sXG4gICAgICByZWY6ICdpdGVtJ1xuICAgIH0sIHRoaXMubm9ybWFsaXplU2xvdCgnZGVmYXVsdCcpKV0pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLWl0ZW0uanNcbi8vIG1vZHVsZSBpZCA9IDEyNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///126\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_popper_js__ = __webpack_require__(127);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_warn__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_bv_event_class__ = __webpack_require__(41);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__id__ = __webpack_require__(9);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n // Return an array of visible items\n\nvar filterVisibles = function filterVisibles(els) {\n return (els || []).filter(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"p\" /* isVisible */]);\n}; // Root dropdown event names\n\n\nvar ROOT_DROPDOWN_PREFIX = 'bv::dropdown::';\nvar ROOT_DROPDOWN_SHOWN = \"\".concat(ROOT_DROPDOWN_PREFIX, \"shown\");\nvar ROOT_DROPDOWN_HIDDEN = \"\".concat(ROOT_DROPDOWN_PREFIX, \"hidden\"); // Delay when loosing focus before closing menu (in ms)\n\nvar FOCUSOUT_DELAY = 100; // Dropdown item CSS selectors\n\nvar Selector = {\n FORM_CHILD: '.dropdown form',\n ITEM_SELECTOR: ['.dropdown-item', '.b-dropdown-form'].map(function (selector) {\n return \"\".concat(selector, \":not(.disabled):not([disabled])\");\n }).join(', ')\n}; // Popper attachment positions\n\nvar AttachmentMap = {\n // Dropup left align\n TOP: 'top-start',\n // Dropup right align\n TOPEND: 'top-end',\n // Dropdown left align\n BOTTOM: 'bottom-start',\n // Dropdown right align\n BOTTOMEND: 'bottom-end',\n // Dropright left align\n RIGHT: 'right-start',\n // Dropright right align\n RIGHTEND: 'right-end',\n // Dropleft left align\n LEFT: 'left-start',\n // Dropleft right align\n LEFTEND: 'left-end'\n}; // @vue/component\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n mixins: [__WEBPACK_IMPORTED_MODULE_6__id__[\"a\" /* default */]],\n provide: function provide() {\n return {\n bvDropdown: this\n };\n },\n props: {\n disabled: {\n type: Boolean,\n default: false\n },\n text: {\n // Button label\n type: String,\n default: ''\n },\n html: {\n // Button label\n type: String\n },\n dropup: {\n // place on top if possible\n type: Boolean,\n default: false\n },\n dropright: {\n // place right if possible\n type: Boolean,\n default: false\n },\n dropleft: {\n // place left if possible\n type: Boolean,\n default: false\n },\n right: {\n // Right align menu (default is left align)\n type: Boolean,\n default: false\n },\n offset: {\n // Number of pixels to offset menu, or a CSS unit value (i.e. 1px, 1rem, etc)\n type: [Number, String],\n default: 0\n },\n noFlip: {\n // Disable auto-flipping of menu from bottom<=>top\n type: Boolean,\n default: false\n },\n lazy: {\n // If true, only render menu contents when open\n type: Boolean,\n default: false\n },\n popperOpts: {\n // type: Object,\n default: function _default() {}\n }\n },\n data: function data() {\n return {\n visible: false,\n inNavbar: null,\n visibleChangePrevented: false\n };\n },\n computed: {\n toggler: function toggler() {\n var toggle = this.$refs.toggle;\n return toggle ? toggle.$el || toggle : null;\n },\n directionClass: function directionClass() {\n if (this.dropup) {\n return 'dropup';\n } else if (this.dropright) {\n return 'dropright';\n } else if (this.dropleft) {\n return 'dropleft';\n }\n\n return '';\n }\n },\n watch: {\n visible: function visible(newValue, oldValue) {\n if (this.visibleChangePrevented) {\n this.visibleChangePrevented = false;\n return;\n }\n\n if (newValue !== oldValue) {\n var evtName = newValue ? 'show' : 'hide';\n var bvEvt = new __WEBPACK_IMPORTED_MODULE_3__utils_bv_event_class__[\"a\" /* BvEvent */](evtName, {\n cancelable: true,\n vueTarget: this,\n target: this.$refs.menu,\n relatedTarget: null,\n componentId: this.safeId ? this.safeId() : this.id || null\n });\n this.emitEvent(bvEvt);\n\n if (bvEvt.defaultPrevented) {\n // Reset value and exit if canceled\n this.visibleChangePrevented = true;\n this.visible = oldValue; // Just in case a child element triggered this.hide(true)\n\n this.$off('hidden', this.focusToggler);\n return;\n }\n\n if (evtName === 'show') {\n this.showMenu();\n } else {\n this.hideMenu();\n }\n }\n },\n disabled: function disabled(newValue, oldValue) {\n if (newValue !== oldValue && newValue && this.visible) {\n // Hide dropdown if disabled changes to true\n this.visible = false;\n }\n }\n },\n created: function created() {\n // Create non-reactive property\n this._popper = null;\n },\n deactivated: function deactivated()\n /* istanbul ignore next: not easy to test */\n {\n // In case we are inside a `<keep-alive>`\n this.visible = false;\n this.whileOpenListen(false);\n this.removePopper();\n },\n beforeDestroy: function beforeDestroy() {\n this.visible = false;\n this.whileOpenListen(false);\n this.removePopper();\n },\n methods: {\n // Event emitter\n emitEvent: function emitEvent(bvEvt) {\n var type = bvEvt.type;\n this.$emit(type, bvEvt);\n this.$root.$emit(\"\".concat(ROOT_DROPDOWN_PREFIX).concat(type), bvEvt);\n },\n showMenu: function showMenu() {\n var _this = this;\n\n if (this.disabled) {\n /* istanbul ignore next */\n return;\n } // Are we in a navbar ?\n\n\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"g\" /* isNull */])(this.inNavbar) && this.isNav) {\n // We should use an injection for this\n\n /* istanbul ignore next */\n this.inNavbar = Boolean(Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"c\" /* closest */])('.navbar', this.$el));\n } // Disable totally Popper.js for Dropdown in Navbar\n\n\n if (!this.inNavbar) {\n if (typeof __WEBPACK_IMPORTED_MODULE_0_popper_js__[\"a\" /* default */] === 'undefined') {\n /* istanbul ignore next */\n Object(__WEBPACK_IMPORTED_MODULE_2__utils_warn__[\"a\" /* default */])('b-dropdown: Popper.js not found. Falling back to CSS positioning.');\n } else {\n // for dropup with alignment we use the parent element as popper container\n var element = this.dropup && this.right || this.split ? this.$el : this.$refs.toggle; // Make sure we have a reference to an element, not a component!\n\n element = element.$el || element; // Instantiate popper.js\n\n this.createPopper(element);\n }\n } // Ensure other menus are closed\n\n\n this.$root.$emit(ROOT_DROPDOWN_SHOWN, this);\n this.whileOpenListen(true); // Wrap in nextTick to ensure menu is fully rendered/shown\n\n this.$nextTick(function () {\n // Focus on the menu container on show\n _this.focusMenu(); // Emit the shown event\n\n\n _this.$emit('shown');\n });\n },\n hideMenu: function hideMenu() {\n this.whileOpenListen(false);\n this.$root.$emit(ROOT_DROPDOWN_HIDDEN, this);\n this.$emit('hidden');\n this.removePopper();\n },\n createPopper: function createPopper(element) {\n this.removePopper();\n this._popper = new __WEBPACK_IMPORTED_MODULE_0_popper_js__[\"a\" /* default */](element, this.$refs.menu, this.getPopperConfig());\n },\n removePopper: function removePopper() {\n if (this._popper) {\n // Ensure popper event listeners are removed cleanly\n this._popper.destroy();\n }\n\n this._popper = null;\n },\n getPopperConfig: function getPopperConfig() {\n var placement = AttachmentMap.BOTTOM;\n\n if (this.dropup) {\n placement = this.right ? AttachmentMap.TOPEND : AttachmentMap.TOP;\n } else if (this.dropright) {\n placement = AttachmentMap.RIGHT;\n } else if (this.dropleft) {\n placement = AttachmentMap.LEFT;\n } else if (this.right) {\n placement = AttachmentMap.BOTTOMEND;\n }\n\n var popperConfig = {\n placement: placement,\n modifiers: {\n offset: {\n offset: this.offset || 0\n },\n flip: {\n enabled: !this.noFlip\n }\n }\n };\n\n if (this.boundary) {\n popperConfig.modifiers.preventOverflow = {\n boundariesElement: this.boundary\n };\n }\n\n return _objectSpread({}, popperConfig, {}, this.popperOpts || {});\n },\n whileOpenListen: function whileOpenListen(isOpen) {\n // turn listeners on/off while open\n if (isOpen) {\n // If another dropdown is opened\n this.$root.$on(ROOT_DROPDOWN_SHOWN, this.rootCloseListener); // Hide the menu when focus moves out\n\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"f\" /* eventOn */])(this.$el, 'focusout', this.onFocusOut, {\n passive: true\n });\n } else {\n this.$root.$off(ROOT_DROPDOWN_SHOWN, this.rootCloseListener);\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"e\" /* eventOff */])(this.$el, 'focusout', this.onFocusOut, {\n passive: true\n });\n }\n },\n rootCloseListener: function rootCloseListener(vm) {\n if (vm !== this) {\n this.visible = false;\n }\n },\n show: function show() {\n var _this2 = this;\n\n // Public method to show dropdown\n if (this.disabled) {\n return;\n } // Wrap in a requestAnimationFrame to allow any previous\n // click handling to occur first\n\n\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"w\" /* requestAF */])(function () {\n _this2.visible = true;\n });\n },\n hide: function hide() {\n var refocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n // Public method to hide dropdown\n if (this.disabled) {\n /* istanbul ignore next */\n return;\n }\n\n this.visible = false;\n\n if (refocus) {\n // Child element is closing the dropdown on click\n this.$once('hidden', this.focusToggler);\n }\n },\n // Called only by a button that toggles the menu\n toggle: function toggle(evt) {\n evt = evt || {};\n var type = evt.type;\n var key = evt.keyCode;\n\n if (type !== 'click' && !(type === 'keydown' && (key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].ENTER || key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].SPACE || key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].DOWN))) {\n // We only toggle on Click, Enter, Space, and Arrow Down\n\n /* istanbul ignore next */\n return;\n }\n /* istanbul ignore next */\n\n\n if (this.disabled) {\n this.visible = false;\n return;\n }\n\n this.$emit('toggle', evt);\n evt.preventDefault();\n evt.stopPropagation(); // Toggle visibility\n\n if (this.visible) {\n this.hide(true);\n } else {\n this.show();\n }\n },\n // Called only in split button mode, for the split button\n click: function click(evt) {\n /* istanbul ignore next */\n if (this.disabled) {\n this.visible = false;\n return;\n }\n\n this.$emit('click', evt);\n },\n // Called from dropdown menu context\n onKeydown: function onKeydown(evt) {\n var key = evt.keyCode;\n\n if (key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].ESC) {\n // Close on ESC\n this.onEsc(evt);\n } else if (key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].DOWN) {\n // Down Arrow\n this.focusNext(evt, false);\n } else if (key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].UP) {\n // Up Arrow\n this.focusNext(evt, true);\n }\n },\n // If uses presses ESC to close menu\n onEsc: function onEsc(evt) {\n if (this.visible) {\n this.visible = false;\n evt.preventDefault();\n evt.stopPropagation(); // Return focus to original trigger button\n\n this.$once('hidden', this.focusToggler);\n }\n },\n // Dropdown wrapper focusOut handler\n onFocusOut: function onFocusOut(evt) {\n var _this3 = this;\n\n // `relatedTarget` is the element gaining focus\n var relatedTarget = evt.relatedTarget; // If focus moves outside the menu or toggler, then close menu\n\n if (this.visible && !Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(this.$refs.menu, relatedTarget) && !Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"d\" /* contains */])(this.toggler, relatedTarget)) {\n var doHide = function doHide() {\n _this3.visible = false;\n }; // When we are in a navbar (which has been responsively stacked), we\n // delay the dropdown's closing so that the next element has a chance\n // to have it's click handler fired (in case it's position moves on\n // the screen do to a navbar menu above it collapsing)\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/4113\n\n\n this.inNavbar ? setTimeout(doHide, FOCUSOUT_DELAY) : doHide();\n }\n },\n // Keyboard nav\n focusNext: function focusNext(evt, up) {\n var _this4 = this;\n\n // Ignore key up/down on form elements\n if (!this.visible || evt && Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"c\" /* closest */])(Selector.FORM_CHILD, evt.target)) {\n /* istanbul ignore next: should never happen */\n return;\n }\n\n evt.preventDefault();\n evt.stopPropagation();\n this.$nextTick(function () {\n var items = _this4.getItems();\n\n if (items.length < 1) {\n /* istanbul ignore next: should never happen */\n return;\n }\n\n var index = items.indexOf(evt.target);\n\n if (up && index > 0) {\n index--;\n } else if (!up && index < items.length - 1) {\n index++;\n }\n\n if (index < 0) {\n /* istanbul ignore next: should never happen */\n index = 0;\n }\n\n _this4.focusItem(index, items);\n });\n },\n focusItem: function focusItem(idx, items) {\n var el = items.find(function (el, i) {\n return i === idx;\n });\n\n if (el && el.focus) {\n el.focus();\n }\n },\n getItems: function getItems() {\n // Get all items\n return filterVisibles(Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"y\" /* selectAll */])(Selector.ITEM_SELECTOR, this.$refs.menu));\n },\n focusMenu: function focusMenu() {\n this.$refs.menu.focus && this.$refs.menu.focus();\n },\n focusToggler: function focusToggler() {\n var _this5 = this;\n\n this.$nextTick(function () {\n var toggler = _this5.toggler;\n\n if (toggler && toggler.focus) {\n toggler.focus();\n }\n });\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vbWl4aW5zL2Ryb3Bkb3duLmpzP2MwYmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRWhMO0FBQ1c7QUFDVDtBQUNpQjtBQUNtRDtBQUMzRDtBQUNmOztBQUUzQjtBQUNBLDRCQUE0Qiw2REFBUztBQUNyQyxFQUFFOzs7QUFHRjtBQUNBO0FBQ0EscUVBQXFFOztBQUVyRSx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRWE7QUFDZixXQUFXLG9EQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QixzRUFBTztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1AsVUFBVSxzRUFBTTtBQUNoQjs7QUFFQTtBQUNBLGdDQUFnQyxtRUFBTztBQUN2QyxPQUFPOzs7QUFHUDtBQUNBLG1CQUFtQiwwREFBTTtBQUN6QjtBQUNBLFVBQVUsb0VBQUk7QUFDZCxTQUFTO0FBQ1Q7QUFDQSwrRkFBK0Y7O0FBRS9GLDJDQUEyQzs7QUFFM0M7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0EsaUNBQWlDOztBQUVqQztBQUNBO0FBQ0EsMEJBQTBCOzs7QUFHMUI7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLHlCQUF5QiwwREFBTTtBQUMvQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBNkIsa0JBQWtCLHVCQUF1QjtBQUN0RSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvRUFBb0U7O0FBRXBFLFFBQVEsbUVBQU87QUFDZjtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxRQUFRLG9FQUFRO0FBQ2hCO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOzs7QUFHQSxNQUFNLHFFQUFTO0FBQ2Y7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtEQUErRCxpRUFBUSxrQkFBa0IsaUVBQVEsa0JBQWtCLGlFQUFRO0FBQzNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBLGtCQUFrQixpRUFBUTtBQUMxQjtBQUNBO0FBQ0EsT0FBTyxrQkFBa0IsaUVBQVE7QUFDakM7QUFDQTtBQUNBLE9BQU8sa0JBQWtCLGlFQUFRO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCOztBQUU5QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRDQUE0Qzs7QUFFNUMsMkJBQTJCLG9FQUFRLHFDQUFxQyxvRUFBUTtBQUNoRjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtDQUFrQyxtRUFBTztBQUN6QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsNEJBQTRCLHFFQUFTO0FBQ3JDLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMTI2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IFBvcHBlciBmcm9tICdwb3BwZXIuanMnO1xuaW1wb3J0IEtleUNvZGVzIGZyb20gJy4uL3V0aWxzL2tleS1jb2Rlcyc7XG5pbXBvcnQgd2FybiBmcm9tICcuLi91dGlscy93YXJuJztcbmltcG9ydCB7IEJ2RXZlbnQgfSBmcm9tICcuLi91dGlscy9idi1ldmVudC5jbGFzcyc7XG5pbXBvcnQgeyBjbG9zZXN0LCBjb250YWlucywgaXNWaXNpYmxlLCByZXF1ZXN0QUYsIHNlbGVjdEFsbCwgZXZlbnRPbiwgZXZlbnRPZmYgfSBmcm9tICcuLi91dGlscy9kb20nO1xuaW1wb3J0IHsgaXNOdWxsIH0gZnJvbSAnLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgaWRNaXhpbiBmcm9tICcuL2lkJzsgLy8gUmV0dXJuIGFuIGFycmF5IG9mIHZpc2libGUgaXRlbXNcblxudmFyIGZpbHRlclZpc2libGVzID0gZnVuY3Rpb24gZmlsdGVyVmlzaWJsZXMoZWxzKSB7XG4gIHJldHVybiAoZWxzIHx8IFtdKS5maWx0ZXIoaXNWaXNpYmxlKTtcbn07IC8vIFJvb3QgZHJvcGRvd24gZXZlbnQgbmFtZXNcblxuXG52YXIgUk9PVF9EUk9QRE9XTl9QUkVGSVggPSAnYnY6OmRyb3Bkb3duOjonO1xudmFyIFJPT1RfRFJPUERPV05fU0hPV04gPSBcIlwiLmNvbmNhdChST09UX0RST1BET1dOX1BSRUZJWCwgXCJzaG93blwiKTtcbnZhciBST09UX0RST1BET1dOX0hJRERFTiA9IFwiXCIuY29uY2F0KFJPT1RfRFJPUERPV05fUFJFRklYLCBcImhpZGRlblwiKTsgLy8gRGVsYXkgd2hlbiBsb29zaW5nIGZvY3VzIGJlZm9yZSBjbG9zaW5nIG1lbnUgKGluIG1zKVxuXG52YXIgRk9DVVNPVVRfREVMQVkgPSAxMDA7IC8vIERyb3Bkb3duIGl0ZW0gQ1NTIHNlbGVjdG9yc1xuXG52YXIgU2VsZWN0b3IgPSB7XG4gIEZPUk1fQ0hJTEQ6ICcuZHJvcGRvd24gZm9ybScsXG4gIElURU1fU0VMRUNUT1I6IFsnLmRyb3Bkb3duLWl0ZW0nLCAnLmItZHJvcGRvd24tZm9ybSddLm1hcChmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQoc2VsZWN0b3IsIFwiOm5vdCguZGlzYWJsZWQpOm5vdChbZGlzYWJsZWRdKVwiKTtcbiAgfSkuam9pbignLCAnKVxufTsgLy8gUG9wcGVyIGF0dGFjaG1lbnQgcG9zaXRpb25zXG5cbnZhciBBdHRhY2htZW50TWFwID0ge1xuICAvLyBEcm9wdXAgbGVmdCBhbGlnblxuICBUT1A6ICd0b3Atc3RhcnQnLFxuICAvLyBEcm9wdXAgcmlnaHQgYWxpZ25cbiAgVE9QRU5EOiAndG9wLWVuZCcsXG4gIC8vIERyb3Bkb3duIGxlZnQgYWxpZ25cbiAgQk9UVE9NOiAnYm90dG9tLXN0YXJ0JyxcbiAgLy8gRHJvcGRvd24gcmlnaHQgYWxpZ25cbiAgQk9UVE9NRU5EOiAnYm90dG9tLWVuZCcsXG4gIC8vIERyb3ByaWdodCBsZWZ0IGFsaWduXG4gIFJJR0hUOiAncmlnaHQtc3RhcnQnLFxuICAvLyBEcm9wcmlnaHQgcmlnaHQgYWxpZ25cbiAgUklHSFRFTkQ6ICdyaWdodC1lbmQnLFxuICAvLyBEcm9wbGVmdCBsZWZ0IGFsaWduXG4gIExFRlQ6ICdsZWZ0LXN0YXJ0JyxcbiAgLy8gRHJvcGxlZnQgcmlnaHQgYWxpZ25cbiAgTEVGVEVORDogJ2xlZnQtZW5kJ1xufTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IGRlZmF1bHQge1xuICBtaXhpbnM6IFtpZE1peGluXSxcbiAgcHJvdmlkZTogZnVuY3Rpb24gcHJvdmlkZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnZEcm9wZG93bjogdGhpc1xuICAgIH07XG4gIH0sXG4gIHByb3BzOiB7XG4gICAgZGlzYWJsZWQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgdGV4dDoge1xuICAgICAgLy8gQnV0dG9uIGxhYmVsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgaHRtbDoge1xuICAgICAgLy8gQnV0dG9uIGxhYmVsXG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIGRyb3B1cDoge1xuICAgICAgLy8gcGxhY2Ugb24gdG9wIGlmIHBvc3NpYmxlXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGRyb3ByaWdodDoge1xuICAgICAgLy8gcGxhY2UgcmlnaHQgaWYgcG9zc2libGVcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgZHJvcGxlZnQ6IHtcbiAgICAgIC8vIHBsYWNlIGxlZnQgaWYgcG9zc2libGVcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgcmlnaHQ6IHtcbiAgICAgIC8vIFJpZ2h0IGFsaWduIG1lbnUgKGRlZmF1bHQgaXMgbGVmdCBhbGlnbilcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgb2Zmc2V0OiB7XG4gICAgICAvLyBOdW1iZXIgb2YgcGl4ZWxzIHRvIG9mZnNldCBtZW51LCBvciBhIENTUyB1bml0IHZhbHVlIChpLmUuIDFweCwgMXJlbSwgZXRjKVxuICAgICAgdHlwZTogW051bWJlciwgU3RyaW5nXSxcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9LFxuICAgIG5vRmxpcDoge1xuICAgICAgLy8gRGlzYWJsZSBhdXRvLWZsaXBwaW5nIG9mIG1lbnUgZnJvbSBib3R0b208PT50b3BcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgbGF6eToge1xuICAgICAgLy8gSWYgdHJ1ZSwgb25seSByZW5kZXIgbWVudSBjb250ZW50cyB3aGVuIG9wZW5cbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgcG9wcGVyT3B0czoge1xuICAgICAgLy8gdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7fVxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICBpbk5hdmJhcjogbnVsbCxcbiAgICAgIHZpc2libGVDaGFuZ2VQcmV2ZW50ZWQ6IGZhbHNlXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICB0b2dnbGVyOiBmdW5jdGlvbiB0b2dnbGVyKCkge1xuICAgICAgdmFyIHRvZ2dsZSA9IHRoaXMuJHJlZnMudG9nZ2xlO1xuICAgICAgcmV0dXJuIHRvZ2dsZSA/IHRvZ2dsZS4kZWwgfHwgdG9nZ2xlIDogbnVsbDtcbiAgICB9LFxuICAgIGRpcmVjdGlvbkNsYXNzOiBmdW5jdGlvbiBkaXJlY3Rpb25DbGFzcygpIHtcbiAgICAgIGlmICh0aGlzLmRyb3B1cCkge1xuICAgICAgICByZXR1cm4gJ2Ryb3B1cCc7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZHJvcHJpZ2h0KSB7XG4gICAgICAgIHJldHVybiAnZHJvcHJpZ2h0JztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kcm9wbGVmdCkge1xuICAgICAgICByZXR1cm4gJ2Ryb3BsZWZ0JztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICB2aXNpYmxlOiBmdW5jdGlvbiB2aXNpYmxlKG5ld1ZhbHVlLCBvbGRWYWx1ZSkge1xuICAgICAgaWYgKHRoaXMudmlzaWJsZUNoYW5nZVByZXZlbnRlZCkge1xuICAgICAgICB0aGlzLnZpc2libGVDaGFuZ2VQcmV2ZW50ZWQgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlKSB7XG4gICAgICAgIHZhciBldnROYW1lID0gbmV3VmFsdWUgPyAnc2hvdycgOiAnaGlkZSc7XG4gICAgICAgIHZhciBidkV2dCA9IG5ldyBCdkV2ZW50KGV2dE5hbWUsIHtcbiAgICAgICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgICAgICAgIHZ1ZVRhcmdldDogdGhpcyxcbiAgICAgICAgICB0YXJnZXQ6IHRoaXMuJHJlZnMubWVudSxcbiAgICAgICAgICByZWxhdGVkVGFyZ2V0OiBudWxsLFxuICAgICAgICAgIGNvbXBvbmVudElkOiB0aGlzLnNhZmVJZCA/IHRoaXMuc2FmZUlkKCkgOiB0aGlzLmlkIHx8IG51bGxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZW1pdEV2ZW50KGJ2RXZ0KTtcblxuICAgICAgICBpZiAoYnZFdnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgIC8vIFJlc2V0IHZhbHVlIGFuZCBleGl0IGlmIGNhbmNlbGVkXG4gICAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlUHJldmVudGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnZpc2libGUgPSBvbGRWYWx1ZTsgLy8gSnVzdCBpbiBjYXNlIGEgY2hpbGQgZWxlbWVudCB0cmlnZ2VyZWQgdGhpcy5oaWRlKHRydWUpXG5cbiAgICAgICAgICB0aGlzLiRvZmYoJ2hpZGRlbicsIHRoaXMuZm9jdXNUb2dnbGVyKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZ0TmFtZSA9PT0gJ3Nob3cnKSB7XG4gICAgICAgICAgdGhpcy5zaG93TWVudSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaGlkZU1lbnUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgZGlzYWJsZWQ6IGZ1bmN0aW9uIGRpc2FibGVkKG5ld1ZhbHVlLCBvbGRWYWx1ZSkge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSAmJiBuZXdWYWx1ZSAmJiB0aGlzLnZpc2libGUpIHtcbiAgICAgICAgLy8gSGlkZSBkcm9wZG93biBpZiBkaXNhYmxlZCBjaGFuZ2VzIHRvIHRydWVcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIC8vIENyZWF0ZSBub24tcmVhY3RpdmUgcHJvcGVydHlcbiAgICB0aGlzLl9wb3BwZXIgPSBudWxsO1xuICB9LFxuICBkZWFjdGl2YXRlZDogZnVuY3Rpb24gZGVhY3RpdmF0ZWQoKVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogbm90IGVhc3kgdG8gdGVzdCAqL1xuICB7XG4gICAgLy8gSW4gY2FzZSB3ZSBhcmUgaW5zaWRlIGEgYDxrZWVwLWFsaXZlPmBcbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLndoaWxlT3Blbkxpc3RlbihmYWxzZSk7XG4gICAgdGhpcy5yZW1vdmVQb3BwZXIoKTtcbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLndoaWxlT3Blbkxpc3RlbihmYWxzZSk7XG4gICAgdGhpcy5yZW1vdmVQb3BwZXIoKTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIC8vIEV2ZW50IGVtaXR0ZXJcbiAgICBlbWl0RXZlbnQ6IGZ1bmN0aW9uIGVtaXRFdmVudChidkV2dCkge1xuICAgICAgdmFyIHR5cGUgPSBidkV2dC50eXBlO1xuICAgICAgdGhpcy4kZW1pdCh0eXBlLCBidkV2dCk7XG4gICAgICB0aGlzLiRyb290LiRlbWl0KFwiXCIuY29uY2F0KFJPT1RfRFJPUERPV05fUFJFRklYKS5jb25jYXQodHlwZSksIGJ2RXZ0KTtcbiAgICB9LFxuICAgIHNob3dNZW51OiBmdW5jdGlvbiBzaG93TWVudSgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gQXJlIHdlIGluIGEgbmF2YmFyID9cblxuXG4gICAgICBpZiAoaXNOdWxsKHRoaXMuaW5OYXZiYXIpICYmIHRoaXMuaXNOYXYpIHtcbiAgICAgICAgLy8gV2Ugc2hvdWxkIHVzZSBhbiBpbmplY3Rpb24gZm9yIHRoaXNcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICB0aGlzLmluTmF2YmFyID0gQm9vbGVhbihjbG9zZXN0KCcubmF2YmFyJywgdGhpcy4kZWwpKTtcbiAgICAgIH0gLy8gRGlzYWJsZSB0b3RhbGx5IFBvcHBlci5qcyBmb3IgRHJvcGRvd24gaW4gTmF2YmFyXG5cblxuICAgICAgaWYgKCF0aGlzLmluTmF2YmFyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgUG9wcGVyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgd2FybignYi1kcm9wZG93bjogUG9wcGVyLmpzIG5vdCBmb3VuZC4gRmFsbGluZyBiYWNrIHRvIENTUyBwb3NpdGlvbmluZy4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBmb3IgZHJvcHVwIHdpdGggYWxpZ25tZW50IHdlIHVzZSB0aGUgcGFyZW50IGVsZW1lbnQgYXMgcG9wcGVyIGNvbnRhaW5lclxuICAgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5kcm9wdXAgJiYgdGhpcy5yaWdodCB8fCB0aGlzLnNwbGl0ID8gdGhpcy4kZWwgOiB0aGlzLiRyZWZzLnRvZ2dsZTsgLy8gTWFrZSBzdXJlIHdlIGhhdmUgYSByZWZlcmVuY2UgdG8gYW4gZWxlbWVudCwgbm90IGEgY29tcG9uZW50IVxuXG4gICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQuJGVsIHx8IGVsZW1lbnQ7IC8vIEluc3RhbnRpYXRlIHBvcHBlci5qc1xuXG4gICAgICAgICAgdGhpcy5jcmVhdGVQb3BwZXIoZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gRW5zdXJlIG90aGVyIG1lbnVzIGFyZSBjbG9zZWRcblxuXG4gICAgICB0aGlzLiRyb290LiRlbWl0KFJPT1RfRFJPUERPV05fU0hPV04sIHRoaXMpO1xuICAgICAgdGhpcy53aGlsZU9wZW5MaXN0ZW4odHJ1ZSk7IC8vIFdyYXAgaW4gbmV4dFRpY2sgdG8gZW5zdXJlIG1lbnUgaXMgZnVsbHkgcmVuZGVyZWQvc2hvd25cblxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBGb2N1cyBvbiB0aGUgbWVudSBjb250YWluZXIgb24gc2hvd1xuICAgICAgICBfdGhpcy5mb2N1c01lbnUoKTsgLy8gRW1pdCB0aGUgc2hvd24gZXZlbnRcblxuXG4gICAgICAgIF90aGlzLiRlbWl0KCdzaG93bicpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBoaWRlTWVudTogZnVuY3Rpb24gaGlkZU1lbnUoKSB7XG4gICAgICB0aGlzLndoaWxlT3Blbkxpc3RlbihmYWxzZSk7XG4gICAgICB0aGlzLiRyb290LiRlbWl0KFJPT1RfRFJPUERPV05fSElEREVOLCB0aGlzKTtcbiAgICAgIHRoaXMuJGVtaXQoJ2hpZGRlbicpO1xuICAgICAgdGhpcy5yZW1vdmVQb3BwZXIoKTtcbiAgICB9LFxuICAgIGNyZWF0ZVBvcHBlcjogZnVuY3Rpb24gY3JlYXRlUG9wcGVyKGVsZW1lbnQpIHtcbiAgICAgIHRoaXMucmVtb3ZlUG9wcGVyKCk7XG4gICAgICB0aGlzLl9wb3BwZXIgPSBuZXcgUG9wcGVyKGVsZW1lbnQsIHRoaXMuJHJlZnMubWVudSwgdGhpcy5nZXRQb3BwZXJDb25maWcoKSk7XG4gICAgfSxcbiAgICByZW1vdmVQb3BwZXI6IGZ1bmN0aW9uIHJlbW92ZVBvcHBlcigpIHtcbiAgICAgIGlmICh0aGlzLl9wb3BwZXIpIHtcbiAgICAgICAgLy8gRW5zdXJlIHBvcHBlciBldmVudCBsaXN0ZW5lcnMgYXJlIHJlbW92ZWQgY2xlYW5seVxuICAgICAgICB0aGlzLl9wb3BwZXIuZGVzdHJveSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9wb3BwZXIgPSBudWxsO1xuICAgIH0sXG4gICAgZ2V0UG9wcGVyQ29uZmlnOiBmdW5jdGlvbiBnZXRQb3BwZXJDb25maWcoKSB7XG4gICAgICB2YXIgcGxhY2VtZW50ID0gQXR0YWNobWVudE1hcC5CT1RUT007XG5cbiAgICAgIGlmICh0aGlzLmRyb3B1cCkge1xuICAgICAgICBwbGFjZW1lbnQgPSB0aGlzLnJpZ2h0ID8gQXR0YWNobWVudE1hcC5UT1BFTkQgOiBBdHRhY2htZW50TWFwLlRPUDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kcm9wcmlnaHQpIHtcbiAgICAgICAgcGxhY2VtZW50ID0gQXR0YWNobWVudE1hcC5SSUdIVDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kcm9wbGVmdCkge1xuICAgICAgICBwbGFjZW1lbnQgPSBBdHRhY2htZW50TWFwLkxFRlQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMucmlnaHQpIHtcbiAgICAgICAgcGxhY2VtZW50ID0gQXR0YWNobWVudE1hcC5CT1RUT01FTkQ7XG4gICAgICB9XG5cbiAgICAgIHZhciBwb3BwZXJDb25maWcgPSB7XG4gICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgICBtb2RpZmllcnM6IHtcbiAgICAgICAgICBvZmZzZXQ6IHtcbiAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQgfHwgMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZmxpcDoge1xuICAgICAgICAgICAgZW5hYmxlZDogIXRoaXMubm9GbGlwXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5ib3VuZGFyeSkge1xuICAgICAgICBwb3BwZXJDb25maWcubW9kaWZpZXJzLnByZXZlbnRPdmVyZmxvdyA9IHtcbiAgICAgICAgICBib3VuZGFyaWVzRWxlbWVudDogdGhpcy5ib3VuZGFyeVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7fSwgcG9wcGVyQ29uZmlnLCB7fSwgdGhpcy5wb3BwZXJPcHRzIHx8IHt9KTtcbiAgICB9LFxuICAgIHdoaWxlT3Blbkxpc3RlbjogZnVuY3Rpb24gd2hpbGVPcGVuTGlzdGVuKGlzT3Blbikge1xuICAgICAgLy8gdHVybiBsaXN0ZW5lcnMgb24vb2ZmIHdoaWxlIG9wZW5cbiAgICAgIGlmIChpc09wZW4pIHtcbiAgICAgICAgLy8gSWYgYW5vdGhlciBkcm9wZG93biBpcyBvcGVuZWRcbiAgICAgICAgdGhpcy4kcm9vdC4kb24oUk9PVF9EUk9QRE9XTl9TSE9XTiwgdGhpcy5yb290Q2xvc2VMaXN0ZW5lcik7IC8vIEhpZGUgdGhlIG1lbnUgd2hlbiBmb2N1cyBtb3ZlcyBvdXRcblxuICAgICAgICBldmVudE9uKHRoaXMuJGVsLCAnZm9jdXNvdXQnLCB0aGlzLm9uRm9jdXNPdXQsIHtcbiAgICAgICAgICBwYXNzaXZlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4kcm9vdC4kb2ZmKFJPT1RfRFJPUERPV05fU0hPV04sIHRoaXMucm9vdENsb3NlTGlzdGVuZXIpO1xuICAgICAgICBldmVudE9mZih0aGlzLiRlbCwgJ2ZvY3Vzb3V0JywgdGhpcy5vbkZvY3VzT3V0LCB7XG4gICAgICAgICAgcGFzc2l2ZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJvb3RDbG9zZUxpc3RlbmVyOiBmdW5jdGlvbiByb290Q2xvc2VMaXN0ZW5lcih2bSkge1xuICAgICAgaWYgKHZtICE9PSB0aGlzKSB7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2hvdzogZnVuY3Rpb24gc2hvdygpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICAvLyBQdWJsaWMgbWV0aG9kIHRvIHNob3cgZHJvcGRvd25cbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gV3JhcCBpbiBhIHJlcXVlc3RBbmltYXRpb25GcmFtZSB0byBhbGxvdyBhbnkgcHJldmlvdXNcbiAgICAgIC8vIGNsaWNrIGhhbmRsaW5nIHRvIG9jY3VyIGZpcnN0XG5cblxuICAgICAgcmVxdWVzdEFGKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMyLnZpc2libGUgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBoaWRlOiBmdW5jdGlvbiBoaWRlKCkge1xuICAgICAgdmFyIHJlZm9jdXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGZhbHNlO1xuXG4gICAgICAvLyBQdWJsaWMgbWV0aG9kIHRvIGhpZGUgZHJvcGRvd25cbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG5cbiAgICAgIGlmIChyZWZvY3VzKSB7XG4gICAgICAgIC8vIENoaWxkIGVsZW1lbnQgaXMgY2xvc2luZyB0aGUgZHJvcGRvd24gb24gY2xpY2tcbiAgICAgICAgdGhpcy4kb25jZSgnaGlkZGVuJywgdGhpcy5mb2N1c1RvZ2dsZXIpO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8gQ2FsbGVkIG9ubHkgYnkgYSBidXR0b24gdGhhdCB0b2dnbGVzIHRoZSBtZW51XG4gICAgdG9nZ2xlOiBmdW5jdGlvbiB0b2dnbGUoZXZ0KSB7XG4gICAgICBldnQgPSBldnQgfHwge307XG4gICAgICB2YXIgdHlwZSA9IGV2dC50eXBlO1xuICAgICAgdmFyIGtleSA9IGV2dC5rZXlDb2RlO1xuXG4gICAgICBpZiAodHlwZSAhPT0gJ2NsaWNrJyAmJiAhKHR5cGUgPT09ICdrZXlkb3duJyAmJiAoa2V5ID09PSBLZXlDb2Rlcy5FTlRFUiB8fCBrZXkgPT09IEtleUNvZGVzLlNQQUNFIHx8IGtleSA9PT0gS2V5Q29kZXMuRE9XTikpKSB7XG4gICAgICAgIC8vIFdlIG9ubHkgdG9nZ2xlIG9uIENsaWNrLCBFbnRlciwgU3BhY2UsIGFuZCBBcnJvdyBEb3duXG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblxuXG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiRlbWl0KCd0b2dnbGUnLCBldnQpO1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIFRvZ2dsZSB2aXNpYmlsaXR5XG5cbiAgICAgIGlmICh0aGlzLnZpc2libGUpIHtcbiAgICAgICAgdGhpcy5oaWRlKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyBDYWxsZWQgb25seSBpbiBzcGxpdCBidXR0b24gbW9kZSwgZm9yIHRoZSBzcGxpdCBidXR0b25cbiAgICBjbGljazogZnVuY3Rpb24gY2xpY2soZXZ0KSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy4kZW1pdCgnY2xpY2snLCBldnQpO1xuICAgIH0sXG4gICAgLy8gQ2FsbGVkIGZyb20gZHJvcGRvd24gbWVudSBjb250ZXh0XG4gICAgb25LZXlkb3duOiBmdW5jdGlvbiBvbktleWRvd24oZXZ0KSB7XG4gICAgICB2YXIga2V5ID0gZXZ0LmtleUNvZGU7XG5cbiAgICAgIGlmIChrZXkgPT09IEtleUNvZGVzLkVTQykge1xuICAgICAgICAvLyBDbG9zZSBvbiBFU0NcbiAgICAgICAgdGhpcy5vbkVzYyhldnQpO1xuICAgICAgfSBlbHNlIGlmIChrZXkgPT09IEtleUNvZGVzLkRPV04pIHtcbiAgICAgICAgLy8gRG93biBBcnJvd1xuICAgICAgICB0aGlzLmZvY3VzTmV4dChldnQsIGZhbHNlKTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBLZXlDb2Rlcy5VUCkge1xuICAgICAgICAvLyBVcCBBcnJvd1xuICAgICAgICB0aGlzLmZvY3VzTmV4dChldnQsIHRydWUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8gSWYgdXNlcyBwcmVzc2VzIEVTQyB0byBjbG9zZSBtZW51XG4gICAgb25Fc2M6IGZ1bmN0aW9uIG9uRXNjKGV2dCkge1xuICAgICAgaWYgKHRoaXMudmlzaWJsZSkge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gUmV0dXJuIGZvY3VzIHRvIG9yaWdpbmFsIHRyaWdnZXIgYnV0dG9uXG5cbiAgICAgICAgdGhpcy4kb25jZSgnaGlkZGVuJywgdGhpcy5mb2N1c1RvZ2dsZXIpO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8gRHJvcGRvd24gd3JhcHBlciBmb2N1c091dCBoYW5kbGVyXG4gICAgb25Gb2N1c091dDogZnVuY3Rpb24gb25Gb2N1c091dChldnQpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICAvLyBgcmVsYXRlZFRhcmdldGAgaXMgdGhlIGVsZW1lbnQgZ2FpbmluZyBmb2N1c1xuICAgICAgdmFyIHJlbGF0ZWRUYXJnZXQgPSBldnQucmVsYXRlZFRhcmdldDsgLy8gSWYgZm9jdXMgbW92ZXMgb3V0c2lkZSB0aGUgbWVudSBvciB0b2dnbGVyLCB0aGVuIGNsb3NlIG1lbnVcblxuICAgICAgaWYgKHRoaXMudmlzaWJsZSAmJiAhY29udGFpbnModGhpcy4kcmVmcy5tZW51LCByZWxhdGVkVGFyZ2V0KSAmJiAhY29udGFpbnModGhpcy50b2dnbGVyLCByZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgICB2YXIgZG9IaWRlID0gZnVuY3Rpb24gZG9IaWRlKCkge1xuICAgICAgICAgIF90aGlzMy52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgIH07IC8vIFdoZW4gd2UgYXJlIGluIGEgbmF2YmFyICh3aGljaCBoYXMgYmVlbiByZXNwb25zaXZlbHkgc3RhY2tlZCksIHdlXG4gICAgICAgIC8vIGRlbGF5IHRoZSBkcm9wZG93bidzIGNsb3Npbmcgc28gdGhhdCB0aGUgbmV4dCBlbGVtZW50IGhhcyBhIGNoYW5jZVxuICAgICAgICAvLyB0byBoYXZlIGl0J3MgY2xpY2sgaGFuZGxlciBmaXJlZCAoaW4gY2FzZSBpdCdzIHBvc2l0aW9uIG1vdmVzIG9uXG4gICAgICAgIC8vIHRoZSBzY3JlZW4gZG8gdG8gYSBuYXZiYXIgbWVudSBhYm92ZSBpdCBjb2xsYXBzaW5nKVxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYm9vdHN0cmFwLXZ1ZS9ib290c3RyYXAtdnVlL2lzc3Vlcy80MTEzXG5cblxuICAgICAgICB0aGlzLmluTmF2YmFyID8gc2V0VGltZW91dChkb0hpZGUsIEZPQ1VTT1VUX0RFTEFZKSA6IGRvSGlkZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8gS2V5Ym9hcmQgbmF2XG4gICAgZm9jdXNOZXh0OiBmdW5jdGlvbiBmb2N1c05leHQoZXZ0LCB1cCkge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICAgIC8vIElnbm9yZSBrZXkgdXAvZG93biBvbiBmb3JtIGVsZW1lbnRzXG4gICAgICBpZiAoIXRoaXMudmlzaWJsZSB8fCBldnQgJiYgY2xvc2VzdChTZWxlY3Rvci5GT1JNX0NISUxELCBldnQudGFyZ2V0KSkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogc2hvdWxkIG5ldmVyIGhhcHBlbiAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgaXRlbXMgPSBfdGhpczQuZ2V0SXRlbXMoKTtcblxuICAgICAgICBpZiAoaXRlbXMubGVuZ3RoIDwgMSkge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBzaG91bGQgbmV2ZXIgaGFwcGVuICovXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGluZGV4ID0gaXRlbXMuaW5kZXhPZihldnQudGFyZ2V0KTtcblxuICAgICAgICBpZiAodXAgJiYgaW5kZXggPiAwKSB7XG4gICAgICAgICAgaW5kZXgtLTtcbiAgICAgICAgfSBlbHNlIGlmICghdXAgJiYgaW5kZXggPCBpdGVtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogc2hvdWxkIG5ldmVyIGhhcHBlbiAqL1xuICAgICAgICAgIGluZGV4ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzNC5mb2N1c0l0ZW0oaW5kZXgsIGl0ZW1zKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZm9jdXNJdGVtOiBmdW5jdGlvbiBmb2N1c0l0ZW0oaWR4LCBpdGVtcykge1xuICAgICAgdmFyIGVsID0gaXRlbXMuZmluZChmdW5jdGlvbiAoZWwsIGkpIHtcbiAgICAgICAgcmV0dXJuIGkgPT09IGlkeDtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoZWwgJiYgZWwuZm9jdXMpIHtcbiAgICAgICAgZWwuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGdldEl0ZW1zOiBmdW5jdGlvbiBnZXRJdGVtcygpIHtcbiAgICAgIC8vIEdldCBhbGwgaXRlbXNcbiAgICAgIHJldHVybiBmaWx0ZXJWaXNpYmxlcyhzZWxlY3RBbGwoU2VsZWN0b3IuSVRFTV9TRUxFQ1RPUiwgdGhpcy4kcmVmcy5tZW51KSk7XG4gICAgfSxcbiAgICBmb2N1c01lbnU6IGZ1bmN0aW9uIGZvY3VzTWVudSgpIHtcbiAgICAgIHRoaXMuJHJlZnMubWVudS5mb2N1cyAmJiB0aGlzLiRyZWZzLm1lbnUuZm9jdXMoKTtcbiAgICB9LFxuICAgIGZvY3VzVG9nZ2xlcjogZnVuY3Rpb24gZm9jdXNUb2dnbGVyKCkge1xuICAgICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRvZ2dsZXIgPSBfdGhpczUudG9nZ2xlcjtcblxuICAgICAgICBpZiAodG9nZ2xlciAmJiB0b2dnbGVyLmZvY3VzKSB7XG4gICAgICAgICAgdG9nZ2xlci5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vbWl4aW5zL2Ryb3Bkb3duLmpzXG4vLyBtb2R1bGUgaWQgPSAxMjZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///126\n"); /***/ }), /* 127 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BDropdownItemButton; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_normalize_slot__ = __webpack_require__(5);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\nvar props = {\n active: {\n type: Boolean,\n default: false\n },\n activeClass: {\n type: String,\n default: 'active'\n },\n disabled: {\n type: Boolean,\n default: false\n },\n variant: {\n type: String,\n default: null\n }\n}; // @vue/component\n\nvar BDropdownItemButton =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BDropdownItemButton',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_normalize_slot__[\"a\" /* default */]],\n inheritAttrs: false,\n inject: {\n bvDropdown: {\n default: null\n }\n },\n props: props,\n methods: {\n closeDropdown: function closeDropdown() {\n if (this.bvDropdown) {\n this.bvDropdown.hide(true);\n }\n },\n onClick: function onClick(evt) {\n this.$emit('click', evt);\n this.closeDropdown();\n }\n },\n render: function render(h) {\n var _class;\n\n return h('li', {\n attrs: {\n role: 'presentation'\n }\n }, [h('button', {\n staticClass: 'dropdown-item',\n class: (_class = {}, _defineProperty(_class, this.activeClass, this.active), _defineProperty(_class, \"text-\".concat(this.variant), this.variant && !(this.active || this.disabled)), _class),\n attrs: _objectSpread({}, this.$attrs, {\n role: 'menuitem',\n type: 'button',\n disabled: this.disabled\n }),\n on: {\n click: this.onClick\n },\n ref: 'button'\n }, this.normalizeSlot('default'))]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1pdGVtLWJ1dHRvbi5qcz9lMDcyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUMwQjtBQUNyRDtBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsdUVBQWlCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMjcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgbm9tYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JztcbmV4cG9ydCB2YXIgcHJvcHMgPSB7XG4gIGFjdGl2ZToge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgYWN0aXZlQ2xhc3M6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ2FjdGl2ZSdcbiAgfSxcbiAgZGlzYWJsZWQ6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIHZhcmlhbnQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9XG59OyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJEcm9wZG93bkl0ZW1CdXR0b24gPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCRHJvcGRvd25JdGVtQnV0dG9uJyxcbiAgbWl4aW5zOiBbbm9tYWxpemVTbG90TWl4aW5dLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBpbmplY3Q6IHtcbiAgICBidkRyb3Bkb3duOiB7XG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfVxuICB9LFxuICBwcm9wczogcHJvcHMsXG4gIG1ldGhvZHM6IHtcbiAgICBjbG9zZURyb3Bkb3duOiBmdW5jdGlvbiBjbG9zZURyb3Bkb3duKCkge1xuICAgICAgaWYgKHRoaXMuYnZEcm9wZG93bikge1xuICAgICAgICB0aGlzLmJ2RHJvcGRvd24uaGlkZSh0cnVlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soZXZ0KSB7XG4gICAgICB0aGlzLiRlbWl0KCdjbGljaycsIGV2dCk7XG4gICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgX2NsYXNzO1xuXG4gICAgcmV0dXJuIGgoJ2xpJywge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcm9sZTogJ3ByZXNlbnRhdGlvbidcbiAgICAgIH1cbiAgICB9LCBbaCgnYnV0dG9uJywge1xuICAgICAgc3RhdGljQ2xhc3M6ICdkcm9wZG93bi1pdGVtJyxcbiAgICAgIGNsYXNzOiAoX2NsYXNzID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3MsIHRoaXMuYWN0aXZlQ2xhc3MsIHRoaXMuYWN0aXZlKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJ0ZXh0LVwiLmNvbmNhdCh0aGlzLnZhcmlhbnQpLCB0aGlzLnZhcmlhbnQgJiYgISh0aGlzLmFjdGl2ZSB8fCB0aGlzLmRpc2FibGVkKSksIF9jbGFzcyksXG4gICAgICBhdHRyczogX29iamVjdFNwcmVhZCh7fSwgdGhpcy4kYXR0cnMsIHtcbiAgICAgICAgcm9sZTogJ21lbnVpdGVtJyxcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkXG4gICAgICB9KSxcbiAgICAgIG9uOiB7XG4gICAgICAgIGNsaWNrOiB0aGlzLm9uQ2xpY2tcbiAgICAgIH0sXG4gICAgICByZWY6ICdidXR0b24nXG4gICAgfSwgdGhpcy5ub3JtYWxpemVTbG90KCdkZWZhdWx0JykpXSk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24taXRlbS1idXR0b24uanNcbi8vIG1vZHVsZSBpZCA9IDEyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///127\n"); +eval("/* WEBPACK VAR INJECTION */(function(global) {/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.0\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Popper);\n//# sourceMappingURL=popper.js.map\n\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(25)))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcG9wcGVyLmpzL2Rpc3QvZXNtL3BvcHBlci5qcz82NjBjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUIsa0NBQWtDO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxJQUFJO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0QixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsZUFBZTtBQUMxQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsY0FBYyxRQUFRO0FBQ3RCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0QixjQUFjLE9BQU87QUFDckIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFlBQVk7QUFDdkIsV0FBVyxRQUFRO0FBQ25CLFlBQVksT0FBTztBQUNuQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxvQkFBb0I7QUFDL0I7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWSxPQUFPO0FBQ25COztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixrQkFBa0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7OztBQU1EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsc0JBQXNCO0FBQ3ZDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFlBQVk7QUFDdkIsWUFBWSxPQUFPO0FBQ25CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsY0FBYyxRQUFRO0FBQ3RCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsYUFBYSxRQUFRO0FBQ3JCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFlBQVk7QUFDdkIsV0FBVyxZQUFZO0FBQ3ZCLFdBQVcsT0FBTztBQUNsQixXQUFXLFlBQVk7QUFDdkIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsb0JBQW9CO0FBQ3BCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsWUFBWTtBQUN2QixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE1BQU07QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFdBQVc7QUFDdEIsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsT0FBTztBQUNsQixhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjO0FBQ2QsbUJBQW1CO0FBQ25CLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixxQkFBcUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLGdCQUFnQjs7QUFFNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzRUFBc0UsZ0JBQWdCOztBQUV0RjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0QixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFlBQVk7QUFDdkIsV0FBVyxZQUFZO0FBQ3ZCLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCLHlEQUF5RDs7QUFFOUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxRQUFRO0FBQ3RCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0I7QUFDL0IsMkJBQTJCO0FBQzNCLGdDQUFnQzs7QUFFaEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsZ0RBQWdEOztBQUVoRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVixVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLFFBQVE7QUFDdEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsdUNBQXVDOztBQUV2QztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxjQUFjO0FBQzVCO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdEO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QixHQUFHOztBQUVIOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhCQUE4QjtBQUM5Qiw0QkFBNEI7QUFDNUI7O0FBRUEscUNBQXFDO0FBQ3JDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFdBQVc7QUFDekIsY0FBYyxPQUFPO0FBQ3JCLGFBQWEsV0FBVztBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QjtBQUNBLGVBQWUsUUFBUTtBQUN2QjtBQUNBLGVBQWUsV0FBVztBQUMxQjtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0EsZUFBZSxjQUFjO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQSxjQUFjLE1BQU07QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLG1CQUFtQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEI7QUFDQSxlQUFlLFFBQVE7QUFDdkI7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEI7QUFDQSxlQUFlLFFBQVE7QUFDdkI7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQSxlQUFlLG1CQUFtQjtBQUNsQztBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQSxjQUFjLGFBQWE7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxtQkFBbUI7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QjtBQUNBLGVBQWUsUUFBUTtBQUN2QjtBQUNBLGVBQWUsV0FBVztBQUMxQjtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QjtBQUNBLGVBQWUsUUFBUTtBQUN2QjtBQUNBLGVBQWUsV0FBVztBQUMxQjtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEI7QUFDQSxlQUFlLFFBQVE7QUFDdkI7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0EsZUFBZSxTQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixjQUFjLFFBQVE7QUFDdEIsY0FBYyxRQUFRO0FBQ3RCLGNBQWMsWUFBWTtBQUMxQixjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBLElBQUk7QUFDSjtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGtCQUFrQjtBQUM5QjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZLFFBQVE7QUFDcEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxXQUFXO0FBQ3RCOztBQUVBO0FBQ0E7QUFDQSxXQUFXLFdBQVc7QUFDdEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSx3QkFBd0I7QUFDckMsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsY0FBYztBQUNkLDhCQUE4Qjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCLGlEQUFpRCx1Q0FBdUMsa0RBQWtEO0FBQzFJLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxTQUFTO0FBQ3ZCO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFZSwrREFBTSxFQUFDO0FBQ3RCIiwiZmlsZSI6IjEyNy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiFcbiAqIEBmaWxlT3ZlcnZpZXcgS2lja2FzcyBsaWJyYXJ5IHRvIGNyZWF0ZSBhbmQgcGxhY2UgcG9wcGVycyBuZWFyIHRoZWlyIHJlZmVyZW5jZSBlbGVtZW50cy5cbiAqIEB2ZXJzaW9uIDEuMTYuMFxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAoYykgMjAxNiBGZWRlcmljbyBaaXZvbG8gYW5kIGNvbnRyaWJ1dG9yc1xuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cbnZhciBpc0Jyb3dzZXIgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnO1xuXG52YXIgdGltZW91dER1cmF0aW9uID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbG9uZ2VyVGltZW91dEJyb3dzZXJzID0gWydFZGdlJywgJ1RyaWRlbnQnLCAnRmlyZWZveCddO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxvbmdlclRpbWVvdXRCcm93c2Vycy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGlmIChpc0Jyb3dzZXIgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKGxvbmdlclRpbWVvdXRCcm93c2Vyc1tpXSkgPj0gMCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufSgpO1xuXG5mdW5jdGlvbiBtaWNyb3Rhc2tEZWJvdW5jZShmbikge1xuICB2YXIgY2FsbGVkID0gZmFsc2U7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGNhbGxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjYWxsZWQgPSB0cnVlO1xuICAgIHdpbmRvdy5Qcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhbGxlZCA9IGZhbHNlO1xuICAgICAgZm4oKTtcbiAgICB9KTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gdGFza0RlYm91bmNlKGZuKSB7XG4gIHZhciBzY2hlZHVsZWQgPSBmYWxzZTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXNjaGVkdWxlZCkge1xuICAgICAgc2NoZWR1bGVkID0gdHJ1ZTtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBzY2hlZHVsZWQgPSBmYWxzZTtcbiAgICAgICAgZm4oKTtcbiAgICAgIH0sIHRpbWVvdXREdXJhdGlvbik7XG4gICAgfVxuICB9O1xufVxuXG52YXIgc3VwcG9ydHNNaWNyb1Rhc2tzID0gaXNCcm93c2VyICYmIHdpbmRvdy5Qcm9taXNlO1xuXG4vKipcbiogQ3JlYXRlIGEgZGVib3VuY2VkIHZlcnNpb24gb2YgYSBtZXRob2QsIHRoYXQncyBhc3luY2hyb25vdXNseSBkZWZlcnJlZFxuKiBidXQgY2FsbGVkIGluIHRoZSBtaW5pbXVtIHRpbWUgcG9zc2libGUuXG4qXG4qIEBtZXRob2RcbiogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuKiBAYXJndW1lbnQge0Z1bmN0aW9ufSBmblxuKiBAcmV0dXJucyB7RnVuY3Rpb259XG4qL1xudmFyIGRlYm91bmNlID0gc3VwcG9ydHNNaWNyb1Rhc2tzID8gbWljcm90YXNrRGVib3VuY2UgOiB0YXNrRGVib3VuY2U7XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGdpdmVuIHZhcmlhYmxlIGlzIGEgZnVuY3Rpb25cbiAqIEBtZXRob2RcbiAqIEBtZW1iZXJvZiBQb3BwZXIuVXRpbHNcbiAqIEBhcmd1bWVudCB7QW55fSBmdW5jdGlvblRvQ2hlY2sgLSB2YXJpYWJsZSB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IGFuc3dlciB0bzogaXMgYSBmdW5jdGlvbj9cbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbihmdW5jdGlvblRvQ2hlY2spIHtcbiAgdmFyIGdldFR5cGUgPSB7fTtcbiAgcmV0dXJuIGZ1bmN0aW9uVG9DaGVjayAmJiBnZXRUeXBlLnRvU3RyaW5nLmNhbGwoZnVuY3Rpb25Ub0NoZWNrKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbn1cblxuLyoqXG4gKiBHZXQgQ1NTIGNvbXB1dGVkIHByb3BlcnR5IG9mIHRoZSBnaXZlbiBlbGVtZW50XG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAYXJndW1lbnQge0VlbWVudH0gZWxlbWVudFxuICogQGFyZ3VtZW50IHtTdHJpbmd9IHByb3BlcnR5XG4gKi9cbmZ1bmN0aW9uIGdldFN0eWxlQ29tcHV0ZWRQcm9wZXJ0eShlbGVtZW50LCBwcm9wZXJ0eSkge1xuICBpZiAoZWxlbWVudC5ub2RlVHlwZSAhPT0gMSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICAvLyBOT1RFOiAxIERPTSBhY2Nlc3MgaGVyZVxuICB2YXIgd2luZG93ID0gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuICB2YXIgY3NzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgbnVsbCk7XG4gIHJldHVybiBwcm9wZXJ0eSA/IGNzc1twcm9wZXJ0eV0gOiBjc3M7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcGFyZW50Tm9kZSBvciB0aGUgaG9zdCBvZiB0aGUgZWxlbWVudFxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtFbGVtZW50fSBlbGVtZW50XG4gKiBAcmV0dXJucyB7RWxlbWVudH0gcGFyZW50XG4gKi9cbmZ1bmN0aW9uIGdldFBhcmVudE5vZGUoZWxlbWVudCkge1xuICBpZiAoZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0hUTUwnKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIGVsZW1lbnQucGFyZW50Tm9kZSB8fCBlbGVtZW50Lmhvc3Q7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgc2Nyb2xsaW5nIHBhcmVudCBvZiB0aGUgZ2l2ZW4gZWxlbWVudFxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtFbGVtZW50fSBlbGVtZW50XG4gKiBAcmV0dXJucyB7RWxlbWVudH0gc2Nyb2xsIHBhcmVudFxuICovXG5mdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQoZWxlbWVudCkge1xuICAvLyBSZXR1cm4gYm9keSwgYGdldFNjcm9sbGAgd2lsbCB0YWtlIGNhcmUgdG8gZ2V0IHRoZSBjb3JyZWN0IGBzY3JvbGxUb3BgIGZyb20gaXRcbiAgaWYgKCFlbGVtZW50KSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmJvZHk7XG4gIH1cblxuICBzd2l0Y2ggKGVsZW1lbnQubm9kZU5hbWUpIHtcbiAgICBjYXNlICdIVE1MJzpcbiAgICBjYXNlICdCT0RZJzpcbiAgICAgIHJldHVybiBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgICBjYXNlICcjZG9jdW1lbnQnOlxuICAgICAgcmV0dXJuIGVsZW1lbnQuYm9keTtcbiAgfVxuXG4gIC8vIEZpcmVmb3ggd2FudCB1cyB0byBjaGVjayBgLXhgIGFuZCBgLXlgIHZhcmlhdGlvbnMgYXMgd2VsbFxuXG4gIHZhciBfZ2V0U3R5bGVDb21wdXRlZFByb3AgPSBnZXRTdHlsZUNvbXB1dGVkUHJvcGVydHkoZWxlbWVudCksXG4gICAgICBvdmVyZmxvdyA9IF9nZXRTdHlsZUNvbXB1dGVkUHJvcC5vdmVyZmxvdyxcbiAgICAgIG92ZXJmbG93WCA9IF9nZXRTdHlsZUNvbXB1dGVkUHJvcC5vdmVyZmxvd1gsXG4gICAgICBvdmVyZmxvd1kgPSBfZ2V0U3R5bGVDb21wdXRlZFByb3Aub3ZlcmZsb3dZO1xuXG4gIGlmICgvKGF1dG98c2Nyb2xsfG92ZXJsYXkpLy50ZXN0KG92ZXJmbG93ICsgb3ZlcmZsb3dZICsgb3ZlcmZsb3dYKSkge1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgcmV0dXJuIGdldFNjcm9sbFBhcmVudChnZXRQYXJlbnROb2RlKGVsZW1lbnQpKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSByZWZlcmVuY2Ugbm9kZSBvZiB0aGUgcmVmZXJlbmNlIG9iamVjdCwgb3IgdGhlIHJlZmVyZW5jZSBvYmplY3QgaXRzZWxmLlxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQHBhcmFtIHtFbGVtZW50fE9iamVjdH0gcmVmZXJlbmNlIC0gdGhlIHJlZmVyZW5jZSBlbGVtZW50ICh0aGUgcG9wcGVyIHdpbGwgYmUgcmVsYXRpdmUgdG8gdGhpcylcbiAqIEByZXR1cm5zIHtFbGVtZW50fSBwYXJlbnRcbiAqL1xuZnVuY3Rpb24gZ2V0UmVmZXJlbmNlTm9kZShyZWZlcmVuY2UpIHtcbiAgcmV0dXJuIHJlZmVyZW5jZSAmJiByZWZlcmVuY2UucmVmZXJlbmNlTm9kZSA/IHJlZmVyZW5jZS5yZWZlcmVuY2VOb2RlIDogcmVmZXJlbmNlO1xufVxuXG52YXIgaXNJRTExID0gaXNCcm93c2VyICYmICEhKHdpbmRvdy5NU0lucHV0TWV0aG9kQ29udGV4dCAmJiBkb2N1bWVudC5kb2N1bWVudE1vZGUpO1xudmFyIGlzSUUxMCA9IGlzQnJvd3NlciAmJiAvTVNJRSAxMC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBicm93c2VyIGlzIEludGVybmV0IEV4cGxvcmVyXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAcGFyYW0ge051bWJlcn0gdmVyc2lvbiB0byBjaGVja1xuICogQHJldHVybnMge0Jvb2xlYW59IGlzSUVcbiAqL1xuZnVuY3Rpb24gaXNJRSh2ZXJzaW9uKSB7XG4gIGlmICh2ZXJzaW9uID09PSAxMSkge1xuICAgIHJldHVybiBpc0lFMTE7XG4gIH1cbiAgaWYgKHZlcnNpb24gPT09IDEwKSB7XG4gICAgcmV0dXJuIGlzSUUxMDtcbiAgfVxuICByZXR1cm4gaXNJRTExIHx8IGlzSUUxMDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvZmZzZXQgcGFyZW50IG9mIHRoZSBnaXZlbiBlbGVtZW50XG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAYXJndW1lbnQge0VsZW1lbnR9IGVsZW1lbnRcbiAqIEByZXR1cm5zIHtFbGVtZW50fSBvZmZzZXQgcGFyZW50XG4gKi9cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50KSB7XG4gIGlmICghZWxlbWVudCkge1xuICAgIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gIH1cblxuICB2YXIgbm9PZmZzZXRQYXJlbnQgPSBpc0lFKDEwKSA/IGRvY3VtZW50LmJvZHkgOiBudWxsO1xuXG4gIC8vIE5PVEU6IDEgRE9NIGFjY2VzcyBoZXJlXG4gIHZhciBvZmZzZXRQYXJlbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudCB8fCBudWxsO1xuICAvLyBTa2lwIGhpZGRlbiBlbGVtZW50cyB3aGljaCBkb24ndCBoYXZlIGFuIG9mZnNldFBhcmVudFxuICB3aGlsZSAob2Zmc2V0UGFyZW50ID09PSBub09mZnNldFBhcmVudCAmJiBlbGVtZW50Lm5leHRFbGVtZW50U2libGluZykge1xuICAgIG9mZnNldFBhcmVudCA9IChlbGVtZW50ID0gZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcpLm9mZnNldFBhcmVudDtcbiAgfVxuXG4gIHZhciBub2RlTmFtZSA9IG9mZnNldFBhcmVudCAmJiBvZmZzZXRQYXJlbnQubm9kZU5hbWU7XG5cbiAgaWYgKCFub2RlTmFtZSB8fCBub2RlTmFtZSA9PT0gJ0JPRFknIHx8IG5vZGVOYW1lID09PSAnSFRNTCcpIHtcbiAgICByZXR1cm4gZWxlbWVudCA/IGVsZW1lbnQub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gIH1cblxuICAvLyAub2Zmc2V0UGFyZW50IHdpbGwgcmV0dXJuIHRoZSBjbG9zZXN0IFRILCBURCBvciBUQUJMRSBpbiBjYXNlXG4gIC8vIG5vIG9mZnNldFBhcmVudCBpcyBwcmVzZW50LCBJIGhhdGUgdGhpcyBqb2IuLi5cbiAgaWYgKFsnVEgnLCAnVEQnLCAnVEFCTEUnXS5pbmRleE9mKG9mZnNldFBhcmVudC5ub2RlTmFtZSkgIT09IC0xICYmIGdldFN0eWxlQ29tcHV0ZWRQcm9wZXJ0eShvZmZzZXRQYXJlbnQsICdwb3NpdGlvbicpID09PSAnc3RhdGljJykge1xuICAgIHJldHVybiBnZXRPZmZzZXRQYXJlbnQob2Zmc2V0UGFyZW50KTtcbiAgfVxuXG4gIHJldHVybiBvZmZzZXRQYXJlbnQ7XG59XG5cbmZ1bmN0aW9uIGlzT2Zmc2V0Q29udGFpbmVyKGVsZW1lbnQpIHtcbiAgdmFyIG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZTtcblxuICBpZiAobm9kZU5hbWUgPT09ICdCT0RZJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gbm9kZU5hbWUgPT09ICdIVE1MJyB8fCBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCkgPT09IGVsZW1lbnQ7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIHJvb3Qgbm9kZSAoZG9jdW1lbnQsIHNoYWRvd0RPTSByb290KSBvZiB0aGUgZ2l2ZW4gZWxlbWVudFxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtFbGVtZW50fSBub2RlXG4gKiBAcmV0dXJucyB7RWxlbWVudH0gcm9vdCBub2RlXG4gKi9cbmZ1bmN0aW9uIGdldFJvb3Qobm9kZSkge1xuICBpZiAobm9kZS5wYXJlbnROb2RlICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIGdldFJvb3Qobm9kZS5wYXJlbnROb2RlKTtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufVxuXG4vKipcbiAqIEZpbmRzIHRoZSBvZmZzZXQgcGFyZW50IGNvbW1vbiB0byB0aGUgdHdvIHByb3ZpZGVkIG5vZGVzXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAYXJndW1lbnQge0VsZW1lbnR9IGVsZW1lbnQxXG4gKiBAYXJndW1lbnQge0VsZW1lbnR9IGVsZW1lbnQyXG4gKiBAcmV0dXJucyB7RWxlbWVudH0gY29tbW9uIG9mZnNldCBwYXJlbnRcbiAqL1xuZnVuY3Rpb24gZmluZENvbW1vbk9mZnNldFBhcmVudChlbGVtZW50MSwgZWxlbWVudDIpIHtcbiAgLy8gVGhpcyBjaGVjayBpcyBuZWVkZWQgdG8gYXZvaWQgZXJyb3JzIGluIGNhc2Ugb25lIG9mIHRoZSBlbGVtZW50cyBpc24ndCBkZWZpbmVkIGZvciBhbnkgcmVhc29uXG4gIGlmICghZWxlbWVudDEgfHwgIWVsZW1lbnQxLm5vZGVUeXBlIHx8ICFlbGVtZW50MiB8fCAhZWxlbWVudDIubm9kZVR5cGUpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICB9XG5cbiAgLy8gSGVyZSB3ZSBtYWtlIHN1cmUgdG8gZ2l2ZSBhcyBcInN0YXJ0XCIgdGhlIGVsZW1lbnQgdGhhdCBjb21lcyBmaXJzdCBpbiB0aGUgRE9NXG4gIHZhciBvcmRlciA9IGVsZW1lbnQxLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGVsZW1lbnQyKSAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HO1xuICB2YXIgc3RhcnQgPSBvcmRlciA/IGVsZW1lbnQxIDogZWxlbWVudDI7XG4gIHZhciBlbmQgPSBvcmRlciA/IGVsZW1lbnQyIDogZWxlbWVudDE7XG5cbiAgLy8gR2V0IGNvbW1vbiBhbmNlc3RvciBjb250YWluZXJcbiAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgcmFuZ2Uuc2V0U3RhcnQoc3RhcnQsIDApO1xuICByYW5nZS5zZXRFbmQoZW5kLCAwKTtcbiAgdmFyIGNvbW1vbkFuY2VzdG9yQ29udGFpbmVyID0gcmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXI7XG5cbiAgLy8gQm90aCBub2RlcyBhcmUgaW5zaWRlICNkb2N1bWVudFxuXG4gIGlmIChlbGVtZW50MSAhPT0gY29tbW9uQW5jZXN0b3JDb250YWluZXIgJiYgZWxlbWVudDIgIT09IGNvbW1vbkFuY2VzdG9yQ29udGFpbmVyIHx8IHN0YXJ0LmNvbnRhaW5zKGVuZCkpIHtcbiAgICBpZiAoaXNPZmZzZXRDb250YWluZXIoY29tbW9uQW5jZXN0b3JDb250YWluZXIpKSB7XG4gICAgICByZXR1cm4gY29tbW9uQW5jZXN0b3JDb250YWluZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldE9mZnNldFBhcmVudChjb21tb25BbmNlc3RvckNvbnRhaW5lcik7XG4gIH1cblxuICAvLyBvbmUgb2YgdGhlIG5vZGVzIGlzIGluc2lkZSBzaGFkb3dET00sIGZpbmQgd2hpY2ggb25lXG4gIHZhciBlbGVtZW50MXJvb3QgPSBnZXRSb290KGVsZW1lbnQxKTtcbiAgaWYgKGVsZW1lbnQxcm9vdC5ob3N0KSB7XG4gICAgcmV0dXJuIGZpbmRDb21tb25PZmZzZXRQYXJlbnQoZWxlbWVudDFyb290Lmhvc3QsIGVsZW1lbnQyKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmluZENvbW1vbk9mZnNldFBhcmVudChlbGVtZW50MSwgZ2V0Um9vdChlbGVtZW50MikuaG9zdCk7XG4gIH1cbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBzY3JvbGwgdmFsdWUgb2YgdGhlIGdpdmVuIGVsZW1lbnQgaW4gdGhlIGdpdmVuIHNpZGUgKHRvcCBhbmQgbGVmdClcbiAqIEBtZXRob2RcbiAqIEBtZW1iZXJvZiBQb3BwZXIuVXRpbHNcbiAqIEBhcmd1bWVudCB7RWxlbWVudH0gZWxlbWVudFxuICogQGFyZ3VtZW50IHtTdHJpbmd9IHNpZGUgYHRvcGAgb3IgYGxlZnRgXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBhbW91bnQgb2Ygc2Nyb2xsZWQgcGl4ZWxzXG4gKi9cbmZ1bmN0aW9uIGdldFNjcm9sbChlbGVtZW50KSB7XG4gIHZhciBzaWRlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAndG9wJztcblxuICB2YXIgdXBwZXJTaWRlID0gc2lkZSA9PT0gJ3RvcCcgPyAnc2Nyb2xsVG9wJyA6ICdzY3JvbGxMZWZ0JztcbiAgdmFyIG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZTtcblxuICBpZiAobm9kZU5hbWUgPT09ICdCT0RZJyB8fCBub2RlTmFtZSA9PT0gJ0hUTUwnKSB7XG4gICAgdmFyIGh0bWwgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIHZhciBzY3JvbGxpbmdFbGVtZW50ID0gZWxlbWVudC5vd25lckRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQgfHwgaHRtbDtcbiAgICByZXR1cm4gc2Nyb2xsaW5nRWxlbWVudFt1cHBlclNpZGVdO1xuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnRbdXBwZXJTaWRlXTtcbn1cblxuLypcbiAqIFN1bSBvciBzdWJ0cmFjdCB0aGUgZWxlbWVudCBzY3JvbGwgdmFsdWVzIChsZWZ0IGFuZCB0b3ApIGZyb20gYSBnaXZlbiByZWN0IG9iamVjdFxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQHBhcmFtIHtPYmplY3R9IHJlY3QgLSBSZWN0IG9iamVjdCB5b3Ugd2FudCB0byBjaGFuZ2VcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnQgLSBUaGUgZWxlbWVudCBmcm9tIHRoZSBmdW5jdGlvbiByZWFkcyB0aGUgc2Nyb2xsIHZhbHVlc1xuICogQHBhcmFtIHtCb29sZWFufSBzdWJ0cmFjdCAtIHNldCB0byB0cnVlIGlmIHlvdSB3YW50IHRvIHN1YnRyYWN0IHRoZSBzY3JvbGwgdmFsdWVzXG4gKiBAcmV0dXJuIHtPYmplY3R9IHJlY3QgLSBUaGUgbW9kaWZpZXIgcmVjdCBvYmplY3RcbiAqL1xuZnVuY3Rpb24gaW5jbHVkZVNjcm9sbChyZWN0LCBlbGVtZW50KSB7XG4gIHZhciBzdWJ0cmFjdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogZmFsc2U7XG5cbiAgdmFyIHNjcm9sbFRvcCA9IGdldFNjcm9sbChlbGVtZW50LCAndG9wJyk7XG4gIHZhciBzY3JvbGxMZWZ0ID0gZ2V0U2Nyb2xsKGVsZW1lbnQsICdsZWZ0Jyk7XG4gIHZhciBtb2RpZmllciA9IHN1YnRyYWN0ID8gLTEgOiAxO1xuICByZWN0LnRvcCArPSBzY3JvbGxUb3AgKiBtb2RpZmllcjtcbiAgcmVjdC5ib3R0b20gKz0gc2Nyb2xsVG9wICogbW9kaWZpZXI7XG4gIHJlY3QubGVmdCArPSBzY3JvbGxMZWZ0ICogbW9kaWZpZXI7XG4gIHJlY3QucmlnaHQgKz0gc2Nyb2xsTGVmdCAqIG1vZGlmaWVyO1xuICByZXR1cm4gcmVjdDtcbn1cblxuLypcbiAqIEhlbHBlciB0byBkZXRlY3QgYm9yZGVycyBvZiBhIGdpdmVuIGVsZW1lbnRcbiAqIEBtZXRob2RcbiAqIEBtZW1iZXJvZiBQb3BwZXIuVXRpbHNcbiAqIEBwYXJhbSB7Q1NTU3R5bGVEZWNsYXJhdGlvbn0gc3R5bGVzXG4gKiBSZXN1bHQgb2YgYGdldFN0eWxlQ29tcHV0ZWRQcm9wZXJ0eWAgb24gdGhlIGdpdmVuIGVsZW1lbnRcbiAqIEBwYXJhbSB7U3RyaW5nfSBheGlzIC0gYHhgIG9yIGB5YFxuICogQHJldHVybiB7bnVtYmVyfSBib3JkZXJzIC0gVGhlIGJvcmRlcnMgc2l6ZSBvZiB0aGUgZ2l2ZW4gYXhpc1xuICovXG5cbmZ1bmN0aW9uIGdldEJvcmRlcnNTaXplKHN0eWxlcywgYXhpcykge1xuICB2YXIgc2lkZUEgPSBheGlzID09PSAneCcgPyAnTGVmdCcgOiAnVG9wJztcbiAgdmFyIHNpZGVCID0gc2lkZUEgPT09ICdMZWZ0JyA/ICdSaWdodCcgOiAnQm90dG9tJztcblxuICByZXR1cm4gcGFyc2VGbG9hdChzdHlsZXNbJ2JvcmRlcicgKyBzaWRlQSArICdXaWR0aCddLCAxMCkgKyBwYXJzZUZsb2F0KHN0eWxlc1snYm9yZGVyJyArIHNpZGVCICsgJ1dpZHRoJ10sIDEwKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2l6ZShheGlzLCBib2R5LCBodG1sLCBjb21wdXRlZFN0eWxlKSB7XG4gIHJldHVybiBNYXRoLm1heChib2R5WydvZmZzZXQnICsgYXhpc10sIGJvZHlbJ3Njcm9sbCcgKyBheGlzXSwgaHRtbFsnY2xpZW50JyArIGF4aXNdLCBodG1sWydvZmZzZXQnICsgYXhpc10sIGh0bWxbJ3Njcm9sbCcgKyBheGlzXSwgaXNJRSgxMCkgPyBwYXJzZUludChodG1sWydvZmZzZXQnICsgYXhpc10pICsgcGFyc2VJbnQoY29tcHV0ZWRTdHlsZVsnbWFyZ2luJyArIChheGlzID09PSAnSGVpZ2h0JyA/ICdUb3AnIDogJ0xlZnQnKV0pICsgcGFyc2VJbnQoY29tcHV0ZWRTdHlsZVsnbWFyZ2luJyArIChheGlzID09PSAnSGVpZ2h0JyA/ICdCb3R0b20nIDogJ1JpZ2h0JyldKSA6IDApO1xufVxuXG5mdW5jdGlvbiBnZXRXaW5kb3dTaXplcyhkb2N1bWVudCkge1xuICB2YXIgYm9keSA9IGRvY3VtZW50LmJvZHk7XG4gIHZhciBodG1sID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICB2YXIgY29tcHV0ZWRTdHlsZSA9IGlzSUUoMTApICYmIGdldENvbXB1dGVkU3R5bGUoaHRtbCk7XG5cbiAgcmV0dXJuIHtcbiAgICBoZWlnaHQ6IGdldFNpemUoJ0hlaWdodCcsIGJvZHksIGh0bWwsIGNvbXB1dGVkU3R5bGUpLFxuICAgIHdpZHRoOiBnZXRTaXplKCdXaWR0aCcsIGJvZHksIGh0bWwsIGNvbXB1dGVkU3R5bGUpXG4gIH07XG59XG5cbnZhciBjbGFzc0NhbGxDaGVjayA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59O1xuXG52YXIgY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gICAgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgICBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH07XG59KCk7XG5cblxuXG5cblxudmFyIGRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gKG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59O1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufTtcblxuLyoqXG4gKiBHaXZlbiBlbGVtZW50IG9mZnNldHMsIGdlbmVyYXRlIGFuIG91dHB1dCBzaW1pbGFyIHRvIGdldEJvdW5kaW5nQ2xpZW50UmVjdFxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtPYmplY3R9IG9mZnNldHNcbiAqIEByZXR1cm5zIHtPYmplY3R9IENsaWVudFJlY3QgbGlrZSBvdXRwdXRcbiAqL1xuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdChvZmZzZXRzKSB7XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb2Zmc2V0cywge1xuICAgIHJpZ2h0OiBvZmZzZXRzLmxlZnQgKyBvZmZzZXRzLndpZHRoLFxuICAgIGJvdHRvbTogb2Zmc2V0cy50b3AgKyBvZmZzZXRzLmhlaWdodFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgYm91bmRpbmcgY2xpZW50IHJlY3Qgb2YgZ2l2ZW4gZWxlbWVudFxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudFxuICogQHJldHVybiB7T2JqZWN0fSBjbGllbnQgcmVjdFxuICovXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IHt9O1xuXG4gIC8vIElFMTAgMTAgRklYOiBQbGVhc2UsIGRvbid0IGFzaywgdGhlIGVsZW1lbnQgaXNuJ3RcbiAgLy8gY29uc2lkZXJlZCBpbiBET00gaW4gc29tZSBjaXJjdW1zdGFuY2VzLi4uXG4gIC8vIFRoaXMgaXNuJ3QgcmVwcm9kdWNpYmxlIGluIElFMTAgY29tcGF0aWJpbGl0eSBtb2RlIG9mIElFMTFcbiAgdHJ5IHtcbiAgICBpZiAoaXNJRSgxMCkpIHtcbiAgICAgIHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgdmFyIHNjcm9sbFRvcCA9IGdldFNjcm9sbChlbGVtZW50LCAndG9wJyk7XG4gICAgICB2YXIgc2Nyb2xsTGVmdCA9IGdldFNjcm9sbChlbGVtZW50LCAnbGVmdCcpO1xuICAgICAgcmVjdC50b3AgKz0gc2Nyb2xsVG9wO1xuICAgICAgcmVjdC5sZWZ0ICs9IHNjcm9sbExlZnQ7XG4gICAgICByZWN0LmJvdHRvbSArPSBzY3JvbGxUb3A7XG4gICAgICByZWN0LnJpZ2h0ICs9IHNjcm9sbExlZnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0ge1xuICAgIGxlZnQ6IHJlY3QubGVmdCxcbiAgICB0b3A6IHJlY3QudG9wLFxuICAgIHdpZHRoOiByZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0LFxuICAgIGhlaWdodDogcmVjdC5ib3R0b20gLSByZWN0LnRvcFxuICB9O1xuXG4gIC8vIHN1YnRyYWN0IHNjcm9sbGJhciBzaXplIGZyb20gc2l6ZXNcbiAgdmFyIHNpemVzID0gZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0hUTUwnID8gZ2V0V2luZG93U2l6ZXMoZWxlbWVudC5vd25lckRvY3VtZW50KSA6IHt9O1xuICB2YXIgd2lkdGggPSBzaXplcy53aWR0aCB8fCBlbGVtZW50LmNsaWVudFdpZHRoIHx8IHJlc3VsdC53aWR0aDtcbiAgdmFyIGhlaWdodCA9IHNpemVzLmhlaWdodCB8fCBlbGVtZW50LmNsaWVudEhlaWdodCB8fCByZXN1bHQuaGVpZ2h0O1xuXG4gIHZhciBob3JpelNjcm9sbGJhciA9IGVsZW1lbnQub2Zmc2V0V2lkdGggLSB3aWR0aDtcbiAgdmFyIHZlcnRTY3JvbGxiYXIgPSBlbGVtZW50Lm9mZnNldEhlaWdodCAtIGhlaWdodDtcblxuICAvLyBpZiBhbiBoeXBvdGhldGljYWwgc2Nyb2xsYmFyIGlzIGRldGVjdGVkLCB3ZSBtdXN0IGJlIHN1cmUgaXQncyBub3QgYSBgYm9yZGVyYFxuICAvLyB3ZSBtYWtlIHRoaXMgY2hlY2sgY29uZGl0aW9uYWwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnNcbiAgaWYgKGhvcml6U2Nyb2xsYmFyIHx8IHZlcnRTY3JvbGxiYXIpIHtcbiAgICB2YXIgc3R5bGVzID0gZ2V0U3R5bGVDb21wdXRlZFByb3BlcnR5KGVsZW1lbnQpO1xuICAgIGhvcml6U2Nyb2xsYmFyIC09IGdldEJvcmRlcnNTaXplKHN0eWxlcywgJ3gnKTtcbiAgICB2ZXJ0U2Nyb2xsYmFyIC09IGdldEJvcmRlcnNTaXplKHN0eWxlcywgJ3knKTtcblxuICAgIHJlc3VsdC53aWR0aCAtPSBob3JpelNjcm9sbGJhcjtcbiAgICByZXN1bHQuaGVpZ2h0IC09IHZlcnRTY3JvbGxiYXI7XG4gIH1cblxuICByZXR1cm4gZ2V0Q2xpZW50UmVjdChyZXN1bHQpO1xufVxuXG5mdW5jdGlvbiBnZXRPZmZzZXRSZWN0UmVsYXRpdmVUb0FyYml0cmFyeU5vZGUoY2hpbGRyZW4sIHBhcmVudCkge1xuICB2YXIgZml4ZWRQb3NpdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogZmFsc2U7XG5cbiAgdmFyIGlzSUUxMCA9IGlzSUUoMTApO1xuICB2YXIgaXNIVE1MID0gcGFyZW50Lm5vZGVOYW1lID09PSAnSFRNTCc7XG4gIHZhciBjaGlsZHJlblJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoY2hpbGRyZW4pO1xuICB2YXIgcGFyZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChwYXJlbnQpO1xuICB2YXIgc2Nyb2xsUGFyZW50ID0gZ2V0U2Nyb2xsUGFyZW50KGNoaWxkcmVuKTtcblxuICB2YXIgc3R5bGVzID0gZ2V0U3R5bGVDb21wdXRlZFByb3BlcnR5KHBhcmVudCk7XG4gIHZhciBib3JkZXJUb3BXaWR0aCA9IHBhcnNlRmxvYXQoc3R5bGVzLmJvcmRlclRvcFdpZHRoLCAxMCk7XG4gIHZhciBib3JkZXJMZWZ0V2lkdGggPSBwYXJzZUZsb2F0KHN0eWxlcy5ib3JkZXJMZWZ0V2lkdGgsIDEwKTtcblxuICAvLyBJbiBjYXNlcyB3aGVyZSB0aGUgcGFyZW50IGlzIGZpeGVkLCB3ZSBtdXN0IGlnbm9yZSBuZWdhdGl2ZSBzY3JvbGwgaW4gb2Zmc2V0IGNhbGNcbiAgaWYgKGZpeGVkUG9zaXRpb24gJiYgaXNIVE1MKSB7XG4gICAgcGFyZW50UmVjdC50b3AgPSBNYXRoLm1heChwYXJlbnRSZWN0LnRvcCwgMCk7XG4gICAgcGFyZW50UmVjdC5sZWZ0ID0gTWF0aC5tYXgocGFyZW50UmVjdC5sZWZ0LCAwKTtcbiAgfVxuICB2YXIgb2Zmc2V0cyA9IGdldENsaWVudFJlY3Qoe1xuICAgIHRvcDogY2hpbGRyZW5SZWN0LnRvcCAtIHBhcmVudFJlY3QudG9wIC0gYm9yZGVyVG9wV2lkdGgsXG4gICAgbGVmdDogY2hpbGRyZW5SZWN0LmxlZnQgLSBwYXJlbnRSZWN0LmxlZnQgLSBib3JkZXJMZWZ0V2lkdGgsXG4gICAgd2lkdGg6IGNoaWxkcmVuUmVjdC53aWR0aCxcbiAgICBoZWlnaHQ6IGNoaWxkcmVuUmVjdC5oZWlnaHRcbiAgfSk7XG4gIG9mZnNldHMubWFyZ2luVG9wID0gMDtcbiAgb2Zmc2V0cy5tYXJnaW5MZWZ0ID0gMDtcblxuICAvLyBTdWJ0cmFjdCBtYXJnaW5zIG9mIGRvY3VtZW50RWxlbWVudCBpbiBjYXNlIGl0J3MgYmVpbmcgdXNlZCBhcyBwYXJlbnRcbiAgLy8gd2UgZG8gdGhpcyBvbmx5IG9uIEhUTUwgYmVjYXVzZSBpdCdzIHRoZSBvbmx5IGVsZW1lbnQgdGhhdCBiZWhhdmVzXG4gIC8vIGRpZmZlcmVudGx5IHdoZW4gbWFyZ2lucyBhcmUgYXBwbGllZCB0byBpdC4gVGhlIG1hcmdpbnMgYXJlIGluY2x1ZGVkIGluXG4gIC8vIHRoZSBib3ggb2YgdGhlIGRvY3VtZW50RWxlbWVudCwgaW4gdGhlIG90aGVyIGNhc2VzIG5vdC5cbiAgaWYgKCFpc0lFMTAgJiYgaXNIVE1MKSB7XG4gICAgdmFyIG1hcmdpblRvcCA9IHBhcnNlRmxvYXQoc3R5bGVzLm1hcmdpblRvcCwgMTApO1xuICAgIHZhciBtYXJnaW5MZWZ0ID0gcGFyc2VGbG9hdChzdHlsZXMubWFyZ2luTGVmdCwgMTApO1xuXG4gICAgb2Zmc2V0cy50b3AgLT0gYm9yZGVyVG9wV2lkdGggLSBtYXJnaW5Ub3A7XG4gICAgb2Zmc2V0cy5ib3R0b20gLT0gYm9yZGVyVG9wV2lkdGggLSBtYXJnaW5Ub3A7XG4gICAgb2Zmc2V0cy5sZWZ0IC09IGJvcmRlckxlZnRXaWR0aCAtIG1hcmdpbkxlZnQ7XG4gICAgb2Zmc2V0cy5yaWdodCAtPSBib3JkZXJMZWZ0V2lkdGggLSBtYXJnaW5MZWZ0O1xuXG4gICAgLy8gQXR0YWNoIG1hcmdpblRvcCBhbmQgbWFyZ2luTGVmdCBiZWNhdXNlIGluIHNvbWUgY2lyY3Vtc3RhbmNlcyB3ZSBtYXkgbmVlZCB0aGVtXG4gICAgb2Zmc2V0cy5tYXJnaW5Ub3AgPSBtYXJnaW5Ub3A7XG4gICAgb2Zmc2V0cy5tYXJnaW5MZWZ0ID0gbWFyZ2luTGVmdDtcbiAgfVxuXG4gIGlmIChpc0lFMTAgJiYgIWZpeGVkUG9zaXRpb24gPyBwYXJlbnQuY29udGFpbnMoc2Nyb2xsUGFyZW50KSA6IHBhcmVudCA9PT0gc2Nyb2xsUGFyZW50ICYmIHNjcm9sbFBhcmVudC5ub2RlTmFtZSAhPT0gJ0JPRFknKSB7XG4gICAgb2Zmc2V0cyA9IGluY2x1ZGVTY3JvbGwob2Zmc2V0cywgcGFyZW50KTtcbiAgfVxuXG4gIHJldHVybiBvZmZzZXRzO1xufVxuXG5mdW5jdGlvbiBnZXRWaWV3cG9ydE9mZnNldFJlY3RSZWxhdGl2ZVRvQXJ0Yml0cmFyeU5vZGUoZWxlbWVudCkge1xuICB2YXIgZXhjbHVkZVNjcm9sbCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogZmFsc2U7XG5cbiAgdmFyIGh0bWwgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICB2YXIgcmVsYXRpdmVPZmZzZXQgPSBnZXRPZmZzZXRSZWN0UmVsYXRpdmVUb0FyYml0cmFyeU5vZGUoZWxlbWVudCwgaHRtbCk7XG4gIHZhciB3aWR0aCA9IE1hdGgubWF4KGh0bWwuY2xpZW50V2lkdGgsIHdpbmRvdy5pbm5lcldpZHRoIHx8IDApO1xuICB2YXIgaGVpZ2h0ID0gTWF0aC5tYXgoaHRtbC5jbGllbnRIZWlnaHQsIHdpbmRvdy5pbm5lckhlaWdodCB8fCAwKTtcblxuICB2YXIgc2Nyb2xsVG9wID0gIWV4Y2x1ZGVTY3JvbGwgPyBnZXRTY3JvbGwoaHRtbCkgOiAwO1xuICB2YXIgc2Nyb2xsTGVmdCA9ICFleGNsdWRlU2Nyb2xsID8gZ2V0U2Nyb2xsKGh0bWwsICdsZWZ0JykgOiAwO1xuXG4gIHZhciBvZmZzZXQgPSB7XG4gICAgdG9wOiBzY3JvbGxUb3AgLSByZWxhdGl2ZU9mZnNldC50b3AgKyByZWxhdGl2ZU9mZnNldC5tYXJnaW5Ub3AsXG4gICAgbGVmdDogc2Nyb2xsTGVmdCAtIHJlbGF0aXZlT2Zmc2V0LmxlZnQgKyByZWxhdGl2ZU9mZnNldC5tYXJnaW5MZWZ0LFxuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9O1xuXG4gIHJldHVybiBnZXRDbGllbnRSZWN0KG9mZnNldCk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGdpdmVuIGVsZW1lbnQgaXMgZml4ZWQgb3IgaXMgaW5zaWRlIGEgZml4ZWQgcGFyZW50XG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAYXJndW1lbnQge0VsZW1lbnR9IGVsZW1lbnRcbiAqIEBhcmd1bWVudCB7RWxlbWVudH0gY3VzdG9tQ29udGFpbmVyXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gYW5zd2VyIHRvIFwiaXNGaXhlZD9cIlxuICovXG5mdW5jdGlvbiBpc0ZpeGVkKGVsZW1lbnQpIHtcbiAgdmFyIG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZTtcbiAgaWYgKG5vZGVOYW1lID09PSAnQk9EWScgfHwgbm9kZU5hbWUgPT09ICdIVE1MJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoZ2V0U3R5bGVDb21wdXRlZFByb3BlcnR5KGVsZW1lbnQsICdwb3NpdGlvbicpID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICBpZiAoIXBhcmVudE5vZGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGlzRml4ZWQocGFyZW50Tm9kZSk7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIGZpcnN0IHBhcmVudCBvZiBhbiBlbGVtZW50IHRoYXQgaGFzIGEgdHJhbnNmb3JtZWQgcHJvcGVydHkgZGVmaW5lZFxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtFbGVtZW50fSBlbGVtZW50XG4gKiBAcmV0dXJucyB7RWxlbWVudH0gZmlyc3QgdHJhbnNmb3JtZWQgcGFyZW50IG9yIGRvY3VtZW50RWxlbWVudFxuICovXG5cbmZ1bmN0aW9uIGdldEZpeGVkUG9zaXRpb25PZmZzZXRQYXJlbnQoZWxlbWVudCkge1xuICAvLyBUaGlzIGNoZWNrIGlzIG5lZWRlZCB0byBhdm9pZCBlcnJvcnMgaW4gY2FzZSBvbmUgb2YgdGhlIGVsZW1lbnRzIGlzbid0IGRlZmluZWQgZm9yIGFueSByZWFzb25cbiAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LnBhcmVudEVsZW1lbnQgfHwgaXNJRSgpKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgfVxuICB2YXIgZWwgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gIHdoaWxlIChlbCAmJiBnZXRTdHlsZUNvbXB1dGVkUHJvcGVydHkoZWwsICd0cmFuc2Zvcm0nKSA9PT0gJ25vbmUnKSB7XG4gICAgZWwgPSBlbC5wYXJlbnRFbGVtZW50O1xuICB9XG4gIHJldHVybiBlbCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG59XG5cbi8qKlxuICogQ29tcHV0ZWQgdGhlIGJvdW5kYXJpZXMgbGltaXRzIGFuZCByZXR1cm4gdGhlbVxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gcG9wcGVyXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSByZWZlcmVuY2VcbiAqIEBwYXJhbSB7bnVtYmVyfSBwYWRkaW5nXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBib3VuZGFyaWVzRWxlbWVudCAtIEVsZW1lbnQgdXNlZCB0byBkZWZpbmUgdGhlIGJvdW5kYXJpZXNcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gZml4ZWRQb3NpdGlvbiAtIElzIGluIGZpeGVkIHBvc2l0aW9uIG1vZGVcbiAqIEByZXR1cm5zIHtPYmplY3R9IENvb3JkaW5hdGVzIG9mIHRoZSBib3VuZGFyaWVzXG4gKi9cbmZ1bmN0aW9uIGdldEJvdW5kYXJpZXMocG9wcGVyLCByZWZlcmVuY2UsIHBhZGRpbmcsIGJvdW5kYXJpZXNFbGVtZW50KSB7XG4gIHZhciBmaXhlZFBvc2l0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiBmYWxzZTtcblxuICAvLyBOT1RFOiAxIERPTSBhY2Nlc3MgaGVyZVxuXG4gIHZhciBib3VuZGFyaWVzID0geyB0b3A6IDAsIGxlZnQ6IDAgfTtcbiAgdmFyIG9mZnNldFBhcmVudCA9IGZpeGVkUG9zaXRpb24gPyBnZXRGaXhlZFBvc2l0aW9uT2Zmc2V0UGFyZW50KHBvcHBlcikgOiBmaW5kQ29tbW9uT2Zmc2V0UGFyZW50KHBvcHBlciwgZ2V0UmVmZXJlbmNlTm9kZShyZWZlcmVuY2UpKTtcblxuICAvLyBIYW5kbGUgdmlld3BvcnQgY2FzZVxuICBpZiAoYm91bmRhcmllc0VsZW1lbnQgPT09ICd2aWV3cG9ydCcpIHtcbiAgICBib3VuZGFyaWVzID0gZ2V0Vmlld3BvcnRPZmZzZXRSZWN0UmVsYXRpdmVUb0FydGJpdHJhcnlOb2RlKG9mZnNldFBhcmVudCwgZml4ZWRQb3NpdGlvbik7XG4gIH0gZWxzZSB7XG4gICAgLy8gSGFuZGxlIG90aGVyIGNhc2VzIGJhc2VkIG9uIERPTSBlbGVtZW50IHVzZWQgYXMgYm91bmRhcmllc1xuICAgIHZhciBib3VuZGFyaWVzTm9kZSA9IHZvaWQgMDtcbiAgICBpZiAoYm91bmRhcmllc0VsZW1lbnQgPT09ICdzY3JvbGxQYXJlbnQnKSB7XG4gICAgICBib3VuZGFyaWVzTm9kZSA9IGdldFNjcm9sbFBhcmVudChnZXRQYXJlbnROb2RlKHJlZmVyZW5jZSkpO1xuICAgICAgaWYgKGJvdW5kYXJpZXNOb2RlLm5vZGVOYW1lID09PSAnQk9EWScpIHtcbiAgICAgICAgYm91bmRhcmllc05vZGUgPSBwb3BwZXIub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChib3VuZGFyaWVzRWxlbWVudCA9PT0gJ3dpbmRvdycpIHtcbiAgICAgIGJvdW5kYXJpZXNOb2RlID0gcG9wcGVyLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBib3VuZGFyaWVzTm9kZSA9IGJvdW5kYXJpZXNFbGVtZW50O1xuICAgIH1cblxuICAgIHZhciBvZmZzZXRzID0gZ2V0T2Zmc2V0UmVjdFJlbGF0aXZlVG9BcmJpdHJhcnlOb2RlKGJvdW5kYXJpZXNOb2RlLCBvZmZzZXRQYXJlbnQsIGZpeGVkUG9zaXRpb24pO1xuXG4gICAgLy8gSW4gY2FzZSBvZiBIVE1MLCB3ZSBuZWVkIGEgZGlmZmVyZW50IGNvbXB1dGF0aW9uXG4gICAgaWYgKGJvdW5kYXJpZXNOb2RlLm5vZGVOYW1lID09PSAnSFRNTCcgJiYgIWlzRml4ZWQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgdmFyIF9nZXRXaW5kb3dTaXplcyA9IGdldFdpbmRvd1NpemVzKHBvcHBlci5vd25lckRvY3VtZW50KSxcbiAgICAgICAgICBoZWlnaHQgPSBfZ2V0V2luZG93U2l6ZXMuaGVpZ2h0LFxuICAgICAgICAgIHdpZHRoID0gX2dldFdpbmRvd1NpemVzLndpZHRoO1xuXG4gICAgICBib3VuZGFyaWVzLnRvcCArPSBvZmZzZXRzLnRvcCAtIG9mZnNldHMubWFyZ2luVG9wO1xuICAgICAgYm91bmRhcmllcy5ib3R0b20gPSBoZWlnaHQgKyBvZmZzZXRzLnRvcDtcbiAgICAgIGJvdW5kYXJpZXMubGVmdCArPSBvZmZzZXRzLmxlZnQgLSBvZmZzZXRzLm1hcmdpbkxlZnQ7XG4gICAgICBib3VuZGFyaWVzLnJpZ2h0ID0gd2lkdGggKyBvZmZzZXRzLmxlZnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGZvciBhbGwgdGhlIG90aGVyIERPTSBlbGVtZW50cywgdGhpcyBvbmUgaXMgZ29vZFxuICAgICAgYm91bmRhcmllcyA9IG9mZnNldHM7XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIHBhZGRpbmdzXG4gIHBhZGRpbmcgPSBwYWRkaW5nIHx8IDA7XG4gIHZhciBpc1BhZGRpbmdOdW1iZXIgPSB0eXBlb2YgcGFkZGluZyA9PT0gJ251bWJlcic7XG4gIGJvdW5kYXJpZXMubGVmdCArPSBpc1BhZGRpbmdOdW1iZXIgPyBwYWRkaW5nIDogcGFkZGluZy5sZWZ0IHx8IDA7XG4gIGJvdW5kYXJpZXMudG9wICs9IGlzUGFkZGluZ051bWJlciA/IHBhZGRpbmcgOiBwYWRkaW5nLnRvcCB8fCAwO1xuICBib3VuZGFyaWVzLnJpZ2h0IC09IGlzUGFkZGluZ051bWJlciA/IHBhZGRpbmcgOiBwYWRkaW5nLnJpZ2h0IHx8IDA7XG4gIGJvdW5kYXJpZXMuYm90dG9tIC09IGlzUGFkZGluZ051bWJlciA/IHBhZGRpbmcgOiBwYWRkaW5nLmJvdHRvbSB8fCAwO1xuXG4gIHJldHVybiBib3VuZGFyaWVzO1xufVxuXG5mdW5jdGlvbiBnZXRBcmVhKF9yZWYpIHtcbiAgdmFyIHdpZHRoID0gX3JlZi53aWR0aCxcbiAgICAgIGhlaWdodCA9IF9yZWYuaGVpZ2h0O1xuXG4gIHJldHVybiB3aWR0aCAqIGhlaWdodDtcbn1cblxuLyoqXG4gKiBVdGlsaXR5IHVzZWQgdG8gdHJhbnNmb3JtIHRoZSBgYXV0b2AgcGxhY2VtZW50IHRvIHRoZSBwbGFjZW1lbnQgd2l0aCBtb3JlXG4gKiBhdmFpbGFibGUgc3BhY2UuXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAYXJndW1lbnQge09iamVjdH0gZGF0YSAtIFRoZSBkYXRhIG9iamVjdCBnZW5lcmF0ZWQgYnkgdXBkYXRlIG1ldGhvZFxuICogQGFyZ3VtZW50IHtPYmplY3R9IG9wdGlvbnMgLSBNb2RpZmllcnMgY29uZmlndXJhdGlvbiBhbmQgb3B0aW9uc1xuICogQHJldHVybnMge09iamVjdH0gVGhlIGRhdGEgb2JqZWN0LCBwcm9wZXJseSBtb2RpZmllZFxuICovXG5mdW5jdGlvbiBjb21wdXRlQXV0b1BsYWNlbWVudChwbGFjZW1lbnQsIHJlZlJlY3QsIHBvcHBlciwgcmVmZXJlbmNlLCBib3VuZGFyaWVzRWxlbWVudCkge1xuICB2YXIgcGFkZGluZyA9IGFyZ3VtZW50cy5sZW5ndGggPiA1ICYmIGFyZ3VtZW50c1s1XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzVdIDogMDtcblxuICBpZiAocGxhY2VtZW50LmluZGV4T2YoJ2F1dG8nKSA9PT0gLTEpIHtcbiAgICByZXR1cm4gcGxhY2VtZW50O1xuICB9XG5cbiAgdmFyIGJvdW5kYXJpZXMgPSBnZXRCb3VuZGFyaWVzKHBvcHBlciwgcmVmZXJlbmNlLCBwYWRkaW5nLCBib3VuZGFyaWVzRWxlbWVudCk7XG5cbiAgdmFyIHJlY3RzID0ge1xuICAgIHRvcDoge1xuICAgICAgd2lkdGg6IGJvdW5kYXJpZXMud2lkdGgsXG4gICAgICBoZWlnaHQ6IHJlZlJlY3QudG9wIC0gYm91bmRhcmllcy50b3BcbiAgICB9LFxuICAgIHJpZ2h0OiB7XG4gICAgICB3aWR0aDogYm91bmRhcmllcy5yaWdodCAtIHJlZlJlY3QucmlnaHQsXG4gICAgICBoZWlnaHQ6IGJvdW5kYXJpZXMuaGVpZ2h0XG4gICAgfSxcbiAgICBib3R0b206IHtcbiAgICAgIHdpZHRoOiBib3VuZGFyaWVzLndpZHRoLFxuICAgICAgaGVpZ2h0OiBib3VuZGFyaWVzLmJvdHRvbSAtIHJlZlJlY3QuYm90dG9tXG4gICAgfSxcbiAgICBsZWZ0OiB7XG4gICAgICB3aWR0aDogcmVmUmVjdC5sZWZ0IC0gYm91bmRhcmllcy5sZWZ0LFxuICAgICAgaGVpZ2h0OiBib3VuZGFyaWVzLmhlaWdodFxuICAgIH1cbiAgfTtcblxuICB2YXIgc29ydGVkQXJlYXMgPSBPYmplY3Qua2V5cyhyZWN0cykubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gX2V4dGVuZHMoe1xuICAgICAga2V5OiBrZXlcbiAgICB9LCByZWN0c1trZXldLCB7XG4gICAgICBhcmVhOiBnZXRBcmVhKHJlY3RzW2tleV0pXG4gICAgfSk7XG4gIH0pLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYi5hcmVhIC0gYS5hcmVhO1xuICB9KTtcblxuICB2YXIgZmlsdGVyZWRBcmVhcyA9IHNvcnRlZEFyZWFzLmZpbHRlcihmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICB2YXIgd2lkdGggPSBfcmVmMi53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gX3JlZjIuaGVpZ2h0O1xuICAgIHJldHVybiB3aWR0aCA+PSBwb3BwZXIuY2xpZW50V2lkdGggJiYgaGVpZ2h0ID49IHBvcHBlci5jbGllbnRIZWlnaHQ7XG4gIH0pO1xuXG4gIHZhciBjb21wdXRlZFBsYWNlbWVudCA9IGZpbHRlcmVkQXJlYXMubGVuZ3RoID4gMCA/IGZpbHRlcmVkQXJlYXNbMF0ua2V5IDogc29ydGVkQXJlYXNbMF0ua2V5O1xuXG4gIHZhciB2YXJpYXRpb24gPSBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcblxuICByZXR1cm4gY29tcHV0ZWRQbGFjZW1lbnQgKyAodmFyaWF0aW9uID8gJy0nICsgdmFyaWF0aW9uIDogJycpO1xufVxuXG4vKipcbiAqIEdldCBvZmZzZXRzIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudFxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQHBhcmFtIHtPYmplY3R9IHN0YXRlXG4gKiBAcGFyYW0ge0VsZW1lbnR9IHBvcHBlciAtIHRoZSBwb3BwZXIgZWxlbWVudFxuICogQHBhcmFtIHtFbGVtZW50fSByZWZlcmVuY2UgLSB0aGUgcmVmZXJlbmNlIGVsZW1lbnQgKHRoZSBwb3BwZXIgd2lsbCBiZSByZWxhdGl2ZSB0byB0aGlzKVxuICogQHBhcmFtIHtFbGVtZW50fSBmaXhlZFBvc2l0aW9uIC0gaXMgaW4gZml4ZWQgcG9zaXRpb24gbW9kZVxuICogQHJldHVybnMge09iamVjdH0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG9mZnNldHMgd2hpY2ggd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBwb3BwZXJcbiAqL1xuZnVuY3Rpb24gZ2V0UmVmZXJlbmNlT2Zmc2V0cyhzdGF0ZSwgcG9wcGVyLCByZWZlcmVuY2UpIHtcbiAgdmFyIGZpeGVkUG9zaXRpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IG51bGw7XG5cbiAgdmFyIGNvbW1vbk9mZnNldFBhcmVudCA9IGZpeGVkUG9zaXRpb24gPyBnZXRGaXhlZFBvc2l0aW9uT2Zmc2V0UGFyZW50KHBvcHBlcikgOiBmaW5kQ29tbW9uT2Zmc2V0UGFyZW50KHBvcHBlciwgZ2V0UmVmZXJlbmNlTm9kZShyZWZlcmVuY2UpKTtcbiAgcmV0dXJuIGdldE9mZnNldFJlY3RSZWxhdGl2ZVRvQXJiaXRyYXJ5Tm9kZShyZWZlcmVuY2UsIGNvbW1vbk9mZnNldFBhcmVudCwgZml4ZWRQb3NpdGlvbik7XG59XG5cbi8qKlxuICogR2V0IHRoZSBvdXRlciBzaXplcyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCAob2Zmc2V0IHNpemUgKyBtYXJnaW5zKVxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtFbGVtZW50fSBlbGVtZW50XG4gKiBAcmV0dXJucyB7T2JqZWN0fSBvYmplY3QgY29udGFpbmluZyB3aWR0aCBhbmQgaGVpZ2h0IHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gZ2V0T3V0ZXJTaXplcyhlbGVtZW50KSB7XG4gIHZhciB3aW5kb3cgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7XG4gIHZhciBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgdmFyIHggPSBwYXJzZUZsb2F0KHN0eWxlcy5tYXJnaW5Ub3AgfHwgMCkgKyBwYXJzZUZsb2F0KHN0eWxlcy5tYXJnaW5Cb3R0b20gfHwgMCk7XG4gIHZhciB5ID0gcGFyc2VGbG9hdChzdHlsZXMubWFyZ2luTGVmdCB8fCAwKSArIHBhcnNlRmxvYXQoc3R5bGVzLm1hcmdpblJpZ2h0IHx8IDApO1xuICB2YXIgcmVzdWx0ID0ge1xuICAgIHdpZHRoOiBlbGVtZW50Lm9mZnNldFdpZHRoICsgeSxcbiAgICBoZWlnaHQ6IGVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgeFxuICB9O1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEdldCB0aGUgb3Bwb3NpdGUgcGxhY2VtZW50IG9mIHRoZSBnaXZlbiBvbmVcbiAqIEBtZXRob2RcbiAqIEBtZW1iZXJvZiBQb3BwZXIuVXRpbHNcbiAqIEBhcmd1bWVudCB7U3RyaW5nfSBwbGFjZW1lbnRcbiAqIEByZXR1cm5zIHtTdHJpbmd9IGZsaXBwZWQgcGxhY2VtZW50XG4gKi9cbmZ1bmN0aW9uIGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICB2YXIgaGFzaCA9IHsgbGVmdDogJ3JpZ2h0JywgcmlnaHQ6ICdsZWZ0JywgYm90dG9tOiAndG9wJywgdG9wOiAnYm90dG9tJyB9O1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgIHJldHVybiBoYXNoW21hdGNoZWRdO1xuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgb2Zmc2V0cyB0byB0aGUgcG9wcGVyXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAcGFyYW0ge09iamVjdH0gcG9zaXRpb24gLSBDU1MgcG9zaXRpb24gdGhlIFBvcHBlciB3aWxsIGdldCBhcHBsaWVkXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBwb3BwZXIgLSB0aGUgcG9wcGVyIGVsZW1lbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSByZWZlcmVuY2VPZmZzZXRzIC0gdGhlIHJlZmVyZW5jZSBvZmZzZXRzICh0aGUgcG9wcGVyIHdpbGwgYmUgcmVsYXRpdmUgdG8gdGhpcylcbiAqIEBwYXJhbSB7U3RyaW5nfSBwbGFjZW1lbnQgLSBvbmUgb2YgdGhlIHZhbGlkIHBsYWNlbWVudCBvcHRpb25zXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBwb3BwZXJPZmZzZXRzIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG9mZnNldHMgd2hpY2ggd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBwb3BwZXJcbiAqL1xuZnVuY3Rpb24gZ2V0UG9wcGVyT2Zmc2V0cyhwb3BwZXIsIHJlZmVyZW5jZU9mZnNldHMsIHBsYWNlbWVudCkge1xuICBwbGFjZW1lbnQgPSBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcblxuICAvLyBHZXQgcG9wcGVyIG5vZGUgc2l6ZXNcbiAgdmFyIHBvcHBlclJlY3QgPSBnZXRPdXRlclNpemVzKHBvcHBlcik7XG5cbiAgLy8gQWRkIHBvc2l0aW9uLCB3aWR0aCBhbmQgaGVpZ2h0IHRvIG91ciBvZmZzZXRzIG9iamVjdFxuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IHtcbiAgICB3aWR0aDogcG9wcGVyUmVjdC53aWR0aCxcbiAgICBoZWlnaHQ6IHBvcHBlclJlY3QuaGVpZ2h0XG4gIH07XG5cbiAgLy8gZGVwZW5kaW5nIGJ5IHRoZSBwb3BwZXIgcGxhY2VtZW50IHdlIGhhdmUgdG8gY29tcHV0ZSBpdHMgb2Zmc2V0cyBzbGlnaHRseSBkaWZmZXJlbnRseVxuICB2YXIgaXNIb3JpeiA9IFsncmlnaHQnLCAnbGVmdCddLmluZGV4T2YocGxhY2VtZW50KSAhPT0gLTE7XG4gIHZhciBtYWluU2lkZSA9IGlzSG9yaXogPyAndG9wJyA6ICdsZWZ0JztcbiAgdmFyIHNlY29uZGFyeVNpZGUgPSBpc0hvcml6ID8gJ2xlZnQnIDogJ3RvcCc7XG4gIHZhciBtZWFzdXJlbWVudCA9IGlzSG9yaXogPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gIHZhciBzZWNvbmRhcnlNZWFzdXJlbWVudCA9ICFpc0hvcml6ID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gIHBvcHBlck9mZnNldHNbbWFpblNpZGVdID0gcmVmZXJlbmNlT2Zmc2V0c1ttYWluU2lkZV0gKyByZWZlcmVuY2VPZmZzZXRzW21lYXN1cmVtZW50XSAvIDIgLSBwb3BwZXJSZWN0W21lYXN1cmVtZW50XSAvIDI7XG4gIGlmIChwbGFjZW1lbnQgPT09IHNlY29uZGFyeVNpZGUpIHtcbiAgICBwb3BwZXJPZmZzZXRzW3NlY29uZGFyeVNpZGVdID0gcmVmZXJlbmNlT2Zmc2V0c1tzZWNvbmRhcnlTaWRlXSAtIHBvcHBlclJlY3Rbc2Vjb25kYXJ5TWVhc3VyZW1lbnRdO1xuICB9IGVsc2Uge1xuICAgIHBvcHBlck9mZnNldHNbc2Vjb25kYXJ5U2lkZV0gPSByZWZlcmVuY2VPZmZzZXRzW2dldE9wcG9zaXRlUGxhY2VtZW50KHNlY29uZGFyeVNpZGUpXTtcbiAgfVxuXG4gIHJldHVybiBwb3BwZXJPZmZzZXRzO1xufVxuXG4vKipcbiAqIE1pbWljcyB0aGUgYGZpbmRgIG1ldGhvZCBvZiBBcnJheVxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtBcnJheX0gYXJyXG4gKiBAYXJndW1lbnQgcHJvcFxuICogQGFyZ3VtZW50IHZhbHVlXG4gKiBAcmV0dXJucyBpbmRleCBvciAtMVxuICovXG5mdW5jdGlvbiBmaW5kKGFyciwgY2hlY2spIHtcbiAgLy8gdXNlIG5hdGl2ZSBmaW5kIGlmIHN1cHBvcnRlZFxuICBpZiAoQXJyYXkucHJvdG90eXBlLmZpbmQpIHtcbiAgICByZXR1cm4gYXJyLmZpbmQoY2hlY2spO1xuICB9XG5cbiAgLy8gdXNlIGBmaWx0ZXJgIHRvIG9idGFpbiB0aGUgc2FtZSBiZWhhdmlvciBvZiBgZmluZGBcbiAgcmV0dXJuIGFyci5maWx0ZXIoY2hlY2spWzBdO1xufVxuXG4vKipcbiAqIFJldHVybiB0aGUgaW5kZXggb2YgdGhlIG1hdGNoaW5nIG9iamVjdFxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtBcnJheX0gYXJyXG4gKiBAYXJndW1lbnQgcHJvcFxuICogQGFyZ3VtZW50IHZhbHVlXG4gKiBAcmV0dXJucyBpbmRleCBvciAtMVxuICovXG5mdW5jdGlvbiBmaW5kSW5kZXgoYXJyLCBwcm9wLCB2YWx1ZSkge1xuICAvLyB1c2UgbmF0aXZlIGZpbmRJbmRleCBpZiBzdXBwb3J0ZWRcbiAgaWYgKEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXgpIHtcbiAgICByZXR1cm4gYXJyLmZpbmRJbmRleChmdW5jdGlvbiAoY3VyKSB7XG4gICAgICByZXR1cm4gY3VyW3Byb3BdID09PSB2YWx1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHVzZSBgZmluZGAgKyBgaW5kZXhPZmAgaWYgYGZpbmRJbmRleGAgaXNuJ3Qgc3VwcG9ydGVkXG4gIHZhciBtYXRjaCA9IGZpbmQoYXJyLCBmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIG9ialtwcm9wXSA9PT0gdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gYXJyLmluZGV4T2YobWF0Y2gpO1xufVxuXG4vKipcbiAqIExvb3AgdHJvdWdoIHRoZSBsaXN0IG9mIG1vZGlmaWVycyBhbmQgcnVuIHRoZW0gaW4gb3JkZXIsXG4gKiBlYWNoIG9mIHRoZW0gd2lsbCB0aGVuIGVkaXQgdGhlIGRhdGEgb2JqZWN0LlxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQHBhcmFtIHtkYXRhT2JqZWN0fSBkYXRhXG4gKiBAcGFyYW0ge0FycmF5fSBtb2RpZmllcnNcbiAqIEBwYXJhbSB7U3RyaW5nfSBlbmRzIC0gT3B0aW9uYWwgbW9kaWZpZXIgbmFtZSB1c2VkIGFzIHN0b3BwZXJcbiAqIEByZXR1cm5zIHtkYXRhT2JqZWN0fVxuICovXG5mdW5jdGlvbiBydW5Nb2RpZmllcnMobW9kaWZpZXJzLCBkYXRhLCBlbmRzKSB7XG4gIHZhciBtb2RpZmllcnNUb1J1biA9IGVuZHMgPT09IHVuZGVmaW5lZCA/IG1vZGlmaWVycyA6IG1vZGlmaWVycy5zbGljZSgwLCBmaW5kSW5kZXgobW9kaWZpZXJzLCAnbmFtZScsIGVuZHMpKTtcblxuICBtb2RpZmllcnNUb1J1bi5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgIGlmIChtb2RpZmllclsnZnVuY3Rpb24nXSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBkb3Qtbm90YXRpb25cbiAgICAgIGNvbnNvbGUud2FybignYG1vZGlmaWVyLmZ1bmN0aW9uYCBpcyBkZXByZWNhdGVkLCB1c2UgYG1vZGlmaWVyLmZuYCEnKTtcbiAgICB9XG4gICAgdmFyIGZuID0gbW9kaWZpZXJbJ2Z1bmN0aW9uJ10gfHwgbW9kaWZpZXIuZm47IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZG90LW5vdGF0aW9uXG4gICAgaWYgKG1vZGlmaWVyLmVuYWJsZWQgJiYgaXNGdW5jdGlvbihmbikpIHtcbiAgICAgIC8vIEFkZCBwcm9wZXJ0aWVzIHRvIG9mZnNldHMgdG8gbWFrZSB0aGVtIGEgY29tcGxldGUgY2xpZW50UmVjdCBvYmplY3RcbiAgICAgIC8vIHdlIGRvIHRoaXMgYmVmb3JlIGVhY2ggbW9kaWZpZXIgdG8gbWFrZSBzdXJlIHRoZSBwcmV2aW91cyBvbmUgZG9lc24ndFxuICAgICAgLy8gbWVzcyB3aXRoIHRoZXNlIHZhbHVlc1xuICAgICAgZGF0YS5vZmZzZXRzLnBvcHBlciA9IGdldENsaWVudFJlY3QoZGF0YS5vZmZzZXRzLnBvcHBlcik7XG4gICAgICBkYXRhLm9mZnNldHMucmVmZXJlbmNlID0gZ2V0Q2xpZW50UmVjdChkYXRhLm9mZnNldHMucmVmZXJlbmNlKTtcblxuICAgICAgZGF0YSA9IGZuKGRhdGEsIG1vZGlmaWVyKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBkYXRhO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBwb3BwZXIsIGNvbXB1dGluZyB0aGUgbmV3IG9mZnNldHMgYW5kIGFwcGx5aW5nXG4gKiB0aGUgbmV3IHN0eWxlLjxiciAvPlxuICogUHJlZmVyIGBzY2hlZHVsZVVwZGF0ZWAgb3ZlciBgdXBkYXRlYCBiZWNhdXNlIG9mIHBlcmZvcm1hbmNlIHJlYXNvbnMuXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgLy8gaWYgcG9wcGVyIGlzIGRlc3Ryb3llZCwgZG9uJ3QgcGVyZm9ybSBhbnkgZnVydGhlciB1cGRhdGVcbiAgaWYgKHRoaXMuc3RhdGUuaXNEZXN0cm95ZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgZGF0YSA9IHtcbiAgICBpbnN0YW5jZTogdGhpcyxcbiAgICBzdHlsZXM6IHt9LFxuICAgIGFycm93U3R5bGVzOiB7fSxcbiAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICBmbGlwcGVkOiBmYWxzZSxcbiAgICBvZmZzZXRzOiB7fVxuICB9O1xuXG4gIC8vIGNvbXB1dGUgcmVmZXJlbmNlIGVsZW1lbnQgb2Zmc2V0c1xuICBkYXRhLm9mZnNldHMucmVmZXJlbmNlID0gZ2V0UmVmZXJlbmNlT2Zmc2V0cyh0aGlzLnN0YXRlLCB0aGlzLnBvcHBlciwgdGhpcy5yZWZlcmVuY2UsIHRoaXMub3B0aW9ucy5wb3NpdGlvbkZpeGVkKTtcblxuICAvLyBjb21wdXRlIGF1dG8gcGxhY2VtZW50LCBzdG9yZSBwbGFjZW1lbnQgaW5zaWRlIHRoZSBkYXRhIG9iamVjdCxcbiAgLy8gbW9kaWZpZXJzIHdpbGwgYmUgYWJsZSB0byBlZGl0IGBwbGFjZW1lbnRgIGlmIG5lZWRlZFxuICAvLyBhbmQgcmVmZXIgdG8gb3JpZ2luYWxQbGFjZW1lbnQgdG8ga25vdyB0aGUgb3JpZ2luYWwgdmFsdWVcbiAgZGF0YS5wbGFjZW1lbnQgPSBjb21wdXRlQXV0b1BsYWNlbWVudCh0aGlzLm9wdGlvbnMucGxhY2VtZW50LCBkYXRhLm9mZnNldHMucmVmZXJlbmNlLCB0aGlzLnBvcHBlciwgdGhpcy5yZWZlcmVuY2UsIHRoaXMub3B0aW9ucy5tb2RpZmllcnMuZmxpcC5ib3VuZGFyaWVzRWxlbWVudCwgdGhpcy5vcHRpb25zLm1vZGlmaWVycy5mbGlwLnBhZGRpbmcpO1xuXG4gIC8vIHN0b3JlIHRoZSBjb21wdXRlZCBwbGFjZW1lbnQgaW5zaWRlIGBvcmlnaW5hbFBsYWNlbWVudGBcbiAgZGF0YS5vcmlnaW5hbFBsYWNlbWVudCA9IGRhdGEucGxhY2VtZW50O1xuXG4gIGRhdGEucG9zaXRpb25GaXhlZCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbkZpeGVkO1xuXG4gIC8vIGNvbXB1dGUgdGhlIHBvcHBlciBvZmZzZXRzXG4gIGRhdGEub2Zmc2V0cy5wb3BwZXIgPSBnZXRQb3BwZXJPZmZzZXRzKHRoaXMucG9wcGVyLCBkYXRhLm9mZnNldHMucmVmZXJlbmNlLCBkYXRhLnBsYWNlbWVudCk7XG5cbiAgZGF0YS5vZmZzZXRzLnBvcHBlci5wb3NpdGlvbiA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbkZpeGVkID8gJ2ZpeGVkJyA6ICdhYnNvbHV0ZSc7XG5cbiAgLy8gcnVuIHRoZSBtb2RpZmllcnNcbiAgZGF0YSA9IHJ1bk1vZGlmaWVycyh0aGlzLm1vZGlmaWVycywgZGF0YSk7XG5cbiAgLy8gdGhlIGZpcnN0IGB1cGRhdGVgIHdpbGwgY2FsbCBgb25DcmVhdGVgIGNhbGxiYWNrXG4gIC8vIHRoZSBvdGhlciBvbmVzIHdpbGwgY2FsbCBgb25VcGRhdGVgIGNhbGxiYWNrXG4gIGlmICghdGhpcy5zdGF0ZS5pc0NyZWF0ZWQpIHtcbiAgICB0aGlzLnN0YXRlLmlzQ3JlYXRlZCA9IHRydWU7XG4gICAgdGhpcy5vcHRpb25zLm9uQ3JlYXRlKGRhdGEpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMub3B0aW9ucy5vblVwZGF0ZShkYXRhKTtcbiAgfVxufVxuXG4vKipcbiAqIEhlbHBlciB1c2VkIHRvIGtub3cgaWYgdGhlIGdpdmVuIG1vZGlmaWVyIGlzIGVuYWJsZWQuXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNNb2RpZmllckVuYWJsZWQobW9kaWZpZXJzLCBtb2RpZmllck5hbWUpIHtcbiAgcmV0dXJuIG1vZGlmaWVycy5zb21lKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgICAgIGVuYWJsZWQgPSBfcmVmLmVuYWJsZWQ7XG4gICAgcmV0dXJuIGVuYWJsZWQgJiYgbmFtZSA9PT0gbW9kaWZpZXJOYW1lO1xuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHByZWZpeGVkIHN1cHBvcnRlZCBwcm9wZXJ0eSBuYW1lXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAYXJndW1lbnQge1N0cmluZ30gcHJvcGVydHkgKGNhbWVsQ2FzZSlcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHByZWZpeGVkIHByb3BlcnR5IChjYW1lbENhc2Ugb3IgUGFzY2FsQ2FzZSwgZGVwZW5kaW5nIG9uIHRoZSB2ZW5kb3IgcHJlZml4KVxuICovXG5mdW5jdGlvbiBnZXRTdXBwb3J0ZWRQcm9wZXJ0eU5hbWUocHJvcGVydHkpIHtcbiAgdmFyIHByZWZpeGVzID0gW2ZhbHNlLCAnbXMnLCAnV2Via2l0JywgJ01veicsICdPJ107XG4gIHZhciB1cHBlclByb3AgPSBwcm9wZXJ0eS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHByb3BlcnR5LnNsaWNlKDEpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlZml4ZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcHJlZml4ID0gcHJlZml4ZXNbaV07XG4gICAgdmFyIHRvQ2hlY2sgPSBwcmVmaXggPyAnJyArIHByZWZpeCArIHVwcGVyUHJvcCA6IHByb3BlcnR5O1xuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQuYm9keS5zdHlsZVt0b0NoZWNrXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiB0b0NoZWNrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBEZXN0cm95cyB0aGUgcG9wcGVyLlxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlclxuICovXG5mdW5jdGlvbiBkZXN0cm95KCkge1xuICB0aGlzLnN0YXRlLmlzRGVzdHJveWVkID0gdHJ1ZTtcblxuICAvLyB0b3VjaCBET00gb25seSBpZiBgYXBwbHlTdHlsZWAgbW9kaWZpZXIgaXMgZW5hYmxlZFxuICBpZiAoaXNNb2RpZmllckVuYWJsZWQodGhpcy5tb2RpZmllcnMsICdhcHBseVN0eWxlJykpIHtcbiAgICB0aGlzLnBvcHBlci5yZW1vdmVBdHRyaWJ1dGUoJ3gtcGxhY2VtZW50Jyk7XG4gICAgdGhpcy5wb3BwZXIuc3R5bGUucG9zaXRpb24gPSAnJztcbiAgICB0aGlzLnBvcHBlci5zdHlsZS50b3AgPSAnJztcbiAgICB0aGlzLnBvcHBlci5zdHlsZS5sZWZ0ID0gJyc7XG4gICAgdGhpcy5wb3BwZXIuc3R5bGUucmlnaHQgPSAnJztcbiAgICB0aGlzLnBvcHBlci5zdHlsZS5ib3R0b20gPSAnJztcbiAgICB0aGlzLnBvcHBlci5zdHlsZS53aWxsQ2hhbmdlID0gJyc7XG4gICAgdGhpcy5wb3BwZXIuc3R5bGVbZ2V0U3VwcG9ydGVkUHJvcGVydHlOYW1lKCd0cmFuc2Zvcm0nKV0gPSAnJztcbiAgfVxuXG4gIHRoaXMuZGlzYWJsZUV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgLy8gcmVtb3ZlIHRoZSBwb3BwZXIgaWYgdXNlciBleHBsaWNpdGx5IGFza2VkIGZvciB0aGUgZGVsZXRpb24gb24gZGVzdHJveVxuICAvLyBkbyBub3QgdXNlIGByZW1vdmVgIGJlY2F1c2UgSUUxMSBkb2Vzbid0IHN1cHBvcnQgaXRcbiAgaWYgKHRoaXMub3B0aW9ucy5yZW1vdmVPbkRlc3Ryb3kpIHtcbiAgICB0aGlzLnBvcHBlci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMucG9wcGVyKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHdpbmRvdyBhc3NvY2lhdGVkIHdpdGggdGhlIGVsZW1lbnRcbiAqIEBhcmd1bWVudCB7RWxlbWVudH0gZWxlbWVudFxuICogQHJldHVybnMge1dpbmRvd31cbiAqL1xuZnVuY3Rpb24gZ2V0V2luZG93KGVsZW1lbnQpIHtcbiAgdmFyIG93bmVyRG9jdW1lbnQgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQ7XG4gIHJldHVybiBvd25lckRvY3VtZW50ID8gb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyA6IHdpbmRvdztcbn1cblxuZnVuY3Rpb24gYXR0YWNoVG9TY3JvbGxQYXJlbnRzKHNjcm9sbFBhcmVudCwgZXZlbnQsIGNhbGxiYWNrLCBzY3JvbGxQYXJlbnRzKSB7XG4gIHZhciBpc0JvZHkgPSBzY3JvbGxQYXJlbnQubm9kZU5hbWUgPT09ICdCT0RZJztcbiAgdmFyIHRhcmdldCA9IGlzQm9keSA/IHNjcm9sbFBhcmVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IDogc2Nyb2xsUGFyZW50O1xuICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgY2FsbGJhY2ssIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcblxuICBpZiAoIWlzQm9keSkge1xuICAgIGF0dGFjaFRvU2Nyb2xsUGFyZW50cyhnZXRTY3JvbGxQYXJlbnQodGFyZ2V0LnBhcmVudE5vZGUpLCBldmVudCwgY2FsbGJhY2ssIHNjcm9sbFBhcmVudHMpO1xuICB9XG4gIHNjcm9sbFBhcmVudHMucHVzaCh0YXJnZXQpO1xufVxuXG4vKipcbiAqIFNldHVwIG5lZWRlZCBldmVudCBsaXN0ZW5lcnMgdXNlZCB0byB1cGRhdGUgdGhlIHBvcHBlciBwb3NpdGlvblxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gc2V0dXBFdmVudExpc3RlbmVycyhyZWZlcmVuY2UsIG9wdGlvbnMsIHN0YXRlLCB1cGRhdGVCb3VuZCkge1xuICAvLyBSZXNpemUgZXZlbnQgbGlzdGVuZXIgb24gd2luZG93XG4gIHN0YXRlLnVwZGF0ZUJvdW5kID0gdXBkYXRlQm91bmQ7XG4gIGdldFdpbmRvdyhyZWZlcmVuY2UpLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHN0YXRlLnVwZGF0ZUJvdW5kLCB7IHBhc3NpdmU6IHRydWUgfSk7XG5cbiAgLy8gU2Nyb2xsIGV2ZW50IGxpc3RlbmVyIG9uIHNjcm9sbCBwYXJlbnRzXG4gIHZhciBzY3JvbGxFbGVtZW50ID0gZ2V0U2Nyb2xsUGFyZW50KHJlZmVyZW5jZSk7XG4gIGF0dGFjaFRvU2Nyb2xsUGFyZW50cyhzY3JvbGxFbGVtZW50LCAnc2Nyb2xsJywgc3RhdGUudXBkYXRlQm91bmQsIHN0YXRlLnNjcm9sbFBhcmVudHMpO1xuICBzdGF0ZS5zY3JvbGxFbGVtZW50ID0gc2Nyb2xsRWxlbWVudDtcbiAgc3RhdGUuZXZlbnRzRW5hYmxlZCA9IHRydWU7XG5cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG4vKipcbiAqIEl0IHdpbGwgYWRkIHJlc2l6ZS9zY3JvbGwgZXZlbnRzIGFuZCBzdGFydCByZWNhbGN1bGF0aW5nXG4gKiBwb3NpdGlvbiBvZiB0aGUgcG9wcGVyIGVsZW1lbnQgd2hlbiB0aGV5IGFyZSB0cmlnZ2VyZWQuXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyXG4gKi9cbmZ1bmN0aW9uIGVuYWJsZUV2ZW50TGlzdGVuZXJzKCkge1xuICBpZiAoIXRoaXMuc3RhdGUuZXZlbnRzRW5hYmxlZCkge1xuICAgIHRoaXMuc3RhdGUgPSBzZXR1cEV2ZW50TGlzdGVuZXJzKHRoaXMucmVmZXJlbmNlLCB0aGlzLm9wdGlvbnMsIHRoaXMuc3RhdGUsIHRoaXMuc2NoZWR1bGVVcGRhdGUpO1xuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlIGV2ZW50IGxpc3RlbmVycyB1c2VkIHRvIHVwZGF0ZSB0aGUgcG9wcGVyIHBvc2l0aW9uXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVycyhyZWZlcmVuY2UsIHN0YXRlKSB7XG4gIC8vIFJlbW92ZSByZXNpemUgZXZlbnQgbGlzdGVuZXIgb24gd2luZG93XG4gIGdldFdpbmRvdyhyZWZlcmVuY2UpLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHN0YXRlLnVwZGF0ZUJvdW5kKTtcblxuICAvLyBSZW1vdmUgc2Nyb2xsIGV2ZW50IGxpc3RlbmVyIG9uIHNjcm9sbCBwYXJlbnRzXG4gIHN0YXRlLnNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHN0YXRlLnVwZGF0ZUJvdW5kKTtcbiAgfSk7XG5cbiAgLy8gUmVzZXQgc3RhdGVcbiAgc3RhdGUudXBkYXRlQm91bmQgPSBudWxsO1xuICBzdGF0ZS5zY3JvbGxQYXJlbnRzID0gW107XG4gIHN0YXRlLnNjcm9sbEVsZW1lbnQgPSBudWxsO1xuICBzdGF0ZS5ldmVudHNFbmFibGVkID0gZmFsc2U7XG4gIHJldHVybiBzdGF0ZTtcbn1cblxuLyoqXG4gKiBJdCB3aWxsIHJlbW92ZSByZXNpemUvc2Nyb2xsIGV2ZW50cyBhbmQgd29uJ3QgcmVjYWxjdWxhdGUgcG9wcGVyIHBvc2l0aW9uXG4gKiB3aGVuIHRoZXkgYXJlIHRyaWdnZXJlZC4gSXQgYWxzbyB3b24ndCB0cmlnZ2VyIGBvblVwZGF0ZWAgY2FsbGJhY2sgYW55bW9yZSxcbiAqIHVubGVzcyB5b3UgY2FsbCBgdXBkYXRlYCBtZXRob2QgbWFudWFsbHkuXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyXG4gKi9cbmZ1bmN0aW9uIGRpc2FibGVFdmVudExpc3RlbmVycygpIHtcbiAgaWYgKHRoaXMuc3RhdGUuZXZlbnRzRW5hYmxlZCkge1xuICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuc2NoZWR1bGVVcGRhdGUpO1xuICAgIHRoaXMuc3RhdGUgPSByZW1vdmVFdmVudExpc3RlbmVycyh0aGlzLnJlZmVyZW5jZSwgdGhpcy5zdGF0ZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBUZWxscyBpZiBhIGdpdmVuIGlucHV0IGlzIGEgbnVtYmVyXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAcGFyYW0geyp9IGlucHV0IHRvIGNoZWNrXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICovXG5mdW5jdGlvbiBpc051bWVyaWMobikge1xuICByZXR1cm4gbiAhPT0gJycgJiYgIWlzTmFOKHBhcnNlRmxvYXQobikpICYmIGlzRmluaXRlKG4pO1xufVxuXG4vKipcbiAqIFNldCB0aGUgc3R5bGUgdG8gdGhlIGdpdmVuIHBvcHBlclxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byBhcHBseSB0aGUgc3R5bGUgdG9cbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBzdHlsZXNcbiAqIE9iamVjdCB3aXRoIGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMgd2hpY2ggd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBlbGVtZW50XG4gKi9cbmZ1bmN0aW9uIHNldFN0eWxlcyhlbGVtZW50LCBzdHlsZXMpIHtcbiAgT2JqZWN0LmtleXMoc3R5bGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgdmFyIHVuaXQgPSAnJztcbiAgICAvLyBhZGQgdW5pdCBpZiB0aGUgdmFsdWUgaXMgbnVtZXJpYyBhbmQgaXMgb25lIG9mIHRoZSBmb2xsb3dpbmdcbiAgICBpZiAoWyd3aWR0aCcsICdoZWlnaHQnLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10uaW5kZXhPZihwcm9wKSAhPT0gLTEgJiYgaXNOdW1lcmljKHN0eWxlc1twcm9wXSkpIHtcbiAgICAgIHVuaXQgPSAncHgnO1xuICAgIH1cbiAgICBlbGVtZW50LnN0eWxlW3Byb3BdID0gc3R5bGVzW3Byb3BdICsgdW5pdDtcbiAgfSk7XG59XG5cbi8qKlxuICogU2V0IHRoZSBhdHRyaWJ1dGVzIHRvIHRoZSBnaXZlbiBwb3BwZXJcbiAqIEBtZXRob2RcbiAqIEBtZW1iZXJvZiBQb3BwZXIuVXRpbHNcbiAqIEBhcmd1bWVudCB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gYXBwbHkgdGhlIGF0dHJpYnV0ZXMgdG9cbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBzdHlsZXNcbiAqIE9iamVjdCB3aXRoIGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMgd2hpY2ggd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBlbGVtZW50XG4gKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXMoZWxlbWVudCwgYXR0cmlidXRlcykge1xuICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgdmFyIHZhbHVlID0gYXR0cmlidXRlc1twcm9wXTtcbiAgICBpZiAodmFsdWUgIT09IGZhbHNlKSB7XG4gICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShwcm9wLCBhdHRyaWJ1dGVzW3Byb3BdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUocHJvcCk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBAZnVuY3Rpb25cbiAqIEBtZW1iZXJvZiBNb2RpZmllcnNcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IGdlbmVyYXRlZCBieSBgdXBkYXRlYCBtZXRob2RcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBkYXRhLnN0eWxlcyAtIExpc3Qgb2Ygc3R5bGUgcHJvcGVydGllcyAtIHZhbHVlcyB0byBhcHBseSB0byBwb3BwZXIgZWxlbWVudFxuICogQGFyZ3VtZW50IHtPYmplY3R9IGRhdGEuYXR0cmlidXRlcyAtIExpc3Qgb2YgYXR0cmlidXRlIHByb3BlcnRpZXMgLSB2YWx1ZXMgdG8gYXBwbHkgdG8gcG9wcGVyIGVsZW1lbnRcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBvcHRpb25zIC0gTW9kaWZpZXJzIGNvbmZpZ3VyYXRpb24gYW5kIG9wdGlvbnNcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBzYW1lIGRhdGEgb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIGFwcGx5U3R5bGUoZGF0YSkge1xuICAvLyBhbnkgcHJvcGVydHkgcHJlc2VudCBpbiBgZGF0YS5zdHlsZXNgIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcG9wcGVyLFxuICAvLyBpbiB0aGlzIHdheSB3ZSBjYW4gbWFrZSB0aGUgM3JkIHBhcnR5IG1vZGlmaWVycyBhZGQgY3VzdG9tIHN0eWxlcyB0byBpdFxuICAvLyBCZSBhd2FyZSwgbW9kaWZpZXJzIGNvdWxkIG92ZXJyaWRlIHRoZSBwcm9wZXJ0aWVzIGRlZmluZWQgaW4gdGhlIHByZXZpb3VzXG4gIC8vIGxpbmVzIG9mIHRoaXMgbW9kaWZpZXIhXG4gIHNldFN0eWxlcyhkYXRhLmluc3RhbmNlLnBvcHBlciwgZGF0YS5zdHlsZXMpO1xuXG4gIC8vIGFueSBwcm9wZXJ0eSBwcmVzZW50IGluIGBkYXRhLmF0dHJpYnV0ZXNgIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcG9wcGVyLFxuICAvLyB0aGV5IHdpbGwgYmUgc2V0IGFzIEhUTUwgYXR0cmlidXRlcyBvZiB0aGUgZWxlbWVudFxuICBzZXRBdHRyaWJ1dGVzKGRhdGEuaW5zdGFuY2UucG9wcGVyLCBkYXRhLmF0dHJpYnV0ZXMpO1xuXG4gIC8vIGlmIGFycm93RWxlbWVudCBpcyBkZWZpbmVkIGFuZCBhcnJvd1N0eWxlcyBoYXMgc29tZSBwcm9wZXJ0aWVzXG4gIGlmIChkYXRhLmFycm93RWxlbWVudCAmJiBPYmplY3Qua2V5cyhkYXRhLmFycm93U3R5bGVzKS5sZW5ndGgpIHtcbiAgICBzZXRTdHlsZXMoZGF0YS5hcnJvd0VsZW1lbnQsIGRhdGEuYXJyb3dTdHlsZXMpO1xuICB9XG5cbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8qKlxuICogU2V0IHRoZSB4LXBsYWNlbWVudCBhdHRyaWJ1dGUgYmVmb3JlIGV2ZXJ5dGhpbmcgZWxzZSBiZWNhdXNlIGl0IGNvdWxkIGJlIHVzZWRcbiAqIHRvIGFkZCBtYXJnaW5zIHRvIHRoZSBwb3BwZXIgbWFyZ2lucyBuZWVkcyB0byBiZSBjYWxjdWxhdGVkIHRvIGdldCB0aGVcbiAqIGNvcnJlY3QgcG9wcGVyIG9mZnNldHMuXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLm1vZGlmaWVyc1xuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gcmVmZXJlbmNlIC0gVGhlIHJlZmVyZW5jZSBlbGVtZW50IHVzZWQgdG8gcG9zaXRpb24gdGhlIHBvcHBlclxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gcG9wcGVyIC0gVGhlIEhUTUwgZWxlbWVudCB1c2VkIGFzIHBvcHBlclxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBQb3BwZXIuanMgb3B0aW9uc1xuICovXG5mdW5jdGlvbiBhcHBseVN0eWxlT25Mb2FkKHJlZmVyZW5jZSwgcG9wcGVyLCBvcHRpb25zLCBtb2RpZmllck9wdGlvbnMsIHN0YXRlKSB7XG4gIC8vIGNvbXB1dGUgcmVmZXJlbmNlIGVsZW1lbnQgb2Zmc2V0c1xuICB2YXIgcmVmZXJlbmNlT2Zmc2V0cyA9IGdldFJlZmVyZW5jZU9mZnNldHMoc3RhdGUsIHBvcHBlciwgcmVmZXJlbmNlLCBvcHRpb25zLnBvc2l0aW9uRml4ZWQpO1xuXG4gIC8vIGNvbXB1dGUgYXV0byBwbGFjZW1lbnQsIHN0b3JlIHBsYWNlbWVudCBpbnNpZGUgdGhlIGRhdGEgb2JqZWN0LFxuICAvLyBtb2RpZmllcnMgd2lsbCBiZSBhYmxlIHRvIGVkaXQgYHBsYWNlbWVudGAgaWYgbmVlZGVkXG4gIC8vIGFuZCByZWZlciB0byBvcmlnaW5hbFBsYWNlbWVudCB0byBrbm93IHRoZSBvcmlnaW5hbCB2YWx1ZVxuICB2YXIgcGxhY2VtZW50ID0gY29tcHV0ZUF1dG9QbGFjZW1lbnQob3B0aW9ucy5wbGFjZW1lbnQsIHJlZmVyZW5jZU9mZnNldHMsIHBvcHBlciwgcmVmZXJlbmNlLCBvcHRpb25zLm1vZGlmaWVycy5mbGlwLmJvdW5kYXJpZXNFbGVtZW50LCBvcHRpb25zLm1vZGlmaWVycy5mbGlwLnBhZGRpbmcpO1xuXG4gIHBvcHBlci5zZXRBdHRyaWJ1dGUoJ3gtcGxhY2VtZW50JywgcGxhY2VtZW50KTtcblxuICAvLyBBcHBseSBgcG9zaXRpb25gIHRvIHBvcHBlciBiZWZvcmUgYW55dGhpbmcgZWxzZSBiZWNhdXNlXG4gIC8vIHdpdGhvdXQgdGhlIHBvc2l0aW9uIGFwcGxpZWQgd2UgY2FuJ3QgZ3VhcmFudGVlIGNvcnJlY3QgY29tcHV0YXRpb25zXG4gIHNldFN0eWxlcyhwb3BwZXIsIHsgcG9zaXRpb246IG9wdGlvbnMucG9zaXRpb25GaXhlZCA/ICdmaXhlZCcgOiAnYWJzb2x1dGUnIH0pO1xuXG4gIHJldHVybiBvcHRpb25zO1xufVxuXG4vKipcbiAqIEBmdW5jdGlvblxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtPYmplY3R9IGRhdGEgLSBUaGUgZGF0YSBvYmplY3QgZ2VuZXJhdGVkIGJ5IGB1cGRhdGVgIG1ldGhvZFxuICogQGFyZ3VtZW50IHtCb29sZWFufSBzaG91bGRSb3VuZCAtIElmIHRoZSBvZmZzZXRzIHNob3VsZCBiZSByb3VuZGVkIGF0IGFsbFxuICogQHJldHVybnMge09iamVjdH0gVGhlIHBvcHBlcidzIHBvc2l0aW9uIG9mZnNldHMgcm91bmRlZFxuICpcbiAqIFRoZSB0YWxlIG9mIHBpeGVsLXBlcmZlY3QgcG9zaXRpb25pbmcuIEl0J3Mgc3RpbGwgbm90IDEwMCUgcGVyZmVjdCwgYnV0IGFzXG4gKiBnb29kIGFzIGl0IGNhbiBiZSB3aXRoaW4gcmVhc29uLlxuICogRGlzY3Vzc2lvbiBoZXJlOiBodHRwczovL2dpdGh1Yi5jb20vRmV6VnJhc3RhL3BvcHBlci5qcy9wdWxsLzcxNVxuICpcbiAqIExvdyBEUEkgc2NyZWVucyBjYXVzZSBhIHBvcHBlciB0byBiZSBibHVycnkgaWYgbm90IHVzaW5nIGZ1bGwgcGl4ZWxzIChTYWZhcmlcbiAqIGFzIHdlbGwgb24gSGlnaCBEUEkgc2NyZWVucykuXG4gKlxuICogRmlyZWZveCBwcmVmZXJzIG5vIHJvdW5kaW5nIGZvciBwb3NpdGlvbmluZyBhbmQgZG9lcyBub3QgaGF2ZSBibHVycmluZXNzIG9uXG4gKiBoaWdoIERQSSBzY3JlZW5zLlxuICpcbiAqIE9ubHkgaG9yaXpvbnRhbCBwbGFjZW1lbnQgYW5kIGxlZnQvcmlnaHQgdmFsdWVzIG5lZWQgdG8gYmUgY29uc2lkZXJlZC5cbiAqL1xuZnVuY3Rpb24gZ2V0Um91bmRlZE9mZnNldHMoZGF0YSwgc2hvdWxkUm91bmQpIHtcbiAgdmFyIF9kYXRhJG9mZnNldHMgPSBkYXRhLm9mZnNldHMsXG4gICAgICBwb3BwZXIgPSBfZGF0YSRvZmZzZXRzLnBvcHBlcixcbiAgICAgIHJlZmVyZW5jZSA9IF9kYXRhJG9mZnNldHMucmVmZXJlbmNlO1xuICB2YXIgcm91bmQgPSBNYXRoLnJvdW5kLFxuICAgICAgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4gIHZhciBub1JvdW5kID0gZnVuY3Rpb24gbm9Sb3VuZCh2KSB7XG4gICAgcmV0dXJuIHY7XG4gIH07XG5cbiAgdmFyIHJlZmVyZW5jZVdpZHRoID0gcm91bmQocmVmZXJlbmNlLndpZHRoKTtcbiAgdmFyIHBvcHBlcldpZHRoID0gcm91bmQocG9wcGVyLndpZHRoKTtcblxuICB2YXIgaXNWZXJ0aWNhbCA9IFsnbGVmdCcsICdyaWdodCddLmluZGV4T2YoZGF0YS5wbGFjZW1lbnQpICE9PSAtMTtcbiAgdmFyIGlzVmFyaWF0aW9uID0gZGF0YS5wbGFjZW1lbnQuaW5kZXhPZignLScpICE9PSAtMTtcbiAgdmFyIHNhbWVXaWR0aFBhcml0eSA9IHJlZmVyZW5jZVdpZHRoICUgMiA9PT0gcG9wcGVyV2lkdGggJSAyO1xuICB2YXIgYm90aE9kZFdpZHRoID0gcmVmZXJlbmNlV2lkdGggJSAyID09PSAxICYmIHBvcHBlcldpZHRoICUgMiA9PT0gMTtcblxuICB2YXIgaG9yaXpvbnRhbFRvSW50ZWdlciA9ICFzaG91bGRSb3VuZCA/IG5vUm91bmQgOiBpc1ZlcnRpY2FsIHx8IGlzVmFyaWF0aW9uIHx8IHNhbWVXaWR0aFBhcml0eSA/IHJvdW5kIDogZmxvb3I7XG4gIHZhciB2ZXJ0aWNhbFRvSW50ZWdlciA9ICFzaG91bGRSb3VuZCA/IG5vUm91bmQgOiByb3VuZDtcblxuICByZXR1cm4ge1xuICAgIGxlZnQ6IGhvcml6b250YWxUb0ludGVnZXIoYm90aE9kZFdpZHRoICYmICFpc1ZhcmlhdGlvbiAmJiBzaG91bGRSb3VuZCA/IHBvcHBlci5sZWZ0IC0gMSA6IHBvcHBlci5sZWZ0KSxcbiAgICB0b3A6IHZlcnRpY2FsVG9JbnRlZ2VyKHBvcHBlci50b3ApLFxuICAgIGJvdHRvbTogdmVydGljYWxUb0ludGVnZXIocG9wcGVyLmJvdHRvbSksXG4gICAgcmlnaHQ6IGhvcml6b250YWxUb0ludGVnZXIocG9wcGVyLnJpZ2h0KVxuICB9O1xufVxuXG52YXIgaXNGaXJlZm94ID0gaXNCcm93c2VyICYmIC9GaXJlZm94L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLyoqXG4gKiBAZnVuY3Rpb25cbiAqIEBtZW1iZXJvZiBNb2RpZmllcnNcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IGdlbmVyYXRlZCBieSBgdXBkYXRlYCBtZXRob2RcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBvcHRpb25zIC0gTW9kaWZpZXJzIGNvbmZpZ3VyYXRpb24gYW5kIG9wdGlvbnNcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBkYXRhIG9iamVjdCwgcHJvcGVybHkgbW9kaWZpZWRcbiAqL1xuZnVuY3Rpb24gY29tcHV0ZVN0eWxlKGRhdGEsIG9wdGlvbnMpIHtcbiAgdmFyIHggPSBvcHRpb25zLngsXG4gICAgICB5ID0gb3B0aW9ucy55O1xuICB2YXIgcG9wcGVyID0gZGF0YS5vZmZzZXRzLnBvcHBlcjtcblxuICAvLyBSZW1vdmUgdGhpcyBsZWdhY3kgc3VwcG9ydCBpbiBQb3BwZXIuanMgdjJcblxuICB2YXIgbGVnYWN5R3B1QWNjZWxlcmF0aW9uT3B0aW9uID0gZmluZChkYXRhLmluc3RhbmNlLm1vZGlmaWVycywgZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgcmV0dXJuIG1vZGlmaWVyLm5hbWUgPT09ICdhcHBseVN0eWxlJztcbiAgfSkuZ3B1QWNjZWxlcmF0aW9uO1xuICBpZiAobGVnYWN5R3B1QWNjZWxlcmF0aW9uT3B0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zb2xlLndhcm4oJ1dBUk5JTkc6IGBncHVBY2NlbGVyYXRpb25gIG9wdGlvbiBtb3ZlZCB0byBgY29tcHV0ZVN0eWxlYCBtb2RpZmllciBhbmQgd2lsbCBub3QgYmUgc3VwcG9ydGVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBQb3BwZXIuanMhJyk7XG4gIH1cbiAgdmFyIGdwdUFjY2VsZXJhdGlvbiA9IGxlZ2FjeUdwdUFjY2VsZXJhdGlvbk9wdGlvbiAhPT0gdW5kZWZpbmVkID8gbGVnYWN5R3B1QWNjZWxlcmF0aW9uT3B0aW9uIDogb3B0aW9ucy5ncHVBY2NlbGVyYXRpb247XG5cbiAgdmFyIG9mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChkYXRhLmluc3RhbmNlLnBvcHBlcik7XG4gIHZhciBvZmZzZXRQYXJlbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCk7XG5cbiAgLy8gU3R5bGVzXG4gIHZhciBzdHlsZXMgPSB7XG4gICAgcG9zaXRpb246IHBvcHBlci5wb3NpdGlvblxuICB9O1xuXG4gIHZhciBvZmZzZXRzID0gZ2V0Um91bmRlZE9mZnNldHMoZGF0YSwgd2luZG93LmRldmljZVBpeGVsUmF0aW8gPCAyIHx8ICFpc0ZpcmVmb3gpO1xuXG4gIHZhciBzaWRlQSA9IHggPT09ICdib3R0b20nID8gJ3RvcCcgOiAnYm90dG9tJztcbiAgdmFyIHNpZGVCID0geSA9PT0gJ3JpZ2h0JyA/ICdsZWZ0JyA6ICdyaWdodCc7XG5cbiAgLy8gaWYgZ3B1QWNjZWxlcmF0aW9uIGlzIHNldCB0byBgdHJ1ZWAgYW5kIHRyYW5zZm9ybSBpcyBzdXBwb3J0ZWQsXG4gIC8vICB3ZSB1c2UgYHRyYW5zbGF0ZTNkYCB0byBhcHBseSB0aGUgcG9zaXRpb24gdG8gdGhlIHBvcHBlciB3ZVxuICAvLyBhdXRvbWF0aWNhbGx5IHVzZSB0aGUgc3VwcG9ydGVkIHByZWZpeGVkIHZlcnNpb24gaWYgbmVlZGVkXG4gIHZhciBwcmVmaXhlZFByb3BlcnR5ID0gZ2V0U3VwcG9ydGVkUHJvcGVydHlOYW1lKCd0cmFuc2Zvcm0nKTtcblxuICAvLyBub3csIGxldCdzIG1ha2UgYSBzdGVwIGJhY2sgYW5kIGxvb2sgYXQgdGhpcyBjb2RlIGNsb3NlbHkgKHd0Zj8pXG4gIC8vIElmIHRoZSBjb250ZW50IG9mIHRoZSBwb3BwZXIgZ3Jvd3Mgb25jZSBpdCdzIGJlZW4gcG9zaXRpb25lZCwgaXRcbiAgLy8gbWF5IGhhcHBlbiB0aGF0IHRoZSBwb3BwZXIgZ2V0cyBtaXNwbGFjZWQgYmVjYXVzZSBvZiB0aGUgbmV3IGNvbnRlbnRcbiAgLy8gb3ZlcmZsb3dpbmcgaXRzIHJlZmVyZW5jZSBlbGVtZW50XG4gIC8vIFRvIGF2b2lkIHRoaXMgcHJvYmxlbSwgd2UgcHJvdmlkZSB0d28gb3B0aW9ucyAoeCBhbmQgeSksIHdoaWNoIGFsbG93XG4gIC8vIHRoZSBjb25zdW1lciB0byBkZWZpbmUgdGhlIG9mZnNldCBvcmlnaW4uXG4gIC8vIElmIHdlIHBvc2l0aW9uIGEgcG9wcGVyIG9uIHRvcCBvZiBhIHJlZmVyZW5jZSBlbGVtZW50LCB3ZSBjYW4gc2V0XG4gIC8vIGB4YCB0byBgdG9wYCB0byBtYWtlIHRoZSBwb3BwZXIgZ3JvdyB0b3dhcmRzIGl0cyB0b3AgaW5zdGVhZCBvZlxuICAvLyBpdHMgYm90dG9tLlxuICB2YXIgbGVmdCA9IHZvaWQgMCxcbiAgICAgIHRvcCA9IHZvaWQgMDtcbiAgaWYgKHNpZGVBID09PSAnYm90dG9tJykge1xuICAgIC8vIHdoZW4gb2Zmc2V0UGFyZW50IGlzIDxodG1sPiB0aGUgcG9zaXRpb25pbmcgaXMgcmVsYXRpdmUgdG8gdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuIChleGNsdWRpbmcgdGhlIHNjcm9sbGJhcilcbiAgICAvLyBhbmQgbm90IHRoZSBib3R0b20gb2YgdGhlIGh0bWwgZWxlbWVudFxuICAgIGlmIChvZmZzZXRQYXJlbnQubm9kZU5hbWUgPT09ICdIVE1MJykge1xuICAgICAgdG9wID0gLW9mZnNldFBhcmVudC5jbGllbnRIZWlnaHQgKyBvZmZzZXRzLmJvdHRvbTtcbiAgICB9IGVsc2Uge1xuICAgICAgdG9wID0gLW9mZnNldFBhcmVudFJlY3QuaGVpZ2h0ICsgb2Zmc2V0cy5ib3R0b207XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRvcCA9IG9mZnNldHMudG9wO1xuICB9XG4gIGlmIChzaWRlQiA9PT0gJ3JpZ2h0Jykge1xuICAgIGlmIChvZmZzZXRQYXJlbnQubm9kZU5hbWUgPT09ICdIVE1MJykge1xuICAgICAgbGVmdCA9IC1vZmZzZXRQYXJlbnQuY2xpZW50V2lkdGggKyBvZmZzZXRzLnJpZ2h0O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZWZ0ID0gLW9mZnNldFBhcmVudFJlY3Qud2lkdGggKyBvZmZzZXRzLnJpZ2h0O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsZWZ0ID0gb2Zmc2V0cy5sZWZ0O1xuICB9XG4gIGlmIChncHVBY2NlbGVyYXRpb24gJiYgcHJlZml4ZWRQcm9wZXJ0eSkge1xuICAgIHN0eWxlc1twcmVmaXhlZFByb3BlcnR5XSA9ICd0cmFuc2xhdGUzZCgnICsgbGVmdCArICdweCwgJyArIHRvcCArICdweCwgMCknO1xuICAgIHN0eWxlc1tzaWRlQV0gPSAwO1xuICAgIHN0eWxlc1tzaWRlQl0gPSAwO1xuICAgIHN0eWxlcy53aWxsQ2hhbmdlID0gJ3RyYW5zZm9ybSc7XG4gIH0gZWxzZSB7XG4gICAgLy8gb3Rod2VyaXNlLCB3ZSB1c2UgdGhlIHN0YW5kYXJkIGB0b3BgLCBgbGVmdGAsIGBib3R0b21gIGFuZCBgcmlnaHRgIHByb3BlcnRpZXNcbiAgICB2YXIgaW52ZXJ0VG9wID0gc2lkZUEgPT09ICdib3R0b20nID8gLTEgOiAxO1xuICAgIHZhciBpbnZlcnRMZWZ0ID0gc2lkZUIgPT09ICdyaWdodCcgPyAtMSA6IDE7XG4gICAgc3R5bGVzW3NpZGVBXSA9IHRvcCAqIGludmVydFRvcDtcbiAgICBzdHlsZXNbc2lkZUJdID0gbGVmdCAqIGludmVydExlZnQ7XG4gICAgc3R5bGVzLndpbGxDaGFuZ2UgPSBzaWRlQSArICcsICcgKyBzaWRlQjtcbiAgfVxuXG4gIC8vIEF0dHJpYnV0ZXNcbiAgdmFyIGF0dHJpYnV0ZXMgPSB7XG4gICAgJ3gtcGxhY2VtZW50JzogZGF0YS5wbGFjZW1lbnRcbiAgfTtcblxuICAvLyBVcGRhdGUgYGRhdGFgIGF0dHJpYnV0ZXMsIHN0eWxlcyBhbmQgYXJyb3dTdHlsZXNcbiAgZGF0YS5hdHRyaWJ1dGVzID0gX2V4dGVuZHMoe30sIGF0dHJpYnV0ZXMsIGRhdGEuYXR0cmlidXRlcyk7XG4gIGRhdGEuc3R5bGVzID0gX2V4dGVuZHMoe30sIHN0eWxlcywgZGF0YS5zdHlsZXMpO1xuICBkYXRhLmFycm93U3R5bGVzID0gX2V4dGVuZHMoe30sIGRhdGEub2Zmc2V0cy5hcnJvdywgZGF0YS5hcnJvd1N0eWxlcyk7XG5cbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8qKlxuICogSGVscGVyIHVzZWQgdG8ga25vdyBpZiB0aGUgZ2l2ZW4gbW9kaWZpZXIgZGVwZW5kcyBmcm9tIGFub3RoZXIgb25lLjxiciAvPlxuICogSXQgY2hlY2tzIGlmIHRoZSBuZWVkZWQgbW9kaWZpZXIgaXMgbGlzdGVkIGFuZCBlbmFibGVkLlxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQHBhcmFtIHtBcnJheX0gbW9kaWZpZXJzIC0gbGlzdCBvZiBtb2RpZmllcnNcbiAqIEBwYXJhbSB7U3RyaW5nfSByZXF1ZXN0aW5nTmFtZSAtIG5hbWUgb2YgcmVxdWVzdGluZyBtb2RpZmllclxuICogQHBhcmFtIHtTdHJpbmd9IHJlcXVlc3RlZE5hbWUgLSBuYW1lIG9mIHJlcXVlc3RlZCBtb2RpZmllclxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzTW9kaWZpZXJSZXF1aXJlZChtb2RpZmllcnMsIHJlcXVlc3RpbmdOYW1lLCByZXF1ZXN0ZWROYW1lKSB7XG4gIHZhciByZXF1ZXN0aW5nID0gZmluZChtb2RpZmllcnMsIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmLm5hbWU7XG4gICAgcmV0dXJuIG5hbWUgPT09IHJlcXVlc3RpbmdOYW1lO1xuICB9KTtcblxuICB2YXIgaXNSZXF1aXJlZCA9ICEhcmVxdWVzdGluZyAmJiBtb2RpZmllcnMuc29tZShmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICByZXR1cm4gbW9kaWZpZXIubmFtZSA9PT0gcmVxdWVzdGVkTmFtZSAmJiBtb2RpZmllci5lbmFibGVkICYmIG1vZGlmaWVyLm9yZGVyIDwgcmVxdWVzdGluZy5vcmRlcjtcbiAgfSk7XG5cbiAgaWYgKCFpc1JlcXVpcmVkKSB7XG4gICAgdmFyIF9yZXF1ZXN0aW5nID0gJ2AnICsgcmVxdWVzdGluZ05hbWUgKyAnYCc7XG4gICAgdmFyIHJlcXVlc3RlZCA9ICdgJyArIHJlcXVlc3RlZE5hbWUgKyAnYCc7XG4gICAgY29uc29sZS53YXJuKHJlcXVlc3RlZCArICcgbW9kaWZpZXIgaXMgcmVxdWlyZWQgYnkgJyArIF9yZXF1ZXN0aW5nICsgJyBtb2RpZmllciBpbiBvcmRlciB0byB3b3JrLCBiZSBzdXJlIHRvIGluY2x1ZGUgaXQgYmVmb3JlICcgKyBfcmVxdWVzdGluZyArICchJyk7XG4gIH1cbiAgcmV0dXJuIGlzUmVxdWlyZWQ7XG59XG5cbi8qKlxuICogQGZ1bmN0aW9uXG4gKiBAbWVtYmVyb2YgTW9kaWZpZXJzXG4gKiBAYXJndW1lbnQge09iamVjdH0gZGF0YSAtIFRoZSBkYXRhIG9iamVjdCBnZW5lcmF0ZWQgYnkgdXBkYXRlIG1ldGhvZFxuICogQGFyZ3VtZW50IHtPYmplY3R9IG9wdGlvbnMgLSBNb2RpZmllcnMgY29uZmlndXJhdGlvbiBhbmQgb3B0aW9uc1xuICogQHJldHVybnMge09iamVjdH0gVGhlIGRhdGEgb2JqZWN0LCBwcm9wZXJseSBtb2RpZmllZFxuICovXG5mdW5jdGlvbiBhcnJvdyhkYXRhLCBvcHRpb25zKSB7XG4gIHZhciBfZGF0YSRvZmZzZXRzJGFycm93O1xuXG4gIC8vIGFycm93IGRlcGVuZHMgb24ga2VlcFRvZ2V0aGVyIGluIG9yZGVyIHRvIHdvcmtcbiAgaWYgKCFpc01vZGlmaWVyUmVxdWlyZWQoZGF0YS5pbnN0YW5jZS5tb2RpZmllcnMsICdhcnJvdycsICdrZWVwVG9nZXRoZXInKSkge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgdmFyIGFycm93RWxlbWVudCA9IG9wdGlvbnMuZWxlbWVudDtcblxuICAvLyBpZiBhcnJvd0VsZW1lbnQgaXMgYSBzdHJpbmcsIHN1cHBvc2UgaXQncyBhIENTUyBzZWxlY3RvclxuICBpZiAodHlwZW9mIGFycm93RWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICBhcnJvd0VsZW1lbnQgPSBkYXRhLmluc3RhbmNlLnBvcHBlci5xdWVyeVNlbGVjdG9yKGFycm93RWxlbWVudCk7XG5cbiAgICAvLyBpZiBhcnJvd0VsZW1lbnQgaXMgbm90IGZvdW5kLCBkb24ndCBydW4gdGhlIG1vZGlmaWVyXG4gICAgaWYgKCFhcnJvd0VsZW1lbnQpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBpZiB0aGUgYXJyb3dFbGVtZW50IGlzbid0IGEgcXVlcnkgc2VsZWN0b3Igd2UgbXVzdCBjaGVjayB0aGF0IHRoZVxuICAgIC8vIHByb3ZpZGVkIERPTSBub2RlIGlzIGNoaWxkIG9mIGl0cyBwb3BwZXIgbm9kZVxuICAgIGlmICghZGF0YS5pbnN0YW5jZS5wb3BwZXIuY29udGFpbnMoYXJyb3dFbGVtZW50KSkge1xuICAgICAgY29uc29sZS53YXJuKCdXQVJOSU5HOiBgYXJyb3cuZWxlbWVudGAgbXVzdCBiZSBjaGlsZCBvZiBpdHMgcG9wcGVyIGVsZW1lbnQhJyk7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gIH1cblxuICB2YXIgcGxhY2VtZW50ID0gZGF0YS5wbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbiAgdmFyIF9kYXRhJG9mZnNldHMgPSBkYXRhLm9mZnNldHMsXG4gICAgICBwb3BwZXIgPSBfZGF0YSRvZmZzZXRzLnBvcHBlcixcbiAgICAgIHJlZmVyZW5jZSA9IF9kYXRhJG9mZnNldHMucmVmZXJlbmNlO1xuXG4gIHZhciBpc1ZlcnRpY2FsID0gWydsZWZ0JywgJ3JpZ2h0J10uaW5kZXhPZihwbGFjZW1lbnQpICE9PSAtMTtcblxuICB2YXIgbGVuID0gaXNWZXJ0aWNhbCA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgdmFyIHNpZGVDYXBpdGFsaXplZCA9IGlzVmVydGljYWwgPyAnVG9wJyA6ICdMZWZ0JztcbiAgdmFyIHNpZGUgPSBzaWRlQ2FwaXRhbGl6ZWQudG9Mb3dlckNhc2UoKTtcbiAgdmFyIGFsdFNpZGUgPSBpc1ZlcnRpY2FsID8gJ2xlZnQnIDogJ3RvcCc7XG4gIHZhciBvcFNpZGUgPSBpc1ZlcnRpY2FsID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICB2YXIgYXJyb3dFbGVtZW50U2l6ZSA9IGdldE91dGVyU2l6ZXMoYXJyb3dFbGVtZW50KVtsZW5dO1xuXG4gIC8vXG4gIC8vIGV4dGVuZHMga2VlcFRvZ2V0aGVyIGJlaGF2aW9yIG1ha2luZyBzdXJlIHRoZSBwb3BwZXIgYW5kIGl0c1xuICAvLyByZWZlcmVuY2UgaGF2ZSBlbm91Z2ggcGl4ZWxzIGluIGNvbmp1bmN0aW9uXG4gIC8vXG5cbiAgLy8gdG9wL2xlZnQgc2lkZVxuICBpZiAocmVmZXJlbmNlW29wU2lkZV0gLSBhcnJvd0VsZW1lbnRTaXplIDwgcG9wcGVyW3NpZGVdKSB7XG4gICAgZGF0YS5vZmZzZXRzLnBvcHBlcltzaWRlXSAtPSBwb3BwZXJbc2lkZV0gLSAocmVmZXJlbmNlW29wU2lkZV0gLSBhcnJvd0VsZW1lbnRTaXplKTtcbiAgfVxuICAvLyBib3R0b20vcmlnaHQgc2lkZVxuICBpZiAocmVmZXJlbmNlW3NpZGVdICsgYXJyb3dFbGVtZW50U2l6ZSA+IHBvcHBlcltvcFNpZGVdKSB7XG4gICAgZGF0YS5vZmZzZXRzLnBvcHBlcltzaWRlXSArPSByZWZlcmVuY2Vbc2lkZV0gKyBhcnJvd0VsZW1lbnRTaXplIC0gcG9wcGVyW29wU2lkZV07XG4gIH1cbiAgZGF0YS5vZmZzZXRzLnBvcHBlciA9IGdldENsaWVudFJlY3QoZGF0YS5vZmZzZXRzLnBvcHBlcik7XG5cbiAgLy8gY29tcHV0ZSBjZW50ZXIgb2YgdGhlIHBvcHBlclxuICB2YXIgY2VudGVyID0gcmVmZXJlbmNlW3NpZGVdICsgcmVmZXJlbmNlW2xlbl0gLyAyIC0gYXJyb3dFbGVtZW50U2l6ZSAvIDI7XG5cbiAgLy8gQ29tcHV0ZSB0aGUgc2lkZVZhbHVlIHVzaW5nIHRoZSB1cGRhdGVkIHBvcHBlciBvZmZzZXRzXG4gIC8vIHRha2UgcG9wcGVyIG1hcmdpbiBpbiBhY2NvdW50IGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSB0aGlzIGluZm8gYXZhaWxhYmxlXG4gIHZhciBjc3MgPSBnZXRTdHlsZUNvbXB1dGVkUHJvcGVydHkoZGF0YS5pbnN0YW5jZS5wb3BwZXIpO1xuICB2YXIgcG9wcGVyTWFyZ2luU2lkZSA9IHBhcnNlRmxvYXQoY3NzWydtYXJnaW4nICsgc2lkZUNhcGl0YWxpemVkXSwgMTApO1xuICB2YXIgcG9wcGVyQm9yZGVyU2lkZSA9IHBhcnNlRmxvYXQoY3NzWydib3JkZXInICsgc2lkZUNhcGl0YWxpemVkICsgJ1dpZHRoJ10sIDEwKTtcbiAgdmFyIHNpZGVWYWx1ZSA9IGNlbnRlciAtIGRhdGEub2Zmc2V0cy5wb3BwZXJbc2lkZV0gLSBwb3BwZXJNYXJnaW5TaWRlIC0gcG9wcGVyQm9yZGVyU2lkZTtcblxuICAvLyBwcmV2ZW50IGFycm93RWxlbWVudCBmcm9tIGJlaW5nIHBsYWNlZCBub3QgY29udGlndW91c2x5IHRvIGl0cyBwb3BwZXJcbiAgc2lkZVZhbHVlID0gTWF0aC5tYXgoTWF0aC5taW4ocG9wcGVyW2xlbl0gLSBhcnJvd0VsZW1lbnRTaXplLCBzaWRlVmFsdWUpLCAwKTtcblxuICBkYXRhLmFycm93RWxlbWVudCA9IGFycm93RWxlbWVudDtcbiAgZGF0YS5vZmZzZXRzLmFycm93ID0gKF9kYXRhJG9mZnNldHMkYXJyb3cgPSB7fSwgZGVmaW5lUHJvcGVydHkoX2RhdGEkb2Zmc2V0cyRhcnJvdywgc2lkZSwgTWF0aC5yb3VuZChzaWRlVmFsdWUpKSwgZGVmaW5lUHJvcGVydHkoX2RhdGEkb2Zmc2V0cyRhcnJvdywgYWx0U2lkZSwgJycpLCBfZGF0YSRvZmZzZXRzJGFycm93KTtcblxuICByZXR1cm4gZGF0YTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIG9wcG9zaXRlIHBsYWNlbWVudCB2YXJpYXRpb24gb2YgdGhlIGdpdmVuIG9uZVxuICogQG1ldGhvZFxuICogQG1lbWJlcm9mIFBvcHBlci5VdGlsc1xuICogQGFyZ3VtZW50IHtTdHJpbmd9IHBsYWNlbWVudCB2YXJpYXRpb25cbiAqIEByZXR1cm5zIHtTdHJpbmd9IGZsaXBwZWQgcGxhY2VtZW50IHZhcmlhdGlvblxuICovXG5mdW5jdGlvbiBnZXRPcHBvc2l0ZVZhcmlhdGlvbih2YXJpYXRpb24pIHtcbiAgaWYgKHZhcmlhdGlvbiA9PT0gJ2VuZCcpIHtcbiAgICByZXR1cm4gJ3N0YXJ0JztcbiAgfSBlbHNlIGlmICh2YXJpYXRpb24gPT09ICdzdGFydCcpIHtcbiAgICByZXR1cm4gJ2VuZCc7XG4gIH1cbiAgcmV0dXJuIHZhcmlhdGlvbjtcbn1cblxuLyoqXG4gKiBMaXN0IG9mIGFjY2VwdGVkIHBsYWNlbWVudHMgdG8gdXNlIGFzIHZhbHVlcyBvZiB0aGUgYHBsYWNlbWVudGAgb3B0aW9uLjxiciAvPlxuICogVmFsaWQgcGxhY2VtZW50cyBhcmU6XG4gKiAtIGBhdXRvYFxuICogLSBgdG9wYFxuICogLSBgcmlnaHRgXG4gKiAtIGBib3R0b21gXG4gKiAtIGBsZWZ0YFxuICpcbiAqIEVhY2ggcGxhY2VtZW50IGNhbiBoYXZlIGEgdmFyaWF0aW9uIGZyb20gdGhpcyBsaXN0OlxuICogLSBgLXN0YXJ0YFxuICogLSBgLWVuZGBcbiAqXG4gKiBWYXJpYXRpb25zIGFyZSBpbnRlcnByZXRlZCBlYXNpbHkgaWYgeW91IHRoaW5rIG9mIHRoZW0gYXMgdGhlIGxlZnQgdG8gcmlnaHRcbiAqIHdyaXR0ZW4gbGFuZ3VhZ2VzLiBIb3Jpem9udGFsbHkgKGB0b3BgIGFuZCBgYm90dG9tYCksIGBzdGFydGAgaXMgbGVmdCBhbmQgYGVuZGBcbiAqIGlzIHJpZ2h0LjxiciAvPlxuICogVmVydGljYWxseSAoYGxlZnRgIGFuZCBgcmlnaHRgKSwgYHN0YXJ0YCBpcyB0b3AgYW5kIGBlbmRgIGlzIGJvdHRvbS5cbiAqXG4gKiBTb21lIHZhbGlkIGV4YW1wbGVzIGFyZTpcbiAqIC0gYHRvcC1lbmRgIChvbiB0b3Agb2YgcmVmZXJlbmNlLCByaWdodCBhbGlnbmVkKVxuICogLSBgcmlnaHQtc3RhcnRgIChvbiByaWdodCBvZiByZWZlcmVuY2UsIHRvcCBhbGlnbmVkKVxuICogLSBgYm90dG9tYCAob24gYm90dG9tLCBjZW50ZXJlZClcbiAqIC0gYGF1dG8tZW5kYCAob24gdGhlIHNpZGUgd2l0aCBtb3JlIHNwYWNlIGF2YWlsYWJsZSwgYWxpZ25tZW50IGRlcGVuZHMgYnkgcGxhY2VtZW50KVxuICpcbiAqIEBzdGF0aWNcbiAqIEB0eXBlIHtBcnJheX1cbiAqIEBlbnVtIHtTdHJpbmd9XG4gKiBAcmVhZG9ubHlcbiAqIEBtZXRob2QgcGxhY2VtZW50c1xuICogQG1lbWJlcm9mIFBvcHBlclxuICovXG52YXIgcGxhY2VtZW50cyA9IFsnYXV0by1zdGFydCcsICdhdXRvJywgJ2F1dG8tZW5kJywgJ3RvcC1zdGFydCcsICd0b3AnLCAndG9wLWVuZCcsICdyaWdodC1zdGFydCcsICdyaWdodCcsICdyaWdodC1lbmQnLCAnYm90dG9tLWVuZCcsICdib3R0b20nLCAnYm90dG9tLXN0YXJ0JywgJ2xlZnQtZW5kJywgJ2xlZnQnLCAnbGVmdC1zdGFydCddO1xuXG4vLyBHZXQgcmlkIG9mIGBhdXRvYCBgYXV0by1zdGFydGAgYW5kIGBhdXRvLWVuZGBcbnZhciB2YWxpZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzLnNsaWNlKDMpO1xuXG4vKipcbiAqIEdpdmVuIGFuIGluaXRpYWwgcGxhY2VtZW50LCByZXR1cm5zIGFsbCB0aGUgc3Vic2VxdWVudCBwbGFjZW1lbnRzXG4gKiBjbG9ja3dpc2UgKG9yIGNvdW50ZXItY2xvY2t3aXNlKS5cbiAqXG4gKiBAbWV0aG9kXG4gKiBAbWVtYmVyb2YgUG9wcGVyLlV0aWxzXG4gKiBAYXJndW1lbnQge1N0cmluZ30gcGxhY2VtZW50IC0gQSB2YWxpZCBwbGFjZW1lbnQgKGl0IGFjY2VwdHMgdmFyaWF0aW9ucylcbiAqIEBhcmd1bWVudCB7Qm9vbGVhbn0gY291bnRlciAtIFNldCB0byB0cnVlIHRvIHdhbGsgdGhlIHBsYWNlbWVudHMgY291bnRlcmNsb2Nrd2lzZVxuICogQHJldHVybnMge0FycmF5fSBwbGFjZW1lbnRzIGluY2x1ZGluZyB0aGVpciB2YXJpYXRpb25zXG4gKi9cbmZ1bmN0aW9uIGNsb2Nrd2lzZShwbGFjZW1lbnQpIHtcbiAgdmFyIGNvdW50ZXIgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlO1xuXG4gIHZhciBpbmRleCA9IHZhbGlkUGxhY2VtZW50cy5pbmRleE9mKHBsYWNlbWVudCk7XG4gIHZhciBhcnIgPSB2YWxpZFBsYWNlbWVudHMuc2xpY2UoaW5kZXggKyAxKS5jb25jYXQodmFsaWRQbGFjZW1lbnRzLnNsaWNlKDAsIGluZGV4KSk7XG4gIHJldHVybiBjb3VudGVyID8gYXJyLnJldmVyc2UoKSA6IGFycjtcbn1cblxudmFyIEJFSEFWSU9SUyA9IHtcbiAgRkxJUDogJ2ZsaXAnLFxuICBDTE9DS1dJU0U6ICdjbG9ja3dpc2UnLFxuICBDT1VOVEVSQ0xPQ0tXSVNFOiAnY291bnRlcmNsb2Nrd2lzZSdcbn07XG5cbi8qKlxuICogQGZ1bmN0aW9uXG4gKiBAbWVtYmVyb2YgTW9kaWZpZXJzXG4gKiBAYXJndW1lbnQge09iamVjdH0gZGF0YSAtIFRoZSBkYXRhIG9iamVjdCBnZW5lcmF0ZWQgYnkgdXBkYXRlIG1ldGhvZFxuICogQGFyZ3VtZW50IHtPYmplY3R9IG9wdGlvbnMgLSBNb2RpZmllcnMgY29uZmlndXJhdGlvbiBhbmQgb3B0aW9uc1xuICogQHJldHVybnMge09iamVjdH0gVGhlIGRhdGEgb2JqZWN0LCBwcm9wZXJseSBtb2RpZmllZFxuICovXG5mdW5jdGlvbiBmbGlwKGRhdGEsIG9wdGlvbnMpIHtcbiAgLy8gaWYgYGlubmVyYCBtb2RpZmllciBpcyBlbmFibGVkLCB3ZSBjYW4ndCB1c2UgdGhlIGBmbGlwYCBtb2RpZmllclxuICBpZiAoaXNNb2RpZmllckVuYWJsZWQoZGF0YS5pbnN0YW5jZS5tb2RpZmllcnMsICdpbm5lcicpKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBpZiAoZGF0YS5mbGlwcGVkICYmIGRhdGEucGxhY2VtZW50ID09PSBkYXRhLm9yaWdpbmFsUGxhY2VtZW50KSB7XG4gICAgLy8gc2VlbXMgbGlrZSBmbGlwIGlzIHRyeWluZyB0byBsb29wLCBwcm9iYWJseSB0aGVyZSdzIG5vdCBlbm91Z2ggc3BhY2Ugb24gYW55IG9mIHRoZSBmbGlwcGFibGUgc2lkZXNcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHZhciBib3VuZGFyaWVzID0gZ2V0Qm91bmRhcmllcyhkYXRhLmluc3RhbmNlLnBvcHBlciwgZGF0YS5pbnN0YW5jZS5yZWZlcmVuY2UsIG9wdGlvbnMucGFkZGluZywgb3B0aW9ucy5ib3VuZGFyaWVzRWxlbWVudCwgZGF0YS5wb3NpdGlvbkZpeGVkKTtcblxuICB2YXIgcGxhY2VtZW50ID0gZGF0YS5wbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbiAgdmFyIHBsYWNlbWVudE9wcG9zaXRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgdmFyIHZhcmlhdGlvbiA9IGRhdGEucGxhY2VtZW50LnNwbGl0KCctJylbMV0gfHwgJyc7XG5cbiAgdmFyIGZsaXBPcmRlciA9IFtdO1xuXG4gIHN3aXRjaCAob3B0aW9ucy5iZWhhdmlvcikge1xuICAgIGNhc2UgQkVIQVZJT1JTLkZMSVA6XG4gICAgICBmbGlwT3JkZXIgPSBbcGxhY2VtZW50LCBwbGFjZW1lbnRPcHBvc2l0ZV07XG4gICAgICBicmVhaztcbiAgICBjYXNlIEJFSEFWSU9SUy5DTE9DS1dJU0U6XG4gICAgICBmbGlwT3JkZXIgPSBjbG9ja3dpc2UocGxhY2VtZW50KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgQkVIQVZJT1JTLkNPVU5URVJDTE9DS1dJU0U6XG4gICAgICBmbGlwT3JkZXIgPSBjbG9ja3dpc2UocGxhY2VtZW50LCB0cnVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBmbGlwT3JkZXIgPSBvcHRpb25zLmJlaGF2aW9yO1xuICB9XG5cbiAgZmxpcE9yZGVyLmZvckVhY2goZnVuY3Rpb24gKHN0ZXAsIGluZGV4KSB7XG4gICAgaWYgKHBsYWNlbWVudCAhPT0gc3RlcCB8fCBmbGlwT3JkZXIubGVuZ3RoID09PSBpbmRleCArIDEpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIHBsYWNlbWVudCA9IGRhdGEucGxhY2VtZW50LnNwbGl0KCctJylbMF07XG4gICAgcGxhY2VtZW50T3Bwb3NpdGUgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuXG4gICAgdmFyIHBvcHBlck9mZnNldHMgPSBkYXRhLm9mZnNldHMucG9wcGVyO1xuICAgIHZhciByZWZPZmZzZXRzID0gZGF0YS5vZmZzZXRzLnJlZmVyZW5jZTtcblxuICAgIC8vIHVzaW5nIGZsb29yIGJlY2F1c2UgdGhlIHJlZmVyZW5jZSBvZmZzZXRzIG1heSBjb250YWluIGRlY2ltYWxzIHdlIGFyZSBub3QgZ29pbmcgdG8gY29uc2lkZXIgaGVyZVxuICAgIHZhciBmbG9vciA9IE1hdGguZmxvb3I7XG4gICAgdmFyIG92ZXJsYXBzUmVmID0gcGxhY2VtZW50ID09PSAnbGVmdCcgJiYgZmxvb3IocG9wcGVyT2Zmc2V0cy5yaWdodCkgPiBmbG9vcihyZWZPZmZzZXRzLmxlZnQpIHx8IHBsYWNlbWVudCA9PT0gJ3JpZ2h0JyAmJiBmbG9vcihwb3BwZXJPZmZzZXRzLmxlZnQpIDwgZmxvb3IocmVmT2Zmc2V0cy5yaWdodCkgfHwgcGxhY2VtZW50ID09PSAndG9wJyAmJiBmbG9vcihwb3BwZXJPZmZzZXRzLmJvdHRvbSkgPiBmbG9vcihyZWZPZmZzZXRzLnRvcCkgfHwgcGxhY2VtZW50ID09PSAnYm90dG9tJyAmJiBmbG9vcihwb3BwZXJPZmZzZXRzLnRvcCkgPCBmbG9vcihyZWZPZmZzZXRzLmJvdHRvbSk7XG5cbiAgICB2YXIgb3ZlcmZsb3dzTGVmdCA9IGZsb29yKHBvcHBlck9mZnNldHMubGVmdCkgPCBmbG9vcihib3VuZGFyaWVzLmxlZnQpO1xuICAgIHZhciBvdmVyZmxvd3NSaWdodCA9IGZsb29yKHBvcHBlck9mZnNldHMucmlnaHQpID4gZmxvb3IoYm91bmRhcmllcy5yaWdodCk7XG4gICAgdmFyIG92ZXJmbG93c1RvcCA9IGZsb29yKHBvcHBlck9mZnNldHMudG9wKSA8IGZsb29yKGJvdW5kYXJpZXMudG9wKTtcbiAgICB2YXIgb3ZlcmZsb3dzQm90dG9tID0gZmxvb3IocG9wcGVyT2Zmc2V0cy5ib3R0b20pID4gZmxvb3IoYm91bmRhcmllcy5ib3R0b20pO1xuXG4gICAgdmFyIG92ZXJmbG93c0JvdW5kYXJpZXMgPSBwbGFjZW1lbnQgPT09ICdsZWZ0JyAmJiBvdmVyZmxvd3NMZWZ0IHx8IHBsYWNlbWVudCA9PT0gJ3JpZ2h0JyAmJiBvdmVyZmxvd3NSaWdodCB8fCBwbGFjZW1lbnQgPT09ICd0b3AnICYmIG92ZXJmbG93c1RvcCB8fCBwbGFjZW1lbnQgPT09ICdib3R0b20nICYmIG92ZXJmbG93c0JvdHRvbTtcblxuICAgIC8vIGZsaXAgdGhlIHZhcmlhdGlvbiBpZiByZXF1aXJlZFxuICAgIHZhciBpc1ZlcnRpY2FsID0gWyd0b3AnLCAnYm90dG9tJ10uaW5kZXhPZihwbGFjZW1lbnQpICE9PSAtMTtcblxuICAgIC8vIGZsaXBzIHZhcmlhdGlvbiBpZiByZWZlcmVuY2UgZWxlbWVudCBvdmVyZmxvd3MgYm91bmRhcmllc1xuICAgIHZhciBmbGlwcGVkVmFyaWF0aW9uQnlSZWYgPSAhIW9wdGlvbnMuZmxpcFZhcmlhdGlvbnMgJiYgKGlzVmVydGljYWwgJiYgdmFyaWF0aW9uID09PSAnc3RhcnQnICYmIG92ZXJmbG93c0xlZnQgfHwgaXNWZXJ0aWNhbCAmJiB2YXJpYXRpb24gPT09ICdlbmQnICYmIG92ZXJmbG93c1JpZ2h0IHx8ICFpc1ZlcnRpY2FsICYmIHZhcmlhdGlvbiA9PT0gJ3N0YXJ0JyAmJiBvdmVyZmxvd3NUb3AgfHwgIWlzVmVydGljYWwgJiYgdmFyaWF0aW9uID09PSAnZW5kJyAmJiBvdmVyZmxvd3NCb3R0b20pO1xuXG4gICAgLy8gZmxpcHMgdmFyaWF0aW9uIGlmIHBvcHBlciBjb250ZW50IG92ZXJmbG93cyBib3VuZGFyaWVzXG4gICAgdmFyIGZsaXBwZWRWYXJpYXRpb25CeUNvbnRlbnQgPSAhIW9wdGlvbnMuZmxpcFZhcmlhdGlvbnNCeUNvbnRlbnQgJiYgKGlzVmVydGljYWwgJiYgdmFyaWF0aW9uID09PSAnc3RhcnQnICYmIG92ZXJmbG93c1JpZ2h0IHx8IGlzVmVydGljYWwgJiYgdmFyaWF0aW9uID09PSAnZW5kJyAmJiBvdmVyZmxvd3NMZWZ0IHx8ICFpc1ZlcnRpY2FsICYmIHZhcmlhdGlvbiA9PT0gJ3N0YXJ0JyAmJiBvdmVyZmxvd3NCb3R0b20gfHwgIWlzVmVydGljYWwgJiYgdmFyaWF0aW9uID09PSAnZW5kJyAmJiBvdmVyZmxvd3NUb3ApO1xuXG4gICAgdmFyIGZsaXBwZWRWYXJpYXRpb24gPSBmbGlwcGVkVmFyaWF0aW9uQnlSZWYgfHwgZmxpcHBlZFZhcmlhdGlvbkJ5Q29udGVudDtcblxuICAgIGlmIChvdmVybGFwc1JlZiB8fCBvdmVyZmxvd3NCb3VuZGFyaWVzIHx8IGZsaXBwZWRWYXJpYXRpb24pIHtcbiAgICAgIC8vIHRoaXMgYm9vbGVhbiB0byBkZXRlY3QgYW55IGZsaXAgbG9vcFxuICAgICAgZGF0YS5mbGlwcGVkID0gdHJ1ZTtcblxuICAgICAgaWYgKG92ZXJsYXBzUmVmIHx8IG92ZXJmbG93c0JvdW5kYXJpZXMpIHtcbiAgICAgICAgcGxhY2VtZW50ID0gZmxpcE9yZGVyW2luZGV4ICsgMV07XG4gICAgICB9XG5cbiAgICAgIGlmIChmbGlwcGVkVmFyaWF0aW9uKSB7XG4gICAgICAgIHZhcmlhdGlvbiA9IGdldE9wcG9zaXRlVmFyaWF0aW9uKHZhcmlhdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGRhdGEucGxhY2VtZW50ID0gcGxhY2VtZW50ICsgKHZhcmlhdGlvbiA/ICctJyArIHZhcmlhdGlvbiA6ICcnKTtcblxuICAgICAgLy8gdGhpcyBvYmplY3QgY29udGFpbnMgYHBvc2l0aW9uYCwgd2Ugd2FudCB0byBwcmVzZXJ2ZSBpdCBhbG9uZyB3aXRoXG4gICAgICAvLyBhbnkgYWRkaXRpb25hbCBwcm9wZXJ0eSB3ZSBtYXkgYWRkIGluIHRoZSBmdXR1cmVcbiAgICAgIGRhdGEub2Zmc2V0cy5wb3BwZXIgPSBfZXh0ZW5kcyh7fSwgZGF0YS5vZmZzZXRzLnBvcHBlciwgZ2V0UG9wcGVyT2Zmc2V0cyhkYXRhLmluc3RhbmNlLnBvcHBlciwgZGF0YS5vZmZzZXRzLnJlZmVyZW5jZSwgZGF0YS5wbGFjZW1lbnQpKTtcblxuICAgICAgZGF0YSA9IHJ1bk1vZGlmaWVycyhkYXRhLmluc3RhbmNlLm1vZGlmaWVycywgZGF0YSwgJ2ZsaXAnKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gZGF0YTtcbn1cblxuLyoqXG4gKiBAZnVuY3Rpb25cbiAqIEBtZW1iZXJvZiBNb2RpZmllcnNcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IGdlbmVyYXRlZCBieSB1cGRhdGUgbWV0aG9kXG4gKiBAYXJndW1lbnQge09iamVjdH0gb3B0aW9ucyAtIE1vZGlmaWVycyBjb25maWd1cmF0aW9uIGFuZCBvcHRpb25zXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgZGF0YSBvYmplY3QsIHByb3Blcmx5IG1vZGlmaWVkXG4gKi9cbmZ1bmN0aW9uIGtlZXBUb2dldGhlcihkYXRhKSB7XG4gIHZhciBfZGF0YSRvZmZzZXRzID0gZGF0YS5vZmZzZXRzLFxuICAgICAgcG9wcGVyID0gX2RhdGEkb2Zmc2V0cy5wb3BwZXIsXG4gICAgICByZWZlcmVuY2UgPSBfZGF0YSRvZmZzZXRzLnJlZmVyZW5jZTtcblxuICB2YXIgcGxhY2VtZW50ID0gZGF0YS5wbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbiAgdmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbiAgdmFyIGlzVmVydGljYWwgPSBbJ3RvcCcsICdib3R0b20nXS5pbmRleE9mKHBsYWNlbWVudCkgIT09IC0xO1xuICB2YXIgc2lkZSA9IGlzVmVydGljYWwgPyAncmlnaHQnIDogJ2JvdHRvbSc7XG4gIHZhciBvcFNpZGUgPSBpc1ZlcnRpY2FsID8gJ2xlZnQnIDogJ3RvcCc7XG4gIHZhciBtZWFzdXJlbWVudCA9IGlzVmVydGljYWwgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG5cbiAgaWYgKHBvcHBlcltzaWRlXSA8IGZsb29yKHJlZmVyZW5jZVtvcFNpZGVdKSkge1xuICAgIGRhdGEub2Zmc2V0cy5wb3BwZXJbb3BTaWRlXSA9IGZsb29yKHJlZmVyZW5jZVtvcFNpZGVdKSAtIHBvcHBlclttZWFzdXJlbWVudF07XG4gIH1cbiAgaWYgKHBvcHBlcltvcFNpZGVdID4gZmxvb3IocmVmZXJlbmNlW3NpZGVdKSkge1xuICAgIGRhdGEub2Zmc2V0cy5wb3BwZXJbb3BTaWRlXSA9IGZsb29yKHJlZmVyZW5jZVtzaWRlXSk7XG4gIH1cblxuICByZXR1cm4gZGF0YTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHN0cmluZyBjb250YWluaW5nIHZhbHVlICsgdW5pdCBpbnRvIGEgcHggdmFsdWUgbnVtYmVyXG4gKiBAZnVuY3Rpb25cbiAqIEBtZW1iZXJvZiB7bW9kaWZpZXJzfm9mZnNldH1cbiAqIEBwcml2YXRlXG4gKiBAYXJndW1lbnQge1N0cmluZ30gc3RyIC0gVmFsdWUgKyB1bml0IHN0cmluZ1xuICogQGFyZ3VtZW50IHtTdHJpbmd9IG1lYXN1cmVtZW50IC0gYGhlaWdodGAgb3IgYHdpZHRoYFxuICogQGFyZ3VtZW50IHtPYmplY3R9IHBvcHBlck9mZnNldHNcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSByZWZlcmVuY2VPZmZzZXRzXG4gKiBAcmV0dXJucyB7TnVtYmVyfFN0cmluZ31cbiAqIFZhbHVlIGluIHBpeGVscywgb3Igb3JpZ2luYWwgc3RyaW5nIGlmIG5vIHZhbHVlcyB3ZXJlIGV4dHJhY3RlZFxuICovXG5mdW5jdGlvbiB0b1ZhbHVlKHN0ciwgbWVhc3VyZW1lbnQsIHBvcHBlck9mZnNldHMsIHJlZmVyZW5jZU9mZnNldHMpIHtcbiAgLy8gc2VwYXJhdGUgdmFsdWUgZnJvbSB1bml0XG4gIHZhciBzcGxpdCA9IHN0ci5tYXRjaCgvKCg/OlxcLXxcXCspP1xcZCpcXC4/XFxkKikoLiopLyk7XG4gIHZhciB2YWx1ZSA9ICtzcGxpdFsxXTtcbiAgdmFyIHVuaXQgPSBzcGxpdFsyXTtcblxuICAvLyBJZiBpdCdzIG5vdCBhIG51bWJlciBpdCdzIGFuIG9wZXJhdG9yLCBJIGd1ZXNzXG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgaWYgKHVuaXQuaW5kZXhPZignJScpID09PSAwKSB7XG4gICAgdmFyIGVsZW1lbnQgPSB2b2lkIDA7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICBjYXNlICclcCc6XG4gICAgICAgIGVsZW1lbnQgPSBwb3BwZXJPZmZzZXRzO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJyUnOlxuICAgICAgY2FzZSAnJXInOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZWxlbWVudCA9IHJlZmVyZW5jZU9mZnNldHM7XG4gICAgfVxuXG4gICAgdmFyIHJlY3QgPSBnZXRDbGllbnRSZWN0KGVsZW1lbnQpO1xuICAgIHJldHVybiByZWN0W21lYXN1cmVtZW50XSAvIDEwMCAqIHZhbHVlO1xuICB9IGVsc2UgaWYgKHVuaXQgPT09ICd2aCcgfHwgdW5pdCA9PT0gJ3Z3Jykge1xuICAgIC8vIGlmIGlzIGEgdmggb3IgdncsIHdlIGNhbGN1bGF0ZSB0aGUgc2l6ZSBiYXNlZCBvbiB0aGUgdmlld3BvcnRcbiAgICB2YXIgc2l6ZSA9IHZvaWQgMDtcbiAgICBpZiAodW5pdCA9PT0gJ3ZoJykge1xuICAgICAgc2l6ZSA9IE1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsIHdpbmRvdy5pbm5lckhlaWdodCB8fCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2l6ZSA9IE1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCwgd2luZG93LmlubmVyV2lkdGggfHwgMCk7XG4gICAgfVxuICAgIHJldHVybiBzaXplIC8gMTAwICogdmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgLy8gaWYgaXMgYW4gZXhwbGljaXQgcGl4ZWwgdW5pdCwgd2UgZ2V0IHJpZCBvZiB0aGUgdW5pdCBhbmQga2VlcCB0aGUgdmFsdWVcbiAgICAvLyBpZiBpcyBhbiBpbXBsaWNpdCB1bml0LCBpdCdzIHB4LCBhbmQgd2UgcmV0dXJuIGp1c3QgdGhlIHZhbHVlXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogUGFyc2UgYW4gYG9mZnNldGAgc3RyaW5nIHRvIGV4dHJhcG9sYXRlIGB4YCBhbmQgYHlgIG51bWVyaWMgb2Zmc2V0cy5cbiAqIEBmdW5jdGlvblxuICogQG1lbWJlcm9mIHttb2RpZmllcnN+b2Zmc2V0fVxuICogQHByaXZhdGVcbiAqIEBhcmd1bWVudCB7U3RyaW5nfSBvZmZzZXRcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBwb3BwZXJPZmZzZXRzXG4gKiBAYXJndW1lbnQge09iamVjdH0gcmVmZXJlbmNlT2Zmc2V0c1xuICogQGFyZ3VtZW50IHtTdHJpbmd9IGJhc2VQbGFjZW1lbnRcbiAqIEByZXR1cm5zIHtBcnJheX0gYSB0d28gY2VsbHMgYXJyYXkgd2l0aCB4IGFuZCB5IG9mZnNldHMgaW4gbnVtYmVyc1xuICovXG5mdW5jdGlvbiBwYXJzZU9mZnNldChvZmZzZXQsIHBvcHBlck9mZnNldHMsIHJlZmVyZW5jZU9mZnNldHMsIGJhc2VQbGFjZW1lbnQpIHtcbiAgdmFyIG9mZnNldHMgPSBbMCwgMF07XG5cbiAgLy8gVXNlIGhlaWdodCBpZiBwbGFjZW1lbnQgaXMgbGVmdCBvciByaWdodCBhbmQgaW5kZXggaXMgMCBvdGhlcndpc2UgdXNlIHdpZHRoXG4gIC8vIGluIHRoaXMgd2F5IHRoZSBmaXJzdCBvZmZzZXQgd2lsbCB1c2UgYW4gYXhpcyBhbmQgdGhlIHNlY29uZCBvbmVcbiAgLy8gd2lsbCB1c2UgdGhlIG90aGVyIG9uZVxuICB2YXIgdXNlSGVpZ2h0ID0gWydyaWdodCcsICdsZWZ0J10uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTE7XG5cbiAgLy8gU3BsaXQgdGhlIG9mZnNldCBzdHJpbmcgdG8gb2J0YWluIGEgbGlzdCBvZiB2YWx1ZXMgYW5kIG9wZXJhbmRzXG4gIC8vIFRoZSByZWdleCBhZGRyZXNzZXMgdmFsdWVzIHdpdGggdGhlIHBsdXMgb3IgbWludXMgc2lnbiBpbiBmcm9udCAoKzEwLCAtMjAsIGV0YylcbiAgdmFyIGZyYWdtZW50cyA9IG9mZnNldC5zcGxpdCgvKFxcK3xcXC0pLykubWFwKGZ1bmN0aW9uIChmcmFnKSB7XG4gICAgcmV0dXJuIGZyYWcudHJpbSgpO1xuICB9KTtcblxuICAvLyBEZXRlY3QgaWYgdGhlIG9mZnNldCBzdHJpbmcgY29udGFpbnMgYSBwYWlyIG9mIHZhbHVlcyBvciBhIHNpbmdsZSBvbmVcbiAgLy8gdGhleSBjb3VsZCBiZSBzZXBhcmF0ZWQgYnkgY29tbWEgb3Igc3BhY2VcbiAgdmFyIGRpdmlkZXIgPSBmcmFnbWVudHMuaW5kZXhPZihmaW5kKGZyYWdtZW50cywgZnVuY3Rpb24gKGZyYWcpIHtcbiAgICByZXR1cm4gZnJhZy5zZWFyY2goLyx8XFxzLykgIT09IC0xO1xuICB9KSk7XG5cbiAgaWYgKGZyYWdtZW50c1tkaXZpZGVyXSAmJiBmcmFnbWVudHNbZGl2aWRlcl0uaW5kZXhPZignLCcpID09PSAtMSkge1xuICAgIGNvbnNvbGUud2FybignT2Zmc2V0cyBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UocykgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIGNvbW1hICgsKSBpbnN0ZWFkLicpO1xuICB9XG5cbiAgLy8gSWYgZGl2aWRlciBpcyBmb3VuZCwgd2UgZGl2aWRlIHRoZSBsaXN0IG9mIHZhbHVlcyBhbmQgb3BlcmFuZHMgdG8gZGl2aWRlXG4gIC8vIHRoZW0gYnkgb2ZzZXQgWCBhbmQgWS5cbiAgdmFyIHNwbGl0UmVnZXggPSAvXFxzKixcXHMqfFxccysvO1xuICB2YXIgb3BzID0gZGl2aWRlciAhPT0gLTEgPyBbZnJhZ21lbnRzLnNsaWNlKDAsIGRpdmlkZXIpLmNvbmNhdChbZnJhZ21lbnRzW2RpdmlkZXJdLnNwbGl0KHNwbGl0UmVnZXgpWzBdXSksIFtmcmFnbWVudHNbZGl2aWRlcl0uc3BsaXQoc3BsaXRSZWdleClbMV1dLmNvbmNhdChmcmFnbWVudHMuc2xpY2UoZGl2aWRlciArIDEpKV0gOiBbZnJhZ21lbnRzXTtcblxuICAvLyBDb252ZXJ0IHRoZSB2YWx1ZXMgd2l0aCB1bml0cyB0byBhYnNvbHV0ZSBwaXhlbHMgdG8gYWxsb3cgb3VyIGNvbXB1dGF0aW9uc1xuICBvcHMgPSBvcHMubWFwKGZ1bmN0aW9uIChvcCwgaW5kZXgpIHtcbiAgICAvLyBNb3N0IG9mIHRoZSB1bml0cyByZWx5IG9uIHRoZSBvcmllbnRhdGlvbiBvZiB0aGUgcG9wcGVyXG4gICAgdmFyIG1lYXN1cmVtZW50ID0gKGluZGV4ID09PSAxID8gIXVzZUhlaWdodCA6IHVzZUhlaWdodCkgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgdmFyIG1lcmdlV2l0aFByZXZpb3VzID0gZmFsc2U7XG4gICAgcmV0dXJuIG9wXG4gICAgLy8gVGhpcyBhZ2dyZWdhdGVzIGFueSBgK2Agb3IgYC1gIHNpZ24gdGhhdCBhcmVuJ3QgY29uc2lkZXJlZCBvcGVyYXRvcnNcbiAgICAvLyBlLmcuOiAxMCArICs1ID0+IFsxMCwgKywgKzVdXG4gICAgLnJlZHVjZShmdW5jdGlvbiAoYSwgYikge1xuICAgICAgaWYgKGFbYS5sZW5ndGggLSAxXSA9PT0gJycgJiYgWycrJywgJy0nXS5pbmRleE9mKGIpICE9PSAtMSkge1xuICAgICAgICBhW2EubGVuZ3RoIC0gMV0gPSBiO1xuICAgICAgICBtZXJnZVdpdGhQcmV2aW91cyA9IHRydWU7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfSBlbHNlIGlmIChtZXJnZVdpdGhQcmV2aW91cykge1xuICAgICAgICBhW2EubGVuZ3RoIC0gMV0gKz0gYjtcbiAgICAgICAgbWVyZ2VXaXRoUHJldmlvdXMgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYS5jb25jYXQoYik7XG4gICAgICB9XG4gICAgfSwgW10pXG4gICAgLy8gSGVyZSB3ZSBjb252ZXJ0IHRoZSBzdHJpbmcgdmFsdWVzIGludG8gbnVtYmVyIHZhbHVlcyAoaW4gcHgpXG4gICAgLm1hcChmdW5jdGlvbiAoc3RyKSB7XG4gICAgICByZXR1cm4gdG9WYWx1ZShzdHIsIG1lYXN1cmVtZW50LCBwb3BwZXJPZmZzZXRzLCByZWZlcmVuY2VPZmZzZXRzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gTG9vcCB0cm91Z2ggdGhlIG9mZnNldHMgYXJyYXlzIGFuZCBleGVjdXRlIHRoZSBvcGVyYXRpb25zXG4gIG9wcy5mb3JFYWNoKGZ1bmN0aW9uIChvcCwgaW5kZXgpIHtcbiAgICBvcC5mb3JFYWNoKGZ1bmN0aW9uIChmcmFnLCBpbmRleDIpIHtcbiAgICAgIGlmIChpc051bWVyaWMoZnJhZykpIHtcbiAgICAgICAgb2Zmc2V0c1tpbmRleF0gKz0gZnJhZyAqIChvcFtpbmRleDIgLSAxXSA9PT0gJy0nID8gLTEgOiAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBvZmZzZXRzO1xufVxuXG4vKipcbiAqIEBmdW5jdGlvblxuICogQG1lbWJlcm9mIE1vZGlmaWVyc1xuICogQGFyZ3VtZW50IHtPYmplY3R9IGRhdGEgLSBUaGUgZGF0YSBvYmplY3QgZ2VuZXJhdGVkIGJ5IHVwZGF0ZSBtZXRob2RcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBvcHRpb25zIC0gTW9kaWZpZXJzIGNvbmZpZ3VyYXRpb24gYW5kIG9wdGlvbnNcbiAqIEBhcmd1bWVudCB7TnVtYmVyfFN0cmluZ30gb3B0aW9ucy5vZmZzZXQ9MFxuICogVGhlIG9mZnNldCB2YWx1ZSBhcyBkZXNjcmliZWQgaW4gdGhlIG1vZGlmaWVyIGRlc2NyaXB0aW9uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgZGF0YSBvYmplY3QsIHByb3Blcmx5IG1vZGlmaWVkXG4gKi9cbmZ1bmN0aW9uIG9mZnNldChkYXRhLCBfcmVmKSB7XG4gIHZhciBvZmZzZXQgPSBfcmVmLm9mZnNldDtcbiAgdmFyIHBsYWNlbWVudCA9IGRhdGEucGxhY2VtZW50LFxuICAgICAgX2RhdGEkb2Zmc2V0cyA9IGRhdGEub2Zmc2V0cyxcbiAgICAgIHBvcHBlciA9IF9kYXRhJG9mZnNldHMucG9wcGVyLFxuICAgICAgcmVmZXJlbmNlID0gX2RhdGEkb2Zmc2V0cy5yZWZlcmVuY2U7XG5cbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcblxuICB2YXIgb2Zmc2V0cyA9IHZvaWQgMDtcbiAgaWYgKGlzTnVtZXJpYygrb2Zmc2V0KSkge1xuICAgIG9mZnNldHMgPSBbK29mZnNldCwgMF07XG4gIH0gZWxzZSB7XG4gICAgb2Zmc2V0cyA9IHBhcnNlT2Zmc2V0KG9mZnNldCwgcG9wcGVyLCByZWZlcmVuY2UsIGJhc2VQbGFjZW1lbnQpO1xuICB9XG5cbiAgaWYgKGJhc2VQbGFjZW1lbnQgPT09ICdsZWZ0Jykge1xuICAgIHBvcHBlci50b3AgKz0gb2Zmc2V0c1swXTtcbiAgICBwb3BwZXIubGVmdCAtPSBvZmZzZXRzWzFdO1xuICB9IGVsc2UgaWYgKGJhc2VQbGFjZW1lbnQgPT09ICdyaWdodCcpIHtcbiAgICBwb3BwZXIudG9wICs9IG9mZnNldHNbMF07XG4gICAgcG9wcGVyLmxlZnQgKz0gb2Zmc2V0c1sxXTtcbiAgfSBlbHNlIGlmIChiYXNlUGxhY2VtZW50ID09PSAndG9wJykge1xuICAgIHBvcHBlci5sZWZ0ICs9IG9mZnNldHNbMF07XG4gICAgcG9wcGVyLnRvcCAtPSBvZmZzZXRzWzFdO1xuICB9IGVsc2UgaWYgKGJhc2VQbGFjZW1lbnQgPT09ICdib3R0b20nKSB7XG4gICAgcG9wcGVyLmxlZnQgKz0gb2Zmc2V0c1swXTtcbiAgICBwb3BwZXIudG9wICs9IG9mZnNldHNbMV07XG4gIH1cblxuICBkYXRhLnBvcHBlciA9IHBvcHBlcjtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8qKlxuICogQGZ1bmN0aW9uXG4gKiBAbWVtYmVyb2YgTW9kaWZpZXJzXG4gKiBAYXJndW1lbnQge09iamVjdH0gZGF0YSAtIFRoZSBkYXRhIG9iamVjdCBnZW5lcmF0ZWQgYnkgYHVwZGF0ZWAgbWV0aG9kXG4gKiBAYXJndW1lbnQge09iamVjdH0gb3B0aW9ucyAtIE1vZGlmaWVycyBjb25maWd1cmF0aW9uIGFuZCBvcHRpb25zXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgZGF0YSBvYmplY3QsIHByb3Blcmx5IG1vZGlmaWVkXG4gKi9cbmZ1bmN0aW9uIHByZXZlbnRPdmVyZmxvdyhkYXRhLCBvcHRpb25zKSB7XG4gIHZhciBib3VuZGFyaWVzRWxlbWVudCA9IG9wdGlvbnMuYm91bmRhcmllc0VsZW1lbnQgfHwgZ2V0T2Zmc2V0UGFyZW50KGRhdGEuaW5zdGFuY2UucG9wcGVyKTtcblxuICAvLyBJZiBvZmZzZXRQYXJlbnQgaXMgdGhlIHJlZmVyZW5jZSBlbGVtZW50LCB3ZSByZWFsbHkgd2FudCB0b1xuICAvLyBnbyBvbmUgc3RlcCB1cCBhbmQgdXNlIHRoZSBuZXh0IG9mZnNldFBhcmVudCBhcyByZWZlcmVuY2UgdG9cbiAgLy8gYXZvaWQgdG8gbWFrZSB0aGlzIG1vZGlmaWVyIGNvbXBsZXRlbHkgdXNlbGVzcyBhbmQgbG9vayBsaWtlIGJyb2tlblxuICBpZiAoZGF0YS5pbnN0YW5jZS5yZWZlcmVuY2UgPT09IGJvdW5kYXJpZXNFbGVtZW50KSB7XG4gICAgYm91bmRhcmllc0VsZW1lbnQgPSBnZXRPZmZzZXRQYXJlbnQoYm91bmRhcmllc0VsZW1lbnQpO1xuICB9XG5cbiAgLy8gTk9URTogRE9NIGFjY2VzcyBoZXJlXG4gIC8vIHJlc2V0cyB0aGUgcG9wcGVyJ3MgcG9zaXRpb24gc28gdGhhdCB0aGUgZG9jdW1lbnQgc2l6ZSBjYW4gYmUgY2FsY3VsYXRlZCBleGNsdWRpbmdcbiAgLy8gdGhlIHNpemUgb2YgdGhlIHBvcHBlciBlbGVtZW50IGl0c2VsZlxuICB2YXIgdHJhbnNmb3JtUHJvcCA9IGdldFN1cHBvcnRlZFByb3BlcnR5TmFtZSgndHJhbnNmb3JtJyk7XG4gIHZhciBwb3BwZXJTdHlsZXMgPSBkYXRhLmluc3RhbmNlLnBvcHBlci5zdHlsZTsgLy8gYXNzaWdubWVudCB0byBoZWxwIG1pbmlmaWNhdGlvblxuICB2YXIgdG9wID0gcG9wcGVyU3R5bGVzLnRvcCxcbiAgICAgIGxlZnQgPSBwb3BwZXJTdHlsZXMubGVmdCxcbiAgICAgIHRyYW5zZm9ybSA9IHBvcHBlclN0eWxlc1t0cmFuc2Zvcm1Qcm9wXTtcblxuICBwb3BwZXJTdHlsZXMudG9wID0gJyc7XG4gIHBvcHBlclN0eWxlcy5sZWZ0ID0gJyc7XG4gIHBvcHBlclN0eWxlc1t0cmFuc2Zvcm1Qcm9wXSA9ICcnO1xuXG4gIHZhciBib3VuZGFyaWVzID0gZ2V0Qm91bmRhcmllcyhkYXRhLmluc3RhbmNlLnBvcHBlciwgZGF0YS5pbnN0YW5jZS5yZWZlcmVuY2UsIG9wdGlvbnMucGFkZGluZywgYm91bmRhcmllc0VsZW1lbnQsIGRhdGEucG9zaXRpb25GaXhlZCk7XG5cbiAgLy8gTk9URTogRE9NIGFjY2VzcyBoZXJlXG4gIC8vIHJlc3RvcmVzIHRoZSBvcmlnaW5hbCBzdHlsZSBwcm9wZXJ0aWVzIGFmdGVyIHRoZSBvZmZzZXRzIGhhdmUgYmVlbiBjb21wdXRlZFxuICBwb3BwZXJTdHlsZXMudG9wID0gdG9wO1xuICBwb3BwZXJTdHlsZXMubGVmdCA9IGxlZnQ7XG4gIHBvcHBlclN0eWxlc1t0cmFuc2Zvcm1Qcm9wXSA9IHRyYW5zZm9ybTtcblxuICBvcHRpb25zLmJvdW5kYXJpZXMgPSBib3VuZGFyaWVzO1xuXG4gIHZhciBvcmRlciA9IG9wdGlvbnMucHJpb3JpdHk7XG4gIHZhciBwb3BwZXIgPSBkYXRhLm9mZnNldHMucG9wcGVyO1xuXG4gIHZhciBjaGVjayA9IHtcbiAgICBwcmltYXJ5OiBmdW5jdGlvbiBwcmltYXJ5KHBsYWNlbWVudCkge1xuICAgICAgdmFyIHZhbHVlID0gcG9wcGVyW3BsYWNlbWVudF07XG4gICAgICBpZiAocG9wcGVyW3BsYWNlbWVudF0gPCBib3VuZGFyaWVzW3BsYWNlbWVudF0gJiYgIW9wdGlvbnMuZXNjYXBlV2l0aFJlZmVyZW5jZSkge1xuICAgICAgICB2YWx1ZSA9IE1hdGgubWF4KHBvcHBlcltwbGFjZW1lbnRdLCBib3VuZGFyaWVzW3BsYWNlbWVudF0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRlZmluZVByb3BlcnR5KHt9LCBwbGFjZW1lbnQsIHZhbHVlKTtcbiAgICB9LFxuICAgIHNlY29uZGFyeTogZnVuY3Rpb24gc2Vjb25kYXJ5KHBsYWNlbWVudCkge1xuICAgICAgdmFyIG1haW5TaWRlID0gcGxhY2VtZW50ID09PSAncmlnaHQnID8gJ2xlZnQnIDogJ3RvcCc7XG4gICAgICB2YXIgdmFsdWUgPSBwb3BwZXJbbWFpblNpZGVdO1xuICAgICAgaWYgKHBvcHBlcltwbGFjZW1lbnRdID4gYm91bmRhcmllc1twbGFjZW1lbnRdICYmICFvcHRpb25zLmVzY2FwZVdpdGhSZWZlcmVuY2UpIHtcbiAgICAgICAgdmFsdWUgPSBNYXRoLm1pbihwb3BwZXJbbWFpblNpZGVdLCBib3VuZGFyaWVzW3BsYWNlbWVudF0gLSAocGxhY2VtZW50ID09PSAncmlnaHQnID8gcG9wcGVyLndpZHRoIDogcG9wcGVyLmhlaWdodCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRlZmluZVByb3BlcnR5KHt9LCBtYWluU2lkZSwgdmFsdWUpO1xuICAgIH1cbiAgfTtcblxuICBvcmRlci5mb3JFYWNoKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICB2YXIgc2lkZSA9IFsnbGVmdCcsICd0b3AnXS5pbmRleE9mKHBsYWNlbWVudCkgIT09IC0xID8gJ3ByaW1hcnknIDogJ3NlY29uZGFyeSc7XG4gICAgcG9wcGVyID0gX2V4dGVuZHMoe30sIHBvcHBlciwgY2hlY2tbc2lkZV0ocGxhY2VtZW50KSk7XG4gIH0pO1xuXG4gIGRhdGEub2Zmc2V0cy5wb3BwZXIgPSBwb3BwZXI7XG5cbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8qKlxuICogQGZ1bmN0aW9uXG4gKiBAbWVtYmVyb2YgTW9kaWZpZXJzXG4gKiBAYXJndW1lbnQge09iamVjdH0gZGF0YSAtIFRoZSBkYXRhIG9iamVjdCBnZW5lcmF0ZWQgYnkgYHVwZGF0ZWAgbWV0aG9kXG4gKiBAYXJndW1lbnQge09iamVjdH0gb3B0aW9ucyAtIE1vZGlmaWVycyBjb25maWd1cmF0aW9uIGFuZCBvcHRpb25zXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgZGF0YSBvYmplY3QsIHByb3Blcmx5IG1vZGlmaWVkXG4gKi9cbmZ1bmN0aW9uIHNoaWZ0KGRhdGEpIHtcbiAgdmFyIHBsYWNlbWVudCA9IGRhdGEucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xuICB2YXIgc2hpZnR2YXJpYXRpb24gPSBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcblxuICAvLyBpZiBzaGlmdCBzaGlmdHZhcmlhdGlvbiBpcyBzcGVjaWZpZWQsIHJ1biB0aGUgbW9kaWZpZXJcbiAgaWYgKHNoaWZ0dmFyaWF0aW9uKSB7XG4gICAgdmFyIF9kYXRhJG9mZnNldHMgPSBkYXRhLm9mZnNldHMsXG4gICAgICAgIHJlZmVyZW5jZSA9IF9kYXRhJG9mZnNldHMucmVmZXJlbmNlLFxuICAgICAgICBwb3BwZXIgPSBfZGF0YSRvZmZzZXRzLnBvcHBlcjtcblxuICAgIHZhciBpc1ZlcnRpY2FsID0gWydib3R0b20nLCAndG9wJ10uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTE7XG4gICAgdmFyIHNpZGUgPSBpc1ZlcnRpY2FsID8gJ2xlZnQnIDogJ3RvcCc7XG4gICAgdmFyIG1lYXN1cmVtZW50ID0gaXNWZXJ0aWNhbCA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcblxuICAgIHZhciBzaGlmdE9mZnNldHMgPSB7XG4gICAgICBzdGFydDogZGVmaW5lUHJvcGVydHkoe30sIHNpZGUsIHJlZmVyZW5jZVtzaWRlXSksXG4gICAgICBlbmQ6IGRlZmluZVByb3BlcnR5KHt9LCBzaWRlLCByZWZlcmVuY2Vbc2lkZV0gKyByZWZlcmVuY2VbbWVhc3VyZW1lbnRdIC0gcG9wcGVyW21lYXN1cmVtZW50XSlcbiAgICB9O1xuXG4gICAgZGF0YS5vZmZzZXRzLnBvcHBlciA9IF9leHRlbmRzKHt9LCBwb3BwZXIsIHNoaWZ0T2Zmc2V0c1tzaGlmdHZhcmlhdGlvbl0pO1xuICB9XG5cbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8qKlxuICogQGZ1bmN0aW9uXG4gKiBAbWVtYmVyb2YgTW9kaWZpZXJzXG4gKiBAYXJndW1lbnQge09iamVjdH0gZGF0YSAtIFRoZSBkYXRhIG9iamVjdCBnZW5lcmF0ZWQgYnkgdXBkYXRlIG1ldGhvZFxuICogQGFyZ3VtZW50IHtPYmplY3R9IG9wdGlvbnMgLSBNb2RpZmllcnMgY29uZmlndXJhdGlvbiBhbmQgb3B0aW9uc1xuICogQHJldHVybnMge09iamVjdH0gVGhlIGRhdGEgb2JqZWN0LCBwcm9wZXJseSBtb2RpZmllZFxuICovXG5mdW5jdGlvbiBoaWRlKGRhdGEpIHtcbiAgaWYgKCFpc01vZGlmaWVyUmVxdWlyZWQoZGF0YS5pbnN0YW5jZS5tb2RpZmllcnMsICdoaWRlJywgJ3ByZXZlbnRPdmVyZmxvdycpKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICB2YXIgcmVmUmVjdCA9IGRhdGEub2Zmc2V0cy5yZWZlcmVuY2U7XG4gIHZhciBib3VuZCA9IGZpbmQoZGF0YS5pbnN0YW5jZS5tb2RpZmllcnMsIGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgIHJldHVybiBtb2RpZmllci5uYW1lID09PSAncHJldmVudE92ZXJmbG93JztcbiAgfSkuYm91bmRhcmllcztcblxuICBpZiAocmVmUmVjdC5ib3R0b20gPCBib3VuZC50b3AgfHwgcmVmUmVjdC5sZWZ0ID4gYm91bmQucmlnaHQgfHwgcmVmUmVjdC50b3AgPiBib3VuZC5ib3R0b20gfHwgcmVmUmVjdC5yaWdodCA8IGJvdW5kLmxlZnQpIHtcbiAgICAvLyBBdm9pZCB1bm5lY2Vzc2FyeSBET00gYWNjZXNzIGlmIHZpc2liaWxpdHkgaGFzbid0IGNoYW5nZWRcbiAgICBpZiAoZGF0YS5oaWRlID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBkYXRhLmhpZGUgPSB0cnVlO1xuICAgIGRhdGEuYXR0cmlidXRlc1sneC1vdXQtb2YtYm91bmRhcmllcyddID0gJyc7XG4gIH0gZWxzZSB7XG4gICAgLy8gQXZvaWQgdW5uZWNlc3NhcnkgRE9NIGFjY2VzcyBpZiB2aXNpYmlsaXR5IGhhc24ndCBjaGFuZ2VkXG4gICAgaWYgKGRhdGEuaGlkZSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIGRhdGEuaGlkZSA9IGZhbHNlO1xuICAgIGRhdGEuYXR0cmlidXRlc1sneC1vdXQtb2YtYm91bmRhcmllcyddID0gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gZGF0YTtcbn1cblxuLyoqXG4gKiBAZnVuY3Rpb25cbiAqIEBtZW1iZXJvZiBNb2RpZmllcnNcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IGdlbmVyYXRlZCBieSBgdXBkYXRlYCBtZXRob2RcbiAqIEBhcmd1bWVudCB7T2JqZWN0fSBvcHRpb25zIC0gTW9kaWZpZXJzIGNvbmZpZ3VyYXRpb24gYW5kIG9wdGlvbnNcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBkYXRhIG9iamVjdCwgcHJvcGVybHkgbW9kaWZpZWRcbiAqL1xuZnVuY3Rpb24gaW5uZXIoZGF0YSkge1xuICB2YXIgcGxhY2VtZW50ID0gZGF0YS5wbGFjZW1lbnQ7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG4gIHZhciBfZGF0YSRvZmZzZXRzID0gZGF0YS5vZmZzZXRzLFxuICAgICAgcG9wcGVyID0gX2RhdGEkb2Zmc2V0cy5wb3BwZXIsXG4gICAgICByZWZlcmVuY2UgPSBfZGF0YSRvZmZzZXRzLnJlZmVyZW5jZTtcblxuICB2YXIgaXNIb3JpeiA9IFsnbGVmdCcsICdyaWdodCddLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgIT09IC0xO1xuXG4gIHZhciBzdWJ0cmFjdExlbmd0aCA9IFsndG9wJywgJ2xlZnQnXS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID09PSAtMTtcblxuICBwb3BwZXJbaXNIb3JpeiA/ICdsZWZ0JyA6ICd0b3AnXSA9IHJlZmVyZW5jZVtiYXNlUGxhY2VtZW50XSAtIChzdWJ0cmFjdExlbmd0aCA/IHBvcHBlcltpc0hvcml6ID8gJ3dpZHRoJyA6ICdoZWlnaHQnXSA6IDApO1xuXG4gIGRhdGEucGxhY2VtZW50ID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgZGF0YS5vZmZzZXRzLnBvcHBlciA9IGdldENsaWVudFJlY3QocG9wcGVyKTtcblxuICByZXR1cm4gZGF0YTtcbn1cblxuLyoqXG4gKiBNb2RpZmllciBmdW5jdGlvbiwgZWFjaCBtb2RpZmllciBjYW4gaGF2ZSBhIGZ1bmN0aW9uIG9mIHRoaXMgdHlwZSBhc3NpZ25lZFxuICogdG8gaXRzIGBmbmAgcHJvcGVydHkuPGJyIC8+XG4gKiBUaGVzZSBmdW5jdGlvbnMgd2lsbCBiZSBjYWxsZWQgb24gZWFjaCB1cGRhdGUsIHRoaXMgbWVhbnMgdGhhdCB5b3UgbXVzdFxuICogbWFrZSBzdXJlIHRoZXkgYXJlIHBlcmZvcm1hbnQgZW5vdWdoIHRvIGF2b2lkIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLlxuICpcbiAqIEBmdW5jdGlvbiBNb2RpZmllckZuXG4gKiBAYXJndW1lbnQge2RhdGFPYmplY3R9IGRhdGEgLSBUaGUgZGF0YSBvYmplY3QgZ2VuZXJhdGVkIGJ5IGB1cGRhdGVgIG1ldGhvZFxuICogQGFyZ3VtZW50IHtPYmplY3R9IG9wdGlvbnMgLSBNb2RpZmllcnMgY29uZmlndXJhdGlvbiBhbmQgb3B0aW9uc1xuICogQHJldHVybnMge2RhdGFPYmplY3R9IFRoZSBkYXRhIG9iamVjdCwgcHJvcGVybHkgbW9kaWZpZWRcbiAqL1xuXG4vKipcbiAqIE1vZGlmaWVycyBhcmUgcGx1Z2lucyB1c2VkIHRvIGFsdGVyIHRoZSBiZWhhdmlvciBvZiB5b3VyIHBvcHBlcnMuPGJyIC8+XG4gKiBQb3BwZXIuanMgdXNlcyBhIHNldCBvZiA5IG1vZGlmaWVycyB0byBwcm92aWRlIGFsbCB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0aWVzXG4gKiBuZWVkZWQgYnkgdGhlIGxpYnJhcnkuXG4gKlxuICogVXN1YWxseSB5b3UgZG9uJ3Qgd2FudCB0byBvdmVycmlkZSB0aGUgYG9yZGVyYCwgYGZuYCBhbmQgYG9uTG9hZGAgcHJvcHMuXG4gKiBBbGwgdGhlIG90aGVyIHByb3BlcnRpZXMgYXJlIGNvbmZpZ3VyYXRpb25zIHRoYXQgY291bGQgYmUgdHdlYWtlZC5cbiAqIEBuYW1lc3BhY2UgbW9kaWZpZXJzXG4gKi9cbnZhciBtb2RpZmllcnMgPSB7XG4gIC8qKlxuICAgKiBNb2RpZmllciB1c2VkIHRvIHNoaWZ0IHRoZSBwb3BwZXIgb24gdGhlIHN0YXJ0IG9yIGVuZCBvZiBpdHMgcmVmZXJlbmNlXG4gICAqIGVsZW1lbnQuPGJyIC8+XG4gICAqIEl0IHdpbGwgcmVhZCB0aGUgdmFyaWF0aW9uIG9mIHRoZSBgcGxhY2VtZW50YCBwcm9wZXJ0eS48YnIgLz5cbiAgICogSXQgY2FuIGJlIG9uZSBlaXRoZXIgYC1lbmRgIG9yIGAtc3RhcnRgLlxuICAgKiBAbWVtYmVyb2YgbW9kaWZpZXJzXG4gICAqIEBpbm5lclxuICAgKi9cbiAgc2hpZnQ6IHtcbiAgICAvKiogQHByb3Age251bWJlcn0gb3JkZXI9MTAwIC0gSW5kZXggdXNlZCB0byBkZWZpbmUgdGhlIG9yZGVyIG9mIGV4ZWN1dGlvbiAqL1xuICAgIG9yZGVyOiAxMDAsXG4gICAgLyoqIEBwcm9wIHtCb29sZWFufSBlbmFibGVkPXRydWUgLSBXaGV0aGVyIHRoZSBtb2RpZmllciBpcyBlbmFibGVkIG9yIG5vdCAqL1xuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgLyoqIEBwcm9wIHtNb2RpZmllckZufSAqL1xuICAgIGZuOiBzaGlmdFxuICB9LFxuXG4gIC8qKlxuICAgKiBUaGUgYG9mZnNldGAgbW9kaWZpZXIgY2FuIHNoaWZ0IHlvdXIgcG9wcGVyIG9uIGJvdGggaXRzIGF4aXMuXG4gICAqXG4gICAqIEl0IGFjY2VwdHMgdGhlIGZvbGxvd2luZyB1bml0czpcbiAgICogLSBgcHhgIG9yIHVuaXQtbGVzcywgaW50ZXJwcmV0ZWQgYXMgcGl4ZWxzXG4gICAqIC0gYCVgIG9yIGAlcmAsIHBlcmNlbnRhZ2UgcmVsYXRpdmUgdG8gdGhlIGxlbmd0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnRcbiAgICogLSBgJXBgLCBwZXJjZW50YWdlIHJlbGF0aXZlIHRvIHRoZSBsZW5ndGggb2YgdGhlIHBvcHBlciBlbGVtZW50XG4gICAqIC0gYHZ3YCwgQ1NTIHZpZXdwb3J0IHdpZHRoIHVuaXRcbiAgICogLSBgdmhgLCBDU1Mgdmlld3BvcnQgaGVpZ2h0IHVuaXRcbiAgICpcbiAgICogRm9yIGxlbmd0aCBpcyBpbnRlbmRlZCB0aGUgbWFpbiBheGlzIHJlbGF0aXZlIHRvIHRoZSBwbGFjZW1lbnQgb2YgdGhlIHBvcHBlci48YnIgLz5cbiAgICogVGhpcyBtZWFucyB0aGF0IGlmIHRoZSBwbGFjZW1lbnQgaXMgYHRvcGAgb3IgYGJvdHRvbWAsIHRoZSBsZW5ndGggd2lsbCBiZSB0aGVcbiAgICogYHdpZHRoYC4gSW4gY2FzZSBvZiBgbGVmdGAgb3IgYHJpZ2h0YCwgaXQgd2lsbCBiZSB0aGUgYGhlaWdodGAuXG4gICAqXG4gICAqIFlvdSBjYW4gcHJvdmlkZSBhIHNpbmdsZSB2YWx1ZSAoYXMgYE51bWJlcmAgb3IgYFN0cmluZ2ApLCBvciBhIHBhaXIgb2YgdmFsdWVzXG4gICAqIGFzIGBTdHJpbmdgIGRpdmlkZWQgYnkgYSBjb21tYSBvciBvbmUgKG9yIG1vcmUpIHdoaXRlIHNwYWNlcy48YnIgLz5cbiAgICogVGhlIGxhdHRlciBpcyBhIGRlcHJlY2F0ZWQgbWV0aG9kIGJlY2F1c2UgaXQgbGVhZHMgdG8gY29uZnVzaW9uIGFuZCB3aWxsIGJlXG4gICAqIHJlbW92ZWQgaW4gdjIuPGJyIC8+XG4gICAqIEFkZGl0aW9uYWxseSwgaXQgYWNjZXB0cyBhZGRpdGlvbnMgYW5kIHN1YnRyYWN0aW9ucyBiZXR3ZWVuIGRpZmZlcmVudCB1bml0cy5cbiAgICogTm90ZSB0aGF0IG11bHRpcGxpY2F0aW9ucyBhbmQgZGl2aXNpb25zIGFyZW4ndCBzdXBwb3J0ZWQuXG4gICAqXG4gICAqIFZhbGlkIGV4YW1wbGVzIGFyZTpcbiAgICogYGBgXG4gICAqIDEwXG4gICAqICcxMCUnXG4gICAqICcxMCwgMTAnXG4gICAqICcxMCUsIDEwJ1xuICAgKiAnMTAgKyAxMCUnXG4gICAqICcxMCAtIDV2aCArIDMlJ1xuICAgKiAnLTEwcHggKyA1dmgsIDVweCAtIDYlJ1xuICAgKiBgYGBcbiAgICogPiAqKk5CKio6IElmIHlvdSBkZXNpcmUgdG8gYXBwbHkgb2Zmc2V0cyB0byB5b3VyIHBvcHBlcnMgaW4gYSB3YXkgdGhhdCBtYXkgbWFrZSB0aGVtIG92ZXJsYXBcbiAgICogPiB3aXRoIHRoZWlyIHJlZmVyZW5jZSBlbGVtZW50LCB1bmZvcnR1bmF0ZWx5LCB5b3Ugd2lsbCBoYXZlIHRvIGRpc2FibGUgdGhlIGBmbGlwYCBtb2RpZmllci5cbiAgICogPiBZb3UgY2FuIHJlYWQgbW9yZSBvbiB0aGlzIGF0IHRoaXMgW2lzc3VlXShodHRwczovL2dpdGh1Yi5jb20vRmV6VnJhc3RhL3BvcHBlci5qcy9pc3N1ZXMvMzczKS5cbiAgICpcbiAgICogQG1lbWJlcm9mIG1vZGlmaWVyc1xuICAgKiBAaW5uZXJcbiAgICovXG4gIG9mZnNldDoge1xuICAgIC8qKiBAcHJvcCB7bnVtYmVyfSBvcmRlcj0yMDAgLSBJbmRleCB1c2VkIHRvIGRlZmluZSB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uICovXG4gICAgb3JkZXI6IDIwMCxcbiAgICAvKiogQHByb3Age0Jvb2xlYW59IGVuYWJsZWQ9dHJ1ZSAtIFdoZXRoZXIgdGhlIG1vZGlmaWVyIGlzIGVuYWJsZWQgb3Igbm90ICovXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAvKiogQHByb3Age01vZGlmaWVyRm59ICovXG4gICAgZm46IG9mZnNldCxcbiAgICAvKiogQHByb3Age051bWJlcnxTdHJpbmd9IG9mZnNldD0wXG4gICAgICogVGhlIG9mZnNldCB2YWx1ZSBhcyBkZXNjcmliZWQgaW4gdGhlIG1vZGlmaWVyIGRlc2NyaXB0aW9uXG4gICAgICovXG4gICAgb2Zmc2V0OiAwXG4gIH0sXG5cbiAgLyoqXG4gICAqIE1vZGlmaWVyIHVzZWQgdG8gcHJldmVudCB0aGUgcG9wcGVyIGZyb20gYmVpbmcgcG9zaXRpb25lZCBvdXRzaWRlIHRoZSBib3VuZGFyeS5cbiAgICpcbiAgICogQSBzY2VuYXJpbyBleGlzdHMgd2hlcmUgdGhlIHJlZmVyZW5jZSBpdHNlbGYgaXMgbm90IHdpdGhpbiB0aGUgYm91bmRhcmllcy48YnIgLz5cbiAgICogV2UgY2FuIHNheSBpdCBoYXMgXCJlc2NhcGVkIHRoZSBib3VuZGFyaWVzXCIg4oCUIG9yIGp1c3QgXCJlc2NhcGVkXCIuPGJyIC8+XG4gICAqIEluIHRoaXMgY2FzZSB3ZSBuZWVkIHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBwb3BwZXIgc2hvdWxkIGVpdGhlcjpcbiAgICpcbiAgICogLSBkZXRhY2ggZnJvbSB0aGUgcmVmZXJlbmNlIGFuZCByZW1haW4gXCJ0cmFwcGVkXCIgaW4gdGhlIGJvdW5kYXJpZXMsIG9yXG4gICAqIC0gaWYgaXQgc2hvdWxkIGlnbm9yZSB0aGUgYm91bmRhcnkgYW5kIFwiZXNjYXBlIHdpdGggaXRzIHJlZmVyZW5jZVwiXG4gICAqXG4gICAqIFdoZW4gYGVzY2FwZVdpdGhSZWZlcmVuY2VgIGlzIHNldCB0b2B0cnVlYCBhbmQgcmVmZXJlbmNlIGlzIGNvbXBsZXRlbHlcbiAgICogb3V0c2lkZSBpdHMgYm91bmRhcmllcywgdGhlIHBvcHBlciB3aWxsIG92ZXJmbG93IChvciBjb21wbGV0ZWx5IGxlYXZlKVxuICAgKiB0aGUgYm91bmRhcmllcyBpbiBvcmRlciB0byByZW1haW4gYXR0YWNoZWQgdG8gdGhlIGVkZ2Ugb2YgdGhlIHJlZmVyZW5jZS5cbiAgICpcbiAgICogQG1lbWJlcm9mIG1vZGlmaWVyc1xuICAgKiBAaW5uZXJcbiAgICovXG4gIHByZXZlbnRPdmVyZmxvdzoge1xuICAgIC8qKiBAcHJvcCB7bnVtYmVyfSBvcmRlcj0zMDAgLSBJbmRleCB1c2VkIHRvIGRlZmluZSB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uICovXG4gICAgb3JkZXI6IDMwMCxcbiAgICAvKiogQHByb3Age0Jvb2xlYW59IGVuYWJsZWQ9dHJ1ZSAtIFdoZXRoZXIgdGhlIG1vZGlmaWVyIGlzIGVuYWJsZWQgb3Igbm90ICovXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAvKiogQHByb3Age01vZGlmaWVyRm59ICovXG4gICAgZm46IHByZXZlbnRPdmVyZmxvdyxcbiAgICAvKipcbiAgICAgKiBAcHJvcCB7QXJyYXl9IFtwcmlvcml0eT1bJ2xlZnQnLCdyaWdodCcsJ3RvcCcsJ2JvdHRvbSddXVxuICAgICAqIFBvcHBlciB3aWxsIHRyeSB0byBwcmV2ZW50IG92ZXJmbG93IGZvbGxvd2luZyB0aGVzZSBwcmlvcml0aWVzIGJ5IGRlZmF1bHQsXG4gICAgICogdGhlbiwgaXQgY291bGQgb3ZlcmZsb3cgb24gdGhlIGxlZnQgYW5kIG9uIHRvcCBvZiB0aGUgYGJvdW5kYXJpZXNFbGVtZW50YFxuICAgICAqL1xuICAgIHByaW9yaXR5OiBbJ2xlZnQnLCAncmlnaHQnLCAndG9wJywgJ2JvdHRvbSddLFxuICAgIC8qKlxuICAgICAqIEBwcm9wIHtudW1iZXJ9IHBhZGRpbmc9NVxuICAgICAqIEFtb3VudCBvZiBwaXhlbCB1c2VkIHRvIGRlZmluZSBhIG1pbmltdW0gZGlzdGFuY2UgYmV0d2VlbiB0aGUgYm91bmRhcmllc1xuICAgICAqIGFuZCB0aGUgcG9wcGVyLiBUaGlzIG1ha2VzIHN1cmUgdGhlIHBvcHBlciBhbHdheXMgaGFzIGEgbGl0dGxlIHBhZGRpbmdcbiAgICAgKiBiZXR3ZWVuIHRoZSBlZGdlcyBvZiBpdHMgY29udGFpbmVyXG4gICAgICovXG4gICAgcGFkZGluZzogNSxcbiAgICAvKipcbiAgICAgKiBAcHJvcCB7U3RyaW5nfEhUTUxFbGVtZW50fSBib3VuZGFyaWVzRWxlbWVudD0nc2Nyb2xsUGFyZW50J1xuICAgICAqIEJvdW5kYXJpZXMgdXNlZCBieSB0aGUgbW9kaWZpZXIuIENhbiBiZSBgc2Nyb2xsUGFyZW50YCwgYHdpbmRvd2AsXG4gICAgICogYHZpZXdwb3J0YCBvciBhbnkgRE9NIGVsZW1lbnQuXG4gICAgICovXG4gICAgYm91bmRhcmllc0VsZW1lbnQ6ICdzY3JvbGxQYXJlbnQnXG4gIH0sXG5cbiAgLyoqXG4gICAqIE1vZGlmaWVyIHVzZWQgdG8gbWFrZSBzdXJlIHRoZSByZWZlcmVuY2UgYW5kIGl0cyBwb3BwZXIgc3RheSBuZWFyIGVhY2ggb3RoZXJcbiAgICogd2l0aG91dCBsZWF2aW5nIGFueSBnYXAgYmV0d2VlbiB0aGUgdHdvLiBFc3BlY2lhbGx5IHVzZWZ1bCB3aGVuIHRoZSBhcnJvdyBpc1xuICAgKiBlbmFibGVkIGFuZCB5b3Ugd2FudCB0byBlbnN1cmUgdGhhdCBpdCBwb2ludHMgdG8gaXRzIHJlZmVyZW5jZSBlbGVtZW50LlxuICAgKiBJdCBjYXJlcyBvbmx5IGFib3V0IHRoZSBmaXJzdCBheGlzLiBZb3UgY2FuIHN0aWxsIGhhdmUgcG9wcGVycyB3aXRoIG1hcmdpblxuICAgKiBiZXR3ZWVuIHRoZSBwb3BwZXIgYW5kIGl0cyByZWZlcmVuY2UgZWxlbWVudC5cbiAgICogQG1lbWJlcm9mIG1vZGlmaWVyc1xuICAgKiBAaW5uZXJcbiAgICovXG4gIGtlZXBUb2dldGhlcjoge1xuICAgIC8qKiBAcHJvcCB7bnVtYmVyfSBvcmRlcj00MDAgLSBJbmRleCB1c2VkIHRvIGRlZmluZSB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uICovXG4gICAgb3JkZXI6IDQwMCxcbiAgICAvKiogQHByb3Age0Jvb2xlYW59IGVuYWJsZWQ9dHJ1ZSAtIFdoZXRoZXIgdGhlIG1vZGlmaWVyIGlzIGVuYWJsZWQgb3Igbm90ICovXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAvKiogQHByb3Age01vZGlmaWVyRm59ICovXG4gICAgZm46IGtlZXBUb2dldGhlclxuICB9LFxuXG4gIC8qKlxuICAgKiBUaGlzIG1vZGlmaWVyIGlzIHVzZWQgdG8gbW92ZSB0aGUgYGFycm93RWxlbWVudGAgb2YgdGhlIHBvcHBlciB0byBtYWtlXG4gICAqIHN1cmUgaXQgaXMgcG9zaXRpb25lZCBiZXR3ZWVuIHRoZSByZWZlcmVuY2UgZWxlbWVudCBhbmQgaXRzIHBvcHBlciBlbGVtZW50LlxuICAgKiBJdCB3aWxsIHJlYWQgdGhlIG91dGVyIHNpemUgb2YgdGhlIGBhcnJvd0VsZW1lbnRgIG5vZGUgdG8gZGV0ZWN0IGhvdyBtYW55XG4gICAqIHBpeGVscyBvZiBjb25qdW5jdGlvbiBhcmUgbmVlZGVkLlxuICAgKlxuICAgKiBJdCBoYXMgbm8gZWZmZWN0IGlmIG5vIGBhcnJvd0VsZW1lbnRgIGlzIHByb3ZpZGVkLlxuICAgKiBAbWVtYmVyb2YgbW9kaWZpZXJzXG4gICAqIEBpbm5lclxuICAgKi9cbiAgYXJyb3c6IHtcbiAgICAvKiogQHByb3Age251bWJlcn0gb3JkZXI9NTAwIC0gSW5kZXggdXNlZCB0byBkZWZpbmUgdGhlIG9yZGVyIG9mIGV4ZWN1dGlvbiAqL1xuICAgIG9yZGVyOiA1MDAsXG4gICAgLyoqIEBwcm9wIHtCb29sZWFufSBlbmFibGVkPXRydWUgLSBXaGV0aGVyIHRoZSBtb2RpZmllciBpcyBlbmFibGVkIG9yIG5vdCAqL1xuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgLyoqIEBwcm9wIHtNb2RpZmllckZufSAqL1xuICAgIGZuOiBhcnJvdyxcbiAgICAvKiogQHByb3Age1N0cmluZ3xIVE1MRWxlbWVudH0gZWxlbWVudD0nW3gtYXJyb3ddJyAtIFNlbGVjdG9yIG9yIG5vZGUgdXNlZCBhcyBhcnJvdyAqL1xuICAgIGVsZW1lbnQ6ICdbeC1hcnJvd10nXG4gIH0sXG5cbiAgLyoqXG4gICAqIE1vZGlmaWVyIHVzZWQgdG8gZmxpcCB0aGUgcG9wcGVyJ3MgcGxhY2VtZW50IHdoZW4gaXQgc3RhcnRzIHRvIG92ZXJsYXAgaXRzXG4gICAqIHJlZmVyZW5jZSBlbGVtZW50LlxuICAgKlxuICAgKiBSZXF1aXJlcyB0aGUgYHByZXZlbnRPdmVyZmxvd2AgbW9kaWZpZXIgYmVmb3JlIGl0IGluIG9yZGVyIHRvIHdvcmsuXG4gICAqXG4gICAqICoqTk9URToqKiB0aGlzIG1vZGlmaWVyIHdpbGwgaW50ZXJydXB0IHRoZSBjdXJyZW50IHVwZGF0ZSBjeWNsZSBhbmQgd2lsbFxuICAgKiByZXN0YXJ0IGl0IGlmIGl0IGRldGVjdHMgdGhlIG5lZWQgdG8gZmxpcCB0aGUgcGxhY2VtZW50LlxuICAgKiBAbWVtYmVyb2YgbW9kaWZpZXJzXG4gICAqIEBpbm5lclxuICAgKi9cbiAgZmxpcDoge1xuICAgIC8qKiBAcHJvcCB7bnVtYmVyfSBvcmRlcj02MDAgLSBJbmRleCB1c2VkIHRvIGRlZmluZSB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uICovXG4gICAgb3JkZXI6IDYwMCxcbiAgICAvKiogQHByb3Age0Jvb2xlYW59IGVuYWJsZWQ9dHJ1ZSAtIFdoZXRoZXIgdGhlIG1vZGlmaWVyIGlzIGVuYWJsZWQgb3Igbm90ICovXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAvKiogQHByb3Age01vZGlmaWVyRm59ICovXG4gICAgZm46IGZsaXAsXG4gICAgLyoqXG4gICAgICogQHByb3Age1N0cmluZ3xBcnJheX0gYmVoYXZpb3I9J2ZsaXAnXG4gICAgICogVGhlIGJlaGF2aW9yIHVzZWQgdG8gY2hhbmdlIHRoZSBwb3BwZXIncyBwbGFjZW1lbnQuIEl0IGNhbiBiZSBvbmUgb2ZcbiAgICAgKiBgZmxpcGAsIGBjbG9ja3dpc2VgLCBgY291bnRlcmNsb2Nrd2lzZWAgb3IgYW4gYXJyYXkgd2l0aCBhIGxpc3Qgb2YgdmFsaWRcbiAgICAgKiBwbGFjZW1lbnRzICh3aXRoIG9wdGlvbmFsIHZhcmlhdGlvbnMpXG4gICAgICovXG4gICAgYmVoYXZpb3I6ICdmbGlwJyxcbiAgICAvKipcbiAgICAgKiBAcHJvcCB7bnVtYmVyfSBwYWRkaW5nPTVcbiAgICAgKiBUaGUgcG9wcGVyIHdpbGwgZmxpcCBpZiBpdCBoaXRzIHRoZSBlZGdlcyBvZiB0aGUgYGJvdW5kYXJpZXNFbGVtZW50YFxuICAgICAqL1xuICAgIHBhZGRpbmc6IDUsXG4gICAgLyoqXG4gICAgICogQHByb3Age1N0cmluZ3xIVE1MRWxlbWVudH0gYm91bmRhcmllc0VsZW1lbnQ9J3ZpZXdwb3J0J1xuICAgICAqIFRoZSBlbGVtZW50IHdoaWNoIHdpbGwgZGVmaW5lIHRoZSBib3VuZGFyaWVzIG9mIHRoZSBwb3BwZXIgcG9zaXRpb24uXG4gICAgICogVGhlIHBvcHBlciB3aWxsIG5ldmVyIGJlIHBsYWNlZCBvdXRzaWRlIG9mIHRoZSBkZWZpbmVkIGJvdW5kYXJpZXNcbiAgICAgKiAoZXhjZXB0IGlmIGBrZWVwVG9nZXRoZXJgIGlzIGVuYWJsZWQpXG4gICAgICovXG4gICAgYm91bmRhcmllc0VsZW1lbnQ6ICd2aWV3cG9ydCcsXG4gICAgLyoqXG4gICAgICogQHByb3Age0Jvb2xlYW59IGZsaXBWYXJpYXRpb25zPWZhbHNlXG4gICAgICogVGhlIHBvcHBlciB3aWxsIHN3aXRjaCBwbGFjZW1lbnQgdmFyaWF0aW9uIGJldHdlZW4gYC1zdGFydGAgYW5kIGAtZW5kYCB3aGVuXG4gICAgICogdGhlIHJlZmVyZW5jZSBlbGVtZW50IG92ZXJsYXBzIGl0cyBib3VuZGFyaWVzLlxuICAgICAqXG4gICAgICogVGhlIG9yaWdpbmFsIHBsYWNlbWVudCBzaG91bGQgaGF2ZSBhIHNldCB2YXJpYXRpb24uXG4gICAgICovXG4gICAgZmxpcFZhcmlhdGlvbnM6IGZhbHNlLFxuICAgIC8qKlxuICAgICAqIEBwcm9wIHtCb29sZWFufSBmbGlwVmFyaWF0aW9uc0J5Q29udGVudD1mYWxzZVxuICAgICAqIFRoZSBwb3BwZXIgd2lsbCBzd2l0Y2ggcGxhY2VtZW50IHZhcmlhdGlvbiBiZXR3ZWVuIGAtc3RhcnRgIGFuZCBgLWVuZGAgd2hlblxuICAgICAqIHRoZSBwb3BwZXIgZWxlbWVudCBvdmVybGFwcyBpdHMgcmVmZXJlbmNlIGJvdW5kYXJpZXMuXG4gICAgICpcbiAgICAgKiBUaGUgb3JpZ2luYWwgcGxhY2VtZW50IHNob3VsZCBoYXZlIGEgc2V0IHZhcmlhdGlvbi5cbiAgICAgKi9cbiAgICBmbGlwVmFyaWF0aW9uc0J5Q29udGVudDogZmFsc2VcbiAgfSxcblxuICAvKipcbiAgICogTW9kaWZpZXIgdXNlZCB0byBtYWtlIHRoZSBwb3BwZXIgZmxvdyB0b3dhcmQgdGhlIGlubmVyIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAgICogQnkgZGVmYXVsdCwgd2hlbiB0aGlzIG1vZGlmaWVyIGlzIGRpc2FibGVkLCB0aGUgcG9wcGVyIHdpbGwgYmUgcGxhY2VkIG91dHNpZGVcbiAgICogdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICAgKiBAbWVtYmVyb2YgbW9kaWZpZXJzXG4gICAqIEBpbm5lclxuICAgKi9cbiAgaW5uZXI6IHtcbiAgICAvKiogQHByb3Age251bWJlcn0gb3JkZXI9NzAwIC0gSW5kZXggdXNlZCB0byBkZWZpbmUgdGhlIG9yZGVyIG9mIGV4ZWN1dGlvbiAqL1xuICAgIG9yZGVyOiA3MDAsXG4gICAgLyoqIEBwcm9wIHtCb29sZWFufSBlbmFibGVkPWZhbHNlIC0gV2hldGhlciB0aGUgbW9kaWZpZXIgaXMgZW5hYmxlZCBvciBub3QgKi9cbiAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAvKiogQHByb3Age01vZGlmaWVyRm59ICovXG4gICAgZm46IGlubmVyXG4gIH0sXG5cbiAgLyoqXG4gICAqIE1vZGlmaWVyIHVzZWQgdG8gaGlkZSB0aGUgcG9wcGVyIHdoZW4gaXRzIHJlZmVyZW5jZSBlbGVtZW50IGlzIG91dHNpZGUgb2YgdGhlXG4gICAqIHBvcHBlciBib3VuZGFyaWVzLiBJdCB3aWxsIHNldCBhIGB4LW91dC1vZi1ib3VuZGFyaWVzYCBhdHRyaWJ1dGUgd2hpY2ggY2FuXG4gICAqIGJlIHVzZWQgdG8gaGlkZSB3aXRoIGEgQ1NTIHNlbGVjdG9yIHRoZSBwb3BwZXIgd2hlbiBpdHMgcmVmZXJlbmNlIGlzXG4gICAqIG91dCBvZiBib3VuZGFyaWVzLlxuICAgKlxuICAgKiBSZXF1aXJlcyB0aGUgYHByZXZlbnRPdmVyZmxvd2AgbW9kaWZpZXIgYmVmb3JlIGl0IGluIG9yZGVyIHRvIHdvcmsuXG4gICAqIEBtZW1iZXJvZiBtb2RpZmllcnNcbiAgICogQGlubmVyXG4gICAqL1xuICBoaWRlOiB7XG4gICAgLyoqIEBwcm9wIHtudW1iZXJ9IG9yZGVyPTgwMCAtIEluZGV4IHVzZWQgdG8gZGVmaW5lIHRoZSBvcmRlciBvZiBleGVjdXRpb24gKi9cbiAgICBvcmRlcjogODAwLFxuICAgIC8qKiBAcHJvcCB7Qm9vbGVhbn0gZW5hYmxlZD10cnVlIC0gV2hldGhlciB0aGUgbW9kaWZpZXIgaXMgZW5hYmxlZCBvciBub3QgKi9cbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIC8qKiBAcHJvcCB7TW9kaWZpZXJGbn0gKi9cbiAgICBmbjogaGlkZVxuICB9LFxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgc3R5bGUgdGhhdCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHBvcHBlciBlbGVtZW50IHRvIGdldHNcbiAgICogcHJvcGVybHkgcG9zaXRpb25lZC5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoaXMgbW9kaWZpZXIgd2lsbCBub3QgdG91Y2ggdGhlIERPTSwgaXQganVzdCBwcmVwYXJlcyB0aGUgc3R5bGVzXG4gICAqIHNvIHRoYXQgYGFwcGx5U3R5bGVgIG1vZGlmaWVyIGNhbiBhcHBseSBpdC4gVGhpcyBzZXBhcmF0aW9uIGlzIHVzZWZ1bFxuICAgKiBpbiBjYXNlIHlvdSBuZWVkIHRvIHJlcGxhY2UgYGFwcGx5U3R5bGVgIHdpdGggYSBjdXN0b20gaW1wbGVtZW50YXRpb24uXG4gICAqXG4gICAqIFRoaXMgbW9kaWZpZXIgaGFzIGA4NTBgIGFzIGBvcmRlcmAgdmFsdWUgdG8gbWFpbnRhaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgKiB3aXRoIHByZXZpb3VzIHZlcnNpb25zIG9mIFBvcHBlci5qcy4gRXhwZWN0IHRoZSBtb2RpZmllcnMgb3JkZXJpbmcgbWV0aG9kXG4gICAqIHRvIGNoYW5nZSBpbiBmdXR1cmUgbWFqb3IgdmVyc2lvbnMgb2YgdGhlIGxpYnJhcnkuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBtb2RpZmllcnNcbiAgICogQGlubmVyXG4gICAqL1xuICBjb21wdXRlU3R5bGU6IHtcbiAgICAvKiogQHByb3Age251bWJlcn0gb3JkZXI9ODUwIC0gSW5kZXggdXNlZCB0byBkZWZpbmUgdGhlIG9yZGVyIG9mIGV4ZWN1dGlvbiAqL1xuICAgIG9yZGVyOiA4NTAsXG4gICAgLyoqIEBwcm9wIHtCb29sZWFufSBlbmFibGVkPXRydWUgLSBXaGV0aGVyIHRoZSBtb2RpZmllciBpcyBlbmFibGVkIG9yIG5vdCAqL1xuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgLyoqIEBwcm9wIHtNb2RpZmllckZufSAqL1xuICAgIGZuOiBjb21wdXRlU3R5bGUsXG4gICAgLyoqXG4gICAgICogQHByb3Age0Jvb2xlYW59IGdwdUFjY2VsZXJhdGlvbj10cnVlXG4gICAgICogSWYgdHJ1ZSwgaXQgdXNlcyB0aGUgQ1NTIDNEIHRyYW5zZm9ybWF0aW9uIHRvIHBvc2l0aW9uIHRoZSBwb3BwZXIuXG4gICAgICogT3RoZXJ3aXNlLCBpdCB3aWxsIHVzZSB0aGUgYHRvcGAgYW5kIGBsZWZ0YCBwcm9wZXJ0aWVzXG4gICAgICovXG4gICAgZ3B1QWNjZWxlcmF0aW9uOiB0cnVlLFxuICAgIC8qKlxuICAgICAqIEBwcm9wIHtzdHJpbmd9IFt4PSdib3R0b20nXVxuICAgICAqIFdoZXJlIHRvIGFuY2hvciB0aGUgWCBheGlzIChgYm90dG9tYCBvciBgdG9wYCkuIEFLQSBYIG9mZnNldCBvcmlnaW4uXG4gICAgICogQ2hhbmdlIHRoaXMgaWYgeW91ciBwb3BwZXIgc2hvdWxkIGdyb3cgaW4gYSBkaXJlY3Rpb24gZGlmZmVyZW50IGZyb20gYGJvdHRvbWBcbiAgICAgKi9cbiAgICB4OiAnYm90dG9tJyxcbiAgICAvKipcbiAgICAgKiBAcHJvcCB7c3RyaW5nfSBbeD0nbGVmdCddXG4gICAgICogV2hlcmUgdG8gYW5jaG9yIHRoZSBZIGF4aXMgKGBsZWZ0YCBvciBgcmlnaHRgKS4gQUtBIFkgb2Zmc2V0IG9yaWdpbi5cbiAgICAgKiBDaGFuZ2UgdGhpcyBpZiB5b3VyIHBvcHBlciBzaG91bGQgZ3JvdyBpbiBhIGRpcmVjdGlvbiBkaWZmZXJlbnQgZnJvbSBgcmlnaHRgXG4gICAgICovXG4gICAgeTogJ3JpZ2h0J1xuICB9LFxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSBjb21wdXRlZCBzdHlsZXMgdG8gdGhlIHBvcHBlciBlbGVtZW50LlxuICAgKlxuICAgKiBBbGwgdGhlIERPTSBtYW5pcHVsYXRpb25zIGFyZSBsaW1pdGVkIHRvIHRoaXMgbW9kaWZpZXIuIFRoaXMgaXMgdXNlZnVsIGluIGNhc2VcbiAgICogeW91IHdhbnQgdG8gaW50ZWdyYXRlIFBvcHBlci5qcyBpbnNpZGUgYSBmcmFtZXdvcmsgb3IgdmlldyBsaWJyYXJ5IGFuZCB5b3VcbiAgICogd2FudCB0byBkZWxlZ2F0ZSBhbGwgdGhlIERPTSBtYW5pcHVsYXRpb25zIHRvIGl0LlxuICAgKlxuICAgKiBOb3RlIHRoYXQgaWYgeW91IGRpc2FibGUgdGhpcyBtb2RpZmllciwgeW91IG11c3QgbWFrZSBzdXJlIHRoZSBwb3BwZXIgZWxlbWVudFxuICAgKiBoYXMgaXRzIHBvc2l0aW9uIHNldCB0byBgYWJzb2x1dGVgIGJlZm9yZSBQb3BwZXIuanMgY2FuIGRvIGl0cyB3b3JrIVxuICAgKlxuICAgKiBKdXN0IGRpc2FibGUgdGhpcyBtb2RpZmllciBhbmQgZGVmaW5lIHlvdXIgb3duIHRvIGFjaGlldmUgdGhlIGRlc2lyZWQgZWZmZWN0LlxuICAgKlxuICAgKiBAbWVtYmVyb2YgbW9kaWZpZXJzXG4gICAqIEBpbm5lclxuICAgKi9cbiAgYXBwbHlTdHlsZToge1xuICAgIC8qKiBAcHJvcCB7bnVtYmVyfSBvcmRlcj05MDAgLSBJbmRleCB1c2VkIHRvIGRlZmluZSB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uICovXG4gICAgb3JkZXI6IDkwMCxcbiAgICAvKiogQHByb3Age0Jvb2xlYW59IGVuYWJsZWQ9dHJ1ZSAtIFdoZXRoZXIgdGhlIG1vZGlmaWVyIGlzIGVuYWJsZWQgb3Igbm90ICovXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAvKiogQHByb3Age01vZGlmaWVyRm59ICovXG4gICAgZm46IGFwcGx5U3R5bGUsXG4gICAgLyoqIEBwcm9wIHtGdW5jdGlvbn0gKi9cbiAgICBvbkxvYWQ6IGFwcGx5U3R5bGVPbkxvYWQsXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAxLjEwLjAsIHRoZSBwcm9wZXJ0eSBtb3ZlZCB0byBgY29tcHV0ZVN0eWxlYCBtb2RpZmllclxuICAgICAqIEBwcm9wIHtCb29sZWFufSBncHVBY2NlbGVyYXRpb249dHJ1ZVxuICAgICAqIElmIHRydWUsIGl0IHVzZXMgdGhlIENTUyAzRCB0cmFuc2Zvcm1hdGlvbiB0byBwb3NpdGlvbiB0aGUgcG9wcGVyLlxuICAgICAqIE90aGVyd2lzZSwgaXQgd2lsbCB1c2UgdGhlIGB0b3BgIGFuZCBgbGVmdGAgcHJvcGVydGllc1xuICAgICAqL1xuICAgIGdwdUFjY2VsZXJhdGlvbjogdW5kZWZpbmVkXG4gIH1cbn07XG5cbi8qKlxuICogVGhlIGBkYXRhT2JqZWN0YCBpcyBhbiBvYmplY3QgY29udGFpbmluZyBhbGwgdGhlIGluZm9ybWF0aW9uIHVzZWQgYnkgUG9wcGVyLmpzLlxuICogVGhpcyBvYmplY3QgaXMgcGFzc2VkIHRvIG1vZGlmaWVycyBhbmQgdG8gdGhlIGBvbkNyZWF0ZWAgYW5kIGBvblVwZGF0ZWAgY2FsbGJhY2tzLlxuICogQG5hbWUgZGF0YU9iamVjdFxuICogQHByb3BlcnR5IHtPYmplY3R9IGRhdGEuaW5zdGFuY2UgVGhlIFBvcHBlci5qcyBpbnN0YW5jZVxuICogQHByb3BlcnR5IHtTdHJpbmd9IGRhdGEucGxhY2VtZW50IFBsYWNlbWVudCBhcHBsaWVkIHRvIHBvcHBlclxuICogQHByb3BlcnR5IHtTdHJpbmd9IGRhdGEub3JpZ2luYWxQbGFjZW1lbnQgUGxhY2VtZW50IG9yaWdpbmFsbHkgZGVmaW5lZCBvbiBpbml0XG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGRhdGEuZmxpcHBlZCBUcnVlIGlmIHBvcHBlciBoYXMgYmVlbiBmbGlwcGVkIGJ5IGZsaXAgbW9kaWZpZXJcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZGF0YS5oaWRlIFRydWUgaWYgdGhlIHJlZmVyZW5jZSBlbGVtZW50IGlzIG91dCBvZiBib3VuZGFyaWVzLCB1c2VmdWwgdG8ga25vdyB3aGVuIHRvIGhpZGUgdGhlIHBvcHBlclxuICogQHByb3BlcnR5IHtIVE1MRWxlbWVudH0gZGF0YS5hcnJvd0VsZW1lbnQgTm9kZSB1c2VkIGFzIGFycm93IGJ5IGFycm93IG1vZGlmaWVyXG4gKiBAcHJvcGVydHkge09iamVjdH0gZGF0YS5zdHlsZXMgQW55IENTUyBwcm9wZXJ0eSBkZWZpbmVkIGhlcmUgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBwb3BwZXIuIEl0IGV4cGVjdHMgdGhlIEphdmFTY3JpcHQgbm9tZW5jbGF0dXJlIChlZy4gYG1hcmdpbkJvdHRvbWApXG4gKiBAcHJvcGVydHkge09iamVjdH0gZGF0YS5hcnJvd1N0eWxlcyBBbnkgQ1NTIHByb3BlcnR5IGRlZmluZWQgaGVyZSB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHBvcHBlciBhcnJvdy4gSXQgZXhwZWN0cyB0aGUgSmF2YVNjcmlwdCBub21lbmNsYXR1cmUgKGVnLiBgbWFyZ2luQm90dG9tYClcbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBkYXRhLmJvdW5kYXJpZXMgT2Zmc2V0cyBvZiB0aGUgcG9wcGVyIGJvdW5kYXJpZXNcbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBkYXRhLm9mZnNldHMgVGhlIG1lYXN1cmVtZW50cyBvZiBwb3BwZXIsIHJlZmVyZW5jZSBhbmQgYXJyb3cgZWxlbWVudHNcbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBkYXRhLm9mZnNldHMucG9wcGVyIGB0b3BgLCBgbGVmdGAsIGB3aWR0aGAsIGBoZWlnaHRgIHZhbHVlc1xuICogQHByb3BlcnR5IHtPYmplY3R9IGRhdGEub2Zmc2V0cy5yZWZlcmVuY2UgYHRvcGAsIGBsZWZ0YCwgYHdpZHRoYCwgYGhlaWdodGAgdmFsdWVzXG4gKiBAcHJvcGVydHkge09iamVjdH0gZGF0YS5vZmZzZXRzLmFycm93XSBgdG9wYCBhbmQgYGxlZnRgIG9mZnNldHMsIG9ubHkgb25lIG9mIHRoZW0gd2lsbCBiZSBkaWZmZXJlbnQgZnJvbSAwXG4gKi9cblxuLyoqXG4gKiBEZWZhdWx0IG9wdGlvbnMgcHJvdmlkZWQgdG8gUG9wcGVyLmpzIGNvbnN0cnVjdG9yLjxiciAvPlxuICogVGhlc2UgY2FuIGJlIG92ZXJyaWRkZW4gdXNpbmcgdGhlIGBvcHRpb25zYCBhcmd1bWVudCBvZiBQb3BwZXIuanMuPGJyIC8+XG4gKiBUbyBvdmVycmlkZSBhbiBvcHRpb24sIHNpbXBseSBwYXNzIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lXG4gKiBzdHJ1Y3R1cmUgb2YgdGhlIGBvcHRpb25zYCBvYmplY3QsIGFzIHRoZSAzcmQgYXJndW1lbnQuIEZvciBleGFtcGxlOlxuICogYGBgXG4gKiBuZXcgUG9wcGVyKHJlZiwgcG9wLCB7XG4gKiAgIG1vZGlmaWVyczoge1xuICogICAgIHByZXZlbnRPdmVyZmxvdzogeyBlbmFibGVkOiBmYWxzZSB9XG4gKiAgIH1cbiAqIH0pXG4gKiBgYGBcbiAqIEB0eXBlIHtPYmplY3R9XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyb2YgUG9wcGVyXG4gKi9cbnZhciBEZWZhdWx0cyA9IHtcbiAgLyoqXG4gICAqIFBvcHBlcidzIHBsYWNlbWVudC5cbiAgICogQHByb3Age1BvcHBlci5wbGFjZW1lbnRzfSBwbGFjZW1lbnQ9J2JvdHRvbSdcbiAgICovXG4gIHBsYWNlbWVudDogJ2JvdHRvbScsXG5cbiAgLyoqXG4gICAqIFNldCB0aGlzIHRvIHRydWUgaWYgeW91IHdhbnQgcG9wcGVyIHRvIHBvc2l0aW9uIGl0IHNlbGYgaW4gJ2ZpeGVkJyBtb2RlXG4gICAqIEBwcm9wIHtCb29sZWFufSBwb3NpdGlvbkZpeGVkPWZhbHNlXG4gICAqL1xuICBwb3NpdGlvbkZpeGVkOiBmYWxzZSxcblxuICAvKipcbiAgICogV2hldGhlciBldmVudHMgKHJlc2l6ZSwgc2Nyb2xsKSBhcmUgaW5pdGlhbGx5IGVuYWJsZWQuXG4gICAqIEBwcm9wIHtCb29sZWFufSBldmVudHNFbmFibGVkPXRydWVcbiAgICovXG4gIGV2ZW50c0VuYWJsZWQ6IHRydWUsXG5cbiAgLyoqXG4gICAqIFNldCB0byB0cnVlIGlmIHlvdSB3YW50IHRvIGF1dG9tYXRpY2FsbHkgcmVtb3ZlIHRoZSBwb3BwZXIgd2hlblxuICAgKiB5b3UgY2FsbCB0aGUgYGRlc3Ryb3lgIG1ldGhvZC5cbiAgICogQHByb3Age0Jvb2xlYW59IHJlbW92ZU9uRGVzdHJveT1mYWxzZVxuICAgKi9cbiAgcmVtb3ZlT25EZXN0cm95OiBmYWxzZSxcblxuICAvKipcbiAgICogQ2FsbGJhY2sgY2FsbGVkIHdoZW4gdGhlIHBvcHBlciBpcyBjcmVhdGVkLjxiciAvPlxuICAgKiBCeSBkZWZhdWx0LCBpdCBpcyBzZXQgdG8gbm8tb3AuPGJyIC8+XG4gICAqIEFjY2VzcyBQb3BwZXIuanMgaW5zdGFuY2Ugd2l0aCBgZGF0YS5pbnN0YW5jZWAuXG4gICAqIEBwcm9wIHtvbkNyZWF0ZX1cbiAgICovXG4gIG9uQ3JlYXRlOiBmdW5jdGlvbiBvbkNyZWF0ZSgpIHt9LFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBjYWxsZWQgd2hlbiB0aGUgcG9wcGVyIGlzIHVwZGF0ZWQuIFRoaXMgY2FsbGJhY2sgaXMgbm90IGNhbGxlZFxuICAgKiBvbiB0aGUgaW5pdGlhbGl6YXRpb24vY3JlYXRpb24gb2YgdGhlIHBvcHBlciwgYnV0IG9ubHkgb24gc3Vic2VxdWVudFxuICAgKiB1cGRhdGVzLjxiciAvPlxuICAgKiBCeSBkZWZhdWx0LCBpdCBpcyBzZXQgdG8gbm8tb3AuPGJyIC8+XG4gICAqIEFjY2VzcyBQb3BwZXIuanMgaW5zdGFuY2Ugd2l0aCBgZGF0YS5pbnN0YW5jZWAuXG4gICAqIEBwcm9wIHtvblVwZGF0ZX1cbiAgICovXG4gIG9uVXBkYXRlOiBmdW5jdGlvbiBvblVwZGF0ZSgpIHt9LFxuXG4gIC8qKlxuICAgKiBMaXN0IG9mIG1vZGlmaWVycyB1c2VkIHRvIG1vZGlmeSB0aGUgb2Zmc2V0cyBiZWZvcmUgdGhleSBhcmUgYXBwbGllZCB0byB0aGUgcG9wcGVyLlxuICAgKiBUaGV5IHByb3ZpZGUgbW9zdCBvZiB0aGUgZnVuY3Rpb25hbGl0aWVzIG9mIFBvcHBlci5qcy5cbiAgICogQHByb3Age21vZGlmaWVyc31cbiAgICovXG4gIG1vZGlmaWVyczogbW9kaWZpZXJzXG59O1xuXG4vKipcbiAqIEBjYWxsYmFjayBvbkNyZWF0ZVxuICogQHBhcmFtIHtkYXRhT2JqZWN0fSBkYXRhXG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgb25VcGRhdGVcbiAqIEBwYXJhbSB7ZGF0YU9iamVjdH0gZGF0YVxuICovXG5cbi8vIFV0aWxzXG4vLyBNZXRob2RzXG52YXIgUG9wcGVyID0gZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBQb3BwZXIuanMgaW5zdGFuY2UuXG4gICAqIEBjbGFzcyBQb3BwZXJcbiAgICogQHBhcmFtIHtFbGVtZW50fHJlZmVyZW5jZU9iamVjdH0gcmVmZXJlbmNlIC0gVGhlIHJlZmVyZW5jZSBlbGVtZW50IHVzZWQgdG8gcG9zaXRpb24gdGhlIHBvcHBlclxuICAgKiBAcGFyYW0ge0VsZW1lbnR9IHBvcHBlciAtIFRoZSBIVE1MIC8gWE1MIGVsZW1lbnQgdXNlZCBhcyB0aGUgcG9wcGVyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gWW91ciBjdXN0b20gb3B0aW9ucyB0byBvdmVycmlkZSB0aGUgb25lcyBkZWZpbmVkIGluIFtEZWZhdWx0c10oI2RlZmF1bHRzKVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IGluc3RhbmNlIC0gVGhlIGdlbmVyYXRlZCBQb3BwZXIuanMgaW5zdGFuY2VcbiAgICovXG4gIGZ1bmN0aW9uIFBvcHBlcihyZWZlcmVuY2UsIHBvcHBlcikge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDoge307XG4gICAgY2xhc3NDYWxsQ2hlY2sodGhpcywgUG9wcGVyKTtcblxuICAgIHRoaXMuc2NoZWR1bGVVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKF90aGlzLnVwZGF0ZSk7XG4gICAgfTtcblxuICAgIC8vIG1ha2UgdXBkYXRlKCkgZGVib3VuY2VkLCBzbyB0aGF0IGl0IG9ubHkgcnVucyBhdCBtb3N0IG9uY2UtcGVyLXRpY2tcbiAgICB0aGlzLnVwZGF0ZSA9IGRlYm91bmNlKHRoaXMudXBkYXRlLmJpbmQodGhpcykpO1xuXG4gICAgLy8gd2l0aCB7fSB3ZSBjcmVhdGUgYSBuZXcgb2JqZWN0IHdpdGggdGhlIG9wdGlvbnMgaW5zaWRlIGl0XG4gICAgdGhpcy5vcHRpb25zID0gX2V4dGVuZHMoe30sIFBvcHBlci5EZWZhdWx0cywgb3B0aW9ucyk7XG5cbiAgICAvLyBpbml0IHN0YXRlXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGlzRGVzdHJveWVkOiBmYWxzZSxcbiAgICAgIGlzQ3JlYXRlZDogZmFsc2UsXG4gICAgICBzY3JvbGxQYXJlbnRzOiBbXVxuICAgIH07XG5cbiAgICAvLyBnZXQgcmVmZXJlbmNlIGFuZCBwb3BwZXIgZWxlbWVudHMgKGFsbG93IGpRdWVyeSB3cmFwcGVycylcbiAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZSAmJiByZWZlcmVuY2UuanF1ZXJ5ID8gcmVmZXJlbmNlWzBdIDogcmVmZXJlbmNlO1xuICAgIHRoaXMucG9wcGVyID0gcG9wcGVyICYmIHBvcHBlci5qcXVlcnkgPyBwb3BwZXJbMF0gOiBwb3BwZXI7XG5cbiAgICAvLyBEZWVwIG1lcmdlIG1vZGlmaWVycyBvcHRpb25zXG4gICAgdGhpcy5vcHRpb25zLm1vZGlmaWVycyA9IHt9O1xuICAgIE9iamVjdC5rZXlzKF9leHRlbmRzKHt9LCBQb3BwZXIuRGVmYXVsdHMubW9kaWZpZXJzLCBvcHRpb25zLm1vZGlmaWVycykpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIF90aGlzLm9wdGlvbnMubW9kaWZpZXJzW25hbWVdID0gX2V4dGVuZHMoe30sIFBvcHBlci5EZWZhdWx0cy5tb2RpZmllcnNbbmFtZV0gfHwge30sIG9wdGlvbnMubW9kaWZpZXJzID8gb3B0aW9ucy5tb2RpZmllcnNbbmFtZV0gOiB7fSk7XG4gICAgfSk7XG5cbiAgICAvLyBSZWZhY3RvcmluZyBtb2RpZmllcnMnIGxpc3QgKE9iamVjdCA9PiBBcnJheSlcbiAgICB0aGlzLm1vZGlmaWVycyA9IE9iamVjdC5rZXlzKHRoaXMub3B0aW9ucy5tb2RpZmllcnMpLm1hcChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgcmV0dXJuIF9leHRlbmRzKHtcbiAgICAgICAgbmFtZTogbmFtZVxuICAgICAgfSwgX3RoaXMub3B0aW9ucy5tb2RpZmllcnNbbmFtZV0pO1xuICAgIH0pXG4gICAgLy8gc29ydCB0aGUgbW9kaWZpZXJzIGJ5IG9yZGVyXG4gICAgLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhLm9yZGVyIC0gYi5vcmRlcjtcbiAgICB9KTtcblxuICAgIC8vIG1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIGV4ZWN1dGUgYXJiaXRyYXJ5IGNvZGUgd2hlbiBQb3BwZXIuanMgZ2V0IGluaXRlZFxuICAgIC8vIHN1Y2ggY29kZSBpcyBleGVjdXRlZCBpbiB0aGUgc2FtZSBvcmRlciBvZiBpdHMgbW9kaWZpZXJcbiAgICAvLyB0aGV5IGNvdWxkIGFkZCBuZXcgcHJvcGVydGllcyB0byB0aGVpciBvcHRpb25zIGNvbmZpZ3VyYXRpb25cbiAgICAvLyBCRSBBV0FSRTogZG9uJ3QgYWRkIG9wdGlvbnMgdG8gYG9wdGlvbnMubW9kaWZpZXJzLm5hbWVgIGJ1dCB0byBgbW9kaWZpZXJPcHRpb25zYCFcbiAgICB0aGlzLm1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllck9wdGlvbnMpIHtcbiAgICAgIGlmIChtb2RpZmllck9wdGlvbnMuZW5hYmxlZCAmJiBpc0Z1bmN0aW9uKG1vZGlmaWVyT3B0aW9ucy5vbkxvYWQpKSB7XG4gICAgICAgIG1vZGlmaWVyT3B0aW9ucy5vbkxvYWQoX3RoaXMucmVmZXJlbmNlLCBfdGhpcy5wb3BwZXIsIF90aGlzLm9wdGlvbnMsIG1vZGlmaWVyT3B0aW9ucywgX3RoaXMuc3RhdGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gZmlyZSB0aGUgZmlyc3QgdXBkYXRlIHRvIHBvc2l0aW9uIHRoZSBwb3BwZXIgaW4gdGhlIHJpZ2h0IHBsYWNlXG4gICAgdGhpcy51cGRhdGUoKTtcblxuICAgIHZhciBldmVudHNFbmFibGVkID0gdGhpcy5vcHRpb25zLmV2ZW50c0VuYWJsZWQ7XG4gICAgaWYgKGV2ZW50c0VuYWJsZWQpIHtcbiAgICAgIC8vIHNldHVwIGV2ZW50IGxpc3RlbmVycywgdGhleSB3aWxsIHRha2UgY2FyZSBvZiB1cGRhdGUgdGhlIHBvc2l0aW9uIGluIHNwZWNpZmljIHNpdHVhdGlvbnNcbiAgICAgIHRoaXMuZW5hYmxlRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlLmV2ZW50c0VuYWJsZWQgPSBldmVudHNFbmFibGVkO1xuICB9XG5cbiAgLy8gV2UgY2FuJ3QgdXNlIGNsYXNzIHByb3BlcnRpZXMgYmVjYXVzZSB0aGV5IGRvbid0IGdldCBsaXN0ZWQgaW4gdGhlXG4gIC8vIGNsYXNzIHByb3RvdHlwZSBhbmQgYnJlYWsgc3R1ZmYgbGlrZSBTaW5vbiBzdHVic1xuXG5cbiAgY3JlYXRlQ2xhc3MoUG9wcGVyLCBbe1xuICAgIGtleTogJ3VwZGF0ZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZSQkMSgpIHtcbiAgICAgIHJldHVybiB1cGRhdGUuY2FsbCh0aGlzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdkZXN0cm95JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSQkMSgpIHtcbiAgICAgIHJldHVybiBkZXN0cm95LmNhbGwodGhpcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZW5hYmxlRXZlbnRMaXN0ZW5lcnMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBlbmFibGVFdmVudExpc3RlbmVycyQkMSgpIHtcbiAgICAgIHJldHVybiBlbmFibGVFdmVudExpc3RlbmVycy5jYWxsKHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2Rpc2FibGVFdmVudExpc3RlbmVycycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRpc2FibGVFdmVudExpc3RlbmVycyQkMSgpIHtcbiAgICAgIHJldHVybiBkaXNhYmxlRXZlbnRMaXN0ZW5lcnMuY2FsbCh0aGlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTY2hlZHVsZXMgYW4gdXBkYXRlLiBJdCB3aWxsIHJ1biBvbiB0aGUgbmV4dCBVSSB1cGRhdGUgYXZhaWxhYmxlLlxuICAgICAqIEBtZXRob2Qgc2NoZWR1bGVVcGRhdGVcbiAgICAgKiBAbWVtYmVyb2YgUG9wcGVyXG4gICAgICovXG5cblxuICAgIC8qKlxuICAgICAqIENvbGxlY3Rpb24gb2YgdXRpbGl0aWVzIHVzZWZ1bCB3aGVuIHdyaXRpbmcgY3VzdG9tIG1vZGlmaWVycy5cbiAgICAgKiBTdGFydGluZyBmcm9tIHZlcnNpb24gMS43LCB0aGlzIG1ldGhvZCBpcyBhdmFpbGFibGUgb25seSBpZiB5b3VcbiAgICAgKiBpbmNsdWRlIGBwb3BwZXItdXRpbHMuanNgIGJlZm9yZSBgcG9wcGVyLmpzYC5cbiAgICAgKlxuICAgICAqICoqREVQUkVDQVRJT04qKjogVGhpcyB3YXkgdG8gYWNjZXNzIFBvcHBlclV0aWxzIGlzIGRlcHJlY2F0ZWRcbiAgICAgKiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHYyISBVc2UgdGhlIFBvcHBlclV0aWxzIG1vZHVsZSBkaXJlY3RseSBpbnN0ZWFkLlxuICAgICAqIER1ZSB0byB0aGUgaGlnaCBpbnN0YWJpbGl0eSBvZiB0aGUgbWV0aG9kcyBjb250YWluZWQgaW4gVXRpbHMsIHdlIGNhbid0XG4gICAgICogZ3VhcmFudGVlIHRoZW0gdG8gZm9sbG93IHNlbXZlci4gVXNlIHRoZW0gYXQgeW91ciBvd24gcmlzayFcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMS44XG4gICAgICogQG1lbWJlciBVdGlsc1xuICAgICAqIEBtZW1iZXJvZiBQb3BwZXJcbiAgICAgKi9cblxuICB9XSk7XG4gIHJldHVybiBQb3BwZXI7XG59KCk7XG5cbi8qKlxuICogVGhlIGByZWZlcmVuY2VPYmplY3RgIGlzIGFuIG9iamVjdCB0aGF0IHByb3ZpZGVzIGFuIGludGVyZmFjZSBjb21wYXRpYmxlIHdpdGggUG9wcGVyLmpzXG4gKiBhbmQgbGV0cyB5b3UgdXNlIGl0IGFzIHJlcGxhY2VtZW50IG9mIGEgcmVhbCBET00gbm9kZS48YnIgLz5cbiAqIFlvdSBjYW4gdXNlIHRoaXMgbWV0aG9kIHRvIHBvc2l0aW9uIGEgcG9wcGVyIHJlbGF0aXZlbHkgdG8gYSBzZXQgb2YgY29vcmRpbmF0ZXNcbiAqIGluIGNhc2UgeW91IGRvbid0IGhhdmUgYSBET00gbm9kZSB0byB1c2UgYXMgcmVmZXJlbmNlLlxuICpcbiAqIGBgYFxuICogbmV3IFBvcHBlcihyZWZlcmVuY2VPYmplY3QsIHBvcHBlck5vZGUpO1xuICogYGBgXG4gKlxuICogTkI6IFRoaXMgZmVhdHVyZSBpc24ndCBzdXBwb3J0ZWQgaW4gSW50ZXJuZXQgRXhwbG9yZXIgMTAuXG4gKiBAbmFtZSByZWZlcmVuY2VPYmplY3RcbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IGRhdGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG4gKiBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHNldCBvZiBjb29yZGluYXRlcyBjb21wYXRpYmxlIHdpdGggdGhlIG5hdGl2ZSBgZ2V0Qm91bmRpbmdDbGllbnRSZWN0YCBtZXRob2QuXG4gKiBAcHJvcGVydHkge251bWJlcn0gZGF0YS5jbGllbnRXaWR0aFxuICogQW4gRVM2IGdldHRlciB0aGF0IHdpbGwgcmV0dXJuIHRoZSB3aWR0aCBvZiB0aGUgdmlydHVhbCByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBkYXRhLmNsaWVudEhlaWdodFxuICogQW4gRVM2IGdldHRlciB0aGF0IHdpbGwgcmV0dXJuIHRoZSBoZWlnaHQgb2YgdGhlIHZpcnR1YWwgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKi9cblxuXG5Qb3BwZXIuVXRpbHMgPSAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiBnbG9iYWwpLlBvcHBlclV0aWxzO1xuUG9wcGVyLnBsYWNlbWVudHMgPSBwbGFjZW1lbnRzO1xuUG9wcGVyLkRlZmF1bHRzID0gRGVmYXVsdHM7XG5cbmV4cG9ydCBkZWZhdWx0IFBvcHBlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvcHBlci5qcy5tYXBcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3BvcHBlci5qcy9kaXN0L2VzbS9wb3BwZXIuanNcbi8vIG1vZHVsZSBpZCA9IDEyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///127\n"); /***/ }), /* 128 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BDropdownHeader; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\nvar props = {\n id: {\n type: String,\n default: null\n },\n tag: {\n type: String,\n default: 'header'\n },\n variant: {\n type: String,\n default: null\n }\n}; // @vue/component\n\nvar BDropdownHeader =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BDropdownHeader',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var $attrs = data.attrs || {};\n data.attrs = {};\n return h('li', Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n attrs: {\n role: 'presentation'\n }\n }), [h(props.tag, {\n staticClass: 'dropdown-header',\n class: _defineProperty({}, \"text-\".concat(props.variant), props.variant),\n attrs: _objectSpread({}, $attrs, {\n id: props.id || null,\n role: 'heading'\n }),\n ref: 'header'\n }, children)]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1oZWFkZXIuanM/YTAzZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLCtDQUErQywyQ0FBMkMsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8seUNBQXlDLGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBnQiwyQ0FBMkMsa0JBQWtCLGtDQUFrQyxxRUFBcUUsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEVBQUUsWUFBWTs7QUFFN0s7QUFDb0I7QUFDL0M7QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0ZBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMjguanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmV4cG9ydCB2YXIgcHJvcHMgPSB7XG4gIGlkOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgdGFnOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdoZWFkZXInXG4gIH0sXG4gIHZhcmlhbnQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9XG59OyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJEcm9wZG93bkhlYWRlciA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JEcm9wZG93bkhlYWRlcicsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiBwcm9wcyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgICB2YXIgJGF0dHJzID0gZGF0YS5hdHRycyB8fCB7fTtcbiAgICBkYXRhLmF0dHJzID0ge307XG4gICAgcmV0dXJuIGgoJ2xpJywgbWVyZ2VEYXRhKGRhdGEsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6ICdwcmVzZW50YXRpb24nXG4gICAgICB9XG4gICAgfSksIFtoKHByb3BzLnRhZywge1xuICAgICAgc3RhdGljQ2xhc3M6ICdkcm9wZG93bi1oZWFkZXInLFxuICAgICAgY2xhc3M6IF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJ0ZXh0LVwiLmNvbmNhdChwcm9wcy52YXJpYW50KSwgcHJvcHMudmFyaWFudCksXG4gICAgICBhdHRyczogX29iamVjdFNwcmVhZCh7fSwgJGF0dHJzLCB7XG4gICAgICAgIGlkOiBwcm9wcy5pZCB8fCBudWxsLFxuICAgICAgICByb2xlOiAnaGVhZGluZydcbiAgICAgIH0pLFxuICAgICAgcmVmOiAnaGVhZGVyJ1xuICAgIH0sIGNoaWxkcmVuKV0pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLWhlYWRlci5qc1xuLy8gbW9kdWxlIGlkID0gMTI4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///128\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BDropdownItem; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__link_link__ = __webpack_require__(14);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\nvar props = Object(__WEBPACK_IMPORTED_MODULE_3__link_link__[\"b\" /* propsFactory */])(); // @vue/component\n\nvar BDropdownItem =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BDropdownItem',\n mixins: [__WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__[\"a\" /* default */]],\n inheritAttrs: false,\n inject: {\n bvDropdown: {\n default: null\n }\n },\n props: _objectSpread({}, props, {\n variant: {\n type: String,\n default: null\n }\n }),\n methods: {\n closeDropdown: function closeDropdown() {\n var _this = this;\n\n // Close on next animation frame to allow <b-link> time to process\n Object(__WEBPACK_IMPORTED_MODULE_1__utils_dom__[\"w\" /* requestAF */])(function () {\n if (_this.bvDropdown) {\n _this.bvDropdown.hide(true);\n }\n });\n },\n onClick: function onClick(evt) {\n this.$emit('click', evt);\n this.closeDropdown();\n }\n },\n render: function render(h) {\n return h('li', {\n attrs: {\n role: 'presentation'\n }\n }, [h(__WEBPACK_IMPORTED_MODULE_3__link_link__[\"a\" /* BLink */], {\n props: this.$props,\n staticClass: 'dropdown-item',\n class: _defineProperty({}, \"text-\".concat(this.variant), this.variant && !(this.active || this.disabled)),\n attrs: _objectSpread({}, this.$attrs, {\n role: 'menuitem'\n }),\n on: {\n click: this.onClick\n },\n ref: 'item'\n }, this.normalizeSlot('default'))]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1pdGVtLmpzPzA3YjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNVO0FBQ2dCO0FBQ1c7QUFDaEUsWUFBWSx3RUFBZ0IsR0FBRzs7QUFFL0I7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQSxXQUFXLHVFQUFpQjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNLHFFQUFTO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxLQUFLLHlEQUFLO0FBQ2Y7QUFDQTtBQUNBLCtCQUErQjtBQUMvQiw2QkFBNkI7QUFDN0I7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMTI4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgcmVxdWVzdEFGIH0gZnJvbSAnLi4vLi4vdXRpbHMvZG9tJztcbmltcG9ydCBub21hbGl6ZVNsb3RNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvbm9ybWFsaXplLXNsb3QnO1xuaW1wb3J0IHsgQkxpbmssIHByb3BzRmFjdG9yeSBhcyBsaW5rUHJvcHNGYWN0b3J5IH0gZnJvbSAnLi4vbGluay9saW5rJztcbmV4cG9ydCB2YXIgcHJvcHMgPSBsaW5rUHJvcHNGYWN0b3J5KCk7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkRyb3Bkb3duSXRlbSA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JEcm9wZG93bkl0ZW0nLFxuICBtaXhpbnM6IFtub21hbGl6ZVNsb3RNaXhpbl0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIGluamVjdDoge1xuICAgIGJ2RHJvcGRvd246IHtcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9XG4gIH0sXG4gIHByb3BzOiBfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcywge1xuICAgIHZhcmlhbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9XG4gIH0pLFxuICBtZXRob2RzOiB7XG4gICAgY2xvc2VEcm9wZG93bjogZnVuY3Rpb24gY2xvc2VEcm9wZG93bigpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIC8vIENsb3NlIG9uIG5leHQgYW5pbWF0aW9uIGZyYW1lIHRvIGFsbG93IDxiLWxpbms+IHRpbWUgdG8gcHJvY2Vzc1xuICAgICAgcmVxdWVzdEFGKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKF90aGlzLmJ2RHJvcGRvd24pIHtcbiAgICAgICAgICBfdGhpcy5idkRyb3Bkb3duLmhpZGUodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgb25DbGljazogZnVuY3Rpb24gb25DbGljayhldnQpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2NsaWNrJywgZXZ0KTtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHJldHVybiBoKCdsaScsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6ICdwcmVzZW50YXRpb24nXG4gICAgICB9XG4gICAgfSwgW2goQkxpbmssIHtcbiAgICAgIHByb3BzOiB0aGlzLiRwcm9wcyxcbiAgICAgIHN0YXRpY0NsYXNzOiAnZHJvcGRvd24taXRlbScsXG4gICAgICBjbGFzczogX2RlZmluZVByb3BlcnR5KHt9LCBcInRleHQtXCIuY29uY2F0KHRoaXMudmFyaWFudCksIHRoaXMudmFyaWFudCAmJiAhKHRoaXMuYWN0aXZlIHx8IHRoaXMuZGlzYWJsZWQpKSxcbiAgICAgIGF0dHJzOiBfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLiRhdHRycywge1xuICAgICAgICByb2xlOiAnbWVudWl0ZW0nXG4gICAgICB9KSxcbiAgICAgIG9uOiB7XG4gICAgICAgIGNsaWNrOiB0aGlzLm9uQ2xpY2tcbiAgICAgIH0sXG4gICAgICByZWY6ICdpdGVtJ1xuICAgIH0sIHRoaXMubm9ybWFsaXplU2xvdCgnZGVmYXVsdCcpKV0pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLWl0ZW0uanNcbi8vIG1vZHVsZSBpZCA9IDEyOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///128\n"); /***/ }), /* 129 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BDropdownDivider; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\nvar props = {\n tag: {\n type: String,\n default: 'hr'\n }\n}; // @vue/component\n\nvar BDropdownDivider =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BDropdownDivider',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n var $attrs = data.attrs || {};\n data.attrs = {};\n return h('li', Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n attrs: {\n role: 'presentation'\n }\n }), [h(props.tag, {\n staticClass: 'dropdown-divider',\n attrs: _objectSpread({}, $attrs, {\n role: 'separator',\n 'aria-orientation': 'horizontal'\n }),\n ref: 'divider'\n })]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1kaXZpZGVyLmpzP2JmNWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ29CO0FBQy9DO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVLO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0ZBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjEyOS5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhzb3VyY2UsIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IG1lcmdlRGF0YSB9IGZyb20gJ3Z1ZS1mdW5jdGlvbmFsLWRhdGEtbWVyZ2UnO1xuZXhwb3J0IHZhciBwcm9wcyA9IHtcbiAgdGFnOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdocidcbiAgfVxufTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCRHJvcGRvd25EaXZpZGVyID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQkRyb3Bkb3duRGl2aWRlcicsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiBwcm9wcyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGE7XG4gICAgdmFyICRhdHRycyA9IGRhdGEuYXR0cnMgfHwge307XG4gICAgZGF0YS5hdHRycyA9IHt9O1xuICAgIHJldHVybiBoKCdsaScsIG1lcmdlRGF0YShkYXRhLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICByb2xlOiAncHJlc2VudGF0aW9uJ1xuICAgICAgfVxuICAgIH0pLCBbaChwcm9wcy50YWcsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnZHJvcGRvd24tZGl2aWRlcicsXG4gICAgICBhdHRyczogX29iamVjdFNwcmVhZCh7fSwgJGF0dHJzLCB7XG4gICAgICAgIHJvbGU6ICdzZXBhcmF0b3InLFxuICAgICAgICAnYXJpYS1vcmllbnRhdGlvbic6ICdob3Jpem9udGFsJ1xuICAgICAgfSksXG4gICAgICByZWY6ICdkaXZpZGVyJ1xuICAgIH0pXSk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24tZGl2aWRlci5qc1xuLy8gbW9kdWxlIGlkID0gMTI5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///129\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BDropdownItemButton; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_normalize_slot__ = __webpack_require__(5);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\nvar props = {\n active: {\n type: Boolean,\n default: false\n },\n activeClass: {\n type: String,\n default: 'active'\n },\n disabled: {\n type: Boolean,\n default: false\n },\n variant: {\n type: String,\n default: null\n }\n}; // @vue/component\n\nvar BDropdownItemButton =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BDropdownItemButton',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_normalize_slot__[\"a\" /* default */]],\n inheritAttrs: false,\n inject: {\n bvDropdown: {\n default: null\n }\n },\n props: props,\n methods: {\n closeDropdown: function closeDropdown() {\n if (this.bvDropdown) {\n this.bvDropdown.hide(true);\n }\n },\n onClick: function onClick(evt) {\n this.$emit('click', evt);\n this.closeDropdown();\n }\n },\n render: function render(h) {\n var _class;\n\n return h('li', {\n attrs: {\n role: 'presentation'\n }\n }, [h('button', {\n staticClass: 'dropdown-item',\n class: (_class = {}, _defineProperty(_class, this.activeClass, this.active), _defineProperty(_class, \"text-\".concat(this.variant), this.variant && !(this.active || this.disabled)), _class),\n attrs: _objectSpread({}, this.$attrs, {\n role: 'menuitem',\n type: 'button',\n disabled: this.disabled\n }),\n on: {\n click: this.onClick\n },\n ref: 'button'\n }, this.normalizeSlot('default'))]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1pdGVtLWJ1dHRvbi5qcz9lMDcyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUMwQjtBQUNyRDtBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsdUVBQWlCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMjkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgbm9tYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JztcbmV4cG9ydCB2YXIgcHJvcHMgPSB7XG4gIGFjdGl2ZToge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgYWN0aXZlQ2xhc3M6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ2FjdGl2ZSdcbiAgfSxcbiAgZGlzYWJsZWQ6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIHZhcmlhbnQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9XG59OyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJEcm9wZG93bkl0ZW1CdXR0b24gPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCRHJvcGRvd25JdGVtQnV0dG9uJyxcbiAgbWl4aW5zOiBbbm9tYWxpemVTbG90TWl4aW5dLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBpbmplY3Q6IHtcbiAgICBidkRyb3Bkb3duOiB7XG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfVxuICB9LFxuICBwcm9wczogcHJvcHMsXG4gIG1ldGhvZHM6IHtcbiAgICBjbG9zZURyb3Bkb3duOiBmdW5jdGlvbiBjbG9zZURyb3Bkb3duKCkge1xuICAgICAgaWYgKHRoaXMuYnZEcm9wZG93bikge1xuICAgICAgICB0aGlzLmJ2RHJvcGRvd24uaGlkZSh0cnVlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soZXZ0KSB7XG4gICAgICB0aGlzLiRlbWl0KCdjbGljaycsIGV2dCk7XG4gICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgX2NsYXNzO1xuXG4gICAgcmV0dXJuIGgoJ2xpJywge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcm9sZTogJ3ByZXNlbnRhdGlvbidcbiAgICAgIH1cbiAgICB9LCBbaCgnYnV0dG9uJywge1xuICAgICAgc3RhdGljQ2xhc3M6ICdkcm9wZG93bi1pdGVtJyxcbiAgICAgIGNsYXNzOiAoX2NsYXNzID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3MsIHRoaXMuYWN0aXZlQ2xhc3MsIHRoaXMuYWN0aXZlKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJ0ZXh0LVwiLmNvbmNhdCh0aGlzLnZhcmlhbnQpLCB0aGlzLnZhcmlhbnQgJiYgISh0aGlzLmFjdGl2ZSB8fCB0aGlzLmRpc2FibGVkKSksIF9jbGFzcyksXG4gICAgICBhdHRyczogX29iamVjdFNwcmVhZCh7fSwgdGhpcy4kYXR0cnMsIHtcbiAgICAgICAgcm9sZTogJ21lbnVpdGVtJyxcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkXG4gICAgICB9KSxcbiAgICAgIG9uOiB7XG4gICAgICAgIGNsaWNrOiB0aGlzLm9uQ2xpY2tcbiAgICAgIH0sXG4gICAgICByZWY6ICdidXR0b24nXG4gICAgfSwgdGhpcy5ub3JtYWxpemVTbG90KCdkZWZhdWx0JykpXSk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24taXRlbS1idXR0b24uanNcbi8vIG1vZHVsZSBpZCA9IDEyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///129\n"); /***/ }), /* 130 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BDropdownForm; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__form_form__ = __webpack_require__(42);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\nvar BDropdownForm =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BDropdownForm',\n functional: true,\n props: _objectSpread({}, __WEBPACK_IMPORTED_MODULE_2__form_form__[\"b\" /* props */], {\n disabled: {\n type: Boolean,\n default: false\n }\n }),\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var $attrs = data.attrs || {};\n var $listeners = data.on || {};\n data.attrs = {};\n data.on = {};\n return h('li', Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n attrs: {\n role: 'presentation'\n }\n }), [h(__WEBPACK_IMPORTED_MODULE_2__form_form__[\"a\" /* BForm */], {\n ref: 'form',\n staticClass: 'b-dropdown-form',\n class: {\n disabled: props.disabled\n },\n props: props,\n attrs: _objectSpread({}, $attrs, {\n disabled: props.disabled,\n // Tab index of -1 for keyboard navigation\n tabindex: props.disabled ? null : '-1'\n }),\n on: $listeners\n }, children)]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1mb3JtLmpzPzI1ZmMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ29CO0FBQ0c7QUFDbEQ7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQTtBQUNBLHlCQUF5QixFQUFFLHlEQUFTO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0ZBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSyxNQUFNLHlEQUFLO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMTMwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgbWVyZ2VEYXRhIH0gZnJvbSAndnVlLWZ1bmN0aW9uYWwtZGF0YS1tZXJnZSc7XG5pbXBvcnQgeyBCRm9ybSwgcHJvcHMgYXMgZm9ybVByb3BzIH0gZnJvbSAnLi4vZm9ybS9mb3JtJztcbmV4cG9ydCB2YXIgQkRyb3Bkb3duRm9ybSA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JEcm9wZG93bkZvcm0nLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogX29iamVjdFNwcmVhZCh7fSwgZm9ybVByb3BzLCB7XG4gICAgZGlzYWJsZWQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSksXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgICBkYXRhID0gX3JlZi5kYXRhLFxuICAgICAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW47XG4gICAgdmFyICRhdHRycyA9IGRhdGEuYXR0cnMgfHwge307XG4gICAgdmFyICRsaXN0ZW5lcnMgPSBkYXRhLm9uIHx8IHt9O1xuICAgIGRhdGEuYXR0cnMgPSB7fTtcbiAgICBkYXRhLm9uID0ge307XG4gICAgcmV0dXJuIGgoJ2xpJywgbWVyZ2VEYXRhKGRhdGEsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6ICdwcmVzZW50YXRpb24nXG4gICAgICB9XG4gICAgfSksIFtoKEJGb3JtLCB7XG4gICAgICByZWY6ICdmb3JtJyxcbiAgICAgIHN0YXRpY0NsYXNzOiAnYi1kcm9wZG93bi1mb3JtJyxcbiAgICAgIGNsYXNzOiB7XG4gICAgICAgIGRpc2FibGVkOiBwcm9wcy5kaXNhYmxlZFxuICAgICAgfSxcbiAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgIGF0dHJzOiBfb2JqZWN0U3ByZWFkKHt9LCAkYXR0cnMsIHtcbiAgICAgICAgZGlzYWJsZWQ6IHByb3BzLmRpc2FibGVkLFxuICAgICAgICAvLyBUYWIgaW5kZXggb2YgLTEgZm9yIGtleWJvYXJkIG5hdmlnYXRpb25cbiAgICAgICAgdGFiaW5kZXg6IHByb3BzLmRpc2FibGVkID8gbnVsbCA6ICctMSdcbiAgICAgIH0pLFxuICAgICAgb246ICRsaXN0ZW5lcnNcbiAgICB9LCBjaGlsZHJlbildKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1mb3JtLmpzXG4vLyBtb2R1bGUgaWQgPSAxMzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///130\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BDropdownHeader; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\nvar props = {\n id: {\n type: String,\n default: null\n },\n tag: {\n type: String,\n default: 'header'\n },\n variant: {\n type: String,\n default: null\n }\n}; // @vue/component\n\nvar BDropdownHeader =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BDropdownHeader',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var $attrs = data.attrs || {};\n data.attrs = {};\n return h('li', Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n attrs: {\n role: 'presentation'\n }\n }), [h(props.tag, {\n staticClass: 'dropdown-header',\n class: _defineProperty({}, \"text-\".concat(props.variant), props.variant),\n attrs: _objectSpread({}, $attrs, {\n id: props.id || null,\n role: 'heading'\n }),\n ref: 'header'\n }, children)]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1oZWFkZXIuanM/YTAzZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLCtDQUErQywyQ0FBMkMsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8seUNBQXlDLGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBnQiwyQ0FBMkMsa0JBQWtCLGtDQUFrQyxxRUFBcUUsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEVBQUUsWUFBWTs7QUFFN0s7QUFDb0I7QUFDL0M7QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0ZBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMzAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmV4cG9ydCB2YXIgcHJvcHMgPSB7XG4gIGlkOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgdGFnOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdoZWFkZXInXG4gIH0sXG4gIHZhcmlhbnQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9XG59OyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJEcm9wZG93bkhlYWRlciA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JEcm9wZG93bkhlYWRlcicsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiBwcm9wcyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgICB2YXIgJGF0dHJzID0gZGF0YS5hdHRycyB8fCB7fTtcbiAgICBkYXRhLmF0dHJzID0ge307XG4gICAgcmV0dXJuIGgoJ2xpJywgbWVyZ2VEYXRhKGRhdGEsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6ICdwcmVzZW50YXRpb24nXG4gICAgICB9XG4gICAgfSksIFtoKHByb3BzLnRhZywge1xuICAgICAgc3RhdGljQ2xhc3M6ICdkcm9wZG93bi1oZWFkZXInLFxuICAgICAgY2xhc3M6IF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJ0ZXh0LVwiLmNvbmNhdChwcm9wcy52YXJpYW50KSwgcHJvcHMudmFyaWFudCksXG4gICAgICBhdHRyczogX29iamVjdFNwcmVhZCh7fSwgJGF0dHJzLCB7XG4gICAgICAgIGlkOiBwcm9wcy5pZCB8fCBudWxsLFxuICAgICAgICByb2xlOiAnaGVhZGluZydcbiAgICAgIH0pLFxuICAgICAgcmVmOiAnaGVhZGVyJ1xuICAgIH0sIGNoaWxkcmVuKV0pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLWhlYWRlci5qc1xuLy8gbW9kdWxlIGlkID0gMTMwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///130\n"); /***/ }), /* 131 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BDropdownText; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\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 // @vue/component\n\nvar BDropdownText =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BDropdownText',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'p'\n },\n variant: {\n type: String,\n default: null\n }\n },\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var $attrs = data.attrs || {};\n data.attrs = {};\n return h('li', Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n attrs: {\n role: 'presentation'\n }\n }), [h(props.tag, {\n staticClass: 'b-dropdown-text',\n class: _defineProperty({}, \"text-\".concat(props.variant), props.variant),\n props: props,\n attrs: $attrs,\n ref: 'text'\n }, children)]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi10ZXh0LmpzP2ZkMzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUEsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ29COztBQUUvQztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG9GQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjEzMS5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IG1lcmdlRGF0YSB9IGZyb20gJ3Z1ZS1mdW5jdGlvbmFsLWRhdGEtbWVyZ2UnOyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJEcm9wZG93blRleHQgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCRHJvcGRvd25UZXh0JyxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcHJvcHM6IHtcbiAgICB0YWc6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdwJ1xuICAgIH0sXG4gICAgdmFyaWFudDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgICB2YXIgJGF0dHJzID0gZGF0YS5hdHRycyB8fCB7fTtcbiAgICBkYXRhLmF0dHJzID0ge307XG4gICAgcmV0dXJuIGgoJ2xpJywgbWVyZ2VEYXRhKGRhdGEsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6ICdwcmVzZW50YXRpb24nXG4gICAgICB9XG4gICAgfSksIFtoKHByb3BzLnRhZywge1xuICAgICAgc3RhdGljQ2xhc3M6ICdiLWRyb3Bkb3duLXRleHQnLFxuICAgICAgY2xhc3M6IF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJ0ZXh0LVwiLmNvbmNhdChwcm9wcy52YXJpYW50KSwgcHJvcHMudmFyaWFudCksXG4gICAgICBwcm9wczogcHJvcHMsXG4gICAgICBhdHRyczogJGF0dHJzLFxuICAgICAgcmVmOiAndGV4dCdcbiAgICB9LCBjaGlsZHJlbildKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi10ZXh0LmpzXG4vLyBtb2R1bGUgaWQgPSAxMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///131\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BDropdownDivider; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\nvar props = {\n tag: {\n type: String,\n default: 'hr'\n }\n}; // @vue/component\n\nvar BDropdownDivider =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BDropdownDivider',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n var $attrs = data.attrs || {};\n data.attrs = {};\n return h('li', Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n attrs: {\n role: 'presentation'\n }\n }), [h(props.tag, {\n staticClass: 'dropdown-divider',\n attrs: _objectSpread({}, $attrs, {\n role: 'separator',\n 'aria-orientation': 'horizontal'\n }),\n ref: 'divider'\n })]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1kaXZpZGVyLmpzP2JmNWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ29CO0FBQy9DO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVLO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0ZBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjEzMS5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhzb3VyY2UsIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IG1lcmdlRGF0YSB9IGZyb20gJ3Z1ZS1mdW5jdGlvbmFsLWRhdGEtbWVyZ2UnO1xuZXhwb3J0IHZhciBwcm9wcyA9IHtcbiAgdGFnOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdocidcbiAgfVxufTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCRHJvcGRvd25EaXZpZGVyID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQkRyb3Bkb3duRGl2aWRlcicsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiBwcm9wcyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGE7XG4gICAgdmFyICRhdHRycyA9IGRhdGEuYXR0cnMgfHwge307XG4gICAgZGF0YS5hdHRycyA9IHt9O1xuICAgIHJldHVybiBoKCdsaScsIG1lcmdlRGF0YShkYXRhLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICByb2xlOiAncHJlc2VudGF0aW9uJ1xuICAgICAgfVxuICAgIH0pLCBbaChwcm9wcy50YWcsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnZHJvcGRvd24tZGl2aWRlcicsXG4gICAgICBhdHRyczogX29iamVjdFNwcmVhZCh7fSwgJGF0dHJzLCB7XG4gICAgICAgIHJvbGU6ICdzZXBhcmF0b3InLFxuICAgICAgICAnYXJpYS1vcmllbnRhdGlvbic6ICdob3Jpem9udGFsJ1xuICAgICAgfSksXG4gICAgICByZWY6ICdkaXZpZGVyJ1xuICAgIH0pXSk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24tZGl2aWRlci5qc1xuLy8gbW9kdWxlIGlkID0gMTMxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///131\n"); /***/ }), /* 132 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BDropdownGroup; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_normalize_slot__ = __webpack_require__(18);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\nvar props = {\n id: {\n type: String,\n default: null\n },\n header: {\n type: String,\n default: null\n },\n headerTag: {\n type: String,\n default: 'header'\n },\n headerVariant: {\n type: String,\n default: null\n },\n headerClasses: {\n type: [String, Array, Object],\n default: null\n },\n ariaDescribedby: {\n type: String,\n default: null\n }\n}; // @vue/component\n\nvar BDropdownGroup =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BDropdownGroup',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var $attrs = data.attrs || {};\n data.attrs = {};\n var header;\n var headerId = null;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_2__utils_normalize_slot__[\"a\" /* hasNormalizedSlot */])('header', $scopedSlots, $slots) || props.header) {\n headerId = props.id ? \"_bv_\".concat(props.id, \"_group_dd_header\") : null;\n header = h(props.headerTag, {\n staticClass: 'dropdown-header',\n class: [props.headerClasses, _defineProperty({}, \"text-\".concat(props.variant), props.variant)],\n attrs: {\n id: headerId,\n role: 'heading'\n }\n }, Object(__WEBPACK_IMPORTED_MODULE_2__utils_normalize_slot__[\"b\" /* normalizeSlot */])('header', {}, $scopedSlots, $slots) || props.header);\n }\n\n var adb = [headerId, props.ariaDescribedBy].filter(Boolean).join(' ').trim();\n return h('li', Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n attrs: {\n role: 'presentation'\n }\n }), [header || h(), h('ul', {\n staticClass: 'list-unstyled',\n attrs: _objectSpread({}, $attrs, {\n id: props.id || null,\n role: 'group',\n 'aria-describedby': adb || null\n })\n }, Object(__WEBPACK_IMPORTED_MODULE_2__utils_normalize_slot__[\"b\" /* normalizeSlot */])('default', {}, $scopedSlots, $slots))]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1ncm91cC5qcz9mMWI0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ29CO0FBQ3dCO0FBQ3ZFO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUs7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLHdGQUFpQjtBQUN6QjtBQUNBO0FBQ0E7QUFDQSx1REFBdUQ7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUUsb0ZBQWEsYUFBYTtBQUNuQzs7QUFFQTtBQUNBLG1CQUFtQixvRkFBUztBQUM1QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUssRUFBRSxvRkFBYSxjQUFjO0FBQ2xDO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMzIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCB7IGhhc05vcm1hbGl6ZWRTbG90LCBub3JtYWxpemVTbG90IH0gZnJvbSAnLi4vLi4vdXRpbHMvbm9ybWFsaXplLXNsb3QnO1xuZXhwb3J0IHZhciBwcm9wcyA9IHtcbiAgaWQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBoZWFkZXI6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBoZWFkZXJUYWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ2hlYWRlcidcbiAgfSxcbiAgaGVhZGVyVmFyaWFudDoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH0sXG4gIGhlYWRlckNsYXNzZXM6IHtcbiAgICB0eXBlOiBbU3RyaW5nLCBBcnJheSwgT2JqZWN0XSxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH0sXG4gIGFyaWFEZXNjcmliZWRieToge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkRyb3Bkb3duR3JvdXAgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCRHJvcGRvd25Hcm91cCcsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiBwcm9wcyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgIHNsb3RzID0gX3JlZi5zbG90cyxcbiAgICAgICAgc2NvcGVkU2xvdHMgPSBfcmVmLnNjb3BlZFNsb3RzO1xuICAgIHZhciAkc2xvdHMgPSBzbG90cygpO1xuICAgIHZhciAkc2NvcGVkU2xvdHMgPSBzY29wZWRTbG90cyB8fCB7fTtcbiAgICB2YXIgJGF0dHJzID0gZGF0YS5hdHRycyB8fCB7fTtcbiAgICBkYXRhLmF0dHJzID0ge307XG4gICAgdmFyIGhlYWRlcjtcbiAgICB2YXIgaGVhZGVySWQgPSBudWxsO1xuXG4gICAgaWYgKGhhc05vcm1hbGl6ZWRTbG90KCdoZWFkZXInLCAkc2NvcGVkU2xvdHMsICRzbG90cykgfHwgcHJvcHMuaGVhZGVyKSB7XG4gICAgICBoZWFkZXJJZCA9IHByb3BzLmlkID8gXCJfYnZfXCIuY29uY2F0KHByb3BzLmlkLCBcIl9ncm91cF9kZF9oZWFkZXJcIikgOiBudWxsO1xuICAgICAgaGVhZGVyID0gaChwcm9wcy5oZWFkZXJUYWcsIHtcbiAgICAgICAgc3RhdGljQ2xhc3M6ICdkcm9wZG93bi1oZWFkZXInLFxuICAgICAgICBjbGFzczogW3Byb3BzLmhlYWRlckNsYXNzZXMsIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJ0ZXh0LVwiLmNvbmNhdChwcm9wcy52YXJpYW50KSwgcHJvcHMudmFyaWFudCldLFxuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIGlkOiBoZWFkZXJJZCxcbiAgICAgICAgICByb2xlOiAnaGVhZGluZydcbiAgICAgICAgfVxuICAgICAgfSwgbm9ybWFsaXplU2xvdCgnaGVhZGVyJywge30sICRzY29wZWRTbG90cywgJHNsb3RzKSB8fCBwcm9wcy5oZWFkZXIpO1xuICAgIH1cblxuICAgIHZhciBhZGIgPSBbaGVhZGVySWQsIHByb3BzLmFyaWFEZXNjcmliZWRCeV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKS50cmltKCk7XG4gICAgcmV0dXJuIGgoJ2xpJywgbWVyZ2VEYXRhKGRhdGEsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6ICdwcmVzZW50YXRpb24nXG4gICAgICB9XG4gICAgfSksIFtoZWFkZXIgfHwgaCgpLCBoKCd1bCcsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnbGlzdC11bnN0eWxlZCcsXG4gICAgICBhdHRyczogX29iamVjdFNwcmVhZCh7fSwgJGF0dHJzLCB7XG4gICAgICAgIGlkOiBwcm9wcy5pZCB8fCBudWxsLFxuICAgICAgICByb2xlOiAnZ3JvdXAnLFxuICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc6IGFkYiB8fCBudWxsXG4gICAgICB9KVxuICAgIH0sIG5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnLCB7fSwgJHNjb3BlZFNsb3RzLCAkc2xvdHMpKV0pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLWdyb3VwLmpzXG4vLyBtb2R1bGUgaWQgPSAxMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///132\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BDropdownForm; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__form_form__ = __webpack_require__(42);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\nvar BDropdownForm =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BDropdownForm',\n functional: true,\n props: _objectSpread({}, __WEBPACK_IMPORTED_MODULE_2__form_form__[\"b\" /* props */], {\n disabled: {\n type: Boolean,\n default: false\n }\n }),\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var $attrs = data.attrs || {};\n var $listeners = data.on || {};\n data.attrs = {};\n data.on = {};\n return h('li', Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n attrs: {\n role: 'presentation'\n }\n }), [h(__WEBPACK_IMPORTED_MODULE_2__form_form__[\"a\" /* BForm */], {\n ref: 'form',\n staticClass: 'b-dropdown-form',\n class: {\n disabled: props.disabled\n },\n props: props,\n attrs: _objectSpread({}, $attrs, {\n disabled: props.disabled,\n // Tab index of -1 for keyboard navigation\n tabindex: props.disabled ? null : '-1'\n }),\n on: $listeners\n }, children)]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1mb3JtLmpzPzI1ZmMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ29CO0FBQ0c7QUFDbEQ7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQTtBQUNBLHlCQUF5QixFQUFFLHlEQUFTO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0ZBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSyxNQUFNLHlEQUFLO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMTMyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgbWVyZ2VEYXRhIH0gZnJvbSAndnVlLWZ1bmN0aW9uYWwtZGF0YS1tZXJnZSc7XG5pbXBvcnQgeyBCRm9ybSwgcHJvcHMgYXMgZm9ybVByb3BzIH0gZnJvbSAnLi4vZm9ybS9mb3JtJztcbmV4cG9ydCB2YXIgQkRyb3Bkb3duRm9ybSA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JEcm9wZG93bkZvcm0nLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogX29iamVjdFNwcmVhZCh7fSwgZm9ybVByb3BzLCB7XG4gICAgZGlzYWJsZWQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSksXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgICBkYXRhID0gX3JlZi5kYXRhLFxuICAgICAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW47XG4gICAgdmFyICRhdHRycyA9IGRhdGEuYXR0cnMgfHwge307XG4gICAgdmFyICRsaXN0ZW5lcnMgPSBkYXRhLm9uIHx8IHt9O1xuICAgIGRhdGEuYXR0cnMgPSB7fTtcbiAgICBkYXRhLm9uID0ge307XG4gICAgcmV0dXJuIGgoJ2xpJywgbWVyZ2VEYXRhKGRhdGEsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6ICdwcmVzZW50YXRpb24nXG4gICAgICB9XG4gICAgfSksIFtoKEJGb3JtLCB7XG4gICAgICByZWY6ICdmb3JtJyxcbiAgICAgIHN0YXRpY0NsYXNzOiAnYi1kcm9wZG93bi1mb3JtJyxcbiAgICAgIGNsYXNzOiB7XG4gICAgICAgIGRpc2FibGVkOiBwcm9wcy5kaXNhYmxlZFxuICAgICAgfSxcbiAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgIGF0dHJzOiBfb2JqZWN0U3ByZWFkKHt9LCAkYXR0cnMsIHtcbiAgICAgICAgZGlzYWJsZWQ6IHByb3BzLmRpc2FibGVkLFxuICAgICAgICAvLyBUYWIgaW5kZXggb2YgLTEgZm9yIGtleWJvYXJkIG5hdmlnYXRpb25cbiAgICAgICAgdGFiaW5kZXg6IHByb3BzLmRpc2FibGVkID8gbnVsbCA6ICctMSdcbiAgICAgIH0pLFxuICAgICAgb246ICRsaXN0ZW5lcnNcbiAgICB9LCBjaGlsZHJlbildKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1mb3JtLmpzXG4vLyBtb2R1bGUgaWQgPSAxMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///132\n"); /***/ }), /* 133 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return EmbedPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__embed__ = __webpack_require__(134);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BEmbed */\n\n\nvar EmbedPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BEmbed: __WEBPACK_IMPORTED_MODULE_0__embed__[\"a\" /* BEmbed */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9lbWJlZC9pbmRleC5qcz81ZTQxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ21CO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsWUFBWSxzREFBTTtBQUNsQjtBQUNBLENBQUMiLCJmaWxlIjoiMTMzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkVtYmVkIH0gZnJvbSAnLi9lbWJlZCc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgRW1iZWRQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCRW1iZWQ6IEJFbWJlZFxuICB9XG59KTtcbmV4cG9ydCB7IEVtYmVkUGx1Z2luLCBCRW1iZWQgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2VtYmVkL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMzNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///133\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BDropdownText; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\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 // @vue/component\n\nvar BDropdownText =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BDropdownText',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'p'\n },\n variant: {\n type: String,\n default: null\n }\n },\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var $attrs = data.attrs || {};\n data.attrs = {};\n return h('li', Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n attrs: {\n role: 'presentation'\n }\n }), [h(props.tag, {\n staticClass: 'b-dropdown-text',\n class: _defineProperty({}, \"text-\".concat(props.variant), props.variant),\n props: props,\n attrs: $attrs,\n ref: 'text'\n }, children)]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi10ZXh0LmpzP2ZkMzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUEsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ29COztBQUUvQztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG9GQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjEzMy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IG1lcmdlRGF0YSB9IGZyb20gJ3Z1ZS1mdW5jdGlvbmFsLWRhdGEtbWVyZ2UnOyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJEcm9wZG93blRleHQgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCRHJvcGRvd25UZXh0JyxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcHJvcHM6IHtcbiAgICB0YWc6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdwJ1xuICAgIH0sXG4gICAgdmFyaWFudDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgICB2YXIgJGF0dHJzID0gZGF0YS5hdHRycyB8fCB7fTtcbiAgICBkYXRhLmF0dHJzID0ge307XG4gICAgcmV0dXJuIGgoJ2xpJywgbWVyZ2VEYXRhKGRhdGEsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6ICdwcmVzZW50YXRpb24nXG4gICAgICB9XG4gICAgfSksIFtoKHByb3BzLnRhZywge1xuICAgICAgc3RhdGljQ2xhc3M6ICdiLWRyb3Bkb3duLXRleHQnLFxuICAgICAgY2xhc3M6IF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJ0ZXh0LVwiLmNvbmNhdChwcm9wcy52YXJpYW50KSwgcHJvcHMudmFyaWFudCksXG4gICAgICBwcm9wczogcHJvcHMsXG4gICAgICBhdHRyczogJGF0dHJzLFxuICAgICAgcmVmOiAndGV4dCdcbiAgICB9LCBjaGlsZHJlbildKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi10ZXh0LmpzXG4vLyBtb2R1bGUgaWQgPSAxMzNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///133\n"); /***/ }), /* 134 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BEmbed; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_array__ = __webpack_require__(7);\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\nvar props = {\n type: {\n type: String,\n default: 'iframe',\n validator: function validator(str) {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"a\" /* arrayIncludes */])(['iframe', 'embed', 'video', 'object', 'img', 'b-img', 'b-img-lazy'], str);\n }\n },\n tag: {\n type: String,\n default: 'div'\n },\n aspect: {\n type: String,\n default: '16by9'\n }\n}; // @vue/component\n\nvar BEmbed =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BEmbed',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, {\n ref: data.ref,\n staticClass: 'embed-responsive',\n class: _defineProperty({}, \"embed-responsive-\".concat(props.aspect), Boolean(props.aspect))\n }, [h(props.type, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n ref: '',\n staticClass: 'embed-responsive-item'\n }), children)]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9lbWJlZC9lbWJlZC5qcz8yZGQwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwyQ0FBMkMsa0JBQWtCLGtDQUFrQyxxRUFBcUUsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEVBQUUsWUFBWTs7QUFFN0s7QUFDb0I7QUFDSjtBQUMzQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSwyRUFBYTtBQUMxQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVLO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLEtBQUssaUJBQWlCLG9GQUFTO0FBQy9CO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjEzNC5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IG1lcmdlRGF0YSB9IGZyb20gJ3Z1ZS1mdW5jdGlvbmFsLWRhdGEtbWVyZ2UnO1xuaW1wb3J0IHsgYXJyYXlJbmNsdWRlcyB9IGZyb20gJy4uLy4uL3V0aWxzL2FycmF5JztcbmV4cG9ydCB2YXIgcHJvcHMgPSB7XG4gIHR5cGU6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ2lmcmFtZScsXG4gICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Ioc3RyKSB7XG4gICAgICByZXR1cm4gYXJyYXlJbmNsdWRlcyhbJ2lmcmFtZScsICdlbWJlZCcsICd2aWRlbycsICdvYmplY3QnLCAnaW1nJywgJ2ItaW1nJywgJ2ItaW1nLWxhenknXSwgc3RyKTtcbiAgICB9XG4gIH0sXG4gIHRhZzoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAnZGl2J1xuICB9LFxuICBhc3BlY3Q6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJzE2Ynk5J1xuICB9XG59OyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJFbWJlZCA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JFbWJlZCcsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiBwcm9wcyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgICByZXR1cm4gaChwcm9wcy50YWcsIHtcbiAgICAgIHJlZjogZGF0YS5yZWYsXG4gICAgICBzdGF0aWNDbGFzczogJ2VtYmVkLXJlc3BvbnNpdmUnLFxuICAgICAgY2xhc3M6IF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJlbWJlZC1yZXNwb25zaXZlLVwiLmNvbmNhdChwcm9wcy5hc3BlY3QpLCBCb29sZWFuKHByb3BzLmFzcGVjdCkpXG4gICAgfSwgW2gocHJvcHMudHlwZSwgbWVyZ2VEYXRhKGRhdGEsIHtcbiAgICAgIHJlZjogJycsXG4gICAgICBzdGF0aWNDbGFzczogJ2VtYmVkLXJlc3BvbnNpdmUtaXRlbSdcbiAgICB9KSwgY2hpbGRyZW4pXSk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvZW1iZWQvZW1iZWQuanNcbi8vIG1vZHVsZSBpZCA9IDEzNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///134\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BDropdownGroup; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_normalize_slot__ = __webpack_require__(18);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\nvar props = {\n id: {\n type: String,\n default: null\n },\n header: {\n type: String,\n default: null\n },\n headerTag: {\n type: String,\n default: 'header'\n },\n headerVariant: {\n type: String,\n default: null\n },\n headerClasses: {\n type: [String, Array, Object],\n default: null\n },\n ariaDescribedby: {\n type: String,\n default: null\n }\n}; // @vue/component\n\nvar BDropdownGroup =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BDropdownGroup',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var $attrs = data.attrs || {};\n data.attrs = {};\n var header;\n var headerId = null;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_2__utils_normalize_slot__[\"a\" /* hasNormalizedSlot */])('header', $scopedSlots, $slots) || props.header) {\n headerId = props.id ? \"_bv_\".concat(props.id, \"_group_dd_header\") : null;\n header = h(props.headerTag, {\n staticClass: 'dropdown-header',\n class: [props.headerClasses, _defineProperty({}, \"text-\".concat(props.variant), props.variant)],\n attrs: {\n id: headerId,\n role: 'heading'\n }\n }, Object(__WEBPACK_IMPORTED_MODULE_2__utils_normalize_slot__[\"b\" /* normalizeSlot */])('header', {}, $scopedSlots, $slots) || props.header);\n }\n\n var adb = [headerId, props.ariaDescribedBy].filter(Boolean).join(' ').trim();\n return h('li', Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n attrs: {\n role: 'presentation'\n }\n }), [header || h(), h('ul', {\n staticClass: 'list-unstyled',\n attrs: _objectSpread({}, $attrs, {\n id: props.id || null,\n role: 'group',\n 'aria-describedby': adb || null\n })\n }, Object(__WEBPACK_IMPORTED_MODULE_2__utils_normalize_slot__[\"b\" /* normalizeSlot */])('default', {}, $scopedSlots, $slots))]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1ncm91cC5qcz9mMWI0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ29CO0FBQ3dCO0FBQ3ZFO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUs7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLHdGQUFpQjtBQUN6QjtBQUNBO0FBQ0E7QUFDQSx1REFBdUQ7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUUsb0ZBQWEsYUFBYTtBQUNuQzs7QUFFQTtBQUNBLG1CQUFtQixvRkFBUztBQUM1QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUssRUFBRSxvRkFBYSxjQUFjO0FBQ2xDO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMzQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCB7IGhhc05vcm1hbGl6ZWRTbG90LCBub3JtYWxpemVTbG90IH0gZnJvbSAnLi4vLi4vdXRpbHMvbm9ybWFsaXplLXNsb3QnO1xuZXhwb3J0IHZhciBwcm9wcyA9IHtcbiAgaWQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBoZWFkZXI6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBoZWFkZXJUYWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ2hlYWRlcidcbiAgfSxcbiAgaGVhZGVyVmFyaWFudDoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH0sXG4gIGhlYWRlckNsYXNzZXM6IHtcbiAgICB0eXBlOiBbU3RyaW5nLCBBcnJheSwgT2JqZWN0XSxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH0sXG4gIGFyaWFEZXNjcmliZWRieToge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkRyb3Bkb3duR3JvdXAgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCRHJvcGRvd25Hcm91cCcsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiBwcm9wcyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgIHNsb3RzID0gX3JlZi5zbG90cyxcbiAgICAgICAgc2NvcGVkU2xvdHMgPSBfcmVmLnNjb3BlZFNsb3RzO1xuICAgIHZhciAkc2xvdHMgPSBzbG90cygpO1xuICAgIHZhciAkc2NvcGVkU2xvdHMgPSBzY29wZWRTbG90cyB8fCB7fTtcbiAgICB2YXIgJGF0dHJzID0gZGF0YS5hdHRycyB8fCB7fTtcbiAgICBkYXRhLmF0dHJzID0ge307XG4gICAgdmFyIGhlYWRlcjtcbiAgICB2YXIgaGVhZGVySWQgPSBudWxsO1xuXG4gICAgaWYgKGhhc05vcm1hbGl6ZWRTbG90KCdoZWFkZXInLCAkc2NvcGVkU2xvdHMsICRzbG90cykgfHwgcHJvcHMuaGVhZGVyKSB7XG4gICAgICBoZWFkZXJJZCA9IHByb3BzLmlkID8gXCJfYnZfXCIuY29uY2F0KHByb3BzLmlkLCBcIl9ncm91cF9kZF9oZWFkZXJcIikgOiBudWxsO1xuICAgICAgaGVhZGVyID0gaChwcm9wcy5oZWFkZXJUYWcsIHtcbiAgICAgICAgc3RhdGljQ2xhc3M6ICdkcm9wZG93bi1oZWFkZXInLFxuICAgICAgICBjbGFzczogW3Byb3BzLmhlYWRlckNsYXNzZXMsIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJ0ZXh0LVwiLmNvbmNhdChwcm9wcy52YXJpYW50KSwgcHJvcHMudmFyaWFudCldLFxuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIGlkOiBoZWFkZXJJZCxcbiAgICAgICAgICByb2xlOiAnaGVhZGluZydcbiAgICAgICAgfVxuICAgICAgfSwgbm9ybWFsaXplU2xvdCgnaGVhZGVyJywge30sICRzY29wZWRTbG90cywgJHNsb3RzKSB8fCBwcm9wcy5oZWFkZXIpO1xuICAgIH1cblxuICAgIHZhciBhZGIgPSBbaGVhZGVySWQsIHByb3BzLmFyaWFEZXNjcmliZWRCeV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKS50cmltKCk7XG4gICAgcmV0dXJuIGgoJ2xpJywgbWVyZ2VEYXRhKGRhdGEsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6ICdwcmVzZW50YXRpb24nXG4gICAgICB9XG4gICAgfSksIFtoZWFkZXIgfHwgaCgpLCBoKCd1bCcsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnbGlzdC11bnN0eWxlZCcsXG4gICAgICBhdHRyczogX29iamVjdFNwcmVhZCh7fSwgJGF0dHJzLCB7XG4gICAgICAgIGlkOiBwcm9wcy5pZCB8fCBudWxsLFxuICAgICAgICByb2xlOiAnZ3JvdXAnLFxuICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc6IGFkYiB8fCBudWxsXG4gICAgICB9KVxuICAgIH0sIG5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnLCB7fSwgJHNjb3BlZFNsb3RzLCAkc2xvdHMpKV0pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLWdyb3VwLmpzXG4vLyBtb2R1bGUgaWQgPSAxMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///134\n"); /***/ }), /* 135 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return FormPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__form__ = __webpack_require__(42);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__form_datalist__ = __webpack_require__(136);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__form_text__ = __webpack_require__(66);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__form_invalid_feedback__ = __webpack_require__(67);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__form_valid_feedback__ = __webpack_require__(68);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__layout_form_row__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BForm */\n/* unused harmony reexport BFormDatalist */\n/* unused harmony reexport BFormText */\n/* unused harmony reexport BFormInvalidFeedback */\n/* unused harmony reexport BFormValidFeedback */\n\n\n\n\n\n\n\nvar FormPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_6__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BForm: __WEBPACK_IMPORTED_MODULE_0__form__[\"a\" /* BForm */],\n BFormDatalist: __WEBPACK_IMPORTED_MODULE_1__form_datalist__[\"a\" /* BFormDatalist */],\n BDatalist: __WEBPACK_IMPORTED_MODULE_1__form_datalist__[\"a\" /* BFormDatalist */],\n BFormText: __WEBPACK_IMPORTED_MODULE_2__form_text__[\"a\" /* BFormText */],\n BFormInvalidFeedback: __WEBPACK_IMPORTED_MODULE_3__form_invalid_feedback__[\"a\" /* BFormInvalidFeedback */],\n BFormFeedback: __WEBPACK_IMPORTED_MODULE_3__form_invalid_feedback__[\"a\" /* BFormInvalidFeedback */],\n BFormValidFeedback: __WEBPACK_IMPORTED_MODULE_4__form_valid_feedback__[\"a\" /* BFormValidFeedback */],\n // Added here for convenience\n BFormRow: __WEBPACK_IMPORTED_MODULE_5__layout_form_row__[\"a\" /* BFormRow */]\n }\n}); // BFormRow is not exported here as a named export, as it is exported by Layout\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtL2luZGV4LmpzP2M0OTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBK0I7QUFDaUI7QUFDUjtBQUN1QjtBQUNKO0FBQ2I7QUFDTTtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLFdBQVcsb0RBQUs7QUFDaEIsbUJBQW1CLHFFQUFhO0FBQ2hDLGVBQWUscUVBQWE7QUFDNUIsZUFBZSw2REFBUztBQUN4QiwwQkFBMEIsb0ZBQW9CO0FBQzlDLG1CQUFtQixvRkFBb0I7QUFDdkMsd0JBQXdCLGdGQUFrQjtBQUMxQztBQUNBLGNBQWMsa0VBQVE7QUFDdEI7QUFDQSxDQUFDLEVBQUUiLCJmaWxlIjoiMTM1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkZvcm0gfSBmcm9tICcuL2Zvcm0nO1xuaW1wb3J0IHsgQkZvcm1EYXRhbGlzdCB9IGZyb20gJy4vZm9ybS1kYXRhbGlzdCc7XG5pbXBvcnQgeyBCRm9ybVRleHQgfSBmcm9tICcuL2Zvcm0tdGV4dCc7XG5pbXBvcnQgeyBCRm9ybUludmFsaWRGZWVkYmFjayB9IGZyb20gJy4vZm9ybS1pbnZhbGlkLWZlZWRiYWNrJztcbmltcG9ydCB7IEJGb3JtVmFsaWRGZWVkYmFjayB9IGZyb20gJy4vZm9ybS12YWxpZC1mZWVkYmFjayc7XG5pbXBvcnQgeyBCRm9ybVJvdyB9IGZyb20gJy4uL2xheW91dC9mb3JtLXJvdyc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgRm9ybVBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJGb3JtOiBCRm9ybSxcbiAgICBCRm9ybURhdGFsaXN0OiBCRm9ybURhdGFsaXN0LFxuICAgIEJEYXRhbGlzdDogQkZvcm1EYXRhbGlzdCxcbiAgICBCRm9ybVRleHQ6IEJGb3JtVGV4dCxcbiAgICBCRm9ybUludmFsaWRGZWVkYmFjazogQkZvcm1JbnZhbGlkRmVlZGJhY2ssXG4gICAgQkZvcm1GZWVkYmFjazogQkZvcm1JbnZhbGlkRmVlZGJhY2ssXG4gICAgQkZvcm1WYWxpZEZlZWRiYWNrOiBCRm9ybVZhbGlkRmVlZGJhY2ssXG4gICAgLy8gQWRkZWQgaGVyZSBmb3IgY29udmVuaWVuY2VcbiAgICBCRm9ybVJvdzogQkZvcm1Sb3dcbiAgfVxufSk7IC8vIEJGb3JtUm93IGlzIG5vdCBleHBvcnRlZCBoZXJlIGFzIGEgbmFtZWQgZXhwb3J0LCBhcyBpdCBpcyBleHBvcnRlZCBieSBMYXlvdXRcblxuZXhwb3J0IHsgRm9ybVBsdWdpbiwgQkZvcm0sIEJGb3JtRGF0YWxpc3QsIEJGb3JtVGV4dCwgQkZvcm1JbnZhbGlkRmVlZGJhY2ssIEJGb3JtVmFsaWRGZWVkYmFjayB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvZm9ybS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTM1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///135\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return EmbedPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__embed__ = __webpack_require__(136);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BEmbed */\n\n\nvar EmbedPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BEmbed: __WEBPACK_IMPORTED_MODULE_0__embed__[\"a\" /* BEmbed */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9lbWJlZC9pbmRleC5qcz81ZTQxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ21CO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsWUFBWSxzREFBTTtBQUNsQjtBQUNBLENBQUMiLCJmaWxlIjoiMTM1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkVtYmVkIH0gZnJvbSAnLi9lbWJlZCc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgRW1iZWRQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCRW1iZWQ6IEJFbWJlZFxuICB9XG59KTtcbmV4cG9ydCB7IEVtYmVkUGx1Z2luLCBCRW1iZWQgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2VtYmVkL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMzVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///135\n"); /***/ }), /* 136 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BFormDatalist; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_form_options__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_html__ = __webpack_require__(11);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n // @vue/component\n\nvar BFormDatalist =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BFormDatalist',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_form_options__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__[\"a\" /* default */]],\n props: {\n id: {\n type: String,\n default: null,\n required: true\n }\n },\n render: function render(h) {\n var options = this.formOptions.map(function (option, index) {\n return h('option', {\n key: \"option_\".concat(index, \"_opt\"),\n attrs: {\n disabled: option.disabled\n },\n domProps: _objectSpread({}, Object(__WEBPACK_IMPORTED_MODULE_3__utils_html__[\"a\" /* htmlOrText */])(option.html, option.text), {\n value: option.value\n })\n });\n });\n return h('datalist', {\n attrs: {\n id: this.id\n }\n }, [options, this.normalizeSlot('default')]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtL2Zvcm0tZGF0YWxpc3QuanM/ZDM2YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUN1QjtBQUNJO0FBQ2Y7O0FBRXZDO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0EsV0FBVyxxRUFBZ0IsRUFBRSx1RUFBa0I7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxrQ0FBa0MsRUFBRSx1RUFBVTtBQUM5QztBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMzYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgZm9ybU9wdGlvbnNNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvZm9ybS1vcHRpb25zJztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JztcbmltcG9ydCB7IGh0bWxPclRleHQgfSBmcm9tICcuLi8uLi91dGlscy9odG1sJzsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCRm9ybURhdGFsaXN0ID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQkZvcm1EYXRhbGlzdCcsXG4gIG1peGluczogW2Zvcm1PcHRpb25zTWl4aW4sIG5vcm1hbGl6ZVNsb3RNaXhpbl0sXG4gIHByb3BzOiB7XG4gICAgaWQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBvcHRpb25zID0gdGhpcy5mb3JtT3B0aW9ucy5tYXAoZnVuY3Rpb24gKG9wdGlvbiwgaW5kZXgpIHtcbiAgICAgIHJldHVybiBoKCdvcHRpb24nLCB7XG4gICAgICAgIGtleTogXCJvcHRpb25fXCIuY29uY2F0KGluZGV4LCBcIl9vcHRcIiksXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgZGlzYWJsZWQ6IG9wdGlvbi5kaXNhYmxlZFxuICAgICAgICB9LFxuICAgICAgICBkb21Qcm9wczogX29iamVjdFNwcmVhZCh7fSwgaHRtbE9yVGV4dChvcHRpb24uaHRtbCwgb3B0aW9uLnRleHQpLCB7XG4gICAgICAgICAgdmFsdWU6IG9wdGlvbi52YWx1ZVxuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGgoJ2RhdGFsaXN0Jywge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgaWQ6IHRoaXMuaWRcbiAgICAgIH1cbiAgICB9LCBbb3B0aW9ucywgdGhpcy5ub3JtYWxpemVTbG90KCdkZWZhdWx0JyldKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtL2Zvcm0tZGF0YWxpc3QuanNcbi8vIG1vZHVsZSBpZCA9IDEzNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///136\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BEmbed; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_array__ = __webpack_require__(7);\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\nvar props = {\n type: {\n type: String,\n default: 'iframe',\n validator: function validator(str) {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"a\" /* arrayIncludes */])(['iframe', 'embed', 'video', 'object', 'img', 'b-img', 'b-img-lazy'], str);\n }\n },\n tag: {\n type: String,\n default: 'div'\n },\n aspect: {\n type: String,\n default: '16by9'\n }\n}; // @vue/component\n\nvar BEmbed =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BEmbed',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, {\n ref: data.ref,\n staticClass: 'embed-responsive',\n class: _defineProperty({}, \"embed-responsive-\".concat(props.aspect), Boolean(props.aspect))\n }, [h(props.type, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n ref: '',\n staticClass: 'embed-responsive-item'\n }), children)]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9lbWJlZC9lbWJlZC5qcz8yZGQwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwyQ0FBMkMsa0JBQWtCLGtDQUFrQyxxRUFBcUUsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEVBQUUsWUFBWTs7QUFFN0s7QUFDb0I7QUFDSjtBQUMzQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSwyRUFBYTtBQUMxQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVLO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLEtBQUssaUJBQWlCLG9GQUFTO0FBQy9CO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjEzNi5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IG1lcmdlRGF0YSB9IGZyb20gJ3Z1ZS1mdW5jdGlvbmFsLWRhdGEtbWVyZ2UnO1xuaW1wb3J0IHsgYXJyYXlJbmNsdWRlcyB9IGZyb20gJy4uLy4uL3V0aWxzL2FycmF5JztcbmV4cG9ydCB2YXIgcHJvcHMgPSB7XG4gIHR5cGU6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ2lmcmFtZScsXG4gICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Ioc3RyKSB7XG4gICAgICByZXR1cm4gYXJyYXlJbmNsdWRlcyhbJ2lmcmFtZScsICdlbWJlZCcsICd2aWRlbycsICdvYmplY3QnLCAnaW1nJywgJ2ItaW1nJywgJ2ItaW1nLWxhenknXSwgc3RyKTtcbiAgICB9XG4gIH0sXG4gIHRhZzoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAnZGl2J1xuICB9LFxuICBhc3BlY3Q6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJzE2Ynk5J1xuICB9XG59OyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJFbWJlZCA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JFbWJlZCcsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiBwcm9wcyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgICByZXR1cm4gaChwcm9wcy50YWcsIHtcbiAgICAgIHJlZjogZGF0YS5yZWYsXG4gICAgICBzdGF0aWNDbGFzczogJ2VtYmVkLXJlc3BvbnNpdmUnLFxuICAgICAgY2xhc3M6IF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJlbWJlZC1yZXNwb25zaXZlLVwiLmNvbmNhdChwcm9wcy5hc3BlY3QpLCBCb29sZWFuKHByb3BzLmFzcGVjdCkpXG4gICAgfSwgW2gocHJvcHMudHlwZSwgbWVyZ2VEYXRhKGRhdGEsIHtcbiAgICAgIHJlZjogJycsXG4gICAgICBzdGF0aWNDbGFzczogJ2VtYmVkLXJlc3BvbnNpdmUtaXRlbSdcbiAgICB9KSwgY2hpbGRyZW4pXSk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvZW1iZWQvZW1iZWQuanNcbi8vIG1vZHVsZSBpZCA9IDEzNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///136\n"); /***/ }), /* 137 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return FormGroupPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__form_group__ = __webpack_require__(138);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BFormGroup */\n\n\nvar FormGroupPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BFormGroup: __WEBPACK_IMPORTED_MODULE_0__form_group__[\"a\" /* BFormGroup */],\n BFormFieldset: __WEBPACK_IMPORTED_MODULE_0__form_group__[\"a\" /* BFormGroup */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWdyb3VwL2luZGV4LmpzPzJhODMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEM7QUFDVTtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGdCQUFnQiwrREFBVTtBQUMxQixtQkFBbUIsK0RBQVU7QUFDN0I7QUFDQSxDQUFDIiwiZmlsZSI6IjEzNy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJGb3JtR3JvdXAgfSBmcm9tICcuL2Zvcm0tZ3JvdXAnO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIEZvcm1Hcm91cFBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJGb3JtR3JvdXA6IEJGb3JtR3JvdXAsXG4gICAgQkZvcm1GaWVsZHNldDogQkZvcm1Hcm91cFxuICB9XG59KTtcbmV4cG9ydCB7IEZvcm1Hcm91cFBsdWdpbiwgQkZvcm1Hcm91cCB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvZm9ybS1ncm91cC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///137\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return FormPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__form__ = __webpack_require__(42);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__form_datalist__ = __webpack_require__(138);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__form_text__ = __webpack_require__(66);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__form_invalid_feedback__ = __webpack_require__(67);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__form_valid_feedback__ = __webpack_require__(68);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__layout_form_row__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BForm */\n/* unused harmony reexport BFormDatalist */\n/* unused harmony reexport BFormText */\n/* unused harmony reexport BFormInvalidFeedback */\n/* unused harmony reexport BFormValidFeedback */\n\n\n\n\n\n\n\nvar FormPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_6__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BForm: __WEBPACK_IMPORTED_MODULE_0__form__[\"a\" /* BForm */],\n BFormDatalist: __WEBPACK_IMPORTED_MODULE_1__form_datalist__[\"a\" /* BFormDatalist */],\n BDatalist: __WEBPACK_IMPORTED_MODULE_1__form_datalist__[\"a\" /* BFormDatalist */],\n BFormText: __WEBPACK_IMPORTED_MODULE_2__form_text__[\"a\" /* BFormText */],\n BFormInvalidFeedback: __WEBPACK_IMPORTED_MODULE_3__form_invalid_feedback__[\"a\" /* BFormInvalidFeedback */],\n BFormFeedback: __WEBPACK_IMPORTED_MODULE_3__form_invalid_feedback__[\"a\" /* BFormInvalidFeedback */],\n BFormValidFeedback: __WEBPACK_IMPORTED_MODULE_4__form_valid_feedback__[\"a\" /* BFormValidFeedback */],\n // Added here for convenience\n BFormRow: __WEBPACK_IMPORTED_MODULE_5__layout_form_row__[\"a\" /* BFormRow */]\n }\n}); // BFormRow is not exported here as a named export, as it is exported by Layout\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtL2luZGV4LmpzP2M0OTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBK0I7QUFDaUI7QUFDUjtBQUN1QjtBQUNKO0FBQ2I7QUFDTTtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLFdBQVcsb0RBQUs7QUFDaEIsbUJBQW1CLHFFQUFhO0FBQ2hDLGVBQWUscUVBQWE7QUFDNUIsZUFBZSw2REFBUztBQUN4QiwwQkFBMEIsb0ZBQW9CO0FBQzlDLG1CQUFtQixvRkFBb0I7QUFDdkMsd0JBQXdCLGdGQUFrQjtBQUMxQztBQUNBLGNBQWMsa0VBQVE7QUFDdEI7QUFDQSxDQUFDLEVBQUUiLCJmaWxlIjoiMTM3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkZvcm0gfSBmcm9tICcuL2Zvcm0nO1xuaW1wb3J0IHsgQkZvcm1EYXRhbGlzdCB9IGZyb20gJy4vZm9ybS1kYXRhbGlzdCc7XG5pbXBvcnQgeyBCRm9ybVRleHQgfSBmcm9tICcuL2Zvcm0tdGV4dCc7XG5pbXBvcnQgeyBCRm9ybUludmFsaWRGZWVkYmFjayB9IGZyb20gJy4vZm9ybS1pbnZhbGlkLWZlZWRiYWNrJztcbmltcG9ydCB7IEJGb3JtVmFsaWRGZWVkYmFjayB9IGZyb20gJy4vZm9ybS12YWxpZC1mZWVkYmFjayc7XG5pbXBvcnQgeyBCRm9ybVJvdyB9IGZyb20gJy4uL2xheW91dC9mb3JtLXJvdyc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgRm9ybVBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJGb3JtOiBCRm9ybSxcbiAgICBCRm9ybURhdGFsaXN0OiBCRm9ybURhdGFsaXN0LFxuICAgIEJEYXRhbGlzdDogQkZvcm1EYXRhbGlzdCxcbiAgICBCRm9ybVRleHQ6IEJGb3JtVGV4dCxcbiAgICBCRm9ybUludmFsaWRGZWVkYmFjazogQkZvcm1JbnZhbGlkRmVlZGJhY2ssXG4gICAgQkZvcm1GZWVkYmFjazogQkZvcm1JbnZhbGlkRmVlZGJhY2ssXG4gICAgQkZvcm1WYWxpZEZlZWRiYWNrOiBCRm9ybVZhbGlkRmVlZGJhY2ssXG4gICAgLy8gQWRkZWQgaGVyZSBmb3IgY29udmVuaWVuY2VcbiAgICBCRm9ybVJvdzogQkZvcm1Sb3dcbiAgfVxufSk7IC8vIEJGb3JtUm93IGlzIG5vdCBleHBvcnRlZCBoZXJlIGFzIGEgbmFtZWQgZXhwb3J0LCBhcyBpdCBpcyBleHBvcnRlZCBieSBMYXlvdXRcblxuZXhwb3J0IHsgRm9ybVBsdWdpbiwgQkZvcm0sIEJGb3JtRGF0YWxpc3QsIEJGb3JtVGV4dCwgQkZvcm1JbnZhbGlkRmVlZGJhY2ssIEJGb3JtVmFsaWRGZWVkYmFjayB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvZm9ybS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///137\n"); /***/ }), /* 138 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BFormGroup; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_memoize__ = __webpack_require__(53);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_upper_first__ = __webpack_require__(55);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_env__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__mixins_form_state__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__layout_col__ = __webpack_require__(69);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__layout_form_row__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__form_form_text__ = __webpack_require__(66);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__form_form_invalid_feedback__ = __webpack_require__(67);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__form_form_valid_feedback__ = __webpack_require__(68);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n// Utils\n\n\n\n\n\n\n\n // Mixins\n\n\n\n // Sub components\n\n\n\n\n\n // Component name\n\nvar NAME = 'BFormGroup'; // Selector for finding first input in the form-group\n\nvar SELECTOR = 'input:not([disabled]),textarea:not([disabled]),select:not([disabled])'; // Render helper functions (here rather than polluting the instance with more methods)\n\nvar renderInvalidFeedback = function renderInvalidFeedback(h, ctx) {\n var content = ctx.normalizeSlot('invalid-feedback') || ctx.invalidFeedback;\n var invalidFeedback = h();\n\n if (content) {\n invalidFeedback = h(__WEBPACK_IMPORTED_MODULE_14__form_form_invalid_feedback__[\"a\" /* BFormInvalidFeedback */], {\n props: {\n id: ctx.invalidFeedbackId,\n // If state is explicitly false, always show the feedback\n state: ctx.computedState,\n tooltip: ctx.tooltip,\n ariaLive: ctx.feedbackAriaLive,\n role: ctx.feedbackAriaLive ? 'alert' : null\n },\n attrs: {\n tabindex: content ? '-1' : null\n }\n }, [content]);\n }\n\n return invalidFeedback;\n};\n\nvar renderValidFeedback = function renderValidFeedback(h, ctx) {\n var content = ctx.normalizeSlot('valid-feedback') || ctx.validFeedback;\n var validFeedback = h();\n\n if (content) {\n validFeedback = h(__WEBPACK_IMPORTED_MODULE_15__form_form_valid_feedback__[\"a\" /* BFormValidFeedback */], {\n props: {\n id: ctx.validFeedbackId,\n // If state is explicitly true, always show the feedback\n state: ctx.computedState,\n tooltip: ctx.tooltip,\n ariaLive: ctx.feedbackAriaLive,\n role: ctx.feedbackAriaLive ? 'alert' : null\n },\n attrs: {\n tabindex: content ? '-1' : null\n }\n }, [content]);\n }\n\n return validFeedback;\n};\n\nvar renderHelpText = function renderHelpText(h, ctx) {\n // Form help text (description)\n var content = ctx.normalizeSlot('description') || ctx.description;\n var description = h();\n\n if (content) {\n description = h(__WEBPACK_IMPORTED_MODULE_13__form_form_text__[\"a\" /* BFormText */], {\n attrs: {\n id: ctx.descriptionId,\n tabindex: content ? '-1' : null\n }\n }, [content]);\n }\n\n return description;\n};\n\nvar renderLabel = function renderLabel(h, ctx) {\n // Render label/legend inside b-col if necessary\n var content = ctx.normalizeSlot('label') || ctx.label;\n var labelFor = ctx.labelFor;\n var isLegend = !labelFor;\n var isHorizontal = ctx.isHorizontal;\n var labelTag = isLegend ? 'legend' : 'label';\n\n if (!content && !isHorizontal) {\n return h();\n } else if (ctx.labelSrOnly) {\n var label = h();\n\n if (content) {\n label = h(labelTag, {\n class: 'sr-only',\n attrs: {\n id: ctx.labelId,\n for: labelFor || null\n }\n }, [content]);\n }\n\n return h(isHorizontal ? __WEBPACK_IMPORTED_MODULE_11__layout_col__[\"a\" /* BCol */] : 'div', {\n props: isHorizontal ? ctx.labelColProps : {}\n }, [label]);\n } else {\n return h(isHorizontal ? __WEBPACK_IMPORTED_MODULE_11__layout_col__[\"a\" /* BCol */] : labelTag, {\n on: isLegend ? {\n click: ctx.legendClick\n } : {},\n props: isHorizontal ? _objectSpread({\n tag: labelTag\n }, ctx.labelColProps) : {},\n attrs: {\n id: ctx.labelId,\n for: labelFor || null,\n // We add a tab index to legend so that screen readers\n // will properly read the aria-labelledby in IE.\n tabindex: isLegend ? '-1' : null\n },\n class: [// When horizontal or if a legend is rendered, add col-form-label\n // for correct sizing as Bootstrap has inconsistent font styling\n // for legend in non-horizontal form-groups.\n // See: https://github.com/twbs/bootstrap/issues/27805\n isHorizontal || isLegend ? 'col-form-label' : '', // Emulate label padding top of 0 on legend when not horizontal\n !isHorizontal && isLegend ? 'pt-0' : '', // If not horizontal and not a legend, we add d-block to label\n // so that label-align works\n !isHorizontal && !isLegend ? 'd-block' : '', ctx.labelSize ? \"col-form-label-\".concat(ctx.labelSize) : '', ctx.labelAlignClasses, ctx.labelClass]\n }, [content]);\n }\n}; // -- BFormGroup Prop factory -- used for lazy generation of props\n// Memoize this function to return cached values to\n// save time in computed functions\n\n\nvar makePropName = Object(__WEBPACK_IMPORTED_MODULE_0__utils_memoize__[\"a\" /* default */])(function () {\n var breakpoint = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var prefix = arguments.length > 1 ? arguments[1] : undefined;\n return \"\".concat(prefix).concat(Object(__WEBPACK_IMPORTED_MODULE_1__utils_upper_first__[\"a\" /* default */])(breakpoint));\n}); // BFormGroup prop generator for lazy generation of props\n\nvar generateProps = function generateProps() {\n var BREAKPOINTS = Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"b\" /* getBreakpointsUpCached */])(); // Generate the labelCol breakpoint props\n\n var bpLabelColProps = BREAKPOINTS.reduce(function (props, breakpoint) {\n // i.e. label-cols, label-cols-sm, label-cols-md, ...\n props[makePropName(breakpoint, 'labelCols')] = {\n type: [Number, String, Boolean],\n default: breakpoint ? false : null\n };\n return props;\n }, Object(__WEBPACK_IMPORTED_MODULE_7__utils_object__[\"b\" /* create */])(null)); // Generate the labelAlign breakpoint props\n\n var bpLabelAlignProps = BREAKPOINTS.reduce(function (props, breakpoint) {\n // label-align, label-align-sm, label-align-md, ...\n props[makePropName(breakpoint, 'labelAlign')] = {\n type: String,\n // left, right, center\n default: null\n };\n return props;\n }, Object(__WEBPACK_IMPORTED_MODULE_7__utils_object__[\"b\" /* create */])(null));\n return _objectSpread({\n label: {\n type: String,\n default: null\n },\n labelFor: {\n type: String,\n default: null\n },\n labelSize: {\n type: String,\n default: null\n },\n labelSrOnly: {\n type: Boolean,\n default: false\n }\n }, bpLabelColProps, {}, bpLabelAlignProps, {\n labelClass: {\n type: [String, Array, Object],\n default: null\n },\n description: {\n type: String,\n default: null\n },\n invalidFeedback: {\n type: String,\n default: null\n },\n validFeedback: {\n type: String,\n default: null\n },\n tooltip: {\n // Enable tooltip style feedback\n type: Boolean,\n default: false\n },\n feedbackAriaLive: {\n type: String,\n default: 'assertive'\n },\n validated: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n }\n });\n}; // We do not use Vue.extend here as that would evaluate the props\n// immediately, which we do not want to happen\n// @vue/component\n\n\nvar BFormGroup = {\n name: NAME,\n mixins: [__WEBPACK_IMPORTED_MODULE_9__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_8__mixins_form_state__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_10__mixins_normalize_slot__[\"a\" /* default */]],\n\n get props() {\n // Allow props to be lazy evaled on first access and\n // then they become a non-getter afterwards.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n delete this.props; // eslint-disable-next-line no-return-assign\n\n return this.props = generateProps();\n },\n\n computed: {\n labelColProps: function labelColProps() {\n var _this = this;\n\n var props = {};\n Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"b\" /* getBreakpointsUpCached */])().forEach(function (breakpoint) {\n // Grab the value if the label column breakpoint prop\n var propVal = _this[makePropName(breakpoint, 'labelCols')]; // Handle case where the prop's value is an empty string,\n // which represents true\n\n\n propVal = propVal === '' ? true : propVal || false;\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_6__utils_inspect__[\"b\" /* isBoolean */])(propVal)) {\n // Convert to column size to number\n propVal = parseInt(propVal, 10) || 0; // Ensure column size is greater than 0\n\n propVal = propVal > 0 ? propVal : false;\n }\n\n if (propVal) {\n // Add the prop to the list of props to give to b-col\n // If breakpoint is '' (labelCols=true), then we use the\n // col prop to make equal width at xs\n var bColPropName = breakpoint || (Object(__WEBPACK_IMPORTED_MODULE_6__utils_inspect__[\"b\" /* isBoolean */])(propVal) ? 'col' : 'cols'); // Add it to the props\n\n props[bColPropName] = propVal;\n }\n });\n return props;\n },\n labelAlignClasses: function labelAlignClasses() {\n var _this2 = this;\n\n var classes = [];\n Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"b\" /* getBreakpointsUpCached */])().forEach(function (breakpoint) {\n // Assemble the label column breakpoint align classes\n var propVal = _this2[makePropName(breakpoint, 'labelAlign')] || null;\n\n if (propVal) {\n var className = breakpoint ? \"text-\".concat(breakpoint, \"-\").concat(propVal) : \"text-\".concat(propVal);\n classes.push(className);\n }\n });\n return classes;\n },\n isHorizontal: function isHorizontal() {\n // Determine if the resultant form-group will be rendered\n // horizontal (meaning it has label-col breakpoints)\n return Object(__WEBPACK_IMPORTED_MODULE_7__utils_object__[\"j\" /* keys */])(this.labelColProps).length > 0;\n },\n labelId: function labelId() {\n return this.hasNormalizedSlot('label') || this.label ? this.safeId('_BV_label_') : null;\n },\n descriptionId: function descriptionId() {\n return this.hasNormalizedSlot('description') || this.description ? this.safeId('_BV_description_') : null;\n },\n hasInvalidFeedback: function hasInvalidFeedback() {\n // Used for computing aria-describedby\n return this.computedState === false && (this.hasNormalizedSlot('invalid-feedback') || this.invalidFeedback);\n },\n invalidFeedbackId: function invalidFeedbackId() {\n return this.hasInvalidFeedback ? this.safeId('_BV_feedback_invalid_') : null;\n },\n hasValidFeedback: function hasValidFeedback() {\n // Used for computing aria-describedby\n return this.computedState === true && (this.hasNormalizedSlot('valid-feedback') || this.validFeedback);\n },\n validFeedbackId: function validFeedbackId() {\n return this.hasValidFeedback ? this.safeId('_BV_feedback_valid_') : null;\n },\n describedByIds: function describedByIds() {\n // Screen readers will read out any content linked to by aria-describedby\n // even if the content is hidden with `display: none;`, hence we only include\n // feedback IDs if the form-group's state is explicitly valid or invalid.\n return [this.descriptionId, this.invalidFeedbackId, this.validFeedbackId].filter(Boolean).join(' ') || null;\n }\n },\n watch: {\n describedByIds: function describedByIds(add, remove) {\n if (add !== remove) {\n this.setInputDescribedBy(add, remove);\n }\n }\n },\n mounted: function mounted() {\n var _this3 = this;\n\n this.$nextTick(function () {\n // Set the aria-describedby IDs on the input specified by label-for\n // We do this in a nextTick to ensure the children have finished rendering\n _this3.setInputDescribedBy(_this3.describedByIds);\n });\n },\n methods: {\n legendClick: function legendClick(evt) {\n if (this.labelFor) {\n // Don't do anything if labelFor is set\n\n /* istanbul ignore next: clicking a label will focus the input, so no need to test */\n return;\n }\n\n var tagName = evt.target ? evt.target.tagName : '';\n\n if (/^(input|select|textarea|label|button|a)$/i.test(tagName)) {\n // If clicked an interactive element inside legend,\n // we just let the default happen\n\n /* istanbul ignore next */\n return;\n }\n\n var inputs = Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"y\" /* selectAll */])(SELECTOR, this.$refs.content).filter(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"p\" /* isVisible */]);\n\n if (inputs && inputs.length === 1 && inputs[0].focus) {\n // if only a single input, focus it, emulating label behaviour\n inputs[0].focus();\n }\n },\n setInputDescribedBy: function setInputDescribedBy(add, remove) {\n // Sets the `aria-describedby` attribute on the input if label-for is set.\n // Optionally accepts a string of IDs to remove as the second parameter.\n // Preserves any aria-describedby value(s) user may have on input.\n if (this.labelFor && __WEBPACK_IMPORTED_MODULE_5__utils_env__[\"j\" /* isBrowser */]) {\n var input = Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"x\" /* select */])(\"#\".concat(this.labelFor), this.$refs.content);\n\n if (input) {\n var adb = 'aria-describedby';\n var ids = (Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"g\" /* getAttr */])(input, adb) || '').split(/\\s+/);\n add = (add || '').split(/\\s+/);\n remove = (remove || '').split(/\\s+/); // Update ID list, preserving any original IDs\n // and ensuring the ID's are unique\n\n ids = ids.filter(function (id) {\n return !Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"a\" /* arrayIncludes */])(remove, id);\n }).concat(add).filter(Boolean);\n ids = Object(__WEBPACK_IMPORTED_MODULE_7__utils_object__[\"j\" /* keys */])(ids.reduce(function (memo, id) {\n return _objectSpread({}, memo, _defineProperty({}, id, true));\n }, {})).join(' ').trim();\n\n if (ids) {\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"z\" /* setAttr */])(input, adb, ids);\n } else {\n // No IDs, so remove the attribute\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"u\" /* removeAttr */])(input, adb);\n }\n }\n }\n }\n },\n render: function render(h) {\n var isFieldset = !this.labelFor;\n var isHorizontal = this.isHorizontal; // Generate the label\n\n var label = renderLabel(h, this); // Generate the content\n\n var content = h(isHorizontal ? __WEBPACK_IMPORTED_MODULE_11__layout_col__[\"a\" /* BCol */] : 'div', {\n ref: 'content',\n attrs: {\n tabindex: isFieldset ? '-1' : null,\n role: isFieldset ? 'group' : null\n }\n }, [this.normalizeSlot('default') || h(), renderInvalidFeedback(h, this), renderValidFeedback(h, this), renderHelpText(h, this)]); // Create the form-group\n\n var data = {\n staticClass: 'form-group',\n class: [this.validated ? 'was-validated' : null, this.stateClass],\n attrs: {\n id: this.safeId(),\n disabled: isFieldset ? this.disabled : null,\n role: isFieldset ? null : 'group',\n 'aria-invalid': this.computedState === false ? 'true' : null,\n // Only apply aria-labelledby if we are a horizontal fieldset\n // as the legend is no longer a direct child of fieldset\n 'aria-labelledby': isFieldset && isHorizontal ? this.labelId : null,\n // Only apply aria-describedby IDs if we are a fieldset\n // as the input will have the IDs when not a fieldset\n 'aria-describedby': isFieldset ? this.describedByIds : null\n }\n }; // Return it wrapped in a form-group\n // Note: Fieldsets do not support adding `row` or `form-row` directly\n // to them due to browser specific render issues, so we move the `form-row`\n // to an inner wrapper div when horizontal and using a fieldset\n\n return h(isFieldset ? 'fieldset' : isHorizontal ? __WEBPACK_IMPORTED_MODULE_12__layout_form_row__[\"a\" /* BFormRow */] : 'div', data, isHorizontal && isFieldset ? [h(__WEBPACK_IMPORTED_MODULE_12__layout_form_row__[\"a\" /* BFormRow */], {}, [label, content])] : [label, content]);\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWdyb3VwL2Zvcm0tZ3JvdXAuanM/MzdlYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUUvTTtBQUMwQztBQUNPO0FBQ0M7QUFDVTtBQUNpQztBQUNqRDtBQUNJO0FBQ0U7O0FBRUc7QUFDZjtBQUN1Qjs7QUFFeEI7QUFDUztBQUNBO0FBQ3VCO0FBQ0o7O0FBRWpFLHdCQUF3Qjs7QUFFeEIsdUZBQXVGOztBQUV2RjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0IsMEZBQW9CO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUFzQixzRkFBa0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0IsbUVBQVM7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBLDRCQUE0QiwwREFBSTtBQUNoQztBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0gsNEJBQTRCLDBEQUFJO0FBQ2hDO0FBQ0E7QUFDQSxPQUFPLEtBQUs7QUFDWjtBQUNBO0FBQ0EsT0FBTyx5QkFBeUI7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7O0FBR0EsbUJBQW1CLHVFQUFPO0FBQzFCO0FBQ0E7QUFDQSxrQ0FBa0MsMkVBQVU7QUFDNUMsQ0FBQyxFQUFFOztBQUVIO0FBQ0Esb0JBQW9CLHFGQUFzQixHQUFHOztBQUU3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRSxxRUFBTSxRQUFROztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFLHFFQUFNO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcscUJBQXFCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILEVBQUU7QUFDRjtBQUNBOzs7QUFHTztBQUNQO0FBQ0EsV0FBVywyREFBTyxFQUFFLG1FQUFjLEVBQUUsd0VBQWtCOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjs7QUFFdEI7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU0scUZBQXNCO0FBQzVCO0FBQ0EsbUVBQW1FO0FBQ25FOzs7QUFHQTs7QUFFQSxhQUFhLHlFQUFTO0FBQ3RCO0FBQ0EsK0NBQStDOztBQUUvQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLHlFQUFTLDRCQUE0Qjs7QUFFakY7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsTUFBTSxxRkFBc0I7QUFDNUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1FQUFJO0FBQ2pCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLDJEQUEyRDtBQUMzRDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixxRUFBUyxzQ0FBc0MsNkRBQVM7O0FBRTNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDZEQUFTO0FBQ3BDLG9CQUFvQixrRUFBTTs7QUFFMUI7QUFDQTtBQUNBLHFCQUFxQixtRUFBTztBQUM1QjtBQUNBLCtDQUErQztBQUMvQzs7QUFFQTtBQUNBLG9CQUFvQiwyRUFBYTtBQUNqQyxXQUFXO0FBQ1gsZ0JBQWdCLG1FQUFJO0FBQ3BCLG1DQUFtQywwQkFBMEI7QUFDN0QsV0FBVyxJQUFJOztBQUVmO0FBQ0EsWUFBWSxtRUFBTztBQUNuQixXQUFXO0FBQ1g7QUFDQSxZQUFZLHNFQUFVO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx5Q0FBeUM7O0FBRXpDLHFDQUFxQzs7QUFFckMsbUNBQW1DLDBEQUFJO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLGlJQUFpSTs7QUFFdEk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQSxzREFBc0QsbUVBQVEsZ0RBQWdELG1FQUFRLElBQUk7QUFDMUg7QUFDQSIsImZpbGUiOiIxMzguanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG4vLyBVdGlsc1xuaW1wb3J0IG1lbW9pemUgZnJvbSAnLi4vLi4vdXRpbHMvbWVtb2l6ZSc7XG5pbXBvcnQgdXBwZXJGaXJzdCBmcm9tICcuLi8uLi91dGlscy91cHBlci1maXJzdCc7XG5pbXBvcnQgeyBhcnJheUluY2x1ZGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXJyYXknO1xuaW1wb3J0IHsgZ2V0QnJlYWtwb2ludHNVcENhY2hlZCB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBzZWxlY3QsIHNlbGVjdEFsbCwgaXNWaXNpYmxlLCBzZXRBdHRyLCByZW1vdmVBdHRyLCBnZXRBdHRyIH0gZnJvbSAnLi4vLi4vdXRpbHMvZG9tJztcbmltcG9ydCB7IGlzQnJvd3NlciB9IGZyb20gJy4uLy4uL3V0aWxzL2Vudic7XG5pbXBvcnQgeyBpc0Jvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlscy9pbnNwZWN0JztcbmltcG9ydCB7IGtleXMsIGNyZWF0ZSB9IGZyb20gJy4uLy4uL3V0aWxzL29iamVjdCc7IC8vIE1peGluc1xuXG5pbXBvcnQgZm9ybVN0YXRlTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tc3RhdGUnO1xuaW1wb3J0IGlkTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2lkJztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JzsgLy8gU3ViIGNvbXBvbmVudHNcblxuaW1wb3J0IHsgQkNvbCB9IGZyb20gJy4uL2xheW91dC9jb2wnO1xuaW1wb3J0IHsgQkZvcm1Sb3cgfSBmcm9tICcuLi9sYXlvdXQvZm9ybS1yb3cnO1xuaW1wb3J0IHsgQkZvcm1UZXh0IH0gZnJvbSAnLi4vZm9ybS9mb3JtLXRleHQnO1xuaW1wb3J0IHsgQkZvcm1JbnZhbGlkRmVlZGJhY2sgfSBmcm9tICcuLi9mb3JtL2Zvcm0taW52YWxpZC1mZWVkYmFjayc7XG5pbXBvcnQgeyBCRm9ybVZhbGlkRmVlZGJhY2sgfSBmcm9tICcuLi9mb3JtL2Zvcm0tdmFsaWQtZmVlZGJhY2snOyAvLyBDb21wb25lbnQgbmFtZVxuXG52YXIgTkFNRSA9ICdCRm9ybUdyb3VwJzsgLy8gU2VsZWN0b3IgZm9yIGZpbmRpbmcgZmlyc3QgaW5wdXQgaW4gdGhlIGZvcm0tZ3JvdXBcblxudmFyIFNFTEVDVE9SID0gJ2lucHV0Om5vdChbZGlzYWJsZWRdKSx0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSksc2VsZWN0Om5vdChbZGlzYWJsZWRdKSc7IC8vIFJlbmRlciBoZWxwZXIgZnVuY3Rpb25zIChoZXJlIHJhdGhlciB0aGFuIHBvbGx1dGluZyB0aGUgaW5zdGFuY2Ugd2l0aCBtb3JlIG1ldGhvZHMpXG5cbnZhciByZW5kZXJJbnZhbGlkRmVlZGJhY2sgPSBmdW5jdGlvbiByZW5kZXJJbnZhbGlkRmVlZGJhY2soaCwgY3R4KSB7XG4gIHZhciBjb250ZW50ID0gY3R4Lm5vcm1hbGl6ZVNsb3QoJ2ludmFsaWQtZmVlZGJhY2snKSB8fCBjdHguaW52YWxpZEZlZWRiYWNrO1xuICB2YXIgaW52YWxpZEZlZWRiYWNrID0gaCgpO1xuXG4gIGlmIChjb250ZW50KSB7XG4gICAgaW52YWxpZEZlZWRiYWNrID0gaChCRm9ybUludmFsaWRGZWVkYmFjaywge1xuICAgICAgcHJvcHM6IHtcbiAgICAgICAgaWQ6IGN0eC5pbnZhbGlkRmVlZGJhY2tJZCxcbiAgICAgICAgLy8gSWYgc3RhdGUgaXMgZXhwbGljaXRseSBmYWxzZSwgYWx3YXlzIHNob3cgdGhlIGZlZWRiYWNrXG4gICAgICAgIHN0YXRlOiBjdHguY29tcHV0ZWRTdGF0ZSxcbiAgICAgICAgdG9vbHRpcDogY3R4LnRvb2x0aXAsXG4gICAgICAgIGFyaWFMaXZlOiBjdHguZmVlZGJhY2tBcmlhTGl2ZSxcbiAgICAgICAgcm9sZTogY3R4LmZlZWRiYWNrQXJpYUxpdmUgPyAnYWxlcnQnIDogbnVsbFxuICAgICAgfSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHRhYmluZGV4OiBjb250ZW50ID8gJy0xJyA6IG51bGxcbiAgICAgIH1cbiAgICB9LCBbY29udGVudF0pO1xuICB9XG5cbiAgcmV0dXJuIGludmFsaWRGZWVkYmFjaztcbn07XG5cbnZhciByZW5kZXJWYWxpZEZlZWRiYWNrID0gZnVuY3Rpb24gcmVuZGVyVmFsaWRGZWVkYmFjayhoLCBjdHgpIHtcbiAgdmFyIGNvbnRlbnQgPSBjdHgubm9ybWFsaXplU2xvdCgndmFsaWQtZmVlZGJhY2snKSB8fCBjdHgudmFsaWRGZWVkYmFjaztcbiAgdmFyIHZhbGlkRmVlZGJhY2sgPSBoKCk7XG5cbiAgaWYgKGNvbnRlbnQpIHtcbiAgICB2YWxpZEZlZWRiYWNrID0gaChCRm9ybVZhbGlkRmVlZGJhY2ssIHtcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIGlkOiBjdHgudmFsaWRGZWVkYmFja0lkLFxuICAgICAgICAvLyBJZiBzdGF0ZSBpcyBleHBsaWNpdGx5IHRydWUsIGFsd2F5cyBzaG93IHRoZSBmZWVkYmFja1xuICAgICAgICBzdGF0ZTogY3R4LmNvbXB1dGVkU3RhdGUsXG4gICAgICAgIHRvb2x0aXA6IGN0eC50b29sdGlwLFxuICAgICAgICBhcmlhTGl2ZTogY3R4LmZlZWRiYWNrQXJpYUxpdmUsXG4gICAgICAgIHJvbGU6IGN0eC5mZWVkYmFja0FyaWFMaXZlID8gJ2FsZXJ0JyA6IG51bGxcbiAgICAgIH0sXG4gICAgICBhdHRyczoge1xuICAgICAgICB0YWJpbmRleDogY29udGVudCA/ICctMScgOiBudWxsXG4gICAgICB9XG4gICAgfSwgW2NvbnRlbnRdKTtcbiAgfVxuXG4gIHJldHVybiB2YWxpZEZlZWRiYWNrO1xufTtcblxudmFyIHJlbmRlckhlbHBUZXh0ID0gZnVuY3Rpb24gcmVuZGVySGVscFRleHQoaCwgY3R4KSB7XG4gIC8vIEZvcm0gaGVscCB0ZXh0IChkZXNjcmlwdGlvbilcbiAgdmFyIGNvbnRlbnQgPSBjdHgubm9ybWFsaXplU2xvdCgnZGVzY3JpcHRpb24nKSB8fCBjdHguZGVzY3JpcHRpb247XG4gIHZhciBkZXNjcmlwdGlvbiA9IGgoKTtcblxuICBpZiAoY29udGVudCkge1xuICAgIGRlc2NyaXB0aW9uID0gaChCRm9ybVRleHQsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGlkOiBjdHguZGVzY3JpcHRpb25JZCxcbiAgICAgICAgdGFiaW5kZXg6IGNvbnRlbnQgPyAnLTEnIDogbnVsbFxuICAgICAgfVxuICAgIH0sIFtjb250ZW50XSk7XG4gIH1cblxuICByZXR1cm4gZGVzY3JpcHRpb247XG59O1xuXG52YXIgcmVuZGVyTGFiZWwgPSBmdW5jdGlvbiByZW5kZXJMYWJlbChoLCBjdHgpIHtcbiAgLy8gUmVuZGVyIGxhYmVsL2xlZ2VuZCBpbnNpZGUgYi1jb2wgaWYgbmVjZXNzYXJ5XG4gIHZhciBjb250ZW50ID0gY3R4Lm5vcm1hbGl6ZVNsb3QoJ2xhYmVsJykgfHwgY3R4LmxhYmVsO1xuICB2YXIgbGFiZWxGb3IgPSBjdHgubGFiZWxGb3I7XG4gIHZhciBpc0xlZ2VuZCA9ICFsYWJlbEZvcjtcbiAgdmFyIGlzSG9yaXpvbnRhbCA9IGN0eC5pc0hvcml6b250YWw7XG4gIHZhciBsYWJlbFRhZyA9IGlzTGVnZW5kID8gJ2xlZ2VuZCcgOiAnbGFiZWwnO1xuXG4gIGlmICghY29udGVudCAmJiAhaXNIb3Jpem9udGFsKSB7XG4gICAgcmV0dXJuIGgoKTtcbiAgfSBlbHNlIGlmIChjdHgubGFiZWxTck9ubHkpIHtcbiAgICB2YXIgbGFiZWwgPSBoKCk7XG5cbiAgICBpZiAoY29udGVudCkge1xuICAgICAgbGFiZWwgPSBoKGxhYmVsVGFnLCB7XG4gICAgICAgIGNsYXNzOiAnc3Itb25seScsXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgaWQ6IGN0eC5sYWJlbElkLFxuICAgICAgICAgIGZvcjogbGFiZWxGb3IgfHwgbnVsbFxuICAgICAgICB9XG4gICAgICB9LCBbY29udGVudF0pO1xuICAgIH1cblxuICAgIHJldHVybiBoKGlzSG9yaXpvbnRhbCA/IEJDb2wgOiAnZGl2Jywge1xuICAgICAgcHJvcHM6IGlzSG9yaXpvbnRhbCA/IGN0eC5sYWJlbENvbFByb3BzIDoge31cbiAgICB9LCBbbGFiZWxdKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaChpc0hvcml6b250YWwgPyBCQ29sIDogbGFiZWxUYWcsIHtcbiAgICAgIG9uOiBpc0xlZ2VuZCA/IHtcbiAgICAgICAgY2xpY2s6IGN0eC5sZWdlbmRDbGlja1xuICAgICAgfSA6IHt9LFxuICAgICAgcHJvcHM6IGlzSG9yaXpvbnRhbCA/IF9vYmplY3RTcHJlYWQoe1xuICAgICAgICB0YWc6IGxhYmVsVGFnXG4gICAgICB9LCBjdHgubGFiZWxDb2xQcm9wcykgOiB7fSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGlkOiBjdHgubGFiZWxJZCxcbiAgICAgICAgZm9yOiBsYWJlbEZvciB8fCBudWxsLFxuICAgICAgICAvLyBXZSBhZGQgYSB0YWIgaW5kZXggdG8gbGVnZW5kIHNvIHRoYXQgc2NyZWVuIHJlYWRlcnNcbiAgICAgICAgLy8gd2lsbCBwcm9wZXJseSByZWFkIHRoZSBhcmlhLWxhYmVsbGVkYnkgaW4gSUUuXG4gICAgICAgIHRhYmluZGV4OiBpc0xlZ2VuZCA/ICctMScgOiBudWxsXG4gICAgICB9LFxuICAgICAgY2xhc3M6IFsvLyBXaGVuIGhvcml6b250YWwgb3IgaWYgYSBsZWdlbmQgaXMgcmVuZGVyZWQsIGFkZCBjb2wtZm9ybS1sYWJlbFxuICAgICAgLy8gZm9yIGNvcnJlY3Qgc2l6aW5nIGFzIEJvb3RzdHJhcCBoYXMgaW5jb25zaXN0ZW50IGZvbnQgc3R5bGluZ1xuICAgICAgLy8gZm9yIGxlZ2VuZCBpbiBub24taG9yaXpvbnRhbCBmb3JtLWdyb3Vwcy5cbiAgICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yNzgwNVxuICAgICAgaXNIb3Jpem9udGFsIHx8IGlzTGVnZW5kID8gJ2NvbC1mb3JtLWxhYmVsJyA6ICcnLCAvLyBFbXVsYXRlIGxhYmVsIHBhZGRpbmcgdG9wIG9mIDAgb24gbGVnZW5kIHdoZW4gbm90IGhvcml6b250YWxcbiAgICAgICFpc0hvcml6b250YWwgJiYgaXNMZWdlbmQgPyAncHQtMCcgOiAnJywgLy8gSWYgbm90IGhvcml6b250YWwgYW5kIG5vdCBhIGxlZ2VuZCwgd2UgYWRkIGQtYmxvY2sgdG8gbGFiZWxcbiAgICAgIC8vIHNvIHRoYXQgbGFiZWwtYWxpZ24gd29ya3NcbiAgICAgICFpc0hvcml6b250YWwgJiYgIWlzTGVnZW5kID8gJ2QtYmxvY2snIDogJycsIGN0eC5sYWJlbFNpemUgPyBcImNvbC1mb3JtLWxhYmVsLVwiLmNvbmNhdChjdHgubGFiZWxTaXplKSA6ICcnLCBjdHgubGFiZWxBbGlnbkNsYXNzZXMsIGN0eC5sYWJlbENsYXNzXVxuICAgIH0sIFtjb250ZW50XSk7XG4gIH1cbn07IC8vIC0tIEJGb3JtR3JvdXAgUHJvcCBmYWN0b3J5IC0tIHVzZWQgZm9yIGxhenkgZ2VuZXJhdGlvbiBvZiBwcm9wc1xuLy8gTWVtb2l6ZSB0aGlzIGZ1bmN0aW9uIHRvIHJldHVybiBjYWNoZWQgdmFsdWVzIHRvXG4vLyBzYXZlIHRpbWUgaW4gY29tcHV0ZWQgZnVuY3Rpb25zXG5cblxudmFyIG1ha2VQcm9wTmFtZSA9IG1lbW9pemUoZnVuY3Rpb24gKCkge1xuICB2YXIgYnJlYWtwb2ludCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogJyc7XG4gIHZhciBwcmVmaXggPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIFwiXCIuY29uY2F0KHByZWZpeCkuY29uY2F0KHVwcGVyRmlyc3QoYnJlYWtwb2ludCkpO1xufSk7IC8vIEJGb3JtR3JvdXAgcHJvcCBnZW5lcmF0b3IgZm9yIGxhenkgZ2VuZXJhdGlvbiBvZiBwcm9wc1xuXG52YXIgZ2VuZXJhdGVQcm9wcyA9IGZ1bmN0aW9uIGdlbmVyYXRlUHJvcHMoKSB7XG4gIHZhciBCUkVBS1BPSU5UUyA9IGdldEJyZWFrcG9pbnRzVXBDYWNoZWQoKTsgLy8gR2VuZXJhdGUgdGhlIGxhYmVsQ29sIGJyZWFrcG9pbnQgcHJvcHNcblxuICB2YXIgYnBMYWJlbENvbFByb3BzID0gQlJFQUtQT0lOVFMucmVkdWNlKGZ1bmN0aW9uIChwcm9wcywgYnJlYWtwb2ludCkge1xuICAgIC8vIGkuZS4gbGFiZWwtY29scywgbGFiZWwtY29scy1zbSwgbGFiZWwtY29scy1tZCwgLi4uXG4gICAgcHJvcHNbbWFrZVByb3BOYW1lKGJyZWFrcG9pbnQsICdsYWJlbENvbHMnKV0gPSB7XG4gICAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmcsIEJvb2xlYW5dLFxuICAgICAgZGVmYXVsdDogYnJlYWtwb2ludCA/IGZhbHNlIDogbnVsbFxuICAgIH07XG4gICAgcmV0dXJuIHByb3BzO1xuICB9LCBjcmVhdGUobnVsbCkpOyAvLyBHZW5lcmF0ZSB0aGUgbGFiZWxBbGlnbiBicmVha3BvaW50IHByb3BzXG5cbiAgdmFyIGJwTGFiZWxBbGlnblByb3BzID0gQlJFQUtQT0lOVFMucmVkdWNlKGZ1bmN0aW9uIChwcm9wcywgYnJlYWtwb2ludCkge1xuICAgIC8vIGxhYmVsLWFsaWduLCBsYWJlbC1hbGlnbi1zbSwgbGFiZWwtYWxpZ24tbWQsIC4uLlxuICAgIHByb3BzW21ha2VQcm9wTmFtZShicmVha3BvaW50LCAnbGFiZWxBbGlnbicpXSA9IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIC8vIGxlZnQsIHJpZ2h0LCBjZW50ZXJcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9O1xuICAgIHJldHVybiBwcm9wcztcbiAgfSwgY3JlYXRlKG51bGwpKTtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBsYWJlbEZvcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgbGFiZWxTaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBsYWJlbFNyT25seToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LCBicExhYmVsQ29sUHJvcHMsIHt9LCBicExhYmVsQWxpZ25Qcm9wcywge1xuICAgIGxhYmVsQ2xhc3M6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIEFycmF5LCBPYmplY3RdLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIGludmFsaWRGZWVkYmFjazoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgdmFsaWRGZWVkYmFjazoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgdG9vbHRpcDoge1xuICAgICAgLy8gRW5hYmxlIHRvb2x0aXAgc3R5bGUgZmVlZGJhY2tcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgZmVlZGJhY2tBcmlhTGl2ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2Fzc2VydGl2ZSdcbiAgICB9LFxuICAgIHZhbGlkYXRlZDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBkaXNhYmxlZDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9KTtcbn07IC8vIFdlIGRvIG5vdCB1c2UgVnVlLmV4dGVuZCBoZXJlIGFzIHRoYXQgd291bGQgZXZhbHVhdGUgdGhlIHByb3BzXG4vLyBpbW1lZGlhdGVseSwgd2hpY2ggd2UgZG8gbm90IHdhbnQgdG8gaGFwcGVuXG4vLyBAdnVlL2NvbXBvbmVudFxuXG5cbmV4cG9ydCB2YXIgQkZvcm1Hcm91cCA9IHtcbiAgbmFtZTogTkFNRSxcbiAgbWl4aW5zOiBbaWRNaXhpbiwgZm9ybVN0YXRlTWl4aW4sIG5vcm1hbGl6ZVNsb3RNaXhpbl0sXG5cbiAgZ2V0IHByb3BzKCkge1xuICAgIC8vIEFsbG93IHByb3BzIHRvIGJlIGxhenkgZXZhbGVkIG9uIGZpcnN0IGFjY2VzcyBhbmRcbiAgICAvLyB0aGVuIHRoZXkgYmVjb21lIGEgbm9uLWdldHRlciBhZnRlcndhcmRzLlxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0Z1bmN0aW9ucy9nZXQjU21hcnRfc2VsZi1vdmVyd3JpdGluZ19sYXp5X2dldHRlcnNcbiAgICBkZWxldGUgdGhpcy5wcm9wczsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJldHVybi1hc3NpZ25cblxuICAgIHJldHVybiB0aGlzLnByb3BzID0gZ2VuZXJhdGVQcm9wcygpO1xuICB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgbGFiZWxDb2xQcm9wczogZnVuY3Rpb24gbGFiZWxDb2xQcm9wcygpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBwcm9wcyA9IHt9O1xuICAgICAgZ2V0QnJlYWtwb2ludHNVcENhY2hlZCgpLmZvckVhY2goZnVuY3Rpb24gKGJyZWFrcG9pbnQpIHtcbiAgICAgICAgLy8gR3JhYiB0aGUgdmFsdWUgaWYgdGhlIGxhYmVsIGNvbHVtbiBicmVha3BvaW50IHByb3BcbiAgICAgICAgdmFyIHByb3BWYWwgPSBfdGhpc1ttYWtlUHJvcE5hbWUoYnJlYWtwb2ludCwgJ2xhYmVsQ29scycpXTsgLy8gSGFuZGxlIGNhc2Ugd2hlcmUgdGhlIHByb3AncyB2YWx1ZSBpcyBhbiBlbXB0eSBzdHJpbmcsXG4gICAgICAgIC8vIHdoaWNoIHJlcHJlc2VudHMgdHJ1ZVxuXG5cbiAgICAgICAgcHJvcFZhbCA9IHByb3BWYWwgPT09ICcnID8gdHJ1ZSA6IHByb3BWYWwgfHwgZmFsc2U7XG5cbiAgICAgICAgaWYgKCFpc0Jvb2xlYW4ocHJvcFZhbCkpIHtcbiAgICAgICAgICAvLyBDb252ZXJ0IHRvIGNvbHVtbiBzaXplIHRvIG51bWJlclxuICAgICAgICAgIHByb3BWYWwgPSBwYXJzZUludChwcm9wVmFsLCAxMCkgfHwgMDsgLy8gRW5zdXJlIGNvbHVtbiBzaXplIGlzIGdyZWF0ZXIgdGhhbiAwXG5cbiAgICAgICAgICBwcm9wVmFsID0gcHJvcFZhbCA+IDAgPyBwcm9wVmFsIDogZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcFZhbCkge1xuICAgICAgICAgIC8vIEFkZCB0aGUgcHJvcCB0byB0aGUgbGlzdCBvZiBwcm9wcyB0byBnaXZlIHRvIGItY29sXG4gICAgICAgICAgLy8gSWYgYnJlYWtwb2ludCBpcyAnJyAobGFiZWxDb2xzPXRydWUpLCB0aGVuIHdlIHVzZSB0aGVcbiAgICAgICAgICAvLyBjb2wgcHJvcCB0byBtYWtlIGVxdWFsIHdpZHRoIGF0IHhzXG4gICAgICAgICAgdmFyIGJDb2xQcm9wTmFtZSA9IGJyZWFrcG9pbnQgfHwgKGlzQm9vbGVhbihwcm9wVmFsKSA/ICdjb2wnIDogJ2NvbHMnKTsgLy8gQWRkIGl0IHRvIHRoZSBwcm9wc1xuXG4gICAgICAgICAgcHJvcHNbYkNvbFByb3BOYW1lXSA9IHByb3BWYWw7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHByb3BzO1xuICAgIH0sXG4gICAgbGFiZWxBbGlnbkNsYXNzZXM6IGZ1bmN0aW9uIGxhYmVsQWxpZ25DbGFzc2VzKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBjbGFzc2VzID0gW107XG4gICAgICBnZXRCcmVha3BvaW50c1VwQ2FjaGVkKCkuZm9yRWFjaChmdW5jdGlvbiAoYnJlYWtwb2ludCkge1xuICAgICAgICAvLyBBc3NlbWJsZSB0aGUgbGFiZWwgY29sdW1uIGJyZWFrcG9pbnQgYWxpZ24gY2xhc3Nlc1xuICAgICAgICB2YXIgcHJvcFZhbCA9IF90aGlzMlttYWtlUHJvcE5hbWUoYnJlYWtwb2ludCwgJ2xhYmVsQWxpZ24nKV0gfHwgbnVsbDtcblxuICAgICAgICBpZiAocHJvcFZhbCkge1xuICAgICAgICAgIHZhciBjbGFzc05hbWUgPSBicmVha3BvaW50ID8gXCJ0ZXh0LVwiLmNvbmNhdChicmVha3BvaW50LCBcIi1cIikuY29uY2F0KHByb3BWYWwpIDogXCJ0ZXh0LVwiLmNvbmNhdChwcm9wVmFsKTtcbiAgICAgICAgICBjbGFzc2VzLnB1c2goY2xhc3NOYW1lKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gY2xhc3NlcztcbiAgICB9LFxuICAgIGlzSG9yaXpvbnRhbDogZnVuY3Rpb24gaXNIb3Jpem9udGFsKCkge1xuICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSByZXN1bHRhbnQgZm9ybS1ncm91cCB3aWxsIGJlIHJlbmRlcmVkXG4gICAgICAvLyBob3Jpem9udGFsIChtZWFuaW5nIGl0IGhhcyBsYWJlbC1jb2wgYnJlYWtwb2ludHMpXG4gICAgICByZXR1cm4ga2V5cyh0aGlzLmxhYmVsQ29sUHJvcHMpLmxlbmd0aCA+IDA7XG4gICAgfSxcbiAgICBsYWJlbElkOiBmdW5jdGlvbiBsYWJlbElkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGFzTm9ybWFsaXplZFNsb3QoJ2xhYmVsJykgfHwgdGhpcy5sYWJlbCA/IHRoaXMuc2FmZUlkKCdfQlZfbGFiZWxfJykgOiBudWxsO1xuICAgIH0sXG4gICAgZGVzY3JpcHRpb25JZDogZnVuY3Rpb24gZGVzY3JpcHRpb25JZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmhhc05vcm1hbGl6ZWRTbG90KCdkZXNjcmlwdGlvbicpIHx8IHRoaXMuZGVzY3JpcHRpb24gPyB0aGlzLnNhZmVJZCgnX0JWX2Rlc2NyaXB0aW9uXycpIDogbnVsbDtcbiAgICB9LFxuICAgIGhhc0ludmFsaWRGZWVkYmFjazogZnVuY3Rpb24gaGFzSW52YWxpZEZlZWRiYWNrKCkge1xuICAgICAgLy8gVXNlZCBmb3IgY29tcHV0aW5nIGFyaWEtZGVzY3JpYmVkYnlcbiAgICAgIHJldHVybiB0aGlzLmNvbXB1dGVkU3RhdGUgPT09IGZhbHNlICYmICh0aGlzLmhhc05vcm1hbGl6ZWRTbG90KCdpbnZhbGlkLWZlZWRiYWNrJykgfHwgdGhpcy5pbnZhbGlkRmVlZGJhY2spO1xuICAgIH0sXG4gICAgaW52YWxpZEZlZWRiYWNrSWQ6IGZ1bmN0aW9uIGludmFsaWRGZWVkYmFja0lkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGFzSW52YWxpZEZlZWRiYWNrID8gdGhpcy5zYWZlSWQoJ19CVl9mZWVkYmFja19pbnZhbGlkXycpIDogbnVsbDtcbiAgICB9LFxuICAgIGhhc1ZhbGlkRmVlZGJhY2s6IGZ1bmN0aW9uIGhhc1ZhbGlkRmVlZGJhY2soKSB7XG4gICAgICAvLyBVc2VkIGZvciBjb21wdXRpbmcgYXJpYS1kZXNjcmliZWRieVxuICAgICAgcmV0dXJuIHRoaXMuY29tcHV0ZWRTdGF0ZSA9PT0gdHJ1ZSAmJiAodGhpcy5oYXNOb3JtYWxpemVkU2xvdCgndmFsaWQtZmVlZGJhY2snKSB8fCB0aGlzLnZhbGlkRmVlZGJhY2spO1xuICAgIH0sXG4gICAgdmFsaWRGZWVkYmFja0lkOiBmdW5jdGlvbiB2YWxpZEZlZWRiYWNrSWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5oYXNWYWxpZEZlZWRiYWNrID8gdGhpcy5zYWZlSWQoJ19CVl9mZWVkYmFja192YWxpZF8nKSA6IG51bGw7XG4gICAgfSxcbiAgICBkZXNjcmliZWRCeUlkczogZnVuY3Rpb24gZGVzY3JpYmVkQnlJZHMoKSB7XG4gICAgICAvLyBTY3JlZW4gcmVhZGVycyB3aWxsIHJlYWQgb3V0IGFueSBjb250ZW50IGxpbmtlZCB0byBieSBhcmlhLWRlc2NyaWJlZGJ5XG4gICAgICAvLyBldmVuIGlmIHRoZSBjb250ZW50IGlzIGhpZGRlbiB3aXRoIGBkaXNwbGF5OiBub25lO2AsIGhlbmNlIHdlIG9ubHkgaW5jbHVkZVxuICAgICAgLy8gZmVlZGJhY2sgSURzIGlmIHRoZSBmb3JtLWdyb3VwJ3Mgc3RhdGUgaXMgZXhwbGljaXRseSB2YWxpZCBvciBpbnZhbGlkLlxuICAgICAgcmV0dXJuIFt0aGlzLmRlc2NyaXB0aW9uSWQsIHRoaXMuaW52YWxpZEZlZWRiYWNrSWQsIHRoaXMudmFsaWRGZWVkYmFja0lkXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpIHx8IG51bGw7XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIGRlc2NyaWJlZEJ5SWRzOiBmdW5jdGlvbiBkZXNjcmliZWRCeUlkcyhhZGQsIHJlbW92ZSkge1xuICAgICAgaWYgKGFkZCAhPT0gcmVtb3ZlKSB7XG4gICAgICAgIHRoaXMuc2V0SW5wdXREZXNjcmliZWRCeShhZGQsIHJlbW92ZSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgLy8gU2V0IHRoZSBhcmlhLWRlc2NyaWJlZGJ5IElEcyBvbiB0aGUgaW5wdXQgc3BlY2lmaWVkIGJ5IGxhYmVsLWZvclxuICAgICAgLy8gV2UgZG8gdGhpcyBpbiBhIG5leHRUaWNrIHRvIGVuc3VyZSB0aGUgY2hpbGRyZW4gaGF2ZSBmaW5pc2hlZCByZW5kZXJpbmdcbiAgICAgIF90aGlzMy5zZXRJbnB1dERlc2NyaWJlZEJ5KF90aGlzMy5kZXNjcmliZWRCeUlkcyk7XG4gICAgfSk7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBsZWdlbmRDbGljazogZnVuY3Rpb24gbGVnZW5kQ2xpY2soZXZ0KSB7XG4gICAgICBpZiAodGhpcy5sYWJlbEZvcikge1xuICAgICAgICAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiBsYWJlbEZvciBpcyBzZXRcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogY2xpY2tpbmcgYSBsYWJlbCB3aWxsIGZvY3VzIHRoZSBpbnB1dCwgc28gbm8gbmVlZCB0byB0ZXN0ICovXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIHRhZ05hbWUgPSBldnQudGFyZ2V0ID8gZXZ0LnRhcmdldC50YWdOYW1lIDogJyc7XG5cbiAgICAgIGlmICgvXihpbnB1dHxzZWxlY3R8dGV4dGFyZWF8bGFiZWx8YnV0dG9ufGEpJC9pLnRlc3QodGFnTmFtZSkpIHtcbiAgICAgICAgLy8gSWYgY2xpY2tlZCBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IGluc2lkZSBsZWdlbmQsXG4gICAgICAgIC8vIHdlIGp1c3QgbGV0IHRoZSBkZWZhdWx0IGhhcHBlblxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIGlucHV0cyA9IHNlbGVjdEFsbChTRUxFQ1RPUiwgdGhpcy4kcmVmcy5jb250ZW50KS5maWx0ZXIoaXNWaXNpYmxlKTtcblxuICAgICAgaWYgKGlucHV0cyAmJiBpbnB1dHMubGVuZ3RoID09PSAxICYmIGlucHV0c1swXS5mb2N1cykge1xuICAgICAgICAvLyBpZiBvbmx5IGEgc2luZ2xlIGlucHV0LCBmb2N1cyBpdCwgZW11bGF0aW5nIGxhYmVsIGJlaGF2aW91clxuICAgICAgICBpbnB1dHNbMF0uZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNldElucHV0RGVzY3JpYmVkQnk6IGZ1bmN0aW9uIHNldElucHV0RGVzY3JpYmVkQnkoYWRkLCByZW1vdmUpIHtcbiAgICAgIC8vIFNldHMgdGhlIGBhcmlhLWRlc2NyaWJlZGJ5YCBhdHRyaWJ1dGUgb24gdGhlIGlucHV0IGlmIGxhYmVsLWZvciBpcyBzZXQuXG4gICAgICAvLyBPcHRpb25hbGx5IGFjY2VwdHMgYSBzdHJpbmcgb2YgSURzIHRvIHJlbW92ZSBhcyB0aGUgc2Vjb25kIHBhcmFtZXRlci5cbiAgICAgIC8vIFByZXNlcnZlcyBhbnkgYXJpYS1kZXNjcmliZWRieSB2YWx1ZShzKSB1c2VyIG1heSBoYXZlIG9uIGlucHV0LlxuICAgICAgaWYgKHRoaXMubGFiZWxGb3IgJiYgaXNCcm93c2VyKSB7XG4gICAgICAgIHZhciBpbnB1dCA9IHNlbGVjdChcIiNcIi5jb25jYXQodGhpcy5sYWJlbEZvciksIHRoaXMuJHJlZnMuY29udGVudCk7XG5cbiAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgdmFyIGFkYiA9ICdhcmlhLWRlc2NyaWJlZGJ5JztcbiAgICAgICAgICB2YXIgaWRzID0gKGdldEF0dHIoaW5wdXQsIGFkYikgfHwgJycpLnNwbGl0KC9cXHMrLyk7XG4gICAgICAgICAgYWRkID0gKGFkZCB8fCAnJykuc3BsaXQoL1xccysvKTtcbiAgICAgICAgICByZW1vdmUgPSAocmVtb3ZlIHx8ICcnKS5zcGxpdCgvXFxzKy8pOyAvLyBVcGRhdGUgSUQgbGlzdCwgcHJlc2VydmluZyBhbnkgb3JpZ2luYWwgSURzXG4gICAgICAgICAgLy8gYW5kIGVuc3VyaW5nIHRoZSBJRCdzIGFyZSB1bmlxdWVcblxuICAgICAgICAgIGlkcyA9IGlkcy5maWx0ZXIoZnVuY3Rpb24gKGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gIWFycmF5SW5jbHVkZXMocmVtb3ZlLCBpZCk7XG4gICAgICAgICAgfSkuY29uY2F0KGFkZCkuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICAgIGlkcyA9IGtleXMoaWRzLnJlZHVjZShmdW5jdGlvbiAobWVtbywgaWQpIHtcbiAgICAgICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKHt9LCBtZW1vLCBfZGVmaW5lUHJvcGVydHkoe30sIGlkLCB0cnVlKSk7XG4gICAgICAgICAgfSwge30pKS5qb2luKCcgJykudHJpbSgpO1xuXG4gICAgICAgICAgaWYgKGlkcykge1xuICAgICAgICAgICAgc2V0QXR0cihpbnB1dCwgYWRiLCBpZHMpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBObyBJRHMsIHNvIHJlbW92ZSB0aGUgYXR0cmlidXRlXG4gICAgICAgICAgICByZW1vdmVBdHRyKGlucHV0LCBhZGIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBpc0ZpZWxkc2V0ID0gIXRoaXMubGFiZWxGb3I7XG4gICAgdmFyIGlzSG9yaXpvbnRhbCA9IHRoaXMuaXNIb3Jpem9udGFsOyAvLyBHZW5lcmF0ZSB0aGUgbGFiZWxcblxuICAgIHZhciBsYWJlbCA9IHJlbmRlckxhYmVsKGgsIHRoaXMpOyAvLyBHZW5lcmF0ZSB0aGUgY29udGVudFxuXG4gICAgdmFyIGNvbnRlbnQgPSBoKGlzSG9yaXpvbnRhbCA/IEJDb2wgOiAnZGl2Jywge1xuICAgICAgcmVmOiAnY29udGVudCcsXG4gICAgICBhdHRyczoge1xuICAgICAgICB0YWJpbmRleDogaXNGaWVsZHNldCA/ICctMScgOiBudWxsLFxuICAgICAgICByb2xlOiBpc0ZpZWxkc2V0ID8gJ2dyb3VwJyA6IG51bGxcbiAgICAgIH1cbiAgICB9LCBbdGhpcy5ub3JtYWxpemVTbG90KCdkZWZhdWx0JykgfHwgaCgpLCByZW5kZXJJbnZhbGlkRmVlZGJhY2soaCwgdGhpcyksIHJlbmRlclZhbGlkRmVlZGJhY2soaCwgdGhpcyksIHJlbmRlckhlbHBUZXh0KGgsIHRoaXMpXSk7IC8vIENyZWF0ZSB0aGUgZm9ybS1ncm91cFxuXG4gICAgdmFyIGRhdGEgPSB7XG4gICAgICBzdGF0aWNDbGFzczogJ2Zvcm0tZ3JvdXAnLFxuICAgICAgY2xhc3M6IFt0aGlzLnZhbGlkYXRlZCA/ICd3YXMtdmFsaWRhdGVkJyA6IG51bGwsIHRoaXMuc3RhdGVDbGFzc10sXG4gICAgICBhdHRyczoge1xuICAgICAgICBpZDogdGhpcy5zYWZlSWQoKSxcbiAgICAgICAgZGlzYWJsZWQ6IGlzRmllbGRzZXQgPyB0aGlzLmRpc2FibGVkIDogbnVsbCxcbiAgICAgICAgcm9sZTogaXNGaWVsZHNldCA/IG51bGwgOiAnZ3JvdXAnLFxuICAgICAgICAnYXJpYS1pbnZhbGlkJzogdGhpcy5jb21wdXRlZFN0YXRlID09PSBmYWxzZSA/ICd0cnVlJyA6IG51bGwsXG4gICAgICAgIC8vIE9ubHkgYXBwbHkgYXJpYS1sYWJlbGxlZGJ5IGlmIHdlIGFyZSBhIGhvcml6b250YWwgZmllbGRzZXRcbiAgICAgICAgLy8gYXMgdGhlIGxlZ2VuZCBpcyBubyBsb25nZXIgYSBkaXJlY3QgY2hpbGQgb2YgZmllbGRzZXRcbiAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IGlzRmllbGRzZXQgJiYgaXNIb3Jpem9udGFsID8gdGhpcy5sYWJlbElkIDogbnVsbCxcbiAgICAgICAgLy8gT25seSBhcHBseSBhcmlhLWRlc2NyaWJlZGJ5IElEcyBpZiB3ZSBhcmUgYSBmaWVsZHNldFxuICAgICAgICAvLyBhcyB0aGUgaW5wdXQgd2lsbCBoYXZlIHRoZSBJRHMgd2hlbiBub3QgYSBmaWVsZHNldFxuICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc6IGlzRmllbGRzZXQgPyB0aGlzLmRlc2NyaWJlZEJ5SWRzIDogbnVsbFxuICAgICAgfVxuICAgIH07IC8vIFJldHVybiBpdCB3cmFwcGVkIGluIGEgZm9ybS1ncm91cFxuICAgIC8vIE5vdGU6IEZpZWxkc2V0cyBkbyBub3Qgc3VwcG9ydCBhZGRpbmcgYHJvd2Agb3IgYGZvcm0tcm93YCBkaXJlY3RseVxuICAgIC8vIHRvIHRoZW0gZHVlIHRvIGJyb3dzZXIgc3BlY2lmaWMgcmVuZGVyIGlzc3Vlcywgc28gd2UgbW92ZSB0aGUgYGZvcm0tcm93YFxuICAgIC8vIHRvIGFuIGlubmVyIHdyYXBwZXIgZGl2IHdoZW4gaG9yaXpvbnRhbCBhbmQgdXNpbmcgYSBmaWVsZHNldFxuXG4gICAgcmV0dXJuIGgoaXNGaWVsZHNldCA/ICdmaWVsZHNldCcgOiBpc0hvcml6b250YWwgPyBCRm9ybVJvdyA6ICdkaXYnLCBkYXRhLCBpc0hvcml6b250YWwgJiYgaXNGaWVsZHNldCA/IFtoKEJGb3JtUm93LCB7fSwgW2xhYmVsLCBjb250ZW50XSldIDogW2xhYmVsLCBjb250ZW50XSk7XG4gIH1cbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWdyb3VwL2Zvcm0tZ3JvdXAuanNcbi8vIG1vZHVsZSBpZCA9IDEzOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///138\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BFormDatalist; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_form_options__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_html__ = __webpack_require__(11);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n // @vue/component\n\nvar BFormDatalist =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BFormDatalist',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_form_options__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__[\"a\" /* default */]],\n props: {\n id: {\n type: String,\n default: null,\n required: true\n }\n },\n render: function render(h) {\n var options = this.formOptions.map(function (option, index) {\n return h('option', {\n key: \"option_\".concat(index, \"_opt\"),\n attrs: {\n disabled: option.disabled\n },\n domProps: _objectSpread({}, Object(__WEBPACK_IMPORTED_MODULE_3__utils_html__[\"a\" /* htmlOrText */])(option.html, option.text), {\n value: option.value\n })\n });\n });\n return h('datalist', {\n attrs: {\n id: this.id\n }\n }, [options, this.normalizeSlot('default')]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtL2Zvcm0tZGF0YWxpc3QuanM/ZDM2YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUN1QjtBQUNJO0FBQ2Y7O0FBRXZDO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0EsV0FBVyxxRUFBZ0IsRUFBRSx1RUFBa0I7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxrQ0FBa0MsRUFBRSx1RUFBVTtBQUM5QztBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxMzguanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgZm9ybU9wdGlvbnNNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvZm9ybS1vcHRpb25zJztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JztcbmltcG9ydCB7IGh0bWxPclRleHQgfSBmcm9tICcuLi8uLi91dGlscy9odG1sJzsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCRm9ybURhdGFsaXN0ID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQkZvcm1EYXRhbGlzdCcsXG4gIG1peGluczogW2Zvcm1PcHRpb25zTWl4aW4sIG5vcm1hbGl6ZVNsb3RNaXhpbl0sXG4gIHByb3BzOiB7XG4gICAgaWQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBvcHRpb25zID0gdGhpcy5mb3JtT3B0aW9ucy5tYXAoZnVuY3Rpb24gKG9wdGlvbiwgaW5kZXgpIHtcbiAgICAgIHJldHVybiBoKCdvcHRpb24nLCB7XG4gICAgICAgIGtleTogXCJvcHRpb25fXCIuY29uY2F0KGluZGV4LCBcIl9vcHRcIiksXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgZGlzYWJsZWQ6IG9wdGlvbi5kaXNhYmxlZFxuICAgICAgICB9LFxuICAgICAgICBkb21Qcm9wczogX29iamVjdFNwcmVhZCh7fSwgaHRtbE9yVGV4dChvcHRpb24uaHRtbCwgb3B0aW9uLnRleHQpLCB7XG4gICAgICAgICAgdmFsdWU6IG9wdGlvbi52YWx1ZVxuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGgoJ2RhdGFsaXN0Jywge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgaWQ6IHRoaXMuaWRcbiAgICAgIH1cbiAgICB9LCBbb3B0aW9ucywgdGhpcy5ub3JtYWxpemVTbG90KCdkZWZhdWx0JyldKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtL2Zvcm0tZGF0YWxpc3QuanNcbi8vIG1vZHVsZSBpZCA9IDEzOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///138\n"); /***/ }), /* 139 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return FormCheckboxPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__form_checkbox__ = __webpack_require__(70);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__form_checkbox_group__ = __webpack_require__(141);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BFormCheckbox */\n/* unused harmony reexport BFormCheckboxGroup */\n\n\n\nvar FormCheckboxPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BFormCheckbox: __WEBPACK_IMPORTED_MODULE_0__form_checkbox__[\"a\" /* BFormCheckbox */],\n BCheckbox: __WEBPACK_IMPORTED_MODULE_0__form_checkbox__[\"a\" /* BFormCheckbox */],\n BCheck: __WEBPACK_IMPORTED_MODULE_0__form_checkbox__[\"a\" /* BFormCheckbox */],\n BFormCheckboxGroup: __WEBPACK_IMPORTED_MODULE_1__form_checkbox_group__[\"a\" /* BFormCheckboxGroup */],\n BCheckboxGroup: __WEBPACK_IMPORTED_MODULE_1__form_checkbox_group__[\"a\" /* BFormCheckboxGroup */],\n BCheckGroup: __WEBPACK_IMPORTED_MODULE_1__form_checkbox_group__[\"a\" /* BFormCheckboxGroup */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWNoZWNrYm94L2luZGV4LmpzPzE1MGEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWdEO0FBQ1c7QUFDUDtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLG1CQUFtQixxRUFBYTtBQUNoQyxlQUFlLHFFQUFhO0FBQzVCLFlBQVkscUVBQWE7QUFDekIsd0JBQXdCLGdGQUFrQjtBQUMxQyxvQkFBb0IsZ0ZBQWtCO0FBQ3RDLGlCQUFpQixnRkFBa0I7QUFDbkM7QUFDQSxDQUFDIiwiZmlsZSI6IjEzOS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJGb3JtQ2hlY2tib3ggfSBmcm9tICcuL2Zvcm0tY2hlY2tib3gnO1xuaW1wb3J0IHsgQkZvcm1DaGVja2JveEdyb3VwIH0gZnJvbSAnLi9mb3JtLWNoZWNrYm94LWdyb3VwJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBGb3JtQ2hlY2tib3hQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCRm9ybUNoZWNrYm94OiBCRm9ybUNoZWNrYm94LFxuICAgIEJDaGVja2JveDogQkZvcm1DaGVja2JveCxcbiAgICBCQ2hlY2s6IEJGb3JtQ2hlY2tib3gsXG4gICAgQkZvcm1DaGVja2JveEdyb3VwOiBCRm9ybUNoZWNrYm94R3JvdXAsXG4gICAgQkNoZWNrYm94R3JvdXA6IEJGb3JtQ2hlY2tib3hHcm91cCxcbiAgICBCQ2hlY2tHcm91cDogQkZvcm1DaGVja2JveEdyb3VwXG4gIH1cbn0pO1xuZXhwb3J0IHsgRm9ybUNoZWNrYm94UGx1Z2luLCBCRm9ybUNoZWNrYm94LCBCRm9ybUNoZWNrYm94R3JvdXAgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Zvcm0tY2hlY2tib3gvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDEzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///139\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return FormGroupPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__form_group__ = __webpack_require__(140);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BFormGroup */\n\n\nvar FormGroupPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BFormGroup: __WEBPACK_IMPORTED_MODULE_0__form_group__[\"a\" /* BFormGroup */],\n BFormFieldset: __WEBPACK_IMPORTED_MODULE_0__form_group__[\"a\" /* BFormGroup */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWdyb3VwL2luZGV4LmpzPzJhODMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEM7QUFDVTtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGdCQUFnQiwrREFBVTtBQUMxQixtQkFBbUIsK0RBQVU7QUFDN0I7QUFDQSxDQUFDIiwiZmlsZSI6IjEzOS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJGb3JtR3JvdXAgfSBmcm9tICcuL2Zvcm0tZ3JvdXAnO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIEZvcm1Hcm91cFBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJGb3JtR3JvdXA6IEJGb3JtR3JvdXAsXG4gICAgQkZvcm1GaWVsZHNldDogQkZvcm1Hcm91cFxuICB9XG59KTtcbmV4cG9ydCB7IEZvcm1Hcm91cFBsdWdpbiwgQkZvcm1Hcm91cCB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvZm9ybS1ncm91cC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTM5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///139\n"); /***/ }), /* 140 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__normalize_slot__ = __webpack_require__(5);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n // @vue/component\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n mixins: [__WEBPACK_IMPORTED_MODULE_0__normalize_slot__[\"a\" /* default */]],\n inheritAttrs: false,\n model: {\n prop: 'checked',\n event: 'input'\n },\n props: {\n value: {// Value when checked\n // type: Object,\n // default: undefined\n },\n checked: {// This is the v-model\n // type: Object,\n // default: undefined\n },\n inline: {\n type: Boolean,\n default: false\n },\n plain: {\n type: Boolean,\n default: false\n },\n button: {\n // Only applicable in standalone mode (non group)\n type: Boolean,\n default: false\n },\n buttonVariant: {\n // Only applicable when rendered with button style\n type: String,\n default: null\n },\n ariaLabel: {\n // Placed on the input if present.\n type: String,\n default: null\n },\n ariaLabelledby: {\n // Placed on the input if present.\n type: String,\n default: null\n }\n },\n data: function data() {\n return {\n localChecked: this.isGroup ? this.bvGroup.checked : this.checked,\n hasFocus: false\n };\n },\n computed: {\n computedLocalChecked: {\n get: function get() {\n return this.isGroup ? this.bvGroup.localChecked : this.localChecked;\n },\n set: function set(val) {\n if (this.isGroup) {\n this.bvGroup.localChecked = val;\n } else {\n this.localChecked = val;\n }\n }\n },\n isGroup: function isGroup() {\n // Is this check/radio a child of check-group or radio-group?\n return Boolean(this.bvGroup);\n },\n isBtnMode: function isBtnMode() {\n // Support button style in single input mode\n return this.isGroup ? this.bvGroup.buttons : this.button;\n },\n isPlain: function isPlain() {\n return this.isBtnMode ? false : this.isGroup ? this.bvGroup.plain : this.plain;\n },\n isCustom: function isCustom() {\n return this.isBtnMode ? false : !this.isPlain;\n },\n isSwitch: function isSwitch() {\n // Custom switch styling (checkboxes only)\n return this.isBtnMode || this.isRadio || this.isPlain ? false : this.isGroup ? this.bvGroup.switches : this.switch;\n },\n isInline: function isInline() {\n return this.isGroup ? this.bvGroup.inline : this.inline;\n },\n isDisabled: function isDisabled() {\n // Child can be disabled while parent isn't, but is always disabled if group is\n return this.isGroup ? this.bvGroup.disabled || this.disabled : this.disabled;\n },\n isRequired: function isRequired() {\n // Required only works when a name is provided for the input(s)\n // Child can only be required when parent is\n // Groups will always have a name (either user supplied or auto generated)\n return Boolean(this.getName && (this.isGroup ? this.bvGroup.required : this.required));\n },\n getName: function getName() {\n // Group name preferred over local name\n return (this.isGroup ? this.bvGroup.groupName : this.name) || null;\n },\n getForm: function getForm() {\n return (this.isGroup ? this.bvGroup.form : this.form) || null;\n },\n getSize: function getSize() {\n return (this.isGroup ? this.bvGroup.size : this.size) || '';\n },\n getState: function getState() {\n return this.isGroup ? this.bvGroup.computedState : this.computedState;\n },\n getButtonVariant: function getButtonVariant() {\n // Local variant preferred over group variant\n if (this.buttonVariant) {\n return this.buttonVariant;\n } else if (this.isGroup && this.bvGroup.buttonVariant) {\n return this.bvGroup.buttonVariant;\n } // default variant\n\n\n return 'secondary';\n },\n buttonClasses: function buttonClasses() {\n var _ref;\n\n // Same for radio & check\n return ['btn', \"btn-\".concat(this.getButtonVariant), (_ref = {}, _defineProperty(_ref, \"btn-\".concat(this.getSize), this.getSize), _defineProperty(_ref, \"disabled\", this.isDisabled), _defineProperty(_ref, \"active\", this.isChecked), _defineProperty(_ref, \"focus\", this.hasFocus), _ref)];\n }\n },\n watch: {\n checked: function checked(newVal, oldVal) {\n this.computedLocalChecked = newVal;\n }\n },\n methods: {\n handleFocus: function handleFocus(evt) {\n // When in buttons mode, we need to add 'focus' class to label when input focused\n // As it is the hidden input which has actual focus\n if (evt.target) {\n if (evt.type === 'focus') {\n this.hasFocus = true;\n } else if (evt.type === 'blur') {\n this.hasFocus = false;\n }\n }\n },\n // Convenience methods for focusing the input\n focus: function focus() {\n if (!this.isDisabled && this.$refs.input && this.$refs.input.focus) {\n this.$refs.input.focus();\n }\n },\n blur: function blur() {\n if (!this.isDisabled && this.$refs.input && this.$refs.input.blur) {\n this.$refs.input.blur();\n }\n }\n },\n render: function render(h) {\n var defaultSlot = this.normalizeSlot('default'); // Generate the input element\n\n var on = {\n change: this.handleChange\n };\n\n if (this.isBtnMode) {\n // Handlers for focus styling when in button mode\n on.focus = on.blur = this.handleFocus;\n }\n\n var input = h('input', {\n ref: 'input',\n key: 'input',\n on: on,\n class: {\n 'form-check-input': this.isPlain,\n 'custom-control-input': this.isCustom,\n 'is-valid': this.getState === true && !this.isBtnMode,\n 'is-invalid': this.getState === false && !this.isBtnMode,\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2911\n 'position-static': this.isPlain && !defaultSlot\n },\n directives: [{\n name: 'model',\n rawName: 'v-model',\n value: this.computedLocalChecked,\n expression: 'computedLocalChecked'\n }],\n attrs: _objectSpread({}, this.$attrs, {\n id: this.safeId(),\n type: this.isRadio ? 'radio' : 'checkbox',\n name: this.getName,\n form: this.getForm,\n disabled: this.isDisabled,\n required: this.isRequired,\n autocomplete: 'off',\n 'aria-required': this.isRequired || null,\n 'aria-label': this.ariaLabel || null,\n 'aria-labelledby': this.ariaLabelledby || null\n }),\n domProps: {\n value: this.value,\n checked: this.isChecked\n }\n });\n\n if (this.isBtnMode) {\n // Button mode\n var button = h('label', {\n class: this.buttonClasses\n }, [input, defaultSlot]);\n\n if (!this.isGroup) {\n // Standalone button mode, so wrap in 'btn-group-toggle'\n // and flag it as inline-block to mimic regular buttons\n button = h('div', {\n class: ['btn-group-toggle', 'd-inline-block']\n }, [button]);\n }\n\n return button;\n } else {\n // Not button mode\n var label = h(); // If no label content in plain mode we dont render the label\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2911\n\n if (!(this.isPlain && !defaultSlot)) {\n label = h('label', {\n class: {\n 'form-check-label': this.isPlain,\n 'custom-control-label': this.isCustom\n },\n attrs: {\n for: this.safeId()\n }\n }, defaultSlot);\n } // Wrap it in a div\n\n\n return h('div', {\n class: _defineProperty({\n 'form-check': this.isPlain,\n 'form-check-inline': this.isPlain && this.isInline,\n 'custom-control': this.isCustom,\n 'custom-control-inline': this.isCustom && this.isInline,\n 'custom-checkbox': this.isCustom && this.isCheck && !this.isSwitch,\n 'custom-switch': this.isSwitch,\n 'custom-radio': this.isCustom && this.isRadio\n }, \"b-custom-control-\".concat(this.getSize), Boolean(this.getSize && !this.isBtnMode))\n }, [input, label]);\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vbWl4aW5zL2Zvcm0tcmFkaW8tY2hlY2suanM/YjZiZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLCtDQUErQywyQ0FBMkMsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8seUNBQXlDLGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBnQiwyQ0FBMkMsa0JBQWtCLGtDQUFrQyxxRUFBcUUsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEVBQUUsWUFBWTs7QUFFN0o7O0FBRW5DO0FBQ2YsV0FBVyxnRUFBa0I7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLEtBQUs7QUFDTCxjQUFjO0FBQ2Q7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87OztBQUdQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxxRUFBcUU7QUFDckU7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLG9EQUFvRDs7QUFFcEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0Esc0JBQXNCO0FBQ3RCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87OztBQUdQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMTQwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IG5vcm1hbGl6ZVNsb3RNaXhpbiBmcm9tICcuL25vcm1hbGl6ZS1zbG90JzsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IGRlZmF1bHQge1xuICBtaXhpbnM6IFtub3JtYWxpemVTbG90TWl4aW5dLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBtb2RlbDoge1xuICAgIHByb3A6ICdjaGVja2VkJyxcbiAgICBldmVudDogJ2lucHV0J1xuICB9LFxuICBwcm9wczoge1xuICAgIHZhbHVlOiB7Ly8gVmFsdWUgd2hlbiBjaGVja2VkXG4gICAgICAvLyB0eXBlOiBPYmplY3QsXG4gICAgICAvLyBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIGNoZWNrZWQ6IHsvLyBUaGlzIGlzIHRoZSB2LW1vZGVsXG4gICAgICAvLyB0eXBlOiBPYmplY3QsXG4gICAgICAvLyBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIGlubGluZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBwbGFpbjoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBidXR0b246IHtcbiAgICAgIC8vIE9ubHkgYXBwbGljYWJsZSBpbiBzdGFuZGFsb25lIG1vZGUgKG5vbiBncm91cClcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgYnV0dG9uVmFyaWFudDoge1xuICAgICAgLy8gT25seSBhcHBsaWNhYmxlIHdoZW4gcmVuZGVyZWQgd2l0aCBidXR0b24gc3R5bGVcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIGFyaWFMYWJlbDoge1xuICAgICAgLy8gUGxhY2VkIG9uIHRoZSBpbnB1dCBpZiBwcmVzZW50LlxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgYXJpYUxhYmVsbGVkYnk6IHtcbiAgICAgIC8vIFBsYWNlZCBvbiB0aGUgaW5wdXQgaWYgcHJlc2VudC5cbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvY2FsQ2hlY2tlZDogdGhpcy5pc0dyb3VwID8gdGhpcy5idkdyb3VwLmNoZWNrZWQgOiB0aGlzLmNoZWNrZWQsXG4gICAgICBoYXNGb2N1czogZmFsc2VcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGNvbXB1dGVkTG9jYWxDaGVja2VkOiB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNHcm91cCA/IHRoaXMuYnZHcm91cC5sb2NhbENoZWNrZWQgOiB0aGlzLmxvY2FsQ2hlY2tlZDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWwpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNHcm91cCkge1xuICAgICAgICAgIHRoaXMuYnZHcm91cC5sb2NhbENoZWNrZWQgPSB2YWw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2NhbENoZWNrZWQgPSB2YWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGlzR3JvdXA6IGZ1bmN0aW9uIGlzR3JvdXAoKSB7XG4gICAgICAvLyBJcyB0aGlzIGNoZWNrL3JhZGlvIGEgY2hpbGQgb2YgY2hlY2stZ3JvdXAgb3IgcmFkaW8tZ3JvdXA/XG4gICAgICByZXR1cm4gQm9vbGVhbih0aGlzLmJ2R3JvdXApO1xuICAgIH0sXG4gICAgaXNCdG5Nb2RlOiBmdW5jdGlvbiBpc0J0bk1vZGUoKSB7XG4gICAgICAvLyBTdXBwb3J0IGJ1dHRvbiBzdHlsZSBpbiBzaW5nbGUgaW5wdXQgbW9kZVxuICAgICAgcmV0dXJuIHRoaXMuaXNHcm91cCA/IHRoaXMuYnZHcm91cC5idXR0b25zIDogdGhpcy5idXR0b247XG4gICAgfSxcbiAgICBpc1BsYWluOiBmdW5jdGlvbiBpc1BsYWluKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNCdG5Nb2RlID8gZmFsc2UgOiB0aGlzLmlzR3JvdXAgPyB0aGlzLmJ2R3JvdXAucGxhaW4gOiB0aGlzLnBsYWluO1xuICAgIH0sXG4gICAgaXNDdXN0b206IGZ1bmN0aW9uIGlzQ3VzdG9tKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNCdG5Nb2RlID8gZmFsc2UgOiAhdGhpcy5pc1BsYWluO1xuICAgIH0sXG4gICAgaXNTd2l0Y2g6IGZ1bmN0aW9uIGlzU3dpdGNoKCkge1xuICAgICAgLy8gQ3VzdG9tIHN3aXRjaCBzdHlsaW5nIChjaGVja2JveGVzIG9ubHkpXG4gICAgICByZXR1cm4gdGhpcy5pc0J0bk1vZGUgfHwgdGhpcy5pc1JhZGlvIHx8IHRoaXMuaXNQbGFpbiA/IGZhbHNlIDogdGhpcy5pc0dyb3VwID8gdGhpcy5idkdyb3VwLnN3aXRjaGVzIDogdGhpcy5zd2l0Y2g7XG4gICAgfSxcbiAgICBpc0lubGluZTogZnVuY3Rpb24gaXNJbmxpbmUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc0dyb3VwID8gdGhpcy5idkdyb3VwLmlubGluZSA6IHRoaXMuaW5saW5lO1xuICAgIH0sXG4gICAgaXNEaXNhYmxlZDogZnVuY3Rpb24gaXNEaXNhYmxlZCgpIHtcbiAgICAgIC8vIENoaWxkIGNhbiBiZSBkaXNhYmxlZCB3aGlsZSBwYXJlbnQgaXNuJ3QsIGJ1dCBpcyBhbHdheXMgZGlzYWJsZWQgaWYgZ3JvdXAgaXNcbiAgICAgIHJldHVybiB0aGlzLmlzR3JvdXAgPyB0aGlzLmJ2R3JvdXAuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZCA6IHRoaXMuZGlzYWJsZWQ7XG4gICAgfSxcbiAgICBpc1JlcXVpcmVkOiBmdW5jdGlvbiBpc1JlcXVpcmVkKCkge1xuICAgICAgLy8gUmVxdWlyZWQgb25seSB3b3JrcyB3aGVuIGEgbmFtZSBpcyBwcm92aWRlZCBmb3IgdGhlIGlucHV0KHMpXG4gICAgICAvLyBDaGlsZCBjYW4gb25seSBiZSByZXF1aXJlZCB3aGVuIHBhcmVudCBpc1xuICAgICAgLy8gR3JvdXBzIHdpbGwgYWx3YXlzIGhhdmUgYSBuYW1lIChlaXRoZXIgdXNlciBzdXBwbGllZCBvciBhdXRvIGdlbmVyYXRlZClcbiAgICAgIHJldHVybiBCb29sZWFuKHRoaXMuZ2V0TmFtZSAmJiAodGhpcy5pc0dyb3VwID8gdGhpcy5idkdyb3VwLnJlcXVpcmVkIDogdGhpcy5yZXF1aXJlZCkpO1xuICAgIH0sXG4gICAgZ2V0TmFtZTogZnVuY3Rpb24gZ2V0TmFtZSgpIHtcbiAgICAgIC8vIEdyb3VwIG5hbWUgcHJlZmVycmVkIG92ZXIgbG9jYWwgbmFtZVxuICAgICAgcmV0dXJuICh0aGlzLmlzR3JvdXAgPyB0aGlzLmJ2R3JvdXAuZ3JvdXBOYW1lIDogdGhpcy5uYW1lKSB8fCBudWxsO1xuICAgIH0sXG4gICAgZ2V0Rm9ybTogZnVuY3Rpb24gZ2V0Rm9ybSgpIHtcbiAgICAgIHJldHVybiAodGhpcy5pc0dyb3VwID8gdGhpcy5idkdyb3VwLmZvcm0gOiB0aGlzLmZvcm0pIHx8IG51bGw7XG4gICAgfSxcbiAgICBnZXRTaXplOiBmdW5jdGlvbiBnZXRTaXplKCkge1xuICAgICAgcmV0dXJuICh0aGlzLmlzR3JvdXAgPyB0aGlzLmJ2R3JvdXAuc2l6ZSA6IHRoaXMuc2l6ZSkgfHwgJyc7XG4gICAgfSxcbiAgICBnZXRTdGF0ZTogZnVuY3Rpb24gZ2V0U3RhdGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc0dyb3VwID8gdGhpcy5idkdyb3VwLmNvbXB1dGVkU3RhdGUgOiB0aGlzLmNvbXB1dGVkU3RhdGU7XG4gICAgfSxcbiAgICBnZXRCdXR0b25WYXJpYW50OiBmdW5jdGlvbiBnZXRCdXR0b25WYXJpYW50KCkge1xuICAgICAgLy8gTG9jYWwgdmFyaWFudCBwcmVmZXJyZWQgb3ZlciBncm91cCB2YXJpYW50XG4gICAgICBpZiAodGhpcy5idXR0b25WYXJpYW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1dHRvblZhcmlhbnQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNHcm91cCAmJiB0aGlzLmJ2R3JvdXAuYnV0dG9uVmFyaWFudCkge1xuICAgICAgICByZXR1cm4gdGhpcy5idkdyb3VwLmJ1dHRvblZhcmlhbnQ7XG4gICAgICB9IC8vIGRlZmF1bHQgdmFyaWFudFxuXG5cbiAgICAgIHJldHVybiAnc2Vjb25kYXJ5JztcbiAgICB9LFxuICAgIGJ1dHRvbkNsYXNzZXM6IGZ1bmN0aW9uIGJ1dHRvbkNsYXNzZXMoKSB7XG4gICAgICB2YXIgX3JlZjtcblxuICAgICAgLy8gU2FtZSBmb3IgcmFkaW8gJiBjaGVja1xuICAgICAgcmV0dXJuIFsnYnRuJywgXCJidG4tXCIuY29uY2F0KHRoaXMuZ2V0QnV0dG9uVmFyaWFudCksIChfcmVmID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfcmVmLCBcImJ0bi1cIi5jb25jYXQodGhpcy5nZXRTaXplKSwgdGhpcy5nZXRTaXplKSwgX2RlZmluZVByb3BlcnR5KF9yZWYsIFwiZGlzYWJsZWRcIiwgdGhpcy5pc0Rpc2FibGVkKSwgX2RlZmluZVByb3BlcnR5KF9yZWYsIFwiYWN0aXZlXCIsIHRoaXMuaXNDaGVja2VkKSwgX2RlZmluZVByb3BlcnR5KF9yZWYsIFwiZm9jdXNcIiwgdGhpcy5oYXNGb2N1cyksIF9yZWYpXTtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgY2hlY2tlZDogZnVuY3Rpb24gY2hlY2tlZChuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgdGhpcy5jb21wdXRlZExvY2FsQ2hlY2tlZCA9IG5ld1ZhbDtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBoYW5kbGVGb2N1czogZnVuY3Rpb24gaGFuZGxlRm9jdXMoZXZ0KSB7XG4gICAgICAvLyBXaGVuIGluIGJ1dHRvbnMgbW9kZSwgd2UgbmVlZCB0byBhZGQgJ2ZvY3VzJyBjbGFzcyB0byBsYWJlbCB3aGVuIGlucHV0IGZvY3VzZWRcbiAgICAgIC8vIEFzIGl0IGlzIHRoZSBoaWRkZW4gaW5wdXQgd2hpY2ggaGFzIGFjdHVhbCBmb2N1c1xuICAgICAgaWYgKGV2dC50YXJnZXQpIHtcbiAgICAgICAgaWYgKGV2dC50eXBlID09PSAnZm9jdXMnKSB7XG4gICAgICAgICAgdGhpcy5oYXNGb2N1cyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZ0LnR5cGUgPT09ICdibHVyJykge1xuICAgICAgICAgIHRoaXMuaGFzRm9jdXMgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgLy8gQ29udmVuaWVuY2UgbWV0aG9kcyBmb3IgZm9jdXNpbmcgdGhlIGlucHV0XG4gICAgZm9jdXM6IGZ1bmN0aW9uIGZvY3VzKCkge1xuICAgICAgaWYgKCF0aGlzLmlzRGlzYWJsZWQgJiYgdGhpcy4kcmVmcy5pbnB1dCAmJiB0aGlzLiRyZWZzLmlucHV0LmZvY3VzKSB7XG4gICAgICAgIHRoaXMuJHJlZnMuaW5wdXQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGJsdXI6IGZ1bmN0aW9uIGJsdXIoKSB7XG4gICAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZCAmJiB0aGlzLiRyZWZzLmlucHV0ICYmIHRoaXMuJHJlZnMuaW5wdXQuYmx1cikge1xuICAgICAgICB0aGlzLiRyZWZzLmlucHV0LmJsdXIoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgZGVmYXVsdFNsb3QgPSB0aGlzLm5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnKTsgLy8gR2VuZXJhdGUgdGhlIGlucHV0IGVsZW1lbnRcblxuICAgIHZhciBvbiA9IHtcbiAgICAgIGNoYW5nZTogdGhpcy5oYW5kbGVDaGFuZ2VcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuaXNCdG5Nb2RlKSB7XG4gICAgICAvLyBIYW5kbGVycyBmb3IgZm9jdXMgc3R5bGluZyB3aGVuIGluIGJ1dHRvbiBtb2RlXG4gICAgICBvbi5mb2N1cyA9IG9uLmJsdXIgPSB0aGlzLmhhbmRsZUZvY3VzO1xuICAgIH1cblxuICAgIHZhciBpbnB1dCA9IGgoJ2lucHV0Jywge1xuICAgICAgcmVmOiAnaW5wdXQnLFxuICAgICAga2V5OiAnaW5wdXQnLFxuICAgICAgb246IG9uLFxuICAgICAgY2xhc3M6IHtcbiAgICAgICAgJ2Zvcm0tY2hlY2staW5wdXQnOiB0aGlzLmlzUGxhaW4sXG4gICAgICAgICdjdXN0b20tY29udHJvbC1pbnB1dCc6IHRoaXMuaXNDdXN0b20sXG4gICAgICAgICdpcy12YWxpZCc6IHRoaXMuZ2V0U3RhdGUgPT09IHRydWUgJiYgIXRoaXMuaXNCdG5Nb2RlLFxuICAgICAgICAnaXMtaW52YWxpZCc6IHRoaXMuZ2V0U3RhdGUgPT09IGZhbHNlICYmICF0aGlzLmlzQnRuTW9kZSxcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jvb3RzdHJhcC12dWUvYm9vdHN0cmFwLXZ1ZS9pc3N1ZXMvMjkxMVxuICAgICAgICAncG9zaXRpb24tc3RhdGljJzogdGhpcy5pc1BsYWluICYmICFkZWZhdWx0U2xvdFxuICAgICAgfSxcbiAgICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAgICAgIG5hbWU6ICdtb2RlbCcsXG4gICAgICAgIHJhd05hbWU6ICd2LW1vZGVsJyxcbiAgICAgICAgdmFsdWU6IHRoaXMuY29tcHV0ZWRMb2NhbENoZWNrZWQsXG4gICAgICAgIGV4cHJlc3Npb246ICdjb21wdXRlZExvY2FsQ2hlY2tlZCdcbiAgICAgIH1dLFxuICAgICAgYXR0cnM6IF9vYmplY3RTcHJlYWQoe30sIHRoaXMuJGF0dHJzLCB7XG4gICAgICAgIGlkOiB0aGlzLnNhZmVJZCgpLFxuICAgICAgICB0eXBlOiB0aGlzLmlzUmFkaW8gPyAncmFkaW8nIDogJ2NoZWNrYm94JyxcbiAgICAgICAgbmFtZTogdGhpcy5nZXROYW1lLFxuICAgICAgICBmb3JtOiB0aGlzLmdldEZvcm0sXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLmlzRGlzYWJsZWQsXG4gICAgICAgIHJlcXVpcmVkOiB0aGlzLmlzUmVxdWlyZWQsXG4gICAgICAgIGF1dG9jb21wbGV0ZTogJ29mZicsXG4gICAgICAgICdhcmlhLXJlcXVpcmVkJzogdGhpcy5pc1JlcXVpcmVkIHx8IG51bGwsXG4gICAgICAgICdhcmlhLWxhYmVsJzogdGhpcy5hcmlhTGFiZWwgfHwgbnVsbCxcbiAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IHRoaXMuYXJpYUxhYmVsbGVkYnkgfHwgbnVsbFxuICAgICAgfSksXG4gICAgICBkb21Qcm9wczoge1xuICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgICAgY2hlY2tlZDogdGhpcy5pc0NoZWNrZWRcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmlzQnRuTW9kZSkge1xuICAgICAgLy8gQnV0dG9uIG1vZGVcbiAgICAgIHZhciBidXR0b24gPSBoKCdsYWJlbCcsIHtcbiAgICAgICAgY2xhc3M6IHRoaXMuYnV0dG9uQ2xhc3Nlc1xuICAgICAgfSwgW2lucHV0LCBkZWZhdWx0U2xvdF0pO1xuXG4gICAgICBpZiAoIXRoaXMuaXNHcm91cCkge1xuICAgICAgICAvLyBTdGFuZGFsb25lIGJ1dHRvbiBtb2RlLCBzbyB3cmFwIGluICdidG4tZ3JvdXAtdG9nZ2xlJ1xuICAgICAgICAvLyBhbmQgZmxhZyBpdCBhcyBpbmxpbmUtYmxvY2sgdG8gbWltaWMgcmVndWxhciBidXR0b25zXG4gICAgICAgIGJ1dHRvbiA9IGgoJ2RpdicsIHtcbiAgICAgICAgICBjbGFzczogWydidG4tZ3JvdXAtdG9nZ2xlJywgJ2QtaW5saW5lLWJsb2NrJ11cbiAgICAgICAgfSwgW2J1dHRvbl0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYnV0dG9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOb3QgYnV0dG9uIG1vZGVcbiAgICAgIHZhciBsYWJlbCA9IGgoKTsgLy8gSWYgbm8gbGFiZWwgY29udGVudCBpbiBwbGFpbiBtb2RlIHdlIGRvbnQgcmVuZGVyIHRoZSBsYWJlbFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jvb3RzdHJhcC12dWUvYm9vdHN0cmFwLXZ1ZS9pc3N1ZXMvMjkxMVxuXG4gICAgICBpZiAoISh0aGlzLmlzUGxhaW4gJiYgIWRlZmF1bHRTbG90KSkge1xuICAgICAgICBsYWJlbCA9IGgoJ2xhYmVsJywge1xuICAgICAgICAgIGNsYXNzOiB7XG4gICAgICAgICAgICAnZm9ybS1jaGVjay1sYWJlbCc6IHRoaXMuaXNQbGFpbixcbiAgICAgICAgICAgICdjdXN0b20tY29udHJvbC1sYWJlbCc6IHRoaXMuaXNDdXN0b21cbiAgICAgICAgICB9LFxuICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICBmb3I6IHRoaXMuc2FmZUlkKClcbiAgICAgICAgICB9XG4gICAgICAgIH0sIGRlZmF1bHRTbG90KTtcbiAgICAgIH0gLy8gV3JhcCBpdCBpbiBhIGRpdlxuXG5cbiAgICAgIHJldHVybiBoKCdkaXYnLCB7XG4gICAgICAgIGNsYXNzOiBfZGVmaW5lUHJvcGVydHkoe1xuICAgICAgICAgICdmb3JtLWNoZWNrJzogdGhpcy5pc1BsYWluLFxuICAgICAgICAgICdmb3JtLWNoZWNrLWlubGluZSc6IHRoaXMuaXNQbGFpbiAmJiB0aGlzLmlzSW5saW5lLFxuICAgICAgICAgICdjdXN0b20tY29udHJvbCc6IHRoaXMuaXNDdXN0b20sXG4gICAgICAgICAgJ2N1c3RvbS1jb250cm9sLWlubGluZSc6IHRoaXMuaXNDdXN0b20gJiYgdGhpcy5pc0lubGluZSxcbiAgICAgICAgICAnY3VzdG9tLWNoZWNrYm94JzogdGhpcy5pc0N1c3RvbSAmJiB0aGlzLmlzQ2hlY2sgJiYgIXRoaXMuaXNTd2l0Y2gsXG4gICAgICAgICAgJ2N1c3RvbS1zd2l0Y2gnOiB0aGlzLmlzU3dpdGNoLFxuICAgICAgICAgICdjdXN0b20tcmFkaW8nOiB0aGlzLmlzQ3VzdG9tICYmIHRoaXMuaXNSYWRpb1xuICAgICAgICB9LCBcImItY3VzdG9tLWNvbnRyb2wtXCIuY29uY2F0KHRoaXMuZ2V0U2l6ZSksIEJvb2xlYW4odGhpcy5nZXRTaXplICYmICF0aGlzLmlzQnRuTW9kZSkpXG4gICAgICB9LCBbaW5wdXQsIGxhYmVsXSk7XG4gICAgfVxuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL21peGlucy9mb3JtLXJhZGlvLWNoZWNrLmpzXG4vLyBtb2R1bGUgaWQgPSAxNDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///140\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BFormGroup; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_memoize__ = __webpack_require__(53);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_upper_first__ = __webpack_require__(55);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_env__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__mixins_form_state__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__layout_col__ = __webpack_require__(69);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__layout_form_row__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__form_form_text__ = __webpack_require__(66);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__form_form_invalid_feedback__ = __webpack_require__(67);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__form_form_valid_feedback__ = __webpack_require__(68);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n// Utils\n\n\n\n\n\n\n\n // Mixins\n\n\n\n // Sub components\n\n\n\n\n\n // Component name\n\nvar NAME = 'BFormGroup'; // Selector for finding first input in the form-group\n\nvar SELECTOR = 'input:not([disabled]),textarea:not([disabled]),select:not([disabled])'; // Render helper functions (here rather than polluting the instance with more methods)\n\nvar renderInvalidFeedback = function renderInvalidFeedback(h, ctx) {\n var content = ctx.normalizeSlot('invalid-feedback') || ctx.invalidFeedback;\n var invalidFeedback = h();\n\n if (content) {\n invalidFeedback = h(__WEBPACK_IMPORTED_MODULE_14__form_form_invalid_feedback__[\"a\" /* BFormInvalidFeedback */], {\n props: {\n id: ctx.invalidFeedbackId,\n // If state is explicitly false, always show the feedback\n state: ctx.computedState,\n tooltip: ctx.tooltip,\n ariaLive: ctx.feedbackAriaLive,\n role: ctx.feedbackAriaLive ? 'alert' : null\n },\n attrs: {\n tabindex: content ? '-1' : null\n }\n }, [content]);\n }\n\n return invalidFeedback;\n};\n\nvar renderValidFeedback = function renderValidFeedback(h, ctx) {\n var content = ctx.normalizeSlot('valid-feedback') || ctx.validFeedback;\n var validFeedback = h();\n\n if (content) {\n validFeedback = h(__WEBPACK_IMPORTED_MODULE_15__form_form_valid_feedback__[\"a\" /* BFormValidFeedback */], {\n props: {\n id: ctx.validFeedbackId,\n // If state is explicitly true, always show the feedback\n state: ctx.computedState,\n tooltip: ctx.tooltip,\n ariaLive: ctx.feedbackAriaLive,\n role: ctx.feedbackAriaLive ? 'alert' : null\n },\n attrs: {\n tabindex: content ? '-1' : null\n }\n }, [content]);\n }\n\n return validFeedback;\n};\n\nvar renderHelpText = function renderHelpText(h, ctx) {\n // Form help text (description)\n var content = ctx.normalizeSlot('description') || ctx.description;\n var description = h();\n\n if (content) {\n description = h(__WEBPACK_IMPORTED_MODULE_13__form_form_text__[\"a\" /* BFormText */], {\n attrs: {\n id: ctx.descriptionId,\n tabindex: content ? '-1' : null\n }\n }, [content]);\n }\n\n return description;\n};\n\nvar renderLabel = function renderLabel(h, ctx) {\n // Render label/legend inside b-col if necessary\n var content = ctx.normalizeSlot('label') || ctx.label;\n var labelFor = ctx.labelFor;\n var isLegend = !labelFor;\n var isHorizontal = ctx.isHorizontal;\n var labelTag = isLegend ? 'legend' : 'label';\n\n if (!content && !isHorizontal) {\n return h();\n } else if (ctx.labelSrOnly) {\n var label = h();\n\n if (content) {\n label = h(labelTag, {\n class: 'sr-only',\n attrs: {\n id: ctx.labelId,\n for: labelFor || null\n }\n }, [content]);\n }\n\n return h(isHorizontal ? __WEBPACK_IMPORTED_MODULE_11__layout_col__[\"a\" /* BCol */] : 'div', {\n props: isHorizontal ? ctx.labelColProps : {}\n }, [label]);\n } else {\n return h(isHorizontal ? __WEBPACK_IMPORTED_MODULE_11__layout_col__[\"a\" /* BCol */] : labelTag, {\n on: isLegend ? {\n click: ctx.legendClick\n } : {},\n props: isHorizontal ? _objectSpread({\n tag: labelTag\n }, ctx.labelColProps) : {},\n attrs: {\n id: ctx.labelId,\n for: labelFor || null,\n // We add a tab index to legend so that screen readers\n // will properly read the aria-labelledby in IE.\n tabindex: isLegend ? '-1' : null\n },\n class: [// When horizontal or if a legend is rendered, add col-form-label\n // for correct sizing as Bootstrap has inconsistent font styling\n // for legend in non-horizontal form-groups.\n // See: https://github.com/twbs/bootstrap/issues/27805\n isHorizontal || isLegend ? 'col-form-label' : '', // Emulate label padding top of 0 on legend when not horizontal\n !isHorizontal && isLegend ? 'pt-0' : '', // If not horizontal and not a legend, we add d-block to label\n // so that label-align works\n !isHorizontal && !isLegend ? 'd-block' : '', ctx.labelSize ? \"col-form-label-\".concat(ctx.labelSize) : '', ctx.labelAlignClasses, ctx.labelClass]\n }, [content]);\n }\n}; // -- BFormGroup Prop factory -- used for lazy generation of props\n// Memoize this function to return cached values to\n// save time in computed functions\n\n\nvar makePropName = Object(__WEBPACK_IMPORTED_MODULE_0__utils_memoize__[\"a\" /* default */])(function () {\n var breakpoint = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var prefix = arguments.length > 1 ? arguments[1] : undefined;\n return \"\".concat(prefix).concat(Object(__WEBPACK_IMPORTED_MODULE_1__utils_upper_first__[\"a\" /* default */])(breakpoint));\n}); // BFormGroup prop generator for lazy generation of props\n\nvar generateProps = function generateProps() {\n var BREAKPOINTS = Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"b\" /* getBreakpointsUpCached */])(); // Generate the labelCol breakpoint props\n\n var bpLabelColProps = BREAKPOINTS.reduce(function (props, breakpoint) {\n // i.e. label-cols, label-cols-sm, label-cols-md, ...\n props[makePropName(breakpoint, 'labelCols')] = {\n type: [Number, String, Boolean],\n default: breakpoint ? false : null\n };\n return props;\n }, Object(__WEBPACK_IMPORTED_MODULE_7__utils_object__[\"b\" /* create */])(null)); // Generate the labelAlign breakpoint props\n\n var bpLabelAlignProps = BREAKPOINTS.reduce(function (props, breakpoint) {\n // label-align, label-align-sm, label-align-md, ...\n props[makePropName(breakpoint, 'labelAlign')] = {\n type: String,\n // left, right, center\n default: null\n };\n return props;\n }, Object(__WEBPACK_IMPORTED_MODULE_7__utils_object__[\"b\" /* create */])(null));\n return _objectSpread({\n label: {\n type: String,\n default: null\n },\n labelFor: {\n type: String,\n default: null\n },\n labelSize: {\n type: String,\n default: null\n },\n labelSrOnly: {\n type: Boolean,\n default: false\n }\n }, bpLabelColProps, {}, bpLabelAlignProps, {\n labelClass: {\n type: [String, Array, Object],\n default: null\n },\n description: {\n type: String,\n default: null\n },\n invalidFeedback: {\n type: String,\n default: null\n },\n validFeedback: {\n type: String,\n default: null\n },\n tooltip: {\n // Enable tooltip style feedback\n type: Boolean,\n default: false\n },\n feedbackAriaLive: {\n type: String,\n default: 'assertive'\n },\n validated: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n }\n });\n}; // We do not use Vue.extend here as that would evaluate the props\n// immediately, which we do not want to happen\n// @vue/component\n\n\nvar BFormGroup = {\n name: NAME,\n mixins: [__WEBPACK_IMPORTED_MODULE_9__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_8__mixins_form_state__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_10__mixins_normalize_slot__[\"a\" /* default */]],\n\n get props() {\n // Allow props to be lazy evaled on first access and\n // then they become a non-getter afterwards.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n delete this.props; // eslint-disable-next-line no-return-assign\n\n return this.props = generateProps();\n },\n\n computed: {\n labelColProps: function labelColProps() {\n var _this = this;\n\n var props = {};\n Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"b\" /* getBreakpointsUpCached */])().forEach(function (breakpoint) {\n // Grab the value if the label column breakpoint prop\n var propVal = _this[makePropName(breakpoint, 'labelCols')]; // Handle case where the prop's value is an empty string,\n // which represents true\n\n\n propVal = propVal === '' ? true : propVal || false;\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_6__utils_inspect__[\"b\" /* isBoolean */])(propVal)) {\n // Convert to column size to number\n propVal = parseInt(propVal, 10) || 0; // Ensure column size is greater than 0\n\n propVal = propVal > 0 ? propVal : false;\n }\n\n if (propVal) {\n // Add the prop to the list of props to give to b-col\n // If breakpoint is '' (labelCols=true), then we use the\n // col prop to make equal width at xs\n var bColPropName = breakpoint || (Object(__WEBPACK_IMPORTED_MODULE_6__utils_inspect__[\"b\" /* isBoolean */])(propVal) ? 'col' : 'cols'); // Add it to the props\n\n props[bColPropName] = propVal;\n }\n });\n return props;\n },\n labelAlignClasses: function labelAlignClasses() {\n var _this2 = this;\n\n var classes = [];\n Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"b\" /* getBreakpointsUpCached */])().forEach(function (breakpoint) {\n // Assemble the label column breakpoint align classes\n var propVal = _this2[makePropName(breakpoint, 'labelAlign')] || null;\n\n if (propVal) {\n var className = breakpoint ? \"text-\".concat(breakpoint, \"-\").concat(propVal) : \"text-\".concat(propVal);\n classes.push(className);\n }\n });\n return classes;\n },\n isHorizontal: function isHorizontal() {\n // Determine if the resultant form-group will be rendered\n // horizontal (meaning it has label-col breakpoints)\n return Object(__WEBPACK_IMPORTED_MODULE_7__utils_object__[\"j\" /* keys */])(this.labelColProps).length > 0;\n },\n labelId: function labelId() {\n return this.hasNormalizedSlot('label') || this.label ? this.safeId('_BV_label_') : null;\n },\n descriptionId: function descriptionId() {\n return this.hasNormalizedSlot('description') || this.description ? this.safeId('_BV_description_') : null;\n },\n hasInvalidFeedback: function hasInvalidFeedback() {\n // Used for computing aria-describedby\n return this.computedState === false && (this.hasNormalizedSlot('invalid-feedback') || this.invalidFeedback);\n },\n invalidFeedbackId: function invalidFeedbackId() {\n return this.hasInvalidFeedback ? this.safeId('_BV_feedback_invalid_') : null;\n },\n hasValidFeedback: function hasValidFeedback() {\n // Used for computing aria-describedby\n return this.computedState === true && (this.hasNormalizedSlot('valid-feedback') || this.validFeedback);\n },\n validFeedbackId: function validFeedbackId() {\n return this.hasValidFeedback ? this.safeId('_BV_feedback_valid_') : null;\n },\n describedByIds: function describedByIds() {\n // Screen readers will read out any content linked to by aria-describedby\n // even if the content is hidden with `display: none;`, hence we only include\n // feedback IDs if the form-group's state is explicitly valid or invalid.\n return [this.descriptionId, this.invalidFeedbackId, this.validFeedbackId].filter(Boolean).join(' ') || null;\n }\n },\n watch: {\n describedByIds: function describedByIds(add, remove) {\n if (add !== remove) {\n this.setInputDescribedBy(add, remove);\n }\n }\n },\n mounted: function mounted() {\n var _this3 = this;\n\n this.$nextTick(function () {\n // Set the aria-describedby IDs on the input specified by label-for\n // We do this in a nextTick to ensure the children have finished rendering\n _this3.setInputDescribedBy(_this3.describedByIds);\n });\n },\n methods: {\n legendClick: function legendClick(evt) {\n if (this.labelFor) {\n // Don't do anything if labelFor is set\n\n /* istanbul ignore next: clicking a label will focus the input, so no need to test */\n return;\n }\n\n var tagName = evt.target ? evt.target.tagName : '';\n\n if (/^(input|select|textarea|label|button|a)$/i.test(tagName)) {\n // If clicked an interactive element inside legend,\n // we just let the default happen\n\n /* istanbul ignore next */\n return;\n }\n\n var inputs = Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"y\" /* selectAll */])(SELECTOR, this.$refs.content).filter(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"p\" /* isVisible */]);\n\n if (inputs && inputs.length === 1 && inputs[0].focus) {\n // if only a single input, focus it, emulating label behaviour\n inputs[0].focus();\n }\n },\n setInputDescribedBy: function setInputDescribedBy(add, remove) {\n // Sets the `aria-describedby` attribute on the input if label-for is set.\n // Optionally accepts a string of IDs to remove as the second parameter.\n // Preserves any aria-describedby value(s) user may have on input.\n if (this.labelFor && __WEBPACK_IMPORTED_MODULE_5__utils_env__[\"j\" /* isBrowser */]) {\n var input = Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"x\" /* select */])(\"#\".concat(this.labelFor), this.$refs.content);\n\n if (input) {\n var adb = 'aria-describedby';\n var ids = (Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"g\" /* getAttr */])(input, adb) || '').split(/\\s+/);\n add = (add || '').split(/\\s+/);\n remove = (remove || '').split(/\\s+/); // Update ID list, preserving any original IDs\n // and ensuring the ID's are unique\n\n ids = ids.filter(function (id) {\n return !Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"a\" /* arrayIncludes */])(remove, id);\n }).concat(add).filter(Boolean);\n ids = Object(__WEBPACK_IMPORTED_MODULE_7__utils_object__[\"j\" /* keys */])(ids.reduce(function (memo, id) {\n return _objectSpread({}, memo, _defineProperty({}, id, true));\n }, {})).join(' ').trim();\n\n if (ids) {\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"z\" /* setAttr */])(input, adb, ids);\n } else {\n // No IDs, so remove the attribute\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_dom__[\"u\" /* removeAttr */])(input, adb);\n }\n }\n }\n }\n },\n render: function render(h) {\n var isFieldset = !this.labelFor;\n var isHorizontal = this.isHorizontal; // Generate the label\n\n var label = renderLabel(h, this); // Generate the content\n\n var content = h(isHorizontal ? __WEBPACK_IMPORTED_MODULE_11__layout_col__[\"a\" /* BCol */] : 'div', {\n ref: 'content',\n attrs: {\n tabindex: isFieldset ? '-1' : null,\n role: isFieldset ? 'group' : null\n }\n }, [this.normalizeSlot('default') || h(), renderInvalidFeedback(h, this), renderValidFeedback(h, this), renderHelpText(h, this)]); // Create the form-group\n\n var data = {\n staticClass: 'form-group',\n class: [this.validated ? 'was-validated' : null, this.stateClass],\n attrs: {\n id: this.safeId(),\n disabled: isFieldset ? this.disabled : null,\n role: isFieldset ? null : 'group',\n 'aria-invalid': this.computedState === false ? 'true' : null,\n // Only apply aria-labelledby if we are a horizontal fieldset\n // as the legend is no longer a direct child of fieldset\n 'aria-labelledby': isFieldset && isHorizontal ? this.labelId : null,\n // Only apply aria-describedby IDs if we are a fieldset\n // as the input will have the IDs when not a fieldset\n 'aria-describedby': isFieldset ? this.describedByIds : null\n }\n }; // Return it wrapped in a form-group\n // Note: Fieldsets do not support adding `row` or `form-row` directly\n // to them due to browser specific render issues, so we move the `form-row`\n // to an inner wrapper div when horizontal and using a fieldset\n\n return h(isFieldset ? 'fieldset' : isHorizontal ? __WEBPACK_IMPORTED_MODULE_12__layout_form_row__[\"a\" /* BFormRow */] : 'div', data, isHorizontal && isFieldset ? [h(__WEBPACK_IMPORTED_MODULE_12__layout_form_row__[\"a\" /* BFormRow */], {}, [label, content])] : [label, content]);\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWdyb3VwL2Zvcm0tZ3JvdXAuanM/MzdlYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUUvTTtBQUMwQztBQUNPO0FBQ0M7QUFDVTtBQUNpQztBQUNqRDtBQUNJO0FBQ0U7O0FBRUc7QUFDZjtBQUN1Qjs7QUFFeEI7QUFDUztBQUNBO0FBQ3VCO0FBQ0o7O0FBRWpFLHdCQUF3Qjs7QUFFeEIsdUZBQXVGOztBQUV2RjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0IsMEZBQW9CO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUFzQixzRkFBa0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0IsbUVBQVM7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBLDRCQUE0QiwwREFBSTtBQUNoQztBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0gsNEJBQTRCLDBEQUFJO0FBQ2hDO0FBQ0E7QUFDQSxPQUFPLEtBQUs7QUFDWjtBQUNBO0FBQ0EsT0FBTyx5QkFBeUI7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7O0FBR0EsbUJBQW1CLHVFQUFPO0FBQzFCO0FBQ0E7QUFDQSxrQ0FBa0MsMkVBQVU7QUFDNUMsQ0FBQyxFQUFFOztBQUVIO0FBQ0Esb0JBQW9CLHFGQUFzQixHQUFHOztBQUU3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRSxxRUFBTSxRQUFROztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFLHFFQUFNO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcscUJBQXFCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILEVBQUU7QUFDRjtBQUNBOzs7QUFHTztBQUNQO0FBQ0EsV0FBVywyREFBTyxFQUFFLG1FQUFjLEVBQUUsd0VBQWtCOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjs7QUFFdEI7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU0scUZBQXNCO0FBQzVCO0FBQ0EsbUVBQW1FO0FBQ25FOzs7QUFHQTs7QUFFQSxhQUFhLHlFQUFTO0FBQ3RCO0FBQ0EsK0NBQStDOztBQUUvQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLHlFQUFTLDRCQUE0Qjs7QUFFakY7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsTUFBTSxxRkFBc0I7QUFDNUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1FQUFJO0FBQ2pCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLDJEQUEyRDtBQUMzRDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixxRUFBUyxzQ0FBc0MsNkRBQVM7O0FBRTNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDZEQUFTO0FBQ3BDLG9CQUFvQixrRUFBTTs7QUFFMUI7QUFDQTtBQUNBLHFCQUFxQixtRUFBTztBQUM1QjtBQUNBLCtDQUErQztBQUMvQzs7QUFFQTtBQUNBLG9CQUFvQiwyRUFBYTtBQUNqQyxXQUFXO0FBQ1gsZ0JBQWdCLG1FQUFJO0FBQ3BCLG1DQUFtQywwQkFBMEI7QUFDN0QsV0FBVyxJQUFJOztBQUVmO0FBQ0EsWUFBWSxtRUFBTztBQUNuQixXQUFXO0FBQ1g7QUFDQSxZQUFZLHNFQUFVO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx5Q0FBeUM7O0FBRXpDLHFDQUFxQzs7QUFFckMsbUNBQW1DLDBEQUFJO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLGlJQUFpSTs7QUFFdEk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQSxzREFBc0QsbUVBQVEsZ0RBQWdELG1FQUFRLElBQUk7QUFDMUg7QUFDQSIsImZpbGUiOiIxNDAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG4vLyBVdGlsc1xuaW1wb3J0IG1lbW9pemUgZnJvbSAnLi4vLi4vdXRpbHMvbWVtb2l6ZSc7XG5pbXBvcnQgdXBwZXJGaXJzdCBmcm9tICcuLi8uLi91dGlscy91cHBlci1maXJzdCc7XG5pbXBvcnQgeyBhcnJheUluY2x1ZGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXJyYXknO1xuaW1wb3J0IHsgZ2V0QnJlYWtwb2ludHNVcENhY2hlZCB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBzZWxlY3QsIHNlbGVjdEFsbCwgaXNWaXNpYmxlLCBzZXRBdHRyLCByZW1vdmVBdHRyLCBnZXRBdHRyIH0gZnJvbSAnLi4vLi4vdXRpbHMvZG9tJztcbmltcG9ydCB7IGlzQnJvd3NlciB9IGZyb20gJy4uLy4uL3V0aWxzL2Vudic7XG5pbXBvcnQgeyBpc0Jvb2xlYW4gfSBmcm9tICcuLi8uLi91dGlscy9pbnNwZWN0JztcbmltcG9ydCB7IGtleXMsIGNyZWF0ZSB9IGZyb20gJy4uLy4uL3V0aWxzL29iamVjdCc7IC8vIE1peGluc1xuXG5pbXBvcnQgZm9ybVN0YXRlTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tc3RhdGUnO1xuaW1wb3J0IGlkTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2lkJztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JzsgLy8gU3ViIGNvbXBvbmVudHNcblxuaW1wb3J0IHsgQkNvbCB9IGZyb20gJy4uL2xheW91dC9jb2wnO1xuaW1wb3J0IHsgQkZvcm1Sb3cgfSBmcm9tICcuLi9sYXlvdXQvZm9ybS1yb3cnO1xuaW1wb3J0IHsgQkZvcm1UZXh0IH0gZnJvbSAnLi4vZm9ybS9mb3JtLXRleHQnO1xuaW1wb3J0IHsgQkZvcm1JbnZhbGlkRmVlZGJhY2sgfSBmcm9tICcuLi9mb3JtL2Zvcm0taW52YWxpZC1mZWVkYmFjayc7XG5pbXBvcnQgeyBCRm9ybVZhbGlkRmVlZGJhY2sgfSBmcm9tICcuLi9mb3JtL2Zvcm0tdmFsaWQtZmVlZGJhY2snOyAvLyBDb21wb25lbnQgbmFtZVxuXG52YXIgTkFNRSA9ICdCRm9ybUdyb3VwJzsgLy8gU2VsZWN0b3IgZm9yIGZpbmRpbmcgZmlyc3QgaW5wdXQgaW4gdGhlIGZvcm0tZ3JvdXBcblxudmFyIFNFTEVDVE9SID0gJ2lucHV0Om5vdChbZGlzYWJsZWRdKSx0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSksc2VsZWN0Om5vdChbZGlzYWJsZWRdKSc7IC8vIFJlbmRlciBoZWxwZXIgZnVuY3Rpb25zIChoZXJlIHJhdGhlciB0aGFuIHBvbGx1dGluZyB0aGUgaW5zdGFuY2Ugd2l0aCBtb3JlIG1ldGhvZHMpXG5cbnZhciByZW5kZXJJbnZhbGlkRmVlZGJhY2sgPSBmdW5jdGlvbiByZW5kZXJJbnZhbGlkRmVlZGJhY2soaCwgY3R4KSB7XG4gIHZhciBjb250ZW50ID0gY3R4Lm5vcm1hbGl6ZVNsb3QoJ2ludmFsaWQtZmVlZGJhY2snKSB8fCBjdHguaW52YWxpZEZlZWRiYWNrO1xuICB2YXIgaW52YWxpZEZlZWRiYWNrID0gaCgpO1xuXG4gIGlmIChjb250ZW50KSB7XG4gICAgaW52YWxpZEZlZWRiYWNrID0gaChCRm9ybUludmFsaWRGZWVkYmFjaywge1xuICAgICAgcHJvcHM6IHtcbiAgICAgICAgaWQ6IGN0eC5pbnZhbGlkRmVlZGJhY2tJZCxcbiAgICAgICAgLy8gSWYgc3RhdGUgaXMgZXhwbGljaXRseSBmYWxzZSwgYWx3YXlzIHNob3cgdGhlIGZlZWRiYWNrXG4gICAgICAgIHN0YXRlOiBjdHguY29tcHV0ZWRTdGF0ZSxcbiAgICAgICAgdG9vbHRpcDogY3R4LnRvb2x0aXAsXG4gICAgICAgIGFyaWFMaXZlOiBjdHguZmVlZGJhY2tBcmlhTGl2ZSxcbiAgICAgICAgcm9sZTogY3R4LmZlZWRiYWNrQXJpYUxpdmUgPyAnYWxlcnQnIDogbnVsbFxuICAgICAgfSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHRhYmluZGV4OiBjb250ZW50ID8gJy0xJyA6IG51bGxcbiAgICAgIH1cbiAgICB9LCBbY29udGVudF0pO1xuICB9XG5cbiAgcmV0dXJuIGludmFsaWRGZWVkYmFjaztcbn07XG5cbnZhciByZW5kZXJWYWxpZEZlZWRiYWNrID0gZnVuY3Rpb24gcmVuZGVyVmFsaWRGZWVkYmFjayhoLCBjdHgpIHtcbiAgdmFyIGNvbnRlbnQgPSBjdHgubm9ybWFsaXplU2xvdCgndmFsaWQtZmVlZGJhY2snKSB8fCBjdHgudmFsaWRGZWVkYmFjaztcbiAgdmFyIHZhbGlkRmVlZGJhY2sgPSBoKCk7XG5cbiAgaWYgKGNvbnRlbnQpIHtcbiAgICB2YWxpZEZlZWRiYWNrID0gaChCRm9ybVZhbGlkRmVlZGJhY2ssIHtcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIGlkOiBjdHgudmFsaWRGZWVkYmFja0lkLFxuICAgICAgICAvLyBJZiBzdGF0ZSBpcyBleHBsaWNpdGx5IHRydWUsIGFsd2F5cyBzaG93IHRoZSBmZWVkYmFja1xuICAgICAgICBzdGF0ZTogY3R4LmNvbXB1dGVkU3RhdGUsXG4gICAgICAgIHRvb2x0aXA6IGN0eC50b29sdGlwLFxuICAgICAgICBhcmlhTGl2ZTogY3R4LmZlZWRiYWNrQXJpYUxpdmUsXG4gICAgICAgIHJvbGU6IGN0eC5mZWVkYmFja0FyaWFMaXZlID8gJ2FsZXJ0JyA6IG51bGxcbiAgICAgIH0sXG4gICAgICBhdHRyczoge1xuICAgICAgICB0YWJpbmRleDogY29udGVudCA/ICctMScgOiBudWxsXG4gICAgICB9XG4gICAgfSwgW2NvbnRlbnRdKTtcbiAgfVxuXG4gIHJldHVybiB2YWxpZEZlZWRiYWNrO1xufTtcblxudmFyIHJlbmRlckhlbHBUZXh0ID0gZnVuY3Rpb24gcmVuZGVySGVscFRleHQoaCwgY3R4KSB7XG4gIC8vIEZvcm0gaGVscCB0ZXh0IChkZXNjcmlwdGlvbilcbiAgdmFyIGNvbnRlbnQgPSBjdHgubm9ybWFsaXplU2xvdCgnZGVzY3JpcHRpb24nKSB8fCBjdHguZGVzY3JpcHRpb247XG4gIHZhciBkZXNjcmlwdGlvbiA9IGgoKTtcblxuICBpZiAoY29udGVudCkge1xuICAgIGRlc2NyaXB0aW9uID0gaChCRm9ybVRleHQsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGlkOiBjdHguZGVzY3JpcHRpb25JZCxcbiAgICAgICAgdGFiaW5kZXg6IGNvbnRlbnQgPyAnLTEnIDogbnVsbFxuICAgICAgfVxuICAgIH0sIFtjb250ZW50XSk7XG4gIH1cblxuICByZXR1cm4gZGVzY3JpcHRpb247XG59O1xuXG52YXIgcmVuZGVyTGFiZWwgPSBmdW5jdGlvbiByZW5kZXJMYWJlbChoLCBjdHgpIHtcbiAgLy8gUmVuZGVyIGxhYmVsL2xlZ2VuZCBpbnNpZGUgYi1jb2wgaWYgbmVjZXNzYXJ5XG4gIHZhciBjb250ZW50ID0gY3R4Lm5vcm1hbGl6ZVNsb3QoJ2xhYmVsJykgfHwgY3R4LmxhYmVsO1xuICB2YXIgbGFiZWxGb3IgPSBjdHgubGFiZWxGb3I7XG4gIHZhciBpc0xlZ2VuZCA9ICFsYWJlbEZvcjtcbiAgdmFyIGlzSG9yaXpvbnRhbCA9IGN0eC5pc0hvcml6b250YWw7XG4gIHZhciBsYWJlbFRhZyA9IGlzTGVnZW5kID8gJ2xlZ2VuZCcgOiAnbGFiZWwnO1xuXG4gIGlmICghY29udGVudCAmJiAhaXNIb3Jpem9udGFsKSB7XG4gICAgcmV0dXJuIGgoKTtcbiAgfSBlbHNlIGlmIChjdHgubGFiZWxTck9ubHkpIHtcbiAgICB2YXIgbGFiZWwgPSBoKCk7XG5cbiAgICBpZiAoY29udGVudCkge1xuICAgICAgbGFiZWwgPSBoKGxhYmVsVGFnLCB7XG4gICAgICAgIGNsYXNzOiAnc3Itb25seScsXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgaWQ6IGN0eC5sYWJlbElkLFxuICAgICAgICAgIGZvcjogbGFiZWxGb3IgfHwgbnVsbFxuICAgICAgICB9XG4gICAgICB9LCBbY29udGVudF0pO1xuICAgIH1cblxuICAgIHJldHVybiBoKGlzSG9yaXpvbnRhbCA/IEJDb2wgOiAnZGl2Jywge1xuICAgICAgcHJvcHM6IGlzSG9yaXpvbnRhbCA/IGN0eC5sYWJlbENvbFByb3BzIDoge31cbiAgICB9LCBbbGFiZWxdKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaChpc0hvcml6b250YWwgPyBCQ29sIDogbGFiZWxUYWcsIHtcbiAgICAgIG9uOiBpc0xlZ2VuZCA/IHtcbiAgICAgICAgY2xpY2s6IGN0eC5sZWdlbmRDbGlja1xuICAgICAgfSA6IHt9LFxuICAgICAgcHJvcHM6IGlzSG9yaXpvbnRhbCA/IF9vYmplY3RTcHJlYWQoe1xuICAgICAgICB0YWc6IGxhYmVsVGFnXG4gICAgICB9LCBjdHgubGFiZWxDb2xQcm9wcykgOiB7fSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGlkOiBjdHgubGFiZWxJZCxcbiAgICAgICAgZm9yOiBsYWJlbEZvciB8fCBudWxsLFxuICAgICAgICAvLyBXZSBhZGQgYSB0YWIgaW5kZXggdG8gbGVnZW5kIHNvIHRoYXQgc2NyZWVuIHJlYWRlcnNcbiAgICAgICAgLy8gd2lsbCBwcm9wZXJseSByZWFkIHRoZSBhcmlhLWxhYmVsbGVkYnkgaW4gSUUuXG4gICAgICAgIHRhYmluZGV4OiBpc0xlZ2VuZCA/ICctMScgOiBudWxsXG4gICAgICB9LFxuICAgICAgY2xhc3M6IFsvLyBXaGVuIGhvcml6b250YWwgb3IgaWYgYSBsZWdlbmQgaXMgcmVuZGVyZWQsIGFkZCBjb2wtZm9ybS1sYWJlbFxuICAgICAgLy8gZm9yIGNvcnJlY3Qgc2l6aW5nIGFzIEJvb3RzdHJhcCBoYXMgaW5jb25zaXN0ZW50IGZvbnQgc3R5bGluZ1xuICAgICAgLy8gZm9yIGxlZ2VuZCBpbiBub24taG9yaXpvbnRhbCBmb3JtLWdyb3Vwcy5cbiAgICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yNzgwNVxuICAgICAgaXNIb3Jpem9udGFsIHx8IGlzTGVnZW5kID8gJ2NvbC1mb3JtLWxhYmVsJyA6ICcnLCAvLyBFbXVsYXRlIGxhYmVsIHBhZGRpbmcgdG9wIG9mIDAgb24gbGVnZW5kIHdoZW4gbm90IGhvcml6b250YWxcbiAgICAgICFpc0hvcml6b250YWwgJiYgaXNMZWdlbmQgPyAncHQtMCcgOiAnJywgLy8gSWYgbm90IGhvcml6b250YWwgYW5kIG5vdCBhIGxlZ2VuZCwgd2UgYWRkIGQtYmxvY2sgdG8gbGFiZWxcbiAgICAgIC8vIHNvIHRoYXQgbGFiZWwtYWxpZ24gd29ya3NcbiAgICAgICFpc0hvcml6b250YWwgJiYgIWlzTGVnZW5kID8gJ2QtYmxvY2snIDogJycsIGN0eC5sYWJlbFNpemUgPyBcImNvbC1mb3JtLWxhYmVsLVwiLmNvbmNhdChjdHgubGFiZWxTaXplKSA6ICcnLCBjdHgubGFiZWxBbGlnbkNsYXNzZXMsIGN0eC5sYWJlbENsYXNzXVxuICAgIH0sIFtjb250ZW50XSk7XG4gIH1cbn07IC8vIC0tIEJGb3JtR3JvdXAgUHJvcCBmYWN0b3J5IC0tIHVzZWQgZm9yIGxhenkgZ2VuZXJhdGlvbiBvZiBwcm9wc1xuLy8gTWVtb2l6ZSB0aGlzIGZ1bmN0aW9uIHRvIHJldHVybiBjYWNoZWQgdmFsdWVzIHRvXG4vLyBzYXZlIHRpbWUgaW4gY29tcHV0ZWQgZnVuY3Rpb25zXG5cblxudmFyIG1ha2VQcm9wTmFtZSA9IG1lbW9pemUoZnVuY3Rpb24gKCkge1xuICB2YXIgYnJlYWtwb2ludCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogJyc7XG4gIHZhciBwcmVmaXggPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIFwiXCIuY29uY2F0KHByZWZpeCkuY29uY2F0KHVwcGVyRmlyc3QoYnJlYWtwb2ludCkpO1xufSk7IC8vIEJGb3JtR3JvdXAgcHJvcCBnZW5lcmF0b3IgZm9yIGxhenkgZ2VuZXJhdGlvbiBvZiBwcm9wc1xuXG52YXIgZ2VuZXJhdGVQcm9wcyA9IGZ1bmN0aW9uIGdlbmVyYXRlUHJvcHMoKSB7XG4gIHZhciBCUkVBS1BPSU5UUyA9IGdldEJyZWFrcG9pbnRzVXBDYWNoZWQoKTsgLy8gR2VuZXJhdGUgdGhlIGxhYmVsQ29sIGJyZWFrcG9pbnQgcHJvcHNcblxuICB2YXIgYnBMYWJlbENvbFByb3BzID0gQlJFQUtQT0lOVFMucmVkdWNlKGZ1bmN0aW9uIChwcm9wcywgYnJlYWtwb2ludCkge1xuICAgIC8vIGkuZS4gbGFiZWwtY29scywgbGFiZWwtY29scy1zbSwgbGFiZWwtY29scy1tZCwgLi4uXG4gICAgcHJvcHNbbWFrZVByb3BOYW1lKGJyZWFrcG9pbnQsICdsYWJlbENvbHMnKV0gPSB7XG4gICAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmcsIEJvb2xlYW5dLFxuICAgICAgZGVmYXVsdDogYnJlYWtwb2ludCA/IGZhbHNlIDogbnVsbFxuICAgIH07XG4gICAgcmV0dXJuIHByb3BzO1xuICB9LCBjcmVhdGUobnVsbCkpOyAvLyBHZW5lcmF0ZSB0aGUgbGFiZWxBbGlnbiBicmVha3BvaW50IHByb3BzXG5cbiAgdmFyIGJwTGFiZWxBbGlnblByb3BzID0gQlJFQUtQT0lOVFMucmVkdWNlKGZ1bmN0aW9uIChwcm9wcywgYnJlYWtwb2ludCkge1xuICAgIC8vIGxhYmVsLWFsaWduLCBsYWJlbC1hbGlnbi1zbSwgbGFiZWwtYWxpZ24tbWQsIC4uLlxuICAgIHByb3BzW21ha2VQcm9wTmFtZShicmVha3BvaW50LCAnbGFiZWxBbGlnbicpXSA9IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIC8vIGxlZnQsIHJpZ2h0LCBjZW50ZXJcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9O1xuICAgIHJldHVybiBwcm9wcztcbiAgfSwgY3JlYXRlKG51bGwpKTtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBsYWJlbEZvcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgbGFiZWxTaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBsYWJlbFNyT25seToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LCBicExhYmVsQ29sUHJvcHMsIHt9LCBicExhYmVsQWxpZ25Qcm9wcywge1xuICAgIGxhYmVsQ2xhc3M6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIEFycmF5LCBPYmplY3RdLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIGludmFsaWRGZWVkYmFjazoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgdmFsaWRGZWVkYmFjazoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgdG9vbHRpcDoge1xuICAgICAgLy8gRW5hYmxlIHRvb2x0aXAgc3R5bGUgZmVlZGJhY2tcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgZmVlZGJhY2tBcmlhTGl2ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2Fzc2VydGl2ZSdcbiAgICB9LFxuICAgIHZhbGlkYXRlZDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBkaXNhYmxlZDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9KTtcbn07IC8vIFdlIGRvIG5vdCB1c2UgVnVlLmV4dGVuZCBoZXJlIGFzIHRoYXQgd291bGQgZXZhbHVhdGUgdGhlIHByb3BzXG4vLyBpbW1lZGlhdGVseSwgd2hpY2ggd2UgZG8gbm90IHdhbnQgdG8gaGFwcGVuXG4vLyBAdnVlL2NvbXBvbmVudFxuXG5cbmV4cG9ydCB2YXIgQkZvcm1Hcm91cCA9IHtcbiAgbmFtZTogTkFNRSxcbiAgbWl4aW5zOiBbaWRNaXhpbiwgZm9ybVN0YXRlTWl4aW4sIG5vcm1hbGl6ZVNsb3RNaXhpbl0sXG5cbiAgZ2V0IHByb3BzKCkge1xuICAgIC8vIEFsbG93IHByb3BzIHRvIGJlIGxhenkgZXZhbGVkIG9uIGZpcnN0IGFjY2VzcyBhbmRcbiAgICAvLyB0aGVuIHRoZXkgYmVjb21lIGEgbm9uLWdldHRlciBhZnRlcndhcmRzLlxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0Z1bmN0aW9ucy9nZXQjU21hcnRfc2VsZi1vdmVyd3JpdGluZ19sYXp5X2dldHRlcnNcbiAgICBkZWxldGUgdGhpcy5wcm9wczsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJldHVybi1hc3NpZ25cblxuICAgIHJldHVybiB0aGlzLnByb3BzID0gZ2VuZXJhdGVQcm9wcygpO1xuICB9LFxuXG4gIGNvbXB1dGVkOiB7XG4gICAgbGFiZWxDb2xQcm9wczogZnVuY3Rpb24gbGFiZWxDb2xQcm9wcygpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBwcm9wcyA9IHt9O1xuICAgICAgZ2V0QnJlYWtwb2ludHNVcENhY2hlZCgpLmZvckVhY2goZnVuY3Rpb24gKGJyZWFrcG9pbnQpIHtcbiAgICAgICAgLy8gR3JhYiB0aGUgdmFsdWUgaWYgdGhlIGxhYmVsIGNvbHVtbiBicmVha3BvaW50IHByb3BcbiAgICAgICAgdmFyIHByb3BWYWwgPSBfdGhpc1ttYWtlUHJvcE5hbWUoYnJlYWtwb2ludCwgJ2xhYmVsQ29scycpXTsgLy8gSGFuZGxlIGNhc2Ugd2hlcmUgdGhlIHByb3AncyB2YWx1ZSBpcyBhbiBlbXB0eSBzdHJpbmcsXG4gICAgICAgIC8vIHdoaWNoIHJlcHJlc2VudHMgdHJ1ZVxuXG5cbiAgICAgICAgcHJvcFZhbCA9IHByb3BWYWwgPT09ICcnID8gdHJ1ZSA6IHByb3BWYWwgfHwgZmFsc2U7XG5cbiAgICAgICAgaWYgKCFpc0Jvb2xlYW4ocHJvcFZhbCkpIHtcbiAgICAgICAgICAvLyBDb252ZXJ0IHRvIGNvbHVtbiBzaXplIHRvIG51bWJlclxuICAgICAgICAgIHByb3BWYWwgPSBwYXJzZUludChwcm9wVmFsLCAxMCkgfHwgMDsgLy8gRW5zdXJlIGNvbHVtbiBzaXplIGlzIGdyZWF0ZXIgdGhhbiAwXG5cbiAgICAgICAgICBwcm9wVmFsID0gcHJvcFZhbCA+IDAgPyBwcm9wVmFsIDogZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcFZhbCkge1xuICAgICAgICAgIC8vIEFkZCB0aGUgcHJvcCB0byB0aGUgbGlzdCBvZiBwcm9wcyB0byBnaXZlIHRvIGItY29sXG4gICAgICAgICAgLy8gSWYgYnJlYWtwb2ludCBpcyAnJyAobGFiZWxDb2xzPXRydWUpLCB0aGVuIHdlIHVzZSB0aGVcbiAgICAgICAgICAvLyBjb2wgcHJvcCB0byBtYWtlIGVxdWFsIHdpZHRoIGF0IHhzXG4gICAgICAgICAgdmFyIGJDb2xQcm9wTmFtZSA9IGJyZWFrcG9pbnQgfHwgKGlzQm9vbGVhbihwcm9wVmFsKSA/ICdjb2wnIDogJ2NvbHMnKTsgLy8gQWRkIGl0IHRvIHRoZSBwcm9wc1xuXG4gICAgICAgICAgcHJvcHNbYkNvbFByb3BOYW1lXSA9IHByb3BWYWw7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHByb3BzO1xuICAgIH0sXG4gICAgbGFiZWxBbGlnbkNsYXNzZXM6IGZ1bmN0aW9uIGxhYmVsQWxpZ25DbGFzc2VzKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBjbGFzc2VzID0gW107XG4gICAgICBnZXRCcmVha3BvaW50c1VwQ2FjaGVkKCkuZm9yRWFjaChmdW5jdGlvbiAoYnJlYWtwb2ludCkge1xuICAgICAgICAvLyBBc3NlbWJsZSB0aGUgbGFiZWwgY29sdW1uIGJyZWFrcG9pbnQgYWxpZ24gY2xhc3Nlc1xuICAgICAgICB2YXIgcHJvcFZhbCA9IF90aGlzMlttYWtlUHJvcE5hbWUoYnJlYWtwb2ludCwgJ2xhYmVsQWxpZ24nKV0gfHwgbnVsbDtcblxuICAgICAgICBpZiAocHJvcFZhbCkge1xuICAgICAgICAgIHZhciBjbGFzc05hbWUgPSBicmVha3BvaW50ID8gXCJ0ZXh0LVwiLmNvbmNhdChicmVha3BvaW50LCBcIi1cIikuY29uY2F0KHByb3BWYWwpIDogXCJ0ZXh0LVwiLmNvbmNhdChwcm9wVmFsKTtcbiAgICAgICAgICBjbGFzc2VzLnB1c2goY2xhc3NOYW1lKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gY2xhc3NlcztcbiAgICB9LFxuICAgIGlzSG9yaXpvbnRhbDogZnVuY3Rpb24gaXNIb3Jpem9udGFsKCkge1xuICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSByZXN1bHRhbnQgZm9ybS1ncm91cCB3aWxsIGJlIHJlbmRlcmVkXG4gICAgICAvLyBob3Jpem9udGFsIChtZWFuaW5nIGl0IGhhcyBsYWJlbC1jb2wgYnJlYWtwb2ludHMpXG4gICAgICByZXR1cm4ga2V5cyh0aGlzLmxhYmVsQ29sUHJvcHMpLmxlbmd0aCA+IDA7XG4gICAgfSxcbiAgICBsYWJlbElkOiBmdW5jdGlvbiBsYWJlbElkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGFzTm9ybWFsaXplZFNsb3QoJ2xhYmVsJykgfHwgdGhpcy5sYWJlbCA/IHRoaXMuc2FmZUlkKCdfQlZfbGFiZWxfJykgOiBudWxsO1xuICAgIH0sXG4gICAgZGVzY3JpcHRpb25JZDogZnVuY3Rpb24gZGVzY3JpcHRpb25JZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmhhc05vcm1hbGl6ZWRTbG90KCdkZXNjcmlwdGlvbicpIHx8IHRoaXMuZGVzY3JpcHRpb24gPyB0aGlzLnNhZmVJZCgnX0JWX2Rlc2NyaXB0aW9uXycpIDogbnVsbDtcbiAgICB9LFxuICAgIGhhc0ludmFsaWRGZWVkYmFjazogZnVuY3Rpb24gaGFzSW52YWxpZEZlZWRiYWNrKCkge1xuICAgICAgLy8gVXNlZCBmb3IgY29tcHV0aW5nIGFyaWEtZGVzY3JpYmVkYnlcbiAgICAgIHJldHVybiB0aGlzLmNvbXB1dGVkU3RhdGUgPT09IGZhbHNlICYmICh0aGlzLmhhc05vcm1hbGl6ZWRTbG90KCdpbnZhbGlkLWZlZWRiYWNrJykgfHwgdGhpcy5pbnZhbGlkRmVlZGJhY2spO1xuICAgIH0sXG4gICAgaW52YWxpZEZlZWRiYWNrSWQ6IGZ1bmN0aW9uIGludmFsaWRGZWVkYmFja0lkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGFzSW52YWxpZEZlZWRiYWNrID8gdGhpcy5zYWZlSWQoJ19CVl9mZWVkYmFja19pbnZhbGlkXycpIDogbnVsbDtcbiAgICB9LFxuICAgIGhhc1ZhbGlkRmVlZGJhY2s6IGZ1bmN0aW9uIGhhc1ZhbGlkRmVlZGJhY2soKSB7XG4gICAgICAvLyBVc2VkIGZvciBjb21wdXRpbmcgYXJpYS1kZXNjcmliZWRieVxuICAgICAgcmV0dXJuIHRoaXMuY29tcHV0ZWRTdGF0ZSA9PT0gdHJ1ZSAmJiAodGhpcy5oYXNOb3JtYWxpemVkU2xvdCgndmFsaWQtZmVlZGJhY2snKSB8fCB0aGlzLnZhbGlkRmVlZGJhY2spO1xuICAgIH0sXG4gICAgdmFsaWRGZWVkYmFja0lkOiBmdW5jdGlvbiB2YWxpZEZlZWRiYWNrSWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5oYXNWYWxpZEZlZWRiYWNrID8gdGhpcy5zYWZlSWQoJ19CVl9mZWVkYmFja192YWxpZF8nKSA6IG51bGw7XG4gICAgfSxcbiAgICBkZXNjcmliZWRCeUlkczogZnVuY3Rpb24gZGVzY3JpYmVkQnlJZHMoKSB7XG4gICAgICAvLyBTY3JlZW4gcmVhZGVycyB3aWxsIHJlYWQgb3V0IGFueSBjb250ZW50IGxpbmtlZCB0byBieSBhcmlhLWRlc2NyaWJlZGJ5XG4gICAgICAvLyBldmVuIGlmIHRoZSBjb250ZW50IGlzIGhpZGRlbiB3aXRoIGBkaXNwbGF5OiBub25lO2AsIGhlbmNlIHdlIG9ubHkgaW5jbHVkZVxuICAgICAgLy8gZmVlZGJhY2sgSURzIGlmIHRoZSBmb3JtLWdyb3VwJ3Mgc3RhdGUgaXMgZXhwbGljaXRseSB2YWxpZCBvciBpbnZhbGlkLlxuICAgICAgcmV0dXJuIFt0aGlzLmRlc2NyaXB0aW9uSWQsIHRoaXMuaW52YWxpZEZlZWRiYWNrSWQsIHRoaXMudmFsaWRGZWVkYmFja0lkXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpIHx8IG51bGw7XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIGRlc2NyaWJlZEJ5SWRzOiBmdW5jdGlvbiBkZXNjcmliZWRCeUlkcyhhZGQsIHJlbW92ZSkge1xuICAgICAgaWYgKGFkZCAhPT0gcmVtb3ZlKSB7XG4gICAgICAgIHRoaXMuc2V0SW5wdXREZXNjcmliZWRCeShhZGQsIHJlbW92ZSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgLy8gU2V0IHRoZSBhcmlhLWRlc2NyaWJlZGJ5IElEcyBvbiB0aGUgaW5wdXQgc3BlY2lmaWVkIGJ5IGxhYmVsLWZvclxuICAgICAgLy8gV2UgZG8gdGhpcyBpbiBhIG5leHRUaWNrIHRvIGVuc3VyZSB0aGUgY2hpbGRyZW4gaGF2ZSBmaW5pc2hlZCByZW5kZXJpbmdcbiAgICAgIF90aGlzMy5zZXRJbnB1dERlc2NyaWJlZEJ5KF90aGlzMy5kZXNjcmliZWRCeUlkcyk7XG4gICAgfSk7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBsZWdlbmRDbGljazogZnVuY3Rpb24gbGVnZW5kQ2xpY2soZXZ0KSB7XG4gICAgICBpZiAodGhpcy5sYWJlbEZvcikge1xuICAgICAgICAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiBsYWJlbEZvciBpcyBzZXRcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogY2xpY2tpbmcgYSBsYWJlbCB3aWxsIGZvY3VzIHRoZSBpbnB1dCwgc28gbm8gbmVlZCB0byB0ZXN0ICovXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIHRhZ05hbWUgPSBldnQudGFyZ2V0ID8gZXZ0LnRhcmdldC50YWdOYW1lIDogJyc7XG5cbiAgICAgIGlmICgvXihpbnB1dHxzZWxlY3R8dGV4dGFyZWF8bGFiZWx8YnV0dG9ufGEpJC9pLnRlc3QodGFnTmFtZSkpIHtcbiAgICAgICAgLy8gSWYgY2xpY2tlZCBhbiBpbnRlcmFjdGl2ZSBlbGVtZW50IGluc2lkZSBsZWdlbmQsXG4gICAgICAgIC8vIHdlIGp1c3QgbGV0IHRoZSBkZWZhdWx0IGhhcHBlblxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIGlucHV0cyA9IHNlbGVjdEFsbChTRUxFQ1RPUiwgdGhpcy4kcmVmcy5jb250ZW50KS5maWx0ZXIoaXNWaXNpYmxlKTtcblxuICAgICAgaWYgKGlucHV0cyAmJiBpbnB1dHMubGVuZ3RoID09PSAxICYmIGlucHV0c1swXS5mb2N1cykge1xuICAgICAgICAvLyBpZiBvbmx5IGEgc2luZ2xlIGlucHV0LCBmb2N1cyBpdCwgZW11bGF0aW5nIGxhYmVsIGJlaGF2aW91clxuICAgICAgICBpbnB1dHNbMF0uZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNldElucHV0RGVzY3JpYmVkQnk6IGZ1bmN0aW9uIHNldElucHV0RGVzY3JpYmVkQnkoYWRkLCByZW1vdmUpIHtcbiAgICAgIC8vIFNldHMgdGhlIGBhcmlhLWRlc2NyaWJlZGJ5YCBhdHRyaWJ1dGUgb24gdGhlIGlucHV0IGlmIGxhYmVsLWZvciBpcyBzZXQuXG4gICAgICAvLyBPcHRpb25hbGx5IGFjY2VwdHMgYSBzdHJpbmcgb2YgSURzIHRvIHJlbW92ZSBhcyB0aGUgc2Vjb25kIHBhcmFtZXRlci5cbiAgICAgIC8vIFByZXNlcnZlcyBhbnkgYXJpYS1kZXNjcmliZWRieSB2YWx1ZShzKSB1c2VyIG1heSBoYXZlIG9uIGlucHV0LlxuICAgICAgaWYgKHRoaXMubGFiZWxGb3IgJiYgaXNCcm93c2VyKSB7XG4gICAgICAgIHZhciBpbnB1dCA9IHNlbGVjdChcIiNcIi5jb25jYXQodGhpcy5sYWJlbEZvciksIHRoaXMuJHJlZnMuY29udGVudCk7XG5cbiAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgdmFyIGFkYiA9ICdhcmlhLWRlc2NyaWJlZGJ5JztcbiAgICAgICAgICB2YXIgaWRzID0gKGdldEF0dHIoaW5wdXQsIGFkYikgfHwgJycpLnNwbGl0KC9cXHMrLyk7XG4gICAgICAgICAgYWRkID0gKGFkZCB8fCAnJykuc3BsaXQoL1xccysvKTtcbiAgICAgICAgICByZW1vdmUgPSAocmVtb3ZlIHx8ICcnKS5zcGxpdCgvXFxzKy8pOyAvLyBVcGRhdGUgSUQgbGlzdCwgcHJlc2VydmluZyBhbnkgb3JpZ2luYWwgSURzXG4gICAgICAgICAgLy8gYW5kIGVuc3VyaW5nIHRoZSBJRCdzIGFyZSB1bmlxdWVcblxuICAgICAgICAgIGlkcyA9IGlkcy5maWx0ZXIoZnVuY3Rpb24gKGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gIWFycmF5SW5jbHVkZXMocmVtb3ZlLCBpZCk7XG4gICAgICAgICAgfSkuY29uY2F0KGFkZCkuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICAgIGlkcyA9IGtleXMoaWRzLnJlZHVjZShmdW5jdGlvbiAobWVtbywgaWQpIHtcbiAgICAgICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKHt9LCBtZW1vLCBfZGVmaW5lUHJvcGVydHkoe30sIGlkLCB0cnVlKSk7XG4gICAgICAgICAgfSwge30pKS5qb2luKCcgJykudHJpbSgpO1xuXG4gICAgICAgICAgaWYgKGlkcykge1xuICAgICAgICAgICAgc2V0QXR0cihpbnB1dCwgYWRiLCBpZHMpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBObyBJRHMsIHNvIHJlbW92ZSB0aGUgYXR0cmlidXRlXG4gICAgICAgICAgICByZW1vdmVBdHRyKGlucHV0LCBhZGIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBpc0ZpZWxkc2V0ID0gIXRoaXMubGFiZWxGb3I7XG4gICAgdmFyIGlzSG9yaXpvbnRhbCA9IHRoaXMuaXNIb3Jpem9udGFsOyAvLyBHZW5lcmF0ZSB0aGUgbGFiZWxcblxuICAgIHZhciBsYWJlbCA9IHJlbmRlckxhYmVsKGgsIHRoaXMpOyAvLyBHZW5lcmF0ZSB0aGUgY29udGVudFxuXG4gICAgdmFyIGNvbnRlbnQgPSBoKGlzSG9yaXpvbnRhbCA/IEJDb2wgOiAnZGl2Jywge1xuICAgICAgcmVmOiAnY29udGVudCcsXG4gICAgICBhdHRyczoge1xuICAgICAgICB0YWJpbmRleDogaXNGaWVsZHNldCA/ICctMScgOiBudWxsLFxuICAgICAgICByb2xlOiBpc0ZpZWxkc2V0ID8gJ2dyb3VwJyA6IG51bGxcbiAgICAgIH1cbiAgICB9LCBbdGhpcy5ub3JtYWxpemVTbG90KCdkZWZhdWx0JykgfHwgaCgpLCByZW5kZXJJbnZhbGlkRmVlZGJhY2soaCwgdGhpcyksIHJlbmRlclZhbGlkRmVlZGJhY2soaCwgdGhpcyksIHJlbmRlckhlbHBUZXh0KGgsIHRoaXMpXSk7IC8vIENyZWF0ZSB0aGUgZm9ybS1ncm91cFxuXG4gICAgdmFyIGRhdGEgPSB7XG4gICAgICBzdGF0aWNDbGFzczogJ2Zvcm0tZ3JvdXAnLFxuICAgICAgY2xhc3M6IFt0aGlzLnZhbGlkYXRlZCA/ICd3YXMtdmFsaWRhdGVkJyA6IG51bGwsIHRoaXMuc3RhdGVDbGFzc10sXG4gICAgICBhdHRyczoge1xuICAgICAgICBpZDogdGhpcy5zYWZlSWQoKSxcbiAgICAgICAgZGlzYWJsZWQ6IGlzRmllbGRzZXQgPyB0aGlzLmRpc2FibGVkIDogbnVsbCxcbiAgICAgICAgcm9sZTogaXNGaWVsZHNldCA/IG51bGwgOiAnZ3JvdXAnLFxuICAgICAgICAnYXJpYS1pbnZhbGlkJzogdGhpcy5jb21wdXRlZFN0YXRlID09PSBmYWxzZSA/ICd0cnVlJyA6IG51bGwsXG4gICAgICAgIC8vIE9ubHkgYXBwbHkgYXJpYS1sYWJlbGxlZGJ5IGlmIHdlIGFyZSBhIGhvcml6b250YWwgZmllbGRzZXRcbiAgICAgICAgLy8gYXMgdGhlIGxlZ2VuZCBpcyBubyBsb25nZXIgYSBkaXJlY3QgY2hpbGQgb2YgZmllbGRzZXRcbiAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IGlzRmllbGRzZXQgJiYgaXNIb3Jpem9udGFsID8gdGhpcy5sYWJlbElkIDogbnVsbCxcbiAgICAgICAgLy8gT25seSBhcHBseSBhcmlhLWRlc2NyaWJlZGJ5IElEcyBpZiB3ZSBhcmUgYSBmaWVsZHNldFxuICAgICAgICAvLyBhcyB0aGUgaW5wdXQgd2lsbCBoYXZlIHRoZSBJRHMgd2hlbiBub3QgYSBmaWVsZHNldFxuICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc6IGlzRmllbGRzZXQgPyB0aGlzLmRlc2NyaWJlZEJ5SWRzIDogbnVsbFxuICAgICAgfVxuICAgIH07IC8vIFJldHVybiBpdCB3cmFwcGVkIGluIGEgZm9ybS1ncm91cFxuICAgIC8vIE5vdGU6IEZpZWxkc2V0cyBkbyBub3Qgc3VwcG9ydCBhZGRpbmcgYHJvd2Agb3IgYGZvcm0tcm93YCBkaXJlY3RseVxuICAgIC8vIHRvIHRoZW0gZHVlIHRvIGJyb3dzZXIgc3BlY2lmaWMgcmVuZGVyIGlzc3Vlcywgc28gd2UgbW92ZSB0aGUgYGZvcm0tcm93YFxuICAgIC8vIHRvIGFuIGlubmVyIHdyYXBwZXIgZGl2IHdoZW4gaG9yaXpvbnRhbCBhbmQgdXNpbmcgYSBmaWVsZHNldFxuXG4gICAgcmV0dXJuIGgoaXNGaWVsZHNldCA/ICdmaWVsZHNldCcgOiBpc0hvcml6b250YWwgPyBCRm9ybVJvdyA6ICdkaXYnLCBkYXRhLCBpc0hvcml6b250YWwgJiYgaXNGaWVsZHNldCA/IFtoKEJGb3JtUm93LCB7fSwgW2xhYmVsLCBjb250ZW50XSldIDogW2xhYmVsLCBjb250ZW50XSk7XG4gIH1cbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWdyb3VwL2Zvcm0tZ3JvdXAuanNcbi8vIG1vZHVsZSBpZCA9IDE0MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///140\n"); /***/ }), /* 141 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BFormCheckboxGroup; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_form__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mixins_form_options__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mixins_form_radio_check_group__ = __webpack_require__(142);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__mixins_form_size__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_form_state__ = __webpack_require__(16);\n\n\n\n\n\n\n\nvar props = {\n switches: {\n // Custom switch styling\n type: Boolean,\n default: false\n },\n checked: {\n type: Array,\n default: null\n }\n}; // @vue/component\n\nvar BFormCheckboxGroup =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BFormCheckboxGroup',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_form__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__mixins_form_radio_check_group__[\"a\" /* default */], // Includes render function\n __WEBPACK_IMPORTED_MODULE_3__mixins_form_options__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__mixins_form_size__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__mixins_form_state__[\"a\" /* default */]],\n provide: function provide() {\n return {\n bvCheckGroup: this\n };\n },\n props: props,\n data: function data() {\n return {\n localChecked: this.checked || []\n };\n },\n computed: {\n isRadioGroup: function isRadioGroup() {\n return false;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWNoZWNrYm94L2Zvcm0tY2hlY2tib3gtZ3JvdXAuanM/MjA4YSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDSTtBQUNJO0FBQ2U7QUFDa0I7QUFDeEI7QUFDRTtBQUM5QztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsMkRBQU8sRUFBRSw2REFBUyxFQUFFLCtFQUF3QjtBQUN2RCxFQUFFLHFFQUFnQixFQUFFLGtFQUFhLEVBQUUsbUVBQWM7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNDEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgaWRNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvaWQnO1xuaW1wb3J0IGZvcm1NaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvZm9ybSc7XG5pbXBvcnQgZm9ybU9wdGlvbnNNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvZm9ybS1vcHRpb25zJztcbmltcG9ydCBmb3JtUmFkaW9DaGVja0dyb3VwTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tcmFkaW8tY2hlY2stZ3JvdXAnO1xuaW1wb3J0IGZvcm1TaXplTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tc2l6ZSc7XG5pbXBvcnQgZm9ybVN0YXRlTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tc3RhdGUnO1xuZXhwb3J0IHZhciBwcm9wcyA9IHtcbiAgc3dpdGNoZXM6IHtcbiAgICAvLyBDdXN0b20gc3dpdGNoIHN0eWxpbmdcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIGNoZWNrZWQ6IHtcbiAgICB0eXBlOiBBcnJheSxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkZvcm1DaGVja2JveEdyb3VwID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQkZvcm1DaGVja2JveEdyb3VwJyxcbiAgbWl4aW5zOiBbaWRNaXhpbiwgZm9ybU1peGluLCBmb3JtUmFkaW9DaGVja0dyb3VwTWl4aW4sIC8vIEluY2x1ZGVzIHJlbmRlciBmdW5jdGlvblxuICBmb3JtT3B0aW9uc01peGluLCBmb3JtU2l6ZU1peGluLCBmb3JtU3RhdGVNaXhpbl0sXG4gIHByb3ZpZGU6IGZ1bmN0aW9uIHByb3ZpZGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJ2Q2hlY2tHcm91cDogdGhpc1xuICAgIH07XG4gIH0sXG4gIHByb3BzOiBwcm9wcyxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYWxDaGVja2VkOiB0aGlzLmNoZWNrZWQgfHwgW11cbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGlzUmFkaW9Hcm91cDogZnVuY3Rpb24gaXNSYWRpb0dyb3VwKCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWNoZWNrYm94L2Zvcm0tY2hlY2tib3gtZ3JvdXAuanNcbi8vIG1vZHVsZSBpZCA9IDE0MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///141\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return FormCheckboxPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__form_checkbox__ = __webpack_require__(70);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__form_checkbox_group__ = __webpack_require__(143);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BFormCheckbox */\n/* unused harmony reexport BFormCheckboxGroup */\n\n\n\nvar FormCheckboxPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BFormCheckbox: __WEBPACK_IMPORTED_MODULE_0__form_checkbox__[\"a\" /* BFormCheckbox */],\n BCheckbox: __WEBPACK_IMPORTED_MODULE_0__form_checkbox__[\"a\" /* BFormCheckbox */],\n BCheck: __WEBPACK_IMPORTED_MODULE_0__form_checkbox__[\"a\" /* BFormCheckbox */],\n BFormCheckboxGroup: __WEBPACK_IMPORTED_MODULE_1__form_checkbox_group__[\"a\" /* BFormCheckboxGroup */],\n BCheckboxGroup: __WEBPACK_IMPORTED_MODULE_1__form_checkbox_group__[\"a\" /* BFormCheckboxGroup */],\n BCheckGroup: __WEBPACK_IMPORTED_MODULE_1__form_checkbox_group__[\"a\" /* BFormCheckboxGroup */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWNoZWNrYm94L2luZGV4LmpzPzE1MGEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWdEO0FBQ1c7QUFDUDtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLG1CQUFtQixxRUFBYTtBQUNoQyxlQUFlLHFFQUFhO0FBQzVCLFlBQVkscUVBQWE7QUFDekIsd0JBQXdCLGdGQUFrQjtBQUMxQyxvQkFBb0IsZ0ZBQWtCO0FBQ3RDLGlCQUFpQixnRkFBa0I7QUFDbkM7QUFDQSxDQUFDIiwiZmlsZSI6IjE0MS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJGb3JtQ2hlY2tib3ggfSBmcm9tICcuL2Zvcm0tY2hlY2tib3gnO1xuaW1wb3J0IHsgQkZvcm1DaGVja2JveEdyb3VwIH0gZnJvbSAnLi9mb3JtLWNoZWNrYm94LWdyb3VwJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBGb3JtQ2hlY2tib3hQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCRm9ybUNoZWNrYm94OiBCRm9ybUNoZWNrYm94LFxuICAgIEJDaGVja2JveDogQkZvcm1DaGVja2JveCxcbiAgICBCQ2hlY2s6IEJGb3JtQ2hlY2tib3gsXG4gICAgQkZvcm1DaGVja2JveEdyb3VwOiBCRm9ybUNoZWNrYm94R3JvdXAsXG4gICAgQkNoZWNrYm94R3JvdXA6IEJGb3JtQ2hlY2tib3hHcm91cCxcbiAgICBCQ2hlY2tHcm91cDogQkZvcm1DaGVja2JveEdyb3VwXG4gIH1cbn0pO1xuZXhwb3J0IHsgRm9ybUNoZWNrYm94UGx1Z2luLCBCRm9ybUNoZWNrYm94LCBCRm9ybUNoZWNrYm94R3JvdXAgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Zvcm0tY2hlY2tib3gvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE0MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///141\n"); /***/ }), /* 142 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_html__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__components_form_checkbox_form_checkbox__ = __webpack_require__(70);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__components_form_radio_form_radio__ = __webpack_require__(71);\n\n\n\n // @vue/component\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n mixins: [__WEBPACK_IMPORTED_MODULE_1__normalize_slot__[\"a\" /* default */]],\n model: {\n prop: 'checked',\n event: 'input'\n },\n props: {\n validated: {\n type: Boolean,\n default: false\n },\n ariaInvalid: {\n type: [Boolean, String],\n default: false\n },\n stacked: {\n type: Boolean,\n default: false\n },\n plain: {\n type: Boolean,\n default: false\n },\n buttons: {\n // Render as button style\n type: Boolean,\n default: false\n },\n buttonVariant: {\n // Only applicable when rendered with button style\n type: String,\n default: 'secondary'\n }\n },\n computed: {\n inline: function inline() {\n return !this.stacked;\n },\n groupName: function groupName() {\n // Checks/Radios tied to the same model must have the same name,\n // especially for ARIA accessibility.\n return this.name || this.safeId();\n },\n groupClasses: function groupClasses() {\n if (this.buttons) {\n return ['btn-group-toggle', this.inline ? 'btn-group' : 'btn-group-vertical', this.size ? \"btn-group-\".concat(this.size) : '', this.validated ? \"was-validated\" : ''];\n }\n\n return [this.validated ? \"was-validated\" : ''];\n },\n computedAriaInvalid: function computedAriaInvalid() {\n var ariaInvalid = this.ariaInvalid;\n\n if (ariaInvalid === true || ariaInvalid === 'true' || ariaInvalid === '') {\n return 'true';\n }\n\n return this.computedState === false ? 'true' : null;\n }\n },\n watch: {\n checked: function checked(newVal, oldVal) {\n this.localChecked = newVal;\n },\n localChecked: function localChecked(newVal, oldVal) {\n this.$emit('input', newVal);\n }\n },\n render: function render(h) {\n var _this = this;\n\n var inputs = this.formOptions.map(function (option, idx) {\n var uid = \"_BV_option_\".concat(idx, \"_\");\n return h(_this.isRadioGroup ? __WEBPACK_IMPORTED_MODULE_3__components_form_radio_form_radio__[\"a\" /* BFormRadio */] : __WEBPACK_IMPORTED_MODULE_2__components_form_checkbox_form_checkbox__[\"a\" /* BFormCheckbox */], {\n key: uid,\n props: {\n id: _this.safeId(uid),\n value: option.value,\n // Individual radios or checks can be disabled in a group\n disabled: option.disabled || false // We don't need to include these, since the input's will know they are inside here\n // name: this.groupName,\n // form: this.form || null,\n // required: Boolean(this.name && this.required)\n\n }\n }, [h('span', {\n domProps: Object(__WEBPACK_IMPORTED_MODULE_0__utils_html__[\"a\" /* htmlOrText */])(option.html, option.text)\n })]);\n });\n return h('div', {\n class: this.groupClasses,\n attrs: {\n id: this.safeId(),\n role: this.isRadioGroup ? 'radiogroup' : 'group',\n // Tabindex to allow group to be focused if needed\n tabindex: '-1',\n 'aria-required': this.required ? 'true' : null,\n 'aria-invalid': this.computedAriaInvalid\n }\n }, [this.normalizeSlot('first'), inputs, this.normalizeSlot('default')]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vbWl4aW5zL2Zvcm0tcmFkaW8tY2hlY2stZ3JvdXAuanM/ZTYzOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEyQztBQUNPO0FBQ3dCO0FBQ1Q7O0FBRWxEO0FBQ2YsV0FBVyxnRUFBa0I7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxvQ0FBb0MscUZBQVUsR0FBRyw4RkFBYTtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1Asa0JBQWtCLHVFQUFVO0FBQzVCLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjE0Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGh0bWxPclRleHQgfSBmcm9tICcuLi91dGlscy9odG1sJztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi9ub3JtYWxpemUtc2xvdCc7XG5pbXBvcnQgeyBCRm9ybUNoZWNrYm94IH0gZnJvbSAnLi4vY29tcG9uZW50cy9mb3JtLWNoZWNrYm94L2Zvcm0tY2hlY2tib3gnO1xuaW1wb3J0IHsgQkZvcm1SYWRpbyB9IGZyb20gJy4uL2NvbXBvbmVudHMvZm9ybS1yYWRpby9mb3JtLXJhZGlvJzsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IGRlZmF1bHQge1xuICBtaXhpbnM6IFtub3JtYWxpemVTbG90TWl4aW5dLFxuICBtb2RlbDoge1xuICAgIHByb3A6ICdjaGVja2VkJyxcbiAgICBldmVudDogJ2lucHV0J1xuICB9LFxuICBwcm9wczoge1xuICAgIHZhbGlkYXRlZDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBhcmlhSW52YWxpZDoge1xuICAgICAgdHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgc3RhY2tlZDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBwbGFpbjoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBidXR0b25zOiB7XG4gICAgICAvLyBSZW5kZXIgYXMgYnV0dG9uIHN0eWxlXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGJ1dHRvblZhcmlhbnQ6IHtcbiAgICAgIC8vIE9ubHkgYXBwbGljYWJsZSB3aGVuIHJlbmRlcmVkIHdpdGggYnV0dG9uIHN0eWxlXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnc2Vjb25kYXJ5J1xuICAgIH1cbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBpbmxpbmU6IGZ1bmN0aW9uIGlubGluZSgpIHtcbiAgICAgIHJldHVybiAhdGhpcy5zdGFja2VkO1xuICAgIH0sXG4gICAgZ3JvdXBOYW1lOiBmdW5jdGlvbiBncm91cE5hbWUoKSB7XG4gICAgICAvLyBDaGVja3MvUmFkaW9zIHRpZWQgdG8gdGhlIHNhbWUgbW9kZWwgbXVzdCBoYXZlIHRoZSBzYW1lIG5hbWUsXG4gICAgICAvLyBlc3BlY2lhbGx5IGZvciBBUklBIGFjY2Vzc2liaWxpdHkuXG4gICAgICByZXR1cm4gdGhpcy5uYW1lIHx8IHRoaXMuc2FmZUlkKCk7XG4gICAgfSxcbiAgICBncm91cENsYXNzZXM6IGZ1bmN0aW9uIGdyb3VwQ2xhc3NlcygpIHtcbiAgICAgIGlmICh0aGlzLmJ1dHRvbnMpIHtcbiAgICAgICAgcmV0dXJuIFsnYnRuLWdyb3VwLXRvZ2dsZScsIHRoaXMuaW5saW5lID8gJ2J0bi1ncm91cCcgOiAnYnRuLWdyb3VwLXZlcnRpY2FsJywgdGhpcy5zaXplID8gXCJidG4tZ3JvdXAtXCIuY29uY2F0KHRoaXMuc2l6ZSkgOiAnJywgdGhpcy52YWxpZGF0ZWQgPyBcIndhcy12YWxpZGF0ZWRcIiA6ICcnXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFt0aGlzLnZhbGlkYXRlZCA/IFwid2FzLXZhbGlkYXRlZFwiIDogJyddO1xuICAgIH0sXG4gICAgY29tcHV0ZWRBcmlhSW52YWxpZDogZnVuY3Rpb24gY29tcHV0ZWRBcmlhSW52YWxpZCgpIHtcbiAgICAgIHZhciBhcmlhSW52YWxpZCA9IHRoaXMuYXJpYUludmFsaWQ7XG5cbiAgICAgIGlmIChhcmlhSW52YWxpZCA9PT0gdHJ1ZSB8fCBhcmlhSW52YWxpZCA9PT0gJ3RydWUnIHx8IGFyaWFJbnZhbGlkID09PSAnJykge1xuICAgICAgICByZXR1cm4gJ3RydWUnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jb21wdXRlZFN0YXRlID09PSBmYWxzZSA/ICd0cnVlJyA6IG51bGw7XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIGNoZWNrZWQ6IGZ1bmN0aW9uIGNoZWNrZWQobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIHRoaXMubG9jYWxDaGVja2VkID0gbmV3VmFsO1xuICAgIH0sXG4gICAgbG9jYWxDaGVja2VkOiBmdW5jdGlvbiBsb2NhbENoZWNrZWQobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgbmV3VmFsKTtcbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGlucHV0cyA9IHRoaXMuZm9ybU9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24sIGlkeCkge1xuICAgICAgdmFyIHVpZCA9IFwiX0JWX29wdGlvbl9cIi5jb25jYXQoaWR4LCBcIl9cIik7XG4gICAgICByZXR1cm4gaChfdGhpcy5pc1JhZGlvR3JvdXAgPyBCRm9ybVJhZGlvIDogQkZvcm1DaGVja2JveCwge1xuICAgICAgICBrZXk6IHVpZCxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBpZDogX3RoaXMuc2FmZUlkKHVpZCksXG4gICAgICAgICAgdmFsdWU6IG9wdGlvbi52YWx1ZSxcbiAgICAgICAgICAvLyBJbmRpdmlkdWFsIHJhZGlvcyBvciBjaGVja3MgY2FuIGJlIGRpc2FibGVkIGluIGEgZ3JvdXBcbiAgICAgICAgICBkaXNhYmxlZDogb3B0aW9uLmRpc2FibGVkIHx8IGZhbHNlIC8vIFdlIGRvbid0IG5lZWQgdG8gaW5jbHVkZSB0aGVzZSwgc2luY2UgdGhlIGlucHV0J3Mgd2lsbCBrbm93IHRoZXkgYXJlIGluc2lkZSBoZXJlXG4gICAgICAgICAgLy8gbmFtZTogdGhpcy5ncm91cE5hbWUsXG4gICAgICAgICAgLy8gZm9ybTogdGhpcy5mb3JtIHx8IG51bGwsXG4gICAgICAgICAgLy8gcmVxdWlyZWQ6IEJvb2xlYW4odGhpcy5uYW1lICYmIHRoaXMucmVxdWlyZWQpXG5cbiAgICAgICAgfVxuICAgICAgfSwgW2goJ3NwYW4nLCB7XG4gICAgICAgIGRvbVByb3BzOiBodG1sT3JUZXh0KG9wdGlvbi5odG1sLCBvcHRpb24udGV4dClcbiAgICAgIH0pXSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGgoJ2RpdicsIHtcbiAgICAgIGNsYXNzOiB0aGlzLmdyb3VwQ2xhc3NlcyxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGlkOiB0aGlzLnNhZmVJZCgpLFxuICAgICAgICByb2xlOiB0aGlzLmlzUmFkaW9Hcm91cCA/ICdyYWRpb2dyb3VwJyA6ICdncm91cCcsXG4gICAgICAgIC8vIFRhYmluZGV4IHRvIGFsbG93IGdyb3VwIHRvIGJlIGZvY3VzZWQgaWYgbmVlZGVkXG4gICAgICAgIHRhYmluZGV4OiAnLTEnLFxuICAgICAgICAnYXJpYS1yZXF1aXJlZCc6IHRoaXMucmVxdWlyZWQgPyAndHJ1ZScgOiBudWxsLFxuICAgICAgICAnYXJpYS1pbnZhbGlkJzogdGhpcy5jb21wdXRlZEFyaWFJbnZhbGlkXG4gICAgICB9XG4gICAgfSwgW3RoaXMubm9ybWFsaXplU2xvdCgnZmlyc3QnKSwgaW5wdXRzLCB0aGlzLm5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnKV0pO1xuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL21peGlucy9mb3JtLXJhZGlvLWNoZWNrLWdyb3VwLmpzXG4vLyBtb2R1bGUgaWQgPSAxNDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///142\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__normalize_slot__ = __webpack_require__(5);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n // @vue/component\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n mixins: [__WEBPACK_IMPORTED_MODULE_0__normalize_slot__[\"a\" /* default */]],\n inheritAttrs: false,\n model: {\n prop: 'checked',\n event: 'input'\n },\n props: {\n value: {// Value when checked\n // type: Object,\n // default: undefined\n },\n checked: {// This is the v-model\n // type: Object,\n // default: undefined\n },\n inline: {\n type: Boolean,\n default: false\n },\n plain: {\n type: Boolean,\n default: false\n },\n button: {\n // Only applicable in standalone mode (non group)\n type: Boolean,\n default: false\n },\n buttonVariant: {\n // Only applicable when rendered with button style\n type: String,\n default: null\n },\n ariaLabel: {\n // Placed on the input if present.\n type: String,\n default: null\n },\n ariaLabelledby: {\n // Placed on the input if present.\n type: String,\n default: null\n }\n },\n data: function data() {\n return {\n localChecked: this.isGroup ? this.bvGroup.checked : this.checked,\n hasFocus: false\n };\n },\n computed: {\n computedLocalChecked: {\n get: function get() {\n return this.isGroup ? this.bvGroup.localChecked : this.localChecked;\n },\n set: function set(val) {\n if (this.isGroup) {\n this.bvGroup.localChecked = val;\n } else {\n this.localChecked = val;\n }\n }\n },\n isGroup: function isGroup() {\n // Is this check/radio a child of check-group or radio-group?\n return Boolean(this.bvGroup);\n },\n isBtnMode: function isBtnMode() {\n // Support button style in single input mode\n return this.isGroup ? this.bvGroup.buttons : this.button;\n },\n isPlain: function isPlain() {\n return this.isBtnMode ? false : this.isGroup ? this.bvGroup.plain : this.plain;\n },\n isCustom: function isCustom() {\n return this.isBtnMode ? false : !this.isPlain;\n },\n isSwitch: function isSwitch() {\n // Custom switch styling (checkboxes only)\n return this.isBtnMode || this.isRadio || this.isPlain ? false : this.isGroup ? this.bvGroup.switches : this.switch;\n },\n isInline: function isInline() {\n return this.isGroup ? this.bvGroup.inline : this.inline;\n },\n isDisabled: function isDisabled() {\n // Child can be disabled while parent isn't, but is always disabled if group is\n return this.isGroup ? this.bvGroup.disabled || this.disabled : this.disabled;\n },\n isRequired: function isRequired() {\n // Required only works when a name is provided for the input(s)\n // Child can only be required when parent is\n // Groups will always have a name (either user supplied or auto generated)\n return Boolean(this.getName && (this.isGroup ? this.bvGroup.required : this.required));\n },\n getName: function getName() {\n // Group name preferred over local name\n return (this.isGroup ? this.bvGroup.groupName : this.name) || null;\n },\n getForm: function getForm() {\n return (this.isGroup ? this.bvGroup.form : this.form) || null;\n },\n getSize: function getSize() {\n return (this.isGroup ? this.bvGroup.size : this.size) || '';\n },\n getState: function getState() {\n return this.isGroup ? this.bvGroup.computedState : this.computedState;\n },\n getButtonVariant: function getButtonVariant() {\n // Local variant preferred over group variant\n if (this.buttonVariant) {\n return this.buttonVariant;\n } else if (this.isGroup && this.bvGroup.buttonVariant) {\n return this.bvGroup.buttonVariant;\n } // default variant\n\n\n return 'secondary';\n },\n buttonClasses: function buttonClasses() {\n var _ref;\n\n // Same for radio & check\n return ['btn', \"btn-\".concat(this.getButtonVariant), (_ref = {}, _defineProperty(_ref, \"btn-\".concat(this.getSize), this.getSize), _defineProperty(_ref, \"disabled\", this.isDisabled), _defineProperty(_ref, \"active\", this.isChecked), _defineProperty(_ref, \"focus\", this.hasFocus), _ref)];\n }\n },\n watch: {\n checked: function checked(newVal, oldVal) {\n this.computedLocalChecked = newVal;\n }\n },\n methods: {\n handleFocus: function handleFocus(evt) {\n // When in buttons mode, we need to add 'focus' class to label when input focused\n // As it is the hidden input which has actual focus\n if (evt.target) {\n if (evt.type === 'focus') {\n this.hasFocus = true;\n } else if (evt.type === 'blur') {\n this.hasFocus = false;\n }\n }\n },\n // Convenience methods for focusing the input\n focus: function focus() {\n if (!this.isDisabled && this.$refs.input && this.$refs.input.focus) {\n this.$refs.input.focus();\n }\n },\n blur: function blur() {\n if (!this.isDisabled && this.$refs.input && this.$refs.input.blur) {\n this.$refs.input.blur();\n }\n }\n },\n render: function render(h) {\n var defaultSlot = this.normalizeSlot('default'); // Generate the input element\n\n var on = {\n change: this.handleChange\n };\n\n if (this.isBtnMode) {\n // Handlers for focus styling when in button mode\n on.focus = on.blur = this.handleFocus;\n }\n\n var input = h('input', {\n ref: 'input',\n key: 'input',\n on: on,\n class: {\n 'form-check-input': this.isPlain,\n 'custom-control-input': this.isCustom,\n 'is-valid': this.getState === true && !this.isBtnMode,\n 'is-invalid': this.getState === false && !this.isBtnMode,\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2911\n 'position-static': this.isPlain && !defaultSlot\n },\n directives: [{\n name: 'model',\n rawName: 'v-model',\n value: this.computedLocalChecked,\n expression: 'computedLocalChecked'\n }],\n attrs: _objectSpread({}, this.$attrs, {\n id: this.safeId(),\n type: this.isRadio ? 'radio' : 'checkbox',\n name: this.getName,\n form: this.getForm,\n disabled: this.isDisabled,\n required: this.isRequired,\n autocomplete: 'off',\n 'aria-required': this.isRequired || null,\n 'aria-label': this.ariaLabel || null,\n 'aria-labelledby': this.ariaLabelledby || null\n }),\n domProps: {\n value: this.value,\n checked: this.isChecked\n }\n });\n\n if (this.isBtnMode) {\n // Button mode\n var button = h('label', {\n class: this.buttonClasses\n }, [input, defaultSlot]);\n\n if (!this.isGroup) {\n // Standalone button mode, so wrap in 'btn-group-toggle'\n // and flag it as inline-block to mimic regular buttons\n button = h('div', {\n class: ['btn-group-toggle', 'd-inline-block']\n }, [button]);\n }\n\n return button;\n } else {\n // Not button mode\n var label = h(); // If no label content in plain mode we dont render the label\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2911\n\n if (!(this.isPlain && !defaultSlot)) {\n label = h('label', {\n class: {\n 'form-check-label': this.isPlain,\n 'custom-control-label': this.isCustom\n },\n attrs: {\n for: this.safeId()\n }\n }, defaultSlot);\n } // Wrap it in a div\n\n\n return h('div', {\n class: _defineProperty({\n 'form-check': this.isPlain,\n 'form-check-inline': this.isPlain && this.isInline,\n 'custom-control': this.isCustom,\n 'custom-control-inline': this.isCustom && this.isInline,\n 'custom-checkbox': this.isCustom && this.isCheck && !this.isSwitch,\n 'custom-switch': this.isSwitch,\n 'custom-radio': this.isCustom && this.isRadio\n }, \"b-custom-control-\".concat(this.getSize), Boolean(this.getSize && !this.isBtnMode))\n }, [input, label]);\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vbWl4aW5zL2Zvcm0tcmFkaW8tY2hlY2suanM/YjZiZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLCtDQUErQywyQ0FBMkMsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8seUNBQXlDLGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBnQiwyQ0FBMkMsa0JBQWtCLGtDQUFrQyxxRUFBcUUsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEVBQUUsWUFBWTs7QUFFN0o7O0FBRW5DO0FBQ2YsV0FBVyxnRUFBa0I7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLEtBQUs7QUFDTCxjQUFjO0FBQ2Q7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87OztBQUdQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxxRUFBcUU7QUFDckU7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLG9EQUFvRDs7QUFFcEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0Esc0JBQXNCO0FBQ3RCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87OztBQUdQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMTQyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IG5vcm1hbGl6ZVNsb3RNaXhpbiBmcm9tICcuL25vcm1hbGl6ZS1zbG90JzsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IGRlZmF1bHQge1xuICBtaXhpbnM6IFtub3JtYWxpemVTbG90TWl4aW5dLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBtb2RlbDoge1xuICAgIHByb3A6ICdjaGVja2VkJyxcbiAgICBldmVudDogJ2lucHV0J1xuICB9LFxuICBwcm9wczoge1xuICAgIHZhbHVlOiB7Ly8gVmFsdWUgd2hlbiBjaGVja2VkXG4gICAgICAvLyB0eXBlOiBPYmplY3QsXG4gICAgICAvLyBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIGNoZWNrZWQ6IHsvLyBUaGlzIGlzIHRoZSB2LW1vZGVsXG4gICAgICAvLyB0eXBlOiBPYmplY3QsXG4gICAgICAvLyBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIGlubGluZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBwbGFpbjoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBidXR0b246IHtcbiAgICAgIC8vIE9ubHkgYXBwbGljYWJsZSBpbiBzdGFuZGFsb25lIG1vZGUgKG5vbiBncm91cClcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgYnV0dG9uVmFyaWFudDoge1xuICAgICAgLy8gT25seSBhcHBsaWNhYmxlIHdoZW4gcmVuZGVyZWQgd2l0aCBidXR0b24gc3R5bGVcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIGFyaWFMYWJlbDoge1xuICAgICAgLy8gUGxhY2VkIG9uIHRoZSBpbnB1dCBpZiBwcmVzZW50LlxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgYXJpYUxhYmVsbGVkYnk6IHtcbiAgICAgIC8vIFBsYWNlZCBvbiB0aGUgaW5wdXQgaWYgcHJlc2VudC5cbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvY2FsQ2hlY2tlZDogdGhpcy5pc0dyb3VwID8gdGhpcy5idkdyb3VwLmNoZWNrZWQgOiB0aGlzLmNoZWNrZWQsXG4gICAgICBoYXNGb2N1czogZmFsc2VcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGNvbXB1dGVkTG9jYWxDaGVja2VkOiB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNHcm91cCA/IHRoaXMuYnZHcm91cC5sb2NhbENoZWNrZWQgOiB0aGlzLmxvY2FsQ2hlY2tlZDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWwpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNHcm91cCkge1xuICAgICAgICAgIHRoaXMuYnZHcm91cC5sb2NhbENoZWNrZWQgPSB2YWw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2NhbENoZWNrZWQgPSB2YWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGlzR3JvdXA6IGZ1bmN0aW9uIGlzR3JvdXAoKSB7XG4gICAgICAvLyBJcyB0aGlzIGNoZWNrL3JhZGlvIGEgY2hpbGQgb2YgY2hlY2stZ3JvdXAgb3IgcmFkaW8tZ3JvdXA/XG4gICAgICByZXR1cm4gQm9vbGVhbih0aGlzLmJ2R3JvdXApO1xuICAgIH0sXG4gICAgaXNCdG5Nb2RlOiBmdW5jdGlvbiBpc0J0bk1vZGUoKSB7XG4gICAgICAvLyBTdXBwb3J0IGJ1dHRvbiBzdHlsZSBpbiBzaW5nbGUgaW5wdXQgbW9kZVxuICAgICAgcmV0dXJuIHRoaXMuaXNHcm91cCA/IHRoaXMuYnZHcm91cC5idXR0b25zIDogdGhpcy5idXR0b247XG4gICAgfSxcbiAgICBpc1BsYWluOiBmdW5jdGlvbiBpc1BsYWluKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNCdG5Nb2RlID8gZmFsc2UgOiB0aGlzLmlzR3JvdXAgPyB0aGlzLmJ2R3JvdXAucGxhaW4gOiB0aGlzLnBsYWluO1xuICAgIH0sXG4gICAgaXNDdXN0b206IGZ1bmN0aW9uIGlzQ3VzdG9tKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNCdG5Nb2RlID8gZmFsc2UgOiAhdGhpcy5pc1BsYWluO1xuICAgIH0sXG4gICAgaXNTd2l0Y2g6IGZ1bmN0aW9uIGlzU3dpdGNoKCkge1xuICAgICAgLy8gQ3VzdG9tIHN3aXRjaCBzdHlsaW5nIChjaGVja2JveGVzIG9ubHkpXG4gICAgICByZXR1cm4gdGhpcy5pc0J0bk1vZGUgfHwgdGhpcy5pc1JhZGlvIHx8IHRoaXMuaXNQbGFpbiA/IGZhbHNlIDogdGhpcy5pc0dyb3VwID8gdGhpcy5idkdyb3VwLnN3aXRjaGVzIDogdGhpcy5zd2l0Y2g7XG4gICAgfSxcbiAgICBpc0lubGluZTogZnVuY3Rpb24gaXNJbmxpbmUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc0dyb3VwID8gdGhpcy5idkdyb3VwLmlubGluZSA6IHRoaXMuaW5saW5lO1xuICAgIH0sXG4gICAgaXNEaXNhYmxlZDogZnVuY3Rpb24gaXNEaXNhYmxlZCgpIHtcbiAgICAgIC8vIENoaWxkIGNhbiBiZSBkaXNhYmxlZCB3aGlsZSBwYXJlbnQgaXNuJ3QsIGJ1dCBpcyBhbHdheXMgZGlzYWJsZWQgaWYgZ3JvdXAgaXNcbiAgICAgIHJldHVybiB0aGlzLmlzR3JvdXAgPyB0aGlzLmJ2R3JvdXAuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZCA6IHRoaXMuZGlzYWJsZWQ7XG4gICAgfSxcbiAgICBpc1JlcXVpcmVkOiBmdW5jdGlvbiBpc1JlcXVpcmVkKCkge1xuICAgICAgLy8gUmVxdWlyZWQgb25seSB3b3JrcyB3aGVuIGEgbmFtZSBpcyBwcm92aWRlZCBmb3IgdGhlIGlucHV0KHMpXG4gICAgICAvLyBDaGlsZCBjYW4gb25seSBiZSByZXF1aXJlZCB3aGVuIHBhcmVudCBpc1xuICAgICAgLy8gR3JvdXBzIHdpbGwgYWx3YXlzIGhhdmUgYSBuYW1lIChlaXRoZXIgdXNlciBzdXBwbGllZCBvciBhdXRvIGdlbmVyYXRlZClcbiAgICAgIHJldHVybiBCb29sZWFuKHRoaXMuZ2V0TmFtZSAmJiAodGhpcy5pc0dyb3VwID8gdGhpcy5idkdyb3VwLnJlcXVpcmVkIDogdGhpcy5yZXF1aXJlZCkpO1xuICAgIH0sXG4gICAgZ2V0TmFtZTogZnVuY3Rpb24gZ2V0TmFtZSgpIHtcbiAgICAgIC8vIEdyb3VwIG5hbWUgcHJlZmVycmVkIG92ZXIgbG9jYWwgbmFtZVxuICAgICAgcmV0dXJuICh0aGlzLmlzR3JvdXAgPyB0aGlzLmJ2R3JvdXAuZ3JvdXBOYW1lIDogdGhpcy5uYW1lKSB8fCBudWxsO1xuICAgIH0sXG4gICAgZ2V0Rm9ybTogZnVuY3Rpb24gZ2V0Rm9ybSgpIHtcbiAgICAgIHJldHVybiAodGhpcy5pc0dyb3VwID8gdGhpcy5idkdyb3VwLmZvcm0gOiB0aGlzLmZvcm0pIHx8IG51bGw7XG4gICAgfSxcbiAgICBnZXRTaXplOiBmdW5jdGlvbiBnZXRTaXplKCkge1xuICAgICAgcmV0dXJuICh0aGlzLmlzR3JvdXAgPyB0aGlzLmJ2R3JvdXAuc2l6ZSA6IHRoaXMuc2l6ZSkgfHwgJyc7XG4gICAgfSxcbiAgICBnZXRTdGF0ZTogZnVuY3Rpb24gZ2V0U3RhdGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc0dyb3VwID8gdGhpcy5idkdyb3VwLmNvbXB1dGVkU3RhdGUgOiB0aGlzLmNvbXB1dGVkU3RhdGU7XG4gICAgfSxcbiAgICBnZXRCdXR0b25WYXJpYW50OiBmdW5jdGlvbiBnZXRCdXR0b25WYXJpYW50KCkge1xuICAgICAgLy8gTG9jYWwgdmFyaWFudCBwcmVmZXJyZWQgb3ZlciBncm91cCB2YXJpYW50XG4gICAgICBpZiAodGhpcy5idXR0b25WYXJpYW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1dHRvblZhcmlhbnQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNHcm91cCAmJiB0aGlzLmJ2R3JvdXAuYnV0dG9uVmFyaWFudCkge1xuICAgICAgICByZXR1cm4gdGhpcy5idkdyb3VwLmJ1dHRvblZhcmlhbnQ7XG4gICAgICB9IC8vIGRlZmF1bHQgdmFyaWFudFxuXG5cbiAgICAgIHJldHVybiAnc2Vjb25kYXJ5JztcbiAgICB9LFxuICAgIGJ1dHRvbkNsYXNzZXM6IGZ1bmN0aW9uIGJ1dHRvbkNsYXNzZXMoKSB7XG4gICAgICB2YXIgX3JlZjtcblxuICAgICAgLy8gU2FtZSBmb3IgcmFkaW8gJiBjaGVja1xuICAgICAgcmV0dXJuIFsnYnRuJywgXCJidG4tXCIuY29uY2F0KHRoaXMuZ2V0QnV0dG9uVmFyaWFudCksIChfcmVmID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfcmVmLCBcImJ0bi1cIi5jb25jYXQodGhpcy5nZXRTaXplKSwgdGhpcy5nZXRTaXplKSwgX2RlZmluZVByb3BlcnR5KF9yZWYsIFwiZGlzYWJsZWRcIiwgdGhpcy5pc0Rpc2FibGVkKSwgX2RlZmluZVByb3BlcnR5KF9yZWYsIFwiYWN0aXZlXCIsIHRoaXMuaXNDaGVja2VkKSwgX2RlZmluZVByb3BlcnR5KF9yZWYsIFwiZm9jdXNcIiwgdGhpcy5oYXNGb2N1cyksIF9yZWYpXTtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgY2hlY2tlZDogZnVuY3Rpb24gY2hlY2tlZChuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgdGhpcy5jb21wdXRlZExvY2FsQ2hlY2tlZCA9IG5ld1ZhbDtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBoYW5kbGVGb2N1czogZnVuY3Rpb24gaGFuZGxlRm9jdXMoZXZ0KSB7XG4gICAgICAvLyBXaGVuIGluIGJ1dHRvbnMgbW9kZSwgd2UgbmVlZCB0byBhZGQgJ2ZvY3VzJyBjbGFzcyB0byBsYWJlbCB3aGVuIGlucHV0IGZvY3VzZWRcbiAgICAgIC8vIEFzIGl0IGlzIHRoZSBoaWRkZW4gaW5wdXQgd2hpY2ggaGFzIGFjdHVhbCBmb2N1c1xuICAgICAgaWYgKGV2dC50YXJnZXQpIHtcbiAgICAgICAgaWYgKGV2dC50eXBlID09PSAnZm9jdXMnKSB7XG4gICAgICAgICAgdGhpcy5oYXNGb2N1cyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZ0LnR5cGUgPT09ICdibHVyJykge1xuICAgICAgICAgIHRoaXMuaGFzRm9jdXMgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgLy8gQ29udmVuaWVuY2UgbWV0aG9kcyBmb3IgZm9jdXNpbmcgdGhlIGlucHV0XG4gICAgZm9jdXM6IGZ1bmN0aW9uIGZvY3VzKCkge1xuICAgICAgaWYgKCF0aGlzLmlzRGlzYWJsZWQgJiYgdGhpcy4kcmVmcy5pbnB1dCAmJiB0aGlzLiRyZWZzLmlucHV0LmZvY3VzKSB7XG4gICAgICAgIHRoaXMuJHJlZnMuaW5wdXQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGJsdXI6IGZ1bmN0aW9uIGJsdXIoKSB7XG4gICAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZCAmJiB0aGlzLiRyZWZzLmlucHV0ICYmIHRoaXMuJHJlZnMuaW5wdXQuYmx1cikge1xuICAgICAgICB0aGlzLiRyZWZzLmlucHV0LmJsdXIoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgZGVmYXVsdFNsb3QgPSB0aGlzLm5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnKTsgLy8gR2VuZXJhdGUgdGhlIGlucHV0IGVsZW1lbnRcblxuICAgIHZhciBvbiA9IHtcbiAgICAgIGNoYW5nZTogdGhpcy5oYW5kbGVDaGFuZ2VcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuaXNCdG5Nb2RlKSB7XG4gICAgICAvLyBIYW5kbGVycyBmb3IgZm9jdXMgc3R5bGluZyB3aGVuIGluIGJ1dHRvbiBtb2RlXG4gICAgICBvbi5mb2N1cyA9IG9uLmJsdXIgPSB0aGlzLmhhbmRsZUZvY3VzO1xuICAgIH1cblxuICAgIHZhciBpbnB1dCA9IGgoJ2lucHV0Jywge1xuICAgICAgcmVmOiAnaW5wdXQnLFxuICAgICAga2V5OiAnaW5wdXQnLFxuICAgICAgb246IG9uLFxuICAgICAgY2xhc3M6IHtcbiAgICAgICAgJ2Zvcm0tY2hlY2staW5wdXQnOiB0aGlzLmlzUGxhaW4sXG4gICAgICAgICdjdXN0b20tY29udHJvbC1pbnB1dCc6IHRoaXMuaXNDdXN0b20sXG4gICAgICAgICdpcy12YWxpZCc6IHRoaXMuZ2V0U3RhdGUgPT09IHRydWUgJiYgIXRoaXMuaXNCdG5Nb2RlLFxuICAgICAgICAnaXMtaW52YWxpZCc6IHRoaXMuZ2V0U3RhdGUgPT09IGZhbHNlICYmICF0aGlzLmlzQnRuTW9kZSxcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jvb3RzdHJhcC12dWUvYm9vdHN0cmFwLXZ1ZS9pc3N1ZXMvMjkxMVxuICAgICAgICAncG9zaXRpb24tc3RhdGljJzogdGhpcy5pc1BsYWluICYmICFkZWZhdWx0U2xvdFxuICAgICAgfSxcbiAgICAgIGRpcmVjdGl2ZXM6IFt7XG4gICAgICAgIG5hbWU6ICdtb2RlbCcsXG4gICAgICAgIHJhd05hbWU6ICd2LW1vZGVsJyxcbiAgICAgICAgdmFsdWU6IHRoaXMuY29tcHV0ZWRMb2NhbENoZWNrZWQsXG4gICAgICAgIGV4cHJlc3Npb246ICdjb21wdXRlZExvY2FsQ2hlY2tlZCdcbiAgICAgIH1dLFxuICAgICAgYXR0cnM6IF9vYmplY3RTcHJlYWQoe30sIHRoaXMuJGF0dHJzLCB7XG4gICAgICAgIGlkOiB0aGlzLnNhZmVJZCgpLFxuICAgICAgICB0eXBlOiB0aGlzLmlzUmFkaW8gPyAncmFkaW8nIDogJ2NoZWNrYm94JyxcbiAgICAgICAgbmFtZTogdGhpcy5nZXROYW1lLFxuICAgICAgICBmb3JtOiB0aGlzLmdldEZvcm0sXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLmlzRGlzYWJsZWQsXG4gICAgICAgIHJlcXVpcmVkOiB0aGlzLmlzUmVxdWlyZWQsXG4gICAgICAgIGF1dG9jb21wbGV0ZTogJ29mZicsXG4gICAgICAgICdhcmlhLXJlcXVpcmVkJzogdGhpcy5pc1JlcXVpcmVkIHx8IG51bGwsXG4gICAgICAgICdhcmlhLWxhYmVsJzogdGhpcy5hcmlhTGFiZWwgfHwgbnVsbCxcbiAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IHRoaXMuYXJpYUxhYmVsbGVkYnkgfHwgbnVsbFxuICAgICAgfSksXG4gICAgICBkb21Qcm9wczoge1xuICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgICAgY2hlY2tlZDogdGhpcy5pc0NoZWNrZWRcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmlzQnRuTW9kZSkge1xuICAgICAgLy8gQnV0dG9uIG1vZGVcbiAgICAgIHZhciBidXR0b24gPSBoKCdsYWJlbCcsIHtcbiAgICAgICAgY2xhc3M6IHRoaXMuYnV0dG9uQ2xhc3Nlc1xuICAgICAgfSwgW2lucHV0LCBkZWZhdWx0U2xvdF0pO1xuXG4gICAgICBpZiAoIXRoaXMuaXNHcm91cCkge1xuICAgICAgICAvLyBTdGFuZGFsb25lIGJ1dHRvbiBtb2RlLCBzbyB3cmFwIGluICdidG4tZ3JvdXAtdG9nZ2xlJ1xuICAgICAgICAvLyBhbmQgZmxhZyBpdCBhcyBpbmxpbmUtYmxvY2sgdG8gbWltaWMgcmVndWxhciBidXR0b25zXG4gICAgICAgIGJ1dHRvbiA9IGgoJ2RpdicsIHtcbiAgICAgICAgICBjbGFzczogWydidG4tZ3JvdXAtdG9nZ2xlJywgJ2QtaW5saW5lLWJsb2NrJ11cbiAgICAgICAgfSwgW2J1dHRvbl0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYnV0dG9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOb3QgYnV0dG9uIG1vZGVcbiAgICAgIHZhciBsYWJlbCA9IGgoKTsgLy8gSWYgbm8gbGFiZWwgY29udGVudCBpbiBwbGFpbiBtb2RlIHdlIGRvbnQgcmVuZGVyIHRoZSBsYWJlbFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jvb3RzdHJhcC12dWUvYm9vdHN0cmFwLXZ1ZS9pc3N1ZXMvMjkxMVxuXG4gICAgICBpZiAoISh0aGlzLmlzUGxhaW4gJiYgIWRlZmF1bHRTbG90KSkge1xuICAgICAgICBsYWJlbCA9IGgoJ2xhYmVsJywge1xuICAgICAgICAgIGNsYXNzOiB7XG4gICAgICAgICAgICAnZm9ybS1jaGVjay1sYWJlbCc6IHRoaXMuaXNQbGFpbixcbiAgICAgICAgICAgICdjdXN0b20tY29udHJvbC1sYWJlbCc6IHRoaXMuaXNDdXN0b21cbiAgICAgICAgICB9LFxuICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICBmb3I6IHRoaXMuc2FmZUlkKClcbiAgICAgICAgICB9XG4gICAgICAgIH0sIGRlZmF1bHRTbG90KTtcbiAgICAgIH0gLy8gV3JhcCBpdCBpbiBhIGRpdlxuXG5cbiAgICAgIHJldHVybiBoKCdkaXYnLCB7XG4gICAgICAgIGNsYXNzOiBfZGVmaW5lUHJvcGVydHkoe1xuICAgICAgICAgICdmb3JtLWNoZWNrJzogdGhpcy5pc1BsYWluLFxuICAgICAgICAgICdmb3JtLWNoZWNrLWlubGluZSc6IHRoaXMuaXNQbGFpbiAmJiB0aGlzLmlzSW5saW5lLFxuICAgICAgICAgICdjdXN0b20tY29udHJvbCc6IHRoaXMuaXNDdXN0b20sXG4gICAgICAgICAgJ2N1c3RvbS1jb250cm9sLWlubGluZSc6IHRoaXMuaXNDdXN0b20gJiYgdGhpcy5pc0lubGluZSxcbiAgICAgICAgICAnY3VzdG9tLWNoZWNrYm94JzogdGhpcy5pc0N1c3RvbSAmJiB0aGlzLmlzQ2hlY2sgJiYgIXRoaXMuaXNTd2l0Y2gsXG4gICAgICAgICAgJ2N1c3RvbS1zd2l0Y2gnOiB0aGlzLmlzU3dpdGNoLFxuICAgICAgICAgICdjdXN0b20tcmFkaW8nOiB0aGlzLmlzQ3VzdG9tICYmIHRoaXMuaXNSYWRpb1xuICAgICAgICB9LCBcImItY3VzdG9tLWNvbnRyb2wtXCIuY29uY2F0KHRoaXMuZ2V0U2l6ZSksIEJvb2xlYW4odGhpcy5nZXRTaXplICYmICF0aGlzLmlzQnRuTW9kZSkpXG4gICAgICB9LCBbaW5wdXQsIGxhYmVsXSk7XG4gICAgfVxuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL21peGlucy9mb3JtLXJhZGlvLWNoZWNrLmpzXG4vLyBtb2R1bGUgaWQgPSAxNDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///142\n"); /***/ }), /* 143 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return FormRadioPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__form_radio__ = __webpack_require__(71);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__form_radio_group__ = __webpack_require__(144);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BFormRadio */\n/* unused harmony reexport BFormRadioGroup */\n\n\n\nvar FormRadioPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BFormRadio: __WEBPACK_IMPORTED_MODULE_0__form_radio__[\"a\" /* BFormRadio */],\n BRadio: __WEBPACK_IMPORTED_MODULE_0__form_radio__[\"a\" /* BFormRadio */],\n BFormRadioGroup: __WEBPACK_IMPORTED_MODULE_1__form_radio_group__[\"a\" /* BFormRadioGroup */],\n BRadioGroup: __WEBPACK_IMPORTED_MODULE_1__form_radio_group__[\"a\" /* BFormRadioGroup */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLXJhZGlvL2luZGV4LmpzPzBkMGEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBDO0FBQ1c7QUFDRDtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGdCQUFnQiwrREFBVTtBQUMxQixZQUFZLCtEQUFVO0FBQ3RCLHFCQUFxQiwwRUFBZTtBQUNwQyxpQkFBaUIsMEVBQWU7QUFDaEM7QUFDQSxDQUFDIiwiZmlsZSI6IjE0My5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJGb3JtUmFkaW8gfSBmcm9tICcuL2Zvcm0tcmFkaW8nO1xuaW1wb3J0IHsgQkZvcm1SYWRpb0dyb3VwIH0gZnJvbSAnLi9mb3JtLXJhZGlvLWdyb3VwJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBGb3JtUmFkaW9QbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCRm9ybVJhZGlvOiBCRm9ybVJhZGlvLFxuICAgIEJSYWRpbzogQkZvcm1SYWRpbyxcbiAgICBCRm9ybVJhZGlvR3JvdXA6IEJGb3JtUmFkaW9Hcm91cCxcbiAgICBCUmFkaW9Hcm91cDogQkZvcm1SYWRpb0dyb3VwXG4gIH1cbn0pO1xuZXhwb3J0IHsgRm9ybVJhZGlvUGx1Z2luLCBCRm9ybVJhZGlvLCBCRm9ybVJhZGlvR3JvdXAgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Zvcm0tcmFkaW8vaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE0M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///143\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BFormCheckboxGroup; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_form__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mixins_form_options__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mixins_form_radio_check_group__ = __webpack_require__(144);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__mixins_form_size__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_form_state__ = __webpack_require__(16);\n\n\n\n\n\n\n\nvar props = {\n switches: {\n // Custom switch styling\n type: Boolean,\n default: false\n },\n checked: {\n type: Array,\n default: null\n }\n}; // @vue/component\n\nvar BFormCheckboxGroup =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BFormCheckboxGroup',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_form__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__mixins_form_radio_check_group__[\"a\" /* default */], // Includes render function\n __WEBPACK_IMPORTED_MODULE_3__mixins_form_options__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__mixins_form_size__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__mixins_form_state__[\"a\" /* default */]],\n provide: function provide() {\n return {\n bvCheckGroup: this\n };\n },\n props: props,\n data: function data() {\n return {\n localChecked: this.checked || []\n };\n },\n computed: {\n isRadioGroup: function isRadioGroup() {\n return false;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWNoZWNrYm94L2Zvcm0tY2hlY2tib3gtZ3JvdXAuanM/MjA4YSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDSTtBQUNJO0FBQ2U7QUFDa0I7QUFDeEI7QUFDRTtBQUM5QztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsMkRBQU8sRUFBRSw2REFBUyxFQUFFLCtFQUF3QjtBQUN2RCxFQUFFLHFFQUFnQixFQUFFLGtFQUFhLEVBQUUsbUVBQWM7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNDMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgaWRNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvaWQnO1xuaW1wb3J0IGZvcm1NaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvZm9ybSc7XG5pbXBvcnQgZm9ybU9wdGlvbnNNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvZm9ybS1vcHRpb25zJztcbmltcG9ydCBmb3JtUmFkaW9DaGVja0dyb3VwTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tcmFkaW8tY2hlY2stZ3JvdXAnO1xuaW1wb3J0IGZvcm1TaXplTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tc2l6ZSc7XG5pbXBvcnQgZm9ybVN0YXRlTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tc3RhdGUnO1xuZXhwb3J0IHZhciBwcm9wcyA9IHtcbiAgc3dpdGNoZXM6IHtcbiAgICAvLyBDdXN0b20gc3dpdGNoIHN0eWxpbmdcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIGNoZWNrZWQ6IHtcbiAgICB0eXBlOiBBcnJheSxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkZvcm1DaGVja2JveEdyb3VwID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQkZvcm1DaGVja2JveEdyb3VwJyxcbiAgbWl4aW5zOiBbaWRNaXhpbiwgZm9ybU1peGluLCBmb3JtUmFkaW9DaGVja0dyb3VwTWl4aW4sIC8vIEluY2x1ZGVzIHJlbmRlciBmdW5jdGlvblxuICBmb3JtT3B0aW9uc01peGluLCBmb3JtU2l6ZU1peGluLCBmb3JtU3RhdGVNaXhpbl0sXG4gIHByb3ZpZGU6IGZ1bmN0aW9uIHByb3ZpZGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJ2Q2hlY2tHcm91cDogdGhpc1xuICAgIH07XG4gIH0sXG4gIHByb3BzOiBwcm9wcyxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYWxDaGVja2VkOiB0aGlzLmNoZWNrZWQgfHwgW11cbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGlzUmFkaW9Hcm91cDogZnVuY3Rpb24gaXNSYWRpb0dyb3VwKCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWNoZWNrYm94L2Zvcm0tY2hlY2tib3gtZ3JvdXAuanNcbi8vIG1vZHVsZSBpZCA9IDE0M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///143\n"); /***/ }), /* 144 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BFormRadioGroup; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_form__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mixins_form_options__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mixins_form_radio_check_group__ = __webpack_require__(142);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__mixins_form_size__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_form_state__ = __webpack_require__(16);\n\n\n\n\n\n\n\nvar props = {\n checked: {\n // type: [String, Number, Boolean, Object],\n default: null\n }\n}; // @vue/component\n\nvar BFormRadioGroup =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BFormRadioGroup',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_form__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__mixins_form_radio_check_group__[\"a\" /* default */], // Includes render function\n __WEBPACK_IMPORTED_MODULE_3__mixins_form_options__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__mixins_form_size__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__mixins_form_state__[\"a\" /* default */]],\n provide: function provide() {\n return {\n bvRadioGroup: this\n };\n },\n props: props,\n data: function data() {\n return {\n localChecked: this.checked\n };\n },\n computed: {\n isRadioGroup: function isRadioGroup() {\n return true;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLXJhZGlvL2Zvcm0tcmFkaW8tZ3JvdXAuanM/NGIxNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDSTtBQUNJO0FBQ2U7QUFDa0I7QUFDeEI7QUFDRTtBQUM5QztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsMkRBQU8sRUFBRSw2REFBUyxFQUFFLCtFQUF3QjtBQUN2RCxFQUFFLHFFQUFnQixFQUFFLGtFQUFhLEVBQUUsbUVBQWM7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNDQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgaWRNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvaWQnO1xuaW1wb3J0IGZvcm1NaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvZm9ybSc7XG5pbXBvcnQgZm9ybU9wdGlvbnNNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvZm9ybS1vcHRpb25zJztcbmltcG9ydCBmb3JtUmFkaW9DaGVja0dyb3VwTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tcmFkaW8tY2hlY2stZ3JvdXAnO1xuaW1wb3J0IGZvcm1TaXplTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tc2l6ZSc7XG5pbXBvcnQgZm9ybVN0YXRlTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tc3RhdGUnO1xuZXhwb3J0IHZhciBwcm9wcyA9IHtcbiAgY2hlY2tlZDoge1xuICAgIC8vIHR5cGU6IFtTdHJpbmcsIE51bWJlciwgQm9vbGVhbiwgT2JqZWN0XSxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkZvcm1SYWRpb0dyb3VwID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQkZvcm1SYWRpb0dyb3VwJyxcbiAgbWl4aW5zOiBbaWRNaXhpbiwgZm9ybU1peGluLCBmb3JtUmFkaW9DaGVja0dyb3VwTWl4aW4sIC8vIEluY2x1ZGVzIHJlbmRlciBmdW5jdGlvblxuICBmb3JtT3B0aW9uc01peGluLCBmb3JtU2l6ZU1peGluLCBmb3JtU3RhdGVNaXhpbl0sXG4gIHByb3ZpZGU6IGZ1bmN0aW9uIHByb3ZpZGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJ2UmFkaW9Hcm91cDogdGhpc1xuICAgIH07XG4gIH0sXG4gIHByb3BzOiBwcm9wcyxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYWxDaGVja2VkOiB0aGlzLmNoZWNrZWRcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGlzUmFkaW9Hcm91cDogZnVuY3Rpb24gaXNSYWRpb0dyb3VwKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Zvcm0tcmFkaW8vZm9ybS1yYWRpby1ncm91cC5qc1xuLy8gbW9kdWxlIGlkID0gMTQ0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///144\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_html__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__components_form_checkbox_form_checkbox__ = __webpack_require__(70);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__components_form_radio_form_radio__ = __webpack_require__(71);\n\n\n\n // @vue/component\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n mixins: [__WEBPACK_IMPORTED_MODULE_1__normalize_slot__[\"a\" /* default */]],\n model: {\n prop: 'checked',\n event: 'input'\n },\n props: {\n validated: {\n type: Boolean,\n default: false\n },\n ariaInvalid: {\n type: [Boolean, String],\n default: false\n },\n stacked: {\n type: Boolean,\n default: false\n },\n plain: {\n type: Boolean,\n default: false\n },\n buttons: {\n // Render as button style\n type: Boolean,\n default: false\n },\n buttonVariant: {\n // Only applicable when rendered with button style\n type: String,\n default: 'secondary'\n }\n },\n computed: {\n inline: function inline() {\n return !this.stacked;\n },\n groupName: function groupName() {\n // Checks/Radios tied to the same model must have the same name,\n // especially for ARIA accessibility.\n return this.name || this.safeId();\n },\n groupClasses: function groupClasses() {\n if (this.buttons) {\n return ['btn-group-toggle', this.inline ? 'btn-group' : 'btn-group-vertical', this.size ? \"btn-group-\".concat(this.size) : '', this.validated ? \"was-validated\" : ''];\n }\n\n return [this.validated ? \"was-validated\" : ''];\n },\n computedAriaInvalid: function computedAriaInvalid() {\n var ariaInvalid = this.ariaInvalid;\n\n if (ariaInvalid === true || ariaInvalid === 'true' || ariaInvalid === '') {\n return 'true';\n }\n\n return this.computedState === false ? 'true' : null;\n }\n },\n watch: {\n checked: function checked(newVal, oldVal) {\n this.localChecked = newVal;\n },\n localChecked: function localChecked(newVal, oldVal) {\n this.$emit('input', newVal);\n }\n },\n render: function render(h) {\n var _this = this;\n\n var inputs = this.formOptions.map(function (option, idx) {\n var uid = \"_BV_option_\".concat(idx, \"_\");\n return h(_this.isRadioGroup ? __WEBPACK_IMPORTED_MODULE_3__components_form_radio_form_radio__[\"a\" /* BFormRadio */] : __WEBPACK_IMPORTED_MODULE_2__components_form_checkbox_form_checkbox__[\"a\" /* BFormCheckbox */], {\n key: uid,\n props: {\n id: _this.safeId(uid),\n value: option.value,\n // Individual radios or checks can be disabled in a group\n disabled: option.disabled || false // We don't need to include these, since the input's will know they are inside here\n // name: this.groupName,\n // form: this.form || null,\n // required: Boolean(this.name && this.required)\n\n }\n }, [h('span', {\n domProps: Object(__WEBPACK_IMPORTED_MODULE_0__utils_html__[\"a\" /* htmlOrText */])(option.html, option.text)\n })]);\n });\n return h('div', {\n class: this.groupClasses,\n attrs: {\n id: this.safeId(),\n role: this.isRadioGroup ? 'radiogroup' : 'group',\n // Tabindex to allow group to be focused if needed\n tabindex: '-1',\n 'aria-required': this.required ? 'true' : null,\n 'aria-invalid': this.computedAriaInvalid\n }\n }, [this.normalizeSlot('first'), inputs, this.normalizeSlot('default')]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vbWl4aW5zL2Zvcm0tcmFkaW8tY2hlY2stZ3JvdXAuanM/ZTYzOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEyQztBQUNPO0FBQ3dCO0FBQ1Q7O0FBRWxEO0FBQ2YsV0FBVyxnRUFBa0I7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxvQ0FBb0MscUZBQVUsR0FBRyw4RkFBYTtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1Asa0JBQWtCLHVFQUFVO0FBQzVCLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjE0NC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGh0bWxPclRleHQgfSBmcm9tICcuLi91dGlscy9odG1sJztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi9ub3JtYWxpemUtc2xvdCc7XG5pbXBvcnQgeyBCRm9ybUNoZWNrYm94IH0gZnJvbSAnLi4vY29tcG9uZW50cy9mb3JtLWNoZWNrYm94L2Zvcm0tY2hlY2tib3gnO1xuaW1wb3J0IHsgQkZvcm1SYWRpbyB9IGZyb20gJy4uL2NvbXBvbmVudHMvZm9ybS1yYWRpby9mb3JtLXJhZGlvJzsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IGRlZmF1bHQge1xuICBtaXhpbnM6IFtub3JtYWxpemVTbG90TWl4aW5dLFxuICBtb2RlbDoge1xuICAgIHByb3A6ICdjaGVja2VkJyxcbiAgICBldmVudDogJ2lucHV0J1xuICB9LFxuICBwcm9wczoge1xuICAgIHZhbGlkYXRlZDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBhcmlhSW52YWxpZDoge1xuICAgICAgdHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgc3RhY2tlZDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBwbGFpbjoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBidXR0b25zOiB7XG4gICAgICAvLyBSZW5kZXIgYXMgYnV0dG9uIHN0eWxlXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGJ1dHRvblZhcmlhbnQ6IHtcbiAgICAgIC8vIE9ubHkgYXBwbGljYWJsZSB3aGVuIHJlbmRlcmVkIHdpdGggYnV0dG9uIHN0eWxlXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnc2Vjb25kYXJ5J1xuICAgIH1cbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBpbmxpbmU6IGZ1bmN0aW9uIGlubGluZSgpIHtcbiAgICAgIHJldHVybiAhdGhpcy5zdGFja2VkO1xuICAgIH0sXG4gICAgZ3JvdXBOYW1lOiBmdW5jdGlvbiBncm91cE5hbWUoKSB7XG4gICAgICAvLyBDaGVja3MvUmFkaW9zIHRpZWQgdG8gdGhlIHNhbWUgbW9kZWwgbXVzdCBoYXZlIHRoZSBzYW1lIG5hbWUsXG4gICAgICAvLyBlc3BlY2lhbGx5IGZvciBBUklBIGFjY2Vzc2liaWxpdHkuXG4gICAgICByZXR1cm4gdGhpcy5uYW1lIHx8IHRoaXMuc2FmZUlkKCk7XG4gICAgfSxcbiAgICBncm91cENsYXNzZXM6IGZ1bmN0aW9uIGdyb3VwQ2xhc3NlcygpIHtcbiAgICAgIGlmICh0aGlzLmJ1dHRvbnMpIHtcbiAgICAgICAgcmV0dXJuIFsnYnRuLWdyb3VwLXRvZ2dsZScsIHRoaXMuaW5saW5lID8gJ2J0bi1ncm91cCcgOiAnYnRuLWdyb3VwLXZlcnRpY2FsJywgdGhpcy5zaXplID8gXCJidG4tZ3JvdXAtXCIuY29uY2F0KHRoaXMuc2l6ZSkgOiAnJywgdGhpcy52YWxpZGF0ZWQgPyBcIndhcy12YWxpZGF0ZWRcIiA6ICcnXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFt0aGlzLnZhbGlkYXRlZCA/IFwid2FzLXZhbGlkYXRlZFwiIDogJyddO1xuICAgIH0sXG4gICAgY29tcHV0ZWRBcmlhSW52YWxpZDogZnVuY3Rpb24gY29tcHV0ZWRBcmlhSW52YWxpZCgpIHtcbiAgICAgIHZhciBhcmlhSW52YWxpZCA9IHRoaXMuYXJpYUludmFsaWQ7XG5cbiAgICAgIGlmIChhcmlhSW52YWxpZCA9PT0gdHJ1ZSB8fCBhcmlhSW52YWxpZCA9PT0gJ3RydWUnIHx8IGFyaWFJbnZhbGlkID09PSAnJykge1xuICAgICAgICByZXR1cm4gJ3RydWUnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jb21wdXRlZFN0YXRlID09PSBmYWxzZSA/ICd0cnVlJyA6IG51bGw7XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIGNoZWNrZWQ6IGZ1bmN0aW9uIGNoZWNrZWQobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIHRoaXMubG9jYWxDaGVja2VkID0gbmV3VmFsO1xuICAgIH0sXG4gICAgbG9jYWxDaGVja2VkOiBmdW5jdGlvbiBsb2NhbENoZWNrZWQobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgbmV3VmFsKTtcbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGlucHV0cyA9IHRoaXMuZm9ybU9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24sIGlkeCkge1xuICAgICAgdmFyIHVpZCA9IFwiX0JWX29wdGlvbl9cIi5jb25jYXQoaWR4LCBcIl9cIik7XG4gICAgICByZXR1cm4gaChfdGhpcy5pc1JhZGlvR3JvdXAgPyBCRm9ybVJhZGlvIDogQkZvcm1DaGVja2JveCwge1xuICAgICAgICBrZXk6IHVpZCxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBpZDogX3RoaXMuc2FmZUlkKHVpZCksXG4gICAgICAgICAgdmFsdWU6IG9wdGlvbi52YWx1ZSxcbiAgICAgICAgICAvLyBJbmRpdmlkdWFsIHJhZGlvcyBvciBjaGVja3MgY2FuIGJlIGRpc2FibGVkIGluIGEgZ3JvdXBcbiAgICAgICAgICBkaXNhYmxlZDogb3B0aW9uLmRpc2FibGVkIHx8IGZhbHNlIC8vIFdlIGRvbid0IG5lZWQgdG8gaW5jbHVkZSB0aGVzZSwgc2luY2UgdGhlIGlucHV0J3Mgd2lsbCBrbm93IHRoZXkgYXJlIGluc2lkZSBoZXJlXG4gICAgICAgICAgLy8gbmFtZTogdGhpcy5ncm91cE5hbWUsXG4gICAgICAgICAgLy8gZm9ybTogdGhpcy5mb3JtIHx8IG51bGwsXG4gICAgICAgICAgLy8gcmVxdWlyZWQ6IEJvb2xlYW4odGhpcy5uYW1lICYmIHRoaXMucmVxdWlyZWQpXG5cbiAgICAgICAgfVxuICAgICAgfSwgW2goJ3NwYW4nLCB7XG4gICAgICAgIGRvbVByb3BzOiBodG1sT3JUZXh0KG9wdGlvbi5odG1sLCBvcHRpb24udGV4dClcbiAgICAgIH0pXSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGgoJ2RpdicsIHtcbiAgICAgIGNsYXNzOiB0aGlzLmdyb3VwQ2xhc3NlcyxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGlkOiB0aGlzLnNhZmVJZCgpLFxuICAgICAgICByb2xlOiB0aGlzLmlzUmFkaW9Hcm91cCA/ICdyYWRpb2dyb3VwJyA6ICdncm91cCcsXG4gICAgICAgIC8vIFRhYmluZGV4IHRvIGFsbG93IGdyb3VwIHRvIGJlIGZvY3VzZWQgaWYgbmVlZGVkXG4gICAgICAgIHRhYmluZGV4OiAnLTEnLFxuICAgICAgICAnYXJpYS1yZXF1aXJlZCc6IHRoaXMucmVxdWlyZWQgPyAndHJ1ZScgOiBudWxsLFxuICAgICAgICAnYXJpYS1pbnZhbGlkJzogdGhpcy5jb21wdXRlZEFyaWFJbnZhbGlkXG4gICAgICB9XG4gICAgfSwgW3RoaXMubm9ybWFsaXplU2xvdCgnZmlyc3QnKSwgaW5wdXRzLCB0aGlzLm5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnKV0pO1xuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL21peGlucy9mb3JtLXJhZGlvLWNoZWNrLWdyb3VwLmpzXG4vLyBtb2R1bGUgaWQgPSAxNDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///144\n"); /***/ }), /* 145 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return FormInputPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__form_input__ = __webpack_require__(146);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BFormInput */\n\n\nvar FormInputPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BFormInput: __WEBPACK_IMPORTED_MODULE_0__form_input__[\"a\" /* BFormInput */],\n BInput: __WEBPACK_IMPORTED_MODULE_0__form_input__[\"a\" /* BFormInput */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWlucHV0L2luZGV4LmpzP2EzOTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEM7QUFDVTtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGdCQUFnQiwrREFBVTtBQUMxQixZQUFZLCtEQUFVO0FBQ3RCO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNDUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCRm9ybUlucHV0IH0gZnJvbSAnLi9mb3JtLWlucHV0JztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBGb3JtSW5wdXRQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCRm9ybUlucHV0OiBCRm9ybUlucHV0LFxuICAgIEJJbnB1dDogQkZvcm1JbnB1dFxuICB9XG59KTtcbmV4cG9ydCB7IEZvcm1JbnB1dFBsdWdpbiwgQkZvcm1JbnB1dCB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvZm9ybS1pbnB1dC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTQ1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///145\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return FormRadioPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__form_radio__ = __webpack_require__(71);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__form_radio_group__ = __webpack_require__(146);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BFormRadio */\n/* unused harmony reexport BFormRadioGroup */\n\n\n\nvar FormRadioPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BFormRadio: __WEBPACK_IMPORTED_MODULE_0__form_radio__[\"a\" /* BFormRadio */],\n BRadio: __WEBPACK_IMPORTED_MODULE_0__form_radio__[\"a\" /* BFormRadio */],\n BFormRadioGroup: __WEBPACK_IMPORTED_MODULE_1__form_radio_group__[\"a\" /* BFormRadioGroup */],\n BRadioGroup: __WEBPACK_IMPORTED_MODULE_1__form_radio_group__[\"a\" /* BFormRadioGroup */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLXJhZGlvL2luZGV4LmpzPzBkMGEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBDO0FBQ1c7QUFDRDtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGdCQUFnQiwrREFBVTtBQUMxQixZQUFZLCtEQUFVO0FBQ3RCLHFCQUFxQiwwRUFBZTtBQUNwQyxpQkFBaUIsMEVBQWU7QUFDaEM7QUFDQSxDQUFDIiwiZmlsZSI6IjE0NS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJGb3JtUmFkaW8gfSBmcm9tICcuL2Zvcm0tcmFkaW8nO1xuaW1wb3J0IHsgQkZvcm1SYWRpb0dyb3VwIH0gZnJvbSAnLi9mb3JtLXJhZGlvLWdyb3VwJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBGb3JtUmFkaW9QbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCRm9ybVJhZGlvOiBCRm9ybVJhZGlvLFxuICAgIEJSYWRpbzogQkZvcm1SYWRpbyxcbiAgICBCRm9ybVJhZGlvR3JvdXA6IEJGb3JtUmFkaW9Hcm91cCxcbiAgICBCUmFkaW9Hcm91cDogQkZvcm1SYWRpb0dyb3VwXG4gIH1cbn0pO1xuZXhwb3J0IHsgRm9ybVJhZGlvUGx1Z2luLCBCRm9ybVJhZGlvLCBCRm9ybVJhZGlvR3JvdXAgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Zvcm0tcmFkaW8vaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE0NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///145\n"); /***/ }), /* 146 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BFormInput; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_form__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mixins_form_size__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mixins_form_state__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__mixins_form_text__ = __webpack_require__(147);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_form_selection__ = __webpack_require__(148);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__mixins_form_validity__ = __webpack_require__(149);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__utils_dom__ = __webpack_require__(6);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n\n\n // Valid supported input types\n\nvar TYPES = ['text', 'password', 'email', 'number', 'url', 'tel', 'search', 'range', 'color', 'date', 'time', 'datetime', 'datetime-local', 'month', 'week']; // @vue/component\n\nvar BFormInput =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BFormInput',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_form__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__mixins_form_size__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__mixins_form_state__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__mixins_form_text__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__mixins_form_selection__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__mixins_form_validity__[\"a\" /* default */]],\n props: {\n // value prop defined in form-text mixin\n // value: { },\n type: {\n type: String,\n default: 'text',\n validator: function validator(type) {\n return Object(__WEBPACK_IMPORTED_MODULE_8__utils_array__[\"a\" /* arrayIncludes */])(TYPES, type);\n }\n },\n noWheel: {\n // Disable mousewheel to prevent wheel from changing values (i.e. number/date).\n type: Boolean,\n default: false\n },\n min: {\n type: [String, Number],\n default: null\n },\n max: {\n type: [String, Number],\n default: null\n },\n step: {\n type: [String, Number],\n default: null\n },\n list: {\n type: String,\n default: null\n }\n },\n computed: {\n localType: function localType() {\n // We only allow certain types\n return Object(__WEBPACK_IMPORTED_MODULE_8__utils_array__[\"a\" /* arrayIncludes */])(TYPES, this.type) ? this.type : 'text';\n }\n },\n watch: {\n noWheel: function noWheel(newVal) {\n this.setWheelStopper(newVal);\n }\n },\n mounted: function mounted() {\n this.setWheelStopper(this.noWheel);\n },\n deactivated: function deactivated() {\n // Turn off listeners when keep-alive component deactivated\n\n /* istanbul ignore next */\n this.setWheelStopper(false);\n },\n activated: function activated() {\n // Turn on listeners (if no-wheel) when keep-alive component activated\n\n /* istanbul ignore next */\n this.setWheelStopper(this.noWheel);\n },\n beforeDestroy: function beforeDestroy() {\n /* istanbul ignore next */\n this.setWheelStopper(false);\n },\n methods: {\n setWheelStopper: function setWheelStopper(on) {\n var input = this.$el; // We use native events, so that we don't interfere with propgation\n\n if (on) {\n Object(__WEBPACK_IMPORTED_MODULE_9__utils_dom__[\"f\" /* eventOn */])(input, 'focus', this.onWheelFocus);\n Object(__WEBPACK_IMPORTED_MODULE_9__utils_dom__[\"f\" /* eventOn */])(input, 'blur', this.onWheelBlur);\n } else {\n Object(__WEBPACK_IMPORTED_MODULE_9__utils_dom__[\"e\" /* eventOff */])(input, 'focus', this.onWheelFocus);\n Object(__WEBPACK_IMPORTED_MODULE_9__utils_dom__[\"e\" /* eventOff */])(input, 'blur', this.onWheelBlur);\n Object(__WEBPACK_IMPORTED_MODULE_9__utils_dom__[\"e\" /* eventOff */])(document, 'wheel', this.stopWheel);\n }\n },\n onWheelFocus: function onWheelFocus(evt) {\n Object(__WEBPACK_IMPORTED_MODULE_9__utils_dom__[\"f\" /* eventOn */])(document, 'wheel', this.stopWheel);\n },\n onWheelBlur: function onWheelBlur(evt) {\n Object(__WEBPACK_IMPORTED_MODULE_9__utils_dom__[\"e\" /* eventOff */])(document, 'wheel', this.stopWheel);\n },\n stopWheel: function stopWheel(evt) {\n evt.preventDefault();\n this.$el.blur();\n }\n },\n render: function render(h) {\n var self = this;\n return h('input', {\n ref: 'input',\n class: self.computedClass,\n directives: [{\n name: 'model',\n rawName: 'v-model',\n value: self.localValue,\n expression: 'localValue'\n }],\n attrs: {\n id: self.safeId(),\n name: self.name,\n form: self.form || null,\n type: self.localType,\n disabled: self.disabled,\n placeholder: self.placeholder,\n required: self.required,\n autocomplete: self.autocomplete || null,\n readonly: self.readonly || self.plaintext,\n min: self.min,\n max: self.max,\n step: self.step,\n list: self.localType !== 'password' ? self.list : null,\n 'aria-required': self.required ? 'true' : null,\n 'aria-invalid': self.computedAriaInvalid\n },\n domProps: {\n value: self.localValue\n },\n on: _objectSpread({}, self.$listeners, {\n input: self.onInput,\n change: self.onChange,\n blur: self.onBlur\n })\n });\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWlucHV0L2Zvcm0taW5wdXQuanM/MDk2NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNJO0FBQ0k7QUFDUztBQUNFO0FBQ0Y7QUFDVTtBQUNGO0FBQ1Q7QUFDRTs7QUFFcEQsNkpBQTZKOztBQUV0SjtBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsMkRBQU8sRUFBRSw2REFBUyxFQUFFLGtFQUFhLEVBQUUsbUVBQWMsRUFBRSxrRUFBYSxFQUFFLHVFQUFrQixFQUFFLHNFQUFpQjtBQUNsSDtBQUNBO0FBQ0EsZUFBZSxFQUFFO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSwyRUFBYTtBQUM1QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLDJFQUFhO0FBQzFCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDJCQUEyQjs7QUFFM0I7QUFDQSxRQUFRLG1FQUFPO0FBQ2YsUUFBUSxtRUFBTztBQUNmLE9BQU87QUFDUCxRQUFRLG9FQUFRO0FBQ2hCLFFBQVEsb0VBQVE7QUFDaEIsUUFBUSxvRUFBUTtBQUNoQjtBQUNBLEtBQUs7QUFDTDtBQUNBLE1BQU0sbUVBQU87QUFDYixLQUFLO0FBQ0w7QUFDQSxNQUFNLG9FQUFRO0FBQ2QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjE0Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhzb3VyY2UsIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCBpZE1peGluIGZyb20gJy4uLy4uL21peGlucy9pZCc7XG5pbXBvcnQgZm9ybU1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtJztcbmltcG9ydCBmb3JtU2l6ZU1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXNpemUnO1xuaW1wb3J0IGZvcm1TdGF0ZU1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXN0YXRlJztcbmltcG9ydCBmb3JtVGV4dE1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXRleHQnO1xuaW1wb3J0IGZvcm1TZWxlY3Rpb25NaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvZm9ybS1zZWxlY3Rpb24nO1xuaW1wb3J0IGZvcm1WYWxpZGl0eU1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXZhbGlkaXR5JztcbmltcG9ydCB7IGFycmF5SW5jbHVkZXMgfSBmcm9tICcuLi8uLi91dGlscy9hcnJheSc7XG5pbXBvcnQgeyBldmVudE9uLCBldmVudE9mZiB9IGZyb20gJy4uLy4uL3V0aWxzL2RvbSc7IC8vIFZhbGlkIHN1cHBvcnRlZCBpbnB1dCB0eXBlc1xuXG52YXIgVFlQRVMgPSBbJ3RleHQnLCAncGFzc3dvcmQnLCAnZW1haWwnLCAnbnVtYmVyJywgJ3VybCcsICd0ZWwnLCAnc2VhcmNoJywgJ3JhbmdlJywgJ2NvbG9yJywgJ2RhdGUnLCAndGltZScsICdkYXRldGltZScsICdkYXRldGltZS1sb2NhbCcsICdtb250aCcsICd3ZWVrJ107IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkZvcm1JbnB1dCA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JGb3JtSW5wdXQnLFxuICBtaXhpbnM6IFtpZE1peGluLCBmb3JtTWl4aW4sIGZvcm1TaXplTWl4aW4sIGZvcm1TdGF0ZU1peGluLCBmb3JtVGV4dE1peGluLCBmb3JtU2VsZWN0aW9uTWl4aW4sIGZvcm1WYWxpZGl0eU1peGluXSxcbiAgcHJvcHM6IHtcbiAgICAvLyB2YWx1ZSBwcm9wIGRlZmluZWQgaW4gZm9ybS10ZXh0IG1peGluXG4gICAgLy8gdmFsdWU6IHsgfSxcbiAgICB0eXBlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAndGV4dCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcih0eXBlKSB7XG4gICAgICAgIHJldHVybiBhcnJheUluY2x1ZGVzKFRZUEVTLCB0eXBlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG5vV2hlZWw6IHtcbiAgICAgIC8vIERpc2FibGUgbW91c2V3aGVlbCB0byBwcmV2ZW50IHdoZWVsIGZyb20gY2hhbmdpbmcgdmFsdWVzIChpLmUuIG51bWJlci9kYXRlKS5cbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgbWluOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBOdW1iZXJdLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgbWF4OiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBOdW1iZXJdLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgc3RlcDoge1xuICAgICAgdHlwZTogW1N0cmluZywgTnVtYmVyXSxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIGxpc3Q6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgbG9jYWxUeXBlOiBmdW5jdGlvbiBsb2NhbFR5cGUoKSB7XG4gICAgICAvLyBXZSBvbmx5IGFsbG93IGNlcnRhaW4gdHlwZXNcbiAgICAgIHJldHVybiBhcnJheUluY2x1ZGVzKFRZUEVTLCB0aGlzLnR5cGUpID8gdGhpcy50eXBlIDogJ3RleHQnO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBub1doZWVsOiBmdW5jdGlvbiBub1doZWVsKG5ld1ZhbCkge1xuICAgICAgdGhpcy5zZXRXaGVlbFN0b3BwZXIobmV3VmFsKTtcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5zZXRXaGVlbFN0b3BwZXIodGhpcy5ub1doZWVsKTtcbiAgfSxcbiAgZGVhY3RpdmF0ZWQ6IGZ1bmN0aW9uIGRlYWN0aXZhdGVkKCkge1xuICAgIC8vIFR1cm4gb2ZmIGxpc3RlbmVycyB3aGVuIGtlZXAtYWxpdmUgY29tcG9uZW50IGRlYWN0aXZhdGVkXG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRoaXMuc2V0V2hlZWxTdG9wcGVyKGZhbHNlKTtcbiAgfSxcbiAgYWN0aXZhdGVkOiBmdW5jdGlvbiBhY3RpdmF0ZWQoKSB7XG4gICAgLy8gVHVybiBvbiBsaXN0ZW5lcnMgKGlmIG5vLXdoZWVsKSB3aGVuIGtlZXAtYWxpdmUgY29tcG9uZW50IGFjdGl2YXRlZFxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB0aGlzLnNldFdoZWVsU3RvcHBlcih0aGlzLm5vV2hlZWwpO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgdGhpcy5zZXRXaGVlbFN0b3BwZXIoZmFsc2UpO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgc2V0V2hlZWxTdG9wcGVyOiBmdW5jdGlvbiBzZXRXaGVlbFN0b3BwZXIob24pIHtcbiAgICAgIHZhciBpbnB1dCA9IHRoaXMuJGVsOyAvLyBXZSB1c2UgbmF0aXZlIGV2ZW50cywgc28gdGhhdCB3ZSBkb24ndCBpbnRlcmZlcmUgd2l0aCBwcm9wZ2F0aW9uXG5cbiAgICAgIGlmIChvbikge1xuICAgICAgICBldmVudE9uKGlucHV0LCAnZm9jdXMnLCB0aGlzLm9uV2hlZWxGb2N1cyk7XG4gICAgICAgIGV2ZW50T24oaW5wdXQsICdibHVyJywgdGhpcy5vbldoZWVsQmx1cik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBldmVudE9mZihpbnB1dCwgJ2ZvY3VzJywgdGhpcy5vbldoZWVsRm9jdXMpO1xuICAgICAgICBldmVudE9mZihpbnB1dCwgJ2JsdXInLCB0aGlzLm9uV2hlZWxCbHVyKTtcbiAgICAgICAgZXZlbnRPZmYoZG9jdW1lbnQsICd3aGVlbCcsIHRoaXMuc3RvcFdoZWVsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uV2hlZWxGb2N1czogZnVuY3Rpb24gb25XaGVlbEZvY3VzKGV2dCkge1xuICAgICAgZXZlbnRPbihkb2N1bWVudCwgJ3doZWVsJywgdGhpcy5zdG9wV2hlZWwpO1xuICAgIH0sXG4gICAgb25XaGVlbEJsdXI6IGZ1bmN0aW9uIG9uV2hlZWxCbHVyKGV2dCkge1xuICAgICAgZXZlbnRPZmYoZG9jdW1lbnQsICd3aGVlbCcsIHRoaXMuc3RvcFdoZWVsKTtcbiAgICB9LFxuICAgIHN0b3BXaGVlbDogZnVuY3Rpb24gc3RvcFdoZWVsKGV2dCkge1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLiRlbC5ibHVyKCk7XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiBoKCdpbnB1dCcsIHtcbiAgICAgIHJlZjogJ2lucHV0JyxcbiAgICAgIGNsYXNzOiBzZWxmLmNvbXB1dGVkQ2xhc3MsXG4gICAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgICBuYW1lOiAnbW9kZWwnLFxuICAgICAgICByYXdOYW1lOiAndi1tb2RlbCcsXG4gICAgICAgIHZhbHVlOiBzZWxmLmxvY2FsVmFsdWUsXG4gICAgICAgIGV4cHJlc3Npb246ICdsb2NhbFZhbHVlJ1xuICAgICAgfV0sXG4gICAgICBhdHRyczoge1xuICAgICAgICBpZDogc2VsZi5zYWZlSWQoKSxcbiAgICAgICAgbmFtZTogc2VsZi5uYW1lLFxuICAgICAgICBmb3JtOiBzZWxmLmZvcm0gfHwgbnVsbCxcbiAgICAgICAgdHlwZTogc2VsZi5sb2NhbFR5cGUsXG4gICAgICAgIGRpc2FibGVkOiBzZWxmLmRpc2FibGVkLFxuICAgICAgICBwbGFjZWhvbGRlcjogc2VsZi5wbGFjZWhvbGRlcixcbiAgICAgICAgcmVxdWlyZWQ6IHNlbGYucmVxdWlyZWQsXG4gICAgICAgIGF1dG9jb21wbGV0ZTogc2VsZi5hdXRvY29tcGxldGUgfHwgbnVsbCxcbiAgICAgICAgcmVhZG9ubHk6IHNlbGYucmVhZG9ubHkgfHwgc2VsZi5wbGFpbnRleHQsXG4gICAgICAgIG1pbjogc2VsZi5taW4sXG4gICAgICAgIG1heDogc2VsZi5tYXgsXG4gICAgICAgIHN0ZXA6IHNlbGYuc3RlcCxcbiAgICAgICAgbGlzdDogc2VsZi5sb2NhbFR5cGUgIT09ICdwYXNzd29yZCcgPyBzZWxmLmxpc3QgOiBudWxsLFxuICAgICAgICAnYXJpYS1yZXF1aXJlZCc6IHNlbGYucmVxdWlyZWQgPyAndHJ1ZScgOiBudWxsLFxuICAgICAgICAnYXJpYS1pbnZhbGlkJzogc2VsZi5jb21wdXRlZEFyaWFJbnZhbGlkXG4gICAgICB9LFxuICAgICAgZG9tUHJvcHM6IHtcbiAgICAgICAgdmFsdWU6IHNlbGYubG9jYWxWYWx1ZVxuICAgICAgfSxcbiAgICAgIG9uOiBfb2JqZWN0U3ByZWFkKHt9LCBzZWxmLiRsaXN0ZW5lcnMsIHtcbiAgICAgICAgaW5wdXQ6IHNlbGYub25JbnB1dCxcbiAgICAgICAgY2hhbmdlOiBzZWxmLm9uQ2hhbmdlLFxuICAgICAgICBibHVyOiBzZWxmLm9uQmx1clxuICAgICAgfSlcbiAgICB9KTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWlucHV0L2Zvcm0taW5wdXQuanNcbi8vIG1vZHVsZSBpZCA9IDE0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///146\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BFormRadioGroup; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_form__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mixins_form_options__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mixins_form_radio_check_group__ = __webpack_require__(144);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__mixins_form_size__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_form_state__ = __webpack_require__(16);\n\n\n\n\n\n\n\nvar props = {\n checked: {\n // type: [String, Number, Boolean, Object],\n default: null\n }\n}; // @vue/component\n\nvar BFormRadioGroup =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BFormRadioGroup',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_form__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__mixins_form_radio_check_group__[\"a\" /* default */], // Includes render function\n __WEBPACK_IMPORTED_MODULE_3__mixins_form_options__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__mixins_form_size__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__mixins_form_state__[\"a\" /* default */]],\n provide: function provide() {\n return {\n bvRadioGroup: this\n };\n },\n props: props,\n data: function data() {\n return {\n localChecked: this.checked\n };\n },\n computed: {\n isRadioGroup: function isRadioGroup() {\n return true;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLXJhZGlvL2Zvcm0tcmFkaW8tZ3JvdXAuanM/NGIxNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDSTtBQUNJO0FBQ2U7QUFDa0I7QUFDeEI7QUFDRTtBQUM5QztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsMkRBQU8sRUFBRSw2REFBUyxFQUFFLCtFQUF3QjtBQUN2RCxFQUFFLHFFQUFnQixFQUFFLGtFQUFhLEVBQUUsbUVBQWM7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNDYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgaWRNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvaWQnO1xuaW1wb3J0IGZvcm1NaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvZm9ybSc7XG5pbXBvcnQgZm9ybU9wdGlvbnNNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvZm9ybS1vcHRpb25zJztcbmltcG9ydCBmb3JtUmFkaW9DaGVja0dyb3VwTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tcmFkaW8tY2hlY2stZ3JvdXAnO1xuaW1wb3J0IGZvcm1TaXplTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tc2l6ZSc7XG5pbXBvcnQgZm9ybVN0YXRlTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tc3RhdGUnO1xuZXhwb3J0IHZhciBwcm9wcyA9IHtcbiAgY2hlY2tlZDoge1xuICAgIC8vIHR5cGU6IFtTdHJpbmcsIE51bWJlciwgQm9vbGVhbiwgT2JqZWN0XSxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkZvcm1SYWRpb0dyb3VwID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQkZvcm1SYWRpb0dyb3VwJyxcbiAgbWl4aW5zOiBbaWRNaXhpbiwgZm9ybU1peGluLCBmb3JtUmFkaW9DaGVja0dyb3VwTWl4aW4sIC8vIEluY2x1ZGVzIHJlbmRlciBmdW5jdGlvblxuICBmb3JtT3B0aW9uc01peGluLCBmb3JtU2l6ZU1peGluLCBmb3JtU3RhdGVNaXhpbl0sXG4gIHByb3ZpZGU6IGZ1bmN0aW9uIHByb3ZpZGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJ2UmFkaW9Hcm91cDogdGhpc1xuICAgIH07XG4gIH0sXG4gIHByb3BzOiBwcm9wcyxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYWxDaGVja2VkOiB0aGlzLmNoZWNrZWRcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGlzUmFkaW9Hcm91cDogZnVuY3Rpb24gaXNSYWRpb0dyb3VwKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Zvcm0tcmFkaW8vZm9ybS1yYWRpby1ncm91cC5qc1xuLy8gbW9kdWxlIGlkID0gMTQ2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///146\n"); /***/ }), /* 147 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_inspect__ = __webpack_require__(1);\n // @vue/component\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n model: {\n prop: 'value',\n event: 'update'\n },\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n ariaInvalid: {\n type: [Boolean, String],\n default: false\n },\n readonly: {\n type: Boolean,\n default: false\n },\n plaintext: {\n type: Boolean,\n default: false\n },\n autocomplete: {\n type: String,\n default: null\n },\n placeholder: {\n type: String,\n default: null\n },\n formatter: {\n type: Function,\n default: null\n },\n trim: {\n type: Boolean,\n default: false\n },\n number: {\n type: Boolean,\n default: false\n },\n lazyFormatter: {\n type: Boolean,\n value: false\n }\n },\n data: function data() {\n return {\n localValue: this.stringifyValue(this.value)\n };\n },\n computed: {\n computedClass: function computedClass() {\n return [{\n // Range input needs class custom-range\n 'custom-range': this.type === 'range',\n // plaintext not supported by type=range or type=color\n 'form-control-plaintext': this.plaintext && this.type !== 'range' && this.type !== 'color',\n // form-control not used by type=range or plaintext. Always used by type=color\n 'form-control': !this.plaintext && this.type !== 'range' || this.type === 'color'\n }, this.sizeFormClass, this.stateClass];\n },\n computedAriaInvalid: function computedAriaInvalid() {\n if (!this.ariaInvalid || this.ariaInvalid === 'false') {\n // this.ariaInvalid is null or false or 'false'\n return this.computedState === false ? 'true' : null;\n }\n\n if (this.ariaInvalid === true) {\n // User wants explicit aria-invalid=true\n return 'true';\n } // Most likely a string value (which could be the string 'true')\n\n\n return this.ariaInvalid;\n }\n },\n watch: {\n value: function value(newVal) {\n if (newVal !== this.localValue) {\n this.localValue = this.stringifyValue(newVal);\n }\n }\n },\n mounted: function mounted() {\n var value = this.stringifyValue(this.value);\n\n if (value !== this.localValue) {\n /* istanbul ignore next */\n this.localValue = value;\n }\n },\n methods: {\n stringifyValue: function stringifyValue(value) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils_inspect__[\"n\" /* isUndefined */])(value) || Object(__WEBPACK_IMPORTED_MODULE_0__utils_inspect__[\"g\" /* isNull */])(value) ? '' : String(value);\n },\n getFormatted: function getFormatted(value, evt) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n value = this.stringifyValue(value);\n\n if ((!this.lazyFormatter || force) && Object(__WEBPACK_IMPORTED_MODULE_0__utils_inspect__[\"f\" /* isFunction */])(this.formatter)) {\n value = this.formatter(value, evt);\n }\n\n return value;\n },\n updateValue: function updateValue(value) {\n value = this.stringifyValue(value);\n\n if (value !== this.localValue) {\n // Keep the input set to the value before modifiers\n this.localValue = value;\n\n if (this.number) {\n // Emulate `.number` modifier behaviour\n var num = parseFloat(value);\n value = isNaN(num) ? value : num;\n } else if (this.trim) {\n // Emulate `.trim` modifier behaviour\n value = value.trim();\n } // Update the v-model\n\n\n this.$emit('update', value);\n } else if (this.$refs.input && value !== this.$refs.input.value) {\n // When the `localValue` hasn't changed but the actual input value\n // is out of sync, make sure to change it to the given one.\n // Usually casued by browser autocomplete and how it triggers the\n // change or input event, or depending on the formatter function.\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2657\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/3498\n\n /* istanbul ignore next: hard to test */\n this.$refs.input.value = value;\n }\n },\n onInput: function onInput(evt) {\n // `evt.target.composing` is set by Vue\n // https://github.com/vuejs/vue/blob/dev/src/platforms/web/runtime/directives/model.js\n\n /* istanbul ignore if: hard to test composition events */\n if (evt.target.composing) {\n return;\n }\n\n var formatted = this.getFormatted(evt.target.value, evt); // Exit when the `formatter` function strictly returned `false`\n // or prevented the input event\n\n if (formatted === false || evt.defaultPrevented) {\n /* istanbul ignore next */\n evt.preventDefault();\n return;\n }\n\n this.updateValue(formatted);\n this.$emit('input', formatted);\n },\n onChange: function onChange(evt) {\n // `evt.target.composing` is set by Vue\n // https://github.com/vuejs/vue/blob/dev/src/platforms/web/runtime/directives/model.js\n\n /* istanbul ignore if: hard to test composition events */\n if (evt.target.composing) {\n return;\n }\n\n var formatted = this.getFormatted(evt.target.value, evt); // Exit when the `formatter` function strictly returned `false`\n // or prevented the input event\n\n if (formatted === false || evt.defaultPrevented) {\n /* istanbul ignore next */\n evt.preventDefault();\n return;\n }\n\n this.updateValue(formatted);\n this.$emit('change', formatted);\n },\n onBlur: function onBlur(evt) {\n // Lazy formatter\n if (this.lazyFormatter) {\n var formatted = this.getFormatted(evt.target.value, evt, true); // Exit when the `formatter` function strictly returned `false`\n\n if (formatted === false) {\n return;\n }\n\n this.updateValue(formatted);\n } // Emit native blur event\n\n\n this.$emit('blur', evt);\n },\n focus: function focus() {\n // For external handler that may want a focus method\n if (!this.disabled) {\n this.$el.focus();\n }\n },\n blur: function blur() {\n // For external handler that may want a blur method\n if (!this.disabled) {\n this.$el.blur();\n }\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vbWl4aW5zL2Zvcm0tdGV4dC5qcz81YzI3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQW1FOztBQUVwRDtBQUNmO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxhQUFhLDJFQUFXLFdBQVcsc0VBQU07QUFDekMsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQSw0Q0FBNEMsMEVBQVU7QUFDdEQ7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsK0RBQStEO0FBQy9EOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsK0RBQStEO0FBQy9EOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSx1RUFBdUU7O0FBRXZFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87OztBQUdQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6IjE0Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRnVuY3Rpb24sIGlzTnVsbCwgaXNVbmRlZmluZWQgfSBmcm9tICcuLi91dGlscy9pbnNwZWN0JzsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IGRlZmF1bHQge1xuICBtb2RlbDoge1xuICAgIHByb3A6ICd2YWx1ZScsXG4gICAgZXZlbnQ6ICd1cGRhdGUnXG4gIH0sXG4gIHByb3BzOiB7XG4gICAgdmFsdWU6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIE51bWJlcl0sXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgYXJpYUludmFsaWQ6IHtcbiAgICAgIHR5cGU6IFtCb29sZWFuLCBTdHJpbmddLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHJlYWRvbmx5OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHBsYWludGV4dDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBhdXRvY29tcGxldGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIHBsYWNlaG9sZGVyOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBmb3JtYXR0ZXI6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgdHJpbToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBudW1iZXI6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgbGF6eUZvcm1hdHRlcjoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIHZhbHVlOiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYWxWYWx1ZTogdGhpcy5zdHJpbmdpZnlWYWx1ZSh0aGlzLnZhbHVlKVxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgY29tcHV0ZWRDbGFzczogZnVuY3Rpb24gY29tcHV0ZWRDbGFzcygpIHtcbiAgICAgIHJldHVybiBbe1xuICAgICAgICAvLyBSYW5nZSBpbnB1dCBuZWVkcyBjbGFzcyBjdXN0b20tcmFuZ2VcbiAgICAgICAgJ2N1c3RvbS1yYW5nZSc6IHRoaXMudHlwZSA9PT0gJ3JhbmdlJyxcbiAgICAgICAgLy8gcGxhaW50ZXh0IG5vdCBzdXBwb3J0ZWQgYnkgdHlwZT1yYW5nZSBvciB0eXBlPWNvbG9yXG4gICAgICAgICdmb3JtLWNvbnRyb2wtcGxhaW50ZXh0JzogdGhpcy5wbGFpbnRleHQgJiYgdGhpcy50eXBlICE9PSAncmFuZ2UnICYmIHRoaXMudHlwZSAhPT0gJ2NvbG9yJyxcbiAgICAgICAgLy8gZm9ybS1jb250cm9sIG5vdCB1c2VkIGJ5IHR5cGU9cmFuZ2Ugb3IgcGxhaW50ZXh0LiBBbHdheXMgdXNlZCBieSB0eXBlPWNvbG9yXG4gICAgICAgICdmb3JtLWNvbnRyb2wnOiAhdGhpcy5wbGFpbnRleHQgJiYgdGhpcy50eXBlICE9PSAncmFuZ2UnIHx8IHRoaXMudHlwZSA9PT0gJ2NvbG9yJ1xuICAgICAgfSwgdGhpcy5zaXplRm9ybUNsYXNzLCB0aGlzLnN0YXRlQ2xhc3NdO1xuICAgIH0sXG4gICAgY29tcHV0ZWRBcmlhSW52YWxpZDogZnVuY3Rpb24gY29tcHV0ZWRBcmlhSW52YWxpZCgpIHtcbiAgICAgIGlmICghdGhpcy5hcmlhSW52YWxpZCB8fCB0aGlzLmFyaWFJbnZhbGlkID09PSAnZmFsc2UnKSB7XG4gICAgICAgIC8vIHRoaXMuYXJpYUludmFsaWQgaXMgbnVsbCBvciBmYWxzZSBvciAnZmFsc2UnXG4gICAgICAgIHJldHVybiB0aGlzLmNvbXB1dGVkU3RhdGUgPT09IGZhbHNlID8gJ3RydWUnIDogbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYXJpYUludmFsaWQgPT09IHRydWUpIHtcbiAgICAgICAgLy8gVXNlciB3YW50cyBleHBsaWNpdCBhcmlhLWludmFsaWQ9dHJ1ZVxuICAgICAgICByZXR1cm4gJ3RydWUnO1xuICAgICAgfSAvLyBNb3N0IGxpa2VseSBhIHN0cmluZyB2YWx1ZSAod2hpY2ggY291bGQgYmUgdGhlIHN0cmluZyAndHJ1ZScpXG5cblxuICAgICAgcmV0dXJuIHRoaXMuYXJpYUludmFsaWQ7XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShuZXdWYWwpIHtcbiAgICAgIGlmIChuZXdWYWwgIT09IHRoaXMubG9jYWxWYWx1ZSkge1xuICAgICAgICB0aGlzLmxvY2FsVmFsdWUgPSB0aGlzLnN0cmluZ2lmeVZhbHVlKG5ld1ZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciB2YWx1ZSA9IHRoaXMuc3RyaW5naWZ5VmFsdWUodGhpcy52YWx1ZSk7XG5cbiAgICBpZiAodmFsdWUgIT09IHRoaXMubG9jYWxWYWx1ZSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHRoaXMubG9jYWxWYWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHN0cmluZ2lmeVZhbHVlOiBmdW5jdGlvbiBzdHJpbmdpZnlWYWx1ZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzVW5kZWZpbmVkKHZhbHVlKSB8fCBpc051bGwodmFsdWUpID8gJycgOiBTdHJpbmcodmFsdWUpO1xuICAgIH0sXG4gICAgZ2V0Rm9ybWF0dGVkOiBmdW5jdGlvbiBnZXRGb3JtYXR0ZWQodmFsdWUsIGV2dCkge1xuICAgICAgdmFyIGZvcmNlID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBmYWxzZTtcbiAgICAgIHZhbHVlID0gdGhpcy5zdHJpbmdpZnlWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgIGlmICgoIXRoaXMubGF6eUZvcm1hdHRlciB8fCBmb3JjZSkgJiYgaXNGdW5jdGlvbih0aGlzLmZvcm1hdHRlcikpIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzLmZvcm1hdHRlcih2YWx1ZSwgZXZ0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0sXG4gICAgdXBkYXRlVmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZVZhbHVlKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuc3RyaW5naWZ5VmFsdWUodmFsdWUpO1xuXG4gICAgICBpZiAodmFsdWUgIT09IHRoaXMubG9jYWxWYWx1ZSkge1xuICAgICAgICAvLyBLZWVwIHRoZSBpbnB1dCBzZXQgdG8gdGhlIHZhbHVlIGJlZm9yZSBtb2RpZmllcnNcbiAgICAgICAgdGhpcy5sb2NhbFZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHRoaXMubnVtYmVyKSB7XG4gICAgICAgICAgLy8gRW11bGF0ZSBgLm51bWJlcmAgbW9kaWZpZXIgYmVoYXZpb3VyXG4gICAgICAgICAgdmFyIG51bSA9IHBhcnNlRmxvYXQodmFsdWUpO1xuICAgICAgICAgIHZhbHVlID0gaXNOYU4obnVtKSA/IHZhbHVlIDogbnVtO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHJpbSkge1xuICAgICAgICAgIC8vIEVtdWxhdGUgYC50cmltYCBtb2RpZmllciBiZWhhdmlvdXJcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnRyaW0oKTtcbiAgICAgICAgfSAvLyBVcGRhdGUgdGhlIHYtbW9kZWxcblxuXG4gICAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZScsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy4kcmVmcy5pbnB1dCAmJiB2YWx1ZSAhPT0gdGhpcy4kcmVmcy5pbnB1dC52YWx1ZSkge1xuICAgICAgICAvLyBXaGVuIHRoZSBgbG9jYWxWYWx1ZWAgaGFzbid0IGNoYW5nZWQgYnV0IHRoZSBhY3R1YWwgaW5wdXQgdmFsdWVcbiAgICAgICAgLy8gaXMgb3V0IG9mIHN5bmMsIG1ha2Ugc3VyZSB0byBjaGFuZ2UgaXQgdG8gdGhlIGdpdmVuIG9uZS5cbiAgICAgICAgLy8gVXN1YWxseSBjYXN1ZWQgYnkgYnJvd3NlciBhdXRvY29tcGxldGUgYW5kIGhvdyBpdCB0cmlnZ2VycyB0aGVcbiAgICAgICAgLy8gY2hhbmdlIG9yIGlucHV0IGV2ZW50LCBvciBkZXBlbmRpbmcgb24gdGhlIGZvcm1hdHRlciBmdW5jdGlvbi5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jvb3RzdHJhcC12dWUvYm9vdHN0cmFwLXZ1ZS9pc3N1ZXMvMjY1N1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYm9vdHN0cmFwLXZ1ZS9ib290c3RyYXAtdnVlL2lzc3Vlcy8zNDk4XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGhhcmQgdG8gdGVzdCAqL1xuICAgICAgICB0aGlzLiRyZWZzLmlucHV0LnZhbHVlID0gdmFsdWU7XG4gICAgICB9XG4gICAgfSxcbiAgICBvbklucHV0OiBmdW5jdGlvbiBvbklucHV0KGV2dCkge1xuICAgICAgLy8gYGV2dC50YXJnZXQuY29tcG9zaW5nYCBpcyBzZXQgYnkgVnVlXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlL2Jsb2IvZGV2L3NyYy9wbGF0Zm9ybXMvd2ViL3J1bnRpbWUvZGlyZWN0aXZlcy9tb2RlbC5qc1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWY6IGhhcmQgdG8gdGVzdCBjb21wb3NpdGlvbiBldmVudHMgKi9cbiAgICAgIGlmIChldnQudGFyZ2V0LmNvbXBvc2luZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBmb3JtYXR0ZWQgPSB0aGlzLmdldEZvcm1hdHRlZChldnQudGFyZ2V0LnZhbHVlLCBldnQpOyAvLyBFeGl0IHdoZW4gdGhlIGBmb3JtYXR0ZXJgIGZ1bmN0aW9uIHN0cmljdGx5IHJldHVybmVkIGBmYWxzZWBcbiAgICAgIC8vIG9yIHByZXZlbnRlZCB0aGUgaW5wdXQgZXZlbnRcblxuICAgICAgaWYgKGZvcm1hdHRlZCA9PT0gZmFsc2UgfHwgZXZ0LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVWYWx1ZShmb3JtYXR0ZWQpO1xuICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBmb3JtYXR0ZWQpO1xuICAgIH0sXG4gICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGV2dCkge1xuICAgICAgLy8gYGV2dC50YXJnZXQuY29tcG9zaW5nYCBpcyBzZXQgYnkgVnVlXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlL2Jsb2IvZGV2L3NyYy9wbGF0Zm9ybXMvd2ViL3J1bnRpbWUvZGlyZWN0aXZlcy9tb2RlbC5qc1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWY6IGhhcmQgdG8gdGVzdCBjb21wb3NpdGlvbiBldmVudHMgKi9cbiAgICAgIGlmIChldnQudGFyZ2V0LmNvbXBvc2luZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBmb3JtYXR0ZWQgPSB0aGlzLmdldEZvcm1hdHRlZChldnQudGFyZ2V0LnZhbHVlLCBldnQpOyAvLyBFeGl0IHdoZW4gdGhlIGBmb3JtYXR0ZXJgIGZ1bmN0aW9uIHN0cmljdGx5IHJldHVybmVkIGBmYWxzZWBcbiAgICAgIC8vIG9yIHByZXZlbnRlZCB0aGUgaW5wdXQgZXZlbnRcblxuICAgICAgaWYgKGZvcm1hdHRlZCA9PT0gZmFsc2UgfHwgZXZ0LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVWYWx1ZShmb3JtYXR0ZWQpO1xuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgZm9ybWF0dGVkKTtcbiAgICB9LFxuICAgIG9uQmx1cjogZnVuY3Rpb24gb25CbHVyKGV2dCkge1xuICAgICAgLy8gTGF6eSBmb3JtYXR0ZXJcbiAgICAgIGlmICh0aGlzLmxhenlGb3JtYXR0ZXIpIHtcbiAgICAgICAgdmFyIGZvcm1hdHRlZCA9IHRoaXMuZ2V0Rm9ybWF0dGVkKGV2dC50YXJnZXQudmFsdWUsIGV2dCwgdHJ1ZSk7IC8vIEV4aXQgd2hlbiB0aGUgYGZvcm1hdHRlcmAgZnVuY3Rpb24gc3RyaWN0bHkgcmV0dXJuZWQgYGZhbHNlYFxuXG4gICAgICAgIGlmIChmb3JtYXR0ZWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShmb3JtYXR0ZWQpO1xuICAgICAgfSAvLyBFbWl0IG5hdGl2ZSBibHVyIGV2ZW50XG5cblxuICAgICAgdGhpcy4kZW1pdCgnYmx1cicsIGV2dCk7XG4gICAgfSxcbiAgICBmb2N1czogZnVuY3Rpb24gZm9jdXMoKSB7XG4gICAgICAvLyBGb3IgZXh0ZXJuYWwgaGFuZGxlciB0aGF0IG1heSB3YW50IGEgZm9jdXMgbWV0aG9kXG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy4kZWwuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGJsdXI6IGZ1bmN0aW9uIGJsdXIoKSB7XG4gICAgICAvLyBGb3IgZXh0ZXJuYWwgaGFuZGxlciB0aGF0IG1heSB3YW50IGEgYmx1ciBtZXRob2RcbiAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLiRlbC5ibHVyKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL21peGlucy9mb3JtLXRleHQuanNcbi8vIG1vZHVsZSBpZCA9IDE0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///147\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return FormInputPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__form_input__ = __webpack_require__(148);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BFormInput */\n\n\nvar FormInputPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BFormInput: __WEBPACK_IMPORTED_MODULE_0__form_input__[\"a\" /* BFormInput */],\n BInput: __WEBPACK_IMPORTED_MODULE_0__form_input__[\"a\" /* BFormInput */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWlucHV0L2luZGV4LmpzP2EzOTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEM7QUFDVTtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGdCQUFnQiwrREFBVTtBQUMxQixZQUFZLCtEQUFVO0FBQ3RCO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNDcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCRm9ybUlucHV0IH0gZnJvbSAnLi9mb3JtLWlucHV0JztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBGb3JtSW5wdXRQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCRm9ybUlucHV0OiBCRm9ybUlucHV0LFxuICAgIEJJbnB1dDogQkZvcm1JbnB1dFxuICB9XG59KTtcbmV4cG9ydCB7IEZvcm1JbnB1dFBsdWdpbiwgQkZvcm1JbnB1dCB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvZm9ybS1pbnB1dC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTQ3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///147\n"); /***/ }), /* 148 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("// @vue/component\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n computed: {\n selectionStart: {\n // Expose selectionStart for formatters, etc\n cache: false,\n get: function get()\n /* istanbul ignore next */\n {\n return this.$refs.input.selectionStart;\n },\n set: function set(val)\n /* istanbul ignore next */\n {\n this.$refs.input.selectionStart = val;\n }\n },\n selectionEnd: {\n // Expose selectionEnd for formatters, etc\n cache: false,\n get: function get()\n /* istanbul ignore next */\n {\n return this.$refs.input.selectionEnd;\n },\n set: function set(val)\n /* istanbul ignore next */\n {\n this.$refs.input.selectionEnd = val;\n }\n },\n selectionDirection: {\n // Expose selectionDirection for formatters, etc\n cache: false,\n get: function get()\n /* istanbul ignore next */\n {\n return this.$refs.input.selectionDirection;\n },\n set: function set(val)\n /* istanbul ignore next */\n {\n this.$refs.input.selectionDirection = val;\n }\n }\n },\n methods: {\n select: function select()\n /* istanbul ignore next */\n {\n var _this$$refs$input;\n\n // For external handler that may want a select() method\n (_this$$refs$input = this.$refs.input).select.apply(_this$$refs$input, arguments);\n },\n setSelectionRange: function setSelectionRange()\n /* istanbul ignore next */\n {\n var _this$$refs$input2;\n\n // For external handler that may want a setSelectionRange(a,b,c) method\n (_this$$refs$input2 = this.$refs.input).setSelectionRange.apply(_this$$refs$input2, arguments);\n },\n setRangeText: function setRangeText()\n /* istanbul ignore next */\n {\n var _this$$refs$input3;\n\n // For external handler that may want a setRangeText(a,b,c) method\n (_this$$refs$input3 = this.$refs.input).setRangeText.apply(_this$$refs$input3, arguments);\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vbWl4aW5zL2Zvcm0tc2VsZWN0aW9uLmpzPzBjMTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMTQ4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHZ1ZS9jb21wb25lbnRcbmV4cG9ydCBkZWZhdWx0IHtcbiAgY29tcHV0ZWQ6IHtcbiAgICBzZWxlY3Rpb25TdGFydDoge1xuICAgICAgLy8gRXhwb3NlIHNlbGVjdGlvblN0YXJ0IGZvciBmb3JtYXR0ZXJzLCBldGNcbiAgICAgIGNhY2hlOiBmYWxzZSxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KClcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLiRyZWZzLmlucHV0LnNlbGVjdGlvblN0YXJ0O1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gc2V0KHZhbClcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICB7XG4gICAgICAgIHRoaXMuJHJlZnMuaW5wdXQuc2VsZWN0aW9uU3RhcnQgPSB2YWw7XG4gICAgICB9XG4gICAgfSxcbiAgICBzZWxlY3Rpb25FbmQ6IHtcbiAgICAgIC8vIEV4cG9zZSBzZWxlY3Rpb25FbmQgZm9yIGZvcm1hdHRlcnMsIGV0Y1xuICAgICAgY2FjaGU6IGZhbHNlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHJlZnMuaW5wdXQuc2VsZWN0aW9uRW5kO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gc2V0KHZhbClcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICB7XG4gICAgICAgIHRoaXMuJHJlZnMuaW5wdXQuc2VsZWN0aW9uRW5kID0gdmFsO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2VsZWN0aW9uRGlyZWN0aW9uOiB7XG4gICAgICAvLyBFeHBvc2Ugc2VsZWN0aW9uRGlyZWN0aW9uIGZvciBmb3JtYXR0ZXJzLCBldGNcbiAgICAgIGNhY2hlOiBmYWxzZSxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KClcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLiRyZWZzLmlucHV0LnNlbGVjdGlvbkRpcmVjdGlvbjtcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWwpXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAge1xuICAgICAgICB0aGlzLiRyZWZzLmlucHV0LnNlbGVjdGlvbkRpcmVjdGlvbiA9IHZhbDtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBzZWxlY3Q6IGZ1bmN0aW9uIHNlbGVjdCgpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB7XG4gICAgICB2YXIgX3RoaXMkJHJlZnMkaW5wdXQ7XG5cbiAgICAgIC8vIEZvciBleHRlcm5hbCBoYW5kbGVyIHRoYXQgbWF5IHdhbnQgYSBzZWxlY3QoKSBtZXRob2RcbiAgICAgIChfdGhpcyQkcmVmcyRpbnB1dCA9IHRoaXMuJHJlZnMuaW5wdXQpLnNlbGVjdC5hcHBseShfdGhpcyQkcmVmcyRpbnB1dCwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIHNldFNlbGVjdGlvblJhbmdlOiBmdW5jdGlvbiBzZXRTZWxlY3Rpb25SYW5nZSgpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB7XG4gICAgICB2YXIgX3RoaXMkJHJlZnMkaW5wdXQyO1xuXG4gICAgICAvLyBGb3IgZXh0ZXJuYWwgaGFuZGxlciB0aGF0IG1heSB3YW50IGEgc2V0U2VsZWN0aW9uUmFuZ2UoYSxiLGMpIG1ldGhvZFxuICAgICAgKF90aGlzJCRyZWZzJGlucHV0MiA9IHRoaXMuJHJlZnMuaW5wdXQpLnNldFNlbGVjdGlvblJhbmdlLmFwcGx5KF90aGlzJCRyZWZzJGlucHV0MiwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIHNldFJhbmdlVGV4dDogZnVuY3Rpb24gc2V0UmFuZ2VUZXh0KClcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHtcbiAgICAgIHZhciBfdGhpcyQkcmVmcyRpbnB1dDM7XG5cbiAgICAgIC8vIEZvciBleHRlcm5hbCBoYW5kbGVyIHRoYXQgbWF5IHdhbnQgYSBzZXRSYW5nZVRleHQoYSxiLGMpIG1ldGhvZFxuICAgICAgKF90aGlzJCRyZWZzJGlucHV0MyA9IHRoaXMuJHJlZnMuaW5wdXQpLnNldFJhbmdlVGV4dC5hcHBseShfdGhpcyQkcmVmcyRpbnB1dDMsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL21peGlucy9mb3JtLXNlbGVjdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMTQ4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///148\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BFormInput; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_form__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mixins_form_size__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mixins_form_state__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__mixins_form_text__ = __webpack_require__(149);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_form_selection__ = __webpack_require__(150);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__mixins_form_validity__ = __webpack_require__(151);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__utils_dom__ = __webpack_require__(6);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n\n\n // Valid supported input types\n\nvar TYPES = ['text', 'password', 'email', 'number', 'url', 'tel', 'search', 'range', 'color', 'date', 'time', 'datetime', 'datetime-local', 'month', 'week']; // @vue/component\n\nvar BFormInput =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BFormInput',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_form__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__mixins_form_size__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__mixins_form_state__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__mixins_form_text__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__mixins_form_selection__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__mixins_form_validity__[\"a\" /* default */]],\n props: {\n // value prop defined in form-text mixin\n // value: { },\n type: {\n type: String,\n default: 'text',\n validator: function validator(type) {\n return Object(__WEBPACK_IMPORTED_MODULE_8__utils_array__[\"a\" /* arrayIncludes */])(TYPES, type);\n }\n },\n noWheel: {\n // Disable mousewheel to prevent wheel from changing values (i.e. number/date).\n type: Boolean,\n default: false\n },\n min: {\n type: [String, Number],\n default: null\n },\n max: {\n type: [String, Number],\n default: null\n },\n step: {\n type: [String, Number],\n default: null\n },\n list: {\n type: String,\n default: null\n }\n },\n computed: {\n localType: function localType() {\n // We only allow certain types\n return Object(__WEBPACK_IMPORTED_MODULE_8__utils_array__[\"a\" /* arrayIncludes */])(TYPES, this.type) ? this.type : 'text';\n }\n },\n watch: {\n noWheel: function noWheel(newVal) {\n this.setWheelStopper(newVal);\n }\n },\n mounted: function mounted() {\n this.setWheelStopper(this.noWheel);\n },\n deactivated: function deactivated() {\n // Turn off listeners when keep-alive component deactivated\n\n /* istanbul ignore next */\n this.setWheelStopper(false);\n },\n activated: function activated() {\n // Turn on listeners (if no-wheel) when keep-alive component activated\n\n /* istanbul ignore next */\n this.setWheelStopper(this.noWheel);\n },\n beforeDestroy: function beforeDestroy() {\n /* istanbul ignore next */\n this.setWheelStopper(false);\n },\n methods: {\n setWheelStopper: function setWheelStopper(on) {\n var input = this.$el; // We use native events, so that we don't interfere with propgation\n\n if (on) {\n Object(__WEBPACK_IMPORTED_MODULE_9__utils_dom__[\"f\" /* eventOn */])(input, 'focus', this.onWheelFocus);\n Object(__WEBPACK_IMPORTED_MODULE_9__utils_dom__[\"f\" /* eventOn */])(input, 'blur', this.onWheelBlur);\n } else {\n Object(__WEBPACK_IMPORTED_MODULE_9__utils_dom__[\"e\" /* eventOff */])(input, 'focus', this.onWheelFocus);\n Object(__WEBPACK_IMPORTED_MODULE_9__utils_dom__[\"e\" /* eventOff */])(input, 'blur', this.onWheelBlur);\n Object(__WEBPACK_IMPORTED_MODULE_9__utils_dom__[\"e\" /* eventOff */])(document, 'wheel', this.stopWheel);\n }\n },\n onWheelFocus: function onWheelFocus(evt) {\n Object(__WEBPACK_IMPORTED_MODULE_9__utils_dom__[\"f\" /* eventOn */])(document, 'wheel', this.stopWheel);\n },\n onWheelBlur: function onWheelBlur(evt) {\n Object(__WEBPACK_IMPORTED_MODULE_9__utils_dom__[\"e\" /* eventOff */])(document, 'wheel', this.stopWheel);\n },\n stopWheel: function stopWheel(evt) {\n evt.preventDefault();\n this.$el.blur();\n }\n },\n render: function render(h) {\n var self = this;\n return h('input', {\n ref: 'input',\n class: self.computedClass,\n directives: [{\n name: 'model',\n rawName: 'v-model',\n value: self.localValue,\n expression: 'localValue'\n }],\n attrs: {\n id: self.safeId(),\n name: self.name,\n form: self.form || null,\n type: self.localType,\n disabled: self.disabled,\n placeholder: self.placeholder,\n required: self.required,\n autocomplete: self.autocomplete || null,\n readonly: self.readonly || self.plaintext,\n min: self.min,\n max: self.max,\n step: self.step,\n list: self.localType !== 'password' ? self.list : null,\n 'aria-required': self.required ? 'true' : null,\n 'aria-invalid': self.computedAriaInvalid\n },\n domProps: {\n value: self.localValue\n },\n on: _objectSpread({}, self.$listeners, {\n input: self.onInput,\n change: self.onChange,\n blur: self.onBlur\n })\n });\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWlucHV0L2Zvcm0taW5wdXQuanM/MDk2NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNJO0FBQ0k7QUFDUztBQUNFO0FBQ0Y7QUFDVTtBQUNGO0FBQ1Q7QUFDRTs7QUFFcEQsNkpBQTZKOztBQUV0SjtBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsMkRBQU8sRUFBRSw2REFBUyxFQUFFLGtFQUFhLEVBQUUsbUVBQWMsRUFBRSxrRUFBYSxFQUFFLHVFQUFrQixFQUFFLHNFQUFpQjtBQUNsSDtBQUNBO0FBQ0EsZUFBZSxFQUFFO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSwyRUFBYTtBQUM1QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLDJFQUFhO0FBQzFCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDJCQUEyQjs7QUFFM0I7QUFDQSxRQUFRLG1FQUFPO0FBQ2YsUUFBUSxtRUFBTztBQUNmLE9BQU87QUFDUCxRQUFRLG9FQUFRO0FBQ2hCLFFBQVEsb0VBQVE7QUFDaEIsUUFBUSxvRUFBUTtBQUNoQjtBQUNBLEtBQUs7QUFDTDtBQUNBLE1BQU0sbUVBQU87QUFDYixLQUFLO0FBQ0w7QUFDQSxNQUFNLG9FQUFRO0FBQ2QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjE0OC5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhzb3VyY2UsIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCBpZE1peGluIGZyb20gJy4uLy4uL21peGlucy9pZCc7XG5pbXBvcnQgZm9ybU1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtJztcbmltcG9ydCBmb3JtU2l6ZU1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXNpemUnO1xuaW1wb3J0IGZvcm1TdGF0ZU1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXN0YXRlJztcbmltcG9ydCBmb3JtVGV4dE1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXRleHQnO1xuaW1wb3J0IGZvcm1TZWxlY3Rpb25NaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvZm9ybS1zZWxlY3Rpb24nO1xuaW1wb3J0IGZvcm1WYWxpZGl0eU1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXZhbGlkaXR5JztcbmltcG9ydCB7IGFycmF5SW5jbHVkZXMgfSBmcm9tICcuLi8uLi91dGlscy9hcnJheSc7XG5pbXBvcnQgeyBldmVudE9uLCBldmVudE9mZiB9IGZyb20gJy4uLy4uL3V0aWxzL2RvbSc7IC8vIFZhbGlkIHN1cHBvcnRlZCBpbnB1dCB0eXBlc1xuXG52YXIgVFlQRVMgPSBbJ3RleHQnLCAncGFzc3dvcmQnLCAnZW1haWwnLCAnbnVtYmVyJywgJ3VybCcsICd0ZWwnLCAnc2VhcmNoJywgJ3JhbmdlJywgJ2NvbG9yJywgJ2RhdGUnLCAndGltZScsICdkYXRldGltZScsICdkYXRldGltZS1sb2NhbCcsICdtb250aCcsICd3ZWVrJ107IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkZvcm1JbnB1dCA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JGb3JtSW5wdXQnLFxuICBtaXhpbnM6IFtpZE1peGluLCBmb3JtTWl4aW4sIGZvcm1TaXplTWl4aW4sIGZvcm1TdGF0ZU1peGluLCBmb3JtVGV4dE1peGluLCBmb3JtU2VsZWN0aW9uTWl4aW4sIGZvcm1WYWxpZGl0eU1peGluXSxcbiAgcHJvcHM6IHtcbiAgICAvLyB2YWx1ZSBwcm9wIGRlZmluZWQgaW4gZm9ybS10ZXh0IG1peGluXG4gICAgLy8gdmFsdWU6IHsgfSxcbiAgICB0eXBlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAndGV4dCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcih0eXBlKSB7XG4gICAgICAgIHJldHVybiBhcnJheUluY2x1ZGVzKFRZUEVTLCB0eXBlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG5vV2hlZWw6IHtcbiAgICAgIC8vIERpc2FibGUgbW91c2V3aGVlbCB0byBwcmV2ZW50IHdoZWVsIGZyb20gY2hhbmdpbmcgdmFsdWVzIChpLmUuIG51bWJlci9kYXRlKS5cbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgbWluOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBOdW1iZXJdLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgbWF4OiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBOdW1iZXJdLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgc3RlcDoge1xuICAgICAgdHlwZTogW1N0cmluZywgTnVtYmVyXSxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIGxpc3Q6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgbG9jYWxUeXBlOiBmdW5jdGlvbiBsb2NhbFR5cGUoKSB7XG4gICAgICAvLyBXZSBvbmx5IGFsbG93IGNlcnRhaW4gdHlwZXNcbiAgICAgIHJldHVybiBhcnJheUluY2x1ZGVzKFRZUEVTLCB0aGlzLnR5cGUpID8gdGhpcy50eXBlIDogJ3RleHQnO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBub1doZWVsOiBmdW5jdGlvbiBub1doZWVsKG5ld1ZhbCkge1xuICAgICAgdGhpcy5zZXRXaGVlbFN0b3BwZXIobmV3VmFsKTtcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5zZXRXaGVlbFN0b3BwZXIodGhpcy5ub1doZWVsKTtcbiAgfSxcbiAgZGVhY3RpdmF0ZWQ6IGZ1bmN0aW9uIGRlYWN0aXZhdGVkKCkge1xuICAgIC8vIFR1cm4gb2ZmIGxpc3RlbmVycyB3aGVuIGtlZXAtYWxpdmUgY29tcG9uZW50IGRlYWN0aXZhdGVkXG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRoaXMuc2V0V2hlZWxTdG9wcGVyKGZhbHNlKTtcbiAgfSxcbiAgYWN0aXZhdGVkOiBmdW5jdGlvbiBhY3RpdmF0ZWQoKSB7XG4gICAgLy8gVHVybiBvbiBsaXN0ZW5lcnMgKGlmIG5vLXdoZWVsKSB3aGVuIGtlZXAtYWxpdmUgY29tcG9uZW50IGFjdGl2YXRlZFxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB0aGlzLnNldFdoZWVsU3RvcHBlcih0aGlzLm5vV2hlZWwpO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgdGhpcy5zZXRXaGVlbFN0b3BwZXIoZmFsc2UpO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgc2V0V2hlZWxTdG9wcGVyOiBmdW5jdGlvbiBzZXRXaGVlbFN0b3BwZXIob24pIHtcbiAgICAgIHZhciBpbnB1dCA9IHRoaXMuJGVsOyAvLyBXZSB1c2UgbmF0aXZlIGV2ZW50cywgc28gdGhhdCB3ZSBkb24ndCBpbnRlcmZlcmUgd2l0aCBwcm9wZ2F0aW9uXG5cbiAgICAgIGlmIChvbikge1xuICAgICAgICBldmVudE9uKGlucHV0LCAnZm9jdXMnLCB0aGlzLm9uV2hlZWxGb2N1cyk7XG4gICAgICAgIGV2ZW50T24oaW5wdXQsICdibHVyJywgdGhpcy5vbldoZWVsQmx1cik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBldmVudE9mZihpbnB1dCwgJ2ZvY3VzJywgdGhpcy5vbldoZWVsRm9jdXMpO1xuICAgICAgICBldmVudE9mZihpbnB1dCwgJ2JsdXInLCB0aGlzLm9uV2hlZWxCbHVyKTtcbiAgICAgICAgZXZlbnRPZmYoZG9jdW1lbnQsICd3aGVlbCcsIHRoaXMuc3RvcFdoZWVsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uV2hlZWxGb2N1czogZnVuY3Rpb24gb25XaGVlbEZvY3VzKGV2dCkge1xuICAgICAgZXZlbnRPbihkb2N1bWVudCwgJ3doZWVsJywgdGhpcy5zdG9wV2hlZWwpO1xuICAgIH0sXG4gICAgb25XaGVlbEJsdXI6IGZ1bmN0aW9uIG9uV2hlZWxCbHVyKGV2dCkge1xuICAgICAgZXZlbnRPZmYoZG9jdW1lbnQsICd3aGVlbCcsIHRoaXMuc3RvcFdoZWVsKTtcbiAgICB9LFxuICAgIHN0b3BXaGVlbDogZnVuY3Rpb24gc3RvcFdoZWVsKGV2dCkge1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLiRlbC5ibHVyKCk7XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiBoKCdpbnB1dCcsIHtcbiAgICAgIHJlZjogJ2lucHV0JyxcbiAgICAgIGNsYXNzOiBzZWxmLmNvbXB1dGVkQ2xhc3MsXG4gICAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgICBuYW1lOiAnbW9kZWwnLFxuICAgICAgICByYXdOYW1lOiAndi1tb2RlbCcsXG4gICAgICAgIHZhbHVlOiBzZWxmLmxvY2FsVmFsdWUsXG4gICAgICAgIGV4cHJlc3Npb246ICdsb2NhbFZhbHVlJ1xuICAgICAgfV0sXG4gICAgICBhdHRyczoge1xuICAgICAgICBpZDogc2VsZi5zYWZlSWQoKSxcbiAgICAgICAgbmFtZTogc2VsZi5uYW1lLFxuICAgICAgICBmb3JtOiBzZWxmLmZvcm0gfHwgbnVsbCxcbiAgICAgICAgdHlwZTogc2VsZi5sb2NhbFR5cGUsXG4gICAgICAgIGRpc2FibGVkOiBzZWxmLmRpc2FibGVkLFxuICAgICAgICBwbGFjZWhvbGRlcjogc2VsZi5wbGFjZWhvbGRlcixcbiAgICAgICAgcmVxdWlyZWQ6IHNlbGYucmVxdWlyZWQsXG4gICAgICAgIGF1dG9jb21wbGV0ZTogc2VsZi5hdXRvY29tcGxldGUgfHwgbnVsbCxcbiAgICAgICAgcmVhZG9ubHk6IHNlbGYucmVhZG9ubHkgfHwgc2VsZi5wbGFpbnRleHQsXG4gICAgICAgIG1pbjogc2VsZi5taW4sXG4gICAgICAgIG1heDogc2VsZi5tYXgsXG4gICAgICAgIHN0ZXA6IHNlbGYuc3RlcCxcbiAgICAgICAgbGlzdDogc2VsZi5sb2NhbFR5cGUgIT09ICdwYXNzd29yZCcgPyBzZWxmLmxpc3QgOiBudWxsLFxuICAgICAgICAnYXJpYS1yZXF1aXJlZCc6IHNlbGYucmVxdWlyZWQgPyAndHJ1ZScgOiBudWxsLFxuICAgICAgICAnYXJpYS1pbnZhbGlkJzogc2VsZi5jb21wdXRlZEFyaWFJbnZhbGlkXG4gICAgICB9LFxuICAgICAgZG9tUHJvcHM6IHtcbiAgICAgICAgdmFsdWU6IHNlbGYubG9jYWxWYWx1ZVxuICAgICAgfSxcbiAgICAgIG9uOiBfb2JqZWN0U3ByZWFkKHt9LCBzZWxmLiRsaXN0ZW5lcnMsIHtcbiAgICAgICAgaW5wdXQ6IHNlbGYub25JbnB1dCxcbiAgICAgICAgY2hhbmdlOiBzZWxmLm9uQ2hhbmdlLFxuICAgICAgICBibHVyOiBzZWxmLm9uQmx1clxuICAgICAgfSlcbiAgICB9KTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWlucHV0L2Zvcm0taW5wdXQuanNcbi8vIG1vZHVsZSBpZCA9IDE0OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///148\n"); /***/ }), /* 149 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("// @vue/component\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n computed: {\n validity: {\n // Expose validity property\n cache: false,\n get: function get()\n /* istanbul ignore next */\n {\n return this.$refs.input.validity;\n }\n },\n validationMessage: {\n // Expose validationMessage property\n cache: false,\n get: function get()\n /* istanbul ignore next */\n {\n return this.$refs.input.validationMessage;\n }\n },\n willValidate: {\n // Expose willValidate property\n cache: false,\n get: function get()\n /* istanbul ignore next */\n {\n return this.$refs.input.willValidate;\n }\n }\n },\n methods: {\n setCustomValidity: function setCustomValidity()\n /* istanbul ignore next */\n {\n var _this$$refs$input;\n\n // For external handler that may want a setCustomValidity(...) method\n return (_this$$refs$input = this.$refs.input).setCustomValidity.apply(_this$$refs$input, arguments);\n },\n checkValidity: function checkValidity()\n /* istanbul ignore next */\n {\n var _this$$refs$input2;\n\n // For external handler that may want a checkValidity(...) method\n return (_this$$refs$input2 = this.$refs.input).checkValidity.apply(_this$$refs$input2, arguments);\n },\n reportValidity: function reportValidity()\n /* istanbul ignore next */\n {\n var _this$$refs$input3;\n\n // For external handler that may want a reportValidity(...) method\n return (_this$$refs$input3 = this.$refs.input).reportValidity.apply(_this$$refs$input3, arguments);\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vbWl4aW5zL2Zvcm0tdmFsaWRpdHkuanM/NDY0NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNDkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdnVlL2NvbXBvbmVudFxuZXhwb3J0IGRlZmF1bHQge1xuICBjb21wdXRlZDoge1xuICAgIHZhbGlkaXR5OiB7XG4gICAgICAvLyBFeHBvc2UgdmFsaWRpdHkgcHJvcGVydHlcbiAgICAgIGNhY2hlOiBmYWxzZSxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KClcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLiRyZWZzLmlucHV0LnZhbGlkaXR5O1xuICAgICAgfVxuICAgIH0sXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHtcbiAgICAgIC8vIEV4cG9zZSB2YWxpZGF0aW9uTWVzc2FnZSBwcm9wZXJ0eVxuICAgICAgY2FjaGU6IGZhbHNlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHJlZnMuaW5wdXQudmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICB9XG4gICAgfSxcbiAgICB3aWxsVmFsaWRhdGU6IHtcbiAgICAgIC8vIEV4cG9zZSB3aWxsVmFsaWRhdGUgcHJvcGVydHlcbiAgICAgIGNhY2hlOiBmYWxzZSxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KClcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLiRyZWZzLmlucHV0LndpbGxWYWxpZGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBzZXRDdXN0b21WYWxpZGl0eTogZnVuY3Rpb24gc2V0Q3VzdG9tVmFsaWRpdHkoKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAge1xuICAgICAgdmFyIF90aGlzJCRyZWZzJGlucHV0O1xuXG4gICAgICAvLyBGb3IgZXh0ZXJuYWwgaGFuZGxlciB0aGF0IG1heSB3YW50IGEgc2V0Q3VzdG9tVmFsaWRpdHkoLi4uKSBtZXRob2RcbiAgICAgIHJldHVybiAoX3RoaXMkJHJlZnMkaW5wdXQgPSB0aGlzLiRyZWZzLmlucHV0KS5zZXRDdXN0b21WYWxpZGl0eS5hcHBseShfdGhpcyQkcmVmcyRpbnB1dCwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIGNoZWNrVmFsaWRpdHk6IGZ1bmN0aW9uIGNoZWNrVmFsaWRpdHkoKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAge1xuICAgICAgdmFyIF90aGlzJCRyZWZzJGlucHV0MjtcblxuICAgICAgLy8gRm9yIGV4dGVybmFsIGhhbmRsZXIgdGhhdCBtYXkgd2FudCBhIGNoZWNrVmFsaWRpdHkoLi4uKSBtZXRob2RcbiAgICAgIHJldHVybiAoX3RoaXMkJHJlZnMkaW5wdXQyID0gdGhpcy4kcmVmcy5pbnB1dCkuY2hlY2tWYWxpZGl0eS5hcHBseShfdGhpcyQkcmVmcyRpbnB1dDIsIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICByZXBvcnRWYWxpZGl0eTogZnVuY3Rpb24gcmVwb3J0VmFsaWRpdHkoKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAge1xuICAgICAgdmFyIF90aGlzJCRyZWZzJGlucHV0MztcblxuICAgICAgLy8gRm9yIGV4dGVybmFsIGhhbmRsZXIgdGhhdCBtYXkgd2FudCBhIHJlcG9ydFZhbGlkaXR5KC4uLikgbWV0aG9kXG4gICAgICByZXR1cm4gKF90aGlzJCRyZWZzJGlucHV0MyA9IHRoaXMuJHJlZnMuaW5wdXQpLnJlcG9ydFZhbGlkaXR5LmFwcGx5KF90aGlzJCRyZWZzJGlucHV0MywgYXJndW1lbnRzKTtcbiAgICB9XG4gIH1cbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vbWl4aW5zL2Zvcm0tdmFsaWRpdHkuanNcbi8vIG1vZHVsZSBpZCA9IDE0OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///149\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_inspect__ = __webpack_require__(1);\n // @vue/component\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n model: {\n prop: 'value',\n event: 'update'\n },\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n ariaInvalid: {\n type: [Boolean, String],\n default: false\n },\n readonly: {\n type: Boolean,\n default: false\n },\n plaintext: {\n type: Boolean,\n default: false\n },\n autocomplete: {\n type: String,\n default: null\n },\n placeholder: {\n type: String,\n default: null\n },\n formatter: {\n type: Function,\n default: null\n },\n trim: {\n type: Boolean,\n default: false\n },\n number: {\n type: Boolean,\n default: false\n },\n lazyFormatter: {\n type: Boolean,\n value: false\n }\n },\n data: function data() {\n return {\n localValue: this.stringifyValue(this.value)\n };\n },\n computed: {\n computedClass: function computedClass() {\n return [{\n // Range input needs class custom-range\n 'custom-range': this.type === 'range',\n // plaintext not supported by type=range or type=color\n 'form-control-plaintext': this.plaintext && this.type !== 'range' && this.type !== 'color',\n // form-control not used by type=range or plaintext. Always used by type=color\n 'form-control': !this.plaintext && this.type !== 'range' || this.type === 'color'\n }, this.sizeFormClass, this.stateClass];\n },\n computedAriaInvalid: function computedAriaInvalid() {\n if (!this.ariaInvalid || this.ariaInvalid === 'false') {\n // this.ariaInvalid is null or false or 'false'\n return this.computedState === false ? 'true' : null;\n }\n\n if (this.ariaInvalid === true) {\n // User wants explicit aria-invalid=true\n return 'true';\n } // Most likely a string value (which could be the string 'true')\n\n\n return this.ariaInvalid;\n }\n },\n watch: {\n value: function value(newVal) {\n if (newVal !== this.localValue) {\n this.localValue = this.stringifyValue(newVal);\n }\n }\n },\n mounted: function mounted() {\n var value = this.stringifyValue(this.value);\n\n if (value !== this.localValue) {\n /* istanbul ignore next */\n this.localValue = value;\n }\n },\n methods: {\n stringifyValue: function stringifyValue(value) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils_inspect__[\"n\" /* isUndefined */])(value) || Object(__WEBPACK_IMPORTED_MODULE_0__utils_inspect__[\"g\" /* isNull */])(value) ? '' : String(value);\n },\n getFormatted: function getFormatted(value, evt) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n value = this.stringifyValue(value);\n\n if ((!this.lazyFormatter || force) && Object(__WEBPACK_IMPORTED_MODULE_0__utils_inspect__[\"f\" /* isFunction */])(this.formatter)) {\n value = this.formatter(value, evt);\n }\n\n return value;\n },\n updateValue: function updateValue(value) {\n value = this.stringifyValue(value);\n\n if (value !== this.localValue) {\n // Keep the input set to the value before modifiers\n this.localValue = value;\n\n if (this.number) {\n // Emulate `.number` modifier behaviour\n var num = parseFloat(value);\n value = isNaN(num) ? value : num;\n } else if (this.trim) {\n // Emulate `.trim` modifier behaviour\n value = value.trim();\n } // Update the v-model\n\n\n this.$emit('update', value);\n } else if (this.$refs.input && value !== this.$refs.input.value) {\n // When the `localValue` hasn't changed but the actual input value\n // is out of sync, make sure to change it to the given one.\n // Usually casued by browser autocomplete and how it triggers the\n // change or input event, or depending on the formatter function.\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2657\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/3498\n\n /* istanbul ignore next: hard to test */\n this.$refs.input.value = value;\n }\n },\n onInput: function onInput(evt) {\n // `evt.target.composing` is set by Vue\n // https://github.com/vuejs/vue/blob/dev/src/platforms/web/runtime/directives/model.js\n\n /* istanbul ignore if: hard to test composition events */\n if (evt.target.composing) {\n return;\n }\n\n var formatted = this.getFormatted(evt.target.value, evt); // Exit when the `formatter` function strictly returned `false`\n // or prevented the input event\n\n if (formatted === false || evt.defaultPrevented) {\n /* istanbul ignore next */\n evt.preventDefault();\n return;\n }\n\n this.updateValue(formatted);\n this.$emit('input', formatted);\n },\n onChange: function onChange(evt) {\n // `evt.target.composing` is set by Vue\n // https://github.com/vuejs/vue/blob/dev/src/platforms/web/runtime/directives/model.js\n\n /* istanbul ignore if: hard to test composition events */\n if (evt.target.composing) {\n return;\n }\n\n var formatted = this.getFormatted(evt.target.value, evt); // Exit when the `formatter` function strictly returned `false`\n // or prevented the input event\n\n if (formatted === false || evt.defaultPrevented) {\n /* istanbul ignore next */\n evt.preventDefault();\n return;\n }\n\n this.updateValue(formatted);\n this.$emit('change', formatted);\n },\n onBlur: function onBlur(evt) {\n // Lazy formatter\n if (this.lazyFormatter) {\n var formatted = this.getFormatted(evt.target.value, evt, true); // Exit when the `formatter` function strictly returned `false`\n\n if (formatted === false) {\n return;\n }\n\n this.updateValue(formatted);\n } // Emit native blur event\n\n\n this.$emit('blur', evt);\n },\n focus: function focus() {\n // For external handler that may want a focus method\n if (!this.disabled) {\n this.$el.focus();\n }\n },\n blur: function blur() {\n // For external handler that may want a blur method\n if (!this.disabled) {\n this.$el.blur();\n }\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vbWl4aW5zL2Zvcm0tdGV4dC5qcz81YzI3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQW1FOztBQUVwRDtBQUNmO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxhQUFhLDJFQUFXLFdBQVcsc0VBQU07QUFDekMsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQSw0Q0FBNEMsMEVBQVU7QUFDdEQ7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsK0RBQStEO0FBQy9EOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsK0RBQStEO0FBQy9EOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSx1RUFBdUU7O0FBRXZFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87OztBQUdQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6IjE0OS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRnVuY3Rpb24sIGlzTnVsbCwgaXNVbmRlZmluZWQgfSBmcm9tICcuLi91dGlscy9pbnNwZWN0JzsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IGRlZmF1bHQge1xuICBtb2RlbDoge1xuICAgIHByb3A6ICd2YWx1ZScsXG4gICAgZXZlbnQ6ICd1cGRhdGUnXG4gIH0sXG4gIHByb3BzOiB7XG4gICAgdmFsdWU6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIE51bWJlcl0sXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgYXJpYUludmFsaWQ6IHtcbiAgICAgIHR5cGU6IFtCb29sZWFuLCBTdHJpbmddLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHJlYWRvbmx5OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHBsYWludGV4dDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBhdXRvY29tcGxldGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIHBsYWNlaG9sZGVyOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBmb3JtYXR0ZXI6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgdHJpbToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBudW1iZXI6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgbGF6eUZvcm1hdHRlcjoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIHZhbHVlOiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYWxWYWx1ZTogdGhpcy5zdHJpbmdpZnlWYWx1ZSh0aGlzLnZhbHVlKVxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgY29tcHV0ZWRDbGFzczogZnVuY3Rpb24gY29tcHV0ZWRDbGFzcygpIHtcbiAgICAgIHJldHVybiBbe1xuICAgICAgICAvLyBSYW5nZSBpbnB1dCBuZWVkcyBjbGFzcyBjdXN0b20tcmFuZ2VcbiAgICAgICAgJ2N1c3RvbS1yYW5nZSc6IHRoaXMudHlwZSA9PT0gJ3JhbmdlJyxcbiAgICAgICAgLy8gcGxhaW50ZXh0IG5vdCBzdXBwb3J0ZWQgYnkgdHlwZT1yYW5nZSBvciB0eXBlPWNvbG9yXG4gICAgICAgICdmb3JtLWNvbnRyb2wtcGxhaW50ZXh0JzogdGhpcy5wbGFpbnRleHQgJiYgdGhpcy50eXBlICE9PSAncmFuZ2UnICYmIHRoaXMudHlwZSAhPT0gJ2NvbG9yJyxcbiAgICAgICAgLy8gZm9ybS1jb250cm9sIG5vdCB1c2VkIGJ5IHR5cGU9cmFuZ2Ugb3IgcGxhaW50ZXh0LiBBbHdheXMgdXNlZCBieSB0eXBlPWNvbG9yXG4gICAgICAgICdmb3JtLWNvbnRyb2wnOiAhdGhpcy5wbGFpbnRleHQgJiYgdGhpcy50eXBlICE9PSAncmFuZ2UnIHx8IHRoaXMudHlwZSA9PT0gJ2NvbG9yJ1xuICAgICAgfSwgdGhpcy5zaXplRm9ybUNsYXNzLCB0aGlzLnN0YXRlQ2xhc3NdO1xuICAgIH0sXG4gICAgY29tcHV0ZWRBcmlhSW52YWxpZDogZnVuY3Rpb24gY29tcHV0ZWRBcmlhSW52YWxpZCgpIHtcbiAgICAgIGlmICghdGhpcy5hcmlhSW52YWxpZCB8fCB0aGlzLmFyaWFJbnZhbGlkID09PSAnZmFsc2UnKSB7XG4gICAgICAgIC8vIHRoaXMuYXJpYUludmFsaWQgaXMgbnVsbCBvciBmYWxzZSBvciAnZmFsc2UnXG4gICAgICAgIHJldHVybiB0aGlzLmNvbXB1dGVkU3RhdGUgPT09IGZhbHNlID8gJ3RydWUnIDogbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYXJpYUludmFsaWQgPT09IHRydWUpIHtcbiAgICAgICAgLy8gVXNlciB3YW50cyBleHBsaWNpdCBhcmlhLWludmFsaWQ9dHJ1ZVxuICAgICAgICByZXR1cm4gJ3RydWUnO1xuICAgICAgfSAvLyBNb3N0IGxpa2VseSBhIHN0cmluZyB2YWx1ZSAod2hpY2ggY291bGQgYmUgdGhlIHN0cmluZyAndHJ1ZScpXG5cblxuICAgICAgcmV0dXJuIHRoaXMuYXJpYUludmFsaWQ7XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShuZXdWYWwpIHtcbiAgICAgIGlmIChuZXdWYWwgIT09IHRoaXMubG9jYWxWYWx1ZSkge1xuICAgICAgICB0aGlzLmxvY2FsVmFsdWUgPSB0aGlzLnN0cmluZ2lmeVZhbHVlKG5ld1ZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciB2YWx1ZSA9IHRoaXMuc3RyaW5naWZ5VmFsdWUodGhpcy52YWx1ZSk7XG5cbiAgICBpZiAodmFsdWUgIT09IHRoaXMubG9jYWxWYWx1ZSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHRoaXMubG9jYWxWYWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHN0cmluZ2lmeVZhbHVlOiBmdW5jdGlvbiBzdHJpbmdpZnlWYWx1ZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzVW5kZWZpbmVkKHZhbHVlKSB8fCBpc051bGwodmFsdWUpID8gJycgOiBTdHJpbmcodmFsdWUpO1xuICAgIH0sXG4gICAgZ2V0Rm9ybWF0dGVkOiBmdW5jdGlvbiBnZXRGb3JtYXR0ZWQodmFsdWUsIGV2dCkge1xuICAgICAgdmFyIGZvcmNlID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBmYWxzZTtcbiAgICAgIHZhbHVlID0gdGhpcy5zdHJpbmdpZnlWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgIGlmICgoIXRoaXMubGF6eUZvcm1hdHRlciB8fCBmb3JjZSkgJiYgaXNGdW5jdGlvbih0aGlzLmZvcm1hdHRlcikpIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzLmZvcm1hdHRlcih2YWx1ZSwgZXZ0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0sXG4gICAgdXBkYXRlVmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZVZhbHVlKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuc3RyaW5naWZ5VmFsdWUodmFsdWUpO1xuXG4gICAgICBpZiAodmFsdWUgIT09IHRoaXMubG9jYWxWYWx1ZSkge1xuICAgICAgICAvLyBLZWVwIHRoZSBpbnB1dCBzZXQgdG8gdGhlIHZhbHVlIGJlZm9yZSBtb2RpZmllcnNcbiAgICAgICAgdGhpcy5sb2NhbFZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHRoaXMubnVtYmVyKSB7XG4gICAgICAgICAgLy8gRW11bGF0ZSBgLm51bWJlcmAgbW9kaWZpZXIgYmVoYXZpb3VyXG4gICAgICAgICAgdmFyIG51bSA9IHBhcnNlRmxvYXQodmFsdWUpO1xuICAgICAgICAgIHZhbHVlID0gaXNOYU4obnVtKSA/IHZhbHVlIDogbnVtO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHJpbSkge1xuICAgICAgICAgIC8vIEVtdWxhdGUgYC50cmltYCBtb2RpZmllciBiZWhhdmlvdXJcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnRyaW0oKTtcbiAgICAgICAgfSAvLyBVcGRhdGUgdGhlIHYtbW9kZWxcblxuXG4gICAgICAgIHRoaXMuJGVtaXQoJ3VwZGF0ZScsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy4kcmVmcy5pbnB1dCAmJiB2YWx1ZSAhPT0gdGhpcy4kcmVmcy5pbnB1dC52YWx1ZSkge1xuICAgICAgICAvLyBXaGVuIHRoZSBgbG9jYWxWYWx1ZWAgaGFzbid0IGNoYW5nZWQgYnV0IHRoZSBhY3R1YWwgaW5wdXQgdmFsdWVcbiAgICAgICAgLy8gaXMgb3V0IG9mIHN5bmMsIG1ha2Ugc3VyZSB0byBjaGFuZ2UgaXQgdG8gdGhlIGdpdmVuIG9uZS5cbiAgICAgICAgLy8gVXN1YWxseSBjYXN1ZWQgYnkgYnJvd3NlciBhdXRvY29tcGxldGUgYW5kIGhvdyBpdCB0cmlnZ2VycyB0aGVcbiAgICAgICAgLy8gY2hhbmdlIG9yIGlucHV0IGV2ZW50LCBvciBkZXBlbmRpbmcgb24gdGhlIGZvcm1hdHRlciBmdW5jdGlvbi5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jvb3RzdHJhcC12dWUvYm9vdHN0cmFwLXZ1ZS9pc3N1ZXMvMjY1N1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYm9vdHN0cmFwLXZ1ZS9ib290c3RyYXAtdnVlL2lzc3Vlcy8zNDk4XG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGhhcmQgdG8gdGVzdCAqL1xuICAgICAgICB0aGlzLiRyZWZzLmlucHV0LnZhbHVlID0gdmFsdWU7XG4gICAgICB9XG4gICAgfSxcbiAgICBvbklucHV0OiBmdW5jdGlvbiBvbklucHV0KGV2dCkge1xuICAgICAgLy8gYGV2dC50YXJnZXQuY29tcG9zaW5nYCBpcyBzZXQgYnkgVnVlXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlL2Jsb2IvZGV2L3NyYy9wbGF0Zm9ybXMvd2ViL3J1bnRpbWUvZGlyZWN0aXZlcy9tb2RlbC5qc1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWY6IGhhcmQgdG8gdGVzdCBjb21wb3NpdGlvbiBldmVudHMgKi9cbiAgICAgIGlmIChldnQudGFyZ2V0LmNvbXBvc2luZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBmb3JtYXR0ZWQgPSB0aGlzLmdldEZvcm1hdHRlZChldnQudGFyZ2V0LnZhbHVlLCBldnQpOyAvLyBFeGl0IHdoZW4gdGhlIGBmb3JtYXR0ZXJgIGZ1bmN0aW9uIHN0cmljdGx5IHJldHVybmVkIGBmYWxzZWBcbiAgICAgIC8vIG9yIHByZXZlbnRlZCB0aGUgaW5wdXQgZXZlbnRcblxuICAgICAgaWYgKGZvcm1hdHRlZCA9PT0gZmFsc2UgfHwgZXZ0LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVWYWx1ZShmb3JtYXR0ZWQpO1xuICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBmb3JtYXR0ZWQpO1xuICAgIH0sXG4gICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGV2dCkge1xuICAgICAgLy8gYGV2dC50YXJnZXQuY29tcG9zaW5nYCBpcyBzZXQgYnkgVnVlXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlL2Jsb2IvZGV2L3NyYy9wbGF0Zm9ybXMvd2ViL3J1bnRpbWUvZGlyZWN0aXZlcy9tb2RlbC5qc1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWY6IGhhcmQgdG8gdGVzdCBjb21wb3NpdGlvbiBldmVudHMgKi9cbiAgICAgIGlmIChldnQudGFyZ2V0LmNvbXBvc2luZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBmb3JtYXR0ZWQgPSB0aGlzLmdldEZvcm1hdHRlZChldnQudGFyZ2V0LnZhbHVlLCBldnQpOyAvLyBFeGl0IHdoZW4gdGhlIGBmb3JtYXR0ZXJgIGZ1bmN0aW9uIHN0cmljdGx5IHJldHVybmVkIGBmYWxzZWBcbiAgICAgIC8vIG9yIHByZXZlbnRlZCB0aGUgaW5wdXQgZXZlbnRcblxuICAgICAgaWYgKGZvcm1hdHRlZCA9PT0gZmFsc2UgfHwgZXZ0LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVWYWx1ZShmb3JtYXR0ZWQpO1xuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgZm9ybWF0dGVkKTtcbiAgICB9LFxuICAgIG9uQmx1cjogZnVuY3Rpb24gb25CbHVyKGV2dCkge1xuICAgICAgLy8gTGF6eSBmb3JtYXR0ZXJcbiAgICAgIGlmICh0aGlzLmxhenlGb3JtYXR0ZXIpIHtcbiAgICAgICAgdmFyIGZvcm1hdHRlZCA9IHRoaXMuZ2V0Rm9ybWF0dGVkKGV2dC50YXJnZXQudmFsdWUsIGV2dCwgdHJ1ZSk7IC8vIEV4aXQgd2hlbiB0aGUgYGZvcm1hdHRlcmAgZnVuY3Rpb24gc3RyaWN0bHkgcmV0dXJuZWQgYGZhbHNlYFxuXG4gICAgICAgIGlmIChmb3JtYXR0ZWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShmb3JtYXR0ZWQpO1xuICAgICAgfSAvLyBFbWl0IG5hdGl2ZSBibHVyIGV2ZW50XG5cblxuICAgICAgdGhpcy4kZW1pdCgnYmx1cicsIGV2dCk7XG4gICAgfSxcbiAgICBmb2N1czogZnVuY3Rpb24gZm9jdXMoKSB7XG4gICAgICAvLyBGb3IgZXh0ZXJuYWwgaGFuZGxlciB0aGF0IG1heSB3YW50IGEgZm9jdXMgbWV0aG9kXG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy4kZWwuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGJsdXI6IGZ1bmN0aW9uIGJsdXIoKSB7XG4gICAgICAvLyBGb3IgZXh0ZXJuYWwgaGFuZGxlciB0aGF0IG1heSB3YW50IGEgYmx1ciBtZXRob2RcbiAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLiRlbC5ibHVyKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL21peGlucy9mb3JtLXRleHQuanNcbi8vIG1vZHVsZSBpZCA9IDE0OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///149\n"); /***/ }), /* 150 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return FormTextareaPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__form_textarea__ = __webpack_require__(151);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BFormTextarea */\n\n\nvar FormTextareaPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BFormTextarea: __WEBPACK_IMPORTED_MODULE_0__form_textarea__[\"a\" /* BFormTextarea */],\n BTextarea: __WEBPACK_IMPORTED_MODULE_0__form_textarea__[\"a\" /* BFormTextarea */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLXRleHRhcmVhL2luZGV4LmpzP2NhYzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBZ0Q7QUFDSTtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLG1CQUFtQixxRUFBYTtBQUNoQyxlQUFlLHFFQUFhO0FBQzVCO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNTAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCRm9ybVRleHRhcmVhIH0gZnJvbSAnLi9mb3JtLXRleHRhcmVhJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBGb3JtVGV4dGFyZWFQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCRm9ybVRleHRhcmVhOiBCRm9ybVRleHRhcmVhLFxuICAgIEJUZXh0YXJlYTogQkZvcm1UZXh0YXJlYVxuICB9XG59KTtcbmV4cG9ydCB7IEZvcm1UZXh0YXJlYVBsdWdpbiwgQkZvcm1UZXh0YXJlYSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvZm9ybS10ZXh0YXJlYS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTUwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///150\n"); +eval("// @vue/component\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n computed: {\n selectionStart: {\n // Expose selectionStart for formatters, etc\n cache: false,\n get: function get()\n /* istanbul ignore next */\n {\n return this.$refs.input.selectionStart;\n },\n set: function set(val)\n /* istanbul ignore next */\n {\n this.$refs.input.selectionStart = val;\n }\n },\n selectionEnd: {\n // Expose selectionEnd for formatters, etc\n cache: false,\n get: function get()\n /* istanbul ignore next */\n {\n return this.$refs.input.selectionEnd;\n },\n set: function set(val)\n /* istanbul ignore next */\n {\n this.$refs.input.selectionEnd = val;\n }\n },\n selectionDirection: {\n // Expose selectionDirection for formatters, etc\n cache: false,\n get: function get()\n /* istanbul ignore next */\n {\n return this.$refs.input.selectionDirection;\n },\n set: function set(val)\n /* istanbul ignore next */\n {\n this.$refs.input.selectionDirection = val;\n }\n }\n },\n methods: {\n select: function select()\n /* istanbul ignore next */\n {\n var _this$$refs$input;\n\n // For external handler that may want a select() method\n (_this$$refs$input = this.$refs.input).select.apply(_this$$refs$input, arguments);\n },\n setSelectionRange: function setSelectionRange()\n /* istanbul ignore next */\n {\n var _this$$refs$input2;\n\n // For external handler that may want a setSelectionRange(a,b,c) method\n (_this$$refs$input2 = this.$refs.input).setSelectionRange.apply(_this$$refs$input2, arguments);\n },\n setRangeText: function setRangeText()\n /* istanbul ignore next */\n {\n var _this$$refs$input3;\n\n // For external handler that may want a setRangeText(a,b,c) method\n (_this$$refs$input3 = this.$refs.input).setRangeText.apply(_this$$refs$input3, arguments);\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vbWl4aW5zL2Zvcm0tc2VsZWN0aW9uLmpzPzBjMTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMTUwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHZ1ZS9jb21wb25lbnRcbmV4cG9ydCBkZWZhdWx0IHtcbiAgY29tcHV0ZWQ6IHtcbiAgICBzZWxlY3Rpb25TdGFydDoge1xuICAgICAgLy8gRXhwb3NlIHNlbGVjdGlvblN0YXJ0IGZvciBmb3JtYXR0ZXJzLCBldGNcbiAgICAgIGNhY2hlOiBmYWxzZSxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KClcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLiRyZWZzLmlucHV0LnNlbGVjdGlvblN0YXJ0O1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gc2V0KHZhbClcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICB7XG4gICAgICAgIHRoaXMuJHJlZnMuaW5wdXQuc2VsZWN0aW9uU3RhcnQgPSB2YWw7XG4gICAgICB9XG4gICAgfSxcbiAgICBzZWxlY3Rpb25FbmQ6IHtcbiAgICAgIC8vIEV4cG9zZSBzZWxlY3Rpb25FbmQgZm9yIGZvcm1hdHRlcnMsIGV0Y1xuICAgICAgY2FjaGU6IGZhbHNlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHJlZnMuaW5wdXQuc2VsZWN0aW9uRW5kO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gc2V0KHZhbClcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICB7XG4gICAgICAgIHRoaXMuJHJlZnMuaW5wdXQuc2VsZWN0aW9uRW5kID0gdmFsO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2VsZWN0aW9uRGlyZWN0aW9uOiB7XG4gICAgICAvLyBFeHBvc2Ugc2VsZWN0aW9uRGlyZWN0aW9uIGZvciBmb3JtYXR0ZXJzLCBldGNcbiAgICAgIGNhY2hlOiBmYWxzZSxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KClcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLiRyZWZzLmlucHV0LnNlbGVjdGlvbkRpcmVjdGlvbjtcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWwpXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAge1xuICAgICAgICB0aGlzLiRyZWZzLmlucHV0LnNlbGVjdGlvbkRpcmVjdGlvbiA9IHZhbDtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBzZWxlY3Q6IGZ1bmN0aW9uIHNlbGVjdCgpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB7XG4gICAgICB2YXIgX3RoaXMkJHJlZnMkaW5wdXQ7XG5cbiAgICAgIC8vIEZvciBleHRlcm5hbCBoYW5kbGVyIHRoYXQgbWF5IHdhbnQgYSBzZWxlY3QoKSBtZXRob2RcbiAgICAgIChfdGhpcyQkcmVmcyRpbnB1dCA9IHRoaXMuJHJlZnMuaW5wdXQpLnNlbGVjdC5hcHBseShfdGhpcyQkcmVmcyRpbnB1dCwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIHNldFNlbGVjdGlvblJhbmdlOiBmdW5jdGlvbiBzZXRTZWxlY3Rpb25SYW5nZSgpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB7XG4gICAgICB2YXIgX3RoaXMkJHJlZnMkaW5wdXQyO1xuXG4gICAgICAvLyBGb3IgZXh0ZXJuYWwgaGFuZGxlciB0aGF0IG1heSB3YW50IGEgc2V0U2VsZWN0aW9uUmFuZ2UoYSxiLGMpIG1ldGhvZFxuICAgICAgKF90aGlzJCRyZWZzJGlucHV0MiA9IHRoaXMuJHJlZnMuaW5wdXQpLnNldFNlbGVjdGlvblJhbmdlLmFwcGx5KF90aGlzJCRyZWZzJGlucHV0MiwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIHNldFJhbmdlVGV4dDogZnVuY3Rpb24gc2V0UmFuZ2VUZXh0KClcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHtcbiAgICAgIHZhciBfdGhpcyQkcmVmcyRpbnB1dDM7XG5cbiAgICAgIC8vIEZvciBleHRlcm5hbCBoYW5kbGVyIHRoYXQgbWF5IHdhbnQgYSBzZXRSYW5nZVRleHQoYSxiLGMpIG1ldGhvZFxuICAgICAgKF90aGlzJCRyZWZzJGlucHV0MyA9IHRoaXMuJHJlZnMuaW5wdXQpLnNldFJhbmdlVGV4dC5hcHBseShfdGhpcyQkcmVmcyRpbnB1dDMsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL21peGlucy9mb3JtLXNlbGVjdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMTUwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///150\n"); /***/ }), /* 151 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BFormTextarea; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__directives_visible__ = __webpack_require__(117);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mixins_form__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mixins_form_size__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__mixins_form_state__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_form_text__ = __webpack_require__(147);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__mixins_form_selection__ = __webpack_require__(148);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__mixins_form_validity__ = __webpack_require__(149);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__mixins_listen_on_root__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__utils_inspect__ = __webpack_require__(1);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n\n\n\n\n // @vue/component\n\nvar BFormTextarea =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BFormTextarea',\n directives: {\n 'b-visible': __WEBPACK_IMPORTED_MODULE_1__directives_visible__[\"a\" /* VBVisible */]\n },\n mixins: [__WEBPACK_IMPORTED_MODULE_2__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_9__mixins_listen_on_root__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__mixins_form__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__mixins_form_size__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__mixins_form_state__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__mixins_form_text__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__mixins_form_selection__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_8__mixins_form_validity__[\"a\" /* default */]],\n props: {\n rows: {\n type: [Number, String],\n default: 2\n },\n maxRows: {\n type: [Number, String],\n default: null\n },\n wrap: {\n // 'soft', 'hard' or 'off'. Browser default is 'soft'\n type: String,\n default: 'soft'\n },\n noResize: {\n // Disable the resize handle of textarea\n type: Boolean,\n default: false\n },\n noAutoShrink: {\n // When in auto resize mode, disable shrinking to content height\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n heightInPx: null\n };\n },\n computed: {\n computedStyle: function computedStyle() {\n var styles = {\n // Setting `noResize` to true will disable the ability for the user to\n // manually resize the textarea. We also disable when in auto height mode\n resize: !this.computedRows || this.noResize ? 'none' : null\n };\n\n if (!this.computedRows) {\n // Conditionally set the computed CSS height when auto rows/height is enabled\n // We avoid setting the style to `null`, which can override user manual resize handle\n styles.height = this.heightInPx; // We always add a vertical scrollbar to the textarea when auto-height is\n // enabled so that the computed height calculation returns a stable value\n\n styles.overflowY = 'scroll';\n }\n\n return styles;\n },\n computedMinRows: function computedMinRows() {\n // Ensure rows is at least 2 and positive (2 is the native textarea value)\n // A value of 1 can cause issues in some browsers, and most browsers\n // only support 2 as the smallest value\n return Math.max(parseInt(this.rows, 10) || 2, 2);\n },\n computedMaxRows: function computedMaxRows() {\n return Math.max(this.computedMinRows, parseInt(this.maxRows, 10) || 0);\n },\n computedRows: function computedRows() {\n // This is used to set the attribute 'rows' on the textarea\n // If auto-height is enabled, then we return `null` as we use CSS to control height\n return this.computedMinRows === this.computedMaxRows ? this.computedMinRows : null;\n }\n },\n watch: {\n localValue: function localValue(newVal, oldVal) {\n this.setHeight();\n }\n },\n mounted: function mounted() {\n this.setHeight();\n },\n methods: {\n // Called by intersection observer directive\n visibleCallback: function visibleCallback(visible)\n /* istanbul ignore next */\n {\n if (visible) {\n // We use a `$nextTick()` here just to make sure any\n // transitions or portalling have completed\n this.$nextTick(this.setHeight);\n }\n },\n setHeight: function setHeight() {\n var _this = this;\n\n this.$nextTick(function () {\n Object(__WEBPACK_IMPORTED_MODULE_10__utils_dom__[\"w\" /* requestAF */])(function () {\n _this.heightInPx = _this.computeHeight();\n });\n });\n },\n computeHeight: function computeHeight()\n /* istanbul ignore next: can't test getComputedStyle in JSDOM */\n {\n if (this.$isServer || !Object(__WEBPACK_IMPORTED_MODULE_11__utils_inspect__[\"g\" /* isNull */])(this.computedRows)) {\n return null;\n }\n\n var el = this.$el; // Element must be visible (not hidden) and in document\n // Must be checked after above checks\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_10__utils_dom__[\"p\" /* isVisible */])(el)) {\n return null;\n } // Get current computed styles\n\n\n var computedStyle = Object(__WEBPACK_IMPORTED_MODULE_10__utils_dom__[\"j\" /* getCS */])(el); // Height of one line of text in px\n\n var lineHeight = parseFloat(computedStyle.lineHeight); // Calculate height of border and padding\n\n var border = (parseFloat(computedStyle.borderTopWidth) || 0) + (parseFloat(computedStyle.borderBottomWidth) || 0);\n var padding = (parseFloat(computedStyle.paddingTop) || 0) + (parseFloat(computedStyle.paddingBottom) || 0); // Calculate offset\n\n var offset = border + padding; // Minimum height for min rows (which must be 2 rows or greater for cross-browser support)\n\n var minHeight = lineHeight * this.computedMinRows + offset; // Get the current style height (with `px` units)\n\n var oldHeight = el.style.height || computedStyle.height; // Probe scrollHeight by temporarily changing the height to `auto`\n\n el.style.height = 'auto';\n var scrollHeight = el.scrollHeight; // Place the original old height back on the element, just in case `computedProp`\n // returns the same value as before\n\n el.style.height = oldHeight; // Calculate content height in 'rows' (scrollHeight includes padding but not border)\n\n var contentRows = Math.max((scrollHeight - padding) / lineHeight, 2); // Calculate number of rows to display (limited within min/max rows)\n\n var rows = Math.min(Math.max(contentRows, this.computedMinRows), this.computedMaxRows); // Calculate the required height of the textarea including border and padding (in pixels)\n\n var height = Math.max(Math.ceil(rows * lineHeight + offset), minHeight); // Computed height remains the larger of `oldHeight` and new `height`,\n // when height is in `sticky` mode (prop `no-auto-shrink` is true)\n\n if (this.noAutoShrink && (parseFloat(oldHeight) || 0) > height) {\n return oldHeight;\n } // Return the new computed CSS height in px units\n\n\n return \"\".concat(height, \"px\");\n }\n },\n render: function render(h) {\n // Using self instead of this helps reduce code size during minification\n var self = this;\n return h('textarea', {\n ref: 'input',\n class: self.computedClass,\n style: self.computedStyle,\n directives: [{\n name: 'model',\n value: self.localValue\n }, {\n name: 'b-visible',\n value: this.visibleCallback,\n // If textarea is within 640px of viewport, consider it visible\n modifiers: {\n '640': true\n }\n }],\n attrs: {\n id: self.safeId(),\n name: self.name,\n form: self.form || null,\n disabled: self.disabled,\n placeholder: self.placeholder,\n required: self.required,\n autocomplete: self.autocomplete || null,\n readonly: self.readonly || self.plaintext,\n rows: self.computedRows,\n wrap: self.wrap || null,\n 'aria-required': self.required ? 'true' : null,\n 'aria-invalid': self.computedAriaInvalid\n },\n domProps: {\n value: self.localValue\n },\n on: _objectSpread({}, self.$listeners, {\n input: self.onInput,\n change: self.onChange,\n blur: self.onBlur\n })\n });\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLXRleHRhcmVhL2Zvcm0tdGV4dGFyZWEuanM/MGM1ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLCtDQUErQywyQ0FBMkMsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8seUNBQXlDLGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBnQiwyQ0FBMkMsa0JBQWtCLGtDQUFrQyxxRUFBcUUsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEVBQUUsWUFBWTs7QUFFN0s7QUFDbUI7QUFDZjtBQUNJO0FBQ1M7QUFDRTtBQUNGO0FBQ1U7QUFDRjtBQUNDO0FBQ0U7QUFDakI7O0FBRXRDO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQSxpQkFBaUIsc0VBQVM7QUFDMUIsR0FBRztBQUNILFdBQVcsMkRBQU8sRUFBRSx1RUFBaUIsRUFBRSw2REFBUyxFQUFFLGtFQUFhLEVBQUUsbUVBQWMsRUFBRSxrRUFBYSxFQUFFLHVFQUFrQixFQUFFLHNFQUFpQjtBQUNySTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxRQUFRLHNFQUFTO0FBQ2pCO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLHVFQUFNO0FBQ25DO0FBQ0E7O0FBRUEsd0JBQXdCO0FBQ3hCOztBQUVBLFdBQVcsc0VBQVM7QUFDcEI7QUFDQSxPQUFPOzs7QUFHUCwwQkFBMEIsa0VBQUssS0FBSzs7QUFFcEMsNERBQTREOztBQUU1RDtBQUNBLGlIQUFpSDs7QUFFakgsb0NBQW9DOztBQUVwQyxpRUFBaUU7O0FBRWpFLDhEQUE4RDs7QUFFOUQ7QUFDQSx5Q0FBeUM7QUFDekM7O0FBRUEsa0NBQWtDOztBQUVsQywyRUFBMkU7O0FBRTNFLDZGQUE2Rjs7QUFFN0YsOEVBQThFO0FBQzlFOztBQUVBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNTEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBWQlZpc2libGUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3Zpc2libGUnO1xuaW1wb3J0IGlkTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2lkJztcbmltcG9ydCBmb3JtTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0nO1xuaW1wb3J0IGZvcm1TaXplTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tc2l6ZSc7XG5pbXBvcnQgZm9ybVN0YXRlTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tc3RhdGUnO1xuaW1wb3J0IGZvcm1UZXh0TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tdGV4dCc7XG5pbXBvcnQgZm9ybVNlbGVjdGlvbk1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXNlbGVjdGlvbic7XG5pbXBvcnQgZm9ybVZhbGlkaXR5TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tdmFsaWRpdHknO1xuaW1wb3J0IGxpc3Rlbk9uUm9vdE1peGluIGZyb20gJy4uLy4uL21peGlucy9saXN0ZW4tb24tcm9vdCc7XG5pbXBvcnQgeyBnZXRDUywgaXNWaXNpYmxlLCByZXF1ZXN0QUYgfSBmcm9tICcuLi8uLi91dGlscy9kb20nO1xuaW1wb3J0IHsgaXNOdWxsIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW5zcGVjdCc7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkZvcm1UZXh0YXJlYSA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JGb3JtVGV4dGFyZWEnLFxuICBkaXJlY3RpdmVzOiB7XG4gICAgJ2ItdmlzaWJsZSc6IFZCVmlzaWJsZVxuICB9LFxuICBtaXhpbnM6IFtpZE1peGluLCBsaXN0ZW5PblJvb3RNaXhpbiwgZm9ybU1peGluLCBmb3JtU2l6ZU1peGluLCBmb3JtU3RhdGVNaXhpbiwgZm9ybVRleHRNaXhpbiwgZm9ybVNlbGVjdGlvbk1peGluLCBmb3JtVmFsaWRpdHlNaXhpbl0sXG4gIHByb3BzOiB7XG4gICAgcm93czoge1xuICAgICAgdHlwZTogW051bWJlciwgU3RyaW5nXSxcbiAgICAgIGRlZmF1bHQ6IDJcbiAgICB9LFxuICAgIG1heFJvd3M6IHtcbiAgICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICB3cmFwOiB7XG4gICAgICAvLyAnc29mdCcsICdoYXJkJyBvciAnb2ZmJy4gQnJvd3NlciBkZWZhdWx0IGlzICdzb2Z0J1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ3NvZnQnXG4gICAgfSxcbiAgICBub1Jlc2l6ZToge1xuICAgICAgLy8gRGlzYWJsZSB0aGUgcmVzaXplIGhhbmRsZSBvZiB0ZXh0YXJlYVxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBub0F1dG9TaHJpbms6IHtcbiAgICAgIC8vIFdoZW4gaW4gYXV0byByZXNpemUgbW9kZSwgZGlzYWJsZSBzaHJpbmtpbmcgdG8gY29udGVudCBoZWlnaHRcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaGVpZ2h0SW5QeDogbnVsbFxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgY29tcHV0ZWRTdHlsZTogZnVuY3Rpb24gY29tcHV0ZWRTdHlsZSgpIHtcbiAgICAgIHZhciBzdHlsZXMgPSB7XG4gICAgICAgIC8vIFNldHRpbmcgYG5vUmVzaXplYCB0byB0cnVlIHdpbGwgZGlzYWJsZSB0aGUgYWJpbGl0eSBmb3IgdGhlIHVzZXIgdG9cbiAgICAgICAgLy8gbWFudWFsbHkgcmVzaXplIHRoZSB0ZXh0YXJlYS4gV2UgYWxzbyBkaXNhYmxlIHdoZW4gaW4gYXV0byBoZWlnaHQgbW9kZVxuICAgICAgICByZXNpemU6ICF0aGlzLmNvbXB1dGVkUm93cyB8fCB0aGlzLm5vUmVzaXplID8gJ25vbmUnIDogbnVsbFxuICAgICAgfTtcblxuICAgICAgaWYgKCF0aGlzLmNvbXB1dGVkUm93cykge1xuICAgICAgICAvLyBDb25kaXRpb25hbGx5IHNldCB0aGUgY29tcHV0ZWQgQ1NTIGhlaWdodCB3aGVuIGF1dG8gcm93cy9oZWlnaHQgaXMgZW5hYmxlZFxuICAgICAgICAvLyBXZSBhdm9pZCBzZXR0aW5nIHRoZSBzdHlsZSB0byBgbnVsbGAsIHdoaWNoIGNhbiBvdmVycmlkZSB1c2VyIG1hbnVhbCByZXNpemUgaGFuZGxlXG4gICAgICAgIHN0eWxlcy5oZWlnaHQgPSB0aGlzLmhlaWdodEluUHg7IC8vIFdlIGFsd2F5cyBhZGQgYSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdG8gdGhlIHRleHRhcmVhIHdoZW4gYXV0by1oZWlnaHQgaXNcbiAgICAgICAgLy8gZW5hYmxlZCBzbyB0aGF0IHRoZSBjb21wdXRlZCBoZWlnaHQgY2FsY3VsYXRpb24gcmV0dXJucyBhIHN0YWJsZSB2YWx1ZVxuXG4gICAgICAgIHN0eWxlcy5vdmVyZmxvd1kgPSAnc2Nyb2xsJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHN0eWxlcztcbiAgICB9LFxuICAgIGNvbXB1dGVkTWluUm93czogZnVuY3Rpb24gY29tcHV0ZWRNaW5Sb3dzKCkge1xuICAgICAgLy8gRW5zdXJlIHJvd3MgaXMgYXQgbGVhc3QgMiBhbmQgcG9zaXRpdmUgKDIgaXMgdGhlIG5hdGl2ZSB0ZXh0YXJlYSB2YWx1ZSlcbiAgICAgIC8vIEEgdmFsdWUgb2YgMSBjYW4gY2F1c2UgaXNzdWVzIGluIHNvbWUgYnJvd3NlcnMsIGFuZCBtb3N0IGJyb3dzZXJzXG4gICAgICAvLyBvbmx5IHN1cHBvcnQgMiBhcyB0aGUgc21hbGxlc3QgdmFsdWVcbiAgICAgIHJldHVybiBNYXRoLm1heChwYXJzZUludCh0aGlzLnJvd3MsIDEwKSB8fCAyLCAyKTtcbiAgICB9LFxuICAgIGNvbXB1dGVkTWF4Um93czogZnVuY3Rpb24gY29tcHV0ZWRNYXhSb3dzKCkge1xuICAgICAgcmV0dXJuIE1hdGgubWF4KHRoaXMuY29tcHV0ZWRNaW5Sb3dzLCBwYXJzZUludCh0aGlzLm1heFJvd3MsIDEwKSB8fCAwKTtcbiAgICB9LFxuICAgIGNvbXB1dGVkUm93czogZnVuY3Rpb24gY29tcHV0ZWRSb3dzKCkge1xuICAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIHNldCB0aGUgYXR0cmlidXRlICdyb3dzJyBvbiB0aGUgdGV4dGFyZWFcbiAgICAgIC8vIElmIGF1dG8taGVpZ2h0IGlzIGVuYWJsZWQsIHRoZW4gd2UgcmV0dXJuIGBudWxsYCBhcyB3ZSB1c2UgQ1NTIHRvIGNvbnRyb2wgaGVpZ2h0XG4gICAgICByZXR1cm4gdGhpcy5jb21wdXRlZE1pblJvd3MgPT09IHRoaXMuY29tcHV0ZWRNYXhSb3dzID8gdGhpcy5jb21wdXRlZE1pblJvd3MgOiBudWxsO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBsb2NhbFZhbHVlOiBmdW5jdGlvbiBsb2NhbFZhbHVlKG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICB0aGlzLnNldEhlaWdodCgpO1xuICAgIH1cbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB0aGlzLnNldEhlaWdodCgpO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgLy8gQ2FsbGVkIGJ5IGludGVyc2VjdGlvbiBvYnNlcnZlciBkaXJlY3RpdmVcbiAgICB2aXNpYmxlQ2FsbGJhY2s6IGZ1bmN0aW9uIHZpc2libGVDYWxsYmFjayh2aXNpYmxlKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAge1xuICAgICAgaWYgKHZpc2libGUpIHtcbiAgICAgICAgLy8gV2UgdXNlIGEgYCRuZXh0VGljaygpYCBoZXJlIGp1c3QgdG8gbWFrZSBzdXJlIGFueVxuICAgICAgICAvLyB0cmFuc2l0aW9ucyBvciBwb3J0YWxsaW5nIGhhdmUgY29tcGxldGVkXG4gICAgICAgIHRoaXMuJG5leHRUaWNrKHRoaXMuc2V0SGVpZ2h0KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNldEhlaWdodDogZnVuY3Rpb24gc2V0SGVpZ2h0KCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICByZXF1ZXN0QUYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzLmhlaWdodEluUHggPSBfdGhpcy5jb21wdXRlSGVpZ2h0KCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBjb21wdXRlSGVpZ2h0OiBmdW5jdGlvbiBjb21wdXRlSGVpZ2h0KClcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogY2FuJ3QgdGVzdCBnZXRDb21wdXRlZFN0eWxlIGluIEpTRE9NICovXG4gICAge1xuICAgICAgaWYgKHRoaXMuJGlzU2VydmVyIHx8ICFpc051bGwodGhpcy5jb21wdXRlZFJvd3MpKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgZWwgPSB0aGlzLiRlbDsgLy8gRWxlbWVudCBtdXN0IGJlIHZpc2libGUgKG5vdCBoaWRkZW4pIGFuZCBpbiBkb2N1bWVudFxuICAgICAgLy8gTXVzdCBiZSBjaGVja2VkIGFmdGVyIGFib3ZlIGNoZWNrc1xuXG4gICAgICBpZiAoIWlzVmlzaWJsZShlbCkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IC8vIEdldCBjdXJyZW50IGNvbXB1dGVkIHN0eWxlc1xuXG5cbiAgICAgIHZhciBjb21wdXRlZFN0eWxlID0gZ2V0Q1MoZWwpOyAvLyBIZWlnaHQgb2Ygb25lIGxpbmUgb2YgdGV4dCBpbiBweFxuXG4gICAgICB2YXIgbGluZUhlaWdodCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5saW5lSGVpZ2h0KTsgLy8gQ2FsY3VsYXRlIGhlaWdodCBvZiBib3JkZXIgYW5kIHBhZGRpbmdcblxuICAgICAgdmFyIGJvcmRlciA9IChwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUuYm9yZGVyVG9wV2lkdGgpIHx8IDApICsgKHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5ib3JkZXJCb3R0b21XaWR0aCkgfHwgMCk7XG4gICAgICB2YXIgcGFkZGluZyA9IChwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUucGFkZGluZ1RvcCkgfHwgMCkgKyAocGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLnBhZGRpbmdCb3R0b20pIHx8IDApOyAvLyBDYWxjdWxhdGUgb2Zmc2V0XG5cbiAgICAgIHZhciBvZmZzZXQgPSBib3JkZXIgKyBwYWRkaW5nOyAvLyBNaW5pbXVtIGhlaWdodCBmb3IgbWluIHJvd3MgKHdoaWNoIG11c3QgYmUgMiByb3dzIG9yIGdyZWF0ZXIgZm9yIGNyb3NzLWJyb3dzZXIgc3VwcG9ydClcblxuICAgICAgdmFyIG1pbkhlaWdodCA9IGxpbmVIZWlnaHQgKiB0aGlzLmNvbXB1dGVkTWluUm93cyArIG9mZnNldDsgLy8gR2V0IHRoZSBjdXJyZW50IHN0eWxlIGhlaWdodCAod2l0aCBgcHhgIHVuaXRzKVxuXG4gICAgICB2YXIgb2xkSGVpZ2h0ID0gZWwuc3R5bGUuaGVpZ2h0IHx8IGNvbXB1dGVkU3R5bGUuaGVpZ2h0OyAvLyBQcm9iZSBzY3JvbGxIZWlnaHQgYnkgdGVtcG9yYXJpbHkgY2hhbmdpbmcgdGhlIGhlaWdodCB0byBgYXV0b2BcblxuICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nO1xuICAgICAgdmFyIHNjcm9sbEhlaWdodCA9IGVsLnNjcm9sbEhlaWdodDsgLy8gUGxhY2UgdGhlIG9yaWdpbmFsIG9sZCBoZWlnaHQgYmFjayBvbiB0aGUgZWxlbWVudCwganVzdCBpbiBjYXNlIGBjb21wdXRlZFByb3BgXG4gICAgICAvLyByZXR1cm5zIHRoZSBzYW1lIHZhbHVlIGFzIGJlZm9yZVxuXG4gICAgICBlbC5zdHlsZS5oZWlnaHQgPSBvbGRIZWlnaHQ7IC8vIENhbGN1bGF0ZSBjb250ZW50IGhlaWdodCBpbiAncm93cycgKHNjcm9sbEhlaWdodCBpbmNsdWRlcyBwYWRkaW5nIGJ1dCBub3QgYm9yZGVyKVxuXG4gICAgICB2YXIgY29udGVudFJvd3MgPSBNYXRoLm1heCgoc2Nyb2xsSGVpZ2h0IC0gcGFkZGluZykgLyBsaW5lSGVpZ2h0LCAyKTsgLy8gQ2FsY3VsYXRlIG51bWJlciBvZiByb3dzIHRvIGRpc3BsYXkgKGxpbWl0ZWQgd2l0aGluIG1pbi9tYXggcm93cylcblxuICAgICAgdmFyIHJvd3MgPSBNYXRoLm1pbihNYXRoLm1heChjb250ZW50Um93cywgdGhpcy5jb21wdXRlZE1pblJvd3MpLCB0aGlzLmNvbXB1dGVkTWF4Um93cyk7IC8vIENhbGN1bGF0ZSB0aGUgcmVxdWlyZWQgaGVpZ2h0IG9mIHRoZSB0ZXh0YXJlYSBpbmNsdWRpbmcgYm9yZGVyIGFuZCBwYWRkaW5nIChpbiBwaXhlbHMpXG5cbiAgICAgIHZhciBoZWlnaHQgPSBNYXRoLm1heChNYXRoLmNlaWwocm93cyAqIGxpbmVIZWlnaHQgKyBvZmZzZXQpLCBtaW5IZWlnaHQpOyAvLyBDb21wdXRlZCBoZWlnaHQgcmVtYWlucyB0aGUgbGFyZ2VyIG9mIGBvbGRIZWlnaHRgIGFuZCBuZXcgYGhlaWdodGAsXG4gICAgICAvLyB3aGVuIGhlaWdodCBpcyBpbiBgc3RpY2t5YCBtb2RlIChwcm9wIGBuby1hdXRvLXNocmlua2AgaXMgdHJ1ZSlcblxuICAgICAgaWYgKHRoaXMubm9BdXRvU2hyaW5rICYmIChwYXJzZUZsb2F0KG9sZEhlaWdodCkgfHwgMCkgPiBoZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIG9sZEhlaWdodDtcbiAgICAgIH0gLy8gUmV0dXJuIHRoZSBuZXcgY29tcHV0ZWQgQ1NTIGhlaWdodCBpbiBweCB1bml0c1xuXG5cbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdChoZWlnaHQsIFwicHhcIik7XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgLy8gVXNpbmcgc2VsZiBpbnN0ZWFkIG9mIHRoaXMgaGVscHMgcmVkdWNlIGNvZGUgc2l6ZSBkdXJpbmcgbWluaWZpY2F0aW9uXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiBoKCd0ZXh0YXJlYScsIHtcbiAgICAgIHJlZjogJ2lucHV0JyxcbiAgICAgIGNsYXNzOiBzZWxmLmNvbXB1dGVkQ2xhc3MsXG4gICAgICBzdHlsZTogc2VsZi5jb21wdXRlZFN0eWxlLFxuICAgICAgZGlyZWN0aXZlczogW3tcbiAgICAgICAgbmFtZTogJ21vZGVsJyxcbiAgICAgICAgdmFsdWU6IHNlbGYubG9jYWxWYWx1ZVxuICAgICAgfSwge1xuICAgICAgICBuYW1lOiAnYi12aXNpYmxlJyxcbiAgICAgICAgdmFsdWU6IHRoaXMudmlzaWJsZUNhbGxiYWNrLFxuICAgICAgICAvLyBJZiB0ZXh0YXJlYSBpcyB3aXRoaW4gNjQwcHggb2Ygdmlld3BvcnQsIGNvbnNpZGVyIGl0IHZpc2libGVcbiAgICAgICAgbW9kaWZpZXJzOiB7XG4gICAgICAgICAgJzY0MCc6IHRydWVcbiAgICAgICAgfVxuICAgICAgfV0sXG4gICAgICBhdHRyczoge1xuICAgICAgICBpZDogc2VsZi5zYWZlSWQoKSxcbiAgICAgICAgbmFtZTogc2VsZi5uYW1lLFxuICAgICAgICBmb3JtOiBzZWxmLmZvcm0gfHwgbnVsbCxcbiAgICAgICAgZGlzYWJsZWQ6IHNlbGYuZGlzYWJsZWQsXG4gICAgICAgIHBsYWNlaG9sZGVyOiBzZWxmLnBsYWNlaG9sZGVyLFxuICAgICAgICByZXF1aXJlZDogc2VsZi5yZXF1aXJlZCxcbiAgICAgICAgYXV0b2NvbXBsZXRlOiBzZWxmLmF1dG9jb21wbGV0ZSB8fCBudWxsLFxuICAgICAgICByZWFkb25seTogc2VsZi5yZWFkb25seSB8fCBzZWxmLnBsYWludGV4dCxcbiAgICAgICAgcm93czogc2VsZi5jb21wdXRlZFJvd3MsXG4gICAgICAgIHdyYXA6IHNlbGYud3JhcCB8fCBudWxsLFxuICAgICAgICAnYXJpYS1yZXF1aXJlZCc6IHNlbGYucmVxdWlyZWQgPyAndHJ1ZScgOiBudWxsLFxuICAgICAgICAnYXJpYS1pbnZhbGlkJzogc2VsZi5jb21wdXRlZEFyaWFJbnZhbGlkXG4gICAgICB9LFxuICAgICAgZG9tUHJvcHM6IHtcbiAgICAgICAgdmFsdWU6IHNlbGYubG9jYWxWYWx1ZVxuICAgICAgfSxcbiAgICAgIG9uOiBfb2JqZWN0U3ByZWFkKHt9LCBzZWxmLiRsaXN0ZW5lcnMsIHtcbiAgICAgICAgaW5wdXQ6IHNlbGYub25JbnB1dCxcbiAgICAgICAgY2hhbmdlOiBzZWxmLm9uQ2hhbmdlLFxuICAgICAgICBibHVyOiBzZWxmLm9uQmx1clxuICAgICAgfSlcbiAgICB9KTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLXRleHRhcmVhL2Zvcm0tdGV4dGFyZWEuanNcbi8vIG1vZHVsZSBpZCA9IDE1MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///151\n"); +eval("// @vue/component\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n computed: {\n validity: {\n // Expose validity property\n cache: false,\n get: function get()\n /* istanbul ignore next */\n {\n return this.$refs.input.validity;\n }\n },\n validationMessage: {\n // Expose validationMessage property\n cache: false,\n get: function get()\n /* istanbul ignore next */\n {\n return this.$refs.input.validationMessage;\n }\n },\n willValidate: {\n // Expose willValidate property\n cache: false,\n get: function get()\n /* istanbul ignore next */\n {\n return this.$refs.input.willValidate;\n }\n }\n },\n methods: {\n setCustomValidity: function setCustomValidity()\n /* istanbul ignore next */\n {\n var _this$$refs$input;\n\n // For external handler that may want a setCustomValidity(...) method\n return (_this$$refs$input = this.$refs.input).setCustomValidity.apply(_this$$refs$input, arguments);\n },\n checkValidity: function checkValidity()\n /* istanbul ignore next */\n {\n var _this$$refs$input2;\n\n // For external handler that may want a checkValidity(...) method\n return (_this$$refs$input2 = this.$refs.input).checkValidity.apply(_this$$refs$input2, arguments);\n },\n reportValidity: function reportValidity()\n /* istanbul ignore next */\n {\n var _this$$refs$input3;\n\n // For external handler that may want a reportValidity(...) method\n return (_this$$refs$input3 = this.$refs.input).reportValidity.apply(_this$$refs$input3, arguments);\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vbWl4aW5zL2Zvcm0tdmFsaWRpdHkuanM/NDY0NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNTEuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdnVlL2NvbXBvbmVudFxuZXhwb3J0IGRlZmF1bHQge1xuICBjb21wdXRlZDoge1xuICAgIHZhbGlkaXR5OiB7XG4gICAgICAvLyBFeHBvc2UgdmFsaWRpdHkgcHJvcGVydHlcbiAgICAgIGNhY2hlOiBmYWxzZSxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KClcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLiRyZWZzLmlucHV0LnZhbGlkaXR5O1xuICAgICAgfVxuICAgIH0sXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHtcbiAgICAgIC8vIEV4cG9zZSB2YWxpZGF0aW9uTWVzc2FnZSBwcm9wZXJ0eVxuICAgICAgY2FjaGU6IGZhbHNlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHJlZnMuaW5wdXQudmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICB9XG4gICAgfSxcbiAgICB3aWxsVmFsaWRhdGU6IHtcbiAgICAgIC8vIEV4cG9zZSB3aWxsVmFsaWRhdGUgcHJvcGVydHlcbiAgICAgIGNhY2hlOiBmYWxzZSxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KClcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLiRyZWZzLmlucHV0LndpbGxWYWxpZGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBzZXRDdXN0b21WYWxpZGl0eTogZnVuY3Rpb24gc2V0Q3VzdG9tVmFsaWRpdHkoKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAge1xuICAgICAgdmFyIF90aGlzJCRyZWZzJGlucHV0O1xuXG4gICAgICAvLyBGb3IgZXh0ZXJuYWwgaGFuZGxlciB0aGF0IG1heSB3YW50IGEgc2V0Q3VzdG9tVmFsaWRpdHkoLi4uKSBtZXRob2RcbiAgICAgIHJldHVybiAoX3RoaXMkJHJlZnMkaW5wdXQgPSB0aGlzLiRyZWZzLmlucHV0KS5zZXRDdXN0b21WYWxpZGl0eS5hcHBseShfdGhpcyQkcmVmcyRpbnB1dCwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIGNoZWNrVmFsaWRpdHk6IGZ1bmN0aW9uIGNoZWNrVmFsaWRpdHkoKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAge1xuICAgICAgdmFyIF90aGlzJCRyZWZzJGlucHV0MjtcblxuICAgICAgLy8gRm9yIGV4dGVybmFsIGhhbmRsZXIgdGhhdCBtYXkgd2FudCBhIGNoZWNrVmFsaWRpdHkoLi4uKSBtZXRob2RcbiAgICAgIHJldHVybiAoX3RoaXMkJHJlZnMkaW5wdXQyID0gdGhpcy4kcmVmcy5pbnB1dCkuY2hlY2tWYWxpZGl0eS5hcHBseShfdGhpcyQkcmVmcyRpbnB1dDIsIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICByZXBvcnRWYWxpZGl0eTogZnVuY3Rpb24gcmVwb3J0VmFsaWRpdHkoKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAge1xuICAgICAgdmFyIF90aGlzJCRyZWZzJGlucHV0MztcblxuICAgICAgLy8gRm9yIGV4dGVybmFsIGhhbmRsZXIgdGhhdCBtYXkgd2FudCBhIHJlcG9ydFZhbGlkaXR5KC4uLikgbWV0aG9kXG4gICAgICByZXR1cm4gKF90aGlzJCRyZWZzJGlucHV0MyA9IHRoaXMuJHJlZnMuaW5wdXQpLnJlcG9ydFZhbGlkaXR5LmFwcGx5KF90aGlzJCRyZWZzJGlucHV0MywgYXJndW1lbnRzKTtcbiAgICB9XG4gIH1cbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vbWl4aW5zL2Zvcm0tdmFsaWRpdHkuanNcbi8vIG1vZHVsZSBpZCA9IDE1MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///151\n"); /***/ }), /* 152 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return FormFilePlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__form_file__ = __webpack_require__(153);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BFormFile */\n\n\nvar FormFilePlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BFormFile: __WEBPACK_IMPORTED_MODULE_0__form_file__[\"a\" /* BFormFile */],\n BFile: __WEBPACK_IMPORTED_MODULE_0__form_file__[\"a\" /* BFormFile */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWZpbGUvaW5kZXguanM/YjBkZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF3QztBQUNZO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsZUFBZSw2REFBUztBQUN4QixXQUFXLDZEQUFTO0FBQ3BCO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNTIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCRm9ybUZpbGUgfSBmcm9tICcuL2Zvcm0tZmlsZSc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgRm9ybUZpbGVQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCRm9ybUZpbGU6IEJGb3JtRmlsZSxcbiAgICBCRmlsZTogQkZvcm1GaWxlXG4gIH1cbn0pO1xuZXhwb3J0IHsgRm9ybUZpbGVQbHVnaW4sIEJGb3JtRmlsZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvZm9ybS1maWxlL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///152\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return FormTextareaPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__form_textarea__ = __webpack_require__(153);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BFormTextarea */\n\n\nvar FormTextareaPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BFormTextarea: __WEBPACK_IMPORTED_MODULE_0__form_textarea__[\"a\" /* BFormTextarea */],\n BTextarea: __WEBPACK_IMPORTED_MODULE_0__form_textarea__[\"a\" /* BFormTextarea */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLXRleHRhcmVhL2luZGV4LmpzP2NhYzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBZ0Q7QUFDSTtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLG1CQUFtQixxRUFBYTtBQUNoQyxlQUFlLHFFQUFhO0FBQzVCO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNTIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCRm9ybVRleHRhcmVhIH0gZnJvbSAnLi9mb3JtLXRleHRhcmVhJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBGb3JtVGV4dGFyZWFQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCRm9ybVRleHRhcmVhOiBCRm9ybVRleHRhcmVhLFxuICAgIEJUZXh0YXJlYTogQkZvcm1UZXh0YXJlYVxuICB9XG59KTtcbmV4cG9ydCB7IEZvcm1UZXh0YXJlYVBsdWdpbiwgQkZvcm1UZXh0YXJlYSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvZm9ybS10ZXh0YXJlYS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTUyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///152\n"); /***/ }), /* 153 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BFormFile; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_safe_types__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_warn__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_form_custom__ = __webpack_require__(154);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__mixins_form__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__mixins_form_state__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__mixins_normalize_slot__ = __webpack_require__(5);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n\n\n\n\nvar NAME = 'BFormFile'; // @vue/component\n\nvar BFormFile =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n mixins: [__WEBPACK_IMPORTED_MODULE_9__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__mixins_form__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_8__mixins_form_state__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__mixins_form_custom__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_10__mixins_normalize_slot__[\"a\" /* default */]],\n inheritAttrs: false,\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n size: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])('BFormControl', 'size');\n }\n },\n value: {\n type: [__WEBPACK_IMPORTED_MODULE_4__utils_safe_types__[\"a\" /* File */], Array],\n default: null,\n validator: function validator(val) {\n /* istanbul ignore next */\n if (val === '') {\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_warn__[\"b\" /* warn */])(\"\".concat(NAME, \" - setting value/v-model to an empty string for reset is deprecated. Set to 'null' instead\"));\n return true;\n }\n\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"o\" /* isUndefinedOrNull */])(val) || Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"e\" /* isFile */])(val) || Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"d\" /* isArray */])(val) && (val.length === 0 || val.every(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"e\" /* isFile */]));\n }\n },\n accept: {\n type: String,\n default: ''\n },\n // Instruct input to capture from camera\n capture: {\n type: Boolean,\n default: false\n },\n placeholder: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'placeholder');\n }\n },\n browseText: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'browseText');\n }\n },\n dropPlaceholder: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'dropPlaceholder');\n }\n },\n multiple: {\n type: Boolean,\n default: false\n },\n directory: {\n type: Boolean,\n default: false\n },\n noTraverse: {\n type: Boolean,\n default: false\n },\n noDrop: {\n type: Boolean,\n default: false\n },\n fileNameFormatter: {\n type: Function,\n default: null\n }\n },\n data: function data() {\n return {\n selectedFile: null,\n dragging: false,\n hasFocus: false\n };\n },\n computed: {\n selectLabel: function selectLabel() {\n // Draging active\n if (this.dragging && this.dropPlaceholder) {\n return this.dropPlaceholder;\n } // No file chosen\n\n\n if (!this.selectedFile || this.selectedFile.length === 0) {\n return this.placeholder;\n } // Convert selectedFile to an array (if not already one)\n\n\n var files = Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"b\" /* concat */])(this.selectedFile).filter(Boolean);\n\n if (this.hasNormalizedSlot('file-name')) {\n // There is a slot for formatting the files/names\n return [this.normalizeSlot('file-name', {\n files: files,\n names: files.map(function (f) {\n return f.name;\n })\n })];\n } else {\n // Use the user supplied formatter, or the built in one.\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"f\" /* isFunction */])(this.fileNameFormatter) ? String(this.fileNameFormatter(files)) : files.map(function (file) {\n return file.name;\n }).join(', ');\n }\n }\n },\n watch: {\n selectedFile: function selectedFile(newVal, oldVal) {\n // The following test is needed when the file input is \"reset\" or the\n // exact same file(s) are selected to prevent an infinite loop.\n // When in `multiple` mode we need to check for two empty arrays or\n // two arrays with identical files\n if (newVal === oldVal || Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"d\" /* isArray */])(newVal) && Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"d\" /* isArray */])(oldVal) && newVal.length === oldVal.length && newVal.every(function (v, i) {\n return v === oldVal[i];\n })) {\n return;\n }\n\n if (!newVal && this.multiple) {\n this.$emit('input', []);\n } else {\n this.$emit('input', newVal);\n }\n },\n value: function value(newVal) {\n if (!newVal || Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"d\" /* isArray */])(newVal) && newVal.length === 0) {\n this.reset();\n }\n }\n },\n methods: {\n focusHandler: function focusHandler(evt) {\n // Bootstrap v4 doesn't have focus styling for custom file input\n // Firefox has a '[type=file]:focus ~ sibling' selector issue,\n // so we add a 'focus' class to get around these bugs\n if (this.plain || evt.type === 'focusout') {\n this.hasFocus = false;\n } else {\n // Add focus styling for custom file input\n this.hasFocus = true;\n }\n },\n reset: function reset() {\n try {\n // Wrapped in try in case IE 11 craps out\n this.$refs.input.value = '';\n } catch (e) {} // IE 11 doesn't support setting `input.value` to '' or null\n // So we use this little extra hack to reset the value, just in case.\n // This also appears to work on modern browsers as well.\n\n\n this.$refs.input.type = '';\n this.$refs.input.type = 'file';\n this.selectedFile = this.multiple ? [] : null;\n },\n onFileChange: function onFileChange(evt) {\n var _this = this;\n\n // Always emit original event\n this.$emit('change', evt); // Check if special `items` prop is available on event (drop mode)\n // Can be disabled by setting no-traverse\n\n var items = evt.dataTransfer && evt.dataTransfer.items;\n /* istanbul ignore next: not supported in JSDOM */\n\n if (items && !this.noTraverse) {\n var queue = [];\n\n for (var i = 0; i < items.length; i++) {\n var item = items[i].webkitGetAsEntry();\n\n if (item) {\n queue.push(this.traverseFileTree(item));\n }\n }\n\n Promise.all(queue).then(function (filesArr) {\n _this.setFiles(Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"c\" /* from */])(filesArr));\n });\n return;\n } // Normal handling\n\n\n this.setFiles(evt.target.files || evt.dataTransfer.files);\n },\n setFiles: function setFiles() {\n var files = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (!files) {\n /* istanbul ignore next: this will probably not happen */\n this.selectedFile = null;\n } else if (this.multiple) {\n // Convert files to array\n var filesArray = [];\n\n for (var i = 0; i < files.length; i++) {\n filesArray.push(files[i]);\n } // Return file(s) as array\n\n\n this.selectedFile = filesArray;\n } else {\n // Return single file object\n this.selectedFile = files[0] || null;\n }\n },\n onReset: function onReset() {\n // Triggered when the parent form (if any) is reset\n this.selectedFile = this.multiple ? [] : null;\n },\n onDragover: function onDragover(evt)\n /* istanbul ignore next: difficult to test in JSDOM */\n {\n evt.preventDefault();\n evt.stopPropagation();\n\n if (this.noDrop || !this.custom) {\n return;\n }\n\n this.dragging = true;\n evt.dataTransfer.dropEffect = 'copy';\n },\n onDragleave: function onDragleave(evt)\n /* istanbul ignore next: difficult to test in JSDOM */\n {\n evt.preventDefault();\n evt.stopPropagation();\n this.dragging = false;\n },\n onDrop: function onDrop(evt)\n /* istanbul ignore next: difficult to test in JSDOM */\n {\n evt.preventDefault();\n evt.stopPropagation();\n\n if (this.noDrop) {\n return;\n }\n\n this.dragging = false;\n\n if (evt.dataTransfer.files && evt.dataTransfer.files.length > 0) {\n this.onFileChange(evt);\n }\n },\n traverseFileTree: function traverseFileTree(item, path)\n /* istanbul ignore next: not supported in JSDOM */\n {\n var _this2 = this;\n\n // Based on http://stackoverflow.com/questions/3590058\n return new Promise(function (resolve) {\n path = path || '';\n\n if (item.isFile) {\n // Get file\n item.file(function (file) {\n file.$path = path; // Inject $path to file obj\n\n resolve(file);\n });\n } else if (item.isDirectory) {\n // Get folder contents\n item.createReader().readEntries(function (entries) {\n var queue = [];\n\n for (var i = 0; i < entries.length; i++) {\n queue.push(_this2.traverseFileTree(entries[i], path + item.name + '/'));\n }\n\n Promise.all(queue).then(function (filesArr) {\n resolve(Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"c\" /* from */])(filesArr));\n });\n });\n }\n });\n }\n },\n render: function render(h) {\n // Form Input\n var input = h('input', {\n ref: 'input',\n class: [{\n 'form-control-file': this.plain,\n 'custom-file-input': this.custom,\n focus: this.custom && this.hasFocus\n }, this.stateClass],\n attrs: _objectSpread({}, this.$attrs, {\n type: 'file',\n id: this.safeId(),\n name: this.name,\n disabled: this.disabled,\n required: this.required,\n form: this.form || null,\n capture: this.capture || null,\n accept: this.accept || null,\n multiple: this.multiple,\n webkitdirectory: this.directory,\n 'aria-required': this.required ? 'true' : null\n }),\n on: {\n change: this.onFileChange,\n focusin: this.focusHandler,\n focusout: this.focusHandler,\n reset: this.onReset\n }\n });\n\n if (this.plain) {\n return input;\n } // Overlay Labels\n\n\n var label = h('label', {\n staticClass: 'custom-file-label',\n class: [this.dragging ? 'dragging' : null],\n attrs: {\n for: this.safeId(),\n 'data-browse': this.browseText || null\n }\n }, this.selectLabel); // Return rendered custom file input\n\n return h('div', {\n staticClass: 'custom-file b-form-file',\n class: [this.stateClass, _defineProperty({}, \"b-custom-control-\".concat(this.size), Boolean(this.size))],\n attrs: {\n id: this.safeId('_BV_file_outer_')\n },\n on: {\n dragover: this.onDragover,\n dragleave: this.onDragleave,\n drop: this.onDrop\n }\n }, [input, label]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWZpbGUvZm9ybS1maWxlLmpzP2FmNzQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNxQztBQUNmO0FBQ29CO0FBQzlCO0FBQ047QUFDZTtBQUNiO0FBQ1c7QUFDZjtBQUN1QjtBQUM3RCx1QkFBdUI7O0FBRWhCO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0EsV0FBVywyREFBTyxFQUFFLDZEQUFTLEVBQUUsbUVBQWMsRUFBRSxvRUFBZSxFQUFFLHdFQUFrQjtBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUZBQWtCO0FBQ2pDO0FBQ0EsS0FBSztBQUNMO0FBQ0EsYUFBYSwrREFBSTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsaUVBQUk7QUFDZDtBQUNBOztBQUVBLGVBQWUsaUZBQWlCLFNBQVMsc0VBQU0sU0FBUyxxRUFBTyx3Q0FBd0MsOERBQU07QUFDN0c7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUZBQWtCO0FBQ2pDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUZBQWtCO0FBQ2pDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUZBQWtCO0FBQ2pDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUCxrQkFBa0Isb0VBQU07O0FBRXhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsZUFBZSwwRUFBVTtBQUN6QjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixxRUFBTyxZQUFZLHFFQUFPO0FBQ3pEO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EscUJBQXFCLHFFQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLGFBQWE7QUFDcEI7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxnQ0FBZ0M7QUFDaEM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHVCQUF1QixrQkFBa0I7QUFDekM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5QkFBeUIsa0VBQVM7QUFDbEMsU0FBUztBQUNUO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQSx1QkFBdUIsa0JBQWtCO0FBQ3pDO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qjs7QUFFOUI7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkIsb0JBQW9CO0FBQy9DO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0Isa0VBQVM7QUFDL0IsYUFBYTtBQUNiLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxvQkFBb0I7O0FBRXpCO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQ7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNTMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBmcm9tIGFzIGFycmF5RnJvbSwgaXNBcnJheSwgY29uY2F0IH0gZnJvbSAnLi4vLi4vdXRpbHMvYXJyYXknO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29uZmlnJztcbmltcG9ydCB7IGlzRmlsZSwgaXNGdW5jdGlvbiwgaXNVbmRlZmluZWRPck51bGwgfSBmcm9tICcuLi8uLi91dGlscy9pbnNwZWN0JztcbmltcG9ydCB7IEZpbGUgfSBmcm9tICcuLi8uLi91dGlscy9zYWZlLXR5cGVzJztcbmltcG9ydCB7IHdhcm4gfSBmcm9tICcuLi8uLi91dGlscy93YXJuJztcbmltcG9ydCBmb3JtQ3VzdG9tTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tY3VzdG9tJztcbmltcG9ydCBmb3JtTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0nO1xuaW1wb3J0IGZvcm1TdGF0ZU1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXN0YXRlJztcbmltcG9ydCBpZE1peGluIGZyb20gJy4uLy4uL21peGlucy9pZCc7XG5pbXBvcnQgbm9ybWFsaXplU2xvdE1peGluIGZyb20gJy4uLy4uL21peGlucy9ub3JtYWxpemUtc2xvdCc7XG52YXIgTkFNRSA9ICdCRm9ybUZpbGUnOyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJGb3JtRmlsZSA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogTkFNRSxcbiAgbWl4aW5zOiBbaWRNaXhpbiwgZm9ybU1peGluLCBmb3JtU3RhdGVNaXhpbiwgZm9ybUN1c3RvbU1peGluLCBub3JtYWxpemVTbG90TWl4aW5dLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBtb2RlbDoge1xuICAgIHByb3A6ICd2YWx1ZScsXG4gICAgZXZlbnQ6ICdpbnB1dCdcbiAgfSxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZygnQkZvcm1Db250cm9sJywgJ3NpemUnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHZhbHVlOiB7XG4gICAgICB0eXBlOiBbRmlsZSwgQXJyYXldLFxuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbCkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBpZiAodmFsID09PSAnJykge1xuICAgICAgICAgIHdhcm4oXCJcIi5jb25jYXQoTkFNRSwgXCIgLSBzZXR0aW5nIHZhbHVlL3YtbW9kZWwgdG8gYW4gZW1wdHkgc3RyaW5nIGZvciByZXNldCBpcyBkZXByZWNhdGVkLiBTZXQgdG8gJ251bGwnIGluc3RlYWRcIikpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzVW5kZWZpbmVkT3JOdWxsKHZhbCkgfHwgaXNGaWxlKHZhbCkgfHwgaXNBcnJheSh2YWwpICYmICh2YWwubGVuZ3RoID09PSAwIHx8IHZhbC5ldmVyeShpc0ZpbGUpKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFjY2VwdDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIC8vIEluc3RydWN0IGlucHV0IHRvIGNhcHR1cmUgZnJvbSBjYW1lcmFcbiAgICBjYXB0dXJlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHBsYWNlaG9sZGVyOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAncGxhY2Vob2xkZXInKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGJyb3dzZVRleHQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdicm93c2VUZXh0Jyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBkcm9wUGxhY2Vob2xkZXI6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdkcm9wUGxhY2Vob2xkZXInKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG11bHRpcGxlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGRpcmVjdG9yeToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBub1RyYXZlcnNlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIG5vRHJvcDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBmaWxlTmFtZUZvcm1hdHRlcjoge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfVxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzZWxlY3RlZEZpbGU6IG51bGwsXG4gICAgICBkcmFnZ2luZzogZmFsc2UsXG4gICAgICBoYXNGb2N1czogZmFsc2VcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHNlbGVjdExhYmVsOiBmdW5jdGlvbiBzZWxlY3RMYWJlbCgpIHtcbiAgICAgIC8vIERyYWdpbmcgYWN0aXZlXG4gICAgICBpZiAodGhpcy5kcmFnZ2luZyAmJiB0aGlzLmRyb3BQbGFjZWhvbGRlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5kcm9wUGxhY2Vob2xkZXI7XG4gICAgICB9IC8vIE5vIGZpbGUgY2hvc2VuXG5cblxuICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkRmlsZSB8fCB0aGlzLnNlbGVjdGVkRmlsZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXI7XG4gICAgICB9IC8vIENvbnZlcnQgc2VsZWN0ZWRGaWxlIHRvIGFuIGFycmF5IChpZiBub3QgYWxyZWFkeSBvbmUpXG5cblxuICAgICAgdmFyIGZpbGVzID0gY29uY2F0KHRoaXMuc2VsZWN0ZWRGaWxlKS5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICAgIGlmICh0aGlzLmhhc05vcm1hbGl6ZWRTbG90KCdmaWxlLW5hbWUnKSkge1xuICAgICAgICAvLyBUaGVyZSBpcyBhIHNsb3QgZm9yIGZvcm1hdHRpbmcgdGhlIGZpbGVzL25hbWVzXG4gICAgICAgIHJldHVybiBbdGhpcy5ub3JtYWxpemVTbG90KCdmaWxlLW5hbWUnLCB7XG4gICAgICAgICAgZmlsZXM6IGZpbGVzLFxuICAgICAgICAgIG5hbWVzOiBmaWxlcy5tYXAoZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgICAgIHJldHVybiBmLm5hbWU7XG4gICAgICAgICAgfSlcbiAgICAgICAgfSldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVXNlIHRoZSB1c2VyIHN1cHBsaWVkIGZvcm1hdHRlciwgb3IgdGhlIGJ1aWx0IGluIG9uZS5cbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24odGhpcy5maWxlTmFtZUZvcm1hdHRlcikgPyBTdHJpbmcodGhpcy5maWxlTmFtZUZvcm1hdHRlcihmaWxlcykpIDogZmlsZXMubWFwKGZ1bmN0aW9uIChmaWxlKSB7XG4gICAgICAgICAgcmV0dXJuIGZpbGUubmFtZTtcbiAgICAgICAgfSkuam9pbignLCAnKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgc2VsZWN0ZWRGaWxlOiBmdW5jdGlvbiBzZWxlY3RlZEZpbGUobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIC8vIFRoZSBmb2xsb3dpbmcgdGVzdCBpcyBuZWVkZWQgd2hlbiB0aGUgZmlsZSBpbnB1dCBpcyBcInJlc2V0XCIgb3IgdGhlXG4gICAgICAvLyBleGFjdCBzYW1lIGZpbGUocykgYXJlIHNlbGVjdGVkIHRvIHByZXZlbnQgYW4gaW5maW5pdGUgbG9vcC5cbiAgICAgIC8vIFdoZW4gaW4gYG11bHRpcGxlYCBtb2RlIHdlIG5lZWQgdG8gY2hlY2sgZm9yIHR3byBlbXB0eSBhcnJheXMgb3JcbiAgICAgIC8vIHR3byBhcnJheXMgd2l0aCBpZGVudGljYWwgZmlsZXNcbiAgICAgIGlmIChuZXdWYWwgPT09IG9sZFZhbCB8fCBpc0FycmF5KG5ld1ZhbCkgJiYgaXNBcnJheShvbGRWYWwpICYmIG5ld1ZhbC5sZW5ndGggPT09IG9sZFZhbC5sZW5ndGggJiYgbmV3VmFsLmV2ZXJ5KGZ1bmN0aW9uICh2LCBpKSB7XG4gICAgICAgIHJldHVybiB2ID09PSBvbGRWYWxbaV07XG4gICAgICB9KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghbmV3VmFsICYmIHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBbXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIG5ld1ZhbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUobmV3VmFsKSB7XG4gICAgICBpZiAoIW5ld1ZhbCB8fCBpc0FycmF5KG5ld1ZhbCkgJiYgbmV3VmFsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgZm9jdXNIYW5kbGVyOiBmdW5jdGlvbiBmb2N1c0hhbmRsZXIoZXZ0KSB7XG4gICAgICAvLyBCb290c3RyYXAgdjQgZG9lc24ndCBoYXZlIGZvY3VzIHN0eWxpbmcgZm9yIGN1c3RvbSBmaWxlIGlucHV0XG4gICAgICAvLyBGaXJlZm94IGhhcyBhICdbdHlwZT1maWxlXTpmb2N1cyB+IHNpYmxpbmcnIHNlbGVjdG9yIGlzc3VlLFxuICAgICAgLy8gc28gd2UgYWRkIGEgJ2ZvY3VzJyBjbGFzcyB0byBnZXQgYXJvdW5kIHRoZXNlIGJ1Z3NcbiAgICAgIGlmICh0aGlzLnBsYWluIHx8IGV2dC50eXBlID09PSAnZm9jdXNvdXQnKSB7XG4gICAgICAgIHRoaXMuaGFzRm9jdXMgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFkZCBmb2N1cyBzdHlsaW5nIGZvciBjdXN0b20gZmlsZSBpbnB1dFxuICAgICAgICB0aGlzLmhhc0ZvY3VzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlc2V0OiBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFdyYXBwZWQgaW4gdHJ5IGluIGNhc2UgSUUgMTEgY3JhcHMgb3V0XG4gICAgICAgIHRoaXMuJHJlZnMuaW5wdXQudmFsdWUgPSAnJztcbiAgICAgIH0gY2F0Y2ggKGUpIHt9IC8vIElFIDExIGRvZXNuJ3Qgc3VwcG9ydCBzZXR0aW5nIGBpbnB1dC52YWx1ZWAgdG8gJycgb3IgbnVsbFxuICAgICAgLy8gU28gd2UgdXNlIHRoaXMgbGl0dGxlIGV4dHJhIGhhY2sgdG8gcmVzZXQgdGhlIHZhbHVlLCBqdXN0IGluIGNhc2UuXG4gICAgICAvLyBUaGlzIGFsc28gYXBwZWFycyB0byB3b3JrIG9uIG1vZGVybiBicm93c2VycyBhcyB3ZWxsLlxuXG5cbiAgICAgIHRoaXMuJHJlZnMuaW5wdXQudHlwZSA9ICcnO1xuICAgICAgdGhpcy4kcmVmcy5pbnB1dC50eXBlID0gJ2ZpbGUnO1xuICAgICAgdGhpcy5zZWxlY3RlZEZpbGUgPSB0aGlzLm11bHRpcGxlID8gW10gOiBudWxsO1xuICAgIH0sXG4gICAgb25GaWxlQ2hhbmdlOiBmdW5jdGlvbiBvbkZpbGVDaGFuZ2UoZXZ0KSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAvLyBBbHdheXMgZW1pdCBvcmlnaW5hbCBldmVudFxuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgZXZ0KTsgLy8gQ2hlY2sgaWYgc3BlY2lhbCBgaXRlbXNgIHByb3AgaXMgYXZhaWxhYmxlIG9uIGV2ZW50IChkcm9wIG1vZGUpXG4gICAgICAvLyBDYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyBuby10cmF2ZXJzZVxuXG4gICAgICB2YXIgaXRlbXMgPSBldnQuZGF0YVRyYW5zZmVyICYmIGV2dC5kYXRhVHJhbnNmZXIuaXRlbXM7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogbm90IHN1cHBvcnRlZCBpbiBKU0RPTSAqL1xuXG4gICAgICBpZiAoaXRlbXMgJiYgIXRoaXMubm9UcmF2ZXJzZSkge1xuICAgICAgICB2YXIgcXVldWUgPSBbXTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGl0ZW0gPSBpdGVtc1tpXS53ZWJraXRHZXRBc0VudHJ5KCk7XG5cbiAgICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgcXVldWUucHVzaCh0aGlzLnRyYXZlcnNlRmlsZVRyZWUoaXRlbSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIFByb21pc2UuYWxsKHF1ZXVlKS50aGVuKGZ1bmN0aW9uIChmaWxlc0Fycikge1xuICAgICAgICAgIF90aGlzLnNldEZpbGVzKGFycmF5RnJvbShmaWxlc0FycikpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBOb3JtYWwgaGFuZGxpbmdcblxuXG4gICAgICB0aGlzLnNldEZpbGVzKGV2dC50YXJnZXQuZmlsZXMgfHwgZXZ0LmRhdGFUcmFuc2Zlci5maWxlcyk7XG4gICAgfSxcbiAgICBzZXRGaWxlczogZnVuY3Rpb24gc2V0RmlsZXMoKSB7XG4gICAgICB2YXIgZmlsZXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IFtdO1xuXG4gICAgICBpZiAoIWZpbGVzKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiB0aGlzIHdpbGwgcHJvYmFibHkgbm90IGhhcHBlbiAqL1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZSA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgLy8gQ29udmVydCBmaWxlcyB0byBhcnJheVxuICAgICAgICB2YXIgZmlsZXNBcnJheSA9IFtdO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBmaWxlc0FycmF5LnB1c2goZmlsZXNbaV0pO1xuICAgICAgICB9IC8vIFJldHVybiBmaWxlKHMpIGFzIGFycmF5XG5cblxuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZSA9IGZpbGVzQXJyYXk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBSZXR1cm4gc2luZ2xlIGZpbGUgb2JqZWN0XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlID0gZmlsZXNbMF0gfHwgbnVsbDtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uUmVzZXQ6IGZ1bmN0aW9uIG9uUmVzZXQoKSB7XG4gICAgICAvLyBUcmlnZ2VyZWQgd2hlbiB0aGUgcGFyZW50IGZvcm0gKGlmIGFueSkgaXMgcmVzZXRcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlID0gdGhpcy5tdWx0aXBsZSA/IFtdIDogbnVsbDtcbiAgICB9LFxuICAgIG9uRHJhZ292ZXI6IGZ1bmN0aW9uIG9uRHJhZ292ZXIoZXZ0KVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBkaWZmaWN1bHQgdG8gdGVzdCBpbiBKU0RPTSAqL1xuICAgIHtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICBpZiAodGhpcy5ub0Ryb3AgfHwgIXRoaXMuY3VzdG9tKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG4gICAgICBldnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnY29weSc7XG4gICAgfSxcbiAgICBvbkRyYWdsZWF2ZTogZnVuY3Rpb24gb25EcmFnbGVhdmUoZXZ0KVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBkaWZmaWN1bHQgdG8gdGVzdCBpbiBKU0RPTSAqL1xuICAgIHtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgIH0sXG4gICAgb25Ecm9wOiBmdW5jdGlvbiBvbkRyb3AoZXZ0KVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBkaWZmaWN1bHQgdG8gdGVzdCBpbiBKU0RPTSAqL1xuICAgIHtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICBpZiAodGhpcy5ub0Ryb3ApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG5cbiAgICAgIGlmIChldnQuZGF0YVRyYW5zZmVyLmZpbGVzICYmIGV2dC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLm9uRmlsZUNoYW5nZShldnQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgdHJhdmVyc2VGaWxlVHJlZTogZnVuY3Rpb24gdHJhdmVyc2VGaWxlVHJlZShpdGVtLCBwYXRoKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBub3Qgc3VwcG9ydGVkIGluIEpTRE9NICovXG4gICAge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIC8vIEJhc2VkIG9uIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzU5MDA1OFxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgIHBhdGggPSBwYXRoIHx8ICcnO1xuXG4gICAgICAgIGlmIChpdGVtLmlzRmlsZSkge1xuICAgICAgICAgIC8vIEdldCBmaWxlXG4gICAgICAgICAgaXRlbS5maWxlKGZ1bmN0aW9uIChmaWxlKSB7XG4gICAgICAgICAgICBmaWxlLiRwYXRoID0gcGF0aDsgLy8gSW5qZWN0ICRwYXRoIHRvIGZpbGUgb2JqXG5cbiAgICAgICAgICAgIHJlc29sdmUoZmlsZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5pc0RpcmVjdG9yeSkge1xuICAgICAgICAgIC8vIEdldCBmb2xkZXIgY29udGVudHNcbiAgICAgICAgICBpdGVtLmNyZWF0ZVJlYWRlcigpLnJlYWRFbnRyaWVzKGZ1bmN0aW9uIChlbnRyaWVzKSB7XG4gICAgICAgICAgICB2YXIgcXVldWUgPSBbXTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIHF1ZXVlLnB1c2goX3RoaXMyLnRyYXZlcnNlRmlsZVRyZWUoZW50cmllc1tpXSwgcGF0aCArIGl0ZW0ubmFtZSArICcvJykpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBQcm9taXNlLmFsbChxdWV1ZSkudGhlbihmdW5jdGlvbiAoZmlsZXNBcnIpIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZShhcnJheUZyb20oZmlsZXNBcnIpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICAvLyBGb3JtIElucHV0XG4gICAgdmFyIGlucHV0ID0gaCgnaW5wdXQnLCB7XG4gICAgICByZWY6ICdpbnB1dCcsXG4gICAgICBjbGFzczogW3tcbiAgICAgICAgJ2Zvcm0tY29udHJvbC1maWxlJzogdGhpcy5wbGFpbixcbiAgICAgICAgJ2N1c3RvbS1maWxlLWlucHV0JzogdGhpcy5jdXN0b20sXG4gICAgICAgIGZvY3VzOiB0aGlzLmN1c3RvbSAmJiB0aGlzLmhhc0ZvY3VzXG4gICAgICB9LCB0aGlzLnN0YXRlQ2xhc3NdLFxuICAgICAgYXR0cnM6IF9vYmplY3RTcHJlYWQoe30sIHRoaXMuJGF0dHJzLCB7XG4gICAgICAgIHR5cGU6ICdmaWxlJyxcbiAgICAgICAgaWQ6IHRoaXMuc2FmZUlkKCksXG4gICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQsXG4gICAgICAgIHJlcXVpcmVkOiB0aGlzLnJlcXVpcmVkLFxuICAgICAgICBmb3JtOiB0aGlzLmZvcm0gfHwgbnVsbCxcbiAgICAgICAgY2FwdHVyZTogdGhpcy5jYXB0dXJlIHx8IG51bGwsXG4gICAgICAgIGFjY2VwdDogdGhpcy5hY2NlcHQgfHwgbnVsbCxcbiAgICAgICAgbXVsdGlwbGU6IHRoaXMubXVsdGlwbGUsXG4gICAgICAgIHdlYmtpdGRpcmVjdG9yeTogdGhpcy5kaXJlY3RvcnksXG4gICAgICAgICdhcmlhLXJlcXVpcmVkJzogdGhpcy5yZXF1aXJlZCA/ICd0cnVlJyA6IG51bGxcbiAgICAgIH0pLFxuICAgICAgb246IHtcbiAgICAgICAgY2hhbmdlOiB0aGlzLm9uRmlsZUNoYW5nZSxcbiAgICAgICAgZm9jdXNpbjogdGhpcy5mb2N1c0hhbmRsZXIsXG4gICAgICAgIGZvY3Vzb3V0OiB0aGlzLmZvY3VzSGFuZGxlcixcbiAgICAgICAgcmVzZXQ6IHRoaXMub25SZXNldFxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucGxhaW4pIHtcbiAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9IC8vIE92ZXJsYXkgTGFiZWxzXG5cblxuICAgIHZhciBsYWJlbCA9IGgoJ2xhYmVsJywge1xuICAgICAgc3RhdGljQ2xhc3M6ICdjdXN0b20tZmlsZS1sYWJlbCcsXG4gICAgICBjbGFzczogW3RoaXMuZHJhZ2dpbmcgPyAnZHJhZ2dpbmcnIDogbnVsbF0sXG4gICAgICBhdHRyczoge1xuICAgICAgICBmb3I6IHRoaXMuc2FmZUlkKCksXG4gICAgICAgICdkYXRhLWJyb3dzZSc6IHRoaXMuYnJvd3NlVGV4dCB8fCBudWxsXG4gICAgICB9XG4gICAgfSwgdGhpcy5zZWxlY3RMYWJlbCk7IC8vIFJldHVybiByZW5kZXJlZCBjdXN0b20gZmlsZSBpbnB1dFxuXG4gICAgcmV0dXJuIGgoJ2RpdicsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnY3VzdG9tLWZpbGUgYi1mb3JtLWZpbGUnLFxuICAgICAgY2xhc3M6IFt0aGlzLnN0YXRlQ2xhc3MsIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJiLWN1c3RvbS1jb250cm9sLVwiLmNvbmNhdCh0aGlzLnNpemUpLCBCb29sZWFuKHRoaXMuc2l6ZSkpXSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGlkOiB0aGlzLnNhZmVJZCgnX0JWX2ZpbGVfb3V0ZXJfJylcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAgICBkcmFnb3ZlcjogdGhpcy5vbkRyYWdvdmVyLFxuICAgICAgICBkcmFnbGVhdmU6IHRoaXMub25EcmFnbGVhdmUsXG4gICAgICAgIGRyb3A6IHRoaXMub25Ecm9wXG4gICAgICB9XG4gICAgfSwgW2lucHV0LCBsYWJlbF0pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Zvcm0tZmlsZS9mb3JtLWZpbGUuanNcbi8vIG1vZHVsZSBpZCA9IDE1M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///153\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BFormTextarea; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__directives_visible__ = __webpack_require__(119);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mixins_form__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mixins_form_size__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__mixins_form_state__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_form_text__ = __webpack_require__(149);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__mixins_form_selection__ = __webpack_require__(150);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__mixins_form_validity__ = __webpack_require__(151);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__mixins_listen_on_root__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__utils_inspect__ = __webpack_require__(1);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n\n\n\n\n // @vue/component\n\nvar BFormTextarea =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BFormTextarea',\n directives: {\n 'b-visible': __WEBPACK_IMPORTED_MODULE_1__directives_visible__[\"a\" /* VBVisible */]\n },\n mixins: [__WEBPACK_IMPORTED_MODULE_2__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_9__mixins_listen_on_root__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__mixins_form__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__mixins_form_size__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__mixins_form_state__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__mixins_form_text__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__mixins_form_selection__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_8__mixins_form_validity__[\"a\" /* default */]],\n props: {\n rows: {\n type: [Number, String],\n default: 2\n },\n maxRows: {\n type: [Number, String],\n default: null\n },\n wrap: {\n // 'soft', 'hard' or 'off'. Browser default is 'soft'\n type: String,\n default: 'soft'\n },\n noResize: {\n // Disable the resize handle of textarea\n type: Boolean,\n default: false\n },\n noAutoShrink: {\n // When in auto resize mode, disable shrinking to content height\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n heightInPx: null\n };\n },\n computed: {\n computedStyle: function computedStyle() {\n var styles = {\n // Setting `noResize` to true will disable the ability for the user to\n // manually resize the textarea. We also disable when in auto height mode\n resize: !this.computedRows || this.noResize ? 'none' : null\n };\n\n if (!this.computedRows) {\n // Conditionally set the computed CSS height when auto rows/height is enabled\n // We avoid setting the style to `null`, which can override user manual resize handle\n styles.height = this.heightInPx; // We always add a vertical scrollbar to the textarea when auto-height is\n // enabled so that the computed height calculation returns a stable value\n\n styles.overflowY = 'scroll';\n }\n\n return styles;\n },\n computedMinRows: function computedMinRows() {\n // Ensure rows is at least 2 and positive (2 is the native textarea value)\n // A value of 1 can cause issues in some browsers, and most browsers\n // only support 2 as the smallest value\n return Math.max(parseInt(this.rows, 10) || 2, 2);\n },\n computedMaxRows: function computedMaxRows() {\n return Math.max(this.computedMinRows, parseInt(this.maxRows, 10) || 0);\n },\n computedRows: function computedRows() {\n // This is used to set the attribute 'rows' on the textarea\n // If auto-height is enabled, then we return `null` as we use CSS to control height\n return this.computedMinRows === this.computedMaxRows ? this.computedMinRows : null;\n }\n },\n watch: {\n localValue: function localValue(newVal, oldVal) {\n this.setHeight();\n }\n },\n mounted: function mounted() {\n this.setHeight();\n },\n methods: {\n // Called by intersection observer directive\n visibleCallback: function visibleCallback(visible)\n /* istanbul ignore next */\n {\n if (visible) {\n // We use a `$nextTick()` here just to make sure any\n // transitions or portalling have completed\n this.$nextTick(this.setHeight);\n }\n },\n setHeight: function setHeight() {\n var _this = this;\n\n this.$nextTick(function () {\n Object(__WEBPACK_IMPORTED_MODULE_10__utils_dom__[\"w\" /* requestAF */])(function () {\n _this.heightInPx = _this.computeHeight();\n });\n });\n },\n computeHeight: function computeHeight()\n /* istanbul ignore next: can't test getComputedStyle in JSDOM */\n {\n if (this.$isServer || !Object(__WEBPACK_IMPORTED_MODULE_11__utils_inspect__[\"g\" /* isNull */])(this.computedRows)) {\n return null;\n }\n\n var el = this.$el; // Element must be visible (not hidden) and in document\n // Must be checked after above checks\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_10__utils_dom__[\"p\" /* isVisible */])(el)) {\n return null;\n } // Get current computed styles\n\n\n var computedStyle = Object(__WEBPACK_IMPORTED_MODULE_10__utils_dom__[\"j\" /* getCS */])(el); // Height of one line of text in px\n\n var lineHeight = parseFloat(computedStyle.lineHeight); // Calculate height of border and padding\n\n var border = (parseFloat(computedStyle.borderTopWidth) || 0) + (parseFloat(computedStyle.borderBottomWidth) || 0);\n var padding = (parseFloat(computedStyle.paddingTop) || 0) + (parseFloat(computedStyle.paddingBottom) || 0); // Calculate offset\n\n var offset = border + padding; // Minimum height for min rows (which must be 2 rows or greater for cross-browser support)\n\n var minHeight = lineHeight * this.computedMinRows + offset; // Get the current style height (with `px` units)\n\n var oldHeight = el.style.height || computedStyle.height; // Probe scrollHeight by temporarily changing the height to `auto`\n\n el.style.height = 'auto';\n var scrollHeight = el.scrollHeight; // Place the original old height back on the element, just in case `computedProp`\n // returns the same value as before\n\n el.style.height = oldHeight; // Calculate content height in 'rows' (scrollHeight includes padding but not border)\n\n var contentRows = Math.max((scrollHeight - padding) / lineHeight, 2); // Calculate number of rows to display (limited within min/max rows)\n\n var rows = Math.min(Math.max(contentRows, this.computedMinRows), this.computedMaxRows); // Calculate the required height of the textarea including border and padding (in pixels)\n\n var height = Math.max(Math.ceil(rows * lineHeight + offset), minHeight); // Computed height remains the larger of `oldHeight` and new `height`,\n // when height is in `sticky` mode (prop `no-auto-shrink` is true)\n\n if (this.noAutoShrink && (parseFloat(oldHeight) || 0) > height) {\n return oldHeight;\n } // Return the new computed CSS height in px units\n\n\n return \"\".concat(height, \"px\");\n }\n },\n render: function render(h) {\n // Using self instead of this helps reduce code size during minification\n var self = this;\n return h('textarea', {\n ref: 'input',\n class: self.computedClass,\n style: self.computedStyle,\n directives: [{\n name: 'model',\n value: self.localValue\n }, {\n name: 'b-visible',\n value: this.visibleCallback,\n // If textarea is within 640px of viewport, consider it visible\n modifiers: {\n '640': true\n }\n }],\n attrs: {\n id: self.safeId(),\n name: self.name,\n form: self.form || null,\n disabled: self.disabled,\n placeholder: self.placeholder,\n required: self.required,\n autocomplete: self.autocomplete || null,\n readonly: self.readonly || self.plaintext,\n rows: self.computedRows,\n wrap: self.wrap || null,\n 'aria-required': self.required ? 'true' : null,\n 'aria-invalid': self.computedAriaInvalid\n },\n domProps: {\n value: self.localValue\n },\n on: _objectSpread({}, self.$listeners, {\n input: self.onInput,\n change: self.onChange,\n blur: self.onBlur\n })\n });\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLXRleHRhcmVhL2Zvcm0tdGV4dGFyZWEuanM/MGM1ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLCtDQUErQywyQ0FBMkMsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8seUNBQXlDLGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBnQiwyQ0FBMkMsa0JBQWtCLGtDQUFrQyxxRUFBcUUsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEVBQUUsWUFBWTs7QUFFN0s7QUFDbUI7QUFDZjtBQUNJO0FBQ1M7QUFDRTtBQUNGO0FBQ1U7QUFDRjtBQUNDO0FBQ0U7QUFDakI7O0FBRXRDO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQSxpQkFBaUIsc0VBQVM7QUFDMUIsR0FBRztBQUNILFdBQVcsMkRBQU8sRUFBRSx1RUFBaUIsRUFBRSw2REFBUyxFQUFFLGtFQUFhLEVBQUUsbUVBQWMsRUFBRSxrRUFBYSxFQUFFLHVFQUFrQixFQUFFLHNFQUFpQjtBQUNySTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxRQUFRLHNFQUFTO0FBQ2pCO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLHVFQUFNO0FBQ25DO0FBQ0E7O0FBRUEsd0JBQXdCO0FBQ3hCOztBQUVBLFdBQVcsc0VBQVM7QUFDcEI7QUFDQSxPQUFPOzs7QUFHUCwwQkFBMEIsa0VBQUssS0FBSzs7QUFFcEMsNERBQTREOztBQUU1RDtBQUNBLGlIQUFpSDs7QUFFakgsb0NBQW9DOztBQUVwQyxpRUFBaUU7O0FBRWpFLDhEQUE4RDs7QUFFOUQ7QUFDQSx5Q0FBeUM7QUFDekM7O0FBRUEsa0NBQWtDOztBQUVsQywyRUFBMkU7O0FBRTNFLDZGQUE2Rjs7QUFFN0YsOEVBQThFO0FBQzlFOztBQUVBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNTMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBWQlZpc2libGUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3Zpc2libGUnO1xuaW1wb3J0IGlkTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2lkJztcbmltcG9ydCBmb3JtTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0nO1xuaW1wb3J0IGZvcm1TaXplTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tc2l6ZSc7XG5pbXBvcnQgZm9ybVN0YXRlTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tc3RhdGUnO1xuaW1wb3J0IGZvcm1UZXh0TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tdGV4dCc7XG5pbXBvcnQgZm9ybVNlbGVjdGlvbk1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXNlbGVjdGlvbic7XG5pbXBvcnQgZm9ybVZhbGlkaXR5TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tdmFsaWRpdHknO1xuaW1wb3J0IGxpc3Rlbk9uUm9vdE1peGluIGZyb20gJy4uLy4uL21peGlucy9saXN0ZW4tb24tcm9vdCc7XG5pbXBvcnQgeyBnZXRDUywgaXNWaXNpYmxlLCByZXF1ZXN0QUYgfSBmcm9tICcuLi8uLi91dGlscy9kb20nO1xuaW1wb3J0IHsgaXNOdWxsIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW5zcGVjdCc7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkZvcm1UZXh0YXJlYSA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JGb3JtVGV4dGFyZWEnLFxuICBkaXJlY3RpdmVzOiB7XG4gICAgJ2ItdmlzaWJsZSc6IFZCVmlzaWJsZVxuICB9LFxuICBtaXhpbnM6IFtpZE1peGluLCBsaXN0ZW5PblJvb3RNaXhpbiwgZm9ybU1peGluLCBmb3JtU2l6ZU1peGluLCBmb3JtU3RhdGVNaXhpbiwgZm9ybVRleHRNaXhpbiwgZm9ybVNlbGVjdGlvbk1peGluLCBmb3JtVmFsaWRpdHlNaXhpbl0sXG4gIHByb3BzOiB7XG4gICAgcm93czoge1xuICAgICAgdHlwZTogW051bWJlciwgU3RyaW5nXSxcbiAgICAgIGRlZmF1bHQ6IDJcbiAgICB9LFxuICAgIG1heFJvd3M6IHtcbiAgICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICB3cmFwOiB7XG4gICAgICAvLyAnc29mdCcsICdoYXJkJyBvciAnb2ZmJy4gQnJvd3NlciBkZWZhdWx0IGlzICdzb2Z0J1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ3NvZnQnXG4gICAgfSxcbiAgICBub1Jlc2l6ZToge1xuICAgICAgLy8gRGlzYWJsZSB0aGUgcmVzaXplIGhhbmRsZSBvZiB0ZXh0YXJlYVxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBub0F1dG9TaHJpbms6IHtcbiAgICAgIC8vIFdoZW4gaW4gYXV0byByZXNpemUgbW9kZSwgZGlzYWJsZSBzaHJpbmtpbmcgdG8gY29udGVudCBoZWlnaHRcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaGVpZ2h0SW5QeDogbnVsbFxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgY29tcHV0ZWRTdHlsZTogZnVuY3Rpb24gY29tcHV0ZWRTdHlsZSgpIHtcbiAgICAgIHZhciBzdHlsZXMgPSB7XG4gICAgICAgIC8vIFNldHRpbmcgYG5vUmVzaXplYCB0byB0cnVlIHdpbGwgZGlzYWJsZSB0aGUgYWJpbGl0eSBmb3IgdGhlIHVzZXIgdG9cbiAgICAgICAgLy8gbWFudWFsbHkgcmVzaXplIHRoZSB0ZXh0YXJlYS4gV2UgYWxzbyBkaXNhYmxlIHdoZW4gaW4gYXV0byBoZWlnaHQgbW9kZVxuICAgICAgICByZXNpemU6ICF0aGlzLmNvbXB1dGVkUm93cyB8fCB0aGlzLm5vUmVzaXplID8gJ25vbmUnIDogbnVsbFxuICAgICAgfTtcblxuICAgICAgaWYgKCF0aGlzLmNvbXB1dGVkUm93cykge1xuICAgICAgICAvLyBDb25kaXRpb25hbGx5IHNldCB0aGUgY29tcHV0ZWQgQ1NTIGhlaWdodCB3aGVuIGF1dG8gcm93cy9oZWlnaHQgaXMgZW5hYmxlZFxuICAgICAgICAvLyBXZSBhdm9pZCBzZXR0aW5nIHRoZSBzdHlsZSB0byBgbnVsbGAsIHdoaWNoIGNhbiBvdmVycmlkZSB1c2VyIG1hbnVhbCByZXNpemUgaGFuZGxlXG4gICAgICAgIHN0eWxlcy5oZWlnaHQgPSB0aGlzLmhlaWdodEluUHg7IC8vIFdlIGFsd2F5cyBhZGQgYSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdG8gdGhlIHRleHRhcmVhIHdoZW4gYXV0by1oZWlnaHQgaXNcbiAgICAgICAgLy8gZW5hYmxlZCBzbyB0aGF0IHRoZSBjb21wdXRlZCBoZWlnaHQgY2FsY3VsYXRpb24gcmV0dXJucyBhIHN0YWJsZSB2YWx1ZVxuXG4gICAgICAgIHN0eWxlcy5vdmVyZmxvd1kgPSAnc2Nyb2xsJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHN0eWxlcztcbiAgICB9LFxuICAgIGNvbXB1dGVkTWluUm93czogZnVuY3Rpb24gY29tcHV0ZWRNaW5Sb3dzKCkge1xuICAgICAgLy8gRW5zdXJlIHJvd3MgaXMgYXQgbGVhc3QgMiBhbmQgcG9zaXRpdmUgKDIgaXMgdGhlIG5hdGl2ZSB0ZXh0YXJlYSB2YWx1ZSlcbiAgICAgIC8vIEEgdmFsdWUgb2YgMSBjYW4gY2F1c2UgaXNzdWVzIGluIHNvbWUgYnJvd3NlcnMsIGFuZCBtb3N0IGJyb3dzZXJzXG4gICAgICAvLyBvbmx5IHN1cHBvcnQgMiBhcyB0aGUgc21hbGxlc3QgdmFsdWVcbiAgICAgIHJldHVybiBNYXRoLm1heChwYXJzZUludCh0aGlzLnJvd3MsIDEwKSB8fCAyLCAyKTtcbiAgICB9LFxuICAgIGNvbXB1dGVkTWF4Um93czogZnVuY3Rpb24gY29tcHV0ZWRNYXhSb3dzKCkge1xuICAgICAgcmV0dXJuIE1hdGgubWF4KHRoaXMuY29tcHV0ZWRNaW5Sb3dzLCBwYXJzZUludCh0aGlzLm1heFJvd3MsIDEwKSB8fCAwKTtcbiAgICB9LFxuICAgIGNvbXB1dGVkUm93czogZnVuY3Rpb24gY29tcHV0ZWRSb3dzKCkge1xuICAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIHNldCB0aGUgYXR0cmlidXRlICdyb3dzJyBvbiB0aGUgdGV4dGFyZWFcbiAgICAgIC8vIElmIGF1dG8taGVpZ2h0IGlzIGVuYWJsZWQsIHRoZW4gd2UgcmV0dXJuIGBudWxsYCBhcyB3ZSB1c2UgQ1NTIHRvIGNvbnRyb2wgaGVpZ2h0XG4gICAgICByZXR1cm4gdGhpcy5jb21wdXRlZE1pblJvd3MgPT09IHRoaXMuY29tcHV0ZWRNYXhSb3dzID8gdGhpcy5jb21wdXRlZE1pblJvd3MgOiBudWxsO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBsb2NhbFZhbHVlOiBmdW5jdGlvbiBsb2NhbFZhbHVlKG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICB0aGlzLnNldEhlaWdodCgpO1xuICAgIH1cbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB0aGlzLnNldEhlaWdodCgpO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgLy8gQ2FsbGVkIGJ5IGludGVyc2VjdGlvbiBvYnNlcnZlciBkaXJlY3RpdmVcbiAgICB2aXNpYmxlQ2FsbGJhY2s6IGZ1bmN0aW9uIHZpc2libGVDYWxsYmFjayh2aXNpYmxlKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAge1xuICAgICAgaWYgKHZpc2libGUpIHtcbiAgICAgICAgLy8gV2UgdXNlIGEgYCRuZXh0VGljaygpYCBoZXJlIGp1c3QgdG8gbWFrZSBzdXJlIGFueVxuICAgICAgICAvLyB0cmFuc2l0aW9ucyBvciBwb3J0YWxsaW5nIGhhdmUgY29tcGxldGVkXG4gICAgICAgIHRoaXMuJG5leHRUaWNrKHRoaXMuc2V0SGVpZ2h0KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNldEhlaWdodDogZnVuY3Rpb24gc2V0SGVpZ2h0KCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICByZXF1ZXN0QUYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzLmhlaWdodEluUHggPSBfdGhpcy5jb21wdXRlSGVpZ2h0KCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBjb21wdXRlSGVpZ2h0OiBmdW5jdGlvbiBjb21wdXRlSGVpZ2h0KClcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogY2FuJ3QgdGVzdCBnZXRDb21wdXRlZFN0eWxlIGluIEpTRE9NICovXG4gICAge1xuICAgICAgaWYgKHRoaXMuJGlzU2VydmVyIHx8ICFpc051bGwodGhpcy5jb21wdXRlZFJvd3MpKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgZWwgPSB0aGlzLiRlbDsgLy8gRWxlbWVudCBtdXN0IGJlIHZpc2libGUgKG5vdCBoaWRkZW4pIGFuZCBpbiBkb2N1bWVudFxuICAgICAgLy8gTXVzdCBiZSBjaGVja2VkIGFmdGVyIGFib3ZlIGNoZWNrc1xuXG4gICAgICBpZiAoIWlzVmlzaWJsZShlbCkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IC8vIEdldCBjdXJyZW50IGNvbXB1dGVkIHN0eWxlc1xuXG5cbiAgICAgIHZhciBjb21wdXRlZFN0eWxlID0gZ2V0Q1MoZWwpOyAvLyBIZWlnaHQgb2Ygb25lIGxpbmUgb2YgdGV4dCBpbiBweFxuXG4gICAgICB2YXIgbGluZUhlaWdodCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5saW5lSGVpZ2h0KTsgLy8gQ2FsY3VsYXRlIGhlaWdodCBvZiBib3JkZXIgYW5kIHBhZGRpbmdcblxuICAgICAgdmFyIGJvcmRlciA9IChwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUuYm9yZGVyVG9wV2lkdGgpIHx8IDApICsgKHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5ib3JkZXJCb3R0b21XaWR0aCkgfHwgMCk7XG4gICAgICB2YXIgcGFkZGluZyA9IChwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUucGFkZGluZ1RvcCkgfHwgMCkgKyAocGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLnBhZGRpbmdCb3R0b20pIHx8IDApOyAvLyBDYWxjdWxhdGUgb2Zmc2V0XG5cbiAgICAgIHZhciBvZmZzZXQgPSBib3JkZXIgKyBwYWRkaW5nOyAvLyBNaW5pbXVtIGhlaWdodCBmb3IgbWluIHJvd3MgKHdoaWNoIG11c3QgYmUgMiByb3dzIG9yIGdyZWF0ZXIgZm9yIGNyb3NzLWJyb3dzZXIgc3VwcG9ydClcblxuICAgICAgdmFyIG1pbkhlaWdodCA9IGxpbmVIZWlnaHQgKiB0aGlzLmNvbXB1dGVkTWluUm93cyArIG9mZnNldDsgLy8gR2V0IHRoZSBjdXJyZW50IHN0eWxlIGhlaWdodCAod2l0aCBgcHhgIHVuaXRzKVxuXG4gICAgICB2YXIgb2xkSGVpZ2h0ID0gZWwuc3R5bGUuaGVpZ2h0IHx8IGNvbXB1dGVkU3R5bGUuaGVpZ2h0OyAvLyBQcm9iZSBzY3JvbGxIZWlnaHQgYnkgdGVtcG9yYXJpbHkgY2hhbmdpbmcgdGhlIGhlaWdodCB0byBgYXV0b2BcblxuICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nO1xuICAgICAgdmFyIHNjcm9sbEhlaWdodCA9IGVsLnNjcm9sbEhlaWdodDsgLy8gUGxhY2UgdGhlIG9yaWdpbmFsIG9sZCBoZWlnaHQgYmFjayBvbiB0aGUgZWxlbWVudCwganVzdCBpbiBjYXNlIGBjb21wdXRlZFByb3BgXG4gICAgICAvLyByZXR1cm5zIHRoZSBzYW1lIHZhbHVlIGFzIGJlZm9yZVxuXG4gICAgICBlbC5zdHlsZS5oZWlnaHQgPSBvbGRIZWlnaHQ7IC8vIENhbGN1bGF0ZSBjb250ZW50IGhlaWdodCBpbiAncm93cycgKHNjcm9sbEhlaWdodCBpbmNsdWRlcyBwYWRkaW5nIGJ1dCBub3QgYm9yZGVyKVxuXG4gICAgICB2YXIgY29udGVudFJvd3MgPSBNYXRoLm1heCgoc2Nyb2xsSGVpZ2h0IC0gcGFkZGluZykgLyBsaW5lSGVpZ2h0LCAyKTsgLy8gQ2FsY3VsYXRlIG51bWJlciBvZiByb3dzIHRvIGRpc3BsYXkgKGxpbWl0ZWQgd2l0aGluIG1pbi9tYXggcm93cylcblxuICAgICAgdmFyIHJvd3MgPSBNYXRoLm1pbihNYXRoLm1heChjb250ZW50Um93cywgdGhpcy5jb21wdXRlZE1pblJvd3MpLCB0aGlzLmNvbXB1dGVkTWF4Um93cyk7IC8vIENhbGN1bGF0ZSB0aGUgcmVxdWlyZWQgaGVpZ2h0IG9mIHRoZSB0ZXh0YXJlYSBpbmNsdWRpbmcgYm9yZGVyIGFuZCBwYWRkaW5nIChpbiBwaXhlbHMpXG5cbiAgICAgIHZhciBoZWlnaHQgPSBNYXRoLm1heChNYXRoLmNlaWwocm93cyAqIGxpbmVIZWlnaHQgKyBvZmZzZXQpLCBtaW5IZWlnaHQpOyAvLyBDb21wdXRlZCBoZWlnaHQgcmVtYWlucyB0aGUgbGFyZ2VyIG9mIGBvbGRIZWlnaHRgIGFuZCBuZXcgYGhlaWdodGAsXG4gICAgICAvLyB3aGVuIGhlaWdodCBpcyBpbiBgc3RpY2t5YCBtb2RlIChwcm9wIGBuby1hdXRvLXNocmlua2AgaXMgdHJ1ZSlcblxuICAgICAgaWYgKHRoaXMubm9BdXRvU2hyaW5rICYmIChwYXJzZUZsb2F0KG9sZEhlaWdodCkgfHwgMCkgPiBoZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIG9sZEhlaWdodDtcbiAgICAgIH0gLy8gUmV0dXJuIHRoZSBuZXcgY29tcHV0ZWQgQ1NTIGhlaWdodCBpbiBweCB1bml0c1xuXG5cbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdChoZWlnaHQsIFwicHhcIik7XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgLy8gVXNpbmcgc2VsZiBpbnN0ZWFkIG9mIHRoaXMgaGVscHMgcmVkdWNlIGNvZGUgc2l6ZSBkdXJpbmcgbWluaWZpY2F0aW9uXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiBoKCd0ZXh0YXJlYScsIHtcbiAgICAgIHJlZjogJ2lucHV0JyxcbiAgICAgIGNsYXNzOiBzZWxmLmNvbXB1dGVkQ2xhc3MsXG4gICAgICBzdHlsZTogc2VsZi5jb21wdXRlZFN0eWxlLFxuICAgICAgZGlyZWN0aXZlczogW3tcbiAgICAgICAgbmFtZTogJ21vZGVsJyxcbiAgICAgICAgdmFsdWU6IHNlbGYubG9jYWxWYWx1ZVxuICAgICAgfSwge1xuICAgICAgICBuYW1lOiAnYi12aXNpYmxlJyxcbiAgICAgICAgdmFsdWU6IHRoaXMudmlzaWJsZUNhbGxiYWNrLFxuICAgICAgICAvLyBJZiB0ZXh0YXJlYSBpcyB3aXRoaW4gNjQwcHggb2Ygdmlld3BvcnQsIGNvbnNpZGVyIGl0IHZpc2libGVcbiAgICAgICAgbW9kaWZpZXJzOiB7XG4gICAgICAgICAgJzY0MCc6IHRydWVcbiAgICAgICAgfVxuICAgICAgfV0sXG4gICAgICBhdHRyczoge1xuICAgICAgICBpZDogc2VsZi5zYWZlSWQoKSxcbiAgICAgICAgbmFtZTogc2VsZi5uYW1lLFxuICAgICAgICBmb3JtOiBzZWxmLmZvcm0gfHwgbnVsbCxcbiAgICAgICAgZGlzYWJsZWQ6IHNlbGYuZGlzYWJsZWQsXG4gICAgICAgIHBsYWNlaG9sZGVyOiBzZWxmLnBsYWNlaG9sZGVyLFxuICAgICAgICByZXF1aXJlZDogc2VsZi5yZXF1aXJlZCxcbiAgICAgICAgYXV0b2NvbXBsZXRlOiBzZWxmLmF1dG9jb21wbGV0ZSB8fCBudWxsLFxuICAgICAgICByZWFkb25seTogc2VsZi5yZWFkb25seSB8fCBzZWxmLnBsYWludGV4dCxcbiAgICAgICAgcm93czogc2VsZi5jb21wdXRlZFJvd3MsXG4gICAgICAgIHdyYXA6IHNlbGYud3JhcCB8fCBudWxsLFxuICAgICAgICAnYXJpYS1yZXF1aXJlZCc6IHNlbGYucmVxdWlyZWQgPyAndHJ1ZScgOiBudWxsLFxuICAgICAgICAnYXJpYS1pbnZhbGlkJzogc2VsZi5jb21wdXRlZEFyaWFJbnZhbGlkXG4gICAgICB9LFxuICAgICAgZG9tUHJvcHM6IHtcbiAgICAgICAgdmFsdWU6IHNlbGYubG9jYWxWYWx1ZVxuICAgICAgfSxcbiAgICAgIG9uOiBfb2JqZWN0U3ByZWFkKHt9LCBzZWxmLiRsaXN0ZW5lcnMsIHtcbiAgICAgICAgaW5wdXQ6IHNlbGYub25JbnB1dCxcbiAgICAgICAgY2hhbmdlOiBzZWxmLm9uQ2hhbmdlLFxuICAgICAgICBibHVyOiBzZWxmLm9uQmx1clxuICAgICAgfSlcbiAgICB9KTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLXRleHRhcmVhL2Zvcm0tdGV4dGFyZWEuanNcbi8vIG1vZHVsZSBpZCA9IDE1M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///153\n"); /***/ }), /* 154 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("// @vue/component\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n props: {\n plain: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n custom: function custom() {\n return !this.plain;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vbWl4aW5zL2Zvcm0tY3VzdG9tLmpzPzMwYTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMTU0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHZ1ZS9jb21wb25lbnRcbmV4cG9ydCBkZWZhdWx0IHtcbiAgcHJvcHM6IHtcbiAgICBwbGFpbjoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGN1c3RvbTogZnVuY3Rpb24gY3VzdG9tKCkge1xuICAgICAgcmV0dXJuICF0aGlzLnBsYWluO1xuICAgIH1cbiAgfVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9taXhpbnMvZm9ybS1jdXN0b20uanNcbi8vIG1vZHVsZSBpZCA9IDE1NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///154\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return FormFilePlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__form_file__ = __webpack_require__(155);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BFormFile */\n\n\nvar FormFilePlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BFormFile: __WEBPACK_IMPORTED_MODULE_0__form_file__[\"a\" /* BFormFile */],\n BFile: __WEBPACK_IMPORTED_MODULE_0__form_file__[\"a\" /* BFormFile */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWZpbGUvaW5kZXguanM/YjBkZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF3QztBQUNZO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsZUFBZSw2REFBUztBQUN4QixXQUFXLDZEQUFTO0FBQ3BCO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNTQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCRm9ybUZpbGUgfSBmcm9tICcuL2Zvcm0tZmlsZSc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgRm9ybUZpbGVQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCRm9ybUZpbGU6IEJGb3JtRmlsZSxcbiAgICBCRmlsZTogQkZvcm1GaWxlXG4gIH1cbn0pO1xuZXhwb3J0IHsgRm9ybUZpbGVQbHVnaW4sIEJGb3JtRmlsZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvZm9ybS1maWxlL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///154\n"); /***/ }), /* 155 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return FormSelectPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__form_select__ = __webpack_require__(156);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BFormSelect */\n\n\nvar FormSelectPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BFormSelect: __WEBPACK_IMPORTED_MODULE_0__form_select__[\"a\" /* BFormSelect */],\n BSelect: __WEBPACK_IMPORTED_MODULE_0__form_select__[\"a\" /* BFormSelect */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLXNlbGVjdC9pbmRleC5qcz9jNDM5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQ1E7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxpQkFBaUIsaUVBQVc7QUFDNUIsYUFBYSxpRUFBVztBQUN4QjtBQUNBLENBQUMiLCJmaWxlIjoiMTU1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkZvcm1TZWxlY3QgfSBmcm9tICcuL2Zvcm0tc2VsZWN0JztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBGb3JtU2VsZWN0UGx1Z2luID1cbi8qI19fUFVSRV9fKi9cbnBsdWdpbkZhY3Rvcnkoe1xuICBjb21wb25lbnRzOiB7XG4gICAgQkZvcm1TZWxlY3Q6IEJGb3JtU2VsZWN0LFxuICAgIEJTZWxlY3Q6IEJGb3JtU2VsZWN0XG4gIH1cbn0pO1xuZXhwb3J0IHsgRm9ybVNlbGVjdFBsdWdpbiwgQkZvcm1TZWxlY3QgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Zvcm0tc2VsZWN0L2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///155\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BFormFile; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_safe_types__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_warn__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_form_custom__ = __webpack_require__(156);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__mixins_form__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__mixins_form_state__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__mixins_normalize_slot__ = __webpack_require__(5);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n\n\n\n\nvar NAME = 'BFormFile'; // @vue/component\n\nvar BFormFile =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n mixins: [__WEBPACK_IMPORTED_MODULE_9__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__mixins_form__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_8__mixins_form_state__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__mixins_form_custom__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_10__mixins_normalize_slot__[\"a\" /* default */]],\n inheritAttrs: false,\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n size: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])('BFormControl', 'size');\n }\n },\n value: {\n type: [__WEBPACK_IMPORTED_MODULE_4__utils_safe_types__[\"a\" /* File */], Array],\n default: null,\n validator: function validator(val) {\n /* istanbul ignore next */\n if (val === '') {\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_warn__[\"b\" /* warn */])(\"\".concat(NAME, \" - setting value/v-model to an empty string for reset is deprecated. Set to 'null' instead\"));\n return true;\n }\n\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"o\" /* isUndefinedOrNull */])(val) || Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"e\" /* isFile */])(val) || Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"d\" /* isArray */])(val) && (val.length === 0 || val.every(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"e\" /* isFile */]));\n }\n },\n accept: {\n type: String,\n default: ''\n },\n // Instruct input to capture from camera\n capture: {\n type: Boolean,\n default: false\n },\n placeholder: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'placeholder');\n }\n },\n browseText: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'browseText');\n }\n },\n dropPlaceholder: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'dropPlaceholder');\n }\n },\n multiple: {\n type: Boolean,\n default: false\n },\n directory: {\n type: Boolean,\n default: false\n },\n noTraverse: {\n type: Boolean,\n default: false\n },\n noDrop: {\n type: Boolean,\n default: false\n },\n fileNameFormatter: {\n type: Function,\n default: null\n }\n },\n data: function data() {\n return {\n selectedFile: null,\n dragging: false,\n hasFocus: false\n };\n },\n computed: {\n selectLabel: function selectLabel() {\n // Draging active\n if (this.dragging && this.dropPlaceholder) {\n return this.dropPlaceholder;\n } // No file chosen\n\n\n if (!this.selectedFile || this.selectedFile.length === 0) {\n return this.placeholder;\n } // Convert selectedFile to an array (if not already one)\n\n\n var files = Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"b\" /* concat */])(this.selectedFile).filter(Boolean);\n\n if (this.hasNormalizedSlot('file-name')) {\n // There is a slot for formatting the files/names\n return [this.normalizeSlot('file-name', {\n files: files,\n names: files.map(function (f) {\n return f.name;\n })\n })];\n } else {\n // Use the user supplied formatter, or the built in one.\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"f\" /* isFunction */])(this.fileNameFormatter) ? String(this.fileNameFormatter(files)) : files.map(function (file) {\n return file.name;\n }).join(', ');\n }\n }\n },\n watch: {\n selectedFile: function selectedFile(newVal, oldVal) {\n // The following test is needed when the file input is \"reset\" or the\n // exact same file(s) are selected to prevent an infinite loop.\n // When in `multiple` mode we need to check for two empty arrays or\n // two arrays with identical files\n if (newVal === oldVal || Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"d\" /* isArray */])(newVal) && Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"d\" /* isArray */])(oldVal) && newVal.length === oldVal.length && newVal.every(function (v, i) {\n return v === oldVal[i];\n })) {\n return;\n }\n\n if (!newVal && this.multiple) {\n this.$emit('input', []);\n } else {\n this.$emit('input', newVal);\n }\n },\n value: function value(newVal) {\n if (!newVal || Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"d\" /* isArray */])(newVal) && newVal.length === 0) {\n this.reset();\n }\n }\n },\n methods: {\n focusHandler: function focusHandler(evt) {\n // Bootstrap v4 doesn't have focus styling for custom file input\n // Firefox has a '[type=file]:focus ~ sibling' selector issue,\n // so we add a 'focus' class to get around these bugs\n if (this.plain || evt.type === 'focusout') {\n this.hasFocus = false;\n } else {\n // Add focus styling for custom file input\n this.hasFocus = true;\n }\n },\n reset: function reset() {\n try {\n // Wrapped in try in case IE 11 craps out\n this.$refs.input.value = '';\n } catch (e) {} // IE 11 doesn't support setting `input.value` to '' or null\n // So we use this little extra hack to reset the value, just in case.\n // This also appears to work on modern browsers as well.\n\n\n this.$refs.input.type = '';\n this.$refs.input.type = 'file';\n this.selectedFile = this.multiple ? [] : null;\n },\n onFileChange: function onFileChange(evt) {\n var _this = this;\n\n // Always emit original event\n this.$emit('change', evt); // Check if special `items` prop is available on event (drop mode)\n // Can be disabled by setting no-traverse\n\n var items = evt.dataTransfer && evt.dataTransfer.items;\n /* istanbul ignore next: not supported in JSDOM */\n\n if (items && !this.noTraverse) {\n var queue = [];\n\n for (var i = 0; i < items.length; i++) {\n var item = items[i].webkitGetAsEntry();\n\n if (item) {\n queue.push(this.traverseFileTree(item));\n }\n }\n\n Promise.all(queue).then(function (filesArr) {\n _this.setFiles(Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"c\" /* from */])(filesArr));\n });\n return;\n } // Normal handling\n\n\n this.setFiles(evt.target.files || evt.dataTransfer.files);\n },\n setFiles: function setFiles() {\n var files = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (!files) {\n /* istanbul ignore next: this will probably not happen */\n this.selectedFile = null;\n } else if (this.multiple) {\n // Convert files to array\n var filesArray = [];\n\n for (var i = 0; i < files.length; i++) {\n filesArray.push(files[i]);\n } // Return file(s) as array\n\n\n this.selectedFile = filesArray;\n } else {\n // Return single file object\n this.selectedFile = files[0] || null;\n }\n },\n onReset: function onReset() {\n // Triggered when the parent form (if any) is reset\n this.selectedFile = this.multiple ? [] : null;\n },\n onDragover: function onDragover(evt)\n /* istanbul ignore next: difficult to test in JSDOM */\n {\n evt.preventDefault();\n evt.stopPropagation();\n\n if (this.noDrop || !this.custom) {\n return;\n }\n\n this.dragging = true;\n evt.dataTransfer.dropEffect = 'copy';\n },\n onDragleave: function onDragleave(evt)\n /* istanbul ignore next: difficult to test in JSDOM */\n {\n evt.preventDefault();\n evt.stopPropagation();\n this.dragging = false;\n },\n onDrop: function onDrop(evt)\n /* istanbul ignore next: difficult to test in JSDOM */\n {\n evt.preventDefault();\n evt.stopPropagation();\n\n if (this.noDrop) {\n return;\n }\n\n this.dragging = false;\n\n if (evt.dataTransfer.files && evt.dataTransfer.files.length > 0) {\n this.onFileChange(evt);\n }\n },\n traverseFileTree: function traverseFileTree(item, path)\n /* istanbul ignore next: not supported in JSDOM */\n {\n var _this2 = this;\n\n // Based on http://stackoverflow.com/questions/3590058\n return new Promise(function (resolve) {\n path = path || '';\n\n if (item.isFile) {\n // Get file\n item.file(function (file) {\n file.$path = path; // Inject $path to file obj\n\n resolve(file);\n });\n } else if (item.isDirectory) {\n // Get folder contents\n item.createReader().readEntries(function (entries) {\n var queue = [];\n\n for (var i = 0; i < entries.length; i++) {\n queue.push(_this2.traverseFileTree(entries[i], path + item.name + '/'));\n }\n\n Promise.all(queue).then(function (filesArr) {\n resolve(Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"c\" /* from */])(filesArr));\n });\n });\n }\n });\n }\n },\n render: function render(h) {\n // Form Input\n var input = h('input', {\n ref: 'input',\n class: [{\n 'form-control-file': this.plain,\n 'custom-file-input': this.custom,\n focus: this.custom && this.hasFocus\n }, this.stateClass],\n attrs: _objectSpread({}, this.$attrs, {\n type: 'file',\n id: this.safeId(),\n name: this.name,\n disabled: this.disabled,\n required: this.required,\n form: this.form || null,\n capture: this.capture || null,\n accept: this.accept || null,\n multiple: this.multiple,\n webkitdirectory: this.directory,\n 'aria-required': this.required ? 'true' : null\n }),\n on: {\n change: this.onFileChange,\n focusin: this.focusHandler,\n focusout: this.focusHandler,\n reset: this.onReset\n }\n });\n\n if (this.plain) {\n return input;\n } // Overlay Labels\n\n\n var label = h('label', {\n staticClass: 'custom-file-label',\n class: [this.dragging ? 'dragging' : null],\n attrs: {\n for: this.safeId(),\n 'data-browse': this.browseText || null\n }\n }, this.selectLabel); // Return rendered custom file input\n\n return h('div', {\n staticClass: 'custom-file b-form-file',\n class: [this.stateClass, _defineProperty({}, \"b-custom-control-\".concat(this.size), Boolean(this.size))],\n attrs: {\n id: this.safeId('_BV_file_outer_')\n },\n on: {\n dragover: this.onDragover,\n dragleave: this.onDragleave,\n drop: this.onDrop\n }\n }, [input, label]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLWZpbGUvZm9ybS1maWxlLmpzP2FmNzQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNxQztBQUNmO0FBQ29CO0FBQzlCO0FBQ047QUFDZTtBQUNiO0FBQ1c7QUFDZjtBQUN1QjtBQUM3RCx1QkFBdUI7O0FBRWhCO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0EsV0FBVywyREFBTyxFQUFFLDZEQUFTLEVBQUUsbUVBQWMsRUFBRSxvRUFBZSxFQUFFLHdFQUFrQjtBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUZBQWtCO0FBQ2pDO0FBQ0EsS0FBSztBQUNMO0FBQ0EsYUFBYSwrREFBSTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsaUVBQUk7QUFDZDtBQUNBOztBQUVBLGVBQWUsaUZBQWlCLFNBQVMsc0VBQU0sU0FBUyxxRUFBTyx3Q0FBd0MsOERBQU07QUFDN0c7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUZBQWtCO0FBQ2pDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUZBQWtCO0FBQ2pDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUZBQWtCO0FBQ2pDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUCxrQkFBa0Isb0VBQU07O0FBRXhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsZUFBZSwwRUFBVTtBQUN6QjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixxRUFBTyxZQUFZLHFFQUFPO0FBQ3pEO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EscUJBQXFCLHFFQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLGFBQWE7QUFDcEI7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxnQ0FBZ0M7QUFDaEM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHVCQUF1QixrQkFBa0I7QUFDekM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5QkFBeUIsa0VBQVM7QUFDbEMsU0FBUztBQUNUO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQSx1QkFBdUIsa0JBQWtCO0FBQ3pDO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qjs7QUFFOUI7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkIsb0JBQW9CO0FBQy9DO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0Isa0VBQVM7QUFDL0IsYUFBYTtBQUNiLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxvQkFBb0I7O0FBRXpCO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQ7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNTUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBmcm9tIGFzIGFycmF5RnJvbSwgaXNBcnJheSwgY29uY2F0IH0gZnJvbSAnLi4vLi4vdXRpbHMvYXJyYXknO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29uZmlnJztcbmltcG9ydCB7IGlzRmlsZSwgaXNGdW5jdGlvbiwgaXNVbmRlZmluZWRPck51bGwgfSBmcm9tICcuLi8uLi91dGlscy9pbnNwZWN0JztcbmltcG9ydCB7IEZpbGUgfSBmcm9tICcuLi8uLi91dGlscy9zYWZlLXR5cGVzJztcbmltcG9ydCB7IHdhcm4gfSBmcm9tICcuLi8uLi91dGlscy93YXJuJztcbmltcG9ydCBmb3JtQ3VzdG9tTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tY3VzdG9tJztcbmltcG9ydCBmb3JtTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0nO1xuaW1wb3J0IGZvcm1TdGF0ZU1peGluIGZyb20gJy4uLy4uL21peGlucy9mb3JtLXN0YXRlJztcbmltcG9ydCBpZE1peGluIGZyb20gJy4uLy4uL21peGlucy9pZCc7XG5pbXBvcnQgbm9ybWFsaXplU2xvdE1peGluIGZyb20gJy4uLy4uL21peGlucy9ub3JtYWxpemUtc2xvdCc7XG52YXIgTkFNRSA9ICdCRm9ybUZpbGUnOyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJGb3JtRmlsZSA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogTkFNRSxcbiAgbWl4aW5zOiBbaWRNaXhpbiwgZm9ybU1peGluLCBmb3JtU3RhdGVNaXhpbiwgZm9ybUN1c3RvbU1peGluLCBub3JtYWxpemVTbG90TWl4aW5dLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBtb2RlbDoge1xuICAgIHByb3A6ICd2YWx1ZScsXG4gICAgZXZlbnQ6ICdpbnB1dCdcbiAgfSxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZygnQkZvcm1Db250cm9sJywgJ3NpemUnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHZhbHVlOiB7XG4gICAgICB0eXBlOiBbRmlsZSwgQXJyYXldLFxuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbCkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBpZiAodmFsID09PSAnJykge1xuICAgICAgICAgIHdhcm4oXCJcIi5jb25jYXQoTkFNRSwgXCIgLSBzZXR0aW5nIHZhbHVlL3YtbW9kZWwgdG8gYW4gZW1wdHkgc3RyaW5nIGZvciByZXNldCBpcyBkZXByZWNhdGVkLiBTZXQgdG8gJ251bGwnIGluc3RlYWRcIikpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzVW5kZWZpbmVkT3JOdWxsKHZhbCkgfHwgaXNGaWxlKHZhbCkgfHwgaXNBcnJheSh2YWwpICYmICh2YWwubGVuZ3RoID09PSAwIHx8IHZhbC5ldmVyeShpc0ZpbGUpKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFjY2VwdDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIC8vIEluc3RydWN0IGlucHV0IHRvIGNhcHR1cmUgZnJvbSBjYW1lcmFcbiAgICBjYXB0dXJlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHBsYWNlaG9sZGVyOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAncGxhY2Vob2xkZXInKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGJyb3dzZVRleHQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdicm93c2VUZXh0Jyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBkcm9wUGxhY2Vob2xkZXI6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdkcm9wUGxhY2Vob2xkZXInKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG11bHRpcGxlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGRpcmVjdG9yeToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBub1RyYXZlcnNlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIG5vRHJvcDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBmaWxlTmFtZUZvcm1hdHRlcjoge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfVxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzZWxlY3RlZEZpbGU6IG51bGwsXG4gICAgICBkcmFnZ2luZzogZmFsc2UsXG4gICAgICBoYXNGb2N1czogZmFsc2VcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHNlbGVjdExhYmVsOiBmdW5jdGlvbiBzZWxlY3RMYWJlbCgpIHtcbiAgICAgIC8vIERyYWdpbmcgYWN0aXZlXG4gICAgICBpZiAodGhpcy5kcmFnZ2luZyAmJiB0aGlzLmRyb3BQbGFjZWhvbGRlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5kcm9wUGxhY2Vob2xkZXI7XG4gICAgICB9IC8vIE5vIGZpbGUgY2hvc2VuXG5cblxuICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkRmlsZSB8fCB0aGlzLnNlbGVjdGVkRmlsZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXI7XG4gICAgICB9IC8vIENvbnZlcnQgc2VsZWN0ZWRGaWxlIHRvIGFuIGFycmF5IChpZiBub3QgYWxyZWFkeSBvbmUpXG5cblxuICAgICAgdmFyIGZpbGVzID0gY29uY2F0KHRoaXMuc2VsZWN0ZWRGaWxlKS5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICAgIGlmICh0aGlzLmhhc05vcm1hbGl6ZWRTbG90KCdmaWxlLW5hbWUnKSkge1xuICAgICAgICAvLyBUaGVyZSBpcyBhIHNsb3QgZm9yIGZvcm1hdHRpbmcgdGhlIGZpbGVzL25hbWVzXG4gICAgICAgIHJldHVybiBbdGhpcy5ub3JtYWxpemVTbG90KCdmaWxlLW5hbWUnLCB7XG4gICAgICAgICAgZmlsZXM6IGZpbGVzLFxuICAgICAgICAgIG5hbWVzOiBmaWxlcy5tYXAoZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgICAgIHJldHVybiBmLm5hbWU7XG4gICAgICAgICAgfSlcbiAgICAgICAgfSldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVXNlIHRoZSB1c2VyIHN1cHBsaWVkIGZvcm1hdHRlciwgb3IgdGhlIGJ1aWx0IGluIG9uZS5cbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24odGhpcy5maWxlTmFtZUZvcm1hdHRlcikgPyBTdHJpbmcodGhpcy5maWxlTmFtZUZvcm1hdHRlcihmaWxlcykpIDogZmlsZXMubWFwKGZ1bmN0aW9uIChmaWxlKSB7XG4gICAgICAgICAgcmV0dXJuIGZpbGUubmFtZTtcbiAgICAgICAgfSkuam9pbignLCAnKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgc2VsZWN0ZWRGaWxlOiBmdW5jdGlvbiBzZWxlY3RlZEZpbGUobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIC8vIFRoZSBmb2xsb3dpbmcgdGVzdCBpcyBuZWVkZWQgd2hlbiB0aGUgZmlsZSBpbnB1dCBpcyBcInJlc2V0XCIgb3IgdGhlXG4gICAgICAvLyBleGFjdCBzYW1lIGZpbGUocykgYXJlIHNlbGVjdGVkIHRvIHByZXZlbnQgYW4gaW5maW5pdGUgbG9vcC5cbiAgICAgIC8vIFdoZW4gaW4gYG11bHRpcGxlYCBtb2RlIHdlIG5lZWQgdG8gY2hlY2sgZm9yIHR3byBlbXB0eSBhcnJheXMgb3JcbiAgICAgIC8vIHR3byBhcnJheXMgd2l0aCBpZGVudGljYWwgZmlsZXNcbiAgICAgIGlmIChuZXdWYWwgPT09IG9sZFZhbCB8fCBpc0FycmF5KG5ld1ZhbCkgJiYgaXNBcnJheShvbGRWYWwpICYmIG5ld1ZhbC5sZW5ndGggPT09IG9sZFZhbC5sZW5ndGggJiYgbmV3VmFsLmV2ZXJ5KGZ1bmN0aW9uICh2LCBpKSB7XG4gICAgICAgIHJldHVybiB2ID09PSBvbGRWYWxbaV07XG4gICAgICB9KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghbmV3VmFsICYmIHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBbXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIG5ld1ZhbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUobmV3VmFsKSB7XG4gICAgICBpZiAoIW5ld1ZhbCB8fCBpc0FycmF5KG5ld1ZhbCkgJiYgbmV3VmFsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgZm9jdXNIYW5kbGVyOiBmdW5jdGlvbiBmb2N1c0hhbmRsZXIoZXZ0KSB7XG4gICAgICAvLyBCb290c3RyYXAgdjQgZG9lc24ndCBoYXZlIGZvY3VzIHN0eWxpbmcgZm9yIGN1c3RvbSBmaWxlIGlucHV0XG4gICAgICAvLyBGaXJlZm94IGhhcyBhICdbdHlwZT1maWxlXTpmb2N1cyB+IHNpYmxpbmcnIHNlbGVjdG9yIGlzc3VlLFxuICAgICAgLy8gc28gd2UgYWRkIGEgJ2ZvY3VzJyBjbGFzcyB0byBnZXQgYXJvdW5kIHRoZXNlIGJ1Z3NcbiAgICAgIGlmICh0aGlzLnBsYWluIHx8IGV2dC50eXBlID09PSAnZm9jdXNvdXQnKSB7XG4gICAgICAgIHRoaXMuaGFzRm9jdXMgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFkZCBmb2N1cyBzdHlsaW5nIGZvciBjdXN0b20gZmlsZSBpbnB1dFxuICAgICAgICB0aGlzLmhhc0ZvY3VzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlc2V0OiBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFdyYXBwZWQgaW4gdHJ5IGluIGNhc2UgSUUgMTEgY3JhcHMgb3V0XG4gICAgICAgIHRoaXMuJHJlZnMuaW5wdXQudmFsdWUgPSAnJztcbiAgICAgIH0gY2F0Y2ggKGUpIHt9IC8vIElFIDExIGRvZXNuJ3Qgc3VwcG9ydCBzZXR0aW5nIGBpbnB1dC52YWx1ZWAgdG8gJycgb3IgbnVsbFxuICAgICAgLy8gU28gd2UgdXNlIHRoaXMgbGl0dGxlIGV4dHJhIGhhY2sgdG8gcmVzZXQgdGhlIHZhbHVlLCBqdXN0IGluIGNhc2UuXG4gICAgICAvLyBUaGlzIGFsc28gYXBwZWFycyB0byB3b3JrIG9uIG1vZGVybiBicm93c2VycyBhcyB3ZWxsLlxuXG5cbiAgICAgIHRoaXMuJHJlZnMuaW5wdXQudHlwZSA9ICcnO1xuICAgICAgdGhpcy4kcmVmcy5pbnB1dC50eXBlID0gJ2ZpbGUnO1xuICAgICAgdGhpcy5zZWxlY3RlZEZpbGUgPSB0aGlzLm11bHRpcGxlID8gW10gOiBudWxsO1xuICAgIH0sXG4gICAgb25GaWxlQ2hhbmdlOiBmdW5jdGlvbiBvbkZpbGVDaGFuZ2UoZXZ0KSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAvLyBBbHdheXMgZW1pdCBvcmlnaW5hbCBldmVudFxuICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywgZXZ0KTsgLy8gQ2hlY2sgaWYgc3BlY2lhbCBgaXRlbXNgIHByb3AgaXMgYXZhaWxhYmxlIG9uIGV2ZW50IChkcm9wIG1vZGUpXG4gICAgICAvLyBDYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyBuby10cmF2ZXJzZVxuXG4gICAgICB2YXIgaXRlbXMgPSBldnQuZGF0YVRyYW5zZmVyICYmIGV2dC5kYXRhVHJhbnNmZXIuaXRlbXM7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogbm90IHN1cHBvcnRlZCBpbiBKU0RPTSAqL1xuXG4gICAgICBpZiAoaXRlbXMgJiYgIXRoaXMubm9UcmF2ZXJzZSkge1xuICAgICAgICB2YXIgcXVldWUgPSBbXTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGl0ZW0gPSBpdGVtc1tpXS53ZWJraXRHZXRBc0VudHJ5KCk7XG5cbiAgICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgcXVldWUucHVzaCh0aGlzLnRyYXZlcnNlRmlsZVRyZWUoaXRlbSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIFByb21pc2UuYWxsKHF1ZXVlKS50aGVuKGZ1bmN0aW9uIChmaWxlc0Fycikge1xuICAgICAgICAgIF90aGlzLnNldEZpbGVzKGFycmF5RnJvbShmaWxlc0FycikpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBOb3JtYWwgaGFuZGxpbmdcblxuXG4gICAgICB0aGlzLnNldEZpbGVzKGV2dC50YXJnZXQuZmlsZXMgfHwgZXZ0LmRhdGFUcmFuc2Zlci5maWxlcyk7XG4gICAgfSxcbiAgICBzZXRGaWxlczogZnVuY3Rpb24gc2V0RmlsZXMoKSB7XG4gICAgICB2YXIgZmlsZXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IFtdO1xuXG4gICAgICBpZiAoIWZpbGVzKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiB0aGlzIHdpbGwgcHJvYmFibHkgbm90IGhhcHBlbiAqL1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZSA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgLy8gQ29udmVydCBmaWxlcyB0byBhcnJheVxuICAgICAgICB2YXIgZmlsZXNBcnJheSA9IFtdO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBmaWxlc0FycmF5LnB1c2goZmlsZXNbaV0pO1xuICAgICAgICB9IC8vIFJldHVybiBmaWxlKHMpIGFzIGFycmF5XG5cblxuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZSA9IGZpbGVzQXJyYXk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBSZXR1cm4gc2luZ2xlIGZpbGUgb2JqZWN0XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlID0gZmlsZXNbMF0gfHwgbnVsbDtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uUmVzZXQ6IGZ1bmN0aW9uIG9uUmVzZXQoKSB7XG4gICAgICAvLyBUcmlnZ2VyZWQgd2hlbiB0aGUgcGFyZW50IGZvcm0gKGlmIGFueSkgaXMgcmVzZXRcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlID0gdGhpcy5tdWx0aXBsZSA/IFtdIDogbnVsbDtcbiAgICB9LFxuICAgIG9uRHJhZ292ZXI6IGZ1bmN0aW9uIG9uRHJhZ292ZXIoZXZ0KVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBkaWZmaWN1bHQgdG8gdGVzdCBpbiBKU0RPTSAqL1xuICAgIHtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICBpZiAodGhpcy5ub0Ryb3AgfHwgIXRoaXMuY3VzdG9tKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG4gICAgICBldnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnY29weSc7XG4gICAgfSxcbiAgICBvbkRyYWdsZWF2ZTogZnVuY3Rpb24gb25EcmFnbGVhdmUoZXZ0KVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBkaWZmaWN1bHQgdG8gdGVzdCBpbiBKU0RPTSAqL1xuICAgIHtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgIH0sXG4gICAgb25Ecm9wOiBmdW5jdGlvbiBvbkRyb3AoZXZ0KVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBkaWZmaWN1bHQgdG8gdGVzdCBpbiBKU0RPTSAqL1xuICAgIHtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICBpZiAodGhpcy5ub0Ryb3ApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG5cbiAgICAgIGlmIChldnQuZGF0YVRyYW5zZmVyLmZpbGVzICYmIGV2dC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLm9uRmlsZUNoYW5nZShldnQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgdHJhdmVyc2VGaWxlVHJlZTogZnVuY3Rpb24gdHJhdmVyc2VGaWxlVHJlZShpdGVtLCBwYXRoKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBub3Qgc3VwcG9ydGVkIGluIEpTRE9NICovXG4gICAge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIC8vIEJhc2VkIG9uIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzU5MDA1OFxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgIHBhdGggPSBwYXRoIHx8ICcnO1xuXG4gICAgICAgIGlmIChpdGVtLmlzRmlsZSkge1xuICAgICAgICAgIC8vIEdldCBmaWxlXG4gICAgICAgICAgaXRlbS5maWxlKGZ1bmN0aW9uIChmaWxlKSB7XG4gICAgICAgICAgICBmaWxlLiRwYXRoID0gcGF0aDsgLy8gSW5qZWN0ICRwYXRoIHRvIGZpbGUgb2JqXG5cbiAgICAgICAgICAgIHJlc29sdmUoZmlsZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5pc0RpcmVjdG9yeSkge1xuICAgICAgICAgIC8vIEdldCBmb2xkZXIgY29udGVudHNcbiAgICAgICAgICBpdGVtLmNyZWF0ZVJlYWRlcigpLnJlYWRFbnRyaWVzKGZ1bmN0aW9uIChlbnRyaWVzKSB7XG4gICAgICAgICAgICB2YXIgcXVldWUgPSBbXTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIHF1ZXVlLnB1c2goX3RoaXMyLnRyYXZlcnNlRmlsZVRyZWUoZW50cmllc1tpXSwgcGF0aCArIGl0ZW0ubmFtZSArICcvJykpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBQcm9taXNlLmFsbChxdWV1ZSkudGhlbihmdW5jdGlvbiAoZmlsZXNBcnIpIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZShhcnJheUZyb20oZmlsZXNBcnIpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICAvLyBGb3JtIElucHV0XG4gICAgdmFyIGlucHV0ID0gaCgnaW5wdXQnLCB7XG4gICAgICByZWY6ICdpbnB1dCcsXG4gICAgICBjbGFzczogW3tcbiAgICAgICAgJ2Zvcm0tY29udHJvbC1maWxlJzogdGhpcy5wbGFpbixcbiAgICAgICAgJ2N1c3RvbS1maWxlLWlucHV0JzogdGhpcy5jdXN0b20sXG4gICAgICAgIGZvY3VzOiB0aGlzLmN1c3RvbSAmJiB0aGlzLmhhc0ZvY3VzXG4gICAgICB9LCB0aGlzLnN0YXRlQ2xhc3NdLFxuICAgICAgYXR0cnM6IF9vYmplY3RTcHJlYWQoe30sIHRoaXMuJGF0dHJzLCB7XG4gICAgICAgIHR5cGU6ICdmaWxlJyxcbiAgICAgICAgaWQ6IHRoaXMuc2FmZUlkKCksXG4gICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQsXG4gICAgICAgIHJlcXVpcmVkOiB0aGlzLnJlcXVpcmVkLFxuICAgICAgICBmb3JtOiB0aGlzLmZvcm0gfHwgbnVsbCxcbiAgICAgICAgY2FwdHVyZTogdGhpcy5jYXB0dXJlIHx8IG51bGwsXG4gICAgICAgIGFjY2VwdDogdGhpcy5hY2NlcHQgfHwgbnVsbCxcbiAgICAgICAgbXVsdGlwbGU6IHRoaXMubXVsdGlwbGUsXG4gICAgICAgIHdlYmtpdGRpcmVjdG9yeTogdGhpcy5kaXJlY3RvcnksXG4gICAgICAgICdhcmlhLXJlcXVpcmVkJzogdGhpcy5yZXF1aXJlZCA/ICd0cnVlJyA6IG51bGxcbiAgICAgIH0pLFxuICAgICAgb246IHtcbiAgICAgICAgY2hhbmdlOiB0aGlzLm9uRmlsZUNoYW5nZSxcbiAgICAgICAgZm9jdXNpbjogdGhpcy5mb2N1c0hhbmRsZXIsXG4gICAgICAgIGZvY3Vzb3V0OiB0aGlzLmZvY3VzSGFuZGxlcixcbiAgICAgICAgcmVzZXQ6IHRoaXMub25SZXNldFxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucGxhaW4pIHtcbiAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9IC8vIE92ZXJsYXkgTGFiZWxzXG5cblxuICAgIHZhciBsYWJlbCA9IGgoJ2xhYmVsJywge1xuICAgICAgc3RhdGljQ2xhc3M6ICdjdXN0b20tZmlsZS1sYWJlbCcsXG4gICAgICBjbGFzczogW3RoaXMuZHJhZ2dpbmcgPyAnZHJhZ2dpbmcnIDogbnVsbF0sXG4gICAgICBhdHRyczoge1xuICAgICAgICBmb3I6IHRoaXMuc2FmZUlkKCksXG4gICAgICAgICdkYXRhLWJyb3dzZSc6IHRoaXMuYnJvd3NlVGV4dCB8fCBudWxsXG4gICAgICB9XG4gICAgfSwgdGhpcy5zZWxlY3RMYWJlbCk7IC8vIFJldHVybiByZW5kZXJlZCBjdXN0b20gZmlsZSBpbnB1dFxuXG4gICAgcmV0dXJuIGgoJ2RpdicsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnY3VzdG9tLWZpbGUgYi1mb3JtLWZpbGUnLFxuICAgICAgY2xhc3M6IFt0aGlzLnN0YXRlQ2xhc3MsIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJiLWN1c3RvbS1jb250cm9sLVwiLmNvbmNhdCh0aGlzLnNpemUpLCBCb29sZWFuKHRoaXMuc2l6ZSkpXSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGlkOiB0aGlzLnNhZmVJZCgnX0JWX2ZpbGVfb3V0ZXJfJylcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAgICBkcmFnb3ZlcjogdGhpcy5vbkRyYWdvdmVyLFxuICAgICAgICBkcmFnbGVhdmU6IHRoaXMub25EcmFnbGVhdmUsXG4gICAgICAgIGRyb3A6IHRoaXMub25Ecm9wXG4gICAgICB9XG4gICAgfSwgW2lucHV0LCBsYWJlbF0pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Zvcm0tZmlsZS9mb3JtLWZpbGUuanNcbi8vIG1vZHVsZSBpZCA9IDE1NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///155\n"); /***/ }), /* 156 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BFormSelect; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_form_options__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mixins_form__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mixins_form_size__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__mixins_form_state__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_form_custom__ = __webpack_require__(154);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__utils_html__ = __webpack_require__(11);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n\n\n // @vue/component\n\nvar BFormSelect =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BFormSelect',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__mixins_normalize_slot__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__mixins_form__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__mixins_form_size__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__mixins_form_state__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__mixins_form_custom__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_form_options__[\"a\" /* default */]],\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n value: {// type: [Object, Array, String, Number, Boolean],\n // default: undefined\n },\n multiple: {\n type: Boolean,\n default: false\n },\n selectSize: {\n // Browsers default size to 0, which shows 4 rows in most browsers in multiple mode\n // Size of 1 can bork out Firefox\n type: Number,\n default: 0\n },\n ariaInvalid: {\n type: [Boolean, String],\n default: false\n }\n },\n data: function data() {\n return {\n localValue: this.value\n };\n },\n computed: {\n computedSelectSize: function computedSelectSize() {\n // Custom selects with a size of zero causes the arrows to be hidden,\n // so dont render the size attribute in this case\n return !this.plain && this.selectSize === 0 ? null : this.selectSize;\n },\n inputClass: function inputClass() {\n return [this.plain ? 'form-control' : 'custom-select', this.size && this.plain ? \"form-control-\".concat(this.size) : null, this.size && !this.plain ? \"custom-select-\".concat(this.size) : null, this.stateClass];\n },\n computedAriaInvalid: function computedAriaInvalid() {\n if (this.ariaInvalid === true || this.ariaInvalid === 'true') {\n return 'true';\n }\n\n return this.stateClass === 'is-invalid' ? 'true' : null;\n }\n },\n watch: {\n value: function value(newVal, oldVal) {\n this.localValue = newVal;\n },\n localValue: function localValue(newVal, oldVal) {\n this.$emit('input', this.localValue);\n }\n },\n methods: {\n focus: function focus() {\n this.$refs.input.focus();\n },\n blur: function blur() {\n this.$refs.input.blur();\n }\n },\n render: function render(h) {\n var _this = this;\n\n var options = this.formOptions.map(function (option, index) {\n return h('option', {\n key: \"option_\".concat(index, \"_opt\"),\n attrs: {\n disabled: Boolean(option.disabled)\n },\n domProps: _objectSpread({}, Object(__WEBPACK_IMPORTED_MODULE_9__utils_html__[\"a\" /* htmlOrText */])(option.html, option.text), {\n value: option.value\n })\n });\n });\n return h('select', {\n ref: 'input',\n class: this.inputClass,\n directives: [{\n name: 'model',\n rawName: 'v-model',\n value: this.localValue,\n expression: 'localValue'\n }],\n attrs: {\n id: this.safeId(),\n name: this.name,\n form: this.form || null,\n multiple: this.multiple || null,\n size: this.computedSelectSize,\n disabled: this.disabled,\n required: this.required,\n 'aria-required': this.required ? 'true' : null,\n 'aria-invalid': this.computedAriaInvalid\n },\n on: {\n change: function change(evt) {\n var target = evt.target;\n var selectedVal = Object(__WEBPACK_IMPORTED_MODULE_8__utils_array__[\"c\" /* from */])(target.options).filter(function (o) {\n return o.selected;\n }).map(function (o) {\n return '_value' in o ? o._value : o.value;\n });\n _this.localValue = target.multiple ? selectedVal : selectedVal[0];\n\n _this.$nextTick(function () {\n _this.$emit('change', _this.localValue);\n });\n }\n }\n }, [this.normalizeSlot('first'), options, this.normalizeSlot('default')]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLXNlbGVjdC9mb3JtLXNlbGVjdC5qcz8yZGJlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ0k7QUFDbUI7QUFDZjtBQUNTO0FBQ0U7QUFDRTtBQUNNO0FBQ1A7QUFDUjs7QUFFdkM7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQSxXQUFXLDJEQUFPLEVBQUUsdUVBQWtCLEVBQUUsNkRBQVMsRUFBRSxrRUFBYSxFQUFFLG1FQUFjLEVBQUUsb0VBQWUsRUFBRSxxRUFBZ0I7QUFDbkg7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsWUFBWTtBQUNaO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsa0NBQWtDLEVBQUUsdUVBQVU7QUFDOUM7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixrRUFBUztBQUNyQztBQUNBLFdBQVc7QUFDWDtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjE1Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhzb3VyY2UsIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCBpZE1peGluIGZyb20gJy4uLy4uL21peGlucy9pZCc7XG5pbXBvcnQgZm9ybU9wdGlvbnNNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvZm9ybS1vcHRpb25zJztcbmltcG9ydCBmb3JtTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0nO1xuaW1wb3J0IGZvcm1TaXplTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tc2l6ZSc7XG5pbXBvcnQgZm9ybVN0YXRlTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tc3RhdGUnO1xuaW1wb3J0IGZvcm1DdXN0b21NaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvZm9ybS1jdXN0b20nO1xuaW1wb3J0IG5vcm1hbGl6ZVNsb3RNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvbm9ybWFsaXplLXNsb3QnO1xuaW1wb3J0IHsgZnJvbSBhcyBhcnJheUZyb20gfSBmcm9tICcuLi8uLi91dGlscy9hcnJheSc7XG5pbXBvcnQgeyBodG1sT3JUZXh0IH0gZnJvbSAnLi4vLi4vdXRpbHMvaHRtbCc7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkZvcm1TZWxlY3QgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCRm9ybVNlbGVjdCcsXG4gIG1peGluczogW2lkTWl4aW4sIG5vcm1hbGl6ZVNsb3RNaXhpbiwgZm9ybU1peGluLCBmb3JtU2l6ZU1peGluLCBmb3JtU3RhdGVNaXhpbiwgZm9ybUN1c3RvbU1peGluLCBmb3JtT3B0aW9uc01peGluXSxcbiAgbW9kZWw6IHtcbiAgICBwcm9wOiAndmFsdWUnLFxuICAgIGV2ZW50OiAnaW5wdXQnXG4gIH0sXG4gIHByb3BzOiB7XG4gICAgdmFsdWU6IHsvLyB0eXBlOiBbT2JqZWN0LCBBcnJheSwgU3RyaW5nLCBOdW1iZXIsIEJvb2xlYW5dLFxuICAgICAgLy8gZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICBtdWx0aXBsZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBzZWxlY3RTaXplOiB7XG4gICAgICAvLyBCcm93c2VycyBkZWZhdWx0IHNpemUgdG8gMCwgd2hpY2ggc2hvd3MgNCByb3dzIGluIG1vc3QgYnJvd3NlcnMgaW4gbXVsdGlwbGUgbW9kZVxuICAgICAgLy8gU2l6ZSBvZiAxIGNhbiBib3JrIG91dCBGaXJlZm94XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAwXG4gICAgfSxcbiAgICBhcmlhSW52YWxpZDoge1xuICAgICAgdHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYWxWYWx1ZTogdGhpcy52YWx1ZVxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgY29tcHV0ZWRTZWxlY3RTaXplOiBmdW5jdGlvbiBjb21wdXRlZFNlbGVjdFNpemUoKSB7XG4gICAgICAvLyBDdXN0b20gc2VsZWN0cyB3aXRoIGEgc2l6ZSBvZiB6ZXJvIGNhdXNlcyB0aGUgYXJyb3dzIHRvIGJlIGhpZGRlbixcbiAgICAgIC8vIHNvIGRvbnQgcmVuZGVyIHRoZSBzaXplIGF0dHJpYnV0ZSBpbiB0aGlzIGNhc2VcbiAgICAgIHJldHVybiAhdGhpcy5wbGFpbiAmJiB0aGlzLnNlbGVjdFNpemUgPT09IDAgPyBudWxsIDogdGhpcy5zZWxlY3RTaXplO1xuICAgIH0sXG4gICAgaW5wdXRDbGFzczogZnVuY3Rpb24gaW5wdXRDbGFzcygpIHtcbiAgICAgIHJldHVybiBbdGhpcy5wbGFpbiA/ICdmb3JtLWNvbnRyb2wnIDogJ2N1c3RvbS1zZWxlY3QnLCB0aGlzLnNpemUgJiYgdGhpcy5wbGFpbiA/IFwiZm9ybS1jb250cm9sLVwiLmNvbmNhdCh0aGlzLnNpemUpIDogbnVsbCwgdGhpcy5zaXplICYmICF0aGlzLnBsYWluID8gXCJjdXN0b20tc2VsZWN0LVwiLmNvbmNhdCh0aGlzLnNpemUpIDogbnVsbCwgdGhpcy5zdGF0ZUNsYXNzXTtcbiAgICB9LFxuICAgIGNvbXB1dGVkQXJpYUludmFsaWQ6IGZ1bmN0aW9uIGNvbXB1dGVkQXJpYUludmFsaWQoKSB7XG4gICAgICBpZiAodGhpcy5hcmlhSW52YWxpZCA9PT0gdHJ1ZSB8fCB0aGlzLmFyaWFJbnZhbGlkID09PSAndHJ1ZScpIHtcbiAgICAgICAgcmV0dXJuICd0cnVlJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuc3RhdGVDbGFzcyA9PT0gJ2lzLWludmFsaWQnID8gJ3RydWUnIDogbnVsbDtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICB0aGlzLmxvY2FsVmFsdWUgPSBuZXdWYWw7XG4gICAgfSxcbiAgICBsb2NhbFZhbHVlOiBmdW5jdGlvbiBsb2NhbFZhbHVlKG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHRoaXMubG9jYWxWYWx1ZSk7XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgZm9jdXM6IGZ1bmN0aW9uIGZvY3VzKCkge1xuICAgICAgdGhpcy4kcmVmcy5pbnB1dC5mb2N1cygpO1xuICAgIH0sXG4gICAgYmx1cjogZnVuY3Rpb24gYmx1cigpIHtcbiAgICAgIHRoaXMuJHJlZnMuaW5wdXQuYmx1cigpO1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgb3B0aW9ucyA9IHRoaXMuZm9ybU9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24sIGluZGV4KSB7XG4gICAgICByZXR1cm4gaCgnb3B0aW9uJywge1xuICAgICAgICBrZXk6IFwib3B0aW9uX1wiLmNvbmNhdChpbmRleCwgXCJfb3B0XCIpLFxuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIGRpc2FibGVkOiBCb29sZWFuKG9wdGlvbi5kaXNhYmxlZClcbiAgICAgICAgfSxcbiAgICAgICAgZG9tUHJvcHM6IF9vYmplY3RTcHJlYWQoe30sIGh0bWxPclRleHQob3B0aW9uLmh0bWwsIG9wdGlvbi50ZXh0KSwge1xuICAgICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWVcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBoKCdzZWxlY3QnLCB7XG4gICAgICByZWY6ICdpbnB1dCcsXG4gICAgICBjbGFzczogdGhpcy5pbnB1dENsYXNzLFxuICAgICAgZGlyZWN0aXZlczogW3tcbiAgICAgICAgbmFtZTogJ21vZGVsJyxcbiAgICAgICAgcmF3TmFtZTogJ3YtbW9kZWwnLFxuICAgICAgICB2YWx1ZTogdGhpcy5sb2NhbFZhbHVlLFxuICAgICAgICBleHByZXNzaW9uOiAnbG9jYWxWYWx1ZSdcbiAgICAgIH1dLFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgaWQ6IHRoaXMuc2FmZUlkKCksXG4gICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgZm9ybTogdGhpcy5mb3JtIHx8IG51bGwsXG4gICAgICAgIG11bHRpcGxlOiB0aGlzLm11bHRpcGxlIHx8IG51bGwsXG4gICAgICAgIHNpemU6IHRoaXMuY29tcHV0ZWRTZWxlY3RTaXplLFxuICAgICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCxcbiAgICAgICAgcmVxdWlyZWQ6IHRoaXMucmVxdWlyZWQsXG4gICAgICAgICdhcmlhLXJlcXVpcmVkJzogdGhpcy5yZXF1aXJlZCA/ICd0cnVlJyA6IG51bGwsXG4gICAgICAgICdhcmlhLWludmFsaWQnOiB0aGlzLmNvbXB1dGVkQXJpYUludmFsaWRcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAgICBjaGFuZ2U6IGZ1bmN0aW9uIGNoYW5nZShldnQpIHtcbiAgICAgICAgICB2YXIgdGFyZ2V0ID0gZXZ0LnRhcmdldDtcbiAgICAgICAgICB2YXIgc2VsZWN0ZWRWYWwgPSBhcnJheUZyb20odGFyZ2V0Lm9wdGlvbnMpLmZpbHRlcihmdW5jdGlvbiAobykge1xuICAgICAgICAgICAgcmV0dXJuIG8uc2VsZWN0ZWQ7XG4gICAgICAgICAgfSkubWFwKGZ1bmN0aW9uIChvKSB7XG4gICAgICAgICAgICByZXR1cm4gJ192YWx1ZScgaW4gbyA/IG8uX3ZhbHVlIDogby52YWx1ZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfdGhpcy5sb2NhbFZhbHVlID0gdGFyZ2V0Lm11bHRpcGxlID8gc2VsZWN0ZWRWYWwgOiBzZWxlY3RlZFZhbFswXTtcblxuICAgICAgICAgIF90aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpcy4kZW1pdCgnY2hhbmdlJywgX3RoaXMubG9jYWxWYWx1ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBbdGhpcy5ub3JtYWxpemVTbG90KCdmaXJzdCcpLCBvcHRpb25zLCB0aGlzLm5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnKV0pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Zvcm0tc2VsZWN0L2Zvcm0tc2VsZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAxNTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///156\n"); +eval("// @vue/component\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n props: {\n plain: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n custom: function custom() {\n return !this.plain;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vbWl4aW5zL2Zvcm0tY3VzdG9tLmpzPzMwYTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMTU2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHZ1ZS9jb21wb25lbnRcbmV4cG9ydCBkZWZhdWx0IHtcbiAgcHJvcHM6IHtcbiAgICBwbGFpbjoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGN1c3RvbTogZnVuY3Rpb24gY3VzdG9tKCkge1xuICAgICAgcmV0dXJuICF0aGlzLnBsYWluO1xuICAgIH1cbiAgfVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9taXhpbnMvZm9ybS1jdXN0b20uanNcbi8vIG1vZHVsZSBpZCA9IDE1NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///156\n"); /***/ }), /* 157 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ImagePlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__img__ = __webpack_require__(38);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__img_lazy__ = __webpack_require__(62);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BImg */\n/* unused harmony reexport BImgLazy */\n\n\n\nvar ImagePlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BImg: __WEBPACK_IMPORTED_MODULE_0__img__[\"a\" /* BImg */],\n BImgLazy: __WEBPACK_IMPORTED_MODULE_1__img_lazy__[\"a\" /* BImgLazy */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9pbWFnZS9pbmRleC5qcz82MzVhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2QjtBQUNTO0FBQ2M7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxVQUFVLGtEQUFJO0FBQ2QsY0FBYywyREFBUTtBQUN0QjtBQUNBLENBQUMiLCJmaWxlIjoiMTU3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkltZyB9IGZyb20gJy4vaW1nJztcbmltcG9ydCB7IEJJbWdMYXp5IH0gZnJvbSAnLi9pbWctbGF6eSc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgSW1hZ2VQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCSW1nOiBCSW1nLFxuICAgIEJJbWdMYXp5OiBCSW1nTGF6eVxuICB9XG59KTtcbmV4cG9ydCB7IEltYWdlUGx1Z2luLCBCSW1nLCBCSW1nTGF6eSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvaW1hZ2UvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE1N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///157\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return FormSelectPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__form_select__ = __webpack_require__(158);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BFormSelect */\n\n\nvar FormSelectPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BFormSelect: __WEBPACK_IMPORTED_MODULE_0__form_select__[\"a\" /* BFormSelect */],\n BSelect: __WEBPACK_IMPORTED_MODULE_0__form_select__[\"a\" /* BFormSelect */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLXNlbGVjdC9pbmRleC5qcz9jNDM5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQ1E7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxpQkFBaUIsaUVBQVc7QUFDNUIsYUFBYSxpRUFBVztBQUN4QjtBQUNBLENBQUMiLCJmaWxlIjoiMTU3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkZvcm1TZWxlY3QgfSBmcm9tICcuL2Zvcm0tc2VsZWN0JztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBGb3JtU2VsZWN0UGx1Z2luID1cbi8qI19fUFVSRV9fKi9cbnBsdWdpbkZhY3Rvcnkoe1xuICBjb21wb25lbnRzOiB7XG4gICAgQkZvcm1TZWxlY3Q6IEJGb3JtU2VsZWN0LFxuICAgIEJTZWxlY3Q6IEJGb3JtU2VsZWN0XG4gIH1cbn0pO1xuZXhwb3J0IHsgRm9ybVNlbGVjdFBsdWdpbiwgQkZvcm1TZWxlY3QgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Zvcm0tc2VsZWN0L2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///157\n"); /***/ }), /* 158 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return InputGroupPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__input_group__ = __webpack_require__(159);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__input_group_addon__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__input_group_prepend__ = __webpack_require__(72);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__input_group_append__ = __webpack_require__(73);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__input_group_text__ = __webpack_require__(46);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BInputGroup */\n/* unused harmony reexport BInputGroupAddon */\n/* unused harmony reexport BInputGroupPrepend */\n/* unused harmony reexport BInputGroupAppend */\n/* unused harmony reexport BInputGroupText */\n\n\n\n\n\n\nvar InputGroupPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_5__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BInputGroup: __WEBPACK_IMPORTED_MODULE_0__input_group__[\"a\" /* BInputGroup */],\n BInputGroupAddon: __WEBPACK_IMPORTED_MODULE_1__input_group_addon__[\"a\" /* BInputGroupAddon */],\n BInputGroupPrepend: __WEBPACK_IMPORTED_MODULE_2__input_group_prepend__[\"a\" /* BInputGroupPrepend */],\n BInputGroupAppend: __WEBPACK_IMPORTED_MODULE_3__input_group_append__[\"a\" /* BInputGroupAppend */],\n BInputGroupText: __WEBPACK_IMPORTED_MODULE_4__input_group_text__[\"a\" /* BInputGroupText */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9pbnB1dC1ncm91cC9pbmRleC5qcz8wOGI0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE0QztBQUNXO0FBQ0k7QUFDRjtBQUNKO0FBQ0Q7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxpQkFBaUIsaUVBQVc7QUFDNUIsc0JBQXNCLDRFQUFnQjtBQUN0Qyx3QkFBd0IsZ0ZBQWtCO0FBQzFDLHVCQUF1Qiw4RUFBaUI7QUFDeEMscUJBQXFCLDBFQUFlO0FBQ3BDO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNTguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCSW5wdXRHcm91cCB9IGZyb20gJy4vaW5wdXQtZ3JvdXAnO1xuaW1wb3J0IHsgQklucHV0R3JvdXBBZGRvbiB9IGZyb20gJy4vaW5wdXQtZ3JvdXAtYWRkb24nO1xuaW1wb3J0IHsgQklucHV0R3JvdXBQcmVwZW5kIH0gZnJvbSAnLi9pbnB1dC1ncm91cC1wcmVwZW5kJztcbmltcG9ydCB7IEJJbnB1dEdyb3VwQXBwZW5kIH0gZnJvbSAnLi9pbnB1dC1ncm91cC1hcHBlbmQnO1xuaW1wb3J0IHsgQklucHV0R3JvdXBUZXh0IH0gZnJvbSAnLi9pbnB1dC1ncm91cC10ZXh0JztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBJbnB1dEdyb3VwUGx1Z2luID1cbi8qI19fUFVSRV9fKi9cbnBsdWdpbkZhY3Rvcnkoe1xuICBjb21wb25lbnRzOiB7XG4gICAgQklucHV0R3JvdXA6IEJJbnB1dEdyb3VwLFxuICAgIEJJbnB1dEdyb3VwQWRkb246IEJJbnB1dEdyb3VwQWRkb24sXG4gICAgQklucHV0R3JvdXBQcmVwZW5kOiBCSW5wdXRHcm91cFByZXBlbmQsXG4gICAgQklucHV0R3JvdXBBcHBlbmQ6IEJJbnB1dEdyb3VwQXBwZW5kLFxuICAgIEJJbnB1dEdyb3VwVGV4dDogQklucHV0R3JvdXBUZXh0XG4gIH1cbn0pO1xuZXhwb3J0IHsgSW5wdXRHcm91cFBsdWdpbiwgQklucHV0R3JvdXAsIEJJbnB1dEdyb3VwQWRkb24sIEJJbnB1dEdyb3VwUHJlcGVuZCwgQklucHV0R3JvdXBBcHBlbmQsIEJJbnB1dEdyb3VwVGV4dCB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvaW5wdXQtZ3JvdXAvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE1OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///158\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BFormSelect; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_form_options__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mixins_form__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mixins_form_size__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__mixins_form_state__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_form_custom__ = __webpack_require__(156);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__utils_html__ = __webpack_require__(11);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n\n\n // @vue/component\n\nvar BFormSelect =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BFormSelect',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__mixins_normalize_slot__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__mixins_form__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__mixins_form_size__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__mixins_form_state__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__mixins_form_custom__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_form_options__[\"a\" /* default */]],\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n value: {// type: [Object, Array, String, Number, Boolean],\n // default: undefined\n },\n multiple: {\n type: Boolean,\n default: false\n },\n selectSize: {\n // Browsers default size to 0, which shows 4 rows in most browsers in multiple mode\n // Size of 1 can bork out Firefox\n type: Number,\n default: 0\n },\n ariaInvalid: {\n type: [Boolean, String],\n default: false\n }\n },\n data: function data() {\n return {\n localValue: this.value\n };\n },\n computed: {\n computedSelectSize: function computedSelectSize() {\n // Custom selects with a size of zero causes the arrows to be hidden,\n // so dont render the size attribute in this case\n return !this.plain && this.selectSize === 0 ? null : this.selectSize;\n },\n inputClass: function inputClass() {\n return [this.plain ? 'form-control' : 'custom-select', this.size && this.plain ? \"form-control-\".concat(this.size) : null, this.size && !this.plain ? \"custom-select-\".concat(this.size) : null, this.stateClass];\n },\n computedAriaInvalid: function computedAriaInvalid() {\n if (this.ariaInvalid === true || this.ariaInvalid === 'true') {\n return 'true';\n }\n\n return this.stateClass === 'is-invalid' ? 'true' : null;\n }\n },\n watch: {\n value: function value(newVal, oldVal) {\n this.localValue = newVal;\n },\n localValue: function localValue(newVal, oldVal) {\n this.$emit('input', this.localValue);\n }\n },\n methods: {\n focus: function focus() {\n this.$refs.input.focus();\n },\n blur: function blur() {\n this.$refs.input.blur();\n }\n },\n render: function render(h) {\n var _this = this;\n\n var options = this.formOptions.map(function (option, index) {\n return h('option', {\n key: \"option_\".concat(index, \"_opt\"),\n attrs: {\n disabled: Boolean(option.disabled)\n },\n domProps: _objectSpread({}, Object(__WEBPACK_IMPORTED_MODULE_9__utils_html__[\"a\" /* htmlOrText */])(option.html, option.text), {\n value: option.value\n })\n });\n });\n return h('select', {\n ref: 'input',\n class: this.inputClass,\n directives: [{\n name: 'model',\n rawName: 'v-model',\n value: this.localValue,\n expression: 'localValue'\n }],\n attrs: {\n id: this.safeId(),\n name: this.name,\n form: this.form || null,\n multiple: this.multiple || null,\n size: this.computedSelectSize,\n disabled: this.disabled,\n required: this.required,\n 'aria-required': this.required ? 'true' : null,\n 'aria-invalid': this.computedAriaInvalid\n },\n on: {\n change: function change(evt) {\n var target = evt.target;\n var selectedVal = Object(__WEBPACK_IMPORTED_MODULE_8__utils_array__[\"c\" /* from */])(target.options).filter(function (o) {\n return o.selected;\n }).map(function (o) {\n return '_value' in o ? o._value : o.value;\n });\n _this.localValue = target.multiple ? selectedVal : selectedVal[0];\n\n _this.$nextTick(function () {\n _this.$emit('change', _this.localValue);\n });\n }\n }\n }, [this.normalizeSlot('first'), options, this.normalizeSlot('default')]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9mb3JtLXNlbGVjdC9mb3JtLXNlbGVjdC5qcz8yZGJlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ0k7QUFDbUI7QUFDZjtBQUNTO0FBQ0U7QUFDRTtBQUNNO0FBQ1A7QUFDUjs7QUFFdkM7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQSxXQUFXLDJEQUFPLEVBQUUsdUVBQWtCLEVBQUUsNkRBQVMsRUFBRSxrRUFBYSxFQUFFLG1FQUFjLEVBQUUsb0VBQWUsRUFBRSxxRUFBZ0I7QUFDbkg7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsWUFBWTtBQUNaO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsa0NBQWtDLEVBQUUsdUVBQVU7QUFDOUM7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixrRUFBUztBQUNyQztBQUNBLFdBQVc7QUFDWDtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjE1OC5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhzb3VyY2UsIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCBpZE1peGluIGZyb20gJy4uLy4uL21peGlucy9pZCc7XG5pbXBvcnQgZm9ybU9wdGlvbnNNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvZm9ybS1vcHRpb25zJztcbmltcG9ydCBmb3JtTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0nO1xuaW1wb3J0IGZvcm1TaXplTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tc2l6ZSc7XG5pbXBvcnQgZm9ybVN0YXRlTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Zvcm0tc3RhdGUnO1xuaW1wb3J0IGZvcm1DdXN0b21NaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvZm9ybS1jdXN0b20nO1xuaW1wb3J0IG5vcm1hbGl6ZVNsb3RNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvbm9ybWFsaXplLXNsb3QnO1xuaW1wb3J0IHsgZnJvbSBhcyBhcnJheUZyb20gfSBmcm9tICcuLi8uLi91dGlscy9hcnJheSc7XG5pbXBvcnQgeyBodG1sT3JUZXh0IH0gZnJvbSAnLi4vLi4vdXRpbHMvaHRtbCc7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkZvcm1TZWxlY3QgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCRm9ybVNlbGVjdCcsXG4gIG1peGluczogW2lkTWl4aW4sIG5vcm1hbGl6ZVNsb3RNaXhpbiwgZm9ybU1peGluLCBmb3JtU2l6ZU1peGluLCBmb3JtU3RhdGVNaXhpbiwgZm9ybUN1c3RvbU1peGluLCBmb3JtT3B0aW9uc01peGluXSxcbiAgbW9kZWw6IHtcbiAgICBwcm9wOiAndmFsdWUnLFxuICAgIGV2ZW50OiAnaW5wdXQnXG4gIH0sXG4gIHByb3BzOiB7XG4gICAgdmFsdWU6IHsvLyB0eXBlOiBbT2JqZWN0LCBBcnJheSwgU3RyaW5nLCBOdW1iZXIsIEJvb2xlYW5dLFxuICAgICAgLy8gZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICBtdWx0aXBsZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBzZWxlY3RTaXplOiB7XG4gICAgICAvLyBCcm93c2VycyBkZWZhdWx0IHNpemUgdG8gMCwgd2hpY2ggc2hvd3MgNCByb3dzIGluIG1vc3QgYnJvd3NlcnMgaW4gbXVsdGlwbGUgbW9kZVxuICAgICAgLy8gU2l6ZSBvZiAxIGNhbiBib3JrIG91dCBGaXJlZm94XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAwXG4gICAgfSxcbiAgICBhcmlhSW52YWxpZDoge1xuICAgICAgdHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYWxWYWx1ZTogdGhpcy52YWx1ZVxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgY29tcHV0ZWRTZWxlY3RTaXplOiBmdW5jdGlvbiBjb21wdXRlZFNlbGVjdFNpemUoKSB7XG4gICAgICAvLyBDdXN0b20gc2VsZWN0cyB3aXRoIGEgc2l6ZSBvZiB6ZXJvIGNhdXNlcyB0aGUgYXJyb3dzIHRvIGJlIGhpZGRlbixcbiAgICAgIC8vIHNvIGRvbnQgcmVuZGVyIHRoZSBzaXplIGF0dHJpYnV0ZSBpbiB0aGlzIGNhc2VcbiAgICAgIHJldHVybiAhdGhpcy5wbGFpbiAmJiB0aGlzLnNlbGVjdFNpemUgPT09IDAgPyBudWxsIDogdGhpcy5zZWxlY3RTaXplO1xuICAgIH0sXG4gICAgaW5wdXRDbGFzczogZnVuY3Rpb24gaW5wdXRDbGFzcygpIHtcbiAgICAgIHJldHVybiBbdGhpcy5wbGFpbiA/ICdmb3JtLWNvbnRyb2wnIDogJ2N1c3RvbS1zZWxlY3QnLCB0aGlzLnNpemUgJiYgdGhpcy5wbGFpbiA/IFwiZm9ybS1jb250cm9sLVwiLmNvbmNhdCh0aGlzLnNpemUpIDogbnVsbCwgdGhpcy5zaXplICYmICF0aGlzLnBsYWluID8gXCJjdXN0b20tc2VsZWN0LVwiLmNvbmNhdCh0aGlzLnNpemUpIDogbnVsbCwgdGhpcy5zdGF0ZUNsYXNzXTtcbiAgICB9LFxuICAgIGNvbXB1dGVkQXJpYUludmFsaWQ6IGZ1bmN0aW9uIGNvbXB1dGVkQXJpYUludmFsaWQoKSB7XG4gICAgICBpZiAodGhpcy5hcmlhSW52YWxpZCA9PT0gdHJ1ZSB8fCB0aGlzLmFyaWFJbnZhbGlkID09PSAndHJ1ZScpIHtcbiAgICAgICAgcmV0dXJuICd0cnVlJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuc3RhdGVDbGFzcyA9PT0gJ2lzLWludmFsaWQnID8gJ3RydWUnIDogbnVsbDtcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICB0aGlzLmxvY2FsVmFsdWUgPSBuZXdWYWw7XG4gICAgfSxcbiAgICBsb2NhbFZhbHVlOiBmdW5jdGlvbiBsb2NhbFZhbHVlKG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIHRoaXMubG9jYWxWYWx1ZSk7XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgZm9jdXM6IGZ1bmN0aW9uIGZvY3VzKCkge1xuICAgICAgdGhpcy4kcmVmcy5pbnB1dC5mb2N1cygpO1xuICAgIH0sXG4gICAgYmx1cjogZnVuY3Rpb24gYmx1cigpIHtcbiAgICAgIHRoaXMuJHJlZnMuaW5wdXQuYmx1cigpO1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgb3B0aW9ucyA9IHRoaXMuZm9ybU9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24sIGluZGV4KSB7XG4gICAgICByZXR1cm4gaCgnb3B0aW9uJywge1xuICAgICAgICBrZXk6IFwib3B0aW9uX1wiLmNvbmNhdChpbmRleCwgXCJfb3B0XCIpLFxuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIGRpc2FibGVkOiBCb29sZWFuKG9wdGlvbi5kaXNhYmxlZClcbiAgICAgICAgfSxcbiAgICAgICAgZG9tUHJvcHM6IF9vYmplY3RTcHJlYWQoe30sIGh0bWxPclRleHQob3B0aW9uLmh0bWwsIG9wdGlvbi50ZXh0KSwge1xuICAgICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWVcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBoKCdzZWxlY3QnLCB7XG4gICAgICByZWY6ICdpbnB1dCcsXG4gICAgICBjbGFzczogdGhpcy5pbnB1dENsYXNzLFxuICAgICAgZGlyZWN0aXZlczogW3tcbiAgICAgICAgbmFtZTogJ21vZGVsJyxcbiAgICAgICAgcmF3TmFtZTogJ3YtbW9kZWwnLFxuICAgICAgICB2YWx1ZTogdGhpcy5sb2NhbFZhbHVlLFxuICAgICAgICBleHByZXNzaW9uOiAnbG9jYWxWYWx1ZSdcbiAgICAgIH1dLFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgaWQ6IHRoaXMuc2FmZUlkKCksXG4gICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgZm9ybTogdGhpcy5mb3JtIHx8IG51bGwsXG4gICAgICAgIG11bHRpcGxlOiB0aGlzLm11bHRpcGxlIHx8IG51bGwsXG4gICAgICAgIHNpemU6IHRoaXMuY29tcHV0ZWRTZWxlY3RTaXplLFxuICAgICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCxcbiAgICAgICAgcmVxdWlyZWQ6IHRoaXMucmVxdWlyZWQsXG4gICAgICAgICdhcmlhLXJlcXVpcmVkJzogdGhpcy5yZXF1aXJlZCA/ICd0cnVlJyA6IG51bGwsXG4gICAgICAgICdhcmlhLWludmFsaWQnOiB0aGlzLmNvbXB1dGVkQXJpYUludmFsaWRcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAgICBjaGFuZ2U6IGZ1bmN0aW9uIGNoYW5nZShldnQpIHtcbiAgICAgICAgICB2YXIgdGFyZ2V0ID0gZXZ0LnRhcmdldDtcbiAgICAgICAgICB2YXIgc2VsZWN0ZWRWYWwgPSBhcnJheUZyb20odGFyZ2V0Lm9wdGlvbnMpLmZpbHRlcihmdW5jdGlvbiAobykge1xuICAgICAgICAgICAgcmV0dXJuIG8uc2VsZWN0ZWQ7XG4gICAgICAgICAgfSkubWFwKGZ1bmN0aW9uIChvKSB7XG4gICAgICAgICAgICByZXR1cm4gJ192YWx1ZScgaW4gbyA/IG8uX3ZhbHVlIDogby52YWx1ZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfdGhpcy5sb2NhbFZhbHVlID0gdGFyZ2V0Lm11bHRpcGxlID8gc2VsZWN0ZWRWYWwgOiBzZWxlY3RlZFZhbFswXTtcblxuICAgICAgICAgIF90aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpcy4kZW1pdCgnY2hhbmdlJywgX3RoaXMubG9jYWxWYWx1ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBbdGhpcy5ub3JtYWxpemVTbG90KCdmaXJzdCcpLCBvcHRpb25zLCB0aGlzLm5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnKV0pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2Zvcm0tc2VsZWN0L2Zvcm0tc2VsZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAxNThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///158\n"); /***/ }), /* 159 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BInputGroup; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_html__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__input_group_prepend__ = __webpack_require__(72);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__input_group_append__ = __webpack_require__(73);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__input_group_text__ = __webpack_require__(46);\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 _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\n\n\n\n\n\n\n\n\nvar NAME = 'BInputGroup';\nvar props = {\n id: {\n type: String\n },\n size: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'size');\n }\n },\n prepend: {\n type: String\n },\n prependHtml: {\n type: String\n },\n append: {\n type: String\n },\n appendHtml: {\n type: String\n },\n tag: {\n type: String,\n default: 'div'\n }\n}; // @vue/component\n\nvar BInputGroup =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var childNodes = []; // Prepend prop/slot\n\n if (props.prepend || props.prependHtml || Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"a\" /* hasNormalizedSlot */])('prepend', $scopedSlots, $slots)) {\n childNodes.push(h(__WEBPACK_IMPORTED_MODULE_5__input_group_prepend__[\"a\" /* BInputGroupPrepend */], [// Prop\n props.prepend || props.prependHtml ? h(__WEBPACK_IMPORTED_MODULE_7__input_group_text__[\"a\" /* BInputGroupText */], {\n domProps: Object(__WEBPACK_IMPORTED_MODULE_3__utils_html__[\"a\" /* htmlOrText */])(props.prependHtml, props.prepend)\n }) : h(), // Slot\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"b\" /* normalizeSlot */])('prepend', {}, $scopedSlots, $slots) || h()]));\n } else {\n childNodes.push(h());\n } // Default slot\n\n\n if (Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"a\" /* hasNormalizedSlot */])('default', $scopedSlots, $slots)) {\n childNodes.push.apply(childNodes, _toConsumableArray(Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"b\" /* normalizeSlot */])('default', {}, $scopedSlots, $slots)));\n } else {\n childNodes.push(h());\n } // Append prop\n\n\n if (props.append || props.appendHtml || Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"a\" /* hasNormalizedSlot */])('append', $scopedSlots, $slots)) {\n childNodes.push(h(__WEBPACK_IMPORTED_MODULE_6__input_group_append__[\"a\" /* BInputGroupAppend */], [// prop\n props.append || props.appendHtml ? h(__WEBPACK_IMPORTED_MODULE_7__input_group_text__[\"a\" /* BInputGroupText */], {\n domProps: Object(__WEBPACK_IMPORTED_MODULE_3__utils_html__[\"a\" /* htmlOrText */])(props.appendHtml, props.append)\n }) : h(), // Slot\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"b\" /* normalizeSlot */])('append', {}, $scopedSlots, $slots) || h()]));\n } else {\n childNodes.push(h());\n }\n\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'input-group',\n class: _defineProperty({}, \"input-group-\".concat(props.size), Boolean(props.size)),\n attrs: {\n id: props.id || null,\n role: 'group'\n }\n }), childNodes);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC5qcz9iZWJmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRS9NLGtDQUFrQyxpRkFBaUY7O0FBRW5ILCtCQUErQix3RUFBd0U7O0FBRXZHLGlDQUFpQywrSEFBK0g7O0FBRWhLLGtDQUFrQywwQkFBMEIsOENBQThDLGdCQUFnQixPQUFPLGtCQUFrQixFQUFFLGFBQWEsRUFBRTs7QUFFbEk7QUFDb0I7QUFDRTtBQUNWO0FBQ2dDO0FBQ25CO0FBQ0Y7QUFDSjtBQUNyRDtBQUNPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qjs7QUFFeEIsOENBQThDLHdGQUFpQjtBQUMvRCx3QkFBd0IsZ0ZBQWtCO0FBQzFDLDZDQUE2QywwRUFBZTtBQUM1RCxrQkFBa0IsdUVBQVU7QUFDNUIsT0FBTztBQUNQLE1BQU0sb0ZBQWEsY0FBYztBQUNqQyxLQUFLO0FBQ0w7QUFDQSxLQUFLOzs7QUFHTCxRQUFRLHdGQUFpQjtBQUN6QiwyREFBMkQsb0ZBQWEsY0FBYztBQUN0RixLQUFLO0FBQ0w7QUFDQSxLQUFLOzs7QUFHTCw0Q0FBNEMsd0ZBQWlCO0FBQzdELHdCQUF3Qiw4RUFBaUI7QUFDekMsMkNBQTJDLDBFQUFlO0FBQzFELGtCQUFrQix1RUFBVTtBQUM1QixPQUFPO0FBQ1AsTUFBTSxvRkFBYSxhQUFhO0FBQ2hDLEtBQUs7QUFDTDtBQUNBOztBQUVBLHdCQUF3QixvRkFBUztBQUNqQztBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMTU5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikgeyByZXR1cm4gX2FycmF5V2l0aG91dEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF9ub25JdGVyYWJsZVNwcmVhZCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpOyB9XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkoaXRlcikgeyBpZiAoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChpdGVyKSB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaXRlcikgPT09IFwiW29iamVjdCBBcmd1bWVudHNdXCIpIHJldHVybiBBcnJheS5mcm9tKGl0ZXIpOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgeyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShhcnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9IH1cblxuaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgbWVyZ2VEYXRhIH0gZnJvbSAndnVlLWZ1bmN0aW9uYWwtZGF0YS1tZXJnZSc7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi8uLi91dGlscy9jb25maWcnO1xuaW1wb3J0IHsgaHRtbE9yVGV4dCB9IGZyb20gJy4uLy4uL3V0aWxzL2h0bWwnO1xuaW1wb3J0IHsgaGFzTm9ybWFsaXplZFNsb3QsIG5vcm1hbGl6ZVNsb3QgfSBmcm9tICcuLi8uLi91dGlscy9ub3JtYWxpemUtc2xvdCc7XG5pbXBvcnQgeyBCSW5wdXRHcm91cFByZXBlbmQgfSBmcm9tICcuL2lucHV0LWdyb3VwLXByZXBlbmQnO1xuaW1wb3J0IHsgQklucHV0R3JvdXBBcHBlbmQgfSBmcm9tICcuL2lucHV0LWdyb3VwLWFwcGVuZCc7XG5pbXBvcnQgeyBCSW5wdXRHcm91cFRleHQgfSBmcm9tICcuL2lucHV0LWdyb3VwLXRleHQnO1xudmFyIE5BTUUgPSAnQklucHV0R3JvdXAnO1xuZXhwb3J0IHZhciBwcm9wcyA9IHtcbiAgaWQ6IHtcbiAgICB0eXBlOiBTdHJpbmdcbiAgfSxcbiAgc2l6ZToge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ3NpemUnKTtcbiAgICB9XG4gIH0sXG4gIHByZXBlbmQ6IHtcbiAgICB0eXBlOiBTdHJpbmdcbiAgfSxcbiAgcHJlcGVuZEh0bWw6IHtcbiAgICB0eXBlOiBTdHJpbmdcbiAgfSxcbiAgYXBwZW5kOiB7XG4gICAgdHlwZTogU3RyaW5nXG4gIH0sXG4gIGFwcGVuZEh0bWw6IHtcbiAgICB0eXBlOiBTdHJpbmdcbiAgfSxcbiAgdGFnOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdkaXYnXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQklucHV0R3JvdXAgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6IE5BTUUsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiBwcm9wcyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgIHNsb3RzID0gX3JlZi5zbG90cyxcbiAgICAgICAgc2NvcGVkU2xvdHMgPSBfcmVmLnNjb3BlZFNsb3RzO1xuICAgIHZhciAkc2xvdHMgPSBzbG90cygpO1xuICAgIHZhciAkc2NvcGVkU2xvdHMgPSBzY29wZWRTbG90cyB8fCB7fTtcbiAgICB2YXIgY2hpbGROb2RlcyA9IFtdOyAvLyBQcmVwZW5kIHByb3Avc2xvdFxuXG4gICAgaWYgKHByb3BzLnByZXBlbmQgfHwgcHJvcHMucHJlcGVuZEh0bWwgfHwgaGFzTm9ybWFsaXplZFNsb3QoJ3ByZXBlbmQnLCAkc2NvcGVkU2xvdHMsICRzbG90cykpIHtcbiAgICAgIGNoaWxkTm9kZXMucHVzaChoKEJJbnB1dEdyb3VwUHJlcGVuZCwgWy8vIFByb3BcbiAgICAgIHByb3BzLnByZXBlbmQgfHwgcHJvcHMucHJlcGVuZEh0bWwgPyBoKEJJbnB1dEdyb3VwVGV4dCwge1xuICAgICAgICBkb21Qcm9wczogaHRtbE9yVGV4dChwcm9wcy5wcmVwZW5kSHRtbCwgcHJvcHMucHJlcGVuZClcbiAgICAgIH0pIDogaCgpLCAvLyBTbG90XG4gICAgICBub3JtYWxpemVTbG90KCdwcmVwZW5kJywge30sICRzY29wZWRTbG90cywgJHNsb3RzKSB8fCBoKCldKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNoaWxkTm9kZXMucHVzaChoKCkpO1xuICAgIH0gLy8gRGVmYXVsdCBzbG90XG5cblxuICAgIGlmIChoYXNOb3JtYWxpemVkU2xvdCgnZGVmYXVsdCcsICRzY29wZWRTbG90cywgJHNsb3RzKSkge1xuICAgICAgY2hpbGROb2Rlcy5wdXNoLmFwcGx5KGNoaWxkTm9kZXMsIF90b0NvbnN1bWFibGVBcnJheShub3JtYWxpemVTbG90KCdkZWZhdWx0Jywge30sICRzY29wZWRTbG90cywgJHNsb3RzKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGlsZE5vZGVzLnB1c2goaCgpKTtcbiAgICB9IC8vIEFwcGVuZCBwcm9wXG5cblxuICAgIGlmIChwcm9wcy5hcHBlbmQgfHwgcHJvcHMuYXBwZW5kSHRtbCB8fCBoYXNOb3JtYWxpemVkU2xvdCgnYXBwZW5kJywgJHNjb3BlZFNsb3RzLCAkc2xvdHMpKSB7XG4gICAgICBjaGlsZE5vZGVzLnB1c2goaChCSW5wdXRHcm91cEFwcGVuZCwgWy8vIHByb3BcbiAgICAgIHByb3BzLmFwcGVuZCB8fCBwcm9wcy5hcHBlbmRIdG1sID8gaChCSW5wdXRHcm91cFRleHQsIHtcbiAgICAgICAgZG9tUHJvcHM6IGh0bWxPclRleHQocHJvcHMuYXBwZW5kSHRtbCwgcHJvcHMuYXBwZW5kKVxuICAgICAgfSkgOiBoKCksIC8vIFNsb3RcbiAgICAgIG5vcm1hbGl6ZVNsb3QoJ2FwcGVuZCcsIHt9LCAkc2NvcGVkU2xvdHMsICRzbG90cykgfHwgaCgpXSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGlsZE5vZGVzLnB1c2goaCgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaChwcm9wcy50YWcsIG1lcmdlRGF0YShkYXRhLCB7XG4gICAgICBzdGF0aWNDbGFzczogJ2lucHV0LWdyb3VwJyxcbiAgICAgIGNsYXNzOiBfZGVmaW5lUHJvcGVydHkoe30sIFwiaW5wdXQtZ3JvdXAtXCIuY29uY2F0KHByb3BzLnNpemUpLCBCb29sZWFuKHByb3BzLnNpemUpKSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGlkOiBwcm9wcy5pZCB8fCBudWxsLFxuICAgICAgICByb2xlOiAnZ3JvdXAnXG4gICAgICB9XG4gICAgfSksIGNoaWxkTm9kZXMpO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwLmpzXG4vLyBtb2R1bGUgaWQgPSAxNTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///159\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ImagePlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__img__ = __webpack_require__(38);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__img_lazy__ = __webpack_require__(62);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BImg */\n/* unused harmony reexport BImgLazy */\n\n\n\nvar ImagePlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BImg: __WEBPACK_IMPORTED_MODULE_0__img__[\"a\" /* BImg */],\n BImgLazy: __WEBPACK_IMPORTED_MODULE_1__img_lazy__[\"a\" /* BImgLazy */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9pbWFnZS9pbmRleC5qcz82MzVhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2QjtBQUNTO0FBQ2M7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxVQUFVLGtEQUFJO0FBQ2QsY0FBYywyREFBUTtBQUN0QjtBQUNBLENBQUMiLCJmaWxlIjoiMTU5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkltZyB9IGZyb20gJy4vaW1nJztcbmltcG9ydCB7IEJJbWdMYXp5IH0gZnJvbSAnLi9pbWctbGF6eSc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgSW1hZ2VQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCSW1nOiBCSW1nLFxuICAgIEJJbWdMYXp5OiBCSW1nTGF6eVxuICB9XG59KTtcbmV4cG9ydCB7IEltYWdlUGx1Z2luLCBCSW1nLCBCSW1nTGF6eSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvaW1hZ2UvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE1OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///159\n"); /***/ }), /* 160 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return JumbotronPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__jumbotron__ = __webpack_require__(161);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BJumbotron */\n\n\nvar JumbotronPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BJumbotron: __WEBPACK_IMPORTED_MODULE_0__jumbotron__[\"a\" /* BJumbotron */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9qdW1ib3Ryb24vaW5kZXguanM/ZmU1YSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNXO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsZ0JBQWdCLDhEQUFVO0FBQzFCO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNjAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCSnVtYm90cm9uIH0gZnJvbSAnLi9qdW1ib3Ryb24nO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIEp1bWJvdHJvblBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJKdW1ib3Ryb246IEJKdW1ib3Ryb25cbiAgfVxufSk7XG5leHBvcnQgeyBKdW1ib3Ryb25QbHVnaW4sIEJKdW1ib3Ryb24gfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2p1bWJvdHJvbi9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTYwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///160\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return InputGroupPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__input_group__ = __webpack_require__(161);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__input_group_addon__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__input_group_prepend__ = __webpack_require__(72);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__input_group_append__ = __webpack_require__(73);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__input_group_text__ = __webpack_require__(46);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BInputGroup */\n/* unused harmony reexport BInputGroupAddon */\n/* unused harmony reexport BInputGroupPrepend */\n/* unused harmony reexport BInputGroupAppend */\n/* unused harmony reexport BInputGroupText */\n\n\n\n\n\n\nvar InputGroupPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_5__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BInputGroup: __WEBPACK_IMPORTED_MODULE_0__input_group__[\"a\" /* BInputGroup */],\n BInputGroupAddon: __WEBPACK_IMPORTED_MODULE_1__input_group_addon__[\"a\" /* BInputGroupAddon */],\n BInputGroupPrepend: __WEBPACK_IMPORTED_MODULE_2__input_group_prepend__[\"a\" /* BInputGroupPrepend */],\n BInputGroupAppend: __WEBPACK_IMPORTED_MODULE_3__input_group_append__[\"a\" /* BInputGroupAppend */],\n BInputGroupText: __WEBPACK_IMPORTED_MODULE_4__input_group_text__[\"a\" /* BInputGroupText */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9pbnB1dC1ncm91cC9pbmRleC5qcz8wOGI0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE0QztBQUNXO0FBQ0k7QUFDRjtBQUNKO0FBQ0Q7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxpQkFBaUIsaUVBQVc7QUFDNUIsc0JBQXNCLDRFQUFnQjtBQUN0Qyx3QkFBd0IsZ0ZBQWtCO0FBQzFDLHVCQUF1Qiw4RUFBaUI7QUFDeEMscUJBQXFCLDBFQUFlO0FBQ3BDO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNjAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCSW5wdXRHcm91cCB9IGZyb20gJy4vaW5wdXQtZ3JvdXAnO1xuaW1wb3J0IHsgQklucHV0R3JvdXBBZGRvbiB9IGZyb20gJy4vaW5wdXQtZ3JvdXAtYWRkb24nO1xuaW1wb3J0IHsgQklucHV0R3JvdXBQcmVwZW5kIH0gZnJvbSAnLi9pbnB1dC1ncm91cC1wcmVwZW5kJztcbmltcG9ydCB7IEJJbnB1dEdyb3VwQXBwZW5kIH0gZnJvbSAnLi9pbnB1dC1ncm91cC1hcHBlbmQnO1xuaW1wb3J0IHsgQklucHV0R3JvdXBUZXh0IH0gZnJvbSAnLi9pbnB1dC1ncm91cC10ZXh0JztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBJbnB1dEdyb3VwUGx1Z2luID1cbi8qI19fUFVSRV9fKi9cbnBsdWdpbkZhY3Rvcnkoe1xuICBjb21wb25lbnRzOiB7XG4gICAgQklucHV0R3JvdXA6IEJJbnB1dEdyb3VwLFxuICAgIEJJbnB1dEdyb3VwQWRkb246IEJJbnB1dEdyb3VwQWRkb24sXG4gICAgQklucHV0R3JvdXBQcmVwZW5kOiBCSW5wdXRHcm91cFByZXBlbmQsXG4gICAgQklucHV0R3JvdXBBcHBlbmQ6IEJJbnB1dEdyb3VwQXBwZW5kLFxuICAgIEJJbnB1dEdyb3VwVGV4dDogQklucHV0R3JvdXBUZXh0XG4gIH1cbn0pO1xuZXhwb3J0IHsgSW5wdXRHcm91cFBsdWdpbiwgQklucHV0R3JvdXAsIEJJbnB1dEdyb3VwQWRkb24sIEJJbnB1dEdyb3VwUHJlcGVuZCwgQklucHV0R3JvdXBBcHBlbmQsIEJJbnB1dEdyb3VwVGV4dCB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvaW5wdXQtZ3JvdXAvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE2MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///160\n"); /***/ }), /* 161 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BJumbotron; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_html__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__layout_container__ = __webpack_require__(74);\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 NAME = 'BJumbotron';\nvar props = {\n fluid: {\n type: Boolean,\n default: false\n },\n containerFluid: {\n type: Boolean,\n default: false\n },\n header: {\n type: String,\n default: null\n },\n headerHtml: {\n type: String,\n default: null\n },\n headerTag: {\n type: String,\n default: 'h1'\n },\n headerLevel: {\n type: [Number, String],\n default: '3'\n },\n lead: {\n type: String,\n default: null\n },\n leadHtml: {\n type: String,\n default: null\n },\n leadTag: {\n type: String,\n default: 'p'\n },\n tag: {\n type: String,\n default: 'div'\n },\n bgVariant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'bgVariant');\n }\n },\n borderVariant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'borderVariant');\n }\n },\n textVariant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'textVariant');\n }\n }\n}; // @vue/component\n\nvar BJumbotron =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class2;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n // The order of the conditionals matter.\n // We are building the component markup in order.\n var childNodes = [];\n var $slots = slots();\n var $scopedSlots = scopedSlots || {}; // Header\n\n if (props.header || Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"a\" /* hasNormalizedSlot */])('header', $scopedSlots, $slots) || props.headerHtml) {\n childNodes.push(h(props.headerTag, {\n class: _defineProperty({}, \"display-\".concat(props.headerLevel), Boolean(props.headerLevel))\n }, Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"b\" /* normalizeSlot */])('header', {}, $scopedSlots, $slots) || props.headerHtml || Object(__WEBPACK_IMPORTED_MODULE_3__utils_html__[\"b\" /* stripTags */])(props.header)));\n } // Lead\n\n\n if (props.lead || Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"a\" /* hasNormalizedSlot */])('lead', $scopedSlots, $slots) || props.leadHtml) {\n childNodes.push(h(props.leadTag, {\n staticClass: 'lead'\n }, Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"b\" /* normalizeSlot */])('lead', {}, $scopedSlots, $slots) || props.leadHtml || Object(__WEBPACK_IMPORTED_MODULE_3__utils_html__[\"b\" /* stripTags */])(props.lead)));\n } // Default slot\n\n\n if (Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"a\" /* hasNormalizedSlot */])('default', $scopedSlots, $slots)) {\n childNodes.push(Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"b\" /* normalizeSlot */])('default', {}, $scopedSlots, $slots));\n } // If fluid, wrap content in a container/container-fluid\n\n\n if (props.fluid) {\n // Children become a child of a container\n childNodes = [h(__WEBPACK_IMPORTED_MODULE_5__layout_container__[\"a\" /* BContainer */], {\n props: {\n fluid: props.containerFluid\n }\n }, childNodes)];\n } // Return the jumbotron\n\n\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'jumbotron',\n class: (_class2 = {\n 'jumbotron-fluid': props.fluid\n }, _defineProperty(_class2, \"text-\".concat(props.textVariant), Boolean(props.textVariant)), _defineProperty(_class2, \"bg-\".concat(props.bgVariant), Boolean(props.bgVariant)), _defineProperty(_class2, \"border-\".concat(props.borderVariant), Boolean(props.borderVariant)), _defineProperty(_class2, \"border\", Boolean(props.borderVariant)), _class2)\n }), childNodes);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9qdW1ib3Ryb24vanVtYm90cm9uLmpzP2RlMmMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNvQjtBQUNFO0FBQ1g7QUFDaUM7QUFDN0I7QUFDakQ7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7O0FBRXpDLHdCQUF3Qix3RkFBaUI7QUFDekM7QUFDQSxpQ0FBaUM7QUFDakMsT0FBTyxFQUFFLG9GQUFhLGFBQWEsK0NBQStDLHNFQUFTO0FBQzNGLEtBQUs7OztBQUdMLHNCQUFzQix3RkFBaUI7QUFDdkM7QUFDQTtBQUNBLE9BQU8sRUFBRSxvRkFBYSxXQUFXLDZDQUE2QyxzRUFBUztBQUN2RixLQUFLOzs7QUFHTCxRQUFRLHdGQUFpQjtBQUN6QixzQkFBc0Isb0ZBQWEsY0FBYztBQUNqRCxLQUFLOzs7QUFHTDtBQUNBO0FBQ0Esc0JBQXNCLHFFQUFVO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOzs7QUFHTCx3QkFBd0Isb0ZBQVM7QUFDakM7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMTYxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgbWVyZ2VEYXRhIH0gZnJvbSAndnVlLWZ1bmN0aW9uYWwtZGF0YS1tZXJnZSc7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi8uLi91dGlscy9jb25maWcnO1xuaW1wb3J0IHsgc3RyaXBUYWdzIH0gZnJvbSAnLi4vLi4vdXRpbHMvaHRtbCc7XG5pbXBvcnQgeyBoYXNOb3JtYWxpemVkU2xvdCwgbm9ybWFsaXplU2xvdCB9IGZyb20gJy4uLy4uL3V0aWxzL25vcm1hbGl6ZS1zbG90JztcbmltcG9ydCB7IEJDb250YWluZXIgfSBmcm9tICcuLi9sYXlvdXQvY29udGFpbmVyJztcbnZhciBOQU1FID0gJ0JKdW1ib3Ryb24nO1xuZXhwb3J0IHZhciBwcm9wcyA9IHtcbiAgZmx1aWQ6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIGNvbnRhaW5lckZsdWlkOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBoZWFkZXI6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBoZWFkZXJIdG1sOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgaGVhZGVyVGFnOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdoMSdcbiAgfSxcbiAgaGVhZGVyTGV2ZWw6IHtcbiAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxuICAgIGRlZmF1bHQ6ICczJ1xuICB9LFxuICBsZWFkOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgbGVhZEh0bWw6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBsZWFkVGFnOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdwJ1xuICB9LFxuICB0YWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ2RpdidcbiAgfSxcbiAgYmdWYXJpYW50OiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAnYmdWYXJpYW50Jyk7XG4gICAgfVxuICB9LFxuICBib3JkZXJWYXJpYW50OiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAnYm9yZGVyVmFyaWFudCcpO1xuICAgIH1cbiAgfSxcbiAgdGV4dFZhcmlhbnQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICd0ZXh0VmFyaWFudCcpO1xuICAgIH1cbiAgfVxufTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCSnVtYm90cm9uID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogcHJvcHMsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgX2NsYXNzMjtcblxuICAgIHZhciBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgIHNsb3RzID0gX3JlZi5zbG90cyxcbiAgICAgICAgc2NvcGVkU2xvdHMgPSBfcmVmLnNjb3BlZFNsb3RzO1xuICAgIC8vIFRoZSBvcmRlciBvZiB0aGUgY29uZGl0aW9uYWxzIG1hdHRlci5cbiAgICAvLyBXZSBhcmUgYnVpbGRpbmcgdGhlIGNvbXBvbmVudCBtYXJrdXAgaW4gb3JkZXIuXG4gICAgdmFyIGNoaWxkTm9kZXMgPSBbXTtcbiAgICB2YXIgJHNsb3RzID0gc2xvdHMoKTtcbiAgICB2YXIgJHNjb3BlZFNsb3RzID0gc2NvcGVkU2xvdHMgfHwge307IC8vIEhlYWRlclxuXG4gICAgaWYgKHByb3BzLmhlYWRlciB8fCBoYXNOb3JtYWxpemVkU2xvdCgnaGVhZGVyJywgJHNjb3BlZFNsb3RzLCAkc2xvdHMpIHx8IHByb3BzLmhlYWRlckh0bWwpIHtcbiAgICAgIGNoaWxkTm9kZXMucHVzaChoKHByb3BzLmhlYWRlclRhZywge1xuICAgICAgICBjbGFzczogX2RlZmluZVByb3BlcnR5KHt9LCBcImRpc3BsYXktXCIuY29uY2F0KHByb3BzLmhlYWRlckxldmVsKSwgQm9vbGVhbihwcm9wcy5oZWFkZXJMZXZlbCkpXG4gICAgICB9LCBub3JtYWxpemVTbG90KCdoZWFkZXInLCB7fSwgJHNjb3BlZFNsb3RzLCAkc2xvdHMpIHx8IHByb3BzLmhlYWRlckh0bWwgfHwgc3RyaXBUYWdzKHByb3BzLmhlYWRlcikpKTtcbiAgICB9IC8vIExlYWRcblxuXG4gICAgaWYgKHByb3BzLmxlYWQgfHwgaGFzTm9ybWFsaXplZFNsb3QoJ2xlYWQnLCAkc2NvcGVkU2xvdHMsICRzbG90cykgfHwgcHJvcHMubGVhZEh0bWwpIHtcbiAgICAgIGNoaWxkTm9kZXMucHVzaChoKHByb3BzLmxlYWRUYWcsIHtcbiAgICAgICAgc3RhdGljQ2xhc3M6ICdsZWFkJ1xuICAgICAgfSwgbm9ybWFsaXplU2xvdCgnbGVhZCcsIHt9LCAkc2NvcGVkU2xvdHMsICRzbG90cykgfHwgcHJvcHMubGVhZEh0bWwgfHwgc3RyaXBUYWdzKHByb3BzLmxlYWQpKSk7XG4gICAgfSAvLyBEZWZhdWx0IHNsb3RcblxuXG4gICAgaWYgKGhhc05vcm1hbGl6ZWRTbG90KCdkZWZhdWx0JywgJHNjb3BlZFNsb3RzLCAkc2xvdHMpKSB7XG4gICAgICBjaGlsZE5vZGVzLnB1c2gobm9ybWFsaXplU2xvdCgnZGVmYXVsdCcsIHt9LCAkc2NvcGVkU2xvdHMsICRzbG90cykpO1xuICAgIH0gLy8gSWYgZmx1aWQsIHdyYXAgY29udGVudCBpbiBhIGNvbnRhaW5lci9jb250YWluZXItZmx1aWRcblxuXG4gICAgaWYgKHByb3BzLmZsdWlkKSB7XG4gICAgICAvLyBDaGlsZHJlbiBiZWNvbWUgYSBjaGlsZCBvZiBhIGNvbnRhaW5lclxuICAgICAgY2hpbGROb2RlcyA9IFtoKEJDb250YWluZXIsIHtcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBmbHVpZDogcHJvcHMuY29udGFpbmVyRmx1aWRcbiAgICAgICAgfVxuICAgICAgfSwgY2hpbGROb2RlcyldO1xuICAgIH0gLy8gUmV0dXJuIHRoZSBqdW1ib3Ryb25cblxuXG4gICAgcmV0dXJuIGgocHJvcHMudGFnLCBtZXJnZURhdGEoZGF0YSwge1xuICAgICAgc3RhdGljQ2xhc3M6ICdqdW1ib3Ryb24nLFxuICAgICAgY2xhc3M6IChfY2xhc3MyID0ge1xuICAgICAgICAnanVtYm90cm9uLWZsdWlkJzogcHJvcHMuZmx1aWRcbiAgICAgIH0sIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3MyLCBcInRleHQtXCIuY29uY2F0KHByb3BzLnRleHRWYXJpYW50KSwgQm9vbGVhbihwcm9wcy50ZXh0VmFyaWFudCkpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzMiwgXCJiZy1cIi5jb25jYXQocHJvcHMuYmdWYXJpYW50KSwgQm9vbGVhbihwcm9wcy5iZ1ZhcmlhbnQpKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzczIsIFwiYm9yZGVyLVwiLmNvbmNhdChwcm9wcy5ib3JkZXJWYXJpYW50KSwgQm9vbGVhbihwcm9wcy5ib3JkZXJWYXJpYW50KSksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3MyLCBcImJvcmRlclwiLCBCb29sZWFuKHByb3BzLmJvcmRlclZhcmlhbnQpKSwgX2NsYXNzMilcbiAgICB9KSwgY2hpbGROb2Rlcyk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvanVtYm90cm9uL2p1bWJvdHJvbi5qc1xuLy8gbW9kdWxlIGlkID0gMTYxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///161\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BInputGroup; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_html__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__input_group_prepend__ = __webpack_require__(72);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__input_group_append__ = __webpack_require__(73);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__input_group_text__ = __webpack_require__(46);\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 _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\n\n\n\n\n\n\n\n\nvar NAME = 'BInputGroup';\nvar props = {\n id: {\n type: String\n },\n size: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'size');\n }\n },\n prepend: {\n type: String\n },\n prependHtml: {\n type: String\n },\n append: {\n type: String\n },\n appendHtml: {\n type: String\n },\n tag: {\n type: String,\n default: 'div'\n }\n}; // @vue/component\n\nvar BInputGroup =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var childNodes = []; // Prepend prop/slot\n\n if (props.prepend || props.prependHtml || Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"a\" /* hasNormalizedSlot */])('prepend', $scopedSlots, $slots)) {\n childNodes.push(h(__WEBPACK_IMPORTED_MODULE_5__input_group_prepend__[\"a\" /* BInputGroupPrepend */], [// Prop\n props.prepend || props.prependHtml ? h(__WEBPACK_IMPORTED_MODULE_7__input_group_text__[\"a\" /* BInputGroupText */], {\n domProps: Object(__WEBPACK_IMPORTED_MODULE_3__utils_html__[\"a\" /* htmlOrText */])(props.prependHtml, props.prepend)\n }) : h(), // Slot\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"b\" /* normalizeSlot */])('prepend', {}, $scopedSlots, $slots) || h()]));\n } else {\n childNodes.push(h());\n } // Default slot\n\n\n if (Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"a\" /* hasNormalizedSlot */])('default', $scopedSlots, $slots)) {\n childNodes.push.apply(childNodes, _toConsumableArray(Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"b\" /* normalizeSlot */])('default', {}, $scopedSlots, $slots)));\n } else {\n childNodes.push(h());\n } // Append prop\n\n\n if (props.append || props.appendHtml || Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"a\" /* hasNormalizedSlot */])('append', $scopedSlots, $slots)) {\n childNodes.push(h(__WEBPACK_IMPORTED_MODULE_6__input_group_append__[\"a\" /* BInputGroupAppend */], [// prop\n props.append || props.appendHtml ? h(__WEBPACK_IMPORTED_MODULE_7__input_group_text__[\"a\" /* BInputGroupText */], {\n domProps: Object(__WEBPACK_IMPORTED_MODULE_3__utils_html__[\"a\" /* htmlOrText */])(props.appendHtml, props.append)\n }) : h(), // Slot\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"b\" /* normalizeSlot */])('append', {}, $scopedSlots, $slots) || h()]));\n } else {\n childNodes.push(h());\n }\n\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'input-group',\n class: _defineProperty({}, \"input-group-\".concat(props.size), Boolean(props.size)),\n attrs: {\n id: props.id || null,\n role: 'group'\n }\n }), childNodes);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC5qcz9iZWJmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRS9NLGtDQUFrQyxpRkFBaUY7O0FBRW5ILCtCQUErQix3RUFBd0U7O0FBRXZHLGlDQUFpQywrSEFBK0g7O0FBRWhLLGtDQUFrQywwQkFBMEIsOENBQThDLGdCQUFnQixPQUFPLGtCQUFrQixFQUFFLGFBQWEsRUFBRTs7QUFFbEk7QUFDb0I7QUFDRTtBQUNWO0FBQ2dDO0FBQ25CO0FBQ0Y7QUFDSjtBQUNyRDtBQUNPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qjs7QUFFeEIsOENBQThDLHdGQUFpQjtBQUMvRCx3QkFBd0IsZ0ZBQWtCO0FBQzFDLDZDQUE2QywwRUFBZTtBQUM1RCxrQkFBa0IsdUVBQVU7QUFDNUIsT0FBTztBQUNQLE1BQU0sb0ZBQWEsY0FBYztBQUNqQyxLQUFLO0FBQ0w7QUFDQSxLQUFLOzs7QUFHTCxRQUFRLHdGQUFpQjtBQUN6QiwyREFBMkQsb0ZBQWEsY0FBYztBQUN0RixLQUFLO0FBQ0w7QUFDQSxLQUFLOzs7QUFHTCw0Q0FBNEMsd0ZBQWlCO0FBQzdELHdCQUF3Qiw4RUFBaUI7QUFDekMsMkNBQTJDLDBFQUFlO0FBQzFELGtCQUFrQix1RUFBVTtBQUM1QixPQUFPO0FBQ1AsTUFBTSxvRkFBYSxhQUFhO0FBQ2hDLEtBQUs7QUFDTDtBQUNBOztBQUVBLHdCQUF3QixvRkFBUztBQUNqQztBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMTYxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikgeyByZXR1cm4gX2FycmF5V2l0aG91dEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF9ub25JdGVyYWJsZVNwcmVhZCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpOyB9XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkoaXRlcikgeyBpZiAoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChpdGVyKSB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaXRlcikgPT09IFwiW29iamVjdCBBcmd1bWVudHNdXCIpIHJldHVybiBBcnJheS5mcm9tKGl0ZXIpOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgeyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShhcnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9IH1cblxuaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgbWVyZ2VEYXRhIH0gZnJvbSAndnVlLWZ1bmN0aW9uYWwtZGF0YS1tZXJnZSc7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi8uLi91dGlscy9jb25maWcnO1xuaW1wb3J0IHsgaHRtbE9yVGV4dCB9IGZyb20gJy4uLy4uL3V0aWxzL2h0bWwnO1xuaW1wb3J0IHsgaGFzTm9ybWFsaXplZFNsb3QsIG5vcm1hbGl6ZVNsb3QgfSBmcm9tICcuLi8uLi91dGlscy9ub3JtYWxpemUtc2xvdCc7XG5pbXBvcnQgeyBCSW5wdXRHcm91cFByZXBlbmQgfSBmcm9tICcuL2lucHV0LWdyb3VwLXByZXBlbmQnO1xuaW1wb3J0IHsgQklucHV0R3JvdXBBcHBlbmQgfSBmcm9tICcuL2lucHV0LWdyb3VwLWFwcGVuZCc7XG5pbXBvcnQgeyBCSW5wdXRHcm91cFRleHQgfSBmcm9tICcuL2lucHV0LWdyb3VwLXRleHQnO1xudmFyIE5BTUUgPSAnQklucHV0R3JvdXAnO1xuZXhwb3J0IHZhciBwcm9wcyA9IHtcbiAgaWQ6IHtcbiAgICB0eXBlOiBTdHJpbmdcbiAgfSxcbiAgc2l6ZToge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ3NpemUnKTtcbiAgICB9XG4gIH0sXG4gIHByZXBlbmQ6IHtcbiAgICB0eXBlOiBTdHJpbmdcbiAgfSxcbiAgcHJlcGVuZEh0bWw6IHtcbiAgICB0eXBlOiBTdHJpbmdcbiAgfSxcbiAgYXBwZW5kOiB7XG4gICAgdHlwZTogU3RyaW5nXG4gIH0sXG4gIGFwcGVuZEh0bWw6IHtcbiAgICB0eXBlOiBTdHJpbmdcbiAgfSxcbiAgdGFnOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdkaXYnXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQklucHV0R3JvdXAgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6IE5BTUUsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiBwcm9wcyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgIHNsb3RzID0gX3JlZi5zbG90cyxcbiAgICAgICAgc2NvcGVkU2xvdHMgPSBfcmVmLnNjb3BlZFNsb3RzO1xuICAgIHZhciAkc2xvdHMgPSBzbG90cygpO1xuICAgIHZhciAkc2NvcGVkU2xvdHMgPSBzY29wZWRTbG90cyB8fCB7fTtcbiAgICB2YXIgY2hpbGROb2RlcyA9IFtdOyAvLyBQcmVwZW5kIHByb3Avc2xvdFxuXG4gICAgaWYgKHByb3BzLnByZXBlbmQgfHwgcHJvcHMucHJlcGVuZEh0bWwgfHwgaGFzTm9ybWFsaXplZFNsb3QoJ3ByZXBlbmQnLCAkc2NvcGVkU2xvdHMsICRzbG90cykpIHtcbiAgICAgIGNoaWxkTm9kZXMucHVzaChoKEJJbnB1dEdyb3VwUHJlcGVuZCwgWy8vIFByb3BcbiAgICAgIHByb3BzLnByZXBlbmQgfHwgcHJvcHMucHJlcGVuZEh0bWwgPyBoKEJJbnB1dEdyb3VwVGV4dCwge1xuICAgICAgICBkb21Qcm9wczogaHRtbE9yVGV4dChwcm9wcy5wcmVwZW5kSHRtbCwgcHJvcHMucHJlcGVuZClcbiAgICAgIH0pIDogaCgpLCAvLyBTbG90XG4gICAgICBub3JtYWxpemVTbG90KCdwcmVwZW5kJywge30sICRzY29wZWRTbG90cywgJHNsb3RzKSB8fCBoKCldKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNoaWxkTm9kZXMucHVzaChoKCkpO1xuICAgIH0gLy8gRGVmYXVsdCBzbG90XG5cblxuICAgIGlmIChoYXNOb3JtYWxpemVkU2xvdCgnZGVmYXVsdCcsICRzY29wZWRTbG90cywgJHNsb3RzKSkge1xuICAgICAgY2hpbGROb2Rlcy5wdXNoLmFwcGx5KGNoaWxkTm9kZXMsIF90b0NvbnN1bWFibGVBcnJheShub3JtYWxpemVTbG90KCdkZWZhdWx0Jywge30sICRzY29wZWRTbG90cywgJHNsb3RzKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGlsZE5vZGVzLnB1c2goaCgpKTtcbiAgICB9IC8vIEFwcGVuZCBwcm9wXG5cblxuICAgIGlmIChwcm9wcy5hcHBlbmQgfHwgcHJvcHMuYXBwZW5kSHRtbCB8fCBoYXNOb3JtYWxpemVkU2xvdCgnYXBwZW5kJywgJHNjb3BlZFNsb3RzLCAkc2xvdHMpKSB7XG4gICAgICBjaGlsZE5vZGVzLnB1c2goaChCSW5wdXRHcm91cEFwcGVuZCwgWy8vIHByb3BcbiAgICAgIHByb3BzLmFwcGVuZCB8fCBwcm9wcy5hcHBlbmRIdG1sID8gaChCSW5wdXRHcm91cFRleHQsIHtcbiAgICAgICAgZG9tUHJvcHM6IGh0bWxPclRleHQocHJvcHMuYXBwZW5kSHRtbCwgcHJvcHMuYXBwZW5kKVxuICAgICAgfSkgOiBoKCksIC8vIFNsb3RcbiAgICAgIG5vcm1hbGl6ZVNsb3QoJ2FwcGVuZCcsIHt9LCAkc2NvcGVkU2xvdHMsICRzbG90cykgfHwgaCgpXSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGlsZE5vZGVzLnB1c2goaCgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaChwcm9wcy50YWcsIG1lcmdlRGF0YShkYXRhLCB7XG4gICAgICBzdGF0aWNDbGFzczogJ2lucHV0LWdyb3VwJyxcbiAgICAgIGNsYXNzOiBfZGVmaW5lUHJvcGVydHkoe30sIFwiaW5wdXQtZ3JvdXAtXCIuY29uY2F0KHByb3BzLnNpemUpLCBCb29sZWFuKHByb3BzLnNpemUpKSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGlkOiBwcm9wcy5pZCB8fCBudWxsLFxuICAgICAgICByb2xlOiAnZ3JvdXAnXG4gICAgICB9XG4gICAgfSksIGNoaWxkTm9kZXMpO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwLmpzXG4vLyBtb2R1bGUgaWQgPSAxNjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///161\n"); /***/ }), /* 162 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return LayoutPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__container__ = __webpack_require__(74);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__row__ = __webpack_require__(163);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__col__ = __webpack_require__(69);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__form_row__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BContainer */\n/* unused harmony reexport BRow */\n/* unused harmony reexport BCol */\n/* unused harmony reexport BFormRow */\n\n\n\n\n\nvar LayoutPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_4__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BContainer: __WEBPACK_IMPORTED_MODULE_0__container__[\"a\" /* BContainer */],\n BRow: __WEBPACK_IMPORTED_MODULE_1__row__[\"a\" /* BRow */],\n BCol: __WEBPACK_IMPORTED_MODULE_2__col__[\"a\" /* BCol */],\n BFormRow: __WEBPACK_IMPORTED_MODULE_3__form_row__[\"a\" /* BFormRow */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9sYXlvdXQvaW5kZXguanM/NzY4ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNaO0FBQ0E7QUFDUztBQUNjO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsZ0JBQWdCLDhEQUFVO0FBQzFCLFVBQVUsa0RBQUk7QUFDZCxVQUFVLGtEQUFJO0FBQ2QsY0FBYywyREFBUTtBQUN0QjtBQUNBLENBQUMiLCJmaWxlIjoiMTYyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkNvbnRhaW5lciB9IGZyb20gJy4vY29udGFpbmVyJztcbmltcG9ydCB7IEJSb3cgfSBmcm9tICcuL3Jvdyc7XG5pbXBvcnQgeyBCQ29sIH0gZnJvbSAnLi9jb2wnO1xuaW1wb3J0IHsgQkZvcm1Sb3cgfSBmcm9tICcuL2Zvcm0tcm93JztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBMYXlvdXRQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCQ29udGFpbmVyOiBCQ29udGFpbmVyLFxuICAgIEJSb3c6IEJSb3csXG4gICAgQkNvbDogQkNvbCxcbiAgICBCRm9ybVJvdzogQkZvcm1Sb3dcbiAgfVxufSk7XG5leHBvcnQgeyBMYXlvdXRQbHVnaW4sIEJDb250YWluZXIsIEJSb3csIEJDb2wsIEJGb3JtUm93IH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9sYXlvdXQvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE2MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///162\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return JumbotronPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__jumbotron__ = __webpack_require__(163);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BJumbotron */\n\n\nvar JumbotronPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BJumbotron: __WEBPACK_IMPORTED_MODULE_0__jumbotron__[\"a\" /* BJumbotron */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9qdW1ib3Ryb24vaW5kZXguanM/ZmU1YSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNXO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsZ0JBQWdCLDhEQUFVO0FBQzFCO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNjIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCSnVtYm90cm9uIH0gZnJvbSAnLi9qdW1ib3Ryb24nO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIEp1bWJvdHJvblBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJKdW1ib3Ryb246IEJKdW1ib3Ryb25cbiAgfVxufSk7XG5leHBvcnQgeyBKdW1ib3Ryb25QbHVnaW4sIEJKdW1ib3Ryb24gfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2p1bWJvdHJvbi9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTYyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///162\n"); /***/ }), /* 163 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BRow; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_array__ = __webpack_require__(7);\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\nvar COMMON_ALIGNMENT = ['start', 'end', 'center'];\nvar props = {\n tag: {\n type: String,\n default: 'div'\n },\n noGutters: {\n type: Boolean,\n default: false\n },\n alignV: {\n type: String,\n default: null,\n validator: function validator(str) {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"a\" /* arrayIncludes */])(COMMON_ALIGNMENT.concat(['baseline', 'stretch']), str);\n }\n },\n alignH: {\n type: String,\n default: null,\n validator: function validator(str) {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"a\" /* arrayIncludes */])(COMMON_ALIGNMENT.concat(['between', 'around']), str);\n }\n },\n alignContent: {\n type: String,\n default: null,\n validator: function validator(str) {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"a\" /* arrayIncludes */])(COMMON_ALIGNMENT.concat(['between', 'around', 'stretch']), str);\n }\n }\n}; // @vue/component\n\nvar BRow =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BRow',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'row',\n class: (_class = {\n 'no-gutters': props.noGutters\n }, _defineProperty(_class, \"align-items-\".concat(props.alignV), props.alignV), _defineProperty(_class, \"justify-content-\".concat(props.alignH), props.alignH), _defineProperty(_class, \"align-content-\".concat(props.alignContent), props.alignContent), _class)\n }), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9sYXlvdXQvcm93LmpzPzEzOGMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNvQjtBQUNKO0FBQ2xEO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSwyRUFBYTtBQUMxQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsMkVBQWE7QUFDMUI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDJFQUFhO0FBQzFCO0FBQ0E7QUFDQSxFQUFFOztBQUVLO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLG9GQUFTO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjE2My5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IG1lcmdlRGF0YSB9IGZyb20gJ3Z1ZS1mdW5jdGlvbmFsLWRhdGEtbWVyZ2UnO1xuaW1wb3J0IHsgYXJyYXlJbmNsdWRlcyB9IGZyb20gJy4uLy4uL3V0aWxzL2FycmF5JztcbnZhciBDT01NT05fQUxJR05NRU5UID0gWydzdGFydCcsICdlbmQnLCAnY2VudGVyJ107XG5leHBvcnQgdmFyIHByb3BzID0ge1xuICB0YWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ2RpdidcbiAgfSxcbiAgbm9HdXR0ZXJzOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBhbGlnblY6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbCxcbiAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzdHIpIHtcbiAgICAgIHJldHVybiBhcnJheUluY2x1ZGVzKENPTU1PTl9BTElHTk1FTlQuY29uY2F0KFsnYmFzZWxpbmUnLCAnc3RyZXRjaCddKSwgc3RyKTtcbiAgICB9XG4gIH0sXG4gIGFsaWduSDoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBudWxsLFxuICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHN0cikge1xuICAgICAgcmV0dXJuIGFycmF5SW5jbHVkZXMoQ09NTU9OX0FMSUdOTUVOVC5jb25jYXQoWydiZXR3ZWVuJywgJ2Fyb3VuZCddKSwgc3RyKTtcbiAgICB9XG4gIH0sXG4gIGFsaWduQ29udGVudDoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBudWxsLFxuICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHN0cikge1xuICAgICAgcmV0dXJuIGFycmF5SW5jbHVkZXMoQ09NTU9OX0FMSUdOTUVOVC5jb25jYXQoWydiZXR3ZWVuJywgJ2Fyb3VuZCcsICdzdHJldGNoJ10pLCBzdHIpO1xuICAgIH1cbiAgfVxufTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCUm93ID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQlJvdycsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiBwcm9wcyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBfY2xhc3M7XG5cbiAgICB2YXIgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgICBkYXRhID0gX3JlZi5kYXRhLFxuICAgICAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW47XG4gICAgcmV0dXJuIGgocHJvcHMudGFnLCBtZXJnZURhdGEoZGF0YSwge1xuICAgICAgc3RhdGljQ2xhc3M6ICdyb3cnLFxuICAgICAgY2xhc3M6IChfY2xhc3MgPSB7XG4gICAgICAgICduby1ndXR0ZXJzJzogcHJvcHMubm9HdXR0ZXJzXG4gICAgICB9LCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzLCBcImFsaWduLWl0ZW1zLVwiLmNvbmNhdChwcm9wcy5hbGlnblYpLCBwcm9wcy5hbGlnblYpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzLCBcImp1c3RpZnktY29udGVudC1cIi5jb25jYXQocHJvcHMuYWxpZ25IKSwgcHJvcHMuYWxpZ25IKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJhbGlnbi1jb250ZW50LVwiLmNvbmNhdChwcm9wcy5hbGlnbkNvbnRlbnQpLCBwcm9wcy5hbGlnbkNvbnRlbnQpLCBfY2xhc3MpXG4gICAgfSksIGNoaWxkcmVuKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9sYXlvdXQvcm93LmpzXG4vLyBtb2R1bGUgaWQgPSAxNjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///163\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BJumbotron; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_html__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__layout_container__ = __webpack_require__(74);\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 NAME = 'BJumbotron';\nvar props = {\n fluid: {\n type: Boolean,\n default: false\n },\n containerFluid: {\n type: Boolean,\n default: false\n },\n header: {\n type: String,\n default: null\n },\n headerHtml: {\n type: String,\n default: null\n },\n headerTag: {\n type: String,\n default: 'h1'\n },\n headerLevel: {\n type: [Number, String],\n default: '3'\n },\n lead: {\n type: String,\n default: null\n },\n leadHtml: {\n type: String,\n default: null\n },\n leadTag: {\n type: String,\n default: 'p'\n },\n tag: {\n type: String,\n default: 'div'\n },\n bgVariant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'bgVariant');\n }\n },\n borderVariant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'borderVariant');\n }\n },\n textVariant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'textVariant');\n }\n }\n}; // @vue/component\n\nvar BJumbotron =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class2;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n // The order of the conditionals matter.\n // We are building the component markup in order.\n var childNodes = [];\n var $slots = slots();\n var $scopedSlots = scopedSlots || {}; // Header\n\n if (props.header || Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"a\" /* hasNormalizedSlot */])('header', $scopedSlots, $slots) || props.headerHtml) {\n childNodes.push(h(props.headerTag, {\n class: _defineProperty({}, \"display-\".concat(props.headerLevel), Boolean(props.headerLevel))\n }, Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"b\" /* normalizeSlot */])('header', {}, $scopedSlots, $slots) || props.headerHtml || Object(__WEBPACK_IMPORTED_MODULE_3__utils_html__[\"b\" /* stripTags */])(props.header)));\n } // Lead\n\n\n if (props.lead || Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"a\" /* hasNormalizedSlot */])('lead', $scopedSlots, $slots) || props.leadHtml) {\n childNodes.push(h(props.leadTag, {\n staticClass: 'lead'\n }, Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"b\" /* normalizeSlot */])('lead', {}, $scopedSlots, $slots) || props.leadHtml || Object(__WEBPACK_IMPORTED_MODULE_3__utils_html__[\"b\" /* stripTags */])(props.lead)));\n } // Default slot\n\n\n if (Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"a\" /* hasNormalizedSlot */])('default', $scopedSlots, $slots)) {\n childNodes.push(Object(__WEBPACK_IMPORTED_MODULE_4__utils_normalize_slot__[\"b\" /* normalizeSlot */])('default', {}, $scopedSlots, $slots));\n } // If fluid, wrap content in a container/container-fluid\n\n\n if (props.fluid) {\n // Children become a child of a container\n childNodes = [h(__WEBPACK_IMPORTED_MODULE_5__layout_container__[\"a\" /* BContainer */], {\n props: {\n fluid: props.containerFluid\n }\n }, childNodes)];\n } // Return the jumbotron\n\n\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'jumbotron',\n class: (_class2 = {\n 'jumbotron-fluid': props.fluid\n }, _defineProperty(_class2, \"text-\".concat(props.textVariant), Boolean(props.textVariant)), _defineProperty(_class2, \"bg-\".concat(props.bgVariant), Boolean(props.bgVariant)), _defineProperty(_class2, \"border-\".concat(props.borderVariant), Boolean(props.borderVariant)), _defineProperty(_class2, \"border\", Boolean(props.borderVariant)), _class2)\n }), childNodes);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9qdW1ib3Ryb24vanVtYm90cm9uLmpzP2RlMmMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNvQjtBQUNFO0FBQ1g7QUFDaUM7QUFDN0I7QUFDakQ7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7O0FBRXpDLHdCQUF3Qix3RkFBaUI7QUFDekM7QUFDQSxpQ0FBaUM7QUFDakMsT0FBTyxFQUFFLG9GQUFhLGFBQWEsK0NBQStDLHNFQUFTO0FBQzNGLEtBQUs7OztBQUdMLHNCQUFzQix3RkFBaUI7QUFDdkM7QUFDQTtBQUNBLE9BQU8sRUFBRSxvRkFBYSxXQUFXLDZDQUE2QyxzRUFBUztBQUN2RixLQUFLOzs7QUFHTCxRQUFRLHdGQUFpQjtBQUN6QixzQkFBc0Isb0ZBQWEsY0FBYztBQUNqRCxLQUFLOzs7QUFHTDtBQUNBO0FBQ0Esc0JBQXNCLHFFQUFVO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOzs7QUFHTCx3QkFBd0Isb0ZBQVM7QUFDakM7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMTYzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgbWVyZ2VEYXRhIH0gZnJvbSAndnVlLWZ1bmN0aW9uYWwtZGF0YS1tZXJnZSc7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi8uLi91dGlscy9jb25maWcnO1xuaW1wb3J0IHsgc3RyaXBUYWdzIH0gZnJvbSAnLi4vLi4vdXRpbHMvaHRtbCc7XG5pbXBvcnQgeyBoYXNOb3JtYWxpemVkU2xvdCwgbm9ybWFsaXplU2xvdCB9IGZyb20gJy4uLy4uL3V0aWxzL25vcm1hbGl6ZS1zbG90JztcbmltcG9ydCB7IEJDb250YWluZXIgfSBmcm9tICcuLi9sYXlvdXQvY29udGFpbmVyJztcbnZhciBOQU1FID0gJ0JKdW1ib3Ryb24nO1xuZXhwb3J0IHZhciBwcm9wcyA9IHtcbiAgZmx1aWQ6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIGNvbnRhaW5lckZsdWlkOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBoZWFkZXI6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBoZWFkZXJIdG1sOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgaGVhZGVyVGFnOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdoMSdcbiAgfSxcbiAgaGVhZGVyTGV2ZWw6IHtcbiAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxuICAgIGRlZmF1bHQ6ICczJ1xuICB9LFxuICBsZWFkOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgbGVhZEh0bWw6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBsZWFkVGFnOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdwJ1xuICB9LFxuICB0YWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ2RpdidcbiAgfSxcbiAgYmdWYXJpYW50OiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAnYmdWYXJpYW50Jyk7XG4gICAgfVxuICB9LFxuICBib3JkZXJWYXJpYW50OiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAnYm9yZGVyVmFyaWFudCcpO1xuICAgIH1cbiAgfSxcbiAgdGV4dFZhcmlhbnQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICd0ZXh0VmFyaWFudCcpO1xuICAgIH1cbiAgfVxufTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCSnVtYm90cm9uID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogcHJvcHMsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgX2NsYXNzMjtcblxuICAgIHZhciBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgIHNsb3RzID0gX3JlZi5zbG90cyxcbiAgICAgICAgc2NvcGVkU2xvdHMgPSBfcmVmLnNjb3BlZFNsb3RzO1xuICAgIC8vIFRoZSBvcmRlciBvZiB0aGUgY29uZGl0aW9uYWxzIG1hdHRlci5cbiAgICAvLyBXZSBhcmUgYnVpbGRpbmcgdGhlIGNvbXBvbmVudCBtYXJrdXAgaW4gb3JkZXIuXG4gICAgdmFyIGNoaWxkTm9kZXMgPSBbXTtcbiAgICB2YXIgJHNsb3RzID0gc2xvdHMoKTtcbiAgICB2YXIgJHNjb3BlZFNsb3RzID0gc2NvcGVkU2xvdHMgfHwge307IC8vIEhlYWRlclxuXG4gICAgaWYgKHByb3BzLmhlYWRlciB8fCBoYXNOb3JtYWxpemVkU2xvdCgnaGVhZGVyJywgJHNjb3BlZFNsb3RzLCAkc2xvdHMpIHx8IHByb3BzLmhlYWRlckh0bWwpIHtcbiAgICAgIGNoaWxkTm9kZXMucHVzaChoKHByb3BzLmhlYWRlclRhZywge1xuICAgICAgICBjbGFzczogX2RlZmluZVByb3BlcnR5KHt9LCBcImRpc3BsYXktXCIuY29uY2F0KHByb3BzLmhlYWRlckxldmVsKSwgQm9vbGVhbihwcm9wcy5oZWFkZXJMZXZlbCkpXG4gICAgICB9LCBub3JtYWxpemVTbG90KCdoZWFkZXInLCB7fSwgJHNjb3BlZFNsb3RzLCAkc2xvdHMpIHx8IHByb3BzLmhlYWRlckh0bWwgfHwgc3RyaXBUYWdzKHByb3BzLmhlYWRlcikpKTtcbiAgICB9IC8vIExlYWRcblxuXG4gICAgaWYgKHByb3BzLmxlYWQgfHwgaGFzTm9ybWFsaXplZFNsb3QoJ2xlYWQnLCAkc2NvcGVkU2xvdHMsICRzbG90cykgfHwgcHJvcHMubGVhZEh0bWwpIHtcbiAgICAgIGNoaWxkTm9kZXMucHVzaChoKHByb3BzLmxlYWRUYWcsIHtcbiAgICAgICAgc3RhdGljQ2xhc3M6ICdsZWFkJ1xuICAgICAgfSwgbm9ybWFsaXplU2xvdCgnbGVhZCcsIHt9LCAkc2NvcGVkU2xvdHMsICRzbG90cykgfHwgcHJvcHMubGVhZEh0bWwgfHwgc3RyaXBUYWdzKHByb3BzLmxlYWQpKSk7XG4gICAgfSAvLyBEZWZhdWx0IHNsb3RcblxuXG4gICAgaWYgKGhhc05vcm1hbGl6ZWRTbG90KCdkZWZhdWx0JywgJHNjb3BlZFNsb3RzLCAkc2xvdHMpKSB7XG4gICAgICBjaGlsZE5vZGVzLnB1c2gobm9ybWFsaXplU2xvdCgnZGVmYXVsdCcsIHt9LCAkc2NvcGVkU2xvdHMsICRzbG90cykpO1xuICAgIH0gLy8gSWYgZmx1aWQsIHdyYXAgY29udGVudCBpbiBhIGNvbnRhaW5lci9jb250YWluZXItZmx1aWRcblxuXG4gICAgaWYgKHByb3BzLmZsdWlkKSB7XG4gICAgICAvLyBDaGlsZHJlbiBiZWNvbWUgYSBjaGlsZCBvZiBhIGNvbnRhaW5lclxuICAgICAgY2hpbGROb2RlcyA9IFtoKEJDb250YWluZXIsIHtcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBmbHVpZDogcHJvcHMuY29udGFpbmVyRmx1aWRcbiAgICAgICAgfVxuICAgICAgfSwgY2hpbGROb2RlcyldO1xuICAgIH0gLy8gUmV0dXJuIHRoZSBqdW1ib3Ryb25cblxuXG4gICAgcmV0dXJuIGgocHJvcHMudGFnLCBtZXJnZURhdGEoZGF0YSwge1xuICAgICAgc3RhdGljQ2xhc3M6ICdqdW1ib3Ryb24nLFxuICAgICAgY2xhc3M6IChfY2xhc3MyID0ge1xuICAgICAgICAnanVtYm90cm9uLWZsdWlkJzogcHJvcHMuZmx1aWRcbiAgICAgIH0sIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3MyLCBcInRleHQtXCIuY29uY2F0KHByb3BzLnRleHRWYXJpYW50KSwgQm9vbGVhbihwcm9wcy50ZXh0VmFyaWFudCkpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzMiwgXCJiZy1cIi5jb25jYXQocHJvcHMuYmdWYXJpYW50KSwgQm9vbGVhbihwcm9wcy5iZ1ZhcmlhbnQpKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzczIsIFwiYm9yZGVyLVwiLmNvbmNhdChwcm9wcy5ib3JkZXJWYXJpYW50KSwgQm9vbGVhbihwcm9wcy5ib3JkZXJWYXJpYW50KSksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3MyLCBcImJvcmRlclwiLCBCb29sZWFuKHByb3BzLmJvcmRlclZhcmlhbnQpKSwgX2NsYXNzMilcbiAgICB9KSwgY2hpbGROb2Rlcyk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvanVtYm90cm9uL2p1bWJvdHJvbi5qc1xuLy8gbW9kdWxlIGlkID0gMTYzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///163\n"); /***/ }), /* 164 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return LinkPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__link__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BLink */\n\n\nvar LinkPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BLink: __WEBPACK_IMPORTED_MODULE_0__link__[\"a\" /* BLink */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9saW5rL2luZGV4LmpzPzRiNWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBK0I7QUFDcUI7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxXQUFXLG9EQUFLO0FBQ2hCO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNjQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCTGluayB9IGZyb20gJy4vbGluayc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgTGlua1BsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJMaW5rOiBCTGlua1xuICB9XG59KTtcbmV4cG9ydCB7IExpbmtQbHVnaW4sIEJMaW5rIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9saW5rL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNjRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///164\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return LayoutPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__container__ = __webpack_require__(74);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__row__ = __webpack_require__(165);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__col__ = __webpack_require__(69);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__form_row__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BContainer */\n/* unused harmony reexport BRow */\n/* unused harmony reexport BCol */\n/* unused harmony reexport BFormRow */\n\n\n\n\n\nvar LayoutPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_4__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BContainer: __WEBPACK_IMPORTED_MODULE_0__container__[\"a\" /* BContainer */],\n BRow: __WEBPACK_IMPORTED_MODULE_1__row__[\"a\" /* BRow */],\n BCol: __WEBPACK_IMPORTED_MODULE_2__col__[\"a\" /* BCol */],\n BFormRow: __WEBPACK_IMPORTED_MODULE_3__form_row__[\"a\" /* BFormRow */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9sYXlvdXQvaW5kZXguanM/NzY4ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNaO0FBQ0E7QUFDUztBQUNjO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsZ0JBQWdCLDhEQUFVO0FBQzFCLFVBQVUsa0RBQUk7QUFDZCxVQUFVLGtEQUFJO0FBQ2QsY0FBYywyREFBUTtBQUN0QjtBQUNBLENBQUMiLCJmaWxlIjoiMTY0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkNvbnRhaW5lciB9IGZyb20gJy4vY29udGFpbmVyJztcbmltcG9ydCB7IEJSb3cgfSBmcm9tICcuL3Jvdyc7XG5pbXBvcnQgeyBCQ29sIH0gZnJvbSAnLi9jb2wnO1xuaW1wb3J0IHsgQkZvcm1Sb3cgfSBmcm9tICcuL2Zvcm0tcm93JztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBMYXlvdXRQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCQ29udGFpbmVyOiBCQ29udGFpbmVyLFxuICAgIEJSb3c6IEJSb3csXG4gICAgQkNvbDogQkNvbCxcbiAgICBCRm9ybVJvdzogQkZvcm1Sb3dcbiAgfVxufSk7XG5leHBvcnQgeyBMYXlvdXRQbHVnaW4sIEJDb250YWluZXIsIEJSb3csIEJDb2wsIEJGb3JtUm93IH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9sYXlvdXQvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE2NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///164\n"); /***/ }), /* 165 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ListGroupPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__list_group__ = __webpack_require__(166);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__list_group_item__ = __webpack_require__(167);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BListGroup */\n/* unused harmony reexport BListGroupItem */\n\n\n\nvar ListGroupPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BListGroup: __WEBPACK_IMPORTED_MODULE_0__list_group__[\"a\" /* BListGroup */],\n BListGroupItem: __WEBPACK_IMPORTED_MODULE_1__list_group_item__[\"a\" /* BListGroupItem */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9saXN0LWdyb3VwL2luZGV4LmpzP2E0NjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBDO0FBQ1M7QUFDQztBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGdCQUFnQiwrREFBVTtBQUMxQixvQkFBb0Isd0VBQWM7QUFDbEM7QUFDQSxDQUFDIiwiZmlsZSI6IjE2NS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJMaXN0R3JvdXAgfSBmcm9tICcuL2xpc3QtZ3JvdXAnO1xuaW1wb3J0IHsgQkxpc3RHcm91cEl0ZW0gfSBmcm9tICcuL2xpc3QtZ3JvdXAtaXRlbSc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgTGlzdEdyb3VwUGx1Z2luID1cbi8qI19fUFVSRV9fKi9cbnBsdWdpbkZhY3Rvcnkoe1xuICBjb21wb25lbnRzOiB7XG4gICAgQkxpc3RHcm91cDogQkxpc3RHcm91cCxcbiAgICBCTGlzdEdyb3VwSXRlbTogQkxpc3RHcm91cEl0ZW1cbiAgfVxufSk7XG5leHBvcnQgeyBMaXN0R3JvdXBQbHVnaW4sIEJMaXN0R3JvdXAsIEJMaXN0R3JvdXBJdGVtIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9saXN0LWdyb3VwL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNjVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///165\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BRow; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_array__ = __webpack_require__(7);\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\nvar COMMON_ALIGNMENT = ['start', 'end', 'center'];\nvar props = {\n tag: {\n type: String,\n default: 'div'\n },\n noGutters: {\n type: Boolean,\n default: false\n },\n alignV: {\n type: String,\n default: null,\n validator: function validator(str) {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"a\" /* arrayIncludes */])(COMMON_ALIGNMENT.concat(['baseline', 'stretch']), str);\n }\n },\n alignH: {\n type: String,\n default: null,\n validator: function validator(str) {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"a\" /* arrayIncludes */])(COMMON_ALIGNMENT.concat(['between', 'around']), str);\n }\n },\n alignContent: {\n type: String,\n default: null,\n validator: function validator(str) {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"a\" /* arrayIncludes */])(COMMON_ALIGNMENT.concat(['between', 'around', 'stretch']), str);\n }\n }\n}; // @vue/component\n\nvar BRow =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BRow',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'row',\n class: (_class = {\n 'no-gutters': props.noGutters\n }, _defineProperty(_class, \"align-items-\".concat(props.alignV), props.alignV), _defineProperty(_class, \"justify-content-\".concat(props.alignH), props.alignH), _defineProperty(_class, \"align-content-\".concat(props.alignContent), props.alignContent), _class)\n }), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9sYXlvdXQvcm93LmpzPzEzOGMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNvQjtBQUNKO0FBQ2xEO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSwyRUFBYTtBQUMxQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsMkVBQWE7QUFDMUI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDJFQUFhO0FBQzFCO0FBQ0E7QUFDQSxFQUFFOztBQUVLO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLG9GQUFTO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjE2NS5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IG1lcmdlRGF0YSB9IGZyb20gJ3Z1ZS1mdW5jdGlvbmFsLWRhdGEtbWVyZ2UnO1xuaW1wb3J0IHsgYXJyYXlJbmNsdWRlcyB9IGZyb20gJy4uLy4uL3V0aWxzL2FycmF5JztcbnZhciBDT01NT05fQUxJR05NRU5UID0gWydzdGFydCcsICdlbmQnLCAnY2VudGVyJ107XG5leHBvcnQgdmFyIHByb3BzID0ge1xuICB0YWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ2RpdidcbiAgfSxcbiAgbm9HdXR0ZXJzOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBhbGlnblY6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogbnVsbCxcbiAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzdHIpIHtcbiAgICAgIHJldHVybiBhcnJheUluY2x1ZGVzKENPTU1PTl9BTElHTk1FTlQuY29uY2F0KFsnYmFzZWxpbmUnLCAnc3RyZXRjaCddKSwgc3RyKTtcbiAgICB9XG4gIH0sXG4gIGFsaWduSDoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBudWxsLFxuICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHN0cikge1xuICAgICAgcmV0dXJuIGFycmF5SW5jbHVkZXMoQ09NTU9OX0FMSUdOTUVOVC5jb25jYXQoWydiZXR3ZWVuJywgJ2Fyb3VuZCddKSwgc3RyKTtcbiAgICB9XG4gIH0sXG4gIGFsaWduQ29udGVudDoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBudWxsLFxuICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHN0cikge1xuICAgICAgcmV0dXJuIGFycmF5SW5jbHVkZXMoQ09NTU9OX0FMSUdOTUVOVC5jb25jYXQoWydiZXR3ZWVuJywgJ2Fyb3VuZCcsICdzdHJldGNoJ10pLCBzdHIpO1xuICAgIH1cbiAgfVxufTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCUm93ID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQlJvdycsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiBwcm9wcyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBfY2xhc3M7XG5cbiAgICB2YXIgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgICBkYXRhID0gX3JlZi5kYXRhLFxuICAgICAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW47XG4gICAgcmV0dXJuIGgocHJvcHMudGFnLCBtZXJnZURhdGEoZGF0YSwge1xuICAgICAgc3RhdGljQ2xhc3M6ICdyb3cnLFxuICAgICAgY2xhc3M6IChfY2xhc3MgPSB7XG4gICAgICAgICduby1ndXR0ZXJzJzogcHJvcHMubm9HdXR0ZXJzXG4gICAgICB9LCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzLCBcImFsaWduLWl0ZW1zLVwiLmNvbmNhdChwcm9wcy5hbGlnblYpLCBwcm9wcy5hbGlnblYpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzLCBcImp1c3RpZnktY29udGVudC1cIi5jb25jYXQocHJvcHMuYWxpZ25IKSwgcHJvcHMuYWxpZ25IKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJhbGlnbi1jb250ZW50LVwiLmNvbmNhdChwcm9wcy5hbGlnbkNvbnRlbnQpLCBwcm9wcy5hbGlnbkNvbnRlbnQpLCBfY2xhc3MpXG4gICAgfSksIGNoaWxkcmVuKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9sYXlvdXQvcm93LmpzXG4vLyBtb2R1bGUgaWQgPSAxNjVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///165\n"); /***/ }), /* 166 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BListGroup; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_inspect__ = __webpack_require__(1);\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\nvar props = {\n tag: {\n type: String,\n default: 'div'\n },\n flush: {\n type: Boolean,\n default: false\n },\n horizontal: {\n type: [Boolean, String],\n default: false\n }\n}; // @vue/component\n\nvar BListGroup =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BListGroup',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var horizontal = props.horizontal === '' ? true : props.horizontal;\n horizontal = props.flush ? false : horizontal;\n var componentData = {\n staticClass: 'list-group',\n class: _defineProperty({\n 'list-group-flush': props.flush,\n 'list-group-horizontal': horizontal === true\n }, \"list-group-horizontal-\".concat(horizontal), Object(__WEBPACK_IMPORTED_MODULE_2__utils_inspect__[\"m\" /* isString */])(horizontal))\n };\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, componentData), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9saXN0LWdyb3VwL2xpc3QtZ3JvdXAuanM/ZjRiZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ29CO0FBQ1A7QUFDeEM7QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTywrQ0FBK0Msd0VBQVE7QUFDOUQ7QUFDQSx3QkFBd0Isb0ZBQVM7QUFDakM7QUFDQSxDQUFDIiwiZmlsZSI6IjE2Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IG1lcmdlRGF0YSB9IGZyb20gJ3Z1ZS1mdW5jdGlvbmFsLWRhdGEtbWVyZ2UnO1xuaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tICcuLi8uLi91dGlscy9pbnNwZWN0JztcbmV4cG9ydCB2YXIgcHJvcHMgPSB7XG4gIHRhZzoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAnZGl2J1xuICB9LFxuICBmbHVzaDoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgaG9yaXpvbnRhbDoge1xuICAgIHR5cGU6IFtCb29sZWFuLCBTdHJpbmddLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkxpc3RHcm91cCA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JMaXN0R3JvdXAnLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogcHJvcHMsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgICBkYXRhID0gX3JlZi5kYXRhLFxuICAgICAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW47XG4gICAgdmFyIGhvcml6b250YWwgPSBwcm9wcy5ob3Jpem9udGFsID09PSAnJyA/IHRydWUgOiBwcm9wcy5ob3Jpem9udGFsO1xuICAgIGhvcml6b250YWwgPSBwcm9wcy5mbHVzaCA/IGZhbHNlIDogaG9yaXpvbnRhbDtcbiAgICB2YXIgY29tcG9uZW50RGF0YSA9IHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnbGlzdC1ncm91cCcsXG4gICAgICBjbGFzczogX2RlZmluZVByb3BlcnR5KHtcbiAgICAgICAgJ2xpc3QtZ3JvdXAtZmx1c2gnOiBwcm9wcy5mbHVzaCxcbiAgICAgICAgJ2xpc3QtZ3JvdXAtaG9yaXpvbnRhbCc6IGhvcml6b250YWwgPT09IHRydWVcbiAgICAgIH0sIFwibGlzdC1ncm91cC1ob3Jpem9udGFsLVwiLmNvbmNhdChob3Jpem9udGFsKSwgaXNTdHJpbmcoaG9yaXpvbnRhbCkpXG4gICAgfTtcbiAgICByZXR1cm4gaChwcm9wcy50YWcsIG1lcmdlRGF0YShkYXRhLCBjb21wb25lbnREYXRhKSwgY2hpbGRyZW4pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2xpc3QtZ3JvdXAvbGlzdC1ncm91cC5qc1xuLy8gbW9kdWxlIGlkID0gMTY2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///166\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return LinkPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__link__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BLink */\n\n\nvar LinkPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BLink: __WEBPACK_IMPORTED_MODULE_0__link__[\"a\" /* BLink */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9saW5rL2luZGV4LmpzPzRiNWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBK0I7QUFDcUI7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxXQUFXLG9EQUFLO0FBQ2hCO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNjYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCTGluayB9IGZyb20gJy4vbGluayc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgTGlua1BsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJMaW5rOiBCTGlua1xuICB9XG59KTtcbmV4cG9ydCB7IExpbmtQbHVnaW4sIEJMaW5rIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9saW5rL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNjZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///166\n"); /***/ }), /* 167 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BListGroupItem; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_pluck_props__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__link_link__ = __webpack_require__(14);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\nvar NAME = 'BListGroupItem';\nvar actionTags = ['a', 'router-link', 'button', 'b-link'];\nvar linkProps = Object(__WEBPACK_IMPORTED_MODULE_5__link_link__[\"b\" /* propsFactory */])();\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nvar props = _objectSpread({\n tag: {\n type: String,\n default: 'div'\n },\n action: {\n type: Boolean,\n default: null\n },\n button: {\n type: Boolean,\n default: null\n },\n variant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant');\n }\n }\n}, linkProps); // @vue/component\n\nvar BListGroupItem =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var tag = props.button ? 'button' : !props.href && !props.to ? props.tag : __WEBPACK_IMPORTED_MODULE_5__link_link__[\"a\" /* BLink */];\n var isAction = Boolean(props.href || props.to || props.action || props.button || Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"a\" /* arrayIncludes */])(actionTags, props.tag));\n var attrs = {};\n var itemProps = {};\n\n if (tag === 'button') {\n if (!data.attrs || !data.attrs.type) {\n // Add a type for button is one not provided in passed attributes\n attrs.type = 'button';\n }\n\n if (props.disabled) {\n // Set disabled attribute if button and disabled\n attrs.disabled = true;\n }\n } else {\n itemProps = Object(__WEBPACK_IMPORTED_MODULE_2__utils_pluck_props__[\"a\" /* default */])(linkProps, props);\n }\n\n var componentData = {\n attrs: attrs,\n props: itemProps,\n staticClass: 'list-group-item',\n class: (_class = {}, _defineProperty(_class, \"list-group-item-\".concat(props.variant), Boolean(props.variant)), _defineProperty(_class, 'list-group-item-action', isAction), _defineProperty(_class, \"active\", props.active), _defineProperty(_class, \"disabled\", props.disabled), _class)\n };\n return h(tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, componentData), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9saXN0LWdyb3VwL2xpc3QtZ3JvdXAtaXRlbS5qcz85MjViIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ29CO0FBQ0w7QUFDQztBQUNNO0FBQ2U7QUFDdkU7QUFDQTtBQUNBLGdCQUFnQix3RUFBZ0I7QUFDaEM7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRkFBa0I7QUFDL0I7QUFDQTtBQUNBLENBQUMsYUFBYTs7QUFFUDtBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLCtFQUErRSx5REFBSztBQUNwRixxRkFBcUYsMkVBQWE7QUFDbEc7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGtCQUFrQiwyRUFBVTtBQUM1Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBLGtCQUFrQixvRkFBUztBQUMzQjtBQUNBLENBQUMiLCJmaWxlIjoiMTY3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgbWVyZ2VEYXRhIH0gZnJvbSAndnVlLWZ1bmN0aW9uYWwtZGF0YS1tZXJnZSc7XG5pbXBvcnQgcGx1Y2tQcm9wcyBmcm9tICcuLi8uLi91dGlscy9wbHVjay1wcm9wcyc7XG5pbXBvcnQgeyBhcnJheUluY2x1ZGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXJyYXknO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29uZmlnJztcbmltcG9ydCB7IEJMaW5rLCBwcm9wc0ZhY3RvcnkgYXMgbGlua1Byb3BzRmFjdG9yeSB9IGZyb20gJy4uL2xpbmsvbGluayc7XG52YXIgTkFNRSA9ICdCTGlzdEdyb3VwSXRlbSc7XG52YXIgYWN0aW9uVGFncyA9IFsnYScsICdyb3V0ZXItbGluaycsICdidXR0b24nLCAnYi1saW5rJ107XG52YXIgbGlua1Byb3BzID0gbGlua1Byb3BzRmFjdG9yeSgpO1xuZGVsZXRlIGxpbmtQcm9wcy5ocmVmLmRlZmF1bHQ7XG5kZWxldGUgbGlua1Byb3BzLnRvLmRlZmF1bHQ7XG5leHBvcnQgdmFyIHByb3BzID0gX29iamVjdFNwcmVhZCh7XG4gIHRhZzoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAnZGl2J1xuICB9LFxuICBhY3Rpb246IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgYnV0dG9uOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBudWxsXG4gIH0sXG4gIHZhcmlhbnQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICd2YXJpYW50Jyk7XG4gICAgfVxuICB9XG59LCBsaW5rUHJvcHMpOyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJMaXN0R3JvdXBJdGVtID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogcHJvcHMsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgX2NsYXNzO1xuXG4gICAgdmFyIHByb3BzID0gX3JlZi5wcm9wcyxcbiAgICAgICAgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICAgICAgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuO1xuICAgIHZhciB0YWcgPSBwcm9wcy5idXR0b24gPyAnYnV0dG9uJyA6ICFwcm9wcy5ocmVmICYmICFwcm9wcy50byA/IHByb3BzLnRhZyA6IEJMaW5rO1xuICAgIHZhciBpc0FjdGlvbiA9IEJvb2xlYW4ocHJvcHMuaHJlZiB8fCBwcm9wcy50byB8fCBwcm9wcy5hY3Rpb24gfHwgcHJvcHMuYnV0dG9uIHx8IGFycmF5SW5jbHVkZXMoYWN0aW9uVGFncywgcHJvcHMudGFnKSk7XG4gICAgdmFyIGF0dHJzID0ge307XG4gICAgdmFyIGl0ZW1Qcm9wcyA9IHt9O1xuXG4gICAgaWYgKHRhZyA9PT0gJ2J1dHRvbicpIHtcbiAgICAgIGlmICghZGF0YS5hdHRycyB8fCAhZGF0YS5hdHRycy50eXBlKSB7XG4gICAgICAgIC8vIEFkZCBhIHR5cGUgZm9yIGJ1dHRvbiBpcyBvbmUgbm90IHByb3ZpZGVkIGluIHBhc3NlZCBhdHRyaWJ1dGVzXG4gICAgICAgIGF0dHJzLnR5cGUgPSAnYnV0dG9uJztcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKSB7XG4gICAgICAgIC8vIFNldCBkaXNhYmxlZCBhdHRyaWJ1dGUgaWYgYnV0dG9uIGFuZCBkaXNhYmxlZFxuICAgICAgICBhdHRycy5kaXNhYmxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW1Qcm9wcyA9IHBsdWNrUHJvcHMobGlua1Byb3BzLCBwcm9wcyk7XG4gICAgfVxuXG4gICAgdmFyIGNvbXBvbmVudERhdGEgPSB7XG4gICAgICBhdHRyczogYXR0cnMsXG4gICAgICBwcm9wczogaXRlbVByb3BzLFxuICAgICAgc3RhdGljQ2xhc3M6ICdsaXN0LWdyb3VwLWl0ZW0nLFxuICAgICAgY2xhc3M6IChfY2xhc3MgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJsaXN0LWdyb3VwLWl0ZW0tXCIuY29uY2F0KHByb3BzLnZhcmlhbnQpLCBCb29sZWFuKHByb3BzLnZhcmlhbnQpKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgJ2xpc3QtZ3JvdXAtaXRlbS1hY3Rpb24nLCBpc0FjdGlvbiksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3MsIFwiYWN0aXZlXCIsIHByb3BzLmFjdGl2ZSksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3MsIFwiZGlzYWJsZWRcIiwgcHJvcHMuZGlzYWJsZWQpLCBfY2xhc3MpXG4gICAgfTtcbiAgICByZXR1cm4gaCh0YWcsIG1lcmdlRGF0YShkYXRhLCBjb21wb25lbnREYXRhKSwgY2hpbGRyZW4pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2xpc3QtZ3JvdXAvbGlzdC1ncm91cC1pdGVtLmpzXG4vLyBtb2R1bGUgaWQgPSAxNjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///167\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ListGroupPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__list_group__ = __webpack_require__(168);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__list_group_item__ = __webpack_require__(169);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BListGroup */\n/* unused harmony reexport BListGroupItem */\n\n\n\nvar ListGroupPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BListGroup: __WEBPACK_IMPORTED_MODULE_0__list_group__[\"a\" /* BListGroup */],\n BListGroupItem: __WEBPACK_IMPORTED_MODULE_1__list_group_item__[\"a\" /* BListGroupItem */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9saXN0LWdyb3VwL2luZGV4LmpzP2E0NjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBDO0FBQ1M7QUFDQztBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGdCQUFnQiwrREFBVTtBQUMxQixvQkFBb0Isd0VBQWM7QUFDbEM7QUFDQSxDQUFDIiwiZmlsZSI6IjE2Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJMaXN0R3JvdXAgfSBmcm9tICcuL2xpc3QtZ3JvdXAnO1xuaW1wb3J0IHsgQkxpc3RHcm91cEl0ZW0gfSBmcm9tICcuL2xpc3QtZ3JvdXAtaXRlbSc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgTGlzdEdyb3VwUGx1Z2luID1cbi8qI19fUFVSRV9fKi9cbnBsdWdpbkZhY3Rvcnkoe1xuICBjb21wb25lbnRzOiB7XG4gICAgQkxpc3RHcm91cDogQkxpc3RHcm91cCxcbiAgICBCTGlzdEdyb3VwSXRlbTogQkxpc3RHcm91cEl0ZW1cbiAgfVxufSk7XG5leHBvcnQgeyBMaXN0R3JvdXBQbHVnaW4sIEJMaXN0R3JvdXAsIEJMaXN0R3JvdXBJdGVtIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9saXN0LWdyb3VwL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///167\n"); /***/ }), /* 168 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return MediaPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__media__ = __webpack_require__(169);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__media_aside__ = __webpack_require__(76);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__media_body__ = __webpack_require__(75);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BMedia */\n/* unused harmony reexport BMediaAside */\n/* unused harmony reexport BMediaBody */\n\n\n\n\nvar MediaPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_3__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BMedia: __WEBPACK_IMPORTED_MODULE_0__media__[\"a\" /* BMedia */],\n BMediaAside: __WEBPACK_IMPORTED_MODULE_1__media_aside__[\"a\" /* BMediaAside */],\n BMediaBody: __WEBPACK_IMPORTED_MODULE_2__media_body__[\"a\" /* BMediaBody */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9tZWRpYS9pbmRleC5qcz9jYTQ4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDVztBQUNGO0FBQ1U7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxZQUFZLHNEQUFNO0FBQ2xCLGlCQUFpQixpRUFBVztBQUM1QixnQkFBZ0IsK0RBQVU7QUFDMUI7QUFDQSxDQUFDIiwiZmlsZSI6IjE2OC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJNZWRpYSB9IGZyb20gJy4vbWVkaWEnO1xuaW1wb3J0IHsgQk1lZGlhQXNpZGUgfSBmcm9tICcuL21lZGlhLWFzaWRlJztcbmltcG9ydCB7IEJNZWRpYUJvZHkgfSBmcm9tICcuL21lZGlhLWJvZHknO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIE1lZGlhUGx1Z2luID1cbi8qI19fUFVSRV9fKi9cbnBsdWdpbkZhY3Rvcnkoe1xuICBjb21wb25lbnRzOiB7XG4gICAgQk1lZGlhOiBCTWVkaWEsXG4gICAgQk1lZGlhQXNpZGU6IEJNZWRpYUFzaWRlLFxuICAgIEJNZWRpYUJvZHk6IEJNZWRpYUJvZHlcbiAgfVxufSk7XG5leHBvcnQgeyBNZWRpYVBsdWdpbiwgQk1lZGlhLCBCTWVkaWFBc2lkZSwgQk1lZGlhQm9keSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvbWVkaWEvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE2OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///168\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BListGroup; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_inspect__ = __webpack_require__(1);\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\nvar props = {\n tag: {\n type: String,\n default: 'div'\n },\n flush: {\n type: Boolean,\n default: false\n },\n horizontal: {\n type: [Boolean, String],\n default: false\n }\n}; // @vue/component\n\nvar BListGroup =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BListGroup',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var horizontal = props.horizontal === '' ? true : props.horizontal;\n horizontal = props.flush ? false : horizontal;\n var componentData = {\n staticClass: 'list-group',\n class: _defineProperty({\n 'list-group-flush': props.flush,\n 'list-group-horizontal': horizontal === true\n }, \"list-group-horizontal-\".concat(horizontal), Object(__WEBPACK_IMPORTED_MODULE_2__utils_inspect__[\"m\" /* isString */])(horizontal))\n };\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, componentData), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9saXN0LWdyb3VwL2xpc3QtZ3JvdXAuanM/ZjRiZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ29CO0FBQ1A7QUFDeEM7QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTywrQ0FBK0Msd0VBQVE7QUFDOUQ7QUFDQSx3QkFBd0Isb0ZBQVM7QUFDakM7QUFDQSxDQUFDIiwiZmlsZSI6IjE2OC5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IG1lcmdlRGF0YSB9IGZyb20gJ3Z1ZS1mdW5jdGlvbmFsLWRhdGEtbWVyZ2UnO1xuaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tICcuLi8uLi91dGlscy9pbnNwZWN0JztcbmV4cG9ydCB2YXIgcHJvcHMgPSB7XG4gIHRhZzoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAnZGl2J1xuICB9LFxuICBmbHVzaDoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgaG9yaXpvbnRhbDoge1xuICAgIHR5cGU6IFtCb29sZWFuLCBTdHJpbmddLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQkxpc3RHcm91cCA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JMaXN0R3JvdXAnLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogcHJvcHMsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgICBkYXRhID0gX3JlZi5kYXRhLFxuICAgICAgICBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW47XG4gICAgdmFyIGhvcml6b250YWwgPSBwcm9wcy5ob3Jpem9udGFsID09PSAnJyA/IHRydWUgOiBwcm9wcy5ob3Jpem9udGFsO1xuICAgIGhvcml6b250YWwgPSBwcm9wcy5mbHVzaCA/IGZhbHNlIDogaG9yaXpvbnRhbDtcbiAgICB2YXIgY29tcG9uZW50RGF0YSA9IHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnbGlzdC1ncm91cCcsXG4gICAgICBjbGFzczogX2RlZmluZVByb3BlcnR5KHtcbiAgICAgICAgJ2xpc3QtZ3JvdXAtZmx1c2gnOiBwcm9wcy5mbHVzaCxcbiAgICAgICAgJ2xpc3QtZ3JvdXAtaG9yaXpvbnRhbCc6IGhvcml6b250YWwgPT09IHRydWVcbiAgICAgIH0sIFwibGlzdC1ncm91cC1ob3Jpem9udGFsLVwiLmNvbmNhdChob3Jpem9udGFsKSwgaXNTdHJpbmcoaG9yaXpvbnRhbCkpXG4gICAgfTtcbiAgICByZXR1cm4gaChwcm9wcy50YWcsIG1lcmdlRGF0YShkYXRhLCBjb21wb25lbnREYXRhKSwgY2hpbGRyZW4pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2xpc3QtZ3JvdXAvbGlzdC1ncm91cC5qc1xuLy8gbW9kdWxlIGlkID0gMTY4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///168\n"); /***/ }), /* 169 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BMedia; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_normalize_slot__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__media_body__ = __webpack_require__(75);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__media_aside__ = __webpack_require__(76);\n\n\n\n\n\nvar props = {\n tag: {\n type: String,\n default: 'div'\n },\n rightAlign: {\n type: Boolean,\n default: false\n },\n verticalAlign: {\n type: String,\n default: 'top'\n },\n noBody: {\n type: Boolean,\n default: false\n }\n}; // @vue/component\n\nvar BMedia =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BMedia',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots,\n children = _ref.children;\n var childNodes = props.noBody ? children : [];\n\n if (!props.noBody) {\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var $aside = Object(__WEBPACK_IMPORTED_MODULE_2__utils_normalize_slot__[\"b\" /* normalizeSlot */])('aside', {}, $scopedSlots, $slots);\n var $default = Object(__WEBPACK_IMPORTED_MODULE_2__utils_normalize_slot__[\"b\" /* normalizeSlot */])('default', {}, $scopedSlots, $slots);\n\n if ($aside && !props.rightAlign) {\n childNodes.push(h(__WEBPACK_IMPORTED_MODULE_4__media_aside__[\"a\" /* BMediaAside */], {\n staticClass: 'mr-3',\n props: {\n verticalAlign: props.verticalAlign\n }\n }, $aside));\n }\n\n childNodes.push(h(__WEBPACK_IMPORTED_MODULE_3__media_body__[\"a\" /* BMediaBody */], {}, $default));\n\n if ($aside && props.rightAlign) {\n childNodes.push(h(__WEBPACK_IMPORTED_MODULE_4__media_aside__[\"a\" /* BMediaAside */], {\n staticClass: 'ml-3',\n props: {\n verticalAlign: props.verticalAlign\n }\n }, $aside));\n }\n }\n\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'media'\n }), childNodes);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9tZWRpYS9tZWRpYS5qcz8xNTBjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ29CO0FBQ0s7QUFDakI7QUFDRTtBQUNyQztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0ZBQWEsWUFBWTtBQUM1QyxxQkFBcUIsb0ZBQWEsY0FBYzs7QUFFaEQ7QUFDQSwwQkFBMEIsaUVBQVc7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUEsd0JBQXdCLCtEQUFVLElBQUk7O0FBRXRDO0FBQ0EsMEJBQTBCLGlFQUFXO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUEsd0JBQXdCLG9GQUFTO0FBQ2pDO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNjkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCB7IG5vcm1hbGl6ZVNsb3QgfSBmcm9tICcuLi8uLi91dGlscy9ub3JtYWxpemUtc2xvdCc7XG5pbXBvcnQgeyBCTWVkaWFCb2R5IH0gZnJvbSAnLi9tZWRpYS1ib2R5JztcbmltcG9ydCB7IEJNZWRpYUFzaWRlIH0gZnJvbSAnLi9tZWRpYS1hc2lkZSc7XG5leHBvcnQgdmFyIHByb3BzID0ge1xuICB0YWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ2RpdidcbiAgfSxcbiAgcmlnaHRBbGlnbjoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgdmVydGljYWxBbGlnbjoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAndG9wJ1xuICB9LFxuICBub0JvZHk6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQk1lZGlhID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQk1lZGlhJyxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcHJvcHM6IHByb3BzLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBfcmVmKSB7XG4gICAgdmFyIHByb3BzID0gX3JlZi5wcm9wcyxcbiAgICAgICAgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICAgICAgc2xvdHMgPSBfcmVmLnNsb3RzLFxuICAgICAgICBzY29wZWRTbG90cyA9IF9yZWYuc2NvcGVkU2xvdHMsXG4gICAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgICB2YXIgY2hpbGROb2RlcyA9IHByb3BzLm5vQm9keSA/IGNoaWxkcmVuIDogW107XG5cbiAgICBpZiAoIXByb3BzLm5vQm9keSkge1xuICAgICAgdmFyICRzbG90cyA9IHNsb3RzKCk7XG4gICAgICB2YXIgJHNjb3BlZFNsb3RzID0gc2NvcGVkU2xvdHMgfHwge307XG4gICAgICB2YXIgJGFzaWRlID0gbm9ybWFsaXplU2xvdCgnYXNpZGUnLCB7fSwgJHNjb3BlZFNsb3RzLCAkc2xvdHMpO1xuICAgICAgdmFyICRkZWZhdWx0ID0gbm9ybWFsaXplU2xvdCgnZGVmYXVsdCcsIHt9LCAkc2NvcGVkU2xvdHMsICRzbG90cyk7XG5cbiAgICAgIGlmICgkYXNpZGUgJiYgIXByb3BzLnJpZ2h0QWxpZ24pIHtcbiAgICAgICAgY2hpbGROb2Rlcy5wdXNoKGgoQk1lZGlhQXNpZGUsIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogJ21yLTMnLFxuICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICB2ZXJ0aWNhbEFsaWduOiBwcm9wcy52ZXJ0aWNhbEFsaWduXG4gICAgICAgICAgfVxuICAgICAgICB9LCAkYXNpZGUpKTtcbiAgICAgIH1cblxuICAgICAgY2hpbGROb2Rlcy5wdXNoKGgoQk1lZGlhQm9keSwge30sICRkZWZhdWx0KSk7XG5cbiAgICAgIGlmICgkYXNpZGUgJiYgcHJvcHMucmlnaHRBbGlnbikge1xuICAgICAgICBjaGlsZE5vZGVzLnB1c2goaChCTWVkaWFBc2lkZSwge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiAnbWwtMycsXG4gICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHZlcnRpY2FsQWxpZ246IHByb3BzLnZlcnRpY2FsQWxpZ25cbiAgICAgICAgICB9XG4gICAgICAgIH0sICRhc2lkZSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBoKHByb3BzLnRhZywgbWVyZ2VEYXRhKGRhdGEsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnbWVkaWEnXG4gICAgfSksIGNoaWxkTm9kZXMpO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL21lZGlhL21lZGlhLmpzXG4vLyBtb2R1bGUgaWQgPSAxNjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///169\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BListGroupItem; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_pluck_props__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__link_link__ = __webpack_require__(14);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\nvar NAME = 'BListGroupItem';\nvar actionTags = ['a', 'router-link', 'button', 'b-link'];\nvar linkProps = Object(__WEBPACK_IMPORTED_MODULE_5__link_link__[\"b\" /* propsFactory */])();\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nvar props = _objectSpread({\n tag: {\n type: String,\n default: 'div'\n },\n action: {\n type: Boolean,\n default: null\n },\n button: {\n type: Boolean,\n default: null\n },\n variant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant');\n }\n }\n}, linkProps); // @vue/component\n\nvar BListGroupItem =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var tag = props.button ? 'button' : !props.href && !props.to ? props.tag : __WEBPACK_IMPORTED_MODULE_5__link_link__[\"a\" /* BLink */];\n var isAction = Boolean(props.href || props.to || props.action || props.button || Object(__WEBPACK_IMPORTED_MODULE_3__utils_array__[\"a\" /* arrayIncludes */])(actionTags, props.tag));\n var attrs = {};\n var itemProps = {};\n\n if (tag === 'button') {\n if (!data.attrs || !data.attrs.type) {\n // Add a type for button is one not provided in passed attributes\n attrs.type = 'button';\n }\n\n if (props.disabled) {\n // Set disabled attribute if button and disabled\n attrs.disabled = true;\n }\n } else {\n itemProps = Object(__WEBPACK_IMPORTED_MODULE_2__utils_pluck_props__[\"a\" /* default */])(linkProps, props);\n }\n\n var componentData = {\n attrs: attrs,\n props: itemProps,\n staticClass: 'list-group-item',\n class: (_class = {}, _defineProperty(_class, \"list-group-item-\".concat(props.variant), Boolean(props.variant)), _defineProperty(_class, 'list-group-item-action', isAction), _defineProperty(_class, \"active\", props.active), _defineProperty(_class, \"disabled\", props.disabled), _class)\n };\n return h(tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, componentData), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9saXN0LWdyb3VwL2xpc3QtZ3JvdXAtaXRlbS5qcz85MjViIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ29CO0FBQ0w7QUFDQztBQUNNO0FBQ2U7QUFDdkU7QUFDQTtBQUNBLGdCQUFnQix3RUFBZ0I7QUFDaEM7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRkFBa0I7QUFDL0I7QUFDQTtBQUNBLENBQUMsYUFBYTs7QUFFUDtBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLCtFQUErRSx5REFBSztBQUNwRixxRkFBcUYsMkVBQWE7QUFDbEc7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGtCQUFrQiwyRUFBVTtBQUM1Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBLGtCQUFrQixvRkFBUztBQUMzQjtBQUNBLENBQUMiLCJmaWxlIjoiMTY5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgbWVyZ2VEYXRhIH0gZnJvbSAndnVlLWZ1bmN0aW9uYWwtZGF0YS1tZXJnZSc7XG5pbXBvcnQgcGx1Y2tQcm9wcyBmcm9tICcuLi8uLi91dGlscy9wbHVjay1wcm9wcyc7XG5pbXBvcnQgeyBhcnJheUluY2x1ZGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXJyYXknO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29uZmlnJztcbmltcG9ydCB7IEJMaW5rLCBwcm9wc0ZhY3RvcnkgYXMgbGlua1Byb3BzRmFjdG9yeSB9IGZyb20gJy4uL2xpbmsvbGluayc7XG52YXIgTkFNRSA9ICdCTGlzdEdyb3VwSXRlbSc7XG52YXIgYWN0aW9uVGFncyA9IFsnYScsICdyb3V0ZXItbGluaycsICdidXR0b24nLCAnYi1saW5rJ107XG52YXIgbGlua1Byb3BzID0gbGlua1Byb3BzRmFjdG9yeSgpO1xuZGVsZXRlIGxpbmtQcm9wcy5ocmVmLmRlZmF1bHQ7XG5kZWxldGUgbGlua1Byb3BzLnRvLmRlZmF1bHQ7XG5leHBvcnQgdmFyIHByb3BzID0gX29iamVjdFNwcmVhZCh7XG4gIHRhZzoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAnZGl2J1xuICB9LFxuICBhY3Rpb246IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgYnV0dG9uOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBudWxsXG4gIH0sXG4gIHZhcmlhbnQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICd2YXJpYW50Jyk7XG4gICAgfVxuICB9XG59LCBsaW5rUHJvcHMpOyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJMaXN0R3JvdXBJdGVtID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogcHJvcHMsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgX2NsYXNzO1xuXG4gICAgdmFyIHByb3BzID0gX3JlZi5wcm9wcyxcbiAgICAgICAgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICAgICAgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuO1xuICAgIHZhciB0YWcgPSBwcm9wcy5idXR0b24gPyAnYnV0dG9uJyA6ICFwcm9wcy5ocmVmICYmICFwcm9wcy50byA/IHByb3BzLnRhZyA6IEJMaW5rO1xuICAgIHZhciBpc0FjdGlvbiA9IEJvb2xlYW4ocHJvcHMuaHJlZiB8fCBwcm9wcy50byB8fCBwcm9wcy5hY3Rpb24gfHwgcHJvcHMuYnV0dG9uIHx8IGFycmF5SW5jbHVkZXMoYWN0aW9uVGFncywgcHJvcHMudGFnKSk7XG4gICAgdmFyIGF0dHJzID0ge307XG4gICAgdmFyIGl0ZW1Qcm9wcyA9IHt9O1xuXG4gICAgaWYgKHRhZyA9PT0gJ2J1dHRvbicpIHtcbiAgICAgIGlmICghZGF0YS5hdHRycyB8fCAhZGF0YS5hdHRycy50eXBlKSB7XG4gICAgICAgIC8vIEFkZCBhIHR5cGUgZm9yIGJ1dHRvbiBpcyBvbmUgbm90IHByb3ZpZGVkIGluIHBhc3NlZCBhdHRyaWJ1dGVzXG4gICAgICAgIGF0dHJzLnR5cGUgPSAnYnV0dG9uJztcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BzLmRpc2FibGVkKSB7XG4gICAgICAgIC8vIFNldCBkaXNhYmxlZCBhdHRyaWJ1dGUgaWYgYnV0dG9uIGFuZCBkaXNhYmxlZFxuICAgICAgICBhdHRycy5kaXNhYmxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW1Qcm9wcyA9IHBsdWNrUHJvcHMobGlua1Byb3BzLCBwcm9wcyk7XG4gICAgfVxuXG4gICAgdmFyIGNvbXBvbmVudERhdGEgPSB7XG4gICAgICBhdHRyczogYXR0cnMsXG4gICAgICBwcm9wczogaXRlbVByb3BzLFxuICAgICAgc3RhdGljQ2xhc3M6ICdsaXN0LWdyb3VwLWl0ZW0nLFxuICAgICAgY2xhc3M6IChfY2xhc3MgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJsaXN0LWdyb3VwLWl0ZW0tXCIuY29uY2F0KHByb3BzLnZhcmlhbnQpLCBCb29sZWFuKHByb3BzLnZhcmlhbnQpKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgJ2xpc3QtZ3JvdXAtaXRlbS1hY3Rpb24nLCBpc0FjdGlvbiksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3MsIFwiYWN0aXZlXCIsIHByb3BzLmFjdGl2ZSksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3MsIFwiZGlzYWJsZWRcIiwgcHJvcHMuZGlzYWJsZWQpLCBfY2xhc3MpXG4gICAgfTtcbiAgICByZXR1cm4gaCh0YWcsIG1lcmdlRGF0YShkYXRhLCBjb21wb25lbnREYXRhKSwgY2hpbGRyZW4pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2xpc3QtZ3JvdXAvbGlzdC1ncm91cC1pdGVtLmpzXG4vLyBtb2R1bGUgaWQgPSAxNjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///169\n"); /***/ }), /* 170 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ModalPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__modal__ = __webpack_require__(77);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__directives_modal_modal__ = __webpack_require__(79);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__helpers_bv_modal__ = __webpack_require__(171);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BModal */\n\n\n\n\nvar ModalPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_3__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BModal: __WEBPACK_IMPORTED_MODULE_0__modal__[\"a\" /* BModal */]\n },\n directives: {\n VBModal: __WEBPACK_IMPORTED_MODULE_1__directives_modal_modal__[\"a\" /* VBModal */]\n },\n // $bvModal injection\n plugins: {\n BVModalPlugin: __WEBPACK_IMPORTED_MODULE_2__helpers_bv_modal__[\"a\" /* BVModalPlugin */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9tb2RhbC9pbmRleC5qcz8zMDNlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNzQjtBQUNKO0FBQ0M7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxZQUFZLHNEQUFNO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLGFBQWEsd0VBQU87QUFDcEIsR0FBRztBQUNIO0FBQ0E7QUFDQSxtQkFBbUIsd0VBQWE7QUFDaEM7QUFDQSxDQUFDIiwiZmlsZSI6IjE3MC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJNb2RhbCB9IGZyb20gJy4vbW9kYWwnO1xuaW1wb3J0IHsgVkJNb2RhbCB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbW9kYWwvbW9kYWwnO1xuaW1wb3J0IHsgQlZNb2RhbFBsdWdpbiB9IGZyb20gJy4vaGVscGVycy9idi1tb2RhbCc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgTW9kYWxQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCTW9kYWw6IEJNb2RhbFxuICB9LFxuICBkaXJlY3RpdmVzOiB7XG4gICAgVkJNb2RhbDogVkJNb2RhbFxuICB9LFxuICAvLyAkYnZNb2RhbCBpbmplY3Rpb25cbiAgcGx1Z2luczoge1xuICAgIEJWTW9kYWxQbHVnaW46IEJWTW9kYWxQbHVnaW5cbiAgfVxufSk7XG5leHBvcnQgeyBNb2RhbFBsdWdpbiwgQk1vZGFsIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9tb2RhbC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTcwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///170\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return MediaPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__media__ = __webpack_require__(171);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__media_aside__ = __webpack_require__(76);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__media_body__ = __webpack_require__(75);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BMedia */\n/* unused harmony reexport BMediaAside */\n/* unused harmony reexport BMediaBody */\n\n\n\n\nvar MediaPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_3__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BMedia: __WEBPACK_IMPORTED_MODULE_0__media__[\"a\" /* BMedia */],\n BMediaAside: __WEBPACK_IMPORTED_MODULE_1__media_aside__[\"a\" /* BMediaAside */],\n BMediaBody: __WEBPACK_IMPORTED_MODULE_2__media_body__[\"a\" /* BMediaBody */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9tZWRpYS9pbmRleC5qcz9jYTQ4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDVztBQUNGO0FBQ1U7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxZQUFZLHNEQUFNO0FBQ2xCLGlCQUFpQixpRUFBVztBQUM1QixnQkFBZ0IsK0RBQVU7QUFDMUI7QUFDQSxDQUFDIiwiZmlsZSI6IjE3MC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJNZWRpYSB9IGZyb20gJy4vbWVkaWEnO1xuaW1wb3J0IHsgQk1lZGlhQXNpZGUgfSBmcm9tICcuL21lZGlhLWFzaWRlJztcbmltcG9ydCB7IEJNZWRpYUJvZHkgfSBmcm9tICcuL21lZGlhLWJvZHknO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIE1lZGlhUGx1Z2luID1cbi8qI19fUFVSRV9fKi9cbnBsdWdpbkZhY3Rvcnkoe1xuICBjb21wb25lbnRzOiB7XG4gICAgQk1lZGlhOiBCTWVkaWEsXG4gICAgQk1lZGlhQXNpZGU6IEJNZWRpYUFzaWRlLFxuICAgIEJNZWRpYUJvZHk6IEJNZWRpYUJvZHlcbiAgfVxufSk7XG5leHBvcnQgeyBNZWRpYVBsdWdpbiwgQk1lZGlhLCBCTWVkaWFBc2lkZSwgQk1lZGlhQm9keSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvbWVkaWEvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE3MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///170\n"); /***/ }), /* 171 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BVModalPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__modal__ = __webpack_require__(77);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_plugins__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_warn__ = __webpack_require__(13);\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 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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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 _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\n// Plugin for adding `$bvModal` property to all Vue instances\n\n\n\n\n\n\n // --- Constants ---\n\nvar PROP_NAME = '$bvModal';\nvar PROP_NAME_PRIV = '_bv__modal'; // Base modal props that are allowed\n// Some may be ignored or overridden on some message boxes\n// Prop ID is allowed, but really only should be used for testing\n// We need to add it in explicitly as it comes from the `idMixin`\n\nvar BASE_PROPS = ['id'].concat(_toConsumableArray(Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"j\" /* keys */])(Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"k\" /* omit */])(__WEBPACK_IMPORTED_MODULE_0__modal__[\"b\" /* props */], ['busy', 'lazy', 'noStacking', \"static\", 'visible'])))); // Fallback event resolver (returns undefined)\n\nvar defaultResolver = function defaultResolver(bvModalEvt) {}; // Map prop names to modal slot names\n\n\nvar propsToSlots = {\n msgBoxContent: 'default',\n title: 'modal-title',\n okTitle: 'modal-ok',\n cancelTitle: 'modal-cancel'\n}; // --- Utility methods ---\n// Method to filter only recognized props that are not undefined\n\nvar filterOptions = function filterOptions(options) {\n return BASE_PROPS.reduce(function (memo, key) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"n\" /* isUndefined */])(options[key])) {\n memo[key] = options[key];\n }\n\n return memo;\n }, {});\n}; // Method to install `$bvModal` VM injection\n\n\nvar plugin = function plugin(Vue) {\n // Create a private sub-component that extends BModal\n // which self-destructs after hidden\n // @vue/component\n var BMsgBox = Vue.extend({\n name: 'BMsgBox',\n extends: __WEBPACK_IMPORTED_MODULE_0__modal__[\"a\" /* BModal */],\n destroyed: function destroyed() {\n // Make sure we not in document any more\n if (this.$el && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n // Self destruct handler\n var handleDestroy = function handleDestroy() {\n var self = _this;\n\n _this.$nextTick(function () {\n // In a `setTimeout()` to release control back to application\n setTimeout(function () {\n return self.$destroy();\n }, 0);\n });\n }; // Self destruct if parent destroyed\n\n\n this.$parent.$once('hook:destroyed', handleDestroy); // Self destruct after hidden\n\n this.$once('hidden', handleDestroy); // Self destruct on route change\n\n /* istanbul ignore if */\n\n if (this.$router && this.$route) {\n // Destroy ourselves if route changes\n\n /* istanbul ignore next */\n this.$once('hook:beforeDestroy', this.$watch('$router', handleDestroy));\n } // Show the `BMsgBox`\n\n\n this.show();\n }\n }); // Method to generate the on-demand modal message box\n // Returns a promise that resolves to a value returned by the resolve\n\n var asyncMsgBox = function asyncMsgBox($parent, props) {\n var resolver = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultResolver;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_6__utils_warn__[\"e\" /* warnNotClient */])(PROP_NAME) || Object(__WEBPACK_IMPORTED_MODULE_6__utils_warn__[\"d\" /* warnNoPromiseSupport */])(PROP_NAME)) {\n /* istanbul ignore next */\n return;\n } // Create an instance of `BMsgBox` component\n\n\n var msgBox = new BMsgBox({\n // We set parent as the local VM so these modals can emit events on\n // the app `$root`, as needed by things like tooltips and popovers\n // And it helps to ensure `BMsgBox` is destroyed when parent is destroyed\n parent: $parent,\n // Preset the prop values\n propsData: _objectSpread({}, filterOptions(Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])('BModal') || {}), {\n // Defaults that user can override\n hideHeaderClose: true,\n hideHeader: !(props.title || props.titleHtml)\n }, Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"k\" /* omit */])(props, Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"j\" /* keys */])(propsToSlots)), {\n // Props that can't be overridden\n lazy: false,\n busy: false,\n visible: false,\n noStacking: false,\n noEnforceFocus: false\n })\n }); // Convert certain props to scoped slots\n\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"j\" /* keys */])(propsToSlots).forEach(function (prop) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"n\" /* isUndefined */])(props[prop])) {\n // Can be a string, or array of VNodes.\n // Alternatively, user can use HTML version of prop to pass an HTML string.\n msgBox.$slots[propsToSlots[prop]] = Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"b\" /* concat */])(props[prop]);\n }\n }); // Return a promise that resolves when hidden, or rejects on destroyed\n\n return new Promise(function (resolve, reject) {\n var resolved = false;\n msgBox.$once('hook:destroyed', function () {\n if (!resolved) {\n /* istanbul ignore next */\n reject(new Error('BootstrapVue MsgBox destroyed before resolve'));\n }\n });\n msgBox.$on('hide', function (bvModalEvt) {\n if (!bvModalEvt.defaultPrevented) {\n var result = resolver(bvModalEvt); // If resolver didn't cancel hide, we resolve\n\n if (!bvModalEvt.defaultPrevented) {\n resolved = true;\n resolve(result);\n }\n }\n }); // Create a mount point (a DIV) and mount the msgBo which will trigger it to show\n\n var div = document.createElement('div');\n document.body.appendChild(div);\n msgBox.$mount(div);\n });\n }; // Private utility method to open a user defined message box and returns a promise.\n // Not to be used directly by consumers, as this method may change calling syntax\n\n\n var makeMsgBox = function makeMsgBox($parent, content) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var resolver = arguments.length > 3 ? arguments[3] : undefined;\n\n if (!content || Object(__WEBPACK_IMPORTED_MODULE_6__utils_warn__[\"d\" /* warnNoPromiseSupport */])(PROP_NAME) || Object(__WEBPACK_IMPORTED_MODULE_6__utils_warn__[\"e\" /* warnNotClient */])(PROP_NAME) || !Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"f\" /* isFunction */])(resolver)) {\n /* istanbul ignore next */\n return;\n }\n\n return asyncMsgBox($parent, _objectSpread({}, filterOptions(options), {\n msgBoxContent: content\n }), resolver);\n }; // BvModal instance class\n\n\n var BvModal =\n /*#__PURE__*/\n function () {\n function BvModal(vm) {\n _classCallCheck(this, BvModal);\n\n // Assign the new properties to this instance\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"a\" /* assign */])(this, {\n _vm: vm,\n _root: vm.$root\n }); // Set these properties as read-only and non-enumerable\n\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"d\" /* defineProperties */])(this, {\n _vm: Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"l\" /* readonlyDescriptor */])(),\n _root: Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"l\" /* readonlyDescriptor */])()\n });\n } // --- Instance methods ---\n // Show modal with the specified ID args are for future use\n\n\n _createClass(BvModal, [{\n key: \"show\",\n value: function show(id) {\n if (id && this._root) {\n var _this$_root;\n\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 (_this$_root = this._root).$emit.apply(_this$_root, ['bv::show::modal', id].concat(args));\n }\n } // Hide modal with the specified ID args are for future use\n\n }, {\n key: \"hide\",\n value: function hide(id) {\n if (id && this._root) {\n var _this$_root2;\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n (_this$_root2 = this._root).$emit.apply(_this$_root2, ['bv::hide::modal', id].concat(args));\n }\n } // The following methods require Promise support!\n // IE 11 and others do not support Promise natively, so users\n // should have a Polyfill loaded (which they need anyways for IE 11 support)\n // Open a message box with OK button only and returns a promise\n\n }, {\n key: \"msgBoxOk\",\n value: function msgBoxOk(message) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // Pick the modal props we support from options\n var props = _objectSpread({}, options, {\n // Add in overrides and our content prop\n okOnly: true,\n okDisabled: false,\n hideFooter: false,\n msgBoxContent: message\n });\n\n return makeMsgBox(this._vm, message, props, function (bvModalEvt) {\n // Always resolve to true for OK\n return true;\n });\n } // Open a message box modal with OK and CANCEL buttons\n // and returns a promise\n\n }, {\n key: \"msgBoxConfirm\",\n value: function msgBoxConfirm(message) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // Set the modal props we support from options\n var props = _objectSpread({}, options, {\n // Add in overrides and our content prop\n okOnly: false,\n okDisabled: false,\n cancelDisabled: false,\n hideFooter: false\n });\n\n return makeMsgBox(this._vm, message, props, function (bvModalEvt) {\n var trigger = bvModalEvt.trigger;\n return trigger === 'ok' ? true : trigger === 'cancel' ? false : null;\n });\n }\n }]);\n\n return BvModal;\n }(); // Add our instance mixin\n\n\n Vue.mixin({\n beforeCreate: function beforeCreate() {\n // Because we need access to `$root` for `$emits`, and VM for parenting,\n // we have to create a fresh instance of `BvModal` for each VM\n this[PROP_NAME_PRIV] = new BvModal(this);\n }\n }); // Define our read-only `$bvModal` instance property\n // Placed in an if just in case in HMR mode\n // eslint-disable-next-line no-prototype-builtins\n\n if (!Vue.prototype.hasOwnProperty(PROP_NAME)) {\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"e\" /* defineProperty */])(Vue.prototype, PROP_NAME, {\n get: function get() {\n /* istanbul ignore next */\n if (!this || !this[PROP_NAME_PRIV]) {\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_warn__[\"b\" /* warn */])(\"'\".concat(PROP_NAME, \"' must be accessed from a Vue instance 'this' context\"));\n }\n\n return this[PROP_NAME_PRIV];\n }\n });\n }\n};\n\nvar BVModalPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_5__utils_plugins__[\"b\" /* pluginFactory */])({\n plugins: {\n plugin: plugin\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9tb2RhbC9oZWxwZXJzL2J2LW1vZGFsLmpzPzNmNzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKLDJDQUEyQyxnQkFBZ0Isa0JBQWtCLE9BQU8sMkJBQTJCLHdEQUF3RCxnQ0FBZ0MsdURBQXVELDJEQUEyRCxFQUFFOztBQUUzVCw2REFBNkQsc0VBQXNFLDhEQUE4RCxvQkFBb0I7O0FBRXJOLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLCtDQUErQywyQ0FBMkMsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8seUNBQXlDLGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBnQiwyQ0FBMkMsa0JBQWtCLGtDQUFrQyxxRUFBcUUsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEVBQUUsWUFBWTs7QUFFL00sa0NBQWtDLGlGQUFpRjs7QUFFbkgsK0JBQStCLHdFQUF3RTs7QUFFdkcsaUNBQWlDLCtIQUErSDs7QUFFaEssa0NBQWtDLDBCQUEwQiw4Q0FBOEMsZ0JBQWdCLE9BQU8sa0JBQWtCLEVBQUUsYUFBYSxFQUFFOztBQUVwSztBQUN1RDtBQUNUO0FBQ2E7QUFDTTtBQUNnRDtBQUMxRDtBQUN5Qjs7QUFFaEY7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBOztBQUVBLGtEQUFrRCxtRUFBSSxDQUFDLG1FQUFJLENBQUMscURBQVUsMERBQTBEOztBQUVoSSw4REFBOEQ7OztBQUc5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGOztBQUVBO0FBQ0E7QUFDQSxTQUFTLDJFQUFXO0FBQ3BCO0FBQ0E7O0FBRUE7QUFDQSxHQUFHLElBQUk7QUFDUCxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHNEQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNULFFBQVE7OztBQUdSLDBEQUEwRDs7QUFFMUQsMENBQTBDOztBQUUxQzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsR0FBRyxFQUFFO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQSxRQUFRLDBFQUFhLGVBQWUsaUZBQW9CO0FBQ3hEO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsZ0JBQWdCLGlGQUFrQixnQkFBZ0I7QUFDbkY7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFLG1FQUFJLFFBQVEsbUVBQUk7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUssRUFBRTs7QUFFUCxJQUFJLG1FQUFJO0FBQ1IsV0FBVywyRUFBVztBQUN0QjtBQUNBO0FBQ0EsNENBQTRDLG9FQUFNO0FBQ2xEO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSw0Q0FBNEM7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSjs7O0FBR0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixpRkFBb0IsZUFBZSwwRUFBYSxnQkFBZ0IsMEVBQVU7QUFDOUY7QUFDQTtBQUNBOztBQUVBLGdEQUFnRDtBQUNoRDtBQUNBLEtBQUs7QUFDTCxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTSxxRUFBTTtBQUNaO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQsTUFBTSwrRUFBZ0I7QUFDdEIsYUFBYSxpRkFBa0I7QUFDL0IsZUFBZSxpRkFBa0I7QUFDakMsT0FBTztBQUNQLEtBQUs7QUFDTDs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnR0FBZ0csYUFBYTtBQUM3RztBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPOztBQUVQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvR0FBb0csZUFBZTtBQUNuSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7O0FBRUw7QUFDQSxHQUFHLEdBQUc7OztBQUdOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTtBQUNMO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLDZFQUFjO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLFVBQVUsaUVBQUk7QUFDZDs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRU87QUFDUDtBQUNBLDZFQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNzEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhzb3VyY2UsIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHsgcmV0dXJuIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfbm9uSXRlcmFibGVTcHJlYWQoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKTsgfVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHsgaWYgKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoaXRlcikgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGl0ZXIpID09PSBcIltvYmplY3QgQXJndW1lbnRzXVwiKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfSB9XG5cbi8vIFBsdWdpbiBmb3IgYWRkaW5nIGAkYnZNb2RhbGAgcHJvcGVydHkgdG8gYWxsIFZ1ZSBpbnN0YW5jZXNcbmltcG9ydCB7IEJNb2RhbCwgcHJvcHMgYXMgbW9kYWxQcm9wcyB9IGZyb20gJy4uL21vZGFsJztcbmltcG9ydCB7IGNvbmNhdCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FycmF5JztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBpc1VuZGVmaW5lZCwgaXNGdW5jdGlvbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2luc3BlY3QnO1xuaW1wb3J0IHsgYXNzaWduLCBrZXlzLCBvbWl0LCBkZWZpbmVQcm9wZXJ0eSwgZGVmaW5lUHJvcGVydGllcywgcmVhZG9ubHlEZXNjcmlwdG9yIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvb2JqZWN0JztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi8uLi91dGlscy9wbHVnaW5zJztcbmltcG9ydCB7IHdhcm4sIHdhcm5Ob3RDbGllbnQsIHdhcm5Ob1Byb21pc2VTdXBwb3J0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvd2Fybic7IC8vIC0tLSBDb25zdGFudHMgLS0tXG5cbnZhciBQUk9QX05BTUUgPSAnJGJ2TW9kYWwnO1xudmFyIFBST1BfTkFNRV9QUklWID0gJ19idl9fbW9kYWwnOyAvLyBCYXNlIG1vZGFsIHByb3BzIHRoYXQgYXJlIGFsbG93ZWRcbi8vIFNvbWUgbWF5IGJlIGlnbm9yZWQgb3Igb3ZlcnJpZGRlbiBvbiBzb21lIG1lc3NhZ2UgYm94ZXNcbi8vIFByb3AgSUQgaXMgYWxsb3dlZCwgYnV0IHJlYWxseSBvbmx5IHNob3VsZCBiZSB1c2VkIGZvciB0ZXN0aW5nXG4vLyBXZSBuZWVkIHRvIGFkZCBpdCBpbiBleHBsaWNpdGx5IGFzIGl0IGNvbWVzIGZyb20gdGhlIGBpZE1peGluYFxuXG52YXIgQkFTRV9QUk9QUyA9IFsnaWQnXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGtleXMob21pdChtb2RhbFByb3BzLCBbJ2J1c3knLCAnbGF6eScsICdub1N0YWNraW5nJywgXCJzdGF0aWNcIiwgJ3Zpc2libGUnXSkpKSk7IC8vIEZhbGxiYWNrIGV2ZW50IHJlc29sdmVyIChyZXR1cm5zIHVuZGVmaW5lZClcblxudmFyIGRlZmF1bHRSZXNvbHZlciA9IGZ1bmN0aW9uIGRlZmF1bHRSZXNvbHZlcihidk1vZGFsRXZ0KSB7fTsgLy8gTWFwIHByb3AgbmFtZXMgdG8gbW9kYWwgc2xvdCBuYW1lc1xuXG5cbnZhciBwcm9wc1RvU2xvdHMgPSB7XG4gIG1zZ0JveENvbnRlbnQ6ICdkZWZhdWx0JyxcbiAgdGl0bGU6ICdtb2RhbC10aXRsZScsXG4gIG9rVGl0bGU6ICdtb2RhbC1vaycsXG4gIGNhbmNlbFRpdGxlOiAnbW9kYWwtY2FuY2VsJ1xufTsgLy8gLS0tIFV0aWxpdHkgbWV0aG9kcyAtLS1cbi8vIE1ldGhvZCB0byBmaWx0ZXIgb25seSByZWNvZ25pemVkIHByb3BzIHRoYXQgYXJlIG5vdCB1bmRlZmluZWRcblxudmFyIGZpbHRlck9wdGlvbnMgPSBmdW5jdGlvbiBmaWx0ZXJPcHRpb25zKG9wdGlvbnMpIHtcbiAgcmV0dXJuIEJBU0VfUFJPUFMucmVkdWNlKGZ1bmN0aW9uIChtZW1vLCBrZXkpIHtcbiAgICBpZiAoIWlzVW5kZWZpbmVkKG9wdGlvbnNba2V5XSkpIHtcbiAgICAgIG1lbW9ba2V5XSA9IG9wdGlvbnNba2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtbztcbiAgfSwge30pO1xufTsgLy8gTWV0aG9kIHRvIGluc3RhbGwgYCRidk1vZGFsYCBWTSBpbmplY3Rpb25cblxuXG52YXIgcGx1Z2luID0gZnVuY3Rpb24gcGx1Z2luKFZ1ZSkge1xuICAvLyBDcmVhdGUgYSBwcml2YXRlIHN1Yi1jb21wb25lbnQgdGhhdCBleHRlbmRzIEJNb2RhbFxuICAvLyB3aGljaCBzZWxmLWRlc3RydWN0cyBhZnRlciBoaWRkZW5cbiAgLy8gQHZ1ZS9jb21wb25lbnRcbiAgdmFyIEJNc2dCb3ggPSBWdWUuZXh0ZW5kKHtcbiAgICBuYW1lOiAnQk1zZ0JveCcsXG4gICAgZXh0ZW5kczogQk1vZGFsLFxuICAgIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkKCkge1xuICAgICAgLy8gTWFrZSBzdXJlIHdlIG5vdCBpbiBkb2N1bWVudCBhbnkgbW9yZVxuICAgICAgaWYgKHRoaXMuJGVsICYmIHRoaXMuJGVsLnBhcmVudE5vZGUpIHtcbiAgICAgICAgdGhpcy4kZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLiRlbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgLy8gU2VsZiBkZXN0cnVjdCBoYW5kbGVyXG4gICAgICB2YXIgaGFuZGxlRGVzdHJveSA9IGZ1bmN0aW9uIGhhbmRsZURlc3Ryb3koKSB7XG4gICAgICAgIHZhciBzZWxmID0gX3RoaXM7XG5cbiAgICAgICAgX3RoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAvLyBJbiBhIGBzZXRUaW1lb3V0KClgIHRvIHJlbGVhc2UgY29udHJvbCBiYWNrIHRvIGFwcGxpY2F0aW9uXG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc2VsZi4kZGVzdHJveSgpO1xuICAgICAgICAgIH0sIDApO1xuICAgICAgICB9KTtcbiAgICAgIH07IC8vIFNlbGYgZGVzdHJ1Y3QgaWYgcGFyZW50IGRlc3Ryb3llZFxuXG5cbiAgICAgIHRoaXMuJHBhcmVudC4kb25jZSgnaG9vazpkZXN0cm95ZWQnLCBoYW5kbGVEZXN0cm95KTsgLy8gU2VsZiBkZXN0cnVjdCBhZnRlciBoaWRkZW5cblxuICAgICAgdGhpcy4kb25jZSgnaGlkZGVuJywgaGFuZGxlRGVzdHJveSk7IC8vIFNlbGYgZGVzdHJ1Y3Qgb24gcm91dGUgY2hhbmdlXG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXG4gICAgICBpZiAodGhpcy4kcm91dGVyICYmIHRoaXMuJHJvdXRlKSB7XG4gICAgICAgIC8vIERlc3Ryb3kgb3Vyc2VsdmVzIGlmIHJvdXRlIGNoYW5nZXNcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICB0aGlzLiRvbmNlKCdob29rOmJlZm9yZURlc3Ryb3knLCB0aGlzLiR3YXRjaCgnJHJvdXRlcicsIGhhbmRsZURlc3Ryb3kpKTtcbiAgICAgIH0gLy8gU2hvdyB0aGUgYEJNc2dCb3hgXG5cblxuICAgICAgdGhpcy5zaG93KCk7XG4gICAgfVxuICB9KTsgLy8gTWV0aG9kIHRvIGdlbmVyYXRlIHRoZSBvbi1kZW1hbmQgbW9kYWwgbWVzc2FnZSBib3hcbiAgLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIHZhbHVlIHJldHVybmVkIGJ5IHRoZSByZXNvbHZlXG5cbiAgdmFyIGFzeW5jTXNnQm94ID0gZnVuY3Rpb24gYXN5bmNNc2dCb3goJHBhcmVudCwgcHJvcHMpIHtcbiAgICB2YXIgcmVzb2x2ZXIgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IGRlZmF1bHRSZXNvbHZlcjtcblxuICAgIGlmICh3YXJuTm90Q2xpZW50KFBST1BfTkFNRSkgfHwgd2Fybk5vUHJvbWlzZVN1cHBvcnQoUFJPUF9OQU1FKSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybjtcbiAgICB9IC8vIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiBgQk1zZ0JveGAgY29tcG9uZW50XG5cblxuICAgIHZhciBtc2dCb3ggPSBuZXcgQk1zZ0JveCh7XG4gICAgICAvLyBXZSBzZXQgcGFyZW50IGFzIHRoZSBsb2NhbCBWTSBzbyB0aGVzZSBtb2RhbHMgY2FuIGVtaXQgZXZlbnRzIG9uXG4gICAgICAvLyB0aGUgYXBwIGAkcm9vdGAsIGFzIG5lZWRlZCBieSB0aGluZ3MgbGlrZSB0b29sdGlwcyBhbmQgcG9wb3ZlcnNcbiAgICAgIC8vIEFuZCBpdCBoZWxwcyB0byBlbnN1cmUgYEJNc2dCb3hgIGlzIGRlc3Ryb3llZCB3aGVuIHBhcmVudCBpcyBkZXN0cm95ZWRcbiAgICAgIHBhcmVudDogJHBhcmVudCxcbiAgICAgIC8vIFByZXNldCB0aGUgcHJvcCB2YWx1ZXNcbiAgICAgIHByb3BzRGF0YTogX29iamVjdFNwcmVhZCh7fSwgZmlsdGVyT3B0aW9ucyhnZXRDb21wb25lbnRDb25maWcoJ0JNb2RhbCcpIHx8IHt9KSwge1xuICAgICAgICAvLyBEZWZhdWx0cyB0aGF0IHVzZXIgY2FuIG92ZXJyaWRlXG4gICAgICAgIGhpZGVIZWFkZXJDbG9zZTogdHJ1ZSxcbiAgICAgICAgaGlkZUhlYWRlcjogIShwcm9wcy50aXRsZSB8fCBwcm9wcy50aXRsZUh0bWwpXG4gICAgICB9LCBvbWl0KHByb3BzLCBrZXlzKHByb3BzVG9TbG90cykpLCB7XG4gICAgICAgIC8vIFByb3BzIHRoYXQgY2FuJ3QgYmUgb3ZlcnJpZGRlblxuICAgICAgICBsYXp5OiBmYWxzZSxcbiAgICAgICAgYnVzeTogZmFsc2UsXG4gICAgICAgIHZpc2libGU6IGZhbHNlLFxuICAgICAgICBub1N0YWNraW5nOiBmYWxzZSxcbiAgICAgICAgbm9FbmZvcmNlRm9jdXM6IGZhbHNlXG4gICAgICB9KVxuICAgIH0pOyAvLyBDb252ZXJ0IGNlcnRhaW4gcHJvcHMgdG8gc2NvcGVkIHNsb3RzXG5cbiAgICBrZXlzKHByb3BzVG9TbG90cykuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICAgICAgaWYgKCFpc1VuZGVmaW5lZChwcm9wc1twcm9wXSkpIHtcbiAgICAgICAgLy8gQ2FuIGJlIGEgc3RyaW5nLCBvciBhcnJheSBvZiBWTm9kZXMuXG4gICAgICAgIC8vIEFsdGVybmF0aXZlbHksIHVzZXIgY2FuIHVzZSBIVE1MIHZlcnNpb24gb2YgcHJvcCB0byBwYXNzIGFuIEhUTUwgc3RyaW5nLlxuICAgICAgICBtc2dCb3guJHNsb3RzW3Byb3BzVG9TbG90c1twcm9wXV0gPSBjb25jYXQocHJvcHNbcHJvcF0pO1xuICAgICAgfVxuICAgIH0pOyAvLyBSZXR1cm4gYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBoaWRkZW4sIG9yIHJlamVjdHMgb24gZGVzdHJveWVkXG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHJlc29sdmVkID0gZmFsc2U7XG4gICAgICBtc2dCb3guJG9uY2UoJ2hvb2s6ZGVzdHJveWVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXJlc29sdmVkKSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdCb290c3RyYXBWdWUgTXNnQm94IGRlc3Ryb3llZCBiZWZvcmUgcmVzb2x2ZScpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBtc2dCb3guJG9uKCdoaWRlJywgZnVuY3Rpb24gKGJ2TW9kYWxFdnQpIHtcbiAgICAgICAgaWYgKCFidk1vZGFsRXZ0LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gcmVzb2x2ZXIoYnZNb2RhbEV2dCk7IC8vIElmIHJlc29sdmVyIGRpZG4ndCBjYW5jZWwgaGlkZSwgd2UgcmVzb2x2ZVxuXG4gICAgICAgICAgaWYgKCFidk1vZGFsRXZ0LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgIHJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pOyAvLyBDcmVhdGUgYSBtb3VudCBwb2ludCAoYSBESVYpIGFuZCBtb3VudCB0aGUgbXNnQm8gd2hpY2ggd2lsbCB0cmlnZ2VyIGl0IHRvIHNob3dcblxuICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpO1xuICAgICAgbXNnQm94LiRtb3VudChkaXYpO1xuICAgIH0pO1xuICB9OyAvLyBQcml2YXRlIHV0aWxpdHkgbWV0aG9kIHRvIG9wZW4gYSB1c2VyIGRlZmluZWQgbWVzc2FnZSBib3ggYW5kIHJldHVybnMgYSBwcm9taXNlLlxuICAvLyBOb3QgdG8gYmUgdXNlZCBkaXJlY3RseSBieSBjb25zdW1lcnMsIGFzIHRoaXMgbWV0aG9kIG1heSBjaGFuZ2UgY2FsbGluZyBzeW50YXhcblxuXG4gIHZhciBtYWtlTXNnQm94ID0gZnVuY3Rpb24gbWFrZU1zZ0JveCgkcGFyZW50LCBjb250ZW50KSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHt9O1xuICAgIHZhciByZXNvbHZlciA9IGFyZ3VtZW50cy5sZW5ndGggPiAzID8gYXJndW1lbnRzWzNdIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKCFjb250ZW50IHx8IHdhcm5Ob1Byb21pc2VTdXBwb3J0KFBST1BfTkFNRSkgfHwgd2Fybk5vdENsaWVudChQUk9QX05BTUUpIHx8ICFpc0Z1bmN0aW9uKHJlc29sdmVyKSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gYXN5bmNNc2dCb3goJHBhcmVudCwgX29iamVjdFNwcmVhZCh7fSwgZmlsdGVyT3B0aW9ucyhvcHRpb25zKSwge1xuICAgICAgbXNnQm94Q29udGVudDogY29udGVudFxuICAgIH0pLCByZXNvbHZlcik7XG4gIH07IC8vIEJ2TW9kYWwgaW5zdGFuY2UgY2xhc3NcblxuXG4gIHZhciBCdk1vZGFsID1cbiAgLyojX19QVVJFX18qL1xuICBmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQnZNb2RhbCh2bSkge1xuICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJ2TW9kYWwpO1xuXG4gICAgICAvLyBBc3NpZ24gdGhlIG5ldyBwcm9wZXJ0aWVzIHRvIHRoaXMgaW5zdGFuY2VcbiAgICAgIGFzc2lnbih0aGlzLCB7XG4gICAgICAgIF92bTogdm0sXG4gICAgICAgIF9yb290OiB2bS4kcm9vdFxuICAgICAgfSk7IC8vIFNldCB0aGVzZSBwcm9wZXJ0aWVzIGFzIHJlYWQtb25seSBhbmQgbm9uLWVudW1lcmFibGVcblxuICAgICAgZGVmaW5lUHJvcGVydGllcyh0aGlzLCB7XG4gICAgICAgIF92bTogcmVhZG9ubHlEZXNjcmlwdG9yKCksXG4gICAgICAgIF9yb290OiByZWFkb25seURlc2NyaXB0b3IoKVxuICAgICAgfSk7XG4gICAgfSAvLyAtLS0gSW5zdGFuY2UgbWV0aG9kcyAtLS1cbiAgICAvLyBTaG93IG1vZGFsIHdpdGggdGhlIHNwZWNpZmllZCBJRCBhcmdzIGFyZSBmb3IgZnV0dXJlIHVzZVxuXG5cbiAgICBfY3JlYXRlQ2xhc3MoQnZNb2RhbCwgW3tcbiAgICAgIGtleTogXCJzaG93XCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gc2hvdyhpZCkge1xuICAgICAgICBpZiAoaWQgJiYgdGhpcy5fcm9vdCkge1xuICAgICAgICAgIHZhciBfdGhpcyRfcm9vdDtcblxuICAgICAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIChfdGhpcyRfcm9vdCA9IHRoaXMuX3Jvb3QpLiRlbWl0LmFwcGx5KF90aGlzJF9yb290LCBbJ2J2OjpzaG93Ojptb2RhbCcsIGlkXS5jb25jYXQoYXJncykpO1xuICAgICAgICB9XG4gICAgICB9IC8vIEhpZGUgbW9kYWwgd2l0aCB0aGUgc3BlY2lmaWVkIElEIGFyZ3MgYXJlIGZvciBmdXR1cmUgdXNlXG5cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiaGlkZVwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGhpZGUoaWQpIHtcbiAgICAgICAgaWYgKGlkICYmIHRoaXMuX3Jvb3QpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkX3Jvb3QyO1xuXG4gICAgICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yID4gMSA/IF9sZW4yIC0gMSA6IDApLCBfa2V5MiA9IDE7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2tleTIgLSAxXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgKF90aGlzJF9yb290MiA9IHRoaXMuX3Jvb3QpLiRlbWl0LmFwcGx5KF90aGlzJF9yb290MiwgWydidjo6aGlkZTo6bW9kYWwnLCBpZF0uY29uY2F0KGFyZ3MpKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgcmVxdWlyZSBQcm9taXNlIHN1cHBvcnQhXG4gICAgICAvLyBJRSAxMSBhbmQgb3RoZXJzIGRvIG5vdCBzdXBwb3J0IFByb21pc2UgbmF0aXZlbHksIHNvIHVzZXJzXG4gICAgICAvLyBzaG91bGQgaGF2ZSBhIFBvbHlmaWxsIGxvYWRlZCAod2hpY2ggdGhleSBuZWVkIGFueXdheXMgZm9yIElFIDExIHN1cHBvcnQpXG4gICAgICAvLyBPcGVuIGEgbWVzc2FnZSBib3ggd2l0aCBPSyBidXR0b24gb25seSBhbmQgcmV0dXJucyBhIHByb21pc2VcblxuICAgIH0sIHtcbiAgICAgIGtleTogXCJtc2dCb3hPa1wiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIG1zZ0JveE9rKG1lc3NhZ2UpIHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gICAgICAgIC8vIFBpY2sgdGhlIG1vZGFsIHByb3BzIHdlIHN1cHBvcnQgZnJvbSBvcHRpb25zXG4gICAgICAgIHZhciBwcm9wcyA9IF9vYmplY3RTcHJlYWQoe30sIG9wdGlvbnMsIHtcbiAgICAgICAgICAvLyBBZGQgaW4gb3ZlcnJpZGVzIGFuZCBvdXIgY29udGVudCBwcm9wXG4gICAgICAgICAgb2tPbmx5OiB0cnVlLFxuICAgICAgICAgIG9rRGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgIGhpZGVGb290ZXI6IGZhbHNlLFxuICAgICAgICAgIG1zZ0JveENvbnRlbnQ6IG1lc3NhZ2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG1ha2VNc2dCb3godGhpcy5fdm0sIG1lc3NhZ2UsIHByb3BzLCBmdW5jdGlvbiAoYnZNb2RhbEV2dCkge1xuICAgICAgICAgIC8vIEFsd2F5cyByZXNvbHZlIHRvIHRydWUgZm9yIE9LXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfSAvLyBPcGVuIGEgbWVzc2FnZSBib3ggbW9kYWwgd2l0aCBPSyBhbmQgQ0FOQ0VMIGJ1dHRvbnNcbiAgICAgIC8vIGFuZCByZXR1cm5zIGEgcHJvbWlzZVxuXG4gICAgfSwge1xuICAgICAga2V5OiBcIm1zZ0JveENvbmZpcm1cIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBtc2dCb3hDb25maXJtKG1lc3NhZ2UpIHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gICAgICAgIC8vIFNldCB0aGUgbW9kYWwgcHJvcHMgd2Ugc3VwcG9ydCBmcm9tIG9wdGlvbnNcbiAgICAgICAgdmFyIHByb3BzID0gX29iamVjdFNwcmVhZCh7fSwgb3B0aW9ucywge1xuICAgICAgICAgIC8vIEFkZCBpbiBvdmVycmlkZXMgYW5kIG91ciBjb250ZW50IHByb3BcbiAgICAgICAgICBva09ubHk6IGZhbHNlLFxuICAgICAgICAgIG9rRGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgIGNhbmNlbERpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICBoaWRlRm9vdGVyOiBmYWxzZVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbWFrZU1zZ0JveCh0aGlzLl92bSwgbWVzc2FnZSwgcHJvcHMsIGZ1bmN0aW9uIChidk1vZGFsRXZ0KSB7XG4gICAgICAgICAgdmFyIHRyaWdnZXIgPSBidk1vZGFsRXZ0LnRyaWdnZXI7XG4gICAgICAgICAgcmV0dXJuIHRyaWdnZXIgPT09ICdvaycgPyB0cnVlIDogdHJpZ2dlciA9PT0gJ2NhbmNlbCcgPyBmYWxzZSA6IG51bGw7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBCdk1vZGFsO1xuICB9KCk7IC8vIEFkZCBvdXIgaW5zdGFuY2UgbWl4aW5cblxuXG4gIFZ1ZS5taXhpbih7XG4gICAgYmVmb3JlQ3JlYXRlOiBmdW5jdGlvbiBiZWZvcmVDcmVhdGUoKSB7XG4gICAgICAvLyBCZWNhdXNlIHdlIG5lZWQgYWNjZXNzIHRvIGAkcm9vdGAgZm9yIGAkZW1pdHNgLCBhbmQgVk0gZm9yIHBhcmVudGluZyxcbiAgICAgIC8vIHdlIGhhdmUgdG8gY3JlYXRlIGEgZnJlc2ggaW5zdGFuY2Ugb2YgYEJ2TW9kYWxgIGZvciBlYWNoIFZNXG4gICAgICB0aGlzW1BST1BfTkFNRV9QUklWXSA9IG5ldyBCdk1vZGFsKHRoaXMpO1xuICAgIH1cbiAgfSk7IC8vIERlZmluZSBvdXIgcmVhZC1vbmx5IGAkYnZNb2RhbGAgaW5zdGFuY2UgcHJvcGVydHlcbiAgLy8gUGxhY2VkIGluIGFuIGlmIGp1c3QgaW4gY2FzZSBpbiBITVIgbW9kZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG5cbiAgaWYgKCFWdWUucHJvdG90eXBlLmhhc093blByb3BlcnR5KFBST1BfTkFNRSkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eShWdWUucHJvdG90eXBlLCBQUk9QX05BTUUsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBpZiAoIXRoaXMgfHwgIXRoaXNbUFJPUF9OQU1FX1BSSVZdKSB7XG4gICAgICAgICAgd2FybihcIidcIi5jb25jYXQoUFJPUF9OQU1FLCBcIicgbXVzdCBiZSBhY2Nlc3NlZCBmcm9tIGEgVnVlIGluc3RhbmNlICd0aGlzJyBjb250ZXh0XCIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzW1BST1BfTkFNRV9QUklWXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IHZhciBCVk1vZGFsUGx1Z2luID1cbi8qI19fUFVSRV9fKi9cbnBsdWdpbkZhY3Rvcnkoe1xuICBwbHVnaW5zOiB7XG4gICAgcGx1Z2luOiBwbHVnaW5cbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9tb2RhbC9oZWxwZXJzL2J2LW1vZGFsLmpzXG4vLyBtb2R1bGUgaWQgPSAxNzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///171\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BMedia; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_normalize_slot__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__media_body__ = __webpack_require__(75);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__media_aside__ = __webpack_require__(76);\n\n\n\n\n\nvar props = {\n tag: {\n type: String,\n default: 'div'\n },\n rightAlign: {\n type: Boolean,\n default: false\n },\n verticalAlign: {\n type: String,\n default: 'top'\n },\n noBody: {\n type: Boolean,\n default: false\n }\n}; // @vue/component\n\nvar BMedia =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BMedia',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots,\n children = _ref.children;\n var childNodes = props.noBody ? children : [];\n\n if (!props.noBody) {\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var $aside = Object(__WEBPACK_IMPORTED_MODULE_2__utils_normalize_slot__[\"b\" /* normalizeSlot */])('aside', {}, $scopedSlots, $slots);\n var $default = Object(__WEBPACK_IMPORTED_MODULE_2__utils_normalize_slot__[\"b\" /* normalizeSlot */])('default', {}, $scopedSlots, $slots);\n\n if ($aside && !props.rightAlign) {\n childNodes.push(h(__WEBPACK_IMPORTED_MODULE_4__media_aside__[\"a\" /* BMediaAside */], {\n staticClass: 'mr-3',\n props: {\n verticalAlign: props.verticalAlign\n }\n }, $aside));\n }\n\n childNodes.push(h(__WEBPACK_IMPORTED_MODULE_3__media_body__[\"a\" /* BMediaBody */], {}, $default));\n\n if ($aside && props.rightAlign) {\n childNodes.push(h(__WEBPACK_IMPORTED_MODULE_4__media_aside__[\"a\" /* BMediaAside */], {\n staticClass: 'ml-3',\n props: {\n verticalAlign: props.verticalAlign\n }\n }, $aside));\n }\n }\n\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'media'\n }), childNodes);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9tZWRpYS9tZWRpYS5qcz8xNTBjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ29CO0FBQ0s7QUFDakI7QUFDRTtBQUNyQztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0ZBQWEsWUFBWTtBQUM1QyxxQkFBcUIsb0ZBQWEsY0FBYzs7QUFFaEQ7QUFDQSwwQkFBMEIsaUVBQVc7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUEsd0JBQXdCLCtEQUFVLElBQUk7O0FBRXRDO0FBQ0EsMEJBQTBCLGlFQUFXO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUEsd0JBQXdCLG9GQUFTO0FBQ2pDO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNzEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCB7IG5vcm1hbGl6ZVNsb3QgfSBmcm9tICcuLi8uLi91dGlscy9ub3JtYWxpemUtc2xvdCc7XG5pbXBvcnQgeyBCTWVkaWFCb2R5IH0gZnJvbSAnLi9tZWRpYS1ib2R5JztcbmltcG9ydCB7IEJNZWRpYUFzaWRlIH0gZnJvbSAnLi9tZWRpYS1hc2lkZSc7XG5leHBvcnQgdmFyIHByb3BzID0ge1xuICB0YWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ2RpdidcbiAgfSxcbiAgcmlnaHRBbGlnbjoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgdmVydGljYWxBbGlnbjoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAndG9wJ1xuICB9LFxuICBub0JvZHk6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQk1lZGlhID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQk1lZGlhJyxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcHJvcHM6IHByb3BzLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBfcmVmKSB7XG4gICAgdmFyIHByb3BzID0gX3JlZi5wcm9wcyxcbiAgICAgICAgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICAgICAgc2xvdHMgPSBfcmVmLnNsb3RzLFxuICAgICAgICBzY29wZWRTbG90cyA9IF9yZWYuc2NvcGVkU2xvdHMsXG4gICAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgICB2YXIgY2hpbGROb2RlcyA9IHByb3BzLm5vQm9keSA/IGNoaWxkcmVuIDogW107XG5cbiAgICBpZiAoIXByb3BzLm5vQm9keSkge1xuICAgICAgdmFyICRzbG90cyA9IHNsb3RzKCk7XG4gICAgICB2YXIgJHNjb3BlZFNsb3RzID0gc2NvcGVkU2xvdHMgfHwge307XG4gICAgICB2YXIgJGFzaWRlID0gbm9ybWFsaXplU2xvdCgnYXNpZGUnLCB7fSwgJHNjb3BlZFNsb3RzLCAkc2xvdHMpO1xuICAgICAgdmFyICRkZWZhdWx0ID0gbm9ybWFsaXplU2xvdCgnZGVmYXVsdCcsIHt9LCAkc2NvcGVkU2xvdHMsICRzbG90cyk7XG5cbiAgICAgIGlmICgkYXNpZGUgJiYgIXByb3BzLnJpZ2h0QWxpZ24pIHtcbiAgICAgICAgY2hpbGROb2Rlcy5wdXNoKGgoQk1lZGlhQXNpZGUsIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogJ21yLTMnLFxuICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICB2ZXJ0aWNhbEFsaWduOiBwcm9wcy52ZXJ0aWNhbEFsaWduXG4gICAgICAgICAgfVxuICAgICAgICB9LCAkYXNpZGUpKTtcbiAgICAgIH1cblxuICAgICAgY2hpbGROb2Rlcy5wdXNoKGgoQk1lZGlhQm9keSwge30sICRkZWZhdWx0KSk7XG5cbiAgICAgIGlmICgkYXNpZGUgJiYgcHJvcHMucmlnaHRBbGlnbikge1xuICAgICAgICBjaGlsZE5vZGVzLnB1c2goaChCTWVkaWFBc2lkZSwge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiAnbWwtMycsXG4gICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHZlcnRpY2FsQWxpZ246IHByb3BzLnZlcnRpY2FsQWxpZ25cbiAgICAgICAgICB9XG4gICAgICAgIH0sICRhc2lkZSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBoKHByb3BzLnRhZywgbWVyZ2VEYXRhKGRhdGEsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnbWVkaWEnXG4gICAgfSksIGNoaWxkTm9kZXMpO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL21lZGlhL21lZGlhLmpzXG4vLyBtb2R1bGUgaWQgPSAxNzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///171\n"); /***/ }), /* 172 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BNavItem; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__link_link__ = __webpack_require__(14);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\nvar props = Object(__WEBPACK_IMPORTED_MODULE_2__link_link__[\"b\" /* propsFactory */])(); // @vue/component\n\nvar BNavItem =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BNavItem',\n functional: true,\n props: _objectSpread({}, props, {\n linkAttrs: {\n type: Object,\n default: function _default() {}\n },\n linkClasses: {\n type: [String, Object, Array],\n default: null\n }\n }),\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n listeners = _ref.listeners,\n children = _ref.children;\n // We transfer the listeners to the link\n delete data.on;\n return h('li', Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'nav-item'\n }), [h(__WEBPACK_IMPORTED_MODULE_2__link_link__[\"a\" /* BLink */], {\n staticClass: 'nav-link',\n class: props.linkClasses,\n attrs: props.linkAttrs,\n props: props,\n on: listeners\n }, children)]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXYvbmF2LWl0ZW0uanM/Y2EzMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNvQjtBQUNpQjtBQUNoRSxZQUFZLHdFQUFnQixHQUFHOztBQUUvQjtBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixvRkFBUztBQUM1QjtBQUNBLEtBQUssTUFBTSx5REFBSztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNzIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCB7IEJMaW5rLCBwcm9wc0ZhY3RvcnkgYXMgbGlua1Byb3BzRmFjdG9yeSB9IGZyb20gJy4uL2xpbmsvbGluayc7XG5leHBvcnQgdmFyIHByb3BzID0gbGlua1Byb3BzRmFjdG9yeSgpOyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJOYXZJdGVtID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQk5hdkl0ZW0nLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogX29iamVjdFNwcmVhZCh7fSwgcHJvcHMsIHtcbiAgICBsaW5rQXR0cnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge31cbiAgICB9LFxuICAgIGxpbmtDbGFzc2VzOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3QsIEFycmF5XSxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9XG4gIH0pLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBfcmVmKSB7XG4gICAgdmFyIHByb3BzID0gX3JlZi5wcm9wcyxcbiAgICAgICAgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICAgICAgbGlzdGVuZXJzID0gX3JlZi5saXN0ZW5lcnMsXG4gICAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgICAvLyBXZSB0cmFuc2ZlciB0aGUgbGlzdGVuZXJzIHRvIHRoZSBsaW5rXG4gICAgZGVsZXRlIGRhdGEub247XG4gICAgcmV0dXJuIGgoJ2xpJywgbWVyZ2VEYXRhKGRhdGEsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnbmF2LWl0ZW0nXG4gICAgfSksIFtoKEJMaW5rLCB7XG4gICAgICBzdGF0aWNDbGFzczogJ25hdi1saW5rJyxcbiAgICAgIGNsYXNzOiBwcm9wcy5saW5rQ2xhc3NlcyxcbiAgICAgIGF0dHJzOiBwcm9wcy5saW5rQXR0cnMsXG4gICAgICBwcm9wczogcHJvcHMsXG4gICAgICBvbjogbGlzdGVuZXJzXG4gICAgfSwgY2hpbGRyZW4pXSk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvbmF2L25hdi1pdGVtLmpzXG4vLyBtb2R1bGUgaWQgPSAxNzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///172\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ModalPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__modal__ = __webpack_require__(77);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__directives_modal_modal__ = __webpack_require__(79);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__helpers_bv_modal__ = __webpack_require__(173);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BModal */\n\n\n\n\nvar ModalPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_3__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BModal: __WEBPACK_IMPORTED_MODULE_0__modal__[\"a\" /* BModal */]\n },\n directives: {\n VBModal: __WEBPACK_IMPORTED_MODULE_1__directives_modal_modal__[\"a\" /* VBModal */]\n },\n // $bvModal injection\n plugins: {\n BVModalPlugin: __WEBPACK_IMPORTED_MODULE_2__helpers_bv_modal__[\"a\" /* BVModalPlugin */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9tb2RhbC9pbmRleC5qcz8zMDNlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNzQjtBQUNKO0FBQ0M7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxZQUFZLHNEQUFNO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLGFBQWEsd0VBQU87QUFDcEIsR0FBRztBQUNIO0FBQ0E7QUFDQSxtQkFBbUIsd0VBQWE7QUFDaEM7QUFDQSxDQUFDIiwiZmlsZSI6IjE3Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJNb2RhbCB9IGZyb20gJy4vbW9kYWwnO1xuaW1wb3J0IHsgVkJNb2RhbCB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbW9kYWwvbW9kYWwnO1xuaW1wb3J0IHsgQlZNb2RhbFBsdWdpbiB9IGZyb20gJy4vaGVscGVycy9idi1tb2RhbCc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgTW9kYWxQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCTW9kYWw6IEJNb2RhbFxuICB9LFxuICBkaXJlY3RpdmVzOiB7XG4gICAgVkJNb2RhbDogVkJNb2RhbFxuICB9LFxuICAvLyAkYnZNb2RhbCBpbmplY3Rpb25cbiAgcGx1Z2luczoge1xuICAgIEJWTW9kYWxQbHVnaW46IEJWTW9kYWxQbHVnaW5cbiAgfVxufSk7XG5leHBvcnQgeyBNb2RhbFBsdWdpbiwgQk1vZGFsIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9tb2RhbC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTcyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///172\n"); /***/ }), /* 173 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BNavText; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n\n\nvar props = {\n tag: {\n type: String,\n default: 'span'\n }\n}; // @vue/component\n\nvar BNavText =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BNavText',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'navbar-text'\n }), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXYvbmF2LXRleHQuanM/MWEwYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNvQjtBQUMvQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixvRkFBUztBQUNqQztBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMTczLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgbWVyZ2VEYXRhIH0gZnJvbSAndnVlLWZ1bmN0aW9uYWwtZGF0YS1tZXJnZSc7XG5leHBvcnQgdmFyIHByb3BzID0ge1xuICB0YWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ3NwYW4nXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQk5hdlRleHQgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCTmF2VGV4dCcsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiBwcm9wcyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgICByZXR1cm4gaChwcm9wcy50YWcsIG1lcmdlRGF0YShkYXRhLCB7XG4gICAgICBzdGF0aWNDbGFzczogJ25hdmJhci10ZXh0J1xuICAgIH0pLCBjaGlsZHJlbik7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvbmF2L25hdi10ZXh0LmpzXG4vLyBtb2R1bGUgaWQgPSAxNzNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///173\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BVModalPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__modal__ = __webpack_require__(77);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_plugins__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_warn__ = __webpack_require__(13);\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 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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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 _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\n// Plugin for adding `$bvModal` property to all Vue instances\n\n\n\n\n\n\n // --- Constants ---\n\nvar PROP_NAME = '$bvModal';\nvar PROP_NAME_PRIV = '_bv__modal'; // Base modal props that are allowed\n// Some may be ignored or overridden on some message boxes\n// Prop ID is allowed, but really only should be used for testing\n// We need to add it in explicitly as it comes from the `idMixin`\n\nvar BASE_PROPS = ['id'].concat(_toConsumableArray(Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"j\" /* keys */])(Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"k\" /* omit */])(__WEBPACK_IMPORTED_MODULE_0__modal__[\"b\" /* props */], ['busy', 'lazy', 'noStacking', \"static\", 'visible'])))); // Fallback event resolver (returns undefined)\n\nvar defaultResolver = function defaultResolver(bvModalEvt) {}; // Map prop names to modal slot names\n\n\nvar propsToSlots = {\n msgBoxContent: 'default',\n title: 'modal-title',\n okTitle: 'modal-ok',\n cancelTitle: 'modal-cancel'\n}; // --- Utility methods ---\n// Method to filter only recognized props that are not undefined\n\nvar filterOptions = function filterOptions(options) {\n return BASE_PROPS.reduce(function (memo, key) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"n\" /* isUndefined */])(options[key])) {\n memo[key] = options[key];\n }\n\n return memo;\n }, {});\n}; // Method to install `$bvModal` VM injection\n\n\nvar plugin = function plugin(Vue) {\n // Create a private sub-component that extends BModal\n // which self-destructs after hidden\n // @vue/component\n var BMsgBox = Vue.extend({\n name: 'BMsgBox',\n extends: __WEBPACK_IMPORTED_MODULE_0__modal__[\"a\" /* BModal */],\n destroyed: function destroyed() {\n // Make sure we not in document any more\n if (this.$el && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n // Self destruct handler\n var handleDestroy = function handleDestroy() {\n var self = _this;\n\n _this.$nextTick(function () {\n // In a `setTimeout()` to release control back to application\n setTimeout(function () {\n return self.$destroy();\n }, 0);\n });\n }; // Self destruct if parent destroyed\n\n\n this.$parent.$once('hook:destroyed', handleDestroy); // Self destruct after hidden\n\n this.$once('hidden', handleDestroy); // Self destruct on route change\n\n /* istanbul ignore if */\n\n if (this.$router && this.$route) {\n // Destroy ourselves if route changes\n\n /* istanbul ignore next */\n this.$once('hook:beforeDestroy', this.$watch('$router', handleDestroy));\n } // Show the `BMsgBox`\n\n\n this.show();\n }\n }); // Method to generate the on-demand modal message box\n // Returns a promise that resolves to a value returned by the resolve\n\n var asyncMsgBox = function asyncMsgBox($parent, props) {\n var resolver = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultResolver;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_6__utils_warn__[\"e\" /* warnNotClient */])(PROP_NAME) || Object(__WEBPACK_IMPORTED_MODULE_6__utils_warn__[\"d\" /* warnNoPromiseSupport */])(PROP_NAME)) {\n /* istanbul ignore next */\n return;\n } // Create an instance of `BMsgBox` component\n\n\n var msgBox = new BMsgBox({\n // We set parent as the local VM so these modals can emit events on\n // the app `$root`, as needed by things like tooltips and popovers\n // And it helps to ensure `BMsgBox` is destroyed when parent is destroyed\n parent: $parent,\n // Preset the prop values\n propsData: _objectSpread({}, filterOptions(Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])('BModal') || {}), {\n // Defaults that user can override\n hideHeaderClose: true,\n hideHeader: !(props.title || props.titleHtml)\n }, Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"k\" /* omit */])(props, Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"j\" /* keys */])(propsToSlots)), {\n // Props that can't be overridden\n lazy: false,\n busy: false,\n visible: false,\n noStacking: false,\n noEnforceFocus: false\n })\n }); // Convert certain props to scoped slots\n\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"j\" /* keys */])(propsToSlots).forEach(function (prop) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"n\" /* isUndefined */])(props[prop])) {\n // Can be a string, or array of VNodes.\n // Alternatively, user can use HTML version of prop to pass an HTML string.\n msgBox.$slots[propsToSlots[prop]] = Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"b\" /* concat */])(props[prop]);\n }\n }); // Return a promise that resolves when hidden, or rejects on destroyed\n\n return new Promise(function (resolve, reject) {\n var resolved = false;\n msgBox.$once('hook:destroyed', function () {\n if (!resolved) {\n /* istanbul ignore next */\n reject(new Error('BootstrapVue MsgBox destroyed before resolve'));\n }\n });\n msgBox.$on('hide', function (bvModalEvt) {\n if (!bvModalEvt.defaultPrevented) {\n var result = resolver(bvModalEvt); // If resolver didn't cancel hide, we resolve\n\n if (!bvModalEvt.defaultPrevented) {\n resolved = true;\n resolve(result);\n }\n }\n }); // Create a mount point (a DIV) and mount the msgBo which will trigger it to show\n\n var div = document.createElement('div');\n document.body.appendChild(div);\n msgBox.$mount(div);\n });\n }; // Private utility method to open a user defined message box and returns a promise.\n // Not to be used directly by consumers, as this method may change calling syntax\n\n\n var makeMsgBox = function makeMsgBox($parent, content) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var resolver = arguments.length > 3 ? arguments[3] : undefined;\n\n if (!content || Object(__WEBPACK_IMPORTED_MODULE_6__utils_warn__[\"d\" /* warnNoPromiseSupport */])(PROP_NAME) || Object(__WEBPACK_IMPORTED_MODULE_6__utils_warn__[\"e\" /* warnNotClient */])(PROP_NAME) || !Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"f\" /* isFunction */])(resolver)) {\n /* istanbul ignore next */\n return;\n }\n\n return asyncMsgBox($parent, _objectSpread({}, filterOptions(options), {\n msgBoxContent: content\n }), resolver);\n }; // BvModal instance class\n\n\n var BvModal =\n /*#__PURE__*/\n function () {\n function BvModal(vm) {\n _classCallCheck(this, BvModal);\n\n // Assign the new properties to this instance\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"a\" /* assign */])(this, {\n _vm: vm,\n _root: vm.$root\n }); // Set these properties as read-only and non-enumerable\n\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"d\" /* defineProperties */])(this, {\n _vm: Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"l\" /* readonlyDescriptor */])(),\n _root: Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"l\" /* readonlyDescriptor */])()\n });\n } // --- Instance methods ---\n // Show modal with the specified ID args are for future use\n\n\n _createClass(BvModal, [{\n key: \"show\",\n value: function show(id) {\n if (id && this._root) {\n var _this$_root;\n\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 (_this$_root = this._root).$emit.apply(_this$_root, ['bv::show::modal', id].concat(args));\n }\n } // Hide modal with the specified ID args are for future use\n\n }, {\n key: \"hide\",\n value: function hide(id) {\n if (id && this._root) {\n var _this$_root2;\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n (_this$_root2 = this._root).$emit.apply(_this$_root2, ['bv::hide::modal', id].concat(args));\n }\n } // The following methods require Promise support!\n // IE 11 and others do not support Promise natively, so users\n // should have a Polyfill loaded (which they need anyways for IE 11 support)\n // Open a message box with OK button only and returns a promise\n\n }, {\n key: \"msgBoxOk\",\n value: function msgBoxOk(message) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // Pick the modal props we support from options\n var props = _objectSpread({}, options, {\n // Add in overrides and our content prop\n okOnly: true,\n okDisabled: false,\n hideFooter: false,\n msgBoxContent: message\n });\n\n return makeMsgBox(this._vm, message, props, function (bvModalEvt) {\n // Always resolve to true for OK\n return true;\n });\n } // Open a message box modal with OK and CANCEL buttons\n // and returns a promise\n\n }, {\n key: \"msgBoxConfirm\",\n value: function msgBoxConfirm(message) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // Set the modal props we support from options\n var props = _objectSpread({}, options, {\n // Add in overrides and our content prop\n okOnly: false,\n okDisabled: false,\n cancelDisabled: false,\n hideFooter: false\n });\n\n return makeMsgBox(this._vm, message, props, function (bvModalEvt) {\n var trigger = bvModalEvt.trigger;\n return trigger === 'ok' ? true : trigger === 'cancel' ? false : null;\n });\n }\n }]);\n\n return BvModal;\n }(); // Add our instance mixin\n\n\n Vue.mixin({\n beforeCreate: function beforeCreate() {\n // Because we need access to `$root` for `$emits`, and VM for parenting,\n // we have to create a fresh instance of `BvModal` for each VM\n this[PROP_NAME_PRIV] = new BvModal(this);\n }\n }); // Define our read-only `$bvModal` instance property\n // Placed in an if just in case in HMR mode\n // eslint-disable-next-line no-prototype-builtins\n\n if (!Vue.prototype.hasOwnProperty(PROP_NAME)) {\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"e\" /* defineProperty */])(Vue.prototype, PROP_NAME, {\n get: function get() {\n /* istanbul ignore next */\n if (!this || !this[PROP_NAME_PRIV]) {\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_warn__[\"b\" /* warn */])(\"'\".concat(PROP_NAME, \"' must be accessed from a Vue instance 'this' context\"));\n }\n\n return this[PROP_NAME_PRIV];\n }\n });\n }\n};\n\nvar BVModalPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_5__utils_plugins__[\"b\" /* pluginFactory */])({\n plugins: {\n plugin: plugin\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9tb2RhbC9oZWxwZXJzL2J2LW1vZGFsLmpzPzNmNzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKLDJDQUEyQyxnQkFBZ0Isa0JBQWtCLE9BQU8sMkJBQTJCLHdEQUF3RCxnQ0FBZ0MsdURBQXVELDJEQUEyRCxFQUFFOztBQUUzVCw2REFBNkQsc0VBQXNFLDhEQUE4RCxvQkFBb0I7O0FBRXJOLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLCtDQUErQywyQ0FBMkMsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8seUNBQXlDLGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBnQiwyQ0FBMkMsa0JBQWtCLGtDQUFrQyxxRUFBcUUsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEVBQUUsWUFBWTs7QUFFL00sa0NBQWtDLGlGQUFpRjs7QUFFbkgsK0JBQStCLHdFQUF3RTs7QUFFdkcsaUNBQWlDLCtIQUErSDs7QUFFaEssa0NBQWtDLDBCQUEwQiw4Q0FBOEMsZ0JBQWdCLE9BQU8sa0JBQWtCLEVBQUUsYUFBYSxFQUFFOztBQUVwSztBQUN1RDtBQUNUO0FBQ2E7QUFDTTtBQUNnRDtBQUMxRDtBQUN5Qjs7QUFFaEY7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBOztBQUVBLGtEQUFrRCxtRUFBSSxDQUFDLG1FQUFJLENBQUMscURBQVUsMERBQTBEOztBQUVoSSw4REFBOEQ7OztBQUc5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGOztBQUVBO0FBQ0E7QUFDQSxTQUFTLDJFQUFXO0FBQ3BCO0FBQ0E7O0FBRUE7QUFDQSxHQUFHLElBQUk7QUFDUCxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHNEQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNULFFBQVE7OztBQUdSLDBEQUEwRDs7QUFFMUQsMENBQTBDOztBQUUxQzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsR0FBRyxFQUFFO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQSxRQUFRLDBFQUFhLGVBQWUsaUZBQW9CO0FBQ3hEO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsZ0JBQWdCLGlGQUFrQixnQkFBZ0I7QUFDbkY7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFLG1FQUFJLFFBQVEsbUVBQUk7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUssRUFBRTs7QUFFUCxJQUFJLG1FQUFJO0FBQ1IsV0FBVywyRUFBVztBQUN0QjtBQUNBO0FBQ0EsNENBQTRDLG9FQUFNO0FBQ2xEO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSw0Q0FBNEM7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSjs7O0FBR0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixpRkFBb0IsZUFBZSwwRUFBYSxnQkFBZ0IsMEVBQVU7QUFDOUY7QUFDQTtBQUNBOztBQUVBLGdEQUFnRDtBQUNoRDtBQUNBLEtBQUs7QUFDTCxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTSxxRUFBTTtBQUNaO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQsTUFBTSwrRUFBZ0I7QUFDdEIsYUFBYSxpRkFBa0I7QUFDL0IsZUFBZSxpRkFBa0I7QUFDakMsT0FBTztBQUNQLEtBQUs7QUFDTDs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnR0FBZ0csYUFBYTtBQUM3RztBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPOztBQUVQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvR0FBb0csZUFBZTtBQUNuSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7O0FBRUw7QUFDQSxHQUFHLEdBQUc7OztBQUdOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTtBQUNMO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLDZFQUFjO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLFVBQVUsaUVBQUk7QUFDZDs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRU87QUFDUDtBQUNBLDZFQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNzMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhzb3VyY2UsIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHsgcmV0dXJuIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfbm9uSXRlcmFibGVTcHJlYWQoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKTsgfVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHsgaWYgKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoaXRlcikgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGl0ZXIpID09PSBcIltvYmplY3QgQXJndW1lbnRzXVwiKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfSB9XG5cbi8vIFBsdWdpbiBmb3IgYWRkaW5nIGAkYnZNb2RhbGAgcHJvcGVydHkgdG8gYWxsIFZ1ZSBpbnN0YW5jZXNcbmltcG9ydCB7IEJNb2RhbCwgcHJvcHMgYXMgbW9kYWxQcm9wcyB9IGZyb20gJy4uL21vZGFsJztcbmltcG9ydCB7IGNvbmNhdCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FycmF5JztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBpc1VuZGVmaW5lZCwgaXNGdW5jdGlvbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2luc3BlY3QnO1xuaW1wb3J0IHsgYXNzaWduLCBrZXlzLCBvbWl0LCBkZWZpbmVQcm9wZXJ0eSwgZGVmaW5lUHJvcGVydGllcywgcmVhZG9ubHlEZXNjcmlwdG9yIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvb2JqZWN0JztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi8uLi91dGlscy9wbHVnaW5zJztcbmltcG9ydCB7IHdhcm4sIHdhcm5Ob3RDbGllbnQsIHdhcm5Ob1Byb21pc2VTdXBwb3J0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvd2Fybic7IC8vIC0tLSBDb25zdGFudHMgLS0tXG5cbnZhciBQUk9QX05BTUUgPSAnJGJ2TW9kYWwnO1xudmFyIFBST1BfTkFNRV9QUklWID0gJ19idl9fbW9kYWwnOyAvLyBCYXNlIG1vZGFsIHByb3BzIHRoYXQgYXJlIGFsbG93ZWRcbi8vIFNvbWUgbWF5IGJlIGlnbm9yZWQgb3Igb3ZlcnJpZGRlbiBvbiBzb21lIG1lc3NhZ2UgYm94ZXNcbi8vIFByb3AgSUQgaXMgYWxsb3dlZCwgYnV0IHJlYWxseSBvbmx5IHNob3VsZCBiZSB1c2VkIGZvciB0ZXN0aW5nXG4vLyBXZSBuZWVkIHRvIGFkZCBpdCBpbiBleHBsaWNpdGx5IGFzIGl0IGNvbWVzIGZyb20gdGhlIGBpZE1peGluYFxuXG52YXIgQkFTRV9QUk9QUyA9IFsnaWQnXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGtleXMob21pdChtb2RhbFByb3BzLCBbJ2J1c3knLCAnbGF6eScsICdub1N0YWNraW5nJywgXCJzdGF0aWNcIiwgJ3Zpc2libGUnXSkpKSk7IC8vIEZhbGxiYWNrIGV2ZW50IHJlc29sdmVyIChyZXR1cm5zIHVuZGVmaW5lZClcblxudmFyIGRlZmF1bHRSZXNvbHZlciA9IGZ1bmN0aW9uIGRlZmF1bHRSZXNvbHZlcihidk1vZGFsRXZ0KSB7fTsgLy8gTWFwIHByb3AgbmFtZXMgdG8gbW9kYWwgc2xvdCBuYW1lc1xuXG5cbnZhciBwcm9wc1RvU2xvdHMgPSB7XG4gIG1zZ0JveENvbnRlbnQ6ICdkZWZhdWx0JyxcbiAgdGl0bGU6ICdtb2RhbC10aXRsZScsXG4gIG9rVGl0bGU6ICdtb2RhbC1vaycsXG4gIGNhbmNlbFRpdGxlOiAnbW9kYWwtY2FuY2VsJ1xufTsgLy8gLS0tIFV0aWxpdHkgbWV0aG9kcyAtLS1cbi8vIE1ldGhvZCB0byBmaWx0ZXIgb25seSByZWNvZ25pemVkIHByb3BzIHRoYXQgYXJlIG5vdCB1bmRlZmluZWRcblxudmFyIGZpbHRlck9wdGlvbnMgPSBmdW5jdGlvbiBmaWx0ZXJPcHRpb25zKG9wdGlvbnMpIHtcbiAgcmV0dXJuIEJBU0VfUFJPUFMucmVkdWNlKGZ1bmN0aW9uIChtZW1vLCBrZXkpIHtcbiAgICBpZiAoIWlzVW5kZWZpbmVkKG9wdGlvbnNba2V5XSkpIHtcbiAgICAgIG1lbW9ba2V5XSA9IG9wdGlvbnNba2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtbztcbiAgfSwge30pO1xufTsgLy8gTWV0aG9kIHRvIGluc3RhbGwgYCRidk1vZGFsYCBWTSBpbmplY3Rpb25cblxuXG52YXIgcGx1Z2luID0gZnVuY3Rpb24gcGx1Z2luKFZ1ZSkge1xuICAvLyBDcmVhdGUgYSBwcml2YXRlIHN1Yi1jb21wb25lbnQgdGhhdCBleHRlbmRzIEJNb2RhbFxuICAvLyB3aGljaCBzZWxmLWRlc3RydWN0cyBhZnRlciBoaWRkZW5cbiAgLy8gQHZ1ZS9jb21wb25lbnRcbiAgdmFyIEJNc2dCb3ggPSBWdWUuZXh0ZW5kKHtcbiAgICBuYW1lOiAnQk1zZ0JveCcsXG4gICAgZXh0ZW5kczogQk1vZGFsLFxuICAgIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkKCkge1xuICAgICAgLy8gTWFrZSBzdXJlIHdlIG5vdCBpbiBkb2N1bWVudCBhbnkgbW9yZVxuICAgICAgaWYgKHRoaXMuJGVsICYmIHRoaXMuJGVsLnBhcmVudE5vZGUpIHtcbiAgICAgICAgdGhpcy4kZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLiRlbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgLy8gU2VsZiBkZXN0cnVjdCBoYW5kbGVyXG4gICAgICB2YXIgaGFuZGxlRGVzdHJveSA9IGZ1bmN0aW9uIGhhbmRsZURlc3Ryb3koKSB7XG4gICAgICAgIHZhciBzZWxmID0gX3RoaXM7XG5cbiAgICAgICAgX3RoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAvLyBJbiBhIGBzZXRUaW1lb3V0KClgIHRvIHJlbGVhc2UgY29udHJvbCBiYWNrIHRvIGFwcGxpY2F0aW9uXG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc2VsZi4kZGVzdHJveSgpO1xuICAgICAgICAgIH0sIDApO1xuICAgICAgICB9KTtcbiAgICAgIH07IC8vIFNlbGYgZGVzdHJ1Y3QgaWYgcGFyZW50IGRlc3Ryb3llZFxuXG5cbiAgICAgIHRoaXMuJHBhcmVudC4kb25jZSgnaG9vazpkZXN0cm95ZWQnLCBoYW5kbGVEZXN0cm95KTsgLy8gU2VsZiBkZXN0cnVjdCBhZnRlciBoaWRkZW5cblxuICAgICAgdGhpcy4kb25jZSgnaGlkZGVuJywgaGFuZGxlRGVzdHJveSk7IC8vIFNlbGYgZGVzdHJ1Y3Qgb24gcm91dGUgY2hhbmdlXG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXG4gICAgICBpZiAodGhpcy4kcm91dGVyICYmIHRoaXMuJHJvdXRlKSB7XG4gICAgICAgIC8vIERlc3Ryb3kgb3Vyc2VsdmVzIGlmIHJvdXRlIGNoYW5nZXNcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICB0aGlzLiRvbmNlKCdob29rOmJlZm9yZURlc3Ryb3knLCB0aGlzLiR3YXRjaCgnJHJvdXRlcicsIGhhbmRsZURlc3Ryb3kpKTtcbiAgICAgIH0gLy8gU2hvdyB0aGUgYEJNc2dCb3hgXG5cblxuICAgICAgdGhpcy5zaG93KCk7XG4gICAgfVxuICB9KTsgLy8gTWV0aG9kIHRvIGdlbmVyYXRlIHRoZSBvbi1kZW1hbmQgbW9kYWwgbWVzc2FnZSBib3hcbiAgLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIHZhbHVlIHJldHVybmVkIGJ5IHRoZSByZXNvbHZlXG5cbiAgdmFyIGFzeW5jTXNnQm94ID0gZnVuY3Rpb24gYXN5bmNNc2dCb3goJHBhcmVudCwgcHJvcHMpIHtcbiAgICB2YXIgcmVzb2x2ZXIgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IGRlZmF1bHRSZXNvbHZlcjtcblxuICAgIGlmICh3YXJuTm90Q2xpZW50KFBST1BfTkFNRSkgfHwgd2Fybk5vUHJvbWlzZVN1cHBvcnQoUFJPUF9OQU1FKSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybjtcbiAgICB9IC8vIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiBgQk1zZ0JveGAgY29tcG9uZW50XG5cblxuICAgIHZhciBtc2dCb3ggPSBuZXcgQk1zZ0JveCh7XG4gICAgICAvLyBXZSBzZXQgcGFyZW50IGFzIHRoZSBsb2NhbCBWTSBzbyB0aGVzZSBtb2RhbHMgY2FuIGVtaXQgZXZlbnRzIG9uXG4gICAgICAvLyB0aGUgYXBwIGAkcm9vdGAsIGFzIG5lZWRlZCBieSB0aGluZ3MgbGlrZSB0b29sdGlwcyBhbmQgcG9wb3ZlcnNcbiAgICAgIC8vIEFuZCBpdCBoZWxwcyB0byBlbnN1cmUgYEJNc2dCb3hgIGlzIGRlc3Ryb3llZCB3aGVuIHBhcmVudCBpcyBkZXN0cm95ZWRcbiAgICAgIHBhcmVudDogJHBhcmVudCxcbiAgICAgIC8vIFByZXNldCB0aGUgcHJvcCB2YWx1ZXNcbiAgICAgIHByb3BzRGF0YTogX29iamVjdFNwcmVhZCh7fSwgZmlsdGVyT3B0aW9ucyhnZXRDb21wb25lbnRDb25maWcoJ0JNb2RhbCcpIHx8IHt9KSwge1xuICAgICAgICAvLyBEZWZhdWx0cyB0aGF0IHVzZXIgY2FuIG92ZXJyaWRlXG4gICAgICAgIGhpZGVIZWFkZXJDbG9zZTogdHJ1ZSxcbiAgICAgICAgaGlkZUhlYWRlcjogIShwcm9wcy50aXRsZSB8fCBwcm9wcy50aXRsZUh0bWwpXG4gICAgICB9LCBvbWl0KHByb3BzLCBrZXlzKHByb3BzVG9TbG90cykpLCB7XG4gICAgICAgIC8vIFByb3BzIHRoYXQgY2FuJ3QgYmUgb3ZlcnJpZGRlblxuICAgICAgICBsYXp5OiBmYWxzZSxcbiAgICAgICAgYnVzeTogZmFsc2UsXG4gICAgICAgIHZpc2libGU6IGZhbHNlLFxuICAgICAgICBub1N0YWNraW5nOiBmYWxzZSxcbiAgICAgICAgbm9FbmZvcmNlRm9jdXM6IGZhbHNlXG4gICAgICB9KVxuICAgIH0pOyAvLyBDb252ZXJ0IGNlcnRhaW4gcHJvcHMgdG8gc2NvcGVkIHNsb3RzXG5cbiAgICBrZXlzKHByb3BzVG9TbG90cykuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICAgICAgaWYgKCFpc1VuZGVmaW5lZChwcm9wc1twcm9wXSkpIHtcbiAgICAgICAgLy8gQ2FuIGJlIGEgc3RyaW5nLCBvciBhcnJheSBvZiBWTm9kZXMuXG4gICAgICAgIC8vIEFsdGVybmF0aXZlbHksIHVzZXIgY2FuIHVzZSBIVE1MIHZlcnNpb24gb2YgcHJvcCB0byBwYXNzIGFuIEhUTUwgc3RyaW5nLlxuICAgICAgICBtc2dCb3guJHNsb3RzW3Byb3BzVG9TbG90c1twcm9wXV0gPSBjb25jYXQocHJvcHNbcHJvcF0pO1xuICAgICAgfVxuICAgIH0pOyAvLyBSZXR1cm4gYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBoaWRkZW4sIG9yIHJlamVjdHMgb24gZGVzdHJveWVkXG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHJlc29sdmVkID0gZmFsc2U7XG4gICAgICBtc2dCb3guJG9uY2UoJ2hvb2s6ZGVzdHJveWVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXJlc29sdmVkKSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdCb290c3RyYXBWdWUgTXNnQm94IGRlc3Ryb3llZCBiZWZvcmUgcmVzb2x2ZScpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBtc2dCb3guJG9uKCdoaWRlJywgZnVuY3Rpb24gKGJ2TW9kYWxFdnQpIHtcbiAgICAgICAgaWYgKCFidk1vZGFsRXZ0LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gcmVzb2x2ZXIoYnZNb2RhbEV2dCk7IC8vIElmIHJlc29sdmVyIGRpZG4ndCBjYW5jZWwgaGlkZSwgd2UgcmVzb2x2ZVxuXG4gICAgICAgICAgaWYgKCFidk1vZGFsRXZ0LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgIHJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pOyAvLyBDcmVhdGUgYSBtb3VudCBwb2ludCAoYSBESVYpIGFuZCBtb3VudCB0aGUgbXNnQm8gd2hpY2ggd2lsbCB0cmlnZ2VyIGl0IHRvIHNob3dcblxuICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpO1xuICAgICAgbXNnQm94LiRtb3VudChkaXYpO1xuICAgIH0pO1xuICB9OyAvLyBQcml2YXRlIHV0aWxpdHkgbWV0aG9kIHRvIG9wZW4gYSB1c2VyIGRlZmluZWQgbWVzc2FnZSBib3ggYW5kIHJldHVybnMgYSBwcm9taXNlLlxuICAvLyBOb3QgdG8gYmUgdXNlZCBkaXJlY3RseSBieSBjb25zdW1lcnMsIGFzIHRoaXMgbWV0aG9kIG1heSBjaGFuZ2UgY2FsbGluZyBzeW50YXhcblxuXG4gIHZhciBtYWtlTXNnQm94ID0gZnVuY3Rpb24gbWFrZU1zZ0JveCgkcGFyZW50LCBjb250ZW50KSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHt9O1xuICAgIHZhciByZXNvbHZlciA9IGFyZ3VtZW50cy5sZW5ndGggPiAzID8gYXJndW1lbnRzWzNdIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKCFjb250ZW50IHx8IHdhcm5Ob1Byb21pc2VTdXBwb3J0KFBST1BfTkFNRSkgfHwgd2Fybk5vdENsaWVudChQUk9QX05BTUUpIHx8ICFpc0Z1bmN0aW9uKHJlc29sdmVyKSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gYXN5bmNNc2dCb3goJHBhcmVudCwgX29iamVjdFNwcmVhZCh7fSwgZmlsdGVyT3B0aW9ucyhvcHRpb25zKSwge1xuICAgICAgbXNnQm94Q29udGVudDogY29udGVudFxuICAgIH0pLCByZXNvbHZlcik7XG4gIH07IC8vIEJ2TW9kYWwgaW5zdGFuY2UgY2xhc3NcblxuXG4gIHZhciBCdk1vZGFsID1cbiAgLyojX19QVVJFX18qL1xuICBmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQnZNb2RhbCh2bSkge1xuICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJ2TW9kYWwpO1xuXG4gICAgICAvLyBBc3NpZ24gdGhlIG5ldyBwcm9wZXJ0aWVzIHRvIHRoaXMgaW5zdGFuY2VcbiAgICAgIGFzc2lnbih0aGlzLCB7XG4gICAgICAgIF92bTogdm0sXG4gICAgICAgIF9yb290OiB2bS4kcm9vdFxuICAgICAgfSk7IC8vIFNldCB0aGVzZSBwcm9wZXJ0aWVzIGFzIHJlYWQtb25seSBhbmQgbm9uLWVudW1lcmFibGVcblxuICAgICAgZGVmaW5lUHJvcGVydGllcyh0aGlzLCB7XG4gICAgICAgIF92bTogcmVhZG9ubHlEZXNjcmlwdG9yKCksXG4gICAgICAgIF9yb290OiByZWFkb25seURlc2NyaXB0b3IoKVxuICAgICAgfSk7XG4gICAgfSAvLyAtLS0gSW5zdGFuY2UgbWV0aG9kcyAtLS1cbiAgICAvLyBTaG93IG1vZGFsIHdpdGggdGhlIHNwZWNpZmllZCBJRCBhcmdzIGFyZSBmb3IgZnV0dXJlIHVzZVxuXG5cbiAgICBfY3JlYXRlQ2xhc3MoQnZNb2RhbCwgW3tcbiAgICAgIGtleTogXCJzaG93XCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gc2hvdyhpZCkge1xuICAgICAgICBpZiAoaWQgJiYgdGhpcy5fcm9vdCkge1xuICAgICAgICAgIHZhciBfdGhpcyRfcm9vdDtcblxuICAgICAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIChfdGhpcyRfcm9vdCA9IHRoaXMuX3Jvb3QpLiRlbWl0LmFwcGx5KF90aGlzJF9yb290LCBbJ2J2OjpzaG93Ojptb2RhbCcsIGlkXS5jb25jYXQoYXJncykpO1xuICAgICAgICB9XG4gICAgICB9IC8vIEhpZGUgbW9kYWwgd2l0aCB0aGUgc3BlY2lmaWVkIElEIGFyZ3MgYXJlIGZvciBmdXR1cmUgdXNlXG5cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiaGlkZVwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGhpZGUoaWQpIHtcbiAgICAgICAgaWYgKGlkICYmIHRoaXMuX3Jvb3QpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkX3Jvb3QyO1xuXG4gICAgICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yID4gMSA/IF9sZW4yIC0gMSA6IDApLCBfa2V5MiA9IDE7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2tleTIgLSAxXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgKF90aGlzJF9yb290MiA9IHRoaXMuX3Jvb3QpLiRlbWl0LmFwcGx5KF90aGlzJF9yb290MiwgWydidjo6aGlkZTo6bW9kYWwnLCBpZF0uY29uY2F0KGFyZ3MpKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgcmVxdWlyZSBQcm9taXNlIHN1cHBvcnQhXG4gICAgICAvLyBJRSAxMSBhbmQgb3RoZXJzIGRvIG5vdCBzdXBwb3J0IFByb21pc2UgbmF0aXZlbHksIHNvIHVzZXJzXG4gICAgICAvLyBzaG91bGQgaGF2ZSBhIFBvbHlmaWxsIGxvYWRlZCAod2hpY2ggdGhleSBuZWVkIGFueXdheXMgZm9yIElFIDExIHN1cHBvcnQpXG4gICAgICAvLyBPcGVuIGEgbWVzc2FnZSBib3ggd2l0aCBPSyBidXR0b24gb25seSBhbmQgcmV0dXJucyBhIHByb21pc2VcblxuICAgIH0sIHtcbiAgICAgIGtleTogXCJtc2dCb3hPa1wiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIG1zZ0JveE9rKG1lc3NhZ2UpIHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gICAgICAgIC8vIFBpY2sgdGhlIG1vZGFsIHByb3BzIHdlIHN1cHBvcnQgZnJvbSBvcHRpb25zXG4gICAgICAgIHZhciBwcm9wcyA9IF9vYmplY3RTcHJlYWQoe30sIG9wdGlvbnMsIHtcbiAgICAgICAgICAvLyBBZGQgaW4gb3ZlcnJpZGVzIGFuZCBvdXIgY29udGVudCBwcm9wXG4gICAgICAgICAgb2tPbmx5OiB0cnVlLFxuICAgICAgICAgIG9rRGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgIGhpZGVGb290ZXI6IGZhbHNlLFxuICAgICAgICAgIG1zZ0JveENvbnRlbnQ6IG1lc3NhZ2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG1ha2VNc2dCb3godGhpcy5fdm0sIG1lc3NhZ2UsIHByb3BzLCBmdW5jdGlvbiAoYnZNb2RhbEV2dCkge1xuICAgICAgICAgIC8vIEFsd2F5cyByZXNvbHZlIHRvIHRydWUgZm9yIE9LXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfSAvLyBPcGVuIGEgbWVzc2FnZSBib3ggbW9kYWwgd2l0aCBPSyBhbmQgQ0FOQ0VMIGJ1dHRvbnNcbiAgICAgIC8vIGFuZCByZXR1cm5zIGEgcHJvbWlzZVxuXG4gICAgfSwge1xuICAgICAga2V5OiBcIm1zZ0JveENvbmZpcm1cIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBtc2dCb3hDb25maXJtKG1lc3NhZ2UpIHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gICAgICAgIC8vIFNldCB0aGUgbW9kYWwgcHJvcHMgd2Ugc3VwcG9ydCBmcm9tIG9wdGlvbnNcbiAgICAgICAgdmFyIHByb3BzID0gX29iamVjdFNwcmVhZCh7fSwgb3B0aW9ucywge1xuICAgICAgICAgIC8vIEFkZCBpbiBvdmVycmlkZXMgYW5kIG91ciBjb250ZW50IHByb3BcbiAgICAgICAgICBva09ubHk6IGZhbHNlLFxuICAgICAgICAgIG9rRGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgIGNhbmNlbERpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICBoaWRlRm9vdGVyOiBmYWxzZVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbWFrZU1zZ0JveCh0aGlzLl92bSwgbWVzc2FnZSwgcHJvcHMsIGZ1bmN0aW9uIChidk1vZGFsRXZ0KSB7XG4gICAgICAgICAgdmFyIHRyaWdnZXIgPSBidk1vZGFsRXZ0LnRyaWdnZXI7XG4gICAgICAgICAgcmV0dXJuIHRyaWdnZXIgPT09ICdvaycgPyB0cnVlIDogdHJpZ2dlciA9PT0gJ2NhbmNlbCcgPyBmYWxzZSA6IG51bGw7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBCdk1vZGFsO1xuICB9KCk7IC8vIEFkZCBvdXIgaW5zdGFuY2UgbWl4aW5cblxuXG4gIFZ1ZS5taXhpbih7XG4gICAgYmVmb3JlQ3JlYXRlOiBmdW5jdGlvbiBiZWZvcmVDcmVhdGUoKSB7XG4gICAgICAvLyBCZWNhdXNlIHdlIG5lZWQgYWNjZXNzIHRvIGAkcm9vdGAgZm9yIGAkZW1pdHNgLCBhbmQgVk0gZm9yIHBhcmVudGluZyxcbiAgICAgIC8vIHdlIGhhdmUgdG8gY3JlYXRlIGEgZnJlc2ggaW5zdGFuY2Ugb2YgYEJ2TW9kYWxgIGZvciBlYWNoIFZNXG4gICAgICB0aGlzW1BST1BfTkFNRV9QUklWXSA9IG5ldyBCdk1vZGFsKHRoaXMpO1xuICAgIH1cbiAgfSk7IC8vIERlZmluZSBvdXIgcmVhZC1vbmx5IGAkYnZNb2RhbGAgaW5zdGFuY2UgcHJvcGVydHlcbiAgLy8gUGxhY2VkIGluIGFuIGlmIGp1c3QgaW4gY2FzZSBpbiBITVIgbW9kZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG5cbiAgaWYgKCFWdWUucHJvdG90eXBlLmhhc093blByb3BlcnR5KFBST1BfTkFNRSkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eShWdWUucHJvdG90eXBlLCBQUk9QX05BTUUsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBpZiAoIXRoaXMgfHwgIXRoaXNbUFJPUF9OQU1FX1BSSVZdKSB7XG4gICAgICAgICAgd2FybihcIidcIi5jb25jYXQoUFJPUF9OQU1FLCBcIicgbXVzdCBiZSBhY2Nlc3NlZCBmcm9tIGEgVnVlIGluc3RhbmNlICd0aGlzJyBjb250ZXh0XCIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzW1BST1BfTkFNRV9QUklWXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IHZhciBCVk1vZGFsUGx1Z2luID1cbi8qI19fUFVSRV9fKi9cbnBsdWdpbkZhY3Rvcnkoe1xuICBwbHVnaW5zOiB7XG4gICAgcGx1Z2luOiBwbHVnaW5cbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9tb2RhbC9oZWxwZXJzL2J2LW1vZGFsLmpzXG4vLyBtb2R1bGUgaWQgPSAxNzNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///173\n"); /***/ }), /* 174 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BNavForm; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__form_form__ = __webpack_require__(42);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\nvar props = Object(__WEBPACK_IMPORTED_MODULE_2__utils_object__[\"k\" /* omit */])(__WEBPACK_IMPORTED_MODULE_3__form_form__[\"b\" /* props */], ['inline']); // @vue/component\n\nvar BNavForm =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BNavForm',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(__WEBPACK_IMPORTED_MODULE_3__form_form__[\"a\" /* BForm */], Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n props: _objectSpread({}, props, {\n inline: true\n })\n }), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXYvbmF2LWZvcm0uanM/ZWM1MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ29CO0FBQ1o7QUFDZ0I7QUFDbkQsWUFBWSxtRUFBSSxDQUFDLHlEQUFVLGNBQWM7O0FBRXpDO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSx5REFBSyxFQUFFLG9GQUFTO0FBQzdCLDZCQUE2QjtBQUM3QjtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjE3NC5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhzb3VyY2UsIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IG1lcmdlRGF0YSB9IGZyb20gJ3Z1ZS1mdW5jdGlvbmFsLWRhdGEtbWVyZ2UnO1xuaW1wb3J0IHsgb21pdCB9IGZyb20gJy4uLy4uL3V0aWxzL29iamVjdCc7XG5pbXBvcnQgeyBCRm9ybSwgcHJvcHMgYXMgQkZvcm1Qcm9wcyB9IGZyb20gJy4uL2Zvcm0vZm9ybSc7XG5leHBvcnQgdmFyIHByb3BzID0gb21pdChCRm9ybVByb3BzLCBbJ2lubGluZSddKTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCTmF2Rm9ybSA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JOYXZGb3JtJyxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcHJvcHM6IHByb3BzLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBfcmVmKSB7XG4gICAgdmFyIHByb3BzID0gX3JlZi5wcm9wcyxcbiAgICAgICAgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICAgICAgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuO1xuICAgIHJldHVybiBoKEJGb3JtLCBtZXJnZURhdGEoZGF0YSwge1xuICAgICAgcHJvcHM6IF9vYmplY3RTcHJlYWQoe30sIHByb3BzLCB7XG4gICAgICAgIGlubGluZTogdHJ1ZVxuICAgICAgfSlcbiAgICB9KSwgY2hpbGRyZW4pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL25hdi9uYXYtZm9ybS5qc1xuLy8gbW9kdWxlIGlkID0gMTc0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///174\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BNavItem; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__link_link__ = __webpack_require__(14);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\nvar props = Object(__WEBPACK_IMPORTED_MODULE_2__link_link__[\"b\" /* propsFactory */])(); // @vue/component\n\nvar BNavItem =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BNavItem',\n functional: true,\n props: _objectSpread({}, props, {\n linkAttrs: {\n type: Object,\n default: function _default() {}\n },\n linkClasses: {\n type: [String, Object, Array],\n default: null\n }\n }),\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n listeners = _ref.listeners,\n children = _ref.children;\n // We transfer the listeners to the link\n delete data.on;\n return h('li', Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'nav-item'\n }), [h(__WEBPACK_IMPORTED_MODULE_2__link_link__[\"a\" /* BLink */], {\n staticClass: 'nav-link',\n class: props.linkClasses,\n attrs: props.linkAttrs,\n props: props,\n on: listeners\n }, children)]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXYvbmF2LWl0ZW0uanM/Y2EzMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNvQjtBQUNpQjtBQUNoRSxZQUFZLHdFQUFnQixHQUFHOztBQUUvQjtBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixvRkFBUztBQUM1QjtBQUNBLEtBQUssTUFBTSx5REFBSztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNzQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCB7IEJMaW5rLCBwcm9wc0ZhY3RvcnkgYXMgbGlua1Byb3BzRmFjdG9yeSB9IGZyb20gJy4uL2xpbmsvbGluayc7XG5leHBvcnQgdmFyIHByb3BzID0gbGlua1Byb3BzRmFjdG9yeSgpOyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJOYXZJdGVtID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQk5hdkl0ZW0nLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogX29iamVjdFNwcmVhZCh7fSwgcHJvcHMsIHtcbiAgICBsaW5rQXR0cnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge31cbiAgICB9LFxuICAgIGxpbmtDbGFzc2VzOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3QsIEFycmF5XSxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9XG4gIH0pLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBfcmVmKSB7XG4gICAgdmFyIHByb3BzID0gX3JlZi5wcm9wcyxcbiAgICAgICAgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICAgICAgbGlzdGVuZXJzID0gX3JlZi5saXN0ZW5lcnMsXG4gICAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgICAvLyBXZSB0cmFuc2ZlciB0aGUgbGlzdGVuZXJzIHRvIHRoZSBsaW5rXG4gICAgZGVsZXRlIGRhdGEub247XG4gICAgcmV0dXJuIGgoJ2xpJywgbWVyZ2VEYXRhKGRhdGEsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnbmF2LWl0ZW0nXG4gICAgfSksIFtoKEJMaW5rLCB7XG4gICAgICBzdGF0aWNDbGFzczogJ25hdi1saW5rJyxcbiAgICAgIGNsYXNzOiBwcm9wcy5saW5rQ2xhc3NlcyxcbiAgICAgIGF0dHJzOiBwcm9wcy5saW5rQXR0cnMsXG4gICAgICBwcm9wczogcHJvcHMsXG4gICAgICBvbjogbGlzdGVuZXJzXG4gICAgfSwgY2hpbGRyZW4pXSk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvbmF2L25hdi1pdGVtLmpzXG4vLyBtb2R1bGUgaWQgPSAxNzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///174\n"); /***/ }), /* 175 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BNavItemDropdown; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__dropdown_dropdown__ = __webpack_require__(65);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mixins_dropdown__ = __webpack_require__(124);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_pluck_props__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_html__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__link_link__ = __webpack_require__(14);\n\n\n\n\n\n\n\n // -- Constants --\n\nvar props = Object(__WEBPACK_IMPORTED_MODULE_5__utils_pluck_props__[\"a\" /* default */])(['menuClass', 'toggleClass', 'noCaret', 'role'], __WEBPACK_IMPORTED_MODULE_1__dropdown_dropdown__[\"b\" /* props */]); // @vue/component\n\nvar BNavItemDropdown =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BNavItemDropdown',\n mixins: [__WEBPACK_IMPORTED_MODULE_2__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__mixins_dropdown__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__mixins_normalize_slot__[\"a\" /* default */]],\n props: props,\n computed: {\n isNav: function isNav() {\n // Signal to dropdown mixin that we are in a navbar\n return true;\n },\n dropdownClasses: function dropdownClasses() {\n return [this.directionClass, {\n show: this.visible\n }];\n },\n menuClasses: function menuClasses() {\n return [this.menuClass, {\n 'dropdown-menu-right': this.right,\n show: this.visible\n }];\n },\n toggleClasses: function toggleClasses() {\n return [this.toggleClass, {\n 'dropdown-toggle-no-caret': this.noCaret\n }];\n }\n },\n render: function render(h) {\n var button = h(__WEBPACK_IMPORTED_MODULE_7__link_link__[\"a\" /* BLink */], {\n ref: 'toggle',\n staticClass: 'nav-link dropdown-toggle',\n class: this.toggleClasses,\n props: {\n href: '#',\n disabled: this.disabled\n },\n attrs: {\n id: this.safeId('_BV_button_'),\n 'aria-haspopup': 'true',\n 'aria-expanded': this.visible ? 'true' : 'false'\n },\n on: {\n click: this.toggle,\n keydown: this.toggle // space, enter, down\n\n }\n }, [this.$slots['button-content'] || this.$slots.text || h('span', {\n domProps: Object(__WEBPACK_IMPORTED_MODULE_6__utils_html__[\"a\" /* htmlOrText */])(this.html, this.text)\n })]);\n var menu = h('ul', {\n staticClass: 'dropdown-menu',\n class: this.menuClasses,\n ref: 'menu',\n attrs: {\n tabindex: '-1',\n 'aria-labelledby': this.safeId('_BV_button_')\n },\n on: {\n keydown: this.onKeydown // up, down, esc\n\n }\n }, !this.lazy || this.visible ? this.normalizeSlot('default', {\n hide: this.hide\n }) : [h()]);\n return h('li', {\n staticClass: 'nav-item b-nav-dropdown dropdown',\n class: this.dropdownClasses,\n attrs: {\n id: this.safeId()\n }\n }, [button, menu]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXYvbmF2LWl0ZW0tZHJvcGRvd24uanM/ODlmNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUM2QjtBQUN6QjtBQUNZO0FBQ1c7QUFDWjtBQUNIO0FBQ1Q7O0FBRTlCLFlBQVksMkVBQVUsa0RBQWtELGlFQUFjLEVBQUU7O0FBRXhGO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0EsV0FBVywyREFBTyxFQUFFLGlFQUFhLEVBQUUsdUVBQWtCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0EsbUJBQW1CLHlEQUFLO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsZ0JBQWdCLHVFQUFVO0FBQzFCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMTc1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgcHJvcHMgYXMgQkRyb3Bkb3duUHJvcHMgfSBmcm9tICcuLi9kcm9wZG93bi9kcm9wZG93bic7XG5pbXBvcnQgaWRNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvaWQnO1xuaW1wb3J0IGRyb3Bkb3duTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Ryb3Bkb3duJztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JztcbmltcG9ydCBwbHVja1Byb3BzIGZyb20gJy4uLy4uL3V0aWxzL3BsdWNrLXByb3BzJztcbmltcG9ydCB7IGh0bWxPclRleHQgfSBmcm9tICcuLi8uLi91dGlscy9odG1sJztcbmltcG9ydCB7IEJMaW5rIH0gZnJvbSAnLi4vbGluay9saW5rJzsgLy8gLS0gQ29uc3RhbnRzIC0tXG5cbmV4cG9ydCB2YXIgcHJvcHMgPSBwbHVja1Byb3BzKFsnbWVudUNsYXNzJywgJ3RvZ2dsZUNsYXNzJywgJ25vQ2FyZXQnLCAncm9sZSddLCBCRHJvcGRvd25Qcm9wcyk7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQk5hdkl0ZW1Ecm9wZG93biA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JOYXZJdGVtRHJvcGRvd24nLFxuICBtaXhpbnM6IFtpZE1peGluLCBkcm9wZG93bk1peGluLCBub3JtYWxpemVTbG90TWl4aW5dLFxuICBwcm9wczogcHJvcHMsXG4gIGNvbXB1dGVkOiB7XG4gICAgaXNOYXY6IGZ1bmN0aW9uIGlzTmF2KCkge1xuICAgICAgLy8gU2lnbmFsIHRvIGRyb3Bkb3duIG1peGluIHRoYXQgd2UgYXJlIGluIGEgbmF2YmFyXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIGRyb3Bkb3duQ2xhc3NlczogZnVuY3Rpb24gZHJvcGRvd25DbGFzc2VzKCkge1xuICAgICAgcmV0dXJuIFt0aGlzLmRpcmVjdGlvbkNsYXNzLCB7XG4gICAgICAgIHNob3c6IHRoaXMudmlzaWJsZVxuICAgICAgfV07XG4gICAgfSxcbiAgICBtZW51Q2xhc3NlczogZnVuY3Rpb24gbWVudUNsYXNzZXMoKSB7XG4gICAgICByZXR1cm4gW3RoaXMubWVudUNsYXNzLCB7XG4gICAgICAgICdkcm9wZG93bi1tZW51LXJpZ2h0JzogdGhpcy5yaWdodCxcbiAgICAgICAgc2hvdzogdGhpcy52aXNpYmxlXG4gICAgICB9XTtcbiAgICB9LFxuICAgIHRvZ2dsZUNsYXNzZXM6IGZ1bmN0aW9uIHRvZ2dsZUNsYXNzZXMoKSB7XG4gICAgICByZXR1cm4gW3RoaXMudG9nZ2xlQ2xhc3MsIHtcbiAgICAgICAgJ2Ryb3Bkb3duLXRvZ2dsZS1uby1jYXJldCc6IHRoaXMubm9DYXJldFxuICAgICAgfV07XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyIGJ1dHRvbiA9IGgoQkxpbmssIHtcbiAgICAgIHJlZjogJ3RvZ2dsZScsXG4gICAgICBzdGF0aWNDbGFzczogJ25hdi1saW5rIGRyb3Bkb3duLXRvZ2dsZScsXG4gICAgICBjbGFzczogdGhpcy50b2dnbGVDbGFzc2VzLFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgaHJlZjogJyMnLFxuICAgICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZFxuICAgICAgfSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGlkOiB0aGlzLnNhZmVJZCgnX0JWX2J1dHRvbl8nKSxcbiAgICAgICAgJ2FyaWEtaGFzcG9wdXAnOiAndHJ1ZScsXG4gICAgICAgICdhcmlhLWV4cGFuZGVkJzogdGhpcy52aXNpYmxlID8gJ3RydWUnIDogJ2ZhbHNlJ1xuICAgICAgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIGNsaWNrOiB0aGlzLnRvZ2dsZSxcbiAgICAgICAga2V5ZG93bjogdGhpcy50b2dnbGUgLy8gc3BhY2UsIGVudGVyLCBkb3duXG5cbiAgICAgIH1cbiAgICB9LCBbdGhpcy4kc2xvdHNbJ2J1dHRvbi1jb250ZW50J10gfHwgdGhpcy4kc2xvdHMudGV4dCB8fCBoKCdzcGFuJywge1xuICAgICAgZG9tUHJvcHM6IGh0bWxPclRleHQodGhpcy5odG1sLCB0aGlzLnRleHQpXG4gICAgfSldKTtcbiAgICB2YXIgbWVudSA9IGgoJ3VsJywge1xuICAgICAgc3RhdGljQ2xhc3M6ICdkcm9wZG93bi1tZW51JyxcbiAgICAgIGNsYXNzOiB0aGlzLm1lbnVDbGFzc2VzLFxuICAgICAgcmVmOiAnbWVudScsXG4gICAgICBhdHRyczoge1xuICAgICAgICB0YWJpbmRleDogJy0xJyxcbiAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IHRoaXMuc2FmZUlkKCdfQlZfYnV0dG9uXycpXG4gICAgICB9LFxuICAgICAgb246IHtcbiAgICAgICAga2V5ZG93bjogdGhpcy5vbktleWRvd24gLy8gdXAsIGRvd24sIGVzY1xuXG4gICAgICB9XG4gICAgfSwgIXRoaXMubGF6eSB8fCB0aGlzLnZpc2libGUgPyB0aGlzLm5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnLCB7XG4gICAgICBoaWRlOiB0aGlzLmhpZGVcbiAgICB9KSA6IFtoKCldKTtcbiAgICByZXR1cm4gaCgnbGknLCB7XG4gICAgICBzdGF0aWNDbGFzczogJ25hdi1pdGVtIGItbmF2LWRyb3Bkb3duIGRyb3Bkb3duJyxcbiAgICAgIGNsYXNzOiB0aGlzLmRyb3Bkb3duQ2xhc3NlcyxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGlkOiB0aGlzLnNhZmVJZCgpXG4gICAgICB9XG4gICAgfSwgW2J1dHRvbiwgbWVudV0pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL25hdi9uYXYtaXRlbS1kcm9wZG93bi5qc1xuLy8gbW9kdWxlIGlkID0gMTc1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///175\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BNavText; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n\n\nvar props = {\n tag: {\n type: String,\n default: 'span'\n }\n}; // @vue/component\n\nvar BNavText =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BNavText',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'navbar-text'\n }), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXYvbmF2LXRleHQuanM/MWEwYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNvQjtBQUMvQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixvRkFBUztBQUNqQztBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMTc1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgbWVyZ2VEYXRhIH0gZnJvbSAndnVlLWZ1bmN0aW9uYWwtZGF0YS1tZXJnZSc7XG5leHBvcnQgdmFyIHByb3BzID0ge1xuICB0YWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ3NwYW4nXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQk5hdlRleHQgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCTmF2VGV4dCcsXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHByb3BzOiBwcm9wcyxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBwcm9wcyA9IF9yZWYucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbjtcbiAgICByZXR1cm4gaChwcm9wcy50YWcsIG1lcmdlRGF0YShkYXRhLCB7XG4gICAgICBzdGF0aWNDbGFzczogJ25hdmJhci10ZXh0J1xuICAgIH0pLCBjaGlsZHJlbik7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvbmF2L25hdi10ZXh0LmpzXG4vLyBtb2R1bGUgaWQgPSAxNzVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///175\n"); /***/ }), /* 176 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return NavbarPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__navbar__ = __webpack_require__(177);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__navbar_nav__ = __webpack_require__(178);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__navbar_brand__ = __webpack_require__(179);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__navbar_toggle__ = __webpack_require__(180);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__nav__ = __webpack_require__(80);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__collapse__ = __webpack_require__(63);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__dropdown__ = __webpack_require__(40);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BNavbar */\n/* unused harmony reexport BNavbarNav */\n/* unused harmony reexport BNavbarBrand */\n/* unused harmony reexport BNavbarToggle */\n\n\n\n\n\n\n\n\nvar NavbarPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_7__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BNavbar: __WEBPACK_IMPORTED_MODULE_0__navbar__[\"a\" /* BNavbar */],\n BNavbarNav: __WEBPACK_IMPORTED_MODULE_1__navbar_nav__[\"a\" /* BNavbarNav */],\n BNavbarBrand: __WEBPACK_IMPORTED_MODULE_2__navbar_brand__[\"a\" /* BNavbarBrand */],\n BNavbarToggle: __WEBPACK_IMPORTED_MODULE_3__navbar_toggle__[\"a\" /* BNavbarToggle */],\n BNavToggle: __WEBPACK_IMPORTED_MODULE_3__navbar_toggle__[\"a\" /* BNavbarToggle */]\n },\n plugins: {\n NavPlugin: __WEBPACK_IMPORTED_MODULE_4__nav__[\"a\" /* NavPlugin */],\n CollapsePlugin: __WEBPACK_IMPORTED_MODULE_5__collapse__[\"a\" /* CollapsePlugin */],\n DropdownPlugin: __WEBPACK_IMPORTED_MODULE_6__dropdown__[\"a\" /* DropdownPlugin */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXZiYXIvaW5kZXguanM/YTQyYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFtQztBQUNPO0FBQ0k7QUFDRTtBQUNiO0FBQ1U7QUFDQTtBQUNPO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsYUFBYSx3REFBTztBQUNwQixnQkFBZ0IsK0RBQVU7QUFDMUIsa0JBQWtCLG1FQUFZO0FBQzlCLG1CQUFtQixxRUFBYTtBQUNoQyxnQkFBZ0IscUVBQWE7QUFDN0IsR0FBRztBQUNIO0FBQ0EsZUFBZSx1REFBUztBQUN4QixvQkFBb0IsaUVBQWM7QUFDbEMsb0JBQW9CLGlFQUFjO0FBQ2xDO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNzYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCTmF2YmFyIH0gZnJvbSAnLi9uYXZiYXInO1xuaW1wb3J0IHsgQk5hdmJhck5hdiB9IGZyb20gJy4vbmF2YmFyLW5hdic7XG5pbXBvcnQgeyBCTmF2YmFyQnJhbmQgfSBmcm9tICcuL25hdmJhci1icmFuZCc7XG5pbXBvcnQgeyBCTmF2YmFyVG9nZ2xlIH0gZnJvbSAnLi9uYXZiYXItdG9nZ2xlJztcbmltcG9ydCB7IE5hdlBsdWdpbiB9IGZyb20gJy4uL25hdic7XG5pbXBvcnQgeyBDb2xsYXBzZVBsdWdpbiB9IGZyb20gJy4uL2NvbGxhcHNlJztcbmltcG9ydCB7IERyb3Bkb3duUGx1Z2luIH0gZnJvbSAnLi4vZHJvcGRvd24nO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIE5hdmJhclBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJOYXZiYXI6IEJOYXZiYXIsXG4gICAgQk5hdmJhck5hdjogQk5hdmJhck5hdixcbiAgICBCTmF2YmFyQnJhbmQ6IEJOYXZiYXJCcmFuZCxcbiAgICBCTmF2YmFyVG9nZ2xlOiBCTmF2YmFyVG9nZ2xlLFxuICAgIEJOYXZUb2dnbGU6IEJOYXZiYXJUb2dnbGVcbiAgfSxcbiAgcGx1Z2luczoge1xuICAgIE5hdlBsdWdpbjogTmF2UGx1Z2luLFxuICAgIENvbGxhcHNlUGx1Z2luOiBDb2xsYXBzZVBsdWdpbixcbiAgICBEcm9wZG93blBsdWdpbjogRHJvcGRvd25QbHVnaW5cbiAgfVxufSk7XG5leHBvcnQgeyBOYXZiYXJQbHVnaW4sIEJOYXZiYXIsIEJOYXZiYXJOYXYsIEJOYXZiYXJCcmFuZCwgQk5hdmJhclRvZ2dsZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvbmF2YmFyL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///176\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BNavForm; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__form_form__ = __webpack_require__(42);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\nvar props = Object(__WEBPACK_IMPORTED_MODULE_2__utils_object__[\"k\" /* omit */])(__WEBPACK_IMPORTED_MODULE_3__form_form__[\"b\" /* props */], ['inline']); // @vue/component\n\nvar BNavForm =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BNavForm',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(__WEBPACK_IMPORTED_MODULE_3__form_form__[\"a\" /* BForm */], Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n props: _objectSpread({}, props, {\n inline: true\n })\n }), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXYvbmF2LWZvcm0uanM/ZWM1MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ29CO0FBQ1o7QUFDZ0I7QUFDbkQsWUFBWSxtRUFBSSxDQUFDLHlEQUFVLGNBQWM7O0FBRXpDO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSx5REFBSyxFQUFFLG9GQUFTO0FBQzdCLDZCQUE2QjtBQUM3QjtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjE3Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhzb3VyY2UsIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IG1lcmdlRGF0YSB9IGZyb20gJ3Z1ZS1mdW5jdGlvbmFsLWRhdGEtbWVyZ2UnO1xuaW1wb3J0IHsgb21pdCB9IGZyb20gJy4uLy4uL3V0aWxzL29iamVjdCc7XG5pbXBvcnQgeyBCRm9ybSwgcHJvcHMgYXMgQkZvcm1Qcm9wcyB9IGZyb20gJy4uL2Zvcm0vZm9ybSc7XG5leHBvcnQgdmFyIHByb3BzID0gb21pdChCRm9ybVByb3BzLCBbJ2lubGluZSddKTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCTmF2Rm9ybSA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JOYXZGb3JtJyxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcHJvcHM6IHByb3BzLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBfcmVmKSB7XG4gICAgdmFyIHByb3BzID0gX3JlZi5wcm9wcyxcbiAgICAgICAgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICAgICAgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuO1xuICAgIHJldHVybiBoKEJGb3JtLCBtZXJnZURhdGEoZGF0YSwge1xuICAgICAgcHJvcHM6IF9vYmplY3RTcHJlYWQoe30sIHByb3BzLCB7XG4gICAgICAgIGlubGluZTogdHJ1ZVxuICAgICAgfSlcbiAgICB9KSwgY2hpbGRyZW4pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL25hdi9uYXYtZm9ybS5qc1xuLy8gbW9kdWxlIGlkID0gMTc2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///176\n"); /***/ }), /* 177 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BNavbar; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\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\nvar NAME = 'BNavbar';\nvar props = {\n tag: {\n type: String,\n default: 'nav'\n },\n type: {\n type: String,\n default: 'light'\n },\n variant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant');\n }\n },\n toggleable: {\n type: [Boolean, String],\n default: false\n },\n fixed: {\n type: String\n },\n sticky: {\n type: Boolean,\n default: false\n },\n print: {\n type: Boolean,\n default: false\n }\n}; // @vue/component\n\nvar BNavbar =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var breakpoint = '';\n var xs = Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"a\" /* getBreakpoints */])()[0];\n\n if (props.toggleable && Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"m\" /* isString */])(props.toggleable) && props.toggleable !== xs) {\n breakpoint = \"navbar-expand-\".concat(props.toggleable);\n } else if (props.toggleable === false) {\n breakpoint = 'navbar-expand';\n }\n\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'navbar',\n class: (_class = {\n 'd-print': props.print,\n 'sticky-top': props.sticky\n }, _defineProperty(_class, \"navbar-\".concat(props.type), Boolean(props.type)), _defineProperty(_class, \"bg-\".concat(props.variant), Boolean(props.variant)), _defineProperty(_class, \"fixed-\".concat(props.fixed), Boolean(props.fixed)), _defineProperty(_class, \"\".concat(breakpoint), Boolean(breakpoint)), _class),\n attrs: {\n role: props.tag === 'nav' ? null : 'navigation'\n }\n }), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLmpzPzUwYjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ29CO0FBQ2tCO0FBQ3pCO0FBQy9DO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaUZBQWtCO0FBQy9CO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUs7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsNkVBQWM7O0FBRTNCLDRCQUE0Qix3RUFBUTtBQUNwQztBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLHdCQUF3QixvRkFBUztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjE3Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IG1lcmdlRGF0YSB9IGZyb20gJ3Z1ZS1mdW5jdGlvbmFsLWRhdGEtbWVyZ2UnO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50Q29uZmlnLCBnZXRCcmVha3BvaW50cyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJy4uLy4uL3V0aWxzL2luc3BlY3QnO1xudmFyIE5BTUUgPSAnQk5hdmJhcic7XG5leHBvcnQgdmFyIHByb3BzID0ge1xuICB0YWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ25hdidcbiAgfSxcbiAgdHlwZToge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAnbGlnaHQnXG4gIH0sXG4gIHZhcmlhbnQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICd2YXJpYW50Jyk7XG4gICAgfVxuICB9LFxuICB0b2dnbGVhYmxlOiB7XG4gICAgdHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgZml4ZWQ6IHtcbiAgICB0eXBlOiBTdHJpbmdcbiAgfSxcbiAgc3RpY2t5OiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBwcmludDoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfVxufTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCTmF2YmFyID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogcHJvcHMsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgX2NsYXNzO1xuXG4gICAgdmFyIHByb3BzID0gX3JlZi5wcm9wcyxcbiAgICAgICAgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICAgICAgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuO1xuICAgIHZhciBicmVha3BvaW50ID0gJyc7XG4gICAgdmFyIHhzID0gZ2V0QnJlYWtwb2ludHMoKVswXTtcblxuICAgIGlmIChwcm9wcy50b2dnbGVhYmxlICYmIGlzU3RyaW5nKHByb3BzLnRvZ2dsZWFibGUpICYmIHByb3BzLnRvZ2dsZWFibGUgIT09IHhzKSB7XG4gICAgICBicmVha3BvaW50ID0gXCJuYXZiYXItZXhwYW5kLVwiLmNvbmNhdChwcm9wcy50b2dnbGVhYmxlKTtcbiAgICB9IGVsc2UgaWYgKHByb3BzLnRvZ2dsZWFibGUgPT09IGZhbHNlKSB7XG4gICAgICBicmVha3BvaW50ID0gJ25hdmJhci1leHBhbmQnO1xuICAgIH1cblxuICAgIHJldHVybiBoKHByb3BzLnRhZywgbWVyZ2VEYXRhKGRhdGEsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnbmF2YmFyJyxcbiAgICAgIGNsYXNzOiAoX2NsYXNzID0ge1xuICAgICAgICAnZC1wcmludCc6IHByb3BzLnByaW50LFxuICAgICAgICAnc3RpY2t5LXRvcCc6IHByb3BzLnN0aWNreVxuICAgICAgfSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJuYXZiYXItXCIuY29uY2F0KHByb3BzLnR5cGUpLCBCb29sZWFuKHByb3BzLnR5cGUpKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJiZy1cIi5jb25jYXQocHJvcHMudmFyaWFudCksIEJvb2xlYW4ocHJvcHMudmFyaWFudCkpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzLCBcImZpeGVkLVwiLmNvbmNhdChwcm9wcy5maXhlZCksIEJvb2xlYW4ocHJvcHMuZml4ZWQpKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJcIi5jb25jYXQoYnJlYWtwb2ludCksIEJvb2xlYW4oYnJlYWtwb2ludCkpLCBfY2xhc3MpLFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcm9sZTogcHJvcHMudGFnID09PSAnbmF2JyA/IG51bGwgOiAnbmF2aWdhdGlvbidcbiAgICAgIH1cbiAgICB9KSwgY2hpbGRyZW4pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL25hdmJhci9uYXZiYXIuanNcbi8vIG1vZHVsZSBpZCA9IDE3N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///177\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BNavItemDropdown; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__dropdown_dropdown__ = __webpack_require__(65);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mixins_dropdown__ = __webpack_require__(126);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_pluck_props__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_html__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__link_link__ = __webpack_require__(14);\n\n\n\n\n\n\n\n // -- Constants --\n\nvar props = Object(__WEBPACK_IMPORTED_MODULE_5__utils_pluck_props__[\"a\" /* default */])(['menuClass', 'toggleClass', 'noCaret', 'role'], __WEBPACK_IMPORTED_MODULE_1__dropdown_dropdown__[\"b\" /* props */]); // @vue/component\n\nvar BNavItemDropdown =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BNavItemDropdown',\n mixins: [__WEBPACK_IMPORTED_MODULE_2__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__mixins_dropdown__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__mixins_normalize_slot__[\"a\" /* default */]],\n props: props,\n computed: {\n isNav: function isNav() {\n // Signal to dropdown mixin that we are in a navbar\n return true;\n },\n dropdownClasses: function dropdownClasses() {\n return [this.directionClass, {\n show: this.visible\n }];\n },\n menuClasses: function menuClasses() {\n return [this.menuClass, {\n 'dropdown-menu-right': this.right,\n show: this.visible\n }];\n },\n toggleClasses: function toggleClasses() {\n return [this.toggleClass, {\n 'dropdown-toggle-no-caret': this.noCaret\n }];\n }\n },\n render: function render(h) {\n var button = h(__WEBPACK_IMPORTED_MODULE_7__link_link__[\"a\" /* BLink */], {\n ref: 'toggle',\n staticClass: 'nav-link dropdown-toggle',\n class: this.toggleClasses,\n props: {\n href: '#',\n disabled: this.disabled\n },\n attrs: {\n id: this.safeId('_BV_button_'),\n 'aria-haspopup': 'true',\n 'aria-expanded': this.visible ? 'true' : 'false'\n },\n on: {\n click: this.toggle,\n keydown: this.toggle // space, enter, down\n\n }\n }, [this.$slots['button-content'] || this.$slots.text || h('span', {\n domProps: Object(__WEBPACK_IMPORTED_MODULE_6__utils_html__[\"a\" /* htmlOrText */])(this.html, this.text)\n })]);\n var menu = h('ul', {\n staticClass: 'dropdown-menu',\n class: this.menuClasses,\n ref: 'menu',\n attrs: {\n tabindex: '-1',\n 'aria-labelledby': this.safeId('_BV_button_')\n },\n on: {\n keydown: this.onKeydown // up, down, esc\n\n }\n }, !this.lazy || this.visible ? this.normalizeSlot('default', {\n hide: this.hide\n }) : [h()]);\n return h('li', {\n staticClass: 'nav-item b-nav-dropdown dropdown',\n class: this.dropdownClasses,\n attrs: {\n id: this.safeId()\n }\n }, [button, menu]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXYvbmF2LWl0ZW0tZHJvcGRvd24uanM/ODlmNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUM2QjtBQUN6QjtBQUNZO0FBQ1c7QUFDWjtBQUNIO0FBQ1Q7O0FBRTlCLFlBQVksMkVBQVUsa0RBQWtELGlFQUFjLEVBQUU7O0FBRXhGO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0EsV0FBVywyREFBTyxFQUFFLGlFQUFhLEVBQUUsdUVBQWtCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0EsbUJBQW1CLHlEQUFLO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsZ0JBQWdCLHVFQUFVO0FBQzFCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMTc3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgcHJvcHMgYXMgQkRyb3Bkb3duUHJvcHMgfSBmcm9tICcuLi9kcm9wZG93bi9kcm9wZG93bic7XG5pbXBvcnQgaWRNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvaWQnO1xuaW1wb3J0IGRyb3Bkb3duTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2Ryb3Bkb3duJztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JztcbmltcG9ydCBwbHVja1Byb3BzIGZyb20gJy4uLy4uL3V0aWxzL3BsdWNrLXByb3BzJztcbmltcG9ydCB7IGh0bWxPclRleHQgfSBmcm9tICcuLi8uLi91dGlscy9odG1sJztcbmltcG9ydCB7IEJMaW5rIH0gZnJvbSAnLi4vbGluay9saW5rJzsgLy8gLS0gQ29uc3RhbnRzIC0tXG5cbmV4cG9ydCB2YXIgcHJvcHMgPSBwbHVja1Byb3BzKFsnbWVudUNsYXNzJywgJ3RvZ2dsZUNsYXNzJywgJ25vQ2FyZXQnLCAncm9sZSddLCBCRHJvcGRvd25Qcm9wcyk7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQk5hdkl0ZW1Ecm9wZG93biA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JOYXZJdGVtRHJvcGRvd24nLFxuICBtaXhpbnM6IFtpZE1peGluLCBkcm9wZG93bk1peGluLCBub3JtYWxpemVTbG90TWl4aW5dLFxuICBwcm9wczogcHJvcHMsXG4gIGNvbXB1dGVkOiB7XG4gICAgaXNOYXY6IGZ1bmN0aW9uIGlzTmF2KCkge1xuICAgICAgLy8gU2lnbmFsIHRvIGRyb3Bkb3duIG1peGluIHRoYXQgd2UgYXJlIGluIGEgbmF2YmFyXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIGRyb3Bkb3duQ2xhc3NlczogZnVuY3Rpb24gZHJvcGRvd25DbGFzc2VzKCkge1xuICAgICAgcmV0dXJuIFt0aGlzLmRpcmVjdGlvbkNsYXNzLCB7XG4gICAgICAgIHNob3c6IHRoaXMudmlzaWJsZVxuICAgICAgfV07XG4gICAgfSxcbiAgICBtZW51Q2xhc3NlczogZnVuY3Rpb24gbWVudUNsYXNzZXMoKSB7XG4gICAgICByZXR1cm4gW3RoaXMubWVudUNsYXNzLCB7XG4gICAgICAgICdkcm9wZG93bi1tZW51LXJpZ2h0JzogdGhpcy5yaWdodCxcbiAgICAgICAgc2hvdzogdGhpcy52aXNpYmxlXG4gICAgICB9XTtcbiAgICB9LFxuICAgIHRvZ2dsZUNsYXNzZXM6IGZ1bmN0aW9uIHRvZ2dsZUNsYXNzZXMoKSB7XG4gICAgICByZXR1cm4gW3RoaXMudG9nZ2xlQ2xhc3MsIHtcbiAgICAgICAgJ2Ryb3Bkb3duLXRvZ2dsZS1uby1jYXJldCc6IHRoaXMubm9DYXJldFxuICAgICAgfV07XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyIGJ1dHRvbiA9IGgoQkxpbmssIHtcbiAgICAgIHJlZjogJ3RvZ2dsZScsXG4gICAgICBzdGF0aWNDbGFzczogJ25hdi1saW5rIGRyb3Bkb3duLXRvZ2dsZScsXG4gICAgICBjbGFzczogdGhpcy50b2dnbGVDbGFzc2VzLFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgaHJlZjogJyMnLFxuICAgICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZFxuICAgICAgfSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGlkOiB0aGlzLnNhZmVJZCgnX0JWX2J1dHRvbl8nKSxcbiAgICAgICAgJ2FyaWEtaGFzcG9wdXAnOiAndHJ1ZScsXG4gICAgICAgICdhcmlhLWV4cGFuZGVkJzogdGhpcy52aXNpYmxlID8gJ3RydWUnIDogJ2ZhbHNlJ1xuICAgICAgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIGNsaWNrOiB0aGlzLnRvZ2dsZSxcbiAgICAgICAga2V5ZG93bjogdGhpcy50b2dnbGUgLy8gc3BhY2UsIGVudGVyLCBkb3duXG5cbiAgICAgIH1cbiAgICB9LCBbdGhpcy4kc2xvdHNbJ2J1dHRvbi1jb250ZW50J10gfHwgdGhpcy4kc2xvdHMudGV4dCB8fCBoKCdzcGFuJywge1xuICAgICAgZG9tUHJvcHM6IGh0bWxPclRleHQodGhpcy5odG1sLCB0aGlzLnRleHQpXG4gICAgfSldKTtcbiAgICB2YXIgbWVudSA9IGgoJ3VsJywge1xuICAgICAgc3RhdGljQ2xhc3M6ICdkcm9wZG93bi1tZW51JyxcbiAgICAgIGNsYXNzOiB0aGlzLm1lbnVDbGFzc2VzLFxuICAgICAgcmVmOiAnbWVudScsXG4gICAgICBhdHRyczoge1xuICAgICAgICB0YWJpbmRleDogJy0xJyxcbiAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IHRoaXMuc2FmZUlkKCdfQlZfYnV0dG9uXycpXG4gICAgICB9LFxuICAgICAgb246IHtcbiAgICAgICAga2V5ZG93bjogdGhpcy5vbktleWRvd24gLy8gdXAsIGRvd24sIGVzY1xuXG4gICAgICB9XG4gICAgfSwgIXRoaXMubGF6eSB8fCB0aGlzLnZpc2libGUgPyB0aGlzLm5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnLCB7XG4gICAgICBoaWRlOiB0aGlzLmhpZGVcbiAgICB9KSA6IFtoKCldKTtcbiAgICByZXR1cm4gaCgnbGknLCB7XG4gICAgICBzdGF0aWNDbGFzczogJ25hdi1pdGVtIGItbmF2LWRyb3Bkb3duIGRyb3Bkb3duJyxcbiAgICAgIGNsYXNzOiB0aGlzLmRyb3Bkb3duQ2xhc3NlcyxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGlkOiB0aGlzLnNhZmVJZCgpXG4gICAgICB9XG4gICAgfSwgW2J1dHRvbiwgbWVudV0pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL25hdi9uYXYtaXRlbS1kcm9wZG93bi5qc1xuLy8gbW9kdWxlIGlkID0gMTc3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///177\n"); /***/ }), /* 178 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BNavbarNav; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_pluck_props__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__nav_nav__ = __webpack_require__(47);\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 // -- Constants --\n\nvar props = Object(__WEBPACK_IMPORTED_MODULE_2__utils_pluck_props__[\"a\" /* default */])(['tag', 'fill', 'justified', 'align', 'small'], __WEBPACK_IMPORTED_MODULE_3__nav_nav__[\"b\" /* props */]); // -- Utils --\n\nvar computeJustifyContent = function computeJustifyContent(value) {\n // Normalize value\n value = value === 'left' ? 'start' : value === 'right' ? 'end' : value;\n return \"justify-content-\".concat(value);\n}; // @vue/component\n\n\nvar BNavbarNav =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BNavbarNav',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'navbar-nav',\n class: (_class = {\n 'nav-fill': props.fill,\n 'nav-justified': props.justified\n }, _defineProperty(_class, computeJustifyContent(props.align), props.align), _defineProperty(_class, \"small\", props.small), _class)\n }), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLW5hdi5qcz9jM2FlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNvQjtBQUNMO0FBQ0Q7O0FBRXpDLFlBQVksMkVBQVUsaURBQWlELHVEQUFTLEVBQUU7O0FBRXpGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0s7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isb0ZBQVM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNzguanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCBwbHVja1Byb3BzIGZyb20gJy4uLy4uL3V0aWxzL3BsdWNrLXByb3BzJztcbmltcG9ydCB7IHByb3BzIGFzIEJOYXZQcm9wcyB9IGZyb20gJy4uL25hdi9uYXYnOyAvLyAtLSBDb25zdGFudHMgLS1cblxuZXhwb3J0IHZhciBwcm9wcyA9IHBsdWNrUHJvcHMoWyd0YWcnLCAnZmlsbCcsICdqdXN0aWZpZWQnLCAnYWxpZ24nLCAnc21hbGwnXSwgQk5hdlByb3BzKTsgLy8gLS0gVXRpbHMgLS1cblxudmFyIGNvbXB1dGVKdXN0aWZ5Q29udGVudCA9IGZ1bmN0aW9uIGNvbXB1dGVKdXN0aWZ5Q29udGVudCh2YWx1ZSkge1xuICAvLyBOb3JtYWxpemUgdmFsdWVcbiAgdmFsdWUgPSB2YWx1ZSA9PT0gJ2xlZnQnID8gJ3N0YXJ0JyA6IHZhbHVlID09PSAncmlnaHQnID8gJ2VuZCcgOiB2YWx1ZTtcbiAgcmV0dXJuIFwianVzdGlmeS1jb250ZW50LVwiLmNvbmNhdCh2YWx1ZSk7XG59OyAvLyBAdnVlL2NvbXBvbmVudFxuXG5cbmV4cG9ydCB2YXIgQk5hdmJhck5hdiA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JOYXZiYXJOYXYnLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogcHJvcHMsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgX2NsYXNzO1xuXG4gICAgdmFyIHByb3BzID0gX3JlZi5wcm9wcyxcbiAgICAgICAgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICAgICAgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuO1xuICAgIHJldHVybiBoKHByb3BzLnRhZywgbWVyZ2VEYXRhKGRhdGEsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnbmF2YmFyLW5hdicsXG4gICAgICBjbGFzczogKF9jbGFzcyA9IHtcbiAgICAgICAgJ25hdi1maWxsJzogcHJvcHMuZmlsbCxcbiAgICAgICAgJ25hdi1qdXN0aWZpZWQnOiBwcm9wcy5qdXN0aWZpZWRcbiAgICAgIH0sIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3MsIGNvbXB1dGVKdXN0aWZ5Q29udGVudChwcm9wcy5hbGlnbiksIHByb3BzLmFsaWduKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJzbWFsbFwiLCBwcm9wcy5zbWFsbCksIF9jbGFzcylcbiAgICB9KSwgY2hpbGRyZW4pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL25hdmJhci9uYXZiYXItbmF2LmpzXG4vLyBtb2R1bGUgaWQgPSAxNzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///178\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return NavbarPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__navbar__ = __webpack_require__(179);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__navbar_nav__ = __webpack_require__(180);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__navbar_brand__ = __webpack_require__(181);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__navbar_toggle__ = __webpack_require__(182);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__nav__ = __webpack_require__(80);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__collapse__ = __webpack_require__(63);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__dropdown__ = __webpack_require__(40);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BNavbar */\n/* unused harmony reexport BNavbarNav */\n/* unused harmony reexport BNavbarBrand */\n/* unused harmony reexport BNavbarToggle */\n\n\n\n\n\n\n\n\nvar NavbarPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_7__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BNavbar: __WEBPACK_IMPORTED_MODULE_0__navbar__[\"a\" /* BNavbar */],\n BNavbarNav: __WEBPACK_IMPORTED_MODULE_1__navbar_nav__[\"a\" /* BNavbarNav */],\n BNavbarBrand: __WEBPACK_IMPORTED_MODULE_2__navbar_brand__[\"a\" /* BNavbarBrand */],\n BNavbarToggle: __WEBPACK_IMPORTED_MODULE_3__navbar_toggle__[\"a\" /* BNavbarToggle */],\n BNavToggle: __WEBPACK_IMPORTED_MODULE_3__navbar_toggle__[\"a\" /* BNavbarToggle */]\n },\n plugins: {\n NavPlugin: __WEBPACK_IMPORTED_MODULE_4__nav__[\"a\" /* NavPlugin */],\n CollapsePlugin: __WEBPACK_IMPORTED_MODULE_5__collapse__[\"a\" /* CollapsePlugin */],\n DropdownPlugin: __WEBPACK_IMPORTED_MODULE_6__dropdown__[\"a\" /* DropdownPlugin */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXZiYXIvaW5kZXguanM/YTQyYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFtQztBQUNPO0FBQ0k7QUFDRTtBQUNiO0FBQ1U7QUFDQTtBQUNPO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsYUFBYSx3REFBTztBQUNwQixnQkFBZ0IsK0RBQVU7QUFDMUIsa0JBQWtCLG1FQUFZO0FBQzlCLG1CQUFtQixxRUFBYTtBQUNoQyxnQkFBZ0IscUVBQWE7QUFDN0IsR0FBRztBQUNIO0FBQ0EsZUFBZSx1REFBUztBQUN4QixvQkFBb0IsaUVBQWM7QUFDbEMsb0JBQW9CLGlFQUFjO0FBQ2xDO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNzguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCTmF2YmFyIH0gZnJvbSAnLi9uYXZiYXInO1xuaW1wb3J0IHsgQk5hdmJhck5hdiB9IGZyb20gJy4vbmF2YmFyLW5hdic7XG5pbXBvcnQgeyBCTmF2YmFyQnJhbmQgfSBmcm9tICcuL25hdmJhci1icmFuZCc7XG5pbXBvcnQgeyBCTmF2YmFyVG9nZ2xlIH0gZnJvbSAnLi9uYXZiYXItdG9nZ2xlJztcbmltcG9ydCB7IE5hdlBsdWdpbiB9IGZyb20gJy4uL25hdic7XG5pbXBvcnQgeyBDb2xsYXBzZVBsdWdpbiB9IGZyb20gJy4uL2NvbGxhcHNlJztcbmltcG9ydCB7IERyb3Bkb3duUGx1Z2luIH0gZnJvbSAnLi4vZHJvcGRvd24nO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIE5hdmJhclBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJOYXZiYXI6IEJOYXZiYXIsXG4gICAgQk5hdmJhck5hdjogQk5hdmJhck5hdixcbiAgICBCTmF2YmFyQnJhbmQ6IEJOYXZiYXJCcmFuZCxcbiAgICBCTmF2YmFyVG9nZ2xlOiBCTmF2YmFyVG9nZ2xlLFxuICAgIEJOYXZUb2dnbGU6IEJOYXZiYXJUb2dnbGVcbiAgfSxcbiAgcGx1Z2luczoge1xuICAgIE5hdlBsdWdpbjogTmF2UGx1Z2luLFxuICAgIENvbGxhcHNlUGx1Z2luOiBDb2xsYXBzZVBsdWdpbixcbiAgICBEcm9wZG93blBsdWdpbjogRHJvcGRvd25QbHVnaW5cbiAgfVxufSk7XG5leHBvcnQgeyBOYXZiYXJQbHVnaW4sIEJOYXZiYXIsIEJOYXZiYXJOYXYsIEJOYXZiYXJCcmFuZCwgQk5hdmJhclRvZ2dsZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvbmF2YmFyL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///178\n"); /***/ }), /* 179 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BNavbarBrand; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_pluck_props__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__link_link__ = __webpack_require__(14);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\nvar linkProps = Object(__WEBPACK_IMPORTED_MODULE_3__link_link__[\"b\" /* propsFactory */])();\nlinkProps.href.default = undefined;\nlinkProps.to.default = undefined;\nvar props = _objectSpread({}, linkProps, {\n tag: {\n type: String,\n default: 'div'\n }\n}); // @vue/component\n\nvar BNavbarBrand =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BNavbarBrand',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var isLink = Boolean(props.to || props.href);\n var tag = isLink ? __WEBPACK_IMPORTED_MODULE_3__link_link__[\"a\" /* BLink */] : props.tag;\n return h(tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'navbar-brand',\n props: isLink ? Object(__WEBPACK_IMPORTED_MODULE_2__utils_pluck_props__[\"a\" /* default */])(linkProps, props) : {}\n }), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLWJyYW5kLmpzPzFkMzQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNvQjtBQUNMO0FBQ0U7QUFDbkQsZ0JBQWdCLHdFQUFZO0FBQzVCO0FBQ0E7QUFDTyw0QkFBNEI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUU7O0FBRUk7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qix5REFBSztBQUM1QixrQkFBa0Isb0ZBQVM7QUFDM0I7QUFDQSxzQkFBc0IsMkVBQVU7QUFDaEMsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxNzkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCBwbHVja1Byb3BzIGZyb20gJy4uLy4uL3V0aWxzL3BsdWNrLXByb3BzJztcbmltcG9ydCB7IEJMaW5rLCBwcm9wc0ZhY3RvcnkgfSBmcm9tICcuLi9saW5rL2xpbmsnO1xudmFyIGxpbmtQcm9wcyA9IHByb3BzRmFjdG9yeSgpO1xubGlua1Byb3BzLmhyZWYuZGVmYXVsdCA9IHVuZGVmaW5lZDtcbmxpbmtQcm9wcy50by5kZWZhdWx0ID0gdW5kZWZpbmVkO1xuZXhwb3J0IHZhciBwcm9wcyA9IF9vYmplY3RTcHJlYWQoe30sIGxpbmtQcm9wcywge1xuICB0YWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ2RpdidcbiAgfVxufSk7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQk5hdmJhckJyYW5kID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQk5hdmJhckJyYW5kJyxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcHJvcHM6IHByb3BzLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBfcmVmKSB7XG4gICAgdmFyIHByb3BzID0gX3JlZi5wcm9wcyxcbiAgICAgICAgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICAgICAgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuO1xuICAgIHZhciBpc0xpbmsgPSBCb29sZWFuKHByb3BzLnRvIHx8IHByb3BzLmhyZWYpO1xuICAgIHZhciB0YWcgPSBpc0xpbmsgPyBCTGluayA6IHByb3BzLnRhZztcbiAgICByZXR1cm4gaCh0YWcsIG1lcmdlRGF0YShkYXRhLCB7XG4gICAgICBzdGF0aWNDbGFzczogJ25hdmJhci1icmFuZCcsXG4gICAgICBwcm9wczogaXNMaW5rID8gcGx1Y2tQcm9wcyhsaW5rUHJvcHMsIHByb3BzKSA6IHt9XG4gICAgfSksIGNoaWxkcmVuKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLWJyYW5kLmpzXG4vLyBtb2R1bGUgaWQgPSAxNzlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///179\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BNavbar; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\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\nvar NAME = 'BNavbar';\nvar props = {\n tag: {\n type: String,\n default: 'nav'\n },\n type: {\n type: String,\n default: 'light'\n },\n variant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant');\n }\n },\n toggleable: {\n type: [Boolean, String],\n default: false\n },\n fixed: {\n type: String\n },\n sticky: {\n type: Boolean,\n default: false\n },\n print: {\n type: Boolean,\n default: false\n }\n}; // @vue/component\n\nvar BNavbar =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var breakpoint = '';\n var xs = Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"a\" /* getBreakpoints */])()[0];\n\n if (props.toggleable && Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"m\" /* isString */])(props.toggleable) && props.toggleable !== xs) {\n breakpoint = \"navbar-expand-\".concat(props.toggleable);\n } else if (props.toggleable === false) {\n breakpoint = 'navbar-expand';\n }\n\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'navbar',\n class: (_class = {\n 'd-print': props.print,\n 'sticky-top': props.sticky\n }, _defineProperty(_class, \"navbar-\".concat(props.type), Boolean(props.type)), _defineProperty(_class, \"bg-\".concat(props.variant), Boolean(props.variant)), _defineProperty(_class, \"fixed-\".concat(props.fixed), Boolean(props.fixed)), _defineProperty(_class, \"\".concat(breakpoint), Boolean(breakpoint)), _class),\n attrs: {\n role: props.tag === 'nav' ? null : 'navigation'\n }\n }), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLmpzPzUwYjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ29CO0FBQ2tCO0FBQ3pCO0FBQy9DO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaUZBQWtCO0FBQy9CO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUs7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsNkVBQWM7O0FBRTNCLDRCQUE0Qix3RUFBUTtBQUNwQztBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLHdCQUF3QixvRkFBUztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjE3OS5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IG1lcmdlRGF0YSB9IGZyb20gJ3Z1ZS1mdW5jdGlvbmFsLWRhdGEtbWVyZ2UnO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50Q29uZmlnLCBnZXRCcmVha3BvaW50cyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJy4uLy4uL3V0aWxzL2luc3BlY3QnO1xudmFyIE5BTUUgPSAnQk5hdmJhcic7XG5leHBvcnQgdmFyIHByb3BzID0ge1xuICB0YWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ25hdidcbiAgfSxcbiAgdHlwZToge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAnbGlnaHQnXG4gIH0sXG4gIHZhcmlhbnQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICd2YXJpYW50Jyk7XG4gICAgfVxuICB9LFxuICB0b2dnbGVhYmxlOiB7XG4gICAgdHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgZml4ZWQ6IHtcbiAgICB0eXBlOiBTdHJpbmdcbiAgfSxcbiAgc3RpY2t5OiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBwcmludDoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfVxufTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCTmF2YmFyID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogcHJvcHMsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgX2NsYXNzO1xuXG4gICAgdmFyIHByb3BzID0gX3JlZi5wcm9wcyxcbiAgICAgICAgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICAgICAgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuO1xuICAgIHZhciBicmVha3BvaW50ID0gJyc7XG4gICAgdmFyIHhzID0gZ2V0QnJlYWtwb2ludHMoKVswXTtcblxuICAgIGlmIChwcm9wcy50b2dnbGVhYmxlICYmIGlzU3RyaW5nKHByb3BzLnRvZ2dsZWFibGUpICYmIHByb3BzLnRvZ2dsZWFibGUgIT09IHhzKSB7XG4gICAgICBicmVha3BvaW50ID0gXCJuYXZiYXItZXhwYW5kLVwiLmNvbmNhdChwcm9wcy50b2dnbGVhYmxlKTtcbiAgICB9IGVsc2UgaWYgKHByb3BzLnRvZ2dsZWFibGUgPT09IGZhbHNlKSB7XG4gICAgICBicmVha3BvaW50ID0gJ25hdmJhci1leHBhbmQnO1xuICAgIH1cblxuICAgIHJldHVybiBoKHByb3BzLnRhZywgbWVyZ2VEYXRhKGRhdGEsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnbmF2YmFyJyxcbiAgICAgIGNsYXNzOiAoX2NsYXNzID0ge1xuICAgICAgICAnZC1wcmludCc6IHByb3BzLnByaW50LFxuICAgICAgICAnc3RpY2t5LXRvcCc6IHByb3BzLnN0aWNreVxuICAgICAgfSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJuYXZiYXItXCIuY29uY2F0KHByb3BzLnR5cGUpLCBCb29sZWFuKHByb3BzLnR5cGUpKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJiZy1cIi5jb25jYXQocHJvcHMudmFyaWFudCksIEJvb2xlYW4ocHJvcHMudmFyaWFudCkpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzLCBcImZpeGVkLVwiLmNvbmNhdChwcm9wcy5maXhlZCksIEJvb2xlYW4ocHJvcHMuZml4ZWQpKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJcIi5jb25jYXQoYnJlYWtwb2ludCksIEJvb2xlYW4oYnJlYWtwb2ludCkpLCBfY2xhc3MpLFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcm9sZTogcHJvcHMudGFnID09PSAnbmF2JyA/IG51bGwgOiAnbmF2aWdhdGlvbidcbiAgICAgIH1cbiAgICB9KSwgY2hpbGRyZW4pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL25hdmJhci9uYXZiYXIuanNcbi8vIG1vZHVsZSBpZCA9IDE3OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///179\n"); /***/ }), /* 180 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BNavbarToggle; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_listen_on_root__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_config__ = __webpack_require__(4);\n\n\n\n\nvar NAME = 'BNavbarToggle'; // TODO: Switch to using VBToggle directive, will reduce code footprint\n// Events we emit on $root\n\nvar EVENT_TOGGLE = 'bv::toggle::collapse'; // Events we listen to on $root\n\nvar EVENT_STATE = 'bv::collapse::state'; // This private event is NOT to be documented as people should not be using it.\n\nvar EVENT_STATE_SYNC = 'bv::collapse::sync::state'; // @vue/component\n\nvar BNavbarToggle =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_listen_on_root__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__[\"a\" /* default */]],\n props: {\n label: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'label');\n }\n },\n target: {\n type: String,\n required: true\n }\n },\n data: function data() {\n return {\n toggleState: false\n };\n },\n created: function created() {\n this.listenOnRoot(EVENT_STATE, this.handleStateEvt);\n this.listenOnRoot(EVENT_STATE_SYNC, this.handleStateEvt);\n },\n methods: {\n onClick: function onClick(evt) {\n this.$emit('click', evt);\n\n if (!evt.defaultPrevented) {\n this.$root.$emit(EVENT_TOGGLE, this.target);\n }\n },\n handleStateEvt: function handleStateEvt(id, state) {\n if (id === this.target) {\n this.toggleState = state;\n }\n }\n },\n render: function render(h) {\n return h('button', {\n class: ['navbar-toggler'],\n attrs: {\n type: 'button',\n 'aria-label': this.label,\n 'aria-controls': this.target,\n 'aria-expanded': this.toggleState ? 'true' : 'false'\n },\n on: {\n click: this.onClick\n }\n }, [this.normalizeSlot('default') || h('span', {\n class: ['navbar-toggler-icon']\n })]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLXRvZ2dsZS5qcz9mMDliIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDMEI7QUFDQztBQUNMO0FBQ3hELDJCQUEyQjtBQUMzQjs7QUFFQSwwQ0FBMEM7O0FBRTFDLHdDQUF3Qzs7QUFFeEMsbURBQW1EOztBQUU1QztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsdUVBQWlCLEVBQUUsdUVBQWtCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMTgwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IGxpc3Rlbk9uUm9vdE1peGluIGZyb20gJy4uLy4uL21peGlucy9saXN0ZW4tb24tcm9vdCc7XG5pbXBvcnQgbm9ybWFsaXplU2xvdE1peGluIGZyb20gJy4uLy4uL21peGlucy9ub3JtYWxpemUtc2xvdCc7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi8uLi91dGlscy9jb25maWcnO1xudmFyIE5BTUUgPSAnQk5hdmJhclRvZ2dsZSc7IC8vIFRPRE86IFN3aXRjaCB0byB1c2luZyBWQlRvZ2dsZSBkaXJlY3RpdmUsIHdpbGwgcmVkdWNlIGNvZGUgZm9vdHByaW50XG4vLyBFdmVudHMgd2UgZW1pdCBvbiAkcm9vdFxuXG52YXIgRVZFTlRfVE9HR0xFID0gJ2J2Ojp0b2dnbGU6OmNvbGxhcHNlJzsgLy8gRXZlbnRzIHdlIGxpc3RlbiB0byBvbiAkcm9vdFxuXG52YXIgRVZFTlRfU1RBVEUgPSAnYnY6OmNvbGxhcHNlOjpzdGF0ZSc7IC8vIFRoaXMgcHJpdmF0ZSBldmVudCBpcyBOT1QgdG8gYmUgZG9jdW1lbnRlZCBhcyBwZW9wbGUgc2hvdWxkIG5vdCBiZSB1c2luZyBpdC5cblxudmFyIEVWRU5UX1NUQVRFX1NZTkMgPSAnYnY6OmNvbGxhcHNlOjpzeW5jOjpzdGF0ZSc7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQk5hdmJhclRvZ2dsZSA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogTkFNRSxcbiAgbWl4aW5zOiBbbGlzdGVuT25Sb290TWl4aW4sIG5vcm1hbGl6ZVNsb3RNaXhpbl0sXG4gIHByb3BzOiB7XG4gICAgbGFiZWw6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdsYWJlbCcpO1xuICAgICAgfVxuICAgIH0sXG4gICAgdGFyZ2V0OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdG9nZ2xlU3RhdGU6IGZhbHNlXG4gICAgfTtcbiAgfSxcbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcbiAgICB0aGlzLmxpc3Rlbk9uUm9vdChFVkVOVF9TVEFURSwgdGhpcy5oYW5kbGVTdGF0ZUV2dCk7XG4gICAgdGhpcy5saXN0ZW5PblJvb3QoRVZFTlRfU1RBVEVfU1lOQywgdGhpcy5oYW5kbGVTdGF0ZUV2dCk7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKGV2dCkge1xuICAgICAgdGhpcy4kZW1pdCgnY2xpY2snLCBldnQpO1xuXG4gICAgICBpZiAoIWV2dC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIHRoaXMuJHJvb3QuJGVtaXQoRVZFTlRfVE9HR0xFLCB0aGlzLnRhcmdldCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVTdGF0ZUV2dDogZnVuY3Rpb24gaGFuZGxlU3RhdGVFdnQoaWQsIHN0YXRlKSB7XG4gICAgICBpZiAoaWQgPT09IHRoaXMudGFyZ2V0KSB7XG4gICAgICAgIHRoaXMudG9nZ2xlU3RhdGUgPSBzdGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICByZXR1cm4gaCgnYnV0dG9uJywge1xuICAgICAgY2xhc3M6IFsnbmF2YmFyLXRvZ2dsZXInXSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAnYXJpYS1sYWJlbCc6IHRoaXMubGFiZWwsXG4gICAgICAgICdhcmlhLWNvbnRyb2xzJzogdGhpcy50YXJnZXQsXG4gICAgICAgICdhcmlhLWV4cGFuZGVkJzogdGhpcy50b2dnbGVTdGF0ZSA/ICd0cnVlJyA6ICdmYWxzZSdcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAgICBjbGljazogdGhpcy5vbkNsaWNrXG4gICAgICB9XG4gICAgfSwgW3RoaXMubm9ybWFsaXplU2xvdCgnZGVmYXVsdCcpIHx8IGgoJ3NwYW4nLCB7XG4gICAgICBjbGFzczogWyduYXZiYXItdG9nZ2xlci1pY29uJ11cbiAgICB9KV0pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL25hdmJhci9uYXZiYXItdG9nZ2xlLmpzXG4vLyBtb2R1bGUgaWQgPSAxODBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///180\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BNavbarNav; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_pluck_props__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__nav_nav__ = __webpack_require__(47);\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 // -- Constants --\n\nvar props = Object(__WEBPACK_IMPORTED_MODULE_2__utils_pluck_props__[\"a\" /* default */])(['tag', 'fill', 'justified', 'align', 'small'], __WEBPACK_IMPORTED_MODULE_3__nav_nav__[\"b\" /* props */]); // -- Utils --\n\nvar computeJustifyContent = function computeJustifyContent(value) {\n // Normalize value\n value = value === 'left' ? 'start' : value === 'right' ? 'end' : value;\n return \"justify-content-\".concat(value);\n}; // @vue/component\n\n\nvar BNavbarNav =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BNavbarNav',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'navbar-nav',\n class: (_class = {\n 'nav-fill': props.fill,\n 'nav-justified': props.justified\n }, _defineProperty(_class, computeJustifyContent(props.align), props.align), _defineProperty(_class, \"small\", props.small), _class)\n }), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLW5hdi5qcz9jM2FlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNvQjtBQUNMO0FBQ0Q7O0FBRXpDLFlBQVksMkVBQVUsaURBQWlELHVEQUFTLEVBQUU7O0FBRXpGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0s7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isb0ZBQVM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxODAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCBwbHVja1Byb3BzIGZyb20gJy4uLy4uL3V0aWxzL3BsdWNrLXByb3BzJztcbmltcG9ydCB7IHByb3BzIGFzIEJOYXZQcm9wcyB9IGZyb20gJy4uL25hdi9uYXYnOyAvLyAtLSBDb25zdGFudHMgLS1cblxuZXhwb3J0IHZhciBwcm9wcyA9IHBsdWNrUHJvcHMoWyd0YWcnLCAnZmlsbCcsICdqdXN0aWZpZWQnLCAnYWxpZ24nLCAnc21hbGwnXSwgQk5hdlByb3BzKTsgLy8gLS0gVXRpbHMgLS1cblxudmFyIGNvbXB1dGVKdXN0aWZ5Q29udGVudCA9IGZ1bmN0aW9uIGNvbXB1dGVKdXN0aWZ5Q29udGVudCh2YWx1ZSkge1xuICAvLyBOb3JtYWxpemUgdmFsdWVcbiAgdmFsdWUgPSB2YWx1ZSA9PT0gJ2xlZnQnID8gJ3N0YXJ0JyA6IHZhbHVlID09PSAncmlnaHQnID8gJ2VuZCcgOiB2YWx1ZTtcbiAgcmV0dXJuIFwianVzdGlmeS1jb250ZW50LVwiLmNvbmNhdCh2YWx1ZSk7XG59OyAvLyBAdnVlL2NvbXBvbmVudFxuXG5cbmV4cG9ydCB2YXIgQk5hdmJhck5hdiA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JOYXZiYXJOYXYnLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczogcHJvcHMsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIF9yZWYpIHtcbiAgICB2YXIgX2NsYXNzO1xuXG4gICAgdmFyIHByb3BzID0gX3JlZi5wcm9wcyxcbiAgICAgICAgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICAgICAgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuO1xuICAgIHJldHVybiBoKHByb3BzLnRhZywgbWVyZ2VEYXRhKGRhdGEsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAnbmF2YmFyLW5hdicsXG4gICAgICBjbGFzczogKF9jbGFzcyA9IHtcbiAgICAgICAgJ25hdi1maWxsJzogcHJvcHMuZmlsbCxcbiAgICAgICAgJ25hdi1qdXN0aWZpZWQnOiBwcm9wcy5qdXN0aWZpZWRcbiAgICAgIH0sIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3MsIGNvbXB1dGVKdXN0aWZ5Q29udGVudChwcm9wcy5hbGlnbiksIHByb3BzLmFsaWduKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJzbWFsbFwiLCBwcm9wcy5zbWFsbCksIF9jbGFzcylcbiAgICB9KSwgY2hpbGRyZW4pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL25hdmJhci9uYXZiYXItbmF2LmpzXG4vLyBtb2R1bGUgaWQgPSAxODBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///180\n"); /***/ }), /* 181 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return PaginationPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__pagination__ = __webpack_require__(182);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BPagination */\n\n\nvar PaginationPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BPagination: __WEBPACK_IMPORTED_MODULE_0__pagination__[\"a\" /* BPagination */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wYWdpbmF0aW9uL2luZGV4LmpzP2M4ZGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMkM7QUFDUztBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGlCQUFpQixnRUFBVztBQUM1QjtBQUNBLENBQUMiLCJmaWxlIjoiMTgxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQlBhZ2luYXRpb24gfSBmcm9tICcuL3BhZ2luYXRpb24nO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIFBhZ2luYXRpb25QbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCUGFnaW5hdGlvbjogQlBhZ2luYXRpb25cbiAgfVxufSk7XG5leHBvcnQgeyBQYWdpbmF0aW9uUGx1Z2luLCBCUGFnaW5hdGlvbiB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTgxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///181\n"); +eval("/* unused harmony export props */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BNavbarBrand; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_pluck_props__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__link_link__ = __webpack_require__(14);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\nvar linkProps = Object(__WEBPACK_IMPORTED_MODULE_3__link_link__[\"b\" /* propsFactory */])();\nlinkProps.href.default = undefined;\nlinkProps.to.default = undefined;\nvar props = _objectSpread({}, linkProps, {\n tag: {\n type: String,\n default: 'div'\n }\n}); // @vue/component\n\nvar BNavbarBrand =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BNavbarBrand',\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var isLink = Boolean(props.to || props.href);\n var tag = isLink ? __WEBPACK_IMPORTED_MODULE_3__link_link__[\"a\" /* BLink */] : props.tag;\n return h(tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n staticClass: 'navbar-brand',\n props: isLink ? Object(__WEBPACK_IMPORTED_MODULE_2__utils_pluck_props__[\"a\" /* default */])(linkProps, props) : {}\n }), children);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLWJyYW5kLmpzPzFkMzQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNvQjtBQUNMO0FBQ0U7QUFDbkQsZ0JBQWdCLHdFQUFZO0FBQzVCO0FBQ0E7QUFDTyw0QkFBNEI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUU7O0FBRUk7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qix5REFBSztBQUM1QixrQkFBa0Isb0ZBQVM7QUFDM0I7QUFDQSxzQkFBc0IsMkVBQVU7QUFDaEMsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxODEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCBwbHVja1Byb3BzIGZyb20gJy4uLy4uL3V0aWxzL3BsdWNrLXByb3BzJztcbmltcG9ydCB7IEJMaW5rLCBwcm9wc0ZhY3RvcnkgfSBmcm9tICcuLi9saW5rL2xpbmsnO1xudmFyIGxpbmtQcm9wcyA9IHByb3BzRmFjdG9yeSgpO1xubGlua1Byb3BzLmhyZWYuZGVmYXVsdCA9IHVuZGVmaW5lZDtcbmxpbmtQcm9wcy50by5kZWZhdWx0ID0gdW5kZWZpbmVkO1xuZXhwb3J0IHZhciBwcm9wcyA9IF9vYmplY3RTcHJlYWQoe30sIGxpbmtQcm9wcywge1xuICB0YWc6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ2RpdidcbiAgfVxufSk7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQk5hdmJhckJyYW5kID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnQk5hdmJhckJyYW5kJyxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcHJvcHM6IHByb3BzLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBfcmVmKSB7XG4gICAgdmFyIHByb3BzID0gX3JlZi5wcm9wcyxcbiAgICAgICAgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICAgICAgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuO1xuICAgIHZhciBpc0xpbmsgPSBCb29sZWFuKHByb3BzLnRvIHx8IHByb3BzLmhyZWYpO1xuICAgIHZhciB0YWcgPSBpc0xpbmsgPyBCTGluayA6IHByb3BzLnRhZztcbiAgICByZXR1cm4gaCh0YWcsIG1lcmdlRGF0YShkYXRhLCB7XG4gICAgICBzdGF0aWNDbGFzczogJ25hdmJhci1icmFuZCcsXG4gICAgICBwcm9wczogaXNMaW5rID8gcGx1Y2tQcm9wcyhsaW5rUHJvcHMsIHByb3BzKSA6IHt9XG4gICAgfSksIGNoaWxkcmVuKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLWJyYW5kLmpzXG4vLyBtb2R1bGUgaWQgPSAxODFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///181\n"); /***/ }), /* 182 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BPagination; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mixins_pagination__ = __webpack_require__(183);\n\n\n\n\n // --- Constants ---\n\nvar NAME = 'BPagination';\nvar DEFAULT_PER_PAGE = 20;\nvar DEFAULT_TOTAL_ROWS = 0;\nvar props = {\n size: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'size');\n }\n },\n perPage: {\n type: [Number, String],\n default: DEFAULT_PER_PAGE\n },\n totalRows: {\n type: [Number, String],\n default: DEFAULT_TOTAL_ROWS\n },\n ariaControls: {\n type: String,\n default: null\n }\n}; // --- Helper functions ---\n// Sanitize the provided per page number (converting to a number)\n\nvar sanitizePerPage = function sanitizePerPage(val) {\n var perPage = parseInt(val, 10) || DEFAULT_PER_PAGE;\n return perPage < 1 ? 1 : perPage;\n}; // Sanitize the provided total rows number (converting to a number)\n\n\nvar sanitizeTotalRows = function sanitizeTotalRows(val) {\n var totalRows = parseInt(val, 10) || DEFAULT_TOTAL_ROWS;\n return totalRows < 0 ? 0 : totalRows;\n}; // The render function is brought in via the `paginationMixin`\n// @vue/component\n\n\nvar BPagination =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n mixins: [__WEBPACK_IMPORTED_MODULE_4__mixins_pagination__[\"a\" /* default */]],\n props: props,\n computed: {\n numberOfPages: function numberOfPages() {\n var result = Math.ceil(sanitizeTotalRows(this.totalRows) / sanitizePerPage(this.perPage));\n return result < 1 ? 1 : result;\n },\n pageSizeNumberOfPages: function pageSizeNumberOfPages() {\n // Used for watching changes to `perPage` and `numberOfPages`\n return {\n perPage: sanitizePerPage(this.perPage),\n totalRows: sanitizeTotalRows(this.totalRows),\n numberOfPages: this.numberOfPages\n };\n }\n },\n watch: {\n pageSizeNumberOfPages: function pageSizeNumberOfPages(newVal, oldVal) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"o\" /* isUndefinedOrNull */])(oldVal)) {\n if (newVal.perPage !== oldVal.perPage && newVal.totalRows === oldVal.totalRows) {\n // If the page size changes, reset to page 1\n this.currentPage = 1;\n } else if (newVal.numberOfPages !== oldVal.numberOfPages && this.currentPage > newVal.numberOfPages) {\n // If `numberOfPages` changes and is less than\n // the `currentPage` number, reset to page 1\n this.currentPage = 1;\n }\n }\n\n this.localNumberOfPages = newVal.numberOfPages;\n }\n },\n created: function created() {\n var _this = this;\n\n // Set the initial page count\n this.localNumberOfPages = this.numberOfPages; // Set the initial page value\n\n var currentPage = parseInt(this.value, 10) || 0;\n\n if (currentPage > 0) {\n this.currentPage = currentPage;\n } else {\n this.$nextTick(function () {\n // If this value parses to NaN or a value less than 1\n // Trigger an initial emit of 'null' if no page specified\n _this.currentPage = 0;\n });\n }\n },\n mounted: function mounted() {\n // Set the initial page count\n this.localNumberOfPages = this.numberOfPages;\n },\n methods: {\n // These methods are used by the render function\n onClick: function onClick(num, evt) {\n var _this2 = this;\n\n // Handle edge cases where number of pages has changed (i.e. if perPage changes)\n // This should normally not happen, but just in case.\n if (num > this.numberOfPages) {\n /* istanbul ignore next */\n num = this.numberOfPages;\n } else if (num < 1) {\n /* istanbul ignore next */\n num = 1;\n } // Update the v-model\n\n\n this.currentPage = num; // Emit event triggered by user interaction\n\n this.$emit('change', this.currentPage);\n this.$nextTick(function () {\n // Keep the current button focused if possible\n var target = evt.target;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_2__utils_dom__[\"p\" /* isVisible */])(target) && _this2.$el.contains(target) && target.focus) {\n target.focus();\n } else {\n _this2.focusCurrent();\n }\n });\n },\n makePage: function makePage(pageNum) {\n return pageNum;\n },\n linkProps: function linkProps(pageNum) {\n // Always '#' for pagination component\n return {\n href: '#'\n };\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uanM/NjY4OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDc0I7QUFDWjtBQUNZO0FBQ0Y7O0FBRXREO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRkFBa0I7QUFDL0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7OztBQUdPO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0EsV0FBVyxtRUFBZTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLFdBQVcsaUZBQWlCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBLGlEQUFpRDs7QUFFakQ7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTzs7O0FBR1AsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxZQUFZLHFFQUFTO0FBQ3JCO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6IjE4Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBpc1Zpc2libGUgfSBmcm9tICcuLi8uLi91dGlscy9kb20nO1xuaW1wb3J0IHsgaXNVbmRlZmluZWRPck51bGwgfSBmcm9tICcuLi8uLi91dGlscy9pbnNwZWN0JztcbmltcG9ydCBwYWdpbmF0aW9uTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL3BhZ2luYXRpb24nOyAvLyAtLS0gQ29uc3RhbnRzIC0tLVxuXG52YXIgTkFNRSA9ICdCUGFnaW5hdGlvbic7XG52YXIgREVGQVVMVF9QRVJfUEFHRSA9IDIwO1xudmFyIERFRkFVTFRfVE9UQUxfUk9XUyA9IDA7XG52YXIgcHJvcHMgPSB7XG4gIHNpemU6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdzaXplJyk7XG4gICAgfVxuICB9LFxuICBwZXJQYWdlOiB7XG4gICAgdHlwZTogW051bWJlciwgU3RyaW5nXSxcbiAgICBkZWZhdWx0OiBERUZBVUxUX1BFUl9QQUdFXG4gIH0sXG4gIHRvdGFsUm93czoge1xuICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXG4gICAgZGVmYXVsdDogREVGQVVMVF9UT1RBTF9ST1dTXG4gIH0sXG4gIGFyaWFDb250cm9sczoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH1cbn07IC8vIC0tLSBIZWxwZXIgZnVuY3Rpb25zIC0tLVxuLy8gU2FuaXRpemUgdGhlIHByb3ZpZGVkIHBlciBwYWdlIG51bWJlciAoY29udmVydGluZyB0byBhIG51bWJlcilcblxudmFyIHNhbml0aXplUGVyUGFnZSA9IGZ1bmN0aW9uIHNhbml0aXplUGVyUGFnZSh2YWwpIHtcbiAgdmFyIHBlclBhZ2UgPSBwYXJzZUludCh2YWwsIDEwKSB8fCBERUZBVUxUX1BFUl9QQUdFO1xuICByZXR1cm4gcGVyUGFnZSA8IDEgPyAxIDogcGVyUGFnZTtcbn07IC8vIFNhbml0aXplIHRoZSBwcm92aWRlZCB0b3RhbCByb3dzIG51bWJlciAoY29udmVydGluZyB0byBhIG51bWJlcilcblxuXG52YXIgc2FuaXRpemVUb3RhbFJvd3MgPSBmdW5jdGlvbiBzYW5pdGl6ZVRvdGFsUm93cyh2YWwpIHtcbiAgdmFyIHRvdGFsUm93cyA9IHBhcnNlSW50KHZhbCwgMTApIHx8IERFRkFVTFRfVE9UQUxfUk9XUztcbiAgcmV0dXJuIHRvdGFsUm93cyA8IDAgPyAwIDogdG90YWxSb3dzO1xufTsgLy8gVGhlIHJlbmRlciBmdW5jdGlvbiBpcyBicm91Z2h0IGluIHZpYSB0aGUgYHBhZ2luYXRpb25NaXhpbmBcbi8vIEB2dWUvY29tcG9uZW50XG5cblxuZXhwb3J0IHZhciBCUGFnaW5hdGlvbiA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogTkFNRSxcbiAgbWl4aW5zOiBbcGFnaW5hdGlvbk1peGluXSxcbiAgcHJvcHM6IHByb3BzLFxuICBjb21wdXRlZDoge1xuICAgIG51bWJlck9mUGFnZXM6IGZ1bmN0aW9uIG51bWJlck9mUGFnZXMoKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gTWF0aC5jZWlsKHNhbml0aXplVG90YWxSb3dzKHRoaXMudG90YWxSb3dzKSAvIHNhbml0aXplUGVyUGFnZSh0aGlzLnBlclBhZ2UpKTtcbiAgICAgIHJldHVybiByZXN1bHQgPCAxID8gMSA6IHJlc3VsdDtcbiAgICB9LFxuICAgIHBhZ2VTaXplTnVtYmVyT2ZQYWdlczogZnVuY3Rpb24gcGFnZVNpemVOdW1iZXJPZlBhZ2VzKCkge1xuICAgICAgLy8gVXNlZCBmb3Igd2F0Y2hpbmcgY2hhbmdlcyB0byBgcGVyUGFnZWAgYW5kIGBudW1iZXJPZlBhZ2VzYFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGVyUGFnZTogc2FuaXRpemVQZXJQYWdlKHRoaXMucGVyUGFnZSksXG4gICAgICAgIHRvdGFsUm93czogc2FuaXRpemVUb3RhbFJvd3ModGhpcy50b3RhbFJvd3MpLFxuICAgICAgICBudW1iZXJPZlBhZ2VzOiB0aGlzLm51bWJlck9mUGFnZXNcbiAgICAgIH07XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIHBhZ2VTaXplTnVtYmVyT2ZQYWdlczogZnVuY3Rpb24gcGFnZVNpemVOdW1iZXJPZlBhZ2VzKG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICBpZiAoIWlzVW5kZWZpbmVkT3JOdWxsKG9sZFZhbCkpIHtcbiAgICAgICAgaWYgKG5ld1ZhbC5wZXJQYWdlICE9PSBvbGRWYWwucGVyUGFnZSAmJiBuZXdWYWwudG90YWxSb3dzID09PSBvbGRWYWwudG90YWxSb3dzKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIHBhZ2Ugc2l6ZSBjaGFuZ2VzLCByZXNldCB0byBwYWdlIDFcbiAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgfSBlbHNlIGlmIChuZXdWYWwubnVtYmVyT2ZQYWdlcyAhPT0gb2xkVmFsLm51bWJlck9mUGFnZXMgJiYgdGhpcy5jdXJyZW50UGFnZSA+IG5ld1ZhbC5udW1iZXJPZlBhZ2VzKSB7XG4gICAgICAgICAgLy8gSWYgYG51bWJlck9mUGFnZXNgIGNoYW5nZXMgYW5kIGlzIGxlc3MgdGhhblxuICAgICAgICAgIC8vIHRoZSBgY3VycmVudFBhZ2VgIG51bWJlciwgcmVzZXQgdG8gcGFnZSAxXG4gICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5sb2NhbE51bWJlck9mUGFnZXMgPSBuZXdWYWwubnVtYmVyT2ZQYWdlcztcbiAgICB9XG4gIH0sXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIC8vIFNldCB0aGUgaW5pdGlhbCBwYWdlIGNvdW50XG4gICAgdGhpcy5sb2NhbE51bWJlck9mUGFnZXMgPSB0aGlzLm51bWJlck9mUGFnZXM7IC8vIFNldCB0aGUgaW5pdGlhbCBwYWdlIHZhbHVlXG5cbiAgICB2YXIgY3VycmVudFBhZ2UgPSBwYXJzZUludCh0aGlzLnZhbHVlLCAxMCkgfHwgMDtcblxuICAgIGlmIChjdXJyZW50UGFnZSA+IDApIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBjdXJyZW50UGFnZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBJZiB0aGlzIHZhbHVlIHBhcnNlcyB0byBOYU4gb3IgYSB2YWx1ZSBsZXNzIHRoYW4gMVxuICAgICAgICAvLyBUcmlnZ2VyIGFuIGluaXRpYWwgZW1pdCBvZiAnbnVsbCcgaWYgbm8gcGFnZSBzcGVjaWZpZWRcbiAgICAgICAgX3RoaXMuY3VycmVudFBhZ2UgPSAwO1xuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIC8vIFNldCB0aGUgaW5pdGlhbCBwYWdlIGNvdW50XG4gICAgdGhpcy5sb2NhbE51bWJlck9mUGFnZXMgPSB0aGlzLm51bWJlck9mUGFnZXM7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIGJ5IHRoZSByZW5kZXIgZnVuY3Rpb25cbiAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKG51bSwgZXZ0KSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgLy8gSGFuZGxlIGVkZ2UgY2FzZXMgd2hlcmUgbnVtYmVyIG9mIHBhZ2VzIGhhcyBjaGFuZ2VkIChpLmUuIGlmIHBlclBhZ2UgY2hhbmdlcylcbiAgICAgIC8vIFRoaXMgc2hvdWxkIG5vcm1hbGx5IG5vdCBoYXBwZW4sIGJ1dCBqdXN0IGluIGNhc2UuXG4gICAgICBpZiAobnVtID4gdGhpcy5udW1iZXJPZlBhZ2VzKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIG51bSA9IHRoaXMubnVtYmVyT2ZQYWdlcztcbiAgICAgIH0gZWxzZSBpZiAobnVtIDwgMSkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBudW0gPSAxO1xuICAgICAgfSAvLyBVcGRhdGUgdGhlIHYtbW9kZWxcblxuXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gbnVtOyAvLyBFbWl0IGV2ZW50IHRyaWdnZXJlZCBieSB1c2VyIGludGVyYWN0aW9uXG5cbiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIHRoaXMuY3VycmVudFBhZ2UpO1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBLZWVwIHRoZSBjdXJyZW50IGJ1dHRvbiBmb2N1c2VkIGlmIHBvc3NpYmxlXG4gICAgICAgIHZhciB0YXJnZXQgPSBldnQudGFyZ2V0O1xuXG4gICAgICAgIGlmIChpc1Zpc2libGUodGFyZ2V0KSAmJiBfdGhpczIuJGVsLmNvbnRhaW5zKHRhcmdldCkgJiYgdGFyZ2V0LmZvY3VzKSB7XG4gICAgICAgICAgdGFyZ2V0LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3RoaXMyLmZvY3VzQ3VycmVudCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICAgIG1ha2VQYWdlOiBmdW5jdGlvbiBtYWtlUGFnZShwYWdlTnVtKSB7XG4gICAgICByZXR1cm4gcGFnZU51bTtcbiAgICB9LFxuICAgIGxpbmtQcm9wczogZnVuY3Rpb24gbGlua1Byb3BzKHBhZ2VOdW0pIHtcbiAgICAgIC8vIEFsd2F5cyAnIycgZm9yIHBhZ2luYXRpb24gY29tcG9uZW50XG4gICAgICByZXR1cm4ge1xuICAgICAgICBocmVmOiAnIydcbiAgICAgIH07XG4gICAgfVxuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMTgyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///182\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BNavbarToggle; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_listen_on_root__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_config__ = __webpack_require__(4);\n\n\n\n\nvar NAME = 'BNavbarToggle'; // TODO: Switch to using VBToggle directive, will reduce code footprint\n// Events we emit on $root\n\nvar EVENT_TOGGLE = 'bv::toggle::collapse'; // Events we listen to on $root\n\nvar EVENT_STATE = 'bv::collapse::state'; // This private event is NOT to be documented as people should not be using it.\n\nvar EVENT_STATE_SYNC = 'bv::collapse::sync::state'; // @vue/component\n\nvar BNavbarToggle =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_listen_on_root__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__[\"a\" /* default */]],\n props: {\n label: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'label');\n }\n },\n target: {\n type: String,\n required: true\n }\n },\n data: function data() {\n return {\n toggleState: false\n };\n },\n created: function created() {\n this.listenOnRoot(EVENT_STATE, this.handleStateEvt);\n this.listenOnRoot(EVENT_STATE_SYNC, this.handleStateEvt);\n },\n methods: {\n onClick: function onClick(evt) {\n this.$emit('click', evt);\n\n if (!evt.defaultPrevented) {\n this.$root.$emit(EVENT_TOGGLE, this.target);\n }\n },\n handleStateEvt: function handleStateEvt(id, state) {\n if (id === this.target) {\n this.toggleState = state;\n }\n }\n },\n render: function render(h) {\n return h('button', {\n class: ['navbar-toggler'],\n attrs: {\n type: 'button',\n 'aria-label': this.label,\n 'aria-controls': this.target,\n 'aria-expanded': this.toggleState ? 'true' : 'false'\n },\n on: {\n click: this.onClick\n }\n }, [this.normalizeSlot('default') || h('span', {\n class: ['navbar-toggler-icon']\n })]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLXRvZ2dsZS5qcz9mMDliIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDMEI7QUFDQztBQUNMO0FBQ3hELDJCQUEyQjtBQUMzQjs7QUFFQSwwQ0FBMEM7O0FBRTFDLHdDQUF3Qzs7QUFFeEMsbURBQW1EOztBQUU1QztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsdUVBQWlCLEVBQUUsdUVBQWtCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMTgyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IGxpc3Rlbk9uUm9vdE1peGluIGZyb20gJy4uLy4uL21peGlucy9saXN0ZW4tb24tcm9vdCc7XG5pbXBvcnQgbm9ybWFsaXplU2xvdE1peGluIGZyb20gJy4uLy4uL21peGlucy9ub3JtYWxpemUtc2xvdCc7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi8uLi91dGlscy9jb25maWcnO1xudmFyIE5BTUUgPSAnQk5hdmJhclRvZ2dsZSc7IC8vIFRPRE86IFN3aXRjaCB0byB1c2luZyBWQlRvZ2dsZSBkaXJlY3RpdmUsIHdpbGwgcmVkdWNlIGNvZGUgZm9vdHByaW50XG4vLyBFdmVudHMgd2UgZW1pdCBvbiAkcm9vdFxuXG52YXIgRVZFTlRfVE9HR0xFID0gJ2J2Ojp0b2dnbGU6OmNvbGxhcHNlJzsgLy8gRXZlbnRzIHdlIGxpc3RlbiB0byBvbiAkcm9vdFxuXG52YXIgRVZFTlRfU1RBVEUgPSAnYnY6OmNvbGxhcHNlOjpzdGF0ZSc7IC8vIFRoaXMgcHJpdmF0ZSBldmVudCBpcyBOT1QgdG8gYmUgZG9jdW1lbnRlZCBhcyBwZW9wbGUgc2hvdWxkIG5vdCBiZSB1c2luZyBpdC5cblxudmFyIEVWRU5UX1NUQVRFX1NZTkMgPSAnYnY6OmNvbGxhcHNlOjpzeW5jOjpzdGF0ZSc7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQk5hdmJhclRvZ2dsZSA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogTkFNRSxcbiAgbWl4aW5zOiBbbGlzdGVuT25Sb290TWl4aW4sIG5vcm1hbGl6ZVNsb3RNaXhpbl0sXG4gIHByb3BzOiB7XG4gICAgbGFiZWw6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdsYWJlbCcpO1xuICAgICAgfVxuICAgIH0sXG4gICAgdGFyZ2V0OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdG9nZ2xlU3RhdGU6IGZhbHNlXG4gICAgfTtcbiAgfSxcbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcbiAgICB0aGlzLmxpc3Rlbk9uUm9vdChFVkVOVF9TVEFURSwgdGhpcy5oYW5kbGVTdGF0ZUV2dCk7XG4gICAgdGhpcy5saXN0ZW5PblJvb3QoRVZFTlRfU1RBVEVfU1lOQywgdGhpcy5oYW5kbGVTdGF0ZUV2dCk7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKGV2dCkge1xuICAgICAgdGhpcy4kZW1pdCgnY2xpY2snLCBldnQpO1xuXG4gICAgICBpZiAoIWV2dC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIHRoaXMuJHJvb3QuJGVtaXQoRVZFTlRfVE9HR0xFLCB0aGlzLnRhcmdldCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVTdGF0ZUV2dDogZnVuY3Rpb24gaGFuZGxlU3RhdGVFdnQoaWQsIHN0YXRlKSB7XG4gICAgICBpZiAoaWQgPT09IHRoaXMudGFyZ2V0KSB7XG4gICAgICAgIHRoaXMudG9nZ2xlU3RhdGUgPSBzdGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICByZXR1cm4gaCgnYnV0dG9uJywge1xuICAgICAgY2xhc3M6IFsnbmF2YmFyLXRvZ2dsZXInXSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAnYXJpYS1sYWJlbCc6IHRoaXMubGFiZWwsXG4gICAgICAgICdhcmlhLWNvbnRyb2xzJzogdGhpcy50YXJnZXQsXG4gICAgICAgICdhcmlhLWV4cGFuZGVkJzogdGhpcy50b2dnbGVTdGF0ZSA/ICd0cnVlJyA6ICdmYWxzZSdcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAgICBjbGljazogdGhpcy5vbkNsaWNrXG4gICAgICB9XG4gICAgfSwgW3RoaXMubm9ybWFsaXplU2xvdCgnZGVmYXVsdCcpIHx8IGgoJ3NwYW4nLCB7XG4gICAgICBjbGFzczogWyduYXZiYXItdG9nZ2xlci1pY29uJ11cbiAgICB9KV0pO1xuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL25hdmJhci9uYXZiYXItdG9nZ2xlLmpzXG4vLyBtb2R1bGUgaWQgPSAxODJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///182\n"); /***/ }), /* 183 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export props */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_range__ = __webpack_require__(184);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_to_string__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_warn__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__components_link_link__ = __webpack_require__(14);\n\n\n\n\n\n\n\n // Common props, computed, data, render function, and methods\n// for <b-pagination> and <b-pagination-nav>\n// Threshold of limit size when we start/stop showing ellipsis\n\nvar ELLIPSIS_THRESHOLD = 3; // Default # of buttons limit\n\nvar DEFAULT_LIMIT = 5; // Make an array of N to N+X\n\nvar makePageArray = function makePageArray(startNumber, numberOfPages) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_range__[\"a\" /* default */])(numberOfPages).map(function (val, i) {\n return {\n number: startNumber + i,\n classes: null\n };\n });\n}; // Sanitize the provided limit value (converting to a number)\n\n\nvar sanitizeLimit = function sanitizeLimit(val) {\n var limit = parseInt(val, 10) || 1;\n return limit < 1 ? DEFAULT_LIMIT : limit;\n}; // Sanitize the provided current page number (converting to a number)\n\n\nvar sanitizeCurrentPage = function sanitizeCurrentPage(val, numberOfPages) {\n var page = parseInt(val, 10) || 1;\n return page > numberOfPages ? numberOfPages : page < 1 ? 1 : page;\n}; // Links don't normally respond to SPACE, so we add that\n// functionality via this handler\n\n\nvar onSpaceKey = function onSpaceKey(evt) {\n if (evt.keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].SPACE) {\n evt.preventDefault(); // Stop page from scrolling\n\n evt.stopImmediatePropagation();\n evt.stopPropagation(); // Trigger the click event on the link\n\n evt.currentTarget.click();\n return false;\n }\n};\n\nvar props = {\n disabled: {\n type: Boolean,\n default: false\n },\n value: {\n type: [Number, String],\n default: null,\n validator: function validator(value)\n /* istanbul ignore next */\n {\n var num = parseInt(value, 10);\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_4__utils_inspect__[\"g\" /* isNull */])(value) && (isNaN(num) || num < 1)) {\n Object(__WEBPACK_IMPORTED_MODULE_3__utils_warn__[\"a\" /* default */])('pagination: v-model value must be a number greater than 0');\n return false;\n }\n\n return true;\n }\n },\n limit: {\n type: [Number, String],\n default: DEFAULT_LIMIT,\n validator: function validator(value)\n /* istanbul ignore next */\n {\n var num = parseInt(value, 10);\n\n if (isNaN(num) || num < 1) {\n Object(__WEBPACK_IMPORTED_MODULE_3__utils_warn__[\"a\" /* default */])('pagination: prop \"limit\" must be a number greater than 0');\n return false;\n }\n\n return true;\n }\n },\n align: {\n type: String,\n default: 'left'\n },\n hideGotoEndButtons: {\n type: Boolean,\n default: false\n },\n ariaLabel: {\n type: String,\n default: 'Pagination'\n },\n labelFirstPage: {\n type: String,\n default: 'Go to first page'\n },\n firstText: {\n type: String,\n default: \"\\xAB\" // '«'\n\n },\n labelPrevPage: {\n type: String,\n default: 'Go to previous page'\n },\n prevText: {\n type: String,\n default: \"\\u2039\" // '‹'\n\n },\n labelNextPage: {\n type: String,\n default: 'Go to next page'\n },\n nextText: {\n type: String,\n default: \"\\u203A\" // '›'\n\n },\n labelLastPage: {\n type: String,\n default: 'Go to last page'\n },\n lastText: {\n type: String,\n default: \"\\xBB\" // '»'\n\n },\n labelPage: {\n type: [String, Function],\n default: 'Go to page'\n },\n hideEllipsis: {\n type: Boolean,\n default: false\n },\n ellipsisText: {\n type: String,\n default: \"\\u2026\" // '…'\n\n }\n}; // @vue/component\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n mixins: [__WEBPACK_IMPORTED_MODULE_6__mixins_normalize_slot__[\"a\" /* default */]],\n model: {\n prop: 'value',\n event: 'input'\n },\n props: props,\n data: function data() {\n var curr = parseInt(this.value, 10);\n return {\n // -1 signifies no page initially selected\n currentPage: curr > 0 ? curr : -1,\n localNumberOfPages: 1,\n localLimit: DEFAULT_LIMIT\n };\n },\n computed: {\n btnSize: function btnSize() {\n return this.size ? \"pagination-\".concat(this.size) : '';\n },\n alignment: function alignment() {\n var align = this.align;\n\n if (align === 'center') {\n return 'justify-content-center';\n } else if (align === 'end' || align === 'right') {\n return 'justify-content-end';\n } else if (align === 'fill') {\n // The page-items will also have 'flex-fill' added.\n // We ad text centering to make the button appearance better in fill mode.\n return 'text-center';\n }\n\n return '';\n },\n computedCurrentPage: function computedCurrentPage() {\n return sanitizeCurrentPage(this.currentPage, this.localNumberOfPages);\n },\n paginationParams: function paginationParams() {\n // Determine if we should show the the ellipsis\n var limit = this.limit;\n var numberOfPages = this.localNumberOfPages;\n var currentPage = this.computedCurrentPage;\n var hideEllipsis = this.hideEllipsis;\n var showFirstDots = false;\n var showLastDots = false;\n var numberOfLinks = limit;\n var startNumber = 1;\n\n if (numberOfPages <= limit) {\n // Special Case: Less pages available than the limit of displayed pages\n numberOfLinks = numberOfPages;\n } else if (currentPage < limit - 1 && limit > ELLIPSIS_THRESHOLD) {\n // We are near the beginning of the page list\n if (!hideEllipsis) {\n showLastDots = true;\n numberOfLinks = limit - 1;\n }\n } else if (numberOfPages - currentPage + 2 < limit && limit > ELLIPSIS_THRESHOLD) {\n // We are near the end of the list\n if (!hideEllipsis) {\n numberOfLinks = limit - 1;\n showFirstDots = true;\n }\n\n startNumber = numberOfPages - numberOfLinks + 1;\n } else {\n // We are somewhere in the middle of the page list\n if (limit > ELLIPSIS_THRESHOLD && !hideEllipsis) {\n numberOfLinks = limit - 2;\n showFirstDots = showLastDots = true;\n }\n\n startNumber = currentPage - Math.floor(numberOfLinks / 2);\n } // Sanity checks\n\n\n if (startNumber < 1) {\n /* istanbul ignore next */\n startNumber = 1;\n } else if (startNumber > numberOfPages - numberOfLinks) {\n startNumber = numberOfPages - numberOfLinks + 1;\n }\n\n return {\n showFirstDots: showFirstDots,\n showLastDots: showLastDots,\n numberOfLinks: numberOfLinks,\n startNumber: startNumber\n };\n },\n pageList: function pageList() {\n // Generates the pageList array\n var _this$paginationParam = this.paginationParams,\n numberOfLinks = _this$paginationParam.numberOfLinks,\n startNumber = _this$paginationParam.startNumber;\n var currentPage = this.computedCurrentPage; // Generate list of page numbers\n\n var pages = makePageArray(startNumber, numberOfLinks); // We limit to a total of 3 page buttons on XS screens\n // So add classes to page links to hide them for XS breakpoint\n // Note: Ellipsis will also be hidden on XS screens\n // TODO: Make this visual limit configurable based on breakpoint(s)\n\n if (pages.length > 3) {\n var idx = currentPage - startNumber; // THe following is a bootstrap-vue custom utility class\n\n var classes = 'bv-d-xs-down-none';\n\n if (idx === 0) {\n // Keep leftmost 3 buttons visible when current page is first page\n for (var i = 3; i < pages.length; i++) {\n pages[i].classes = classes;\n }\n } else if (idx === pages.length - 1) {\n // Keep rightmost 3 buttons visible when current page is last page\n for (var _i = 0; _i < pages.length - 3; _i++) {\n pages[_i].classes = classes;\n }\n } else {\n // Hide all except current page, current page - 1 and current page + 1\n for (var _i2 = 0; _i2 < idx - 1; _i2++) {\n // hide some left button(s)\n pages[_i2].classes = classes;\n }\n\n for (var _i3 = pages.length - 1; _i3 > idx + 1; _i3--) {\n // hide some right button(s)\n pages[_i3].classes = classes;\n }\n }\n }\n\n return pages;\n }\n },\n watch: {\n value: function value(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.currentPage = sanitizeCurrentPage(newValue, this.localNumberOfPages);\n }\n },\n currentPage: function currentPage(newValue, oldValue) {\n if (newValue !== oldValue) {\n // Emit null if no page selected\n this.$emit('input', newValue > 0 ? newValue : null);\n }\n },\n limit: function limit(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.localLimit = sanitizeLimit(newValue);\n }\n }\n },\n created: function created() {\n var _this = this;\n\n // Set our default values in data\n this.localLimit = sanitizeLimit(this.limit);\n this.$nextTick(function () {\n // Sanity check\n _this.currentPage = _this.currentPage > _this.localNumberOfPages ? _this.localNumberOfPages : _this.currentPage;\n });\n },\n methods: {\n getButtons: function getButtons() {\n // Return only buttons that are visible\n return Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"y\" /* selectAll */])('a.page-link', this.$el).filter(function (btn) {\n return Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"p\" /* isVisible */])(btn);\n });\n },\n setBtnFocus: function setBtnFocus(btn) {\n btn.focus();\n },\n focusCurrent: function focusCurrent() {\n var _this2 = this;\n\n // We do this in next tick to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this2.getButtons().find(function (el) {\n return parseInt(Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"g\" /* getAttr */])(el, 'aria-posinset'), 10) === _this2.computedCurrentPage;\n });\n\n if (btn && btn.focus) {\n _this2.setBtnFocus(btn);\n } else {\n // Fallback if current page is not in button list\n _this2.focusFirst();\n }\n });\n },\n focusFirst: function focusFirst() {\n var _this3 = this;\n\n // We do this in next tick to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this3.getButtons().find(function (el) {\n return !Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"n\" /* isDisabled */])(el);\n });\n\n if (btn && btn.focus && btn !== document.activeElement) {\n _this3.setBtnFocus(btn);\n }\n });\n },\n focusLast: function focusLast() {\n var _this4 = this;\n\n // We do this in next tick to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this4.getButtons().reverse().find(function (el) {\n return !Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"n\" /* isDisabled */])(el);\n });\n\n if (btn && btn.focus && btn !== document.activeElement) {\n _this4.setBtnFocus(btn);\n }\n });\n },\n focusPrev: function focusPrev() {\n var _this5 = this;\n\n // We do this in next tick to ensure buttons have finished rendering\n this.$nextTick(function () {\n var buttons = _this5.getButtons();\n\n var idx = buttons.indexOf(document.activeElement);\n\n if (idx > 0 && !Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"n\" /* isDisabled */])(buttons[idx - 1]) && buttons[idx - 1].focus) {\n _this5.setBtnFocus(buttons[idx - 1]);\n }\n });\n },\n focusNext: function focusNext() {\n var _this6 = this;\n\n // We do this in next tick to ensure buttons have finished rendering\n this.$nextTick(function () {\n var buttons = _this6.getButtons();\n\n var idx = buttons.indexOf(document.activeElement);\n var cnt = buttons.length - 1;\n\n if (idx < cnt && !Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"n\" /* isDisabled */])(buttons[idx + 1]) && buttons[idx + 1].focus) {\n _this6.setBtnFocus(buttons[idx + 1]);\n }\n });\n }\n },\n render: function render(h) {\n var _this7 = this;\n\n var buttons = [];\n var numberOfPages = this.localNumberOfPages;\n var disabled = this.disabled;\n var _this$paginationParam2 = this.paginationParams,\n showFirstDots = _this$paginationParam2.showFirstDots,\n showLastDots = _this$paginationParam2.showLastDots;\n var currentPage = this.computedCurrentPage;\n var fill = this.align === 'fill'; // Helper function and flag\n\n var isActivePage = function isActivePage(pageNum) {\n return pageNum === currentPage;\n };\n\n var noCurrPage = this.currentPage < 1; // Factory function for prev/next/first/last buttons\n\n var makeEndBtn = function makeEndBtn(linkTo, ariaLabel, btnSlot, btnText, pageTest, key) {\n var isDisabled = disabled || isActivePage(pageTest) || noCurrPage || linkTo < 1 || linkTo > numberOfPages;\n var pageNum = linkTo < 1 ? 1 : linkTo > numberOfPages ? numberOfPages : linkTo;\n var scope = {\n disabled: isDisabled,\n page: pageNum,\n index: pageNum - 1\n };\n var btnContent = _this7.normalizeSlot(btnSlot, scope) || Object(__WEBPACK_IMPORTED_MODULE_2__utils_to_string__[\"a\" /* default */])(btnText) || h();\n var inner = h(isDisabled ? 'span' : __WEBPACK_IMPORTED_MODULE_7__components_link_link__[\"a\" /* BLink */], {\n staticClass: 'page-link',\n props: isDisabled ? {} : _this7.linkProps(linkTo),\n attrs: {\n role: 'menuitem',\n tabindex: isDisabled ? null : '-1',\n 'aria-label': ariaLabel,\n 'aria-controls': _this7.ariaControls || null,\n 'aria-disabled': isDisabled ? 'true' : null\n },\n on: isDisabled ? {} : {\n click: function click(evt) {\n _this7.onClick(linkTo, evt);\n },\n keydown: onSpaceKey\n }\n }, [btnContent]);\n return h('li', {\n key: key,\n staticClass: 'page-item',\n class: {\n disabled: isDisabled,\n 'flex-fill': fill\n },\n attrs: {\n role: 'presentation',\n 'aria-hidden': isDisabled ? 'true' : null\n }\n }, [inner]);\n }; // Ellipsis factory\n\n\n var makeEllipsis = function makeEllipsis(isLast) {\n return h('li', {\n key: \"ellipsis-\".concat(isLast ? 'last' : 'first'),\n staticClass: 'page-item',\n class: ['disabled', 'bv-d-xs-down-none', fill ? 'flex-fill' : ''],\n attrs: {\n role: 'separator'\n }\n }, [h('span', {\n staticClass: 'page-link'\n }, [_this7.normalizeSlot('ellipsis-text') || Object(__WEBPACK_IMPORTED_MODULE_2__utils_to_string__[\"a\" /* default */])(_this7.ellipsisText) || h()])]);\n }; // Goto First Page button bookend\n\n\n buttons.push(this.hideGotoEndButtons ? h() : makeEndBtn(1, this.labelFirstPage, 'first-text', this.firstText, 1, 'bookend-goto-first')); // Goto Previous page button bookend\n\n buttons.push(makeEndBtn(currentPage - 1, this.labelPrevPage, 'prev-text', this.prevText, 1, 'bookend-goto-prev')); // First Ellipsis Bookend\n\n buttons.push(showFirstDots ? makeEllipsis(false) : h()); // Individual Page links\n\n this.pageList.forEach(function (page, idx) {\n var active = isActivePage(page.number) && !noCurrPage; // Active page will have tabindex of 0, or if no current page and first page button\n\n var tabIndex = disabled ? null : active || noCurrPage && idx === 0 ? '0' : '-1';\n var attrs = {\n role: 'menuitemradio',\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-controls': _this7.ariaControls || null,\n 'aria-label': Object(__WEBPACK_IMPORTED_MODULE_4__utils_inspect__[\"f\" /* isFunction */])(_this7.labelPage) ? _this7.labelPage(page.number) : \"\".concat(_this7.labelPage, \" \").concat(page.number),\n 'aria-checked': active ? 'true' : 'false',\n 'aria-posinset': page.number,\n 'aria-setsize': numberOfPages,\n // ARIA \"roving tabindex\" method\n tabindex: tabIndex\n };\n var btnContent = Object(__WEBPACK_IMPORTED_MODULE_2__utils_to_string__[\"a\" /* default */])(_this7.makePage(page.number));\n var scope = {\n page: page.number,\n index: page.number - 1,\n content: btnContent,\n active: active,\n disabled: disabled\n };\n var inner = h(disabled ? 'span' : __WEBPACK_IMPORTED_MODULE_7__components_link_link__[\"a\" /* BLink */], {\n props: disabled ? {} : _this7.linkProps(page.number),\n staticClass: 'page-link',\n attrs: attrs,\n on: disabled ? {} : {\n click: function click(evt) {\n _this7.onClick(page.number, evt);\n },\n keydown: onSpaceKey\n }\n }, [_this7.normalizeSlot('page', scope) || btnContent]);\n buttons.push(h('li', {\n key: \"page-\".concat(page.number),\n staticClass: 'page-item',\n class: [{\n disabled: disabled,\n active: active,\n 'flex-fill': fill\n }, page.classes],\n attrs: {\n role: 'presentation'\n }\n }, [inner]));\n }); // Last Ellipsis Bookend\n\n buttons.push(showLastDots ? makeEllipsis(true) : h()); // Goto Next page button bookend\n\n buttons.push(makeEndBtn(currentPage + 1, this.labelNextPage, 'next-text', this.nextText, numberOfPages, 'bookend-goto-next')); // Goto Last Page button bookend\n\n buttons.push(this.hideGotoEndButtons ? h() : makeEndBtn(numberOfPages, this.labelLastPage, 'last-text', this.lastText, numberOfPages, 'bookend-goto-last')); // Assemble the pagination buttons\n\n var pagination = h('ul', {\n ref: 'ul',\n staticClass: 'pagination',\n class: ['b-pagination', this.btnSize, this.alignment],\n attrs: {\n role: 'menubar',\n 'aria-disabled': disabled ? 'true' : 'false',\n 'aria-label': this.ariaLabel || null\n },\n on: {\n keydown: function keydown(evt) {\n var keyCode = evt.keyCode;\n var shift = evt.shiftKey;\n\n if (keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].LEFT) {\n evt.preventDefault();\n shift ? _this7.focusFirst() : _this7.focusPrev();\n } else if (keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].RIGHT) {\n evt.preventDefault();\n shift ? _this7.focusLast() : _this7.focusNext();\n }\n }\n }\n }, buttons); // if we are pagination-nav, wrap in '<nav>' wrapper\n\n if (this.isNav) {\n return h('nav', {\n attrs: {\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-hidden': disabled ? 'true' : 'false'\n }\n }, [pagination]);\n } else {\n return pagination;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vbWl4aW5zL3BhZ2luYXRpb24uanM/ZTc3NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEM7QUFDUDtBQUNPO0FBQ1Q7QUFDcUI7QUFDbUI7QUFDZjtBQUNWO0FBQ2hEO0FBQ0E7O0FBRUEsMkJBQTJCOztBQUUzQixzQkFBc0I7O0FBRXRCO0FBQ0EsU0FBUyxxRUFBSztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjs7O0FBR0E7QUFDQSxzQkFBc0IsaUVBQVE7QUFDOUIseUJBQXlCOztBQUV6QjtBQUNBLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxzRUFBTTtBQUNqQixRQUFRLG9FQUFJO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSxvRUFBSTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRWE7QUFDZixXQUFXLHVFQUFrQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRDs7QUFFakQsNERBQTREO0FBQzVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRDQUE0Qzs7QUFFNUM7O0FBRUE7QUFDQTtBQUNBLHlCQUF5QixrQkFBa0I7QUFDM0M7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLDBCQUEwQix1QkFBdUI7QUFDakQ7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLDJCQUEyQixlQUFlO0FBQzFDO0FBQ0E7QUFDQTs7QUFFQSwwQ0FBMEMsZUFBZTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLHFFQUFTO0FBQ3RCLGVBQWUscUVBQVM7QUFDeEIsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLG1FQUFPO0FBQ2pDLFNBQVM7O0FBRVQ7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHNFQUFVO0FBQzVCLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixzRUFBVTtBQUM1QixTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsd0JBQXdCLHNFQUFVO0FBQ2xDO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsMEJBQTBCLHNFQUFVO0FBQ3BDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQzs7QUFFckM7QUFDQTtBQUNBOztBQUVBLDBDQUEwQzs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtEQUErRCx5RUFBUTtBQUN2RSwwQ0FBMEMsb0VBQUs7QUFDL0M7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLE1BQU07OztBQUdOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPLDRDQUE0Qyx5RUFBUTtBQUMzRCxNQUFNOzs7QUFHTiw0SUFBNEk7O0FBRTVJLHNIQUFzSDs7QUFFdEgsNERBQTREOztBQUU1RDtBQUNBLDREQUE0RDs7QUFFNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiwwRUFBVTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIseUVBQVE7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0Msb0VBQUs7QUFDN0MsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVAsMERBQTBEOztBQUUxRCxrSUFBa0k7O0FBRWxJLGdLQUFnSzs7QUFFaEs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEIsaUVBQVE7QUFDbEM7QUFDQTtBQUNBLFdBQVcsc0JBQXNCLGlFQUFRO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLFdBQVc7O0FBRWhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIxODMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgS2V5Q29kZXMgZnJvbSAnLi4vdXRpbHMva2V5LWNvZGVzJztcbmltcG9ydCByYW5nZSBmcm9tICcuLi91dGlscy9yYW5nZSc7XG5pbXBvcnQgdG9TdHJpbmcgZnJvbSAnLi4vdXRpbHMvdG8tc3RyaW5nJztcbmltcG9ydCB3YXJuIGZyb20gJy4uL3V0aWxzL3dhcm4nO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiwgaXNOdWxsIH0gZnJvbSAnLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgeyBpc1Zpc2libGUsIGlzRGlzYWJsZWQsIHNlbGVjdEFsbCwgZ2V0QXR0ciB9IGZyb20gJy4uL3V0aWxzL2RvbSc7XG5pbXBvcnQgbm9ybWFsaXplU2xvdE1peGluIGZyb20gJy4uL21peGlucy9ub3JtYWxpemUtc2xvdCc7XG5pbXBvcnQgeyBCTGluayB9IGZyb20gJy4uL2NvbXBvbmVudHMvbGluay9saW5rJzsgLy8gQ29tbW9uIHByb3BzLCBjb21wdXRlZCwgZGF0YSwgcmVuZGVyIGZ1bmN0aW9uLCBhbmQgbWV0aG9kc1xuLy8gZm9yIDxiLXBhZ2luYXRpb24+IGFuZCA8Yi1wYWdpbmF0aW9uLW5hdj5cbi8vIFRocmVzaG9sZCBvZiBsaW1pdCBzaXplIHdoZW4gd2Ugc3RhcnQvc3RvcCBzaG93aW5nIGVsbGlwc2lzXG5cbnZhciBFTExJUFNJU19USFJFU0hPTEQgPSAzOyAvLyBEZWZhdWx0ICMgb2YgYnV0dG9ucyBsaW1pdFxuXG52YXIgREVGQVVMVF9MSU1JVCA9IDU7IC8vIE1ha2UgYW4gYXJyYXkgb2YgTiB0byBOK1hcblxudmFyIG1ha2VQYWdlQXJyYXkgPSBmdW5jdGlvbiBtYWtlUGFnZUFycmF5KHN0YXJ0TnVtYmVyLCBudW1iZXJPZlBhZ2VzKSB7XG4gIHJldHVybiByYW5nZShudW1iZXJPZlBhZ2VzKS5tYXAoZnVuY3Rpb24gKHZhbCwgaSkge1xuICAgIHJldHVybiB7XG4gICAgICBudW1iZXI6IHN0YXJ0TnVtYmVyICsgaSxcbiAgICAgIGNsYXNzZXM6IG51bGxcbiAgICB9O1xuICB9KTtcbn07IC8vIFNhbml0aXplIHRoZSBwcm92aWRlZCBsaW1pdCB2YWx1ZSAoY29udmVydGluZyB0byBhIG51bWJlcilcblxuXG52YXIgc2FuaXRpemVMaW1pdCA9IGZ1bmN0aW9uIHNhbml0aXplTGltaXQodmFsKSB7XG4gIHZhciBsaW1pdCA9IHBhcnNlSW50KHZhbCwgMTApIHx8IDE7XG4gIHJldHVybiBsaW1pdCA8IDEgPyBERUZBVUxUX0xJTUlUIDogbGltaXQ7XG59OyAvLyBTYW5pdGl6ZSB0aGUgcHJvdmlkZWQgY3VycmVudCBwYWdlIG51bWJlciAoY29udmVydGluZyB0byBhIG51bWJlcilcblxuXG52YXIgc2FuaXRpemVDdXJyZW50UGFnZSA9IGZ1bmN0aW9uIHNhbml0aXplQ3VycmVudFBhZ2UodmFsLCBudW1iZXJPZlBhZ2VzKSB7XG4gIHZhciBwYWdlID0gcGFyc2VJbnQodmFsLCAxMCkgfHwgMTtcbiAgcmV0dXJuIHBhZ2UgPiBudW1iZXJPZlBhZ2VzID8gbnVtYmVyT2ZQYWdlcyA6IHBhZ2UgPCAxID8gMSA6IHBhZ2U7XG59OyAvLyBMaW5rcyBkb24ndCBub3JtYWxseSByZXNwb25kIHRvIFNQQUNFLCBzbyB3ZSBhZGQgdGhhdFxuLy8gZnVuY3Rpb25hbGl0eSB2aWEgdGhpcyBoYW5kbGVyXG5cblxudmFyIG9uU3BhY2VLZXkgPSBmdW5jdGlvbiBvblNwYWNlS2V5KGV2dCkge1xuICBpZiAoZXZ0LmtleUNvZGUgPT09IEtleUNvZGVzLlNQQUNFKSB7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7IC8vIFN0b3AgcGFnZSBmcm9tIHNjcm9sbGluZ1xuXG4gICAgZXZ0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gVHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIGxpbmtcblxuICAgIGV2dC5jdXJyZW50VGFyZ2V0LmNsaWNrKCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5leHBvcnQgdmFyIHByb3BzID0ge1xuICBkaXNhYmxlZDoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgdmFsdWU6IHtcbiAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxuICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3IodmFsdWUpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB7XG4gICAgICB2YXIgbnVtID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcblxuICAgICAgaWYgKCFpc051bGwodmFsdWUpICYmIChpc05hTihudW0pIHx8IG51bSA8IDEpKSB7XG4gICAgICAgIHdhcm4oJ3BhZ2luYXRpb246IHYtbW9kZWwgdmFsdWUgbXVzdCBiZSBhIG51bWJlciBncmVhdGVyIHRoYW4gMCcpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSxcbiAgbGltaXQ6IHtcbiAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxuICAgIGRlZmF1bHQ6IERFRkFVTFRfTElNSVQsXG4gICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3IodmFsdWUpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB7XG4gICAgICB2YXIgbnVtID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcblxuICAgICAgaWYgKGlzTmFOKG51bSkgfHwgbnVtIDwgMSkge1xuICAgICAgICB3YXJuKCdwYWdpbmF0aW9uOiBwcm9wIFwibGltaXRcIiBtdXN0IGJlIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAwJyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9LFxuICBhbGlnbjoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAnbGVmdCdcbiAgfSxcbiAgaGlkZUdvdG9FbmRCdXR0b25zOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBhcmlhTGFiZWw6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ1BhZ2luYXRpb24nXG4gIH0sXG4gIGxhYmVsRmlyc3RQYWdlOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdHbyB0byBmaXJzdCBwYWdlJ1xuICB9LFxuICBmaXJzdFRleHQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogXCJcXHhBQlwiIC8vICfCqydcblxuICB9LFxuICBsYWJlbFByZXZQYWdlOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdHbyB0byBwcmV2aW91cyBwYWdlJ1xuICB9LFxuICBwcmV2VGV4dDoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBcIlxcdTIwMzlcIiAvLyAn4oC5J1xuXG4gIH0sXG4gIGxhYmVsTmV4dFBhZ2U6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ0dvIHRvIG5leHQgcGFnZSdcbiAgfSxcbiAgbmV4dFRleHQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogXCJcXHUyMDNBXCIgLy8gJ+KAuidcblxuICB9LFxuICBsYWJlbExhc3RQYWdlOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdHbyB0byBsYXN0IHBhZ2UnXG4gIH0sXG4gIGxhc3RUZXh0OiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IFwiXFx4QkJcIiAvLyAnwrsnXG5cbiAgfSxcbiAgbGFiZWxQYWdlOiB7XG4gICAgdHlwZTogW1N0cmluZywgRnVuY3Rpb25dLFxuICAgIGRlZmF1bHQ6ICdHbyB0byBwYWdlJ1xuICB9LFxuICBoaWRlRWxsaXBzaXM6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIGVsbGlwc2lzVGV4dDoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBcIlxcdTIwMjZcIiAvLyAn4oCmJ1xuXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbWl4aW5zOiBbbm9ybWFsaXplU2xvdE1peGluXSxcbiAgbW9kZWw6IHtcbiAgICBwcm9wOiAndmFsdWUnLFxuICAgIGV2ZW50OiAnaW5wdXQnXG4gIH0sXG4gIHByb3BzOiBwcm9wcyxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICB2YXIgY3VyciA9IHBhcnNlSW50KHRoaXMudmFsdWUsIDEwKTtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gLTEgc2lnbmlmaWVzIG5vIHBhZ2UgaW5pdGlhbGx5IHNlbGVjdGVkXG4gICAgICBjdXJyZW50UGFnZTogY3VyciA+IDAgPyBjdXJyIDogLTEsXG4gICAgICBsb2NhbE51bWJlck9mUGFnZXM6IDEsXG4gICAgICBsb2NhbExpbWl0OiBERUZBVUxUX0xJTUlUXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBidG5TaXplOiBmdW5jdGlvbiBidG5TaXplKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2l6ZSA/IFwicGFnaW5hdGlvbi1cIi5jb25jYXQodGhpcy5zaXplKSA6ICcnO1xuICAgIH0sXG4gICAgYWxpZ25tZW50OiBmdW5jdGlvbiBhbGlnbm1lbnQoKSB7XG4gICAgICB2YXIgYWxpZ24gPSB0aGlzLmFsaWduO1xuXG4gICAgICBpZiAoYWxpZ24gPT09ICdjZW50ZXInKSB7XG4gICAgICAgIHJldHVybiAnanVzdGlmeS1jb250ZW50LWNlbnRlcic7XG4gICAgICB9IGVsc2UgaWYgKGFsaWduID09PSAnZW5kJyB8fCBhbGlnbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICByZXR1cm4gJ2p1c3RpZnktY29udGVudC1lbmQnO1xuICAgICAgfSBlbHNlIGlmIChhbGlnbiA9PT0gJ2ZpbGwnKSB7XG4gICAgICAgIC8vIFRoZSBwYWdlLWl0ZW1zIHdpbGwgYWxzbyBoYXZlICdmbGV4LWZpbGwnIGFkZGVkLlxuICAgICAgICAvLyBXZSBhZCB0ZXh0IGNlbnRlcmluZyB0byBtYWtlIHRoZSBidXR0b24gYXBwZWFyYW5jZSBiZXR0ZXIgaW4gZmlsbCBtb2RlLlxuICAgICAgICByZXR1cm4gJ3RleHQtY2VudGVyJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICcnO1xuICAgIH0sXG4gICAgY29tcHV0ZWRDdXJyZW50UGFnZTogZnVuY3Rpb24gY29tcHV0ZWRDdXJyZW50UGFnZSgpIHtcbiAgICAgIHJldHVybiBzYW5pdGl6ZUN1cnJlbnRQYWdlKHRoaXMuY3VycmVudFBhZ2UsIHRoaXMubG9jYWxOdW1iZXJPZlBhZ2VzKTtcbiAgICB9LFxuICAgIHBhZ2luYXRpb25QYXJhbXM6IGZ1bmN0aW9uIHBhZ2luYXRpb25QYXJhbXMoKSB7XG4gICAgICAvLyBEZXRlcm1pbmUgaWYgd2Ugc2hvdWxkIHNob3cgdGhlIHRoZSBlbGxpcHNpc1xuICAgICAgdmFyIGxpbWl0ID0gdGhpcy5saW1pdDtcbiAgICAgIHZhciBudW1iZXJPZlBhZ2VzID0gdGhpcy5sb2NhbE51bWJlck9mUGFnZXM7XG4gICAgICB2YXIgY3VycmVudFBhZ2UgPSB0aGlzLmNvbXB1dGVkQ3VycmVudFBhZ2U7XG4gICAgICB2YXIgaGlkZUVsbGlwc2lzID0gdGhpcy5oaWRlRWxsaXBzaXM7XG4gICAgICB2YXIgc2hvd0ZpcnN0RG90cyA9IGZhbHNlO1xuICAgICAgdmFyIHNob3dMYXN0RG90cyA9IGZhbHNlO1xuICAgICAgdmFyIG51bWJlck9mTGlua3MgPSBsaW1pdDtcbiAgICAgIHZhciBzdGFydE51bWJlciA9IDE7XG5cbiAgICAgIGlmIChudW1iZXJPZlBhZ2VzIDw9IGxpbWl0KSB7XG4gICAgICAgIC8vIFNwZWNpYWwgQ2FzZTogTGVzcyBwYWdlcyBhdmFpbGFibGUgdGhhbiB0aGUgbGltaXQgb2YgZGlzcGxheWVkIHBhZ2VzXG4gICAgICAgIG51bWJlck9mTGlua3MgPSBudW1iZXJPZlBhZ2VzO1xuICAgICAgfSBlbHNlIGlmIChjdXJyZW50UGFnZSA8IGxpbWl0IC0gMSAmJiBsaW1pdCA+IEVMTElQU0lTX1RIUkVTSE9MRCkge1xuICAgICAgICAvLyBXZSBhcmUgbmVhciB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYWdlIGxpc3RcbiAgICAgICAgaWYgKCFoaWRlRWxsaXBzaXMpIHtcbiAgICAgICAgICBzaG93TGFzdERvdHMgPSB0cnVlO1xuICAgICAgICAgIG51bWJlck9mTGlua3MgPSBsaW1pdCAtIDE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobnVtYmVyT2ZQYWdlcyAtIGN1cnJlbnRQYWdlICsgMiA8IGxpbWl0ICYmIGxpbWl0ID4gRUxMSVBTSVNfVEhSRVNIT0xEKSB7XG4gICAgICAgIC8vIFdlIGFyZSBuZWFyIHRoZSBlbmQgb2YgdGhlIGxpc3RcbiAgICAgICAgaWYgKCFoaWRlRWxsaXBzaXMpIHtcbiAgICAgICAgICBudW1iZXJPZkxpbmtzID0gbGltaXQgLSAxO1xuICAgICAgICAgIHNob3dGaXJzdERvdHMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnROdW1iZXIgPSBudW1iZXJPZlBhZ2VzIC0gbnVtYmVyT2ZMaW5rcyArIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSBhcmUgc29tZXdoZXJlIGluIHRoZSBtaWRkbGUgb2YgdGhlIHBhZ2UgbGlzdFxuICAgICAgICBpZiAobGltaXQgPiBFTExJUFNJU19USFJFU0hPTEQgJiYgIWhpZGVFbGxpcHNpcykge1xuICAgICAgICAgIG51bWJlck9mTGlua3MgPSBsaW1pdCAtIDI7XG4gICAgICAgICAgc2hvd0ZpcnN0RG90cyA9IHNob3dMYXN0RG90cyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBzdGFydE51bWJlciA9IGN1cnJlbnRQYWdlIC0gTWF0aC5mbG9vcihudW1iZXJPZkxpbmtzIC8gMik7XG4gICAgICB9IC8vIFNhbml0eSBjaGVja3NcblxuXG4gICAgICBpZiAoc3RhcnROdW1iZXIgPCAxKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHN0YXJ0TnVtYmVyID0gMTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhcnROdW1iZXIgPiBudW1iZXJPZlBhZ2VzIC0gbnVtYmVyT2ZMaW5rcykge1xuICAgICAgICBzdGFydE51bWJlciA9IG51bWJlck9mUGFnZXMgLSBudW1iZXJPZkxpbmtzICsgMTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2hvd0ZpcnN0RG90czogc2hvd0ZpcnN0RG90cyxcbiAgICAgICAgc2hvd0xhc3REb3RzOiBzaG93TGFzdERvdHMsXG4gICAgICAgIG51bWJlck9mTGlua3M6IG51bWJlck9mTGlua3MsXG4gICAgICAgIHN0YXJ0TnVtYmVyOiBzdGFydE51bWJlclxuICAgICAgfTtcbiAgICB9LFxuICAgIHBhZ2VMaXN0OiBmdW5jdGlvbiBwYWdlTGlzdCgpIHtcbiAgICAgIC8vIEdlbmVyYXRlcyB0aGUgcGFnZUxpc3QgYXJyYXlcbiAgICAgIHZhciBfdGhpcyRwYWdpbmF0aW9uUGFyYW0gPSB0aGlzLnBhZ2luYXRpb25QYXJhbXMsXG4gICAgICAgICAgbnVtYmVyT2ZMaW5rcyA9IF90aGlzJHBhZ2luYXRpb25QYXJhbS5udW1iZXJPZkxpbmtzLFxuICAgICAgICAgIHN0YXJ0TnVtYmVyID0gX3RoaXMkcGFnaW5hdGlvblBhcmFtLnN0YXJ0TnVtYmVyO1xuICAgICAgdmFyIGN1cnJlbnRQYWdlID0gdGhpcy5jb21wdXRlZEN1cnJlbnRQYWdlOyAvLyBHZW5lcmF0ZSBsaXN0IG9mIHBhZ2UgbnVtYmVyc1xuXG4gICAgICB2YXIgcGFnZXMgPSBtYWtlUGFnZUFycmF5KHN0YXJ0TnVtYmVyLCBudW1iZXJPZkxpbmtzKTsgLy8gV2UgbGltaXQgdG8gYSB0b3RhbCBvZiAzIHBhZ2UgYnV0dG9ucyBvbiBYUyBzY3JlZW5zXG4gICAgICAvLyBTbyBhZGQgY2xhc3NlcyB0byBwYWdlIGxpbmtzIHRvIGhpZGUgdGhlbSBmb3IgWFMgYnJlYWtwb2ludFxuICAgICAgLy8gTm90ZTogRWxsaXBzaXMgd2lsbCBhbHNvIGJlIGhpZGRlbiBvbiBYUyBzY3JlZW5zXG4gICAgICAvLyBUT0RPOiBNYWtlIHRoaXMgdmlzdWFsIGxpbWl0IGNvbmZpZ3VyYWJsZSBiYXNlZCBvbiBicmVha3BvaW50KHMpXG5cbiAgICAgIGlmIChwYWdlcy5sZW5ndGggPiAzKSB7XG4gICAgICAgIHZhciBpZHggPSBjdXJyZW50UGFnZSAtIHN0YXJ0TnVtYmVyOyAvLyBUSGUgZm9sbG93aW5nIGlzIGEgYm9vdHN0cmFwLXZ1ZSBjdXN0b20gdXRpbGl0eSBjbGFzc1xuXG4gICAgICAgIHZhciBjbGFzc2VzID0gJ2J2LWQteHMtZG93bi1ub25lJztcblxuICAgICAgICBpZiAoaWR4ID09PSAwKSB7XG4gICAgICAgICAgLy8gS2VlcCBsZWZ0bW9zdCAzIGJ1dHRvbnMgdmlzaWJsZSB3aGVuIGN1cnJlbnQgcGFnZSBpcyBmaXJzdCBwYWdlXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDM7IGkgPCBwYWdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcGFnZXNbaV0uY2xhc3NlcyA9IGNsYXNzZXM7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGlkeCA9PT0gcGFnZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIC8vIEtlZXAgcmlnaHRtb3N0IDMgYnV0dG9ucyB2aXNpYmxlIHdoZW4gY3VycmVudCBwYWdlIGlzIGxhc3QgcGFnZVxuICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBwYWdlcy5sZW5ndGggLSAzOyBfaSsrKSB7XG4gICAgICAgICAgICBwYWdlc1tfaV0uY2xhc3NlcyA9IGNsYXNzZXM7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEhpZGUgYWxsIGV4Y2VwdCBjdXJyZW50IHBhZ2UsIGN1cnJlbnQgcGFnZSAtIDEgYW5kIGN1cnJlbnQgcGFnZSArIDFcbiAgICAgICAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBpZHggLSAxOyBfaTIrKykge1xuICAgICAgICAgICAgLy8gaGlkZSBzb21lIGxlZnQgYnV0dG9uKHMpXG4gICAgICAgICAgICBwYWdlc1tfaTJdLmNsYXNzZXMgPSBjbGFzc2VzO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAodmFyIF9pMyA9IHBhZ2VzLmxlbmd0aCAtIDE7IF9pMyA+IGlkeCArIDE7IF9pMy0tKSB7XG4gICAgICAgICAgICAvLyBoaWRlIHNvbWUgcmlnaHQgYnV0dG9uKHMpXG4gICAgICAgICAgICBwYWdlc1tfaTNdLmNsYXNzZXMgPSBjbGFzc2VzO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGFnZXM7XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShuZXdWYWx1ZSwgb2xkVmFsdWUpIHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHNhbml0aXplQ3VycmVudFBhZ2UobmV3VmFsdWUsIHRoaXMubG9jYWxOdW1iZXJPZlBhZ2VzKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGN1cnJlbnRQYWdlOiBmdW5jdGlvbiBjdXJyZW50UGFnZShuZXdWYWx1ZSwgb2xkVmFsdWUpIHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgICAgLy8gRW1pdCBudWxsIGlmIG5vIHBhZ2Ugc2VsZWN0ZWRcbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBuZXdWYWx1ZSA+IDAgPyBuZXdWYWx1ZSA6IG51bGwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgbGltaXQ6IGZ1bmN0aW9uIGxpbWl0KG5ld1ZhbHVlLCBvbGRWYWx1ZSkge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSkge1xuICAgICAgICB0aGlzLmxvY2FsTGltaXQgPSBzYW5pdGl6ZUxpbWl0KG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIC8vIFNldCBvdXIgZGVmYXVsdCB2YWx1ZXMgaW4gZGF0YVxuICAgIHRoaXMubG9jYWxMaW1pdCA9IHNhbml0aXplTGltaXQodGhpcy5saW1pdCk7XG4gICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgLy8gU2FuaXR5IGNoZWNrXG4gICAgICBfdGhpcy5jdXJyZW50UGFnZSA9IF90aGlzLmN1cnJlbnRQYWdlID4gX3RoaXMubG9jYWxOdW1iZXJPZlBhZ2VzID8gX3RoaXMubG9jYWxOdW1iZXJPZlBhZ2VzIDogX3RoaXMuY3VycmVudFBhZ2U7XG4gICAgfSk7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBnZXRCdXR0b25zOiBmdW5jdGlvbiBnZXRCdXR0b25zKCkge1xuICAgICAgLy8gUmV0dXJuIG9ubHkgYnV0dG9ucyB0aGF0IGFyZSB2aXNpYmxlXG4gICAgICByZXR1cm4gc2VsZWN0QWxsKCdhLnBhZ2UtbGluaycsIHRoaXMuJGVsKS5maWx0ZXIoZnVuY3Rpb24gKGJ0bikge1xuICAgICAgICByZXR1cm4gaXNWaXNpYmxlKGJ0bik7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHNldEJ0bkZvY3VzOiBmdW5jdGlvbiBzZXRCdG5Gb2N1cyhidG4pIHtcbiAgICAgIGJ0bi5mb2N1cygpO1xuICAgIH0sXG4gICAgZm9jdXNDdXJyZW50OiBmdW5jdGlvbiBmb2N1c0N1cnJlbnQoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgLy8gV2UgZG8gdGhpcyBpbiBuZXh0IHRpY2sgdG8gZW5zdXJlIGJ1dHRvbnMgaGF2ZSBmaW5pc2hlZCByZW5kZXJpbmdcbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGJ0biA9IF90aGlzMi5nZXRCdXR0b25zKCkuZmluZChmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoZ2V0QXR0cihlbCwgJ2FyaWEtcG9zaW5zZXQnKSwgMTApID09PSBfdGhpczIuY29tcHV0ZWRDdXJyZW50UGFnZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGJ0biAmJiBidG4uZm9jdXMpIHtcbiAgICAgICAgICBfdGhpczIuc2V0QnRuRm9jdXMoYnRuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBGYWxsYmFjayBpZiBjdXJyZW50IHBhZ2UgaXMgbm90IGluIGJ1dHRvbiBsaXN0XG4gICAgICAgICAgX3RoaXMyLmZvY3VzRmlyc3QoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBmb2N1c0ZpcnN0OiBmdW5jdGlvbiBmb2N1c0ZpcnN0KCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIC8vIFdlIGRvIHRoaXMgaW4gbmV4dCB0aWNrIHRvIGVuc3VyZSBidXR0b25zIGhhdmUgZmluaXNoZWQgcmVuZGVyaW5nXG4gICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBidG4gPSBfdGhpczMuZ2V0QnV0dG9ucygpLmZpbmQoZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgcmV0dXJuICFpc0Rpc2FibGVkKGVsKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGJ0biAmJiBidG4uZm9jdXMgJiYgYnRuICE9PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgX3RoaXMzLnNldEJ0bkZvY3VzKGJ0bik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZm9jdXNMYXN0OiBmdW5jdGlvbiBmb2N1c0xhc3QoKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgLy8gV2UgZG8gdGhpcyBpbiBuZXh0IHRpY2sgdG8gZW5zdXJlIGJ1dHRvbnMgaGF2ZSBmaW5pc2hlZCByZW5kZXJpbmdcbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGJ0biA9IF90aGlzNC5nZXRCdXR0b25zKCkucmV2ZXJzZSgpLmZpbmQoZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgcmV0dXJuICFpc0Rpc2FibGVkKGVsKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGJ0biAmJiBidG4uZm9jdXMgJiYgYnRuICE9PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgX3RoaXM0LnNldEJ0bkZvY3VzKGJ0bik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZm9jdXNQcmV2OiBmdW5jdGlvbiBmb2N1c1ByZXYoKSB7XG4gICAgICB2YXIgX3RoaXM1ID0gdGhpcztcblxuICAgICAgLy8gV2UgZG8gdGhpcyBpbiBuZXh0IHRpY2sgdG8gZW5zdXJlIGJ1dHRvbnMgaGF2ZSBmaW5pc2hlZCByZW5kZXJpbmdcbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGJ1dHRvbnMgPSBfdGhpczUuZ2V0QnV0dG9ucygpO1xuXG4gICAgICAgIHZhciBpZHggPSBidXR0b25zLmluZGV4T2YoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGlkeCA+IDAgJiYgIWlzRGlzYWJsZWQoYnV0dG9uc1tpZHggLSAxXSkgJiYgYnV0dG9uc1tpZHggLSAxXS5mb2N1cykge1xuICAgICAgICAgIF90aGlzNS5zZXRCdG5Gb2N1cyhidXR0b25zW2lkeCAtIDFdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBmb2N1c05leHQ6IGZ1bmN0aW9uIGZvY3VzTmV4dCgpIHtcbiAgICAgIHZhciBfdGhpczYgPSB0aGlzO1xuXG4gICAgICAvLyBXZSBkbyB0aGlzIGluIG5leHQgdGljayB0byBlbnN1cmUgYnV0dG9ucyBoYXZlIGZpbmlzaGVkIHJlbmRlcmluZ1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYnV0dG9ucyA9IF90aGlzNi5nZXRCdXR0b25zKCk7XG5cbiAgICAgICAgdmFyIGlkeCA9IGJ1dHRvbnMuaW5kZXhPZihkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgICAgICAgdmFyIGNudCA9IGJ1dHRvbnMubGVuZ3RoIC0gMTtcblxuICAgICAgICBpZiAoaWR4IDwgY250ICYmICFpc0Rpc2FibGVkKGJ1dHRvbnNbaWR4ICsgMV0pICYmIGJ1dHRvbnNbaWR4ICsgMV0uZm9jdXMpIHtcbiAgICAgICAgICBfdGhpczYuc2V0QnRuRm9jdXMoYnV0dG9uc1tpZHggKyAxXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBfdGhpczcgPSB0aGlzO1xuXG4gICAgdmFyIGJ1dHRvbnMgPSBbXTtcbiAgICB2YXIgbnVtYmVyT2ZQYWdlcyA9IHRoaXMubG9jYWxOdW1iZXJPZlBhZ2VzO1xuICAgIHZhciBkaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XG4gICAgdmFyIF90aGlzJHBhZ2luYXRpb25QYXJhbTIgPSB0aGlzLnBhZ2luYXRpb25QYXJhbXMsXG4gICAgICAgIHNob3dGaXJzdERvdHMgPSBfdGhpcyRwYWdpbmF0aW9uUGFyYW0yLnNob3dGaXJzdERvdHMsXG4gICAgICAgIHNob3dMYXN0RG90cyA9IF90aGlzJHBhZ2luYXRpb25QYXJhbTIuc2hvd0xhc3REb3RzO1xuICAgIHZhciBjdXJyZW50UGFnZSA9IHRoaXMuY29tcHV0ZWRDdXJyZW50UGFnZTtcbiAgICB2YXIgZmlsbCA9IHRoaXMuYWxpZ24gPT09ICdmaWxsJzsgLy8gSGVscGVyIGZ1bmN0aW9uIGFuZCBmbGFnXG5cbiAgICB2YXIgaXNBY3RpdmVQYWdlID0gZnVuY3Rpb24gaXNBY3RpdmVQYWdlKHBhZ2VOdW0pIHtcbiAgICAgIHJldHVybiBwYWdlTnVtID09PSBjdXJyZW50UGFnZTtcbiAgICB9O1xuXG4gICAgdmFyIG5vQ3VyclBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlIDwgMTsgLy8gRmFjdG9yeSBmdW5jdGlvbiBmb3IgcHJldi9uZXh0L2ZpcnN0L2xhc3QgYnV0dG9uc1xuXG4gICAgdmFyIG1ha2VFbmRCdG4gPSBmdW5jdGlvbiBtYWtlRW5kQnRuKGxpbmtUbywgYXJpYUxhYmVsLCBidG5TbG90LCBidG5UZXh0LCBwYWdlVGVzdCwga2V5KSB7XG4gICAgICB2YXIgaXNEaXNhYmxlZCA9IGRpc2FibGVkIHx8IGlzQWN0aXZlUGFnZShwYWdlVGVzdCkgfHwgbm9DdXJyUGFnZSB8fCBsaW5rVG8gPCAxIHx8IGxpbmtUbyA+IG51bWJlck9mUGFnZXM7XG4gICAgICB2YXIgcGFnZU51bSA9IGxpbmtUbyA8IDEgPyAxIDogbGlua1RvID4gbnVtYmVyT2ZQYWdlcyA/IG51bWJlck9mUGFnZXMgOiBsaW5rVG87XG4gICAgICB2YXIgc2NvcGUgPSB7XG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICBwYWdlOiBwYWdlTnVtLFxuICAgICAgICBpbmRleDogcGFnZU51bSAtIDFcbiAgICAgIH07XG4gICAgICB2YXIgYnRuQ29udGVudCA9IF90aGlzNy5ub3JtYWxpemVTbG90KGJ0blNsb3QsIHNjb3BlKSB8fCB0b1N0cmluZyhidG5UZXh0KSB8fCBoKCk7XG4gICAgICB2YXIgaW5uZXIgPSBoKGlzRGlzYWJsZWQgPyAnc3BhbicgOiBCTGluaywge1xuICAgICAgICBzdGF0aWNDbGFzczogJ3BhZ2UtbGluaycsXG4gICAgICAgIHByb3BzOiBpc0Rpc2FibGVkID8ge30gOiBfdGhpczcubGlua1Byb3BzKGxpbmtUbyksXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgcm9sZTogJ21lbnVpdGVtJyxcbiAgICAgICAgICB0YWJpbmRleDogaXNEaXNhYmxlZCA/IG51bGwgOiAnLTEnLFxuICAgICAgICAgICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsLFxuICAgICAgICAgICdhcmlhLWNvbnRyb2xzJzogX3RoaXM3LmFyaWFDb250cm9scyB8fCBudWxsLFxuICAgICAgICAgICdhcmlhLWRpc2FibGVkJzogaXNEaXNhYmxlZCA/ICd0cnVlJyA6IG51bGxcbiAgICAgICAgfSxcbiAgICAgICAgb246IGlzRGlzYWJsZWQgPyB7fSA6IHtcbiAgICAgICAgICBjbGljazogZnVuY3Rpb24gY2xpY2soZXZ0KSB7XG4gICAgICAgICAgICBfdGhpczcub25DbGljayhsaW5rVG8sIGV2dCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBrZXlkb3duOiBvblNwYWNlS2V5XG4gICAgICAgIH1cbiAgICAgIH0sIFtidG5Db250ZW50XSk7XG4gICAgICByZXR1cm4gaCgnbGknLCB7XG4gICAgICAgIGtleToga2V5LFxuICAgICAgICBzdGF0aWNDbGFzczogJ3BhZ2UtaXRlbScsXG4gICAgICAgIGNsYXNzOiB7XG4gICAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgJ2ZsZXgtZmlsbCc6IGZpbGxcbiAgICAgICAgfSxcbiAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICByb2xlOiAncHJlc2VudGF0aW9uJyxcbiAgICAgICAgICAnYXJpYS1oaWRkZW4nOiBpc0Rpc2FibGVkID8gJ3RydWUnIDogbnVsbFxuICAgICAgICB9XG4gICAgICB9LCBbaW5uZXJdKTtcbiAgICB9OyAvLyBFbGxpcHNpcyBmYWN0b3J5XG5cblxuICAgIHZhciBtYWtlRWxsaXBzaXMgPSBmdW5jdGlvbiBtYWtlRWxsaXBzaXMoaXNMYXN0KSB7XG4gICAgICByZXR1cm4gaCgnbGknLCB7XG4gICAgICAgIGtleTogXCJlbGxpcHNpcy1cIi5jb25jYXQoaXNMYXN0ID8gJ2xhc3QnIDogJ2ZpcnN0JyksXG4gICAgICAgIHN0YXRpY0NsYXNzOiAncGFnZS1pdGVtJyxcbiAgICAgICAgY2xhc3M6IFsnZGlzYWJsZWQnLCAnYnYtZC14cy1kb3duLW5vbmUnLCBmaWxsID8gJ2ZsZXgtZmlsbCcgOiAnJ10sXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgcm9sZTogJ3NlcGFyYXRvcidcbiAgICAgICAgfVxuICAgICAgfSwgW2goJ3NwYW4nLCB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiAncGFnZS1saW5rJ1xuICAgICAgfSwgW190aGlzNy5ub3JtYWxpemVTbG90KCdlbGxpcHNpcy10ZXh0JykgfHwgdG9TdHJpbmcoX3RoaXM3LmVsbGlwc2lzVGV4dCkgfHwgaCgpXSldKTtcbiAgICB9OyAvLyBHb3RvIEZpcnN0IFBhZ2UgYnV0dG9uIGJvb2tlbmRcblxuXG4gICAgYnV0dG9ucy5wdXNoKHRoaXMuaGlkZUdvdG9FbmRCdXR0b25zID8gaCgpIDogbWFrZUVuZEJ0bigxLCB0aGlzLmxhYmVsRmlyc3RQYWdlLCAnZmlyc3QtdGV4dCcsIHRoaXMuZmlyc3RUZXh0LCAxLCAnYm9va2VuZC1nb3RvLWZpcnN0JykpOyAvLyBHb3RvIFByZXZpb3VzIHBhZ2UgYnV0dG9uIGJvb2tlbmRcblxuICAgIGJ1dHRvbnMucHVzaChtYWtlRW5kQnRuKGN1cnJlbnRQYWdlIC0gMSwgdGhpcy5sYWJlbFByZXZQYWdlLCAncHJldi10ZXh0JywgdGhpcy5wcmV2VGV4dCwgMSwgJ2Jvb2tlbmQtZ290by1wcmV2JykpOyAvLyBGaXJzdCBFbGxpcHNpcyBCb29rZW5kXG5cbiAgICBidXR0b25zLnB1c2goc2hvd0ZpcnN0RG90cyA/IG1ha2VFbGxpcHNpcyhmYWxzZSkgOiBoKCkpOyAvLyBJbmRpdmlkdWFsIFBhZ2UgbGlua3NcblxuICAgIHRoaXMucGFnZUxpc3QuZm9yRWFjaChmdW5jdGlvbiAocGFnZSwgaWR4KSB7XG4gICAgICB2YXIgYWN0aXZlID0gaXNBY3RpdmVQYWdlKHBhZ2UubnVtYmVyKSAmJiAhbm9DdXJyUGFnZTsgLy8gQWN0aXZlIHBhZ2Ugd2lsbCBoYXZlIHRhYmluZGV4IG9mIDAsIG9yIGlmIG5vIGN1cnJlbnQgcGFnZSBhbmQgZmlyc3QgcGFnZSBidXR0b25cblxuICAgICAgdmFyIHRhYkluZGV4ID0gZGlzYWJsZWQgPyBudWxsIDogYWN0aXZlIHx8IG5vQ3VyclBhZ2UgJiYgaWR4ID09PSAwID8gJzAnIDogJy0xJztcbiAgICAgIHZhciBhdHRycyA9IHtcbiAgICAgICAgcm9sZTogJ21lbnVpdGVtcmFkaW8nLFxuICAgICAgICAnYXJpYS1kaXNhYmxlZCc6IGRpc2FibGVkID8gJ3RydWUnIDogbnVsbCxcbiAgICAgICAgJ2FyaWEtY29udHJvbHMnOiBfdGhpczcuYXJpYUNvbnRyb2xzIHx8IG51bGwsXG4gICAgICAgICdhcmlhLWxhYmVsJzogaXNGdW5jdGlvbihfdGhpczcubGFiZWxQYWdlKSA/IF90aGlzNy5sYWJlbFBhZ2UocGFnZS5udW1iZXIpIDogXCJcIi5jb25jYXQoX3RoaXM3LmxhYmVsUGFnZSwgXCIgXCIpLmNvbmNhdChwYWdlLm51bWJlciksXG4gICAgICAgICdhcmlhLWNoZWNrZWQnOiBhY3RpdmUgPyAndHJ1ZScgOiAnZmFsc2UnLFxuICAgICAgICAnYXJpYS1wb3NpbnNldCc6IHBhZ2UubnVtYmVyLFxuICAgICAgICAnYXJpYS1zZXRzaXplJzogbnVtYmVyT2ZQYWdlcyxcbiAgICAgICAgLy8gQVJJQSBcInJvdmluZyB0YWJpbmRleFwiIG1ldGhvZFxuICAgICAgICB0YWJpbmRleDogdGFiSW5kZXhcbiAgICAgIH07XG4gICAgICB2YXIgYnRuQ29udGVudCA9IHRvU3RyaW5nKF90aGlzNy5tYWtlUGFnZShwYWdlLm51bWJlcikpO1xuICAgICAgdmFyIHNjb3BlID0ge1xuICAgICAgICBwYWdlOiBwYWdlLm51bWJlcixcbiAgICAgICAgaW5kZXg6IHBhZ2UubnVtYmVyIC0gMSxcbiAgICAgICAgY29udGVudDogYnRuQ29udGVudCxcbiAgICAgICAgYWN0aXZlOiBhY3RpdmUsXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZFxuICAgICAgfTtcbiAgICAgIHZhciBpbm5lciA9IGgoZGlzYWJsZWQgPyAnc3BhbicgOiBCTGluaywge1xuICAgICAgICBwcm9wczogZGlzYWJsZWQgPyB7fSA6IF90aGlzNy5saW5rUHJvcHMocGFnZS5udW1iZXIpLFxuICAgICAgICBzdGF0aWNDbGFzczogJ3BhZ2UtbGluaycsXG4gICAgICAgIGF0dHJzOiBhdHRycyxcbiAgICAgICAgb246IGRpc2FibGVkID8ge30gOiB7XG4gICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uIGNsaWNrKGV2dCkge1xuICAgICAgICAgICAgX3RoaXM3Lm9uQ2xpY2socGFnZS5udW1iZXIsIGV2dCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBrZXlkb3duOiBvblNwYWNlS2V5XG4gICAgICAgIH1cbiAgICAgIH0sIFtfdGhpczcubm9ybWFsaXplU2xvdCgncGFnZScsIHNjb3BlKSB8fCBidG5Db250ZW50XSk7XG4gICAgICBidXR0b25zLnB1c2goaCgnbGknLCB7XG4gICAgICAgIGtleTogXCJwYWdlLVwiLmNvbmNhdChwYWdlLm51bWJlciksXG4gICAgICAgIHN0YXRpY0NsYXNzOiAncGFnZS1pdGVtJyxcbiAgICAgICAgY2xhc3M6IFt7XG4gICAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICAgIGFjdGl2ZTogYWN0aXZlLFxuICAgICAgICAgICdmbGV4LWZpbGwnOiBmaWxsXG4gICAgICAgIH0sIHBhZ2UuY2xhc3Nlc10sXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgcm9sZTogJ3ByZXNlbnRhdGlvbidcbiAgICAgICAgfVxuICAgICAgfSwgW2lubmVyXSkpO1xuICAgIH0pOyAvLyBMYXN0IEVsbGlwc2lzIEJvb2tlbmRcblxuICAgIGJ1dHRvbnMucHVzaChzaG93TGFzdERvdHMgPyBtYWtlRWxsaXBzaXModHJ1ZSkgOiBoKCkpOyAvLyBHb3RvIE5leHQgcGFnZSBidXR0b24gYm9va2VuZFxuXG4gICAgYnV0dG9ucy5wdXNoKG1ha2VFbmRCdG4oY3VycmVudFBhZ2UgKyAxLCB0aGlzLmxhYmVsTmV4dFBhZ2UsICduZXh0LXRleHQnLCB0aGlzLm5leHRUZXh0LCBudW1iZXJPZlBhZ2VzLCAnYm9va2VuZC1nb3RvLW5leHQnKSk7IC8vIEdvdG8gTGFzdCBQYWdlIGJ1dHRvbiBib29rZW5kXG5cbiAgICBidXR0b25zLnB1c2godGhpcy5oaWRlR290b0VuZEJ1dHRvbnMgPyBoKCkgOiBtYWtlRW5kQnRuKG51bWJlck9mUGFnZXMsIHRoaXMubGFiZWxMYXN0UGFnZSwgJ2xhc3QtdGV4dCcsIHRoaXMubGFzdFRleHQsIG51bWJlck9mUGFnZXMsICdib29rZW5kLWdvdG8tbGFzdCcpKTsgLy8gQXNzZW1ibGUgdGhlIHBhZ2luYXRpb24gYnV0dG9uc1xuXG4gICAgdmFyIHBhZ2luYXRpb24gPSBoKCd1bCcsIHtcbiAgICAgIHJlZjogJ3VsJyxcbiAgICAgIHN0YXRpY0NsYXNzOiAncGFnaW5hdGlvbicsXG4gICAgICBjbGFzczogWydiLXBhZ2luYXRpb24nLCB0aGlzLmJ0blNpemUsIHRoaXMuYWxpZ25tZW50XSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6ICdtZW51YmFyJyxcbiAgICAgICAgJ2FyaWEtZGlzYWJsZWQnOiBkaXNhYmxlZCA/ICd0cnVlJyA6ICdmYWxzZScsXG4gICAgICAgICdhcmlhLWxhYmVsJzogdGhpcy5hcmlhTGFiZWwgfHwgbnVsbFxuICAgICAgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIGtleWRvd246IGZ1bmN0aW9uIGtleWRvd24oZXZ0KSB7XG4gICAgICAgICAgdmFyIGtleUNvZGUgPSBldnQua2V5Q29kZTtcbiAgICAgICAgICB2YXIgc2hpZnQgPSBldnQuc2hpZnRLZXk7XG5cbiAgICAgICAgICBpZiAoa2V5Q29kZSA9PT0gS2V5Q29kZXMuTEVGVCkge1xuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBzaGlmdCA/IF90aGlzNy5mb2N1c0ZpcnN0KCkgOiBfdGhpczcuZm9jdXNQcmV2KCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChrZXlDb2RlID09PSBLZXlDb2Rlcy5SSUdIVCkge1xuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBzaGlmdCA/IF90aGlzNy5mb2N1c0xhc3QoKSA6IF90aGlzNy5mb2N1c05leHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBidXR0b25zKTsgLy8gaWYgd2UgYXJlIHBhZ2luYXRpb24tbmF2LCB3cmFwIGluICc8bmF2Picgd3JhcHBlclxuXG4gICAgaWYgKHRoaXMuaXNOYXYpIHtcbiAgICAgIHJldHVybiBoKCduYXYnLCB7XG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgJ2FyaWEtZGlzYWJsZWQnOiBkaXNhYmxlZCA/ICd0cnVlJyA6IG51bGwsXG4gICAgICAgICAgJ2FyaWEtaGlkZGVuJzogZGlzYWJsZWQgPyAndHJ1ZScgOiAnZmFsc2UnXG4gICAgICAgIH1cbiAgICAgIH0sIFtwYWdpbmF0aW9uXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwYWdpbmF0aW9uO1xuICAgIH1cbiAgfVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9taXhpbnMvcGFnaW5hdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMTgzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///183\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return PaginationPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__pagination__ = __webpack_require__(184);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BPagination */\n\n\nvar PaginationPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BPagination: __WEBPACK_IMPORTED_MODULE_0__pagination__[\"a\" /* BPagination */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wYWdpbmF0aW9uL2luZGV4LmpzP2M4ZGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMkM7QUFDUztBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGlCQUFpQixnRUFBVztBQUM1QjtBQUNBLENBQUMiLCJmaWxlIjoiMTgzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQlBhZ2luYXRpb24gfSBmcm9tICcuL3BhZ2luYXRpb24nO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIFBhZ2luYXRpb25QbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCUGFnaW5hdGlvbjogQlBhZ2luYXRpb25cbiAgfVxufSk7XG5leHBvcnQgeyBQYWdpbmF0aW9uUGx1Z2luLCBCUGFnaW5hdGlvbiB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTgzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///183\n"); /***/ }), /* 184 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/**\n * @param {number} length\n * @return {Array}\n */\nvar range = function range(length) {\n return Array.apply(null, {\n length: length\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (range);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvcmFuZ2UuanM/YTBlNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRWUsOERBQUsiLCJmaWxlIjoiMTg0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcmV0dXJuIHtBcnJheX1cbiAqL1xudmFyIHJhbmdlID0gZnVuY3Rpb24gcmFuZ2UobGVuZ3RoKSB7XG4gIHJldHVybiBBcnJheS5hcHBseShudWxsLCB7XG4gICAgbGVuZ3RoOiBsZW5ndGhcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCByYW5nZTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS91dGlscy9yYW5nZS5qc1xuLy8gbW9kdWxlIGlkID0gMTg0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///184\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BPagination; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mixins_pagination__ = __webpack_require__(185);\n\n\n\n\n // --- Constants ---\n\nvar NAME = 'BPagination';\nvar DEFAULT_PER_PAGE = 20;\nvar DEFAULT_TOTAL_ROWS = 0;\nvar props = {\n size: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'size');\n }\n },\n perPage: {\n type: [Number, String],\n default: DEFAULT_PER_PAGE\n },\n totalRows: {\n type: [Number, String],\n default: DEFAULT_TOTAL_ROWS\n },\n ariaControls: {\n type: String,\n default: null\n }\n}; // --- Helper functions ---\n// Sanitize the provided per page number (converting to a number)\n\nvar sanitizePerPage = function sanitizePerPage(val) {\n var perPage = parseInt(val, 10) || DEFAULT_PER_PAGE;\n return perPage < 1 ? 1 : perPage;\n}; // Sanitize the provided total rows number (converting to a number)\n\n\nvar sanitizeTotalRows = function sanitizeTotalRows(val) {\n var totalRows = parseInt(val, 10) || DEFAULT_TOTAL_ROWS;\n return totalRows < 0 ? 0 : totalRows;\n}; // The render function is brought in via the `paginationMixin`\n// @vue/component\n\n\nvar BPagination =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n mixins: [__WEBPACK_IMPORTED_MODULE_4__mixins_pagination__[\"a\" /* default */]],\n props: props,\n computed: {\n numberOfPages: function numberOfPages() {\n var result = Math.ceil(sanitizeTotalRows(this.totalRows) / sanitizePerPage(this.perPage));\n return result < 1 ? 1 : result;\n },\n pageSizeNumberOfPages: function pageSizeNumberOfPages() {\n // Used for watching changes to `perPage` and `numberOfPages`\n return {\n perPage: sanitizePerPage(this.perPage),\n totalRows: sanitizeTotalRows(this.totalRows),\n numberOfPages: this.numberOfPages\n };\n }\n },\n watch: {\n pageSizeNumberOfPages: function pageSizeNumberOfPages(newVal, oldVal) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"o\" /* isUndefinedOrNull */])(oldVal)) {\n if (newVal.perPage !== oldVal.perPage && newVal.totalRows === oldVal.totalRows) {\n // If the page size changes, reset to page 1\n this.currentPage = 1;\n } else if (newVal.numberOfPages !== oldVal.numberOfPages && this.currentPage > newVal.numberOfPages) {\n // If `numberOfPages` changes and is less than\n // the `currentPage` number, reset to page 1\n this.currentPage = 1;\n }\n }\n\n this.localNumberOfPages = newVal.numberOfPages;\n }\n },\n created: function created() {\n var _this = this;\n\n // Set the initial page count\n this.localNumberOfPages = this.numberOfPages; // Set the initial page value\n\n var currentPage = parseInt(this.value, 10) || 0;\n\n if (currentPage > 0) {\n this.currentPage = currentPage;\n } else {\n this.$nextTick(function () {\n // If this value parses to NaN or a value less than 1\n // Trigger an initial emit of 'null' if no page specified\n _this.currentPage = 0;\n });\n }\n },\n mounted: function mounted() {\n // Set the initial page count\n this.localNumberOfPages = this.numberOfPages;\n },\n methods: {\n // These methods are used by the render function\n onClick: function onClick(num, evt) {\n var _this2 = this;\n\n // Handle edge cases where number of pages has changed (i.e. if perPage changes)\n // This should normally not happen, but just in case.\n if (num > this.numberOfPages) {\n /* istanbul ignore next */\n num = this.numberOfPages;\n } else if (num < 1) {\n /* istanbul ignore next */\n num = 1;\n } // Update the v-model\n\n\n this.currentPage = num; // Emit event triggered by user interaction\n\n this.$emit('change', this.currentPage);\n this.$nextTick(function () {\n // Keep the current button focused if possible\n var target = evt.target;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_2__utils_dom__[\"p\" /* isVisible */])(target) && _this2.$el.contains(target) && target.focus) {\n target.focus();\n } else {\n _this2.focusCurrent();\n }\n });\n },\n makePage: function makePage(pageNum) {\n return pageNum;\n },\n linkProps: function linkProps(pageNum) {\n // Always '#' for pagination component\n return {\n href: '#'\n };\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uanM/NjY4OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDc0I7QUFDWjtBQUNZO0FBQ0Y7O0FBRXREO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRkFBa0I7QUFDL0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7OztBQUdPO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0EsV0FBVyxtRUFBZTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLFdBQVcsaUZBQWlCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBLGlEQUFpRDs7QUFFakQ7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTzs7O0FBR1AsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxZQUFZLHFFQUFTO0FBQ3JCO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6IjE4NC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBpc1Zpc2libGUgfSBmcm9tICcuLi8uLi91dGlscy9kb20nO1xuaW1wb3J0IHsgaXNVbmRlZmluZWRPck51bGwgfSBmcm9tICcuLi8uLi91dGlscy9pbnNwZWN0JztcbmltcG9ydCBwYWdpbmF0aW9uTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL3BhZ2luYXRpb24nOyAvLyAtLS0gQ29uc3RhbnRzIC0tLVxuXG52YXIgTkFNRSA9ICdCUGFnaW5hdGlvbic7XG52YXIgREVGQVVMVF9QRVJfUEFHRSA9IDIwO1xudmFyIERFRkFVTFRfVE9UQUxfUk9XUyA9IDA7XG52YXIgcHJvcHMgPSB7XG4gIHNpemU6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdzaXplJyk7XG4gICAgfVxuICB9LFxuICBwZXJQYWdlOiB7XG4gICAgdHlwZTogW051bWJlciwgU3RyaW5nXSxcbiAgICBkZWZhdWx0OiBERUZBVUxUX1BFUl9QQUdFXG4gIH0sXG4gIHRvdGFsUm93czoge1xuICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXG4gICAgZGVmYXVsdDogREVGQVVMVF9UT1RBTF9ST1dTXG4gIH0sXG4gIGFyaWFDb250cm9sczoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH1cbn07IC8vIC0tLSBIZWxwZXIgZnVuY3Rpb25zIC0tLVxuLy8gU2FuaXRpemUgdGhlIHByb3ZpZGVkIHBlciBwYWdlIG51bWJlciAoY29udmVydGluZyB0byBhIG51bWJlcilcblxudmFyIHNhbml0aXplUGVyUGFnZSA9IGZ1bmN0aW9uIHNhbml0aXplUGVyUGFnZSh2YWwpIHtcbiAgdmFyIHBlclBhZ2UgPSBwYXJzZUludCh2YWwsIDEwKSB8fCBERUZBVUxUX1BFUl9QQUdFO1xuICByZXR1cm4gcGVyUGFnZSA8IDEgPyAxIDogcGVyUGFnZTtcbn07IC8vIFNhbml0aXplIHRoZSBwcm92aWRlZCB0b3RhbCByb3dzIG51bWJlciAoY29udmVydGluZyB0byBhIG51bWJlcilcblxuXG52YXIgc2FuaXRpemVUb3RhbFJvd3MgPSBmdW5jdGlvbiBzYW5pdGl6ZVRvdGFsUm93cyh2YWwpIHtcbiAgdmFyIHRvdGFsUm93cyA9IHBhcnNlSW50KHZhbCwgMTApIHx8IERFRkFVTFRfVE9UQUxfUk9XUztcbiAgcmV0dXJuIHRvdGFsUm93cyA8IDAgPyAwIDogdG90YWxSb3dzO1xufTsgLy8gVGhlIHJlbmRlciBmdW5jdGlvbiBpcyBicm91Z2h0IGluIHZpYSB0aGUgYHBhZ2luYXRpb25NaXhpbmBcbi8vIEB2dWUvY29tcG9uZW50XG5cblxuZXhwb3J0IHZhciBCUGFnaW5hdGlvbiA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogTkFNRSxcbiAgbWl4aW5zOiBbcGFnaW5hdGlvbk1peGluXSxcbiAgcHJvcHM6IHByb3BzLFxuICBjb21wdXRlZDoge1xuICAgIG51bWJlck9mUGFnZXM6IGZ1bmN0aW9uIG51bWJlck9mUGFnZXMoKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gTWF0aC5jZWlsKHNhbml0aXplVG90YWxSb3dzKHRoaXMudG90YWxSb3dzKSAvIHNhbml0aXplUGVyUGFnZSh0aGlzLnBlclBhZ2UpKTtcbiAgICAgIHJldHVybiByZXN1bHQgPCAxID8gMSA6IHJlc3VsdDtcbiAgICB9LFxuICAgIHBhZ2VTaXplTnVtYmVyT2ZQYWdlczogZnVuY3Rpb24gcGFnZVNpemVOdW1iZXJPZlBhZ2VzKCkge1xuICAgICAgLy8gVXNlZCBmb3Igd2F0Y2hpbmcgY2hhbmdlcyB0byBgcGVyUGFnZWAgYW5kIGBudW1iZXJPZlBhZ2VzYFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGVyUGFnZTogc2FuaXRpemVQZXJQYWdlKHRoaXMucGVyUGFnZSksXG4gICAgICAgIHRvdGFsUm93czogc2FuaXRpemVUb3RhbFJvd3ModGhpcy50b3RhbFJvd3MpLFxuICAgICAgICBudW1iZXJPZlBhZ2VzOiB0aGlzLm51bWJlck9mUGFnZXNcbiAgICAgIH07XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIHBhZ2VTaXplTnVtYmVyT2ZQYWdlczogZnVuY3Rpb24gcGFnZVNpemVOdW1iZXJPZlBhZ2VzKG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICBpZiAoIWlzVW5kZWZpbmVkT3JOdWxsKG9sZFZhbCkpIHtcbiAgICAgICAgaWYgKG5ld1ZhbC5wZXJQYWdlICE9PSBvbGRWYWwucGVyUGFnZSAmJiBuZXdWYWwudG90YWxSb3dzID09PSBvbGRWYWwudG90YWxSb3dzKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIHBhZ2Ugc2l6ZSBjaGFuZ2VzLCByZXNldCB0byBwYWdlIDFcbiAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgfSBlbHNlIGlmIChuZXdWYWwubnVtYmVyT2ZQYWdlcyAhPT0gb2xkVmFsLm51bWJlck9mUGFnZXMgJiYgdGhpcy5jdXJyZW50UGFnZSA+IG5ld1ZhbC5udW1iZXJPZlBhZ2VzKSB7XG4gICAgICAgICAgLy8gSWYgYG51bWJlck9mUGFnZXNgIGNoYW5nZXMgYW5kIGlzIGxlc3MgdGhhblxuICAgICAgICAgIC8vIHRoZSBgY3VycmVudFBhZ2VgIG51bWJlciwgcmVzZXQgdG8gcGFnZSAxXG4gICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5sb2NhbE51bWJlck9mUGFnZXMgPSBuZXdWYWwubnVtYmVyT2ZQYWdlcztcbiAgICB9XG4gIH0sXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIC8vIFNldCB0aGUgaW5pdGlhbCBwYWdlIGNvdW50XG4gICAgdGhpcy5sb2NhbE51bWJlck9mUGFnZXMgPSB0aGlzLm51bWJlck9mUGFnZXM7IC8vIFNldCB0aGUgaW5pdGlhbCBwYWdlIHZhbHVlXG5cbiAgICB2YXIgY3VycmVudFBhZ2UgPSBwYXJzZUludCh0aGlzLnZhbHVlLCAxMCkgfHwgMDtcblxuICAgIGlmIChjdXJyZW50UGFnZSA+IDApIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBjdXJyZW50UGFnZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBJZiB0aGlzIHZhbHVlIHBhcnNlcyB0byBOYU4gb3IgYSB2YWx1ZSBsZXNzIHRoYW4gMVxuICAgICAgICAvLyBUcmlnZ2VyIGFuIGluaXRpYWwgZW1pdCBvZiAnbnVsbCcgaWYgbm8gcGFnZSBzcGVjaWZpZWRcbiAgICAgICAgX3RoaXMuY3VycmVudFBhZ2UgPSAwO1xuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIC8vIFNldCB0aGUgaW5pdGlhbCBwYWdlIGNvdW50XG4gICAgdGhpcy5sb2NhbE51bWJlck9mUGFnZXMgPSB0aGlzLm51bWJlck9mUGFnZXM7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIGJ5IHRoZSByZW5kZXIgZnVuY3Rpb25cbiAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKG51bSwgZXZ0KSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgLy8gSGFuZGxlIGVkZ2UgY2FzZXMgd2hlcmUgbnVtYmVyIG9mIHBhZ2VzIGhhcyBjaGFuZ2VkIChpLmUuIGlmIHBlclBhZ2UgY2hhbmdlcylcbiAgICAgIC8vIFRoaXMgc2hvdWxkIG5vcm1hbGx5IG5vdCBoYXBwZW4sIGJ1dCBqdXN0IGluIGNhc2UuXG4gICAgICBpZiAobnVtID4gdGhpcy5udW1iZXJPZlBhZ2VzKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIG51bSA9IHRoaXMubnVtYmVyT2ZQYWdlcztcbiAgICAgIH0gZWxzZSBpZiAobnVtIDwgMSkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBudW0gPSAxO1xuICAgICAgfSAvLyBVcGRhdGUgdGhlIHYtbW9kZWxcblxuXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gbnVtOyAvLyBFbWl0IGV2ZW50IHRyaWdnZXJlZCBieSB1c2VyIGludGVyYWN0aW9uXG5cbiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIHRoaXMuY3VycmVudFBhZ2UpO1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBLZWVwIHRoZSBjdXJyZW50IGJ1dHRvbiBmb2N1c2VkIGlmIHBvc3NpYmxlXG4gICAgICAgIHZhciB0YXJnZXQgPSBldnQudGFyZ2V0O1xuXG4gICAgICAgIGlmIChpc1Zpc2libGUodGFyZ2V0KSAmJiBfdGhpczIuJGVsLmNvbnRhaW5zKHRhcmdldCkgJiYgdGFyZ2V0LmZvY3VzKSB7XG4gICAgICAgICAgdGFyZ2V0LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3RoaXMyLmZvY3VzQ3VycmVudCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICAgIG1ha2VQYWdlOiBmdW5jdGlvbiBtYWtlUGFnZShwYWdlTnVtKSB7XG4gICAgICByZXR1cm4gcGFnZU51bTtcbiAgICB9LFxuICAgIGxpbmtQcm9wczogZnVuY3Rpb24gbGlua1Byb3BzKHBhZ2VOdW0pIHtcbiAgICAgIC8vIEFsd2F5cyAnIycgZm9yIHBhZ2luYXRpb24gY29tcG9uZW50XG4gICAgICByZXR1cm4ge1xuICAgICAgICBocmVmOiAnIydcbiAgICAgIH07XG4gICAgfVxuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMTg0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///184\n"); /***/ }), /* 185 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return PaginationNavPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__pagination_nav__ = __webpack_require__(186);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BPaginationNav */\n\n\nvar PaginationNavPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BPaginationNav: __WEBPACK_IMPORTED_MODULE_0__pagination_nav__[\"a\" /* BPaginationNav */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wYWdpbmF0aW9uLW5hdi9pbmRleC5qcz83ZTVjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtEO0FBQ0U7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxvQkFBb0IsdUVBQWM7QUFDbEM7QUFDQSxDQUFDIiwiZmlsZSI6IjE4NS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJQYWdpbmF0aW9uTmF2IH0gZnJvbSAnLi9wYWdpbmF0aW9uLW5hdic7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgUGFnaW5hdGlvbk5hdlBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJQYWdpbmF0aW9uTmF2OiBCUGFnaW5hdGlvbk5hdlxuICB9XG59KTtcbmV4cG9ydCB7IFBhZ2luYXRpb25OYXZQbHVnaW4sIEJQYWdpbmF0aW9uTmF2IH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wYWdpbmF0aW9uLW5hdi9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTg1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///185\n"); +eval("/* unused harmony export props */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_range__ = __webpack_require__(186);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_to_string__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_warn__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__components_link_link__ = __webpack_require__(14);\n\n\n\n\n\n\n\n // Common props, computed, data, render function, and methods\n// for <b-pagination> and <b-pagination-nav>\n// Threshold of limit size when we start/stop showing ellipsis\n\nvar ELLIPSIS_THRESHOLD = 3; // Default # of buttons limit\n\nvar DEFAULT_LIMIT = 5; // Make an array of N to N+X\n\nvar makePageArray = function makePageArray(startNumber, numberOfPages) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_range__[\"a\" /* default */])(numberOfPages).map(function (val, i) {\n return {\n number: startNumber + i,\n classes: null\n };\n });\n}; // Sanitize the provided limit value (converting to a number)\n\n\nvar sanitizeLimit = function sanitizeLimit(val) {\n var limit = parseInt(val, 10) || 1;\n return limit < 1 ? DEFAULT_LIMIT : limit;\n}; // Sanitize the provided current page number (converting to a number)\n\n\nvar sanitizeCurrentPage = function sanitizeCurrentPage(val, numberOfPages) {\n var page = parseInt(val, 10) || 1;\n return page > numberOfPages ? numberOfPages : page < 1 ? 1 : page;\n}; // Links don't normally respond to SPACE, so we add that\n// functionality via this handler\n\n\nvar onSpaceKey = function onSpaceKey(evt) {\n if (evt.keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].SPACE) {\n evt.preventDefault(); // Stop page from scrolling\n\n evt.stopImmediatePropagation();\n evt.stopPropagation(); // Trigger the click event on the link\n\n evt.currentTarget.click();\n return false;\n }\n};\n\nvar props = {\n disabled: {\n type: Boolean,\n default: false\n },\n value: {\n type: [Number, String],\n default: null,\n validator: function validator(value)\n /* istanbul ignore next */\n {\n var num = parseInt(value, 10);\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_4__utils_inspect__[\"g\" /* isNull */])(value) && (isNaN(num) || num < 1)) {\n Object(__WEBPACK_IMPORTED_MODULE_3__utils_warn__[\"a\" /* default */])('pagination: v-model value must be a number greater than 0');\n return false;\n }\n\n return true;\n }\n },\n limit: {\n type: [Number, String],\n default: DEFAULT_LIMIT,\n validator: function validator(value)\n /* istanbul ignore next */\n {\n var num = parseInt(value, 10);\n\n if (isNaN(num) || num < 1) {\n Object(__WEBPACK_IMPORTED_MODULE_3__utils_warn__[\"a\" /* default */])('pagination: prop \"limit\" must be a number greater than 0');\n return false;\n }\n\n return true;\n }\n },\n align: {\n type: String,\n default: 'left'\n },\n hideGotoEndButtons: {\n type: Boolean,\n default: false\n },\n ariaLabel: {\n type: String,\n default: 'Pagination'\n },\n labelFirstPage: {\n type: String,\n default: 'Go to first page'\n },\n firstText: {\n type: String,\n default: \"\\xAB\" // '«'\n\n },\n labelPrevPage: {\n type: String,\n default: 'Go to previous page'\n },\n prevText: {\n type: String,\n default: \"\\u2039\" // '‹'\n\n },\n labelNextPage: {\n type: String,\n default: 'Go to next page'\n },\n nextText: {\n type: String,\n default: \"\\u203A\" // '›'\n\n },\n labelLastPage: {\n type: String,\n default: 'Go to last page'\n },\n lastText: {\n type: String,\n default: \"\\xBB\" // '»'\n\n },\n labelPage: {\n type: [String, Function],\n default: 'Go to page'\n },\n hideEllipsis: {\n type: Boolean,\n default: false\n },\n ellipsisText: {\n type: String,\n default: \"\\u2026\" // '…'\n\n }\n}; // @vue/component\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n mixins: [__WEBPACK_IMPORTED_MODULE_6__mixins_normalize_slot__[\"a\" /* default */]],\n model: {\n prop: 'value',\n event: 'input'\n },\n props: props,\n data: function data() {\n var curr = parseInt(this.value, 10);\n return {\n // -1 signifies no page initially selected\n currentPage: curr > 0 ? curr : -1,\n localNumberOfPages: 1,\n localLimit: DEFAULT_LIMIT\n };\n },\n computed: {\n btnSize: function btnSize() {\n return this.size ? \"pagination-\".concat(this.size) : '';\n },\n alignment: function alignment() {\n var align = this.align;\n\n if (align === 'center') {\n return 'justify-content-center';\n } else if (align === 'end' || align === 'right') {\n return 'justify-content-end';\n } else if (align === 'fill') {\n // The page-items will also have 'flex-fill' added.\n // We ad text centering to make the button appearance better in fill mode.\n return 'text-center';\n }\n\n return '';\n },\n computedCurrentPage: function computedCurrentPage() {\n return sanitizeCurrentPage(this.currentPage, this.localNumberOfPages);\n },\n paginationParams: function paginationParams() {\n // Determine if we should show the the ellipsis\n var limit = this.limit;\n var numberOfPages = this.localNumberOfPages;\n var currentPage = this.computedCurrentPage;\n var hideEllipsis = this.hideEllipsis;\n var showFirstDots = false;\n var showLastDots = false;\n var numberOfLinks = limit;\n var startNumber = 1;\n\n if (numberOfPages <= limit) {\n // Special Case: Less pages available than the limit of displayed pages\n numberOfLinks = numberOfPages;\n } else if (currentPage < limit - 1 && limit > ELLIPSIS_THRESHOLD) {\n // We are near the beginning of the page list\n if (!hideEllipsis) {\n showLastDots = true;\n numberOfLinks = limit - 1;\n }\n } else if (numberOfPages - currentPage + 2 < limit && limit > ELLIPSIS_THRESHOLD) {\n // We are near the end of the list\n if (!hideEllipsis) {\n numberOfLinks = limit - 1;\n showFirstDots = true;\n }\n\n startNumber = numberOfPages - numberOfLinks + 1;\n } else {\n // We are somewhere in the middle of the page list\n if (limit > ELLIPSIS_THRESHOLD && !hideEllipsis) {\n numberOfLinks = limit - 2;\n showFirstDots = showLastDots = true;\n }\n\n startNumber = currentPage - Math.floor(numberOfLinks / 2);\n } // Sanity checks\n\n\n if (startNumber < 1) {\n /* istanbul ignore next */\n startNumber = 1;\n } else if (startNumber > numberOfPages - numberOfLinks) {\n startNumber = numberOfPages - numberOfLinks + 1;\n }\n\n return {\n showFirstDots: showFirstDots,\n showLastDots: showLastDots,\n numberOfLinks: numberOfLinks,\n startNumber: startNumber\n };\n },\n pageList: function pageList() {\n // Generates the pageList array\n var _this$paginationParam = this.paginationParams,\n numberOfLinks = _this$paginationParam.numberOfLinks,\n startNumber = _this$paginationParam.startNumber;\n var currentPage = this.computedCurrentPage; // Generate list of page numbers\n\n var pages = makePageArray(startNumber, numberOfLinks); // We limit to a total of 3 page buttons on XS screens\n // So add classes to page links to hide them for XS breakpoint\n // Note: Ellipsis will also be hidden on XS screens\n // TODO: Make this visual limit configurable based on breakpoint(s)\n\n if (pages.length > 3) {\n var idx = currentPage - startNumber; // THe following is a bootstrap-vue custom utility class\n\n var classes = 'bv-d-xs-down-none';\n\n if (idx === 0) {\n // Keep leftmost 3 buttons visible when current page is first page\n for (var i = 3; i < pages.length; i++) {\n pages[i].classes = classes;\n }\n } else if (idx === pages.length - 1) {\n // Keep rightmost 3 buttons visible when current page is last page\n for (var _i = 0; _i < pages.length - 3; _i++) {\n pages[_i].classes = classes;\n }\n } else {\n // Hide all except current page, current page - 1 and current page + 1\n for (var _i2 = 0; _i2 < idx - 1; _i2++) {\n // hide some left button(s)\n pages[_i2].classes = classes;\n }\n\n for (var _i3 = pages.length - 1; _i3 > idx + 1; _i3--) {\n // hide some right button(s)\n pages[_i3].classes = classes;\n }\n }\n }\n\n return pages;\n }\n },\n watch: {\n value: function value(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.currentPage = sanitizeCurrentPage(newValue, this.localNumberOfPages);\n }\n },\n currentPage: function currentPage(newValue, oldValue) {\n if (newValue !== oldValue) {\n // Emit null if no page selected\n this.$emit('input', newValue > 0 ? newValue : null);\n }\n },\n limit: function limit(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.localLimit = sanitizeLimit(newValue);\n }\n }\n },\n created: function created() {\n var _this = this;\n\n // Set our default values in data\n this.localLimit = sanitizeLimit(this.limit);\n this.$nextTick(function () {\n // Sanity check\n _this.currentPage = _this.currentPage > _this.localNumberOfPages ? _this.localNumberOfPages : _this.currentPage;\n });\n },\n methods: {\n getButtons: function getButtons() {\n // Return only buttons that are visible\n return Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"y\" /* selectAll */])('a.page-link', this.$el).filter(function (btn) {\n return Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"p\" /* isVisible */])(btn);\n });\n },\n setBtnFocus: function setBtnFocus(btn) {\n btn.focus();\n },\n focusCurrent: function focusCurrent() {\n var _this2 = this;\n\n // We do this in next tick to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this2.getButtons().find(function (el) {\n return parseInt(Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"g\" /* getAttr */])(el, 'aria-posinset'), 10) === _this2.computedCurrentPage;\n });\n\n if (btn && btn.focus) {\n _this2.setBtnFocus(btn);\n } else {\n // Fallback if current page is not in button list\n _this2.focusFirst();\n }\n });\n },\n focusFirst: function focusFirst() {\n var _this3 = this;\n\n // We do this in next tick to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this3.getButtons().find(function (el) {\n return !Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"n\" /* isDisabled */])(el);\n });\n\n if (btn && btn.focus && btn !== document.activeElement) {\n _this3.setBtnFocus(btn);\n }\n });\n },\n focusLast: function focusLast() {\n var _this4 = this;\n\n // We do this in next tick to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this4.getButtons().reverse().find(function (el) {\n return !Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"n\" /* isDisabled */])(el);\n });\n\n if (btn && btn.focus && btn !== document.activeElement) {\n _this4.setBtnFocus(btn);\n }\n });\n },\n focusPrev: function focusPrev() {\n var _this5 = this;\n\n // We do this in next tick to ensure buttons have finished rendering\n this.$nextTick(function () {\n var buttons = _this5.getButtons();\n\n var idx = buttons.indexOf(document.activeElement);\n\n if (idx > 0 && !Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"n\" /* isDisabled */])(buttons[idx - 1]) && buttons[idx - 1].focus) {\n _this5.setBtnFocus(buttons[idx - 1]);\n }\n });\n },\n focusNext: function focusNext() {\n var _this6 = this;\n\n // We do this in next tick to ensure buttons have finished rendering\n this.$nextTick(function () {\n var buttons = _this6.getButtons();\n\n var idx = buttons.indexOf(document.activeElement);\n var cnt = buttons.length - 1;\n\n if (idx < cnt && !Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"n\" /* isDisabled */])(buttons[idx + 1]) && buttons[idx + 1].focus) {\n _this6.setBtnFocus(buttons[idx + 1]);\n }\n });\n }\n },\n render: function render(h) {\n var _this7 = this;\n\n var buttons = [];\n var numberOfPages = this.localNumberOfPages;\n var disabled = this.disabled;\n var _this$paginationParam2 = this.paginationParams,\n showFirstDots = _this$paginationParam2.showFirstDots,\n showLastDots = _this$paginationParam2.showLastDots;\n var currentPage = this.computedCurrentPage;\n var fill = this.align === 'fill'; // Helper function and flag\n\n var isActivePage = function isActivePage(pageNum) {\n return pageNum === currentPage;\n };\n\n var noCurrPage = this.currentPage < 1; // Factory function for prev/next/first/last buttons\n\n var makeEndBtn = function makeEndBtn(linkTo, ariaLabel, btnSlot, btnText, pageTest, key) {\n var isDisabled = disabled || isActivePage(pageTest) || noCurrPage || linkTo < 1 || linkTo > numberOfPages;\n var pageNum = linkTo < 1 ? 1 : linkTo > numberOfPages ? numberOfPages : linkTo;\n var scope = {\n disabled: isDisabled,\n page: pageNum,\n index: pageNum - 1\n };\n var btnContent = _this7.normalizeSlot(btnSlot, scope) || Object(__WEBPACK_IMPORTED_MODULE_2__utils_to_string__[\"a\" /* default */])(btnText) || h();\n var inner = h(isDisabled ? 'span' : __WEBPACK_IMPORTED_MODULE_7__components_link_link__[\"a\" /* BLink */], {\n staticClass: 'page-link',\n props: isDisabled ? {} : _this7.linkProps(linkTo),\n attrs: {\n role: 'menuitem',\n tabindex: isDisabled ? null : '-1',\n 'aria-label': ariaLabel,\n 'aria-controls': _this7.ariaControls || null,\n 'aria-disabled': isDisabled ? 'true' : null\n },\n on: isDisabled ? {} : {\n click: function click(evt) {\n _this7.onClick(linkTo, evt);\n },\n keydown: onSpaceKey\n }\n }, [btnContent]);\n return h('li', {\n key: key,\n staticClass: 'page-item',\n class: {\n disabled: isDisabled,\n 'flex-fill': fill\n },\n attrs: {\n role: 'presentation',\n 'aria-hidden': isDisabled ? 'true' : null\n }\n }, [inner]);\n }; // Ellipsis factory\n\n\n var makeEllipsis = function makeEllipsis(isLast) {\n return h('li', {\n key: \"ellipsis-\".concat(isLast ? 'last' : 'first'),\n staticClass: 'page-item',\n class: ['disabled', 'bv-d-xs-down-none', fill ? 'flex-fill' : ''],\n attrs: {\n role: 'separator'\n }\n }, [h('span', {\n staticClass: 'page-link'\n }, [_this7.normalizeSlot('ellipsis-text') || Object(__WEBPACK_IMPORTED_MODULE_2__utils_to_string__[\"a\" /* default */])(_this7.ellipsisText) || h()])]);\n }; // Goto First Page button bookend\n\n\n buttons.push(this.hideGotoEndButtons ? h() : makeEndBtn(1, this.labelFirstPage, 'first-text', this.firstText, 1, 'bookend-goto-first')); // Goto Previous page button bookend\n\n buttons.push(makeEndBtn(currentPage - 1, this.labelPrevPage, 'prev-text', this.prevText, 1, 'bookend-goto-prev')); // First Ellipsis Bookend\n\n buttons.push(showFirstDots ? makeEllipsis(false) : h()); // Individual Page links\n\n this.pageList.forEach(function (page, idx) {\n var active = isActivePage(page.number) && !noCurrPage; // Active page will have tabindex of 0, or if no current page and first page button\n\n var tabIndex = disabled ? null : active || noCurrPage && idx === 0 ? '0' : '-1';\n var attrs = {\n role: 'menuitemradio',\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-controls': _this7.ariaControls || null,\n 'aria-label': Object(__WEBPACK_IMPORTED_MODULE_4__utils_inspect__[\"f\" /* isFunction */])(_this7.labelPage) ? _this7.labelPage(page.number) : \"\".concat(_this7.labelPage, \" \").concat(page.number),\n 'aria-checked': active ? 'true' : 'false',\n 'aria-posinset': page.number,\n 'aria-setsize': numberOfPages,\n // ARIA \"roving tabindex\" method\n tabindex: tabIndex\n };\n var btnContent = Object(__WEBPACK_IMPORTED_MODULE_2__utils_to_string__[\"a\" /* default */])(_this7.makePage(page.number));\n var scope = {\n page: page.number,\n index: page.number - 1,\n content: btnContent,\n active: active,\n disabled: disabled\n };\n var inner = h(disabled ? 'span' : __WEBPACK_IMPORTED_MODULE_7__components_link_link__[\"a\" /* BLink */], {\n props: disabled ? {} : _this7.linkProps(page.number),\n staticClass: 'page-link',\n attrs: attrs,\n on: disabled ? {} : {\n click: function click(evt) {\n _this7.onClick(page.number, evt);\n },\n keydown: onSpaceKey\n }\n }, [_this7.normalizeSlot('page', scope) || btnContent]);\n buttons.push(h('li', {\n key: \"page-\".concat(page.number),\n staticClass: 'page-item',\n class: [{\n disabled: disabled,\n active: active,\n 'flex-fill': fill\n }, page.classes],\n attrs: {\n role: 'presentation'\n }\n }, [inner]));\n }); // Last Ellipsis Bookend\n\n buttons.push(showLastDots ? makeEllipsis(true) : h()); // Goto Next page button bookend\n\n buttons.push(makeEndBtn(currentPage + 1, this.labelNextPage, 'next-text', this.nextText, numberOfPages, 'bookend-goto-next')); // Goto Last Page button bookend\n\n buttons.push(this.hideGotoEndButtons ? h() : makeEndBtn(numberOfPages, this.labelLastPage, 'last-text', this.lastText, numberOfPages, 'bookend-goto-last')); // Assemble the pagination buttons\n\n var pagination = h('ul', {\n ref: 'ul',\n staticClass: 'pagination',\n class: ['b-pagination', this.btnSize, this.alignment],\n attrs: {\n role: 'menubar',\n 'aria-disabled': disabled ? 'true' : 'false',\n 'aria-label': this.ariaLabel || null\n },\n on: {\n keydown: function keydown(evt) {\n var keyCode = evt.keyCode;\n var shift = evt.shiftKey;\n\n if (keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].LEFT) {\n evt.preventDefault();\n shift ? _this7.focusFirst() : _this7.focusPrev();\n } else if (keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].RIGHT) {\n evt.preventDefault();\n shift ? _this7.focusLast() : _this7.focusNext();\n }\n }\n }\n }, buttons); // if we are pagination-nav, wrap in '<nav>' wrapper\n\n if (this.isNav) {\n return h('nav', {\n attrs: {\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-hidden': disabled ? 'true' : 'false'\n }\n }, [pagination]);\n } else {\n return pagination;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vbWl4aW5zL3BhZ2luYXRpb24uanM/ZTc3NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEM7QUFDUDtBQUNPO0FBQ1Q7QUFDcUI7QUFDbUI7QUFDZjtBQUNWO0FBQ2hEO0FBQ0E7O0FBRUEsMkJBQTJCOztBQUUzQixzQkFBc0I7O0FBRXRCO0FBQ0EsU0FBUyxxRUFBSztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjs7O0FBR0E7QUFDQSxzQkFBc0IsaUVBQVE7QUFDOUIseUJBQXlCOztBQUV6QjtBQUNBLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxzRUFBTTtBQUNqQixRQUFRLG9FQUFJO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSxvRUFBSTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRWE7QUFDZixXQUFXLHVFQUFrQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRDs7QUFFakQsNERBQTREO0FBQzVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRDQUE0Qzs7QUFFNUM7O0FBRUE7QUFDQTtBQUNBLHlCQUF5QixrQkFBa0I7QUFDM0M7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLDBCQUEwQix1QkFBdUI7QUFDakQ7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLDJCQUEyQixlQUFlO0FBQzFDO0FBQ0E7QUFDQTs7QUFFQSwwQ0FBMEMsZUFBZTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLHFFQUFTO0FBQ3RCLGVBQWUscUVBQVM7QUFDeEIsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLG1FQUFPO0FBQ2pDLFNBQVM7O0FBRVQ7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHNFQUFVO0FBQzVCLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixzRUFBVTtBQUM1QixTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsd0JBQXdCLHNFQUFVO0FBQ2xDO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsMEJBQTBCLHNFQUFVO0FBQ3BDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQzs7QUFFckM7QUFDQTtBQUNBOztBQUVBLDBDQUEwQzs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtEQUErRCx5RUFBUTtBQUN2RSwwQ0FBMEMsb0VBQUs7QUFDL0M7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLE1BQU07OztBQUdOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPLDRDQUE0Qyx5RUFBUTtBQUMzRCxNQUFNOzs7QUFHTiw0SUFBNEk7O0FBRTVJLHNIQUFzSDs7QUFFdEgsNERBQTREOztBQUU1RDtBQUNBLDREQUE0RDs7QUFFNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiwwRUFBVTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIseUVBQVE7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0Msb0VBQUs7QUFDN0MsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVAsMERBQTBEOztBQUUxRCxrSUFBa0k7O0FBRWxJLGdLQUFnSzs7QUFFaEs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEIsaUVBQVE7QUFDbEM7QUFDQTtBQUNBLFdBQVcsc0JBQXNCLGlFQUFRO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLFdBQVc7O0FBRWhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIxODUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgS2V5Q29kZXMgZnJvbSAnLi4vdXRpbHMva2V5LWNvZGVzJztcbmltcG9ydCByYW5nZSBmcm9tICcuLi91dGlscy9yYW5nZSc7XG5pbXBvcnQgdG9TdHJpbmcgZnJvbSAnLi4vdXRpbHMvdG8tc3RyaW5nJztcbmltcG9ydCB3YXJuIGZyb20gJy4uL3V0aWxzL3dhcm4nO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiwgaXNOdWxsIH0gZnJvbSAnLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgeyBpc1Zpc2libGUsIGlzRGlzYWJsZWQsIHNlbGVjdEFsbCwgZ2V0QXR0ciB9IGZyb20gJy4uL3V0aWxzL2RvbSc7XG5pbXBvcnQgbm9ybWFsaXplU2xvdE1peGluIGZyb20gJy4uL21peGlucy9ub3JtYWxpemUtc2xvdCc7XG5pbXBvcnQgeyBCTGluayB9IGZyb20gJy4uL2NvbXBvbmVudHMvbGluay9saW5rJzsgLy8gQ29tbW9uIHByb3BzLCBjb21wdXRlZCwgZGF0YSwgcmVuZGVyIGZ1bmN0aW9uLCBhbmQgbWV0aG9kc1xuLy8gZm9yIDxiLXBhZ2luYXRpb24+IGFuZCA8Yi1wYWdpbmF0aW9uLW5hdj5cbi8vIFRocmVzaG9sZCBvZiBsaW1pdCBzaXplIHdoZW4gd2Ugc3RhcnQvc3RvcCBzaG93aW5nIGVsbGlwc2lzXG5cbnZhciBFTExJUFNJU19USFJFU0hPTEQgPSAzOyAvLyBEZWZhdWx0ICMgb2YgYnV0dG9ucyBsaW1pdFxuXG52YXIgREVGQVVMVF9MSU1JVCA9IDU7IC8vIE1ha2UgYW4gYXJyYXkgb2YgTiB0byBOK1hcblxudmFyIG1ha2VQYWdlQXJyYXkgPSBmdW5jdGlvbiBtYWtlUGFnZUFycmF5KHN0YXJ0TnVtYmVyLCBudW1iZXJPZlBhZ2VzKSB7XG4gIHJldHVybiByYW5nZShudW1iZXJPZlBhZ2VzKS5tYXAoZnVuY3Rpb24gKHZhbCwgaSkge1xuICAgIHJldHVybiB7XG4gICAgICBudW1iZXI6IHN0YXJ0TnVtYmVyICsgaSxcbiAgICAgIGNsYXNzZXM6IG51bGxcbiAgICB9O1xuICB9KTtcbn07IC8vIFNhbml0aXplIHRoZSBwcm92aWRlZCBsaW1pdCB2YWx1ZSAoY29udmVydGluZyB0byBhIG51bWJlcilcblxuXG52YXIgc2FuaXRpemVMaW1pdCA9IGZ1bmN0aW9uIHNhbml0aXplTGltaXQodmFsKSB7XG4gIHZhciBsaW1pdCA9IHBhcnNlSW50KHZhbCwgMTApIHx8IDE7XG4gIHJldHVybiBsaW1pdCA8IDEgPyBERUZBVUxUX0xJTUlUIDogbGltaXQ7XG59OyAvLyBTYW5pdGl6ZSB0aGUgcHJvdmlkZWQgY3VycmVudCBwYWdlIG51bWJlciAoY29udmVydGluZyB0byBhIG51bWJlcilcblxuXG52YXIgc2FuaXRpemVDdXJyZW50UGFnZSA9IGZ1bmN0aW9uIHNhbml0aXplQ3VycmVudFBhZ2UodmFsLCBudW1iZXJPZlBhZ2VzKSB7XG4gIHZhciBwYWdlID0gcGFyc2VJbnQodmFsLCAxMCkgfHwgMTtcbiAgcmV0dXJuIHBhZ2UgPiBudW1iZXJPZlBhZ2VzID8gbnVtYmVyT2ZQYWdlcyA6IHBhZ2UgPCAxID8gMSA6IHBhZ2U7XG59OyAvLyBMaW5rcyBkb24ndCBub3JtYWxseSByZXNwb25kIHRvIFNQQUNFLCBzbyB3ZSBhZGQgdGhhdFxuLy8gZnVuY3Rpb25hbGl0eSB2aWEgdGhpcyBoYW5kbGVyXG5cblxudmFyIG9uU3BhY2VLZXkgPSBmdW5jdGlvbiBvblNwYWNlS2V5KGV2dCkge1xuICBpZiAoZXZ0LmtleUNvZGUgPT09IEtleUNvZGVzLlNQQUNFKSB7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7IC8vIFN0b3AgcGFnZSBmcm9tIHNjcm9sbGluZ1xuXG4gICAgZXZ0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gVHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIGxpbmtcblxuICAgIGV2dC5jdXJyZW50VGFyZ2V0LmNsaWNrKCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5leHBvcnQgdmFyIHByb3BzID0ge1xuICBkaXNhYmxlZDoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgdmFsdWU6IHtcbiAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxuICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3IodmFsdWUpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB7XG4gICAgICB2YXIgbnVtID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcblxuICAgICAgaWYgKCFpc051bGwodmFsdWUpICYmIChpc05hTihudW0pIHx8IG51bSA8IDEpKSB7XG4gICAgICAgIHdhcm4oJ3BhZ2luYXRpb246IHYtbW9kZWwgdmFsdWUgbXVzdCBiZSBhIG51bWJlciBncmVhdGVyIHRoYW4gMCcpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSxcbiAgbGltaXQ6IHtcbiAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxuICAgIGRlZmF1bHQ6IERFRkFVTFRfTElNSVQsXG4gICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3IodmFsdWUpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB7XG4gICAgICB2YXIgbnVtID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcblxuICAgICAgaWYgKGlzTmFOKG51bSkgfHwgbnVtIDwgMSkge1xuICAgICAgICB3YXJuKCdwYWdpbmF0aW9uOiBwcm9wIFwibGltaXRcIiBtdXN0IGJlIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAwJyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9LFxuICBhbGlnbjoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAnbGVmdCdcbiAgfSxcbiAgaGlkZUdvdG9FbmRCdXR0b25zOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBhcmlhTGFiZWw6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ1BhZ2luYXRpb24nXG4gIH0sXG4gIGxhYmVsRmlyc3RQYWdlOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdHbyB0byBmaXJzdCBwYWdlJ1xuICB9LFxuICBmaXJzdFRleHQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogXCJcXHhBQlwiIC8vICfCqydcblxuICB9LFxuICBsYWJlbFByZXZQYWdlOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdHbyB0byBwcmV2aW91cyBwYWdlJ1xuICB9LFxuICBwcmV2VGV4dDoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBcIlxcdTIwMzlcIiAvLyAn4oC5J1xuXG4gIH0sXG4gIGxhYmVsTmV4dFBhZ2U6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogJ0dvIHRvIG5leHQgcGFnZSdcbiAgfSxcbiAgbmV4dFRleHQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogXCJcXHUyMDNBXCIgLy8gJ+KAuidcblxuICB9LFxuICBsYWJlbExhc3RQYWdlOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6ICdHbyB0byBsYXN0IHBhZ2UnXG4gIH0sXG4gIGxhc3RUZXh0OiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IFwiXFx4QkJcIiAvLyAnwrsnXG5cbiAgfSxcbiAgbGFiZWxQYWdlOiB7XG4gICAgdHlwZTogW1N0cmluZywgRnVuY3Rpb25dLFxuICAgIGRlZmF1bHQ6ICdHbyB0byBwYWdlJ1xuICB9LFxuICBoaWRlRWxsaXBzaXM6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIGVsbGlwc2lzVGV4dDoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBcIlxcdTIwMjZcIiAvLyAn4oCmJ1xuXG4gIH1cbn07IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbWl4aW5zOiBbbm9ybWFsaXplU2xvdE1peGluXSxcbiAgbW9kZWw6IHtcbiAgICBwcm9wOiAndmFsdWUnLFxuICAgIGV2ZW50OiAnaW5wdXQnXG4gIH0sXG4gIHByb3BzOiBwcm9wcyxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICB2YXIgY3VyciA9IHBhcnNlSW50KHRoaXMudmFsdWUsIDEwKTtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gLTEgc2lnbmlmaWVzIG5vIHBhZ2UgaW5pdGlhbGx5IHNlbGVjdGVkXG4gICAgICBjdXJyZW50UGFnZTogY3VyciA+IDAgPyBjdXJyIDogLTEsXG4gICAgICBsb2NhbE51bWJlck9mUGFnZXM6IDEsXG4gICAgICBsb2NhbExpbWl0OiBERUZBVUxUX0xJTUlUXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBidG5TaXplOiBmdW5jdGlvbiBidG5TaXplKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2l6ZSA/IFwicGFnaW5hdGlvbi1cIi5jb25jYXQodGhpcy5zaXplKSA6ICcnO1xuICAgIH0sXG4gICAgYWxpZ25tZW50OiBmdW5jdGlvbiBhbGlnbm1lbnQoKSB7XG4gICAgICB2YXIgYWxpZ24gPSB0aGlzLmFsaWduO1xuXG4gICAgICBpZiAoYWxpZ24gPT09ICdjZW50ZXInKSB7XG4gICAgICAgIHJldHVybiAnanVzdGlmeS1jb250ZW50LWNlbnRlcic7XG4gICAgICB9IGVsc2UgaWYgKGFsaWduID09PSAnZW5kJyB8fCBhbGlnbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICByZXR1cm4gJ2p1c3RpZnktY29udGVudC1lbmQnO1xuICAgICAgfSBlbHNlIGlmIChhbGlnbiA9PT0gJ2ZpbGwnKSB7XG4gICAgICAgIC8vIFRoZSBwYWdlLWl0ZW1zIHdpbGwgYWxzbyBoYXZlICdmbGV4LWZpbGwnIGFkZGVkLlxuICAgICAgICAvLyBXZSBhZCB0ZXh0IGNlbnRlcmluZyB0byBtYWtlIHRoZSBidXR0b24gYXBwZWFyYW5jZSBiZXR0ZXIgaW4gZmlsbCBtb2RlLlxuICAgICAgICByZXR1cm4gJ3RleHQtY2VudGVyJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICcnO1xuICAgIH0sXG4gICAgY29tcHV0ZWRDdXJyZW50UGFnZTogZnVuY3Rpb24gY29tcHV0ZWRDdXJyZW50UGFnZSgpIHtcbiAgICAgIHJldHVybiBzYW5pdGl6ZUN1cnJlbnRQYWdlKHRoaXMuY3VycmVudFBhZ2UsIHRoaXMubG9jYWxOdW1iZXJPZlBhZ2VzKTtcbiAgICB9LFxuICAgIHBhZ2luYXRpb25QYXJhbXM6IGZ1bmN0aW9uIHBhZ2luYXRpb25QYXJhbXMoKSB7XG4gICAgICAvLyBEZXRlcm1pbmUgaWYgd2Ugc2hvdWxkIHNob3cgdGhlIHRoZSBlbGxpcHNpc1xuICAgICAgdmFyIGxpbWl0ID0gdGhpcy5saW1pdDtcbiAgICAgIHZhciBudW1iZXJPZlBhZ2VzID0gdGhpcy5sb2NhbE51bWJlck9mUGFnZXM7XG4gICAgICB2YXIgY3VycmVudFBhZ2UgPSB0aGlzLmNvbXB1dGVkQ3VycmVudFBhZ2U7XG4gICAgICB2YXIgaGlkZUVsbGlwc2lzID0gdGhpcy5oaWRlRWxsaXBzaXM7XG4gICAgICB2YXIgc2hvd0ZpcnN0RG90cyA9IGZhbHNlO1xuICAgICAgdmFyIHNob3dMYXN0RG90cyA9IGZhbHNlO1xuICAgICAgdmFyIG51bWJlck9mTGlua3MgPSBsaW1pdDtcbiAgICAgIHZhciBzdGFydE51bWJlciA9IDE7XG5cbiAgICAgIGlmIChudW1iZXJPZlBhZ2VzIDw9IGxpbWl0KSB7XG4gICAgICAgIC8vIFNwZWNpYWwgQ2FzZTogTGVzcyBwYWdlcyBhdmFpbGFibGUgdGhhbiB0aGUgbGltaXQgb2YgZGlzcGxheWVkIHBhZ2VzXG4gICAgICAgIG51bWJlck9mTGlua3MgPSBudW1iZXJPZlBhZ2VzO1xuICAgICAgfSBlbHNlIGlmIChjdXJyZW50UGFnZSA8IGxpbWl0IC0gMSAmJiBsaW1pdCA+IEVMTElQU0lTX1RIUkVTSE9MRCkge1xuICAgICAgICAvLyBXZSBhcmUgbmVhciB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYWdlIGxpc3RcbiAgICAgICAgaWYgKCFoaWRlRWxsaXBzaXMpIHtcbiAgICAgICAgICBzaG93TGFzdERvdHMgPSB0cnVlO1xuICAgICAgICAgIG51bWJlck9mTGlua3MgPSBsaW1pdCAtIDE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobnVtYmVyT2ZQYWdlcyAtIGN1cnJlbnRQYWdlICsgMiA8IGxpbWl0ICYmIGxpbWl0ID4gRUxMSVBTSVNfVEhSRVNIT0xEKSB7XG4gICAgICAgIC8vIFdlIGFyZSBuZWFyIHRoZSBlbmQgb2YgdGhlIGxpc3RcbiAgICAgICAgaWYgKCFoaWRlRWxsaXBzaXMpIHtcbiAgICAgICAgICBudW1iZXJPZkxpbmtzID0gbGltaXQgLSAxO1xuICAgICAgICAgIHNob3dGaXJzdERvdHMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnROdW1iZXIgPSBudW1iZXJPZlBhZ2VzIC0gbnVtYmVyT2ZMaW5rcyArIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSBhcmUgc29tZXdoZXJlIGluIHRoZSBtaWRkbGUgb2YgdGhlIHBhZ2UgbGlzdFxuICAgICAgICBpZiAobGltaXQgPiBFTExJUFNJU19USFJFU0hPTEQgJiYgIWhpZGVFbGxpcHNpcykge1xuICAgICAgICAgIG51bWJlck9mTGlua3MgPSBsaW1pdCAtIDI7XG4gICAgICAgICAgc2hvd0ZpcnN0RG90cyA9IHNob3dMYXN0RG90cyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBzdGFydE51bWJlciA9IGN1cnJlbnRQYWdlIC0gTWF0aC5mbG9vcihudW1iZXJPZkxpbmtzIC8gMik7XG4gICAgICB9IC8vIFNhbml0eSBjaGVja3NcblxuXG4gICAgICBpZiAoc3RhcnROdW1iZXIgPCAxKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHN0YXJ0TnVtYmVyID0gMTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhcnROdW1iZXIgPiBudW1iZXJPZlBhZ2VzIC0gbnVtYmVyT2ZMaW5rcykge1xuICAgICAgICBzdGFydE51bWJlciA9IG51bWJlck9mUGFnZXMgLSBudW1iZXJPZkxpbmtzICsgMTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2hvd0ZpcnN0RG90czogc2hvd0ZpcnN0RG90cyxcbiAgICAgICAgc2hvd0xhc3REb3RzOiBzaG93TGFzdERvdHMsXG4gICAgICAgIG51bWJlck9mTGlua3M6IG51bWJlck9mTGlua3MsXG4gICAgICAgIHN0YXJ0TnVtYmVyOiBzdGFydE51bWJlclxuICAgICAgfTtcbiAgICB9LFxuICAgIHBhZ2VMaXN0OiBmdW5jdGlvbiBwYWdlTGlzdCgpIHtcbiAgICAgIC8vIEdlbmVyYXRlcyB0aGUgcGFnZUxpc3QgYXJyYXlcbiAgICAgIHZhciBfdGhpcyRwYWdpbmF0aW9uUGFyYW0gPSB0aGlzLnBhZ2luYXRpb25QYXJhbXMsXG4gICAgICAgICAgbnVtYmVyT2ZMaW5rcyA9IF90aGlzJHBhZ2luYXRpb25QYXJhbS5udW1iZXJPZkxpbmtzLFxuICAgICAgICAgIHN0YXJ0TnVtYmVyID0gX3RoaXMkcGFnaW5hdGlvblBhcmFtLnN0YXJ0TnVtYmVyO1xuICAgICAgdmFyIGN1cnJlbnRQYWdlID0gdGhpcy5jb21wdXRlZEN1cnJlbnRQYWdlOyAvLyBHZW5lcmF0ZSBsaXN0IG9mIHBhZ2UgbnVtYmVyc1xuXG4gICAgICB2YXIgcGFnZXMgPSBtYWtlUGFnZUFycmF5KHN0YXJ0TnVtYmVyLCBudW1iZXJPZkxpbmtzKTsgLy8gV2UgbGltaXQgdG8gYSB0b3RhbCBvZiAzIHBhZ2UgYnV0dG9ucyBvbiBYUyBzY3JlZW5zXG4gICAgICAvLyBTbyBhZGQgY2xhc3NlcyB0byBwYWdlIGxpbmtzIHRvIGhpZGUgdGhlbSBmb3IgWFMgYnJlYWtwb2ludFxuICAgICAgLy8gTm90ZTogRWxsaXBzaXMgd2lsbCBhbHNvIGJlIGhpZGRlbiBvbiBYUyBzY3JlZW5zXG4gICAgICAvLyBUT0RPOiBNYWtlIHRoaXMgdmlzdWFsIGxpbWl0IGNvbmZpZ3VyYWJsZSBiYXNlZCBvbiBicmVha3BvaW50KHMpXG5cbiAgICAgIGlmIChwYWdlcy5sZW5ndGggPiAzKSB7XG4gICAgICAgIHZhciBpZHggPSBjdXJyZW50UGFnZSAtIHN0YXJ0TnVtYmVyOyAvLyBUSGUgZm9sbG93aW5nIGlzIGEgYm9vdHN0cmFwLXZ1ZSBjdXN0b20gdXRpbGl0eSBjbGFzc1xuXG4gICAgICAgIHZhciBjbGFzc2VzID0gJ2J2LWQteHMtZG93bi1ub25lJztcblxuICAgICAgICBpZiAoaWR4ID09PSAwKSB7XG4gICAgICAgICAgLy8gS2VlcCBsZWZ0bW9zdCAzIGJ1dHRvbnMgdmlzaWJsZSB3aGVuIGN1cnJlbnQgcGFnZSBpcyBmaXJzdCBwYWdlXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDM7IGkgPCBwYWdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcGFnZXNbaV0uY2xhc3NlcyA9IGNsYXNzZXM7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGlkeCA9PT0gcGFnZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIC8vIEtlZXAgcmlnaHRtb3N0IDMgYnV0dG9ucyB2aXNpYmxlIHdoZW4gY3VycmVudCBwYWdlIGlzIGxhc3QgcGFnZVxuICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBwYWdlcy5sZW5ndGggLSAzOyBfaSsrKSB7XG4gICAgICAgICAgICBwYWdlc1tfaV0uY2xhc3NlcyA9IGNsYXNzZXM7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEhpZGUgYWxsIGV4Y2VwdCBjdXJyZW50IHBhZ2UsIGN1cnJlbnQgcGFnZSAtIDEgYW5kIGN1cnJlbnQgcGFnZSArIDFcbiAgICAgICAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBpZHggLSAxOyBfaTIrKykge1xuICAgICAgICAgICAgLy8gaGlkZSBzb21lIGxlZnQgYnV0dG9uKHMpXG4gICAgICAgICAgICBwYWdlc1tfaTJdLmNsYXNzZXMgPSBjbGFzc2VzO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAodmFyIF9pMyA9IHBhZ2VzLmxlbmd0aCAtIDE7IF9pMyA+IGlkeCArIDE7IF9pMy0tKSB7XG4gICAgICAgICAgICAvLyBoaWRlIHNvbWUgcmlnaHQgYnV0dG9uKHMpXG4gICAgICAgICAgICBwYWdlc1tfaTNdLmNsYXNzZXMgPSBjbGFzc2VzO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGFnZXM7XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShuZXdWYWx1ZSwgb2xkVmFsdWUpIHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHNhbml0aXplQ3VycmVudFBhZ2UobmV3VmFsdWUsIHRoaXMubG9jYWxOdW1iZXJPZlBhZ2VzKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGN1cnJlbnRQYWdlOiBmdW5jdGlvbiBjdXJyZW50UGFnZShuZXdWYWx1ZSwgb2xkVmFsdWUpIHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgICAgLy8gRW1pdCBudWxsIGlmIG5vIHBhZ2Ugc2VsZWN0ZWRcbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBuZXdWYWx1ZSA+IDAgPyBuZXdWYWx1ZSA6IG51bGwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgbGltaXQ6IGZ1bmN0aW9uIGxpbWl0KG5ld1ZhbHVlLCBvbGRWYWx1ZSkge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSkge1xuICAgICAgICB0aGlzLmxvY2FsTGltaXQgPSBzYW5pdGl6ZUxpbWl0KG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIC8vIFNldCBvdXIgZGVmYXVsdCB2YWx1ZXMgaW4gZGF0YVxuICAgIHRoaXMubG9jYWxMaW1pdCA9IHNhbml0aXplTGltaXQodGhpcy5saW1pdCk7XG4gICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgLy8gU2FuaXR5IGNoZWNrXG4gICAgICBfdGhpcy5jdXJyZW50UGFnZSA9IF90aGlzLmN1cnJlbnRQYWdlID4gX3RoaXMubG9jYWxOdW1iZXJPZlBhZ2VzID8gX3RoaXMubG9jYWxOdW1iZXJPZlBhZ2VzIDogX3RoaXMuY3VycmVudFBhZ2U7XG4gICAgfSk7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBnZXRCdXR0b25zOiBmdW5jdGlvbiBnZXRCdXR0b25zKCkge1xuICAgICAgLy8gUmV0dXJuIG9ubHkgYnV0dG9ucyB0aGF0IGFyZSB2aXNpYmxlXG4gICAgICByZXR1cm4gc2VsZWN0QWxsKCdhLnBhZ2UtbGluaycsIHRoaXMuJGVsKS5maWx0ZXIoZnVuY3Rpb24gKGJ0bikge1xuICAgICAgICByZXR1cm4gaXNWaXNpYmxlKGJ0bik7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHNldEJ0bkZvY3VzOiBmdW5jdGlvbiBzZXRCdG5Gb2N1cyhidG4pIHtcbiAgICAgIGJ0bi5mb2N1cygpO1xuICAgIH0sXG4gICAgZm9jdXNDdXJyZW50OiBmdW5jdGlvbiBmb2N1c0N1cnJlbnQoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgLy8gV2UgZG8gdGhpcyBpbiBuZXh0IHRpY2sgdG8gZW5zdXJlIGJ1dHRvbnMgaGF2ZSBmaW5pc2hlZCByZW5kZXJpbmdcbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGJ0biA9IF90aGlzMi5nZXRCdXR0b25zKCkuZmluZChmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoZ2V0QXR0cihlbCwgJ2FyaWEtcG9zaW5zZXQnKSwgMTApID09PSBfdGhpczIuY29tcHV0ZWRDdXJyZW50UGFnZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGJ0biAmJiBidG4uZm9jdXMpIHtcbiAgICAgICAgICBfdGhpczIuc2V0QnRuRm9jdXMoYnRuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBGYWxsYmFjayBpZiBjdXJyZW50IHBhZ2UgaXMgbm90IGluIGJ1dHRvbiBsaXN0XG4gICAgICAgICAgX3RoaXMyLmZvY3VzRmlyc3QoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBmb2N1c0ZpcnN0OiBmdW5jdGlvbiBmb2N1c0ZpcnN0KCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIC8vIFdlIGRvIHRoaXMgaW4gbmV4dCB0aWNrIHRvIGVuc3VyZSBidXR0b25zIGhhdmUgZmluaXNoZWQgcmVuZGVyaW5nXG4gICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBidG4gPSBfdGhpczMuZ2V0QnV0dG9ucygpLmZpbmQoZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgcmV0dXJuICFpc0Rpc2FibGVkKGVsKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGJ0biAmJiBidG4uZm9jdXMgJiYgYnRuICE9PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgX3RoaXMzLnNldEJ0bkZvY3VzKGJ0bik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZm9jdXNMYXN0OiBmdW5jdGlvbiBmb2N1c0xhc3QoKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgLy8gV2UgZG8gdGhpcyBpbiBuZXh0IHRpY2sgdG8gZW5zdXJlIGJ1dHRvbnMgaGF2ZSBmaW5pc2hlZCByZW5kZXJpbmdcbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGJ0biA9IF90aGlzNC5nZXRCdXR0b25zKCkucmV2ZXJzZSgpLmZpbmQoZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgcmV0dXJuICFpc0Rpc2FibGVkKGVsKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGJ0biAmJiBidG4uZm9jdXMgJiYgYnRuICE9PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgX3RoaXM0LnNldEJ0bkZvY3VzKGJ0bik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZm9jdXNQcmV2OiBmdW5jdGlvbiBmb2N1c1ByZXYoKSB7XG4gICAgICB2YXIgX3RoaXM1ID0gdGhpcztcblxuICAgICAgLy8gV2UgZG8gdGhpcyBpbiBuZXh0IHRpY2sgdG8gZW5zdXJlIGJ1dHRvbnMgaGF2ZSBmaW5pc2hlZCByZW5kZXJpbmdcbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGJ1dHRvbnMgPSBfdGhpczUuZ2V0QnV0dG9ucygpO1xuXG4gICAgICAgIHZhciBpZHggPSBidXR0b25zLmluZGV4T2YoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGlkeCA+IDAgJiYgIWlzRGlzYWJsZWQoYnV0dG9uc1tpZHggLSAxXSkgJiYgYnV0dG9uc1tpZHggLSAxXS5mb2N1cykge1xuICAgICAgICAgIF90aGlzNS5zZXRCdG5Gb2N1cyhidXR0b25zW2lkeCAtIDFdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBmb2N1c05leHQ6IGZ1bmN0aW9uIGZvY3VzTmV4dCgpIHtcbiAgICAgIHZhciBfdGhpczYgPSB0aGlzO1xuXG4gICAgICAvLyBXZSBkbyB0aGlzIGluIG5leHQgdGljayB0byBlbnN1cmUgYnV0dG9ucyBoYXZlIGZpbmlzaGVkIHJlbmRlcmluZ1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYnV0dG9ucyA9IF90aGlzNi5nZXRCdXR0b25zKCk7XG5cbiAgICAgICAgdmFyIGlkeCA9IGJ1dHRvbnMuaW5kZXhPZihkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgICAgICAgdmFyIGNudCA9IGJ1dHRvbnMubGVuZ3RoIC0gMTtcblxuICAgICAgICBpZiAoaWR4IDwgY250ICYmICFpc0Rpc2FibGVkKGJ1dHRvbnNbaWR4ICsgMV0pICYmIGJ1dHRvbnNbaWR4ICsgMV0uZm9jdXMpIHtcbiAgICAgICAgICBfdGhpczYuc2V0QnRuRm9jdXMoYnV0dG9uc1tpZHggKyAxXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBfdGhpczcgPSB0aGlzO1xuXG4gICAgdmFyIGJ1dHRvbnMgPSBbXTtcbiAgICB2YXIgbnVtYmVyT2ZQYWdlcyA9IHRoaXMubG9jYWxOdW1iZXJPZlBhZ2VzO1xuICAgIHZhciBkaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XG4gICAgdmFyIF90aGlzJHBhZ2luYXRpb25QYXJhbTIgPSB0aGlzLnBhZ2luYXRpb25QYXJhbXMsXG4gICAgICAgIHNob3dGaXJzdERvdHMgPSBfdGhpcyRwYWdpbmF0aW9uUGFyYW0yLnNob3dGaXJzdERvdHMsXG4gICAgICAgIHNob3dMYXN0RG90cyA9IF90aGlzJHBhZ2luYXRpb25QYXJhbTIuc2hvd0xhc3REb3RzO1xuICAgIHZhciBjdXJyZW50UGFnZSA9IHRoaXMuY29tcHV0ZWRDdXJyZW50UGFnZTtcbiAgICB2YXIgZmlsbCA9IHRoaXMuYWxpZ24gPT09ICdmaWxsJzsgLy8gSGVscGVyIGZ1bmN0aW9uIGFuZCBmbGFnXG5cbiAgICB2YXIgaXNBY3RpdmVQYWdlID0gZnVuY3Rpb24gaXNBY3RpdmVQYWdlKHBhZ2VOdW0pIHtcbiAgICAgIHJldHVybiBwYWdlTnVtID09PSBjdXJyZW50UGFnZTtcbiAgICB9O1xuXG4gICAgdmFyIG5vQ3VyclBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlIDwgMTsgLy8gRmFjdG9yeSBmdW5jdGlvbiBmb3IgcHJldi9uZXh0L2ZpcnN0L2xhc3QgYnV0dG9uc1xuXG4gICAgdmFyIG1ha2VFbmRCdG4gPSBmdW5jdGlvbiBtYWtlRW5kQnRuKGxpbmtUbywgYXJpYUxhYmVsLCBidG5TbG90LCBidG5UZXh0LCBwYWdlVGVzdCwga2V5KSB7XG4gICAgICB2YXIgaXNEaXNhYmxlZCA9IGRpc2FibGVkIHx8IGlzQWN0aXZlUGFnZShwYWdlVGVzdCkgfHwgbm9DdXJyUGFnZSB8fCBsaW5rVG8gPCAxIHx8IGxpbmtUbyA+IG51bWJlck9mUGFnZXM7XG4gICAgICB2YXIgcGFnZU51bSA9IGxpbmtUbyA8IDEgPyAxIDogbGlua1RvID4gbnVtYmVyT2ZQYWdlcyA/IG51bWJlck9mUGFnZXMgOiBsaW5rVG87XG4gICAgICB2YXIgc2NvcGUgPSB7XG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICBwYWdlOiBwYWdlTnVtLFxuICAgICAgICBpbmRleDogcGFnZU51bSAtIDFcbiAgICAgIH07XG4gICAgICB2YXIgYnRuQ29udGVudCA9IF90aGlzNy5ub3JtYWxpemVTbG90KGJ0blNsb3QsIHNjb3BlKSB8fCB0b1N0cmluZyhidG5UZXh0KSB8fCBoKCk7XG4gICAgICB2YXIgaW5uZXIgPSBoKGlzRGlzYWJsZWQgPyAnc3BhbicgOiBCTGluaywge1xuICAgICAgICBzdGF0aWNDbGFzczogJ3BhZ2UtbGluaycsXG4gICAgICAgIHByb3BzOiBpc0Rpc2FibGVkID8ge30gOiBfdGhpczcubGlua1Byb3BzKGxpbmtUbyksXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgcm9sZTogJ21lbnVpdGVtJyxcbiAgICAgICAgICB0YWJpbmRleDogaXNEaXNhYmxlZCA/IG51bGwgOiAnLTEnLFxuICAgICAgICAgICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsLFxuICAgICAgICAgICdhcmlhLWNvbnRyb2xzJzogX3RoaXM3LmFyaWFDb250cm9scyB8fCBudWxsLFxuICAgICAgICAgICdhcmlhLWRpc2FibGVkJzogaXNEaXNhYmxlZCA/ICd0cnVlJyA6IG51bGxcbiAgICAgICAgfSxcbiAgICAgICAgb246IGlzRGlzYWJsZWQgPyB7fSA6IHtcbiAgICAgICAgICBjbGljazogZnVuY3Rpb24gY2xpY2soZXZ0KSB7XG4gICAgICAgICAgICBfdGhpczcub25DbGljayhsaW5rVG8sIGV2dCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBrZXlkb3duOiBvblNwYWNlS2V5XG4gICAgICAgIH1cbiAgICAgIH0sIFtidG5Db250ZW50XSk7XG4gICAgICByZXR1cm4gaCgnbGknLCB7XG4gICAgICAgIGtleToga2V5LFxuICAgICAgICBzdGF0aWNDbGFzczogJ3BhZ2UtaXRlbScsXG4gICAgICAgIGNsYXNzOiB7XG4gICAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgJ2ZsZXgtZmlsbCc6IGZpbGxcbiAgICAgICAgfSxcbiAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICByb2xlOiAncHJlc2VudGF0aW9uJyxcbiAgICAgICAgICAnYXJpYS1oaWRkZW4nOiBpc0Rpc2FibGVkID8gJ3RydWUnIDogbnVsbFxuICAgICAgICB9XG4gICAgICB9LCBbaW5uZXJdKTtcbiAgICB9OyAvLyBFbGxpcHNpcyBmYWN0b3J5XG5cblxuICAgIHZhciBtYWtlRWxsaXBzaXMgPSBmdW5jdGlvbiBtYWtlRWxsaXBzaXMoaXNMYXN0KSB7XG4gICAgICByZXR1cm4gaCgnbGknLCB7XG4gICAgICAgIGtleTogXCJlbGxpcHNpcy1cIi5jb25jYXQoaXNMYXN0ID8gJ2xhc3QnIDogJ2ZpcnN0JyksXG4gICAgICAgIHN0YXRpY0NsYXNzOiAncGFnZS1pdGVtJyxcbiAgICAgICAgY2xhc3M6IFsnZGlzYWJsZWQnLCAnYnYtZC14cy1kb3duLW5vbmUnLCBmaWxsID8gJ2ZsZXgtZmlsbCcgOiAnJ10sXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgcm9sZTogJ3NlcGFyYXRvcidcbiAgICAgICAgfVxuICAgICAgfSwgW2goJ3NwYW4nLCB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiAncGFnZS1saW5rJ1xuICAgICAgfSwgW190aGlzNy5ub3JtYWxpemVTbG90KCdlbGxpcHNpcy10ZXh0JykgfHwgdG9TdHJpbmcoX3RoaXM3LmVsbGlwc2lzVGV4dCkgfHwgaCgpXSldKTtcbiAgICB9OyAvLyBHb3RvIEZpcnN0IFBhZ2UgYnV0dG9uIGJvb2tlbmRcblxuXG4gICAgYnV0dG9ucy5wdXNoKHRoaXMuaGlkZUdvdG9FbmRCdXR0b25zID8gaCgpIDogbWFrZUVuZEJ0bigxLCB0aGlzLmxhYmVsRmlyc3RQYWdlLCAnZmlyc3QtdGV4dCcsIHRoaXMuZmlyc3RUZXh0LCAxLCAnYm9va2VuZC1nb3RvLWZpcnN0JykpOyAvLyBHb3RvIFByZXZpb3VzIHBhZ2UgYnV0dG9uIGJvb2tlbmRcblxuICAgIGJ1dHRvbnMucHVzaChtYWtlRW5kQnRuKGN1cnJlbnRQYWdlIC0gMSwgdGhpcy5sYWJlbFByZXZQYWdlLCAncHJldi10ZXh0JywgdGhpcy5wcmV2VGV4dCwgMSwgJ2Jvb2tlbmQtZ290by1wcmV2JykpOyAvLyBGaXJzdCBFbGxpcHNpcyBCb29rZW5kXG5cbiAgICBidXR0b25zLnB1c2goc2hvd0ZpcnN0RG90cyA/IG1ha2VFbGxpcHNpcyhmYWxzZSkgOiBoKCkpOyAvLyBJbmRpdmlkdWFsIFBhZ2UgbGlua3NcblxuICAgIHRoaXMucGFnZUxpc3QuZm9yRWFjaChmdW5jdGlvbiAocGFnZSwgaWR4KSB7XG4gICAgICB2YXIgYWN0aXZlID0gaXNBY3RpdmVQYWdlKHBhZ2UubnVtYmVyKSAmJiAhbm9DdXJyUGFnZTsgLy8gQWN0aXZlIHBhZ2Ugd2lsbCBoYXZlIHRhYmluZGV4IG9mIDAsIG9yIGlmIG5vIGN1cnJlbnQgcGFnZSBhbmQgZmlyc3QgcGFnZSBidXR0b25cblxuICAgICAgdmFyIHRhYkluZGV4ID0gZGlzYWJsZWQgPyBudWxsIDogYWN0aXZlIHx8IG5vQ3VyclBhZ2UgJiYgaWR4ID09PSAwID8gJzAnIDogJy0xJztcbiAgICAgIHZhciBhdHRycyA9IHtcbiAgICAgICAgcm9sZTogJ21lbnVpdGVtcmFkaW8nLFxuICAgICAgICAnYXJpYS1kaXNhYmxlZCc6IGRpc2FibGVkID8gJ3RydWUnIDogbnVsbCxcbiAgICAgICAgJ2FyaWEtY29udHJvbHMnOiBfdGhpczcuYXJpYUNvbnRyb2xzIHx8IG51bGwsXG4gICAgICAgICdhcmlhLWxhYmVsJzogaXNGdW5jdGlvbihfdGhpczcubGFiZWxQYWdlKSA/IF90aGlzNy5sYWJlbFBhZ2UocGFnZS5udW1iZXIpIDogXCJcIi5jb25jYXQoX3RoaXM3LmxhYmVsUGFnZSwgXCIgXCIpLmNvbmNhdChwYWdlLm51bWJlciksXG4gICAgICAgICdhcmlhLWNoZWNrZWQnOiBhY3RpdmUgPyAndHJ1ZScgOiAnZmFsc2UnLFxuICAgICAgICAnYXJpYS1wb3NpbnNldCc6IHBhZ2UubnVtYmVyLFxuICAgICAgICAnYXJpYS1zZXRzaXplJzogbnVtYmVyT2ZQYWdlcyxcbiAgICAgICAgLy8gQVJJQSBcInJvdmluZyB0YWJpbmRleFwiIG1ldGhvZFxuICAgICAgICB0YWJpbmRleDogdGFiSW5kZXhcbiAgICAgIH07XG4gICAgICB2YXIgYnRuQ29udGVudCA9IHRvU3RyaW5nKF90aGlzNy5tYWtlUGFnZShwYWdlLm51bWJlcikpO1xuICAgICAgdmFyIHNjb3BlID0ge1xuICAgICAgICBwYWdlOiBwYWdlLm51bWJlcixcbiAgICAgICAgaW5kZXg6IHBhZ2UubnVtYmVyIC0gMSxcbiAgICAgICAgY29udGVudDogYnRuQ29udGVudCxcbiAgICAgICAgYWN0aXZlOiBhY3RpdmUsXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZFxuICAgICAgfTtcbiAgICAgIHZhciBpbm5lciA9IGgoZGlzYWJsZWQgPyAnc3BhbicgOiBCTGluaywge1xuICAgICAgICBwcm9wczogZGlzYWJsZWQgPyB7fSA6IF90aGlzNy5saW5rUHJvcHMocGFnZS5udW1iZXIpLFxuICAgICAgICBzdGF0aWNDbGFzczogJ3BhZ2UtbGluaycsXG4gICAgICAgIGF0dHJzOiBhdHRycyxcbiAgICAgICAgb246IGRpc2FibGVkID8ge30gOiB7XG4gICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uIGNsaWNrKGV2dCkge1xuICAgICAgICAgICAgX3RoaXM3Lm9uQ2xpY2socGFnZS5udW1iZXIsIGV2dCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBrZXlkb3duOiBvblNwYWNlS2V5XG4gICAgICAgIH1cbiAgICAgIH0sIFtfdGhpczcubm9ybWFsaXplU2xvdCgncGFnZScsIHNjb3BlKSB8fCBidG5Db250ZW50XSk7XG4gICAgICBidXR0b25zLnB1c2goaCgnbGknLCB7XG4gICAgICAgIGtleTogXCJwYWdlLVwiLmNvbmNhdChwYWdlLm51bWJlciksXG4gICAgICAgIHN0YXRpY0NsYXNzOiAncGFnZS1pdGVtJyxcbiAgICAgICAgY2xhc3M6IFt7XG4gICAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICAgIGFjdGl2ZTogYWN0aXZlLFxuICAgICAgICAgICdmbGV4LWZpbGwnOiBmaWxsXG4gICAgICAgIH0sIHBhZ2UuY2xhc3Nlc10sXG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgcm9sZTogJ3ByZXNlbnRhdGlvbidcbiAgICAgICAgfVxuICAgICAgfSwgW2lubmVyXSkpO1xuICAgIH0pOyAvLyBMYXN0IEVsbGlwc2lzIEJvb2tlbmRcblxuICAgIGJ1dHRvbnMucHVzaChzaG93TGFzdERvdHMgPyBtYWtlRWxsaXBzaXModHJ1ZSkgOiBoKCkpOyAvLyBHb3RvIE5leHQgcGFnZSBidXR0b24gYm9va2VuZFxuXG4gICAgYnV0dG9ucy5wdXNoKG1ha2VFbmRCdG4oY3VycmVudFBhZ2UgKyAxLCB0aGlzLmxhYmVsTmV4dFBhZ2UsICduZXh0LXRleHQnLCB0aGlzLm5leHRUZXh0LCBudW1iZXJPZlBhZ2VzLCAnYm9va2VuZC1nb3RvLW5leHQnKSk7IC8vIEdvdG8gTGFzdCBQYWdlIGJ1dHRvbiBib29rZW5kXG5cbiAgICBidXR0b25zLnB1c2godGhpcy5oaWRlR290b0VuZEJ1dHRvbnMgPyBoKCkgOiBtYWtlRW5kQnRuKG51bWJlck9mUGFnZXMsIHRoaXMubGFiZWxMYXN0UGFnZSwgJ2xhc3QtdGV4dCcsIHRoaXMubGFzdFRleHQsIG51bWJlck9mUGFnZXMsICdib29rZW5kLWdvdG8tbGFzdCcpKTsgLy8gQXNzZW1ibGUgdGhlIHBhZ2luYXRpb24gYnV0dG9uc1xuXG4gICAgdmFyIHBhZ2luYXRpb24gPSBoKCd1bCcsIHtcbiAgICAgIHJlZjogJ3VsJyxcbiAgICAgIHN0YXRpY0NsYXNzOiAncGFnaW5hdGlvbicsXG4gICAgICBjbGFzczogWydiLXBhZ2luYXRpb24nLCB0aGlzLmJ0blNpemUsIHRoaXMuYWxpZ25tZW50XSxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6ICdtZW51YmFyJyxcbiAgICAgICAgJ2FyaWEtZGlzYWJsZWQnOiBkaXNhYmxlZCA/ICd0cnVlJyA6ICdmYWxzZScsXG4gICAgICAgICdhcmlhLWxhYmVsJzogdGhpcy5hcmlhTGFiZWwgfHwgbnVsbFxuICAgICAgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIGtleWRvd246IGZ1bmN0aW9uIGtleWRvd24oZXZ0KSB7XG4gICAgICAgICAgdmFyIGtleUNvZGUgPSBldnQua2V5Q29kZTtcbiAgICAgICAgICB2YXIgc2hpZnQgPSBldnQuc2hpZnRLZXk7XG5cbiAgICAgICAgICBpZiAoa2V5Q29kZSA9PT0gS2V5Q29kZXMuTEVGVCkge1xuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBzaGlmdCA/IF90aGlzNy5mb2N1c0ZpcnN0KCkgOiBfdGhpczcuZm9jdXNQcmV2KCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChrZXlDb2RlID09PSBLZXlDb2Rlcy5SSUdIVCkge1xuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBzaGlmdCA/IF90aGlzNy5mb2N1c0xhc3QoKSA6IF90aGlzNy5mb2N1c05leHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBidXR0b25zKTsgLy8gaWYgd2UgYXJlIHBhZ2luYXRpb24tbmF2LCB3cmFwIGluICc8bmF2Picgd3JhcHBlclxuXG4gICAgaWYgKHRoaXMuaXNOYXYpIHtcbiAgICAgIHJldHVybiBoKCduYXYnLCB7XG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgJ2FyaWEtZGlzYWJsZWQnOiBkaXNhYmxlZCA/ICd0cnVlJyA6IG51bGwsXG4gICAgICAgICAgJ2FyaWEtaGlkZGVuJzogZGlzYWJsZWQgPyAndHJ1ZScgOiAnZmFsc2UnXG4gICAgICAgIH1cbiAgICAgIH0sIFtwYWdpbmF0aW9uXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwYWdpbmF0aW9uO1xuICAgIH1cbiAgfVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9taXhpbnMvcGFnaW5hdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMTg1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///185\n"); /***/ }), /* 186 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export sanitizeNumberOfPages */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BPaginationNav; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_loose_equal__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_to_string__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_warn__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_env__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__utils_router__ = __webpack_require__(105);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__mixins_pagination__ = __webpack_require__(183);\n\n\n\n\n\n\n\n\n\n\nvar NAME = 'BPaginationNav'; // Sanitize the provided number of pages (converting to a number)\n\nvar sanitizeNumberOfPages = function sanitizeNumberOfPages(value) {\n var numberOfPages = parseInt(value, 10) || 1;\n return numberOfPages < 1 ? 1 : numberOfPages;\n};\nvar props = {\n size: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'size');\n }\n },\n numberOfPages: {\n type: [Number, String],\n default: 1,\n validator: function validator(value)\n /* istanbul ignore next */\n {\n var num = parseInt(value, 10);\n\n if (isNaN(num) || num < 1) {\n Object(__WEBPACK_IMPORTED_MODULE_3__utils_warn__[\"a\" /* default */])('b-pagination: prop \"number-of-pages\" must be a number greater than 0');\n return false;\n }\n\n return true;\n }\n },\n baseUrl: {\n type: String,\n default: '/'\n },\n useRouter: {\n type: Boolean,\n default: false\n },\n linkGen: {\n type: Function,\n default: null\n },\n pageGen: {\n type: Function,\n default: null\n },\n pages: {\n // Optional array of page links\n type: Array,\n default: null\n },\n noPageDetect: {\n // Disable auto page number detection if true\n type: Boolean,\n default: false\n },\n // router-link specific props\n activeClass: {\n type: String // default: undefined\n\n },\n exact: {\n type: Boolean,\n default: false\n },\n exactActiveClass: {\n type: String // default: undefined\n\n },\n // nuxt-link specific prop(s)\n noPrefetch: {\n type: Boolean,\n default: false\n }\n}; // The render function is brought in via the pagination mixin\n// @vue/component\n\nvar BPaginationNav =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n mixins: [__WEBPACK_IMPORTED_MODULE_9__mixins_pagination__[\"a\" /* default */]],\n props: props,\n computed: {\n // Used by render function to trigger wrapping in '<nav>' element\n isNav: function isNav() {\n return true;\n },\n computedValue: function computedValue() {\n // Returns the value prop as a number or `null` if undefined or < 1\n var val = parseInt(this.value, 10);\n return isNaN(val) || val < 1 ? null : val;\n }\n },\n watch: {\n numberOfPages: function numberOfPages(newVal, oldVal) {\n var _this = this;\n\n this.$nextTick(function () {\n _this.setNumberOfPages();\n });\n },\n pages: function pages(newVal, oldVal) {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.setNumberOfPages();\n });\n }\n },\n created: function created() {\n this.setNumberOfPages();\n },\n mounted: function mounted() {\n var _this3 = this;\n\n if (this.$router) {\n // We only add the watcher if vue router is detected\n this.$watch('$route', function (to, from) {\n _this3.$nextTick(function () {\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"w\" /* requestAF */])(function () {\n _this3.guessCurrentPage();\n });\n });\n });\n }\n },\n methods: {\n setNumberOfPages: function setNumberOfPages() {\n var _this4 = this;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"a\" /* isArray */])(this.pages) && this.pages.length > 0) {\n this.localNumberOfPages = this.pages.length;\n } else {\n this.localNumberOfPages = sanitizeNumberOfPages(this.numberOfPages);\n }\n\n this.$nextTick(function () {\n _this4.guessCurrentPage();\n });\n },\n onClick: function onClick(pageNum, evt) {\n var _this5 = this;\n\n // Dont do anything if clicking the current active page\n if (pageNum === this.currentPage) {\n return;\n }\n\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"w\" /* requestAF */])(function () {\n // Update the v-model\n // Done in in requestAF() to allow browser to complete the\n // native browser click handling of a link\n _this5.currentPage = pageNum;\n\n _this5.$emit('change', pageNum);\n });\n this.$nextTick(function () {\n // Done in a nextTick() to ensure rendering complete\n try {\n // Emulate native link click page reloading behaviour by blurring the\n // paginator and returning focus to the document\n var target = evt.currentTarget || evt.target;\n target.blur();\n } catch (e) {}\n });\n },\n getPageInfo: function getPageInfo(pageNum) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"a\" /* isArray */])(this.pages) || this.pages.length === 0 || Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"n\" /* isUndefined */])(this.pages[pageNum - 1])) {\n var link = \"\".concat(this.baseUrl).concat(pageNum);\n return {\n link: this.useRouter ? {\n path: link\n } : link,\n text: Object(__WEBPACK_IMPORTED_MODULE_2__utils_to_string__[\"a\" /* default */])(pageNum)\n };\n }\n\n var info = this.pages[pageNum - 1];\n\n if (Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"i\" /* isObject */])(info)) {\n var _link = info.link;\n return {\n // Normalize link for router use\n link: Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"i\" /* isObject */])(_link) ? _link : this.useRouter ? {\n path: _link\n } : _link,\n // Make sure text has a value\n text: Object(__WEBPACK_IMPORTED_MODULE_2__utils_to_string__[\"a\" /* default */])(info.text || pageNum)\n };\n } else {\n return {\n link: Object(__WEBPACK_IMPORTED_MODULE_2__utils_to_string__[\"a\" /* default */])(info),\n text: Object(__WEBPACK_IMPORTED_MODULE_2__utils_to_string__[\"a\" /* default */])(pageNum)\n };\n }\n },\n makePage: function makePage(pageNum) {\n var info = this.getPageInfo(pageNum);\n\n if (this.pageGen && Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"f\" /* isFunction */])(this.pageGen)) {\n return this.pageGen(pageNum, info);\n }\n\n return info.text;\n },\n makeLink: function makeLink(pageNum) {\n var info = this.getPageInfo(pageNum);\n\n if (this.linkGen && Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"f\" /* isFunction */])(this.linkGen)) {\n return this.linkGen(pageNum, info);\n }\n\n return info.link;\n },\n linkProps: function linkProps(pageNum) {\n var link = this.makeLink(pageNum);\n var props = {\n target: this.target || null,\n rel: this.rel || null,\n disabled: this.disabled,\n // The following props are only used if BLink detects router\n exact: this.exact,\n activeClass: this.activeClass,\n exactActiveClass: this.exactActiveClass,\n append: this.append,\n replace: this.replace,\n // nuxt-link specific prop\n noPrefetch: this.noPrefetch\n };\n\n if (this.useRouter || Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"i\" /* isObject */])(link)) {\n props.to = link;\n } else {\n props.href = link;\n }\n\n return props;\n },\n resolveLink: function resolveLink() {\n var to = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n // Given a to (or href string), convert to normalized route-like structure\n // Works only client side!!\n var link;\n\n try {\n // Convert the `to` to a HREF via a temporary `a` tag\n link = document.createElement('a');\n link.href = Object(__WEBPACK_IMPORTED_MODULE_8__utils_router__[\"a\" /* computeHref */])({\n to: to\n }, 'a', '/', '/'); // We need to add the anchor to the document to make sure the\n // `pathname` is correctly detected in any browser (i.e. IE)\n\n document.body.appendChild(link); // Once href is assigned, the link will be normalized to the full URL bits\n\n var _link2 = link,\n pathname = _link2.pathname,\n hash = _link2.hash,\n search = _link2.search; // Remove link from document\n\n document.body.removeChild(link); // Return the location in a route-like object\n\n return {\n path: pathname,\n hash: hash,\n query: Object(__WEBPACK_IMPORTED_MODULE_8__utils_router__[\"e\" /* parseQuery */])(search)\n };\n } catch (e) {\n /* istanbul ignore next */\n try {\n link && link.parentNode && link.parentNode.removeChild(link);\n } catch (e) {}\n /* istanbul ignore next */\n\n\n return {};\n }\n },\n resolveRoute: function resolveRoute() {\n var to = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n // Given a to (or href string), convert to normalized route location structure\n // works only when router available!!\n try {\n var route = this.$router.resolve(to, this.$route).route;\n return {\n path: route.path,\n hash: route.hash,\n query: route.query\n };\n } catch (e) {\n /* istanbul ignore next */\n return {};\n }\n },\n guessCurrentPage: function guessCurrentPage() {\n var guess = this.computedValue;\n var $router = this.$router;\n var $route = this.$route; // This section only occurs if we are client side, or server-side with $router\n\n /* istanbul ignore else */\n\n if (!this.noPageDetect && !guess && (__WEBPACK_IMPORTED_MODULE_6__utils_env__[\"j\" /* isBrowser */] || !__WEBPACK_IMPORTED_MODULE_6__utils_env__[\"j\" /* isBrowser */] && $router)) {\n // Current route (if router available)\n var currRoute = $router && $route ? {\n path: $route.path,\n hash: $route.hash,\n query: $route.query\n } : {}; // Current page full HREF (if client side). Can't be done as a computed prop!\n\n var loc = __WEBPACK_IMPORTED_MODULE_6__utils_env__[\"j\" /* isBrowser */] ? window.location || document.location : null;\n var currLink = loc ? {\n path: loc.pathname,\n hash: loc.hash,\n query: Object(__WEBPACK_IMPORTED_MODULE_8__utils_router__[\"e\" /* parseQuery */])(loc.search)\n } : {}; // Loop through the possible pages looking for a match until found\n\n for (var page = 1; !guess && page <= this.localNumberOfPages; page++) {\n var to = this.makeLink(page);\n\n if ($router && (Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"i\" /* isObject */])(to) || this.useRouter)) {\n // Resolve the page via the $router\n guess = Object(__WEBPACK_IMPORTED_MODULE_1__utils_loose_equal__[\"a\" /* default */])(this.resolveRoute(to), currRoute) ? page : null;\n } else if (__WEBPACK_IMPORTED_MODULE_6__utils_env__[\"j\" /* isBrowser */]) {\n // If no $router available (or !this.useRouter when `to` is a string)\n // we compare using parsed URIs\n guess = Object(__WEBPACK_IMPORTED_MODULE_1__utils_loose_equal__[\"a\" /* default */])(this.resolveLink(to), currLink) ? page : null;\n } else {\n // probably SSR, but no $router so we can't guess, so lets break out of\n // the loop early\n\n /* istanbul ignore next */\n guess = -1;\n }\n }\n } // We set currentPage to 0 to trigger an $emit('input', null)\n // As the default for this.currentPage is -1 when no value is specified\n // And valid page numbers are greater than 0\n\n\n this.currentPage = guess > 0 ? guess : 0;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wYWdpbmF0aW9uLW5hdi9wYWdpbmF0aW9uLW5hdi5qcz9lM2EzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNlO0FBQ0o7QUFDVDtBQUNvQjtBQUNaO0FBQ0E7QUFDcUM7QUFDcEI7QUFDUDtBQUN0RCw0QkFBNEI7O0FBRXJCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsb0VBQUk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7O0FBRU87QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQSxXQUFXLG1FQUFlO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUscUVBQVM7QUFDbkI7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUEsVUFBVSx1RUFBTztBQUNqQjtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTSxxRUFBUztBQUNmO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxXQUFXLHVFQUFPLDJDQUEyQywyRUFBVztBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxnQkFBZ0IseUVBQVE7QUFDeEI7QUFDQTs7QUFFQTs7QUFFQSxVQUFVLHdFQUFRO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQix3RUFBUTtBQUN4QjtBQUNBLFdBQVc7QUFDWDtBQUNBLGdCQUFnQix5RUFBUTtBQUN4QjtBQUNBLE9BQU87QUFDUDtBQUNBLGdCQUFnQix5RUFBUTtBQUN4QixnQkFBZ0IseUVBQVE7QUFDeEI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLDBCQUEwQiwwRUFBVTtBQUNwQztBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEsMEJBQTBCLDBFQUFVO0FBQ3BDO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRCQUE0Qix3RUFBUTtBQUNwQztBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDBFQUFXO0FBQy9CO0FBQ0EsU0FBUyxpQkFBaUI7QUFDMUI7O0FBRUEsd0NBQXdDOztBQUV4QztBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7O0FBRW5DLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHlFQUFVO0FBQzNCO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7O0FBR0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsK0JBQStCOztBQUUvQjs7QUFFQSwyQ0FBMkMsNkRBQVMsS0FBSyw2REFBUztBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxNQUFNOztBQUVmLGtCQUFrQiw2REFBUztBQUMzQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIseUVBQVU7QUFDM0IsU0FBUyxNQUFNOztBQUVmLDBCQUEwQiwyQ0FBMkM7QUFDckU7O0FBRUEsMEJBQTBCLHdFQUFRO0FBQ2xDO0FBQ0Esb0JBQW9CLDJFQUFVO0FBQzlCLFdBQVcsVUFBVSw2REFBUztBQUM5QjtBQUNBO0FBQ0Esb0JBQW9CLDJFQUFVO0FBQzlCLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMTg2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IGxvb3NlRXF1YWwgZnJvbSAnLi4vLi4vdXRpbHMvbG9vc2UtZXF1YWwnO1xuaW1wb3J0IHRvU3RyaW5nIGZyb20gJy4uLy4uL3V0aWxzL3RvLXN0cmluZyc7XG5pbXBvcnQgd2FybiBmcm9tICcuLi8uLi91dGlscy93YXJuJztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyByZXF1ZXN0QUYgfSBmcm9tICcuLi8uLi91dGlscy9kb20nO1xuaW1wb3J0IHsgaXNCcm93c2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvZW52JztcbmltcG9ydCB7IGlzQXJyYXksIGlzVW5kZWZpbmVkLCBpc0Z1bmN0aW9uLCBpc09iamVjdCB9IGZyb20gJy4uLy4uL3V0aWxzL2luc3BlY3QnO1xuaW1wb3J0IHsgY29tcHV0ZUhyZWYsIHBhcnNlUXVlcnkgfSBmcm9tICcuLi8uLi91dGlscy9yb3V0ZXInO1xuaW1wb3J0IHBhZ2luYXRpb25NaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvcGFnaW5hdGlvbic7XG52YXIgTkFNRSA9ICdCUGFnaW5hdGlvbk5hdic7IC8vIFNhbml0aXplIHRoZSBwcm92aWRlZCBudW1iZXIgb2YgcGFnZXMgKGNvbnZlcnRpbmcgdG8gYSBudW1iZXIpXG5cbmV4cG9ydCB2YXIgc2FuaXRpemVOdW1iZXJPZlBhZ2VzID0gZnVuY3Rpb24gc2FuaXRpemVOdW1iZXJPZlBhZ2VzKHZhbHVlKSB7XG4gIHZhciBudW1iZXJPZlBhZ2VzID0gcGFyc2VJbnQodmFsdWUsIDEwKSB8fCAxO1xuICByZXR1cm4gbnVtYmVyT2ZQYWdlcyA8IDEgPyAxIDogbnVtYmVyT2ZQYWdlcztcbn07XG52YXIgcHJvcHMgPSB7XG4gIHNpemU6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdzaXplJyk7XG4gICAgfVxuICB9LFxuICBudW1iZXJPZlBhZ2VzOiB7XG4gICAgdHlwZTogW051bWJlciwgU3RyaW5nXSxcbiAgICBkZWZhdWx0OiAxLFxuICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbHVlKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAge1xuICAgICAgdmFyIG51bSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG5cbiAgICAgIGlmIChpc05hTihudW0pIHx8IG51bSA8IDEpIHtcbiAgICAgICAgd2FybignYi1wYWdpbmF0aW9uOiBwcm9wIFwibnVtYmVyLW9mLXBhZ2VzXCIgbXVzdCBiZSBhIG51bWJlciBncmVhdGVyIHRoYW4gMCcpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSxcbiAgYmFzZVVybDoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAnLydcbiAgfSxcbiAgdXNlUm91dGVyOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBsaW5rR2VuOiB7XG4gICAgdHlwZTogRnVuY3Rpb24sXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBwYWdlR2VuOiB7XG4gICAgdHlwZTogRnVuY3Rpb24sXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBwYWdlczoge1xuICAgIC8vIE9wdGlvbmFsIGFycmF5IG9mIHBhZ2UgbGlua3NcbiAgICB0eXBlOiBBcnJheSxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH0sXG4gIG5vUGFnZURldGVjdDoge1xuICAgIC8vIERpc2FibGUgYXV0byBwYWdlIG51bWJlciBkZXRlY3Rpb24gaWYgdHJ1ZVxuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgLy8gcm91dGVyLWxpbmsgc3BlY2lmaWMgcHJvcHNcbiAgYWN0aXZlQ2xhc3M6IHtcbiAgICB0eXBlOiBTdHJpbmcgLy8gZGVmYXVsdDogdW5kZWZpbmVkXG5cbiAgfSxcbiAgZXhhY3Q6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIGV4YWN0QWN0aXZlQ2xhc3M6IHtcbiAgICB0eXBlOiBTdHJpbmcgLy8gZGVmYXVsdDogdW5kZWZpbmVkXG5cbiAgfSxcbiAgLy8gbnV4dC1saW5rIHNwZWNpZmljIHByb3AocylcbiAgbm9QcmVmZXRjaDoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfVxufTsgLy8gVGhlIHJlbmRlciBmdW5jdGlvbiBpcyBicm91Z2h0IGluIHZpYSB0aGUgcGFnaW5hdGlvbiBtaXhpblxuLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCUGFnaW5hdGlvbk5hdiA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogTkFNRSxcbiAgbWl4aW5zOiBbcGFnaW5hdGlvbk1peGluXSxcbiAgcHJvcHM6IHByb3BzLFxuICBjb21wdXRlZDoge1xuICAgIC8vIFVzZWQgYnkgcmVuZGVyIGZ1bmN0aW9uIHRvIHRyaWdnZXIgd3JhcHBpbmcgaW4gJzxuYXY+JyBlbGVtZW50XG4gICAgaXNOYXY6IGZ1bmN0aW9uIGlzTmF2KCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBjb21wdXRlZFZhbHVlOiBmdW5jdGlvbiBjb21wdXRlZFZhbHVlKCkge1xuICAgICAgLy8gUmV0dXJucyB0aGUgdmFsdWUgcHJvcCBhcyBhIG51bWJlciBvciBgbnVsbGAgaWYgdW5kZWZpbmVkIG9yIDwgMVxuICAgICAgdmFyIHZhbCA9IHBhcnNlSW50KHRoaXMudmFsdWUsIDEwKTtcbiAgICAgIHJldHVybiBpc05hTih2YWwpIHx8IHZhbCA8IDEgPyBudWxsIDogdmFsO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBudW1iZXJPZlBhZ2VzOiBmdW5jdGlvbiBudW1iZXJPZlBhZ2VzKG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzLnNldE51bWJlck9mUGFnZXMoKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcGFnZXM6IGZ1bmN0aW9uIHBhZ2VzKG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczIuc2V0TnVtYmVyT2ZQYWdlcygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHRoaXMuc2V0TnVtYmVyT2ZQYWdlcygpO1xuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgaWYgKHRoaXMuJHJvdXRlcikge1xuICAgICAgLy8gV2Ugb25seSBhZGQgdGhlIHdhdGNoZXIgaWYgdnVlIHJvdXRlciBpcyBkZXRlY3RlZFxuICAgICAgdGhpcy4kd2F0Y2goJyRyb3V0ZScsIGZ1bmN0aW9uICh0bywgZnJvbSkge1xuICAgICAgICBfdGhpczMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXF1ZXN0QUYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMzLmd1ZXNzQ3VycmVudFBhZ2UoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBzZXROdW1iZXJPZlBhZ2VzOiBmdW5jdGlvbiBzZXROdW1iZXJPZlBhZ2VzKCkge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICAgIGlmIChpc0FycmF5KHRoaXMucGFnZXMpICYmIHRoaXMucGFnZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmxvY2FsTnVtYmVyT2ZQYWdlcyA9IHRoaXMucGFnZXMubGVuZ3RoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2NhbE51bWJlck9mUGFnZXMgPSBzYW5pdGl6ZU51bWJlck9mUGFnZXModGhpcy5udW1iZXJPZlBhZ2VzKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczQuZ3Vlc3NDdXJyZW50UGFnZSgpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKHBhZ2VOdW0sIGV2dCkge1xuICAgICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICAgIC8vIERvbnQgZG8gYW55dGhpbmcgaWYgY2xpY2tpbmcgdGhlIGN1cnJlbnQgYWN0aXZlIHBhZ2VcbiAgICAgIGlmIChwYWdlTnVtID09PSB0aGlzLmN1cnJlbnRQYWdlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVxdWVzdEFGKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gVXBkYXRlIHRoZSB2LW1vZGVsXG4gICAgICAgIC8vIERvbmUgaW4gaW4gcmVxdWVzdEFGKCkgdG8gYWxsb3cgYnJvd3NlciB0byBjb21wbGV0ZSB0aGVcbiAgICAgICAgLy8gbmF0aXZlIGJyb3dzZXIgY2xpY2sgaGFuZGxpbmcgb2YgYSBsaW5rXG4gICAgICAgIF90aGlzNS5jdXJyZW50UGFnZSA9IHBhZ2VOdW07XG5cbiAgICAgICAgX3RoaXM1LiRlbWl0KCdjaGFuZ2UnLCBwYWdlTnVtKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBEb25lIGluIGEgbmV4dFRpY2soKSB0byBlbnN1cmUgcmVuZGVyaW5nIGNvbXBsZXRlXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gRW11bGF0ZSBuYXRpdmUgbGluayBjbGljayBwYWdlIHJlbG9hZGluZyBiZWhhdmlvdXIgYnkgYmx1cnJpbmcgdGhlXG4gICAgICAgICAgLy8gcGFnaW5hdG9yIGFuZCByZXR1cm5pbmcgZm9jdXMgdG8gdGhlIGRvY3VtZW50XG4gICAgICAgICAgdmFyIHRhcmdldCA9IGV2dC5jdXJyZW50VGFyZ2V0IHx8IGV2dC50YXJnZXQ7XG4gICAgICAgICAgdGFyZ2V0LmJsdXIoKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZ2V0UGFnZUluZm86IGZ1bmN0aW9uIGdldFBhZ2VJbmZvKHBhZ2VOdW0pIHtcbiAgICAgIGlmICghaXNBcnJheSh0aGlzLnBhZ2VzKSB8fCB0aGlzLnBhZ2VzLmxlbmd0aCA9PT0gMCB8fCBpc1VuZGVmaW5lZCh0aGlzLnBhZ2VzW3BhZ2VOdW0gLSAxXSkpIHtcbiAgICAgICAgdmFyIGxpbmsgPSBcIlwiLmNvbmNhdCh0aGlzLmJhc2VVcmwpLmNvbmNhdChwYWdlTnVtKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsaW5rOiB0aGlzLnVzZVJvdXRlciA/IHtcbiAgICAgICAgICAgIHBhdGg6IGxpbmtcbiAgICAgICAgICB9IDogbGluayxcbiAgICAgICAgICB0ZXh0OiB0b1N0cmluZyhwYWdlTnVtKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB2YXIgaW5mbyA9IHRoaXMucGFnZXNbcGFnZU51bSAtIDFdO1xuXG4gICAgICBpZiAoaXNPYmplY3QoaW5mbykpIHtcbiAgICAgICAgdmFyIF9saW5rID0gaW5mby5saW5rO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC8vIE5vcm1hbGl6ZSBsaW5rIGZvciByb3V0ZXIgdXNlXG4gICAgICAgICAgbGluazogaXNPYmplY3QoX2xpbmspID8gX2xpbmsgOiB0aGlzLnVzZVJvdXRlciA/IHtcbiAgICAgICAgICAgIHBhdGg6IF9saW5rXG4gICAgICAgICAgfSA6IF9saW5rLFxuICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0ZXh0IGhhcyBhIHZhbHVlXG4gICAgICAgICAgdGV4dDogdG9TdHJpbmcoaW5mby50ZXh0IHx8IHBhZ2VOdW0pXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbms6IHRvU3RyaW5nKGluZm8pLFxuICAgICAgICAgIHRleHQ6IHRvU3RyaW5nKHBhZ2VOdW0pXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSxcbiAgICBtYWtlUGFnZTogZnVuY3Rpb24gbWFrZVBhZ2UocGFnZU51bSkge1xuICAgICAgdmFyIGluZm8gPSB0aGlzLmdldFBhZ2VJbmZvKHBhZ2VOdW0pO1xuXG4gICAgICBpZiAodGhpcy5wYWdlR2VuICYmIGlzRnVuY3Rpb24odGhpcy5wYWdlR2VuKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYWdlR2VuKHBhZ2VOdW0sIGluZm8pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5mby50ZXh0O1xuICAgIH0sXG4gICAgbWFrZUxpbms6IGZ1bmN0aW9uIG1ha2VMaW5rKHBhZ2VOdW0pIHtcbiAgICAgIHZhciBpbmZvID0gdGhpcy5nZXRQYWdlSW5mbyhwYWdlTnVtKTtcblxuICAgICAgaWYgKHRoaXMubGlua0dlbiAmJiBpc0Z1bmN0aW9uKHRoaXMubGlua0dlbikpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGlua0dlbihwYWdlTnVtLCBpbmZvKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluZm8ubGluaztcbiAgICB9LFxuICAgIGxpbmtQcm9wczogZnVuY3Rpb24gbGlua1Byb3BzKHBhZ2VOdW0pIHtcbiAgICAgIHZhciBsaW5rID0gdGhpcy5tYWtlTGluayhwYWdlTnVtKTtcbiAgICAgIHZhciBwcm9wcyA9IHtcbiAgICAgICAgdGFyZ2V0OiB0aGlzLnRhcmdldCB8fCBudWxsLFxuICAgICAgICByZWw6IHRoaXMucmVsIHx8IG51bGwsXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkLFxuICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHByb3BzIGFyZSBvbmx5IHVzZWQgaWYgQkxpbmsgZGV0ZWN0cyByb3V0ZXJcbiAgICAgICAgZXhhY3Q6IHRoaXMuZXhhY3QsXG4gICAgICAgIGFjdGl2ZUNsYXNzOiB0aGlzLmFjdGl2ZUNsYXNzLFxuICAgICAgICBleGFjdEFjdGl2ZUNsYXNzOiB0aGlzLmV4YWN0QWN0aXZlQ2xhc3MsXG4gICAgICAgIGFwcGVuZDogdGhpcy5hcHBlbmQsXG4gICAgICAgIHJlcGxhY2U6IHRoaXMucmVwbGFjZSxcbiAgICAgICAgLy8gbnV4dC1saW5rIHNwZWNpZmljIHByb3BcbiAgICAgICAgbm9QcmVmZXRjaDogdGhpcy5ub1ByZWZldGNoXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy51c2VSb3V0ZXIgfHwgaXNPYmplY3QobGluaykpIHtcbiAgICAgICAgcHJvcHMudG8gPSBsaW5rO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvcHMuaHJlZiA9IGxpbms7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcm9wcztcbiAgICB9LFxuICAgIHJlc29sdmVMaW5rOiBmdW5jdGlvbiByZXNvbHZlTGluaygpIHtcbiAgICAgIHZhciB0byA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogJyc7XG4gICAgICAvLyBHaXZlbiBhIHRvIChvciBocmVmIHN0cmluZyksIGNvbnZlcnQgdG8gbm9ybWFsaXplZCByb3V0ZS1saWtlIHN0cnVjdHVyZVxuICAgICAgLy8gV29ya3Mgb25seSBjbGllbnQgc2lkZSEhXG4gICAgICB2YXIgbGluaztcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gQ29udmVydCB0aGUgYHRvYCB0byBhIEhSRUYgdmlhIGEgdGVtcG9yYXJ5IGBhYCB0YWdcbiAgICAgICAgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgbGluay5ocmVmID0gY29tcHV0ZUhyZWYoe1xuICAgICAgICAgIHRvOiB0b1xuICAgICAgICB9LCAnYScsICcvJywgJy8nKTsgLy8gV2UgbmVlZCB0byBhZGQgdGhlIGFuY2hvciB0byB0aGUgZG9jdW1lbnQgdG8gbWFrZSBzdXJlIHRoZVxuICAgICAgICAvLyBgcGF0aG5hbWVgIGlzIGNvcnJlY3RseSBkZXRlY3RlZCBpbiBhbnkgYnJvd3NlciAoaS5lLiBJRSlcblxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspOyAvLyBPbmNlIGhyZWYgaXMgYXNzaWduZWQsIHRoZSBsaW5rIHdpbGwgYmUgbm9ybWFsaXplZCB0byB0aGUgZnVsbCBVUkwgYml0c1xuXG4gICAgICAgIHZhciBfbGluazIgPSBsaW5rLFxuICAgICAgICAgICAgcGF0aG5hbWUgPSBfbGluazIucGF0aG5hbWUsXG4gICAgICAgICAgICBoYXNoID0gX2xpbmsyLmhhc2gsXG4gICAgICAgICAgICBzZWFyY2ggPSBfbGluazIuc2VhcmNoOyAvLyBSZW1vdmUgbGluayBmcm9tIGRvY3VtZW50XG5cbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTsgLy8gUmV0dXJuIHRoZSBsb2NhdGlvbiBpbiBhIHJvdXRlLWxpa2Ugb2JqZWN0XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYXRoOiBwYXRobmFtZSxcbiAgICAgICAgICBoYXNoOiBoYXNoLFxuICAgICAgICAgIHF1ZXJ5OiBwYXJzZVF1ZXJ5KHNlYXJjaClcbiAgICAgICAgfTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsaW5rICYmIGxpbmsucGFyZW50Tm9kZSAmJiBsaW5rLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cblxuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICByZXNvbHZlUm91dGU6IGZ1bmN0aW9uIHJlc29sdmVSb3V0ZSgpIHtcbiAgICAgIHZhciB0byA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogJyc7XG5cbiAgICAgIC8vIEdpdmVuIGEgdG8gKG9yIGhyZWYgc3RyaW5nKSwgY29udmVydCB0byBub3JtYWxpemVkIHJvdXRlIGxvY2F0aW9uIHN0cnVjdHVyZVxuICAgICAgLy8gd29ya3Mgb25seSB3aGVuIHJvdXRlciBhdmFpbGFibGUhIVxuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHJvdXRlID0gdGhpcy4kcm91dGVyLnJlc29sdmUodG8sIHRoaXMuJHJvdXRlKS5yb3V0ZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYXRoOiByb3V0ZS5wYXRoLFxuICAgICAgICAgIGhhc2g6IHJvdXRlLmhhc2gsXG4gICAgICAgICAgcXVlcnk6IHJvdXRlLnF1ZXJ5XG4gICAgICAgIH07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGd1ZXNzQ3VycmVudFBhZ2U6IGZ1bmN0aW9uIGd1ZXNzQ3VycmVudFBhZ2UoKSB7XG4gICAgICB2YXIgZ3Vlc3MgPSB0aGlzLmNvbXB1dGVkVmFsdWU7XG4gICAgICB2YXIgJHJvdXRlciA9IHRoaXMuJHJvdXRlcjtcbiAgICAgIHZhciAkcm91dGUgPSB0aGlzLiRyb3V0ZTsgLy8gVGhpcyBzZWN0aW9uIG9ubHkgb2NjdXJzIGlmIHdlIGFyZSBjbGllbnQgc2lkZSwgb3Igc2VydmVyLXNpZGUgd2l0aCAkcm91dGVyXG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG5cbiAgICAgIGlmICghdGhpcy5ub1BhZ2VEZXRlY3QgJiYgIWd1ZXNzICYmIChpc0Jyb3dzZXIgfHwgIWlzQnJvd3NlciAmJiAkcm91dGVyKSkge1xuICAgICAgICAvLyBDdXJyZW50IHJvdXRlIChpZiByb3V0ZXIgYXZhaWxhYmxlKVxuICAgICAgICB2YXIgY3VyclJvdXRlID0gJHJvdXRlciAmJiAkcm91dGUgPyB7XG4gICAgICAgICAgcGF0aDogJHJvdXRlLnBhdGgsXG4gICAgICAgICAgaGFzaDogJHJvdXRlLmhhc2gsXG4gICAgICAgICAgcXVlcnk6ICRyb3V0ZS5xdWVyeVxuICAgICAgICB9IDoge307IC8vIEN1cnJlbnQgcGFnZSBmdWxsIEhSRUYgKGlmIGNsaWVudCBzaWRlKS4gQ2FuJ3QgYmUgZG9uZSBhcyBhIGNvbXB1dGVkIHByb3AhXG5cbiAgICAgICAgdmFyIGxvYyA9IGlzQnJvd3NlciA/IHdpbmRvdy5sb2NhdGlvbiB8fCBkb2N1bWVudC5sb2NhdGlvbiA6IG51bGw7XG4gICAgICAgIHZhciBjdXJyTGluayA9IGxvYyA/IHtcbiAgICAgICAgICBwYXRoOiBsb2MucGF0aG5hbWUsXG4gICAgICAgICAgaGFzaDogbG9jLmhhc2gsXG4gICAgICAgICAgcXVlcnk6IHBhcnNlUXVlcnkobG9jLnNlYXJjaClcbiAgICAgICAgfSA6IHt9OyAvLyBMb29wIHRocm91Z2ggdGhlIHBvc3NpYmxlIHBhZ2VzIGxvb2tpbmcgZm9yIGEgbWF0Y2ggdW50aWwgZm91bmRcblxuICAgICAgICBmb3IgKHZhciBwYWdlID0gMTsgIWd1ZXNzICYmIHBhZ2UgPD0gdGhpcy5sb2NhbE51bWJlck9mUGFnZXM7IHBhZ2UrKykge1xuICAgICAgICAgIHZhciB0byA9IHRoaXMubWFrZUxpbmsocGFnZSk7XG5cbiAgICAgICAgICBpZiAoJHJvdXRlciAmJiAoaXNPYmplY3QodG8pIHx8IHRoaXMudXNlUm91dGVyKSkge1xuICAgICAgICAgICAgLy8gUmVzb2x2ZSB0aGUgcGFnZSB2aWEgdGhlICRyb3V0ZXJcbiAgICAgICAgICAgIGd1ZXNzID0gbG9vc2VFcXVhbCh0aGlzLnJlc29sdmVSb3V0ZSh0byksIGN1cnJSb3V0ZSkgPyBwYWdlIDogbnVsbDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzQnJvd3Nlcikge1xuICAgICAgICAgICAgLy8gSWYgbm8gJHJvdXRlciBhdmFpbGFibGUgKG9yICF0aGlzLnVzZVJvdXRlciB3aGVuIGB0b2AgaXMgYSBzdHJpbmcpXG4gICAgICAgICAgICAvLyB3ZSBjb21wYXJlIHVzaW5nIHBhcnNlZCBVUklzXG4gICAgICAgICAgICBndWVzcyA9IGxvb3NlRXF1YWwodGhpcy5yZXNvbHZlTGluayh0byksIGN1cnJMaW5rKSA/IHBhZ2UgOiBudWxsO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBwcm9iYWJseSBTU1IsIGJ1dCBubyAkcm91dGVyIHNvIHdlIGNhbid0IGd1ZXNzLCBzbyBsZXRzIGJyZWFrIG91dCBvZlxuICAgICAgICAgICAgLy8gdGhlIGxvb3AgZWFybHlcblxuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgIGd1ZXNzID0gLTE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IC8vIFdlIHNldCBjdXJyZW50UGFnZSB0byAwIHRvIHRyaWdnZXIgYW4gJGVtaXQoJ2lucHV0JywgbnVsbClcbiAgICAgIC8vIEFzIHRoZSBkZWZhdWx0IGZvciB0aGlzLmN1cnJlbnRQYWdlIGlzIC0xIHdoZW4gbm8gdmFsdWUgaXMgc3BlY2lmaWVkXG4gICAgICAvLyBBbmQgdmFsaWQgcGFnZSBudW1iZXJzIGFyZSBncmVhdGVyIHRoYW4gMFxuXG5cbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBndWVzcyA+IDAgPyBndWVzcyA6IDA7XG4gICAgfVxuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL3BhZ2luYXRpb24tbmF2L3BhZ2luYXRpb24tbmF2LmpzXG4vLyBtb2R1bGUgaWQgPSAxODZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///186\n"); +eval("/**\n * @param {number} length\n * @return {Array}\n */\nvar range = function range(length) {\n return Array.apply(null, {\n length: length\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (range);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvcmFuZ2UuanM/YTBlNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRWUsOERBQUsiLCJmaWxlIjoiMTg2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcmV0dXJuIHtBcnJheX1cbiAqL1xudmFyIHJhbmdlID0gZnVuY3Rpb24gcmFuZ2UobGVuZ3RoKSB7XG4gIHJldHVybiBBcnJheS5hcHBseShudWxsLCB7XG4gICAgbGVuZ3RoOiBsZW5ndGhcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCByYW5nZTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS91dGlscy9yYW5nZS5qc1xuLy8gbW9kdWxlIGlkID0gMTg2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///186\n"); /***/ }), /* 187 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return PopoverPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__popover__ = __webpack_require__(188);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__directives_popover__ = __webpack_require__(83);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BPopover */\n\n\n\nvar PopoverPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BPopover: __WEBPACK_IMPORTED_MODULE_0__popover__[\"a\" /* BPopover */]\n },\n plugins: {\n VBPopoverPlugin: __WEBPACK_IMPORTED_MODULE_1__directives_popover__[\"a\" /* VBPopoverPlugin */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wb3BvdmVyL2luZGV4LmpzP2RkMWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFxQztBQUNzQjtBQUNQO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsY0FBYywwREFBUTtBQUN0QixHQUFHO0FBQ0g7QUFDQSxxQkFBcUIsNEVBQWU7QUFDcEM7QUFDQSxDQUFDIiwiZmlsZSI6IjE4Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJQb3BvdmVyIH0gZnJvbSAnLi9wb3BvdmVyJztcbmltcG9ydCB7IFZCUG9wb3ZlclBsdWdpbiB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgUG9wb3ZlclBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJQb3BvdmVyOiBCUG9wb3ZlclxuICB9LFxuICBwbHVnaW5zOiB7XG4gICAgVkJQb3BvdmVyUGx1Z2luOiBWQlBvcG92ZXJQbHVnaW5cbiAgfVxufSk7XG5leHBvcnQgeyBQb3BvdmVyUGx1Z2luLCBCUG9wb3ZlciB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvcG9wb3Zlci9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTg3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///187\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return PaginationNavPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__pagination_nav__ = __webpack_require__(188);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BPaginationNav */\n\n\nvar PaginationNavPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BPaginationNav: __WEBPACK_IMPORTED_MODULE_0__pagination_nav__[\"a\" /* BPaginationNav */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wYWdpbmF0aW9uLW5hdi9pbmRleC5qcz83ZTVjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtEO0FBQ0U7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxvQkFBb0IsdUVBQWM7QUFDbEM7QUFDQSxDQUFDIiwiZmlsZSI6IjE4Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJQYWdpbmF0aW9uTmF2IH0gZnJvbSAnLi9wYWdpbmF0aW9uLW5hdic7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgUGFnaW5hdGlvbk5hdlBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJQYWdpbmF0aW9uTmF2OiBCUGFnaW5hdGlvbk5hdlxuICB9XG59KTtcbmV4cG9ydCB7IFBhZ2luYXRpb25OYXZQbHVnaW4sIEJQYWdpbmF0aW9uTmF2IH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wYWdpbmF0aW9uLW5hdi9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTg3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///187\n"); /***/ }), /* 188 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BPopover; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_safe_types__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__tooltip_tooltip__ = __webpack_require__(81);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__helpers_bv_popover__ = __webpack_require__(190);\n\n\n\n\n\nvar NAME = 'BPopover';\nvar BPopover =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n extends: __WEBPACK_IMPORTED_MODULE_3__tooltip_tooltip__[\"a\" /* BTooltip */],\n inheritAttrs: false,\n props: {\n title: {\n type: String // default: undefined\n\n },\n content: {\n type: String // default: undefined\n\n },\n triggers: {\n type: [String, Array],\n default: 'click'\n },\n placement: {\n type: String,\n default: 'right'\n },\n variant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant');\n }\n },\n customClass: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'customClass');\n }\n },\n delay: {\n type: [Number, Object, String],\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'delay');\n }\n },\n boundary: {\n // String: scrollParent, window, or viewport\n // Element: element reference\n // Object: Vue component\n type: [String, __WEBPACK_IMPORTED_MODULE_2__utils_safe_types__[\"b\" /* HTMLElement */], Object],\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'boundary');\n }\n },\n boundaryPadding: {\n type: [Number, String],\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'boundaryPadding');\n }\n }\n },\n methods: {\n getComponent: function getComponent() {\n // Overridden by BPopover\n return __WEBPACK_IMPORTED_MODULE_4__helpers_bv_popover__[\"a\" /* BVPopover */];\n },\n updateContent: function updateContent() {\n // Tooltip: Default slot is `title`\n // Popover: Default slot is `content`, `title` slot is title\n // We pass a scoped slot function references by default (Vue v2.6x)\n // And pass the title prop as a fallback\n this.setContent(this.$scopedSlots.default || this.content);\n this.setTitle(this.$scopedSlots.title || this.title);\n }\n } // Render function provided by BTooltip\n\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wb3BvdmVyL3BvcG92ZXIuanM/MzczOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDc0I7QUFDSDtBQUNQO0FBQ0c7QUFDakQ7QUFDTztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsa0VBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0VBQVc7QUFDaEM7QUFDQSxlQUFlLGlGQUFrQjtBQUNqQztBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlGQUFrQjtBQUNqQztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGFBQWEsc0VBQVM7QUFDdEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVILENBQUMiLCJmaWxlIjoiMTg4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29uZmlnJztcbmltcG9ydCB7IEhUTUxFbGVtZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvc2FmZS10eXBlcyc7XG5pbXBvcnQgeyBCVG9vbHRpcCB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcCc7XG5pbXBvcnQgeyBCVlBvcG92ZXIgfSBmcm9tICcuL2hlbHBlcnMvYnYtcG9wb3Zlcic7XG52YXIgTkFNRSA9ICdCUG9wb3Zlcic7XG5leHBvcnQgdmFyIEJQb3BvdmVyID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBleHRlbmRzOiBCVG9vbHRpcCxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgcHJvcHM6IHtcbiAgICB0aXRsZToge1xuICAgICAgdHlwZTogU3RyaW5nIC8vIGRlZmF1bHQ6IHVuZGVmaW5lZFxuXG4gICAgfSxcbiAgICBjb250ZW50OiB7XG4gICAgICB0eXBlOiBTdHJpbmcgLy8gZGVmYXVsdDogdW5kZWZpbmVkXG5cbiAgICB9LFxuICAgIHRyaWdnZXJzOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBBcnJheV0sXG4gICAgICBkZWZhdWx0OiAnY2xpY2snXG4gICAgfSxcbiAgICBwbGFjZW1lbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdyaWdodCdcbiAgICB9LFxuICAgIHZhcmlhbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICd2YXJpYW50Jyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBjdXN0b21DbGFzczoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ2N1c3RvbUNsYXNzJyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBkZWxheToge1xuICAgICAgdHlwZTogW051bWJlciwgT2JqZWN0LCBTdHJpbmddLFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ2RlbGF5Jyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBib3VuZGFyeToge1xuICAgICAgLy8gU3RyaW5nOiBzY3JvbGxQYXJlbnQsIHdpbmRvdywgb3Igdmlld3BvcnRcbiAgICAgIC8vIEVsZW1lbnQ6IGVsZW1lbnQgcmVmZXJlbmNlXG4gICAgICAvLyBPYmplY3Q6IFZ1ZSBjb21wb25lbnRcbiAgICAgIHR5cGU6IFtTdHJpbmcsIEhUTUxFbGVtZW50LCBPYmplY3RdLFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ2JvdW5kYXJ5Jyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBib3VuZGFyeVBhZGRpbmc6IHtcbiAgICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAnYm91bmRhcnlQYWRkaW5nJyk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgZ2V0Q29tcG9uZW50OiBmdW5jdGlvbiBnZXRDb21wb25lbnQoKSB7XG4gICAgICAvLyBPdmVycmlkZGVuIGJ5IEJQb3BvdmVyXG4gICAgICByZXR1cm4gQlZQb3BvdmVyO1xuICAgIH0sXG4gICAgdXBkYXRlQ29udGVudDogZnVuY3Rpb24gdXBkYXRlQ29udGVudCgpIHtcbiAgICAgIC8vIFRvb2x0aXA6IERlZmF1bHQgc2xvdCBpcyBgdGl0bGVgXG4gICAgICAvLyBQb3BvdmVyOiBEZWZhdWx0IHNsb3QgaXMgYGNvbnRlbnRgLCBgdGl0bGVgIHNsb3QgaXMgdGl0bGVcbiAgICAgIC8vIFdlIHBhc3MgYSBzY29wZWQgc2xvdCBmdW5jdGlvbiByZWZlcmVuY2VzIGJ5IGRlZmF1bHQgKFZ1ZSB2Mi42eClcbiAgICAgIC8vIEFuZCBwYXNzIHRoZSB0aXRsZSBwcm9wIGFzIGEgZmFsbGJhY2tcbiAgICAgIHRoaXMuc2V0Q29udGVudCh0aGlzLiRzY29wZWRTbG90cy5kZWZhdWx0IHx8IHRoaXMuY29udGVudCk7XG4gICAgICB0aGlzLnNldFRpdGxlKHRoaXMuJHNjb3BlZFNsb3RzLnRpdGxlIHx8IHRoaXMudGl0bGUpO1xuICAgIH1cbiAgfSAvLyBSZW5kZXIgZnVuY3Rpb24gcHJvdmlkZWQgYnkgQlRvb2x0aXBcblxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wb3BvdmVyL3BvcG92ZXIuanNcbi8vIG1vZHVsZSBpZCA9IDE4OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///188\n"); +eval("/* unused harmony export sanitizeNumberOfPages */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BPaginationNav; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_loose_equal__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_to_string__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_warn__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_env__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__utils_router__ = __webpack_require__(107);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__mixins_pagination__ = __webpack_require__(185);\n\n\n\n\n\n\n\n\n\n\nvar NAME = 'BPaginationNav'; // Sanitize the provided number of pages (converting to a number)\n\nvar sanitizeNumberOfPages = function sanitizeNumberOfPages(value) {\n var numberOfPages = parseInt(value, 10) || 1;\n return numberOfPages < 1 ? 1 : numberOfPages;\n};\nvar props = {\n size: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'size');\n }\n },\n numberOfPages: {\n type: [Number, String],\n default: 1,\n validator: function validator(value)\n /* istanbul ignore next */\n {\n var num = parseInt(value, 10);\n\n if (isNaN(num) || num < 1) {\n Object(__WEBPACK_IMPORTED_MODULE_3__utils_warn__[\"a\" /* default */])('b-pagination: prop \"number-of-pages\" must be a number greater than 0');\n return false;\n }\n\n return true;\n }\n },\n baseUrl: {\n type: String,\n default: '/'\n },\n useRouter: {\n type: Boolean,\n default: false\n },\n linkGen: {\n type: Function,\n default: null\n },\n pageGen: {\n type: Function,\n default: null\n },\n pages: {\n // Optional array of page links\n type: Array,\n default: null\n },\n noPageDetect: {\n // Disable auto page number detection if true\n type: Boolean,\n default: false\n },\n // router-link specific props\n activeClass: {\n type: String // default: undefined\n\n },\n exact: {\n type: Boolean,\n default: false\n },\n exactActiveClass: {\n type: String // default: undefined\n\n },\n // nuxt-link specific prop(s)\n noPrefetch: {\n type: Boolean,\n default: false\n }\n}; // The render function is brought in via the pagination mixin\n// @vue/component\n\nvar BPaginationNav =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n mixins: [__WEBPACK_IMPORTED_MODULE_9__mixins_pagination__[\"a\" /* default */]],\n props: props,\n computed: {\n // Used by render function to trigger wrapping in '<nav>' element\n isNav: function isNav() {\n return true;\n },\n computedValue: function computedValue() {\n // Returns the value prop as a number or `null` if undefined or < 1\n var val = parseInt(this.value, 10);\n return isNaN(val) || val < 1 ? null : val;\n }\n },\n watch: {\n numberOfPages: function numberOfPages(newVal, oldVal) {\n var _this = this;\n\n this.$nextTick(function () {\n _this.setNumberOfPages();\n });\n },\n pages: function pages(newVal, oldVal) {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.setNumberOfPages();\n });\n }\n },\n created: function created() {\n this.setNumberOfPages();\n },\n mounted: function mounted() {\n var _this3 = this;\n\n if (this.$router) {\n // We only add the watcher if vue router is detected\n this.$watch('$route', function (to, from) {\n _this3.$nextTick(function () {\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"w\" /* requestAF */])(function () {\n _this3.guessCurrentPage();\n });\n });\n });\n }\n },\n methods: {\n setNumberOfPages: function setNumberOfPages() {\n var _this4 = this;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"a\" /* isArray */])(this.pages) && this.pages.length > 0) {\n this.localNumberOfPages = this.pages.length;\n } else {\n this.localNumberOfPages = sanitizeNumberOfPages(this.numberOfPages);\n }\n\n this.$nextTick(function () {\n _this4.guessCurrentPage();\n });\n },\n onClick: function onClick(pageNum, evt) {\n var _this5 = this;\n\n // Dont do anything if clicking the current active page\n if (pageNum === this.currentPage) {\n return;\n }\n\n Object(__WEBPACK_IMPORTED_MODULE_5__utils_dom__[\"w\" /* requestAF */])(function () {\n // Update the v-model\n // Done in in requestAF() to allow browser to complete the\n // native browser click handling of a link\n _this5.currentPage = pageNum;\n\n _this5.$emit('change', pageNum);\n });\n this.$nextTick(function () {\n // Done in a nextTick() to ensure rendering complete\n try {\n // Emulate native link click page reloading behaviour by blurring the\n // paginator and returning focus to the document\n var target = evt.currentTarget || evt.target;\n target.blur();\n } catch (e) {}\n });\n },\n getPageInfo: function getPageInfo(pageNum) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"a\" /* isArray */])(this.pages) || this.pages.length === 0 || Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"n\" /* isUndefined */])(this.pages[pageNum - 1])) {\n var link = \"\".concat(this.baseUrl).concat(pageNum);\n return {\n link: this.useRouter ? {\n path: link\n } : link,\n text: Object(__WEBPACK_IMPORTED_MODULE_2__utils_to_string__[\"a\" /* default */])(pageNum)\n };\n }\n\n var info = this.pages[pageNum - 1];\n\n if (Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"i\" /* isObject */])(info)) {\n var _link = info.link;\n return {\n // Normalize link for router use\n link: Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"i\" /* isObject */])(_link) ? _link : this.useRouter ? {\n path: _link\n } : _link,\n // Make sure text has a value\n text: Object(__WEBPACK_IMPORTED_MODULE_2__utils_to_string__[\"a\" /* default */])(info.text || pageNum)\n };\n } else {\n return {\n link: Object(__WEBPACK_IMPORTED_MODULE_2__utils_to_string__[\"a\" /* default */])(info),\n text: Object(__WEBPACK_IMPORTED_MODULE_2__utils_to_string__[\"a\" /* default */])(pageNum)\n };\n }\n },\n makePage: function makePage(pageNum) {\n var info = this.getPageInfo(pageNum);\n\n if (this.pageGen && Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"f\" /* isFunction */])(this.pageGen)) {\n return this.pageGen(pageNum, info);\n }\n\n return info.text;\n },\n makeLink: function makeLink(pageNum) {\n var info = this.getPageInfo(pageNum);\n\n if (this.linkGen && Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"f\" /* isFunction */])(this.linkGen)) {\n return this.linkGen(pageNum, info);\n }\n\n return info.link;\n },\n linkProps: function linkProps(pageNum) {\n var link = this.makeLink(pageNum);\n var props = {\n target: this.target || null,\n rel: this.rel || null,\n disabled: this.disabled,\n // The following props are only used if BLink detects router\n exact: this.exact,\n activeClass: this.activeClass,\n exactActiveClass: this.exactActiveClass,\n append: this.append,\n replace: this.replace,\n // nuxt-link specific prop\n noPrefetch: this.noPrefetch\n };\n\n if (this.useRouter || Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"i\" /* isObject */])(link)) {\n props.to = link;\n } else {\n props.href = link;\n }\n\n return props;\n },\n resolveLink: function resolveLink() {\n var to = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n // Given a to (or href string), convert to normalized route-like structure\n // Works only client side!!\n var link;\n\n try {\n // Convert the `to` to a HREF via a temporary `a` tag\n link = document.createElement('a');\n link.href = Object(__WEBPACK_IMPORTED_MODULE_8__utils_router__[\"a\" /* computeHref */])({\n to: to\n }, 'a', '/', '/'); // We need to add the anchor to the document to make sure the\n // `pathname` is correctly detected in any browser (i.e. IE)\n\n document.body.appendChild(link); // Once href is assigned, the link will be normalized to the full URL bits\n\n var _link2 = link,\n pathname = _link2.pathname,\n hash = _link2.hash,\n search = _link2.search; // Remove link from document\n\n document.body.removeChild(link); // Return the location in a route-like object\n\n return {\n path: pathname,\n hash: hash,\n query: Object(__WEBPACK_IMPORTED_MODULE_8__utils_router__[\"e\" /* parseQuery */])(search)\n };\n } catch (e) {\n /* istanbul ignore next */\n try {\n link && link.parentNode && link.parentNode.removeChild(link);\n } catch (e) {}\n /* istanbul ignore next */\n\n\n return {};\n }\n },\n resolveRoute: function resolveRoute() {\n var to = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n // Given a to (or href string), convert to normalized route location structure\n // works only when router available!!\n try {\n var route = this.$router.resolve(to, this.$route).route;\n return {\n path: route.path,\n hash: route.hash,\n query: route.query\n };\n } catch (e) {\n /* istanbul ignore next */\n return {};\n }\n },\n guessCurrentPage: function guessCurrentPage() {\n var guess = this.computedValue;\n var $router = this.$router;\n var $route = this.$route; // This section only occurs if we are client side, or server-side with $router\n\n /* istanbul ignore else */\n\n if (!this.noPageDetect && !guess && (__WEBPACK_IMPORTED_MODULE_6__utils_env__[\"j\" /* isBrowser */] || !__WEBPACK_IMPORTED_MODULE_6__utils_env__[\"j\" /* isBrowser */] && $router)) {\n // Current route (if router available)\n var currRoute = $router && $route ? {\n path: $route.path,\n hash: $route.hash,\n query: $route.query\n } : {}; // Current page full HREF (if client side). Can't be done as a computed prop!\n\n var loc = __WEBPACK_IMPORTED_MODULE_6__utils_env__[\"j\" /* isBrowser */] ? window.location || document.location : null;\n var currLink = loc ? {\n path: loc.pathname,\n hash: loc.hash,\n query: Object(__WEBPACK_IMPORTED_MODULE_8__utils_router__[\"e\" /* parseQuery */])(loc.search)\n } : {}; // Loop through the possible pages looking for a match until found\n\n for (var page = 1; !guess && page <= this.localNumberOfPages; page++) {\n var to = this.makeLink(page);\n\n if ($router && (Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"i\" /* isObject */])(to) || this.useRouter)) {\n // Resolve the page via the $router\n guess = Object(__WEBPACK_IMPORTED_MODULE_1__utils_loose_equal__[\"a\" /* default */])(this.resolveRoute(to), currRoute) ? page : null;\n } else if (__WEBPACK_IMPORTED_MODULE_6__utils_env__[\"j\" /* isBrowser */]) {\n // If no $router available (or !this.useRouter when `to` is a string)\n // we compare using parsed URIs\n guess = Object(__WEBPACK_IMPORTED_MODULE_1__utils_loose_equal__[\"a\" /* default */])(this.resolveLink(to), currLink) ? page : null;\n } else {\n // probably SSR, but no $router so we can't guess, so lets break out of\n // the loop early\n\n /* istanbul ignore next */\n guess = -1;\n }\n }\n } // We set currentPage to 0 to trigger an $emit('input', null)\n // As the default for this.currentPage is -1 when no value is specified\n // And valid page numbers are greater than 0\n\n\n this.currentPage = guess > 0 ? guess : 0;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wYWdpbmF0aW9uLW5hdi9wYWdpbmF0aW9uLW5hdi5qcz9lM2EzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNlO0FBQ0o7QUFDVDtBQUNvQjtBQUNaO0FBQ0E7QUFDcUM7QUFDcEI7QUFDUDtBQUN0RCw0QkFBNEI7O0FBRXJCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlGQUFrQjtBQUMvQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsb0VBQUk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7O0FBRU87QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQSxXQUFXLG1FQUFlO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUscUVBQVM7QUFDbkI7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUEsVUFBVSx1RUFBTztBQUNqQjtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTSxxRUFBUztBQUNmO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxXQUFXLHVFQUFPLDJDQUEyQywyRUFBVztBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxnQkFBZ0IseUVBQVE7QUFDeEI7QUFDQTs7QUFFQTs7QUFFQSxVQUFVLHdFQUFRO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQix3RUFBUTtBQUN4QjtBQUNBLFdBQVc7QUFDWDtBQUNBLGdCQUFnQix5RUFBUTtBQUN4QjtBQUNBLE9BQU87QUFDUDtBQUNBLGdCQUFnQix5RUFBUTtBQUN4QixnQkFBZ0IseUVBQVE7QUFDeEI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLDBCQUEwQiwwRUFBVTtBQUNwQztBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEsMEJBQTBCLDBFQUFVO0FBQ3BDO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRCQUE0Qix3RUFBUTtBQUNwQztBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDBFQUFXO0FBQy9CO0FBQ0EsU0FBUyxpQkFBaUI7QUFDMUI7O0FBRUEsd0NBQXdDOztBQUV4QztBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7O0FBRW5DLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHlFQUFVO0FBQzNCO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7O0FBR0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsK0JBQStCOztBQUUvQjs7QUFFQSwyQ0FBMkMsNkRBQVMsS0FBSyw2REFBUztBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxNQUFNOztBQUVmLGtCQUFrQiw2REFBUztBQUMzQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIseUVBQVU7QUFDM0IsU0FBUyxNQUFNOztBQUVmLDBCQUEwQiwyQ0FBMkM7QUFDckU7O0FBRUEsMEJBQTBCLHdFQUFRO0FBQ2xDO0FBQ0Esb0JBQW9CLDJFQUFVO0FBQzlCLFdBQVcsVUFBVSw2REFBUztBQUM5QjtBQUNBO0FBQ0Esb0JBQW9CLDJFQUFVO0FBQzlCLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMTg4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IGxvb3NlRXF1YWwgZnJvbSAnLi4vLi4vdXRpbHMvbG9vc2UtZXF1YWwnO1xuaW1wb3J0IHRvU3RyaW5nIGZyb20gJy4uLy4uL3V0aWxzL3RvLXN0cmluZyc7XG5pbXBvcnQgd2FybiBmcm9tICcuLi8uLi91dGlscy93YXJuJztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyByZXF1ZXN0QUYgfSBmcm9tICcuLi8uLi91dGlscy9kb20nO1xuaW1wb3J0IHsgaXNCcm93c2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvZW52JztcbmltcG9ydCB7IGlzQXJyYXksIGlzVW5kZWZpbmVkLCBpc0Z1bmN0aW9uLCBpc09iamVjdCB9IGZyb20gJy4uLy4uL3V0aWxzL2luc3BlY3QnO1xuaW1wb3J0IHsgY29tcHV0ZUhyZWYsIHBhcnNlUXVlcnkgfSBmcm9tICcuLi8uLi91dGlscy9yb3V0ZXInO1xuaW1wb3J0IHBhZ2luYXRpb25NaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvcGFnaW5hdGlvbic7XG52YXIgTkFNRSA9ICdCUGFnaW5hdGlvbk5hdic7IC8vIFNhbml0aXplIHRoZSBwcm92aWRlZCBudW1iZXIgb2YgcGFnZXMgKGNvbnZlcnRpbmcgdG8gYSBudW1iZXIpXG5cbmV4cG9ydCB2YXIgc2FuaXRpemVOdW1iZXJPZlBhZ2VzID0gZnVuY3Rpb24gc2FuaXRpemVOdW1iZXJPZlBhZ2VzKHZhbHVlKSB7XG4gIHZhciBudW1iZXJPZlBhZ2VzID0gcGFyc2VJbnQodmFsdWUsIDEwKSB8fCAxO1xuICByZXR1cm4gbnVtYmVyT2ZQYWdlcyA8IDEgPyAxIDogbnVtYmVyT2ZQYWdlcztcbn07XG52YXIgcHJvcHMgPSB7XG4gIHNpemU6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdzaXplJyk7XG4gICAgfVxuICB9LFxuICBudW1iZXJPZlBhZ2VzOiB7XG4gICAgdHlwZTogW051bWJlciwgU3RyaW5nXSxcbiAgICBkZWZhdWx0OiAxLFxuICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbHVlKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAge1xuICAgICAgdmFyIG51bSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG5cbiAgICAgIGlmIChpc05hTihudW0pIHx8IG51bSA8IDEpIHtcbiAgICAgICAgd2FybignYi1wYWdpbmF0aW9uOiBwcm9wIFwibnVtYmVyLW9mLXBhZ2VzXCIgbXVzdCBiZSBhIG51bWJlciBncmVhdGVyIHRoYW4gMCcpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSxcbiAgYmFzZVVybDoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiAnLydcbiAgfSxcbiAgdXNlUm91dGVyOiB7XG4gICAgdHlwZTogQm9vbGVhbixcbiAgICBkZWZhdWx0OiBmYWxzZVxuICB9LFxuICBsaW5rR2VuOiB7XG4gICAgdHlwZTogRnVuY3Rpb24sXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBwYWdlR2VuOiB7XG4gICAgdHlwZTogRnVuY3Rpb24sXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBwYWdlczoge1xuICAgIC8vIE9wdGlvbmFsIGFycmF5IG9mIHBhZ2UgbGlua3NcbiAgICB0eXBlOiBBcnJheSxcbiAgICBkZWZhdWx0OiBudWxsXG4gIH0sXG4gIG5vUGFnZURldGVjdDoge1xuICAgIC8vIERpc2FibGUgYXV0byBwYWdlIG51bWJlciBkZXRlY3Rpb24gaWYgdHJ1ZVxuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfSxcbiAgLy8gcm91dGVyLWxpbmsgc3BlY2lmaWMgcHJvcHNcbiAgYWN0aXZlQ2xhc3M6IHtcbiAgICB0eXBlOiBTdHJpbmcgLy8gZGVmYXVsdDogdW5kZWZpbmVkXG5cbiAgfSxcbiAgZXhhY3Q6IHtcbiAgICB0eXBlOiBCb29sZWFuLFxuICAgIGRlZmF1bHQ6IGZhbHNlXG4gIH0sXG4gIGV4YWN0QWN0aXZlQ2xhc3M6IHtcbiAgICB0eXBlOiBTdHJpbmcgLy8gZGVmYXVsdDogdW5kZWZpbmVkXG5cbiAgfSxcbiAgLy8gbnV4dC1saW5rIHNwZWNpZmljIHByb3AocylcbiAgbm9QcmVmZXRjaDoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogZmFsc2VcbiAgfVxufTsgLy8gVGhlIHJlbmRlciBmdW5jdGlvbiBpcyBicm91Z2h0IGluIHZpYSB0aGUgcGFnaW5hdGlvbiBtaXhpblxuLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCUGFnaW5hdGlvbk5hdiA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogTkFNRSxcbiAgbWl4aW5zOiBbcGFnaW5hdGlvbk1peGluXSxcbiAgcHJvcHM6IHByb3BzLFxuICBjb21wdXRlZDoge1xuICAgIC8vIFVzZWQgYnkgcmVuZGVyIGZ1bmN0aW9uIHRvIHRyaWdnZXIgd3JhcHBpbmcgaW4gJzxuYXY+JyBlbGVtZW50XG4gICAgaXNOYXY6IGZ1bmN0aW9uIGlzTmF2KCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBjb21wdXRlZFZhbHVlOiBmdW5jdGlvbiBjb21wdXRlZFZhbHVlKCkge1xuICAgICAgLy8gUmV0dXJucyB0aGUgdmFsdWUgcHJvcCBhcyBhIG51bWJlciBvciBgbnVsbGAgaWYgdW5kZWZpbmVkIG9yIDwgMVxuICAgICAgdmFyIHZhbCA9IHBhcnNlSW50KHRoaXMudmFsdWUsIDEwKTtcbiAgICAgIHJldHVybiBpc05hTih2YWwpIHx8IHZhbCA8IDEgPyBudWxsIDogdmFsO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBudW1iZXJPZlBhZ2VzOiBmdW5jdGlvbiBudW1iZXJPZlBhZ2VzKG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzLnNldE51bWJlck9mUGFnZXMoKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcGFnZXM6IGZ1bmN0aW9uIHBhZ2VzKG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczIuc2V0TnVtYmVyT2ZQYWdlcygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHRoaXMuc2V0TnVtYmVyT2ZQYWdlcygpO1xuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkge1xuICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgaWYgKHRoaXMuJHJvdXRlcikge1xuICAgICAgLy8gV2Ugb25seSBhZGQgdGhlIHdhdGNoZXIgaWYgdnVlIHJvdXRlciBpcyBkZXRlY3RlZFxuICAgICAgdGhpcy4kd2F0Y2goJyRyb3V0ZScsIGZ1bmN0aW9uICh0bywgZnJvbSkge1xuICAgICAgICBfdGhpczMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXF1ZXN0QUYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMzLmd1ZXNzQ3VycmVudFBhZ2UoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBzZXROdW1iZXJPZlBhZ2VzOiBmdW5jdGlvbiBzZXROdW1iZXJPZlBhZ2VzKCkge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICAgIGlmIChpc0FycmF5KHRoaXMucGFnZXMpICYmIHRoaXMucGFnZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmxvY2FsTnVtYmVyT2ZQYWdlcyA9IHRoaXMucGFnZXMubGVuZ3RoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2NhbE51bWJlck9mUGFnZXMgPSBzYW5pdGl6ZU51bWJlck9mUGFnZXModGhpcy5udW1iZXJPZlBhZ2VzKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczQuZ3Vlc3NDdXJyZW50UGFnZSgpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKHBhZ2VOdW0sIGV2dCkge1xuICAgICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICAgIC8vIERvbnQgZG8gYW55dGhpbmcgaWYgY2xpY2tpbmcgdGhlIGN1cnJlbnQgYWN0aXZlIHBhZ2VcbiAgICAgIGlmIChwYWdlTnVtID09PSB0aGlzLmN1cnJlbnRQYWdlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVxdWVzdEFGKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gVXBkYXRlIHRoZSB2LW1vZGVsXG4gICAgICAgIC8vIERvbmUgaW4gaW4gcmVxdWVzdEFGKCkgdG8gYWxsb3cgYnJvd3NlciB0byBjb21wbGV0ZSB0aGVcbiAgICAgICAgLy8gbmF0aXZlIGJyb3dzZXIgY2xpY2sgaGFuZGxpbmcgb2YgYSBsaW5rXG4gICAgICAgIF90aGlzNS5jdXJyZW50UGFnZSA9IHBhZ2VOdW07XG5cbiAgICAgICAgX3RoaXM1LiRlbWl0KCdjaGFuZ2UnLCBwYWdlTnVtKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBEb25lIGluIGEgbmV4dFRpY2soKSB0byBlbnN1cmUgcmVuZGVyaW5nIGNvbXBsZXRlXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gRW11bGF0ZSBuYXRpdmUgbGluayBjbGljayBwYWdlIHJlbG9hZGluZyBiZWhhdmlvdXIgYnkgYmx1cnJpbmcgdGhlXG4gICAgICAgICAgLy8gcGFnaW5hdG9yIGFuZCByZXR1cm5pbmcgZm9jdXMgdG8gdGhlIGRvY3VtZW50XG4gICAgICAgICAgdmFyIHRhcmdldCA9IGV2dC5jdXJyZW50VGFyZ2V0IHx8IGV2dC50YXJnZXQ7XG4gICAgICAgICAgdGFyZ2V0LmJsdXIoKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZ2V0UGFnZUluZm86IGZ1bmN0aW9uIGdldFBhZ2VJbmZvKHBhZ2VOdW0pIHtcbiAgICAgIGlmICghaXNBcnJheSh0aGlzLnBhZ2VzKSB8fCB0aGlzLnBhZ2VzLmxlbmd0aCA9PT0gMCB8fCBpc1VuZGVmaW5lZCh0aGlzLnBhZ2VzW3BhZ2VOdW0gLSAxXSkpIHtcbiAgICAgICAgdmFyIGxpbmsgPSBcIlwiLmNvbmNhdCh0aGlzLmJhc2VVcmwpLmNvbmNhdChwYWdlTnVtKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsaW5rOiB0aGlzLnVzZVJvdXRlciA/IHtcbiAgICAgICAgICAgIHBhdGg6IGxpbmtcbiAgICAgICAgICB9IDogbGluayxcbiAgICAgICAgICB0ZXh0OiB0b1N0cmluZyhwYWdlTnVtKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB2YXIgaW5mbyA9IHRoaXMucGFnZXNbcGFnZU51bSAtIDFdO1xuXG4gICAgICBpZiAoaXNPYmplY3QoaW5mbykpIHtcbiAgICAgICAgdmFyIF9saW5rID0gaW5mby5saW5rO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC8vIE5vcm1hbGl6ZSBsaW5rIGZvciByb3V0ZXIgdXNlXG4gICAgICAgICAgbGluazogaXNPYmplY3QoX2xpbmspID8gX2xpbmsgOiB0aGlzLnVzZVJvdXRlciA/IHtcbiAgICAgICAgICAgIHBhdGg6IF9saW5rXG4gICAgICAgICAgfSA6IF9saW5rLFxuICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0ZXh0IGhhcyBhIHZhbHVlXG4gICAgICAgICAgdGV4dDogdG9TdHJpbmcoaW5mby50ZXh0IHx8IHBhZ2VOdW0pXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbms6IHRvU3RyaW5nKGluZm8pLFxuICAgICAgICAgIHRleHQ6IHRvU3RyaW5nKHBhZ2VOdW0pXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSxcbiAgICBtYWtlUGFnZTogZnVuY3Rpb24gbWFrZVBhZ2UocGFnZU51bSkge1xuICAgICAgdmFyIGluZm8gPSB0aGlzLmdldFBhZ2VJbmZvKHBhZ2VOdW0pO1xuXG4gICAgICBpZiAodGhpcy5wYWdlR2VuICYmIGlzRnVuY3Rpb24odGhpcy5wYWdlR2VuKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYWdlR2VuKHBhZ2VOdW0sIGluZm8pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5mby50ZXh0O1xuICAgIH0sXG4gICAgbWFrZUxpbms6IGZ1bmN0aW9uIG1ha2VMaW5rKHBhZ2VOdW0pIHtcbiAgICAgIHZhciBpbmZvID0gdGhpcy5nZXRQYWdlSW5mbyhwYWdlTnVtKTtcblxuICAgICAgaWYgKHRoaXMubGlua0dlbiAmJiBpc0Z1bmN0aW9uKHRoaXMubGlua0dlbikpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGlua0dlbihwYWdlTnVtLCBpbmZvKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluZm8ubGluaztcbiAgICB9LFxuICAgIGxpbmtQcm9wczogZnVuY3Rpb24gbGlua1Byb3BzKHBhZ2VOdW0pIHtcbiAgICAgIHZhciBsaW5rID0gdGhpcy5tYWtlTGluayhwYWdlTnVtKTtcbiAgICAgIHZhciBwcm9wcyA9IHtcbiAgICAgICAgdGFyZ2V0OiB0aGlzLnRhcmdldCB8fCBudWxsLFxuICAgICAgICByZWw6IHRoaXMucmVsIHx8IG51bGwsXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkLFxuICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHByb3BzIGFyZSBvbmx5IHVzZWQgaWYgQkxpbmsgZGV0ZWN0cyByb3V0ZXJcbiAgICAgICAgZXhhY3Q6IHRoaXMuZXhhY3QsXG4gICAgICAgIGFjdGl2ZUNsYXNzOiB0aGlzLmFjdGl2ZUNsYXNzLFxuICAgICAgICBleGFjdEFjdGl2ZUNsYXNzOiB0aGlzLmV4YWN0QWN0aXZlQ2xhc3MsXG4gICAgICAgIGFwcGVuZDogdGhpcy5hcHBlbmQsXG4gICAgICAgIHJlcGxhY2U6IHRoaXMucmVwbGFjZSxcbiAgICAgICAgLy8gbnV4dC1saW5rIHNwZWNpZmljIHByb3BcbiAgICAgICAgbm9QcmVmZXRjaDogdGhpcy5ub1ByZWZldGNoXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy51c2VSb3V0ZXIgfHwgaXNPYmplY3QobGluaykpIHtcbiAgICAgICAgcHJvcHMudG8gPSBsaW5rO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvcHMuaHJlZiA9IGxpbms7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcm9wcztcbiAgICB9LFxuICAgIHJlc29sdmVMaW5rOiBmdW5jdGlvbiByZXNvbHZlTGluaygpIHtcbiAgICAgIHZhciB0byA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogJyc7XG4gICAgICAvLyBHaXZlbiBhIHRvIChvciBocmVmIHN0cmluZyksIGNvbnZlcnQgdG8gbm9ybWFsaXplZCByb3V0ZS1saWtlIHN0cnVjdHVyZVxuICAgICAgLy8gV29ya3Mgb25seSBjbGllbnQgc2lkZSEhXG4gICAgICB2YXIgbGluaztcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gQ29udmVydCB0aGUgYHRvYCB0byBhIEhSRUYgdmlhIGEgdGVtcG9yYXJ5IGBhYCB0YWdcbiAgICAgICAgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgbGluay5ocmVmID0gY29tcHV0ZUhyZWYoe1xuICAgICAgICAgIHRvOiB0b1xuICAgICAgICB9LCAnYScsICcvJywgJy8nKTsgLy8gV2UgbmVlZCB0byBhZGQgdGhlIGFuY2hvciB0byB0aGUgZG9jdW1lbnQgdG8gbWFrZSBzdXJlIHRoZVxuICAgICAgICAvLyBgcGF0aG5hbWVgIGlzIGNvcnJlY3RseSBkZXRlY3RlZCBpbiBhbnkgYnJvd3NlciAoaS5lLiBJRSlcblxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspOyAvLyBPbmNlIGhyZWYgaXMgYXNzaWduZWQsIHRoZSBsaW5rIHdpbGwgYmUgbm9ybWFsaXplZCB0byB0aGUgZnVsbCBVUkwgYml0c1xuXG4gICAgICAgIHZhciBfbGluazIgPSBsaW5rLFxuICAgICAgICAgICAgcGF0aG5hbWUgPSBfbGluazIucGF0aG5hbWUsXG4gICAgICAgICAgICBoYXNoID0gX2xpbmsyLmhhc2gsXG4gICAgICAgICAgICBzZWFyY2ggPSBfbGluazIuc2VhcmNoOyAvLyBSZW1vdmUgbGluayBmcm9tIGRvY3VtZW50XG5cbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTsgLy8gUmV0dXJuIHRoZSBsb2NhdGlvbiBpbiBhIHJvdXRlLWxpa2Ugb2JqZWN0XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYXRoOiBwYXRobmFtZSxcbiAgICAgICAgICBoYXNoOiBoYXNoLFxuICAgICAgICAgIHF1ZXJ5OiBwYXJzZVF1ZXJ5KHNlYXJjaClcbiAgICAgICAgfTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsaW5rICYmIGxpbmsucGFyZW50Tm9kZSAmJiBsaW5rLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cblxuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICByZXNvbHZlUm91dGU6IGZ1bmN0aW9uIHJlc29sdmVSb3V0ZSgpIHtcbiAgICAgIHZhciB0byA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogJyc7XG5cbiAgICAgIC8vIEdpdmVuIGEgdG8gKG9yIGhyZWYgc3RyaW5nKSwgY29udmVydCB0byBub3JtYWxpemVkIHJvdXRlIGxvY2F0aW9uIHN0cnVjdHVyZVxuICAgICAgLy8gd29ya3Mgb25seSB3aGVuIHJvdXRlciBhdmFpbGFibGUhIVxuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHJvdXRlID0gdGhpcy4kcm91dGVyLnJlc29sdmUodG8sIHRoaXMuJHJvdXRlKS5yb3V0ZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYXRoOiByb3V0ZS5wYXRoLFxuICAgICAgICAgIGhhc2g6IHJvdXRlLmhhc2gsXG4gICAgICAgICAgcXVlcnk6IHJvdXRlLnF1ZXJ5XG4gICAgICAgIH07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGd1ZXNzQ3VycmVudFBhZ2U6IGZ1bmN0aW9uIGd1ZXNzQ3VycmVudFBhZ2UoKSB7XG4gICAgICB2YXIgZ3Vlc3MgPSB0aGlzLmNvbXB1dGVkVmFsdWU7XG4gICAgICB2YXIgJHJvdXRlciA9IHRoaXMuJHJvdXRlcjtcbiAgICAgIHZhciAkcm91dGUgPSB0aGlzLiRyb3V0ZTsgLy8gVGhpcyBzZWN0aW9uIG9ubHkgb2NjdXJzIGlmIHdlIGFyZSBjbGllbnQgc2lkZSwgb3Igc2VydmVyLXNpZGUgd2l0aCAkcm91dGVyXG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG5cbiAgICAgIGlmICghdGhpcy5ub1BhZ2VEZXRlY3QgJiYgIWd1ZXNzICYmIChpc0Jyb3dzZXIgfHwgIWlzQnJvd3NlciAmJiAkcm91dGVyKSkge1xuICAgICAgICAvLyBDdXJyZW50IHJvdXRlIChpZiByb3V0ZXIgYXZhaWxhYmxlKVxuICAgICAgICB2YXIgY3VyclJvdXRlID0gJHJvdXRlciAmJiAkcm91dGUgPyB7XG4gICAgICAgICAgcGF0aDogJHJvdXRlLnBhdGgsXG4gICAgICAgICAgaGFzaDogJHJvdXRlLmhhc2gsXG4gICAgICAgICAgcXVlcnk6ICRyb3V0ZS5xdWVyeVxuICAgICAgICB9IDoge307IC8vIEN1cnJlbnQgcGFnZSBmdWxsIEhSRUYgKGlmIGNsaWVudCBzaWRlKS4gQ2FuJ3QgYmUgZG9uZSBhcyBhIGNvbXB1dGVkIHByb3AhXG5cbiAgICAgICAgdmFyIGxvYyA9IGlzQnJvd3NlciA/IHdpbmRvdy5sb2NhdGlvbiB8fCBkb2N1bWVudC5sb2NhdGlvbiA6IG51bGw7XG4gICAgICAgIHZhciBjdXJyTGluayA9IGxvYyA/IHtcbiAgICAgICAgICBwYXRoOiBsb2MucGF0aG5hbWUsXG4gICAgICAgICAgaGFzaDogbG9jLmhhc2gsXG4gICAgICAgICAgcXVlcnk6IHBhcnNlUXVlcnkobG9jLnNlYXJjaClcbiAgICAgICAgfSA6IHt9OyAvLyBMb29wIHRocm91Z2ggdGhlIHBvc3NpYmxlIHBhZ2VzIGxvb2tpbmcgZm9yIGEgbWF0Y2ggdW50aWwgZm91bmRcblxuICAgICAgICBmb3IgKHZhciBwYWdlID0gMTsgIWd1ZXNzICYmIHBhZ2UgPD0gdGhpcy5sb2NhbE51bWJlck9mUGFnZXM7IHBhZ2UrKykge1xuICAgICAgICAgIHZhciB0byA9IHRoaXMubWFrZUxpbmsocGFnZSk7XG5cbiAgICAgICAgICBpZiAoJHJvdXRlciAmJiAoaXNPYmplY3QodG8pIHx8IHRoaXMudXNlUm91dGVyKSkge1xuICAgICAgICAgICAgLy8gUmVzb2x2ZSB0aGUgcGFnZSB2aWEgdGhlICRyb3V0ZXJcbiAgICAgICAgICAgIGd1ZXNzID0gbG9vc2VFcXVhbCh0aGlzLnJlc29sdmVSb3V0ZSh0byksIGN1cnJSb3V0ZSkgPyBwYWdlIDogbnVsbDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzQnJvd3Nlcikge1xuICAgICAgICAgICAgLy8gSWYgbm8gJHJvdXRlciBhdmFpbGFibGUgKG9yICF0aGlzLnVzZVJvdXRlciB3aGVuIGB0b2AgaXMgYSBzdHJpbmcpXG4gICAgICAgICAgICAvLyB3ZSBjb21wYXJlIHVzaW5nIHBhcnNlZCBVUklzXG4gICAgICAgICAgICBndWVzcyA9IGxvb3NlRXF1YWwodGhpcy5yZXNvbHZlTGluayh0byksIGN1cnJMaW5rKSA/IHBhZ2UgOiBudWxsO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBwcm9iYWJseSBTU1IsIGJ1dCBubyAkcm91dGVyIHNvIHdlIGNhbid0IGd1ZXNzLCBzbyBsZXRzIGJyZWFrIG91dCBvZlxuICAgICAgICAgICAgLy8gdGhlIGxvb3AgZWFybHlcblxuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgIGd1ZXNzID0gLTE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IC8vIFdlIHNldCBjdXJyZW50UGFnZSB0byAwIHRvIHRyaWdnZXIgYW4gJGVtaXQoJ2lucHV0JywgbnVsbClcbiAgICAgIC8vIEFzIHRoZSBkZWZhdWx0IGZvciB0aGlzLmN1cnJlbnRQYWdlIGlzIC0xIHdoZW4gbm8gdmFsdWUgaXMgc3BlY2lmaWVkXG4gICAgICAvLyBBbmQgdmFsaWQgcGFnZSBudW1iZXJzIGFyZSBncmVhdGVyIHRoYW4gMFxuXG5cbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBndWVzcyA+IDAgPyBndWVzcyA6IDA7XG4gICAgfVxuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL3BhZ2luYXRpb24tbmF2L3BhZ2luYXRpb24tbmF2LmpzXG4vLyBtb2R1bGUgaWQgPSAxODhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///188\n"); /***/ }), /* 189 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BVTooltipTemplate; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_scoped_style_attrs__ = __webpack_require__(78);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__bv_popper__ = __webpack_require__(258);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\nvar NAME = 'BVTooltipTemplate'; // @vue/component\n\nvar BVTooltipTemplate =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n extends: __WEBPACK_IMPORTED_MODULE_3__bv_popper__[\"a\" /* BVPopper */],\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_scoped_style_attrs__[\"a\" /* default */]],\n props: {\n // Other non-reactive (while open) props are pulled in from BVPopper\n id: {\n type: String,\n default: null\n },\n html: {\n // Used only by the directive versions\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n // We use data, rather than props to ensure reactivity\n // Parent component will directly set this data\n return {\n title: '',\n content: '',\n variant: null,\n customClass: null\n };\n },\n computed: {\n templateType: function templateType() {\n return 'tooltip';\n },\n templateClasses: function templateClasses() {\n var _ref;\n\n return [(_ref = {}, _defineProperty(_ref, \"b-\".concat(this.templateType, \"-\").concat(this.variant), this.variant), _defineProperty(_ref, \"bs-\".concat(this.templateType, \"-\").concat(this.attachment), this.attachment), _ref), this.customClass];\n },\n templateAttributes: function templateAttributes() {\n return _objectSpread({\n id: this.id,\n role: 'tooltip',\n tabindex: '-1'\n }, this.scopedStyleAttrs);\n },\n templateListeners: function templateListeners() {\n var _this = this;\n\n // Used for hover/focus trigger listeners\n return {\n mouseenter: function mouseenter(evt) {\n /* istanbul ignore next: difficult to test in JSDOM */\n _this.$emit('mouseenter', evt);\n },\n mouseleave: function mouseleave(evt) {\n /* istanbul ignore next: difficult to test in JSDOM */\n _this.$emit('mouseleave', evt);\n },\n focusin: function focusin(evt) {\n /* istanbul ignore next: difficult to test in JSDOM */\n _this.$emit('focusin', evt);\n },\n focusout: function focusout(evt) {\n /* istanbul ignore next: difficult to test in JSDOM */\n _this.$emit('focusout', evt);\n }\n };\n }\n },\n methods: {\n renderTemplate: function renderTemplate(h) {\n // Title can be a scoped slot function\n var $title = Object(__WEBPACK_IMPORTED_MODULE_2__utils_inspect__[\"f\" /* isFunction */])(this.title) ? this.title({}) : Object(__WEBPACK_IMPORTED_MODULE_2__utils_inspect__[\"o\" /* isUndefinedOrNull */])(this.title) ? h() : this.title; // Directive versions only\n\n var domProps = this.html && !Object(__WEBPACK_IMPORTED_MODULE_2__utils_inspect__[\"f\" /* isFunction */])(this.title) ? {\n innerHTML: this.title\n } : {};\n return h('div', {\n staticClass: 'tooltip b-tooltip',\n class: this.templateClasses,\n attrs: this.templateAttributes,\n on: this.templateListeners\n }, [h('div', {\n ref: 'arrow',\n staticClass: 'arrow'\n }), h('div', {\n staticClass: 'tooltip-inner',\n domProps: domProps\n }, [$title])]);\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90b29sdGlwL2hlbHBlcnMvYnYtdG9vbHRpcC10ZW1wbGF0ZS5qcz8wNjk3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTFLO0FBQ2tDO0FBQ0E7QUFDaEM7QUFDdkMsK0JBQStCOztBQUV4QjtBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsNERBQVE7QUFDbkIsV0FBVywyRUFBcUI7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMEVBQVUsNEJBQTRCLElBQUksaUZBQWlCLGdDQUFnQzs7QUFFOUcsbUNBQW1DLDBFQUFVO0FBQzdDO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6IjE4OS5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhzb3VyY2UsIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCBzY29wZWRTdHlsZUF0dHJzTWl4aW4gZnJvbSAnLi4vLi4vLi4vbWl4aW5zL3Njb3BlZC1zdHlsZS1hdHRycyc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uLCBpc1VuZGVmaW5lZE9yTnVsbCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2luc3BlY3QnO1xuaW1wb3J0IHsgQlZQb3BwZXIgfSBmcm9tICcuL2J2LXBvcHBlcic7XG52YXIgTkFNRSA9ICdCVlRvb2x0aXBUZW1wbGF0ZSc7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQlZUb29sdGlwVGVtcGxhdGUgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6IE5BTUUsXG4gIGV4dGVuZHM6IEJWUG9wcGVyLFxuICBtaXhpbnM6IFtzY29wZWRTdHlsZUF0dHJzTWl4aW5dLFxuICBwcm9wczoge1xuICAgIC8vIE90aGVyIG5vbi1yZWFjdGl2ZSAod2hpbGUgb3BlbikgcHJvcHMgYXJlIHB1bGxlZCBpbiBmcm9tIEJWUG9wcGVyXG4gICAgaWQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIGh0bWw6IHtcbiAgICAgIC8vIFVzZWQgb25seSBieSB0aGUgZGlyZWN0aXZlIHZlcnNpb25zXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgLy8gV2UgdXNlIGRhdGEsIHJhdGhlciB0aGFuIHByb3BzIHRvIGVuc3VyZSByZWFjdGl2aXR5XG4gICAgLy8gUGFyZW50IGNvbXBvbmVudCB3aWxsIGRpcmVjdGx5IHNldCB0aGlzIGRhdGFcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6ICcnLFxuICAgICAgY29udGVudDogJycsXG4gICAgICB2YXJpYW50OiBudWxsLFxuICAgICAgY3VzdG9tQ2xhc3M6IG51bGxcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHRlbXBsYXRlVHlwZTogZnVuY3Rpb24gdGVtcGxhdGVUeXBlKCkge1xuICAgICAgcmV0dXJuICd0b29sdGlwJztcbiAgICB9LFxuICAgIHRlbXBsYXRlQ2xhc3NlczogZnVuY3Rpb24gdGVtcGxhdGVDbGFzc2VzKCkge1xuICAgICAgdmFyIF9yZWY7XG5cbiAgICAgIHJldHVybiBbKF9yZWYgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9yZWYsIFwiYi1cIi5jb25jYXQodGhpcy50ZW1wbGF0ZVR5cGUsIFwiLVwiKS5jb25jYXQodGhpcy52YXJpYW50KSwgdGhpcy52YXJpYW50KSwgX2RlZmluZVByb3BlcnR5KF9yZWYsIFwiYnMtXCIuY29uY2F0KHRoaXMudGVtcGxhdGVUeXBlLCBcIi1cIikuY29uY2F0KHRoaXMuYXR0YWNobWVudCksIHRoaXMuYXR0YWNobWVudCksIF9yZWYpLCB0aGlzLmN1c3RvbUNsYXNzXTtcbiAgICB9LFxuICAgIHRlbXBsYXRlQXR0cmlidXRlczogZnVuY3Rpb24gdGVtcGxhdGVBdHRyaWJ1dGVzKCkge1xuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgcm9sZTogJ3Rvb2x0aXAnLFxuICAgICAgICB0YWJpbmRleDogJy0xJ1xuICAgICAgfSwgdGhpcy5zY29wZWRTdHlsZUF0dHJzKTtcbiAgICB9LFxuICAgIHRlbXBsYXRlTGlzdGVuZXJzOiBmdW5jdGlvbiB0ZW1wbGF0ZUxpc3RlbmVycygpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIC8vIFVzZWQgZm9yIGhvdmVyL2ZvY3VzIHRyaWdnZXIgbGlzdGVuZXJzXG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb3VzZWVudGVyOiBmdW5jdGlvbiBtb3VzZWVudGVyKGV2dCkge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBkaWZmaWN1bHQgdG8gdGVzdCBpbiBKU0RPTSAqL1xuICAgICAgICAgIF90aGlzLiRlbWl0KCdtb3VzZWVudGVyJywgZXZ0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbW91c2VsZWF2ZTogZnVuY3Rpb24gbW91c2VsZWF2ZShldnQpIHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogZGlmZmljdWx0IHRvIHRlc3QgaW4gSlNET00gKi9cbiAgICAgICAgICBfdGhpcy4kZW1pdCgnbW91c2VsZWF2ZScsIGV2dCk7XG4gICAgICAgIH0sXG4gICAgICAgIGZvY3VzaW46IGZ1bmN0aW9uIGZvY3VzaW4oZXZ0KSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGRpZmZpY3VsdCB0byB0ZXN0IGluIEpTRE9NICovXG4gICAgICAgICAgX3RoaXMuJGVtaXQoJ2ZvY3VzaW4nLCBldnQpO1xuICAgICAgICB9LFxuICAgICAgICBmb2N1c291dDogZnVuY3Rpb24gZm9jdXNvdXQoZXZ0KSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGRpZmZpY3VsdCB0byB0ZXN0IGluIEpTRE9NICovXG4gICAgICAgICAgX3RoaXMuJGVtaXQoJ2ZvY3Vzb3V0JywgZXZ0KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICByZW5kZXJUZW1wbGF0ZTogZnVuY3Rpb24gcmVuZGVyVGVtcGxhdGUoaCkge1xuICAgICAgLy8gVGl0bGUgY2FuIGJlIGEgc2NvcGVkIHNsb3QgZnVuY3Rpb25cbiAgICAgIHZhciAkdGl0bGUgPSBpc0Z1bmN0aW9uKHRoaXMudGl0bGUpID8gdGhpcy50aXRsZSh7fSkgOiBpc1VuZGVmaW5lZE9yTnVsbCh0aGlzLnRpdGxlKSA/IGgoKSA6IHRoaXMudGl0bGU7IC8vIERpcmVjdGl2ZSB2ZXJzaW9ucyBvbmx5XG5cbiAgICAgIHZhciBkb21Qcm9wcyA9IHRoaXMuaHRtbCAmJiAhaXNGdW5jdGlvbih0aGlzLnRpdGxlKSA/IHtcbiAgICAgICAgaW5uZXJIVE1MOiB0aGlzLnRpdGxlXG4gICAgICB9IDoge307XG4gICAgICByZXR1cm4gaCgnZGl2Jywge1xuICAgICAgICBzdGF0aWNDbGFzczogJ3Rvb2x0aXAgYi10b29sdGlwJyxcbiAgICAgICAgY2xhc3M6IHRoaXMudGVtcGxhdGVDbGFzc2VzLFxuICAgICAgICBhdHRyczogdGhpcy50ZW1wbGF0ZUF0dHJpYnV0ZXMsXG4gICAgICAgIG9uOiB0aGlzLnRlbXBsYXRlTGlzdGVuZXJzXG4gICAgICB9LCBbaCgnZGl2Jywge1xuICAgICAgICByZWY6ICdhcnJvdycsXG4gICAgICAgIHN0YXRpY0NsYXNzOiAnYXJyb3cnXG4gICAgICB9KSwgaCgnZGl2Jywge1xuICAgICAgICBzdGF0aWNDbGFzczogJ3Rvb2x0aXAtaW5uZXInLFxuICAgICAgICBkb21Qcm9wczogZG9tUHJvcHNcbiAgICAgIH0sIFskdGl0bGVdKV0pO1xuICAgIH1cbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90b29sdGlwL2hlbHBlcnMvYnYtdG9vbHRpcC10ZW1wbGF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTg5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///189\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return PopoverPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__popover__ = __webpack_require__(190);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__directives_popover__ = __webpack_require__(83);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BPopover */\n\n\n\nvar PopoverPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BPopover: __WEBPACK_IMPORTED_MODULE_0__popover__[\"a\" /* BPopover */]\n },\n plugins: {\n VBPopoverPlugin: __WEBPACK_IMPORTED_MODULE_1__directives_popover__[\"a\" /* VBPopoverPlugin */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wb3BvdmVyL2luZGV4LmpzP2RkMWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFxQztBQUNzQjtBQUNQO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsY0FBYywwREFBUTtBQUN0QixHQUFHO0FBQ0g7QUFDQSxxQkFBcUIsNEVBQWU7QUFDcEM7QUFDQSxDQUFDIiwiZmlsZSI6IjE4OS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJQb3BvdmVyIH0gZnJvbSAnLi9wb3BvdmVyJztcbmltcG9ydCB7IFZCUG9wb3ZlclBsdWdpbiB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgUG9wb3ZlclBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJQb3BvdmVyOiBCUG9wb3ZlclxuICB9LFxuICBwbHVnaW5zOiB7XG4gICAgVkJQb3BvdmVyUGx1Z2luOiBWQlBvcG92ZXJQbHVnaW5cbiAgfVxufSk7XG5leHBvcnQgeyBQb3BvdmVyUGx1Z2luLCBCUG9wb3ZlciB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvcG9wb3Zlci9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTg5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///189\n"); /***/ }), /* 190 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BVPopover; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__tooltip_helpers_bv_tooltip__ = __webpack_require__(82);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__bv_popover_template__ = __webpack_require__(259);\n// Popover \"Class\" (Built as a renderless Vue instance)\n// Inherits from BVTooltip\n//\n// Handles trigger events, etc.\n// Instantiates template on demand\n\n\n\nvar NAME = 'BVPopover'; // @vue/component\n\nvar BVPopover =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n extends: __WEBPACK_IMPORTED_MODULE_1__tooltip_helpers_bv_tooltip__[\"a\" /* BVTooltip */],\n computed: {\n // Overwrites BVTooltip\n templateType: function templateType() {\n return 'popover';\n }\n },\n methods: {\n getTemplate: function getTemplate() {\n // Overwrites BVTooltip\n return __WEBPACK_IMPORTED_MODULE_2__bv_popover_template__[\"a\" /* BVPopoverTemplate */];\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wb3BvdmVyL2hlbHBlcnMvYnYtcG9wb3Zlci5qcz9iNGQ0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNxQztBQUN3QjtBQUNIO0FBQzFELHVCQUF1Qjs7QUFFaEI7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQSxXQUFXLDhFQUFTO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSwrRUFBaUI7QUFDOUI7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMTkwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gUG9wb3ZlciBcIkNsYXNzXCIgKEJ1aWx0IGFzIGEgcmVuZGVybGVzcyBWdWUgaW5zdGFuY2UpXG4vLyBJbmhlcml0cyBmcm9tIEJWVG9vbHRpcFxuLy9cbi8vIEhhbmRsZXMgdHJpZ2dlciBldmVudHMsIGV0Yy5cbi8vIEluc3RhbnRpYXRlcyB0ZW1wbGF0ZSBvbiBkZW1hbmRcbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IEJWVG9vbHRpcCB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvaGVscGVycy9idi10b29sdGlwJztcbmltcG9ydCB7IEJWUG9wb3ZlclRlbXBsYXRlIH0gZnJvbSAnLi9idi1wb3BvdmVyLXRlbXBsYXRlJztcbnZhciBOQU1FID0gJ0JWUG9wb3Zlcic7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQlZQb3BvdmVyID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBleHRlbmRzOiBCVlRvb2x0aXAsXG4gIGNvbXB1dGVkOiB7XG4gICAgLy8gT3ZlcndyaXRlcyBCVlRvb2x0aXBcbiAgICB0ZW1wbGF0ZVR5cGU6IGZ1bmN0aW9uIHRlbXBsYXRlVHlwZSgpIHtcbiAgICAgIHJldHVybiAncG9wb3Zlcic7XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgZ2V0VGVtcGxhdGU6IGZ1bmN0aW9uIGdldFRlbXBsYXRlKCkge1xuICAgICAgLy8gT3ZlcndyaXRlcyBCVlRvb2x0aXBcbiAgICAgIHJldHVybiBCVlBvcG92ZXJUZW1wbGF0ZTtcbiAgICB9XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvcG9wb3Zlci9oZWxwZXJzL2J2LXBvcG92ZXIuanNcbi8vIG1vZHVsZSBpZCA9IDE5MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///190\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BPopover; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_safe_types__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__tooltip_tooltip__ = __webpack_require__(81);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__helpers_bv_popover__ = __webpack_require__(192);\n\n\n\n\n\nvar NAME = 'BPopover';\nvar BPopover =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n extends: __WEBPACK_IMPORTED_MODULE_3__tooltip_tooltip__[\"a\" /* BTooltip */],\n inheritAttrs: false,\n props: {\n title: {\n type: String // default: undefined\n\n },\n content: {\n type: String // default: undefined\n\n },\n triggers: {\n type: [String, Array],\n default: 'click'\n },\n placement: {\n type: String,\n default: 'right'\n },\n variant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant');\n }\n },\n customClass: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'customClass');\n }\n },\n delay: {\n type: [Number, Object, String],\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'delay');\n }\n },\n boundary: {\n // String: scrollParent, window, or viewport\n // Element: element reference\n // Object: Vue component\n type: [String, __WEBPACK_IMPORTED_MODULE_2__utils_safe_types__[\"b\" /* HTMLElement */], Object],\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'boundary');\n }\n },\n boundaryPadding: {\n type: [Number, String],\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'boundaryPadding');\n }\n }\n },\n methods: {\n getComponent: function getComponent() {\n // Overridden by BPopover\n return __WEBPACK_IMPORTED_MODULE_4__helpers_bv_popover__[\"a\" /* BVPopover */];\n },\n updateContent: function updateContent() {\n // Tooltip: Default slot is `title`\n // Popover: Default slot is `content`, `title` slot is title\n // We pass a scoped slot function references by default (Vue v2.6x)\n // And pass the title prop as a fallback\n this.setContent(this.$scopedSlots.default || this.content);\n this.setTitle(this.$scopedSlots.title || this.title);\n }\n } // Render function provided by BTooltip\n\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wb3BvdmVyL3BvcG92ZXIuanM/MzczOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDc0I7QUFDSDtBQUNQO0FBQ0c7QUFDakQ7QUFDTztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsa0VBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0VBQVc7QUFDaEM7QUFDQSxlQUFlLGlGQUFrQjtBQUNqQztBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlGQUFrQjtBQUNqQztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGFBQWEsc0VBQVM7QUFDdEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVILENBQUMiLCJmaWxlIjoiMTkwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29uZmlnJztcbmltcG9ydCB7IEhUTUxFbGVtZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvc2FmZS10eXBlcyc7XG5pbXBvcnQgeyBCVG9vbHRpcCB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcCc7XG5pbXBvcnQgeyBCVlBvcG92ZXIgfSBmcm9tICcuL2hlbHBlcnMvYnYtcG9wb3Zlcic7XG52YXIgTkFNRSA9ICdCUG9wb3Zlcic7XG5leHBvcnQgdmFyIEJQb3BvdmVyID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBleHRlbmRzOiBCVG9vbHRpcCxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgcHJvcHM6IHtcbiAgICB0aXRsZToge1xuICAgICAgdHlwZTogU3RyaW5nIC8vIGRlZmF1bHQ6IHVuZGVmaW5lZFxuXG4gICAgfSxcbiAgICBjb250ZW50OiB7XG4gICAgICB0eXBlOiBTdHJpbmcgLy8gZGVmYXVsdDogdW5kZWZpbmVkXG5cbiAgICB9LFxuICAgIHRyaWdnZXJzOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBBcnJheV0sXG4gICAgICBkZWZhdWx0OiAnY2xpY2snXG4gICAgfSxcbiAgICBwbGFjZW1lbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdyaWdodCdcbiAgICB9LFxuICAgIHZhcmlhbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICd2YXJpYW50Jyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBjdXN0b21DbGFzczoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ2N1c3RvbUNsYXNzJyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBkZWxheToge1xuICAgICAgdHlwZTogW051bWJlciwgT2JqZWN0LCBTdHJpbmddLFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ2RlbGF5Jyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBib3VuZGFyeToge1xuICAgICAgLy8gU3RyaW5nOiBzY3JvbGxQYXJlbnQsIHdpbmRvdywgb3Igdmlld3BvcnRcbiAgICAgIC8vIEVsZW1lbnQ6IGVsZW1lbnQgcmVmZXJlbmNlXG4gICAgICAvLyBPYmplY3Q6IFZ1ZSBjb21wb25lbnRcbiAgICAgIHR5cGU6IFtTdHJpbmcsIEhUTUxFbGVtZW50LCBPYmplY3RdLFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ2JvdW5kYXJ5Jyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBib3VuZGFyeVBhZGRpbmc6IHtcbiAgICAgIHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAnYm91bmRhcnlQYWRkaW5nJyk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgZ2V0Q29tcG9uZW50OiBmdW5jdGlvbiBnZXRDb21wb25lbnQoKSB7XG4gICAgICAvLyBPdmVycmlkZGVuIGJ5IEJQb3BvdmVyXG4gICAgICByZXR1cm4gQlZQb3BvdmVyO1xuICAgIH0sXG4gICAgdXBkYXRlQ29udGVudDogZnVuY3Rpb24gdXBkYXRlQ29udGVudCgpIHtcbiAgICAgIC8vIFRvb2x0aXA6IERlZmF1bHQgc2xvdCBpcyBgdGl0bGVgXG4gICAgICAvLyBQb3BvdmVyOiBEZWZhdWx0IHNsb3QgaXMgYGNvbnRlbnRgLCBgdGl0bGVgIHNsb3QgaXMgdGl0bGVcbiAgICAgIC8vIFdlIHBhc3MgYSBzY29wZWQgc2xvdCBmdW5jdGlvbiByZWZlcmVuY2VzIGJ5IGRlZmF1bHQgKFZ1ZSB2Mi42eClcbiAgICAgIC8vIEFuZCBwYXNzIHRoZSB0aXRsZSBwcm9wIGFzIGEgZmFsbGJhY2tcbiAgICAgIHRoaXMuc2V0Q29udGVudCh0aGlzLiRzY29wZWRTbG90cy5kZWZhdWx0IHx8IHRoaXMuY29udGVudCk7XG4gICAgICB0aGlzLnNldFRpdGxlKHRoaXMuJHNjb3BlZFNsb3RzLnRpdGxlIHx8IHRoaXMudGl0bGUpO1xuICAgIH1cbiAgfSAvLyBSZW5kZXIgZnVuY3Rpb24gcHJvdmlkZWQgYnkgQlRvb2x0aXBcblxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wb3BvdmVyL3BvcG92ZXIuanNcbi8vIG1vZHVsZSBpZCA9IDE5MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///190\n"); /***/ }), /* 191 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return VBPopover; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_get_scope_id__ = __webpack_require__(32);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_loose_equal__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_env__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__components_popover_helpers_bv_popover__ = __webpack_require__(190);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n // Key which we use to store tooltip object on element\n\nvar BV_POPOVER = '__BV_Popover__'; // Default trigger\n\nvar DefaultTrigger = 'click'; // Valid event triggers\n\nvar validTriggers = {\n focus: true,\n hover: true,\n click: true,\n blur: true,\n manual: true\n}; // Directive modifier test regular expressions. Pre-compile for performance\n\nvar htmlRE = /^html$/i;\nvar noFadeRE = /^nofade$/i;\nvar placementRE = /^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/i;\nvar boundaryRE = /^(window|viewport|scrollParent)$/i;\nvar delayRE = /^d\\d+$/i;\nvar delayShowRE = /^ds\\d+$/i;\nvar delayHideRE = /^dh\\d+$/i;\nvar offsetRE = /^o-?\\d+$/i;\nvar variantRE = /^v-.+$/i; // Build a Popover config based on bindings (if any)\n// Arguments and modifiers take precedence over passed value config object\n\nvar parseBindings = function parseBindings(bindings, vnode)\n/* istanbul ignore next: not easy to test */\n{\n // We start out with a basic config\n var NAME = 'BPopover';\n var config = {\n title: undefined,\n content: undefined,\n trigger: '',\n // Default set below if needed\n placement: 'right',\n fallbackPlacement: 'flip',\n container: false,\n // Default of body\n animation: true,\n offset: 0,\n disabled: false,\n id: null,\n html: false,\n delay: Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'delay'),\n boundary: String(Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'boundary')),\n boundaryPadding: parseInt(Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'boundaryPadding'), 10) || 0,\n variant: Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant'),\n customClass: Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'customClass')\n }; // Process `bindings.value`\n\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"m\" /* isString */])(bindings.value) || Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"h\" /* isNumber */])(bindings.value)) {\n // Value is popover content (html optionally supported)\n config.content = bindings.value;\n } else if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"f\" /* isFunction */])(bindings.value)) {\n // Content generator function\n config.content = bindings.value;\n } else if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"j\" /* isPlainObject */])(bindings.value)) {\n // Value is config object, so merge\n config = _objectSpread({}, config, {}, bindings.value);\n } // If argument, assume element ID of container element\n\n\n if (bindings.arg) {\n // Element ID specified as arg\n // We must prepend '#' to become a CSS selector\n config.container = \"#\".concat(bindings.arg);\n } // If title is not provided, try title attribute\n\n\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"n\" /* isUndefined */])(config.title)) {\n // Try attribute\n var data = vnode.data || {};\n config.title = data.attrs && !Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"o\" /* isUndefinedOrNull */])(data.attrs.title) ? data.attrs.title : undefined;\n } // Normalize delay\n\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"j\" /* isPlainObject */])(config.delay)) {\n config.delay = {\n show: parseInt(config.delay, 10) || 0,\n hide: parseInt(config.delay, 10) || 0\n };\n } // Process modifiers\n\n\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_object__[\"j\" /* keys */])(bindings.modifiers).forEach(function (mod) {\n if (htmlRE.test(mod)) {\n // Title/content allows HTML\n config.html = true;\n } else if (noFadeRE.test(mod)) {\n // No animation\n config.animation = false;\n } else if (placementRE.test(mod)) {\n // Placement of popover\n config.placement = mod;\n } else if (boundaryRE.test(mod)) {\n // Boundary of popover\n mod = mod === 'scrollparent' ? 'scrollParent' : mod;\n config.boundary = mod;\n } else if (delayRE.test(mod)) {\n // Delay value\n var delay = parseInt(mod.slice(1), 10) || 0;\n config.delay.show = delay;\n config.delay.hide = delay;\n } else if (delayShowRE.test(mod)) {\n // Delay show value\n config.delay.show = parseInt(mod.slice(2), 10) || 0;\n } else if (delayHideRE.test(mod)) {\n // Delay hide value\n config.delay.hide = parseInt(mod.slice(2), 10) || 0;\n } else if (offsetRE.test(mod)) {\n // Offset value, negative allowed\n config.offset = parseInt(mod.slice(1), 10) || 0;\n } else if (variantRE.test(mod)) {\n // Variant\n config.variant = mod.slice(2) || null;\n }\n }); // Special handling of event trigger modifiers trigger is\n // a space separated list\n\n var selectedTriggers = {}; // Parse current config object trigger\n\n Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"b\" /* concat */])(config.trigger || '').filter(Boolean).join(' ').trim().toLowerCase().split(/\\s+/).forEach(function (trigger) {\n if (validTriggers[trigger]) {\n selectedTriggers[trigger] = true;\n }\n }); // Parse modifiers for triggers\n\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_object__[\"j\" /* keys */])(bindings.modifiers).forEach(function (mod) {\n mod = mod.toLowerCase();\n\n if (validTriggers[mod]) {\n // If modifier is a valid trigger\n selectedTriggers[mod] = true;\n }\n }); // Sanitize triggers\n\n config.trigger = Object(__WEBPACK_IMPORTED_MODULE_6__utils_object__[\"j\" /* keys */])(selectedTriggers).join(' ');\n\n if (config.trigger === 'blur') {\n // Blur by itself is useless, so convert it to 'focus'\n config.trigger = 'focus';\n }\n\n if (!config.trigger) {\n // Use default trigger\n config.trigger = DefaultTrigger;\n }\n\n return config;\n}; // Add or update Popover on our element\n\n\nvar applyPopover = function applyPopover(el, bindings, vnode) {\n if (!__WEBPACK_IMPORTED_MODULE_4__utils_env__[\"j\" /* isBrowser */]) {\n /* istanbul ignore next */\n return;\n }\n\n var config = parseBindings(bindings, vnode);\n\n if (!el[BV_POPOVER]) {\n var $parent = vnode.context;\n el[BV_POPOVER] = new __WEBPACK_IMPORTED_MODULE_7__components_popover_helpers_bv_popover__[\"a\" /* BVPopover */]({\n parent: $parent,\n // Add the parent's scoped style attribute data\n _scopeId: Object(__WEBPACK_IMPORTED_MODULE_0__utils_get_scope_id__[\"a\" /* default */])($parent, undefined)\n });\n el[BV_POPOVER].__bv_prev_data__ = {};\n el[BV_POPOVER].$on('show', function ()\n /* istanbul ignore next: for now */\n {\n // Before showing the popover, we update the title\n // and content if they are functions\n var data = {};\n\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"f\" /* isFunction */])(config.title)) {\n data.title = config.title();\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"f\" /* isFunction */])(config.content)) {\n data.content = config.content();\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_6__utils_object__[\"j\" /* keys */])(data).length > 0) {\n el[BV_POPOVER].updateData(data);\n }\n });\n }\n\n var data = {\n title: config.title,\n content: config.content,\n triggers: config.trigger,\n placement: config.placement,\n fallbackPlacement: config.fallbackPlacement,\n variant: config.variant,\n customClass: config.customClass,\n container: config.container,\n boundary: config.boundary,\n delay: config.delay,\n offset: config.offset,\n noFade: !config.animation,\n id: config.id,\n disabled: config.disabled,\n html: config.html\n };\n var oldData = el[BV_POPOVER].__bv_prev_data__;\n el[BV_POPOVER].__bv_prev_data__ = data;\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__utils_loose_equal__[\"a\" /* default */])(data, oldData)) {\n // We only update the instance if data has changed\n var newData = {\n target: el\n };\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_object__[\"j\" /* keys */])(data).forEach(function (prop) {\n // We only pass data properties that have changed\n if (data[prop] !== oldData[prop]) {\n // If title/content is a function, we execute it here\n newData[prop] = (prop === 'title' || prop === 'content') && Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"f\" /* isFunction */])(data[prop]) ? data[prop]() : data[prop];\n }\n });\n el[BV_POPOVER].updateData(newData);\n }\n}; // Remove Popover from our element\n\n\nvar removePopover = function removePopover(el) {\n if (el[BV_POPOVER]) {\n el[BV_POPOVER].$destroy();\n el[BV_POPOVER] = null;\n }\n\n delete el[BV_POPOVER];\n}; // Export our directive\n\n\nvar VBPopover = {\n bind: function bind(el, bindings, vnode) {\n applyPopover(el, bindings, vnode);\n },\n // We use `componentUpdated` here instead of `update`, as the former\n // waits until the containing component and children have finished updating\n componentUpdated: function componentUpdated(el, bindings, vnode) {\n // Performed in a `$nextTick()` to prevent endless render/update loops\n vnode.context.$nextTick(function () {\n applyPopover(el, bindings, vnode);\n });\n },\n unbind: function unbind(el) {\n removePopover(el);\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy9wb3BvdmVyL3BvcG92ZXIuanM/ZjY3ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTlKO0FBQ0E7QUFDTjtBQUNhO0FBQ1o7QUFDd0U7QUFDMUU7QUFDOEI7O0FBRXhFLGtDQUFrQzs7QUFFbEMsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGlGQUFrQjtBQUM3QixxQkFBcUIsaUZBQWtCO0FBQ3ZDLDhCQUE4QixpRkFBa0I7QUFDaEQsYUFBYSxpRkFBa0I7QUFDL0IsaUJBQWlCLGlGQUFrQjtBQUNuQyxJQUFJOztBQUVKLE1BQU0sd0VBQVEsb0JBQW9CLHdFQUFRO0FBQzFDO0FBQ0E7QUFDQSxHQUFHLFVBQVUsMEVBQVU7QUFDdkI7QUFDQTtBQUNBLEdBQUcsVUFBVSw2RUFBYTtBQUMxQjtBQUNBLDZCQUE2QixZQUFZO0FBQ3pDLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsTUFBTSwyRUFBVztBQUNqQjtBQUNBO0FBQ0Esa0NBQWtDLGlGQUFpQjtBQUNuRCxHQUFHOzs7QUFHSCxPQUFPLDZFQUFhO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsRUFBRSxtRUFBSTtBQUNOO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTtBQUNMOztBQUVBLDRCQUE0Qjs7QUFFNUIsRUFBRSxvRUFBTTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTs7QUFFTCxFQUFFLG1FQUFJO0FBQ047O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUwsbUJBQW1CLG1FQUFJOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0EsT0FBTyw2REFBUztBQUNoQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLHlCQUF5Qix5RkFBUztBQUNsQztBQUNBO0FBQ0EsZ0JBQWdCLDRFQUFTO0FBQ3pCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLDBFQUFVO0FBQ3BCO0FBQ0E7O0FBRUEsVUFBVSwwRUFBVTtBQUNwQjtBQUNBOztBQUVBLFVBQVUsbUVBQUk7QUFDZDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU8sMkVBQVU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLG1FQUFJO0FBQ1I7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FLDBFQUFVO0FBQzlFO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7O0FBR0s7QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTkxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IGdldFNjb3BJZCBmcm9tICcuLi8uLi91dGlscy9nZXQtc2NvcGUtaWQnO1xuaW1wb3J0IGxvb3NlRXF1YWwgZnJvbSAnLi4vLi4vdXRpbHMvbG9vc2UtZXF1YWwnO1xuaW1wb3J0IHsgY29uY2F0IH0gZnJvbSAnLi4vLi4vdXRpbHMvYXJyYXknO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29uZmlnJztcbmltcG9ydCB7IGlzQnJvd3NlciB9IGZyb20gJy4uLy4uL3V0aWxzL2Vudic7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uLCBpc051bWJlciwgaXNQbGFpbk9iamVjdCwgaXNTdHJpbmcsIGlzVW5kZWZpbmVkLCBpc1VuZGVmaW5lZE9yTnVsbCB9IGZyb20gJy4uLy4uL3V0aWxzL2luc3BlY3QnO1xuaW1wb3J0IHsga2V5cyB9IGZyb20gJy4uLy4uL3V0aWxzL29iamVjdCc7XG5pbXBvcnQgeyBCVlBvcG92ZXIgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3BvcG92ZXIvaGVscGVycy9idi1wb3BvdmVyJzsgLy8gS2V5IHdoaWNoIHdlIHVzZSB0byBzdG9yZSB0b29sdGlwIG9iamVjdCBvbiBlbGVtZW50XG5cbnZhciBCVl9QT1BPVkVSID0gJ19fQlZfUG9wb3Zlcl9fJzsgLy8gRGVmYXVsdCB0cmlnZ2VyXG5cbnZhciBEZWZhdWx0VHJpZ2dlciA9ICdjbGljayc7IC8vIFZhbGlkIGV2ZW50IHRyaWdnZXJzXG5cbnZhciB2YWxpZFRyaWdnZXJzID0ge1xuICBmb2N1czogdHJ1ZSxcbiAgaG92ZXI6IHRydWUsXG4gIGNsaWNrOiB0cnVlLFxuICBibHVyOiB0cnVlLFxuICBtYW51YWw6IHRydWVcbn07IC8vIERpcmVjdGl2ZSBtb2RpZmllciB0ZXN0IHJlZ3VsYXIgZXhwcmVzc2lvbnMuIFByZS1jb21waWxlIGZvciBwZXJmb3JtYW5jZVxuXG52YXIgaHRtbFJFID0gL15odG1sJC9pO1xudmFyIG5vRmFkZVJFID0gL15ub2ZhZGUkL2k7XG52YXIgcGxhY2VtZW50UkUgPSAvXihhdXRvfHRvcChsZWZ0fHJpZ2h0KT98Ym90dG9tKGxlZnR8cmlnaHQpP3xsZWZ0KHRvcHxib3R0b20pP3xyaWdodCh0b3B8Ym90dG9tKT8pJC9pO1xudmFyIGJvdW5kYXJ5UkUgPSAvXih3aW5kb3d8dmlld3BvcnR8c2Nyb2xsUGFyZW50KSQvaTtcbnZhciBkZWxheVJFID0gL15kXFxkKyQvaTtcbnZhciBkZWxheVNob3dSRSA9IC9eZHNcXGQrJC9pO1xudmFyIGRlbGF5SGlkZVJFID0gL15kaFxcZCskL2k7XG52YXIgb2Zmc2V0UkUgPSAvXm8tP1xcZCskL2k7XG52YXIgdmFyaWFudFJFID0gL152LS4rJC9pOyAvLyBCdWlsZCBhIFBvcG92ZXIgY29uZmlnIGJhc2VkIG9uIGJpbmRpbmdzIChpZiBhbnkpXG4vLyBBcmd1bWVudHMgYW5kIG1vZGlmaWVycyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBwYXNzZWQgdmFsdWUgY29uZmlnIG9iamVjdFxuXG52YXIgcGFyc2VCaW5kaW5ncyA9IGZ1bmN0aW9uIHBhcnNlQmluZGluZ3MoYmluZGluZ3MsIHZub2RlKVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IG5vdCBlYXN5IHRvIHRlc3QgKi9cbntcbiAgLy8gV2Ugc3RhcnQgb3V0IHdpdGggYSBiYXNpYyBjb25maWdcbiAgdmFyIE5BTUUgPSAnQlBvcG92ZXInO1xuICB2YXIgY29uZmlnID0ge1xuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gICAgY29udGVudDogdW5kZWZpbmVkLFxuICAgIHRyaWdnZXI6ICcnLFxuICAgIC8vIERlZmF1bHQgc2V0IGJlbG93IGlmIG5lZWRlZFxuICAgIHBsYWNlbWVudDogJ3JpZ2h0JyxcbiAgICBmYWxsYmFja1BsYWNlbWVudDogJ2ZsaXAnLFxuICAgIGNvbnRhaW5lcjogZmFsc2UsXG4gICAgLy8gRGVmYXVsdCBvZiBib2R5XG4gICAgYW5pbWF0aW9uOiB0cnVlLFxuICAgIG9mZnNldDogMCxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaWQ6IG51bGwsXG4gICAgaHRtbDogZmFsc2UsXG4gICAgZGVsYXk6IGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAnZGVsYXknKSxcbiAgICBib3VuZGFyeTogU3RyaW5nKGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAnYm91bmRhcnknKSksXG4gICAgYm91bmRhcnlQYWRkaW5nOiBwYXJzZUludChnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ2JvdW5kYXJ5UGFkZGluZycpLCAxMCkgfHwgMCxcbiAgICB2YXJpYW50OiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ3ZhcmlhbnQnKSxcbiAgICBjdXN0b21DbGFzczogZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdjdXN0b21DbGFzcycpXG4gIH07IC8vIFByb2Nlc3MgYGJpbmRpbmdzLnZhbHVlYFxuXG4gIGlmIChpc1N0cmluZyhiaW5kaW5ncy52YWx1ZSkgfHwgaXNOdW1iZXIoYmluZGluZ3MudmFsdWUpKSB7XG4gICAgLy8gVmFsdWUgaXMgcG9wb3ZlciBjb250ZW50IChodG1sIG9wdGlvbmFsbHkgc3VwcG9ydGVkKVxuICAgIGNvbmZpZy5jb250ZW50ID0gYmluZGluZ3MudmFsdWU7XG4gIH0gZWxzZSBpZiAoaXNGdW5jdGlvbihiaW5kaW5ncy52YWx1ZSkpIHtcbiAgICAvLyBDb250ZW50IGdlbmVyYXRvciBmdW5jdGlvblxuICAgIGNvbmZpZy5jb250ZW50ID0gYmluZGluZ3MudmFsdWU7XG4gIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChiaW5kaW5ncy52YWx1ZSkpIHtcbiAgICAvLyBWYWx1ZSBpcyBjb25maWcgb2JqZWN0LCBzbyBtZXJnZVxuICAgIGNvbmZpZyA9IF9vYmplY3RTcHJlYWQoe30sIGNvbmZpZywge30sIGJpbmRpbmdzLnZhbHVlKTtcbiAgfSAvLyBJZiBhcmd1bWVudCwgYXNzdW1lIGVsZW1lbnQgSUQgb2YgY29udGFpbmVyIGVsZW1lbnRcblxuXG4gIGlmIChiaW5kaW5ncy5hcmcpIHtcbiAgICAvLyBFbGVtZW50IElEIHNwZWNpZmllZCBhcyBhcmdcbiAgICAvLyBXZSBtdXN0IHByZXBlbmQgJyMnIHRvIGJlY29tZSBhIENTUyBzZWxlY3RvclxuICAgIGNvbmZpZy5jb250YWluZXIgPSBcIiNcIi5jb25jYXQoYmluZGluZ3MuYXJnKTtcbiAgfSAvLyBJZiB0aXRsZSBpcyBub3QgcHJvdmlkZWQsIHRyeSB0aXRsZSBhdHRyaWJ1dGVcblxuXG4gIGlmIChpc1VuZGVmaW5lZChjb25maWcudGl0bGUpKSB7XG4gICAgLy8gVHJ5IGF0dHJpYnV0ZVxuICAgIHZhciBkYXRhID0gdm5vZGUuZGF0YSB8fCB7fTtcbiAgICBjb25maWcudGl0bGUgPSBkYXRhLmF0dHJzICYmICFpc1VuZGVmaW5lZE9yTnVsbChkYXRhLmF0dHJzLnRpdGxlKSA/IGRhdGEuYXR0cnMudGl0bGUgOiB1bmRlZmluZWQ7XG4gIH0gLy8gTm9ybWFsaXplIGRlbGF5XG5cblxuICBpZiAoIWlzUGxhaW5PYmplY3QoY29uZmlnLmRlbGF5KSkge1xuICAgIGNvbmZpZy5kZWxheSA9IHtcbiAgICAgIHNob3c6IHBhcnNlSW50KGNvbmZpZy5kZWxheSwgMTApIHx8IDAsXG4gICAgICBoaWRlOiBwYXJzZUludChjb25maWcuZGVsYXksIDEwKSB8fCAwXG4gICAgfTtcbiAgfSAvLyBQcm9jZXNzIG1vZGlmaWVyc1xuXG5cbiAga2V5cyhiaW5kaW5ncy5tb2RpZmllcnMpLmZvckVhY2goZnVuY3Rpb24gKG1vZCkge1xuICAgIGlmIChodG1sUkUudGVzdChtb2QpKSB7XG4gICAgICAvLyBUaXRsZS9jb250ZW50IGFsbG93cyBIVE1MXG4gICAgICBjb25maWcuaHRtbCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChub0ZhZGVSRS50ZXN0KG1vZCkpIHtcbiAgICAgIC8vIE5vIGFuaW1hdGlvblxuICAgICAgY29uZmlnLmFuaW1hdGlvbiA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAocGxhY2VtZW50UkUudGVzdChtb2QpKSB7XG4gICAgICAvLyBQbGFjZW1lbnQgb2YgcG9wb3ZlclxuICAgICAgY29uZmlnLnBsYWNlbWVudCA9IG1vZDtcbiAgICB9IGVsc2UgaWYgKGJvdW5kYXJ5UkUudGVzdChtb2QpKSB7XG4gICAgICAvLyBCb3VuZGFyeSBvZiBwb3BvdmVyXG4gICAgICBtb2QgPSBtb2QgPT09ICdzY3JvbGxwYXJlbnQnID8gJ3Njcm9sbFBhcmVudCcgOiBtb2Q7XG4gICAgICBjb25maWcuYm91bmRhcnkgPSBtb2Q7XG4gICAgfSBlbHNlIGlmIChkZWxheVJFLnRlc3QobW9kKSkge1xuICAgICAgLy8gRGVsYXkgdmFsdWVcbiAgICAgIHZhciBkZWxheSA9IHBhcnNlSW50KG1vZC5zbGljZSgxKSwgMTApIHx8IDA7XG4gICAgICBjb25maWcuZGVsYXkuc2hvdyA9IGRlbGF5O1xuICAgICAgY29uZmlnLmRlbGF5LmhpZGUgPSBkZWxheTtcbiAgICB9IGVsc2UgaWYgKGRlbGF5U2hvd1JFLnRlc3QobW9kKSkge1xuICAgICAgLy8gRGVsYXkgc2hvdyB2YWx1ZVxuICAgICAgY29uZmlnLmRlbGF5LnNob3cgPSBwYXJzZUludChtb2Quc2xpY2UoMiksIDEwKSB8fCAwO1xuICAgIH0gZWxzZSBpZiAoZGVsYXlIaWRlUkUudGVzdChtb2QpKSB7XG4gICAgICAvLyBEZWxheSBoaWRlIHZhbHVlXG4gICAgICBjb25maWcuZGVsYXkuaGlkZSA9IHBhcnNlSW50KG1vZC5zbGljZSgyKSwgMTApIHx8IDA7XG4gICAgfSBlbHNlIGlmIChvZmZzZXRSRS50ZXN0KG1vZCkpIHtcbiAgICAgIC8vIE9mZnNldCB2YWx1ZSwgbmVnYXRpdmUgYWxsb3dlZFxuICAgICAgY29uZmlnLm9mZnNldCA9IHBhcnNlSW50KG1vZC5zbGljZSgxKSwgMTApIHx8IDA7XG4gICAgfSBlbHNlIGlmICh2YXJpYW50UkUudGVzdChtb2QpKSB7XG4gICAgICAvLyBWYXJpYW50XG4gICAgICBjb25maWcudmFyaWFudCA9IG1vZC5zbGljZSgyKSB8fCBudWxsO1xuICAgIH1cbiAgfSk7IC8vIFNwZWNpYWwgaGFuZGxpbmcgb2YgZXZlbnQgdHJpZ2dlciBtb2RpZmllcnMgdHJpZ2dlciBpc1xuICAvLyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0XG5cbiAgdmFyIHNlbGVjdGVkVHJpZ2dlcnMgPSB7fTsgLy8gUGFyc2UgY3VycmVudCBjb25maWcgb2JqZWN0IHRyaWdnZXJcblxuICBjb25jYXQoY29uZmlnLnRyaWdnZXIgfHwgJycpLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJykudHJpbSgpLnRvTG93ZXJDYXNlKCkuc3BsaXQoL1xccysvKS5mb3JFYWNoKGZ1bmN0aW9uICh0cmlnZ2VyKSB7XG4gICAgaWYgKHZhbGlkVHJpZ2dlcnNbdHJpZ2dlcl0pIHtcbiAgICAgIHNlbGVjdGVkVHJpZ2dlcnNbdHJpZ2dlcl0gPSB0cnVlO1xuICAgIH1cbiAgfSk7IC8vIFBhcnNlIG1vZGlmaWVycyBmb3IgdHJpZ2dlcnNcblxuICBrZXlzKGJpbmRpbmdzLm1vZGlmaWVycykuZm9yRWFjaChmdW5jdGlvbiAobW9kKSB7XG4gICAgbW9kID0gbW9kLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAodmFsaWRUcmlnZ2Vyc1ttb2RdKSB7XG4gICAgICAvLyBJZiBtb2RpZmllciBpcyBhIHZhbGlkIHRyaWdnZXJcbiAgICAgIHNlbGVjdGVkVHJpZ2dlcnNbbW9kXSA9IHRydWU7XG4gICAgfVxuICB9KTsgLy8gU2FuaXRpemUgdHJpZ2dlcnNcblxuICBjb25maWcudHJpZ2dlciA9IGtleXMoc2VsZWN0ZWRUcmlnZ2Vycykuam9pbignICcpO1xuXG4gIGlmIChjb25maWcudHJpZ2dlciA9PT0gJ2JsdXInKSB7XG4gICAgLy8gQmx1ciBieSBpdHNlbGYgaXMgdXNlbGVzcywgc28gY29udmVydCBpdCB0byAnZm9jdXMnXG4gICAgY29uZmlnLnRyaWdnZXIgPSAnZm9jdXMnO1xuICB9XG5cbiAgaWYgKCFjb25maWcudHJpZ2dlcikge1xuICAgIC8vIFVzZSBkZWZhdWx0IHRyaWdnZXJcbiAgICBjb25maWcudHJpZ2dlciA9IERlZmF1bHRUcmlnZ2VyO1xuICB9XG5cbiAgcmV0dXJuIGNvbmZpZztcbn07IC8vIEFkZCBvciB1cGRhdGUgUG9wb3ZlciBvbiBvdXIgZWxlbWVudFxuXG5cbnZhciBhcHBseVBvcG92ZXIgPSBmdW5jdGlvbiBhcHBseVBvcG92ZXIoZWwsIGJpbmRpbmdzLCB2bm9kZSkge1xuICBpZiAoIWlzQnJvd3Nlcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGNvbmZpZyA9IHBhcnNlQmluZGluZ3MoYmluZGluZ3MsIHZub2RlKTtcblxuICBpZiAoIWVsW0JWX1BPUE9WRVJdKSB7XG4gICAgdmFyICRwYXJlbnQgPSB2bm9kZS5jb250ZXh0O1xuICAgIGVsW0JWX1BPUE9WRVJdID0gbmV3IEJWUG9wb3Zlcih7XG4gICAgICBwYXJlbnQ6ICRwYXJlbnQsXG4gICAgICAvLyBBZGQgdGhlIHBhcmVudCdzIHNjb3BlZCBzdHlsZSBhdHRyaWJ1dGUgZGF0YVxuICAgICAgX3Njb3BlSWQ6IGdldFNjb3BJZCgkcGFyZW50LCB1bmRlZmluZWQpXG4gICAgfSk7XG4gICAgZWxbQlZfUE9QT1ZFUl0uX19idl9wcmV2X2RhdGFfXyA9IHt9O1xuICAgIGVsW0JWX1BPUE9WRVJdLiRvbignc2hvdycsIGZ1bmN0aW9uICgpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGZvciBub3cgKi9cbiAgICB7XG4gICAgICAvLyBCZWZvcmUgc2hvd2luZyB0aGUgcG9wb3Zlciwgd2UgdXBkYXRlIHRoZSB0aXRsZVxuICAgICAgLy8gYW5kIGNvbnRlbnQgaWYgdGhleSBhcmUgZnVuY3Rpb25zXG4gICAgICB2YXIgZGF0YSA9IHt9O1xuXG4gICAgICBpZiAoaXNGdW5jdGlvbihjb25maWcudGl0bGUpKSB7XG4gICAgICAgIGRhdGEudGl0bGUgPSBjb25maWcudGl0bGUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzRnVuY3Rpb24oY29uZmlnLmNvbnRlbnQpKSB7XG4gICAgICAgIGRhdGEuY29udGVudCA9IGNvbmZpZy5jb250ZW50KCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChrZXlzKGRhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZWxbQlZfUE9QT1ZFUl0udXBkYXRlRGF0YShkYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHZhciBkYXRhID0ge1xuICAgIHRpdGxlOiBjb25maWcudGl0bGUsXG4gICAgY29udGVudDogY29uZmlnLmNvbnRlbnQsXG4gICAgdHJpZ2dlcnM6IGNvbmZpZy50cmlnZ2VyLFxuICAgIHBsYWNlbWVudDogY29uZmlnLnBsYWNlbWVudCxcbiAgICBmYWxsYmFja1BsYWNlbWVudDogY29uZmlnLmZhbGxiYWNrUGxhY2VtZW50LFxuICAgIHZhcmlhbnQ6IGNvbmZpZy52YXJpYW50LFxuICAgIGN1c3RvbUNsYXNzOiBjb25maWcuY3VzdG9tQ2xhc3MsXG4gICAgY29udGFpbmVyOiBjb25maWcuY29udGFpbmVyLFxuICAgIGJvdW5kYXJ5OiBjb25maWcuYm91bmRhcnksXG4gICAgZGVsYXk6IGNvbmZpZy5kZWxheSxcbiAgICBvZmZzZXQ6IGNvbmZpZy5vZmZzZXQsXG4gICAgbm9GYWRlOiAhY29uZmlnLmFuaW1hdGlvbixcbiAgICBpZDogY29uZmlnLmlkLFxuICAgIGRpc2FibGVkOiBjb25maWcuZGlzYWJsZWQsXG4gICAgaHRtbDogY29uZmlnLmh0bWxcbiAgfTtcbiAgdmFyIG9sZERhdGEgPSBlbFtCVl9QT1BPVkVSXS5fX2J2X3ByZXZfZGF0YV9fO1xuICBlbFtCVl9QT1BPVkVSXS5fX2J2X3ByZXZfZGF0YV9fID0gZGF0YTtcblxuICBpZiAoIWxvb3NlRXF1YWwoZGF0YSwgb2xkRGF0YSkpIHtcbiAgICAvLyBXZSBvbmx5IHVwZGF0ZSB0aGUgaW5zdGFuY2UgaWYgZGF0YSBoYXMgY2hhbmdlZFxuICAgIHZhciBuZXdEYXRhID0ge1xuICAgICAgdGFyZ2V0OiBlbFxuICAgIH07XG4gICAga2V5cyhkYXRhKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICAvLyBXZSBvbmx5IHBhc3MgZGF0YSBwcm9wZXJ0aWVzIHRoYXQgaGF2ZSBjaGFuZ2VkXG4gICAgICBpZiAoZGF0YVtwcm9wXSAhPT0gb2xkRGF0YVtwcm9wXSkge1xuICAgICAgICAvLyBJZiB0aXRsZS9jb250ZW50IGlzIGEgZnVuY3Rpb24sIHdlIGV4ZWN1dGUgaXQgaGVyZVxuICAgICAgICBuZXdEYXRhW3Byb3BdID0gKHByb3AgPT09ICd0aXRsZScgfHwgcHJvcCA9PT0gJ2NvbnRlbnQnKSAmJiBpc0Z1bmN0aW9uKGRhdGFbcHJvcF0pID8gZGF0YVtwcm9wXSgpIDogZGF0YVtwcm9wXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBlbFtCVl9QT1BPVkVSXS51cGRhdGVEYXRhKG5ld0RhdGEpO1xuICB9XG59OyAvLyBSZW1vdmUgUG9wb3ZlciBmcm9tIG91ciBlbGVtZW50XG5cblxudmFyIHJlbW92ZVBvcG92ZXIgPSBmdW5jdGlvbiByZW1vdmVQb3BvdmVyKGVsKSB7XG4gIGlmIChlbFtCVl9QT1BPVkVSXSkge1xuICAgIGVsW0JWX1BPUE9WRVJdLiRkZXN0cm95KCk7XG4gICAgZWxbQlZfUE9QT1ZFUl0gPSBudWxsO1xuICB9XG5cbiAgZGVsZXRlIGVsW0JWX1BPUE9WRVJdO1xufTsgLy8gRXhwb3J0IG91ciBkaXJlY3RpdmVcblxuXG5leHBvcnQgdmFyIFZCUG9wb3ZlciA9IHtcbiAgYmluZDogZnVuY3Rpb24gYmluZChlbCwgYmluZGluZ3MsIHZub2RlKSB7XG4gICAgYXBwbHlQb3BvdmVyKGVsLCBiaW5kaW5ncywgdm5vZGUpO1xuICB9LFxuICAvLyBXZSB1c2UgYGNvbXBvbmVudFVwZGF0ZWRgIGhlcmUgaW5zdGVhZCBvZiBgdXBkYXRlYCwgYXMgdGhlIGZvcm1lclxuICAvLyB3YWl0cyB1bnRpbCB0aGUgY29udGFpbmluZyBjb21wb25lbnQgYW5kIGNoaWxkcmVuIGhhdmUgZmluaXNoZWQgdXBkYXRpbmdcbiAgY29tcG9uZW50VXBkYXRlZDogZnVuY3Rpb24gY29tcG9uZW50VXBkYXRlZChlbCwgYmluZGluZ3MsIHZub2RlKSB7XG4gICAgLy8gUGVyZm9ybWVkIGluIGEgYCRuZXh0VGljaygpYCB0byBwcmV2ZW50IGVuZGxlc3MgcmVuZGVyL3VwZGF0ZSBsb29wc1xuICAgIHZub2RlLmNvbnRleHQuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwcGx5UG9wb3ZlcihlbCwgYmluZGluZ3MsIHZub2RlKTtcbiAgICB9KTtcbiAgfSxcbiAgdW5iaW5kOiBmdW5jdGlvbiB1bmJpbmQoZWwpIHtcbiAgICByZW1vdmVQb3BvdmVyKGVsKTtcbiAgfVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9kaXJlY3RpdmVzL3BvcG92ZXIvcG9wb3Zlci5qc1xuLy8gbW9kdWxlIGlkID0gMTkxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///191\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BVTooltipTemplate; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_scoped_style_attrs__ = __webpack_require__(78);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__bv_popper__ = __webpack_require__(258);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\nvar NAME = 'BVTooltipTemplate'; // @vue/component\n\nvar BVTooltipTemplate =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n extends: __WEBPACK_IMPORTED_MODULE_3__bv_popper__[\"a\" /* BVPopper */],\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_scoped_style_attrs__[\"a\" /* default */]],\n props: {\n // Other non-reactive (while open) props are pulled in from BVPopper\n id: {\n type: String,\n default: null\n },\n html: {\n // Used only by the directive versions\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n // We use data, rather than props to ensure reactivity\n // Parent component will directly set this data\n return {\n title: '',\n content: '',\n variant: null,\n customClass: null\n };\n },\n computed: {\n templateType: function templateType() {\n return 'tooltip';\n },\n templateClasses: function templateClasses() {\n var _ref;\n\n return [(_ref = {}, _defineProperty(_ref, \"b-\".concat(this.templateType, \"-\").concat(this.variant), this.variant), _defineProperty(_ref, \"bs-\".concat(this.templateType, \"-\").concat(this.attachment), this.attachment), _ref), this.customClass];\n },\n templateAttributes: function templateAttributes() {\n return _objectSpread({\n id: this.id,\n role: 'tooltip',\n tabindex: '-1'\n }, this.scopedStyleAttrs);\n },\n templateListeners: function templateListeners() {\n var _this = this;\n\n // Used for hover/focus trigger listeners\n return {\n mouseenter: function mouseenter(evt) {\n /* istanbul ignore next: difficult to test in JSDOM */\n _this.$emit('mouseenter', evt);\n },\n mouseleave: function mouseleave(evt) {\n /* istanbul ignore next: difficult to test in JSDOM */\n _this.$emit('mouseleave', evt);\n },\n focusin: function focusin(evt) {\n /* istanbul ignore next: difficult to test in JSDOM */\n _this.$emit('focusin', evt);\n },\n focusout: function focusout(evt) {\n /* istanbul ignore next: difficult to test in JSDOM */\n _this.$emit('focusout', evt);\n }\n };\n }\n },\n methods: {\n renderTemplate: function renderTemplate(h) {\n // Title can be a scoped slot function\n var $title = Object(__WEBPACK_IMPORTED_MODULE_2__utils_inspect__[\"f\" /* isFunction */])(this.title) ? this.title({}) : Object(__WEBPACK_IMPORTED_MODULE_2__utils_inspect__[\"o\" /* isUndefinedOrNull */])(this.title) ? h() : this.title; // Directive versions only\n\n var domProps = this.html && !Object(__WEBPACK_IMPORTED_MODULE_2__utils_inspect__[\"f\" /* isFunction */])(this.title) ? {\n innerHTML: this.title\n } : {};\n return h('div', {\n staticClass: 'tooltip b-tooltip',\n class: this.templateClasses,\n attrs: this.templateAttributes,\n on: this.templateListeners\n }, [h('div', {\n ref: 'arrow',\n staticClass: 'arrow'\n }), h('div', {\n staticClass: 'tooltip-inner',\n domProps: domProps\n }, [$title])]);\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90b29sdGlwL2hlbHBlcnMvYnYtdG9vbHRpcC10ZW1wbGF0ZS5qcz8wNjk3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTFLO0FBQ2tDO0FBQ0E7QUFDaEM7QUFDdkMsK0JBQStCOztBQUV4QjtBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsNERBQVE7QUFDbkIsV0FBVywyRUFBcUI7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSx3QkFBd0I7QUFDeEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMEVBQVUsNEJBQTRCLElBQUksaUZBQWlCLGdDQUFnQzs7QUFFOUcsbUNBQW1DLDBFQUFVO0FBQzdDO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6IjE5MS5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhzb3VyY2UsIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCBzY29wZWRTdHlsZUF0dHJzTWl4aW4gZnJvbSAnLi4vLi4vLi4vbWl4aW5zL3Njb3BlZC1zdHlsZS1hdHRycyc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uLCBpc1VuZGVmaW5lZE9yTnVsbCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2luc3BlY3QnO1xuaW1wb3J0IHsgQlZQb3BwZXIgfSBmcm9tICcuL2J2LXBvcHBlcic7XG52YXIgTkFNRSA9ICdCVlRvb2x0aXBUZW1wbGF0ZSc7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQlZUb29sdGlwVGVtcGxhdGUgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6IE5BTUUsXG4gIGV4dGVuZHM6IEJWUG9wcGVyLFxuICBtaXhpbnM6IFtzY29wZWRTdHlsZUF0dHJzTWl4aW5dLFxuICBwcm9wczoge1xuICAgIC8vIE90aGVyIG5vbi1yZWFjdGl2ZSAod2hpbGUgb3BlbikgcHJvcHMgYXJlIHB1bGxlZCBpbiBmcm9tIEJWUG9wcGVyXG4gICAgaWQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIGh0bWw6IHtcbiAgICAgIC8vIFVzZWQgb25seSBieSB0aGUgZGlyZWN0aXZlIHZlcnNpb25zXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgLy8gV2UgdXNlIGRhdGEsIHJhdGhlciB0aGFuIHByb3BzIHRvIGVuc3VyZSByZWFjdGl2aXR5XG4gICAgLy8gUGFyZW50IGNvbXBvbmVudCB3aWxsIGRpcmVjdGx5IHNldCB0aGlzIGRhdGFcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6ICcnLFxuICAgICAgY29udGVudDogJycsXG4gICAgICB2YXJpYW50OiBudWxsLFxuICAgICAgY3VzdG9tQ2xhc3M6IG51bGxcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHRlbXBsYXRlVHlwZTogZnVuY3Rpb24gdGVtcGxhdGVUeXBlKCkge1xuICAgICAgcmV0dXJuICd0b29sdGlwJztcbiAgICB9LFxuICAgIHRlbXBsYXRlQ2xhc3NlczogZnVuY3Rpb24gdGVtcGxhdGVDbGFzc2VzKCkge1xuICAgICAgdmFyIF9yZWY7XG5cbiAgICAgIHJldHVybiBbKF9yZWYgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9yZWYsIFwiYi1cIi5jb25jYXQodGhpcy50ZW1wbGF0ZVR5cGUsIFwiLVwiKS5jb25jYXQodGhpcy52YXJpYW50KSwgdGhpcy52YXJpYW50KSwgX2RlZmluZVByb3BlcnR5KF9yZWYsIFwiYnMtXCIuY29uY2F0KHRoaXMudGVtcGxhdGVUeXBlLCBcIi1cIikuY29uY2F0KHRoaXMuYXR0YWNobWVudCksIHRoaXMuYXR0YWNobWVudCksIF9yZWYpLCB0aGlzLmN1c3RvbUNsYXNzXTtcbiAgICB9LFxuICAgIHRlbXBsYXRlQXR0cmlidXRlczogZnVuY3Rpb24gdGVtcGxhdGVBdHRyaWJ1dGVzKCkge1xuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgcm9sZTogJ3Rvb2x0aXAnLFxuICAgICAgICB0YWJpbmRleDogJy0xJ1xuICAgICAgfSwgdGhpcy5zY29wZWRTdHlsZUF0dHJzKTtcbiAgICB9LFxuICAgIHRlbXBsYXRlTGlzdGVuZXJzOiBmdW5jdGlvbiB0ZW1wbGF0ZUxpc3RlbmVycygpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIC8vIFVzZWQgZm9yIGhvdmVyL2ZvY3VzIHRyaWdnZXIgbGlzdGVuZXJzXG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb3VzZWVudGVyOiBmdW5jdGlvbiBtb3VzZWVudGVyKGV2dCkge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBkaWZmaWN1bHQgdG8gdGVzdCBpbiBKU0RPTSAqL1xuICAgICAgICAgIF90aGlzLiRlbWl0KCdtb3VzZWVudGVyJywgZXZ0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbW91c2VsZWF2ZTogZnVuY3Rpb24gbW91c2VsZWF2ZShldnQpIHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogZGlmZmljdWx0IHRvIHRlc3QgaW4gSlNET00gKi9cbiAgICAgICAgICBfdGhpcy4kZW1pdCgnbW91c2VsZWF2ZScsIGV2dCk7XG4gICAgICAgIH0sXG4gICAgICAgIGZvY3VzaW46IGZ1bmN0aW9uIGZvY3VzaW4oZXZ0KSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGRpZmZpY3VsdCB0byB0ZXN0IGluIEpTRE9NICovXG4gICAgICAgICAgX3RoaXMuJGVtaXQoJ2ZvY3VzaW4nLCBldnQpO1xuICAgICAgICB9LFxuICAgICAgICBmb2N1c291dDogZnVuY3Rpb24gZm9jdXNvdXQoZXZ0KSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGRpZmZpY3VsdCB0byB0ZXN0IGluIEpTRE9NICovXG4gICAgICAgICAgX3RoaXMuJGVtaXQoJ2ZvY3Vzb3V0JywgZXZ0KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICByZW5kZXJUZW1wbGF0ZTogZnVuY3Rpb24gcmVuZGVyVGVtcGxhdGUoaCkge1xuICAgICAgLy8gVGl0bGUgY2FuIGJlIGEgc2NvcGVkIHNsb3QgZnVuY3Rpb25cbiAgICAgIHZhciAkdGl0bGUgPSBpc0Z1bmN0aW9uKHRoaXMudGl0bGUpID8gdGhpcy50aXRsZSh7fSkgOiBpc1VuZGVmaW5lZE9yTnVsbCh0aGlzLnRpdGxlKSA/IGgoKSA6IHRoaXMudGl0bGU7IC8vIERpcmVjdGl2ZSB2ZXJzaW9ucyBvbmx5XG5cbiAgICAgIHZhciBkb21Qcm9wcyA9IHRoaXMuaHRtbCAmJiAhaXNGdW5jdGlvbih0aGlzLnRpdGxlKSA/IHtcbiAgICAgICAgaW5uZXJIVE1MOiB0aGlzLnRpdGxlXG4gICAgICB9IDoge307XG4gICAgICByZXR1cm4gaCgnZGl2Jywge1xuICAgICAgICBzdGF0aWNDbGFzczogJ3Rvb2x0aXAgYi10b29sdGlwJyxcbiAgICAgICAgY2xhc3M6IHRoaXMudGVtcGxhdGVDbGFzc2VzLFxuICAgICAgICBhdHRyczogdGhpcy50ZW1wbGF0ZUF0dHJpYnV0ZXMsXG4gICAgICAgIG9uOiB0aGlzLnRlbXBsYXRlTGlzdGVuZXJzXG4gICAgICB9LCBbaCgnZGl2Jywge1xuICAgICAgICByZWY6ICdhcnJvdycsXG4gICAgICAgIHN0YXRpY0NsYXNzOiAnYXJyb3cnXG4gICAgICB9KSwgaCgnZGl2Jywge1xuICAgICAgICBzdGF0aWNDbGFzczogJ3Rvb2x0aXAtaW5uZXInLFxuICAgICAgICBkb21Qcm9wczogZG9tUHJvcHNcbiAgICAgIH0sIFskdGl0bGVdKV0pO1xuICAgIH1cbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90b29sdGlwL2hlbHBlcnMvYnYtdG9vbHRpcC10ZW1wbGF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTkxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///191\n"); /***/ }), /* 192 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ProgressPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__progress__ = __webpack_require__(193);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__progress_bar__ = __webpack_require__(84);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BProgress */\n/* unused harmony reexport BProgressBar */\n\n\n\nvar ProgressPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BProgress: __WEBPACK_IMPORTED_MODULE_0__progress__[\"a\" /* BProgress */],\n BProgressBar: __WEBPACK_IMPORTED_MODULE_1__progress_bar__[\"a\" /* BProgressBar */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wcm9ncmVzcy9pbmRleC5qcz85OWYyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF1QztBQUNPO0FBQ007QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxlQUFlLDREQUFTO0FBQ3hCLGtCQUFrQixtRUFBWTtBQUM5QjtBQUNBLENBQUMiLCJmaWxlIjoiMTkyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQlByb2dyZXNzIH0gZnJvbSAnLi9wcm9ncmVzcyc7XG5pbXBvcnQgeyBCUHJvZ3Jlc3NCYXIgfSBmcm9tICcuL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgUHJvZ3Jlc3NQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCUHJvZ3Jlc3M6IEJQcm9ncmVzcyxcbiAgICBCUHJvZ3Jlc3NCYXI6IEJQcm9ncmVzc0JhclxuICB9XG59KTtcbmV4cG9ydCB7IFByb2dyZXNzUGx1Z2luLCBCUHJvZ3Jlc3MsIEJQcm9ncmVzc0JhciB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvcHJvZ3Jlc3MvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE5MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///192\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BVPopover; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__tooltip_helpers_bv_tooltip__ = __webpack_require__(82);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__bv_popover_template__ = __webpack_require__(259);\n// Popover \"Class\" (Built as a renderless Vue instance)\n// Inherits from BVTooltip\n//\n// Handles trigger events, etc.\n// Instantiates template on demand\n\n\n\nvar NAME = 'BVPopover'; // @vue/component\n\nvar BVPopover =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n extends: __WEBPACK_IMPORTED_MODULE_1__tooltip_helpers_bv_tooltip__[\"a\" /* BVTooltip */],\n computed: {\n // Overwrites BVTooltip\n templateType: function templateType() {\n return 'popover';\n }\n },\n methods: {\n getTemplate: function getTemplate() {\n // Overwrites BVTooltip\n return __WEBPACK_IMPORTED_MODULE_2__bv_popover_template__[\"a\" /* BVPopoverTemplate */];\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wb3BvdmVyL2hlbHBlcnMvYnYtcG9wb3Zlci5qcz9iNGQ0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNxQztBQUN3QjtBQUNIO0FBQzFELHVCQUF1Qjs7QUFFaEI7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQSxXQUFXLDhFQUFTO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSwrRUFBaUI7QUFDOUI7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMTkyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gUG9wb3ZlciBcIkNsYXNzXCIgKEJ1aWx0IGFzIGEgcmVuZGVybGVzcyBWdWUgaW5zdGFuY2UpXG4vLyBJbmhlcml0cyBmcm9tIEJWVG9vbHRpcFxuLy9cbi8vIEhhbmRsZXMgdHJpZ2dlciBldmVudHMsIGV0Yy5cbi8vIEluc3RhbnRpYXRlcyB0ZW1wbGF0ZSBvbiBkZW1hbmRcbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IEJWVG9vbHRpcCB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvaGVscGVycy9idi10b29sdGlwJztcbmltcG9ydCB7IEJWUG9wb3ZlclRlbXBsYXRlIH0gZnJvbSAnLi9idi1wb3BvdmVyLXRlbXBsYXRlJztcbnZhciBOQU1FID0gJ0JWUG9wb3Zlcic7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQlZQb3BvdmVyID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBleHRlbmRzOiBCVlRvb2x0aXAsXG4gIGNvbXB1dGVkOiB7XG4gICAgLy8gT3ZlcndyaXRlcyBCVlRvb2x0aXBcbiAgICB0ZW1wbGF0ZVR5cGU6IGZ1bmN0aW9uIHRlbXBsYXRlVHlwZSgpIHtcbiAgICAgIHJldHVybiAncG9wb3Zlcic7XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgZ2V0VGVtcGxhdGU6IGZ1bmN0aW9uIGdldFRlbXBsYXRlKCkge1xuICAgICAgLy8gT3ZlcndyaXRlcyBCVlRvb2x0aXBcbiAgICAgIHJldHVybiBCVlBvcG92ZXJUZW1wbGF0ZTtcbiAgICB9XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvcG9wb3Zlci9oZWxwZXJzL2J2LXBvcG92ZXIuanNcbi8vIG1vZHVsZSBpZCA9IDE5MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///192\n"); /***/ }), /* 193 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BProgress; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__progress_bar__ = __webpack_require__(84);\n\n\n\n\nvar NAME = 'BProgress'; // @vue/component\n\nvar BProgress =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n mixins: [__WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__[\"a\" /* default */]],\n provide: function provide() {\n return {\n bvProgress: this\n };\n },\n props: {\n // These props can be inherited via the child b-progress-bar(s)\n variant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant');\n }\n },\n striped: {\n type: Boolean,\n default: false\n },\n animated: {\n type: Boolean,\n default: false\n },\n height: {\n type: String,\n default: null\n },\n precision: {\n type: Number,\n default: 0\n },\n showProgress: {\n type: Boolean,\n default: false\n },\n showValue: {\n type: Boolean,\n default: false\n },\n max: {\n type: Number,\n default: 100\n },\n // This prop is not inherited by child b-progress-bar(s)\n value: {\n type: Number,\n default: 0\n }\n },\n computed: {\n progressHeight: function progressHeight() {\n return {\n height: this.height || null\n };\n }\n },\n render: function render(h) {\n var childNodes = this.normalizeSlot('default');\n\n if (!childNodes) {\n childNodes = h(__WEBPACK_IMPORTED_MODULE_3__progress_bar__[\"a\" /* BProgressBar */], {\n props: {\n value: this.value,\n max: this.max,\n precision: this.precision,\n variant: this.variant,\n animated: this.animated,\n striped: this.striped,\n showProgress: this.showProgress,\n showValue: this.showValue\n }\n });\n }\n\n return h('div', {\n class: ['progress'],\n style: this.progressHeight\n }, [childNodes]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wcm9ncmVzcy9wcm9ncmVzcy5qcz9iNGI4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDc0I7QUFDSztBQUNmO0FBQzlDLHVCQUF1Qjs7QUFFaEI7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQSxXQUFXLHVFQUFrQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsbUVBQVk7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxOTMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi8uLi91dGlscy9jb25maWcnO1xuaW1wb3J0IG5vcm1hbGl6ZVNsb3RNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvbm9ybWFsaXplLXNsb3QnO1xuaW1wb3J0IHsgQlByb2dyZXNzQmFyIH0gZnJvbSAnLi9wcm9ncmVzcy1iYXInO1xudmFyIE5BTUUgPSAnQlByb2dyZXNzJzsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCUHJvZ3Jlc3MgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6IE5BTUUsXG4gIG1peGluczogW25vcm1hbGl6ZVNsb3RNaXhpbl0sXG4gIHByb3ZpZGU6IGZ1bmN0aW9uIHByb3ZpZGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJ2UHJvZ3Jlc3M6IHRoaXNcbiAgICB9O1xuICB9LFxuICBwcm9wczoge1xuICAgIC8vIFRoZXNlIHByb3BzIGNhbiBiZSBpbmhlcml0ZWQgdmlhIHRoZSBjaGlsZCBiLXByb2dyZXNzLWJhcihzKVxuICAgIHZhcmlhbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICd2YXJpYW50Jyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzdHJpcGVkOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGFuaW1hdGVkOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGhlaWdodDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgcHJlY2lzaW9uOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAwXG4gICAgfSxcbiAgICBzaG93UHJvZ3Jlc3M6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgc2hvd1ZhbHVlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIG1heDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMTAwXG4gICAgfSxcbiAgICAvLyBUaGlzIHByb3AgaXMgbm90IGluaGVyaXRlZCBieSBjaGlsZCBiLXByb2dyZXNzLWJhcihzKVxuICAgIHZhbHVlOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAwXG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHByb2dyZXNzSGVpZ2h0OiBmdW5jdGlvbiBwcm9ncmVzc0hlaWdodCgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQgfHwgbnVsbFxuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgY2hpbGROb2RlcyA9IHRoaXMubm9ybWFsaXplU2xvdCgnZGVmYXVsdCcpO1xuXG4gICAgaWYgKCFjaGlsZE5vZGVzKSB7XG4gICAgICBjaGlsZE5vZGVzID0gaChCUHJvZ3Jlc3NCYXIsIHtcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgICAgICBtYXg6IHRoaXMubWF4LFxuICAgICAgICAgIHByZWNpc2lvbjogdGhpcy5wcmVjaXNpb24sXG4gICAgICAgICAgdmFyaWFudDogdGhpcy52YXJpYW50LFxuICAgICAgICAgIGFuaW1hdGVkOiB0aGlzLmFuaW1hdGVkLFxuICAgICAgICAgIHN0cmlwZWQ6IHRoaXMuc3RyaXBlZCxcbiAgICAgICAgICBzaG93UHJvZ3Jlc3M6IHRoaXMuc2hvd1Byb2dyZXNzLFxuICAgICAgICAgIHNob3dWYWx1ZTogdGhpcy5zaG93VmFsdWVcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGgoJ2RpdicsIHtcbiAgICAgIGNsYXNzOiBbJ3Byb2dyZXNzJ10sXG4gICAgICBzdHlsZTogdGhpcy5wcm9ncmVzc0hlaWdodFxuICAgIH0sIFtjaGlsZE5vZGVzXSk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvcHJvZ3Jlc3MvcHJvZ3Jlc3MuanNcbi8vIG1vZHVsZSBpZCA9IDE5M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///193\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return VBPopover; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_get_scope_id__ = __webpack_require__(32);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_loose_equal__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_env__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__components_popover_helpers_bv_popover__ = __webpack_require__(192);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n // Key which we use to store tooltip object on element\n\nvar BV_POPOVER = '__BV_Popover__'; // Default trigger\n\nvar DefaultTrigger = 'click'; // Valid event triggers\n\nvar validTriggers = {\n focus: true,\n hover: true,\n click: true,\n blur: true,\n manual: true\n}; // Directive modifier test regular expressions. Pre-compile for performance\n\nvar htmlRE = /^html$/i;\nvar noFadeRE = /^nofade$/i;\nvar placementRE = /^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/i;\nvar boundaryRE = /^(window|viewport|scrollParent)$/i;\nvar delayRE = /^d\\d+$/i;\nvar delayShowRE = /^ds\\d+$/i;\nvar delayHideRE = /^dh\\d+$/i;\nvar offsetRE = /^o-?\\d+$/i;\nvar variantRE = /^v-.+$/i; // Build a Popover config based on bindings (if any)\n// Arguments and modifiers take precedence over passed value config object\n\nvar parseBindings = function parseBindings(bindings, vnode)\n/* istanbul ignore next: not easy to test */\n{\n // We start out with a basic config\n var NAME = 'BPopover';\n var config = {\n title: undefined,\n content: undefined,\n trigger: '',\n // Default set below if needed\n placement: 'right',\n fallbackPlacement: 'flip',\n container: false,\n // Default of body\n animation: true,\n offset: 0,\n disabled: false,\n id: null,\n html: false,\n delay: Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'delay'),\n boundary: String(Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'boundary')),\n boundaryPadding: parseInt(Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'boundaryPadding'), 10) || 0,\n variant: Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant'),\n customClass: Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'customClass')\n }; // Process `bindings.value`\n\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"m\" /* isString */])(bindings.value) || Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"h\" /* isNumber */])(bindings.value)) {\n // Value is popover content (html optionally supported)\n config.content = bindings.value;\n } else if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"f\" /* isFunction */])(bindings.value)) {\n // Content generator function\n config.content = bindings.value;\n } else if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"j\" /* isPlainObject */])(bindings.value)) {\n // Value is config object, so merge\n config = _objectSpread({}, config, {}, bindings.value);\n } // If argument, assume element ID of container element\n\n\n if (bindings.arg) {\n // Element ID specified as arg\n // We must prepend '#' to become a CSS selector\n config.container = \"#\".concat(bindings.arg);\n } // If title is not provided, try title attribute\n\n\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"n\" /* isUndefined */])(config.title)) {\n // Try attribute\n var data = vnode.data || {};\n config.title = data.attrs && !Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"o\" /* isUndefinedOrNull */])(data.attrs.title) ? data.attrs.title : undefined;\n } // Normalize delay\n\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"j\" /* isPlainObject */])(config.delay)) {\n config.delay = {\n show: parseInt(config.delay, 10) || 0,\n hide: parseInt(config.delay, 10) || 0\n };\n } // Process modifiers\n\n\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_object__[\"j\" /* keys */])(bindings.modifiers).forEach(function (mod) {\n if (htmlRE.test(mod)) {\n // Title/content allows HTML\n config.html = true;\n } else if (noFadeRE.test(mod)) {\n // No animation\n config.animation = false;\n } else if (placementRE.test(mod)) {\n // Placement of popover\n config.placement = mod;\n } else if (boundaryRE.test(mod)) {\n // Boundary of popover\n mod = mod === 'scrollparent' ? 'scrollParent' : mod;\n config.boundary = mod;\n } else if (delayRE.test(mod)) {\n // Delay value\n var delay = parseInt(mod.slice(1), 10) || 0;\n config.delay.show = delay;\n config.delay.hide = delay;\n } else if (delayShowRE.test(mod)) {\n // Delay show value\n config.delay.show = parseInt(mod.slice(2), 10) || 0;\n } else if (delayHideRE.test(mod)) {\n // Delay hide value\n config.delay.hide = parseInt(mod.slice(2), 10) || 0;\n } else if (offsetRE.test(mod)) {\n // Offset value, negative allowed\n config.offset = parseInt(mod.slice(1), 10) || 0;\n } else if (variantRE.test(mod)) {\n // Variant\n config.variant = mod.slice(2) || null;\n }\n }); // Special handling of event trigger modifiers trigger is\n // a space separated list\n\n var selectedTriggers = {}; // Parse current config object trigger\n\n Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"b\" /* concat */])(config.trigger || '').filter(Boolean).join(' ').trim().toLowerCase().split(/\\s+/).forEach(function (trigger) {\n if (validTriggers[trigger]) {\n selectedTriggers[trigger] = true;\n }\n }); // Parse modifiers for triggers\n\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_object__[\"j\" /* keys */])(bindings.modifiers).forEach(function (mod) {\n mod = mod.toLowerCase();\n\n if (validTriggers[mod]) {\n // If modifier is a valid trigger\n selectedTriggers[mod] = true;\n }\n }); // Sanitize triggers\n\n config.trigger = Object(__WEBPACK_IMPORTED_MODULE_6__utils_object__[\"j\" /* keys */])(selectedTriggers).join(' ');\n\n if (config.trigger === 'blur') {\n // Blur by itself is useless, so convert it to 'focus'\n config.trigger = 'focus';\n }\n\n if (!config.trigger) {\n // Use default trigger\n config.trigger = DefaultTrigger;\n }\n\n return config;\n}; // Add or update Popover on our element\n\n\nvar applyPopover = function applyPopover(el, bindings, vnode) {\n if (!__WEBPACK_IMPORTED_MODULE_4__utils_env__[\"j\" /* isBrowser */]) {\n /* istanbul ignore next */\n return;\n }\n\n var config = parseBindings(bindings, vnode);\n\n if (!el[BV_POPOVER]) {\n var $parent = vnode.context;\n el[BV_POPOVER] = new __WEBPACK_IMPORTED_MODULE_7__components_popover_helpers_bv_popover__[\"a\" /* BVPopover */]({\n parent: $parent,\n // Add the parent's scoped style attribute data\n _scopeId: Object(__WEBPACK_IMPORTED_MODULE_0__utils_get_scope_id__[\"a\" /* default */])($parent, undefined)\n });\n el[BV_POPOVER].__bv_prev_data__ = {};\n el[BV_POPOVER].$on('show', function ()\n /* istanbul ignore next: for now */\n {\n // Before showing the popover, we update the title\n // and content if they are functions\n var data = {};\n\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"f\" /* isFunction */])(config.title)) {\n data.title = config.title();\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"f\" /* isFunction */])(config.content)) {\n data.content = config.content();\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_6__utils_object__[\"j\" /* keys */])(data).length > 0) {\n el[BV_POPOVER].updateData(data);\n }\n });\n }\n\n var data = {\n title: config.title,\n content: config.content,\n triggers: config.trigger,\n placement: config.placement,\n fallbackPlacement: config.fallbackPlacement,\n variant: config.variant,\n customClass: config.customClass,\n container: config.container,\n boundary: config.boundary,\n delay: config.delay,\n offset: config.offset,\n noFade: !config.animation,\n id: config.id,\n disabled: config.disabled,\n html: config.html\n };\n var oldData = el[BV_POPOVER].__bv_prev_data__;\n el[BV_POPOVER].__bv_prev_data__ = data;\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__utils_loose_equal__[\"a\" /* default */])(data, oldData)) {\n // We only update the instance if data has changed\n var newData = {\n target: el\n };\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_object__[\"j\" /* keys */])(data).forEach(function (prop) {\n // We only pass data properties that have changed\n if (data[prop] !== oldData[prop]) {\n // If title/content is a function, we execute it here\n newData[prop] = (prop === 'title' || prop === 'content') && Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"f\" /* isFunction */])(data[prop]) ? data[prop]() : data[prop];\n }\n });\n el[BV_POPOVER].updateData(newData);\n }\n}; // Remove Popover from our element\n\n\nvar removePopover = function removePopover(el) {\n if (el[BV_POPOVER]) {\n el[BV_POPOVER].$destroy();\n el[BV_POPOVER] = null;\n }\n\n delete el[BV_POPOVER];\n}; // Export our directive\n\n\nvar VBPopover = {\n bind: function bind(el, bindings, vnode) {\n applyPopover(el, bindings, vnode);\n },\n // We use `componentUpdated` here instead of `update`, as the former\n // waits until the containing component and children have finished updating\n componentUpdated: function componentUpdated(el, bindings, vnode) {\n // Performed in a `$nextTick()` to prevent endless render/update loops\n vnode.context.$nextTick(function () {\n applyPopover(el, bindings, vnode);\n });\n },\n unbind: function unbind(el) {\n removePopover(el);\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy9wb3BvdmVyL3BvcG92ZXIuanM/ZjY3ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTlKO0FBQ0E7QUFDTjtBQUNhO0FBQ1o7QUFDd0U7QUFDMUU7QUFDOEI7O0FBRXhFLGtDQUFrQzs7QUFFbEMsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGlGQUFrQjtBQUM3QixxQkFBcUIsaUZBQWtCO0FBQ3ZDLDhCQUE4QixpRkFBa0I7QUFDaEQsYUFBYSxpRkFBa0I7QUFDL0IsaUJBQWlCLGlGQUFrQjtBQUNuQyxJQUFJOztBQUVKLE1BQU0sd0VBQVEsb0JBQW9CLHdFQUFRO0FBQzFDO0FBQ0E7QUFDQSxHQUFHLFVBQVUsMEVBQVU7QUFDdkI7QUFDQTtBQUNBLEdBQUcsVUFBVSw2RUFBYTtBQUMxQjtBQUNBLDZCQUE2QixZQUFZO0FBQ3pDLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsTUFBTSwyRUFBVztBQUNqQjtBQUNBO0FBQ0Esa0NBQWtDLGlGQUFpQjtBQUNuRCxHQUFHOzs7QUFHSCxPQUFPLDZFQUFhO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsRUFBRSxtRUFBSTtBQUNOO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTtBQUNMOztBQUVBLDRCQUE0Qjs7QUFFNUIsRUFBRSxvRUFBTTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTs7QUFFTCxFQUFFLG1FQUFJO0FBQ047O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUwsbUJBQW1CLG1FQUFJOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0EsT0FBTyw2REFBUztBQUNoQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLHlCQUF5Qix5RkFBUztBQUNsQztBQUNBO0FBQ0EsZ0JBQWdCLDRFQUFTO0FBQ3pCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLDBFQUFVO0FBQ3BCO0FBQ0E7O0FBRUEsVUFBVSwwRUFBVTtBQUNwQjtBQUNBOztBQUVBLFVBQVUsbUVBQUk7QUFDZDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU8sMkVBQVU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLG1FQUFJO0FBQ1I7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FLDBFQUFVO0FBQzlFO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7O0FBR0s7QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTkzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IGdldFNjb3BJZCBmcm9tICcuLi8uLi91dGlscy9nZXQtc2NvcGUtaWQnO1xuaW1wb3J0IGxvb3NlRXF1YWwgZnJvbSAnLi4vLi4vdXRpbHMvbG9vc2UtZXF1YWwnO1xuaW1wb3J0IHsgY29uY2F0IH0gZnJvbSAnLi4vLi4vdXRpbHMvYXJyYXknO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29uZmlnJztcbmltcG9ydCB7IGlzQnJvd3NlciB9IGZyb20gJy4uLy4uL3V0aWxzL2Vudic7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uLCBpc051bWJlciwgaXNQbGFpbk9iamVjdCwgaXNTdHJpbmcsIGlzVW5kZWZpbmVkLCBpc1VuZGVmaW5lZE9yTnVsbCB9IGZyb20gJy4uLy4uL3V0aWxzL2luc3BlY3QnO1xuaW1wb3J0IHsga2V5cyB9IGZyb20gJy4uLy4uL3V0aWxzL29iamVjdCc7XG5pbXBvcnQgeyBCVlBvcG92ZXIgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3BvcG92ZXIvaGVscGVycy9idi1wb3BvdmVyJzsgLy8gS2V5IHdoaWNoIHdlIHVzZSB0byBzdG9yZSB0b29sdGlwIG9iamVjdCBvbiBlbGVtZW50XG5cbnZhciBCVl9QT1BPVkVSID0gJ19fQlZfUG9wb3Zlcl9fJzsgLy8gRGVmYXVsdCB0cmlnZ2VyXG5cbnZhciBEZWZhdWx0VHJpZ2dlciA9ICdjbGljayc7IC8vIFZhbGlkIGV2ZW50IHRyaWdnZXJzXG5cbnZhciB2YWxpZFRyaWdnZXJzID0ge1xuICBmb2N1czogdHJ1ZSxcbiAgaG92ZXI6IHRydWUsXG4gIGNsaWNrOiB0cnVlLFxuICBibHVyOiB0cnVlLFxuICBtYW51YWw6IHRydWVcbn07IC8vIERpcmVjdGl2ZSBtb2RpZmllciB0ZXN0IHJlZ3VsYXIgZXhwcmVzc2lvbnMuIFByZS1jb21waWxlIGZvciBwZXJmb3JtYW5jZVxuXG52YXIgaHRtbFJFID0gL15odG1sJC9pO1xudmFyIG5vRmFkZVJFID0gL15ub2ZhZGUkL2k7XG52YXIgcGxhY2VtZW50UkUgPSAvXihhdXRvfHRvcChsZWZ0fHJpZ2h0KT98Ym90dG9tKGxlZnR8cmlnaHQpP3xsZWZ0KHRvcHxib3R0b20pP3xyaWdodCh0b3B8Ym90dG9tKT8pJC9pO1xudmFyIGJvdW5kYXJ5UkUgPSAvXih3aW5kb3d8dmlld3BvcnR8c2Nyb2xsUGFyZW50KSQvaTtcbnZhciBkZWxheVJFID0gL15kXFxkKyQvaTtcbnZhciBkZWxheVNob3dSRSA9IC9eZHNcXGQrJC9pO1xudmFyIGRlbGF5SGlkZVJFID0gL15kaFxcZCskL2k7XG52YXIgb2Zmc2V0UkUgPSAvXm8tP1xcZCskL2k7XG52YXIgdmFyaWFudFJFID0gL152LS4rJC9pOyAvLyBCdWlsZCBhIFBvcG92ZXIgY29uZmlnIGJhc2VkIG9uIGJpbmRpbmdzIChpZiBhbnkpXG4vLyBBcmd1bWVudHMgYW5kIG1vZGlmaWVycyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBwYXNzZWQgdmFsdWUgY29uZmlnIG9iamVjdFxuXG52YXIgcGFyc2VCaW5kaW5ncyA9IGZ1bmN0aW9uIHBhcnNlQmluZGluZ3MoYmluZGluZ3MsIHZub2RlKVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IG5vdCBlYXN5IHRvIHRlc3QgKi9cbntcbiAgLy8gV2Ugc3RhcnQgb3V0IHdpdGggYSBiYXNpYyBjb25maWdcbiAgdmFyIE5BTUUgPSAnQlBvcG92ZXInO1xuICB2YXIgY29uZmlnID0ge1xuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gICAgY29udGVudDogdW5kZWZpbmVkLFxuICAgIHRyaWdnZXI6ICcnLFxuICAgIC8vIERlZmF1bHQgc2V0IGJlbG93IGlmIG5lZWRlZFxuICAgIHBsYWNlbWVudDogJ3JpZ2h0JyxcbiAgICBmYWxsYmFja1BsYWNlbWVudDogJ2ZsaXAnLFxuICAgIGNvbnRhaW5lcjogZmFsc2UsXG4gICAgLy8gRGVmYXVsdCBvZiBib2R5XG4gICAgYW5pbWF0aW9uOiB0cnVlLFxuICAgIG9mZnNldDogMCxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaWQ6IG51bGwsXG4gICAgaHRtbDogZmFsc2UsXG4gICAgZGVsYXk6IGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAnZGVsYXknKSxcbiAgICBib3VuZGFyeTogU3RyaW5nKGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAnYm91bmRhcnknKSksXG4gICAgYm91bmRhcnlQYWRkaW5nOiBwYXJzZUludChnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ2JvdW5kYXJ5UGFkZGluZycpLCAxMCkgfHwgMCxcbiAgICB2YXJpYW50OiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ3ZhcmlhbnQnKSxcbiAgICBjdXN0b21DbGFzczogZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdjdXN0b21DbGFzcycpXG4gIH07IC8vIFByb2Nlc3MgYGJpbmRpbmdzLnZhbHVlYFxuXG4gIGlmIChpc1N0cmluZyhiaW5kaW5ncy52YWx1ZSkgfHwgaXNOdW1iZXIoYmluZGluZ3MudmFsdWUpKSB7XG4gICAgLy8gVmFsdWUgaXMgcG9wb3ZlciBjb250ZW50IChodG1sIG9wdGlvbmFsbHkgc3VwcG9ydGVkKVxuICAgIGNvbmZpZy5jb250ZW50ID0gYmluZGluZ3MudmFsdWU7XG4gIH0gZWxzZSBpZiAoaXNGdW5jdGlvbihiaW5kaW5ncy52YWx1ZSkpIHtcbiAgICAvLyBDb250ZW50IGdlbmVyYXRvciBmdW5jdGlvblxuICAgIGNvbmZpZy5jb250ZW50ID0gYmluZGluZ3MudmFsdWU7XG4gIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChiaW5kaW5ncy52YWx1ZSkpIHtcbiAgICAvLyBWYWx1ZSBpcyBjb25maWcgb2JqZWN0LCBzbyBtZXJnZVxuICAgIGNvbmZpZyA9IF9vYmplY3RTcHJlYWQoe30sIGNvbmZpZywge30sIGJpbmRpbmdzLnZhbHVlKTtcbiAgfSAvLyBJZiBhcmd1bWVudCwgYXNzdW1lIGVsZW1lbnQgSUQgb2YgY29udGFpbmVyIGVsZW1lbnRcblxuXG4gIGlmIChiaW5kaW5ncy5hcmcpIHtcbiAgICAvLyBFbGVtZW50IElEIHNwZWNpZmllZCBhcyBhcmdcbiAgICAvLyBXZSBtdXN0IHByZXBlbmQgJyMnIHRvIGJlY29tZSBhIENTUyBzZWxlY3RvclxuICAgIGNvbmZpZy5jb250YWluZXIgPSBcIiNcIi5jb25jYXQoYmluZGluZ3MuYXJnKTtcbiAgfSAvLyBJZiB0aXRsZSBpcyBub3QgcHJvdmlkZWQsIHRyeSB0aXRsZSBhdHRyaWJ1dGVcblxuXG4gIGlmIChpc1VuZGVmaW5lZChjb25maWcudGl0bGUpKSB7XG4gICAgLy8gVHJ5IGF0dHJpYnV0ZVxuICAgIHZhciBkYXRhID0gdm5vZGUuZGF0YSB8fCB7fTtcbiAgICBjb25maWcudGl0bGUgPSBkYXRhLmF0dHJzICYmICFpc1VuZGVmaW5lZE9yTnVsbChkYXRhLmF0dHJzLnRpdGxlKSA/IGRhdGEuYXR0cnMudGl0bGUgOiB1bmRlZmluZWQ7XG4gIH0gLy8gTm9ybWFsaXplIGRlbGF5XG5cblxuICBpZiAoIWlzUGxhaW5PYmplY3QoY29uZmlnLmRlbGF5KSkge1xuICAgIGNvbmZpZy5kZWxheSA9IHtcbiAgICAgIHNob3c6IHBhcnNlSW50KGNvbmZpZy5kZWxheSwgMTApIHx8IDAsXG4gICAgICBoaWRlOiBwYXJzZUludChjb25maWcuZGVsYXksIDEwKSB8fCAwXG4gICAgfTtcbiAgfSAvLyBQcm9jZXNzIG1vZGlmaWVyc1xuXG5cbiAga2V5cyhiaW5kaW5ncy5tb2RpZmllcnMpLmZvckVhY2goZnVuY3Rpb24gKG1vZCkge1xuICAgIGlmIChodG1sUkUudGVzdChtb2QpKSB7XG4gICAgICAvLyBUaXRsZS9jb250ZW50IGFsbG93cyBIVE1MXG4gICAgICBjb25maWcuaHRtbCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChub0ZhZGVSRS50ZXN0KG1vZCkpIHtcbiAgICAgIC8vIE5vIGFuaW1hdGlvblxuICAgICAgY29uZmlnLmFuaW1hdGlvbiA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAocGxhY2VtZW50UkUudGVzdChtb2QpKSB7XG4gICAgICAvLyBQbGFjZW1lbnQgb2YgcG9wb3ZlclxuICAgICAgY29uZmlnLnBsYWNlbWVudCA9IG1vZDtcbiAgICB9IGVsc2UgaWYgKGJvdW5kYXJ5UkUudGVzdChtb2QpKSB7XG4gICAgICAvLyBCb3VuZGFyeSBvZiBwb3BvdmVyXG4gICAgICBtb2QgPSBtb2QgPT09ICdzY3JvbGxwYXJlbnQnID8gJ3Njcm9sbFBhcmVudCcgOiBtb2Q7XG4gICAgICBjb25maWcuYm91bmRhcnkgPSBtb2Q7XG4gICAgfSBlbHNlIGlmIChkZWxheVJFLnRlc3QobW9kKSkge1xuICAgICAgLy8gRGVsYXkgdmFsdWVcbiAgICAgIHZhciBkZWxheSA9IHBhcnNlSW50KG1vZC5zbGljZSgxKSwgMTApIHx8IDA7XG4gICAgICBjb25maWcuZGVsYXkuc2hvdyA9IGRlbGF5O1xuICAgICAgY29uZmlnLmRlbGF5LmhpZGUgPSBkZWxheTtcbiAgICB9IGVsc2UgaWYgKGRlbGF5U2hvd1JFLnRlc3QobW9kKSkge1xuICAgICAgLy8gRGVsYXkgc2hvdyB2YWx1ZVxuICAgICAgY29uZmlnLmRlbGF5LnNob3cgPSBwYXJzZUludChtb2Quc2xpY2UoMiksIDEwKSB8fCAwO1xuICAgIH0gZWxzZSBpZiAoZGVsYXlIaWRlUkUudGVzdChtb2QpKSB7XG4gICAgICAvLyBEZWxheSBoaWRlIHZhbHVlXG4gICAgICBjb25maWcuZGVsYXkuaGlkZSA9IHBhcnNlSW50KG1vZC5zbGljZSgyKSwgMTApIHx8IDA7XG4gICAgfSBlbHNlIGlmIChvZmZzZXRSRS50ZXN0KG1vZCkpIHtcbiAgICAgIC8vIE9mZnNldCB2YWx1ZSwgbmVnYXRpdmUgYWxsb3dlZFxuICAgICAgY29uZmlnLm9mZnNldCA9IHBhcnNlSW50KG1vZC5zbGljZSgxKSwgMTApIHx8IDA7XG4gICAgfSBlbHNlIGlmICh2YXJpYW50UkUudGVzdChtb2QpKSB7XG4gICAgICAvLyBWYXJpYW50XG4gICAgICBjb25maWcudmFyaWFudCA9IG1vZC5zbGljZSgyKSB8fCBudWxsO1xuICAgIH1cbiAgfSk7IC8vIFNwZWNpYWwgaGFuZGxpbmcgb2YgZXZlbnQgdHJpZ2dlciBtb2RpZmllcnMgdHJpZ2dlciBpc1xuICAvLyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0XG5cbiAgdmFyIHNlbGVjdGVkVHJpZ2dlcnMgPSB7fTsgLy8gUGFyc2UgY3VycmVudCBjb25maWcgb2JqZWN0IHRyaWdnZXJcblxuICBjb25jYXQoY29uZmlnLnRyaWdnZXIgfHwgJycpLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJykudHJpbSgpLnRvTG93ZXJDYXNlKCkuc3BsaXQoL1xccysvKS5mb3JFYWNoKGZ1bmN0aW9uICh0cmlnZ2VyKSB7XG4gICAgaWYgKHZhbGlkVHJpZ2dlcnNbdHJpZ2dlcl0pIHtcbiAgICAgIHNlbGVjdGVkVHJpZ2dlcnNbdHJpZ2dlcl0gPSB0cnVlO1xuICAgIH1cbiAgfSk7IC8vIFBhcnNlIG1vZGlmaWVycyBmb3IgdHJpZ2dlcnNcblxuICBrZXlzKGJpbmRpbmdzLm1vZGlmaWVycykuZm9yRWFjaChmdW5jdGlvbiAobW9kKSB7XG4gICAgbW9kID0gbW9kLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAodmFsaWRUcmlnZ2Vyc1ttb2RdKSB7XG4gICAgICAvLyBJZiBtb2RpZmllciBpcyBhIHZhbGlkIHRyaWdnZXJcbiAgICAgIHNlbGVjdGVkVHJpZ2dlcnNbbW9kXSA9IHRydWU7XG4gICAgfVxuICB9KTsgLy8gU2FuaXRpemUgdHJpZ2dlcnNcblxuICBjb25maWcudHJpZ2dlciA9IGtleXMoc2VsZWN0ZWRUcmlnZ2Vycykuam9pbignICcpO1xuXG4gIGlmIChjb25maWcudHJpZ2dlciA9PT0gJ2JsdXInKSB7XG4gICAgLy8gQmx1ciBieSBpdHNlbGYgaXMgdXNlbGVzcywgc28gY29udmVydCBpdCB0byAnZm9jdXMnXG4gICAgY29uZmlnLnRyaWdnZXIgPSAnZm9jdXMnO1xuICB9XG5cbiAgaWYgKCFjb25maWcudHJpZ2dlcikge1xuICAgIC8vIFVzZSBkZWZhdWx0IHRyaWdnZXJcbiAgICBjb25maWcudHJpZ2dlciA9IERlZmF1bHRUcmlnZ2VyO1xuICB9XG5cbiAgcmV0dXJuIGNvbmZpZztcbn07IC8vIEFkZCBvciB1cGRhdGUgUG9wb3ZlciBvbiBvdXIgZWxlbWVudFxuXG5cbnZhciBhcHBseVBvcG92ZXIgPSBmdW5jdGlvbiBhcHBseVBvcG92ZXIoZWwsIGJpbmRpbmdzLCB2bm9kZSkge1xuICBpZiAoIWlzQnJvd3Nlcikge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGNvbmZpZyA9IHBhcnNlQmluZGluZ3MoYmluZGluZ3MsIHZub2RlKTtcblxuICBpZiAoIWVsW0JWX1BPUE9WRVJdKSB7XG4gICAgdmFyICRwYXJlbnQgPSB2bm9kZS5jb250ZXh0O1xuICAgIGVsW0JWX1BPUE9WRVJdID0gbmV3IEJWUG9wb3Zlcih7XG4gICAgICBwYXJlbnQ6ICRwYXJlbnQsXG4gICAgICAvLyBBZGQgdGhlIHBhcmVudCdzIHNjb3BlZCBzdHlsZSBhdHRyaWJ1dGUgZGF0YVxuICAgICAgX3Njb3BlSWQ6IGdldFNjb3BJZCgkcGFyZW50LCB1bmRlZmluZWQpXG4gICAgfSk7XG4gICAgZWxbQlZfUE9QT1ZFUl0uX19idl9wcmV2X2RhdGFfXyA9IHt9O1xuICAgIGVsW0JWX1BPUE9WRVJdLiRvbignc2hvdycsIGZ1bmN0aW9uICgpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGZvciBub3cgKi9cbiAgICB7XG4gICAgICAvLyBCZWZvcmUgc2hvd2luZyB0aGUgcG9wb3Zlciwgd2UgdXBkYXRlIHRoZSB0aXRsZVxuICAgICAgLy8gYW5kIGNvbnRlbnQgaWYgdGhleSBhcmUgZnVuY3Rpb25zXG4gICAgICB2YXIgZGF0YSA9IHt9O1xuXG4gICAgICBpZiAoaXNGdW5jdGlvbihjb25maWcudGl0bGUpKSB7XG4gICAgICAgIGRhdGEudGl0bGUgPSBjb25maWcudGl0bGUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzRnVuY3Rpb24oY29uZmlnLmNvbnRlbnQpKSB7XG4gICAgICAgIGRhdGEuY29udGVudCA9IGNvbmZpZy5jb250ZW50KCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChrZXlzKGRhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZWxbQlZfUE9QT1ZFUl0udXBkYXRlRGF0YShkYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHZhciBkYXRhID0ge1xuICAgIHRpdGxlOiBjb25maWcudGl0bGUsXG4gICAgY29udGVudDogY29uZmlnLmNvbnRlbnQsXG4gICAgdHJpZ2dlcnM6IGNvbmZpZy50cmlnZ2VyLFxuICAgIHBsYWNlbWVudDogY29uZmlnLnBsYWNlbWVudCxcbiAgICBmYWxsYmFja1BsYWNlbWVudDogY29uZmlnLmZhbGxiYWNrUGxhY2VtZW50LFxuICAgIHZhcmlhbnQ6IGNvbmZpZy52YXJpYW50LFxuICAgIGN1c3RvbUNsYXNzOiBjb25maWcuY3VzdG9tQ2xhc3MsXG4gICAgY29udGFpbmVyOiBjb25maWcuY29udGFpbmVyLFxuICAgIGJvdW5kYXJ5OiBjb25maWcuYm91bmRhcnksXG4gICAgZGVsYXk6IGNvbmZpZy5kZWxheSxcbiAgICBvZmZzZXQ6IGNvbmZpZy5vZmZzZXQsXG4gICAgbm9GYWRlOiAhY29uZmlnLmFuaW1hdGlvbixcbiAgICBpZDogY29uZmlnLmlkLFxuICAgIGRpc2FibGVkOiBjb25maWcuZGlzYWJsZWQsXG4gICAgaHRtbDogY29uZmlnLmh0bWxcbiAgfTtcbiAgdmFyIG9sZERhdGEgPSBlbFtCVl9QT1BPVkVSXS5fX2J2X3ByZXZfZGF0YV9fO1xuICBlbFtCVl9QT1BPVkVSXS5fX2J2X3ByZXZfZGF0YV9fID0gZGF0YTtcblxuICBpZiAoIWxvb3NlRXF1YWwoZGF0YSwgb2xkRGF0YSkpIHtcbiAgICAvLyBXZSBvbmx5IHVwZGF0ZSB0aGUgaW5zdGFuY2UgaWYgZGF0YSBoYXMgY2hhbmdlZFxuICAgIHZhciBuZXdEYXRhID0ge1xuICAgICAgdGFyZ2V0OiBlbFxuICAgIH07XG4gICAga2V5cyhkYXRhKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICAvLyBXZSBvbmx5IHBhc3MgZGF0YSBwcm9wZXJ0aWVzIHRoYXQgaGF2ZSBjaGFuZ2VkXG4gICAgICBpZiAoZGF0YVtwcm9wXSAhPT0gb2xkRGF0YVtwcm9wXSkge1xuICAgICAgICAvLyBJZiB0aXRsZS9jb250ZW50IGlzIGEgZnVuY3Rpb24sIHdlIGV4ZWN1dGUgaXQgaGVyZVxuICAgICAgICBuZXdEYXRhW3Byb3BdID0gKHByb3AgPT09ICd0aXRsZScgfHwgcHJvcCA9PT0gJ2NvbnRlbnQnKSAmJiBpc0Z1bmN0aW9uKGRhdGFbcHJvcF0pID8gZGF0YVtwcm9wXSgpIDogZGF0YVtwcm9wXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBlbFtCVl9QT1BPVkVSXS51cGRhdGVEYXRhKG5ld0RhdGEpO1xuICB9XG59OyAvLyBSZW1vdmUgUG9wb3ZlciBmcm9tIG91ciBlbGVtZW50XG5cblxudmFyIHJlbW92ZVBvcG92ZXIgPSBmdW5jdGlvbiByZW1vdmVQb3BvdmVyKGVsKSB7XG4gIGlmIChlbFtCVl9QT1BPVkVSXSkge1xuICAgIGVsW0JWX1BPUE9WRVJdLiRkZXN0cm95KCk7XG4gICAgZWxbQlZfUE9QT1ZFUl0gPSBudWxsO1xuICB9XG5cbiAgZGVsZXRlIGVsW0JWX1BPUE9WRVJdO1xufTsgLy8gRXhwb3J0IG91ciBkaXJlY3RpdmVcblxuXG5leHBvcnQgdmFyIFZCUG9wb3ZlciA9IHtcbiAgYmluZDogZnVuY3Rpb24gYmluZChlbCwgYmluZGluZ3MsIHZub2RlKSB7XG4gICAgYXBwbHlQb3BvdmVyKGVsLCBiaW5kaW5ncywgdm5vZGUpO1xuICB9LFxuICAvLyBXZSB1c2UgYGNvbXBvbmVudFVwZGF0ZWRgIGhlcmUgaW5zdGVhZCBvZiBgdXBkYXRlYCwgYXMgdGhlIGZvcm1lclxuICAvLyB3YWl0cyB1bnRpbCB0aGUgY29udGFpbmluZyBjb21wb25lbnQgYW5kIGNoaWxkcmVuIGhhdmUgZmluaXNoZWQgdXBkYXRpbmdcbiAgY29tcG9uZW50VXBkYXRlZDogZnVuY3Rpb24gY29tcG9uZW50VXBkYXRlZChlbCwgYmluZGluZ3MsIHZub2RlKSB7XG4gICAgLy8gUGVyZm9ybWVkIGluIGEgYCRuZXh0VGljaygpYCB0byBwcmV2ZW50IGVuZGxlc3MgcmVuZGVyL3VwZGF0ZSBsb29wc1xuICAgIHZub2RlLmNvbnRleHQuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwcGx5UG9wb3ZlcihlbCwgYmluZGluZ3MsIHZub2RlKTtcbiAgICB9KTtcbiAgfSxcbiAgdW5iaW5kOiBmdW5jdGlvbiB1bmJpbmQoZWwpIHtcbiAgICByZW1vdmVQb3BvdmVyKGVsKTtcbiAgfVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9kaXJlY3RpdmVzL3BvcG92ZXIvcG9wb3Zlci5qc1xuLy8gbW9kdWxlIGlkID0gMTkzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///193\n"); /***/ }), /* 194 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return SpinnerPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__spinner__ = __webpack_require__(195);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BSpinner */\n\n\nvar SpinnerPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BSpinner: __WEBPACK_IMPORTED_MODULE_0__spinner__[\"a\" /* BSpinner */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9zcGlubmVyL2luZGV4LmpzPzMwYTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUM7QUFDZTtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGNBQWMsMERBQVE7QUFDdEI7QUFDQSxDQUFDIiwiZmlsZSI6IjE5NC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJTcGlubmVyIH0gZnJvbSAnLi9zcGlubmVyJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBTcGlubmVyUGx1Z2luID1cbi8qI19fUFVSRV9fKi9cbnBsdWdpbkZhY3Rvcnkoe1xuICBjb21wb25lbnRzOiB7XG4gICAgQlNwaW5uZXI6IEJTcGlubmVyXG4gIH1cbn0pO1xuZXhwb3J0IHsgU3Bpbm5lclBsdWdpbiwgQlNwaW5uZXIgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL3NwaW5uZXIvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE5NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///194\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ProgressPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__progress__ = __webpack_require__(195);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__progress_bar__ = __webpack_require__(84);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BProgress */\n/* unused harmony reexport BProgressBar */\n\n\n\nvar ProgressPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BProgress: __WEBPACK_IMPORTED_MODULE_0__progress__[\"a\" /* BProgress */],\n BProgressBar: __WEBPACK_IMPORTED_MODULE_1__progress_bar__[\"a\" /* BProgressBar */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wcm9ncmVzcy9pbmRleC5qcz85OWYyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF1QztBQUNPO0FBQ007QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxlQUFlLDREQUFTO0FBQ3hCLGtCQUFrQixtRUFBWTtBQUM5QjtBQUNBLENBQUMiLCJmaWxlIjoiMTk0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQlByb2dyZXNzIH0gZnJvbSAnLi9wcm9ncmVzcyc7XG5pbXBvcnQgeyBCUHJvZ3Jlc3NCYXIgfSBmcm9tICcuL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgUHJvZ3Jlc3NQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCUHJvZ3Jlc3M6IEJQcm9ncmVzcyxcbiAgICBCUHJvZ3Jlc3NCYXI6IEJQcm9ncmVzc0JhclxuICB9XG59KTtcbmV4cG9ydCB7IFByb2dyZXNzUGx1Z2luLCBCUHJvZ3Jlc3MsIEJQcm9ncmVzc0JhciB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvcHJvZ3Jlc3MvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE5NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///194\n"); /***/ }), /* 195 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BSpinner; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_normalize_slot__ = __webpack_require__(18);\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\nvar NAME = 'BSpinner'; // @vue/component\n\nvar BSpinner =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n functional: true,\n props: {\n type: {\n type: String,\n default: 'border' // SCSS currently supports 'border' or 'grow'\n\n },\n label: {\n type: String,\n default: null\n },\n variant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant');\n }\n },\n small: {\n type: Boolean,\n default: false\n },\n role: {\n type: String,\n default: 'status'\n },\n tag: {\n type: String,\n default: 'span'\n }\n },\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var label = Object(__WEBPACK_IMPORTED_MODULE_3__utils_normalize_slot__[\"b\" /* normalizeSlot */])('label', {}, $scopedSlots, $slots) || props.label;\n\n if (label) {\n label = h('span', {\n staticClass: 'sr-only'\n }, label);\n }\n\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n attrs: {\n role: label ? props.role || 'status' : null,\n 'aria-hidden': label ? null : 'true'\n },\n class: (_class = {}, _defineProperty(_class, \"spinner-\".concat(props.type), Boolean(props.type)), _defineProperty(_class, \"spinner-\".concat(props.type, \"-sm\"), props.small), _defineProperty(_class, \"text-\".concat(props.variant), Boolean(props.variant)), _class)\n }), [label || h()]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9zcGlubmVyL3NwaW5uZXIuanM/YTcxMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ29CO0FBQ0U7QUFDRztBQUMzRCxzQkFBc0I7O0FBRWY7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixvRkFBYSxZQUFZOztBQUV6QztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUEsd0JBQXdCLG9GQUFTO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCx5QkFBeUI7QUFDekIsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxOTUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBub3JtYWxpemVTbG90IH0gZnJvbSAnLi4vLi4vdXRpbHMvbm9ybWFsaXplLXNsb3QnO1xudmFyIE5BTUUgPSAnQlNwaW5uZXInOyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJTcGlubmVyID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczoge1xuICAgIHR5cGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdib3JkZXInIC8vIFNDU1MgY3VycmVudGx5IHN1cHBvcnRzICdib3JkZXInIG9yICdncm93J1xuXG4gICAgfSxcbiAgICBsYWJlbDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgdmFyaWFudDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ3ZhcmlhbnQnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNtYWxsOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHJvbGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdzdGF0dXMnXG4gICAgfSxcbiAgICB0YWc6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdzcGFuJ1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBfY2xhc3M7XG5cbiAgICB2YXIgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgICBkYXRhID0gX3JlZi5kYXRhLFxuICAgICAgICBzbG90cyA9IF9yZWYuc2xvdHMsXG4gICAgICAgIHNjb3BlZFNsb3RzID0gX3JlZi5zY29wZWRTbG90cztcbiAgICB2YXIgJHNsb3RzID0gc2xvdHMoKTtcbiAgICB2YXIgJHNjb3BlZFNsb3RzID0gc2NvcGVkU2xvdHMgfHwge307XG4gICAgdmFyIGxhYmVsID0gbm9ybWFsaXplU2xvdCgnbGFiZWwnLCB7fSwgJHNjb3BlZFNsb3RzLCAkc2xvdHMpIHx8IHByb3BzLmxhYmVsO1xuXG4gICAgaWYgKGxhYmVsKSB7XG4gICAgICBsYWJlbCA9IGgoJ3NwYW4nLCB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiAnc3Itb25seSdcbiAgICAgIH0sIGxhYmVsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaChwcm9wcy50YWcsIG1lcmdlRGF0YShkYXRhLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICByb2xlOiBsYWJlbCA/IHByb3BzLnJvbGUgfHwgJ3N0YXR1cycgOiBudWxsLFxuICAgICAgICAnYXJpYS1oaWRkZW4nOiBsYWJlbCA/IG51bGwgOiAndHJ1ZSdcbiAgICAgIH0sXG4gICAgICBjbGFzczogKF9jbGFzcyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzLCBcInNwaW5uZXItXCIuY29uY2F0KHByb3BzLnR5cGUpLCBCb29sZWFuKHByb3BzLnR5cGUpKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJzcGlubmVyLVwiLmNvbmNhdChwcm9wcy50eXBlLCBcIi1zbVwiKSwgcHJvcHMuc21hbGwpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzLCBcInRleHQtXCIuY29uY2F0KHByb3BzLnZhcmlhbnQpLCBCb29sZWFuKHByb3BzLnZhcmlhbnQpKSwgX2NsYXNzKVxuICAgIH0pLCBbbGFiZWwgfHwgaCgpXSk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvc3Bpbm5lci9zcGlubmVyLmpzXG4vLyBtb2R1bGUgaWQgPSAxOTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///195\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BProgress; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__progress_bar__ = __webpack_require__(84);\n\n\n\n\nvar NAME = 'BProgress'; // @vue/component\n\nvar BProgress =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n mixins: [__WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__[\"a\" /* default */]],\n provide: function provide() {\n return {\n bvProgress: this\n };\n },\n props: {\n // These props can be inherited via the child b-progress-bar(s)\n variant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant');\n }\n },\n striped: {\n type: Boolean,\n default: false\n },\n animated: {\n type: Boolean,\n default: false\n },\n height: {\n type: String,\n default: null\n },\n precision: {\n type: Number,\n default: 0\n },\n showProgress: {\n type: Boolean,\n default: false\n },\n showValue: {\n type: Boolean,\n default: false\n },\n max: {\n type: Number,\n default: 100\n },\n // This prop is not inherited by child b-progress-bar(s)\n value: {\n type: Number,\n default: 0\n }\n },\n computed: {\n progressHeight: function progressHeight() {\n return {\n height: this.height || null\n };\n }\n },\n render: function render(h) {\n var childNodes = this.normalizeSlot('default');\n\n if (!childNodes) {\n childNodes = h(__WEBPACK_IMPORTED_MODULE_3__progress_bar__[\"a\" /* BProgressBar */], {\n props: {\n value: this.value,\n max: this.max,\n precision: this.precision,\n variant: this.variant,\n animated: this.animated,\n striped: this.striped,\n showProgress: this.showProgress,\n showValue: this.showValue\n }\n });\n }\n\n return h('div', {\n class: ['progress'],\n style: this.progressHeight\n }, [childNodes]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wcm9ncmVzcy9wcm9ncmVzcy5qcz9iNGI4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDc0I7QUFDSztBQUNmO0FBQzlDLHVCQUF1Qjs7QUFFaEI7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQSxXQUFXLHVFQUFrQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsbUVBQVk7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxOTUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi8uLi91dGlscy9jb25maWcnO1xuaW1wb3J0IG5vcm1hbGl6ZVNsb3RNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvbm9ybWFsaXplLXNsb3QnO1xuaW1wb3J0IHsgQlByb2dyZXNzQmFyIH0gZnJvbSAnLi9wcm9ncmVzcy1iYXInO1xudmFyIE5BTUUgPSAnQlByb2dyZXNzJzsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCUHJvZ3Jlc3MgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6IE5BTUUsXG4gIG1peGluczogW25vcm1hbGl6ZVNsb3RNaXhpbl0sXG4gIHByb3ZpZGU6IGZ1bmN0aW9uIHByb3ZpZGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJ2UHJvZ3Jlc3M6IHRoaXNcbiAgICB9O1xuICB9LFxuICBwcm9wczoge1xuICAgIC8vIFRoZXNlIHByb3BzIGNhbiBiZSBpbmhlcml0ZWQgdmlhIHRoZSBjaGlsZCBiLXByb2dyZXNzLWJhcihzKVxuICAgIHZhcmlhbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICd2YXJpYW50Jyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzdHJpcGVkOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGFuaW1hdGVkOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGhlaWdodDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgcHJlY2lzaW9uOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAwXG4gICAgfSxcbiAgICBzaG93UHJvZ3Jlc3M6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgc2hvd1ZhbHVlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIG1heDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMTAwXG4gICAgfSxcbiAgICAvLyBUaGlzIHByb3AgaXMgbm90IGluaGVyaXRlZCBieSBjaGlsZCBiLXByb2dyZXNzLWJhcihzKVxuICAgIHZhbHVlOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAwXG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHByb2dyZXNzSGVpZ2h0OiBmdW5jdGlvbiBwcm9ncmVzc0hlaWdodCgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQgfHwgbnVsbFxuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgY2hpbGROb2RlcyA9IHRoaXMubm9ybWFsaXplU2xvdCgnZGVmYXVsdCcpO1xuXG4gICAgaWYgKCFjaGlsZE5vZGVzKSB7XG4gICAgICBjaGlsZE5vZGVzID0gaChCUHJvZ3Jlc3NCYXIsIHtcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgICAgICBtYXg6IHRoaXMubWF4LFxuICAgICAgICAgIHByZWNpc2lvbjogdGhpcy5wcmVjaXNpb24sXG4gICAgICAgICAgdmFyaWFudDogdGhpcy52YXJpYW50LFxuICAgICAgICAgIGFuaW1hdGVkOiB0aGlzLmFuaW1hdGVkLFxuICAgICAgICAgIHN0cmlwZWQ6IHRoaXMuc3RyaXBlZCxcbiAgICAgICAgICBzaG93UHJvZ3Jlc3M6IHRoaXMuc2hvd1Byb2dyZXNzLFxuICAgICAgICAgIHNob3dWYWx1ZTogdGhpcy5zaG93VmFsdWVcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGgoJ2RpdicsIHtcbiAgICAgIGNsYXNzOiBbJ3Byb2dyZXNzJ10sXG4gICAgICBzdHlsZTogdGhpcy5wcm9ncmVzc0hlaWdodFxuICAgIH0sIFtjaGlsZE5vZGVzXSk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvcHJvZ3Jlc3MvcHJvZ3Jlc3MuanNcbi8vIG1vZHVsZSBpZCA9IDE5NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///195\n"); /***/ }), /* 196 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return TablePlugin; });\n/* unused harmony export TableLitePlugin */\n/* unused harmony export TableSimplePlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__table__ = __webpack_require__(197);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__table_lite__ = __webpack_require__(209);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__table_simple__ = __webpack_require__(210);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__tbody__ = __webpack_require__(89);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__thead__ = __webpack_require__(88);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__tfoot__ = __webpack_require__(48);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__tr__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__td__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__th__ = __webpack_require__(49);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BTable */\n/* unused harmony reexport BTableLite */\n/* unused harmony reexport BTableSimple */\n/* unused harmony reexport BTbody */\n/* unused harmony reexport BThead */\n/* unused harmony reexport BTfoot */\n/* unused harmony reexport BTr */\n/* unused harmony reexport BTd */\n/* unused harmony reexport BTh */\n\n\n\n\n\n\n\n\n\n\nvar TableLitePlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_9__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BTableLite: __WEBPACK_IMPORTED_MODULE_1__table_lite__[\"a\" /* BTableLite */]\n }\n});\nvar TableSimplePlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_9__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BTableSimple: __WEBPACK_IMPORTED_MODULE_2__table_simple__[\"a\" /* BTableSimple */],\n BTbody: __WEBPACK_IMPORTED_MODULE_3__tbody__[\"a\" /* BTbody */],\n BThead: __WEBPACK_IMPORTED_MODULE_4__thead__[\"a\" /* BThead */],\n BTfoot: __WEBPACK_IMPORTED_MODULE_5__tfoot__[\"a\" /* BTfoot */],\n BTr: __WEBPACK_IMPORTED_MODULE_6__tr__[\"a\" /* BTr */],\n BTd: __WEBPACK_IMPORTED_MODULE_7__td__[\"a\" /* BTd */],\n BTh: __WEBPACK_IMPORTED_MODULE_8__th__[\"a\" /* BTh */]\n }\n});\nvar TablePlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_9__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BTable: __WEBPACK_IMPORTED_MODULE_0__table__[\"a\" /* BTable */]\n },\n plugins: {\n TableLitePlugin: TableLitePlugin,\n TableSimplePlugin: TableSimplePlugin\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9pbmRleC5qcz9iOGUzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ1M7QUFDSTtBQUNiO0FBQ0E7QUFDQTtBQUNOO0FBQ0E7QUFDQTtBQUN5QjtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGdCQUFnQiwrREFBVTtBQUMxQjtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGtCQUFrQixtRUFBWTtBQUM5QixZQUFZLHNEQUFNO0FBQ2xCLFlBQVksc0RBQU07QUFDbEIsWUFBWSxzREFBTTtBQUNsQixTQUFTLGdEQUFHO0FBQ1osU0FBUyxnREFBRztBQUNaLFNBQVMsZ0RBQUc7QUFDWjtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLFlBQVksc0RBQU07QUFDbEIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIxOTYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCVGFibGUgfSBmcm9tICcuL3RhYmxlJztcbmltcG9ydCB7IEJUYWJsZUxpdGUgfSBmcm9tICcuL3RhYmxlLWxpdGUnO1xuaW1wb3J0IHsgQlRhYmxlU2ltcGxlIH0gZnJvbSAnLi90YWJsZS1zaW1wbGUnO1xuaW1wb3J0IHsgQlRib2R5IH0gZnJvbSAnLi90Ym9keSc7XG5pbXBvcnQgeyBCVGhlYWQgfSBmcm9tICcuL3RoZWFkJztcbmltcG9ydCB7IEJUZm9vdCB9IGZyb20gJy4vdGZvb3QnO1xuaW1wb3J0IHsgQlRyIH0gZnJvbSAnLi90cic7XG5pbXBvcnQgeyBCVGQgfSBmcm9tICcuL3RkJztcbmltcG9ydCB7IEJUaCB9IGZyb20gJy4vdGgnO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIFRhYmxlTGl0ZVBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJUYWJsZUxpdGU6IEJUYWJsZUxpdGVcbiAgfVxufSk7XG52YXIgVGFibGVTaW1wbGVQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCVGFibGVTaW1wbGU6IEJUYWJsZVNpbXBsZSxcbiAgICBCVGJvZHk6IEJUYm9keSxcbiAgICBCVGhlYWQ6IEJUaGVhZCxcbiAgICBCVGZvb3Q6IEJUZm9vdCxcbiAgICBCVHI6IEJUcixcbiAgICBCVGQ6IEJUZCxcbiAgICBCVGg6IEJUaFxuICB9XG59KTtcbnZhciBUYWJsZVBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJUYWJsZTogQlRhYmxlXG4gIH0sXG4gIHBsdWdpbnM6IHtcbiAgICBUYWJsZUxpdGVQbHVnaW46IFRhYmxlTGl0ZVBsdWdpbixcbiAgICBUYWJsZVNpbXBsZVBsdWdpbjogVGFibGVTaW1wbGVQbHVnaW5cbiAgfVxufSk7XG5leHBvcnQgeyAvLyBQbHVnaW5zXG5UYWJsZVBsdWdpbiwgVGFibGVMaXRlUGx1Z2luLCBUYWJsZVNpbXBsZVBsdWdpbiAvLyBUYWJsZSBjb21wb25lbnRzXG4sIEJUYWJsZSwgQlRhYmxlTGl0ZSwgQlRhYmxlU2ltcGxlIC8vIEhlbHBlciBjb21wb25lbnRzXG4sIEJUYm9keSwgQlRoZWFkLCBCVGZvb3QsIEJUciwgQlRkLCBCVGggfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL3RhYmxlL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxOTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///196\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return SpinnerPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__spinner__ = __webpack_require__(197);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BSpinner */\n\n\nvar SpinnerPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BSpinner: __WEBPACK_IMPORTED_MODULE_0__spinner__[\"a\" /* BSpinner */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9zcGlubmVyL2luZGV4LmpzPzMwYTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUM7QUFDZTtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGNBQWMsMERBQVE7QUFDdEI7QUFDQSxDQUFDIiwiZmlsZSI6IjE5Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJTcGlubmVyIH0gZnJvbSAnLi9zcGlubmVyJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBTcGlubmVyUGx1Z2luID1cbi8qI19fUFVSRV9fKi9cbnBsdWdpbkZhY3Rvcnkoe1xuICBjb21wb25lbnRzOiB7XG4gICAgQlNwaW5uZXI6IEJTcGlubmVyXG4gIH1cbn0pO1xuZXhwb3J0IHsgU3Bpbm5lclBsdWdpbiwgQlNwaW5uZXIgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL3NwaW5uZXIvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE5NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///196\n"); /***/ }), /* 197 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BTable; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__helpers_mixin_items__ = __webpack_require__(198);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__helpers_mixin_stacked__ = __webpack_require__(87);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__helpers_mixin_filtering__ = __webpack_require__(261);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__helpers_mixin_sorting__ = __webpack_require__(263);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__helpers_mixin_pagination__ = __webpack_require__(265);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__helpers_mixin_caption__ = __webpack_require__(202);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__helpers_mixin_colgroup__ = __webpack_require__(203);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__helpers_mixin_thead__ = __webpack_require__(204);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__helpers_mixin_tfoot__ = __webpack_require__(207);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__helpers_mixin_tbody__ = __webpack_require__(208);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__helpers_mixin_empty__ = __webpack_require__(267);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__helpers_mixin_top_row__ = __webpack_require__(268);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__helpers_mixin_bottom_row__ = __webpack_require__(269);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__helpers_mixin_busy__ = __webpack_require__(270);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__helpers_mixin_selectable__ = __webpack_require__(271);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__helpers_mixin_provider__ = __webpack_require__(272);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__helpers_mixin_table_renderer__ = __webpack_require__(90);\n // Mixins\n\n\n // Table helper Mixins\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // Main table renderer mixin\n\n // b-table component definition\n// @vue/component\n\nvar BTable =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BTable',\n // Order of mixins is important!\n // They are merged from first to last, followed by this component.\n mixins: [// Required Mixins\n __WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__helpers_mixin_items__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_19__helpers_mixin_table_renderer__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__helpers_mixin_stacked__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_10__helpers_mixin_thead__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_11__helpers_mixin_tfoot__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_12__helpers_mixin_tbody__[\"a\" /* default */], // Features Mixins\n __WEBPACK_IMPORTED_MODULE_4__helpers_mixin_stacked__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__helpers_mixin_filtering__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__helpers_mixin_sorting__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__helpers_mixin_pagination__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_8__helpers_mixin_caption__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_9__helpers_mixin_colgroup__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_17__helpers_mixin_selectable__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_13__helpers_mixin_empty__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_14__helpers_mixin_top_row__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_15__helpers_mixin_bottom_row__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_16__helpers_mixin_busy__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_18__helpers_mixin_provider__[\"a\" /* default */]] // render function provided by table-renderer mixin\n\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS90YWJsZS5qcz82ZWE0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQzs7QUFFSTtBQUN1Qjs7QUFFZDtBQUNJO0FBQ0k7QUFDSjtBQUNNO0FBQ047QUFDRTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0c7QUFDTTtBQUNYO0FBQ1k7QUFDSjs7QUFFVztBQUNoRTs7QUFFTztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsMkRBQU8sRUFBRSx1RUFBa0IsRUFBRSxxRUFBVSxFQUFFLCtFQUFrQixFQUFFLHVFQUFZLEVBQUUsc0VBQVUsRUFBRSxzRUFBVSxFQUFFLHNFQUFVO0FBQy9HLEVBQUUsdUVBQVksRUFBRSx5RUFBYyxFQUFFLHVFQUFZLEVBQUUsMEVBQWUsRUFBRSx1RUFBWSxFQUFFLHdFQUFhLEVBQUUsMkVBQWUsRUFBRSxzRUFBVSxFQUFFLHdFQUFXLEVBQUUsMkVBQWMsRUFBRSxxRUFBUyxFQUFFLHlFQUFhOztBQUU5SyxDQUFDIiwiZmlsZSI6IjE5Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJzsgLy8gTWl4aW5zXG5cbmltcG9ydCBpZE1peGluIGZyb20gJy4uLy4uL21peGlucy9pZCc7XG5pbXBvcnQgbm9ybWFsaXplU2xvdE1peGluIGZyb20gJy4uLy4uL21peGlucy9ub3JtYWxpemUtc2xvdCc7IC8vIFRhYmxlIGhlbHBlciBNaXhpbnNcblxuaW1wb3J0IGl0ZW1zTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLWl0ZW1zJztcbmltcG9ydCBzdGFja2VkTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLXN0YWNrZWQnO1xuaW1wb3J0IGZpbHRlcmluZ01peGluIGZyb20gJy4vaGVscGVycy9taXhpbi1maWx0ZXJpbmcnO1xuaW1wb3J0IHNvcnRpbmdNaXhpbiBmcm9tICcuL2hlbHBlcnMvbWl4aW4tc29ydGluZyc7XG5pbXBvcnQgcGFnaW5hdGlvbk1peGluIGZyb20gJy4vaGVscGVycy9taXhpbi1wYWdpbmF0aW9uJztcbmltcG9ydCBjYXB0aW9uTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLWNhcHRpb24nO1xuaW1wb3J0IGNvbGdyb3VwTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLWNvbGdyb3VwJztcbmltcG9ydCB0aGVhZE1peGluIGZyb20gJy4vaGVscGVycy9taXhpbi10aGVhZCc7XG5pbXBvcnQgdGZvb3RNaXhpbiBmcm9tICcuL2hlbHBlcnMvbWl4aW4tdGZvb3QnO1xuaW1wb3J0IHRib2R5TWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLXRib2R5JztcbmltcG9ydCBlbXB0eU1peGluIGZyb20gJy4vaGVscGVycy9taXhpbi1lbXB0eSc7XG5pbXBvcnQgdG9wUm93TWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLXRvcC1yb3cnO1xuaW1wb3J0IGJvdHRvbVJvd01peGluIGZyb20gJy4vaGVscGVycy9taXhpbi1ib3R0b20tcm93JztcbmltcG9ydCBidXN5TWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLWJ1c3knO1xuaW1wb3J0IHNlbGVjdGFibGVNaXhpbiBmcm9tICcuL2hlbHBlcnMvbWl4aW4tc2VsZWN0YWJsZSc7XG5pbXBvcnQgcHJvdmlkZXJNaXhpbiBmcm9tICcuL2hlbHBlcnMvbWl4aW4tcHJvdmlkZXInOyAvLyBNYWluIHRhYmxlIHJlbmRlcmVyIG1peGluXG5cbmltcG9ydCB0YWJsZVJlbmRlcmVyTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLXRhYmxlLXJlbmRlcmVyJzsgLy8gYi10YWJsZSBjb21wb25lbnQgZGVmaW5pdGlvblxuLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCVGFibGUgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCVGFibGUnLFxuICAvLyBPcmRlciBvZiBtaXhpbnMgaXMgaW1wb3J0YW50IVxuICAvLyBUaGV5IGFyZSBtZXJnZWQgZnJvbSBmaXJzdCB0byBsYXN0LCBmb2xsb3dlZCBieSB0aGlzIGNvbXBvbmVudC5cbiAgbWl4aW5zOiBbLy8gUmVxdWlyZWQgTWl4aW5zXG4gIGlkTWl4aW4sIG5vcm1hbGl6ZVNsb3RNaXhpbiwgaXRlbXNNaXhpbiwgdGFibGVSZW5kZXJlck1peGluLCBzdGFja2VkTWl4aW4sIHRoZWFkTWl4aW4sIHRmb290TWl4aW4sIHRib2R5TWl4aW4sIC8vIEZlYXR1cmVzIE1peGluc1xuICBzdGFja2VkTWl4aW4sIGZpbHRlcmluZ01peGluLCBzb3J0aW5nTWl4aW4sIHBhZ2luYXRpb25NaXhpbiwgY2FwdGlvbk1peGluLCBjb2xncm91cE1peGluLCBzZWxlY3RhYmxlTWl4aW4sIGVtcHR5TWl4aW4sIHRvcFJvd01peGluLCBib3R0b21Sb3dNaXhpbiwgYnVzeU1peGluLCBwcm92aWRlck1peGluXSAvLyByZW5kZXIgZnVuY3Rpb24gcHJvdmlkZWQgYnkgdGFibGUtcmVuZGVyZXIgbWl4aW5cblxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS90YWJsZS5qc1xuLy8gbW9kdWxlIGlkID0gMTk3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///197\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BSpinner; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_normalize_slot__ = __webpack_require__(18);\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\nvar NAME = 'BSpinner'; // @vue/component\n\nvar BSpinner =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n functional: true,\n props: {\n type: {\n type: String,\n default: 'border' // SCSS currently supports 'border' or 'grow'\n\n },\n label: {\n type: String,\n default: null\n },\n variant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant');\n }\n },\n small: {\n type: Boolean,\n default: false\n },\n role: {\n type: String,\n default: 'status'\n },\n tag: {\n type: String,\n default: 'span'\n }\n },\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var label = Object(__WEBPACK_IMPORTED_MODULE_3__utils_normalize_slot__[\"b\" /* normalizeSlot */])('label', {}, $scopedSlots, $slots) || props.label;\n\n if (label) {\n label = h('span', {\n staticClass: 'sr-only'\n }, label);\n }\n\n return h(props.tag, Object(__WEBPACK_IMPORTED_MODULE_1_vue_functional_data_merge__[\"a\" /* mergeData */])(data, {\n attrs: {\n role: label ? props.role || 'status' : null,\n 'aria-hidden': label ? null : 'true'\n },\n class: (_class = {}, _defineProperty(_class, \"spinner-\".concat(props.type), Boolean(props.type)), _defineProperty(_class, \"spinner-\".concat(props.type, \"-sm\"), props.small), _defineProperty(_class, \"text-\".concat(props.variant), Boolean(props.variant)), _class)\n }), [label || h()]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9zcGlubmVyL3NwaW5uZXIuanM/YTcxMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTdLO0FBQ29CO0FBQ0U7QUFDRztBQUMzRCxzQkFBc0I7O0FBRWY7QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixvRkFBYSxZQUFZOztBQUV6QztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUEsd0JBQXdCLG9GQUFTO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCx5QkFBeUI7QUFDekIsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsImZpbGUiOiIxOTcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgVnVlIGZyb20gJy4uLy4uL3V0aWxzL3Z1ZSc7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tICd2dWUtZnVuY3Rpb25hbC1kYXRhLW1lcmdlJztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBub3JtYWxpemVTbG90IH0gZnJvbSAnLi4vLi4vdXRpbHMvbm9ybWFsaXplLXNsb3QnO1xudmFyIE5BTUUgPSAnQlNwaW5uZXInOyAvLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJTcGlubmVyID1cbi8qI19fUFVSRV9fKi9cblZ1ZS5leHRlbmQoe1xuICBuYW1lOiBOQU1FLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczoge1xuICAgIHR5cGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdib3JkZXInIC8vIFNDU1MgY3VycmVudGx5IHN1cHBvcnRzICdib3JkZXInIG9yICdncm93J1xuXG4gICAgfSxcbiAgICBsYWJlbDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgdmFyaWFudDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ3ZhcmlhbnQnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNtYWxsOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHJvbGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdzdGF0dXMnXG4gICAgfSxcbiAgICB0YWc6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdzcGFuJ1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgX3JlZikge1xuICAgIHZhciBfY2xhc3M7XG5cbiAgICB2YXIgcHJvcHMgPSBfcmVmLnByb3BzLFxuICAgICAgICBkYXRhID0gX3JlZi5kYXRhLFxuICAgICAgICBzbG90cyA9IF9yZWYuc2xvdHMsXG4gICAgICAgIHNjb3BlZFNsb3RzID0gX3JlZi5zY29wZWRTbG90cztcbiAgICB2YXIgJHNsb3RzID0gc2xvdHMoKTtcbiAgICB2YXIgJHNjb3BlZFNsb3RzID0gc2NvcGVkU2xvdHMgfHwge307XG4gICAgdmFyIGxhYmVsID0gbm9ybWFsaXplU2xvdCgnbGFiZWwnLCB7fSwgJHNjb3BlZFNsb3RzLCAkc2xvdHMpIHx8IHByb3BzLmxhYmVsO1xuXG4gICAgaWYgKGxhYmVsKSB7XG4gICAgICBsYWJlbCA9IGgoJ3NwYW4nLCB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiAnc3Itb25seSdcbiAgICAgIH0sIGxhYmVsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaChwcm9wcy50YWcsIG1lcmdlRGF0YShkYXRhLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICByb2xlOiBsYWJlbCA/IHByb3BzLnJvbGUgfHwgJ3N0YXR1cycgOiBudWxsLFxuICAgICAgICAnYXJpYS1oaWRkZW4nOiBsYWJlbCA/IG51bGwgOiAndHJ1ZSdcbiAgICAgIH0sXG4gICAgICBjbGFzczogKF9jbGFzcyA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzLCBcInNwaW5uZXItXCIuY29uY2F0KHByb3BzLnR5cGUpLCBCb29sZWFuKHByb3BzLnR5cGUpKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJzcGlubmVyLVwiLmNvbmNhdChwcm9wcy50eXBlLCBcIi1zbVwiKSwgcHJvcHMuc21hbGwpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzLCBcInRleHQtXCIuY29uY2F0KHByb3BzLnZhcmlhbnQpLCBCb29sZWFuKHByb3BzLnZhcmlhbnQpKSwgX2NsYXNzKVxuICAgIH0pLCBbbGFiZWwgfHwgaCgpXSk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvc3Bpbm5lci9zcGlubmVyLmpzXG4vLyBtb2R1bGUgaWQgPSAxOTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///197\n"); /***/ }), /* 198 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_loose_equal__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__normalize_fields__ = __webpack_require__(260);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n props: {\n items: {\n // Provider mixin adds in `Function` type\n type: Array,\n default: function _default()\n /* istanbul ignore next */\n {\n return [];\n }\n },\n fields: {\n type: Array,\n default: null\n },\n primaryKey: {\n // Primary key for record\n // If provided the value in each row must be unique!\n type: String,\n default: null\n },\n value: {\n // `v-model` for retrieving the current displayed rows\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n data: function data() {\n return {\n // Our local copy of the items\n // Must be an array\n localItems: Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"a\" /* isArray */])(this.items) ? this.items.slice() : []\n };\n },\n computed: {\n computedFields: function computedFields() {\n // We normalize fields into an array of objects\n // `[ { key:..., label:..., ...}, {...}, ..., {..}]`\n return Object(__WEBPACK_IMPORTED_MODULE_2__normalize_fields__[\"a\" /* default */])(this.fields, this.localItems);\n },\n computedFieldsObj: function computedFieldsObj() {\n // Fields as a simple lookup hash object\n // Mainly for formatter lookup and use in `scopedSlots` for convenience\n // If the field has a formatter, it normalizes formatter to a\n // function ref or `undefined` if no formatter\n var parent = this.$parent;\n return this.computedFields.reduce(function (obj, f) {\n // We use object spread here so we don't mutate the original field object\n obj[f.key] = _objectSpread({}, f);\n\n if (f.formatter) {\n // Normalize formatter to a function ref or `undefined`\n var formatter = f.formatter;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"m\" /* isString */])(formatter) && Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"f\" /* isFunction */])(parent[formatter])) {\n formatter = parent[formatter];\n } else if (!Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"f\" /* isFunction */])(formatter)) {\n /* istanbul ignore next */\n formatter = undefined;\n } // Return formatter function or `undefined` if none\n\n\n obj[f.key].formatter = formatter;\n }\n\n return obj;\n }, {});\n },\n computedItems: function computedItems() {\n // Fallback if various mixins not provided\n return (this.paginatedItems || this.sortedItems || this.filteredItems || this.localItems || []).slice();\n },\n context: function context() {\n // Current state of sorting, filtering and pagination props/values\n return {\n filter: this.localFilter,\n sortBy: this.localSortBy,\n sortDesc: this.localSortDesc,\n perPage: parseInt(this.perPage, 10) || 0,\n currentPage: parseInt(this.currentPage, 10) || 1,\n apiUrl: this.apiUrl\n };\n }\n },\n watch: {\n items: function items(newItems) {\n /* istanbul ignore else */\n if (Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"a\" /* isArray */])(newItems)) {\n // Set `localItems`/`filteredItems` to a copy of the provided array\n this.localItems = newItems.slice();\n } else if (Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"n\" /* isUndefined */])(newItems) || Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"g\" /* isNull */])(newItems)) {\n /* istanbul ignore next */\n this.localItems = [];\n }\n },\n // Watch for changes on `computedItems` and update the `v-model`\n computedItems: function computedItems(newVal) {\n this.$emit('input', newVal);\n },\n // Watch for context changes\n context: function context(newVal, oldVal) {\n // Emit context information for external paging/filtering/sorting handling\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__utils_loose_equal__[\"a\" /* default */])(newVal, oldVal)) {\n this.$emit('context-changed', newVal);\n }\n }\n },\n mounted: function mounted() {\n // Initially update the `v-model` of displayed items\n this.$emit('input', this.computedItems);\n },\n methods: {\n // Method to get the formatter method for a given field key\n getFieldFormatter: function getFieldFormatter(key) {\n var field = this.computedFieldsObj[key]; // `this.computedFieldsObj` has pre-normalized the formatter to a\n // function ref if present, otherwise `undefined`\n\n return field ? field.formatter : undefined;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL21peGluLWl0ZW1zLmpzP2I2ZDQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUUzSjtBQUN3QztBQUMzQztBQUNsQztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQix1RUFBTztBQUN6QjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLHlCQUF5QixHQUFHLElBQUksUUFBUSxHQUFHO0FBQ3hELGFBQWEsMEVBQWU7QUFDNUIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7O0FBRXJDO0FBQ0E7QUFDQTs7QUFFQSxjQUFjLHdFQUFRLGVBQWUsMEVBQVU7QUFDL0M7QUFDQSxXQUFXLFdBQVcsMEVBQVU7QUFDaEM7QUFDQTtBQUNBLFdBQVc7OztBQUdYO0FBQ0E7O0FBRUE7QUFDQSxPQUFPLElBQUk7QUFDWCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsVUFBVSx1RUFBTztBQUNqQjtBQUNBO0FBQ0EsT0FBTyxVQUFVLDJFQUFXLGNBQWMsc0VBQU07QUFDaEQ7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxXQUFXLDJFQUFVO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsOENBQThDO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMTk4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IGxvb3NlRXF1YWwgZnJvbSAnLi4vLi4vLi4vdXRpbHMvbG9vc2UtZXF1YWwnO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNGdW5jdGlvbiwgaXNOdWxsLCBpc1N0cmluZywgaXNVbmRlZmluZWQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9pbnNwZWN0JztcbmltcG9ydCBub3JtYWxpemVGaWVsZHMgZnJvbSAnLi9ub3JtYWxpemUtZmllbGRzJztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgcHJvcHM6IHtcbiAgICBpdGVtczoge1xuICAgICAgLy8gUHJvdmlkZXIgbWl4aW4gYWRkcyBpbiBgRnVuY3Rpb25gIHR5cGVcbiAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgIH0sXG4gICAgZmllbGRzOiB7XG4gICAgICB0eXBlOiBBcnJheSxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIHByaW1hcnlLZXk6IHtcbiAgICAgIC8vIFByaW1hcnkga2V5IGZvciByZWNvcmRcbiAgICAgIC8vIElmIHByb3ZpZGVkIHRoZSB2YWx1ZSBpbiBlYWNoIHJvdyBtdXN0IGJlIHVuaXF1ZSFcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIHZhbHVlOiB7XG4gICAgICAvLyBgdi1tb2RlbGAgZm9yIHJldHJpZXZpbmcgdGhlIGN1cnJlbnQgZGlzcGxheWVkIHJvd3NcbiAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIE91ciBsb2NhbCBjb3B5IG9mIHRoZSBpdGVtc1xuICAgICAgLy8gTXVzdCBiZSBhbiBhcnJheVxuICAgICAgbG9jYWxJdGVtczogaXNBcnJheSh0aGlzLml0ZW1zKSA/IHRoaXMuaXRlbXMuc2xpY2UoKSA6IFtdXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBjb21wdXRlZEZpZWxkczogZnVuY3Rpb24gY29tcHV0ZWRGaWVsZHMoKSB7XG4gICAgICAvLyBXZSBub3JtYWxpemUgZmllbGRzIGludG8gYW4gYXJyYXkgb2Ygb2JqZWN0c1xuICAgICAgLy8gYFsgeyBrZXk6Li4uLCBsYWJlbDouLi4sIC4uLn0sIHsuLi59LCAuLi4sIHsuLn1dYFxuICAgICAgcmV0dXJuIG5vcm1hbGl6ZUZpZWxkcyh0aGlzLmZpZWxkcywgdGhpcy5sb2NhbEl0ZW1zKTtcbiAgICB9LFxuICAgIGNvbXB1dGVkRmllbGRzT2JqOiBmdW5jdGlvbiBjb21wdXRlZEZpZWxkc09iaigpIHtcbiAgICAgIC8vIEZpZWxkcyBhcyBhIHNpbXBsZSBsb29rdXAgaGFzaCBvYmplY3RcbiAgICAgIC8vIE1haW5seSBmb3IgZm9ybWF0dGVyIGxvb2t1cCBhbmQgdXNlIGluIGBzY29wZWRTbG90c2AgZm9yIGNvbnZlbmllbmNlXG4gICAgICAvLyBJZiB0aGUgZmllbGQgaGFzIGEgZm9ybWF0dGVyLCBpdCBub3JtYWxpemVzIGZvcm1hdHRlciB0byBhXG4gICAgICAvLyBmdW5jdGlvbiByZWYgb3IgYHVuZGVmaW5lZGAgaWYgbm8gZm9ybWF0dGVyXG4gICAgICB2YXIgcGFyZW50ID0gdGhpcy4kcGFyZW50O1xuICAgICAgcmV0dXJuIHRoaXMuY29tcHV0ZWRGaWVsZHMucmVkdWNlKGZ1bmN0aW9uIChvYmosIGYpIHtcbiAgICAgICAgLy8gV2UgdXNlIG9iamVjdCBzcHJlYWQgaGVyZSBzbyB3ZSBkb24ndCBtdXRhdGUgdGhlIG9yaWdpbmFsIGZpZWxkIG9iamVjdFxuICAgICAgICBvYmpbZi5rZXldID0gX29iamVjdFNwcmVhZCh7fSwgZik7XG5cbiAgICAgICAgaWYgKGYuZm9ybWF0dGVyKSB7XG4gICAgICAgICAgLy8gTm9ybWFsaXplIGZvcm1hdHRlciB0byBhIGZ1bmN0aW9uIHJlZiBvciBgdW5kZWZpbmVkYFxuICAgICAgICAgIHZhciBmb3JtYXR0ZXIgPSBmLmZvcm1hdHRlcjtcblxuICAgICAgICAgIGlmIChpc1N0cmluZyhmb3JtYXR0ZXIpICYmIGlzRnVuY3Rpb24ocGFyZW50W2Zvcm1hdHRlcl0pKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZXIgPSBwYXJlbnRbZm9ybWF0dGVyXTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFpc0Z1bmN0aW9uKGZvcm1hdHRlcikpIHtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgICBmb3JtYXR0ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfSAvLyBSZXR1cm4gZm9ybWF0dGVyIGZ1bmN0aW9uIG9yIGB1bmRlZmluZWRgIGlmIG5vbmVcblxuXG4gICAgICAgICAgb2JqW2Yua2V5XS5mb3JtYXR0ZXIgPSBmb3JtYXR0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgfSwge30pO1xuICAgIH0sXG4gICAgY29tcHV0ZWRJdGVtczogZnVuY3Rpb24gY29tcHV0ZWRJdGVtcygpIHtcbiAgICAgIC8vIEZhbGxiYWNrIGlmIHZhcmlvdXMgbWl4aW5zIG5vdCBwcm92aWRlZFxuICAgICAgcmV0dXJuICh0aGlzLnBhZ2luYXRlZEl0ZW1zIHx8IHRoaXMuc29ydGVkSXRlbXMgfHwgdGhpcy5maWx0ZXJlZEl0ZW1zIHx8IHRoaXMubG9jYWxJdGVtcyB8fCBbXSkuc2xpY2UoKTtcbiAgICB9LFxuICAgIGNvbnRleHQ6IGZ1bmN0aW9uIGNvbnRleHQoKSB7XG4gICAgICAvLyBDdXJyZW50IHN0YXRlIG9mIHNvcnRpbmcsIGZpbHRlcmluZyBhbmQgcGFnaW5hdGlvbiBwcm9wcy92YWx1ZXNcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbHRlcjogdGhpcy5sb2NhbEZpbHRlcixcbiAgICAgICAgc29ydEJ5OiB0aGlzLmxvY2FsU29ydEJ5LFxuICAgICAgICBzb3J0RGVzYzogdGhpcy5sb2NhbFNvcnREZXNjLFxuICAgICAgICBwZXJQYWdlOiBwYXJzZUludCh0aGlzLnBlclBhZ2UsIDEwKSB8fCAwLFxuICAgICAgICBjdXJyZW50UGFnZTogcGFyc2VJbnQodGhpcy5jdXJyZW50UGFnZSwgMTApIHx8IDEsXG4gICAgICAgIGFwaVVybDogdGhpcy5hcGlVcmxcbiAgICAgIH07XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIGl0ZW1zOiBmdW5jdGlvbiBpdGVtcyhuZXdJdGVtcykge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChpc0FycmF5KG5ld0l0ZW1zKSkge1xuICAgICAgICAvLyBTZXQgYGxvY2FsSXRlbXNgL2BmaWx0ZXJlZEl0ZW1zYCB0byBhIGNvcHkgb2YgdGhlIHByb3ZpZGVkIGFycmF5XG4gICAgICAgIHRoaXMubG9jYWxJdGVtcyA9IG5ld0l0ZW1zLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKGlzVW5kZWZpbmVkKG5ld0l0ZW1zKSB8fCBpc051bGwobmV3SXRlbXMpKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHRoaXMubG9jYWxJdGVtcyA9IFtdO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8gV2F0Y2ggZm9yIGNoYW5nZXMgb24gYGNvbXB1dGVkSXRlbXNgIGFuZCB1cGRhdGUgdGhlIGB2LW1vZGVsYFxuICAgIGNvbXB1dGVkSXRlbXM6IGZ1bmN0aW9uIGNvbXB1dGVkSXRlbXMobmV3VmFsKSB7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIG5ld1ZhbCk7XG4gICAgfSxcbiAgICAvLyBXYXRjaCBmb3IgY29udGV4dCBjaGFuZ2VzXG4gICAgY29udGV4dDogZnVuY3Rpb24gY29udGV4dChuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgLy8gRW1pdCBjb250ZXh0IGluZm9ybWF0aW9uIGZvciBleHRlcm5hbCBwYWdpbmcvZmlsdGVyaW5nL3NvcnRpbmcgaGFuZGxpbmdcbiAgICAgIGlmICghbG9vc2VFcXVhbChuZXdWYWwsIG9sZFZhbCkpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnY29udGV4dC1jaGFuZ2VkJywgbmV3VmFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgLy8gSW5pdGlhbGx5IHVwZGF0ZSB0aGUgYHYtbW9kZWxgIG9mIGRpc3BsYXllZCBpdGVtc1xuICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgdGhpcy5jb21wdXRlZEl0ZW1zKTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIC8vIE1ldGhvZCB0byBnZXQgdGhlIGZvcm1hdHRlciBtZXRob2QgZm9yIGEgZ2l2ZW4gZmllbGQga2V5XG4gICAgZ2V0RmllbGRGb3JtYXR0ZXI6IGZ1bmN0aW9uIGdldEZpZWxkRm9ybWF0dGVyKGtleSkge1xuICAgICAgdmFyIGZpZWxkID0gdGhpcy5jb21wdXRlZEZpZWxkc09ialtrZXldOyAvLyBgdGhpcy5jb21wdXRlZEZpZWxkc09iamAgaGFzIHByZS1ub3JtYWxpemVkIHRoZSBmb3JtYXR0ZXIgdG8gYVxuICAgICAgLy8gZnVuY3Rpb24gcmVmIGlmIHByZXNlbnQsIG90aGVyd2lzZSBgdW5kZWZpbmVkYFxuXG4gICAgICByZXR1cm4gZmllbGQgPyBmaWVsZC5mb3JtYXR0ZXIgOiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdGFibGUvaGVscGVycy9taXhpbi1pdGVtcy5qc1xuLy8gbW9kdWxlIGlkID0gMTk4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///198\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return TablePlugin; });\n/* unused harmony export TableLitePlugin */\n/* unused harmony export TableSimplePlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__table__ = __webpack_require__(199);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__table_lite__ = __webpack_require__(211);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__table_simple__ = __webpack_require__(212);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__tbody__ = __webpack_require__(89);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__thead__ = __webpack_require__(88);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__tfoot__ = __webpack_require__(48);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__tr__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__td__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__th__ = __webpack_require__(49);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BTable */\n/* unused harmony reexport BTableLite */\n/* unused harmony reexport BTableSimple */\n/* unused harmony reexport BTbody */\n/* unused harmony reexport BThead */\n/* unused harmony reexport BTfoot */\n/* unused harmony reexport BTr */\n/* unused harmony reexport BTd */\n/* unused harmony reexport BTh */\n\n\n\n\n\n\n\n\n\n\nvar TableLitePlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_9__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BTableLite: __WEBPACK_IMPORTED_MODULE_1__table_lite__[\"a\" /* BTableLite */]\n }\n});\nvar TableSimplePlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_9__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BTableSimple: __WEBPACK_IMPORTED_MODULE_2__table_simple__[\"a\" /* BTableSimple */],\n BTbody: __WEBPACK_IMPORTED_MODULE_3__tbody__[\"a\" /* BTbody */],\n BThead: __WEBPACK_IMPORTED_MODULE_4__thead__[\"a\" /* BThead */],\n BTfoot: __WEBPACK_IMPORTED_MODULE_5__tfoot__[\"a\" /* BTfoot */],\n BTr: __WEBPACK_IMPORTED_MODULE_6__tr__[\"a\" /* BTr */],\n BTd: __WEBPACK_IMPORTED_MODULE_7__td__[\"a\" /* BTd */],\n BTh: __WEBPACK_IMPORTED_MODULE_8__th__[\"a\" /* BTh */]\n }\n});\nvar TablePlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_9__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BTable: __WEBPACK_IMPORTED_MODULE_0__table__[\"a\" /* BTable */]\n },\n plugins: {\n TableLitePlugin: TableLitePlugin,\n TableSimplePlugin: TableSimplePlugin\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9pbmRleC5qcz9iOGUzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ1M7QUFDSTtBQUNiO0FBQ0E7QUFDQTtBQUNOO0FBQ0E7QUFDQTtBQUN5QjtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGdCQUFnQiwrREFBVTtBQUMxQjtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGtCQUFrQixtRUFBWTtBQUM5QixZQUFZLHNEQUFNO0FBQ2xCLFlBQVksc0RBQU07QUFDbEIsWUFBWSxzREFBTTtBQUNsQixTQUFTLGdEQUFHO0FBQ1osU0FBUyxnREFBRztBQUNaLFNBQVMsZ0RBQUc7QUFDWjtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLFlBQVksc0RBQU07QUFDbEIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIxOTguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCVGFibGUgfSBmcm9tICcuL3RhYmxlJztcbmltcG9ydCB7IEJUYWJsZUxpdGUgfSBmcm9tICcuL3RhYmxlLWxpdGUnO1xuaW1wb3J0IHsgQlRhYmxlU2ltcGxlIH0gZnJvbSAnLi90YWJsZS1zaW1wbGUnO1xuaW1wb3J0IHsgQlRib2R5IH0gZnJvbSAnLi90Ym9keSc7XG5pbXBvcnQgeyBCVGhlYWQgfSBmcm9tICcuL3RoZWFkJztcbmltcG9ydCB7IEJUZm9vdCB9IGZyb20gJy4vdGZvb3QnO1xuaW1wb3J0IHsgQlRyIH0gZnJvbSAnLi90cic7XG5pbXBvcnQgeyBCVGQgfSBmcm9tICcuL3RkJztcbmltcG9ydCB7IEJUaCB9IGZyb20gJy4vdGgnO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIFRhYmxlTGl0ZVBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJUYWJsZUxpdGU6IEJUYWJsZUxpdGVcbiAgfVxufSk7XG52YXIgVGFibGVTaW1wbGVQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGNvbXBvbmVudHM6IHtcbiAgICBCVGFibGVTaW1wbGU6IEJUYWJsZVNpbXBsZSxcbiAgICBCVGJvZHk6IEJUYm9keSxcbiAgICBCVGhlYWQ6IEJUaGVhZCxcbiAgICBCVGZvb3Q6IEJUZm9vdCxcbiAgICBCVHI6IEJUcixcbiAgICBCVGQ6IEJUZCxcbiAgICBCVGg6IEJUaFxuICB9XG59KTtcbnZhciBUYWJsZVBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJUYWJsZTogQlRhYmxlXG4gIH0sXG4gIHBsdWdpbnM6IHtcbiAgICBUYWJsZUxpdGVQbHVnaW46IFRhYmxlTGl0ZVBsdWdpbixcbiAgICBUYWJsZVNpbXBsZVBsdWdpbjogVGFibGVTaW1wbGVQbHVnaW5cbiAgfVxufSk7XG5leHBvcnQgeyAvLyBQbHVnaW5zXG5UYWJsZVBsdWdpbiwgVGFibGVMaXRlUGx1Z2luLCBUYWJsZVNpbXBsZVBsdWdpbiAvLyBUYWJsZSBjb21wb25lbnRzXG4sIEJUYWJsZSwgQlRhYmxlTGl0ZSwgQlRhYmxlU2ltcGxlIC8vIEhlbHBlciBjb21wb25lbnRzXG4sIEJUYm9keSwgQlRoZWFkLCBCVGZvb3QsIEJUciwgQlRkLCBCVGggfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL3RhYmxlL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxOThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///198\n"); /***/ }), /* 199 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(86);\n\n\n\n // Return a copy of a row after all reserved fields have been filtered out\n\nvar sanitizeRow = function sanitizeRow(row, ignoreFields, includeFields) {\n var fieldsObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils_object__[\"j\" /* keys */])(row).reduce(function (obj, key) {\n // Ignore special fields that start with `_`\n // Ignore fields in the `ignoreFields` array\n // Include only fields in the `includeFields` array\n if (!__WEBPACK_IMPORTED_MODULE_3__constants__[\"b\" /* IGNORED_FIELD_KEYS */][key] && !(ignoreFields && ignoreFields.length > 0 && Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"a\" /* arrayIncludes */])(ignoreFields, key)) && !(includeFields && includeFields.length > 0 && !Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"a\" /* arrayIncludes */])(includeFields, key))) {\n var f = fieldsObj[key] || {};\n var val = row[key]; // `f.filterByFormatted` will either be a function or boolean\n // `f.formater` will have already been noramlized into a function ref\n\n var filterByFormatted = f.filterByFormatted;\n var formatter = Object(__WEBPACK_IMPORTED_MODULE_2__utils_inspect__[\"f\" /* isFunction */])(filterByFormatted) ? filterByFormatted : filterByFormatted ? f.formatter : null;\n obj[key] = Object(__WEBPACK_IMPORTED_MODULE_2__utils_inspect__[\"f\" /* isFunction */])(formatter) ? formatter(val, key, row) : val;\n }\n\n return obj;\n }, {});\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (sanitizeRow);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL3Nhbml0aXplLXJvdy5qcz9mMjEyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZDO0FBQ1E7QUFDRDtBQUNIOztBQUVqRDtBQUNBO0FBQ0EsU0FBUyxtRUFBSTtBQUNiO0FBQ0E7QUFDQTtBQUNBLFNBQVMsc0VBQWtCLHNEQUFzRCwyRUFBYSx3RUFBd0UsMkVBQWE7QUFDbkw7QUFDQSx5QkFBeUI7QUFDekI7O0FBRUE7QUFDQSxzQkFBc0IsMEVBQVU7QUFDaEMsaUJBQWlCLDBFQUFVO0FBQzNCOztBQUVBO0FBQ0EsR0FBRyxJQUFJO0FBQ1A7O0FBRWUsb0VBQVciLCJmaWxlIjoiMTk5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsga2V5cyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL29iamVjdCc7XG5pbXBvcnQgeyBhcnJheUluY2x1ZGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYXJyYXknO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2luc3BlY3QnO1xuaW1wb3J0IHsgSUdOT1JFRF9GSUVMRF9LRVlTIH0gZnJvbSAnLi9jb25zdGFudHMnOyAvLyBSZXR1cm4gYSBjb3B5IG9mIGEgcm93IGFmdGVyIGFsbCByZXNlcnZlZCBmaWVsZHMgaGF2ZSBiZWVuIGZpbHRlcmVkIG91dFxuXG52YXIgc2FuaXRpemVSb3cgPSBmdW5jdGlvbiBzYW5pdGl6ZVJvdyhyb3csIGlnbm9yZUZpZWxkcywgaW5jbHVkZUZpZWxkcykge1xuICB2YXIgZmllbGRzT2JqID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiB7fTtcbiAgcmV0dXJuIGtleXMocm93KS5yZWR1Y2UoZnVuY3Rpb24gKG9iaiwga2V5KSB7XG4gICAgLy8gSWdub3JlIHNwZWNpYWwgZmllbGRzIHRoYXQgc3RhcnQgd2l0aCBgX2BcbiAgICAvLyBJZ25vcmUgZmllbGRzIGluIHRoZSBgaWdub3JlRmllbGRzYCBhcnJheVxuICAgIC8vIEluY2x1ZGUgb25seSBmaWVsZHMgaW4gdGhlIGBpbmNsdWRlRmllbGRzYCBhcnJheVxuICAgIGlmICghSUdOT1JFRF9GSUVMRF9LRVlTW2tleV0gJiYgIShpZ25vcmVGaWVsZHMgJiYgaWdub3JlRmllbGRzLmxlbmd0aCA+IDAgJiYgYXJyYXlJbmNsdWRlcyhpZ25vcmVGaWVsZHMsIGtleSkpICYmICEoaW5jbHVkZUZpZWxkcyAmJiBpbmNsdWRlRmllbGRzLmxlbmd0aCA+IDAgJiYgIWFycmF5SW5jbHVkZXMoaW5jbHVkZUZpZWxkcywga2V5KSkpIHtcbiAgICAgIHZhciBmID0gZmllbGRzT2JqW2tleV0gfHwge307XG4gICAgICB2YXIgdmFsID0gcm93W2tleV07IC8vIGBmLmZpbHRlckJ5Rm9ybWF0dGVkYCB3aWxsIGVpdGhlciBiZSBhIGZ1bmN0aW9uIG9yIGJvb2xlYW5cbiAgICAgIC8vIGBmLmZvcm1hdGVyYCB3aWxsIGhhdmUgYWxyZWFkeSBiZWVuIG5vcmFtbGl6ZWQgaW50byBhIGZ1bmN0aW9uIHJlZlxuXG4gICAgICB2YXIgZmlsdGVyQnlGb3JtYXR0ZWQgPSBmLmZpbHRlckJ5Rm9ybWF0dGVkO1xuICAgICAgdmFyIGZvcm1hdHRlciA9IGlzRnVuY3Rpb24oZmlsdGVyQnlGb3JtYXR0ZWQpID8gZmlsdGVyQnlGb3JtYXR0ZWQgOiBmaWx0ZXJCeUZvcm1hdHRlZCA/IGYuZm9ybWF0dGVyIDogbnVsbDtcbiAgICAgIG9ialtrZXldID0gaXNGdW5jdGlvbihmb3JtYXR0ZXIpID8gZm9ybWF0dGVyKHZhbCwga2V5LCByb3cpIDogdmFsO1xuICAgIH1cblxuICAgIHJldHVybiBvYmo7XG4gIH0sIHt9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHNhbml0aXplUm93O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdGFibGUvaGVscGVycy9zYW5pdGl6ZS1yb3cuanNcbi8vIG1vZHVsZSBpZCA9IDE5OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///199\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BTable; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__helpers_mixin_items__ = __webpack_require__(200);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__helpers_mixin_stacked__ = __webpack_require__(87);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__helpers_mixin_filtering__ = __webpack_require__(261);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__helpers_mixin_sorting__ = __webpack_require__(263);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__helpers_mixin_pagination__ = __webpack_require__(265);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__helpers_mixin_caption__ = __webpack_require__(204);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__helpers_mixin_colgroup__ = __webpack_require__(205);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__helpers_mixin_thead__ = __webpack_require__(206);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__helpers_mixin_tfoot__ = __webpack_require__(209);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__helpers_mixin_tbody__ = __webpack_require__(210);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__helpers_mixin_empty__ = __webpack_require__(267);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__helpers_mixin_top_row__ = __webpack_require__(268);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__helpers_mixin_bottom_row__ = __webpack_require__(269);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__helpers_mixin_busy__ = __webpack_require__(270);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__helpers_mixin_selectable__ = __webpack_require__(271);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__helpers_mixin_provider__ = __webpack_require__(272);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__helpers_mixin_table_renderer__ = __webpack_require__(90);\n // Mixins\n\n\n // Table helper Mixins\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // Main table renderer mixin\n\n // b-table component definition\n// @vue/component\n\nvar BTable =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BTable',\n // Order of mixins is important!\n // They are merged from first to last, followed by this component.\n mixins: [// Required Mixins\n __WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__helpers_mixin_items__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_19__helpers_mixin_table_renderer__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__helpers_mixin_stacked__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_10__helpers_mixin_thead__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_11__helpers_mixin_tfoot__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_12__helpers_mixin_tbody__[\"a\" /* default */], // Features Mixins\n __WEBPACK_IMPORTED_MODULE_4__helpers_mixin_stacked__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__helpers_mixin_filtering__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__helpers_mixin_sorting__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__helpers_mixin_pagination__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_8__helpers_mixin_caption__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_9__helpers_mixin_colgroup__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_17__helpers_mixin_selectable__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_13__helpers_mixin_empty__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_14__helpers_mixin_top_row__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_15__helpers_mixin_bottom_row__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_16__helpers_mixin_busy__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_18__helpers_mixin_provider__[\"a\" /* default */]] // render function provided by table-renderer mixin\n\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS90YWJsZS5qcz82ZWE0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQzs7QUFFSTtBQUN1Qjs7QUFFZDtBQUNJO0FBQ0k7QUFDSjtBQUNNO0FBQ047QUFDRTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0c7QUFDTTtBQUNYO0FBQ1k7QUFDSjs7QUFFVztBQUNoRTs7QUFFTztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsMkRBQU8sRUFBRSx1RUFBa0IsRUFBRSxxRUFBVSxFQUFFLCtFQUFrQixFQUFFLHVFQUFZLEVBQUUsc0VBQVUsRUFBRSxzRUFBVSxFQUFFLHNFQUFVO0FBQy9HLEVBQUUsdUVBQVksRUFBRSx5RUFBYyxFQUFFLHVFQUFZLEVBQUUsMEVBQWUsRUFBRSx1RUFBWSxFQUFFLHdFQUFhLEVBQUUsMkVBQWUsRUFBRSxzRUFBVSxFQUFFLHdFQUFXLEVBQUUsMkVBQWMsRUFBRSxxRUFBUyxFQUFFLHlFQUFhOztBQUU5SyxDQUFDIiwiZmlsZSI6IjE5OS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJzsgLy8gTWl4aW5zXG5cbmltcG9ydCBpZE1peGluIGZyb20gJy4uLy4uL21peGlucy9pZCc7XG5pbXBvcnQgbm9ybWFsaXplU2xvdE1peGluIGZyb20gJy4uLy4uL21peGlucy9ub3JtYWxpemUtc2xvdCc7IC8vIFRhYmxlIGhlbHBlciBNaXhpbnNcblxuaW1wb3J0IGl0ZW1zTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLWl0ZW1zJztcbmltcG9ydCBzdGFja2VkTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLXN0YWNrZWQnO1xuaW1wb3J0IGZpbHRlcmluZ01peGluIGZyb20gJy4vaGVscGVycy9taXhpbi1maWx0ZXJpbmcnO1xuaW1wb3J0IHNvcnRpbmdNaXhpbiBmcm9tICcuL2hlbHBlcnMvbWl4aW4tc29ydGluZyc7XG5pbXBvcnQgcGFnaW5hdGlvbk1peGluIGZyb20gJy4vaGVscGVycy9taXhpbi1wYWdpbmF0aW9uJztcbmltcG9ydCBjYXB0aW9uTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLWNhcHRpb24nO1xuaW1wb3J0IGNvbGdyb3VwTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLWNvbGdyb3VwJztcbmltcG9ydCB0aGVhZE1peGluIGZyb20gJy4vaGVscGVycy9taXhpbi10aGVhZCc7XG5pbXBvcnQgdGZvb3RNaXhpbiBmcm9tICcuL2hlbHBlcnMvbWl4aW4tdGZvb3QnO1xuaW1wb3J0IHRib2R5TWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLXRib2R5JztcbmltcG9ydCBlbXB0eU1peGluIGZyb20gJy4vaGVscGVycy9taXhpbi1lbXB0eSc7XG5pbXBvcnQgdG9wUm93TWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLXRvcC1yb3cnO1xuaW1wb3J0IGJvdHRvbVJvd01peGluIGZyb20gJy4vaGVscGVycy9taXhpbi1ib3R0b20tcm93JztcbmltcG9ydCBidXN5TWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLWJ1c3knO1xuaW1wb3J0IHNlbGVjdGFibGVNaXhpbiBmcm9tICcuL2hlbHBlcnMvbWl4aW4tc2VsZWN0YWJsZSc7XG5pbXBvcnQgcHJvdmlkZXJNaXhpbiBmcm9tICcuL2hlbHBlcnMvbWl4aW4tcHJvdmlkZXInOyAvLyBNYWluIHRhYmxlIHJlbmRlcmVyIG1peGluXG5cbmltcG9ydCB0YWJsZVJlbmRlcmVyTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLXRhYmxlLXJlbmRlcmVyJzsgLy8gYi10YWJsZSBjb21wb25lbnQgZGVmaW5pdGlvblxuLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCVGFibGUgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCVGFibGUnLFxuICAvLyBPcmRlciBvZiBtaXhpbnMgaXMgaW1wb3J0YW50IVxuICAvLyBUaGV5IGFyZSBtZXJnZWQgZnJvbSBmaXJzdCB0byBsYXN0LCBmb2xsb3dlZCBieSB0aGlzIGNvbXBvbmVudC5cbiAgbWl4aW5zOiBbLy8gUmVxdWlyZWQgTWl4aW5zXG4gIGlkTWl4aW4sIG5vcm1hbGl6ZVNsb3RNaXhpbiwgaXRlbXNNaXhpbiwgdGFibGVSZW5kZXJlck1peGluLCBzdGFja2VkTWl4aW4sIHRoZWFkTWl4aW4sIHRmb290TWl4aW4sIHRib2R5TWl4aW4sIC8vIEZlYXR1cmVzIE1peGluc1xuICBzdGFja2VkTWl4aW4sIGZpbHRlcmluZ01peGluLCBzb3J0aW5nTWl4aW4sIHBhZ2luYXRpb25NaXhpbiwgY2FwdGlvbk1peGluLCBjb2xncm91cE1peGluLCBzZWxlY3RhYmxlTWl4aW4sIGVtcHR5TWl4aW4sIHRvcFJvd01peGluLCBib3R0b21Sb3dNaXhpbiwgYnVzeU1peGluLCBwcm92aWRlck1peGluXSAvLyByZW5kZXIgZnVuY3Rpb24gcHJvdmlkZWQgYnkgdGFibGUtcmVuZGVyZXIgbWl4aW5cblxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS90YWJsZS5qc1xuLy8gbW9kdWxlIGlkID0gMTk5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///199\n"); /***/ }), /* 200 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_inspect__ = __webpack_require__(1);\n\n // Recursively stringifies the values of an object, space separated, in an\n// SSR safe deterministic way (keys are sorted before stringification)\n//\n// ex:\n// { b: 3, c: { z: 'zzz', d: null, e: 2 }, d: [10, 12, 11], a: 'one' }\n// becomes\n// 'one 3 2 zzz 10 12 11'\n//\n// Primitives (numbers/strings) are returned as-is\n// Null and undefined values are filtered out\n// Dates are converted to their native string format\n\nvar stringifyObjectValues = function stringifyObjectValues(val) {\n if (Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"o\" /* isUndefinedOrNull */])(val)) {\n /* istanbul ignore next */\n return '';\n } // Arrays are also object, and keys just returns the array indexes\n // Date objects we convert to strings\n\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"i\" /* isObject */])(val) && !Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"c\" /* isDate */])(val)) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils_object__[\"j\" /* keys */])(val).sort() // Sort to prevent SSR issues on pre-rendered sorted tables\n .filter(function (v) {\n return !Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"o\" /* isUndefinedOrNull */])(v);\n }) // Ignore undefined/null values\n .map(function (k) {\n return stringifyObjectValues(val[k]);\n }).join(' ');\n }\n\n return String(val);\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (stringifyObjectValues);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL3N0cmluZ2lmeS1vYmplY3QtdmFsdWVzLmpzP2U5YWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUE2QztBQUNnQztBQUM3RTtBQUNBO0FBQ0E7QUFDQSxRQUFRLFdBQVcsMEJBQTBCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU0saUZBQWlCO0FBQ3ZCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7OztBQUdBLE1BQU0sd0VBQVEsVUFBVSxzRUFBTTtBQUM5QixXQUFXLG1FQUFJO0FBQ2Y7QUFDQSxjQUFjLGlGQUFpQjtBQUMvQixLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVlLDhFQUFxQiIsImZpbGUiOiIyMDAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBrZXlzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvb2JqZWN0JztcbmltcG9ydCB7IGlzRGF0ZSwgaXNPYmplY3QsIGlzVW5kZWZpbmVkT3JOdWxsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaW5zcGVjdCc7IC8vIFJlY3Vyc2l2ZWx5IHN0cmluZ2lmaWVzIHRoZSB2YWx1ZXMgb2YgYW4gb2JqZWN0LCBzcGFjZSBzZXBhcmF0ZWQsIGluIGFuXG4vLyBTU1Igc2FmZSBkZXRlcm1pbmlzdGljIHdheSAoa2V5cyBhcmUgc29ydGVkIGJlZm9yZSBzdHJpbmdpZmljYXRpb24pXG4vL1xuLy8gICBleDpcbi8vICAgICB7IGI6IDMsIGM6IHsgejogJ3p6eicsIGQ6IG51bGwsIGU6IDIgfSwgZDogWzEwLCAxMiwgMTFdLCBhOiAnb25lJyB9XG4vLyAgIGJlY29tZXNcbi8vICAgICAnb25lIDMgMiB6enogMTAgMTIgMTEnXG4vL1xuLy8gUHJpbWl0aXZlcyAobnVtYmVycy9zdHJpbmdzKSBhcmUgcmV0dXJuZWQgYXMtaXNcbi8vIE51bGwgYW5kIHVuZGVmaW5lZCB2YWx1ZXMgYXJlIGZpbHRlcmVkIG91dFxuLy8gRGF0ZXMgYXJlIGNvbnZlcnRlZCB0byB0aGVpciBuYXRpdmUgc3RyaW5nIGZvcm1hdFxuXG52YXIgc3RyaW5naWZ5T2JqZWN0VmFsdWVzID0gZnVuY3Rpb24gc3RyaW5naWZ5T2JqZWN0VmFsdWVzKHZhbCkge1xuICBpZiAoaXNVbmRlZmluZWRPck51bGwodmFsKSkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuICcnO1xuICB9IC8vIEFycmF5cyBhcmUgYWxzbyBvYmplY3QsIGFuZCBrZXlzIGp1c3QgcmV0dXJucyB0aGUgYXJyYXkgaW5kZXhlc1xuICAvLyBEYXRlIG9iamVjdHMgd2UgY29udmVydCB0byBzdHJpbmdzXG5cblxuICBpZiAoaXNPYmplY3QodmFsKSAmJiAhaXNEYXRlKHZhbCkpIHtcbiAgICByZXR1cm4ga2V5cyh2YWwpLnNvcnQoKSAvLyBTb3J0IHRvIHByZXZlbnQgU1NSIGlzc3VlcyBvbiBwcmUtcmVuZGVyZWQgc29ydGVkIHRhYmxlc1xuICAgIC5maWx0ZXIoZnVuY3Rpb24gKHYpIHtcbiAgICAgIHJldHVybiAhaXNVbmRlZmluZWRPck51bGwodik7XG4gICAgfSkgLy8gSWdub3JlIHVuZGVmaW5lZC9udWxsIHZhbHVlc1xuICAgIC5tYXAoZnVuY3Rpb24gKGspIHtcbiAgICAgIHJldHVybiBzdHJpbmdpZnlPYmplY3RWYWx1ZXModmFsW2tdKTtcbiAgICB9KS5qb2luKCcgJyk7XG4gIH1cblxuICByZXR1cm4gU3RyaW5nKHZhbCk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBzdHJpbmdpZnlPYmplY3RWYWx1ZXM7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL3N0cmluZ2lmeS1vYmplY3QtdmFsdWVzLmpzXG4vLyBtb2R1bGUgaWQgPSAyMDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///200\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_loose_equal__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__normalize_fields__ = __webpack_require__(260);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n props: {\n items: {\n // Provider mixin adds in `Function` type\n type: Array,\n default: function _default()\n /* istanbul ignore next */\n {\n return [];\n }\n },\n fields: {\n type: Array,\n default: null\n },\n primaryKey: {\n // Primary key for record\n // If provided the value in each row must be unique!\n type: String,\n default: null\n },\n value: {\n // `v-model` for retrieving the current displayed rows\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n data: function data() {\n return {\n // Our local copy of the items\n // Must be an array\n localItems: Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"a\" /* isArray */])(this.items) ? this.items.slice() : []\n };\n },\n computed: {\n computedFields: function computedFields() {\n // We normalize fields into an array of objects\n // `[ { key:..., label:..., ...}, {...}, ..., {..}]`\n return Object(__WEBPACK_IMPORTED_MODULE_2__normalize_fields__[\"a\" /* default */])(this.fields, this.localItems);\n },\n computedFieldsObj: function computedFieldsObj() {\n // Fields as a simple lookup hash object\n // Mainly for formatter lookup and use in `scopedSlots` for convenience\n // If the field has a formatter, it normalizes formatter to a\n // function ref or `undefined` if no formatter\n var parent = this.$parent;\n return this.computedFields.reduce(function (obj, f) {\n // We use object spread here so we don't mutate the original field object\n obj[f.key] = _objectSpread({}, f);\n\n if (f.formatter) {\n // Normalize formatter to a function ref or `undefined`\n var formatter = f.formatter;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"m\" /* isString */])(formatter) && Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"f\" /* isFunction */])(parent[formatter])) {\n formatter = parent[formatter];\n } else if (!Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"f\" /* isFunction */])(formatter)) {\n /* istanbul ignore next */\n formatter = undefined;\n } // Return formatter function or `undefined` if none\n\n\n obj[f.key].formatter = formatter;\n }\n\n return obj;\n }, {});\n },\n computedItems: function computedItems() {\n // Fallback if various mixins not provided\n return (this.paginatedItems || this.sortedItems || this.filteredItems || this.localItems || []).slice();\n },\n context: function context() {\n // Current state of sorting, filtering and pagination props/values\n return {\n filter: this.localFilter,\n sortBy: this.localSortBy,\n sortDesc: this.localSortDesc,\n perPage: parseInt(this.perPage, 10) || 0,\n currentPage: parseInt(this.currentPage, 10) || 1,\n apiUrl: this.apiUrl\n };\n }\n },\n watch: {\n items: function items(newItems) {\n /* istanbul ignore else */\n if (Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"a\" /* isArray */])(newItems)) {\n // Set `localItems`/`filteredItems` to a copy of the provided array\n this.localItems = newItems.slice();\n } else if (Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"n\" /* isUndefined */])(newItems) || Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"g\" /* isNull */])(newItems)) {\n /* istanbul ignore next */\n this.localItems = [];\n }\n },\n // Watch for changes on `computedItems` and update the `v-model`\n computedItems: function computedItems(newVal) {\n this.$emit('input', newVal);\n },\n // Watch for context changes\n context: function context(newVal, oldVal) {\n // Emit context information for external paging/filtering/sorting handling\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__utils_loose_equal__[\"a\" /* default */])(newVal, oldVal)) {\n this.$emit('context-changed', newVal);\n }\n }\n },\n mounted: function mounted() {\n // Initially update the `v-model` of displayed items\n this.$emit('input', this.computedItems);\n },\n methods: {\n // Method to get the formatter method for a given field key\n getFieldFormatter: function getFieldFormatter(key) {\n var field = this.computedFieldsObj[key]; // `this.computedFieldsObj` has pre-normalized the formatter to a\n // function ref if present, otherwise `undefined`\n\n return field ? field.formatter : undefined;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL21peGluLWl0ZW1zLmpzP2I2ZDQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUUzSjtBQUN3QztBQUMzQztBQUNsQztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQix1RUFBTztBQUN6QjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxhQUFhLHlCQUF5QixHQUFHLElBQUksUUFBUSxHQUFHO0FBQ3hELGFBQWEsMEVBQWU7QUFDNUIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7O0FBRXJDO0FBQ0E7QUFDQTs7QUFFQSxjQUFjLHdFQUFRLGVBQWUsMEVBQVU7QUFDL0M7QUFDQSxXQUFXLFdBQVcsMEVBQVU7QUFDaEM7QUFDQTtBQUNBLFdBQVc7OztBQUdYO0FBQ0E7O0FBRUE7QUFDQSxPQUFPLElBQUk7QUFDWCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsVUFBVSx1RUFBTztBQUNqQjtBQUNBO0FBQ0EsT0FBTyxVQUFVLDJFQUFXLGNBQWMsc0VBQU07QUFDaEQ7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxXQUFXLDJFQUFVO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsOENBQThDO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMjAwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IGxvb3NlRXF1YWwgZnJvbSAnLi4vLi4vLi4vdXRpbHMvbG9vc2UtZXF1YWwnO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNGdW5jdGlvbiwgaXNOdWxsLCBpc1N0cmluZywgaXNVbmRlZmluZWQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9pbnNwZWN0JztcbmltcG9ydCBub3JtYWxpemVGaWVsZHMgZnJvbSAnLi9ub3JtYWxpemUtZmllbGRzJztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgcHJvcHM6IHtcbiAgICBpdGVtczoge1xuICAgICAgLy8gUHJvdmlkZXIgbWl4aW4gYWRkcyBpbiBgRnVuY3Rpb25gIHR5cGVcbiAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgIH0sXG4gICAgZmllbGRzOiB7XG4gICAgICB0eXBlOiBBcnJheSxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIHByaW1hcnlLZXk6IHtcbiAgICAgIC8vIFByaW1hcnkga2V5IGZvciByZWNvcmRcbiAgICAgIC8vIElmIHByb3ZpZGVkIHRoZSB2YWx1ZSBpbiBlYWNoIHJvdyBtdXN0IGJlIHVuaXF1ZSFcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIHZhbHVlOiB7XG4gICAgICAvLyBgdi1tb2RlbGAgZm9yIHJldHJpZXZpbmcgdGhlIGN1cnJlbnQgZGlzcGxheWVkIHJvd3NcbiAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIE91ciBsb2NhbCBjb3B5IG9mIHRoZSBpdGVtc1xuICAgICAgLy8gTXVzdCBiZSBhbiBhcnJheVxuICAgICAgbG9jYWxJdGVtczogaXNBcnJheSh0aGlzLml0ZW1zKSA/IHRoaXMuaXRlbXMuc2xpY2UoKSA6IFtdXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBjb21wdXRlZEZpZWxkczogZnVuY3Rpb24gY29tcHV0ZWRGaWVsZHMoKSB7XG4gICAgICAvLyBXZSBub3JtYWxpemUgZmllbGRzIGludG8gYW4gYXJyYXkgb2Ygb2JqZWN0c1xuICAgICAgLy8gYFsgeyBrZXk6Li4uLCBsYWJlbDouLi4sIC4uLn0sIHsuLi59LCAuLi4sIHsuLn1dYFxuICAgICAgcmV0dXJuIG5vcm1hbGl6ZUZpZWxkcyh0aGlzLmZpZWxkcywgdGhpcy5sb2NhbEl0ZW1zKTtcbiAgICB9LFxuICAgIGNvbXB1dGVkRmllbGRzT2JqOiBmdW5jdGlvbiBjb21wdXRlZEZpZWxkc09iaigpIHtcbiAgICAgIC8vIEZpZWxkcyBhcyBhIHNpbXBsZSBsb29rdXAgaGFzaCBvYmplY3RcbiAgICAgIC8vIE1haW5seSBmb3IgZm9ybWF0dGVyIGxvb2t1cCBhbmQgdXNlIGluIGBzY29wZWRTbG90c2AgZm9yIGNvbnZlbmllbmNlXG4gICAgICAvLyBJZiB0aGUgZmllbGQgaGFzIGEgZm9ybWF0dGVyLCBpdCBub3JtYWxpemVzIGZvcm1hdHRlciB0byBhXG4gICAgICAvLyBmdW5jdGlvbiByZWYgb3IgYHVuZGVmaW5lZGAgaWYgbm8gZm9ybWF0dGVyXG4gICAgICB2YXIgcGFyZW50ID0gdGhpcy4kcGFyZW50O1xuICAgICAgcmV0dXJuIHRoaXMuY29tcHV0ZWRGaWVsZHMucmVkdWNlKGZ1bmN0aW9uIChvYmosIGYpIHtcbiAgICAgICAgLy8gV2UgdXNlIG9iamVjdCBzcHJlYWQgaGVyZSBzbyB3ZSBkb24ndCBtdXRhdGUgdGhlIG9yaWdpbmFsIGZpZWxkIG9iamVjdFxuICAgICAgICBvYmpbZi5rZXldID0gX29iamVjdFNwcmVhZCh7fSwgZik7XG5cbiAgICAgICAgaWYgKGYuZm9ybWF0dGVyKSB7XG4gICAgICAgICAgLy8gTm9ybWFsaXplIGZvcm1hdHRlciB0byBhIGZ1bmN0aW9uIHJlZiBvciBgdW5kZWZpbmVkYFxuICAgICAgICAgIHZhciBmb3JtYXR0ZXIgPSBmLmZvcm1hdHRlcjtcblxuICAgICAgICAgIGlmIChpc1N0cmluZyhmb3JtYXR0ZXIpICYmIGlzRnVuY3Rpb24ocGFyZW50W2Zvcm1hdHRlcl0pKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZXIgPSBwYXJlbnRbZm9ybWF0dGVyXTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFpc0Z1bmN0aW9uKGZvcm1hdHRlcikpIHtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgICBmb3JtYXR0ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfSAvLyBSZXR1cm4gZm9ybWF0dGVyIGZ1bmN0aW9uIG9yIGB1bmRlZmluZWRgIGlmIG5vbmVcblxuXG4gICAgICAgICAgb2JqW2Yua2V5XS5mb3JtYXR0ZXIgPSBmb3JtYXR0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgfSwge30pO1xuICAgIH0sXG4gICAgY29tcHV0ZWRJdGVtczogZnVuY3Rpb24gY29tcHV0ZWRJdGVtcygpIHtcbiAgICAgIC8vIEZhbGxiYWNrIGlmIHZhcmlvdXMgbWl4aW5zIG5vdCBwcm92aWRlZFxuICAgICAgcmV0dXJuICh0aGlzLnBhZ2luYXRlZEl0ZW1zIHx8IHRoaXMuc29ydGVkSXRlbXMgfHwgdGhpcy5maWx0ZXJlZEl0ZW1zIHx8IHRoaXMubG9jYWxJdGVtcyB8fCBbXSkuc2xpY2UoKTtcbiAgICB9LFxuICAgIGNvbnRleHQ6IGZ1bmN0aW9uIGNvbnRleHQoKSB7XG4gICAgICAvLyBDdXJyZW50IHN0YXRlIG9mIHNvcnRpbmcsIGZpbHRlcmluZyBhbmQgcGFnaW5hdGlvbiBwcm9wcy92YWx1ZXNcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbHRlcjogdGhpcy5sb2NhbEZpbHRlcixcbiAgICAgICAgc29ydEJ5OiB0aGlzLmxvY2FsU29ydEJ5LFxuICAgICAgICBzb3J0RGVzYzogdGhpcy5sb2NhbFNvcnREZXNjLFxuICAgICAgICBwZXJQYWdlOiBwYXJzZUludCh0aGlzLnBlclBhZ2UsIDEwKSB8fCAwLFxuICAgICAgICBjdXJyZW50UGFnZTogcGFyc2VJbnQodGhpcy5jdXJyZW50UGFnZSwgMTApIHx8IDEsXG4gICAgICAgIGFwaVVybDogdGhpcy5hcGlVcmxcbiAgICAgIH07XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIGl0ZW1zOiBmdW5jdGlvbiBpdGVtcyhuZXdJdGVtcykge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChpc0FycmF5KG5ld0l0ZW1zKSkge1xuICAgICAgICAvLyBTZXQgYGxvY2FsSXRlbXNgL2BmaWx0ZXJlZEl0ZW1zYCB0byBhIGNvcHkgb2YgdGhlIHByb3ZpZGVkIGFycmF5XG4gICAgICAgIHRoaXMubG9jYWxJdGVtcyA9IG5ld0l0ZW1zLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKGlzVW5kZWZpbmVkKG5ld0l0ZW1zKSB8fCBpc051bGwobmV3SXRlbXMpKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHRoaXMubG9jYWxJdGVtcyA9IFtdO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8gV2F0Y2ggZm9yIGNoYW5nZXMgb24gYGNvbXB1dGVkSXRlbXNgIGFuZCB1cGRhdGUgdGhlIGB2LW1vZGVsYFxuICAgIGNvbXB1dGVkSXRlbXM6IGZ1bmN0aW9uIGNvbXB1dGVkSXRlbXMobmV3VmFsKSB7XG4gICAgICB0aGlzLiRlbWl0KCdpbnB1dCcsIG5ld1ZhbCk7XG4gICAgfSxcbiAgICAvLyBXYXRjaCBmb3IgY29udGV4dCBjaGFuZ2VzXG4gICAgY29udGV4dDogZnVuY3Rpb24gY29udGV4dChuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgLy8gRW1pdCBjb250ZXh0IGluZm9ybWF0aW9uIGZvciBleHRlcm5hbCBwYWdpbmcvZmlsdGVyaW5nL3NvcnRpbmcgaGFuZGxpbmdcbiAgICAgIGlmICghbG9vc2VFcXVhbChuZXdWYWwsIG9sZFZhbCkpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnY29udGV4dC1jaGFuZ2VkJywgbmV3VmFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgLy8gSW5pdGlhbGx5IHVwZGF0ZSB0aGUgYHYtbW9kZWxgIG9mIGRpc3BsYXllZCBpdGVtc1xuICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgdGhpcy5jb21wdXRlZEl0ZW1zKTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIC8vIE1ldGhvZCB0byBnZXQgdGhlIGZvcm1hdHRlciBtZXRob2QgZm9yIGEgZ2l2ZW4gZmllbGQga2V5XG4gICAgZ2V0RmllbGRGb3JtYXR0ZXI6IGZ1bmN0aW9uIGdldEZpZWxkRm9ybWF0dGVyKGtleSkge1xuICAgICAgdmFyIGZpZWxkID0gdGhpcy5jb21wdXRlZEZpZWxkc09ialtrZXldOyAvLyBgdGhpcy5jb21wdXRlZEZpZWxkc09iamAgaGFzIHByZS1ub3JtYWxpemVkIHRoZSBmb3JtYXR0ZXIgdG8gYVxuICAgICAgLy8gZnVuY3Rpb24gcmVmIGlmIHByZXNlbnQsIG90aGVyd2lzZSBgdW5kZWZpbmVkYFxuXG4gICAgICByZXR1cm4gZmllbGQgPyBmaWVsZC5mb3JtYXR0ZXIgOiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdGFibGUvaGVscGVycy9taXhpbi1pdGVtcy5qc1xuLy8gbW9kdWxlIGlkID0gMjAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///200\n"); /***/ }), /* 201 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in <b-table> if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nvar stableSort = function stableSort(array, compareFn) {\n // Using `.bind(compareFn)` on the wrapped anonymous function improves\n // performance by avoiding the function call setup. We don't use an arrow\n // function here as it binds `this` to the `stableSort` context rather than\n // the `compareFn` context, which wouldn't give us the performance increase.\n return array.map(function (a, index) {\n return [index, a];\n }).sort(function (a, b) {\n return this(a[1], b[1]) || a[0] - b[0];\n }.bind(compareFn)).map(function (e) {\n return e[1];\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (stableSort);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvc3RhYmxlLXNvcnQuanM/MGFlZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7O0FBRWUsbUVBQVUiLCJmaWxlIjoiMjAxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvbnNpc3RlbnQgYW5kIHN0YWJsZSBzb3J0IGZ1bmN0aW9uIGFjcm9zcyBKYXZhU2NyaXB0IHBsYXRmb3Jtc1xuICpcbiAqIEluY29uc2lzdGVudCBzb3J0cyBjYW4gY2F1c2UgU1NSIHByb2JsZW1zIGJldHdlZW4gY2xpZW50IGFuZCBzZXJ2ZXJcbiAqIHN1Y2ggYXMgaW4gPGItdGFibGU+IGlmIHNvcnRCeSBpcyBhcHBsaWVkIHRvIHRoZSBkYXRhIG9uIHNlcnZlciBzaWRlIHJlbmRlci5cbiAqIENocm9tZSBhbmQgVjggbmF0aXZlIHNvcnRzIGFyZSBpbmNvbnNpc3RlbnQvdW5zdGFibGVcbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHVzZXMgbmF0aXZlIHNvcnQgd2l0aCBmYWxsYmFjayB0byBpbmRleCBjb21wYXJlIHdoZW4gdGhlIGEgYW5kIGJcbiAqIGNvbXBhcmUgcmV0dXJucyAwXG4gKlxuICogQWxnb3JpdGhtIGJhc2VkIG9uOlxuICogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTQyNzYwOC9mYXN0LXN0YWJsZS1zb3J0aW5nLWFsZ29yaXRobS1pbXBsZW1lbnRhdGlvbi1pbi1qYXZhc2NyaXB0LzQ1NDIyNjQ1IzQ1NDIyNjQ1XG4gKlxuICogQHBhcmFtIHthcnJheX0gYXJyYXkgdG8gc29ydFxuICogQHBhcmFtIHtmdW5jdGlvbn0gc29ydCBjb21wYXJlIGZ1bmN0aW9uXG4gKiBAcmV0dXJuIHthcnJheX1cbiAqL1xudmFyIHN0YWJsZVNvcnQgPSBmdW5jdGlvbiBzdGFibGVTb3J0KGFycmF5LCBjb21wYXJlRm4pIHtcbiAgLy8gVXNpbmcgYC5iaW5kKGNvbXBhcmVGbilgIG9uIHRoZSB3cmFwcGVkIGFub255bW91cyBmdW5jdGlvbiBpbXByb3Zlc1xuICAvLyBwZXJmb3JtYW5jZSBieSBhdm9pZGluZyB0aGUgZnVuY3Rpb24gY2FsbCBzZXR1cC4gV2UgZG9uJ3QgdXNlIGFuIGFycm93XG4gIC8vIGZ1bmN0aW9uIGhlcmUgYXMgaXQgYmluZHMgYHRoaXNgIHRvIHRoZSBgc3RhYmxlU29ydGAgY29udGV4dCByYXRoZXIgdGhhblxuICAvLyB0aGUgYGNvbXBhcmVGbmAgY29udGV4dCwgd2hpY2ggd291bGRuJ3QgZ2l2ZSB1cyB0aGUgcGVyZm9ybWFuY2UgaW5jcmVhc2UuXG4gIHJldHVybiBhcnJheS5tYXAoZnVuY3Rpb24gKGEsIGluZGV4KSB7XG4gICAgcmV0dXJuIFtpbmRleCwgYV07XG4gIH0pLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gdGhpcyhhWzFdLCBiWzFdKSB8fCBhWzBdIC0gYlswXTtcbiAgfS5iaW5kKGNvbXBhcmVGbikpLm1hcChmdW5jdGlvbiAoZSkge1xuICAgIHJldHVybiBlWzFdO1xuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHN0YWJsZVNvcnQ7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvc3RhYmxlLXNvcnQuanNcbi8vIG1vZHVsZSBpZCA9IDIwMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///201\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__constants__ = __webpack_require__(86);\n\n\n\n // Return a copy of a row after all reserved fields have been filtered out\n\nvar sanitizeRow = function sanitizeRow(row, ignoreFields, includeFields) {\n var fieldsObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils_object__[\"j\" /* keys */])(row).reduce(function (obj, key) {\n // Ignore special fields that start with `_`\n // Ignore fields in the `ignoreFields` array\n // Include only fields in the `includeFields` array\n if (!__WEBPACK_IMPORTED_MODULE_3__constants__[\"b\" /* IGNORED_FIELD_KEYS */][key] && !(ignoreFields && ignoreFields.length > 0 && Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"a\" /* arrayIncludes */])(ignoreFields, key)) && !(includeFields && includeFields.length > 0 && !Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"a\" /* arrayIncludes */])(includeFields, key))) {\n var f = fieldsObj[key] || {};\n var val = row[key]; // `f.filterByFormatted` will either be a function or boolean\n // `f.formater` will have already been noramlized into a function ref\n\n var filterByFormatted = f.filterByFormatted;\n var formatter = Object(__WEBPACK_IMPORTED_MODULE_2__utils_inspect__[\"f\" /* isFunction */])(filterByFormatted) ? filterByFormatted : filterByFormatted ? f.formatter : null;\n obj[key] = Object(__WEBPACK_IMPORTED_MODULE_2__utils_inspect__[\"f\" /* isFunction */])(formatter) ? formatter(val, key, row) : val;\n }\n\n return obj;\n }, {});\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (sanitizeRow);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL3Nhbml0aXplLXJvdy5qcz9mMjEyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZDO0FBQ1E7QUFDRDtBQUNIOztBQUVqRDtBQUNBO0FBQ0EsU0FBUyxtRUFBSTtBQUNiO0FBQ0E7QUFDQTtBQUNBLFNBQVMsc0VBQWtCLHNEQUFzRCwyRUFBYSx3RUFBd0UsMkVBQWE7QUFDbkw7QUFDQSx5QkFBeUI7QUFDekI7O0FBRUE7QUFDQSxzQkFBc0IsMEVBQVU7QUFDaEMsaUJBQWlCLDBFQUFVO0FBQzNCOztBQUVBO0FBQ0EsR0FBRyxJQUFJO0FBQ1A7O0FBRWUsb0VBQVciLCJmaWxlIjoiMjAxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsga2V5cyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL29iamVjdCc7XG5pbXBvcnQgeyBhcnJheUluY2x1ZGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYXJyYXknO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2luc3BlY3QnO1xuaW1wb3J0IHsgSUdOT1JFRF9GSUVMRF9LRVlTIH0gZnJvbSAnLi9jb25zdGFudHMnOyAvLyBSZXR1cm4gYSBjb3B5IG9mIGEgcm93IGFmdGVyIGFsbCByZXNlcnZlZCBmaWVsZHMgaGF2ZSBiZWVuIGZpbHRlcmVkIG91dFxuXG52YXIgc2FuaXRpemVSb3cgPSBmdW5jdGlvbiBzYW5pdGl6ZVJvdyhyb3csIGlnbm9yZUZpZWxkcywgaW5jbHVkZUZpZWxkcykge1xuICB2YXIgZmllbGRzT2JqID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiB7fTtcbiAgcmV0dXJuIGtleXMocm93KS5yZWR1Y2UoZnVuY3Rpb24gKG9iaiwga2V5KSB7XG4gICAgLy8gSWdub3JlIHNwZWNpYWwgZmllbGRzIHRoYXQgc3RhcnQgd2l0aCBgX2BcbiAgICAvLyBJZ25vcmUgZmllbGRzIGluIHRoZSBgaWdub3JlRmllbGRzYCBhcnJheVxuICAgIC8vIEluY2x1ZGUgb25seSBmaWVsZHMgaW4gdGhlIGBpbmNsdWRlRmllbGRzYCBhcnJheVxuICAgIGlmICghSUdOT1JFRF9GSUVMRF9LRVlTW2tleV0gJiYgIShpZ25vcmVGaWVsZHMgJiYgaWdub3JlRmllbGRzLmxlbmd0aCA+IDAgJiYgYXJyYXlJbmNsdWRlcyhpZ25vcmVGaWVsZHMsIGtleSkpICYmICEoaW5jbHVkZUZpZWxkcyAmJiBpbmNsdWRlRmllbGRzLmxlbmd0aCA+IDAgJiYgIWFycmF5SW5jbHVkZXMoaW5jbHVkZUZpZWxkcywga2V5KSkpIHtcbiAgICAgIHZhciBmID0gZmllbGRzT2JqW2tleV0gfHwge307XG4gICAgICB2YXIgdmFsID0gcm93W2tleV07IC8vIGBmLmZpbHRlckJ5Rm9ybWF0dGVkYCB3aWxsIGVpdGhlciBiZSBhIGZ1bmN0aW9uIG9yIGJvb2xlYW5cbiAgICAgIC8vIGBmLmZvcm1hdGVyYCB3aWxsIGhhdmUgYWxyZWFkeSBiZWVuIG5vcmFtbGl6ZWQgaW50byBhIGZ1bmN0aW9uIHJlZlxuXG4gICAgICB2YXIgZmlsdGVyQnlGb3JtYXR0ZWQgPSBmLmZpbHRlckJ5Rm9ybWF0dGVkO1xuICAgICAgdmFyIGZvcm1hdHRlciA9IGlzRnVuY3Rpb24oZmlsdGVyQnlGb3JtYXR0ZWQpID8gZmlsdGVyQnlGb3JtYXR0ZWQgOiBmaWx0ZXJCeUZvcm1hdHRlZCA/IGYuZm9ybWF0dGVyIDogbnVsbDtcbiAgICAgIG9ialtrZXldID0gaXNGdW5jdGlvbihmb3JtYXR0ZXIpID8gZm9ybWF0dGVyKHZhbCwga2V5LCByb3cpIDogdmFsO1xuICAgIH1cblxuICAgIHJldHVybiBvYmo7XG4gIH0sIHt9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHNhbml0aXplUm93O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdGFibGUvaGVscGVycy9zYW5pdGl6ZS1yb3cuanNcbi8vIG1vZHVsZSBpZCA9IDIwMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///201\n"); /***/ }), /* 202 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_html__ = __webpack_require__(11);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n props: {\n // `caption-top` is part of table-redere mixin (styling)\n // captionTop: {\n // type: Boolean,\n // default: false\n // },\n caption: {\n type: String,\n default: null\n },\n captionHtml: {\n type: String\n }\n },\n computed: {\n captionId: function captionId() {\n // Even though `this.safeId` looks like a method, it is a computed prop\n // that returns a new function if the underlying ID changes\n return this.isStacked ? this.safeId('_caption_') : null;\n }\n },\n methods: {\n renderCaption: function renderCaption() {\n var h = this.$createElement; // Build the caption\n\n var $captionSlot = this.normalizeSlot('table-caption');\n var $caption = h();\n\n if ($captionSlot || this.caption || this.captionHtml) {\n var data = {\n key: 'caption',\n attrs: {\n id: this.captionId\n }\n };\n\n if (!$captionSlot) {\n data.domProps = Object(__WEBPACK_IMPORTED_MODULE_0__utils_html__[\"a\" /* htmlOrText */])(this.captionHtml, this.caption);\n }\n\n $caption = h('caption', data, [$captionSlot]);\n }\n\n return $caption;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL21peGluLWNhcHRpb24uanM/YzllMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFpRDtBQUNsQztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBCQUEwQix1RUFBVTtBQUNwQzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMjAyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaHRtbE9yVGV4dCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2h0bWwnO1xuZXhwb3J0IGRlZmF1bHQge1xuICBwcm9wczoge1xuICAgIC8vIGBjYXB0aW9uLXRvcGAgaXMgcGFydCBvZiB0YWJsZS1yZWRlcmUgbWl4aW4gKHN0eWxpbmcpXG4gICAgLy8gY2FwdGlvblRvcDoge1xuICAgIC8vICAgdHlwZTogQm9vbGVhbixcbiAgICAvLyAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgLy8gfSxcbiAgICBjYXB0aW9uOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBjYXB0aW9uSHRtbDoge1xuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGNhcHRpb25JZDogZnVuY3Rpb24gY2FwdGlvbklkKCkge1xuICAgICAgLy8gRXZlbiB0aG91Z2ggYHRoaXMuc2FmZUlkYCBsb29rcyBsaWtlIGEgbWV0aG9kLCBpdCBpcyBhIGNvbXB1dGVkIHByb3BcbiAgICAgIC8vIHRoYXQgcmV0dXJucyBhIG5ldyBmdW5jdGlvbiBpZiB0aGUgdW5kZXJseWluZyBJRCBjaGFuZ2VzXG4gICAgICByZXR1cm4gdGhpcy5pc1N0YWNrZWQgPyB0aGlzLnNhZmVJZCgnX2NhcHRpb25fJykgOiBudWxsO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHJlbmRlckNhcHRpb246IGZ1bmN0aW9uIHJlbmRlckNhcHRpb24oKSB7XG4gICAgICB2YXIgaCA9IHRoaXMuJGNyZWF0ZUVsZW1lbnQ7IC8vIEJ1aWxkIHRoZSBjYXB0aW9uXG5cbiAgICAgIHZhciAkY2FwdGlvblNsb3QgPSB0aGlzLm5vcm1hbGl6ZVNsb3QoJ3RhYmxlLWNhcHRpb24nKTtcbiAgICAgIHZhciAkY2FwdGlvbiA9IGgoKTtcblxuICAgICAgaWYgKCRjYXB0aW9uU2xvdCB8fCB0aGlzLmNhcHRpb24gfHwgdGhpcy5jYXB0aW9uSHRtbCkge1xuICAgICAgICB2YXIgZGF0YSA9IHtcbiAgICAgICAgICBrZXk6ICdjYXB0aW9uJyxcbiAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgaWQ6IHRoaXMuY2FwdGlvbklkXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghJGNhcHRpb25TbG90KSB7XG4gICAgICAgICAgZGF0YS5kb21Qcm9wcyA9IGh0bWxPclRleHQodGhpcy5jYXB0aW9uSHRtbCwgdGhpcy5jYXB0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgICRjYXB0aW9uID0gaCgnY2FwdGlvbicsIGRhdGEsIFskY2FwdGlvblNsb3RdKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICRjYXB0aW9uO1xuICAgIH1cbiAgfVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL3RhYmxlL2hlbHBlcnMvbWl4aW4tY2FwdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMjAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///202\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_inspect__ = __webpack_require__(1);\n\n // Recursively stringifies the values of an object, space separated, in an\n// SSR safe deterministic way (keys are sorted before stringification)\n//\n// ex:\n// { b: 3, c: { z: 'zzz', d: null, e: 2 }, d: [10, 12, 11], a: 'one' }\n// becomes\n// 'one 3 2 zzz 10 12 11'\n//\n// Primitives (numbers/strings) are returned as-is\n// Null and undefined values are filtered out\n// Dates are converted to their native string format\n\nvar stringifyObjectValues = function stringifyObjectValues(val) {\n if (Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"o\" /* isUndefinedOrNull */])(val)) {\n /* istanbul ignore next */\n return '';\n } // Arrays are also object, and keys just returns the array indexes\n // Date objects we convert to strings\n\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"i\" /* isObject */])(val) && !Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"c\" /* isDate */])(val)) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils_object__[\"j\" /* keys */])(val).sort() // Sort to prevent SSR issues on pre-rendered sorted tables\n .filter(function (v) {\n return !Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"o\" /* isUndefinedOrNull */])(v);\n }) // Ignore undefined/null values\n .map(function (k) {\n return stringifyObjectValues(val[k]);\n }).join(' ');\n }\n\n return String(val);\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (stringifyObjectValues);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL3N0cmluZ2lmeS1vYmplY3QtdmFsdWVzLmpzP2U5YWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUE2QztBQUNnQztBQUM3RTtBQUNBO0FBQ0E7QUFDQSxRQUFRLFdBQVcsMEJBQTBCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU0saUZBQWlCO0FBQ3ZCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7OztBQUdBLE1BQU0sd0VBQVEsVUFBVSxzRUFBTTtBQUM5QixXQUFXLG1FQUFJO0FBQ2Y7QUFDQSxjQUFjLGlGQUFpQjtBQUMvQixLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVlLDhFQUFxQiIsImZpbGUiOiIyMDIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBrZXlzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvb2JqZWN0JztcbmltcG9ydCB7IGlzRGF0ZSwgaXNPYmplY3QsIGlzVW5kZWZpbmVkT3JOdWxsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaW5zcGVjdCc7IC8vIFJlY3Vyc2l2ZWx5IHN0cmluZ2lmaWVzIHRoZSB2YWx1ZXMgb2YgYW4gb2JqZWN0LCBzcGFjZSBzZXBhcmF0ZWQsIGluIGFuXG4vLyBTU1Igc2FmZSBkZXRlcm1pbmlzdGljIHdheSAoa2V5cyBhcmUgc29ydGVkIGJlZm9yZSBzdHJpbmdpZmljYXRpb24pXG4vL1xuLy8gICBleDpcbi8vICAgICB7IGI6IDMsIGM6IHsgejogJ3p6eicsIGQ6IG51bGwsIGU6IDIgfSwgZDogWzEwLCAxMiwgMTFdLCBhOiAnb25lJyB9XG4vLyAgIGJlY29tZXNcbi8vICAgICAnb25lIDMgMiB6enogMTAgMTIgMTEnXG4vL1xuLy8gUHJpbWl0aXZlcyAobnVtYmVycy9zdHJpbmdzKSBhcmUgcmV0dXJuZWQgYXMtaXNcbi8vIE51bGwgYW5kIHVuZGVmaW5lZCB2YWx1ZXMgYXJlIGZpbHRlcmVkIG91dFxuLy8gRGF0ZXMgYXJlIGNvbnZlcnRlZCB0byB0aGVpciBuYXRpdmUgc3RyaW5nIGZvcm1hdFxuXG52YXIgc3RyaW5naWZ5T2JqZWN0VmFsdWVzID0gZnVuY3Rpb24gc3RyaW5naWZ5T2JqZWN0VmFsdWVzKHZhbCkge1xuICBpZiAoaXNVbmRlZmluZWRPck51bGwodmFsKSkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuICcnO1xuICB9IC8vIEFycmF5cyBhcmUgYWxzbyBvYmplY3QsIGFuZCBrZXlzIGp1c3QgcmV0dXJucyB0aGUgYXJyYXkgaW5kZXhlc1xuICAvLyBEYXRlIG9iamVjdHMgd2UgY29udmVydCB0byBzdHJpbmdzXG5cblxuICBpZiAoaXNPYmplY3QodmFsKSAmJiAhaXNEYXRlKHZhbCkpIHtcbiAgICByZXR1cm4ga2V5cyh2YWwpLnNvcnQoKSAvLyBTb3J0IHRvIHByZXZlbnQgU1NSIGlzc3VlcyBvbiBwcmUtcmVuZGVyZWQgc29ydGVkIHRhYmxlc1xuICAgIC5maWx0ZXIoZnVuY3Rpb24gKHYpIHtcbiAgICAgIHJldHVybiAhaXNVbmRlZmluZWRPck51bGwodik7XG4gICAgfSkgLy8gSWdub3JlIHVuZGVmaW5lZC9udWxsIHZhbHVlc1xuICAgIC5tYXAoZnVuY3Rpb24gKGspIHtcbiAgICAgIHJldHVybiBzdHJpbmdpZnlPYmplY3RWYWx1ZXModmFsW2tdKTtcbiAgICB9KS5qb2luKCcgJyk7XG4gIH1cblxuICByZXR1cm4gU3RyaW5nKHZhbCk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBzdHJpbmdpZnlPYmplY3RWYWx1ZXM7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL3N0cmluZ2lmeS1vYmplY3QtdmFsdWVzLmpzXG4vLyBtb2R1bGUgaWQgPSAyMDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///202\n"); /***/ }), /* 203 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony default export */ __webpack_exports__[\"a\"] = ({\n methods: {\n renderColgroup: function renderColgroup() {\n var h = this.$createElement;\n var fields = this.computedFields;\n var $colgroup = h();\n\n if (this.hasNormalizedSlot('table-colgroup')) {\n $colgroup = h('colgroup', {\n key: 'colgroup'\n }, [this.normalizeSlot('table-colgroup', {\n columns: fields.length,\n fields: fields\n })]);\n }\n\n return $colgroup;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL21peGluLWNvbGdyb3VwLmpzP2RmODIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMjAzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICBtZXRob2RzOiB7XG4gICAgcmVuZGVyQ29sZ3JvdXA6IGZ1bmN0aW9uIHJlbmRlckNvbGdyb3VwKCkge1xuICAgICAgdmFyIGggPSB0aGlzLiRjcmVhdGVFbGVtZW50O1xuICAgICAgdmFyIGZpZWxkcyA9IHRoaXMuY29tcHV0ZWRGaWVsZHM7XG4gICAgICB2YXIgJGNvbGdyb3VwID0gaCgpO1xuXG4gICAgICBpZiAodGhpcy5oYXNOb3JtYWxpemVkU2xvdCgndGFibGUtY29sZ3JvdXAnKSkge1xuICAgICAgICAkY29sZ3JvdXAgPSBoKCdjb2xncm91cCcsIHtcbiAgICAgICAgICBrZXk6ICdjb2xncm91cCdcbiAgICAgICAgfSwgW3RoaXMubm9ybWFsaXplU2xvdCgndGFibGUtY29sZ3JvdXAnLCB7XG4gICAgICAgICAgY29sdW1uczogZmllbGRzLmxlbmd0aCxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkc1xuICAgICAgICB9KV0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gJGNvbGdyb3VwO1xuICAgIH1cbiAgfVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL3RhYmxlL2hlbHBlcnMvbWl4aW4tY29sZ3JvdXAuanNcbi8vIG1vZHVsZSBpZCA9IDIwM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///203\n"); +eval("/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in <b-table> if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nvar stableSort = function stableSort(array, compareFn) {\n // Using `.bind(compareFn)` on the wrapped anonymous function improves\n // performance by avoiding the function call setup. We don't use an arrow\n // function here as it binds `this` to the `stableSort` context rather than\n // the `compareFn` context, which wouldn't give us the performance increase.\n return array.map(function (a, index) {\n return [index, a];\n }).sort(function (a, b) {\n return this(a[1], b[1]) || a[0] - b[0];\n }.bind(compareFn)).map(function (e) {\n return e[1];\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (stableSort);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvc3RhYmxlLXNvcnQuanM/MGFlZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7O0FBRWUsbUVBQVUiLCJmaWxlIjoiMjAzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvbnNpc3RlbnQgYW5kIHN0YWJsZSBzb3J0IGZ1bmN0aW9uIGFjcm9zcyBKYXZhU2NyaXB0IHBsYXRmb3Jtc1xuICpcbiAqIEluY29uc2lzdGVudCBzb3J0cyBjYW4gY2F1c2UgU1NSIHByb2JsZW1zIGJldHdlZW4gY2xpZW50IGFuZCBzZXJ2ZXJcbiAqIHN1Y2ggYXMgaW4gPGItdGFibGU+IGlmIHNvcnRCeSBpcyBhcHBsaWVkIHRvIHRoZSBkYXRhIG9uIHNlcnZlciBzaWRlIHJlbmRlci5cbiAqIENocm9tZSBhbmQgVjggbmF0aXZlIHNvcnRzIGFyZSBpbmNvbnNpc3RlbnQvdW5zdGFibGVcbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHVzZXMgbmF0aXZlIHNvcnQgd2l0aCBmYWxsYmFjayB0byBpbmRleCBjb21wYXJlIHdoZW4gdGhlIGEgYW5kIGJcbiAqIGNvbXBhcmUgcmV0dXJucyAwXG4gKlxuICogQWxnb3JpdGhtIGJhc2VkIG9uOlxuICogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTQyNzYwOC9mYXN0LXN0YWJsZS1zb3J0aW5nLWFsZ29yaXRobS1pbXBsZW1lbnRhdGlvbi1pbi1qYXZhc2NyaXB0LzQ1NDIyNjQ1IzQ1NDIyNjQ1XG4gKlxuICogQHBhcmFtIHthcnJheX0gYXJyYXkgdG8gc29ydFxuICogQHBhcmFtIHtmdW5jdGlvbn0gc29ydCBjb21wYXJlIGZ1bmN0aW9uXG4gKiBAcmV0dXJuIHthcnJheX1cbiAqL1xudmFyIHN0YWJsZVNvcnQgPSBmdW5jdGlvbiBzdGFibGVTb3J0KGFycmF5LCBjb21wYXJlRm4pIHtcbiAgLy8gVXNpbmcgYC5iaW5kKGNvbXBhcmVGbilgIG9uIHRoZSB3cmFwcGVkIGFub255bW91cyBmdW5jdGlvbiBpbXByb3Zlc1xuICAvLyBwZXJmb3JtYW5jZSBieSBhdm9pZGluZyB0aGUgZnVuY3Rpb24gY2FsbCBzZXR1cC4gV2UgZG9uJ3QgdXNlIGFuIGFycm93XG4gIC8vIGZ1bmN0aW9uIGhlcmUgYXMgaXQgYmluZHMgYHRoaXNgIHRvIHRoZSBgc3RhYmxlU29ydGAgY29udGV4dCByYXRoZXIgdGhhblxuICAvLyB0aGUgYGNvbXBhcmVGbmAgY29udGV4dCwgd2hpY2ggd291bGRuJ3QgZ2l2ZSB1cyB0aGUgcGVyZm9ybWFuY2UgaW5jcmVhc2UuXG4gIHJldHVybiBhcnJheS5tYXAoZnVuY3Rpb24gKGEsIGluZGV4KSB7XG4gICAgcmV0dXJuIFtpbmRleCwgYV07XG4gIH0pLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gdGhpcyhhWzFdLCBiWzFdKSB8fCBhWzBdIC0gYlswXTtcbiAgfS5iaW5kKGNvbXBhcmVGbikpLm1hcChmdW5jdGlvbiAoZSkge1xuICAgIHJldHVybiBlWzFdO1xuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHN0YWJsZVNvcnQ7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvc3RhYmxlLXNvcnQuanNcbi8vIG1vZHVsZSBpZCA9IDIwM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///203\n"); /***/ }), /* 204 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_startcase__ = __webpack_require__(85);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_html__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__filter_event__ = __webpack_require__(205);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__text_selection_active__ = __webpack_require__(206);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__thead__ = __webpack_require__(88);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__tfoot__ = __webpack_require__(48);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__tr__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__th__ = __webpack_require__(49);\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 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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n props: {\n headVariant: {\n type: String,\n // 'light', 'dark' or null (or custom)\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])('BTable', 'headVariant');\n }\n },\n theadClass: {\n type: [String, Array, Object] // default: undefined\n\n },\n theadTrClass: {\n type: [String, Array, Object] // default: undefined\n\n }\n },\n methods: {\n fieldClasses: function fieldClasses(field) {\n // Header field (<th>) classes\n return [field.class ? field.class : '', field.thClass ? field.thClass : ''];\n },\n headClicked: function headClicked(evt, field, isFoot) {\n if (this.stopIfBusy && this.stopIfBusy(evt)) {\n // If table is busy (via provider) then don't propagate\n return;\n } else if (Object(__WEBPACK_IMPORTED_MODULE_4__filter_event__[\"a\" /* default */])(evt)) {\n // Clicked on a non-disabled control so ignore\n return;\n } else if (Object(__WEBPACK_IMPORTED_MODULE_5__text_selection_active__[\"a\" /* default */])(this.$el)) {\n // User is selecting text, so ignore\n\n /* istanbul ignore next: JSDOM doesn't support getSelection() */\n return;\n }\n\n evt.stopPropagation();\n evt.preventDefault();\n this.$emit('head-clicked', field.key, field, evt, isFoot);\n },\n renderThead: function renderThead() {\n var _this = this;\n\n var isFoot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var h = this.$createElement;\n var fields = this.computedFields || [];\n\n if (this.isStackedAlways || fields.length === 0) {\n // In always stacked mode, we don't bother rendering the head/foot.\n // Or if no field headings (empty table)\n return h();\n } // Refernce to `selectAllRows` and `clearSelected()`, if table is Selectable\n\n\n var selectAllRows = this.isSelectable ? this.selectAllRows : function () {};\n var clearSelected = this.isSelectable ? this.clearSelected : function () {}; // Helper function to generate a field <th> cell\n\n var makeCell = function makeCell(field, colIndex) {\n var ariaLabel = null;\n\n if (!field.label.trim() && !field.headerTitle) {\n // In case field's label and title are empty/blank\n // We need to add a hint about what the column is about for non-sighted users\n\n /* istanbul ignore next */\n ariaLabel = Object(__WEBPACK_IMPORTED_MODULE_1__utils_startcase__[\"a\" /* default */])(field.key);\n }\n\n var hasHeadClickListener = _this.$listeners['head-clicked'] || _this.isSortable;\n var handlers = {};\n\n if (hasHeadClickListener) {\n handlers.click = function (evt) {\n _this.headClicked(evt, field, isFoot);\n };\n\n handlers.keydown = function (evt) {\n var keyCode = evt.keyCode;\n\n if (keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].ENTER || keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].SPACE) {\n _this.headClicked(evt, field, isFoot);\n }\n };\n }\n\n var sortAttrs = _this.isSortable ? _this.sortTheadThAttrs(field.key, field, isFoot) : {};\n var sortClass = _this.isSortable ? _this.sortTheadThClasses(field.key, field, isFoot) : null;\n var data = {\n key: field.key,\n class: [_this.fieldClasses(field), sortClass],\n props: {\n variant: field.variant,\n stickyColumn: field.stickyColumn\n },\n style: field.thStyle || {},\n attrs: _objectSpread({\n // We only add a tabindex of 0 if there is a head-clicked listener\n tabindex: hasHeadClickListener ? '0' : null,\n abbr: field.headerAbbr || null,\n title: field.headerTitle || null,\n 'aria-colindex': String(colIndex + 1),\n 'aria-label': ariaLabel\n }, _this.getThValues(null, field.key, field.thAttr, isFoot ? 'foot' : 'head', {}), {}, sortAttrs),\n on: handlers\n }; // Handle edge case where in-document templates are used with new\n // `v-slot:name` syntax where the browser lower-cases the v-slot's\n // name (attributes become lower cased when parsed by the browser)\n // We have replaced the square bracket syntax with round brackets\n // to prevent confusion with dynamic slot names\n\n var slotNames = [\"head(\".concat(field.key, \")\"), \"head(\".concat(field.key.toLowerCase(), \")\"), 'head()'];\n\n if (isFoot) {\n // Footer will fallback to header slot names\n slotNames = [\"foot(\".concat(field.key, \")\"), \"foot(\".concat(field.key.toLowerCase(), \")\"), 'foot()'].concat(_toConsumableArray(slotNames));\n }\n\n var hasSlot = _this.hasNormalizedSlot(slotNames);\n\n var slot = field.label;\n\n if (hasSlot) {\n slot = _this.normalizeSlot(slotNames, {\n label: field.label,\n column: field.key,\n field: field,\n isFoot: isFoot,\n // Add in row select methods\n selectAllRows: selectAllRows,\n clearSelected: clearSelected\n });\n } else {\n data.domProps = Object(__WEBPACK_IMPORTED_MODULE_3__utils_html__[\"a\" /* htmlOrText */])(field.labelHtml);\n }\n\n return h(__WEBPACK_IMPORTED_MODULE_9__th__[\"a\" /* BTh */], data, slot);\n }; // Generate the array of <th> cells\n\n\n var $cells = fields.map(makeCell).filter(function (th) {\n return th;\n }); // Genrate the row(s)\n\n var $trs = [];\n\n if (isFoot) {\n $trs.push(h(__WEBPACK_IMPORTED_MODULE_8__tr__[\"a\" /* BTr */], {\n class: this.tfootTrClass\n }, $cells));\n } else {\n var scope = {\n columns: fields.length,\n fields: fields,\n // Add in row select methods\n selectAllRows: selectAllRows,\n clearSelected: clearSelected\n };\n $trs.push(this.normalizeSlot('thead-top', scope) || h());\n $trs.push(h(__WEBPACK_IMPORTED_MODULE_8__tr__[\"a\" /* BTr */], {\n class: this.theadTrClass\n }, $cells));\n }\n\n return h(isFoot ? __WEBPACK_IMPORTED_MODULE_7__tfoot__[\"a\" /* BTfoot */] : __WEBPACK_IMPORTED_MODULE_6__thead__[\"a\" /* BThead */], {\n key: isFoot ? 'bv-tfoot' : 'bv-thead',\n class: (isFoot ? this.tfootClass : this.theadClass) || null,\n props: isFoot ? {\n footVariant: this.footVariant || this.headVariant || null\n } : {\n headVariant: this.headVariant || null\n }\n }, $trs);\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL21peGluLXRoZWFkLmpzPzdkNDQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxrQ0FBa0MsaUZBQWlGOztBQUVuSCwrQkFBK0Isd0VBQXdFOztBQUV2RyxpQ0FBaUMsK0hBQStIOztBQUVoSyxrQ0FBa0MsMEJBQTBCLDhDQUE4QyxnQkFBZ0IsT0FBTyxrQkFBa0IsRUFBRSxhQUFhLEVBQUU7O0FBRXBLLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLCtDQUErQywyQ0FBMkMsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8seUNBQXlDLGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBnQiwyQ0FBMkMsa0JBQWtCLGtDQUFrQyxxRUFBcUUsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEVBQUUsWUFBWTs7QUFFL0o7QUFDQztBQUNVO0FBQ1Y7QUFDUjtBQUNpQjtBQUN4QjtBQUNBO0FBQ047QUFDQTtBQUNiO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUZBQWtCO0FBQ2pDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFVBQVUsc0VBQVc7QUFDNUI7QUFDQTtBQUNBLE9BQU8sVUFBVSwrRUFBbUI7QUFDcEM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0Esa0ZBQWtGOztBQUVsRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUFzQix5RUFBUztBQUMvQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsNEJBQTRCLGlFQUFRLHNCQUFzQixpRUFBUTtBQUNsRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsK0VBQStFLEtBQUs7QUFDL0Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVCwwQkFBMEIsdUVBQVU7QUFDcEM7O0FBRUEsaUJBQWlCLGdEQUFHO0FBQ3BCLFFBQVE7OztBQUdSO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7O0FBRUE7QUFDQSxvQkFBb0IsZ0RBQUc7QUFDdkI7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsZ0RBQUc7QUFDdkI7QUFDQSxTQUFTO0FBQ1Q7O0FBRUEsd0JBQXdCLHNEQUFNLEdBQUcsc0RBQU07QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIyMDQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IHJldHVybiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5KGFycikgfHwgX25vbkl0ZXJhYmxlU3ByZWFkKCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2VcIik7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShpdGVyKSB7IGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGl0ZXIpIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpdGVyKSA9PT0gXCJbb2JqZWN0IEFyZ3VtZW50c11cIikgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH0gfVxuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgS2V5Q29kZXMgZnJvbSAnLi4vLi4vLi4vdXRpbHMva2V5LWNvZGVzJztcbmltcG9ydCBzdGFydENhc2UgZnJvbSAnLi4vLi4vLi4vdXRpbHMvc3RhcnRjYXNlJztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBodG1sT3JUZXh0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaHRtbCc7XG5pbXBvcnQgZmlsdGVyRXZlbnQgZnJvbSAnLi9maWx0ZXItZXZlbnQnO1xuaW1wb3J0IHRleHRTZWxlY3Rpb25BY3RpdmUgZnJvbSAnLi90ZXh0LXNlbGVjdGlvbi1hY3RpdmUnO1xuaW1wb3J0IHsgQlRoZWFkIH0gZnJvbSAnLi4vdGhlYWQnO1xuaW1wb3J0IHsgQlRmb290IH0gZnJvbSAnLi4vdGZvb3QnO1xuaW1wb3J0IHsgQlRyIH0gZnJvbSAnLi4vdHInO1xuaW1wb3J0IHsgQlRoIH0gZnJvbSAnLi4vdGgnO1xuZXhwb3J0IGRlZmF1bHQge1xuICBwcm9wczoge1xuICAgIGhlYWRWYXJpYW50OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAvLyAnbGlnaHQnLCAnZGFyaycgb3IgbnVsbCAob3IgY3VzdG9tKVxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoJ0JUYWJsZScsICdoZWFkVmFyaWFudCcpO1xuICAgICAgfVxuICAgIH0sXG4gICAgdGhlYWRDbGFzczoge1xuICAgICAgdHlwZTogW1N0cmluZywgQXJyYXksIE9iamVjdF0gLy8gZGVmYXVsdDogdW5kZWZpbmVkXG5cbiAgICB9LFxuICAgIHRoZWFkVHJDbGFzczoge1xuICAgICAgdHlwZTogW1N0cmluZywgQXJyYXksIE9iamVjdF0gLy8gZGVmYXVsdDogdW5kZWZpbmVkXG5cbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBmaWVsZENsYXNzZXM6IGZ1bmN0aW9uIGZpZWxkQ2xhc3NlcyhmaWVsZCkge1xuICAgICAgLy8gSGVhZGVyIGZpZWxkICg8dGg+KSBjbGFzc2VzXG4gICAgICByZXR1cm4gW2ZpZWxkLmNsYXNzID8gZmllbGQuY2xhc3MgOiAnJywgZmllbGQudGhDbGFzcyA/IGZpZWxkLnRoQ2xhc3MgOiAnJ107XG4gICAgfSxcbiAgICBoZWFkQ2xpY2tlZDogZnVuY3Rpb24gaGVhZENsaWNrZWQoZXZ0LCBmaWVsZCwgaXNGb290KSB7XG4gICAgICBpZiAodGhpcy5zdG9wSWZCdXN5ICYmIHRoaXMuc3RvcElmQnVzeShldnQpKSB7XG4gICAgICAgIC8vIElmIHRhYmxlIGlzIGJ1c3kgKHZpYSBwcm92aWRlcikgdGhlbiBkb24ndCBwcm9wYWdhdGVcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmIChmaWx0ZXJFdmVudChldnQpKSB7XG4gICAgICAgIC8vIENsaWNrZWQgb24gYSBub24tZGlzYWJsZWQgY29udHJvbCBzbyBpZ25vcmVcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmICh0ZXh0U2VsZWN0aW9uQWN0aXZlKHRoaXMuJGVsKSkge1xuICAgICAgICAvLyBVc2VyIGlzIHNlbGVjdGluZyB0ZXh0LCBzbyBpZ25vcmVcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogSlNET00gZG9lc24ndCBzdXBwb3J0IGdldFNlbGVjdGlvbigpICovXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLiRlbWl0KCdoZWFkLWNsaWNrZWQnLCBmaWVsZC5rZXksIGZpZWxkLCBldnQsIGlzRm9vdCk7XG4gICAgfSxcbiAgICByZW5kZXJUaGVhZDogZnVuY3Rpb24gcmVuZGVyVGhlYWQoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgaXNGb290ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBmYWxzZTtcbiAgICAgIHZhciBoID0gdGhpcy4kY3JlYXRlRWxlbWVudDtcbiAgICAgIHZhciBmaWVsZHMgPSB0aGlzLmNvbXB1dGVkRmllbGRzIHx8IFtdO1xuXG4gICAgICBpZiAodGhpcy5pc1N0YWNrZWRBbHdheXMgfHwgZmllbGRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAvLyBJbiBhbHdheXMgc3RhY2tlZCBtb2RlLCB3ZSBkb24ndCBib3RoZXIgcmVuZGVyaW5nIHRoZSBoZWFkL2Zvb3QuXG4gICAgICAgIC8vIE9yIGlmIG5vIGZpZWxkIGhlYWRpbmdzIChlbXB0eSB0YWJsZSlcbiAgICAgICAgcmV0dXJuIGgoKTtcbiAgICAgIH0gLy8gUmVmZXJuY2UgdG8gYHNlbGVjdEFsbFJvd3NgIGFuZCBgY2xlYXJTZWxlY3RlZCgpYCwgaWYgdGFibGUgaXMgU2VsZWN0YWJsZVxuXG5cbiAgICAgIHZhciBzZWxlY3RBbGxSb3dzID0gdGhpcy5pc1NlbGVjdGFibGUgPyB0aGlzLnNlbGVjdEFsbFJvd3MgOiBmdW5jdGlvbiAoKSB7fTtcbiAgICAgIHZhciBjbGVhclNlbGVjdGVkID0gdGhpcy5pc1NlbGVjdGFibGUgPyB0aGlzLmNsZWFyU2VsZWN0ZWQgOiBmdW5jdGlvbiAoKSB7fTsgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGEgZmllbGQgPHRoPiBjZWxsXG5cbiAgICAgIHZhciBtYWtlQ2VsbCA9IGZ1bmN0aW9uIG1ha2VDZWxsKGZpZWxkLCBjb2xJbmRleCkge1xuICAgICAgICB2YXIgYXJpYUxhYmVsID0gbnVsbDtcblxuICAgICAgICBpZiAoIWZpZWxkLmxhYmVsLnRyaW0oKSAmJiAhZmllbGQuaGVhZGVyVGl0bGUpIHtcbiAgICAgICAgICAvLyBJbiBjYXNlIGZpZWxkJ3MgbGFiZWwgYW5kIHRpdGxlIGFyZSBlbXB0eS9ibGFua1xuICAgICAgICAgIC8vIFdlIG5lZWQgdG8gYWRkIGEgaGludCBhYm91dCB3aGF0IHRoZSBjb2x1bW4gaXMgYWJvdXQgZm9yIG5vbi1zaWdodGVkIHVzZXJzXG5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgIGFyaWFMYWJlbCA9IHN0YXJ0Q2FzZShmaWVsZC5rZXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGhhc0hlYWRDbGlja0xpc3RlbmVyID0gX3RoaXMuJGxpc3RlbmVyc1snaGVhZC1jbGlja2VkJ10gfHwgX3RoaXMuaXNTb3J0YWJsZTtcbiAgICAgICAgdmFyIGhhbmRsZXJzID0ge307XG5cbiAgICAgICAgaWYgKGhhc0hlYWRDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgaGFuZGxlcnMuY2xpY2sgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICBfdGhpcy5oZWFkQ2xpY2tlZChldnQsIGZpZWxkLCBpc0Zvb3QpO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBoYW5kbGVycy5rZXlkb3duID0gZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgdmFyIGtleUNvZGUgPSBldnQua2V5Q29kZTtcblxuICAgICAgICAgICAgaWYgKGtleUNvZGUgPT09IEtleUNvZGVzLkVOVEVSIHx8IGtleUNvZGUgPT09IEtleUNvZGVzLlNQQUNFKSB7XG4gICAgICAgICAgICAgIF90aGlzLmhlYWRDbGlja2VkKGV2dCwgZmllbGQsIGlzRm9vdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzb3J0QXR0cnMgPSBfdGhpcy5pc1NvcnRhYmxlID8gX3RoaXMuc29ydFRoZWFkVGhBdHRycyhmaWVsZC5rZXksIGZpZWxkLCBpc0Zvb3QpIDoge307XG4gICAgICAgIHZhciBzb3J0Q2xhc3MgPSBfdGhpcy5pc1NvcnRhYmxlID8gX3RoaXMuc29ydFRoZWFkVGhDbGFzc2VzKGZpZWxkLmtleSwgZmllbGQsIGlzRm9vdCkgOiBudWxsO1xuICAgICAgICB2YXIgZGF0YSA9IHtcbiAgICAgICAgICBrZXk6IGZpZWxkLmtleSxcbiAgICAgICAgICBjbGFzczogW190aGlzLmZpZWxkQ2xhc3NlcyhmaWVsZCksIHNvcnRDbGFzc10sXG4gICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHZhcmlhbnQ6IGZpZWxkLnZhcmlhbnQsXG4gICAgICAgICAgICBzdGlja3lDb2x1bW46IGZpZWxkLnN0aWNreUNvbHVtblxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3R5bGU6IGZpZWxkLnRoU3R5bGUgfHwge30sXG4gICAgICAgICAgYXR0cnM6IF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgICAgLy8gV2Ugb25seSBhZGQgYSB0YWJpbmRleCBvZiAwIGlmIHRoZXJlIGlzIGEgaGVhZC1jbGlja2VkIGxpc3RlbmVyXG4gICAgICAgICAgICB0YWJpbmRleDogaGFzSGVhZENsaWNrTGlzdGVuZXIgPyAnMCcgOiBudWxsLFxuICAgICAgICAgICAgYWJicjogZmllbGQuaGVhZGVyQWJiciB8fCBudWxsLFxuICAgICAgICAgICAgdGl0bGU6IGZpZWxkLmhlYWRlclRpdGxlIHx8IG51bGwsXG4gICAgICAgICAgICAnYXJpYS1jb2xpbmRleCc6IFN0cmluZyhjb2xJbmRleCArIDEpLFxuICAgICAgICAgICAgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWxcbiAgICAgICAgICB9LCBfdGhpcy5nZXRUaFZhbHVlcyhudWxsLCBmaWVsZC5rZXksIGZpZWxkLnRoQXR0ciwgaXNGb290ID8gJ2Zvb3QnIDogJ2hlYWQnLCB7fSksIHt9LCBzb3J0QXR0cnMpLFxuICAgICAgICAgIG9uOiBoYW5kbGVyc1xuICAgICAgICB9OyAvLyBIYW5kbGUgZWRnZSBjYXNlIHdoZXJlIGluLWRvY3VtZW50IHRlbXBsYXRlcyBhcmUgdXNlZCB3aXRoIG5ld1xuICAgICAgICAvLyBgdi1zbG90Om5hbWVgIHN5bnRheCB3aGVyZSB0aGUgYnJvd3NlciBsb3dlci1jYXNlcyB0aGUgdi1zbG90J3NcbiAgICAgICAgLy8gbmFtZSAoYXR0cmlidXRlcyBiZWNvbWUgbG93ZXIgY2FzZWQgd2hlbiBwYXJzZWQgYnkgdGhlIGJyb3dzZXIpXG4gICAgICAgIC8vIFdlIGhhdmUgcmVwbGFjZWQgdGhlIHNxdWFyZSBicmFja2V0IHN5bnRheCB3aXRoIHJvdW5kIGJyYWNrZXRzXG4gICAgICAgIC8vIHRvIHByZXZlbnQgY29uZnVzaW9uIHdpdGggZHluYW1pYyBzbG90IG5hbWVzXG5cbiAgICAgICAgdmFyIHNsb3ROYW1lcyA9IFtcImhlYWQoXCIuY29uY2F0KGZpZWxkLmtleSwgXCIpXCIpLCBcImhlYWQoXCIuY29uY2F0KGZpZWxkLmtleS50b0xvd2VyQ2FzZSgpLCBcIilcIiksICdoZWFkKCknXTtcblxuICAgICAgICBpZiAoaXNGb290KSB7XG4gICAgICAgICAgLy8gRm9vdGVyIHdpbGwgZmFsbGJhY2sgdG8gaGVhZGVyIHNsb3QgbmFtZXNcbiAgICAgICAgICBzbG90TmFtZXMgPSBbXCJmb290KFwiLmNvbmNhdChmaWVsZC5rZXksIFwiKVwiKSwgXCJmb290KFwiLmNvbmNhdChmaWVsZC5rZXkudG9Mb3dlckNhc2UoKSwgXCIpXCIpLCAnZm9vdCgpJ10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShzbG90TmFtZXMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBoYXNTbG90ID0gX3RoaXMuaGFzTm9ybWFsaXplZFNsb3Qoc2xvdE5hbWVzKTtcblxuICAgICAgICB2YXIgc2xvdCA9IGZpZWxkLmxhYmVsO1xuXG4gICAgICAgIGlmIChoYXNTbG90KSB7XG4gICAgICAgICAgc2xvdCA9IF90aGlzLm5vcm1hbGl6ZVNsb3Qoc2xvdE5hbWVzLCB7XG4gICAgICAgICAgICBsYWJlbDogZmllbGQubGFiZWwsXG4gICAgICAgICAgICBjb2x1bW46IGZpZWxkLmtleSxcbiAgICAgICAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgICAgICAgIGlzRm9vdDogaXNGb290LFxuICAgICAgICAgICAgLy8gQWRkIGluIHJvdyBzZWxlY3QgbWV0aG9kc1xuICAgICAgICAgICAgc2VsZWN0QWxsUm93czogc2VsZWN0QWxsUm93cyxcbiAgICAgICAgICAgIGNsZWFyU2VsZWN0ZWQ6IGNsZWFyU2VsZWN0ZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkYXRhLmRvbVByb3BzID0gaHRtbE9yVGV4dChmaWVsZC5sYWJlbEh0bWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGgoQlRoLCBkYXRhLCBzbG90KTtcbiAgICAgIH07IC8vIEdlbmVyYXRlIHRoZSBhcnJheSBvZiA8dGg+IGNlbGxzXG5cblxuICAgICAgdmFyICRjZWxscyA9IGZpZWxkcy5tYXAobWFrZUNlbGwpLmZpbHRlcihmdW5jdGlvbiAodGgpIHtcbiAgICAgICAgcmV0dXJuIHRoO1xuICAgICAgfSk7IC8vIEdlbnJhdGUgdGhlIHJvdyhzKVxuXG4gICAgICB2YXIgJHRycyA9IFtdO1xuXG4gICAgICBpZiAoaXNGb290KSB7XG4gICAgICAgICR0cnMucHVzaChoKEJUciwge1xuICAgICAgICAgIGNsYXNzOiB0aGlzLnRmb290VHJDbGFzc1xuICAgICAgICB9LCAkY2VsbHMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBzY29wZSA9IHtcbiAgICAgICAgICBjb2x1bW5zOiBmaWVsZHMubGVuZ3RoLFxuICAgICAgICAgIGZpZWxkczogZmllbGRzLFxuICAgICAgICAgIC8vIEFkZCBpbiByb3cgc2VsZWN0IG1ldGhvZHNcbiAgICAgICAgICBzZWxlY3RBbGxSb3dzOiBzZWxlY3RBbGxSb3dzLFxuICAgICAgICAgIGNsZWFyU2VsZWN0ZWQ6IGNsZWFyU2VsZWN0ZWRcbiAgICAgICAgfTtcbiAgICAgICAgJHRycy5wdXNoKHRoaXMubm9ybWFsaXplU2xvdCgndGhlYWQtdG9wJywgc2NvcGUpIHx8IGgoKSk7XG4gICAgICAgICR0cnMucHVzaChoKEJUciwge1xuICAgICAgICAgIGNsYXNzOiB0aGlzLnRoZWFkVHJDbGFzc1xuICAgICAgICB9LCAkY2VsbHMpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGgoaXNGb290ID8gQlRmb290IDogQlRoZWFkLCB7XG4gICAgICAgIGtleTogaXNGb290ID8gJ2J2LXRmb290JyA6ICdidi10aGVhZCcsXG4gICAgICAgIGNsYXNzOiAoaXNGb290ID8gdGhpcy50Zm9vdENsYXNzIDogdGhpcy50aGVhZENsYXNzKSB8fCBudWxsLFxuICAgICAgICBwcm9wczogaXNGb290ID8ge1xuICAgICAgICAgIGZvb3RWYXJpYW50OiB0aGlzLmZvb3RWYXJpYW50IHx8IHRoaXMuaGVhZFZhcmlhbnQgfHwgbnVsbFxuICAgICAgICB9IDoge1xuICAgICAgICAgIGhlYWRWYXJpYW50OiB0aGlzLmhlYWRWYXJpYW50IHx8IG51bGxcbiAgICAgICAgfVxuICAgICAgfSwgJHRycyk7XG4gICAgfVxuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdGFibGUvaGVscGVycy9taXhpbi10aGVhZC5qc1xuLy8gbW9kdWxlIGlkID0gMjA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///204\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_html__ = __webpack_require__(11);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n props: {\n // `caption-top` is part of table-redere mixin (styling)\n // captionTop: {\n // type: Boolean,\n // default: false\n // },\n caption: {\n type: String,\n default: null\n },\n captionHtml: {\n type: String\n }\n },\n computed: {\n captionId: function captionId() {\n // Even though `this.safeId` looks like a method, it is a computed prop\n // that returns a new function if the underlying ID changes\n return this.isStacked ? this.safeId('_caption_') : null;\n }\n },\n methods: {\n renderCaption: function renderCaption() {\n var h = this.$createElement; // Build the caption\n\n var $captionSlot = this.normalizeSlot('table-caption');\n var $caption = h();\n\n if ($captionSlot || this.caption || this.captionHtml) {\n var data = {\n key: 'caption',\n attrs: {\n id: this.captionId\n }\n };\n\n if (!$captionSlot) {\n data.domProps = Object(__WEBPACK_IMPORTED_MODULE_0__utils_html__[\"a\" /* htmlOrText */])(this.captionHtml, this.caption);\n }\n\n $caption = h('caption', data, [$captionSlot]);\n }\n\n return $caption;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL21peGluLWNhcHRpb24uanM/YzllMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFpRDtBQUNsQztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBCQUEwQix1RUFBVTtBQUNwQzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMjA0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaHRtbE9yVGV4dCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2h0bWwnO1xuZXhwb3J0IGRlZmF1bHQge1xuICBwcm9wczoge1xuICAgIC8vIGBjYXB0aW9uLXRvcGAgaXMgcGFydCBvZiB0YWJsZS1yZWRlcmUgbWl4aW4gKHN0eWxpbmcpXG4gICAgLy8gY2FwdGlvblRvcDoge1xuICAgIC8vICAgdHlwZTogQm9vbGVhbixcbiAgICAvLyAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgLy8gfSxcbiAgICBjYXB0aW9uOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBjYXB0aW9uSHRtbDoge1xuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGNhcHRpb25JZDogZnVuY3Rpb24gY2FwdGlvbklkKCkge1xuICAgICAgLy8gRXZlbiB0aG91Z2ggYHRoaXMuc2FmZUlkYCBsb29rcyBsaWtlIGEgbWV0aG9kLCBpdCBpcyBhIGNvbXB1dGVkIHByb3BcbiAgICAgIC8vIHRoYXQgcmV0dXJucyBhIG5ldyBmdW5jdGlvbiBpZiB0aGUgdW5kZXJseWluZyBJRCBjaGFuZ2VzXG4gICAgICByZXR1cm4gdGhpcy5pc1N0YWNrZWQgPyB0aGlzLnNhZmVJZCgnX2NhcHRpb25fJykgOiBudWxsO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHJlbmRlckNhcHRpb246IGZ1bmN0aW9uIHJlbmRlckNhcHRpb24oKSB7XG4gICAgICB2YXIgaCA9IHRoaXMuJGNyZWF0ZUVsZW1lbnQ7IC8vIEJ1aWxkIHRoZSBjYXB0aW9uXG5cbiAgICAgIHZhciAkY2FwdGlvblNsb3QgPSB0aGlzLm5vcm1hbGl6ZVNsb3QoJ3RhYmxlLWNhcHRpb24nKTtcbiAgICAgIHZhciAkY2FwdGlvbiA9IGgoKTtcblxuICAgICAgaWYgKCRjYXB0aW9uU2xvdCB8fCB0aGlzLmNhcHRpb24gfHwgdGhpcy5jYXB0aW9uSHRtbCkge1xuICAgICAgICB2YXIgZGF0YSA9IHtcbiAgICAgICAgICBrZXk6ICdjYXB0aW9uJyxcbiAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgaWQ6IHRoaXMuY2FwdGlvbklkXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghJGNhcHRpb25TbG90KSB7XG4gICAgICAgICAgZGF0YS5kb21Qcm9wcyA9IGh0bWxPclRleHQodGhpcy5jYXB0aW9uSHRtbCwgdGhpcy5jYXB0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgICRjYXB0aW9uID0gaCgnY2FwdGlvbicsIGRhdGEsIFskY2FwdGlvblNsb3RdKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICRjYXB0aW9uO1xuICAgIH1cbiAgfVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL3RhYmxlL2hlbHBlcnMvbWl4aW4tY2FwdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMjA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///204\n"); /***/ }), /* 205 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(86);\n\n\nvar TABLE_TAG_NAMES = ['TD', 'TH', 'TR']; // Returns `true` if we should ignore the click/double-click/keypress event\n// Avoids having the user need to use `@click.stop` on the form control\n\nvar filterEvent = function filterEvent(evt) {\n // Exit early when we don't have a target element\n if (!evt || !evt.target) {\n /* istanbul ignore next */\n return false;\n }\n\n var el = evt.target; // Exit early when element is disabled or a table element\n\n if (el.disabled || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n return false;\n } // Ignore the click when it was inside a dropdown menu\n\n\n if (Object(__WEBPACK_IMPORTED_MODULE_0__utils_dom__[\"c\" /* closest */])('.dropdown-menu', el)) {\n return true;\n }\n\n var label = el.tagName === 'LABEL' ? el : Object(__WEBPACK_IMPORTED_MODULE_0__utils_dom__[\"c\" /* closest */])('label', el); // If the label's form control is not disabled then we don't propagate event\n // Modern browsers have `label.control` that references the associated input, but IE11\n // does not have this property on the label element, so we resort to DOM lookups\n\n if (label) {\n var labelFor = Object(__WEBPACK_IMPORTED_MODULE_0__utils_dom__[\"g\" /* getAttr */])(label, 'for');\n var input = labelFor ? Object(__WEBPACK_IMPORTED_MODULE_0__utils_dom__[\"i\" /* getById */])(labelFor) : Object(__WEBPACK_IMPORTED_MODULE_0__utils_dom__[\"x\" /* select */])('input, select, textarea', label);\n\n if (input && !input.disabled) {\n return true;\n }\n } // Otherwise check if the event target matches one of the selectors in the\n // event filter (i.e. anchors, non disabled inputs, etc.)\n // Return `true` if we should ignore the event\n\n\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils_dom__[\"q\" /* matches */])(el, __WEBPACK_IMPORTED_MODULE_1__constants__[\"a\" /* EVENT_FILTER */]);\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (filterEvent);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL2ZpbHRlci1ldmVudC5qcz85YjE5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBZ0Y7QUFDckM7QUFDM0MseUNBQXlDO0FBQ3pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSCxNQUFNLG1FQUFPO0FBQ2I7QUFDQTs7QUFFQSw0Q0FBNEMsbUVBQU8sY0FBYztBQUNqRTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLG1FQUFPO0FBQzFCLDJCQUEyQixtRUFBTyxhQUFhLGtFQUFNOztBQUVyRDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7O0FBR0EsU0FBUyxtRUFBTyxLQUFLLGdFQUFZO0FBQ2pDOztBQUVlLG9FQUFXIiwiZmlsZSI6IjIwNS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsb3Nlc3QsIGdldEF0dHIsIGdldEJ5SWQsIG1hdGNoZXMsIHNlbGVjdCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyBFVkVOVF9GSUxURVIgfSBmcm9tICcuL2NvbnN0YW50cyc7XG52YXIgVEFCTEVfVEFHX05BTUVTID0gWydURCcsICdUSCcsICdUUiddOyAvLyBSZXR1cm5zIGB0cnVlYCBpZiB3ZSBzaG91bGQgaWdub3JlIHRoZSBjbGljay9kb3VibGUtY2xpY2sva2V5cHJlc3MgZXZlbnRcbi8vIEF2b2lkcyBoYXZpbmcgdGhlIHVzZXIgbmVlZCB0byB1c2UgYEBjbGljay5zdG9wYCBvbiB0aGUgZm9ybSBjb250cm9sXG5cbnZhciBmaWx0ZXJFdmVudCA9IGZ1bmN0aW9uIGZpbHRlckV2ZW50KGV2dCkge1xuICAvLyBFeGl0IGVhcmx5IHdoZW4gd2UgZG9uJ3QgaGF2ZSBhIHRhcmdldCBlbGVtZW50XG4gIGlmICghZXZ0IHx8ICFldnQudGFyZ2V0KSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgZWwgPSBldnQudGFyZ2V0OyAvLyBFeGl0IGVhcmx5IHdoZW4gZWxlbWVudCBpcyBkaXNhYmxlZCBvciBhIHRhYmxlIGVsZW1lbnRcblxuICBpZiAoZWwuZGlzYWJsZWQgfHwgVEFCTEVfVEFHX05BTUVTLmluZGV4T2YoZWwudGFnTmFtZSkgIT09IC0xKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IC8vIElnbm9yZSB0aGUgY2xpY2sgd2hlbiBpdCB3YXMgaW5zaWRlIGEgZHJvcGRvd24gbWVudVxuXG5cbiAgaWYgKGNsb3Nlc3QoJy5kcm9wZG93bi1tZW51JywgZWwpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YXIgbGFiZWwgPSBlbC50YWdOYW1lID09PSAnTEFCRUwnID8gZWwgOiBjbG9zZXN0KCdsYWJlbCcsIGVsKTsgLy8gSWYgdGhlIGxhYmVsJ3MgZm9ybSBjb250cm9sIGlzIG5vdCBkaXNhYmxlZCB0aGVuIHdlIGRvbid0IHByb3BhZ2F0ZSBldmVudFxuICAvLyBNb2Rlcm4gYnJvd3NlcnMgaGF2ZSBgbGFiZWwuY29udHJvbGAgdGhhdCByZWZlcmVuY2VzIHRoZSBhc3NvY2lhdGVkIGlucHV0LCBidXQgSUUxMVxuICAvLyBkb2VzIG5vdCBoYXZlIHRoaXMgcHJvcGVydHkgb24gdGhlIGxhYmVsIGVsZW1lbnQsIHNvIHdlIHJlc29ydCB0byBET00gbG9va3Vwc1xuXG4gIGlmIChsYWJlbCkge1xuICAgIHZhciBsYWJlbEZvciA9IGdldEF0dHIobGFiZWwsICdmb3InKTtcbiAgICB2YXIgaW5wdXQgPSBsYWJlbEZvciA/IGdldEJ5SWQobGFiZWxGb3IpIDogc2VsZWN0KCdpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYScsIGxhYmVsKTtcblxuICAgIGlmIChpbnB1dCAmJiAhaW5wdXQuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSAvLyBPdGhlcndpc2UgY2hlY2sgaWYgdGhlIGV2ZW50IHRhcmdldCBtYXRjaGVzIG9uZSBvZiB0aGUgc2VsZWN0b3JzIGluIHRoZVxuICAvLyBldmVudCBmaWx0ZXIgKGkuZS4gYW5jaG9ycywgbm9uIGRpc2FibGVkIGlucHV0cywgZXRjLilcbiAgLy8gUmV0dXJuIGB0cnVlYCBpZiB3ZSBzaG91bGQgaWdub3JlIHRoZSBldmVudFxuXG5cbiAgcmV0dXJuIG1hdGNoZXMoZWwsIEVWRU5UX0ZJTFRFUik7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmaWx0ZXJFdmVudDtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL3RhYmxlL2hlbHBlcnMvZmlsdGVyLWV2ZW50LmpzXG4vLyBtb2R1bGUgaWQgPSAyMDVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///205\n"); +eval("/* harmony default export */ __webpack_exports__[\"a\"] = ({\n methods: {\n renderColgroup: function renderColgroup() {\n var h = this.$createElement;\n var fields = this.computedFields;\n var $colgroup = h();\n\n if (this.hasNormalizedSlot('table-colgroup')) {\n $colgroup = h('colgroup', {\n key: 'colgroup'\n }, [this.normalizeSlot('table-colgroup', {\n columns: fields.length,\n fields: fields\n })]);\n }\n\n return $colgroup;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL21peGluLWNvbGdyb3VwLmpzP2RmODIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMjA1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICBtZXRob2RzOiB7XG4gICAgcmVuZGVyQ29sZ3JvdXA6IGZ1bmN0aW9uIHJlbmRlckNvbGdyb3VwKCkge1xuICAgICAgdmFyIGggPSB0aGlzLiRjcmVhdGVFbGVtZW50O1xuICAgICAgdmFyIGZpZWxkcyA9IHRoaXMuY29tcHV0ZWRGaWVsZHM7XG4gICAgICB2YXIgJGNvbGdyb3VwID0gaCgpO1xuXG4gICAgICBpZiAodGhpcy5oYXNOb3JtYWxpemVkU2xvdCgndGFibGUtY29sZ3JvdXAnKSkge1xuICAgICAgICAkY29sZ3JvdXAgPSBoKCdjb2xncm91cCcsIHtcbiAgICAgICAgICBrZXk6ICdjb2xncm91cCdcbiAgICAgICAgfSwgW3RoaXMubm9ybWFsaXplU2xvdCgndGFibGUtY29sZ3JvdXAnLCB7XG4gICAgICAgICAgY29sdW1uczogZmllbGRzLmxlbmd0aCxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkc1xuICAgICAgICB9KV0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gJGNvbGdyb3VwO1xuICAgIH1cbiAgfVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL3RhYmxlL2hlbHBlcnMvbWl4aW4tY29sZ3JvdXAuanNcbi8vIG1vZHVsZSBpZCA9IDIwNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///205\n"); /***/ }), /* 206 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_dom__ = __webpack_require__(6);\n // Helper to determine if a there is an active text selection on the document page\n// Used to filter out click events caused by the mouse up at end of selection\n//\n// Accepts an element as only argument to test to see if selection overlaps or is\n// contained within the element\n\nvar textSelectionActive = function textSelectionActive() {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n var sel = Object(__WEBPACK_IMPORTED_MODULE_0__utils_dom__[\"k\" /* getSel */])();\n return sel && sel.toString().trim() !== '' && sel.containsNode && Object(__WEBPACK_IMPORTED_MODULE_0__utils_dom__[\"o\" /* isElement */])(el) ? sel.containsNode(el, true) : false;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (textSelectionActive);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL3RleHQtc2VsZWN0aW9uLWFjdGl2ZS5qcz85YTQ3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQXVEO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZLGtFQUFNO0FBQ2xCLG9FQUFvRSxxRUFBUztBQUM3RTs7QUFFZSw0RUFBbUIiLCJmaWxlIjoiMjA2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0U2VsLCBpc0VsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9kb20nOyAvLyBIZWxwZXIgdG8gZGV0ZXJtaW5lIGlmIGEgdGhlcmUgaXMgYW4gYWN0aXZlIHRleHQgc2VsZWN0aW9uIG9uIHRoZSBkb2N1bWVudCBwYWdlXG4vLyBVc2VkIHRvIGZpbHRlciBvdXQgY2xpY2sgZXZlbnRzIGNhdXNlZCBieSB0aGUgbW91c2UgdXAgYXQgZW5kIG9mIHNlbGVjdGlvblxuLy9cbi8vIEFjY2VwdHMgYW4gZWxlbWVudCBhcyBvbmx5IGFyZ3VtZW50IHRvIHRlc3QgdG8gc2VlIGlmIHNlbGVjdGlvbiBvdmVybGFwcyBvciBpc1xuLy8gY29udGFpbmVkIHdpdGhpbiB0aGUgZWxlbWVudFxuXG52YXIgdGV4dFNlbGVjdGlvbkFjdGl2ZSA9IGZ1bmN0aW9uIHRleHRTZWxlY3Rpb25BY3RpdmUoKSB7XG4gIHZhciBlbCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZG9jdW1lbnQ7XG4gIHZhciBzZWwgPSBnZXRTZWwoKTtcbiAgcmV0dXJuIHNlbCAmJiBzZWwudG9TdHJpbmcoKS50cmltKCkgIT09ICcnICYmIHNlbC5jb250YWluc05vZGUgJiYgaXNFbGVtZW50KGVsKSA/IHNlbC5jb250YWluc05vZGUoZWwsIHRydWUpIDogZmFsc2U7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB0ZXh0U2VsZWN0aW9uQWN0aXZlO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdGFibGUvaGVscGVycy90ZXh0LXNlbGVjdGlvbi1hY3RpdmUuanNcbi8vIG1vZHVsZSBpZCA9IDIwNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///206\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_startcase__ = __webpack_require__(85);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_html__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__filter_event__ = __webpack_require__(207);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__text_selection_active__ = __webpack_require__(208);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__thead__ = __webpack_require__(88);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__tfoot__ = __webpack_require__(48);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__tr__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__th__ = __webpack_require__(49);\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 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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n props: {\n headVariant: {\n type: String,\n // 'light', 'dark' or null (or custom)\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_config__[\"c\" /* getComponentConfig */])('BTable', 'headVariant');\n }\n },\n theadClass: {\n type: [String, Array, Object] // default: undefined\n\n },\n theadTrClass: {\n type: [String, Array, Object] // default: undefined\n\n }\n },\n methods: {\n fieldClasses: function fieldClasses(field) {\n // Header field (<th>) classes\n return [field.class ? field.class : '', field.thClass ? field.thClass : ''];\n },\n headClicked: function headClicked(evt, field, isFoot) {\n if (this.stopIfBusy && this.stopIfBusy(evt)) {\n // If table is busy (via provider) then don't propagate\n return;\n } else if (Object(__WEBPACK_IMPORTED_MODULE_4__filter_event__[\"a\" /* default */])(evt)) {\n // Clicked on a non-disabled control so ignore\n return;\n } else if (Object(__WEBPACK_IMPORTED_MODULE_5__text_selection_active__[\"a\" /* default */])(this.$el)) {\n // User is selecting text, so ignore\n\n /* istanbul ignore next: JSDOM doesn't support getSelection() */\n return;\n }\n\n evt.stopPropagation();\n evt.preventDefault();\n this.$emit('head-clicked', field.key, field, evt, isFoot);\n },\n renderThead: function renderThead() {\n var _this = this;\n\n var isFoot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var h = this.$createElement;\n var fields = this.computedFields || [];\n\n if (this.isStackedAlways || fields.length === 0) {\n // In always stacked mode, we don't bother rendering the head/foot.\n // Or if no field headings (empty table)\n return h();\n } // Refernce to `selectAllRows` and `clearSelected()`, if table is Selectable\n\n\n var selectAllRows = this.isSelectable ? this.selectAllRows : function () {};\n var clearSelected = this.isSelectable ? this.clearSelected : function () {}; // Helper function to generate a field <th> cell\n\n var makeCell = function makeCell(field, colIndex) {\n var ariaLabel = null;\n\n if (!field.label.trim() && !field.headerTitle) {\n // In case field's label and title are empty/blank\n // We need to add a hint about what the column is about for non-sighted users\n\n /* istanbul ignore next */\n ariaLabel = Object(__WEBPACK_IMPORTED_MODULE_1__utils_startcase__[\"a\" /* default */])(field.key);\n }\n\n var hasHeadClickListener = _this.$listeners['head-clicked'] || _this.isSortable;\n var handlers = {};\n\n if (hasHeadClickListener) {\n handlers.click = function (evt) {\n _this.headClicked(evt, field, isFoot);\n };\n\n handlers.keydown = function (evt) {\n var keyCode = evt.keyCode;\n\n if (keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].ENTER || keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].SPACE) {\n _this.headClicked(evt, field, isFoot);\n }\n };\n }\n\n var sortAttrs = _this.isSortable ? _this.sortTheadThAttrs(field.key, field, isFoot) : {};\n var sortClass = _this.isSortable ? _this.sortTheadThClasses(field.key, field, isFoot) : null;\n var data = {\n key: field.key,\n class: [_this.fieldClasses(field), sortClass],\n props: {\n variant: field.variant,\n stickyColumn: field.stickyColumn\n },\n style: field.thStyle || {},\n attrs: _objectSpread({\n // We only add a tabindex of 0 if there is a head-clicked listener\n tabindex: hasHeadClickListener ? '0' : null,\n abbr: field.headerAbbr || null,\n title: field.headerTitle || null,\n 'aria-colindex': String(colIndex + 1),\n 'aria-label': ariaLabel\n }, _this.getThValues(null, field.key, field.thAttr, isFoot ? 'foot' : 'head', {}), {}, sortAttrs),\n on: handlers\n }; // Handle edge case where in-document templates are used with new\n // `v-slot:name` syntax where the browser lower-cases the v-slot's\n // name (attributes become lower cased when parsed by the browser)\n // We have replaced the square bracket syntax with round brackets\n // to prevent confusion with dynamic slot names\n\n var slotNames = [\"head(\".concat(field.key, \")\"), \"head(\".concat(field.key.toLowerCase(), \")\"), 'head()'];\n\n if (isFoot) {\n // Footer will fallback to header slot names\n slotNames = [\"foot(\".concat(field.key, \")\"), \"foot(\".concat(field.key.toLowerCase(), \")\"), 'foot()'].concat(_toConsumableArray(slotNames));\n }\n\n var hasSlot = _this.hasNormalizedSlot(slotNames);\n\n var slot = field.label;\n\n if (hasSlot) {\n slot = _this.normalizeSlot(slotNames, {\n label: field.label,\n column: field.key,\n field: field,\n isFoot: isFoot,\n // Add in row select methods\n selectAllRows: selectAllRows,\n clearSelected: clearSelected\n });\n } else {\n data.domProps = Object(__WEBPACK_IMPORTED_MODULE_3__utils_html__[\"a\" /* htmlOrText */])(field.labelHtml);\n }\n\n return h(__WEBPACK_IMPORTED_MODULE_9__th__[\"a\" /* BTh */], data, slot);\n }; // Generate the array of <th> cells\n\n\n var $cells = fields.map(makeCell).filter(function (th) {\n return th;\n }); // Genrate the row(s)\n\n var $trs = [];\n\n if (isFoot) {\n $trs.push(h(__WEBPACK_IMPORTED_MODULE_8__tr__[\"a\" /* BTr */], {\n class: this.tfootTrClass\n }, $cells));\n } else {\n var scope = {\n columns: fields.length,\n fields: fields,\n // Add in row select methods\n selectAllRows: selectAllRows,\n clearSelected: clearSelected\n };\n $trs.push(this.normalizeSlot('thead-top', scope) || h());\n $trs.push(h(__WEBPACK_IMPORTED_MODULE_8__tr__[\"a\" /* BTr */], {\n class: this.theadTrClass\n }, $cells));\n }\n\n return h(isFoot ? __WEBPACK_IMPORTED_MODULE_7__tfoot__[\"a\" /* BTfoot */] : __WEBPACK_IMPORTED_MODULE_6__thead__[\"a\" /* BThead */], {\n key: isFoot ? 'bv-tfoot' : 'bv-thead',\n class: (isFoot ? this.tfootClass : this.theadClass) || null,\n props: isFoot ? {\n footVariant: this.footVariant || this.headVariant || null\n } : {\n headVariant: this.headVariant || null\n }\n }, $trs);\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL21peGluLXRoZWFkLmpzPzdkNDQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxrQ0FBa0MsaUZBQWlGOztBQUVuSCwrQkFBK0Isd0VBQXdFOztBQUV2RyxpQ0FBaUMsK0hBQStIOztBQUVoSyxrQ0FBa0MsMEJBQTBCLDhDQUE4QyxnQkFBZ0IsT0FBTyxrQkFBa0IsRUFBRSxhQUFhLEVBQUU7O0FBRXBLLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLCtDQUErQywyQ0FBMkMsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8seUNBQXlDLGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBnQiwyQ0FBMkMsa0JBQWtCLGtDQUFrQyxxRUFBcUUsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEVBQUUsWUFBWTs7QUFFL0o7QUFDQztBQUNVO0FBQ1Y7QUFDUjtBQUNpQjtBQUN4QjtBQUNBO0FBQ047QUFDQTtBQUNiO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUZBQWtCO0FBQ2pDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFVBQVUsc0VBQVc7QUFDNUI7QUFDQTtBQUNBLE9BQU8sVUFBVSwrRUFBbUI7QUFDcEM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0Esa0ZBQWtGOztBQUVsRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUFzQix5RUFBUztBQUMvQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsNEJBQTRCLGlFQUFRLHNCQUFzQixpRUFBUTtBQUNsRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsK0VBQStFLEtBQUs7QUFDL0Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVCwwQkFBMEIsdUVBQVU7QUFDcEM7O0FBRUEsaUJBQWlCLGdEQUFHO0FBQ3BCLFFBQVE7OztBQUdSO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7O0FBRUE7QUFDQSxvQkFBb0IsZ0RBQUc7QUFDdkI7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsZ0RBQUc7QUFDdkI7QUFDQSxTQUFTO0FBQ1Q7O0FBRUEsd0JBQXdCLHNEQUFNLEdBQUcsc0RBQU07QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIyMDYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IHJldHVybiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5KGFycikgfHwgX25vbkl0ZXJhYmxlU3ByZWFkKCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2VcIik7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShpdGVyKSB7IGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGl0ZXIpIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpdGVyKSA9PT0gXCJbb2JqZWN0IEFyZ3VtZW50c11cIikgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH0gfVxuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgS2V5Q29kZXMgZnJvbSAnLi4vLi4vLi4vdXRpbHMva2V5LWNvZGVzJztcbmltcG9ydCBzdGFydENhc2UgZnJvbSAnLi4vLi4vLi4vdXRpbHMvc3RhcnRjYXNlJztcbmltcG9ydCB7IGdldENvbXBvbmVudENvbmZpZyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBodG1sT3JUZXh0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaHRtbCc7XG5pbXBvcnQgZmlsdGVyRXZlbnQgZnJvbSAnLi9maWx0ZXItZXZlbnQnO1xuaW1wb3J0IHRleHRTZWxlY3Rpb25BY3RpdmUgZnJvbSAnLi90ZXh0LXNlbGVjdGlvbi1hY3RpdmUnO1xuaW1wb3J0IHsgQlRoZWFkIH0gZnJvbSAnLi4vdGhlYWQnO1xuaW1wb3J0IHsgQlRmb290IH0gZnJvbSAnLi4vdGZvb3QnO1xuaW1wb3J0IHsgQlRyIH0gZnJvbSAnLi4vdHInO1xuaW1wb3J0IHsgQlRoIH0gZnJvbSAnLi4vdGgnO1xuZXhwb3J0IGRlZmF1bHQge1xuICBwcm9wczoge1xuICAgIGhlYWRWYXJpYW50OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAvLyAnbGlnaHQnLCAnZGFyaycgb3IgbnVsbCAob3IgY3VzdG9tKVxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiBnZXRDb21wb25lbnRDb25maWcoJ0JUYWJsZScsICdoZWFkVmFyaWFudCcpO1xuICAgICAgfVxuICAgIH0sXG4gICAgdGhlYWRDbGFzczoge1xuICAgICAgdHlwZTogW1N0cmluZywgQXJyYXksIE9iamVjdF0gLy8gZGVmYXVsdDogdW5kZWZpbmVkXG5cbiAgICB9LFxuICAgIHRoZWFkVHJDbGFzczoge1xuICAgICAgdHlwZTogW1N0cmluZywgQXJyYXksIE9iamVjdF0gLy8gZGVmYXVsdDogdW5kZWZpbmVkXG5cbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBmaWVsZENsYXNzZXM6IGZ1bmN0aW9uIGZpZWxkQ2xhc3NlcyhmaWVsZCkge1xuICAgICAgLy8gSGVhZGVyIGZpZWxkICg8dGg+KSBjbGFzc2VzXG4gICAgICByZXR1cm4gW2ZpZWxkLmNsYXNzID8gZmllbGQuY2xhc3MgOiAnJywgZmllbGQudGhDbGFzcyA/IGZpZWxkLnRoQ2xhc3MgOiAnJ107XG4gICAgfSxcbiAgICBoZWFkQ2xpY2tlZDogZnVuY3Rpb24gaGVhZENsaWNrZWQoZXZ0LCBmaWVsZCwgaXNGb290KSB7XG4gICAgICBpZiAodGhpcy5zdG9wSWZCdXN5ICYmIHRoaXMuc3RvcElmQnVzeShldnQpKSB7XG4gICAgICAgIC8vIElmIHRhYmxlIGlzIGJ1c3kgKHZpYSBwcm92aWRlcikgdGhlbiBkb24ndCBwcm9wYWdhdGVcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmIChmaWx0ZXJFdmVudChldnQpKSB7XG4gICAgICAgIC8vIENsaWNrZWQgb24gYSBub24tZGlzYWJsZWQgY29udHJvbCBzbyBpZ25vcmVcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmICh0ZXh0U2VsZWN0aW9uQWN0aXZlKHRoaXMuJGVsKSkge1xuICAgICAgICAvLyBVc2VyIGlzIHNlbGVjdGluZyB0ZXh0LCBzbyBpZ25vcmVcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogSlNET00gZG9lc24ndCBzdXBwb3J0IGdldFNlbGVjdGlvbigpICovXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLiRlbWl0KCdoZWFkLWNsaWNrZWQnLCBmaWVsZC5rZXksIGZpZWxkLCBldnQsIGlzRm9vdCk7XG4gICAgfSxcbiAgICByZW5kZXJUaGVhZDogZnVuY3Rpb24gcmVuZGVyVGhlYWQoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgaXNGb290ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBmYWxzZTtcbiAgICAgIHZhciBoID0gdGhpcy4kY3JlYXRlRWxlbWVudDtcbiAgICAgIHZhciBmaWVsZHMgPSB0aGlzLmNvbXB1dGVkRmllbGRzIHx8IFtdO1xuXG4gICAgICBpZiAodGhpcy5pc1N0YWNrZWRBbHdheXMgfHwgZmllbGRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAvLyBJbiBhbHdheXMgc3RhY2tlZCBtb2RlLCB3ZSBkb24ndCBib3RoZXIgcmVuZGVyaW5nIHRoZSBoZWFkL2Zvb3QuXG4gICAgICAgIC8vIE9yIGlmIG5vIGZpZWxkIGhlYWRpbmdzIChlbXB0eSB0YWJsZSlcbiAgICAgICAgcmV0dXJuIGgoKTtcbiAgICAgIH0gLy8gUmVmZXJuY2UgdG8gYHNlbGVjdEFsbFJvd3NgIGFuZCBgY2xlYXJTZWxlY3RlZCgpYCwgaWYgdGFibGUgaXMgU2VsZWN0YWJsZVxuXG5cbiAgICAgIHZhciBzZWxlY3RBbGxSb3dzID0gdGhpcy5pc1NlbGVjdGFibGUgPyB0aGlzLnNlbGVjdEFsbFJvd3MgOiBmdW5jdGlvbiAoKSB7fTtcbiAgICAgIHZhciBjbGVhclNlbGVjdGVkID0gdGhpcy5pc1NlbGVjdGFibGUgPyB0aGlzLmNsZWFyU2VsZWN0ZWQgOiBmdW5jdGlvbiAoKSB7fTsgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGEgZmllbGQgPHRoPiBjZWxsXG5cbiAgICAgIHZhciBtYWtlQ2VsbCA9IGZ1bmN0aW9uIG1ha2VDZWxsKGZpZWxkLCBjb2xJbmRleCkge1xuICAgICAgICB2YXIgYXJpYUxhYmVsID0gbnVsbDtcblxuICAgICAgICBpZiAoIWZpZWxkLmxhYmVsLnRyaW0oKSAmJiAhZmllbGQuaGVhZGVyVGl0bGUpIHtcbiAgICAgICAgICAvLyBJbiBjYXNlIGZpZWxkJ3MgbGFiZWwgYW5kIHRpdGxlIGFyZSBlbXB0eS9ibGFua1xuICAgICAgICAgIC8vIFdlIG5lZWQgdG8gYWRkIGEgaGludCBhYm91dCB3aGF0IHRoZSBjb2x1bW4gaXMgYWJvdXQgZm9yIG5vbi1zaWdodGVkIHVzZXJzXG5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgIGFyaWFMYWJlbCA9IHN0YXJ0Q2FzZShmaWVsZC5rZXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGhhc0hlYWRDbGlja0xpc3RlbmVyID0gX3RoaXMuJGxpc3RlbmVyc1snaGVhZC1jbGlja2VkJ10gfHwgX3RoaXMuaXNTb3J0YWJsZTtcbiAgICAgICAgdmFyIGhhbmRsZXJzID0ge307XG5cbiAgICAgICAgaWYgKGhhc0hlYWRDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgaGFuZGxlcnMuY2xpY2sgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICBfdGhpcy5oZWFkQ2xpY2tlZChldnQsIGZpZWxkLCBpc0Zvb3QpO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBoYW5kbGVycy5rZXlkb3duID0gZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgdmFyIGtleUNvZGUgPSBldnQua2V5Q29kZTtcblxuICAgICAgICAgICAgaWYgKGtleUNvZGUgPT09IEtleUNvZGVzLkVOVEVSIHx8IGtleUNvZGUgPT09IEtleUNvZGVzLlNQQUNFKSB7XG4gICAgICAgICAgICAgIF90aGlzLmhlYWRDbGlja2VkKGV2dCwgZmllbGQsIGlzRm9vdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzb3J0QXR0cnMgPSBfdGhpcy5pc1NvcnRhYmxlID8gX3RoaXMuc29ydFRoZWFkVGhBdHRycyhmaWVsZC5rZXksIGZpZWxkLCBpc0Zvb3QpIDoge307XG4gICAgICAgIHZhciBzb3J0Q2xhc3MgPSBfdGhpcy5pc1NvcnRhYmxlID8gX3RoaXMuc29ydFRoZWFkVGhDbGFzc2VzKGZpZWxkLmtleSwgZmllbGQsIGlzRm9vdCkgOiBudWxsO1xuICAgICAgICB2YXIgZGF0YSA9IHtcbiAgICAgICAgICBrZXk6IGZpZWxkLmtleSxcbiAgICAgICAgICBjbGFzczogW190aGlzLmZpZWxkQ2xhc3NlcyhmaWVsZCksIHNvcnRDbGFzc10sXG4gICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHZhcmlhbnQ6IGZpZWxkLnZhcmlhbnQsXG4gICAgICAgICAgICBzdGlja3lDb2x1bW46IGZpZWxkLnN0aWNreUNvbHVtblxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3R5bGU6IGZpZWxkLnRoU3R5bGUgfHwge30sXG4gICAgICAgICAgYXR0cnM6IF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgICAgLy8gV2Ugb25seSBhZGQgYSB0YWJpbmRleCBvZiAwIGlmIHRoZXJlIGlzIGEgaGVhZC1jbGlja2VkIGxpc3RlbmVyXG4gICAgICAgICAgICB0YWJpbmRleDogaGFzSGVhZENsaWNrTGlzdGVuZXIgPyAnMCcgOiBudWxsLFxuICAgICAgICAgICAgYWJicjogZmllbGQuaGVhZGVyQWJiciB8fCBudWxsLFxuICAgICAgICAgICAgdGl0bGU6IGZpZWxkLmhlYWRlclRpdGxlIHx8IG51bGwsXG4gICAgICAgICAgICAnYXJpYS1jb2xpbmRleCc6IFN0cmluZyhjb2xJbmRleCArIDEpLFxuICAgICAgICAgICAgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWxcbiAgICAgICAgICB9LCBfdGhpcy5nZXRUaFZhbHVlcyhudWxsLCBmaWVsZC5rZXksIGZpZWxkLnRoQXR0ciwgaXNGb290ID8gJ2Zvb3QnIDogJ2hlYWQnLCB7fSksIHt9LCBzb3J0QXR0cnMpLFxuICAgICAgICAgIG9uOiBoYW5kbGVyc1xuICAgICAgICB9OyAvLyBIYW5kbGUgZWRnZSBjYXNlIHdoZXJlIGluLWRvY3VtZW50IHRlbXBsYXRlcyBhcmUgdXNlZCB3aXRoIG5ld1xuICAgICAgICAvLyBgdi1zbG90Om5hbWVgIHN5bnRheCB3aGVyZSB0aGUgYnJvd3NlciBsb3dlci1jYXNlcyB0aGUgdi1zbG90J3NcbiAgICAgICAgLy8gbmFtZSAoYXR0cmlidXRlcyBiZWNvbWUgbG93ZXIgY2FzZWQgd2hlbiBwYXJzZWQgYnkgdGhlIGJyb3dzZXIpXG4gICAgICAgIC8vIFdlIGhhdmUgcmVwbGFjZWQgdGhlIHNxdWFyZSBicmFja2V0IHN5bnRheCB3aXRoIHJvdW5kIGJyYWNrZXRzXG4gICAgICAgIC8vIHRvIHByZXZlbnQgY29uZnVzaW9uIHdpdGggZHluYW1pYyBzbG90IG5hbWVzXG5cbiAgICAgICAgdmFyIHNsb3ROYW1lcyA9IFtcImhlYWQoXCIuY29uY2F0KGZpZWxkLmtleSwgXCIpXCIpLCBcImhlYWQoXCIuY29uY2F0KGZpZWxkLmtleS50b0xvd2VyQ2FzZSgpLCBcIilcIiksICdoZWFkKCknXTtcblxuICAgICAgICBpZiAoaXNGb290KSB7XG4gICAgICAgICAgLy8gRm9vdGVyIHdpbGwgZmFsbGJhY2sgdG8gaGVhZGVyIHNsb3QgbmFtZXNcbiAgICAgICAgICBzbG90TmFtZXMgPSBbXCJmb290KFwiLmNvbmNhdChmaWVsZC5rZXksIFwiKVwiKSwgXCJmb290KFwiLmNvbmNhdChmaWVsZC5rZXkudG9Mb3dlckNhc2UoKSwgXCIpXCIpLCAnZm9vdCgpJ10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShzbG90TmFtZXMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBoYXNTbG90ID0gX3RoaXMuaGFzTm9ybWFsaXplZFNsb3Qoc2xvdE5hbWVzKTtcblxuICAgICAgICB2YXIgc2xvdCA9IGZpZWxkLmxhYmVsO1xuXG4gICAgICAgIGlmIChoYXNTbG90KSB7XG4gICAgICAgICAgc2xvdCA9IF90aGlzLm5vcm1hbGl6ZVNsb3Qoc2xvdE5hbWVzLCB7XG4gICAgICAgICAgICBsYWJlbDogZmllbGQubGFiZWwsXG4gICAgICAgICAgICBjb2x1bW46IGZpZWxkLmtleSxcbiAgICAgICAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgICAgICAgIGlzRm9vdDogaXNGb290LFxuICAgICAgICAgICAgLy8gQWRkIGluIHJvdyBzZWxlY3QgbWV0aG9kc1xuICAgICAgICAgICAgc2VsZWN0QWxsUm93czogc2VsZWN0QWxsUm93cyxcbiAgICAgICAgICAgIGNsZWFyU2VsZWN0ZWQ6IGNsZWFyU2VsZWN0ZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkYXRhLmRvbVByb3BzID0gaHRtbE9yVGV4dChmaWVsZC5sYWJlbEh0bWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGgoQlRoLCBkYXRhLCBzbG90KTtcbiAgICAgIH07IC8vIEdlbmVyYXRlIHRoZSBhcnJheSBvZiA8dGg+IGNlbGxzXG5cblxuICAgICAgdmFyICRjZWxscyA9IGZpZWxkcy5tYXAobWFrZUNlbGwpLmZpbHRlcihmdW5jdGlvbiAodGgpIHtcbiAgICAgICAgcmV0dXJuIHRoO1xuICAgICAgfSk7IC8vIEdlbnJhdGUgdGhlIHJvdyhzKVxuXG4gICAgICB2YXIgJHRycyA9IFtdO1xuXG4gICAgICBpZiAoaXNGb290KSB7XG4gICAgICAgICR0cnMucHVzaChoKEJUciwge1xuICAgICAgICAgIGNsYXNzOiB0aGlzLnRmb290VHJDbGFzc1xuICAgICAgICB9LCAkY2VsbHMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBzY29wZSA9IHtcbiAgICAgICAgICBjb2x1bW5zOiBmaWVsZHMubGVuZ3RoLFxuICAgICAgICAgIGZpZWxkczogZmllbGRzLFxuICAgICAgICAgIC8vIEFkZCBpbiByb3cgc2VsZWN0IG1ldGhvZHNcbiAgICAgICAgICBzZWxlY3RBbGxSb3dzOiBzZWxlY3RBbGxSb3dzLFxuICAgICAgICAgIGNsZWFyU2VsZWN0ZWQ6IGNsZWFyU2VsZWN0ZWRcbiAgICAgICAgfTtcbiAgICAgICAgJHRycy5wdXNoKHRoaXMubm9ybWFsaXplU2xvdCgndGhlYWQtdG9wJywgc2NvcGUpIHx8IGgoKSk7XG4gICAgICAgICR0cnMucHVzaChoKEJUciwge1xuICAgICAgICAgIGNsYXNzOiB0aGlzLnRoZWFkVHJDbGFzc1xuICAgICAgICB9LCAkY2VsbHMpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGgoaXNGb290ID8gQlRmb290IDogQlRoZWFkLCB7XG4gICAgICAgIGtleTogaXNGb290ID8gJ2J2LXRmb290JyA6ICdidi10aGVhZCcsXG4gICAgICAgIGNsYXNzOiAoaXNGb290ID8gdGhpcy50Zm9vdENsYXNzIDogdGhpcy50aGVhZENsYXNzKSB8fCBudWxsLFxuICAgICAgICBwcm9wczogaXNGb290ID8ge1xuICAgICAgICAgIGZvb3RWYXJpYW50OiB0aGlzLmZvb3RWYXJpYW50IHx8IHRoaXMuaGVhZFZhcmlhbnQgfHwgbnVsbFxuICAgICAgICB9IDoge1xuICAgICAgICAgIGhlYWRWYXJpYW50OiB0aGlzLmhlYWRWYXJpYW50IHx8IG51bGxcbiAgICAgICAgfVxuICAgICAgfSwgJHRycyk7XG4gICAgfVxuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdGFibGUvaGVscGVycy9taXhpbi10aGVhZC5qc1xuLy8gbW9kdWxlIGlkID0gMjA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///206\n"); /***/ }), /* 207 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__tfoot__ = __webpack_require__(48);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n props: {\n footClone: {\n type: Boolean,\n default: false\n },\n footVariant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils_config__[\"c\" /* getComponentConfig */])('BTable', 'footVariant');\n }\n },\n tfootClass: {\n type: [String, Array, Object],\n default: null\n },\n tfootTrClass: {\n type: [String, Array, Object],\n default: null\n }\n },\n methods: {\n renderTFootCustom: function renderTFootCustom() {\n var h = this.$createElement;\n\n if (this.hasNormalizedSlot('custom-foot')) {\n return h(__WEBPACK_IMPORTED_MODULE_1__tfoot__[\"a\" /* BTfoot */], {\n key: 'bv-tfoot-custom',\n class: this.tfootClass || null,\n props: {\n footVariant: this.footVariant || this.headVariant || null\n }\n }, this.normalizeSlot('custom-foot', {\n items: this.computedItems.slice(),\n fields: this.computedFields.slice(),\n columns: this.computedFields.length\n }));\n } else {\n return h();\n }\n },\n renderTfoot: function renderTfoot() {\n // Passing true to renderThead will make it render a tfoot\n return this.footClone ? this.renderThead(true) : this.renderTFootCustom();\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL21peGluLXRmb290LmpzPzg4NDAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUEyRDtBQUN6QjtBQUNuQjtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUZBQWtCO0FBQ2pDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsc0RBQU07QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMjA3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0Q29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY29uZmlnJztcbmltcG9ydCB7IEJUZm9vdCB9IGZyb20gJy4uL3Rmb290JztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgcHJvcHM6IHtcbiAgICBmb290Q2xvbmU6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgZm9vdFZhcmlhbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKCdCVGFibGUnLCAnZm9vdFZhcmlhbnQnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHRmb290Q2xhc3M6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIEFycmF5LCBPYmplY3RdLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgdGZvb3RUckNsYXNzOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBBcnJheSwgT2JqZWN0XSxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICByZW5kZXJURm9vdEN1c3RvbTogZnVuY3Rpb24gcmVuZGVyVEZvb3RDdXN0b20oKSB7XG4gICAgICB2YXIgaCA9IHRoaXMuJGNyZWF0ZUVsZW1lbnQ7XG5cbiAgICAgIGlmICh0aGlzLmhhc05vcm1hbGl6ZWRTbG90KCdjdXN0b20tZm9vdCcpKSB7XG4gICAgICAgIHJldHVybiBoKEJUZm9vdCwge1xuICAgICAgICAgIGtleTogJ2J2LXRmb290LWN1c3RvbScsXG4gICAgICAgICAgY2xhc3M6IHRoaXMudGZvb3RDbGFzcyB8fCBudWxsLFxuICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBmb290VmFyaWFudDogdGhpcy5mb290VmFyaWFudCB8fCB0aGlzLmhlYWRWYXJpYW50IHx8IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHRoaXMubm9ybWFsaXplU2xvdCgnY3VzdG9tLWZvb3QnLCB7XG4gICAgICAgICAgaXRlbXM6IHRoaXMuY29tcHV0ZWRJdGVtcy5zbGljZSgpLFxuICAgICAgICAgIGZpZWxkczogdGhpcy5jb21wdXRlZEZpZWxkcy5zbGljZSgpLFxuICAgICAgICAgIGNvbHVtbnM6IHRoaXMuY29tcHV0ZWRGaWVsZHMubGVuZ3RoXG4gICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBoKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICByZW5kZXJUZm9vdDogZnVuY3Rpb24gcmVuZGVyVGZvb3QoKSB7XG4gICAgICAvLyBQYXNzaW5nIHRydWUgdG8gcmVuZGVyVGhlYWQgd2lsbCBtYWtlIGl0IHJlbmRlciBhIHRmb290XG4gICAgICByZXR1cm4gdGhpcy5mb290Q2xvbmUgPyB0aGlzLnJlbmRlclRoZWFkKHRydWUpIDogdGhpcy5yZW5kZXJURm9vdEN1c3RvbSgpO1xuICAgIH1cbiAgfVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL3RhYmxlL2hlbHBlcnMvbWl4aW4tdGZvb3QuanNcbi8vIG1vZHVsZSBpZCA9IDIwN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///207\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__constants__ = __webpack_require__(86);\n\n\nvar TABLE_TAG_NAMES = ['TD', 'TH', 'TR']; // Returns `true` if we should ignore the click/double-click/keypress event\n// Avoids having the user need to use `@click.stop` on the form control\n\nvar filterEvent = function filterEvent(evt) {\n // Exit early when we don't have a target element\n if (!evt || !evt.target) {\n /* istanbul ignore next */\n return false;\n }\n\n var el = evt.target; // Exit early when element is disabled or a table element\n\n if (el.disabled || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n return false;\n } // Ignore the click when it was inside a dropdown menu\n\n\n if (Object(__WEBPACK_IMPORTED_MODULE_0__utils_dom__[\"c\" /* closest */])('.dropdown-menu', el)) {\n return true;\n }\n\n var label = el.tagName === 'LABEL' ? el : Object(__WEBPACK_IMPORTED_MODULE_0__utils_dom__[\"c\" /* closest */])('label', el); // If the label's form control is not disabled then we don't propagate event\n // Modern browsers have `label.control` that references the associated input, but IE11\n // does not have this property on the label element, so we resort to DOM lookups\n\n if (label) {\n var labelFor = Object(__WEBPACK_IMPORTED_MODULE_0__utils_dom__[\"g\" /* getAttr */])(label, 'for');\n var input = labelFor ? Object(__WEBPACK_IMPORTED_MODULE_0__utils_dom__[\"i\" /* getById */])(labelFor) : Object(__WEBPACK_IMPORTED_MODULE_0__utils_dom__[\"x\" /* select */])('input, select, textarea', label);\n\n if (input && !input.disabled) {\n return true;\n }\n } // Otherwise check if the event target matches one of the selectors in the\n // event filter (i.e. anchors, non disabled inputs, etc.)\n // Return `true` if we should ignore the event\n\n\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils_dom__[\"q\" /* matches */])(el, __WEBPACK_IMPORTED_MODULE_1__constants__[\"a\" /* EVENT_FILTER */]);\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (filterEvent);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL2ZpbHRlci1ldmVudC5qcz85YjE5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBZ0Y7QUFDckM7QUFDM0MseUNBQXlDO0FBQ3pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSCxNQUFNLG1FQUFPO0FBQ2I7QUFDQTs7QUFFQSw0Q0FBNEMsbUVBQU8sY0FBYztBQUNqRTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLG1FQUFPO0FBQzFCLDJCQUEyQixtRUFBTyxhQUFhLGtFQUFNOztBQUVyRDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7O0FBR0EsU0FBUyxtRUFBTyxLQUFLLGdFQUFZO0FBQ2pDOztBQUVlLG9FQUFXIiwiZmlsZSI6IjIwNy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsb3Nlc3QsIGdldEF0dHIsIGdldEJ5SWQsIG1hdGNoZXMsIHNlbGVjdCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyBFVkVOVF9GSUxURVIgfSBmcm9tICcuL2NvbnN0YW50cyc7XG52YXIgVEFCTEVfVEFHX05BTUVTID0gWydURCcsICdUSCcsICdUUiddOyAvLyBSZXR1cm5zIGB0cnVlYCBpZiB3ZSBzaG91bGQgaWdub3JlIHRoZSBjbGljay9kb3VibGUtY2xpY2sva2V5cHJlc3MgZXZlbnRcbi8vIEF2b2lkcyBoYXZpbmcgdGhlIHVzZXIgbmVlZCB0byB1c2UgYEBjbGljay5zdG9wYCBvbiB0aGUgZm9ybSBjb250cm9sXG5cbnZhciBmaWx0ZXJFdmVudCA9IGZ1bmN0aW9uIGZpbHRlckV2ZW50KGV2dCkge1xuICAvLyBFeGl0IGVhcmx5IHdoZW4gd2UgZG9uJ3QgaGF2ZSBhIHRhcmdldCBlbGVtZW50XG4gIGlmICghZXZ0IHx8ICFldnQudGFyZ2V0KSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgZWwgPSBldnQudGFyZ2V0OyAvLyBFeGl0IGVhcmx5IHdoZW4gZWxlbWVudCBpcyBkaXNhYmxlZCBvciBhIHRhYmxlIGVsZW1lbnRcblxuICBpZiAoZWwuZGlzYWJsZWQgfHwgVEFCTEVfVEFHX05BTUVTLmluZGV4T2YoZWwudGFnTmFtZSkgIT09IC0xKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IC8vIElnbm9yZSB0aGUgY2xpY2sgd2hlbiBpdCB3YXMgaW5zaWRlIGEgZHJvcGRvd24gbWVudVxuXG5cbiAgaWYgKGNsb3Nlc3QoJy5kcm9wZG93bi1tZW51JywgZWwpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YXIgbGFiZWwgPSBlbC50YWdOYW1lID09PSAnTEFCRUwnID8gZWwgOiBjbG9zZXN0KCdsYWJlbCcsIGVsKTsgLy8gSWYgdGhlIGxhYmVsJ3MgZm9ybSBjb250cm9sIGlzIG5vdCBkaXNhYmxlZCB0aGVuIHdlIGRvbid0IHByb3BhZ2F0ZSBldmVudFxuICAvLyBNb2Rlcm4gYnJvd3NlcnMgaGF2ZSBgbGFiZWwuY29udHJvbGAgdGhhdCByZWZlcmVuY2VzIHRoZSBhc3NvY2lhdGVkIGlucHV0LCBidXQgSUUxMVxuICAvLyBkb2VzIG5vdCBoYXZlIHRoaXMgcHJvcGVydHkgb24gdGhlIGxhYmVsIGVsZW1lbnQsIHNvIHdlIHJlc29ydCB0byBET00gbG9va3Vwc1xuXG4gIGlmIChsYWJlbCkge1xuICAgIHZhciBsYWJlbEZvciA9IGdldEF0dHIobGFiZWwsICdmb3InKTtcbiAgICB2YXIgaW5wdXQgPSBsYWJlbEZvciA/IGdldEJ5SWQobGFiZWxGb3IpIDogc2VsZWN0KCdpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYScsIGxhYmVsKTtcblxuICAgIGlmIChpbnB1dCAmJiAhaW5wdXQuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSAvLyBPdGhlcndpc2UgY2hlY2sgaWYgdGhlIGV2ZW50IHRhcmdldCBtYXRjaGVzIG9uZSBvZiB0aGUgc2VsZWN0b3JzIGluIHRoZVxuICAvLyBldmVudCBmaWx0ZXIgKGkuZS4gYW5jaG9ycywgbm9uIGRpc2FibGVkIGlucHV0cywgZXRjLilcbiAgLy8gUmV0dXJuIGB0cnVlYCBpZiB3ZSBzaG91bGQgaWdub3JlIHRoZSBldmVudFxuXG5cbiAgcmV0dXJuIG1hdGNoZXMoZWwsIEVWRU5UX0ZJTFRFUik7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmaWx0ZXJFdmVudDtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL3RhYmxlL2hlbHBlcnMvZmlsdGVyLWV2ZW50LmpzXG4vLyBtb2R1bGUgaWQgPSAyMDdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///207\n"); /***/ }), /* 208 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__tbody__ = __webpack_require__(89);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__filter_event__ = __webpack_require__(205);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__text_selection_active__ = __webpack_require__(206);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixin_tbody_row__ = __webpack_require__(266);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n\nvar props = _objectSpread({}, __WEBPACK_IMPORTED_MODULE_3__tbody__[\"b\" /* props */], {\n tbodyClass: {\n type: [String, Array, Object] // default: undefined\n\n }\n});\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n mixins: [__WEBPACK_IMPORTED_MODULE_6__mixin_tbody_row__[\"a\" /* default */]],\n props: props,\n methods: {\n // Helper methods\n getTbodyTrs: function getTbodyTrs() {\n // Returns all the item TR elements (excludes detail and spacer rows)\n // `this.$refs.itemRows` is an array of item TR components/elements\n // Rows should all be B-TR components, but we map to TR elements\n // TODO: This may take time for tables many rows, so we may want to cache\n // the result of this during each render cycle on a non-reactive\n // property. We clear out the cache as each render starts, and\n // populate it on first access of this method if null\n return (this.$refs.itemRows || []).map(function (tr) {\n return tr.$el || tr;\n });\n },\n getTbodyTrIndex: function getTbodyTrIndex(el) {\n // Returns index of a particular TBODY item TR\n // We set `true` on closest to include self in result\n\n /* istanbul ignore next: should not normally happen */\n if (!Object(__WEBPACK_IMPORTED_MODULE_2__utils_dom__[\"o\" /* isElement */])(el)) {\n return -1;\n }\n\n var tr = el.tagName === 'TR' ? el : Object(__WEBPACK_IMPORTED_MODULE_2__utils_dom__[\"c\" /* closest */])('tr', el, true);\n return tr ? this.getTbodyTrs().indexOf(tr) : -1;\n },\n emitTbodyRowEvent: function emitTbodyRowEvent(type, evt) {\n // Emits a row event, with the item object, row index and original event\n if (type && evt && evt.target) {\n var rowIndex = this.getTbodyTrIndex(evt.target);\n\n if (rowIndex > -1) {\n // The array of TRs correlate to the `computedItems` array\n var item = this.computedItems[rowIndex];\n this.$emit(type, item, rowIndex, evt);\n }\n }\n },\n tbodyRowEvtStopped: function tbodyRowEvtStopped(evt) {\n return this.stopIfBusy && this.stopIfBusy(evt);\n },\n // Delegated row event handlers\n onTbodyRowKeydown: function onTbodyRowKeydown(evt) {\n // Keyboard navigation and row click emulation\n var target = evt.target;\n\n if (this.tbodyRowEvtStopped(evt) || target.tagName !== 'TR' || target !== document.activeElement || target.tabIndex !== 0) {\n // Early exit if not an item row TR\n return;\n }\n\n var keyCode = evt.keyCode;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"a\" /* arrayIncludes */])([__WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].ENTER, __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].SPACE], keyCode)) {\n // Emulated click for keyboard users, transfer to click handler\n evt.stopPropagation();\n evt.preventDefault();\n this.onTBodyRowClicked(evt);\n } else if (Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"a\" /* arrayIncludes */])([__WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].UP, __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].DOWN, __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].HOME, __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].END], keyCode)) {\n // Keyboard navigation\n var rowIndex = this.getTbodyTrIndex(target);\n\n if (rowIndex > -1) {\n evt.stopPropagation();\n evt.preventDefault();\n var trs = this.getTbodyTrs();\n var shift = evt.shiftKey;\n\n if (keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].HOME || shift && keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].UP) {\n // Focus first row\n trs[0].focus();\n } else if (keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].END || shift && keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].DOWN) {\n // Focus last row\n trs[trs.length - 1].focus();\n } else if (keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].UP && rowIndex > 0) {\n // Focus previous row\n trs[rowIndex - 1].focus();\n } else if (keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].DOWN && rowIndex < trs.length - 1) {\n // Focus next row\n trs[rowIndex + 1].focus();\n }\n }\n }\n },\n onTBodyRowClicked: function onTBodyRowClicked(evt) {\n if (this.tbodyRowEvtStopped(evt)) {\n // If table is busy, then don't propagate\n return;\n } else if (Object(__WEBPACK_IMPORTED_MODULE_4__filter_event__[\"a\" /* default */])(evt) || Object(__WEBPACK_IMPORTED_MODULE_5__text_selection_active__[\"a\" /* default */])(this.$el)) {\n // Clicked on a non-disabled control so ignore\n // Or user is selecting text, so ignore\n return;\n }\n\n this.emitTbodyRowEvent('row-clicked', evt);\n },\n onTbodyRowMiddleMouseRowClicked: function onTbodyRowMiddleMouseRowClicked(evt) {\n if (!this.tbodyRowEvtStopped(evt) && evt.which === 2) {\n this.emitTbodyRowEvent('row-middle-clicked', evt);\n }\n },\n onTbodyRowContextmenu: function onTbodyRowContextmenu(evt) {\n if (!this.tbodyRowEvtStopped(evt)) {\n this.emitTbodyRowEvent('row-contextmenu', evt);\n }\n },\n onTbodyRowDblClicked: function onTbodyRowDblClicked(evt) {\n if (!this.tbodyRowEvtStopped(evt) && !Object(__WEBPACK_IMPORTED_MODULE_4__filter_event__[\"a\" /* default */])(evt)) {\n this.emitTbodyRowEvent('row-dblclicked', evt);\n }\n },\n // Note: Row hover handlers are handled by the tbody-row mixin\n // As mouseenter/mouseleave events do not bubble\n //\n // Render Helper\n renderTbody: function renderTbody() {\n var _this = this;\n\n // Render the tbody element and children\n var items = this.computedItems; // Shortcut to `createElement` (could use `this._c()` instead)\n\n var h = this.$createElement;\n var hasRowClickHandler = this.$listeners['row-clicked'] || this.isSelectable; // Prepare the tbody rows\n\n var $rows = []; // Add the item data rows or the busy slot\n\n var $busy = this.renderBusy ? this.renderBusy() : null;\n\n if ($busy) {\n // If table is busy and a busy slot, then return only the busy \"row\" indicator\n $rows.push($busy);\n } else {\n // Table isn't busy, or we don't have a busy slot\n // Create a slot cache for improved performance when looking up cell slot names\n // Values will be keyed by the field's `key` and will store the slot's name\n // Slots could be dynamic (i.e. `v-if`), so we must compute on each render\n // Used by tbody-row mixin render helper\n var cache = {};\n var defaultSlotName = this.hasNormalizedSlot('cell()') ? 'cell()' : null;\n this.computedFields.forEach(function (field) {\n var key = field.key;\n var fullName = \"cell(\".concat(key, \")\");\n var lowerName = \"cell(\".concat(key.toLowerCase(), \")\");\n cache[key] = _this.hasNormalizedSlot(fullName) ? fullName : _this.hasNormalizedSlot(lowerName) ? lowerName : defaultSlotName;\n }); // Created as a non-reactive property so to not trigger component updates\n // Must be a fresh object each render\n\n this.$_bodyFieldSlotNameCache = cache; // Add static top row slot (hidden in visibly stacked mode\n // as we can't control `data-label` attr)\n\n $rows.push(this.renderTopRow ? this.renderTopRow() : h()); // Render the rows\n\n items.forEach(function (item, rowIndex) {\n // Render the individual item row (rows if details slot)\n $rows.push(_this.renderTbodyRow(item, rowIndex));\n }); // Empty items / empty filtered row slot (only shows if `items.length < 1`)\n\n $rows.push(this.renderEmpty ? this.renderEmpty() : h()); // Static bottom row slot (hidden in visibly stacked mode\n // as we can't control `data-label` attr)\n\n $rows.push(this.renderBottomRow ? this.renderBottomRow() : h());\n }\n\n var handlers = {\n // TODO: We may want to to only instantiate these handlers\n // if there is an event listener registered\n auxclick: this.onTbodyRowMiddleMouseRowClicked,\n // TODO: Perhaps we do want to automatically prevent the\n // default context menu from showing if there is\n // a `row-contextmenu` listener registered.\n contextmenu: this.onTbodyRowContextmenu,\n // The following event(s) is not considered A11Y friendly\n dblclick: this.onTbodyRowDblClicked // hover events (mouseenter/mouseleave) ad handled by tbody-row mixin\n\n };\n\n if (hasRowClickHandler) {\n handlers.click = this.onTBodyRowClicked;\n handlers.keydown = this.onTbodyRowKeydown;\n } // Assemble rows into the tbody\n\n\n var $tbody = h(__WEBPACK_IMPORTED_MODULE_3__tbody__[\"a\" /* BTbody */], {\n ref: 'tbody',\n class: this.tbodyClass || null,\n props: {\n tbodyTransitionProps: this.tbodyTransitionProps,\n tbodyTransitionHandlers: this.tbodyTransitionHandlers\n },\n // BTbody transfers all native event listeners to the root element\n // TODO: Only set the handlers if the table is not busy\n on: handlers\n }, $rows); // Return the assembled tbody\n\n return $tbody;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL21peGluLXRib2R5LmpzP2Q5MTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRS9KO0FBQ0s7QUFDRztBQUNEO0FBQ2Q7QUFDaUI7QUFDWjs7QUFFOUMsNEJBQTRCLEVBQUUscURBQVU7QUFDeEM7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWM7QUFDZixXQUFXLGlFQUFhO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLHFFQUFTO0FBQ3BCO0FBQ0E7O0FBRUEsMENBQTBDLG1FQUFPO0FBQ2pEO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLFVBQVUsMkVBQWEsRUFBRSxpRUFBUSxRQUFRLGlFQUFRO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxVQUFVLDJFQUFhLEVBQUUsaUVBQVEsS0FBSyxpRUFBUSxPQUFPLGlFQUFRLE9BQU8saUVBQVE7QUFDbkY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDBCQUEwQixpRUFBUSw4QkFBOEIsaUVBQVE7QUFDeEU7QUFDQTtBQUNBLFdBQVcsc0JBQXNCLGlFQUFRLDZCQUE2QixpRUFBUTtBQUM5RTtBQUNBO0FBQ0EsV0FBVyxzQkFBc0IsaUVBQVE7QUFDekM7QUFDQTtBQUNBLFdBQVcsc0JBQXNCLGlFQUFRO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFVBQVUsc0VBQVcsU0FBUywrRUFBbUI7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSw0Q0FBNEMsc0VBQVc7QUFDdkQ7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQ0FBcUM7O0FBRXJDO0FBQ0EsbUZBQW1GOztBQUVuRixxQkFBcUI7O0FBRXJCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBQUU7QUFDWDs7QUFFQSw4Q0FBOEM7QUFDOUM7O0FBRUEsa0VBQWtFOztBQUVsRTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBQUU7O0FBRVgsZ0VBQWdFO0FBQ2hFOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1AscUJBQXFCLHNEQUFNO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTyxTQUFTOztBQUVoQjtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6IjIwOC5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhzb3VyY2UsIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBLZXlDb2RlcyBmcm9tICcuLi8uLi8uLi91dGlscy9rZXktY29kZXMnO1xuaW1wb3J0IHsgYXJyYXlJbmNsdWRlcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FycmF5JztcbmltcG9ydCB7IGNsb3Nlc3QsIGlzRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyBwcm9wcyBhcyB0Ym9keVByb3BzLCBCVGJvZHkgfSBmcm9tICcuLi90Ym9keSc7XG5pbXBvcnQgZmlsdGVyRXZlbnQgZnJvbSAnLi9maWx0ZXItZXZlbnQnO1xuaW1wb3J0IHRleHRTZWxlY3Rpb25BY3RpdmUgZnJvbSAnLi90ZXh0LXNlbGVjdGlvbi1hY3RpdmUnO1xuaW1wb3J0IHRib2R5Um93TWl4aW4gZnJvbSAnLi9taXhpbi10Ym9keS1yb3cnO1xuXG52YXIgcHJvcHMgPSBfb2JqZWN0U3ByZWFkKHt9LCB0Ym9keVByb3BzLCB7XG4gIHRib2R5Q2xhc3M6IHtcbiAgICB0eXBlOiBbU3RyaW5nLCBBcnJheSwgT2JqZWN0XSAvLyBkZWZhdWx0OiB1bmRlZmluZWRcblxuICB9XG59KTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBtaXhpbnM6IFt0Ym9keVJvd01peGluXSxcbiAgcHJvcHM6IHByb3BzLFxuICBtZXRob2RzOiB7XG4gICAgLy8gSGVscGVyIG1ldGhvZHNcbiAgICBnZXRUYm9keVRyczogZnVuY3Rpb24gZ2V0VGJvZHlUcnMoKSB7XG4gICAgICAvLyBSZXR1cm5zIGFsbCB0aGUgaXRlbSBUUiBlbGVtZW50cyAoZXhjbHVkZXMgZGV0YWlsIGFuZCBzcGFjZXIgcm93cylcbiAgICAgIC8vIGB0aGlzLiRyZWZzLml0ZW1Sb3dzYCBpcyBhbiBhcnJheSBvZiBpdGVtIFRSIGNvbXBvbmVudHMvZWxlbWVudHNcbiAgICAgIC8vIFJvd3Mgc2hvdWxkIGFsbCBiZSBCLVRSIGNvbXBvbmVudHMsIGJ1dCB3ZSBtYXAgdG8gVFIgZWxlbWVudHNcbiAgICAgIC8vIFRPRE86IFRoaXMgbWF5IHRha2UgdGltZSBmb3IgdGFibGVzIG1hbnkgcm93cywgc28gd2UgbWF5IHdhbnQgdG8gY2FjaGVcbiAgICAgIC8vICAgICAgIHRoZSByZXN1bHQgb2YgdGhpcyBkdXJpbmcgZWFjaCByZW5kZXIgY3ljbGUgb24gYSBub24tcmVhY3RpdmVcbiAgICAgIC8vICAgICAgIHByb3BlcnR5LiBXZSBjbGVhciBvdXQgdGhlIGNhY2hlIGFzIGVhY2ggcmVuZGVyIHN0YXJ0cywgYW5kXG4gICAgICAvLyAgICAgICBwb3B1bGF0ZSBpdCBvbiBmaXJzdCBhY2Nlc3Mgb2YgdGhpcyBtZXRob2QgaWYgbnVsbFxuICAgICAgcmV0dXJuICh0aGlzLiRyZWZzLml0ZW1Sb3dzIHx8IFtdKS5tYXAoZnVuY3Rpb24gKHRyKSB7XG4gICAgICAgIHJldHVybiB0ci4kZWwgfHwgdHI7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGdldFRib2R5VHJJbmRleDogZnVuY3Rpb24gZ2V0VGJvZHlUckluZGV4KGVsKSB7XG4gICAgICAvLyBSZXR1cm5zIGluZGV4IG9mIGEgcGFydGljdWxhciBUQk9EWSBpdGVtIFRSXG4gICAgICAvLyBXZSBzZXQgYHRydWVgIG9uIGNsb3Nlc3QgdG8gaW5jbHVkZSBzZWxmIGluIHJlc3VsdFxuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogc2hvdWxkIG5vdCBub3JtYWxseSBoYXBwZW4gKi9cbiAgICAgIGlmICghaXNFbGVtZW50KGVsKSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG5cbiAgICAgIHZhciB0ciA9IGVsLnRhZ05hbWUgPT09ICdUUicgPyBlbCA6IGNsb3Nlc3QoJ3RyJywgZWwsIHRydWUpO1xuICAgICAgcmV0dXJuIHRyID8gdGhpcy5nZXRUYm9keVRycygpLmluZGV4T2YodHIpIDogLTE7XG4gICAgfSxcbiAgICBlbWl0VGJvZHlSb3dFdmVudDogZnVuY3Rpb24gZW1pdFRib2R5Um93RXZlbnQodHlwZSwgZXZ0KSB7XG4gICAgICAvLyBFbWl0cyBhIHJvdyBldmVudCwgd2l0aCB0aGUgaXRlbSBvYmplY3QsIHJvdyBpbmRleCBhbmQgb3JpZ2luYWwgZXZlbnRcbiAgICAgIGlmICh0eXBlICYmIGV2dCAmJiBldnQudGFyZ2V0KSB7XG4gICAgICAgIHZhciByb3dJbmRleCA9IHRoaXMuZ2V0VGJvZHlUckluZGV4KGV2dC50YXJnZXQpO1xuXG4gICAgICAgIGlmIChyb3dJbmRleCA+IC0xKSB7XG4gICAgICAgICAgLy8gVGhlIGFycmF5IG9mIFRScyBjb3JyZWxhdGUgdG8gdGhlIGBjb21wdXRlZEl0ZW1zYCBhcnJheVxuICAgICAgICAgIHZhciBpdGVtID0gdGhpcy5jb21wdXRlZEl0ZW1zW3Jvd0luZGV4XTtcbiAgICAgICAgICB0aGlzLiRlbWl0KHR5cGUsIGl0ZW0sIHJvd0luZGV4LCBldnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICB0Ym9keVJvd0V2dFN0b3BwZWQ6IGZ1bmN0aW9uIHRib2R5Um93RXZ0U3RvcHBlZChldnQpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0b3BJZkJ1c3kgJiYgdGhpcy5zdG9wSWZCdXN5KGV2dCk7XG4gICAgfSxcbiAgICAvLyBEZWxlZ2F0ZWQgcm93IGV2ZW50IGhhbmRsZXJzXG4gICAgb25UYm9keVJvd0tleWRvd246IGZ1bmN0aW9uIG9uVGJvZHlSb3dLZXlkb3duKGV2dCkge1xuICAgICAgLy8gS2V5Ym9hcmQgbmF2aWdhdGlvbiBhbmQgcm93IGNsaWNrIGVtdWxhdGlvblxuICAgICAgdmFyIHRhcmdldCA9IGV2dC50YXJnZXQ7XG5cbiAgICAgIGlmICh0aGlzLnRib2R5Um93RXZ0U3RvcHBlZChldnQpIHx8IHRhcmdldC50YWdOYW1lICE9PSAnVFInIHx8IHRhcmdldCAhPT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCB8fCB0YXJnZXQudGFiSW5kZXggIT09IDApIHtcbiAgICAgICAgLy8gRWFybHkgZXhpdCBpZiBub3QgYW4gaXRlbSByb3cgVFJcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIga2V5Q29kZSA9IGV2dC5rZXlDb2RlO1xuXG4gICAgICBpZiAoYXJyYXlJbmNsdWRlcyhbS2V5Q29kZXMuRU5URVIsIEtleUNvZGVzLlNQQUNFXSwga2V5Q29kZSkpIHtcbiAgICAgICAgLy8gRW11bGF0ZWQgY2xpY2sgZm9yIGtleWJvYXJkIHVzZXJzLCB0cmFuc2ZlciB0byBjbGljayBoYW5kbGVyXG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMub25UQm9keVJvd0NsaWNrZWQoZXZ0KTtcbiAgICAgIH0gZWxzZSBpZiAoYXJyYXlJbmNsdWRlcyhbS2V5Q29kZXMuVVAsIEtleUNvZGVzLkRPV04sIEtleUNvZGVzLkhPTUUsIEtleUNvZGVzLkVORF0sIGtleUNvZGUpKSB7XG4gICAgICAgIC8vIEtleWJvYXJkIG5hdmlnYXRpb25cbiAgICAgICAgdmFyIHJvd0luZGV4ID0gdGhpcy5nZXRUYm9keVRySW5kZXgodGFyZ2V0KTtcblxuICAgICAgICBpZiAocm93SW5kZXggPiAtMSkge1xuICAgICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB2YXIgdHJzID0gdGhpcy5nZXRUYm9keVRycygpO1xuICAgICAgICAgIHZhciBzaGlmdCA9IGV2dC5zaGlmdEtleTtcblxuICAgICAgICAgIGlmIChrZXlDb2RlID09PSBLZXlDb2Rlcy5IT01FIHx8IHNoaWZ0ICYmIGtleUNvZGUgPT09IEtleUNvZGVzLlVQKSB7XG4gICAgICAgICAgICAvLyBGb2N1cyBmaXJzdCByb3dcbiAgICAgICAgICAgIHRyc1swXS5mb2N1cygpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoa2V5Q29kZSA9PT0gS2V5Q29kZXMuRU5EIHx8IHNoaWZ0ICYmIGtleUNvZGUgPT09IEtleUNvZGVzLkRPV04pIHtcbiAgICAgICAgICAgIC8vIEZvY3VzIGxhc3Qgcm93XG4gICAgICAgICAgICB0cnNbdHJzLmxlbmd0aCAtIDFdLmZvY3VzKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChrZXlDb2RlID09PSBLZXlDb2Rlcy5VUCAmJiByb3dJbmRleCA+IDApIHtcbiAgICAgICAgICAgIC8vIEZvY3VzIHByZXZpb3VzIHJvd1xuICAgICAgICAgICAgdHJzW3Jvd0luZGV4IC0gMV0uZm9jdXMoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGtleUNvZGUgPT09IEtleUNvZGVzLkRPV04gJiYgcm93SW5kZXggPCB0cnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgLy8gRm9jdXMgbmV4dCByb3dcbiAgICAgICAgICAgIHRyc1tyb3dJbmRleCArIDFdLmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBvblRCb2R5Um93Q2xpY2tlZDogZnVuY3Rpb24gb25UQm9keVJvd0NsaWNrZWQoZXZ0KSB7XG4gICAgICBpZiAodGhpcy50Ym9keVJvd0V2dFN0b3BwZWQoZXZ0KSkge1xuICAgICAgICAvLyBJZiB0YWJsZSBpcyBidXN5LCB0aGVuIGRvbid0IHByb3BhZ2F0ZVxuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKGZpbHRlckV2ZW50KGV2dCkgfHwgdGV4dFNlbGVjdGlvbkFjdGl2ZSh0aGlzLiRlbCkpIHtcbiAgICAgICAgLy8gQ2xpY2tlZCBvbiBhIG5vbi1kaXNhYmxlZCBjb250cm9sIHNvIGlnbm9yZVxuICAgICAgICAvLyBPciB1c2VyIGlzIHNlbGVjdGluZyB0ZXh0LCBzbyBpZ25vcmVcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVtaXRUYm9keVJvd0V2ZW50KCdyb3ctY2xpY2tlZCcsIGV2dCk7XG4gICAgfSxcbiAgICBvblRib2R5Um93TWlkZGxlTW91c2VSb3dDbGlja2VkOiBmdW5jdGlvbiBvblRib2R5Um93TWlkZGxlTW91c2VSb3dDbGlja2VkKGV2dCkge1xuICAgICAgaWYgKCF0aGlzLnRib2R5Um93RXZ0U3RvcHBlZChldnQpICYmIGV2dC53aGljaCA9PT0gMikge1xuICAgICAgICB0aGlzLmVtaXRUYm9keVJvd0V2ZW50KCdyb3ctbWlkZGxlLWNsaWNrZWQnLCBldnQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgb25UYm9keVJvd0NvbnRleHRtZW51OiBmdW5jdGlvbiBvblRib2R5Um93Q29udGV4dG1lbnUoZXZ0KSB7XG4gICAgICBpZiAoIXRoaXMudGJvZHlSb3dFdnRTdG9wcGVkKGV2dCkpIHtcbiAgICAgICAgdGhpcy5lbWl0VGJvZHlSb3dFdmVudCgncm93LWNvbnRleHRtZW51JywgZXZ0KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uVGJvZHlSb3dEYmxDbGlja2VkOiBmdW5jdGlvbiBvblRib2R5Um93RGJsQ2xpY2tlZChldnQpIHtcbiAgICAgIGlmICghdGhpcy50Ym9keVJvd0V2dFN0b3BwZWQoZXZ0KSAmJiAhZmlsdGVyRXZlbnQoZXZ0KSkge1xuICAgICAgICB0aGlzLmVtaXRUYm9keVJvd0V2ZW50KCdyb3ctZGJsY2xpY2tlZCcsIGV2dCk7XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyBOb3RlOiBSb3cgaG92ZXIgaGFuZGxlcnMgYXJlIGhhbmRsZWQgYnkgdGhlIHRib2R5LXJvdyBtaXhpblxuICAgIC8vIEFzIG1vdXNlZW50ZXIvbW91c2VsZWF2ZSBldmVudHMgZG8gbm90IGJ1YmJsZVxuICAgIC8vXG4gICAgLy8gUmVuZGVyIEhlbHBlclxuICAgIHJlbmRlclRib2R5OiBmdW5jdGlvbiByZW5kZXJUYm9keSgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIC8vIFJlbmRlciB0aGUgdGJvZHkgZWxlbWVudCBhbmQgY2hpbGRyZW5cbiAgICAgIHZhciBpdGVtcyA9IHRoaXMuY29tcHV0ZWRJdGVtczsgLy8gU2hvcnRjdXQgdG8gYGNyZWF0ZUVsZW1lbnRgIChjb3VsZCB1c2UgYHRoaXMuX2MoKWAgaW5zdGVhZClcblxuICAgICAgdmFyIGggPSB0aGlzLiRjcmVhdGVFbGVtZW50O1xuICAgICAgdmFyIGhhc1Jvd0NsaWNrSGFuZGxlciA9IHRoaXMuJGxpc3RlbmVyc1sncm93LWNsaWNrZWQnXSB8fCB0aGlzLmlzU2VsZWN0YWJsZTsgLy8gUHJlcGFyZSB0aGUgdGJvZHkgcm93c1xuXG4gICAgICB2YXIgJHJvd3MgPSBbXTsgLy8gQWRkIHRoZSBpdGVtIGRhdGEgcm93cyBvciB0aGUgYnVzeSBzbG90XG5cbiAgICAgIHZhciAkYnVzeSA9IHRoaXMucmVuZGVyQnVzeSA/IHRoaXMucmVuZGVyQnVzeSgpIDogbnVsbDtcblxuICAgICAgaWYgKCRidXN5KSB7XG4gICAgICAgIC8vIElmIHRhYmxlIGlzIGJ1c3kgYW5kIGEgYnVzeSBzbG90LCB0aGVuIHJldHVybiBvbmx5IHRoZSBidXN5IFwicm93XCIgaW5kaWNhdG9yXG4gICAgICAgICRyb3dzLnB1c2goJGJ1c3kpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVGFibGUgaXNuJ3QgYnVzeSwgb3Igd2UgZG9uJ3QgaGF2ZSBhIGJ1c3kgc2xvdFxuICAgICAgICAvLyBDcmVhdGUgYSBzbG90IGNhY2hlIGZvciBpbXByb3ZlZCBwZXJmb3JtYW5jZSB3aGVuIGxvb2tpbmcgdXAgY2VsbCBzbG90IG5hbWVzXG4gICAgICAgIC8vIFZhbHVlcyB3aWxsIGJlIGtleWVkIGJ5IHRoZSBmaWVsZCdzIGBrZXlgIGFuZCB3aWxsIHN0b3JlIHRoZSBzbG90J3MgbmFtZVxuICAgICAgICAvLyBTbG90cyBjb3VsZCBiZSBkeW5hbWljIChpLmUuIGB2LWlmYCksIHNvIHdlIG11c3QgY29tcHV0ZSBvbiBlYWNoIHJlbmRlclxuICAgICAgICAvLyBVc2VkIGJ5IHRib2R5LXJvdyBtaXhpbiByZW5kZXIgaGVscGVyXG4gICAgICAgIHZhciBjYWNoZSA9IHt9O1xuICAgICAgICB2YXIgZGVmYXVsdFNsb3ROYW1lID0gdGhpcy5oYXNOb3JtYWxpemVkU2xvdCgnY2VsbCgpJykgPyAnY2VsbCgpJyA6IG51bGw7XG4gICAgICAgIHRoaXMuY29tcHV0ZWRGaWVsZHMuZm9yRWFjaChmdW5jdGlvbiAoZmllbGQpIHtcbiAgICAgICAgICB2YXIga2V5ID0gZmllbGQua2V5O1xuICAgICAgICAgIHZhciBmdWxsTmFtZSA9IFwiY2VsbChcIi5jb25jYXQoa2V5LCBcIilcIik7XG4gICAgICAgICAgdmFyIGxvd2VyTmFtZSA9IFwiY2VsbChcIi5jb25jYXQoa2V5LnRvTG93ZXJDYXNlKCksIFwiKVwiKTtcbiAgICAgICAgICBjYWNoZVtrZXldID0gX3RoaXMuaGFzTm9ybWFsaXplZFNsb3QoZnVsbE5hbWUpID8gZnVsbE5hbWUgOiBfdGhpcy5oYXNOb3JtYWxpemVkU2xvdChsb3dlck5hbWUpID8gbG93ZXJOYW1lIDogZGVmYXVsdFNsb3ROYW1lO1xuICAgICAgICB9KTsgLy8gQ3JlYXRlZCBhcyBhIG5vbi1yZWFjdGl2ZSBwcm9wZXJ0eSBzbyB0byBub3QgdHJpZ2dlciBjb21wb25lbnQgdXBkYXRlc1xuICAgICAgICAvLyBNdXN0IGJlIGEgZnJlc2ggb2JqZWN0IGVhY2ggcmVuZGVyXG5cbiAgICAgICAgdGhpcy4kX2JvZHlGaWVsZFNsb3ROYW1lQ2FjaGUgPSBjYWNoZTsgLy8gQWRkIHN0YXRpYyB0b3Agcm93IHNsb3QgKGhpZGRlbiBpbiB2aXNpYmx5IHN0YWNrZWQgbW9kZVxuICAgICAgICAvLyBhcyB3ZSBjYW4ndCBjb250cm9sIGBkYXRhLWxhYmVsYCBhdHRyKVxuXG4gICAgICAgICRyb3dzLnB1c2godGhpcy5yZW5kZXJUb3BSb3cgPyB0aGlzLnJlbmRlclRvcFJvdygpIDogaCgpKTsgLy8gUmVuZGVyIHRoZSByb3dzXG5cbiAgICAgICAgaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgcm93SW5kZXgpIHtcbiAgICAgICAgICAvLyBSZW5kZXIgdGhlIGluZGl2aWR1YWwgaXRlbSByb3cgKHJvd3MgaWYgZGV0YWlscyBzbG90KVxuICAgICAgICAgICRyb3dzLnB1c2goX3RoaXMucmVuZGVyVGJvZHlSb3coaXRlbSwgcm93SW5kZXgpKTtcbiAgICAgICAgfSk7IC8vIEVtcHR5IGl0ZW1zIC8gZW1wdHkgZmlsdGVyZWQgcm93IHNsb3QgKG9ubHkgc2hvd3MgaWYgYGl0ZW1zLmxlbmd0aCA8IDFgKVxuXG4gICAgICAgICRyb3dzLnB1c2godGhpcy5yZW5kZXJFbXB0eSA/IHRoaXMucmVuZGVyRW1wdHkoKSA6IGgoKSk7IC8vIFN0YXRpYyBib3R0b20gcm93IHNsb3QgKGhpZGRlbiBpbiB2aXNpYmx5IHN0YWNrZWQgbW9kZVxuICAgICAgICAvLyBhcyB3ZSBjYW4ndCBjb250cm9sIGBkYXRhLWxhYmVsYCBhdHRyKVxuXG4gICAgICAgICRyb3dzLnB1c2godGhpcy5yZW5kZXJCb3R0b21Sb3cgPyB0aGlzLnJlbmRlckJvdHRvbVJvdygpIDogaCgpKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGhhbmRsZXJzID0ge1xuICAgICAgICAvLyBUT0RPOiBXZSBtYXkgd2FudCB0byB0byBvbmx5IGluc3RhbnRpYXRlIHRoZXNlIGhhbmRsZXJzXG4gICAgICAgIC8vICAgICAgIGlmIHRoZXJlIGlzIGFuIGV2ZW50IGxpc3RlbmVyIHJlZ2lzdGVyZWRcbiAgICAgICAgYXV4Y2xpY2s6IHRoaXMub25UYm9keVJvd01pZGRsZU1vdXNlUm93Q2xpY2tlZCxcbiAgICAgICAgLy8gVE9ETzogUGVyaGFwcyB3ZSBkbyB3YW50IHRvIGF1dG9tYXRpY2FsbHkgcHJldmVudCB0aGVcbiAgICAgICAgLy8gICAgICAgZGVmYXVsdCBjb250ZXh0IG1lbnUgZnJvbSBzaG93aW5nIGlmIHRoZXJlIGlzXG4gICAgICAgIC8vICAgICAgIGEgYHJvdy1jb250ZXh0bWVudWAgbGlzdGVuZXIgcmVnaXN0ZXJlZC5cbiAgICAgICAgY29udGV4dG1lbnU6IHRoaXMub25UYm9keVJvd0NvbnRleHRtZW51LFxuICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGV2ZW50KHMpIGlzIG5vdCBjb25zaWRlcmVkIEExMVkgZnJpZW5kbHlcbiAgICAgICAgZGJsY2xpY2s6IHRoaXMub25UYm9keVJvd0RibENsaWNrZWQgLy8gaG92ZXIgZXZlbnRzIChtb3VzZWVudGVyL21vdXNlbGVhdmUpIGFkIGhhbmRsZWQgYnkgdGJvZHktcm93IG1peGluXG5cbiAgICAgIH07XG5cbiAgICAgIGlmIChoYXNSb3dDbGlja0hhbmRsZXIpIHtcbiAgICAgICAgaGFuZGxlcnMuY2xpY2sgPSB0aGlzLm9uVEJvZHlSb3dDbGlja2VkO1xuICAgICAgICBoYW5kbGVycy5rZXlkb3duID0gdGhpcy5vblRib2R5Um93S2V5ZG93bjtcbiAgICAgIH0gLy8gQXNzZW1ibGUgcm93cyBpbnRvIHRoZSB0Ym9keVxuXG5cbiAgICAgIHZhciAkdGJvZHkgPSBoKEJUYm9keSwge1xuICAgICAgICByZWY6ICd0Ym9keScsXG4gICAgICAgIGNsYXNzOiB0aGlzLnRib2R5Q2xhc3MgfHwgbnVsbCxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICB0Ym9keVRyYW5zaXRpb25Qcm9wczogdGhpcy50Ym9keVRyYW5zaXRpb25Qcm9wcyxcbiAgICAgICAgICB0Ym9keVRyYW5zaXRpb25IYW5kbGVyczogdGhpcy50Ym9keVRyYW5zaXRpb25IYW5kbGVyc1xuICAgICAgICB9LFxuICAgICAgICAvLyBCVGJvZHkgdHJhbnNmZXJzIGFsbCBuYXRpdmUgZXZlbnQgbGlzdGVuZXJzIHRvIHRoZSByb290IGVsZW1lbnRcbiAgICAgICAgLy8gVE9ETzogT25seSBzZXQgdGhlIGhhbmRsZXJzIGlmIHRoZSB0YWJsZSBpcyBub3QgYnVzeVxuICAgICAgICBvbjogaGFuZGxlcnNcbiAgICAgIH0sICRyb3dzKTsgLy8gUmV0dXJuIHRoZSBhc3NlbWJsZWQgdGJvZHlcblxuICAgICAgcmV0dXJuICR0Ym9keTtcbiAgICB9XG4gIH1cbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL21peGluLXRib2R5LmpzXG4vLyBtb2R1bGUgaWQgPSAyMDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///208\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_dom__ = __webpack_require__(6);\n // Helper to determine if a there is an active text selection on the document page\n// Used to filter out click events caused by the mouse up at end of selection\n//\n// Accepts an element as only argument to test to see if selection overlaps or is\n// contained within the element\n\nvar textSelectionActive = function textSelectionActive() {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n var sel = Object(__WEBPACK_IMPORTED_MODULE_0__utils_dom__[\"k\" /* getSel */])();\n return sel && sel.toString().trim() !== '' && sel.containsNode && Object(__WEBPACK_IMPORTED_MODULE_0__utils_dom__[\"o\" /* isElement */])(el) ? sel.containsNode(el, true) : false;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (textSelectionActive);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL3RleHQtc2VsZWN0aW9uLWFjdGl2ZS5qcz85YTQ3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQXVEO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZLGtFQUFNO0FBQ2xCLG9FQUFvRSxxRUFBUztBQUM3RTs7QUFFZSw0RUFBbUIiLCJmaWxlIjoiMjA4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0U2VsLCBpc0VsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9kb20nOyAvLyBIZWxwZXIgdG8gZGV0ZXJtaW5lIGlmIGEgdGhlcmUgaXMgYW4gYWN0aXZlIHRleHQgc2VsZWN0aW9uIG9uIHRoZSBkb2N1bWVudCBwYWdlXG4vLyBVc2VkIHRvIGZpbHRlciBvdXQgY2xpY2sgZXZlbnRzIGNhdXNlZCBieSB0aGUgbW91c2UgdXAgYXQgZW5kIG9mIHNlbGVjdGlvblxuLy9cbi8vIEFjY2VwdHMgYW4gZWxlbWVudCBhcyBvbmx5IGFyZ3VtZW50IHRvIHRlc3QgdG8gc2VlIGlmIHNlbGVjdGlvbiBvdmVybGFwcyBvciBpc1xuLy8gY29udGFpbmVkIHdpdGhpbiB0aGUgZWxlbWVudFxuXG52YXIgdGV4dFNlbGVjdGlvbkFjdGl2ZSA9IGZ1bmN0aW9uIHRleHRTZWxlY3Rpb25BY3RpdmUoKSB7XG4gIHZhciBlbCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZG9jdW1lbnQ7XG4gIHZhciBzZWwgPSBnZXRTZWwoKTtcbiAgcmV0dXJuIHNlbCAmJiBzZWwudG9TdHJpbmcoKS50cmltKCkgIT09ICcnICYmIHNlbC5jb250YWluc05vZGUgJiYgaXNFbGVtZW50KGVsKSA/IHNlbC5jb250YWluc05vZGUoZWwsIHRydWUpIDogZmFsc2U7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB0ZXh0U2VsZWN0aW9uQWN0aXZlO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdGFibGUvaGVscGVycy90ZXh0LXNlbGVjdGlvbi1hY3RpdmUuanNcbi8vIG1vZHVsZSBpZCA9IDIwOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///208\n"); /***/ }), /* 209 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BTableLite; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__helpers_mixin_items__ = __webpack_require__(198);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__helpers_mixin_caption__ = __webpack_require__(202);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__helpers_mixin_colgroup__ = __webpack_require__(203);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__helpers_mixin_stacked__ = __webpack_require__(87);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__helpers_mixin_thead__ = __webpack_require__(204);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__helpers_mixin_tfoot__ = __webpack_require__(207);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__helpers_mixin_tbody__ = __webpack_require__(208);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__helpers_mixin_table_renderer__ = __webpack_require__(90);\n // Mixins\n\n\n // Table helper Mixins\n\n\n\n\n\n\n\n // Main table renderer mixin\n\n // b-table-lite component definition\n// @vue/component\n\nvar BTableLite =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BTableLite',\n // Order of mixins is important!\n // They are merged from first to last, followed by this component.\n mixins: [// Required mixins\n __WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__helpers_mixin_items__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_10__helpers_mixin_table_renderer__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__helpers_mixin_stacked__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__helpers_mixin_thead__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_8__helpers_mixin_tfoot__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_9__helpers_mixin_tbody__[\"a\" /* default */], // Features Mixins\n // These are pretty lightweight, and are useful for lightweight tables\n __WEBPACK_IMPORTED_MODULE_4__helpers_mixin_caption__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__helpers_mixin_colgroup__[\"a\" /* default */]] // render function provided by table-renderer mixin\n\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS90YWJsZS1saXRlLmpzP2I0MmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDOztBQUVJO0FBQ3VCOztBQUVkO0FBQ0k7QUFDRTtBQUNGO0FBQ0o7QUFDQTtBQUNBOztBQUVpQjtBQUNoRTs7QUFFTztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsMkRBQU8sRUFBRSx1RUFBa0IsRUFBRSxxRUFBVSxFQUFFLCtFQUFrQixFQUFFLHVFQUFZLEVBQUUscUVBQVUsRUFBRSxxRUFBVSxFQUFFLHFFQUFVO0FBQy9HO0FBQ0EsRUFBRSx1RUFBWSxFQUFFLHdFQUFhOztBQUU3QixDQUFDIiwiZmlsZSI6IjIwOS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJzsgLy8gTWl4aW5zXG5cbmltcG9ydCBpZE1peGluIGZyb20gJy4uLy4uL21peGlucy9pZCc7XG5pbXBvcnQgbm9ybWFsaXplU2xvdE1peGluIGZyb20gJy4uLy4uL21peGlucy9ub3JtYWxpemUtc2xvdCc7IC8vIFRhYmxlIGhlbHBlciBNaXhpbnNcblxuaW1wb3J0IGl0ZW1zTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLWl0ZW1zJztcbmltcG9ydCBjYXB0aW9uTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLWNhcHRpb24nO1xuaW1wb3J0IGNvbGdyb3VwTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLWNvbGdyb3VwJztcbmltcG9ydCBzdGFja2VkTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLXN0YWNrZWQnO1xuaW1wb3J0IHRoZWFkTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLXRoZWFkJztcbmltcG9ydCB0Zm9vdE1peGluIGZyb20gJy4vaGVscGVycy9taXhpbi10Zm9vdCc7XG5pbXBvcnQgdGJvZHlNaXhpbiBmcm9tICcuL2hlbHBlcnMvbWl4aW4tdGJvZHknOyAvLyBNYWluIHRhYmxlIHJlbmRlcmVyIG1peGluXG5cbmltcG9ydCB0YWJsZVJlbmRlcmVyTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLXRhYmxlLXJlbmRlcmVyJzsgLy8gYi10YWJsZS1saXRlIGNvbXBvbmVudCBkZWZpbml0aW9uXG4vLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJUYWJsZUxpdGUgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCVGFibGVMaXRlJyxcbiAgLy8gT3JkZXIgb2YgbWl4aW5zIGlzIGltcG9ydGFudCFcbiAgLy8gVGhleSBhcmUgbWVyZ2VkIGZyb20gZmlyc3QgdG8gbGFzdCwgZm9sbG93ZWQgYnkgdGhpcyBjb21wb25lbnQuXG4gIG1peGluczogWy8vIFJlcXVpcmVkIG1peGluc1xuICBpZE1peGluLCBub3JtYWxpemVTbG90TWl4aW4sIGl0ZW1zTWl4aW4sIHRhYmxlUmVuZGVyZXJNaXhpbiwgc3RhY2tlZE1peGluLCB0aGVhZE1peGluLCB0Zm9vdE1peGluLCB0Ym9keU1peGluLCAvLyBGZWF0dXJlcyBNaXhpbnNcbiAgLy8gVGhlc2UgYXJlIHByZXR0eSBsaWdodHdlaWdodCwgYW5kIGFyZSB1c2VmdWwgZm9yIGxpZ2h0d2VpZ2h0IHRhYmxlc1xuICBjYXB0aW9uTWl4aW4sIGNvbGdyb3VwTWl4aW5dIC8vIHJlbmRlciBmdW5jdGlvbiBwcm92aWRlZCBieSB0YWJsZS1yZW5kZXJlciBtaXhpblxuXG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLWxpdGUuanNcbi8vIG1vZHVsZSBpZCA9IDIwOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///209\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__tfoot__ = __webpack_require__(48);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n props: {\n footClone: {\n type: Boolean,\n default: false\n },\n footVariant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils_config__[\"c\" /* getComponentConfig */])('BTable', 'footVariant');\n }\n },\n tfootClass: {\n type: [String, Array, Object],\n default: null\n },\n tfootTrClass: {\n type: [String, Array, Object],\n default: null\n }\n },\n methods: {\n renderTFootCustom: function renderTFootCustom() {\n var h = this.$createElement;\n\n if (this.hasNormalizedSlot('custom-foot')) {\n return h(__WEBPACK_IMPORTED_MODULE_1__tfoot__[\"a\" /* BTfoot */], {\n key: 'bv-tfoot-custom',\n class: this.tfootClass || null,\n props: {\n footVariant: this.footVariant || this.headVariant || null\n }\n }, this.normalizeSlot('custom-foot', {\n items: this.computedItems.slice(),\n fields: this.computedFields.slice(),\n columns: this.computedFields.length\n }));\n } else {\n return h();\n }\n },\n renderTfoot: function renderTfoot() {\n // Passing true to renderThead will make it render a tfoot\n return this.footClone ? this.renderThead(true) : this.renderTFootCustom();\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL21peGluLXRmb290LmpzPzg4NDAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUEyRDtBQUN6QjtBQUNuQjtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUZBQWtCO0FBQ2pDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsc0RBQU07QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMjA5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0Q29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY29uZmlnJztcbmltcG9ydCB7IEJUZm9vdCB9IGZyb20gJy4uL3Rmb290JztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgcHJvcHM6IHtcbiAgICBmb290Q2xvbmU6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgZm9vdFZhcmlhbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50Q29uZmlnKCdCVGFibGUnLCAnZm9vdFZhcmlhbnQnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHRmb290Q2xhc3M6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIEFycmF5LCBPYmplY3RdLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgdGZvb3RUckNsYXNzOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBBcnJheSwgT2JqZWN0XSxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICByZW5kZXJURm9vdEN1c3RvbTogZnVuY3Rpb24gcmVuZGVyVEZvb3RDdXN0b20oKSB7XG4gICAgICB2YXIgaCA9IHRoaXMuJGNyZWF0ZUVsZW1lbnQ7XG5cbiAgICAgIGlmICh0aGlzLmhhc05vcm1hbGl6ZWRTbG90KCdjdXN0b20tZm9vdCcpKSB7XG4gICAgICAgIHJldHVybiBoKEJUZm9vdCwge1xuICAgICAgICAgIGtleTogJ2J2LXRmb290LWN1c3RvbScsXG4gICAgICAgICAgY2xhc3M6IHRoaXMudGZvb3RDbGFzcyB8fCBudWxsLFxuICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBmb290VmFyaWFudDogdGhpcy5mb290VmFyaWFudCB8fCB0aGlzLmhlYWRWYXJpYW50IHx8IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHRoaXMubm9ybWFsaXplU2xvdCgnY3VzdG9tLWZvb3QnLCB7XG4gICAgICAgICAgaXRlbXM6IHRoaXMuY29tcHV0ZWRJdGVtcy5zbGljZSgpLFxuICAgICAgICAgIGZpZWxkczogdGhpcy5jb21wdXRlZEZpZWxkcy5zbGljZSgpLFxuICAgICAgICAgIGNvbHVtbnM6IHRoaXMuY29tcHV0ZWRGaWVsZHMubGVuZ3RoXG4gICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBoKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICByZW5kZXJUZm9vdDogZnVuY3Rpb24gcmVuZGVyVGZvb3QoKSB7XG4gICAgICAvLyBQYXNzaW5nIHRydWUgdG8gcmVuZGVyVGhlYWQgd2lsbCBtYWtlIGl0IHJlbmRlciBhIHRmb290XG4gICAgICByZXR1cm4gdGhpcy5mb290Q2xvbmUgPyB0aGlzLnJlbmRlclRoZWFkKHRydWUpIDogdGhpcy5yZW5kZXJURm9vdEN1c3RvbSgpO1xuICAgIH1cbiAgfVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL3RhYmxlL2hlbHBlcnMvbWl4aW4tdGZvb3QuanNcbi8vIG1vZHVsZSBpZCA9IDIwOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///209\n"); /***/ }), /* 210 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BTableSimple; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__helpers_mixin_table_renderer__ = __webpack_require__(90);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__helpers_mixin_stacked__ = __webpack_require__(87);\n // Mixins\n\n\n // Main table renderer mixin\n\n // Feature miins\n\n // b-table-simple component definition\n// @vue/component\n\nvar BTableSimple =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BTableSimple',\n // Order of mixins is important!\n // They are merged from first to last, followed by this component.\n mixins: [// Required mixins\n __WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__helpers_mixin_table_renderer__[\"a\" /* default */], // feature mixin\n // Stacked requires extra handling by users via\n // the table cell `stacked-heading` prop\n __WEBPACK_IMPORTED_MODULE_4__helpers_mixin_stacked__[\"a\" /* default */]],\n computed: {\n isTableSimple: function isTableSimple() {\n return true;\n }\n } // render function provided by table-renderer mixin\n\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS90YWJsZS1zaW1wbGUuanM/YzYyNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7O0FBRUk7QUFDdUI7O0FBRUc7O0FBRWI7QUFDbkQ7O0FBRU87QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLDJEQUFPLEVBQUUsdUVBQWtCLEVBQUUsOEVBQWtCO0FBQ2pEO0FBQ0E7QUFDQSxFQUFFLHVFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVILENBQUMiLCJmaWxlIjoiMjEwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnOyAvLyBNaXhpbnNcblxuaW1wb3J0IGlkTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2lkJztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JzsgLy8gTWFpbiB0YWJsZSByZW5kZXJlciBtaXhpblxuXG5pbXBvcnQgdGFibGVSZW5kZXJlck1peGluIGZyb20gJy4vaGVscGVycy9taXhpbi10YWJsZS1yZW5kZXJlcic7IC8vIEZlYXR1cmUgbWlpbnNcblxuaW1wb3J0IHN0YWNrZWRNaXhpbiBmcm9tICcuL2hlbHBlcnMvbWl4aW4tc3RhY2tlZCc7IC8vIGItdGFibGUtc2ltcGxlIGNvbXBvbmVudCBkZWZpbml0aW9uXG4vLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJUYWJsZVNpbXBsZSA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JUYWJsZVNpbXBsZScsXG4gIC8vIE9yZGVyIG9mIG1peGlucyBpcyBpbXBvcnRhbnQhXG4gIC8vIFRoZXkgYXJlIG1lcmdlZCBmcm9tIGZpcnN0IHRvIGxhc3QsIGZvbGxvd2VkIGJ5IHRoaXMgY29tcG9uZW50LlxuICBtaXhpbnM6IFsvLyBSZXF1aXJlZCBtaXhpbnNcbiAgaWRNaXhpbiwgbm9ybWFsaXplU2xvdE1peGluLCB0YWJsZVJlbmRlcmVyTWl4aW4sIC8vIGZlYXR1cmUgbWl4aW5cbiAgLy8gU3RhY2tlZCByZXF1aXJlcyBleHRyYSBoYW5kbGluZyBieSB1c2VycyB2aWFcbiAgLy8gdGhlIHRhYmxlIGNlbGwgYHN0YWNrZWQtaGVhZGluZ2AgcHJvcFxuICBzdGFja2VkTWl4aW5dLFxuICBjb21wdXRlZDoge1xuICAgIGlzVGFibGVTaW1wbGU6IGZ1bmN0aW9uIGlzVGFibGVTaW1wbGUoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0gLy8gcmVuZGVyIGZ1bmN0aW9uIHByb3ZpZGVkIGJ5IHRhYmxlLXJlbmRlcmVyIG1peGluXG5cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdGFibGUvdGFibGUtc2ltcGxlLmpzXG4vLyBtb2R1bGUgaWQgPSAyMTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///210\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__tbody__ = __webpack_require__(89);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__filter_event__ = __webpack_require__(207);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__text_selection_active__ = __webpack_require__(208);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__mixin_tbody_row__ = __webpack_require__(266);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n\nvar props = _objectSpread({}, __WEBPACK_IMPORTED_MODULE_3__tbody__[\"b\" /* props */], {\n tbodyClass: {\n type: [String, Array, Object] // default: undefined\n\n }\n});\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n mixins: [__WEBPACK_IMPORTED_MODULE_6__mixin_tbody_row__[\"a\" /* default */]],\n props: props,\n methods: {\n // Helper methods\n getTbodyTrs: function getTbodyTrs() {\n // Returns all the item TR elements (excludes detail and spacer rows)\n // `this.$refs.itemRows` is an array of item TR components/elements\n // Rows should all be B-TR components, but we map to TR elements\n // TODO: This may take time for tables many rows, so we may want to cache\n // the result of this during each render cycle on a non-reactive\n // property. We clear out the cache as each render starts, and\n // populate it on first access of this method if null\n return (this.$refs.itemRows || []).map(function (tr) {\n return tr.$el || tr;\n });\n },\n getTbodyTrIndex: function getTbodyTrIndex(el) {\n // Returns index of a particular TBODY item TR\n // We set `true` on closest to include self in result\n\n /* istanbul ignore next: should not normally happen */\n if (!Object(__WEBPACK_IMPORTED_MODULE_2__utils_dom__[\"o\" /* isElement */])(el)) {\n return -1;\n }\n\n var tr = el.tagName === 'TR' ? el : Object(__WEBPACK_IMPORTED_MODULE_2__utils_dom__[\"c\" /* closest */])('tr', el, true);\n return tr ? this.getTbodyTrs().indexOf(tr) : -1;\n },\n emitTbodyRowEvent: function emitTbodyRowEvent(type, evt) {\n // Emits a row event, with the item object, row index and original event\n if (type && evt && evt.target) {\n var rowIndex = this.getTbodyTrIndex(evt.target);\n\n if (rowIndex > -1) {\n // The array of TRs correlate to the `computedItems` array\n var item = this.computedItems[rowIndex];\n this.$emit(type, item, rowIndex, evt);\n }\n }\n },\n tbodyRowEvtStopped: function tbodyRowEvtStopped(evt) {\n return this.stopIfBusy && this.stopIfBusy(evt);\n },\n // Delegated row event handlers\n onTbodyRowKeydown: function onTbodyRowKeydown(evt) {\n // Keyboard navigation and row click emulation\n var target = evt.target;\n\n if (this.tbodyRowEvtStopped(evt) || target.tagName !== 'TR' || target !== document.activeElement || target.tabIndex !== 0) {\n // Early exit if not an item row TR\n return;\n }\n\n var keyCode = evt.keyCode;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"a\" /* arrayIncludes */])([__WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].ENTER, __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].SPACE], keyCode)) {\n // Emulated click for keyboard users, transfer to click handler\n evt.stopPropagation();\n evt.preventDefault();\n this.onTBodyRowClicked(evt);\n } else if (Object(__WEBPACK_IMPORTED_MODULE_1__utils_array__[\"a\" /* arrayIncludes */])([__WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].UP, __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].DOWN, __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].HOME, __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].END], keyCode)) {\n // Keyboard navigation\n var rowIndex = this.getTbodyTrIndex(target);\n\n if (rowIndex > -1) {\n evt.stopPropagation();\n evt.preventDefault();\n var trs = this.getTbodyTrs();\n var shift = evt.shiftKey;\n\n if (keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].HOME || shift && keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].UP) {\n // Focus first row\n trs[0].focus();\n } else if (keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].END || shift && keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].DOWN) {\n // Focus last row\n trs[trs.length - 1].focus();\n } else if (keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].UP && rowIndex > 0) {\n // Focus previous row\n trs[rowIndex - 1].focus();\n } else if (keyCode === __WEBPACK_IMPORTED_MODULE_0__utils_key_codes__[\"a\" /* default */].DOWN && rowIndex < trs.length - 1) {\n // Focus next row\n trs[rowIndex + 1].focus();\n }\n }\n }\n },\n onTBodyRowClicked: function onTBodyRowClicked(evt) {\n if (this.tbodyRowEvtStopped(evt)) {\n // If table is busy, then don't propagate\n return;\n } else if (Object(__WEBPACK_IMPORTED_MODULE_4__filter_event__[\"a\" /* default */])(evt) || Object(__WEBPACK_IMPORTED_MODULE_5__text_selection_active__[\"a\" /* default */])(this.$el)) {\n // Clicked on a non-disabled control so ignore\n // Or user is selecting text, so ignore\n return;\n }\n\n this.emitTbodyRowEvent('row-clicked', evt);\n },\n onTbodyRowMiddleMouseRowClicked: function onTbodyRowMiddleMouseRowClicked(evt) {\n if (!this.tbodyRowEvtStopped(evt) && evt.which === 2) {\n this.emitTbodyRowEvent('row-middle-clicked', evt);\n }\n },\n onTbodyRowContextmenu: function onTbodyRowContextmenu(evt) {\n if (!this.tbodyRowEvtStopped(evt)) {\n this.emitTbodyRowEvent('row-contextmenu', evt);\n }\n },\n onTbodyRowDblClicked: function onTbodyRowDblClicked(evt) {\n if (!this.tbodyRowEvtStopped(evt) && !Object(__WEBPACK_IMPORTED_MODULE_4__filter_event__[\"a\" /* default */])(evt)) {\n this.emitTbodyRowEvent('row-dblclicked', evt);\n }\n },\n // Note: Row hover handlers are handled by the tbody-row mixin\n // As mouseenter/mouseleave events do not bubble\n //\n // Render Helper\n renderTbody: function renderTbody() {\n var _this = this;\n\n // Render the tbody element and children\n var items = this.computedItems; // Shortcut to `createElement` (could use `this._c()` instead)\n\n var h = this.$createElement;\n var hasRowClickHandler = this.$listeners['row-clicked'] || this.isSelectable; // Prepare the tbody rows\n\n var $rows = []; // Add the item data rows or the busy slot\n\n var $busy = this.renderBusy ? this.renderBusy() : null;\n\n if ($busy) {\n // If table is busy and a busy slot, then return only the busy \"row\" indicator\n $rows.push($busy);\n } else {\n // Table isn't busy, or we don't have a busy slot\n // Create a slot cache for improved performance when looking up cell slot names\n // Values will be keyed by the field's `key` and will store the slot's name\n // Slots could be dynamic (i.e. `v-if`), so we must compute on each render\n // Used by tbody-row mixin render helper\n var cache = {};\n var defaultSlotName = this.hasNormalizedSlot('cell()') ? 'cell()' : null;\n this.computedFields.forEach(function (field) {\n var key = field.key;\n var fullName = \"cell(\".concat(key, \")\");\n var lowerName = \"cell(\".concat(key.toLowerCase(), \")\");\n cache[key] = _this.hasNormalizedSlot(fullName) ? fullName : _this.hasNormalizedSlot(lowerName) ? lowerName : defaultSlotName;\n }); // Created as a non-reactive property so to not trigger component updates\n // Must be a fresh object each render\n\n this.$_bodyFieldSlotNameCache = cache; // Add static top row slot (hidden in visibly stacked mode\n // as we can't control `data-label` attr)\n\n $rows.push(this.renderTopRow ? this.renderTopRow() : h()); // Render the rows\n\n items.forEach(function (item, rowIndex) {\n // Render the individual item row (rows if details slot)\n $rows.push(_this.renderTbodyRow(item, rowIndex));\n }); // Empty items / empty filtered row slot (only shows if `items.length < 1`)\n\n $rows.push(this.renderEmpty ? this.renderEmpty() : h()); // Static bottom row slot (hidden in visibly stacked mode\n // as we can't control `data-label` attr)\n\n $rows.push(this.renderBottomRow ? this.renderBottomRow() : h());\n }\n\n var handlers = {\n // TODO: We may want to to only instantiate these handlers\n // if there is an event listener registered\n auxclick: this.onTbodyRowMiddleMouseRowClicked,\n // TODO: Perhaps we do want to automatically prevent the\n // default context menu from showing if there is\n // a `row-contextmenu` listener registered.\n contextmenu: this.onTbodyRowContextmenu,\n // The following event(s) is not considered A11Y friendly\n dblclick: this.onTbodyRowDblClicked // hover events (mouseenter/mouseleave) ad handled by tbody-row mixin\n\n };\n\n if (hasRowClickHandler) {\n handlers.click = this.onTBodyRowClicked;\n handlers.keydown = this.onTbodyRowKeydown;\n } // Assemble rows into the tbody\n\n\n var $tbody = h(__WEBPACK_IMPORTED_MODULE_3__tbody__[\"a\" /* BTbody */], {\n ref: 'tbody',\n class: this.tbodyClass || null,\n props: {\n tbodyTransitionProps: this.tbodyTransitionProps,\n tbodyTransitionHandlers: this.tbodyTransitionHandlers\n },\n // BTbody transfers all native event listeners to the root element\n // TODO: Only set the handlers if the table is not busy\n on: handlers\n }, $rows); // Return the assembled tbody\n\n return $tbody;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL21peGluLXRib2R5LmpzP2Q5MTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRS9KO0FBQ0s7QUFDRztBQUNEO0FBQ2Q7QUFDaUI7QUFDWjs7QUFFOUMsNEJBQTRCLEVBQUUscURBQVU7QUFDeEM7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWM7QUFDZixXQUFXLGlFQUFhO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLHFFQUFTO0FBQ3BCO0FBQ0E7O0FBRUEsMENBQTBDLG1FQUFPO0FBQ2pEO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLFVBQVUsMkVBQWEsRUFBRSxpRUFBUSxRQUFRLGlFQUFRO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxVQUFVLDJFQUFhLEVBQUUsaUVBQVEsS0FBSyxpRUFBUSxPQUFPLGlFQUFRLE9BQU8saUVBQVE7QUFDbkY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDBCQUEwQixpRUFBUSw4QkFBOEIsaUVBQVE7QUFDeEU7QUFDQTtBQUNBLFdBQVcsc0JBQXNCLGlFQUFRLDZCQUE2QixpRUFBUTtBQUM5RTtBQUNBO0FBQ0EsV0FBVyxzQkFBc0IsaUVBQVE7QUFDekM7QUFDQTtBQUNBLFdBQVcsc0JBQXNCLGlFQUFRO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFVBQVUsc0VBQVcsU0FBUywrRUFBbUI7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSw0Q0FBNEMsc0VBQVc7QUFDdkQ7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQ0FBcUM7O0FBRXJDO0FBQ0EsbUZBQW1GOztBQUVuRixxQkFBcUI7O0FBRXJCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBQUU7QUFDWDs7QUFFQSw4Q0FBOEM7QUFDOUM7O0FBRUEsa0VBQWtFOztBQUVsRTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBQUU7O0FBRVgsZ0VBQWdFO0FBQ2hFOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1AscUJBQXFCLHNEQUFNO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTyxTQUFTOztBQUVoQjtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6IjIxMC5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhzb3VyY2UsIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBLZXlDb2RlcyBmcm9tICcuLi8uLi8uLi91dGlscy9rZXktY29kZXMnO1xuaW1wb3J0IHsgYXJyYXlJbmNsdWRlcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FycmF5JztcbmltcG9ydCB7IGNsb3Nlc3QsIGlzRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyBwcm9wcyBhcyB0Ym9keVByb3BzLCBCVGJvZHkgfSBmcm9tICcuLi90Ym9keSc7XG5pbXBvcnQgZmlsdGVyRXZlbnQgZnJvbSAnLi9maWx0ZXItZXZlbnQnO1xuaW1wb3J0IHRleHRTZWxlY3Rpb25BY3RpdmUgZnJvbSAnLi90ZXh0LXNlbGVjdGlvbi1hY3RpdmUnO1xuaW1wb3J0IHRib2R5Um93TWl4aW4gZnJvbSAnLi9taXhpbi10Ym9keS1yb3cnO1xuXG52YXIgcHJvcHMgPSBfb2JqZWN0U3ByZWFkKHt9LCB0Ym9keVByb3BzLCB7XG4gIHRib2R5Q2xhc3M6IHtcbiAgICB0eXBlOiBbU3RyaW5nLCBBcnJheSwgT2JqZWN0XSAvLyBkZWZhdWx0OiB1bmRlZmluZWRcblxuICB9XG59KTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBtaXhpbnM6IFt0Ym9keVJvd01peGluXSxcbiAgcHJvcHM6IHByb3BzLFxuICBtZXRob2RzOiB7XG4gICAgLy8gSGVscGVyIG1ldGhvZHNcbiAgICBnZXRUYm9keVRyczogZnVuY3Rpb24gZ2V0VGJvZHlUcnMoKSB7XG4gICAgICAvLyBSZXR1cm5zIGFsbCB0aGUgaXRlbSBUUiBlbGVtZW50cyAoZXhjbHVkZXMgZGV0YWlsIGFuZCBzcGFjZXIgcm93cylcbiAgICAgIC8vIGB0aGlzLiRyZWZzLml0ZW1Sb3dzYCBpcyBhbiBhcnJheSBvZiBpdGVtIFRSIGNvbXBvbmVudHMvZWxlbWVudHNcbiAgICAgIC8vIFJvd3Mgc2hvdWxkIGFsbCBiZSBCLVRSIGNvbXBvbmVudHMsIGJ1dCB3ZSBtYXAgdG8gVFIgZWxlbWVudHNcbiAgICAgIC8vIFRPRE86IFRoaXMgbWF5IHRha2UgdGltZSBmb3IgdGFibGVzIG1hbnkgcm93cywgc28gd2UgbWF5IHdhbnQgdG8gY2FjaGVcbiAgICAgIC8vICAgICAgIHRoZSByZXN1bHQgb2YgdGhpcyBkdXJpbmcgZWFjaCByZW5kZXIgY3ljbGUgb24gYSBub24tcmVhY3RpdmVcbiAgICAgIC8vICAgICAgIHByb3BlcnR5LiBXZSBjbGVhciBvdXQgdGhlIGNhY2hlIGFzIGVhY2ggcmVuZGVyIHN0YXJ0cywgYW5kXG4gICAgICAvLyAgICAgICBwb3B1bGF0ZSBpdCBvbiBmaXJzdCBhY2Nlc3Mgb2YgdGhpcyBtZXRob2QgaWYgbnVsbFxuICAgICAgcmV0dXJuICh0aGlzLiRyZWZzLml0ZW1Sb3dzIHx8IFtdKS5tYXAoZnVuY3Rpb24gKHRyKSB7XG4gICAgICAgIHJldHVybiB0ci4kZWwgfHwgdHI7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGdldFRib2R5VHJJbmRleDogZnVuY3Rpb24gZ2V0VGJvZHlUckluZGV4KGVsKSB7XG4gICAgICAvLyBSZXR1cm5zIGluZGV4IG9mIGEgcGFydGljdWxhciBUQk9EWSBpdGVtIFRSXG4gICAgICAvLyBXZSBzZXQgYHRydWVgIG9uIGNsb3Nlc3QgdG8gaW5jbHVkZSBzZWxmIGluIHJlc3VsdFxuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogc2hvdWxkIG5vdCBub3JtYWxseSBoYXBwZW4gKi9cbiAgICAgIGlmICghaXNFbGVtZW50KGVsKSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG5cbiAgICAgIHZhciB0ciA9IGVsLnRhZ05hbWUgPT09ICdUUicgPyBlbCA6IGNsb3Nlc3QoJ3RyJywgZWwsIHRydWUpO1xuICAgICAgcmV0dXJuIHRyID8gdGhpcy5nZXRUYm9keVRycygpLmluZGV4T2YodHIpIDogLTE7XG4gICAgfSxcbiAgICBlbWl0VGJvZHlSb3dFdmVudDogZnVuY3Rpb24gZW1pdFRib2R5Um93RXZlbnQodHlwZSwgZXZ0KSB7XG4gICAgICAvLyBFbWl0cyBhIHJvdyBldmVudCwgd2l0aCB0aGUgaXRlbSBvYmplY3QsIHJvdyBpbmRleCBhbmQgb3JpZ2luYWwgZXZlbnRcbiAgICAgIGlmICh0eXBlICYmIGV2dCAmJiBldnQudGFyZ2V0KSB7XG4gICAgICAgIHZhciByb3dJbmRleCA9IHRoaXMuZ2V0VGJvZHlUckluZGV4KGV2dC50YXJnZXQpO1xuXG4gICAgICAgIGlmIChyb3dJbmRleCA+IC0xKSB7XG4gICAgICAgICAgLy8gVGhlIGFycmF5IG9mIFRScyBjb3JyZWxhdGUgdG8gdGhlIGBjb21wdXRlZEl0ZW1zYCBhcnJheVxuICAgICAgICAgIHZhciBpdGVtID0gdGhpcy5jb21wdXRlZEl0ZW1zW3Jvd0luZGV4XTtcbiAgICAgICAgICB0aGlzLiRlbWl0KHR5cGUsIGl0ZW0sIHJvd0luZGV4LCBldnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICB0Ym9keVJvd0V2dFN0b3BwZWQ6IGZ1bmN0aW9uIHRib2R5Um93RXZ0U3RvcHBlZChldnQpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0b3BJZkJ1c3kgJiYgdGhpcy5zdG9wSWZCdXN5KGV2dCk7XG4gICAgfSxcbiAgICAvLyBEZWxlZ2F0ZWQgcm93IGV2ZW50IGhhbmRsZXJzXG4gICAgb25UYm9keVJvd0tleWRvd246IGZ1bmN0aW9uIG9uVGJvZHlSb3dLZXlkb3duKGV2dCkge1xuICAgICAgLy8gS2V5Ym9hcmQgbmF2aWdhdGlvbiBhbmQgcm93IGNsaWNrIGVtdWxhdGlvblxuICAgICAgdmFyIHRhcmdldCA9IGV2dC50YXJnZXQ7XG5cbiAgICAgIGlmICh0aGlzLnRib2R5Um93RXZ0U3RvcHBlZChldnQpIHx8IHRhcmdldC50YWdOYW1lICE9PSAnVFInIHx8IHRhcmdldCAhPT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCB8fCB0YXJnZXQudGFiSW5kZXggIT09IDApIHtcbiAgICAgICAgLy8gRWFybHkgZXhpdCBpZiBub3QgYW4gaXRlbSByb3cgVFJcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIga2V5Q29kZSA9IGV2dC5rZXlDb2RlO1xuXG4gICAgICBpZiAoYXJyYXlJbmNsdWRlcyhbS2V5Q29kZXMuRU5URVIsIEtleUNvZGVzLlNQQUNFXSwga2V5Q29kZSkpIHtcbiAgICAgICAgLy8gRW11bGF0ZWQgY2xpY2sgZm9yIGtleWJvYXJkIHVzZXJzLCB0cmFuc2ZlciB0byBjbGljayBoYW5kbGVyXG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMub25UQm9keVJvd0NsaWNrZWQoZXZ0KTtcbiAgICAgIH0gZWxzZSBpZiAoYXJyYXlJbmNsdWRlcyhbS2V5Q29kZXMuVVAsIEtleUNvZGVzLkRPV04sIEtleUNvZGVzLkhPTUUsIEtleUNvZGVzLkVORF0sIGtleUNvZGUpKSB7XG4gICAgICAgIC8vIEtleWJvYXJkIG5hdmlnYXRpb25cbiAgICAgICAgdmFyIHJvd0luZGV4ID0gdGhpcy5nZXRUYm9keVRySW5kZXgodGFyZ2V0KTtcblxuICAgICAgICBpZiAocm93SW5kZXggPiAtMSkge1xuICAgICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB2YXIgdHJzID0gdGhpcy5nZXRUYm9keVRycygpO1xuICAgICAgICAgIHZhciBzaGlmdCA9IGV2dC5zaGlmdEtleTtcblxuICAgICAgICAgIGlmIChrZXlDb2RlID09PSBLZXlDb2Rlcy5IT01FIHx8IHNoaWZ0ICYmIGtleUNvZGUgPT09IEtleUNvZGVzLlVQKSB7XG4gICAgICAgICAgICAvLyBGb2N1cyBmaXJzdCByb3dcbiAgICAgICAgICAgIHRyc1swXS5mb2N1cygpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoa2V5Q29kZSA9PT0gS2V5Q29kZXMuRU5EIHx8IHNoaWZ0ICYmIGtleUNvZGUgPT09IEtleUNvZGVzLkRPV04pIHtcbiAgICAgICAgICAgIC8vIEZvY3VzIGxhc3Qgcm93XG4gICAgICAgICAgICB0cnNbdHJzLmxlbmd0aCAtIDFdLmZvY3VzKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChrZXlDb2RlID09PSBLZXlDb2Rlcy5VUCAmJiByb3dJbmRleCA+IDApIHtcbiAgICAgICAgICAgIC8vIEZvY3VzIHByZXZpb3VzIHJvd1xuICAgICAgICAgICAgdHJzW3Jvd0luZGV4IC0gMV0uZm9jdXMoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGtleUNvZGUgPT09IEtleUNvZGVzLkRPV04gJiYgcm93SW5kZXggPCB0cnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgLy8gRm9jdXMgbmV4dCByb3dcbiAgICAgICAgICAgIHRyc1tyb3dJbmRleCArIDFdLmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBvblRCb2R5Um93Q2xpY2tlZDogZnVuY3Rpb24gb25UQm9keVJvd0NsaWNrZWQoZXZ0KSB7XG4gICAgICBpZiAodGhpcy50Ym9keVJvd0V2dFN0b3BwZWQoZXZ0KSkge1xuICAgICAgICAvLyBJZiB0YWJsZSBpcyBidXN5LCB0aGVuIGRvbid0IHByb3BhZ2F0ZVxuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKGZpbHRlckV2ZW50KGV2dCkgfHwgdGV4dFNlbGVjdGlvbkFjdGl2ZSh0aGlzLiRlbCkpIHtcbiAgICAgICAgLy8gQ2xpY2tlZCBvbiBhIG5vbi1kaXNhYmxlZCBjb250cm9sIHNvIGlnbm9yZVxuICAgICAgICAvLyBPciB1c2VyIGlzIHNlbGVjdGluZyB0ZXh0LCBzbyBpZ25vcmVcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVtaXRUYm9keVJvd0V2ZW50KCdyb3ctY2xpY2tlZCcsIGV2dCk7XG4gICAgfSxcbiAgICBvblRib2R5Um93TWlkZGxlTW91c2VSb3dDbGlja2VkOiBmdW5jdGlvbiBvblRib2R5Um93TWlkZGxlTW91c2VSb3dDbGlja2VkKGV2dCkge1xuICAgICAgaWYgKCF0aGlzLnRib2R5Um93RXZ0U3RvcHBlZChldnQpICYmIGV2dC53aGljaCA9PT0gMikge1xuICAgICAgICB0aGlzLmVtaXRUYm9keVJvd0V2ZW50KCdyb3ctbWlkZGxlLWNsaWNrZWQnLCBldnQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgb25UYm9keVJvd0NvbnRleHRtZW51OiBmdW5jdGlvbiBvblRib2R5Um93Q29udGV4dG1lbnUoZXZ0KSB7XG4gICAgICBpZiAoIXRoaXMudGJvZHlSb3dFdnRTdG9wcGVkKGV2dCkpIHtcbiAgICAgICAgdGhpcy5lbWl0VGJvZHlSb3dFdmVudCgncm93LWNvbnRleHRtZW51JywgZXZ0KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uVGJvZHlSb3dEYmxDbGlja2VkOiBmdW5jdGlvbiBvblRib2R5Um93RGJsQ2xpY2tlZChldnQpIHtcbiAgICAgIGlmICghdGhpcy50Ym9keVJvd0V2dFN0b3BwZWQoZXZ0KSAmJiAhZmlsdGVyRXZlbnQoZXZ0KSkge1xuICAgICAgICB0aGlzLmVtaXRUYm9keVJvd0V2ZW50KCdyb3ctZGJsY2xpY2tlZCcsIGV2dCk7XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyBOb3RlOiBSb3cgaG92ZXIgaGFuZGxlcnMgYXJlIGhhbmRsZWQgYnkgdGhlIHRib2R5LXJvdyBtaXhpblxuICAgIC8vIEFzIG1vdXNlZW50ZXIvbW91c2VsZWF2ZSBldmVudHMgZG8gbm90IGJ1YmJsZVxuICAgIC8vXG4gICAgLy8gUmVuZGVyIEhlbHBlclxuICAgIHJlbmRlclRib2R5OiBmdW5jdGlvbiByZW5kZXJUYm9keSgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIC8vIFJlbmRlciB0aGUgdGJvZHkgZWxlbWVudCBhbmQgY2hpbGRyZW5cbiAgICAgIHZhciBpdGVtcyA9IHRoaXMuY29tcHV0ZWRJdGVtczsgLy8gU2hvcnRjdXQgdG8gYGNyZWF0ZUVsZW1lbnRgIChjb3VsZCB1c2UgYHRoaXMuX2MoKWAgaW5zdGVhZClcblxuICAgICAgdmFyIGggPSB0aGlzLiRjcmVhdGVFbGVtZW50O1xuICAgICAgdmFyIGhhc1Jvd0NsaWNrSGFuZGxlciA9IHRoaXMuJGxpc3RlbmVyc1sncm93LWNsaWNrZWQnXSB8fCB0aGlzLmlzU2VsZWN0YWJsZTsgLy8gUHJlcGFyZSB0aGUgdGJvZHkgcm93c1xuXG4gICAgICB2YXIgJHJvd3MgPSBbXTsgLy8gQWRkIHRoZSBpdGVtIGRhdGEgcm93cyBvciB0aGUgYnVzeSBzbG90XG5cbiAgICAgIHZhciAkYnVzeSA9IHRoaXMucmVuZGVyQnVzeSA/IHRoaXMucmVuZGVyQnVzeSgpIDogbnVsbDtcblxuICAgICAgaWYgKCRidXN5KSB7XG4gICAgICAgIC8vIElmIHRhYmxlIGlzIGJ1c3kgYW5kIGEgYnVzeSBzbG90LCB0aGVuIHJldHVybiBvbmx5IHRoZSBidXN5IFwicm93XCIgaW5kaWNhdG9yXG4gICAgICAgICRyb3dzLnB1c2goJGJ1c3kpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVGFibGUgaXNuJ3QgYnVzeSwgb3Igd2UgZG9uJ3QgaGF2ZSBhIGJ1c3kgc2xvdFxuICAgICAgICAvLyBDcmVhdGUgYSBzbG90IGNhY2hlIGZvciBpbXByb3ZlZCBwZXJmb3JtYW5jZSB3aGVuIGxvb2tpbmcgdXAgY2VsbCBzbG90IG5hbWVzXG4gICAgICAgIC8vIFZhbHVlcyB3aWxsIGJlIGtleWVkIGJ5IHRoZSBmaWVsZCdzIGBrZXlgIGFuZCB3aWxsIHN0b3JlIHRoZSBzbG90J3MgbmFtZVxuICAgICAgICAvLyBTbG90cyBjb3VsZCBiZSBkeW5hbWljIChpLmUuIGB2LWlmYCksIHNvIHdlIG11c3QgY29tcHV0ZSBvbiBlYWNoIHJlbmRlclxuICAgICAgICAvLyBVc2VkIGJ5IHRib2R5LXJvdyBtaXhpbiByZW5kZXIgaGVscGVyXG4gICAgICAgIHZhciBjYWNoZSA9IHt9O1xuICAgICAgICB2YXIgZGVmYXVsdFNsb3ROYW1lID0gdGhpcy5oYXNOb3JtYWxpemVkU2xvdCgnY2VsbCgpJykgPyAnY2VsbCgpJyA6IG51bGw7XG4gICAgICAgIHRoaXMuY29tcHV0ZWRGaWVsZHMuZm9yRWFjaChmdW5jdGlvbiAoZmllbGQpIHtcbiAgICAgICAgICB2YXIga2V5ID0gZmllbGQua2V5O1xuICAgICAgICAgIHZhciBmdWxsTmFtZSA9IFwiY2VsbChcIi5jb25jYXQoa2V5LCBcIilcIik7XG4gICAgICAgICAgdmFyIGxvd2VyTmFtZSA9IFwiY2VsbChcIi5jb25jYXQoa2V5LnRvTG93ZXJDYXNlKCksIFwiKVwiKTtcbiAgICAgICAgICBjYWNoZVtrZXldID0gX3RoaXMuaGFzTm9ybWFsaXplZFNsb3QoZnVsbE5hbWUpID8gZnVsbE5hbWUgOiBfdGhpcy5oYXNOb3JtYWxpemVkU2xvdChsb3dlck5hbWUpID8gbG93ZXJOYW1lIDogZGVmYXVsdFNsb3ROYW1lO1xuICAgICAgICB9KTsgLy8gQ3JlYXRlZCBhcyBhIG5vbi1yZWFjdGl2ZSBwcm9wZXJ0eSBzbyB0byBub3QgdHJpZ2dlciBjb21wb25lbnQgdXBkYXRlc1xuICAgICAgICAvLyBNdXN0IGJlIGEgZnJlc2ggb2JqZWN0IGVhY2ggcmVuZGVyXG5cbiAgICAgICAgdGhpcy4kX2JvZHlGaWVsZFNsb3ROYW1lQ2FjaGUgPSBjYWNoZTsgLy8gQWRkIHN0YXRpYyB0b3Agcm93IHNsb3QgKGhpZGRlbiBpbiB2aXNpYmx5IHN0YWNrZWQgbW9kZVxuICAgICAgICAvLyBhcyB3ZSBjYW4ndCBjb250cm9sIGBkYXRhLWxhYmVsYCBhdHRyKVxuXG4gICAgICAgICRyb3dzLnB1c2godGhpcy5yZW5kZXJUb3BSb3cgPyB0aGlzLnJlbmRlclRvcFJvdygpIDogaCgpKTsgLy8gUmVuZGVyIHRoZSByb3dzXG5cbiAgICAgICAgaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgcm93SW5kZXgpIHtcbiAgICAgICAgICAvLyBSZW5kZXIgdGhlIGluZGl2aWR1YWwgaXRlbSByb3cgKHJvd3MgaWYgZGV0YWlscyBzbG90KVxuICAgICAgICAgICRyb3dzLnB1c2goX3RoaXMucmVuZGVyVGJvZHlSb3coaXRlbSwgcm93SW5kZXgpKTtcbiAgICAgICAgfSk7IC8vIEVtcHR5IGl0ZW1zIC8gZW1wdHkgZmlsdGVyZWQgcm93IHNsb3QgKG9ubHkgc2hvd3MgaWYgYGl0ZW1zLmxlbmd0aCA8IDFgKVxuXG4gICAgICAgICRyb3dzLnB1c2godGhpcy5yZW5kZXJFbXB0eSA/IHRoaXMucmVuZGVyRW1wdHkoKSA6IGgoKSk7IC8vIFN0YXRpYyBib3R0b20gcm93IHNsb3QgKGhpZGRlbiBpbiB2aXNpYmx5IHN0YWNrZWQgbW9kZVxuICAgICAgICAvLyBhcyB3ZSBjYW4ndCBjb250cm9sIGBkYXRhLWxhYmVsYCBhdHRyKVxuXG4gICAgICAgICRyb3dzLnB1c2godGhpcy5yZW5kZXJCb3R0b21Sb3cgPyB0aGlzLnJlbmRlckJvdHRvbVJvdygpIDogaCgpKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGhhbmRsZXJzID0ge1xuICAgICAgICAvLyBUT0RPOiBXZSBtYXkgd2FudCB0byB0byBvbmx5IGluc3RhbnRpYXRlIHRoZXNlIGhhbmRsZXJzXG4gICAgICAgIC8vICAgICAgIGlmIHRoZXJlIGlzIGFuIGV2ZW50IGxpc3RlbmVyIHJlZ2lzdGVyZWRcbiAgICAgICAgYXV4Y2xpY2s6IHRoaXMub25UYm9keVJvd01pZGRsZU1vdXNlUm93Q2xpY2tlZCxcbiAgICAgICAgLy8gVE9ETzogUGVyaGFwcyB3ZSBkbyB3YW50IHRvIGF1dG9tYXRpY2FsbHkgcHJldmVudCB0aGVcbiAgICAgICAgLy8gICAgICAgZGVmYXVsdCBjb250ZXh0IG1lbnUgZnJvbSBzaG93aW5nIGlmIHRoZXJlIGlzXG4gICAgICAgIC8vICAgICAgIGEgYHJvdy1jb250ZXh0bWVudWAgbGlzdGVuZXIgcmVnaXN0ZXJlZC5cbiAgICAgICAgY29udGV4dG1lbnU6IHRoaXMub25UYm9keVJvd0NvbnRleHRtZW51LFxuICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGV2ZW50KHMpIGlzIG5vdCBjb25zaWRlcmVkIEExMVkgZnJpZW5kbHlcbiAgICAgICAgZGJsY2xpY2s6IHRoaXMub25UYm9keVJvd0RibENsaWNrZWQgLy8gaG92ZXIgZXZlbnRzIChtb3VzZWVudGVyL21vdXNlbGVhdmUpIGFkIGhhbmRsZWQgYnkgdGJvZHktcm93IG1peGluXG5cbiAgICAgIH07XG5cbiAgICAgIGlmIChoYXNSb3dDbGlja0hhbmRsZXIpIHtcbiAgICAgICAgaGFuZGxlcnMuY2xpY2sgPSB0aGlzLm9uVEJvZHlSb3dDbGlja2VkO1xuICAgICAgICBoYW5kbGVycy5rZXlkb3duID0gdGhpcy5vblRib2R5Um93S2V5ZG93bjtcbiAgICAgIH0gLy8gQXNzZW1ibGUgcm93cyBpbnRvIHRoZSB0Ym9keVxuXG5cbiAgICAgIHZhciAkdGJvZHkgPSBoKEJUYm9keSwge1xuICAgICAgICByZWY6ICd0Ym9keScsXG4gICAgICAgIGNsYXNzOiB0aGlzLnRib2R5Q2xhc3MgfHwgbnVsbCxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICB0Ym9keVRyYW5zaXRpb25Qcm9wczogdGhpcy50Ym9keVRyYW5zaXRpb25Qcm9wcyxcbiAgICAgICAgICB0Ym9keVRyYW5zaXRpb25IYW5kbGVyczogdGhpcy50Ym9keVRyYW5zaXRpb25IYW5kbGVyc1xuICAgICAgICB9LFxuICAgICAgICAvLyBCVGJvZHkgdHJhbnNmZXJzIGFsbCBuYXRpdmUgZXZlbnQgbGlzdGVuZXJzIHRvIHRoZSByb290IGVsZW1lbnRcbiAgICAgICAgLy8gVE9ETzogT25seSBzZXQgdGhlIGhhbmRsZXJzIGlmIHRoZSB0YWJsZSBpcyBub3QgYnVzeVxuICAgICAgICBvbjogaGFuZGxlcnNcbiAgICAgIH0sICRyb3dzKTsgLy8gUmV0dXJuIHRoZSBhc3NlbWJsZWQgdGJvZHlcblxuICAgICAgcmV0dXJuICR0Ym9keTtcbiAgICB9XG4gIH1cbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL21peGluLXRib2R5LmpzXG4vLyBtb2R1bGUgaWQgPSAyMTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///210\n"); /***/ }), /* 211 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return TabsPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tabs__ = __webpack_require__(212);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__tab__ = __webpack_require__(213);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BTabs */\n/* unused harmony reexport BTab */\n\n\n\nvar TabsPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BTabs: __WEBPACK_IMPORTED_MODULE_0__tabs__[\"a\" /* BTabs */],\n BTab: __WEBPACK_IMPORTED_MODULE_1__tab__[\"a\" /* BTab */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJzL2luZGV4LmpzPzYzMjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQStCO0FBQ0Y7QUFDdUI7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxXQUFXLG9EQUFLO0FBQ2hCLFVBQVUsa0RBQUk7QUFDZDtBQUNBLENBQUMiLCJmaWxlIjoiMjExLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQlRhYnMgfSBmcm9tICcuL3RhYnMnO1xuaW1wb3J0IHsgQlRhYiB9IGZyb20gJy4vdGFiJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBUYWJzUGx1Z2luID1cbi8qI19fUFVSRV9fKi9cbnBsdWdpbkZhY3Rvcnkoe1xuICBjb21wb25lbnRzOiB7XG4gICAgQlRhYnM6IEJUYWJzLFxuICAgIEJUYWI6IEJUYWJcbiAgfVxufSk7XG5leHBvcnQgeyBUYWJzUGx1Z2luLCBCVGFicywgQlRhYiB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdGFicy9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMjExXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///211\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BTableLite; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__helpers_mixin_items__ = __webpack_require__(200);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__helpers_mixin_caption__ = __webpack_require__(204);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__helpers_mixin_colgroup__ = __webpack_require__(205);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__helpers_mixin_stacked__ = __webpack_require__(87);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__helpers_mixin_thead__ = __webpack_require__(206);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__helpers_mixin_tfoot__ = __webpack_require__(209);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__helpers_mixin_tbody__ = __webpack_require__(210);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__helpers_mixin_table_renderer__ = __webpack_require__(90);\n // Mixins\n\n\n // Table helper Mixins\n\n\n\n\n\n\n\n // Main table renderer mixin\n\n // b-table-lite component definition\n// @vue/component\n\nvar BTableLite =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BTableLite',\n // Order of mixins is important!\n // They are merged from first to last, followed by this component.\n mixins: [// Required mixins\n __WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__helpers_mixin_items__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_10__helpers_mixin_table_renderer__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__helpers_mixin_stacked__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__helpers_mixin_thead__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_8__helpers_mixin_tfoot__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_9__helpers_mixin_tbody__[\"a\" /* default */], // Features Mixins\n // These are pretty lightweight, and are useful for lightweight tables\n __WEBPACK_IMPORTED_MODULE_4__helpers_mixin_caption__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__helpers_mixin_colgroup__[\"a\" /* default */]] // render function provided by table-renderer mixin\n\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS90YWJsZS1saXRlLmpzP2I0MmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDOztBQUVJO0FBQ3VCOztBQUVkO0FBQ0k7QUFDRTtBQUNGO0FBQ0o7QUFDQTtBQUNBOztBQUVpQjtBQUNoRTs7QUFFTztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsMkRBQU8sRUFBRSx1RUFBa0IsRUFBRSxxRUFBVSxFQUFFLCtFQUFrQixFQUFFLHVFQUFZLEVBQUUscUVBQVUsRUFBRSxxRUFBVSxFQUFFLHFFQUFVO0FBQy9HO0FBQ0EsRUFBRSx1RUFBWSxFQUFFLHdFQUFhOztBQUU3QixDQUFDIiwiZmlsZSI6IjIxMS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJzsgLy8gTWl4aW5zXG5cbmltcG9ydCBpZE1peGluIGZyb20gJy4uLy4uL21peGlucy9pZCc7XG5pbXBvcnQgbm9ybWFsaXplU2xvdE1peGluIGZyb20gJy4uLy4uL21peGlucy9ub3JtYWxpemUtc2xvdCc7IC8vIFRhYmxlIGhlbHBlciBNaXhpbnNcblxuaW1wb3J0IGl0ZW1zTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLWl0ZW1zJztcbmltcG9ydCBjYXB0aW9uTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLWNhcHRpb24nO1xuaW1wb3J0IGNvbGdyb3VwTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLWNvbGdyb3VwJztcbmltcG9ydCBzdGFja2VkTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLXN0YWNrZWQnO1xuaW1wb3J0IHRoZWFkTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLXRoZWFkJztcbmltcG9ydCB0Zm9vdE1peGluIGZyb20gJy4vaGVscGVycy9taXhpbi10Zm9vdCc7XG5pbXBvcnQgdGJvZHlNaXhpbiBmcm9tICcuL2hlbHBlcnMvbWl4aW4tdGJvZHknOyAvLyBNYWluIHRhYmxlIHJlbmRlcmVyIG1peGluXG5cbmltcG9ydCB0YWJsZVJlbmRlcmVyTWl4aW4gZnJvbSAnLi9oZWxwZXJzL21peGluLXRhYmxlLXJlbmRlcmVyJzsgLy8gYi10YWJsZS1saXRlIGNvbXBvbmVudCBkZWZpbml0aW9uXG4vLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJUYWJsZUxpdGUgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCVGFibGVMaXRlJyxcbiAgLy8gT3JkZXIgb2YgbWl4aW5zIGlzIGltcG9ydGFudCFcbiAgLy8gVGhleSBhcmUgbWVyZ2VkIGZyb20gZmlyc3QgdG8gbGFzdCwgZm9sbG93ZWQgYnkgdGhpcyBjb21wb25lbnQuXG4gIG1peGluczogWy8vIFJlcXVpcmVkIG1peGluc1xuICBpZE1peGluLCBub3JtYWxpemVTbG90TWl4aW4sIGl0ZW1zTWl4aW4sIHRhYmxlUmVuZGVyZXJNaXhpbiwgc3RhY2tlZE1peGluLCB0aGVhZE1peGluLCB0Zm9vdE1peGluLCB0Ym9keU1peGluLCAvLyBGZWF0dXJlcyBNaXhpbnNcbiAgLy8gVGhlc2UgYXJlIHByZXR0eSBsaWdodHdlaWdodCwgYW5kIGFyZSB1c2VmdWwgZm9yIGxpZ2h0d2VpZ2h0IHRhYmxlc1xuICBjYXB0aW9uTWl4aW4sIGNvbGdyb3VwTWl4aW5dIC8vIHJlbmRlciBmdW5jdGlvbiBwcm92aWRlZCBieSB0YWJsZS1yZW5kZXJlciBtaXhpblxuXG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLWxpdGUuanNcbi8vIG1vZHVsZSBpZCA9IDIxMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///211\n"); /***/ }), /* 212 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BTabs; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_loose_equal__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_observe_dom__ = __webpack_require__(39);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_stable_sort__ = __webpack_require__(201);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__link_link__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__nav_nav__ = __webpack_require__(47);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n\n\n\n\n\n // -- Constants --\n\nvar navProps = Object(__WEBPACK_IMPORTED_MODULE_8__utils_object__[\"k\" /* omit */])(__WEBPACK_IMPORTED_MODULE_12__nav_nav__[\"b\" /* props */], ['tabs', 'isNavBar', 'cardHeader']); // -- Utils --\n// Filter function to filter out disabled tabs\n\nvar notDisabled = function notDisabled(tab) {\n return !tab.disabled;\n}; // --- Helper components ---\n// @vue/component\n\n\nvar BTabButtonHelper =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BTabButtonHelper',\n inject: {\n bvTabs: {\n default: function _default()\n /* istanbul ignore next */\n {\n return {};\n }\n }\n },\n props: {\n // Reference to the child <b-tab> instance\n tab: {\n default: null\n },\n tabs: {\n type: Array,\n default: function _default()\n /* istanbul ignore next */\n {\n return [];\n }\n },\n id: {\n type: String,\n default: null\n },\n controls: {\n type: String,\n default: null\n },\n tabIndex: {\n type: Number,\n default: null\n },\n posInSet: {\n type: Number,\n default: null\n },\n setSize: {\n type: Number,\n default: null\n },\n noKeyNav: {\n type: Boolean,\n default: false\n }\n },\n methods: {\n focus: function focus() {\n if (this.$refs && this.$refs.link && this.$refs.link.focus) {\n this.$refs.link.focus();\n }\n },\n handleEvt: function handleEvt(evt) {\n var stop = function stop() {\n evt.preventDefault();\n evt.stopPropagation();\n };\n\n if (this.tab.disabled) {\n /* istanbul ignore next */\n return;\n }\n\n var type = evt.type;\n var key = evt.keyCode;\n var shift = evt.shiftKey;\n\n if (type === 'click') {\n stop();\n this.$emit('click', evt);\n } else if (type === 'keydown' && !this.noKeyNav && key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].SPACE) {\n // In keynav mode, SPACE press will also trigger a click/select\n stop();\n this.$emit('click', evt);\n } else if (type === 'keydown' && !this.noKeyNav) {\n // For keyboard navigation\n if (key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].UP || key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].LEFT || key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].HOME) {\n stop();\n\n if (shift || key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].HOME) {\n this.$emit('first', evt);\n } else {\n this.$emit('prev', evt);\n }\n } else if (key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].DOWN || key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].RIGHT || key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].END) {\n stop();\n\n if (shift || key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].END) {\n this.$emit('last', evt);\n } else {\n this.$emit('next', evt);\n }\n }\n }\n }\n },\n render: function render(h) {\n var link = h(__WEBPACK_IMPORTED_MODULE_11__link_link__[\"a\" /* BLink */], {\n ref: 'link',\n staticClass: 'nav-link',\n class: [{\n active: this.tab.localActive && !this.tab.disabled,\n disabled: this.tab.disabled\n }, this.tab.titleLinkClass, // Apply <b-tabs> `activeNavItemClass` styles when the tab is active\n this.tab.localActive ? this.bvTabs.activeNavItemClass : null],\n props: {\n disabled: this.tab.disabled\n },\n attrs: {\n role: 'tab',\n id: this.id,\n // Roving tab index when keynav enabled\n tabindex: this.tabIndex,\n 'aria-selected': this.tab.localActive && !this.tab.disabled ? 'true' : 'false',\n 'aria-setsize': this.setSize,\n 'aria-posinset': this.posInSet,\n 'aria-controls': this.controls\n },\n on: {\n click: this.handleEvt,\n keydown: this.handleEvt\n }\n }, [this.tab.normalizeSlot('title') || this.tab.title]);\n return h('li', {\n staticClass: 'nav-item',\n class: [this.tab.titleItemClass],\n attrs: {\n role: 'presentation'\n }\n }, [link]);\n }\n}); // @vue/component\n\nvar BTabs =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BTabs',\n mixins: [__WEBPACK_IMPORTED_MODULE_9__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_10__mixins_normalize_slot__[\"a\" /* default */]],\n provide: function provide() {\n return {\n bvTabs: this\n };\n },\n model: {\n prop: 'value',\n event: 'input'\n },\n props: _objectSpread({}, navProps, {\n tag: {\n type: String,\n default: 'div'\n },\n card: {\n type: Boolean,\n default: false\n },\n end: {\n // Synonym for 'bottom'\n type: Boolean,\n default: false\n },\n noFade: {\n type: Boolean,\n default: false\n },\n noNavStyle: {\n type: Boolean,\n default: false\n },\n noKeyNav: {\n type: Boolean,\n default: false\n },\n lazy: {\n // This prop is sniffed by the <b-tab> child\n type: Boolean,\n default: false\n },\n contentClass: {\n type: [String, Array, Object],\n default: null\n },\n navClass: {\n type: [String, Array, Object],\n default: null\n },\n navWrapperClass: {\n type: [String, Array, Object],\n default: null\n },\n activeNavItemClass: {\n // Only applied to the currently active <b-nav-item>\n type: [String, Array, Object],\n default: null\n },\n activeTabClass: {\n // Only applied to the currently active <b-tab>\n // This prop is sniffed by the <b-tab> child\n type: [String, Array, Object],\n default: null\n },\n value: {\n // v-model\n type: Number,\n default: null\n }\n }),\n data: function data() {\n var tabIdx = parseInt(this.value, 10);\n tabIdx = isNaN(tabIdx) ? -1 : tabIdx;\n return {\n // Index of current tab\n currentTab: tabIdx,\n // Array of direct child <b-tab> instances, in DOM order\n tabs: [],\n // Array of child instances registered (for triggering reactive updates)\n registeredTabs: [],\n // Flag to know if we are mounted or not\n isMounted: false\n };\n },\n computed: {\n fade: function fade() {\n // This computed prop is sniffed by the tab child\n return !this.noFade;\n },\n localNavClass: function localNavClass() {\n var classes = [];\n\n if (this.card && this.vertical) {\n classes.push('card-header', 'h-100', 'border-bottom-0', 'rounded-0');\n }\n\n return [].concat(classes, [this.navClass]);\n }\n },\n watch: {\n currentTab: function currentTab(val, old) {\n var index = -1; // Ensure only one tab is active at most\n\n this.tabs.forEach(function (tab, idx) {\n if (val === idx && !tab.disabled) {\n tab.localActive = true;\n index = idx;\n } else {\n tab.localActive = false;\n }\n }); // Update the v-model\n\n this.$emit('input', index);\n },\n value: function value(val, old) {\n if (val !== old) {\n val = parseInt(val, 10);\n val = isNaN(val) ? -1 : val;\n old = parseInt(old, 10) || 0;\n var tabs = this.tabs;\n\n if (tabs[val] && !tabs[val].disabled) {\n this.currentTab = val;\n } else {\n // Try next or prev tabs\n if (val < old) {\n this.previousTab();\n } else {\n this.nextTab();\n }\n }\n }\n },\n registeredTabs: function registeredTabs(newVal, oldVal) {\n var _this = this;\n\n // Each b-tab will register/unregister itself.\n // We use this to detect when tabs are added/removed\n // to trigger the update of the tabs.\n this.$nextTick(function () {\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_dom__[\"w\" /* requestAF */])(function () {\n _this.updateTabs();\n });\n });\n },\n tabs: function tabs(newVal, oldVal) {\n var _this2 = this;\n\n // If tabs added, removed, or re-ordered, we emit a `changed` event.\n // We use `tab._uid` instead of `tab.safeId()`, as the later is changed\n // in a nextTick if no explicit ID is provided, causing duplicate emits.\n if (!Object(__WEBPACK_IMPORTED_MODULE_2__utils_loose_equal__[\"a\" /* default */])(newVal.map(function (t) {\n return t._uid;\n }), oldVal.map(function (t) {\n return t._uid;\n }))) {\n // In a nextTick to ensure currentTab has been set first.\n this.$nextTick(function () {\n // We emit shallow copies of the new and old arrays of tabs, to\n // prevent users from potentially mutating the internal arrays.\n _this2.$emit('changed', newVal.slice(), oldVal.slice());\n });\n }\n },\n isMounted: function isMounted(newVal, oldVal) {\n var _this3 = this;\n\n // Trigger an update after mounted. Needed for tabs inside lazy modals.\n if (newVal) {\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_dom__[\"w\" /* requestAF */])(function () {\n _this3.updateTabs();\n });\n } // Enable or disable the observer\n\n\n this.setObserver(newVal);\n }\n },\n created: function created() {\n var _this4 = this;\n\n var tabIdx = parseInt(this.value, 10);\n this.currentTab = isNaN(tabIdx) ? -1 : tabIdx;\n this._bvObserver = null; // For SSR and to make sure only a single tab is shown on mount\n // We wrap this in a `$nextTick()` to ensure the child tabs have been created\n\n this.$nextTick(function () {\n _this4.updateTabs();\n });\n },\n mounted: function mounted() {\n var _this5 = this;\n\n // Call `updateTabs()` just in case...\n this.updateTabs();\n this.$nextTick(function () {\n // Flag we are now mounted and to switch to DOM for tab probing.\n // As this.$slots.default appears to lie about component instances\n // after b-tabs is destroyed and re-instantiated.\n // And this.$children does not respect DOM order.\n _this5.isMounted = true;\n });\n },\n deactivated: function deactivated()\n /* istanbul ignore next */\n {\n this.isMounted = false;\n },\n activated: function activated()\n /* istanbul ignore next */\n {\n var _this6 = this;\n\n var tabIdx = parseInt(this.value, 10);\n this.currentTab = isNaN(tabIdx) ? -1 : tabIdx;\n this.$nextTick(function () {\n _this6.updateTabs();\n\n _this6.isMounted = true;\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.isMounted = false;\n },\n destroyed: function destroyed() {\n // Ensure no references to child instances exist\n this.tabs = [];\n },\n methods: {\n registerTab: function registerTab(tab) {\n var _this7 = this;\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_5__utils_array__[\"a\" /* arrayIncludes */])(this.registeredTabs, tab)) {\n this.registeredTabs.push(tab);\n tab.$once('hook:destroyed', function () {\n _this7.unregisterTab(tab);\n });\n }\n },\n unregisterTab: function unregisterTab(tab) {\n this.registeredTabs = this.registeredTabs.slice().filter(function (t) {\n return t !== tab;\n });\n },\n setObserver: function setObserver(on) {\n // DOM observer is needed to detect changes in order of tabs\n if (on) {\n // Make sure no existing observer running\n this.setObserver(false);\n var self = this;\n /* istanbul ignore next: difficult to test mutation observer in JSDOM */\n\n var handler = function handler() {\n // We delay the update to ensure that `tab.safeId()` has\n // updated with the final ID value.\n self.$nextTick(function () {\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_dom__[\"w\" /* requestAF */])(function () {\n self.updateTabs();\n });\n });\n }; // Watch for changes to <b-tab> sub components\n\n\n this._bvObserver = Object(__WEBPACK_IMPORTED_MODULE_3__utils_observe_dom__[\"a\" /* default */])(this.$refs.tabsContainer, handler, {\n childList: true,\n subtree: false,\n attributes: true,\n attributeFilter: ['id']\n });\n } else {\n if (this._bvObserver && this._bvObserver.disconnect) {\n this._bvObserver.disconnect();\n }\n\n this._bvObserver = null;\n }\n },\n getTabs: function getTabs() {\n // We use registeredTabs as the source of truth for child tab components. And we\n // filter out any BTab components that are extended BTab with a root child BTab.\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/3260\n var tabs = this.registeredTabs.filter(function (tab) {\n return tab.$children.filter(function (t) {\n return t._isTab;\n }).length === 0;\n }); // DOM Order of Tabs\n\n var order = [];\n\n if (this.isMounted && tabs.length > 0) {\n // We rely on the DOM when mounted to get the 'true' order of the b-tab children.\n // querySelectorAll(...) always returns elements in document order, regardless of\n // order specified in the selector.\n var selector = tabs.map(function (tab) {\n return \"#\".concat(tab.safeId());\n }).join(', ');\n order = Object(__WEBPACK_IMPORTED_MODULE_6__utils_dom__[\"y\" /* selectAll */])(selector, this.$el).map(function (el) {\n return el.id;\n }).filter(Boolean);\n } // Stable sort keeps the original order if not found in the\n // `order` array, which will be an empty array before mount.\n\n\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_stable_sort__[\"a\" /* default */])(tabs, function (a, b) {\n return order.indexOf(a.safeId()) - order.indexOf(b.safeId());\n });\n },\n // Update list of <b-tab> children\n updateTabs: function updateTabs() {\n // Probe tabs\n var tabs = this.getTabs(); // Find *last* active non-disabled tab in current tabs\n // We trust tab state over currentTab, in case tabs were added/removed/re-ordered\n\n var tabIndex = tabs.indexOf(tabs.slice().reverse().find(function (tab) {\n return tab.localActive && !tab.disabled;\n })); // Else try setting to currentTab\n\n if (tabIndex < 0) {\n var currentTab = this.currentTab;\n\n if (currentTab >= tabs.length) {\n // Handle last tab being removed, so find the last non-disabled tab\n tabIndex = tabs.indexOf(tabs.slice().reverse().find(notDisabled));\n } else if (tabs[currentTab] && !tabs[currentTab].disabled) {\n // Current tab is not disabled\n tabIndex = currentTab;\n }\n } // Else find *first* non-disabled tab in current tabs\n\n\n if (tabIndex < 0) {\n tabIndex = tabs.indexOf(tabs.find(notDisabled));\n } // Set the current tab state to active\n\n\n tabs.forEach(function (tab, idx) {\n // tab.localActive = idx === tabIndex && !tab.disabled\n tab.localActive = false;\n });\n\n if (tabs[tabIndex]) {\n tabs[tabIndex].localActive = true;\n } // Update the array of tab children\n\n\n this.tabs = tabs; // Set the currentTab index (can be -1 if no non-disabled tabs)\n\n this.currentTab = tabIndex;\n },\n // Find a button that controls a tab, given the tab reference\n // Returns the button vm instance\n getButtonForTab: function getButtonForTab(tab) {\n return (this.$refs.buttons || []).find(function (btn) {\n return btn.tab === tab;\n });\n },\n // Force a button to re-render it's content, given a <b-tab> instance\n // Called by <b-tab> on `update()`\n updateButton: function updateButton(tab) {\n var button = this.getButtonForTab(tab);\n\n if (button && button.$forceUpdate) {\n button.$forceUpdate();\n }\n },\n // Activate a tab given a <b-tab> instance\n // Also accessed by <b-tab>\n activateTab: function activateTab(tab) {\n var result = false;\n\n if (tab) {\n var index = this.tabs.indexOf(tab);\n\n if (!tab.disabled && index > -1) {\n result = true;\n this.currentTab = index;\n }\n }\n\n if (!result) {\n // Couldn't set tab, so ensure v-model is set to `this.currentTab`\n\n /* istanbul ignore next: should rarely happen */\n this.$emit('input', this.currentTab);\n }\n\n return result;\n },\n // Deactivate a tab given a <b-tab> instance\n // Accessed by <b-tab>\n deactivateTab: function deactivateTab(tab) {\n if (tab) {\n // Find first non-disabled tab that isn't the one being deactivated\n // If no tabs are available, then don't deactivate current tab\n return this.activateTab(this.tabs.filter(function (t) {\n return t !== tab;\n }).find(notDisabled));\n } else {\n // No tab specified\n\n /* istanbul ignore next: should never happen */\n return false;\n }\n },\n // Focus a tab button given it's <b-tab> instance\n focusButton: function focusButton(tab) {\n var _this8 = this;\n\n // Wrap in `$nextTick()` to ensure DOM has completed rendering/updating before focusing\n this.$nextTick(function () {\n var button = _this8.getButtonForTab(tab);\n\n if (button && button.focus) {\n button.focus();\n }\n });\n },\n // Emit a click event on a specified <b-tab> component instance\n emitTabClick: function emitTabClick(tab, evt) {\n if (Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"d\" /* isEvent */])(evt) && tab && tab.$emit && !tab.disabled) {\n tab.$emit('click', evt);\n }\n },\n // Click handler\n clickTab: function clickTab(tab, evt) {\n this.activateTab(tab);\n this.emitTabClick(tab, evt);\n },\n // Move to first non-disabled tab\n firstTab: function firstTab(focus) {\n var tab = this.tabs.find(notDisabled);\n\n if (this.activateTab(tab) && focus) {\n this.focusButton(tab);\n this.emitTabClick(tab, focus);\n }\n },\n // Move to previous non-disabled tab\n previousTab: function previousTab(focus) {\n var currentIndex = Math.max(this.currentTab, 0);\n var tab = this.tabs.slice(0, currentIndex).reverse().find(notDisabled);\n\n if (this.activateTab(tab) && focus) {\n this.focusButton(tab);\n this.emitTabClick(tab, focus);\n }\n },\n // Move to next non-disabled tab\n nextTab: function nextTab(focus) {\n var currentIndex = Math.max(this.currentTab, -1);\n var tab = this.tabs.slice(currentIndex + 1).find(notDisabled);\n\n if (this.activateTab(tab) && focus) {\n this.focusButton(tab);\n this.emitTabClick(tab, focus);\n }\n },\n // Move to last non-disabled tab\n lastTab: function lastTab(focus) {\n var tab = this.tabs.slice().reverse().find(notDisabled);\n\n if (this.activateTab(tab) && focus) {\n this.focusButton(tab);\n this.emitTabClick(tab, focus);\n }\n }\n },\n render: function render(h) {\n var _this9 = this;\n\n var tabs = this.tabs; // Currently active tab\n\n var activeTab = tabs.find(function (tab) {\n return tab.localActive && !tab.disabled;\n }); // Tab button to allow focusing when no active tab found (keynav only)\n\n var fallbackTab = tabs.find(function (tab) {\n return !tab.disabled;\n }); // For each <b-tab> found create the tab buttons\n\n var buttons = tabs.map(function (tab, index) {\n var tabIndex = null; // Ensure at least one tab button is focusable when keynav enabled (if possible)\n\n if (!_this9.noKeyNav) {\n // Buttons are not in tab index unless active, or a fallback tab\n tabIndex = -1;\n\n if (activeTab === tab || !activeTab && fallbackTab === tab) {\n // Place tab button in tab sequence\n tabIndex = null;\n }\n }\n\n return h(BTabButtonHelper, {\n key: tab._uid || index,\n ref: 'buttons',\n // Needed to make `this.$refs.buttons` an array\n refInFor: true,\n props: {\n tab: tab,\n tabs: tabs,\n id: tab.controlledBy || (tab.safeId ? tab.safeId(\"_BV_tab_button_\") : null),\n controls: tab.safeId ? tab.safeId() : null,\n tabIndex: tabIndex,\n setSize: tabs.length,\n posInSet: index + 1,\n noKeyNav: _this9.noKeyNav\n },\n on: {\n click: function click(evt) {\n _this9.clickTab(tab, evt);\n },\n first: _this9.firstTab,\n prev: _this9.previousTab,\n next: _this9.nextTab,\n last: _this9.lastTab\n }\n });\n }); // Nav\n\n var nav = h(__WEBPACK_IMPORTED_MODULE_12__nav_nav__[\"a\" /* BNav */], {\n ref: 'nav',\n class: this.localNavClass,\n attrs: {\n role: 'tablist',\n id: this.safeId('_BV_tab_controls_')\n },\n props: {\n fill: this.fill,\n justified: this.justified,\n align: this.align,\n tabs: !this.noNavStyle && !this.pills,\n pills: !this.noNavStyle && this.pills,\n vertical: this.vertical,\n small: this.small,\n cardHeader: this.card && !this.vertical\n }\n }, [this.normalizeSlot('tabs-start') || h(), buttons, this.normalizeSlot('tabs-end') || h()]);\n nav = h('div', {\n key: 'bv-tabs-nav',\n class: [{\n 'card-header': this.card && !this.vertical && !this.end,\n 'card-footer': this.card && !this.vertical && this.end,\n 'col-auto': this.vertical\n }, this.navWrapperClass]\n }, [nav]);\n var empty = h();\n\n if (!tabs || tabs.length === 0) {\n empty = h('div', {\n key: 'bv-empty-tab',\n class: ['tab-pane', 'active', {\n 'card-body': this.card\n }]\n }, this.normalizeSlot('empty'));\n } // Main content section\n\n\n var content = h('div', {\n ref: 'tabsContainer',\n key: 'bv-tabs-container',\n staticClass: 'tab-content',\n class: [{\n col: this.vertical\n }, this.contentClass],\n attrs: {\n id: this.safeId('_BV_tab_container_')\n }\n }, Object(__WEBPACK_IMPORTED_MODULE_5__utils_array__[\"b\" /* concat */])(this.normalizeSlot('default'), empty)); // Render final output\n\n return h(this.tag, {\n staticClass: 'tabs',\n class: {\n row: this.vertical,\n 'no-gutters': this.vertical && this.card\n },\n attrs: {\n id: this.safeId()\n }\n }, [this.end ? content : h(), [nav], this.end ? h() : content]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJzL3RhYnMuanM/M2FiZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNXO0FBQ0k7QUFDQTtBQUNBO0FBQ1M7QUFDSDtBQUNUO0FBQ0o7QUFDSjtBQUN1QjtBQUN4QjtBQUNpQjs7QUFFdEQsZUFBZSxtRUFBSSxDQUFDLHdEQUFTLHNDQUFzQztBQUNuRTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGOzs7QUFHQTtBQUNBO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sMERBQTBELGlFQUFRO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLG9CQUFvQixpRUFBUSxlQUFlLGlFQUFRLGlCQUFpQixpRUFBUTtBQUM1RTs7QUFFQSwrQkFBK0IsaUVBQVE7QUFDdkM7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFNBQVMsa0JBQWtCLGlFQUFRLGlCQUFpQixpRUFBUSxrQkFBa0IsaUVBQVE7QUFDdEY7O0FBRUEsK0JBQStCLGlFQUFRO0FBQ3ZDO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxpQkFBaUIsMERBQUs7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMsRUFBRTs7QUFFSTtBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsMkRBQU8sRUFBRSx3RUFBa0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHFFQUFTO0FBQ2pCO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLDJFQUFVO0FBQ3JCO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUSxxRUFBUztBQUNqQjtBQUNBLFNBQVM7QUFDVCxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRCQUE0QjtBQUM1Qjs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUEsV0FBVywyRUFBYTtBQUN4QjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkscUVBQVM7QUFDckI7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYLFVBQVU7OztBQUdWLDJCQUEyQiwyRUFBVTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTyxFQUFFOztBQUVUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxnQkFBZ0IscUVBQVM7QUFDekI7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQOzs7QUFHQSxhQUFhLDJFQUFVO0FBQ3ZCO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7O0FBRUE7QUFDQTtBQUNBLE9BQU8sR0FBRzs7QUFFVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsT0FBTzs7O0FBR1AsdUJBQXVCOztBQUV2QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLFVBQVUsdUVBQU87QUFDakI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVAsZ0JBQWdCLHVEQUFJO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFLG9FQUFNLHdDQUF3Qzs7QUFFckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjIxMi5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhzb3VyY2UsIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCBLZXlDb2RlcyBmcm9tICcuLi8uLi91dGlscy9rZXktY29kZXMnO1xuaW1wb3J0IGxvb3NlRXF1YWwgZnJvbSAnLi4vLi4vdXRpbHMvbG9vc2UtZXF1YWwnO1xuaW1wb3J0IG9ic2VydmVEb20gZnJvbSAnLi4vLi4vdXRpbHMvb2JzZXJ2ZS1kb20nO1xuaW1wb3J0IHN0YWJsZVNvcnQgZnJvbSAnLi4vLi4vdXRpbHMvc3RhYmxlLXNvcnQnO1xuaW1wb3J0IHsgYXJyYXlJbmNsdWRlcywgY29uY2F0IH0gZnJvbSAnLi4vLi4vdXRpbHMvYXJyYXknO1xuaW1wb3J0IHsgcmVxdWVzdEFGLCBzZWxlY3RBbGwgfSBmcm9tICcuLi8uLi91dGlscy9kb20nO1xuaW1wb3J0IHsgaXNFdmVudCB9IGZyb20gJy4uLy4uL3V0aWxzL2luc3BlY3QnO1xuaW1wb3J0IHsgb21pdCB9IGZyb20gJy4uLy4uL3V0aWxzL29iamVjdCc7XG5pbXBvcnQgaWRNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvaWQnO1xuaW1wb3J0IG5vcm1hbGl6ZVNsb3RNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvbm9ybWFsaXplLXNsb3QnO1xuaW1wb3J0IHsgQkxpbmsgfSBmcm9tICcuLi9saW5rL2xpbmsnO1xuaW1wb3J0IHsgQk5hdiwgcHJvcHMgYXMgQk5hdlByb3BzIH0gZnJvbSAnLi4vbmF2L25hdic7IC8vIC0tIENvbnN0YW50cyAtLVxuXG52YXIgbmF2UHJvcHMgPSBvbWl0KEJOYXZQcm9wcywgWyd0YWJzJywgJ2lzTmF2QmFyJywgJ2NhcmRIZWFkZXInXSk7IC8vIC0tIFV0aWxzIC0tXG4vLyBGaWx0ZXIgZnVuY3Rpb24gdG8gZmlsdGVyIG91dCBkaXNhYmxlZCB0YWJzXG5cbnZhciBub3REaXNhYmxlZCA9IGZ1bmN0aW9uIG5vdERpc2FibGVkKHRhYikge1xuICByZXR1cm4gIXRhYi5kaXNhYmxlZDtcbn07IC8vIC0tLSBIZWxwZXIgY29tcG9uZW50cyAtLS1cbi8vIEB2dWUvY29tcG9uZW50XG5cblxudmFyIEJUYWJCdXR0b25IZWxwZXIgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCVGFiQnV0dG9uSGVscGVyJyxcbiAgaW5qZWN0OiB7XG4gICAgYnZUYWJzOiB7XG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBwcm9wczoge1xuICAgIC8vIFJlZmVyZW5jZSB0byB0aGUgY2hpbGQgPGItdGFiPiBpbnN0YW5jZVxuICAgIHRhYjoge1xuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgdGFiczoge1xuICAgICAgdHlwZTogQXJyYXksXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgfSxcbiAgICBpZDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgY29udHJvbHM6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIHRhYkluZGV4OiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBwb3NJblNldDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgc2V0U2l6ZToge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgbm9LZXlOYXY6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGZvY3VzOiBmdW5jdGlvbiBmb2N1cygpIHtcbiAgICAgIGlmICh0aGlzLiRyZWZzICYmIHRoaXMuJHJlZnMubGluayAmJiB0aGlzLiRyZWZzLmxpbmsuZm9jdXMpIHtcbiAgICAgICAgdGhpcy4kcmVmcy5saW5rLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVFdnQ6IGZ1bmN0aW9uIGhhbmRsZUV2dChldnQpIHtcbiAgICAgIHZhciBzdG9wID0gZnVuY3Rpb24gc3RvcCgpIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLnRhYi5kaXNhYmxlZCkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciB0eXBlID0gZXZ0LnR5cGU7XG4gICAgICB2YXIga2V5ID0gZXZ0LmtleUNvZGU7XG4gICAgICB2YXIgc2hpZnQgPSBldnQuc2hpZnRLZXk7XG5cbiAgICAgIGlmICh0eXBlID09PSAnY2xpY2snKSB7XG4gICAgICAgIHN0b3AoKTtcbiAgICAgICAgdGhpcy4kZW1pdCgnY2xpY2snLCBldnQpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAna2V5ZG93bicgJiYgIXRoaXMubm9LZXlOYXYgJiYga2V5ID09PSBLZXlDb2Rlcy5TUEFDRSkge1xuICAgICAgICAvLyBJbiBrZXluYXYgbW9kZSwgU1BBQ0UgcHJlc3Mgd2lsbCBhbHNvIHRyaWdnZXIgYSBjbGljay9zZWxlY3RcbiAgICAgICAgc3RvcCgpO1xuICAgICAgICB0aGlzLiRlbWl0KCdjbGljaycsIGV2dCk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdrZXlkb3duJyAmJiAhdGhpcy5ub0tleU5hdikge1xuICAgICAgICAvLyBGb3Iga2V5Ym9hcmQgbmF2aWdhdGlvblxuICAgICAgICBpZiAoa2V5ID09PSBLZXlDb2Rlcy5VUCB8fCBrZXkgPT09IEtleUNvZGVzLkxFRlQgfHwga2V5ID09PSBLZXlDb2Rlcy5IT01FKSB7XG4gICAgICAgICAgc3RvcCgpO1xuXG4gICAgICAgICAgaWYgKHNoaWZ0IHx8IGtleSA9PT0gS2V5Q29kZXMuSE9NRSkge1xuICAgICAgICAgICAgdGhpcy4kZW1pdCgnZmlyc3QnLCBldnQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiRlbWl0KCdwcmV2JywgZXZ0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBLZXlDb2Rlcy5ET1dOIHx8IGtleSA9PT0gS2V5Q29kZXMuUklHSFQgfHwga2V5ID09PSBLZXlDb2Rlcy5FTkQpIHtcbiAgICAgICAgICBzdG9wKCk7XG5cbiAgICAgICAgICBpZiAoc2hpZnQgfHwga2V5ID09PSBLZXlDb2Rlcy5FTkQpIHtcbiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ2xhc3QnLCBldnQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiRlbWl0KCduZXh0JywgZXZ0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgbGluayA9IGgoQkxpbmssIHtcbiAgICAgIHJlZjogJ2xpbmsnLFxuICAgICAgc3RhdGljQ2xhc3M6ICduYXYtbGluaycsXG4gICAgICBjbGFzczogW3tcbiAgICAgICAgYWN0aXZlOiB0aGlzLnRhYi5sb2NhbEFjdGl2ZSAmJiAhdGhpcy50YWIuZGlzYWJsZWQsXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLnRhYi5kaXNhYmxlZFxuICAgICAgfSwgdGhpcy50YWIudGl0bGVMaW5rQ2xhc3MsIC8vIEFwcGx5IDxiLXRhYnM+IGBhY3RpdmVOYXZJdGVtQ2xhc3NgIHN0eWxlcyB3aGVuIHRoZSB0YWIgaXMgYWN0aXZlXG4gICAgICB0aGlzLnRhYi5sb2NhbEFjdGl2ZSA/IHRoaXMuYnZUYWJzLmFjdGl2ZU5hdkl0ZW1DbGFzcyA6IG51bGxdLFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMudGFiLmRpc2FibGVkXG4gICAgICB9LFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcm9sZTogJ3RhYicsXG4gICAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgICAvLyBSb3ZpbmcgdGFiIGluZGV4IHdoZW4ga2V5bmF2IGVuYWJsZWRcbiAgICAgICAgdGFiaW5kZXg6IHRoaXMudGFiSW5kZXgsXG4gICAgICAgICdhcmlhLXNlbGVjdGVkJzogdGhpcy50YWIubG9jYWxBY3RpdmUgJiYgIXRoaXMudGFiLmRpc2FibGVkID8gJ3RydWUnIDogJ2ZhbHNlJyxcbiAgICAgICAgJ2FyaWEtc2V0c2l6ZSc6IHRoaXMuc2V0U2l6ZSxcbiAgICAgICAgJ2FyaWEtcG9zaW5zZXQnOiB0aGlzLnBvc0luU2V0LFxuICAgICAgICAnYXJpYS1jb250cm9scyc6IHRoaXMuY29udHJvbHNcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAgICBjbGljazogdGhpcy5oYW5kbGVFdnQsXG4gICAgICAgIGtleWRvd246IHRoaXMuaGFuZGxlRXZ0XG4gICAgICB9XG4gICAgfSwgW3RoaXMudGFiLm5vcm1hbGl6ZVNsb3QoJ3RpdGxlJykgfHwgdGhpcy50YWIudGl0bGVdKTtcbiAgICByZXR1cm4gaCgnbGknLCB7XG4gICAgICBzdGF0aWNDbGFzczogJ25hdi1pdGVtJyxcbiAgICAgIGNsYXNzOiBbdGhpcy50YWIudGl0bGVJdGVtQ2xhc3NdLFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcm9sZTogJ3ByZXNlbnRhdGlvbidcbiAgICAgIH1cbiAgICB9LCBbbGlua10pO1xuICB9XG59KTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCVGFicyA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JUYWJzJyxcbiAgbWl4aW5zOiBbaWRNaXhpbiwgbm9ybWFsaXplU2xvdE1peGluXSxcbiAgcHJvdmlkZTogZnVuY3Rpb24gcHJvdmlkZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnZUYWJzOiB0aGlzXG4gICAgfTtcbiAgfSxcbiAgbW9kZWw6IHtcbiAgICBwcm9wOiAndmFsdWUnLFxuICAgIGV2ZW50OiAnaW5wdXQnXG4gIH0sXG4gIHByb3BzOiBfb2JqZWN0U3ByZWFkKHt9LCBuYXZQcm9wcywge1xuICAgIHRhZzoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2RpdidcbiAgICB9LFxuICAgIGNhcmQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgZW5kOiB7XG4gICAgICAvLyBTeW5vbnltIGZvciAnYm90dG9tJ1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBub0ZhZGU6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgbm9OYXZTdHlsZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBub0tleU5hdjoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBsYXp5OiB7XG4gICAgICAvLyBUaGlzIHByb3AgaXMgc25pZmZlZCBieSB0aGUgPGItdGFiPiBjaGlsZFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBjb250ZW50Q2xhc3M6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIEFycmF5LCBPYmplY3RdLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgbmF2Q2xhc3M6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIEFycmF5LCBPYmplY3RdLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgbmF2V3JhcHBlckNsYXNzOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBBcnJheSwgT2JqZWN0XSxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIGFjdGl2ZU5hdkl0ZW1DbGFzczoge1xuICAgICAgLy8gT25seSBhcHBsaWVkIHRvIHRoZSBjdXJyZW50bHkgYWN0aXZlIDxiLW5hdi1pdGVtPlxuICAgICAgdHlwZTogW1N0cmluZywgQXJyYXksIE9iamVjdF0sXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBhY3RpdmVUYWJDbGFzczoge1xuICAgICAgLy8gT25seSBhcHBsaWVkIHRvIHRoZSBjdXJyZW50bHkgYWN0aXZlIDxiLXRhYj5cbiAgICAgIC8vIFRoaXMgcHJvcCBpcyBzbmlmZmVkIGJ5IHRoZSA8Yi10YWI+IGNoaWxkXG4gICAgICB0eXBlOiBbU3RyaW5nLCBBcnJheSwgT2JqZWN0XSxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIHZhbHVlOiB7XG4gICAgICAvLyB2LW1vZGVsXG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfVxuICB9KSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICB2YXIgdGFiSWR4ID0gcGFyc2VJbnQodGhpcy52YWx1ZSwgMTApO1xuICAgIHRhYklkeCA9IGlzTmFOKHRhYklkeCkgPyAtMSA6IHRhYklkeDtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gSW5kZXggb2YgY3VycmVudCB0YWJcbiAgICAgIGN1cnJlbnRUYWI6IHRhYklkeCxcbiAgICAgIC8vIEFycmF5IG9mIGRpcmVjdCBjaGlsZCA8Yi10YWI+IGluc3RhbmNlcywgaW4gRE9NIG9yZGVyXG4gICAgICB0YWJzOiBbXSxcbiAgICAgIC8vIEFycmF5IG9mIGNoaWxkIGluc3RhbmNlcyByZWdpc3RlcmVkIChmb3IgdHJpZ2dlcmluZyByZWFjdGl2ZSB1cGRhdGVzKVxuICAgICAgcmVnaXN0ZXJlZFRhYnM6IFtdLFxuICAgICAgLy8gRmxhZyB0byBrbm93IGlmIHdlIGFyZSBtb3VudGVkIG9yIG5vdFxuICAgICAgaXNNb3VudGVkOiBmYWxzZVxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgZmFkZTogZnVuY3Rpb24gZmFkZSgpIHtcbiAgICAgIC8vIFRoaXMgY29tcHV0ZWQgcHJvcCBpcyBzbmlmZmVkIGJ5IHRoZSB0YWIgY2hpbGRcbiAgICAgIHJldHVybiAhdGhpcy5ub0ZhZGU7XG4gICAgfSxcbiAgICBsb2NhbE5hdkNsYXNzOiBmdW5jdGlvbiBsb2NhbE5hdkNsYXNzKCkge1xuICAgICAgdmFyIGNsYXNzZXMgPSBbXTtcblxuICAgICAgaWYgKHRoaXMuY2FyZCAmJiB0aGlzLnZlcnRpY2FsKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaCgnY2FyZC1oZWFkZXInLCAnaC0xMDAnLCAnYm9yZGVyLWJvdHRvbS0wJywgJ3JvdW5kZWQtMCcpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gW10uY29uY2F0KGNsYXNzZXMsIFt0aGlzLm5hdkNsYXNzXSk7XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIGN1cnJlbnRUYWI6IGZ1bmN0aW9uIGN1cnJlbnRUYWIodmFsLCBvbGQpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xOyAvLyBFbnN1cmUgb25seSBvbmUgdGFiIGlzIGFjdGl2ZSBhdCBtb3N0XG5cbiAgICAgIHRoaXMudGFicy5mb3JFYWNoKGZ1bmN0aW9uICh0YWIsIGlkeCkge1xuICAgICAgICBpZiAodmFsID09PSBpZHggJiYgIXRhYi5kaXNhYmxlZCkge1xuICAgICAgICAgIHRhYi5sb2NhbEFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgaW5kZXggPSBpZHg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFiLmxvY2FsQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pOyAvLyBVcGRhdGUgdGhlIHYtbW9kZWxcblxuICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBpbmRleCk7XG4gICAgfSxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUodmFsLCBvbGQpIHtcbiAgICAgIGlmICh2YWwgIT09IG9sZCkge1xuICAgICAgICB2YWwgPSBwYXJzZUludCh2YWwsIDEwKTtcbiAgICAgICAgdmFsID0gaXNOYU4odmFsKSA/IC0xIDogdmFsO1xuICAgICAgICBvbGQgPSBwYXJzZUludChvbGQsIDEwKSB8fCAwO1xuICAgICAgICB2YXIgdGFicyA9IHRoaXMudGFicztcblxuICAgICAgICBpZiAodGFic1t2YWxdICYmICF0YWJzW3ZhbF0uZGlzYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRUYWIgPSB2YWw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVHJ5IG5leHQgb3IgcHJldiB0YWJzXG4gICAgICAgICAgaWYgKHZhbCA8IG9sZCkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c1RhYigpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5leHRUYWIoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHJlZ2lzdGVyZWRUYWJzOiBmdW5jdGlvbiByZWdpc3RlcmVkVGFicyhuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgLy8gRWFjaCBiLXRhYiB3aWxsIHJlZ2lzdGVyL3VucmVnaXN0ZXIgaXRzZWxmLlxuICAgICAgLy8gV2UgdXNlIHRoaXMgdG8gZGV0ZWN0IHdoZW4gdGFicyBhcmUgYWRkZWQvcmVtb3ZlZFxuICAgICAgLy8gdG8gdHJpZ2dlciB0aGUgdXBkYXRlIG9mIHRoZSB0YWJzLlxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICByZXF1ZXN0QUYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzLnVwZGF0ZVRhYnMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHRhYnM6IGZ1bmN0aW9uIHRhYnMobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICAvLyBJZiB0YWJzIGFkZGVkLCByZW1vdmVkLCBvciByZS1vcmRlcmVkLCB3ZSBlbWl0IGEgYGNoYW5nZWRgIGV2ZW50LlxuICAgICAgLy8gV2UgdXNlIGB0YWIuX3VpZGAgaW5zdGVhZCBvZiBgdGFiLnNhZmVJZCgpYCwgYXMgdGhlIGxhdGVyIGlzIGNoYW5nZWRcbiAgICAgIC8vIGluIGEgbmV4dFRpY2sgaWYgbm8gZXhwbGljaXQgSUQgaXMgcHJvdmlkZWQsIGNhdXNpbmcgZHVwbGljYXRlIGVtaXRzLlxuICAgICAgaWYgKCFsb29zZUVxdWFsKG5ld1ZhbC5tYXAoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgcmV0dXJuIHQuX3VpZDtcbiAgICAgIH0pLCBvbGRWYWwubWFwKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHJldHVybiB0Ll91aWQ7XG4gICAgICB9KSkpIHtcbiAgICAgICAgLy8gSW4gYSBuZXh0VGljayB0byBlbnN1cmUgY3VycmVudFRhYiBoYXMgYmVlbiBzZXQgZmlyc3QuXG4gICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAvLyBXZSBlbWl0IHNoYWxsb3cgY29waWVzIG9mIHRoZSBuZXcgYW5kIG9sZCBhcnJheXMgb2YgdGFicywgdG9cbiAgICAgICAgICAvLyBwcmV2ZW50IHVzZXJzIGZyb20gcG90ZW50aWFsbHkgbXV0YXRpbmcgdGhlIGludGVybmFsIGFycmF5cy5cbiAgICAgICAgICBfdGhpczIuJGVtaXQoJ2NoYW5nZWQnLCBuZXdWYWwuc2xpY2UoKSwgb2xkVmFsLnNsaWNlKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGlzTW91bnRlZDogZnVuY3Rpb24gaXNNb3VudGVkKG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgLy8gVHJpZ2dlciBhbiB1cGRhdGUgYWZ0ZXIgbW91bnRlZC4gIE5lZWRlZCBmb3IgdGFicyBpbnNpZGUgbGF6eSBtb2RhbHMuXG4gICAgICBpZiAobmV3VmFsKSB7XG4gICAgICAgIHJlcXVlc3RBRihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMzLnVwZGF0ZVRhYnMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9IC8vIEVuYWJsZSBvciBkaXNhYmxlIHRoZSBvYnNlcnZlclxuXG5cbiAgICAgIHRoaXMuc2V0T2JzZXJ2ZXIobmV3VmFsKTtcbiAgICB9XG4gIH0sXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG4gICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICB2YXIgdGFiSWR4ID0gcGFyc2VJbnQodGhpcy52YWx1ZSwgMTApO1xuICAgIHRoaXMuY3VycmVudFRhYiA9IGlzTmFOKHRhYklkeCkgPyAtMSA6IHRhYklkeDtcbiAgICB0aGlzLl9idk9ic2VydmVyID0gbnVsbDsgLy8gRm9yIFNTUiBhbmQgdG8gbWFrZSBzdXJlIG9ubHkgYSBzaW5nbGUgdGFiIGlzIHNob3duIG9uIG1vdW50XG4gICAgLy8gV2Ugd3JhcCB0aGlzIGluIGEgYCRuZXh0VGljaygpYCB0byBlbnN1cmUgdGhlIGNoaWxkIHRhYnMgaGF2ZSBiZWVuIGNyZWF0ZWRcblxuICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzNC51cGRhdGVUYWJzKCk7XG4gICAgfSk7XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICAvLyBDYWxsIGB1cGRhdGVUYWJzKClgIGp1c3QgaW4gY2FzZS4uLlxuICAgIHRoaXMudXBkYXRlVGFicygpO1xuICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIEZsYWcgd2UgYXJlIG5vdyBtb3VudGVkIGFuZCB0byBzd2l0Y2ggdG8gRE9NIGZvciB0YWIgcHJvYmluZy5cbiAgICAgIC8vIEFzIHRoaXMuJHNsb3RzLmRlZmF1bHQgYXBwZWFycyB0byBsaWUgYWJvdXQgY29tcG9uZW50IGluc3RhbmNlc1xuICAgICAgLy8gYWZ0ZXIgYi10YWJzIGlzIGRlc3Ryb3llZCBhbmQgcmUtaW5zdGFudGlhdGVkLlxuICAgICAgLy8gQW5kIHRoaXMuJGNoaWxkcmVuIGRvZXMgbm90IHJlc3BlY3QgRE9NIG9yZGVyLlxuICAgICAgX3RoaXM1LmlzTW91bnRlZCA9IHRydWU7XG4gICAgfSk7XG4gIH0sXG4gIGRlYWN0aXZhdGVkOiBmdW5jdGlvbiBkZWFjdGl2YXRlZCgpXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHtcbiAgICB0aGlzLmlzTW91bnRlZCA9IGZhbHNlO1xuICB9LFxuICBhY3RpdmF0ZWQ6IGZ1bmN0aW9uIGFjdGl2YXRlZCgpXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHtcbiAgICB2YXIgX3RoaXM2ID0gdGhpcztcblxuICAgIHZhciB0YWJJZHggPSBwYXJzZUludCh0aGlzLnZhbHVlLCAxMCk7XG4gICAgdGhpcy5jdXJyZW50VGFiID0gaXNOYU4odGFiSWR4KSA/IC0xIDogdGFiSWR4O1xuICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzNi51cGRhdGVUYWJzKCk7XG5cbiAgICAgIF90aGlzNi5pc01vdW50ZWQgPSB0cnVlO1xuICAgIH0pO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIHRoaXMuaXNNb3VudGVkID0gZmFsc2U7XG4gIH0sXG4gIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkKCkge1xuICAgIC8vIEVuc3VyZSBubyByZWZlcmVuY2VzIHRvIGNoaWxkIGluc3RhbmNlcyBleGlzdFxuICAgIHRoaXMudGFicyA9IFtdO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgcmVnaXN0ZXJUYWI6IGZ1bmN0aW9uIHJlZ2lzdGVyVGFiKHRhYikge1xuICAgICAgdmFyIF90aGlzNyA9IHRoaXM7XG5cbiAgICAgIGlmICghYXJyYXlJbmNsdWRlcyh0aGlzLnJlZ2lzdGVyZWRUYWJzLCB0YWIpKSB7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJlZFRhYnMucHVzaCh0YWIpO1xuICAgICAgICB0YWIuJG9uY2UoJ2hvb2s6ZGVzdHJveWVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzNy51bnJlZ2lzdGVyVGFiKHRhYik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgdW5yZWdpc3RlclRhYjogZnVuY3Rpb24gdW5yZWdpc3RlclRhYih0YWIpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJlZFRhYnMgPSB0aGlzLnJlZ2lzdGVyZWRUYWJzLnNsaWNlKCkuZmlsdGVyKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHJldHVybiB0ICE9PSB0YWI7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHNldE9ic2VydmVyOiBmdW5jdGlvbiBzZXRPYnNlcnZlcihvbikge1xuICAgICAgLy8gRE9NIG9ic2VydmVyIGlzIG5lZWRlZCB0byBkZXRlY3QgY2hhbmdlcyBpbiBvcmRlciBvZiB0YWJzXG4gICAgICBpZiAob24pIHtcbiAgICAgICAgLy8gTWFrZSBzdXJlIG5vIGV4aXN0aW5nIG9ic2VydmVyIHJ1bm5pbmdcbiAgICAgICAgdGhpcy5zZXRPYnNlcnZlcihmYWxzZSk7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGRpZmZpY3VsdCB0byB0ZXN0IG11dGF0aW9uIG9ic2VydmVyIGluIEpTRE9NICovXG5cbiAgICAgICAgdmFyIGhhbmRsZXIgPSBmdW5jdGlvbiBoYW5kbGVyKCkge1xuICAgICAgICAgIC8vIFdlIGRlbGF5IHRoZSB1cGRhdGUgdG8gZW5zdXJlIHRoYXQgYHRhYi5zYWZlSWQoKWAgaGFzXG4gICAgICAgICAgLy8gdXBkYXRlZCB3aXRoIHRoZSBmaW5hbCBJRCB2YWx1ZS5cbiAgICAgICAgICBzZWxmLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXF1ZXN0QUYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICBzZWxmLnVwZGF0ZVRhYnMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9OyAvLyBXYXRjaCBmb3IgY2hhbmdlcyB0byA8Yi10YWI+IHN1YiBjb21wb25lbnRzXG5cblxuICAgICAgICB0aGlzLl9idk9ic2VydmVyID0gb2JzZXJ2ZURvbSh0aGlzLiRyZWZzLnRhYnNDb250YWluZXIsIGhhbmRsZXIsIHtcbiAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgc3VidHJlZTogZmFsc2UsXG4gICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnaWQnXVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLl9idk9ic2VydmVyICYmIHRoaXMuX2J2T2JzZXJ2ZXIuZGlzY29ubmVjdCkge1xuICAgICAgICAgIHRoaXMuX2J2T2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYnZPYnNlcnZlciA9IG51bGw7XG4gICAgICB9XG4gICAgfSxcbiAgICBnZXRUYWJzOiBmdW5jdGlvbiBnZXRUYWJzKCkge1xuICAgICAgLy8gV2UgdXNlIHJlZ2lzdGVyZWRUYWJzIGFzIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIGNoaWxkIHRhYiBjb21wb25lbnRzLiBBbmQgd2VcbiAgICAgIC8vIGZpbHRlciBvdXQgYW55IEJUYWIgY29tcG9uZW50cyB0aGF0IGFyZSBleHRlbmRlZCBCVGFiIHdpdGggYSByb290IGNoaWxkIEJUYWIuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYm9vdHN0cmFwLXZ1ZS9ib290c3RyYXAtdnVlL2lzc3Vlcy8zMjYwXG4gICAgICB2YXIgdGFicyA9IHRoaXMucmVnaXN0ZXJlZFRhYnMuZmlsdGVyKGZ1bmN0aW9uICh0YWIpIHtcbiAgICAgICAgcmV0dXJuIHRhYi4kY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgcmV0dXJuIHQuX2lzVGFiO1xuICAgICAgICB9KS5sZW5ndGggPT09IDA7XG4gICAgICB9KTsgLy8gRE9NIE9yZGVyIG9mIFRhYnNcblxuICAgICAgdmFyIG9yZGVyID0gW107XG5cbiAgICAgIGlmICh0aGlzLmlzTW91bnRlZCAmJiB0YWJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gV2UgcmVseSBvbiB0aGUgRE9NIHdoZW4gbW91bnRlZCB0byBnZXQgdGhlICd0cnVlJyBvcmRlciBvZiB0aGUgYi10YWIgY2hpbGRyZW4uXG4gICAgICAgIC8vIHF1ZXJ5U2VsZWN0b3JBbGwoLi4uKSBhbHdheXMgcmV0dXJucyBlbGVtZW50cyBpbiBkb2N1bWVudCBvcmRlciwgcmVnYXJkbGVzcyBvZlxuICAgICAgICAvLyBvcmRlciBzcGVjaWZpZWQgaW4gdGhlIHNlbGVjdG9yLlxuICAgICAgICB2YXIgc2VsZWN0b3IgPSB0YWJzLm1hcChmdW5jdGlvbiAodGFiKSB7XG4gICAgICAgICAgcmV0dXJuIFwiI1wiLmNvbmNhdCh0YWIuc2FmZUlkKCkpO1xuICAgICAgICB9KS5qb2luKCcsICcpO1xuICAgICAgICBvcmRlciA9IHNlbGVjdEFsbChzZWxlY3RvciwgdGhpcy4kZWwpLm1hcChmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICByZXR1cm4gZWwuaWQ7XG4gICAgICAgIH0pLmZpbHRlcihCb29sZWFuKTtcbiAgICAgIH0gLy8gU3RhYmxlIHNvcnQga2VlcHMgdGhlIG9yaWdpbmFsIG9yZGVyIGlmIG5vdCBmb3VuZCBpbiB0aGVcbiAgICAgIC8vIGBvcmRlcmAgYXJyYXksIHdoaWNoIHdpbGwgYmUgYW4gZW1wdHkgYXJyYXkgYmVmb3JlIG1vdW50LlxuXG5cbiAgICAgIHJldHVybiBzdGFibGVTb3J0KHRhYnMsIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiBvcmRlci5pbmRleE9mKGEuc2FmZUlkKCkpIC0gb3JkZXIuaW5kZXhPZihiLnNhZmVJZCgpKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLy8gVXBkYXRlIGxpc3Qgb2YgPGItdGFiPiBjaGlsZHJlblxuICAgIHVwZGF0ZVRhYnM6IGZ1bmN0aW9uIHVwZGF0ZVRhYnMoKSB7XG4gICAgICAvLyBQcm9iZSB0YWJzXG4gICAgICB2YXIgdGFicyA9IHRoaXMuZ2V0VGFicygpOyAvLyBGaW5kICpsYXN0KiBhY3RpdmUgbm9uLWRpc2FibGVkIHRhYiBpbiBjdXJyZW50IHRhYnNcbiAgICAgIC8vIFdlIHRydXN0IHRhYiBzdGF0ZSBvdmVyIGN1cnJlbnRUYWIsIGluIGNhc2UgdGFicyB3ZXJlIGFkZGVkL3JlbW92ZWQvcmUtb3JkZXJlZFxuXG4gICAgICB2YXIgdGFiSW5kZXggPSB0YWJzLmluZGV4T2YodGFicy5zbGljZSgpLnJldmVyc2UoKS5maW5kKGZ1bmN0aW9uICh0YWIpIHtcbiAgICAgICAgcmV0dXJuIHRhYi5sb2NhbEFjdGl2ZSAmJiAhdGFiLmRpc2FibGVkO1xuICAgICAgfSkpOyAvLyBFbHNlIHRyeSBzZXR0aW5nIHRvIGN1cnJlbnRUYWJcblxuICAgICAgaWYgKHRhYkluZGV4IDwgMCkge1xuICAgICAgICB2YXIgY3VycmVudFRhYiA9IHRoaXMuY3VycmVudFRhYjtcblxuICAgICAgICBpZiAoY3VycmVudFRhYiA+PSB0YWJzLmxlbmd0aCkge1xuICAgICAgICAgIC8vIEhhbmRsZSBsYXN0IHRhYiBiZWluZyByZW1vdmVkLCBzbyBmaW5kIHRoZSBsYXN0IG5vbi1kaXNhYmxlZCB0YWJcbiAgICAgICAgICB0YWJJbmRleCA9IHRhYnMuaW5kZXhPZih0YWJzLnNsaWNlKCkucmV2ZXJzZSgpLmZpbmQobm90RGlzYWJsZWQpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0YWJzW2N1cnJlbnRUYWJdICYmICF0YWJzW2N1cnJlbnRUYWJdLmRpc2FibGVkKSB7XG4gICAgICAgICAgLy8gQ3VycmVudCB0YWIgaXMgbm90IGRpc2FibGVkXG4gICAgICAgICAgdGFiSW5kZXggPSBjdXJyZW50VGFiO1xuICAgICAgICB9XG4gICAgICB9IC8vIEVsc2UgZmluZCAqZmlyc3QqIG5vbi1kaXNhYmxlZCB0YWIgaW4gY3VycmVudCB0YWJzXG5cblxuICAgICAgaWYgKHRhYkluZGV4IDwgMCkge1xuICAgICAgICB0YWJJbmRleCA9IHRhYnMuaW5kZXhPZih0YWJzLmZpbmQobm90RGlzYWJsZWQpKTtcbiAgICAgIH0gLy8gU2V0IHRoZSBjdXJyZW50IHRhYiBzdGF0ZSB0byBhY3RpdmVcblxuXG4gICAgICB0YWJzLmZvckVhY2goZnVuY3Rpb24gKHRhYiwgaWR4KSB7XG4gICAgICAgIC8vIHRhYi5sb2NhbEFjdGl2ZSA9IGlkeCA9PT0gdGFiSW5kZXggJiYgIXRhYi5kaXNhYmxlZFxuICAgICAgICB0YWIubG9jYWxBY3RpdmUgPSBmYWxzZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGFic1t0YWJJbmRleF0pIHtcbiAgICAgICAgdGFic1t0YWJJbmRleF0ubG9jYWxBY3RpdmUgPSB0cnVlO1xuICAgICAgfSAvLyBVcGRhdGUgdGhlIGFycmF5IG9mIHRhYiBjaGlsZHJlblxuXG5cbiAgICAgIHRoaXMudGFicyA9IHRhYnM7IC8vIFNldCB0aGUgY3VycmVudFRhYiBpbmRleCAoY2FuIGJlIC0xIGlmIG5vIG5vbi1kaXNhYmxlZCB0YWJzKVxuXG4gICAgICB0aGlzLmN1cnJlbnRUYWIgPSB0YWJJbmRleDtcbiAgICB9LFxuICAgIC8vIEZpbmQgYSBidXR0b24gdGhhdCBjb250cm9scyBhIHRhYiwgZ2l2ZW4gdGhlIHRhYiByZWZlcmVuY2VcbiAgICAvLyBSZXR1cm5zIHRoZSBidXR0b24gdm0gaW5zdGFuY2VcbiAgICBnZXRCdXR0b25Gb3JUYWI6IGZ1bmN0aW9uIGdldEJ1dHRvbkZvclRhYih0YWIpIHtcbiAgICAgIHJldHVybiAodGhpcy4kcmVmcy5idXR0b25zIHx8IFtdKS5maW5kKGZ1bmN0aW9uIChidG4pIHtcbiAgICAgICAgcmV0dXJuIGJ0bi50YWIgPT09IHRhYjtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLy8gRm9yY2UgYSBidXR0b24gdG8gcmUtcmVuZGVyIGl0J3MgY29udGVudCwgZ2l2ZW4gYSA8Yi10YWI+IGluc3RhbmNlXG4gICAgLy8gQ2FsbGVkIGJ5IDxiLXRhYj4gb24gYHVwZGF0ZSgpYFxuICAgIHVwZGF0ZUJ1dHRvbjogZnVuY3Rpb24gdXBkYXRlQnV0dG9uKHRhYikge1xuICAgICAgdmFyIGJ1dHRvbiA9IHRoaXMuZ2V0QnV0dG9uRm9yVGFiKHRhYik7XG5cbiAgICAgIGlmIChidXR0b24gJiYgYnV0dG9uLiRmb3JjZVVwZGF0ZSkge1xuICAgICAgICBidXR0b24uJGZvcmNlVXBkYXRlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyBBY3RpdmF0ZSBhIHRhYiBnaXZlbiBhIDxiLXRhYj4gaW5zdGFuY2VcbiAgICAvLyBBbHNvIGFjY2Vzc2VkIGJ5IDxiLXRhYj5cbiAgICBhY3RpdmF0ZVRhYjogZnVuY3Rpb24gYWN0aXZhdGVUYWIodGFiKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gZmFsc2U7XG5cbiAgICAgIGlmICh0YWIpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gdGhpcy50YWJzLmluZGV4T2YodGFiKTtcblxuICAgICAgICBpZiAoIXRhYi5kaXNhYmxlZCAmJiBpbmRleCA+IC0xKSB7XG4gICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRUYWIgPSBpbmRleDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAvLyBDb3VsZG4ndCBzZXQgdGFiLCBzbyBlbnN1cmUgdi1tb2RlbCBpcyBzZXQgdG8gYHRoaXMuY3VycmVudFRhYmBcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogc2hvdWxkIHJhcmVseSBoYXBwZW4gKi9cbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB0aGlzLmN1cnJlbnRUYWIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gICAgLy8gRGVhY3RpdmF0ZSBhIHRhYiBnaXZlbiBhIDxiLXRhYj4gaW5zdGFuY2VcbiAgICAvLyBBY2Nlc3NlZCBieSA8Yi10YWI+XG4gICAgZGVhY3RpdmF0ZVRhYjogZnVuY3Rpb24gZGVhY3RpdmF0ZVRhYih0YWIpIHtcbiAgICAgIGlmICh0YWIpIHtcbiAgICAgICAgLy8gRmluZCBmaXJzdCBub24tZGlzYWJsZWQgdGFiIHRoYXQgaXNuJ3QgdGhlIG9uZSBiZWluZyBkZWFjdGl2YXRlZFxuICAgICAgICAvLyBJZiBubyB0YWJzIGFyZSBhdmFpbGFibGUsIHRoZW4gZG9uJ3QgZGVhY3RpdmF0ZSBjdXJyZW50IHRhYlxuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmF0ZVRhYih0aGlzLnRhYnMuZmlsdGVyKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgcmV0dXJuIHQgIT09IHRhYjtcbiAgICAgICAgfSkuZmluZChub3REaXNhYmxlZCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTm8gdGFiIHNwZWNpZmllZFxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBzaG91bGQgbmV2ZXIgaGFwcGVuICovXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIEZvY3VzIGEgdGFiIGJ1dHRvbiBnaXZlbiBpdCdzIDxiLXRhYj4gaW5zdGFuY2VcbiAgICBmb2N1c0J1dHRvbjogZnVuY3Rpb24gZm9jdXNCdXR0b24odGFiKSB7XG4gICAgICB2YXIgX3RoaXM4ID0gdGhpcztcblxuICAgICAgLy8gV3JhcCBpbiBgJG5leHRUaWNrKClgIHRvIGVuc3VyZSBET00gaGFzIGNvbXBsZXRlZCByZW5kZXJpbmcvdXBkYXRpbmcgYmVmb3JlIGZvY3VzaW5nXG4gICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBidXR0b24gPSBfdGhpczguZ2V0QnV0dG9uRm9yVGFiKHRhYik7XG5cbiAgICAgICAgaWYgKGJ1dHRvbiAmJiBidXR0b24uZm9jdXMpIHtcbiAgICAgICAgICBidXR0b24uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvLyBFbWl0IGEgY2xpY2sgZXZlbnQgb24gYSBzcGVjaWZpZWQgPGItdGFiPiBjb21wb25lbnQgaW5zdGFuY2VcbiAgICBlbWl0VGFiQ2xpY2s6IGZ1bmN0aW9uIGVtaXRUYWJDbGljayh0YWIsIGV2dCkge1xuICAgICAgaWYgKGlzRXZlbnQoZXZ0KSAmJiB0YWIgJiYgdGFiLiRlbWl0ICYmICF0YWIuZGlzYWJsZWQpIHtcbiAgICAgICAgdGFiLiRlbWl0KCdjbGljaycsIGV2dCk7XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyBDbGljayBoYW5kbGVyXG4gICAgY2xpY2tUYWI6IGZ1bmN0aW9uIGNsaWNrVGFiKHRhYiwgZXZ0KSB7XG4gICAgICB0aGlzLmFjdGl2YXRlVGFiKHRhYik7XG4gICAgICB0aGlzLmVtaXRUYWJDbGljayh0YWIsIGV2dCk7XG4gICAgfSxcbiAgICAvLyBNb3ZlIHRvIGZpcnN0IG5vbi1kaXNhYmxlZCB0YWJcbiAgICBmaXJzdFRhYjogZnVuY3Rpb24gZmlyc3RUYWIoZm9jdXMpIHtcbiAgICAgIHZhciB0YWIgPSB0aGlzLnRhYnMuZmluZChub3REaXNhYmxlZCk7XG5cbiAgICAgIGlmICh0aGlzLmFjdGl2YXRlVGFiKHRhYikgJiYgZm9jdXMpIHtcbiAgICAgICAgdGhpcy5mb2N1c0J1dHRvbih0YWIpO1xuICAgICAgICB0aGlzLmVtaXRUYWJDbGljayh0YWIsIGZvY3VzKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIE1vdmUgdG8gcHJldmlvdXMgbm9uLWRpc2FibGVkIHRhYlxuICAgIHByZXZpb3VzVGFiOiBmdW5jdGlvbiBwcmV2aW91c1RhYihmb2N1cykge1xuICAgICAgdmFyIGN1cnJlbnRJbmRleCA9IE1hdGgubWF4KHRoaXMuY3VycmVudFRhYiwgMCk7XG4gICAgICB2YXIgdGFiID0gdGhpcy50YWJzLnNsaWNlKDAsIGN1cnJlbnRJbmRleCkucmV2ZXJzZSgpLmZpbmQobm90RGlzYWJsZWQpO1xuXG4gICAgICBpZiAodGhpcy5hY3RpdmF0ZVRhYih0YWIpICYmIGZvY3VzKSB7XG4gICAgICAgIHRoaXMuZm9jdXNCdXR0b24odGFiKTtcbiAgICAgICAgdGhpcy5lbWl0VGFiQ2xpY2sodGFiLCBmb2N1cyk7XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyBNb3ZlIHRvIG5leHQgbm9uLWRpc2FibGVkIHRhYlxuICAgIG5leHRUYWI6IGZ1bmN0aW9uIG5leHRUYWIoZm9jdXMpIHtcbiAgICAgIHZhciBjdXJyZW50SW5kZXggPSBNYXRoLm1heCh0aGlzLmN1cnJlbnRUYWIsIC0xKTtcbiAgICAgIHZhciB0YWIgPSB0aGlzLnRhYnMuc2xpY2UoY3VycmVudEluZGV4ICsgMSkuZmluZChub3REaXNhYmxlZCk7XG5cbiAgICAgIGlmICh0aGlzLmFjdGl2YXRlVGFiKHRhYikgJiYgZm9jdXMpIHtcbiAgICAgICAgdGhpcy5mb2N1c0J1dHRvbih0YWIpO1xuICAgICAgICB0aGlzLmVtaXRUYWJDbGljayh0YWIsIGZvY3VzKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIE1vdmUgdG8gbGFzdCBub24tZGlzYWJsZWQgdGFiXG4gICAgbGFzdFRhYjogZnVuY3Rpb24gbGFzdFRhYihmb2N1cykge1xuICAgICAgdmFyIHRhYiA9IHRoaXMudGFicy5zbGljZSgpLnJldmVyc2UoKS5maW5kKG5vdERpc2FibGVkKTtcblxuICAgICAgaWYgKHRoaXMuYWN0aXZhdGVUYWIodGFiKSAmJiBmb2N1cykge1xuICAgICAgICB0aGlzLmZvY3VzQnV0dG9uKHRhYik7XG4gICAgICAgIHRoaXMuZW1pdFRhYkNsaWNrKHRhYiwgZm9jdXMpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBfdGhpczkgPSB0aGlzO1xuXG4gICAgdmFyIHRhYnMgPSB0aGlzLnRhYnM7IC8vIEN1cnJlbnRseSBhY3RpdmUgdGFiXG5cbiAgICB2YXIgYWN0aXZlVGFiID0gdGFicy5maW5kKGZ1bmN0aW9uICh0YWIpIHtcbiAgICAgIHJldHVybiB0YWIubG9jYWxBY3RpdmUgJiYgIXRhYi5kaXNhYmxlZDtcbiAgICB9KTsgLy8gVGFiIGJ1dHRvbiB0byBhbGxvdyBmb2N1c2luZyB3aGVuIG5vIGFjdGl2ZSB0YWIgZm91bmQgKGtleW5hdiBvbmx5KVxuXG4gICAgdmFyIGZhbGxiYWNrVGFiID0gdGFicy5maW5kKGZ1bmN0aW9uICh0YWIpIHtcbiAgICAgIHJldHVybiAhdGFiLmRpc2FibGVkO1xuICAgIH0pOyAvLyBGb3IgZWFjaCA8Yi10YWI+IGZvdW5kIGNyZWF0ZSB0aGUgdGFiIGJ1dHRvbnNcblxuICAgIHZhciBidXR0b25zID0gdGFicy5tYXAoZnVuY3Rpb24gKHRhYiwgaW5kZXgpIHtcbiAgICAgIHZhciB0YWJJbmRleCA9IG51bGw7IC8vIEVuc3VyZSBhdCBsZWFzdCBvbmUgdGFiIGJ1dHRvbiBpcyBmb2N1c2FibGUgd2hlbiBrZXluYXYgZW5hYmxlZCAoaWYgcG9zc2libGUpXG5cbiAgICAgIGlmICghX3RoaXM5Lm5vS2V5TmF2KSB7XG4gICAgICAgIC8vIEJ1dHRvbnMgYXJlIG5vdCBpbiB0YWIgaW5kZXggdW5sZXNzIGFjdGl2ZSwgb3IgYSBmYWxsYmFjayB0YWJcbiAgICAgICAgdGFiSW5kZXggPSAtMTtcblxuICAgICAgICBpZiAoYWN0aXZlVGFiID09PSB0YWIgfHwgIWFjdGl2ZVRhYiAmJiBmYWxsYmFja1RhYiA9PT0gdGFiKSB7XG4gICAgICAgICAgLy8gUGxhY2UgdGFiIGJ1dHRvbiBpbiB0YWIgc2VxdWVuY2VcbiAgICAgICAgICB0YWJJbmRleCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGgoQlRhYkJ1dHRvbkhlbHBlciwge1xuICAgICAgICBrZXk6IHRhYi5fdWlkIHx8IGluZGV4LFxuICAgICAgICByZWY6ICdidXR0b25zJyxcbiAgICAgICAgLy8gTmVlZGVkIHRvIG1ha2UgYHRoaXMuJHJlZnMuYnV0dG9uc2AgYW4gYXJyYXlcbiAgICAgICAgcmVmSW5Gb3I6IHRydWUsXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgdGFiOiB0YWIsXG4gICAgICAgICAgdGFiczogdGFicyxcbiAgICAgICAgICBpZDogdGFiLmNvbnRyb2xsZWRCeSB8fCAodGFiLnNhZmVJZCA/IHRhYi5zYWZlSWQoXCJfQlZfdGFiX2J1dHRvbl9cIikgOiBudWxsKSxcbiAgICAgICAgICBjb250cm9sczogdGFiLnNhZmVJZCA/IHRhYi5zYWZlSWQoKSA6IG51bGwsXG4gICAgICAgICAgdGFiSW5kZXg6IHRhYkluZGV4LFxuICAgICAgICAgIHNldFNpemU6IHRhYnMubGVuZ3RoLFxuICAgICAgICAgIHBvc0luU2V0OiBpbmRleCArIDEsXG4gICAgICAgICAgbm9LZXlOYXY6IF90aGlzOS5ub0tleU5hdlxuICAgICAgICB9LFxuICAgICAgICBvbjoge1xuICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbiBjbGljayhldnQpIHtcbiAgICAgICAgICAgIF90aGlzOS5jbGlja1RhYih0YWIsIGV2dCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBmaXJzdDogX3RoaXM5LmZpcnN0VGFiLFxuICAgICAgICAgIHByZXY6IF90aGlzOS5wcmV2aW91c1RhYixcbiAgICAgICAgICBuZXh0OiBfdGhpczkubmV4dFRhYixcbiAgICAgICAgICBsYXN0OiBfdGhpczkubGFzdFRhYlxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTsgLy8gTmF2XG5cbiAgICB2YXIgbmF2ID0gaChCTmF2LCB7XG4gICAgICByZWY6ICduYXYnLFxuICAgICAgY2xhc3M6IHRoaXMubG9jYWxOYXZDbGFzcyxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6ICd0YWJsaXN0JyxcbiAgICAgICAgaWQ6IHRoaXMuc2FmZUlkKCdfQlZfdGFiX2NvbnRyb2xzXycpXG4gICAgICB9LFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgZmlsbDogdGhpcy5maWxsLFxuICAgICAgICBqdXN0aWZpZWQ6IHRoaXMuanVzdGlmaWVkLFxuICAgICAgICBhbGlnbjogdGhpcy5hbGlnbixcbiAgICAgICAgdGFiczogIXRoaXMubm9OYXZTdHlsZSAmJiAhdGhpcy5waWxscyxcbiAgICAgICAgcGlsbHM6ICF0aGlzLm5vTmF2U3R5bGUgJiYgdGhpcy5waWxscyxcbiAgICAgICAgdmVydGljYWw6IHRoaXMudmVydGljYWwsXG4gICAgICAgIHNtYWxsOiB0aGlzLnNtYWxsLFxuICAgICAgICBjYXJkSGVhZGVyOiB0aGlzLmNhcmQgJiYgIXRoaXMudmVydGljYWxcbiAgICAgIH1cbiAgICB9LCBbdGhpcy5ub3JtYWxpemVTbG90KCd0YWJzLXN0YXJ0JykgfHwgaCgpLCBidXR0b25zLCB0aGlzLm5vcm1hbGl6ZVNsb3QoJ3RhYnMtZW5kJykgfHwgaCgpXSk7XG4gICAgbmF2ID0gaCgnZGl2Jywge1xuICAgICAga2V5OiAnYnYtdGFicy1uYXYnLFxuICAgICAgY2xhc3M6IFt7XG4gICAgICAgICdjYXJkLWhlYWRlcic6IHRoaXMuY2FyZCAmJiAhdGhpcy52ZXJ0aWNhbCAmJiAhdGhpcy5lbmQsXG4gICAgICAgICdjYXJkLWZvb3Rlcic6IHRoaXMuY2FyZCAmJiAhdGhpcy52ZXJ0aWNhbCAmJiB0aGlzLmVuZCxcbiAgICAgICAgJ2NvbC1hdXRvJzogdGhpcy52ZXJ0aWNhbFxuICAgICAgfSwgdGhpcy5uYXZXcmFwcGVyQ2xhc3NdXG4gICAgfSwgW25hdl0pO1xuICAgIHZhciBlbXB0eSA9IGgoKTtcblxuICAgIGlmICghdGFicyB8fCB0YWJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgZW1wdHkgPSBoKCdkaXYnLCB7XG4gICAgICAgIGtleTogJ2J2LWVtcHR5LXRhYicsXG4gICAgICAgIGNsYXNzOiBbJ3RhYi1wYW5lJywgJ2FjdGl2ZScsIHtcbiAgICAgICAgICAnY2FyZC1ib2R5JzogdGhpcy5jYXJkXG4gICAgICAgIH1dXG4gICAgICB9LCB0aGlzLm5vcm1hbGl6ZVNsb3QoJ2VtcHR5JykpO1xuICAgIH0gLy8gTWFpbiBjb250ZW50IHNlY3Rpb25cblxuXG4gICAgdmFyIGNvbnRlbnQgPSBoKCdkaXYnLCB7XG4gICAgICByZWY6ICd0YWJzQ29udGFpbmVyJyxcbiAgICAgIGtleTogJ2J2LXRhYnMtY29udGFpbmVyJyxcbiAgICAgIHN0YXRpY0NsYXNzOiAndGFiLWNvbnRlbnQnLFxuICAgICAgY2xhc3M6IFt7XG4gICAgICAgIGNvbDogdGhpcy52ZXJ0aWNhbFxuICAgICAgfSwgdGhpcy5jb250ZW50Q2xhc3NdLFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgaWQ6IHRoaXMuc2FmZUlkKCdfQlZfdGFiX2NvbnRhaW5lcl8nKVxuICAgICAgfVxuICAgIH0sIGNvbmNhdCh0aGlzLm5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnKSwgZW1wdHkpKTsgLy8gUmVuZGVyIGZpbmFsIG91dHB1dFxuXG4gICAgcmV0dXJuIGgodGhpcy50YWcsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAndGFicycsXG4gICAgICBjbGFzczoge1xuICAgICAgICByb3c6IHRoaXMudmVydGljYWwsXG4gICAgICAgICduby1ndXR0ZXJzJzogdGhpcy52ZXJ0aWNhbCAmJiB0aGlzLmNhcmRcbiAgICAgIH0sXG4gICAgICBhdHRyczoge1xuICAgICAgICBpZDogdGhpcy5zYWZlSWQoKVxuICAgICAgfVxuICAgIH0sIFt0aGlzLmVuZCA/IGNvbnRlbnQgOiBoKCksIFtuYXZdLCB0aGlzLmVuZCA/IGgoKSA6IGNvbnRlbnRdKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJzL3RhYnMuanNcbi8vIG1vZHVsZSBpZCA9IDIxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///212\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BTableSimple; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__helpers_mixin_table_renderer__ = __webpack_require__(90);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__helpers_mixin_stacked__ = __webpack_require__(87);\n // Mixins\n\n\n // Main table renderer mixin\n\n // Feature miins\n\n // b-table-simple component definition\n// @vue/component\n\nvar BTableSimple =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BTableSimple',\n // Order of mixins is important!\n // They are merged from first to last, followed by this component.\n mixins: [// Required mixins\n __WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__helpers_mixin_table_renderer__[\"a\" /* default */], // feature mixin\n // Stacked requires extra handling by users via\n // the table cell `stacked-heading` prop\n __WEBPACK_IMPORTED_MODULE_4__helpers_mixin_stacked__[\"a\" /* default */]],\n computed: {\n isTableSimple: function isTableSimple() {\n return true;\n }\n } // render function provided by table-renderer mixin\n\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS90YWJsZS1zaW1wbGUuanM/YzYyNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7O0FBRUk7QUFDdUI7O0FBRUc7O0FBRWI7QUFDbkQ7O0FBRU87QUFDUDtBQUNBLDJEQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLDJEQUFPLEVBQUUsdUVBQWtCLEVBQUUsOEVBQWtCO0FBQ2pEO0FBQ0E7QUFDQSxFQUFFLHVFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVILENBQUMiLCJmaWxlIjoiMjEyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnOyAvLyBNaXhpbnNcblxuaW1wb3J0IGlkTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2lkJztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JzsgLy8gTWFpbiB0YWJsZSByZW5kZXJlciBtaXhpblxuXG5pbXBvcnQgdGFibGVSZW5kZXJlck1peGluIGZyb20gJy4vaGVscGVycy9taXhpbi10YWJsZS1yZW5kZXJlcic7IC8vIEZlYXR1cmUgbWlpbnNcblxuaW1wb3J0IHN0YWNrZWRNaXhpbiBmcm9tICcuL2hlbHBlcnMvbWl4aW4tc3RhY2tlZCc7IC8vIGItdGFibGUtc2ltcGxlIGNvbXBvbmVudCBkZWZpbml0aW9uXG4vLyBAdnVlL2NvbXBvbmVudFxuXG5leHBvcnQgdmFyIEJUYWJsZVNpbXBsZSA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JUYWJsZVNpbXBsZScsXG4gIC8vIE9yZGVyIG9mIG1peGlucyBpcyBpbXBvcnRhbnQhXG4gIC8vIFRoZXkgYXJlIG1lcmdlZCBmcm9tIGZpcnN0IHRvIGxhc3QsIGZvbGxvd2VkIGJ5IHRoaXMgY29tcG9uZW50LlxuICBtaXhpbnM6IFsvLyBSZXF1aXJlZCBtaXhpbnNcbiAgaWRNaXhpbiwgbm9ybWFsaXplU2xvdE1peGluLCB0YWJsZVJlbmRlcmVyTWl4aW4sIC8vIGZlYXR1cmUgbWl4aW5cbiAgLy8gU3RhY2tlZCByZXF1aXJlcyBleHRyYSBoYW5kbGluZyBieSB1c2VycyB2aWFcbiAgLy8gdGhlIHRhYmxlIGNlbGwgYHN0YWNrZWQtaGVhZGluZ2AgcHJvcFxuICBzdGFja2VkTWl4aW5dLFxuICBjb21wdXRlZDoge1xuICAgIGlzVGFibGVTaW1wbGU6IGZ1bmN0aW9uIGlzVGFibGVTaW1wbGUoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0gLy8gcmVuZGVyIGZ1bmN0aW9uIHByb3ZpZGVkIGJ5IHRhYmxlLXJlbmRlcmVyIG1peGluXG5cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdGFibGUvdGFibGUtc2ltcGxlLmpzXG4vLyBtb2R1bGUgaWQgPSAyMTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///212\n"); /***/ }), /* 213 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BTab; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_bv_transition__ = __webpack_require__(30);\n\n\n\n // @vue/component\n\nvar BTab =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BTab',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__[\"a\" /* default */]],\n inject: {\n bvTabs: {\n default: function _default() {\n return {\n // Don't set a tab index if not rendered inside <b-tabs>\n noKeyNav: true\n };\n }\n }\n },\n props: {\n active: {\n type: Boolean,\n default: false\n },\n tag: {\n type: String,\n default: 'div'\n },\n buttonId: {\n type: String,\n default: ''\n },\n title: {\n type: String,\n default: ''\n },\n titleItemClass: {\n // Sniffed by tabs.js and added to nav 'li.nav-item'\n type: [String, Array, Object],\n default: null\n },\n titleLinkClass: {\n // Sniffed by tabs.js and added to nav 'a.nav-link'\n type: [String, Array, Object],\n default: null\n },\n disabled: {\n type: Boolean,\n default: false\n },\n noBody: {\n type: Boolean,\n default: false\n },\n lazy: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n localActive: this.active && !this.disabled,\n show: false\n };\n },\n computed: {\n tabClasses: function tabClasses() {\n return [{\n active: this.localActive,\n disabled: this.disabled,\n 'card-body': this.bvTabs.card && !this.noBody\n }, // Apply <b-tabs> `activeTabClass` styles when this tab is active\n this.localActive ? this.bvTabs.activeTabClass : null];\n },\n controlledBy: function controlledBy() {\n return this.buttonId || this.safeId('__BV_tab_button__');\n },\n computedNoFade: function computedNoFade() {\n return !(this.bvTabs.fade || false);\n },\n computedLazy: function computedLazy() {\n return this.bvTabs.lazy || this.lazy;\n },\n _isTab: function _isTab() {\n // For parent sniffing of child\n return true;\n }\n },\n watch: {\n localActive: function localActive(newVal, oldVal) {\n // Make 'active' prop work with `.sync` modifier\n this.$emit('update:active', newVal);\n },\n active: function active(newVal, oldVal) {\n if (newVal !== oldVal) {\n if (newVal) {\n // If activated post mount\n this.activate();\n } else {\n /* istanbul ignore next */\n if (!this.deactivate()) {\n // Tab couldn't be deactivated, so we reset the synced active prop\n // Deactivation will fail if no other tabs to activate\n this.$emit('update:active', this.localActive);\n }\n }\n }\n },\n disabled: function disabled(newVal, oldVal) {\n if (newVal !== oldVal) {\n if (newVal && this.localActive && this.bvTabs.firstTab) {\n this.localActive = false;\n this.bvTabs.firstTab();\n }\n }\n }\n },\n mounted: function mounted() {\n // Inform b-tabs of our presence\n this.registerTab(); // Initially show on mount if active and not disabled\n\n this.show = this.localActive;\n },\n updated: function updated() {\n // Force the tab button content to update (since slots are not reactive)\n // Only done if we have a title slot, as the title prop is reactive\n if (this.hasNormalizedSlot('title') && this.bvTabs.updateButton) {\n this.bvTabs.updateButton(this);\n }\n },\n destroyed: function destroyed() {\n // inform b-tabs of our departure\n this.unregisterTab();\n },\n methods: {\n // Private methods\n registerTab: function registerTab() {\n // Inform `b-tabs` of our presence\n this.bvTabs.registerTab && this.bvTabs.registerTab(this);\n },\n unregisterTab: function unregisterTab() {\n // Inform `b-tabs` of our departure\n this.bvTabs.unregisterTab && this.bvTabs.unregisterTab(this);\n },\n // Public methods\n activate: function activate() {\n if (this.bvTabs.activateTab && !this.disabled) {\n return this.bvTabs.activateTab(this);\n } else {\n // Not inside a <b-tabs> component or tab is disabled\n return false;\n }\n },\n deactivate: function deactivate() {\n if (this.bvTabs.deactivateTab && this.localActive) {\n return this.bvTabs.deactivateTab(this);\n } else {\n // Not inside a <b-tabs> component or not active to begin with\n return false;\n }\n }\n },\n render: function render(h) {\n var content = h(this.tag, {\n ref: 'panel',\n staticClass: 'tab-pane',\n class: this.tabClasses,\n directives: [{\n name: 'show',\n rawName: 'v-show',\n value: this.localActive,\n expression: 'localActive'\n }],\n attrs: {\n role: 'tabpanel',\n id: this.safeId(),\n tabindex: this.localActive && !this.bvTabs.noKeyNav ? '-1' : null,\n 'aria-hidden': this.localActive ? 'false' : 'true',\n 'aria-labelledby': this.controlledBy || null\n }\n }, // Render content lazily if requested\n [this.localActive || !this.computedLazy ? this.normalizeSlot('default') : h()]);\n return h(__WEBPACK_IMPORTED_MODULE_3__utils_bv_transition__[\"b\" /* default */], {\n props: {\n mode: 'out-in',\n noFade: this.computedNoFade\n }\n }, [content]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJzL3RhYi5qcz8xNmU3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDSTtBQUN1QjtBQUNSOztBQUU5QztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsMkRBQU8sRUFBRSx1RUFBa0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHVCQUF1Qjs7QUFFdkI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsYUFBYSxxRUFBWTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMjEzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IGlkTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2lkJztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JztcbmltcG9ydCBCVlRyYW5zaXRpb24gZnJvbSAnLi4vLi4vdXRpbHMvYnYtdHJhbnNpdGlvbic7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQlRhYiA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JUYWInLFxuICBtaXhpbnM6IFtpZE1peGluLCBub3JtYWxpemVTbG90TWl4aW5dLFxuICBpbmplY3Q6IHtcbiAgICBidlRhYnM6IHtcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC8vIERvbid0IHNldCBhIHRhYiBpbmRleCBpZiBub3QgcmVuZGVyZWQgaW5zaWRlIDxiLXRhYnM+XG4gICAgICAgICAgbm9LZXlOYXY6IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHByb3BzOiB7XG4gICAgYWN0aXZlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHRhZzoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2RpdidcbiAgICB9LFxuICAgIGJ1dHRvbklkOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgdGl0bGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcbiAgICB0aXRsZUl0ZW1DbGFzczoge1xuICAgICAgLy8gU25pZmZlZCBieSB0YWJzLmpzIGFuZCBhZGRlZCB0byBuYXYgJ2xpLm5hdi1pdGVtJ1xuICAgICAgdHlwZTogW1N0cmluZywgQXJyYXksIE9iamVjdF0sXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICB0aXRsZUxpbmtDbGFzczoge1xuICAgICAgLy8gU25pZmZlZCBieSB0YWJzLmpzIGFuZCBhZGRlZCB0byBuYXYgJ2EubmF2LWxpbmsnXG4gICAgICB0eXBlOiBbU3RyaW5nLCBBcnJheSwgT2JqZWN0XSxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIGRpc2FibGVkOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIG5vQm9keToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBsYXp5OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvY2FsQWN0aXZlOiB0aGlzLmFjdGl2ZSAmJiAhdGhpcy5kaXNhYmxlZCxcbiAgICAgIHNob3c6IGZhbHNlXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICB0YWJDbGFzc2VzOiBmdW5jdGlvbiB0YWJDbGFzc2VzKCkge1xuICAgICAgcmV0dXJuIFt7XG4gICAgICAgIGFjdGl2ZTogdGhpcy5sb2NhbEFjdGl2ZSxcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQsXG4gICAgICAgICdjYXJkLWJvZHknOiB0aGlzLmJ2VGFicy5jYXJkICYmICF0aGlzLm5vQm9keVxuICAgICAgfSwgLy8gQXBwbHkgPGItdGFicz4gYGFjdGl2ZVRhYkNsYXNzYCBzdHlsZXMgd2hlbiB0aGlzIHRhYiBpcyBhY3RpdmVcbiAgICAgIHRoaXMubG9jYWxBY3RpdmUgPyB0aGlzLmJ2VGFicy5hY3RpdmVUYWJDbGFzcyA6IG51bGxdO1xuICAgIH0sXG4gICAgY29udHJvbGxlZEJ5OiBmdW5jdGlvbiBjb250cm9sbGVkQnkoKSB7XG4gICAgICByZXR1cm4gdGhpcy5idXR0b25JZCB8fCB0aGlzLnNhZmVJZCgnX19CVl90YWJfYnV0dG9uX18nKTtcbiAgICB9LFxuICAgIGNvbXB1dGVkTm9GYWRlOiBmdW5jdGlvbiBjb21wdXRlZE5vRmFkZSgpIHtcbiAgICAgIHJldHVybiAhKHRoaXMuYnZUYWJzLmZhZGUgfHwgZmFsc2UpO1xuICAgIH0sXG4gICAgY29tcHV0ZWRMYXp5OiBmdW5jdGlvbiBjb21wdXRlZExhenkoKSB7XG4gICAgICByZXR1cm4gdGhpcy5idlRhYnMubGF6eSB8fCB0aGlzLmxhenk7XG4gICAgfSxcbiAgICBfaXNUYWI6IGZ1bmN0aW9uIF9pc1RhYigpIHtcbiAgICAgIC8vIEZvciBwYXJlbnQgc25pZmZpbmcgb2YgY2hpbGRcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBsb2NhbEFjdGl2ZTogZnVuY3Rpb24gbG9jYWxBY3RpdmUobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIC8vIE1ha2UgJ2FjdGl2ZScgcHJvcCB3b3JrIHdpdGggYC5zeW5jYCBtb2RpZmllclxuICAgICAgdGhpcy4kZW1pdCgndXBkYXRlOmFjdGl2ZScsIG5ld1ZhbCk7XG4gICAgfSxcbiAgICBhY3RpdmU6IGZ1bmN0aW9uIGFjdGl2ZShuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgaWYgKG5ld1ZhbCAhPT0gb2xkVmFsKSB7XG4gICAgICAgIGlmIChuZXdWYWwpIHtcbiAgICAgICAgICAvLyBJZiBhY3RpdmF0ZWQgcG9zdCBtb3VudFxuICAgICAgICAgIHRoaXMuYWN0aXZhdGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgIGlmICghdGhpcy5kZWFjdGl2YXRlKCkpIHtcbiAgICAgICAgICAgIC8vIFRhYiBjb3VsZG4ndCBiZSBkZWFjdGl2YXRlZCwgc28gd2UgcmVzZXQgdGhlIHN5bmNlZCBhY3RpdmUgcHJvcFxuICAgICAgICAgICAgLy8gRGVhY3RpdmF0aW9uIHdpbGwgZmFpbCBpZiBubyBvdGhlciB0YWJzIHRvIGFjdGl2YXRlXG4gICAgICAgICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6YWN0aXZlJywgdGhpcy5sb2NhbEFjdGl2ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBkaXNhYmxlZDogZnVuY3Rpb24gZGlzYWJsZWQobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIGlmIChuZXdWYWwgIT09IG9sZFZhbCkge1xuICAgICAgICBpZiAobmV3VmFsICYmIHRoaXMubG9jYWxBY3RpdmUgJiYgdGhpcy5idlRhYnMuZmlyc3RUYWIpIHtcbiAgICAgICAgICB0aGlzLmxvY2FsQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5idlRhYnMuZmlyc3RUYWIoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICAvLyBJbmZvcm0gYi10YWJzIG9mIG91ciBwcmVzZW5jZVxuICAgIHRoaXMucmVnaXN0ZXJUYWIoKTsgLy8gSW5pdGlhbGx5IHNob3cgb24gbW91bnQgaWYgYWN0aXZlIGFuZCBub3QgZGlzYWJsZWRcblxuICAgIHRoaXMuc2hvdyA9IHRoaXMubG9jYWxBY3RpdmU7XG4gIH0sXG4gIHVwZGF0ZWQ6IGZ1bmN0aW9uIHVwZGF0ZWQoKSB7XG4gICAgLy8gRm9yY2UgdGhlIHRhYiBidXR0b24gY29udGVudCB0byB1cGRhdGUgKHNpbmNlIHNsb3RzIGFyZSBub3QgcmVhY3RpdmUpXG4gICAgLy8gT25seSBkb25lIGlmIHdlIGhhdmUgYSB0aXRsZSBzbG90LCBhcyB0aGUgdGl0bGUgcHJvcCBpcyByZWFjdGl2ZVxuICAgIGlmICh0aGlzLmhhc05vcm1hbGl6ZWRTbG90KCd0aXRsZScpICYmIHRoaXMuYnZUYWJzLnVwZGF0ZUJ1dHRvbikge1xuICAgICAgdGhpcy5idlRhYnMudXBkYXRlQnV0dG9uKHRoaXMpO1xuICAgIH1cbiAgfSxcbiAgZGVzdHJveWVkOiBmdW5jdGlvbiBkZXN0cm95ZWQoKSB7XG4gICAgLy8gaW5mb3JtIGItdGFicyBvZiBvdXIgZGVwYXJ0dXJlXG4gICAgdGhpcy51bnJlZ2lzdGVyVGFiKCk7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICAvLyBQcml2YXRlIG1ldGhvZHNcbiAgICByZWdpc3RlclRhYjogZnVuY3Rpb24gcmVnaXN0ZXJUYWIoKSB7XG4gICAgICAvLyBJbmZvcm0gYGItdGFic2Agb2Ygb3VyIHByZXNlbmNlXG4gICAgICB0aGlzLmJ2VGFicy5yZWdpc3RlclRhYiAmJiB0aGlzLmJ2VGFicy5yZWdpc3RlclRhYih0aGlzKTtcbiAgICB9LFxuICAgIHVucmVnaXN0ZXJUYWI6IGZ1bmN0aW9uIHVucmVnaXN0ZXJUYWIoKSB7XG4gICAgICAvLyBJbmZvcm0gYGItdGFic2Agb2Ygb3VyIGRlcGFydHVyZVxuICAgICAgdGhpcy5idlRhYnMudW5yZWdpc3RlclRhYiAmJiB0aGlzLmJ2VGFicy51bnJlZ2lzdGVyVGFiKHRoaXMpO1xuICAgIH0sXG4gICAgLy8gUHVibGljIG1ldGhvZHNcbiAgICBhY3RpdmF0ZTogZnVuY3Rpb24gYWN0aXZhdGUoKSB7XG4gICAgICBpZiAodGhpcy5idlRhYnMuYWN0aXZhdGVUYWIgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnZUYWJzLmFjdGl2YXRlVGFiKHRoaXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTm90IGluc2lkZSBhIDxiLXRhYnM+IGNvbXBvbmVudCBvciB0YWIgaXMgZGlzYWJsZWRcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAgZGVhY3RpdmF0ZTogZnVuY3Rpb24gZGVhY3RpdmF0ZSgpIHtcbiAgICAgIGlmICh0aGlzLmJ2VGFicy5kZWFjdGl2YXRlVGFiICYmIHRoaXMubG9jYWxBY3RpdmUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnZUYWJzLmRlYWN0aXZhdGVUYWIodGhpcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBOb3QgaW5zaWRlIGEgPGItdGFicz4gY29tcG9uZW50IG9yIG5vdCBhY3RpdmUgdG8gYmVnaW4gd2l0aFxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyIGNvbnRlbnQgPSBoKHRoaXMudGFnLCB7XG4gICAgICByZWY6ICdwYW5lbCcsXG4gICAgICBzdGF0aWNDbGFzczogJ3RhYi1wYW5lJyxcbiAgICAgIGNsYXNzOiB0aGlzLnRhYkNsYXNzZXMsXG4gICAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgICBuYW1lOiAnc2hvdycsXG4gICAgICAgIHJhd05hbWU6ICd2LXNob3cnLFxuICAgICAgICB2YWx1ZTogdGhpcy5sb2NhbEFjdGl2ZSxcbiAgICAgICAgZXhwcmVzc2lvbjogJ2xvY2FsQWN0aXZlJ1xuICAgICAgfV0sXG4gICAgICBhdHRyczoge1xuICAgICAgICByb2xlOiAndGFicGFuZWwnLFxuICAgICAgICBpZDogdGhpcy5zYWZlSWQoKSxcbiAgICAgICAgdGFiaW5kZXg6IHRoaXMubG9jYWxBY3RpdmUgJiYgIXRoaXMuYnZUYWJzLm5vS2V5TmF2ID8gJy0xJyA6IG51bGwsXG4gICAgICAgICdhcmlhLWhpZGRlbic6IHRoaXMubG9jYWxBY3RpdmUgPyAnZmFsc2UnIDogJ3RydWUnLFxuICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogdGhpcy5jb250cm9sbGVkQnkgfHwgbnVsbFxuICAgICAgfVxuICAgIH0sIC8vIFJlbmRlciBjb250ZW50IGxhemlseSBpZiByZXF1ZXN0ZWRcbiAgICBbdGhpcy5sb2NhbEFjdGl2ZSB8fCAhdGhpcy5jb21wdXRlZExhenkgPyB0aGlzLm5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnKSA6IGgoKV0pO1xuICAgIHJldHVybiBoKEJWVHJhbnNpdGlvbiwge1xuICAgICAgcHJvcHM6IHtcbiAgICAgICAgbW9kZTogJ291dC1pbicsXG4gICAgICAgIG5vRmFkZTogdGhpcy5jb21wdXRlZE5vRmFkZVxuICAgICAgfVxuICAgIH0sIFtjb250ZW50XSk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdGFicy90YWIuanNcbi8vIG1vZHVsZSBpZCA9IDIxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///213\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return TabsPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tabs__ = __webpack_require__(214);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__tab__ = __webpack_require__(215);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BTabs */\n/* unused harmony reexport BTab */\n\n\n\nvar TabsPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BTabs: __WEBPACK_IMPORTED_MODULE_0__tabs__[\"a\" /* BTabs */],\n BTab: __WEBPACK_IMPORTED_MODULE_1__tab__[\"a\" /* BTab */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJzL2luZGV4LmpzPzYzMjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQStCO0FBQ0Y7QUFDdUI7QUFDcEQ7QUFDQTtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxXQUFXLG9EQUFLO0FBQ2hCLFVBQVUsa0RBQUk7QUFDZDtBQUNBLENBQUMiLCJmaWxlIjoiMjEzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQlRhYnMgfSBmcm9tICcuL3RhYnMnO1xuaW1wb3J0IHsgQlRhYiB9IGZyb20gJy4vdGFiJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBUYWJzUGx1Z2luID1cbi8qI19fUFVSRV9fKi9cbnBsdWdpbkZhY3Rvcnkoe1xuICBjb21wb25lbnRzOiB7XG4gICAgQlRhYnM6IEJUYWJzLFxuICAgIEJUYWI6IEJUYWJcbiAgfVxufSk7XG5leHBvcnQgeyBUYWJzUGx1Z2luLCBCVGFicywgQlRhYiB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdGFicy9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMjEzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///213\n"); /***/ }), /* 214 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ToastPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__helpers_bv_toast__ = __webpack_require__(215);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__toast__ = __webpack_require__(91);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__toaster__ = __webpack_require__(92);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BToast */\n/* unused harmony reexport BToaster */\n\n\n\n\nvar ToastPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_3__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BToast: __WEBPACK_IMPORTED_MODULE_1__toast__[\"a\" /* BToast */],\n BToaster: __WEBPACK_IMPORTED_MODULE_2__toaster__[\"a\" /* BToaster */]\n },\n // $bvToast injection\n plugins: {\n BVToastPlugin: __WEBPACK_IMPORTED_MODULE_0__helpers_bv_toast__[\"a\" /* BVToastPlugin */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90b2FzdC9pbmRleC5qcz9jMWU1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW1EO0FBQ2xCO0FBQ0k7QUFDZTtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLFlBQVksc0RBQU07QUFDbEIsY0FBYywwREFBUTtBQUN0QixHQUFHO0FBQ0g7QUFDQTtBQUNBLG1CQUFtQix3RUFBYTtBQUNoQztBQUNBLENBQUMiLCJmaWxlIjoiMjE0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQlZUb2FzdFBsdWdpbiB9IGZyb20gJy4vaGVscGVycy9idi10b2FzdCc7XG5pbXBvcnQgeyBCVG9hc3QgfSBmcm9tICcuL3RvYXN0JztcbmltcG9ydCB7IEJUb2FzdGVyIH0gZnJvbSAnLi90b2FzdGVyJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBUb2FzdFBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJUb2FzdDogQlRvYXN0LFxuICAgIEJUb2FzdGVyOiBCVG9hc3RlclxuICB9LFxuICAvLyAkYnZUb2FzdCBpbmplY3Rpb25cbiAgcGx1Z2luczoge1xuICAgIEJWVG9hc3RQbHVnaW46IEJWVG9hc3RQbHVnaW5cbiAgfVxufSk7XG5leHBvcnQgeyBUb2FzdFBsdWdpbiwgQlRvYXN0LCBCVG9hc3RlciB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdG9hc3QvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDIxNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///214\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BTabs; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_loose_equal__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_observe_dom__ = __webpack_require__(39);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_stable_sort__ = __webpack_require__(203);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__link_link__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__nav_nav__ = __webpack_require__(47);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n\n\n\n\n\n // -- Constants --\n\nvar navProps = Object(__WEBPACK_IMPORTED_MODULE_8__utils_object__[\"k\" /* omit */])(__WEBPACK_IMPORTED_MODULE_12__nav_nav__[\"b\" /* props */], ['tabs', 'isNavBar', 'cardHeader']); // -- Utils --\n// Filter function to filter out disabled tabs\n\nvar notDisabled = function notDisabled(tab) {\n return !tab.disabled;\n}; // --- Helper components ---\n// @vue/component\n\n\nvar BTabButtonHelper =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BTabButtonHelper',\n inject: {\n bvTabs: {\n default: function _default()\n /* istanbul ignore next */\n {\n return {};\n }\n }\n },\n props: {\n // Reference to the child <b-tab> instance\n tab: {\n default: null\n },\n tabs: {\n type: Array,\n default: function _default()\n /* istanbul ignore next */\n {\n return [];\n }\n },\n id: {\n type: String,\n default: null\n },\n controls: {\n type: String,\n default: null\n },\n tabIndex: {\n type: Number,\n default: null\n },\n posInSet: {\n type: Number,\n default: null\n },\n setSize: {\n type: Number,\n default: null\n },\n noKeyNav: {\n type: Boolean,\n default: false\n }\n },\n methods: {\n focus: function focus() {\n if (this.$refs && this.$refs.link && this.$refs.link.focus) {\n this.$refs.link.focus();\n }\n },\n handleEvt: function handleEvt(evt) {\n var stop = function stop() {\n evt.preventDefault();\n evt.stopPropagation();\n };\n\n if (this.tab.disabled) {\n /* istanbul ignore next */\n return;\n }\n\n var type = evt.type;\n var key = evt.keyCode;\n var shift = evt.shiftKey;\n\n if (type === 'click') {\n stop();\n this.$emit('click', evt);\n } else if (type === 'keydown' && !this.noKeyNav && key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].SPACE) {\n // In keynav mode, SPACE press will also trigger a click/select\n stop();\n this.$emit('click', evt);\n } else if (type === 'keydown' && !this.noKeyNav) {\n // For keyboard navigation\n if (key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].UP || key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].LEFT || key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].HOME) {\n stop();\n\n if (shift || key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].HOME) {\n this.$emit('first', evt);\n } else {\n this.$emit('prev', evt);\n }\n } else if (key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].DOWN || key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].RIGHT || key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].END) {\n stop();\n\n if (shift || key === __WEBPACK_IMPORTED_MODULE_1__utils_key_codes__[\"a\" /* default */].END) {\n this.$emit('last', evt);\n } else {\n this.$emit('next', evt);\n }\n }\n }\n }\n },\n render: function render(h) {\n var link = h(__WEBPACK_IMPORTED_MODULE_11__link_link__[\"a\" /* BLink */], {\n ref: 'link',\n staticClass: 'nav-link',\n class: [{\n active: this.tab.localActive && !this.tab.disabled,\n disabled: this.tab.disabled\n }, this.tab.titleLinkClass, // Apply <b-tabs> `activeNavItemClass` styles when the tab is active\n this.tab.localActive ? this.bvTabs.activeNavItemClass : null],\n props: {\n disabled: this.tab.disabled\n },\n attrs: {\n role: 'tab',\n id: this.id,\n // Roving tab index when keynav enabled\n tabindex: this.tabIndex,\n 'aria-selected': this.tab.localActive && !this.tab.disabled ? 'true' : 'false',\n 'aria-setsize': this.setSize,\n 'aria-posinset': this.posInSet,\n 'aria-controls': this.controls\n },\n on: {\n click: this.handleEvt,\n keydown: this.handleEvt\n }\n }, [this.tab.normalizeSlot('title') || this.tab.title]);\n return h('li', {\n staticClass: 'nav-item',\n class: [this.tab.titleItemClass],\n attrs: {\n role: 'presentation'\n }\n }, [link]);\n }\n}); // @vue/component\n\nvar BTabs =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BTabs',\n mixins: [__WEBPACK_IMPORTED_MODULE_9__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_10__mixins_normalize_slot__[\"a\" /* default */]],\n provide: function provide() {\n return {\n bvTabs: this\n };\n },\n model: {\n prop: 'value',\n event: 'input'\n },\n props: _objectSpread({}, navProps, {\n tag: {\n type: String,\n default: 'div'\n },\n card: {\n type: Boolean,\n default: false\n },\n end: {\n // Synonym for 'bottom'\n type: Boolean,\n default: false\n },\n noFade: {\n type: Boolean,\n default: false\n },\n noNavStyle: {\n type: Boolean,\n default: false\n },\n noKeyNav: {\n type: Boolean,\n default: false\n },\n lazy: {\n // This prop is sniffed by the <b-tab> child\n type: Boolean,\n default: false\n },\n contentClass: {\n type: [String, Array, Object],\n default: null\n },\n navClass: {\n type: [String, Array, Object],\n default: null\n },\n navWrapperClass: {\n type: [String, Array, Object],\n default: null\n },\n activeNavItemClass: {\n // Only applied to the currently active <b-nav-item>\n type: [String, Array, Object],\n default: null\n },\n activeTabClass: {\n // Only applied to the currently active <b-tab>\n // This prop is sniffed by the <b-tab> child\n type: [String, Array, Object],\n default: null\n },\n value: {\n // v-model\n type: Number,\n default: null\n }\n }),\n data: function data() {\n var tabIdx = parseInt(this.value, 10);\n tabIdx = isNaN(tabIdx) ? -1 : tabIdx;\n return {\n // Index of current tab\n currentTab: tabIdx,\n // Array of direct child <b-tab> instances, in DOM order\n tabs: [],\n // Array of child instances registered (for triggering reactive updates)\n registeredTabs: [],\n // Flag to know if we are mounted or not\n isMounted: false\n };\n },\n computed: {\n fade: function fade() {\n // This computed prop is sniffed by the tab child\n return !this.noFade;\n },\n localNavClass: function localNavClass() {\n var classes = [];\n\n if (this.card && this.vertical) {\n classes.push('card-header', 'h-100', 'border-bottom-0', 'rounded-0');\n }\n\n return [].concat(classes, [this.navClass]);\n }\n },\n watch: {\n currentTab: function currentTab(val, old) {\n var index = -1; // Ensure only one tab is active at most\n\n this.tabs.forEach(function (tab, idx) {\n if (val === idx && !tab.disabled) {\n tab.localActive = true;\n index = idx;\n } else {\n tab.localActive = false;\n }\n }); // Update the v-model\n\n this.$emit('input', index);\n },\n value: function value(val, old) {\n if (val !== old) {\n val = parseInt(val, 10);\n val = isNaN(val) ? -1 : val;\n old = parseInt(old, 10) || 0;\n var tabs = this.tabs;\n\n if (tabs[val] && !tabs[val].disabled) {\n this.currentTab = val;\n } else {\n // Try next or prev tabs\n if (val < old) {\n this.previousTab();\n } else {\n this.nextTab();\n }\n }\n }\n },\n registeredTabs: function registeredTabs(newVal, oldVal) {\n var _this = this;\n\n // Each b-tab will register/unregister itself.\n // We use this to detect when tabs are added/removed\n // to trigger the update of the tabs.\n this.$nextTick(function () {\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_dom__[\"w\" /* requestAF */])(function () {\n _this.updateTabs();\n });\n });\n },\n tabs: function tabs(newVal, oldVal) {\n var _this2 = this;\n\n // If tabs added, removed, or re-ordered, we emit a `changed` event.\n // We use `tab._uid` instead of `tab.safeId()`, as the later is changed\n // in a nextTick if no explicit ID is provided, causing duplicate emits.\n if (!Object(__WEBPACK_IMPORTED_MODULE_2__utils_loose_equal__[\"a\" /* default */])(newVal.map(function (t) {\n return t._uid;\n }), oldVal.map(function (t) {\n return t._uid;\n }))) {\n // In a nextTick to ensure currentTab has been set first.\n this.$nextTick(function () {\n // We emit shallow copies of the new and old arrays of tabs, to\n // prevent users from potentially mutating the internal arrays.\n _this2.$emit('changed', newVal.slice(), oldVal.slice());\n });\n }\n },\n isMounted: function isMounted(newVal, oldVal) {\n var _this3 = this;\n\n // Trigger an update after mounted. Needed for tabs inside lazy modals.\n if (newVal) {\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_dom__[\"w\" /* requestAF */])(function () {\n _this3.updateTabs();\n });\n } // Enable or disable the observer\n\n\n this.setObserver(newVal);\n }\n },\n created: function created() {\n var _this4 = this;\n\n var tabIdx = parseInt(this.value, 10);\n this.currentTab = isNaN(tabIdx) ? -1 : tabIdx;\n this._bvObserver = null; // For SSR and to make sure only a single tab is shown on mount\n // We wrap this in a `$nextTick()` to ensure the child tabs have been created\n\n this.$nextTick(function () {\n _this4.updateTabs();\n });\n },\n mounted: function mounted() {\n var _this5 = this;\n\n // Call `updateTabs()` just in case...\n this.updateTabs();\n this.$nextTick(function () {\n // Flag we are now mounted and to switch to DOM for tab probing.\n // As this.$slots.default appears to lie about component instances\n // after b-tabs is destroyed and re-instantiated.\n // And this.$children does not respect DOM order.\n _this5.isMounted = true;\n });\n },\n deactivated: function deactivated()\n /* istanbul ignore next */\n {\n this.isMounted = false;\n },\n activated: function activated()\n /* istanbul ignore next */\n {\n var _this6 = this;\n\n var tabIdx = parseInt(this.value, 10);\n this.currentTab = isNaN(tabIdx) ? -1 : tabIdx;\n this.$nextTick(function () {\n _this6.updateTabs();\n\n _this6.isMounted = true;\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.isMounted = false;\n },\n destroyed: function destroyed() {\n // Ensure no references to child instances exist\n this.tabs = [];\n },\n methods: {\n registerTab: function registerTab(tab) {\n var _this7 = this;\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_5__utils_array__[\"a\" /* arrayIncludes */])(this.registeredTabs, tab)) {\n this.registeredTabs.push(tab);\n tab.$once('hook:destroyed', function () {\n _this7.unregisterTab(tab);\n });\n }\n },\n unregisterTab: function unregisterTab(tab) {\n this.registeredTabs = this.registeredTabs.slice().filter(function (t) {\n return t !== tab;\n });\n },\n setObserver: function setObserver(on) {\n // DOM observer is needed to detect changes in order of tabs\n if (on) {\n // Make sure no existing observer running\n this.setObserver(false);\n var self = this;\n /* istanbul ignore next: difficult to test mutation observer in JSDOM */\n\n var handler = function handler() {\n // We delay the update to ensure that `tab.safeId()` has\n // updated with the final ID value.\n self.$nextTick(function () {\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_dom__[\"w\" /* requestAF */])(function () {\n self.updateTabs();\n });\n });\n }; // Watch for changes to <b-tab> sub components\n\n\n this._bvObserver = Object(__WEBPACK_IMPORTED_MODULE_3__utils_observe_dom__[\"a\" /* default */])(this.$refs.tabsContainer, handler, {\n childList: true,\n subtree: false,\n attributes: true,\n attributeFilter: ['id']\n });\n } else {\n if (this._bvObserver && this._bvObserver.disconnect) {\n this._bvObserver.disconnect();\n }\n\n this._bvObserver = null;\n }\n },\n getTabs: function getTabs() {\n // We use registeredTabs as the source of truth for child tab components. And we\n // filter out any BTab components that are extended BTab with a root child BTab.\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/3260\n var tabs = this.registeredTabs.filter(function (tab) {\n return tab.$children.filter(function (t) {\n return t._isTab;\n }).length === 0;\n }); // DOM Order of Tabs\n\n var order = [];\n\n if (this.isMounted && tabs.length > 0) {\n // We rely on the DOM when mounted to get the 'true' order of the b-tab children.\n // querySelectorAll(...) always returns elements in document order, regardless of\n // order specified in the selector.\n var selector = tabs.map(function (tab) {\n return \"#\".concat(tab.safeId());\n }).join(', ');\n order = Object(__WEBPACK_IMPORTED_MODULE_6__utils_dom__[\"y\" /* selectAll */])(selector, this.$el).map(function (el) {\n return el.id;\n }).filter(Boolean);\n } // Stable sort keeps the original order if not found in the\n // `order` array, which will be an empty array before mount.\n\n\n return Object(__WEBPACK_IMPORTED_MODULE_4__utils_stable_sort__[\"a\" /* default */])(tabs, function (a, b) {\n return order.indexOf(a.safeId()) - order.indexOf(b.safeId());\n });\n },\n // Update list of <b-tab> children\n updateTabs: function updateTabs() {\n // Probe tabs\n var tabs = this.getTabs(); // Find *last* active non-disabled tab in current tabs\n // We trust tab state over currentTab, in case tabs were added/removed/re-ordered\n\n var tabIndex = tabs.indexOf(tabs.slice().reverse().find(function (tab) {\n return tab.localActive && !tab.disabled;\n })); // Else try setting to currentTab\n\n if (tabIndex < 0) {\n var currentTab = this.currentTab;\n\n if (currentTab >= tabs.length) {\n // Handle last tab being removed, so find the last non-disabled tab\n tabIndex = tabs.indexOf(tabs.slice().reverse().find(notDisabled));\n } else if (tabs[currentTab] && !tabs[currentTab].disabled) {\n // Current tab is not disabled\n tabIndex = currentTab;\n }\n } // Else find *first* non-disabled tab in current tabs\n\n\n if (tabIndex < 0) {\n tabIndex = tabs.indexOf(tabs.find(notDisabled));\n } // Set the current tab state to active\n\n\n tabs.forEach(function (tab, idx) {\n // tab.localActive = idx === tabIndex && !tab.disabled\n tab.localActive = false;\n });\n\n if (tabs[tabIndex]) {\n tabs[tabIndex].localActive = true;\n } // Update the array of tab children\n\n\n this.tabs = tabs; // Set the currentTab index (can be -1 if no non-disabled tabs)\n\n this.currentTab = tabIndex;\n },\n // Find a button that controls a tab, given the tab reference\n // Returns the button vm instance\n getButtonForTab: function getButtonForTab(tab) {\n return (this.$refs.buttons || []).find(function (btn) {\n return btn.tab === tab;\n });\n },\n // Force a button to re-render it's content, given a <b-tab> instance\n // Called by <b-tab> on `update()`\n updateButton: function updateButton(tab) {\n var button = this.getButtonForTab(tab);\n\n if (button && button.$forceUpdate) {\n button.$forceUpdate();\n }\n },\n // Activate a tab given a <b-tab> instance\n // Also accessed by <b-tab>\n activateTab: function activateTab(tab) {\n var result = false;\n\n if (tab) {\n var index = this.tabs.indexOf(tab);\n\n if (!tab.disabled && index > -1) {\n result = true;\n this.currentTab = index;\n }\n }\n\n if (!result) {\n // Couldn't set tab, so ensure v-model is set to `this.currentTab`\n\n /* istanbul ignore next: should rarely happen */\n this.$emit('input', this.currentTab);\n }\n\n return result;\n },\n // Deactivate a tab given a <b-tab> instance\n // Accessed by <b-tab>\n deactivateTab: function deactivateTab(tab) {\n if (tab) {\n // Find first non-disabled tab that isn't the one being deactivated\n // If no tabs are available, then don't deactivate current tab\n return this.activateTab(this.tabs.filter(function (t) {\n return t !== tab;\n }).find(notDisabled));\n } else {\n // No tab specified\n\n /* istanbul ignore next: should never happen */\n return false;\n }\n },\n // Focus a tab button given it's <b-tab> instance\n focusButton: function focusButton(tab) {\n var _this8 = this;\n\n // Wrap in `$nextTick()` to ensure DOM has completed rendering/updating before focusing\n this.$nextTick(function () {\n var button = _this8.getButtonForTab(tab);\n\n if (button && button.focus) {\n button.focus();\n }\n });\n },\n // Emit a click event on a specified <b-tab> component instance\n emitTabClick: function emitTabClick(tab, evt) {\n if (Object(__WEBPACK_IMPORTED_MODULE_7__utils_inspect__[\"d\" /* isEvent */])(evt) && tab && tab.$emit && !tab.disabled) {\n tab.$emit('click', evt);\n }\n },\n // Click handler\n clickTab: function clickTab(tab, evt) {\n this.activateTab(tab);\n this.emitTabClick(tab, evt);\n },\n // Move to first non-disabled tab\n firstTab: function firstTab(focus) {\n var tab = this.tabs.find(notDisabled);\n\n if (this.activateTab(tab) && focus) {\n this.focusButton(tab);\n this.emitTabClick(tab, focus);\n }\n },\n // Move to previous non-disabled tab\n previousTab: function previousTab(focus) {\n var currentIndex = Math.max(this.currentTab, 0);\n var tab = this.tabs.slice(0, currentIndex).reverse().find(notDisabled);\n\n if (this.activateTab(tab) && focus) {\n this.focusButton(tab);\n this.emitTabClick(tab, focus);\n }\n },\n // Move to next non-disabled tab\n nextTab: function nextTab(focus) {\n var currentIndex = Math.max(this.currentTab, -1);\n var tab = this.tabs.slice(currentIndex + 1).find(notDisabled);\n\n if (this.activateTab(tab) && focus) {\n this.focusButton(tab);\n this.emitTabClick(tab, focus);\n }\n },\n // Move to last non-disabled tab\n lastTab: function lastTab(focus) {\n var tab = this.tabs.slice().reverse().find(notDisabled);\n\n if (this.activateTab(tab) && focus) {\n this.focusButton(tab);\n this.emitTabClick(tab, focus);\n }\n }\n },\n render: function render(h) {\n var _this9 = this;\n\n var tabs = this.tabs; // Currently active tab\n\n var activeTab = tabs.find(function (tab) {\n return tab.localActive && !tab.disabled;\n }); // Tab button to allow focusing when no active tab found (keynav only)\n\n var fallbackTab = tabs.find(function (tab) {\n return !tab.disabled;\n }); // For each <b-tab> found create the tab buttons\n\n var buttons = tabs.map(function (tab, index) {\n var tabIndex = null; // Ensure at least one tab button is focusable when keynav enabled (if possible)\n\n if (!_this9.noKeyNav) {\n // Buttons are not in tab index unless active, or a fallback tab\n tabIndex = -1;\n\n if (activeTab === tab || !activeTab && fallbackTab === tab) {\n // Place tab button in tab sequence\n tabIndex = null;\n }\n }\n\n return h(BTabButtonHelper, {\n key: tab._uid || index,\n ref: 'buttons',\n // Needed to make `this.$refs.buttons` an array\n refInFor: true,\n props: {\n tab: tab,\n tabs: tabs,\n id: tab.controlledBy || (tab.safeId ? tab.safeId(\"_BV_tab_button_\") : null),\n controls: tab.safeId ? tab.safeId() : null,\n tabIndex: tabIndex,\n setSize: tabs.length,\n posInSet: index + 1,\n noKeyNav: _this9.noKeyNav\n },\n on: {\n click: function click(evt) {\n _this9.clickTab(tab, evt);\n },\n first: _this9.firstTab,\n prev: _this9.previousTab,\n next: _this9.nextTab,\n last: _this9.lastTab\n }\n });\n }); // Nav\n\n var nav = h(__WEBPACK_IMPORTED_MODULE_12__nav_nav__[\"a\" /* BNav */], {\n ref: 'nav',\n class: this.localNavClass,\n attrs: {\n role: 'tablist',\n id: this.safeId('_BV_tab_controls_')\n },\n props: {\n fill: this.fill,\n justified: this.justified,\n align: this.align,\n tabs: !this.noNavStyle && !this.pills,\n pills: !this.noNavStyle && this.pills,\n vertical: this.vertical,\n small: this.small,\n cardHeader: this.card && !this.vertical\n }\n }, [this.normalizeSlot('tabs-start') || h(), buttons, this.normalizeSlot('tabs-end') || h()]);\n nav = h('div', {\n key: 'bv-tabs-nav',\n class: [{\n 'card-header': this.card && !this.vertical && !this.end,\n 'card-footer': this.card && !this.vertical && this.end,\n 'col-auto': this.vertical\n }, this.navWrapperClass]\n }, [nav]);\n var empty = h();\n\n if (!tabs || tabs.length === 0) {\n empty = h('div', {\n key: 'bv-empty-tab',\n class: ['tab-pane', 'active', {\n 'card-body': this.card\n }]\n }, this.normalizeSlot('empty'));\n } // Main content section\n\n\n var content = h('div', {\n ref: 'tabsContainer',\n key: 'bv-tabs-container',\n staticClass: 'tab-content',\n class: [{\n col: this.vertical\n }, this.contentClass],\n attrs: {\n id: this.safeId('_BV_tab_container_')\n }\n }, Object(__WEBPACK_IMPORTED_MODULE_5__utils_array__[\"b\" /* concat */])(this.normalizeSlot('default'), empty)); // Render final output\n\n return h(this.tag, {\n staticClass: 'tabs',\n class: {\n row: this.vertical,\n 'no-gutters': this.vertical && this.card\n },\n attrs: {\n id: this.safeId()\n }\n }, [this.end ? content : h(), [nav], this.end ? h() : content]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJzL3RhYnMuanM/M2FiZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUU3SztBQUNXO0FBQ0k7QUFDQTtBQUNBO0FBQ1M7QUFDSDtBQUNUO0FBQ0o7QUFDSjtBQUN1QjtBQUN4QjtBQUNpQjs7QUFFdEQsZUFBZSxtRUFBSSxDQUFDLHdEQUFTLHNDQUFzQztBQUNuRTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGOzs7QUFHQTtBQUNBO0FBQ0EsMkRBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sMERBQTBELGlFQUFRO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLG9CQUFvQixpRUFBUSxlQUFlLGlFQUFRLGlCQUFpQixpRUFBUTtBQUM1RTs7QUFFQSwrQkFBK0IsaUVBQVE7QUFDdkM7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFNBQVMsa0JBQWtCLGlFQUFRLGlCQUFpQixpRUFBUSxrQkFBa0IsaUVBQVE7QUFDdEY7O0FBRUEsK0JBQStCLGlFQUFRO0FBQ3ZDO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxpQkFBaUIsMERBQUs7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMsRUFBRTs7QUFFSTtBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsMkRBQU8sRUFBRSx3RUFBa0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHFFQUFTO0FBQ2pCO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLDJFQUFVO0FBQ3JCO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUSxxRUFBUztBQUNqQjtBQUNBLFNBQVM7QUFDVCxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRCQUE0QjtBQUM1Qjs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUEsV0FBVywyRUFBYTtBQUN4QjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkscUVBQVM7QUFDckI7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYLFVBQVU7OztBQUdWLDJCQUEyQiwyRUFBVTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTyxFQUFFOztBQUVUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxnQkFBZ0IscUVBQVM7QUFDekI7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQOzs7QUFHQSxhQUFhLDJFQUFVO0FBQ3ZCO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7O0FBRUE7QUFDQTtBQUNBLE9BQU8sR0FBRzs7QUFFVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsT0FBTzs7O0FBR1AsdUJBQXVCOztBQUV2QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLFVBQVUsdUVBQU87QUFDakI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVAsZ0JBQWdCLHVEQUFJO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFLG9FQUFNLHdDQUF3Qzs7QUFFckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjIxNC5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhzb3VyY2UsIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCBLZXlDb2RlcyBmcm9tICcuLi8uLi91dGlscy9rZXktY29kZXMnO1xuaW1wb3J0IGxvb3NlRXF1YWwgZnJvbSAnLi4vLi4vdXRpbHMvbG9vc2UtZXF1YWwnO1xuaW1wb3J0IG9ic2VydmVEb20gZnJvbSAnLi4vLi4vdXRpbHMvb2JzZXJ2ZS1kb20nO1xuaW1wb3J0IHN0YWJsZVNvcnQgZnJvbSAnLi4vLi4vdXRpbHMvc3RhYmxlLXNvcnQnO1xuaW1wb3J0IHsgYXJyYXlJbmNsdWRlcywgY29uY2F0IH0gZnJvbSAnLi4vLi4vdXRpbHMvYXJyYXknO1xuaW1wb3J0IHsgcmVxdWVzdEFGLCBzZWxlY3RBbGwgfSBmcm9tICcuLi8uLi91dGlscy9kb20nO1xuaW1wb3J0IHsgaXNFdmVudCB9IGZyb20gJy4uLy4uL3V0aWxzL2luc3BlY3QnO1xuaW1wb3J0IHsgb21pdCB9IGZyb20gJy4uLy4uL3V0aWxzL29iamVjdCc7XG5pbXBvcnQgaWRNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvaWQnO1xuaW1wb3J0IG5vcm1hbGl6ZVNsb3RNaXhpbiBmcm9tICcuLi8uLi9taXhpbnMvbm9ybWFsaXplLXNsb3QnO1xuaW1wb3J0IHsgQkxpbmsgfSBmcm9tICcuLi9saW5rL2xpbmsnO1xuaW1wb3J0IHsgQk5hdiwgcHJvcHMgYXMgQk5hdlByb3BzIH0gZnJvbSAnLi4vbmF2L25hdic7IC8vIC0tIENvbnN0YW50cyAtLVxuXG52YXIgbmF2UHJvcHMgPSBvbWl0KEJOYXZQcm9wcywgWyd0YWJzJywgJ2lzTmF2QmFyJywgJ2NhcmRIZWFkZXInXSk7IC8vIC0tIFV0aWxzIC0tXG4vLyBGaWx0ZXIgZnVuY3Rpb24gdG8gZmlsdGVyIG91dCBkaXNhYmxlZCB0YWJzXG5cbnZhciBub3REaXNhYmxlZCA9IGZ1bmN0aW9uIG5vdERpc2FibGVkKHRhYikge1xuICByZXR1cm4gIXRhYi5kaXNhYmxlZDtcbn07IC8vIC0tLSBIZWxwZXIgY29tcG9uZW50cyAtLS1cbi8vIEB2dWUvY29tcG9uZW50XG5cblxudmFyIEJUYWJCdXR0b25IZWxwZXIgPVxuLyojX19QVVJFX18qL1xuVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdCVGFiQnV0dG9uSGVscGVyJyxcbiAgaW5qZWN0OiB7XG4gICAgYnZUYWJzOiB7XG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBwcm9wczoge1xuICAgIC8vIFJlZmVyZW5jZSB0byB0aGUgY2hpbGQgPGItdGFiPiBpbnN0YW5jZVxuICAgIHRhYjoge1xuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgdGFiczoge1xuICAgICAgdHlwZTogQXJyYXksXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgfSxcbiAgICBpZDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgY29udHJvbHM6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIHRhYkluZGV4OiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBwb3NJblNldDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgc2V0U2l6ZToge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgbm9LZXlOYXY6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGZvY3VzOiBmdW5jdGlvbiBmb2N1cygpIHtcbiAgICAgIGlmICh0aGlzLiRyZWZzICYmIHRoaXMuJHJlZnMubGluayAmJiB0aGlzLiRyZWZzLmxpbmsuZm9jdXMpIHtcbiAgICAgICAgdGhpcy4kcmVmcy5saW5rLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVFdnQ6IGZ1bmN0aW9uIGhhbmRsZUV2dChldnQpIHtcbiAgICAgIHZhciBzdG9wID0gZnVuY3Rpb24gc3RvcCgpIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLnRhYi5kaXNhYmxlZCkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciB0eXBlID0gZXZ0LnR5cGU7XG4gICAgICB2YXIga2V5ID0gZXZ0LmtleUNvZGU7XG4gICAgICB2YXIgc2hpZnQgPSBldnQuc2hpZnRLZXk7XG5cbiAgICAgIGlmICh0eXBlID09PSAnY2xpY2snKSB7XG4gICAgICAgIHN0b3AoKTtcbiAgICAgICAgdGhpcy4kZW1pdCgnY2xpY2snLCBldnQpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAna2V5ZG93bicgJiYgIXRoaXMubm9LZXlOYXYgJiYga2V5ID09PSBLZXlDb2Rlcy5TUEFDRSkge1xuICAgICAgICAvLyBJbiBrZXluYXYgbW9kZSwgU1BBQ0UgcHJlc3Mgd2lsbCBhbHNvIHRyaWdnZXIgYSBjbGljay9zZWxlY3RcbiAgICAgICAgc3RvcCgpO1xuICAgICAgICB0aGlzLiRlbWl0KCdjbGljaycsIGV2dCk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdrZXlkb3duJyAmJiAhdGhpcy5ub0tleU5hdikge1xuICAgICAgICAvLyBGb3Iga2V5Ym9hcmQgbmF2aWdhdGlvblxuICAgICAgICBpZiAoa2V5ID09PSBLZXlDb2Rlcy5VUCB8fCBrZXkgPT09IEtleUNvZGVzLkxFRlQgfHwga2V5ID09PSBLZXlDb2Rlcy5IT01FKSB7XG4gICAgICAgICAgc3RvcCgpO1xuXG4gICAgICAgICAgaWYgKHNoaWZ0IHx8IGtleSA9PT0gS2V5Q29kZXMuSE9NRSkge1xuICAgICAgICAgICAgdGhpcy4kZW1pdCgnZmlyc3QnLCBldnQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiRlbWl0KCdwcmV2JywgZXZ0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBLZXlDb2Rlcy5ET1dOIHx8IGtleSA9PT0gS2V5Q29kZXMuUklHSFQgfHwga2V5ID09PSBLZXlDb2Rlcy5FTkQpIHtcbiAgICAgICAgICBzdG9wKCk7XG5cbiAgICAgICAgICBpZiAoc2hpZnQgfHwga2V5ID09PSBLZXlDb2Rlcy5FTkQpIHtcbiAgICAgICAgICAgIHRoaXMuJGVtaXQoJ2xhc3QnLCBldnQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiRlbWl0KCduZXh0JywgZXZ0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgpIHtcbiAgICB2YXIgbGluayA9IGgoQkxpbmssIHtcbiAgICAgIHJlZjogJ2xpbmsnLFxuICAgICAgc3RhdGljQ2xhc3M6ICduYXYtbGluaycsXG4gICAgICBjbGFzczogW3tcbiAgICAgICAgYWN0aXZlOiB0aGlzLnRhYi5sb2NhbEFjdGl2ZSAmJiAhdGhpcy50YWIuZGlzYWJsZWQsXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLnRhYi5kaXNhYmxlZFxuICAgICAgfSwgdGhpcy50YWIudGl0bGVMaW5rQ2xhc3MsIC8vIEFwcGx5IDxiLXRhYnM+IGBhY3RpdmVOYXZJdGVtQ2xhc3NgIHN0eWxlcyB3aGVuIHRoZSB0YWIgaXMgYWN0aXZlXG4gICAgICB0aGlzLnRhYi5sb2NhbEFjdGl2ZSA/IHRoaXMuYnZUYWJzLmFjdGl2ZU5hdkl0ZW1DbGFzcyA6IG51bGxdLFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMudGFiLmRpc2FibGVkXG4gICAgICB9LFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcm9sZTogJ3RhYicsXG4gICAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgICAvLyBSb3ZpbmcgdGFiIGluZGV4IHdoZW4ga2V5bmF2IGVuYWJsZWRcbiAgICAgICAgdGFiaW5kZXg6IHRoaXMudGFiSW5kZXgsXG4gICAgICAgICdhcmlhLXNlbGVjdGVkJzogdGhpcy50YWIubG9jYWxBY3RpdmUgJiYgIXRoaXMudGFiLmRpc2FibGVkID8gJ3RydWUnIDogJ2ZhbHNlJyxcbiAgICAgICAgJ2FyaWEtc2V0c2l6ZSc6IHRoaXMuc2V0U2l6ZSxcbiAgICAgICAgJ2FyaWEtcG9zaW5zZXQnOiB0aGlzLnBvc0luU2V0LFxuICAgICAgICAnYXJpYS1jb250cm9scyc6IHRoaXMuY29udHJvbHNcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAgICBjbGljazogdGhpcy5oYW5kbGVFdnQsXG4gICAgICAgIGtleWRvd246IHRoaXMuaGFuZGxlRXZ0XG4gICAgICB9XG4gICAgfSwgW3RoaXMudGFiLm5vcm1hbGl6ZVNsb3QoJ3RpdGxlJykgfHwgdGhpcy50YWIudGl0bGVdKTtcbiAgICByZXR1cm4gaCgnbGknLCB7XG4gICAgICBzdGF0aWNDbGFzczogJ25hdi1pdGVtJyxcbiAgICAgIGNsYXNzOiBbdGhpcy50YWIudGl0bGVJdGVtQ2xhc3NdLFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcm9sZTogJ3ByZXNlbnRhdGlvbidcbiAgICAgIH1cbiAgICB9LCBbbGlua10pO1xuICB9XG59KTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCVGFicyA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JUYWJzJyxcbiAgbWl4aW5zOiBbaWRNaXhpbiwgbm9ybWFsaXplU2xvdE1peGluXSxcbiAgcHJvdmlkZTogZnVuY3Rpb24gcHJvdmlkZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnZUYWJzOiB0aGlzXG4gICAgfTtcbiAgfSxcbiAgbW9kZWw6IHtcbiAgICBwcm9wOiAndmFsdWUnLFxuICAgIGV2ZW50OiAnaW5wdXQnXG4gIH0sXG4gIHByb3BzOiBfb2JqZWN0U3ByZWFkKHt9LCBuYXZQcm9wcywge1xuICAgIHRhZzoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2RpdidcbiAgICB9LFxuICAgIGNhcmQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgZW5kOiB7XG4gICAgICAvLyBTeW5vbnltIGZvciAnYm90dG9tJ1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBub0ZhZGU6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgbm9OYXZTdHlsZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBub0tleU5hdjoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBsYXp5OiB7XG4gICAgICAvLyBUaGlzIHByb3AgaXMgc25pZmZlZCBieSB0aGUgPGItdGFiPiBjaGlsZFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBjb250ZW50Q2xhc3M6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIEFycmF5LCBPYmplY3RdLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgbmF2Q2xhc3M6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIEFycmF5LCBPYmplY3RdLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgbmF2V3JhcHBlckNsYXNzOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBBcnJheSwgT2JqZWN0XSxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIGFjdGl2ZU5hdkl0ZW1DbGFzczoge1xuICAgICAgLy8gT25seSBhcHBsaWVkIHRvIHRoZSBjdXJyZW50bHkgYWN0aXZlIDxiLW5hdi1pdGVtPlxuICAgICAgdHlwZTogW1N0cmluZywgQXJyYXksIE9iamVjdF0sXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBhY3RpdmVUYWJDbGFzczoge1xuICAgICAgLy8gT25seSBhcHBsaWVkIHRvIHRoZSBjdXJyZW50bHkgYWN0aXZlIDxiLXRhYj5cbiAgICAgIC8vIFRoaXMgcHJvcCBpcyBzbmlmZmVkIGJ5IHRoZSA8Yi10YWI+IGNoaWxkXG4gICAgICB0eXBlOiBbU3RyaW5nLCBBcnJheSwgT2JqZWN0XSxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIHZhbHVlOiB7XG4gICAgICAvLyB2LW1vZGVsXG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfVxuICB9KSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICB2YXIgdGFiSWR4ID0gcGFyc2VJbnQodGhpcy52YWx1ZSwgMTApO1xuICAgIHRhYklkeCA9IGlzTmFOKHRhYklkeCkgPyAtMSA6IHRhYklkeDtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gSW5kZXggb2YgY3VycmVudCB0YWJcbiAgICAgIGN1cnJlbnRUYWI6IHRhYklkeCxcbiAgICAgIC8vIEFycmF5IG9mIGRpcmVjdCBjaGlsZCA8Yi10YWI+IGluc3RhbmNlcywgaW4gRE9NIG9yZGVyXG4gICAgICB0YWJzOiBbXSxcbiAgICAgIC8vIEFycmF5IG9mIGNoaWxkIGluc3RhbmNlcyByZWdpc3RlcmVkIChmb3IgdHJpZ2dlcmluZyByZWFjdGl2ZSB1cGRhdGVzKVxuICAgICAgcmVnaXN0ZXJlZFRhYnM6IFtdLFxuICAgICAgLy8gRmxhZyB0byBrbm93IGlmIHdlIGFyZSBtb3VudGVkIG9yIG5vdFxuICAgICAgaXNNb3VudGVkOiBmYWxzZVxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgZmFkZTogZnVuY3Rpb24gZmFkZSgpIHtcbiAgICAgIC8vIFRoaXMgY29tcHV0ZWQgcHJvcCBpcyBzbmlmZmVkIGJ5IHRoZSB0YWIgY2hpbGRcbiAgICAgIHJldHVybiAhdGhpcy5ub0ZhZGU7XG4gICAgfSxcbiAgICBsb2NhbE5hdkNsYXNzOiBmdW5jdGlvbiBsb2NhbE5hdkNsYXNzKCkge1xuICAgICAgdmFyIGNsYXNzZXMgPSBbXTtcblxuICAgICAgaWYgKHRoaXMuY2FyZCAmJiB0aGlzLnZlcnRpY2FsKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaCgnY2FyZC1oZWFkZXInLCAnaC0xMDAnLCAnYm9yZGVyLWJvdHRvbS0wJywgJ3JvdW5kZWQtMCcpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gW10uY29uY2F0KGNsYXNzZXMsIFt0aGlzLm5hdkNsYXNzXSk7XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIGN1cnJlbnRUYWI6IGZ1bmN0aW9uIGN1cnJlbnRUYWIodmFsLCBvbGQpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xOyAvLyBFbnN1cmUgb25seSBvbmUgdGFiIGlzIGFjdGl2ZSBhdCBtb3N0XG5cbiAgICAgIHRoaXMudGFicy5mb3JFYWNoKGZ1bmN0aW9uICh0YWIsIGlkeCkge1xuICAgICAgICBpZiAodmFsID09PSBpZHggJiYgIXRhYi5kaXNhYmxlZCkge1xuICAgICAgICAgIHRhYi5sb2NhbEFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgaW5kZXggPSBpZHg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFiLmxvY2FsQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pOyAvLyBVcGRhdGUgdGhlIHYtbW9kZWxcblxuICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCBpbmRleCk7XG4gICAgfSxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUodmFsLCBvbGQpIHtcbiAgICAgIGlmICh2YWwgIT09IG9sZCkge1xuICAgICAgICB2YWwgPSBwYXJzZUludCh2YWwsIDEwKTtcbiAgICAgICAgdmFsID0gaXNOYU4odmFsKSA/IC0xIDogdmFsO1xuICAgICAgICBvbGQgPSBwYXJzZUludChvbGQsIDEwKSB8fCAwO1xuICAgICAgICB2YXIgdGFicyA9IHRoaXMudGFicztcblxuICAgICAgICBpZiAodGFic1t2YWxdICYmICF0YWJzW3ZhbF0uZGlzYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRUYWIgPSB2YWw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVHJ5IG5leHQgb3IgcHJldiB0YWJzXG4gICAgICAgICAgaWYgKHZhbCA8IG9sZCkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c1RhYigpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5leHRUYWIoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHJlZ2lzdGVyZWRUYWJzOiBmdW5jdGlvbiByZWdpc3RlcmVkVGFicyhuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgLy8gRWFjaCBiLXRhYiB3aWxsIHJlZ2lzdGVyL3VucmVnaXN0ZXIgaXRzZWxmLlxuICAgICAgLy8gV2UgdXNlIHRoaXMgdG8gZGV0ZWN0IHdoZW4gdGFicyBhcmUgYWRkZWQvcmVtb3ZlZFxuICAgICAgLy8gdG8gdHJpZ2dlciB0aGUgdXBkYXRlIG9mIHRoZSB0YWJzLlxuICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICByZXF1ZXN0QUYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzLnVwZGF0ZVRhYnMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHRhYnM6IGZ1bmN0aW9uIHRhYnMobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICAvLyBJZiB0YWJzIGFkZGVkLCByZW1vdmVkLCBvciByZS1vcmRlcmVkLCB3ZSBlbWl0IGEgYGNoYW5nZWRgIGV2ZW50LlxuICAgICAgLy8gV2UgdXNlIGB0YWIuX3VpZGAgaW5zdGVhZCBvZiBgdGFiLnNhZmVJZCgpYCwgYXMgdGhlIGxhdGVyIGlzIGNoYW5nZWRcbiAgICAgIC8vIGluIGEgbmV4dFRpY2sgaWYgbm8gZXhwbGljaXQgSUQgaXMgcHJvdmlkZWQsIGNhdXNpbmcgZHVwbGljYXRlIGVtaXRzLlxuICAgICAgaWYgKCFsb29zZUVxdWFsKG5ld1ZhbC5tYXAoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgcmV0dXJuIHQuX3VpZDtcbiAgICAgIH0pLCBvbGRWYWwubWFwKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHJldHVybiB0Ll91aWQ7XG4gICAgICB9KSkpIHtcbiAgICAgICAgLy8gSW4gYSBuZXh0VGljayB0byBlbnN1cmUgY3VycmVudFRhYiBoYXMgYmVlbiBzZXQgZmlyc3QuXG4gICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAvLyBXZSBlbWl0IHNoYWxsb3cgY29waWVzIG9mIHRoZSBuZXcgYW5kIG9sZCBhcnJheXMgb2YgdGFicywgdG9cbiAgICAgICAgICAvLyBwcmV2ZW50IHVzZXJzIGZyb20gcG90ZW50aWFsbHkgbXV0YXRpbmcgdGhlIGludGVybmFsIGFycmF5cy5cbiAgICAgICAgICBfdGhpczIuJGVtaXQoJ2NoYW5nZWQnLCBuZXdWYWwuc2xpY2UoKSwgb2xkVmFsLnNsaWNlKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGlzTW91bnRlZDogZnVuY3Rpb24gaXNNb3VudGVkKG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgLy8gVHJpZ2dlciBhbiB1cGRhdGUgYWZ0ZXIgbW91bnRlZC4gIE5lZWRlZCBmb3IgdGFicyBpbnNpZGUgbGF6eSBtb2RhbHMuXG4gICAgICBpZiAobmV3VmFsKSB7XG4gICAgICAgIHJlcXVlc3RBRihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMzLnVwZGF0ZVRhYnMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9IC8vIEVuYWJsZSBvciBkaXNhYmxlIHRoZSBvYnNlcnZlclxuXG5cbiAgICAgIHRoaXMuc2V0T2JzZXJ2ZXIobmV3VmFsKTtcbiAgICB9XG4gIH0sXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7XG4gICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICB2YXIgdGFiSWR4ID0gcGFyc2VJbnQodGhpcy52YWx1ZSwgMTApO1xuICAgIHRoaXMuY3VycmVudFRhYiA9IGlzTmFOKHRhYklkeCkgPyAtMSA6IHRhYklkeDtcbiAgICB0aGlzLl9idk9ic2VydmVyID0gbnVsbDsgLy8gRm9yIFNTUiBhbmQgdG8gbWFrZSBzdXJlIG9ubHkgYSBzaW5nbGUgdGFiIGlzIHNob3duIG9uIG1vdW50XG4gICAgLy8gV2Ugd3JhcCB0aGlzIGluIGEgYCRuZXh0VGljaygpYCB0byBlbnN1cmUgdGhlIGNoaWxkIHRhYnMgaGF2ZSBiZWVuIGNyZWF0ZWRcblxuICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzNC51cGRhdGVUYWJzKCk7XG4gICAgfSk7XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICAvLyBDYWxsIGB1cGRhdGVUYWJzKClgIGp1c3QgaW4gY2FzZS4uLlxuICAgIHRoaXMudXBkYXRlVGFicygpO1xuICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIEZsYWcgd2UgYXJlIG5vdyBtb3VudGVkIGFuZCB0byBzd2l0Y2ggdG8gRE9NIGZvciB0YWIgcHJvYmluZy5cbiAgICAgIC8vIEFzIHRoaXMuJHNsb3RzLmRlZmF1bHQgYXBwZWFycyB0byBsaWUgYWJvdXQgY29tcG9uZW50IGluc3RhbmNlc1xuICAgICAgLy8gYWZ0ZXIgYi10YWJzIGlzIGRlc3Ryb3llZCBhbmQgcmUtaW5zdGFudGlhdGVkLlxuICAgICAgLy8gQW5kIHRoaXMuJGNoaWxkcmVuIGRvZXMgbm90IHJlc3BlY3QgRE9NIG9yZGVyLlxuICAgICAgX3RoaXM1LmlzTW91bnRlZCA9IHRydWU7XG4gICAgfSk7XG4gIH0sXG4gIGRlYWN0aXZhdGVkOiBmdW5jdGlvbiBkZWFjdGl2YXRlZCgpXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHtcbiAgICB0aGlzLmlzTW91bnRlZCA9IGZhbHNlO1xuICB9LFxuICBhY3RpdmF0ZWQ6IGZ1bmN0aW9uIGFjdGl2YXRlZCgpXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHtcbiAgICB2YXIgX3RoaXM2ID0gdGhpcztcblxuICAgIHZhciB0YWJJZHggPSBwYXJzZUludCh0aGlzLnZhbHVlLCAxMCk7XG4gICAgdGhpcy5jdXJyZW50VGFiID0gaXNOYU4odGFiSWR4KSA/IC0xIDogdGFiSWR4O1xuICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzNi51cGRhdGVUYWJzKCk7XG5cbiAgICAgIF90aGlzNi5pc01vdW50ZWQgPSB0cnVlO1xuICAgIH0pO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIHRoaXMuaXNNb3VudGVkID0gZmFsc2U7XG4gIH0sXG4gIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkKCkge1xuICAgIC8vIEVuc3VyZSBubyByZWZlcmVuY2VzIHRvIGNoaWxkIGluc3RhbmNlcyBleGlzdFxuICAgIHRoaXMudGFicyA9IFtdO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgcmVnaXN0ZXJUYWI6IGZ1bmN0aW9uIHJlZ2lzdGVyVGFiKHRhYikge1xuICAgICAgdmFyIF90aGlzNyA9IHRoaXM7XG5cbiAgICAgIGlmICghYXJyYXlJbmNsdWRlcyh0aGlzLnJlZ2lzdGVyZWRUYWJzLCB0YWIpKSB7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJlZFRhYnMucHVzaCh0YWIpO1xuICAgICAgICB0YWIuJG9uY2UoJ2hvb2s6ZGVzdHJveWVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzNy51bnJlZ2lzdGVyVGFiKHRhYik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgdW5yZWdpc3RlclRhYjogZnVuY3Rpb24gdW5yZWdpc3RlclRhYih0YWIpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJlZFRhYnMgPSB0aGlzLnJlZ2lzdGVyZWRUYWJzLnNsaWNlKCkuZmlsdGVyKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHJldHVybiB0ICE9PSB0YWI7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHNldE9ic2VydmVyOiBmdW5jdGlvbiBzZXRPYnNlcnZlcihvbikge1xuICAgICAgLy8gRE9NIG9ic2VydmVyIGlzIG5lZWRlZCB0byBkZXRlY3QgY2hhbmdlcyBpbiBvcmRlciBvZiB0YWJzXG4gICAgICBpZiAob24pIHtcbiAgICAgICAgLy8gTWFrZSBzdXJlIG5vIGV4aXN0aW5nIG9ic2VydmVyIHJ1bm5pbmdcbiAgICAgICAgdGhpcy5zZXRPYnNlcnZlcihmYWxzZSk7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGRpZmZpY3VsdCB0byB0ZXN0IG11dGF0aW9uIG9ic2VydmVyIGluIEpTRE9NICovXG5cbiAgICAgICAgdmFyIGhhbmRsZXIgPSBmdW5jdGlvbiBoYW5kbGVyKCkge1xuICAgICAgICAgIC8vIFdlIGRlbGF5IHRoZSB1cGRhdGUgdG8gZW5zdXJlIHRoYXQgYHRhYi5zYWZlSWQoKWAgaGFzXG4gICAgICAgICAgLy8gdXBkYXRlZCB3aXRoIHRoZSBmaW5hbCBJRCB2YWx1ZS5cbiAgICAgICAgICBzZWxmLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXF1ZXN0QUYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICBzZWxmLnVwZGF0ZVRhYnMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9OyAvLyBXYXRjaCBmb3IgY2hhbmdlcyB0byA8Yi10YWI+IHN1YiBjb21wb25lbnRzXG5cblxuICAgICAgICB0aGlzLl9idk9ic2VydmVyID0gb2JzZXJ2ZURvbSh0aGlzLiRyZWZzLnRhYnNDb250YWluZXIsIGhhbmRsZXIsIHtcbiAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgc3VidHJlZTogZmFsc2UsXG4gICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnaWQnXVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLl9idk9ic2VydmVyICYmIHRoaXMuX2J2T2JzZXJ2ZXIuZGlzY29ubmVjdCkge1xuICAgICAgICAgIHRoaXMuX2J2T2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYnZPYnNlcnZlciA9IG51bGw7XG4gICAgICB9XG4gICAgfSxcbiAgICBnZXRUYWJzOiBmdW5jdGlvbiBnZXRUYWJzKCkge1xuICAgICAgLy8gV2UgdXNlIHJlZ2lzdGVyZWRUYWJzIGFzIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIGNoaWxkIHRhYiBjb21wb25lbnRzLiBBbmQgd2VcbiAgICAgIC8vIGZpbHRlciBvdXQgYW55IEJUYWIgY29tcG9uZW50cyB0aGF0IGFyZSBleHRlbmRlZCBCVGFiIHdpdGggYSByb290IGNoaWxkIEJUYWIuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYm9vdHN0cmFwLXZ1ZS9ib290c3RyYXAtdnVlL2lzc3Vlcy8zMjYwXG4gICAgICB2YXIgdGFicyA9IHRoaXMucmVnaXN0ZXJlZFRhYnMuZmlsdGVyKGZ1bmN0aW9uICh0YWIpIHtcbiAgICAgICAgcmV0dXJuIHRhYi4kY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgcmV0dXJuIHQuX2lzVGFiO1xuICAgICAgICB9KS5sZW5ndGggPT09IDA7XG4gICAgICB9KTsgLy8gRE9NIE9yZGVyIG9mIFRhYnNcblxuICAgICAgdmFyIG9yZGVyID0gW107XG5cbiAgICAgIGlmICh0aGlzLmlzTW91bnRlZCAmJiB0YWJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gV2UgcmVseSBvbiB0aGUgRE9NIHdoZW4gbW91bnRlZCB0byBnZXQgdGhlICd0cnVlJyBvcmRlciBvZiB0aGUgYi10YWIgY2hpbGRyZW4uXG4gICAgICAgIC8vIHF1ZXJ5U2VsZWN0b3JBbGwoLi4uKSBhbHdheXMgcmV0dXJucyBlbGVtZW50cyBpbiBkb2N1bWVudCBvcmRlciwgcmVnYXJkbGVzcyBvZlxuICAgICAgICAvLyBvcmRlciBzcGVjaWZpZWQgaW4gdGhlIHNlbGVjdG9yLlxuICAgICAgICB2YXIgc2VsZWN0b3IgPSB0YWJzLm1hcChmdW5jdGlvbiAodGFiKSB7XG4gICAgICAgICAgcmV0dXJuIFwiI1wiLmNvbmNhdCh0YWIuc2FmZUlkKCkpO1xuICAgICAgICB9KS5qb2luKCcsICcpO1xuICAgICAgICBvcmRlciA9IHNlbGVjdEFsbChzZWxlY3RvciwgdGhpcy4kZWwpLm1hcChmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICByZXR1cm4gZWwuaWQ7XG4gICAgICAgIH0pLmZpbHRlcihCb29sZWFuKTtcbiAgICAgIH0gLy8gU3RhYmxlIHNvcnQga2VlcHMgdGhlIG9yaWdpbmFsIG9yZGVyIGlmIG5vdCBmb3VuZCBpbiB0aGVcbiAgICAgIC8vIGBvcmRlcmAgYXJyYXksIHdoaWNoIHdpbGwgYmUgYW4gZW1wdHkgYXJyYXkgYmVmb3JlIG1vdW50LlxuXG5cbiAgICAgIHJldHVybiBzdGFibGVTb3J0KHRhYnMsIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiBvcmRlci5pbmRleE9mKGEuc2FmZUlkKCkpIC0gb3JkZXIuaW5kZXhPZihiLnNhZmVJZCgpKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLy8gVXBkYXRlIGxpc3Qgb2YgPGItdGFiPiBjaGlsZHJlblxuICAgIHVwZGF0ZVRhYnM6IGZ1bmN0aW9uIHVwZGF0ZVRhYnMoKSB7XG4gICAgICAvLyBQcm9iZSB0YWJzXG4gICAgICB2YXIgdGFicyA9IHRoaXMuZ2V0VGFicygpOyAvLyBGaW5kICpsYXN0KiBhY3RpdmUgbm9uLWRpc2FibGVkIHRhYiBpbiBjdXJyZW50IHRhYnNcbiAgICAgIC8vIFdlIHRydXN0IHRhYiBzdGF0ZSBvdmVyIGN1cnJlbnRUYWIsIGluIGNhc2UgdGFicyB3ZXJlIGFkZGVkL3JlbW92ZWQvcmUtb3JkZXJlZFxuXG4gICAgICB2YXIgdGFiSW5kZXggPSB0YWJzLmluZGV4T2YodGFicy5zbGljZSgpLnJldmVyc2UoKS5maW5kKGZ1bmN0aW9uICh0YWIpIHtcbiAgICAgICAgcmV0dXJuIHRhYi5sb2NhbEFjdGl2ZSAmJiAhdGFiLmRpc2FibGVkO1xuICAgICAgfSkpOyAvLyBFbHNlIHRyeSBzZXR0aW5nIHRvIGN1cnJlbnRUYWJcblxuICAgICAgaWYgKHRhYkluZGV4IDwgMCkge1xuICAgICAgICB2YXIgY3VycmVudFRhYiA9IHRoaXMuY3VycmVudFRhYjtcblxuICAgICAgICBpZiAoY3VycmVudFRhYiA+PSB0YWJzLmxlbmd0aCkge1xuICAgICAgICAgIC8vIEhhbmRsZSBsYXN0IHRhYiBiZWluZyByZW1vdmVkLCBzbyBmaW5kIHRoZSBsYXN0IG5vbi1kaXNhYmxlZCB0YWJcbiAgICAgICAgICB0YWJJbmRleCA9IHRhYnMuaW5kZXhPZih0YWJzLnNsaWNlKCkucmV2ZXJzZSgpLmZpbmQobm90RGlzYWJsZWQpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0YWJzW2N1cnJlbnRUYWJdICYmICF0YWJzW2N1cnJlbnRUYWJdLmRpc2FibGVkKSB7XG4gICAgICAgICAgLy8gQ3VycmVudCB0YWIgaXMgbm90IGRpc2FibGVkXG4gICAgICAgICAgdGFiSW5kZXggPSBjdXJyZW50VGFiO1xuICAgICAgICB9XG4gICAgICB9IC8vIEVsc2UgZmluZCAqZmlyc3QqIG5vbi1kaXNhYmxlZCB0YWIgaW4gY3VycmVudCB0YWJzXG5cblxuICAgICAgaWYgKHRhYkluZGV4IDwgMCkge1xuICAgICAgICB0YWJJbmRleCA9IHRhYnMuaW5kZXhPZih0YWJzLmZpbmQobm90RGlzYWJsZWQpKTtcbiAgICAgIH0gLy8gU2V0IHRoZSBjdXJyZW50IHRhYiBzdGF0ZSB0byBhY3RpdmVcblxuXG4gICAgICB0YWJzLmZvckVhY2goZnVuY3Rpb24gKHRhYiwgaWR4KSB7XG4gICAgICAgIC8vIHRhYi5sb2NhbEFjdGl2ZSA9IGlkeCA9PT0gdGFiSW5kZXggJiYgIXRhYi5kaXNhYmxlZFxuICAgICAgICB0YWIubG9jYWxBY3RpdmUgPSBmYWxzZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGFic1t0YWJJbmRleF0pIHtcbiAgICAgICAgdGFic1t0YWJJbmRleF0ubG9jYWxBY3RpdmUgPSB0cnVlO1xuICAgICAgfSAvLyBVcGRhdGUgdGhlIGFycmF5IG9mIHRhYiBjaGlsZHJlblxuXG5cbiAgICAgIHRoaXMudGFicyA9IHRhYnM7IC8vIFNldCB0aGUgY3VycmVudFRhYiBpbmRleCAoY2FuIGJlIC0xIGlmIG5vIG5vbi1kaXNhYmxlZCB0YWJzKVxuXG4gICAgICB0aGlzLmN1cnJlbnRUYWIgPSB0YWJJbmRleDtcbiAgICB9LFxuICAgIC8vIEZpbmQgYSBidXR0b24gdGhhdCBjb250cm9scyBhIHRhYiwgZ2l2ZW4gdGhlIHRhYiByZWZlcmVuY2VcbiAgICAvLyBSZXR1cm5zIHRoZSBidXR0b24gdm0gaW5zdGFuY2VcbiAgICBnZXRCdXR0b25Gb3JUYWI6IGZ1bmN0aW9uIGdldEJ1dHRvbkZvclRhYih0YWIpIHtcbiAgICAgIHJldHVybiAodGhpcy4kcmVmcy5idXR0b25zIHx8IFtdKS5maW5kKGZ1bmN0aW9uIChidG4pIHtcbiAgICAgICAgcmV0dXJuIGJ0bi50YWIgPT09IHRhYjtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLy8gRm9yY2UgYSBidXR0b24gdG8gcmUtcmVuZGVyIGl0J3MgY29udGVudCwgZ2l2ZW4gYSA8Yi10YWI+IGluc3RhbmNlXG4gICAgLy8gQ2FsbGVkIGJ5IDxiLXRhYj4gb24gYHVwZGF0ZSgpYFxuICAgIHVwZGF0ZUJ1dHRvbjogZnVuY3Rpb24gdXBkYXRlQnV0dG9uKHRhYikge1xuICAgICAgdmFyIGJ1dHRvbiA9IHRoaXMuZ2V0QnV0dG9uRm9yVGFiKHRhYik7XG5cbiAgICAgIGlmIChidXR0b24gJiYgYnV0dG9uLiRmb3JjZVVwZGF0ZSkge1xuICAgICAgICBidXR0b24uJGZvcmNlVXBkYXRlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyBBY3RpdmF0ZSBhIHRhYiBnaXZlbiBhIDxiLXRhYj4gaW5zdGFuY2VcbiAgICAvLyBBbHNvIGFjY2Vzc2VkIGJ5IDxiLXRhYj5cbiAgICBhY3RpdmF0ZVRhYjogZnVuY3Rpb24gYWN0aXZhdGVUYWIodGFiKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gZmFsc2U7XG5cbiAgICAgIGlmICh0YWIpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gdGhpcy50YWJzLmluZGV4T2YodGFiKTtcblxuICAgICAgICBpZiAoIXRhYi5kaXNhYmxlZCAmJiBpbmRleCA+IC0xKSB7XG4gICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRUYWIgPSBpbmRleDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAvLyBDb3VsZG4ndCBzZXQgdGFiLCBzbyBlbnN1cmUgdi1tb2RlbCBpcyBzZXQgdG8gYHRoaXMuY3VycmVudFRhYmBcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogc2hvdWxkIHJhcmVseSBoYXBwZW4gKi9cbiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB0aGlzLmN1cnJlbnRUYWIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gICAgLy8gRGVhY3RpdmF0ZSBhIHRhYiBnaXZlbiBhIDxiLXRhYj4gaW5zdGFuY2VcbiAgICAvLyBBY2Nlc3NlZCBieSA8Yi10YWI+XG4gICAgZGVhY3RpdmF0ZVRhYjogZnVuY3Rpb24gZGVhY3RpdmF0ZVRhYih0YWIpIHtcbiAgICAgIGlmICh0YWIpIHtcbiAgICAgICAgLy8gRmluZCBmaXJzdCBub24tZGlzYWJsZWQgdGFiIHRoYXQgaXNuJ3QgdGhlIG9uZSBiZWluZyBkZWFjdGl2YXRlZFxuICAgICAgICAvLyBJZiBubyB0YWJzIGFyZSBhdmFpbGFibGUsIHRoZW4gZG9uJ3QgZGVhY3RpdmF0ZSBjdXJyZW50IHRhYlxuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmF0ZVRhYih0aGlzLnRhYnMuZmlsdGVyKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgcmV0dXJuIHQgIT09IHRhYjtcbiAgICAgICAgfSkuZmluZChub3REaXNhYmxlZCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTm8gdGFiIHNwZWNpZmllZFxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBzaG91bGQgbmV2ZXIgaGFwcGVuICovXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIEZvY3VzIGEgdGFiIGJ1dHRvbiBnaXZlbiBpdCdzIDxiLXRhYj4gaW5zdGFuY2VcbiAgICBmb2N1c0J1dHRvbjogZnVuY3Rpb24gZm9jdXNCdXR0b24odGFiKSB7XG4gICAgICB2YXIgX3RoaXM4ID0gdGhpcztcblxuICAgICAgLy8gV3JhcCBpbiBgJG5leHRUaWNrKClgIHRvIGVuc3VyZSBET00gaGFzIGNvbXBsZXRlZCByZW5kZXJpbmcvdXBkYXRpbmcgYmVmb3JlIGZvY3VzaW5nXG4gICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBidXR0b24gPSBfdGhpczguZ2V0QnV0dG9uRm9yVGFiKHRhYik7XG5cbiAgICAgICAgaWYgKGJ1dHRvbiAmJiBidXR0b24uZm9jdXMpIHtcbiAgICAgICAgICBidXR0b24uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvLyBFbWl0IGEgY2xpY2sgZXZlbnQgb24gYSBzcGVjaWZpZWQgPGItdGFiPiBjb21wb25lbnQgaW5zdGFuY2VcbiAgICBlbWl0VGFiQ2xpY2s6IGZ1bmN0aW9uIGVtaXRUYWJDbGljayh0YWIsIGV2dCkge1xuICAgICAgaWYgKGlzRXZlbnQoZXZ0KSAmJiB0YWIgJiYgdGFiLiRlbWl0ICYmICF0YWIuZGlzYWJsZWQpIHtcbiAgICAgICAgdGFiLiRlbWl0KCdjbGljaycsIGV2dCk7XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyBDbGljayBoYW5kbGVyXG4gICAgY2xpY2tUYWI6IGZ1bmN0aW9uIGNsaWNrVGFiKHRhYiwgZXZ0KSB7XG4gICAgICB0aGlzLmFjdGl2YXRlVGFiKHRhYik7XG4gICAgICB0aGlzLmVtaXRUYWJDbGljayh0YWIsIGV2dCk7XG4gICAgfSxcbiAgICAvLyBNb3ZlIHRvIGZpcnN0IG5vbi1kaXNhYmxlZCB0YWJcbiAgICBmaXJzdFRhYjogZnVuY3Rpb24gZmlyc3RUYWIoZm9jdXMpIHtcbiAgICAgIHZhciB0YWIgPSB0aGlzLnRhYnMuZmluZChub3REaXNhYmxlZCk7XG5cbiAgICAgIGlmICh0aGlzLmFjdGl2YXRlVGFiKHRhYikgJiYgZm9jdXMpIHtcbiAgICAgICAgdGhpcy5mb2N1c0J1dHRvbih0YWIpO1xuICAgICAgICB0aGlzLmVtaXRUYWJDbGljayh0YWIsIGZvY3VzKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIE1vdmUgdG8gcHJldmlvdXMgbm9uLWRpc2FibGVkIHRhYlxuICAgIHByZXZpb3VzVGFiOiBmdW5jdGlvbiBwcmV2aW91c1RhYihmb2N1cykge1xuICAgICAgdmFyIGN1cnJlbnRJbmRleCA9IE1hdGgubWF4KHRoaXMuY3VycmVudFRhYiwgMCk7XG4gICAgICB2YXIgdGFiID0gdGhpcy50YWJzLnNsaWNlKDAsIGN1cnJlbnRJbmRleCkucmV2ZXJzZSgpLmZpbmQobm90RGlzYWJsZWQpO1xuXG4gICAgICBpZiAodGhpcy5hY3RpdmF0ZVRhYih0YWIpICYmIGZvY3VzKSB7XG4gICAgICAgIHRoaXMuZm9jdXNCdXR0b24odGFiKTtcbiAgICAgICAgdGhpcy5lbWl0VGFiQ2xpY2sodGFiLCBmb2N1cyk7XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyBNb3ZlIHRvIG5leHQgbm9uLWRpc2FibGVkIHRhYlxuICAgIG5leHRUYWI6IGZ1bmN0aW9uIG5leHRUYWIoZm9jdXMpIHtcbiAgICAgIHZhciBjdXJyZW50SW5kZXggPSBNYXRoLm1heCh0aGlzLmN1cnJlbnRUYWIsIC0xKTtcbiAgICAgIHZhciB0YWIgPSB0aGlzLnRhYnMuc2xpY2UoY3VycmVudEluZGV4ICsgMSkuZmluZChub3REaXNhYmxlZCk7XG5cbiAgICAgIGlmICh0aGlzLmFjdGl2YXRlVGFiKHRhYikgJiYgZm9jdXMpIHtcbiAgICAgICAgdGhpcy5mb2N1c0J1dHRvbih0YWIpO1xuICAgICAgICB0aGlzLmVtaXRUYWJDbGljayh0YWIsIGZvY3VzKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIE1vdmUgdG8gbGFzdCBub24tZGlzYWJsZWQgdGFiXG4gICAgbGFzdFRhYjogZnVuY3Rpb24gbGFzdFRhYihmb2N1cykge1xuICAgICAgdmFyIHRhYiA9IHRoaXMudGFicy5zbGljZSgpLnJldmVyc2UoKS5maW5kKG5vdERpc2FibGVkKTtcblxuICAgICAgaWYgKHRoaXMuYWN0aXZhdGVUYWIodGFiKSAmJiBmb2N1cykge1xuICAgICAgICB0aGlzLmZvY3VzQnV0dG9uKHRhYik7XG4gICAgICAgIHRoaXMuZW1pdFRhYkNsaWNrKHRhYiwgZm9jdXMpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBfdGhpczkgPSB0aGlzO1xuXG4gICAgdmFyIHRhYnMgPSB0aGlzLnRhYnM7IC8vIEN1cnJlbnRseSBhY3RpdmUgdGFiXG5cbiAgICB2YXIgYWN0aXZlVGFiID0gdGFicy5maW5kKGZ1bmN0aW9uICh0YWIpIHtcbiAgICAgIHJldHVybiB0YWIubG9jYWxBY3RpdmUgJiYgIXRhYi5kaXNhYmxlZDtcbiAgICB9KTsgLy8gVGFiIGJ1dHRvbiB0byBhbGxvdyBmb2N1c2luZyB3aGVuIG5vIGFjdGl2ZSB0YWIgZm91bmQgKGtleW5hdiBvbmx5KVxuXG4gICAgdmFyIGZhbGxiYWNrVGFiID0gdGFicy5maW5kKGZ1bmN0aW9uICh0YWIpIHtcbiAgICAgIHJldHVybiAhdGFiLmRpc2FibGVkO1xuICAgIH0pOyAvLyBGb3IgZWFjaCA8Yi10YWI+IGZvdW5kIGNyZWF0ZSB0aGUgdGFiIGJ1dHRvbnNcblxuICAgIHZhciBidXR0b25zID0gdGFicy5tYXAoZnVuY3Rpb24gKHRhYiwgaW5kZXgpIHtcbiAgICAgIHZhciB0YWJJbmRleCA9IG51bGw7IC8vIEVuc3VyZSBhdCBsZWFzdCBvbmUgdGFiIGJ1dHRvbiBpcyBmb2N1c2FibGUgd2hlbiBrZXluYXYgZW5hYmxlZCAoaWYgcG9zc2libGUpXG5cbiAgICAgIGlmICghX3RoaXM5Lm5vS2V5TmF2KSB7XG4gICAgICAgIC8vIEJ1dHRvbnMgYXJlIG5vdCBpbiB0YWIgaW5kZXggdW5sZXNzIGFjdGl2ZSwgb3IgYSBmYWxsYmFjayB0YWJcbiAgICAgICAgdGFiSW5kZXggPSAtMTtcblxuICAgICAgICBpZiAoYWN0aXZlVGFiID09PSB0YWIgfHwgIWFjdGl2ZVRhYiAmJiBmYWxsYmFja1RhYiA9PT0gdGFiKSB7XG4gICAgICAgICAgLy8gUGxhY2UgdGFiIGJ1dHRvbiBpbiB0YWIgc2VxdWVuY2VcbiAgICAgICAgICB0YWJJbmRleCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGgoQlRhYkJ1dHRvbkhlbHBlciwge1xuICAgICAgICBrZXk6IHRhYi5fdWlkIHx8IGluZGV4LFxuICAgICAgICByZWY6ICdidXR0b25zJyxcbiAgICAgICAgLy8gTmVlZGVkIHRvIG1ha2UgYHRoaXMuJHJlZnMuYnV0dG9uc2AgYW4gYXJyYXlcbiAgICAgICAgcmVmSW5Gb3I6IHRydWUsXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgdGFiOiB0YWIsXG4gICAgICAgICAgdGFiczogdGFicyxcbiAgICAgICAgICBpZDogdGFiLmNvbnRyb2xsZWRCeSB8fCAodGFiLnNhZmVJZCA/IHRhYi5zYWZlSWQoXCJfQlZfdGFiX2J1dHRvbl9cIikgOiBudWxsKSxcbiAgICAgICAgICBjb250cm9sczogdGFiLnNhZmVJZCA/IHRhYi5zYWZlSWQoKSA6IG51bGwsXG4gICAgICAgICAgdGFiSW5kZXg6IHRhYkluZGV4LFxuICAgICAgICAgIHNldFNpemU6IHRhYnMubGVuZ3RoLFxuICAgICAgICAgIHBvc0luU2V0OiBpbmRleCArIDEsXG4gICAgICAgICAgbm9LZXlOYXY6IF90aGlzOS5ub0tleU5hdlxuICAgICAgICB9LFxuICAgICAgICBvbjoge1xuICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbiBjbGljayhldnQpIHtcbiAgICAgICAgICAgIF90aGlzOS5jbGlja1RhYih0YWIsIGV2dCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBmaXJzdDogX3RoaXM5LmZpcnN0VGFiLFxuICAgICAgICAgIHByZXY6IF90aGlzOS5wcmV2aW91c1RhYixcbiAgICAgICAgICBuZXh0OiBfdGhpczkubmV4dFRhYixcbiAgICAgICAgICBsYXN0OiBfdGhpczkubGFzdFRhYlxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTsgLy8gTmF2XG5cbiAgICB2YXIgbmF2ID0gaChCTmF2LCB7XG4gICAgICByZWY6ICduYXYnLFxuICAgICAgY2xhc3M6IHRoaXMubG9jYWxOYXZDbGFzcyxcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHJvbGU6ICd0YWJsaXN0JyxcbiAgICAgICAgaWQ6IHRoaXMuc2FmZUlkKCdfQlZfdGFiX2NvbnRyb2xzXycpXG4gICAgICB9LFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgZmlsbDogdGhpcy5maWxsLFxuICAgICAgICBqdXN0aWZpZWQ6IHRoaXMuanVzdGlmaWVkLFxuICAgICAgICBhbGlnbjogdGhpcy5hbGlnbixcbiAgICAgICAgdGFiczogIXRoaXMubm9OYXZTdHlsZSAmJiAhdGhpcy5waWxscyxcbiAgICAgICAgcGlsbHM6ICF0aGlzLm5vTmF2U3R5bGUgJiYgdGhpcy5waWxscyxcbiAgICAgICAgdmVydGljYWw6IHRoaXMudmVydGljYWwsXG4gICAgICAgIHNtYWxsOiB0aGlzLnNtYWxsLFxuICAgICAgICBjYXJkSGVhZGVyOiB0aGlzLmNhcmQgJiYgIXRoaXMudmVydGljYWxcbiAgICAgIH1cbiAgICB9LCBbdGhpcy5ub3JtYWxpemVTbG90KCd0YWJzLXN0YXJ0JykgfHwgaCgpLCBidXR0b25zLCB0aGlzLm5vcm1hbGl6ZVNsb3QoJ3RhYnMtZW5kJykgfHwgaCgpXSk7XG4gICAgbmF2ID0gaCgnZGl2Jywge1xuICAgICAga2V5OiAnYnYtdGFicy1uYXYnLFxuICAgICAgY2xhc3M6IFt7XG4gICAgICAgICdjYXJkLWhlYWRlcic6IHRoaXMuY2FyZCAmJiAhdGhpcy52ZXJ0aWNhbCAmJiAhdGhpcy5lbmQsXG4gICAgICAgICdjYXJkLWZvb3Rlcic6IHRoaXMuY2FyZCAmJiAhdGhpcy52ZXJ0aWNhbCAmJiB0aGlzLmVuZCxcbiAgICAgICAgJ2NvbC1hdXRvJzogdGhpcy52ZXJ0aWNhbFxuICAgICAgfSwgdGhpcy5uYXZXcmFwcGVyQ2xhc3NdXG4gICAgfSwgW25hdl0pO1xuICAgIHZhciBlbXB0eSA9IGgoKTtcblxuICAgIGlmICghdGFicyB8fCB0YWJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgZW1wdHkgPSBoKCdkaXYnLCB7XG4gICAgICAgIGtleTogJ2J2LWVtcHR5LXRhYicsXG4gICAgICAgIGNsYXNzOiBbJ3RhYi1wYW5lJywgJ2FjdGl2ZScsIHtcbiAgICAgICAgICAnY2FyZC1ib2R5JzogdGhpcy5jYXJkXG4gICAgICAgIH1dXG4gICAgICB9LCB0aGlzLm5vcm1hbGl6ZVNsb3QoJ2VtcHR5JykpO1xuICAgIH0gLy8gTWFpbiBjb250ZW50IHNlY3Rpb25cblxuXG4gICAgdmFyIGNvbnRlbnQgPSBoKCdkaXYnLCB7XG4gICAgICByZWY6ICd0YWJzQ29udGFpbmVyJyxcbiAgICAgIGtleTogJ2J2LXRhYnMtY29udGFpbmVyJyxcbiAgICAgIHN0YXRpY0NsYXNzOiAndGFiLWNvbnRlbnQnLFxuICAgICAgY2xhc3M6IFt7XG4gICAgICAgIGNvbDogdGhpcy52ZXJ0aWNhbFxuICAgICAgfSwgdGhpcy5jb250ZW50Q2xhc3NdLFxuICAgICAgYXR0cnM6IHtcbiAgICAgICAgaWQ6IHRoaXMuc2FmZUlkKCdfQlZfdGFiX2NvbnRhaW5lcl8nKVxuICAgICAgfVxuICAgIH0sIGNvbmNhdCh0aGlzLm5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnKSwgZW1wdHkpKTsgLy8gUmVuZGVyIGZpbmFsIG91dHB1dFxuXG4gICAgcmV0dXJuIGgodGhpcy50YWcsIHtcbiAgICAgIHN0YXRpY0NsYXNzOiAndGFicycsXG4gICAgICBjbGFzczoge1xuICAgICAgICByb3c6IHRoaXMudmVydGljYWwsXG4gICAgICAgICduby1ndXR0ZXJzJzogdGhpcy52ZXJ0aWNhbCAmJiB0aGlzLmNhcmRcbiAgICAgIH0sXG4gICAgICBhdHRyczoge1xuICAgICAgICBpZDogdGhpcy5zYWZlSWQoKVxuICAgICAgfVxuICAgIH0sIFt0aGlzLmVuZCA/IGNvbnRlbnQgOiBoKCksIFtuYXZdLCB0aGlzLmVuZCA/IGgoKSA6IGNvbnRlbnRdKTtcbiAgfVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJzL3RhYnMuanNcbi8vIG1vZHVsZSBpZCA9IDIxNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///214\n"); /***/ }), /* 215 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BVToastPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_plugins__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_warn__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__toast__ = __webpack_require__(91);\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 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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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 _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\n/**\n * Plugin for adding `$bvToast` property to all Vue instances\n */\n\n\n\n\n\n\n\n // --- Constants ---\n\nvar PROP_NAME = '$bvToast';\nvar PROP_NAME_PRIV = '_bv__toast'; // Base toast props that are allowed\n// Some may be ignored or overridden on some message boxes\n// Prop ID is allowed, but really only should be used for testing\n// We need to add it in explicitly as it comes from the `idMixin`\n\nvar BASE_PROPS = ['id'].concat(_toConsumableArray(Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"j\" /* keys */])(Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"k\" /* omit */])(__WEBPACK_IMPORTED_MODULE_7__toast__[\"b\" /* props */], ['static', 'visible'])))); // Map prop names to toast slot names\n\nvar propsToSlots = {\n toastContent: 'default',\n title: 'toast-title'\n}; // --- Utility methods ---\n// Method to filter only recognized props that are not undefined\n\nvar filterOptions = function filterOptions(options) {\n return BASE_PROPS.reduce(function (memo, key) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"n\" /* isUndefined */])(options[key])) {\n memo[key] = options[key];\n }\n\n return memo;\n }, {});\n}; // Method to install `$bvToast` VM injection\n\n\nvar plugin = function plugin(Vue) {\n // Create a private sub-component constructor that\n // extends BToast and self-destructs after hidden\n // @vue/component\n var BToastPop = Vue.extend({\n name: 'BToastPop',\n extends: __WEBPACK_IMPORTED_MODULE_7__toast__[\"a\" /* BToast */],\n destroyed: function destroyed() {\n // Make sure we not in document any more\n if (this.$el && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n },\n mounted: function mounted() {\n var self = this; // Self destruct handler\n\n var handleDestroy = function handleDestroy() {\n // Ensure the toast has been force hidden\n self.localShow = false;\n self.doRender = false;\n self.$nextTick(function () {\n self.$nextTick(function () {\n // In a `requestAF()` to release control back to application\n // and to allow the portal-target time to remove the content\n Object(__WEBPACK_IMPORTED_MODULE_2__utils_dom__[\"w\" /* requestAF */])(function () {\n self.$destroy();\n });\n });\n });\n }; // Self destruct if parent destroyed\n\n\n this.$parent.$once('hook:destroyed', handleDestroy); // Self destruct after hidden\n\n this.$once('hidden', handleDestroy); // Self destruct when toaster is destroyed\n\n this.listenOnRoot('bv::toaster::destroyed', function (toaster) {\n /* istanbul ignore next: hard to test */\n if (toaster === self.toaster) {\n handleDestroy();\n }\n });\n }\n }); // Private method to generate the on-demand toast\n\n var makeToast = function makeToast(props, $parent) {\n if (Object(__WEBPACK_IMPORTED_MODULE_6__utils_warn__[\"e\" /* warnNotClient */])(PROP_NAME)) {\n /* istanbul ignore next */\n return;\n } // Create an instance of `BToastPop` component\n\n\n var toast = new BToastPop({\n // We set parent as the local VM so these toasts can emit events on the\n // app `$root`, and it ensures `BToast` is destroyed when parent is destroyed\n parent: $parent,\n propsData: _objectSpread({}, filterOptions(Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])('BToast') || {}), {}, Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"k\" /* omit */])(props, Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"j\" /* keys */])(propsToSlots)), {\n // Props that can't be overridden\n static: false,\n visible: true\n })\n }); // Convert certain props to slots\n\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"j\" /* keys */])(propsToSlots).forEach(function (prop) {\n var value = props[prop];\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"n\" /* isUndefined */])(value)) {\n // Can be a string, or array of VNodes\n if (prop === 'title' && Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"m\" /* isString */])(value)) {\n // Special case for title if it is a string, we wrap in a <strong>\n value = [$parent.$createElement('strong', {\n class: 'mr-2'\n }, value)];\n }\n\n toast.$slots[propsToSlots[prop]] = Object(__WEBPACK_IMPORTED_MODULE_0__utils_array__[\"b\" /* concat */])(value);\n }\n }); // Create a mount point (a DIV) and mount it (which triggers the show)\n\n var div = document.createElement('div');\n document.body.appendChild(div);\n toast.$mount(div);\n }; // Declare BvToast instance property class\n\n\n var BvToast =\n /*#__PURE__*/\n function () {\n function BvToast(vm) {\n _classCallCheck(this, BvToast);\n\n // Assign the new properties to this instance\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"a\" /* assign */])(this, {\n _vm: vm,\n _root: vm.$root\n }); // Set these properties as read-only and non-enumerable\n\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"d\" /* defineProperties */])(this, {\n _vm: Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"l\" /* readonlyDescriptor */])(),\n _root: Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"l\" /* readonlyDescriptor */])()\n });\n } // --- Public Instance methods ---\n // Opens a user defined toast and returns immediately\n\n\n _createClass(BvToast, [{\n key: \"toast\",\n value: function toast(content) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!content || Object(__WEBPACK_IMPORTED_MODULE_6__utils_warn__[\"e\" /* warnNotClient */])(PROP_NAME)) {\n /* istanbul ignore next */\n return;\n }\n\n makeToast(_objectSpread({}, filterOptions(options), {\n toastContent: content\n }), this._vm);\n } // shows a `<b-toast>` component with the specified ID\n\n }, {\n key: \"show\",\n value: function show(id) {\n if (id) {\n this._root.$emit('bv::show::toast', id);\n }\n } // Hide a toast with specified ID, or if not ID all toasts\n\n }, {\n key: \"hide\",\n value: function hide() {\n var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n this._root.$emit('bv::hide::toast', id);\n }\n }]);\n\n return BvToast;\n }(); // Add our instance mixin\n\n\n Vue.mixin({\n beforeCreate: function beforeCreate() {\n // Because we need access to `$root` for `$emits`, and VM for parenting,\n // we have to create a fresh instance of `BvToast` for each VM\n this[PROP_NAME_PRIV] = new BvToast(this);\n }\n }); // Define our read-only `$bvToast` instance property\n // Placed in an if just in case in HMR mode\n // eslint-disable-next-line no-prototype-builtins\n\n if (!Vue.prototype.hasOwnProperty(PROP_NAME)) {\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"e\" /* defineProperty */])(Vue.prototype, PROP_NAME, {\n get: function get() {\n /* istanbul ignore next */\n if (!this || !this[PROP_NAME_PRIV]) {\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_warn__[\"b\" /* warn */])(\"'\".concat(PROP_NAME, \"' must be accessed from a Vue instance 'this' context\"));\n }\n\n return this[PROP_NAME_PRIV];\n }\n });\n }\n};\n\nvar BVToastPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_5__utils_plugins__[\"b\" /* pluginFactory */])({\n plugins: {\n plugin: plugin\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90b2FzdC9oZWxwZXJzL2J2LXRvYXN0LmpzPzM4YmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsaURBQWlELDBDQUEwQywwREFBMEQsRUFBRTs7QUFFdkosMkNBQTJDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQsMkRBQTJELEVBQUU7O0FBRTNULDZEQUE2RCxzRUFBc0UsOERBQThELG9CQUFvQjs7QUFFck4sMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUUvTSxrQ0FBa0MsaUZBQWlGOztBQUVuSCwrQkFBK0Isd0VBQXdFOztBQUV2RyxpQ0FBaUMsK0hBQStIOztBQUVoSyxrQ0FBa0MsMEJBQTBCLDhDQUE4QyxnQkFBZ0IsT0FBTyxrQkFBa0IsRUFBRSxhQUFhLEVBQUU7O0FBRXBLO0FBQ0E7QUFDQTtBQUM4QztBQUNhO0FBQ1o7QUFDZ0I7QUFDa0Q7QUFDMUQ7QUFDRztBQUNIOztBQUV2RDtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7O0FBRUEsa0RBQWtELG1FQUFJLENBQUMsbUVBQUksQ0FBQyxxREFBVSw0QkFBNEI7O0FBRWxHO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjs7QUFFQTtBQUNBO0FBQ0EsU0FBUywyRUFBVztBQUNwQjtBQUNBOztBQUVBO0FBQ0EsR0FBRyxJQUFJO0FBQ1AsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxzREFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0Esc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxRUFBUztBQUNyQjtBQUNBLGFBQWE7QUFDYixXQUFXO0FBQ1gsU0FBUztBQUNULFFBQVE7OztBQUdSLDBEQUEwRDs7QUFFMUQsMENBQTBDOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRyxFQUFFOztBQUVMO0FBQ0EsUUFBUSwwRUFBYTtBQUNyQjtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsZ0JBQWdCLGlGQUFrQixnQkFBZ0IsS0FBSyxFQUFFLG1FQUFJLFFBQVEsbUVBQUk7QUFDMUc7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUssRUFBRTs7QUFFUCxJQUFJLG1FQUFJO0FBQ1I7O0FBRUEsV0FBVywyRUFBVztBQUN0QjtBQUNBLGdDQUFnQyx3RUFBUTtBQUN4QztBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUEsMkNBQTJDLG9FQUFNO0FBQ2pEO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNLHFFQUFNO0FBQ1o7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVCxNQUFNLCtFQUFnQjtBQUN0QixhQUFhLGlGQUFrQjtBQUMvQixlQUFlLGlGQUFrQjtBQUNqQyxPQUFPO0FBQ1AsS0FBSztBQUNMOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx3QkFBd0IsMEVBQWE7QUFDckM7QUFDQTtBQUNBOztBQUVBLGtDQUFrQztBQUNsQztBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUCxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsR0FBRyxHQUFHOzs7QUFHTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7QUFDTDtBQUNBOztBQUVBO0FBQ0EsSUFBSSw2RUFBYztBQUNsQjtBQUNBO0FBQ0E7QUFDQSxVQUFVLGlFQUFJO0FBQ2Q7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVPO0FBQ1A7QUFDQSw2RUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMjE1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IHJldHVybiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5KGFycikgfHwgX25vbkl0ZXJhYmxlU3ByZWFkKCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2VcIik7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShpdGVyKSB7IGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGl0ZXIpIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpdGVyKSA9PT0gXCJbb2JqZWN0IEFyZ3VtZW50c11cIikgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH0gfVxuXG4vKipcbiAqIFBsdWdpbiBmb3IgYWRkaW5nIGAkYnZUb2FzdGAgcHJvcGVydHkgdG8gYWxsIFZ1ZSBpbnN0YW5jZXNcbiAqL1xuaW1wb3J0IHsgY29uY2F0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYXJyYXknO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY29uZmlnJztcbmltcG9ydCB7IHJlcXVlc3RBRiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyBpc1VuZGVmaW5lZCwgaXNTdHJpbmcgfSBmcm9tICcuLi8uLi8uLi91dGlscy9pbnNwZWN0JztcbmltcG9ydCB7IGFzc2lnbiwgZGVmaW5lUHJvcGVydGllcywgZGVmaW5lUHJvcGVydHksIGtleXMsIG9taXQsIHJlYWRvbmx5RGVzY3JpcHRvciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL29iamVjdCc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG5pbXBvcnQgeyB3YXJuLCB3YXJuTm90Q2xpZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvd2Fybic7XG5pbXBvcnQgeyBCVG9hc3QsIHByb3BzIGFzIHRvYXN0UHJvcHMgfSBmcm9tICcuLi90b2FzdCc7IC8vIC0tLSBDb25zdGFudHMgLS0tXG5cbnZhciBQUk9QX05BTUUgPSAnJGJ2VG9hc3QnO1xudmFyIFBST1BfTkFNRV9QUklWID0gJ19idl9fdG9hc3QnOyAvLyBCYXNlIHRvYXN0IHByb3BzIHRoYXQgYXJlIGFsbG93ZWRcbi8vIFNvbWUgbWF5IGJlIGlnbm9yZWQgb3Igb3ZlcnJpZGRlbiBvbiBzb21lIG1lc3NhZ2UgYm94ZXNcbi8vIFByb3AgSUQgaXMgYWxsb3dlZCwgYnV0IHJlYWxseSBvbmx5IHNob3VsZCBiZSB1c2VkIGZvciB0ZXN0aW5nXG4vLyBXZSBuZWVkIHRvIGFkZCBpdCBpbiBleHBsaWNpdGx5IGFzIGl0IGNvbWVzIGZyb20gdGhlIGBpZE1peGluYFxuXG52YXIgQkFTRV9QUk9QUyA9IFsnaWQnXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGtleXMob21pdCh0b2FzdFByb3BzLCBbJ3N0YXRpYycsICd2aXNpYmxlJ10pKSkpOyAvLyBNYXAgcHJvcCBuYW1lcyB0byB0b2FzdCBzbG90IG5hbWVzXG5cbnZhciBwcm9wc1RvU2xvdHMgPSB7XG4gIHRvYXN0Q29udGVudDogJ2RlZmF1bHQnLFxuICB0aXRsZTogJ3RvYXN0LXRpdGxlJ1xufTsgLy8gLS0tIFV0aWxpdHkgbWV0aG9kcyAtLS1cbi8vIE1ldGhvZCB0byBmaWx0ZXIgb25seSByZWNvZ25pemVkIHByb3BzIHRoYXQgYXJlIG5vdCB1bmRlZmluZWRcblxudmFyIGZpbHRlck9wdGlvbnMgPSBmdW5jdGlvbiBmaWx0ZXJPcHRpb25zKG9wdGlvbnMpIHtcbiAgcmV0dXJuIEJBU0VfUFJPUFMucmVkdWNlKGZ1bmN0aW9uIChtZW1vLCBrZXkpIHtcbiAgICBpZiAoIWlzVW5kZWZpbmVkKG9wdGlvbnNba2V5XSkpIHtcbiAgICAgIG1lbW9ba2V5XSA9IG9wdGlvbnNba2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtbztcbiAgfSwge30pO1xufTsgLy8gTWV0aG9kIHRvIGluc3RhbGwgYCRidlRvYXN0YCBWTSBpbmplY3Rpb25cblxuXG52YXIgcGx1Z2luID0gZnVuY3Rpb24gcGx1Z2luKFZ1ZSkge1xuICAvLyBDcmVhdGUgYSBwcml2YXRlIHN1Yi1jb21wb25lbnQgY29uc3RydWN0b3IgdGhhdFxuICAvLyBleHRlbmRzIEJUb2FzdCBhbmQgc2VsZi1kZXN0cnVjdHMgYWZ0ZXIgaGlkZGVuXG4gIC8vIEB2dWUvY29tcG9uZW50XG4gIHZhciBCVG9hc3RQb3AgPSBWdWUuZXh0ZW5kKHtcbiAgICBuYW1lOiAnQlRvYXN0UG9wJyxcbiAgICBleHRlbmRzOiBCVG9hc3QsXG4gICAgZGVzdHJveWVkOiBmdW5jdGlvbiBkZXN0cm95ZWQoKSB7XG4gICAgICAvLyBNYWtlIHN1cmUgd2Ugbm90IGluIGRvY3VtZW50IGFueSBtb3JlXG4gICAgICBpZiAodGhpcy4kZWwgJiYgdGhpcy4kZWwucGFyZW50Tm9kZSkge1xuICAgICAgICB0aGlzLiRlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuJGVsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7IC8vIFNlbGYgZGVzdHJ1Y3QgaGFuZGxlclxuXG4gICAgICB2YXIgaGFuZGxlRGVzdHJveSA9IGZ1bmN0aW9uIGhhbmRsZURlc3Ryb3koKSB7XG4gICAgICAgIC8vIEVuc3VyZSB0aGUgdG9hc3QgaGFzIGJlZW4gZm9yY2UgaGlkZGVuXG4gICAgICAgIHNlbGYubG9jYWxTaG93ID0gZmFsc2U7XG4gICAgICAgIHNlbGYuZG9SZW5kZXIgPSBmYWxzZTtcbiAgICAgICAgc2VsZi4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHNlbGYuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vIEluIGEgYHJlcXVlc3RBRigpYCB0byByZWxlYXNlIGNvbnRyb2wgYmFjayB0byBhcHBsaWNhdGlvblxuICAgICAgICAgICAgLy8gYW5kIHRvIGFsbG93IHRoZSBwb3J0YWwtdGFyZ2V0IHRpbWUgdG8gcmVtb3ZlIHRoZSBjb250ZW50XG4gICAgICAgICAgICByZXF1ZXN0QUYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICBzZWxmLiRkZXN0cm95KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9OyAvLyBTZWxmIGRlc3RydWN0IGlmIHBhcmVudCBkZXN0cm95ZWRcblxuXG4gICAgICB0aGlzLiRwYXJlbnQuJG9uY2UoJ2hvb2s6ZGVzdHJveWVkJywgaGFuZGxlRGVzdHJveSk7IC8vIFNlbGYgZGVzdHJ1Y3QgYWZ0ZXIgaGlkZGVuXG5cbiAgICAgIHRoaXMuJG9uY2UoJ2hpZGRlbicsIGhhbmRsZURlc3Ryb3kpOyAvLyBTZWxmIGRlc3RydWN0IHdoZW4gdG9hc3RlciBpcyBkZXN0cm95ZWRcblxuICAgICAgdGhpcy5saXN0ZW5PblJvb3QoJ2J2Ojp0b2FzdGVyOjpkZXN0cm95ZWQnLCBmdW5jdGlvbiAodG9hc3Rlcikge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogaGFyZCB0byB0ZXN0ICovXG4gICAgICAgIGlmICh0b2FzdGVyID09PSBzZWxmLnRvYXN0ZXIpIHtcbiAgICAgICAgICBoYW5kbGVEZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7IC8vIFByaXZhdGUgbWV0aG9kIHRvIGdlbmVyYXRlIHRoZSBvbi1kZW1hbmQgdG9hc3RcblxuICB2YXIgbWFrZVRvYXN0ID0gZnVuY3Rpb24gbWFrZVRvYXN0KHByb3BzLCAkcGFyZW50KSB7XG4gICAgaWYgKHdhcm5Ob3RDbGllbnQoUFJPUF9OQU1FKSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybjtcbiAgICB9IC8vIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiBgQlRvYXN0UG9wYCBjb21wb25lbnRcblxuXG4gICAgdmFyIHRvYXN0ID0gbmV3IEJUb2FzdFBvcCh7XG4gICAgICAvLyBXZSBzZXQgcGFyZW50IGFzIHRoZSBsb2NhbCBWTSBzbyB0aGVzZSB0b2FzdHMgY2FuIGVtaXQgZXZlbnRzIG9uIHRoZVxuICAgICAgLy8gYXBwIGAkcm9vdGAsIGFuZCBpdCBlbnN1cmVzIGBCVG9hc3RgIGlzIGRlc3Ryb3llZCB3aGVuIHBhcmVudCBpcyBkZXN0cm95ZWRcbiAgICAgIHBhcmVudDogJHBhcmVudCxcbiAgICAgIHByb3BzRGF0YTogX29iamVjdFNwcmVhZCh7fSwgZmlsdGVyT3B0aW9ucyhnZXRDb21wb25lbnRDb25maWcoJ0JUb2FzdCcpIHx8IHt9KSwge30sIG9taXQocHJvcHMsIGtleXMocHJvcHNUb1Nsb3RzKSksIHtcbiAgICAgICAgLy8gUHJvcHMgdGhhdCBjYW4ndCBiZSBvdmVycmlkZGVuXG4gICAgICAgIHN0YXRpYzogZmFsc2UsXG4gICAgICAgIHZpc2libGU6IHRydWVcbiAgICAgIH0pXG4gICAgfSk7IC8vIENvbnZlcnQgY2VydGFpbiBwcm9wcyB0byBzbG90c1xuXG4gICAga2V5cyhwcm9wc1RvU2xvdHMpLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgIHZhciB2YWx1ZSA9IHByb3BzW3Byb3BdO1xuXG4gICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgICAvLyBDYW4gYmUgYSBzdHJpbmcsIG9yIGFycmF5IG9mIFZOb2Rlc1xuICAgICAgICBpZiAocHJvcCA9PT0gJ3RpdGxlJyAmJiBpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHRpdGxlIGlmIGl0IGlzIGEgc3RyaW5nLCB3ZSB3cmFwIGluIGEgPHN0cm9uZz5cbiAgICAgICAgICB2YWx1ZSA9IFskcGFyZW50LiRjcmVhdGVFbGVtZW50KCdzdHJvbmcnLCB7XG4gICAgICAgICAgICBjbGFzczogJ21yLTInXG4gICAgICAgICAgfSwgdmFsdWUpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRvYXN0LiRzbG90c1twcm9wc1RvU2xvdHNbcHJvcF1dID0gY29uY2F0KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gQ3JlYXRlIGEgbW91bnQgcG9pbnQgKGEgRElWKSBhbmQgbW91bnQgaXQgKHdoaWNoIHRyaWdnZXJzIHRoZSBzaG93KVxuXG4gICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTtcbiAgICB0b2FzdC4kbW91bnQoZGl2KTtcbiAgfTsgLy8gRGVjbGFyZSBCdlRvYXN0IGluc3RhbmNlIHByb3BlcnR5IGNsYXNzXG5cblxuICB2YXIgQnZUb2FzdCA9XG4gIC8qI19fUFVSRV9fKi9cbiAgZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEJ2VG9hc3Qodm0pIHtcbiAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBCdlRvYXN0KTtcblxuICAgICAgLy8gQXNzaWduIHRoZSBuZXcgcHJvcGVydGllcyB0byB0aGlzIGluc3RhbmNlXG4gICAgICBhc3NpZ24odGhpcywge1xuICAgICAgICBfdm06IHZtLFxuICAgICAgICBfcm9vdDogdm0uJHJvb3RcbiAgICAgIH0pOyAvLyBTZXQgdGhlc2UgcHJvcGVydGllcyBhcyByZWFkLW9ubHkgYW5kIG5vbi1lbnVtZXJhYmxlXG5cbiAgICAgIGRlZmluZVByb3BlcnRpZXModGhpcywge1xuICAgICAgICBfdm06IHJlYWRvbmx5RGVzY3JpcHRvcigpLFxuICAgICAgICBfcm9vdDogcmVhZG9ubHlEZXNjcmlwdG9yKClcbiAgICAgIH0pO1xuICAgIH0gLy8gLS0tIFB1YmxpYyBJbnN0YW5jZSBtZXRob2RzIC0tLVxuICAgIC8vIE9wZW5zIGEgdXNlciBkZWZpbmVkIHRvYXN0IGFuZCByZXR1cm5zIGltbWVkaWF0ZWx5XG5cblxuICAgIF9jcmVhdGVDbGFzcyhCdlRvYXN0LCBbe1xuICAgICAga2V5OiBcInRvYXN0XCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gdG9hc3QoY29udGVudCkge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgICAgICAgaWYgKCFjb250ZW50IHx8IHdhcm5Ob3RDbGllbnQoUFJPUF9OQU1FKSkge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbWFrZVRvYXN0KF9vYmplY3RTcHJlYWQoe30sIGZpbHRlck9wdGlvbnMob3B0aW9ucyksIHtcbiAgICAgICAgICB0b2FzdENvbnRlbnQ6IGNvbnRlbnRcbiAgICAgICAgfSksIHRoaXMuX3ZtKTtcbiAgICAgIH0gLy8gc2hvd3MgYSBgPGItdG9hc3Q+YCBjb21wb25lbnQgd2l0aCB0aGUgc3BlY2lmaWVkIElEXG5cbiAgICB9LCB7XG4gICAgICBrZXk6IFwic2hvd1wiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHNob3coaWQpIHtcbiAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgdGhpcy5fcm9vdC4kZW1pdCgnYnY6OnNob3c6OnRvYXN0JywgaWQpO1xuICAgICAgICB9XG4gICAgICB9IC8vIEhpZGUgYSB0b2FzdCB3aXRoIHNwZWNpZmllZCBJRCwgb3IgaWYgbm90IElEIGFsbCB0b2FzdHNcblxuICAgIH0sIHtcbiAgICAgIGtleTogXCJoaWRlXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gaGlkZSgpIHtcbiAgICAgICAgdmFyIGlkID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBudWxsO1xuXG4gICAgICAgIHRoaXMuX3Jvb3QuJGVtaXQoJ2J2OjpoaWRlOjp0b2FzdCcsIGlkKTtcbiAgICAgIH1cbiAgICB9XSk7XG5cbiAgICByZXR1cm4gQnZUb2FzdDtcbiAgfSgpOyAvLyBBZGQgb3VyIGluc3RhbmNlIG1peGluXG5cblxuICBWdWUubWl4aW4oe1xuICAgIGJlZm9yZUNyZWF0ZTogZnVuY3Rpb24gYmVmb3JlQ3JlYXRlKCkge1xuICAgICAgLy8gQmVjYXVzZSB3ZSBuZWVkIGFjY2VzcyB0byBgJHJvb3RgIGZvciBgJGVtaXRzYCwgYW5kIFZNIGZvciBwYXJlbnRpbmcsXG4gICAgICAvLyB3ZSBoYXZlIHRvIGNyZWF0ZSBhIGZyZXNoIGluc3RhbmNlIG9mIGBCdlRvYXN0YCBmb3IgZWFjaCBWTVxuICAgICAgdGhpc1tQUk9QX05BTUVfUFJJVl0gPSBuZXcgQnZUb2FzdCh0aGlzKTtcbiAgICB9XG4gIH0pOyAvLyBEZWZpbmUgb3VyIHJlYWQtb25seSBgJGJ2VG9hc3RgIGluc3RhbmNlIHByb3BlcnR5XG4gIC8vIFBsYWNlZCBpbiBhbiBpZiBqdXN0IGluIGNhc2UgaW4gSE1SIG1vZGVcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuXG4gIGlmICghVnVlLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eShQUk9QX05BTUUpKSB7XG4gICAgZGVmaW5lUHJvcGVydHkoVnVlLnByb3RvdHlwZSwgUFJPUF9OQU1FLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgaWYgKCF0aGlzIHx8ICF0aGlzW1BST1BfTkFNRV9QUklWXSkge1xuICAgICAgICAgIHdhcm4oXCInXCIuY29uY2F0KFBST1BfTkFNRSwgXCInIG11c3QgYmUgYWNjZXNzZWQgZnJvbSBhIFZ1ZSBpbnN0YW5jZSAndGhpcycgY29udGV4dFwiKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpc1tQUk9QX05BTUVfUFJJVl07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCB2YXIgQlZUb2FzdFBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgcGx1Z2luczoge1xuICAgIHBsdWdpbjogcGx1Z2luXG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdG9hc3QvaGVscGVycy9idi10b2FzdC5qc1xuLy8gbW9kdWxlIGlkID0gMjE1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///215\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BTab; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mixins_id__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_bv_transition__ = __webpack_require__(30);\n\n\n\n // @vue/component\n\nvar BTab =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: 'BTab',\n mixins: [__WEBPACK_IMPORTED_MODULE_1__mixins_id__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__mixins_normalize_slot__[\"a\" /* default */]],\n inject: {\n bvTabs: {\n default: function _default() {\n return {\n // Don't set a tab index if not rendered inside <b-tabs>\n noKeyNav: true\n };\n }\n }\n },\n props: {\n active: {\n type: Boolean,\n default: false\n },\n tag: {\n type: String,\n default: 'div'\n },\n buttonId: {\n type: String,\n default: ''\n },\n title: {\n type: String,\n default: ''\n },\n titleItemClass: {\n // Sniffed by tabs.js and added to nav 'li.nav-item'\n type: [String, Array, Object],\n default: null\n },\n titleLinkClass: {\n // Sniffed by tabs.js and added to nav 'a.nav-link'\n type: [String, Array, Object],\n default: null\n },\n disabled: {\n type: Boolean,\n default: false\n },\n noBody: {\n type: Boolean,\n default: false\n },\n lazy: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n localActive: this.active && !this.disabled,\n show: false\n };\n },\n computed: {\n tabClasses: function tabClasses() {\n return [{\n active: this.localActive,\n disabled: this.disabled,\n 'card-body': this.bvTabs.card && !this.noBody\n }, // Apply <b-tabs> `activeTabClass` styles when this tab is active\n this.localActive ? this.bvTabs.activeTabClass : null];\n },\n controlledBy: function controlledBy() {\n return this.buttonId || this.safeId('__BV_tab_button__');\n },\n computedNoFade: function computedNoFade() {\n return !(this.bvTabs.fade || false);\n },\n computedLazy: function computedLazy() {\n return this.bvTabs.lazy || this.lazy;\n },\n _isTab: function _isTab() {\n // For parent sniffing of child\n return true;\n }\n },\n watch: {\n localActive: function localActive(newVal, oldVal) {\n // Make 'active' prop work with `.sync` modifier\n this.$emit('update:active', newVal);\n },\n active: function active(newVal, oldVal) {\n if (newVal !== oldVal) {\n if (newVal) {\n // If activated post mount\n this.activate();\n } else {\n /* istanbul ignore next */\n if (!this.deactivate()) {\n // Tab couldn't be deactivated, so we reset the synced active prop\n // Deactivation will fail if no other tabs to activate\n this.$emit('update:active', this.localActive);\n }\n }\n }\n },\n disabled: function disabled(newVal, oldVal) {\n if (newVal !== oldVal) {\n if (newVal && this.localActive && this.bvTabs.firstTab) {\n this.localActive = false;\n this.bvTabs.firstTab();\n }\n }\n }\n },\n mounted: function mounted() {\n // Inform b-tabs of our presence\n this.registerTab(); // Initially show on mount if active and not disabled\n\n this.show = this.localActive;\n },\n updated: function updated() {\n // Force the tab button content to update (since slots are not reactive)\n // Only done if we have a title slot, as the title prop is reactive\n if (this.hasNormalizedSlot('title') && this.bvTabs.updateButton) {\n this.bvTabs.updateButton(this);\n }\n },\n destroyed: function destroyed() {\n // inform b-tabs of our departure\n this.unregisterTab();\n },\n methods: {\n // Private methods\n registerTab: function registerTab() {\n // Inform `b-tabs` of our presence\n this.bvTabs.registerTab && this.bvTabs.registerTab(this);\n },\n unregisterTab: function unregisterTab() {\n // Inform `b-tabs` of our departure\n this.bvTabs.unregisterTab && this.bvTabs.unregisterTab(this);\n },\n // Public methods\n activate: function activate() {\n if (this.bvTabs.activateTab && !this.disabled) {\n return this.bvTabs.activateTab(this);\n } else {\n // Not inside a <b-tabs> component or tab is disabled\n return false;\n }\n },\n deactivate: function deactivate() {\n if (this.bvTabs.deactivateTab && this.localActive) {\n return this.bvTabs.deactivateTab(this);\n } else {\n // Not inside a <b-tabs> component or not active to begin with\n return false;\n }\n }\n },\n render: function render(h) {\n var content = h(this.tag, {\n ref: 'panel',\n staticClass: 'tab-pane',\n class: this.tabClasses,\n directives: [{\n name: 'show',\n rawName: 'v-show',\n value: this.localActive,\n expression: 'localActive'\n }],\n attrs: {\n role: 'tabpanel',\n id: this.safeId(),\n tabindex: this.localActive && !this.bvTabs.noKeyNav ? '-1' : null,\n 'aria-hidden': this.localActive ? 'false' : 'true',\n 'aria-labelledby': this.controlledBy || null\n }\n }, // Render content lazily if requested\n [this.localActive || !this.computedLazy ? this.normalizeSlot('default') : h()]);\n return h(__WEBPACK_IMPORTED_MODULE_3__utils_bv_transition__[\"b\" /* default */], {\n props: {\n mode: 'out-in',\n noFade: this.computedNoFade\n }\n }, [content]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJzL3RhYi5qcz8xNmU3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDSTtBQUN1QjtBQUNSOztBQUU5QztBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsMkRBQU8sRUFBRSx1RUFBa0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHVCQUF1Qjs7QUFFdkI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsYUFBYSxxRUFBWTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLENBQUMiLCJmaWxlIjoiMjE1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICcuLi8uLi91dGlscy92dWUnO1xuaW1wb3J0IGlkTWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL2lkJztcbmltcG9ydCBub3JtYWxpemVTbG90TWl4aW4gZnJvbSAnLi4vLi4vbWl4aW5zL25vcm1hbGl6ZS1zbG90JztcbmltcG9ydCBCVlRyYW5zaXRpb24gZnJvbSAnLi4vLi4vdXRpbHMvYnYtdHJhbnNpdGlvbic7IC8vIEB2dWUvY29tcG9uZW50XG5cbmV4cG9ydCB2YXIgQlRhYiA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogJ0JUYWInLFxuICBtaXhpbnM6IFtpZE1peGluLCBub3JtYWxpemVTbG90TWl4aW5dLFxuICBpbmplY3Q6IHtcbiAgICBidlRhYnM6IHtcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC8vIERvbid0IHNldCBhIHRhYiBpbmRleCBpZiBub3QgcmVuZGVyZWQgaW5zaWRlIDxiLXRhYnM+XG4gICAgICAgICAgbm9LZXlOYXY6IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHByb3BzOiB7XG4gICAgYWN0aXZlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHRhZzoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2RpdidcbiAgICB9LFxuICAgIGJ1dHRvbklkOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgdGl0bGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcnXG4gICAgfSxcbiAgICB0aXRsZUl0ZW1DbGFzczoge1xuICAgICAgLy8gU25pZmZlZCBieSB0YWJzLmpzIGFuZCBhZGRlZCB0byBuYXYgJ2xpLm5hdi1pdGVtJ1xuICAgICAgdHlwZTogW1N0cmluZywgQXJyYXksIE9iamVjdF0sXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICB0aXRsZUxpbmtDbGFzczoge1xuICAgICAgLy8gU25pZmZlZCBieSB0YWJzLmpzIGFuZCBhZGRlZCB0byBuYXYgJ2EubmF2LWxpbmsnXG4gICAgICB0eXBlOiBbU3RyaW5nLCBBcnJheSwgT2JqZWN0XSxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIGRpc2FibGVkOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIG5vQm9keToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBsYXp5OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvY2FsQWN0aXZlOiB0aGlzLmFjdGl2ZSAmJiAhdGhpcy5kaXNhYmxlZCxcbiAgICAgIHNob3c6IGZhbHNlXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICB0YWJDbGFzc2VzOiBmdW5jdGlvbiB0YWJDbGFzc2VzKCkge1xuICAgICAgcmV0dXJuIFt7XG4gICAgICAgIGFjdGl2ZTogdGhpcy5sb2NhbEFjdGl2ZSxcbiAgICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQsXG4gICAgICAgICdjYXJkLWJvZHknOiB0aGlzLmJ2VGFicy5jYXJkICYmICF0aGlzLm5vQm9keVxuICAgICAgfSwgLy8gQXBwbHkgPGItdGFicz4gYGFjdGl2ZVRhYkNsYXNzYCBzdHlsZXMgd2hlbiB0aGlzIHRhYiBpcyBhY3RpdmVcbiAgICAgIHRoaXMubG9jYWxBY3RpdmUgPyB0aGlzLmJ2VGFicy5hY3RpdmVUYWJDbGFzcyA6IG51bGxdO1xuICAgIH0sXG4gICAgY29udHJvbGxlZEJ5OiBmdW5jdGlvbiBjb250cm9sbGVkQnkoKSB7XG4gICAgICByZXR1cm4gdGhpcy5idXR0b25JZCB8fCB0aGlzLnNhZmVJZCgnX19CVl90YWJfYnV0dG9uX18nKTtcbiAgICB9LFxuICAgIGNvbXB1dGVkTm9GYWRlOiBmdW5jdGlvbiBjb21wdXRlZE5vRmFkZSgpIHtcbiAgICAgIHJldHVybiAhKHRoaXMuYnZUYWJzLmZhZGUgfHwgZmFsc2UpO1xuICAgIH0sXG4gICAgY29tcHV0ZWRMYXp5OiBmdW5jdGlvbiBjb21wdXRlZExhenkoKSB7XG4gICAgICByZXR1cm4gdGhpcy5idlRhYnMubGF6eSB8fCB0aGlzLmxhenk7XG4gICAgfSxcbiAgICBfaXNUYWI6IGZ1bmN0aW9uIF9pc1RhYigpIHtcbiAgICAgIC8vIEZvciBwYXJlbnQgc25pZmZpbmcgb2YgY2hpbGRcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBsb2NhbEFjdGl2ZTogZnVuY3Rpb24gbG9jYWxBY3RpdmUobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIC8vIE1ha2UgJ2FjdGl2ZScgcHJvcCB3b3JrIHdpdGggYC5zeW5jYCBtb2RpZmllclxuICAgICAgdGhpcy4kZW1pdCgndXBkYXRlOmFjdGl2ZScsIG5ld1ZhbCk7XG4gICAgfSxcbiAgICBhY3RpdmU6IGZ1bmN0aW9uIGFjdGl2ZShuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgaWYgKG5ld1ZhbCAhPT0gb2xkVmFsKSB7XG4gICAgICAgIGlmIChuZXdWYWwpIHtcbiAgICAgICAgICAvLyBJZiBhY3RpdmF0ZWQgcG9zdCBtb3VudFxuICAgICAgICAgIHRoaXMuYWN0aXZhdGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgIGlmICghdGhpcy5kZWFjdGl2YXRlKCkpIHtcbiAgICAgICAgICAgIC8vIFRhYiBjb3VsZG4ndCBiZSBkZWFjdGl2YXRlZCwgc28gd2UgcmVzZXQgdGhlIHN5bmNlZCBhY3RpdmUgcHJvcFxuICAgICAgICAgICAgLy8gRGVhY3RpdmF0aW9uIHdpbGwgZmFpbCBpZiBubyBvdGhlciB0YWJzIHRvIGFjdGl2YXRlXG4gICAgICAgICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6YWN0aXZlJywgdGhpcy5sb2NhbEFjdGl2ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBkaXNhYmxlZDogZnVuY3Rpb24gZGlzYWJsZWQobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIGlmIChuZXdWYWwgIT09IG9sZFZhbCkge1xuICAgICAgICBpZiAobmV3VmFsICYmIHRoaXMubG9jYWxBY3RpdmUgJiYgdGhpcy5idlRhYnMuZmlyc3RUYWIpIHtcbiAgICAgICAgICB0aGlzLmxvY2FsQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5idlRhYnMuZmlyc3RUYWIoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICAvLyBJbmZvcm0gYi10YWJzIG9mIG91ciBwcmVzZW5jZVxuICAgIHRoaXMucmVnaXN0ZXJUYWIoKTsgLy8gSW5pdGlhbGx5IHNob3cgb24gbW91bnQgaWYgYWN0aXZlIGFuZCBub3QgZGlzYWJsZWRcblxuICAgIHRoaXMuc2hvdyA9IHRoaXMubG9jYWxBY3RpdmU7XG4gIH0sXG4gIHVwZGF0ZWQ6IGZ1bmN0aW9uIHVwZGF0ZWQoKSB7XG4gICAgLy8gRm9yY2UgdGhlIHRhYiBidXR0b24gY29udGVudCB0byB1cGRhdGUgKHNpbmNlIHNsb3RzIGFyZSBub3QgcmVhY3RpdmUpXG4gICAgLy8gT25seSBkb25lIGlmIHdlIGhhdmUgYSB0aXRsZSBzbG90LCBhcyB0aGUgdGl0bGUgcHJvcCBpcyByZWFjdGl2ZVxuICAgIGlmICh0aGlzLmhhc05vcm1hbGl6ZWRTbG90KCd0aXRsZScpICYmIHRoaXMuYnZUYWJzLnVwZGF0ZUJ1dHRvbikge1xuICAgICAgdGhpcy5idlRhYnMudXBkYXRlQnV0dG9uKHRoaXMpO1xuICAgIH1cbiAgfSxcbiAgZGVzdHJveWVkOiBmdW5jdGlvbiBkZXN0cm95ZWQoKSB7XG4gICAgLy8gaW5mb3JtIGItdGFicyBvZiBvdXIgZGVwYXJ0dXJlXG4gICAgdGhpcy51bnJlZ2lzdGVyVGFiKCk7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICAvLyBQcml2YXRlIG1ldGhvZHNcbiAgICByZWdpc3RlclRhYjogZnVuY3Rpb24gcmVnaXN0ZXJUYWIoKSB7XG4gICAgICAvLyBJbmZvcm0gYGItdGFic2Agb2Ygb3VyIHByZXNlbmNlXG4gICAgICB0aGlzLmJ2VGFicy5yZWdpc3RlclRhYiAmJiB0aGlzLmJ2VGFicy5yZWdpc3RlclRhYih0aGlzKTtcbiAgICB9LFxuICAgIHVucmVnaXN0ZXJUYWI6IGZ1bmN0aW9uIHVucmVnaXN0ZXJUYWIoKSB7XG4gICAgICAvLyBJbmZvcm0gYGItdGFic2Agb2Ygb3VyIGRlcGFydHVyZVxuICAgICAgdGhpcy5idlRhYnMudW5yZWdpc3RlclRhYiAmJiB0aGlzLmJ2VGFicy51bnJlZ2lzdGVyVGFiKHRoaXMpO1xuICAgIH0sXG4gICAgLy8gUHVibGljIG1ldGhvZHNcbiAgICBhY3RpdmF0ZTogZnVuY3Rpb24gYWN0aXZhdGUoKSB7XG4gICAgICBpZiAodGhpcy5idlRhYnMuYWN0aXZhdGVUYWIgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnZUYWJzLmFjdGl2YXRlVGFiKHRoaXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTm90IGluc2lkZSBhIDxiLXRhYnM+IGNvbXBvbmVudCBvciB0YWIgaXMgZGlzYWJsZWRcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAgZGVhY3RpdmF0ZTogZnVuY3Rpb24gZGVhY3RpdmF0ZSgpIHtcbiAgICAgIGlmICh0aGlzLmJ2VGFicy5kZWFjdGl2YXRlVGFiICYmIHRoaXMubG9jYWxBY3RpdmUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnZUYWJzLmRlYWN0aXZhdGVUYWIodGhpcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBOb3QgaW5zaWRlIGEgPGItdGFicz4gY29tcG9uZW50IG9yIG5vdCBhY3RpdmUgdG8gYmVnaW4gd2l0aFxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyIGNvbnRlbnQgPSBoKHRoaXMudGFnLCB7XG4gICAgICByZWY6ICdwYW5lbCcsXG4gICAgICBzdGF0aWNDbGFzczogJ3RhYi1wYW5lJyxcbiAgICAgIGNsYXNzOiB0aGlzLnRhYkNsYXNzZXMsXG4gICAgICBkaXJlY3RpdmVzOiBbe1xuICAgICAgICBuYW1lOiAnc2hvdycsXG4gICAgICAgIHJhd05hbWU6ICd2LXNob3cnLFxuICAgICAgICB2YWx1ZTogdGhpcy5sb2NhbEFjdGl2ZSxcbiAgICAgICAgZXhwcmVzc2lvbjogJ2xvY2FsQWN0aXZlJ1xuICAgICAgfV0sXG4gICAgICBhdHRyczoge1xuICAgICAgICByb2xlOiAndGFicGFuZWwnLFxuICAgICAgICBpZDogdGhpcy5zYWZlSWQoKSxcbiAgICAgICAgdGFiaW5kZXg6IHRoaXMubG9jYWxBY3RpdmUgJiYgIXRoaXMuYnZUYWJzLm5vS2V5TmF2ID8gJy0xJyA6IG51bGwsXG4gICAgICAgICdhcmlhLWhpZGRlbic6IHRoaXMubG9jYWxBY3RpdmUgPyAnZmFsc2UnIDogJ3RydWUnLFxuICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogdGhpcy5jb250cm9sbGVkQnkgfHwgbnVsbFxuICAgICAgfVxuICAgIH0sIC8vIFJlbmRlciBjb250ZW50IGxhemlseSBpZiByZXF1ZXN0ZWRcbiAgICBbdGhpcy5sb2NhbEFjdGl2ZSB8fCAhdGhpcy5jb21wdXRlZExhenkgPyB0aGlzLm5vcm1hbGl6ZVNsb3QoJ2RlZmF1bHQnKSA6IGgoKV0pO1xuICAgIHJldHVybiBoKEJWVHJhbnNpdGlvbiwge1xuICAgICAgcHJvcHM6IHtcbiAgICAgICAgbW9kZTogJ291dC1pbicsXG4gICAgICAgIG5vRmFkZTogdGhpcy5jb21wdXRlZE5vRmFkZVxuICAgICAgfVxuICAgIH0sIFtjb250ZW50XSk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdGFicy90YWIuanNcbi8vIG1vZHVsZSBpZCA9IDIxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///215\n"); /***/ }), /* 216 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("\n /*! \n * portal-vue © Thorsten Lünborg, 2019 \n * \n * Version: 2.1.6\n * \n * LICENCE: MIT \n * \n * https://github.com/linusborg/portal-vue\n * \n */\n\n\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Vue = _interopDefault(__webpack_require__(50));\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar inBrowser = typeof window !== 'undefined';\nfunction freeze(item) {\n if (Array.isArray(item) || _typeof(item) === 'object') {\n return Object.freeze(item);\n }\n\n return item;\n}\nfunction combinePassengers(transports) {\n var slotProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return transports.reduce(function (passengers, transport) {\n var temp = transport.passengers[0];\n var newPassengers = typeof temp === 'function' ? temp(slotProps) : transport.passengers;\n return passengers.concat(newPassengers);\n }, []);\n}\nfunction stableSort(array, compareFn) {\n return array.map(function (v, idx) {\n return [idx, v];\n }).sort(function (a, b) {\n return compareFn(a[1], b[1]) || a[0] - b[0];\n }).map(function (c) {\n return c[1];\n });\n}\nfunction pick(obj, keys) {\n return keys.reduce(function (acc, key) {\n if (obj.hasOwnProperty(key)) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\n\nvar transports = {};\nvar targets = {};\nvar sources = {};\nvar Wormhole = Vue.extend({\n data: function data() {\n return {\n transports: transports,\n targets: targets,\n sources: sources,\n trackInstances: inBrowser\n };\n },\n methods: {\n open: function open(transport) {\n if (!inBrowser) return;\n var to = transport.to,\n from = transport.from,\n passengers = transport.passengers,\n _transport$order = transport.order,\n order = _transport$order === void 0 ? Infinity : _transport$order;\n if (!to || !from || !passengers) return;\n var newTransport = {\n to: to,\n from: from,\n passengers: freeze(passengers),\n order: order\n };\n var keys = Object.keys(this.transports);\n\n if (keys.indexOf(to) === -1) {\n Vue.set(this.transports, to, []);\n }\n\n var currentIndex = this.$_getTransportIndex(newTransport); // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n\n var newTransports = this.transports[to].slice(0);\n\n if (currentIndex === -1) {\n newTransports.push(newTransport);\n } else {\n newTransports[currentIndex] = newTransport;\n }\n\n this.transports[to] = stableSort(newTransports, function (a, b) {\n return a.order - b.order;\n });\n },\n close: function close(transport) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var to = transport.to,\n from = transport.from;\n if (!to || !from && force === false) return;\n\n if (!this.transports[to]) {\n return;\n }\n\n if (force) {\n this.transports[to] = [];\n } else {\n var index = this.$_getTransportIndex(transport);\n\n if (index >= 0) {\n // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n var newTransports = this.transports[to].slice(0);\n newTransports.splice(index, 1);\n this.transports[to] = newTransports;\n }\n }\n },\n registerTarget: function registerTarget(target, vm, force) {\n if (!inBrowser) return;\n\n if (this.trackInstances && !force && this.targets[target]) {\n console.warn(\"[portal-vue]: Target \".concat(target, \" already exists\"));\n }\n\n this.$set(this.targets, target, Object.freeze([vm]));\n },\n unregisterTarget: function unregisterTarget(target) {\n this.$delete(this.targets, target);\n },\n registerSource: function registerSource(source, vm, force) {\n if (!inBrowser) return;\n\n if (this.trackInstances && !force && this.sources[source]) {\n console.warn(\"[portal-vue]: source \".concat(source, \" already exists\"));\n }\n\n this.$set(this.sources, source, Object.freeze([vm]));\n },\n unregisterSource: function unregisterSource(source) {\n this.$delete(this.sources, source);\n },\n hasTarget: function hasTarget(to) {\n return !!(this.targets[to] && this.targets[to][0]);\n },\n hasSource: function hasSource(to) {\n return !!(this.sources[to] && this.sources[to][0]);\n },\n hasContentFor: function hasContentFor(to) {\n return !!this.transports[to] && !!this.transports[to].length;\n },\n // Internal\n $_getTransportIndex: function $_getTransportIndex(_ref) {\n var to = _ref.to,\n from = _ref.from;\n\n for (var i in this.transports[to]) {\n if (this.transports[to][i].from === from) {\n return +i;\n }\n }\n\n return -1;\n }\n }\n});\nvar wormhole = new Wormhole(transports);\n\nvar _id = 1;\nvar Portal = Vue.extend({\n name: 'portal',\n props: {\n disabled: {\n type: Boolean\n },\n name: {\n type: String,\n default: function _default() {\n return String(_id++);\n }\n },\n order: {\n type: Number,\n default: 0\n },\n slim: {\n type: Boolean\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n },\n to: {\n type: String,\n default: function _default() {\n return String(Math.round(Math.random() * 10000000));\n }\n }\n },\n created: function created() {\n var _this = this;\n\n this.$nextTick(function () {\n wormhole.registerSource(_this.name, _this);\n });\n },\n mounted: function mounted() {\n if (!this.disabled) {\n this.sendUpdate();\n }\n },\n updated: function updated() {\n if (this.disabled) {\n this.clear();\n } else {\n this.sendUpdate();\n }\n },\n beforeDestroy: function beforeDestroy() {\n wormhole.unregisterSource(this.name);\n this.clear();\n },\n watch: {\n to: function to(newValue, oldValue) {\n oldValue && oldValue !== newValue && this.clear(oldValue);\n this.sendUpdate();\n }\n },\n methods: {\n clear: function clear(target) {\n var closer = {\n from: this.name,\n to: target || this.to\n };\n wormhole.close(closer);\n },\n normalizeSlots: function normalizeSlots() {\n return this.$scopedSlots.default ? [this.$scopedSlots.default] : this.$slots.default;\n },\n normalizeOwnChildren: function normalizeOwnChildren(children) {\n return typeof children === 'function' ? children(this.slotProps) : children;\n },\n sendUpdate: function sendUpdate() {\n var slotContent = this.normalizeSlots();\n\n if (slotContent) {\n var transport = {\n from: this.name,\n to: this.to,\n passengers: _toConsumableArray(slotContent),\n order: this.order\n };\n wormhole.open(transport);\n } else {\n this.clear();\n }\n }\n },\n render: function render(h) {\n var children = this.$slots.default || this.$scopedSlots.default || [];\n var Tag = this.tag;\n\n if (children && this.disabled) {\n return children.length <= 1 && this.slim ? this.normalizeOwnChildren(children)[0] : h(Tag, [this.normalizeOwnChildren(children)]);\n } else {\n return this.slim ? h() : h(Tag, {\n class: {\n 'v-portal': true\n },\n style: {\n display: 'none'\n },\n key: 'v-portal-placeholder'\n });\n }\n }\n});\n\nvar PortalTarget = Vue.extend({\n name: 'portalTarget',\n props: {\n multiple: {\n type: Boolean,\n default: false\n },\n name: {\n type: String,\n required: true\n },\n slim: {\n type: Boolean,\n default: false\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'div'\n },\n transition: {\n type: [String, Object, Function]\n }\n },\n data: function data() {\n return {\n transports: wormhole.transports,\n firstRender: true\n };\n },\n created: function created() {\n var _this = this;\n\n this.$nextTick(function () {\n wormhole.registerTarget(_this.name, _this);\n });\n },\n watch: {\n ownTransports: function ownTransports() {\n this.$emit('change', this.children().length > 0);\n },\n name: function name(newVal, oldVal) {\n /**\r\n * TODO\r\n * This should warn as well ...\r\n */\n wormhole.unregisterTarget(oldVal);\n wormhole.registerTarget(newVal, this);\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n if (this.transition) {\n this.$nextTick(function () {\n // only when we have a transition, because it causes a re-render\n _this2.firstRender = false;\n });\n }\n },\n beforeDestroy: function beforeDestroy() {\n wormhole.unregisterTarget(this.name);\n },\n computed: {\n ownTransports: function ownTransports() {\n var transports = this.transports[this.name] || [];\n\n if (this.multiple) {\n return transports;\n }\n\n return transports.length === 0 ? [] : [transports[transports.length - 1]];\n },\n passengers: function passengers() {\n return combinePassengers(this.ownTransports, this.slotProps);\n }\n },\n methods: {\n // can't be a computed prop because it has to \"react\" to $slot changes.\n children: function children() {\n return this.passengers.length !== 0 ? this.passengers : this.$scopedSlots.default ? this.$scopedSlots.default(this.slotProps) : this.$slots.default || [];\n },\n // can't be a computed prop because it has to \"react\" to this.children().\n noWrapper: function noWrapper() {\n var noWrapper = this.slim && !this.transition;\n\n if (noWrapper && this.children().length > 1) {\n console.warn('[portal-vue]: PortalTarget with `slim` option received more than one child element.');\n }\n\n return noWrapper;\n }\n },\n render: function render(h) {\n var noWrapper = this.noWrapper();\n var children = this.children();\n var Tag = this.transition || this.tag;\n return noWrapper ? children[0] : this.slim && !Tag ? h() : h(Tag, {\n props: {\n // if we have a transition component, pass the tag if it exists\n tag: this.transition && this.tag ? this.tag : undefined\n },\n class: {\n 'vue-portal-target': true\n }\n }, children);\n }\n});\n\nvar _id$1 = 0;\nvar portalProps = ['disabled', 'name', 'order', 'slim', 'slotProps', 'tag', 'to'];\nvar targetProps = ['multiple', 'transition'];\nvar MountingPortal = Vue.extend({\n name: 'MountingPortal',\n inheritAttrs: false,\n props: {\n append: {\n type: [Boolean, String]\n },\n bail: {\n type: Boolean\n },\n mountTo: {\n type: String,\n required: true\n },\n // Portal\n disabled: {\n type: Boolean\n },\n // name for the portal\n name: {\n type: String,\n default: function _default() {\n return 'mounted_' + String(_id$1++);\n }\n },\n order: {\n type: Number,\n default: 0\n },\n slim: {\n type: Boolean\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n },\n // name for the target\n to: {\n type: String,\n default: function _default() {\n return String(Math.round(Math.random() * 10000000));\n }\n },\n // Target\n multiple: {\n type: Boolean,\n default: false\n },\n targetSlim: {\n type: Boolean\n },\n targetSlotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n targetTag: {\n type: String,\n default: 'div'\n },\n transition: {\n type: [String, Object, Function]\n }\n },\n created: function created() {\n if (typeof document === 'undefined') return;\n var el = document.querySelector(this.mountTo);\n\n if (!el) {\n console.error(\"[portal-vue]: Mount Point '\".concat(this.mountTo, \"' not found in document\"));\n return;\n }\n\n var props = this.$props; // Target already exists\n\n if (wormhole.targets[props.name]) {\n if (props.bail) {\n console.warn(\"[portal-vue]: Target \".concat(props.name, \" is already mounted.\\n Aborting because 'bail: true' is set\"));\n } else {\n this.portalTarget = wormhole.targets[props.name];\n }\n\n return;\n }\n\n var append = props.append;\n\n if (append) {\n var type = typeof append === 'string' ? append : 'DIV';\n var mountEl = document.createElement(type);\n el.appendChild(mountEl);\n el = mountEl;\n } // get props for target from $props\n // we have to rename a few of them\n\n\n var _props = pick(this.$props, targetProps);\n\n _props.slim = this.targetSlim;\n _props.tag = this.targetTag;\n _props.slotProps = this.targetSlotProps;\n _props.name = this.to;\n this.portalTarget = new PortalTarget({\n el: el,\n parent: this.$parent || this,\n propsData: _props\n });\n },\n beforeDestroy: function beforeDestroy() {\n var target = this.portalTarget;\n\n if (this.append) {\n var el = target.$el;\n el.parentNode.removeChild(el);\n }\n\n target.$destroy();\n },\n render: function render(h) {\n if (!this.portalTarget) {\n console.warn(\"[portal-vue] Target wasn't mounted\");\n return h();\n } // if there's no \"manual\" scoped slot, so we create a <Portal> ourselves\n\n\n if (!this.$scopedSlots.manual) {\n var props = pick(this.$props, portalProps);\n return h(Portal, {\n props: props,\n attrs: this.$attrs,\n on: this.$listeners,\n scopedSlots: this.$scopedSlots\n }, this.$slots.default);\n } // else, we render the scoped slot\n\n\n var content = this.$scopedSlots.manual({\n to: this.to\n }); // if user used <template> for the scoped slot\n // content will be an array\n\n if (Array.isArray(content)) {\n content = content[0];\n }\n\n if (!content) return h();\n return content;\n }\n});\n\nfunction install(Vue$$1) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Vue$$1.component(options.portalName || 'Portal', Portal);\n Vue$$1.component(options.portalTargetName || 'PortalTarget', PortalTarget);\n Vue$$1.component(options.MountingPortalName || 'MountingPortal', MountingPortal);\n}\n\nvar index = {\n install: install\n};\n\nexports.default = index;\nexports.Portal = Portal;\nexports.PortalTarget = PortalTarget;\nexports.MountingPortal = MountingPortal;\nexports.Wormhole = wormhole;\n//# sourceMappingURL=portal-vue.common.js.map\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcG9ydGFsLXZ1ZS9kaXN0L3BvcnRhbC12dWUuY29tbW9uLmpzPzRkN2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVhOztBQUViLDhDQUE4QyxjQUFjOztBQUU1RCwrQkFBK0IsaUZBQWlGOztBQUVoSCwwQkFBMEIsbUJBQU8sQ0FBQyxFQUFLOztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpREFBaUQsZ0JBQWdCOztBQUVqRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRyxJQUFJO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsZ0VBQWdFOztBQUVoRTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRCQUE0Qjs7QUFFNUI7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLEtBQUssRUFBRTtBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjIxNi5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuIC8qISBcbiAgKiBwb3J0YWwtdnVlIMKpIFRob3JzdGVuIEzDvG5ib3JnLCAyMDE5IFxuICAqIFxuICAqIFZlcnNpb246IDIuMS42XG4gICogXG4gICogTElDRU5DRTogTUlUIFxuICAqIFxuICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9saW51c2JvcmcvcG9ydGFsLXZ1ZVxuICAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuZnVuY3Rpb24gX2ludGVyb3BEZWZhdWx0IChleCkgeyByZXR1cm4gKGV4ICYmICh0eXBlb2YgZXggPT09ICdvYmplY3QnKSAmJiAnZGVmYXVsdCcgaW4gZXgpID8gZXhbJ2RlZmF1bHQnXSA6IGV4OyB9XG5cbnZhciBWdWUgPSBfaW50ZXJvcERlZmF1bHQocmVxdWlyZSgndnVlJykpO1xuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHtcbiAgICBfdHlwZW9mID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBfdHlwZW9mID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBfdHlwZW9mKG9iaik7XG59XG5cbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHtcbiAgcmV0dXJuIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfbm9uSXRlcmFibGVTcHJlYWQoKTtcbn1cblxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIGFycjJbaV0gPSBhcnJbaV07XG5cbiAgICByZXR1cm4gYXJyMjtcbiAgfVxufVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHtcbiAgaWYgKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoaXRlcikgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGl0ZXIpID09PSBcIltvYmplY3QgQXJndW1lbnRzXVwiKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTtcbn1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2VcIik7XG59XG5cbnZhciBpbkJyb3dzZXIgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbmZ1bmN0aW9uIGZyZWV6ZShpdGVtKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pIHx8IF90eXBlb2YoaXRlbSkgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUoaXRlbSk7XG4gIH1cblxuICByZXR1cm4gaXRlbTtcbn1cbmZ1bmN0aW9uIGNvbWJpbmVQYXNzZW5nZXJzKHRyYW5zcG9ydHMpIHtcbiAgdmFyIHNsb3RQcm9wcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gIHJldHVybiB0cmFuc3BvcnRzLnJlZHVjZShmdW5jdGlvbiAocGFzc2VuZ2VycywgdHJhbnNwb3J0KSB7XG4gICAgdmFyIHRlbXAgPSB0cmFuc3BvcnQucGFzc2VuZ2Vyc1swXTtcbiAgICB2YXIgbmV3UGFzc2VuZ2VycyA9IHR5cGVvZiB0ZW1wID09PSAnZnVuY3Rpb24nID8gdGVtcChzbG90UHJvcHMpIDogdHJhbnNwb3J0LnBhc3NlbmdlcnM7XG4gICAgcmV0dXJuIHBhc3NlbmdlcnMuY29uY2F0KG5ld1Bhc3NlbmdlcnMpO1xuICB9LCBbXSk7XG59XG5mdW5jdGlvbiBzdGFibGVTb3J0KGFycmF5LCBjb21wYXJlRm4pIHtcbiAgcmV0dXJuIGFycmF5Lm1hcChmdW5jdGlvbiAodiwgaWR4KSB7XG4gICAgcmV0dXJuIFtpZHgsIHZdO1xuICB9KS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIGNvbXBhcmVGbihhWzFdLCBiWzFdKSB8fCBhWzBdIC0gYlswXTtcbiAgfSkubWFwKGZ1bmN0aW9uIChjKSB7XG4gICAgcmV0dXJuIGNbMV07XG4gIH0pO1xufVxuZnVuY3Rpb24gcGljayhvYmosIGtleXMpIHtcbiAgcmV0dXJuIGtleXMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGtleSkge1xuICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgYWNjW2tleV0gPSBvYmpba2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG59XG5cbnZhciB0cmFuc3BvcnRzID0ge307XG52YXIgdGFyZ2V0cyA9IHt9O1xudmFyIHNvdXJjZXMgPSB7fTtcbnZhciBXb3JtaG9sZSA9IFZ1ZS5leHRlbmQoe1xuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0cmFuc3BvcnRzOiB0cmFuc3BvcnRzLFxuICAgICAgdGFyZ2V0czogdGFyZ2V0cyxcbiAgICAgIHNvdXJjZXM6IHNvdXJjZXMsXG4gICAgICB0cmFja0luc3RhbmNlczogaW5Ccm93c2VyXG4gICAgfTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIG9wZW46IGZ1bmN0aW9uIG9wZW4odHJhbnNwb3J0KSB7XG4gICAgICBpZiAoIWluQnJvd3NlcikgcmV0dXJuO1xuICAgICAgdmFyIHRvID0gdHJhbnNwb3J0LnRvLFxuICAgICAgICAgIGZyb20gPSB0cmFuc3BvcnQuZnJvbSxcbiAgICAgICAgICBwYXNzZW5nZXJzID0gdHJhbnNwb3J0LnBhc3NlbmdlcnMsXG4gICAgICAgICAgX3RyYW5zcG9ydCRvcmRlciA9IHRyYW5zcG9ydC5vcmRlcixcbiAgICAgICAgICBvcmRlciA9IF90cmFuc3BvcnQkb3JkZXIgPT09IHZvaWQgMCA/IEluZmluaXR5IDogX3RyYW5zcG9ydCRvcmRlcjtcbiAgICAgIGlmICghdG8gfHwgIWZyb20gfHwgIXBhc3NlbmdlcnMpIHJldHVybjtcbiAgICAgIHZhciBuZXdUcmFuc3BvcnQgPSB7XG4gICAgICAgIHRvOiB0byxcbiAgICAgICAgZnJvbTogZnJvbSxcbiAgICAgICAgcGFzc2VuZ2VyczogZnJlZXplKHBhc3NlbmdlcnMpLFxuICAgICAgICBvcmRlcjogb3JkZXJcbiAgICAgIH07XG4gICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMudHJhbnNwb3J0cyk7XG5cbiAgICAgIGlmIChrZXlzLmluZGV4T2YodG8pID09PSAtMSkge1xuICAgICAgICBWdWUuc2V0KHRoaXMudHJhbnNwb3J0cywgdG8sIFtdKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGN1cnJlbnRJbmRleCA9IHRoaXMuJF9nZXRUcmFuc3BvcnRJbmRleChuZXdUcmFuc3BvcnQpOyAvLyBDb3B5aW5nIHRoZSBhcnJheSBoZXJlIHNvIHRoYXQgdGhlIFBvcnRhbFRhcmdldCBjaGFuZ2UgZXZlbnQgd2lsbCBhY3R1YWxseSBjb250YWluIHR3byBkaXN0aW5jdCBhcnJheXNcblxuICAgICAgdmFyIG5ld1RyYW5zcG9ydHMgPSB0aGlzLnRyYW5zcG9ydHNbdG9dLnNsaWNlKDApO1xuXG4gICAgICBpZiAoY3VycmVudEluZGV4ID09PSAtMSkge1xuICAgICAgICBuZXdUcmFuc3BvcnRzLnB1c2gobmV3VHJhbnNwb3J0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1RyYW5zcG9ydHNbY3VycmVudEluZGV4XSA9IG5ld1RyYW5zcG9ydDtcbiAgICAgIH1cblxuICAgICAgdGhpcy50cmFuc3BvcnRzW3RvXSA9IHN0YWJsZVNvcnQobmV3VHJhbnNwb3J0cywgZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEub3JkZXIgLSBiLm9yZGVyO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBjbG9zZTogZnVuY3Rpb24gY2xvc2UodHJhbnNwb3J0KSB7XG4gICAgICB2YXIgZm9yY2UgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlO1xuICAgICAgdmFyIHRvID0gdHJhbnNwb3J0LnRvLFxuICAgICAgICAgIGZyb20gPSB0cmFuc3BvcnQuZnJvbTtcbiAgICAgIGlmICghdG8gfHwgIWZyb20gJiYgZm9yY2UgPT09IGZhbHNlKSByZXR1cm47XG5cbiAgICAgIGlmICghdGhpcy50cmFuc3BvcnRzW3RvXSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3JjZSkge1xuICAgICAgICB0aGlzLnRyYW5zcG9ydHNbdG9dID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLiRfZ2V0VHJhbnNwb3J0SW5kZXgodHJhbnNwb3J0KTtcblxuICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgIC8vIENvcHlpbmcgdGhlIGFycmF5IGhlcmUgc28gdGhhdCB0aGUgUG9ydGFsVGFyZ2V0IGNoYW5nZSBldmVudCB3aWxsIGFjdHVhbGx5IGNvbnRhaW4gdHdvIGRpc3RpbmN0IGFycmF5c1xuICAgICAgICAgIHZhciBuZXdUcmFuc3BvcnRzID0gdGhpcy50cmFuc3BvcnRzW3RvXS5zbGljZSgwKTtcbiAgICAgICAgICBuZXdUcmFuc3BvcnRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgdGhpcy50cmFuc3BvcnRzW3RvXSA9IG5ld1RyYW5zcG9ydHM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHJlZ2lzdGVyVGFyZ2V0OiBmdW5jdGlvbiByZWdpc3RlclRhcmdldCh0YXJnZXQsIHZtLCBmb3JjZSkge1xuICAgICAgaWYgKCFpbkJyb3dzZXIpIHJldHVybjtcblxuICAgICAgaWYgKHRoaXMudHJhY2tJbnN0YW5jZXMgJiYgIWZvcmNlICYmIHRoaXMudGFyZ2V0c1t0YXJnZXRdKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIltwb3J0YWwtdnVlXTogVGFyZ2V0IFwiLmNvbmNhdCh0YXJnZXQsIFwiIGFscmVhZHkgZXhpc3RzXCIpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy4kc2V0KHRoaXMudGFyZ2V0cywgdGFyZ2V0LCBPYmplY3QuZnJlZXplKFt2bV0pKTtcbiAgICB9LFxuICAgIHVucmVnaXN0ZXJUYXJnZXQ6IGZ1bmN0aW9uIHVucmVnaXN0ZXJUYXJnZXQodGFyZ2V0KSB7XG4gICAgICB0aGlzLiRkZWxldGUodGhpcy50YXJnZXRzLCB0YXJnZXQpO1xuICAgIH0sXG4gICAgcmVnaXN0ZXJTb3VyY2U6IGZ1bmN0aW9uIHJlZ2lzdGVyU291cmNlKHNvdXJjZSwgdm0sIGZvcmNlKSB7XG4gICAgICBpZiAoIWluQnJvd3NlcikgcmV0dXJuO1xuXG4gICAgICBpZiAodGhpcy50cmFja0luc3RhbmNlcyAmJiAhZm9yY2UgJiYgdGhpcy5zb3VyY2VzW3NvdXJjZV0pIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiW3BvcnRhbC12dWVdOiBzb3VyY2UgXCIuY29uY2F0KHNvdXJjZSwgXCIgYWxyZWFkeSBleGlzdHNcIikpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiRzZXQodGhpcy5zb3VyY2VzLCBzb3VyY2UsIE9iamVjdC5mcmVlemUoW3ZtXSkpO1xuICAgIH0sXG4gICAgdW5yZWdpc3RlclNvdXJjZTogZnVuY3Rpb24gdW5yZWdpc3RlclNvdXJjZShzb3VyY2UpIHtcbiAgICAgIHRoaXMuJGRlbGV0ZSh0aGlzLnNvdXJjZXMsIHNvdXJjZSk7XG4gICAgfSxcbiAgICBoYXNUYXJnZXQ6IGZ1bmN0aW9uIGhhc1RhcmdldCh0bykge1xuICAgICAgcmV0dXJuICEhKHRoaXMudGFyZ2V0c1t0b10gJiYgdGhpcy50YXJnZXRzW3RvXVswXSk7XG4gICAgfSxcbiAgICBoYXNTb3VyY2U6IGZ1bmN0aW9uIGhhc1NvdXJjZSh0bykge1xuICAgICAgcmV0dXJuICEhKHRoaXMuc291cmNlc1t0b10gJiYgdGhpcy5zb3VyY2VzW3RvXVswXSk7XG4gICAgfSxcbiAgICBoYXNDb250ZW50Rm9yOiBmdW5jdGlvbiBoYXNDb250ZW50Rm9yKHRvKSB7XG4gICAgICByZXR1cm4gISF0aGlzLnRyYW5zcG9ydHNbdG9dICYmICEhdGhpcy50cmFuc3BvcnRzW3RvXS5sZW5ndGg7XG4gICAgfSxcbiAgICAvLyBJbnRlcm5hbFxuICAgICRfZ2V0VHJhbnNwb3J0SW5kZXg6IGZ1bmN0aW9uICRfZ2V0VHJhbnNwb3J0SW5kZXgoX3JlZikge1xuICAgICAgdmFyIHRvID0gX3JlZi50byxcbiAgICAgICAgICBmcm9tID0gX3JlZi5mcm9tO1xuXG4gICAgICBmb3IgKHZhciBpIGluIHRoaXMudHJhbnNwb3J0c1t0b10pIHtcbiAgICAgICAgaWYgKHRoaXMudHJhbnNwb3J0c1t0b11baV0uZnJvbSA9PT0gZnJvbSkge1xuICAgICAgICAgIHJldHVybiAraTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICB9XG59KTtcbnZhciB3b3JtaG9sZSA9IG5ldyBXb3JtaG9sZSh0cmFuc3BvcnRzKTtcblxudmFyIF9pZCA9IDE7XG52YXIgUG9ydGFsID0gVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdwb3J0YWwnLFxuICBwcm9wczoge1xuICAgIGRpc2FibGVkOiB7XG4gICAgICB0eXBlOiBCb29sZWFuXG4gICAgfSxcbiAgICBuYW1lOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyhfaWQrKyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvcmRlcjoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMFxuICAgIH0sXG4gICAgc2xpbToge1xuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgc2xvdFByb3BzOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgdGFnOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnRElWJ1xuICAgIH0sXG4gICAgdG86IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gU3RyaW5nKE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDAwKSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICB3b3JtaG9sZS5yZWdpc3RlclNvdXJjZShfdGhpcy5uYW1lLCBfdGhpcyk7XG4gICAgfSk7XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnNlbmRVcGRhdGUoKTtcbiAgICB9XG4gIH0sXG4gIHVwZGF0ZWQ6IGZ1bmN0aW9uIHVwZGF0ZWQoKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZW5kVXBkYXRlKCk7XG4gICAgfVxuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIHdvcm1ob2xlLnVucmVnaXN0ZXJTb3VyY2UodGhpcy5uYW1lKTtcbiAgICB0aGlzLmNsZWFyKCk7XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgdG86IGZ1bmN0aW9uIHRvKG5ld1ZhbHVlLCBvbGRWYWx1ZSkge1xuICAgICAgb2xkVmFsdWUgJiYgb2xkVmFsdWUgIT09IG5ld1ZhbHVlICYmIHRoaXMuY2xlYXIob2xkVmFsdWUpO1xuICAgICAgdGhpcy5zZW5kVXBkYXRlKCk7XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgY2xlYXI6IGZ1bmN0aW9uIGNsZWFyKHRhcmdldCkge1xuICAgICAgdmFyIGNsb3NlciA9IHtcbiAgICAgICAgZnJvbTogdGhpcy5uYW1lLFxuICAgICAgICB0bzogdGFyZ2V0IHx8IHRoaXMudG9cbiAgICAgIH07XG4gICAgICB3b3JtaG9sZS5jbG9zZShjbG9zZXIpO1xuICAgIH0sXG4gICAgbm9ybWFsaXplU2xvdHM6IGZ1bmN0aW9uIG5vcm1hbGl6ZVNsb3RzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHNjb3BlZFNsb3RzLmRlZmF1bHQgPyBbdGhpcy4kc2NvcGVkU2xvdHMuZGVmYXVsdF0gOiB0aGlzLiRzbG90cy5kZWZhdWx0O1xuICAgIH0sXG4gICAgbm9ybWFsaXplT3duQ2hpbGRyZW46IGZ1bmN0aW9uIG5vcm1hbGl6ZU93bkNoaWxkcmVuKGNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nID8gY2hpbGRyZW4odGhpcy5zbG90UHJvcHMpIDogY2hpbGRyZW47XG4gICAgfSxcbiAgICBzZW5kVXBkYXRlOiBmdW5jdGlvbiBzZW5kVXBkYXRlKCkge1xuICAgICAgdmFyIHNsb3RDb250ZW50ID0gdGhpcy5ub3JtYWxpemVTbG90cygpO1xuXG4gICAgICBpZiAoc2xvdENvbnRlbnQpIHtcbiAgICAgICAgdmFyIHRyYW5zcG9ydCA9IHtcbiAgICAgICAgICBmcm9tOiB0aGlzLm5hbWUsXG4gICAgICAgICAgdG86IHRoaXMudG8sXG4gICAgICAgICAgcGFzc2VuZ2VyczogX3RvQ29uc3VtYWJsZUFycmF5KHNsb3RDb250ZW50KSxcbiAgICAgICAgICBvcmRlcjogdGhpcy5vcmRlclxuICAgICAgICB9O1xuICAgICAgICB3b3JtaG9sZS5vcGVuKHRyYW5zcG9ydCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy4kc2xvdHMuZGVmYXVsdCB8fCB0aGlzLiRzY29wZWRTbG90cy5kZWZhdWx0IHx8IFtdO1xuICAgIHZhciBUYWcgPSB0aGlzLnRhZztcblxuICAgIGlmIChjaGlsZHJlbiAmJiB0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gY2hpbGRyZW4ubGVuZ3RoIDw9IDEgJiYgdGhpcy5zbGltID8gdGhpcy5ub3JtYWxpemVPd25DaGlsZHJlbihjaGlsZHJlbilbMF0gOiBoKFRhZywgW3RoaXMubm9ybWFsaXplT3duQ2hpbGRyZW4oY2hpbGRyZW4pXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnNsaW0gPyBoKCkgOiBoKFRhZywge1xuICAgICAgICBjbGFzczoge1xuICAgICAgICAgICd2LXBvcnRhbCc6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBkaXNwbGF5OiAnbm9uZSdcbiAgICAgICAgfSxcbiAgICAgICAga2V5OiAndi1wb3J0YWwtcGxhY2Vob2xkZXInXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn0pO1xuXG52YXIgUG9ydGFsVGFyZ2V0ID0gVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdwb3J0YWxUYXJnZXQnLFxuICBwcm9wczoge1xuICAgIG11bHRpcGxlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIG5hbWU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgfSxcbiAgICBzbGltOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHNsb3RQcm9wczoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHRhZzoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2RpdidcbiAgICB9LFxuICAgIHRyYW5zaXRpb246IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdCwgRnVuY3Rpb25dXG4gICAgfVxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0cmFuc3BvcnRzOiB3b3JtaG9sZS50cmFuc3BvcnRzLFxuICAgICAgZmlyc3RSZW5kZXI6IHRydWVcbiAgICB9O1xuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICB3b3JtaG9sZS5yZWdpc3RlclRhcmdldChfdGhpcy5uYW1lLCBfdGhpcyk7XG4gICAgfSk7XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgb3duVHJhbnNwb3J0czogZnVuY3Rpb24gb3duVHJhbnNwb3J0cygpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIHRoaXMuY2hpbGRyZW4oKS5sZW5ndGggPiAwKTtcbiAgICB9LFxuICAgIG5hbWU6IGZ1bmN0aW9uIG5hbWUobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIC8qKlxyXG4gICAgICAgKiBUT0RPXHJcbiAgICAgICAqIFRoaXMgc2hvdWxkIHdhcm4gYXMgd2VsbCAuLi5cclxuICAgICAgICovXG4gICAgICB3b3JtaG9sZS51bnJlZ2lzdGVyVGFyZ2V0KG9sZFZhbCk7XG4gICAgICB3b3JtaG9sZS5yZWdpc3RlclRhcmdldChuZXdWYWwsIHRoaXMpO1xuICAgIH1cbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIGlmICh0aGlzLnRyYW5zaXRpb24pIHtcbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gb25seSB3aGVuIHdlIGhhdmUgYSB0cmFuc2l0aW9uLCBiZWNhdXNlIGl0IGNhdXNlcyBhIHJlLXJlbmRlclxuICAgICAgICBfdGhpczIuZmlyc3RSZW5kZXIgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICB3b3JtaG9sZS51bnJlZ2lzdGVyVGFyZ2V0KHRoaXMubmFtZSk7XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgb3duVHJhbnNwb3J0czogZnVuY3Rpb24gb3duVHJhbnNwb3J0cygpIHtcbiAgICAgIHZhciB0cmFuc3BvcnRzID0gdGhpcy50cmFuc3BvcnRzW3RoaXMubmFtZV0gfHwgW107XG5cbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHJldHVybiB0cmFuc3BvcnRzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJhbnNwb3J0cy5sZW5ndGggPT09IDAgPyBbXSA6IFt0cmFuc3BvcnRzW3RyYW5zcG9ydHMubGVuZ3RoIC0gMV1dO1xuICAgIH0sXG4gICAgcGFzc2VuZ2VyczogZnVuY3Rpb24gcGFzc2VuZ2VycygpIHtcbiAgICAgIHJldHVybiBjb21iaW5lUGFzc2VuZ2Vycyh0aGlzLm93blRyYW5zcG9ydHMsIHRoaXMuc2xvdFByb3BzKTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICAvLyBjYW4ndCBiZSBhIGNvbXB1dGVkIHByb3AgYmVjYXVzZSBpdCBoYXMgdG8gXCJyZWFjdFwiIHRvICRzbG90IGNoYW5nZXMuXG4gICAgY2hpbGRyZW46IGZ1bmN0aW9uIGNoaWxkcmVuKCkge1xuICAgICAgcmV0dXJuIHRoaXMucGFzc2VuZ2Vycy5sZW5ndGggIT09IDAgPyB0aGlzLnBhc3NlbmdlcnMgOiB0aGlzLiRzY29wZWRTbG90cy5kZWZhdWx0ID8gdGhpcy4kc2NvcGVkU2xvdHMuZGVmYXVsdCh0aGlzLnNsb3RQcm9wcykgOiB0aGlzLiRzbG90cy5kZWZhdWx0IHx8IFtdO1xuICAgIH0sXG4gICAgLy8gY2FuJ3QgYmUgYSBjb21wdXRlZCBwcm9wIGJlY2F1c2UgaXQgaGFzIHRvIFwicmVhY3RcIiB0byB0aGlzLmNoaWxkcmVuKCkuXG4gICAgbm9XcmFwcGVyOiBmdW5jdGlvbiBub1dyYXBwZXIoKSB7XG4gICAgICB2YXIgbm9XcmFwcGVyID0gdGhpcy5zbGltICYmICF0aGlzLnRyYW5zaXRpb247XG5cbiAgICAgIGlmIChub1dyYXBwZXIgJiYgdGhpcy5jaGlsZHJlbigpLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbcG9ydGFsLXZ1ZV06IFBvcnRhbFRhcmdldCB3aXRoIGBzbGltYCBvcHRpb24gcmVjZWl2ZWQgbW9yZSB0aGFuIG9uZSBjaGlsZCBlbGVtZW50LicpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbm9XcmFwcGVyO1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBub1dyYXBwZXIgPSB0aGlzLm5vV3JhcHBlcigpO1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4oKTtcbiAgICB2YXIgVGFnID0gdGhpcy50cmFuc2l0aW9uIHx8IHRoaXMudGFnO1xuICAgIHJldHVybiBub1dyYXBwZXIgPyBjaGlsZHJlblswXSA6IHRoaXMuc2xpbSAmJiAhVGFnID8gaCgpIDogaChUYWcsIHtcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIC8vIGlmIHdlIGhhdmUgYSB0cmFuc2l0aW9uIGNvbXBvbmVudCwgcGFzcyB0aGUgdGFnIGlmIGl0IGV4aXN0c1xuICAgICAgICB0YWc6IHRoaXMudHJhbnNpdGlvbiAmJiB0aGlzLnRhZyA/IHRoaXMudGFnIDogdW5kZWZpbmVkXG4gICAgICB9LFxuICAgICAgY2xhc3M6IHtcbiAgICAgICAgJ3Z1ZS1wb3J0YWwtdGFyZ2V0JzogdHJ1ZVxuICAgICAgfVxuICAgIH0sIGNoaWxkcmVuKTtcbiAgfVxufSk7XG5cbnZhciBfaWQkMSA9IDA7XG52YXIgcG9ydGFsUHJvcHMgPSBbJ2Rpc2FibGVkJywgJ25hbWUnLCAnb3JkZXInLCAnc2xpbScsICdzbG90UHJvcHMnLCAndGFnJywgJ3RvJ107XG52YXIgdGFyZ2V0UHJvcHMgPSBbJ211bHRpcGxlJywgJ3RyYW5zaXRpb24nXTtcbnZhciBNb3VudGluZ1BvcnRhbCA9IFZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnTW91bnRpbmdQb3J0YWwnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBwcm9wczoge1xuICAgIGFwcGVuZDoge1xuICAgICAgdHlwZTogW0Jvb2xlYW4sIFN0cmluZ11cbiAgICB9LFxuICAgIGJhaWw6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIG1vdW50VG86IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgfSxcbiAgICAvLyBQb3J0YWxcbiAgICBkaXNhYmxlZDoge1xuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgLy8gbmFtZSBmb3IgdGhlIHBvcnRhbFxuICAgIG5hbWU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gJ21vdW50ZWRfJyArIFN0cmluZyhfaWQkMSsrKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9yZGVyOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAwXG4gICAgfSxcbiAgICBzbGltOiB7XG4gICAgICB0eXBlOiBCb29sZWFuXG4gICAgfSxcbiAgICBzbG90UHJvcHM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICB0YWc6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdESVYnXG4gICAgfSxcbiAgICAvLyBuYW1lIGZvciB0aGUgdGFyZ2V0XG4gICAgdG86IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gU3RyaW5nKE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDAwKSk7XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyBUYXJnZXRcbiAgICBtdWx0aXBsZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICB0YXJnZXRTbGltOiB7XG4gICAgICB0eXBlOiBCb29sZWFuXG4gICAgfSxcbiAgICB0YXJnZXRTbG90UHJvcHM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICB0YXJnZXRUYWc6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdkaXYnXG4gICAgfSxcbiAgICB0cmFuc2l0aW9uOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3QsIEZ1bmN0aW9uXVxuICAgIH1cbiAgfSxcbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgIHZhciBlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5tb3VudFRvKTtcblxuICAgIGlmICghZWwpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJbcG9ydGFsLXZ1ZV06IE1vdW50IFBvaW50ICdcIi5jb25jYXQodGhpcy5tb3VudFRvLCBcIicgbm90IGZvdW5kIGluIGRvY3VtZW50XCIpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcHJvcHMgPSB0aGlzLiRwcm9wczsgLy8gVGFyZ2V0IGFscmVhZHkgZXhpc3RzXG5cbiAgICBpZiAod29ybWhvbGUudGFyZ2V0c1twcm9wcy5uYW1lXSkge1xuICAgICAgaWYgKHByb3BzLmJhaWwpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiW3BvcnRhbC12dWVdOiBUYXJnZXQgXCIuY29uY2F0KHByb3BzLm5hbWUsIFwiIGlzIGFscmVhZHkgbW91bnRlZC5cXG4gICAgICAgIEFib3J0aW5nIGJlY2F1c2UgJ2JhaWw6IHRydWUnIGlzIHNldFwiKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBvcnRhbFRhcmdldCA9IHdvcm1ob2xlLnRhcmdldHNbcHJvcHMubmFtZV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgYXBwZW5kID0gcHJvcHMuYXBwZW5kO1xuXG4gICAgaWYgKGFwcGVuZCkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgYXBwZW5kID09PSAnc3RyaW5nJyA/IGFwcGVuZCA6ICdESVYnO1xuICAgICAgdmFyIG1vdW50RWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHR5cGUpO1xuICAgICAgZWwuYXBwZW5kQ2hpbGQobW91bnRFbCk7XG4gICAgICBlbCA9IG1vdW50RWw7XG4gICAgfSAvLyBnZXQgcHJvcHMgZm9yIHRhcmdldCBmcm9tICRwcm9wc1xuICAgIC8vIHdlIGhhdmUgdG8gcmVuYW1lIGEgZmV3IG9mIHRoZW1cblxuXG4gICAgdmFyIF9wcm9wcyA9IHBpY2sodGhpcy4kcHJvcHMsIHRhcmdldFByb3BzKTtcblxuICAgIF9wcm9wcy5zbGltID0gdGhpcy50YXJnZXRTbGltO1xuICAgIF9wcm9wcy50YWcgPSB0aGlzLnRhcmdldFRhZztcbiAgICBfcHJvcHMuc2xvdFByb3BzID0gdGhpcy50YXJnZXRTbG90UHJvcHM7XG4gICAgX3Byb3BzLm5hbWUgPSB0aGlzLnRvO1xuICAgIHRoaXMucG9ydGFsVGFyZ2V0ID0gbmV3IFBvcnRhbFRhcmdldCh7XG4gICAgICBlbDogZWwsXG4gICAgICBwYXJlbnQ6IHRoaXMuJHBhcmVudCB8fCB0aGlzLFxuICAgICAgcHJvcHNEYXRhOiBfcHJvcHNcbiAgICB9KTtcbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICB2YXIgdGFyZ2V0ID0gdGhpcy5wb3J0YWxUYXJnZXQ7XG5cbiAgICBpZiAodGhpcy5hcHBlbmQpIHtcbiAgICAgIHZhciBlbCA9IHRhcmdldC4kZWw7XG4gICAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcbiAgICB9XG5cbiAgICB0YXJnZXQuJGRlc3Ryb3koKTtcbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIGlmICghdGhpcy5wb3J0YWxUYXJnZXQpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIltwb3J0YWwtdnVlXSBUYXJnZXQgd2Fzbid0IG1vdW50ZWRcIik7XG4gICAgICByZXR1cm4gaCgpO1xuICAgIH0gLy8gaWYgdGhlcmUncyBubyBcIm1hbnVhbFwiIHNjb3BlZCBzbG90LCBzbyB3ZSBjcmVhdGUgYSA8UG9ydGFsPiBvdXJzZWx2ZXNcblxuXG4gICAgaWYgKCF0aGlzLiRzY29wZWRTbG90cy5tYW51YWwpIHtcbiAgICAgIHZhciBwcm9wcyA9IHBpY2sodGhpcy4kcHJvcHMsIHBvcnRhbFByb3BzKTtcbiAgICAgIHJldHVybiBoKFBvcnRhbCwge1xuICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgIGF0dHJzOiB0aGlzLiRhdHRycyxcbiAgICAgICAgb246IHRoaXMuJGxpc3RlbmVycyxcbiAgICAgICAgc2NvcGVkU2xvdHM6IHRoaXMuJHNjb3BlZFNsb3RzXG4gICAgICB9LCB0aGlzLiRzbG90cy5kZWZhdWx0KTtcbiAgICB9IC8vIGVsc2UsIHdlIHJlbmRlciB0aGUgc2NvcGVkIHNsb3RcblxuXG4gICAgdmFyIGNvbnRlbnQgPSB0aGlzLiRzY29wZWRTbG90cy5tYW51YWwoe1xuICAgICAgdG86IHRoaXMudG9cbiAgICB9KTsgLy8gaWYgdXNlciB1c2VkIDx0ZW1wbGF0ZT4gZm9yIHRoZSBzY29wZWQgc2xvdFxuICAgIC8vIGNvbnRlbnQgd2lsbCBiZSBhbiBhcnJheVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29udGVudCkpIHtcbiAgICAgIGNvbnRlbnQgPSBjb250ZW50WzBdO1xuICAgIH1cblxuICAgIGlmICghY29udGVudCkgcmV0dXJuIGgoKTtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGluc3RhbGwoVnVlJCQxKSB7XG4gIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgVnVlJCQxLmNvbXBvbmVudChvcHRpb25zLnBvcnRhbE5hbWUgfHwgJ1BvcnRhbCcsIFBvcnRhbCk7XG4gIFZ1ZSQkMS5jb21wb25lbnQob3B0aW9ucy5wb3J0YWxUYXJnZXROYW1lIHx8ICdQb3J0YWxUYXJnZXQnLCBQb3J0YWxUYXJnZXQpO1xuICBWdWUkJDEuY29tcG9uZW50KG9wdGlvbnMuTW91bnRpbmdQb3J0YWxOYW1lIHx8ICdNb3VudGluZ1BvcnRhbCcsIE1vdW50aW5nUG9ydGFsKTtcbn1cblxudmFyIGluZGV4ID0ge1xuICBpbnN0YWxsOiBpbnN0YWxsXG59O1xuXG5leHBvcnRzLmRlZmF1bHQgPSBpbmRleDtcbmV4cG9ydHMuUG9ydGFsID0gUG9ydGFsO1xuZXhwb3J0cy5Qb3J0YWxUYXJnZXQgPSBQb3J0YWxUYXJnZXQ7XG5leHBvcnRzLk1vdW50aW5nUG9ydGFsID0gTW91bnRpbmdQb3J0YWw7XG5leHBvcnRzLldvcm1ob2xlID0gd29ybWhvbGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb3J0YWwtdnVlLmNvbW1vbi5qcy5tYXBcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3BvcnRhbC12dWUvZGlzdC9wb3J0YWwtdnVlLmNvbW1vbi5qc1xuLy8gbW9kdWxlIGlkID0gMjE2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///216\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ToastPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__helpers_bv_toast__ = __webpack_require__(217);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__toast__ = __webpack_require__(91);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__toaster__ = __webpack_require__(92);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BToast */\n/* unused harmony reexport BToaster */\n\n\n\n\nvar ToastPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_3__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BToast: __WEBPACK_IMPORTED_MODULE_1__toast__[\"a\" /* BToast */],\n BToaster: __WEBPACK_IMPORTED_MODULE_2__toaster__[\"a\" /* BToaster */]\n },\n // $bvToast injection\n plugins: {\n BVToastPlugin: __WEBPACK_IMPORTED_MODULE_0__helpers_bv_toast__[\"a\" /* BVToastPlugin */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90b2FzdC9pbmRleC5qcz9jMWU1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW1EO0FBQ2xCO0FBQ0k7QUFDZTtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLFlBQVksc0RBQU07QUFDbEIsY0FBYywwREFBUTtBQUN0QixHQUFHO0FBQ0g7QUFDQTtBQUNBLG1CQUFtQix3RUFBYTtBQUNoQztBQUNBLENBQUMiLCJmaWxlIjoiMjE2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQlZUb2FzdFBsdWdpbiB9IGZyb20gJy4vaGVscGVycy9idi10b2FzdCc7XG5pbXBvcnQgeyBCVG9hc3QgfSBmcm9tICcuL3RvYXN0JztcbmltcG9ydCB7IEJUb2FzdGVyIH0gZnJvbSAnLi90b2FzdGVyJztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBUb2FzdFBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJUb2FzdDogQlRvYXN0LFxuICAgIEJUb2FzdGVyOiBCVG9hc3RlclxuICB9LFxuICAvLyAkYnZUb2FzdCBpbmplY3Rpb25cbiAgcGx1Z2luczoge1xuICAgIEJWVG9hc3RQbHVnaW46IEJWVG9hc3RQbHVnaW5cbiAgfVxufSk7XG5leHBvcnQgeyBUb2FzdFBsdWdpbiwgQlRvYXN0LCBCVG9hc3RlciB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdG9hc3QvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDIxNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///216\n"); /***/ }), /* 217 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return TooltipPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tooltip__ = __webpack_require__(81);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__directives_tooltip__ = __webpack_require__(93);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BTooltip */\n\n\n\nvar TooltipPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BTooltip: __WEBPACK_IMPORTED_MODULE_0__tooltip__[\"a\" /* BTooltip */]\n },\n plugins: {\n VBTooltipPlugin: __WEBPACK_IMPORTED_MODULE_1__directives_tooltip__[\"a\" /* VBTooltipPlugin */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90b29sdGlwL2luZGV4LmpzPzE5NTIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFxQztBQUNzQjtBQUNQO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsY0FBYywwREFBUTtBQUN0QixHQUFHO0FBQ0g7QUFDQSxxQkFBcUIsNEVBQWU7QUFDcEM7QUFDQSxDQUFDIiwiZmlsZSI6IjIxNy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJUb29sdGlwIH0gZnJvbSAnLi90b29sdGlwJztcbmltcG9ydCB7IFZCVG9vbHRpcFBsdWdpbiB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdG9vbHRpcCc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgVG9vbHRpcFBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJUb29sdGlwOiBCVG9vbHRpcFxuICB9LFxuICBwbHVnaW5zOiB7XG4gICAgVkJUb29sdGlwUGx1Z2luOiBWQlRvb2x0aXBQbHVnaW5cbiAgfVxufSk7XG5leHBvcnQgeyBUb29sdGlwUGx1Z2luLCBCVG9vbHRpcCB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdG9vbHRpcC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMjE3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///217\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BVToastPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_plugins__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_warn__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__toast__ = __webpack_require__(91);\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 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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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 _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\n/**\n * Plugin for adding `$bvToast` property to all Vue instances\n */\n\n\n\n\n\n\n\n // --- Constants ---\n\nvar PROP_NAME = '$bvToast';\nvar PROP_NAME_PRIV = '_bv__toast'; // Base toast props that are allowed\n// Some may be ignored or overridden on some message boxes\n// Prop ID is allowed, but really only should be used for testing\n// We need to add it in explicitly as it comes from the `idMixin`\n\nvar BASE_PROPS = ['id'].concat(_toConsumableArray(Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"j\" /* keys */])(Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"k\" /* omit */])(__WEBPACK_IMPORTED_MODULE_7__toast__[\"b\" /* props */], ['static', 'visible'])))); // Map prop names to toast slot names\n\nvar propsToSlots = {\n toastContent: 'default',\n title: 'toast-title'\n}; // --- Utility methods ---\n// Method to filter only recognized props that are not undefined\n\nvar filterOptions = function filterOptions(options) {\n return BASE_PROPS.reduce(function (memo, key) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"n\" /* isUndefined */])(options[key])) {\n memo[key] = options[key];\n }\n\n return memo;\n }, {});\n}; // Method to install `$bvToast` VM injection\n\n\nvar plugin = function plugin(Vue) {\n // Create a private sub-component constructor that\n // extends BToast and self-destructs after hidden\n // @vue/component\n var BToastPop = Vue.extend({\n name: 'BToastPop',\n extends: __WEBPACK_IMPORTED_MODULE_7__toast__[\"a\" /* BToast */],\n destroyed: function destroyed() {\n // Make sure we not in document any more\n if (this.$el && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n },\n mounted: function mounted() {\n var self = this; // Self destruct handler\n\n var handleDestroy = function handleDestroy() {\n // Ensure the toast has been force hidden\n self.localShow = false;\n self.doRender = false;\n self.$nextTick(function () {\n self.$nextTick(function () {\n // In a `requestAF()` to release control back to application\n // and to allow the portal-target time to remove the content\n Object(__WEBPACK_IMPORTED_MODULE_2__utils_dom__[\"w\" /* requestAF */])(function () {\n self.$destroy();\n });\n });\n });\n }; // Self destruct if parent destroyed\n\n\n this.$parent.$once('hook:destroyed', handleDestroy); // Self destruct after hidden\n\n this.$once('hidden', handleDestroy); // Self destruct when toaster is destroyed\n\n this.listenOnRoot('bv::toaster::destroyed', function (toaster) {\n /* istanbul ignore next: hard to test */\n if (toaster === self.toaster) {\n handleDestroy();\n }\n });\n }\n }); // Private method to generate the on-demand toast\n\n var makeToast = function makeToast(props, $parent) {\n if (Object(__WEBPACK_IMPORTED_MODULE_6__utils_warn__[\"e\" /* warnNotClient */])(PROP_NAME)) {\n /* istanbul ignore next */\n return;\n } // Create an instance of `BToastPop` component\n\n\n var toast = new BToastPop({\n // We set parent as the local VM so these toasts can emit events on the\n // app `$root`, and it ensures `BToast` is destroyed when parent is destroyed\n parent: $parent,\n propsData: _objectSpread({}, filterOptions(Object(__WEBPACK_IMPORTED_MODULE_1__utils_config__[\"c\" /* getComponentConfig */])('BToast') || {}), {}, Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"k\" /* omit */])(props, Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"j\" /* keys */])(propsToSlots)), {\n // Props that can't be overridden\n static: false,\n visible: true\n })\n }); // Convert certain props to slots\n\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"j\" /* keys */])(propsToSlots).forEach(function (prop) {\n var value = props[prop];\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"n\" /* isUndefined */])(value)) {\n // Can be a string, or array of VNodes\n if (prop === 'title' && Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"m\" /* isString */])(value)) {\n // Special case for title if it is a string, we wrap in a <strong>\n value = [$parent.$createElement('strong', {\n class: 'mr-2'\n }, value)];\n }\n\n toast.$slots[propsToSlots[prop]] = Object(__WEBPACK_IMPORTED_MODULE_0__utils_array__[\"b\" /* concat */])(value);\n }\n }); // Create a mount point (a DIV) and mount it (which triggers the show)\n\n var div = document.createElement('div');\n document.body.appendChild(div);\n toast.$mount(div);\n }; // Declare BvToast instance property class\n\n\n var BvToast =\n /*#__PURE__*/\n function () {\n function BvToast(vm) {\n _classCallCheck(this, BvToast);\n\n // Assign the new properties to this instance\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"a\" /* assign */])(this, {\n _vm: vm,\n _root: vm.$root\n }); // Set these properties as read-only and non-enumerable\n\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"d\" /* defineProperties */])(this, {\n _vm: Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"l\" /* readonlyDescriptor */])(),\n _root: Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"l\" /* readonlyDescriptor */])()\n });\n } // --- Public Instance methods ---\n // Opens a user defined toast and returns immediately\n\n\n _createClass(BvToast, [{\n key: \"toast\",\n value: function toast(content) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!content || Object(__WEBPACK_IMPORTED_MODULE_6__utils_warn__[\"e\" /* warnNotClient */])(PROP_NAME)) {\n /* istanbul ignore next */\n return;\n }\n\n makeToast(_objectSpread({}, filterOptions(options), {\n toastContent: content\n }), this._vm);\n } // shows a `<b-toast>` component with the specified ID\n\n }, {\n key: \"show\",\n value: function show(id) {\n if (id) {\n this._root.$emit('bv::show::toast', id);\n }\n } // Hide a toast with specified ID, or if not ID all toasts\n\n }, {\n key: \"hide\",\n value: function hide() {\n var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n this._root.$emit('bv::hide::toast', id);\n }\n }]);\n\n return BvToast;\n }(); // Add our instance mixin\n\n\n Vue.mixin({\n beforeCreate: function beforeCreate() {\n // Because we need access to `$root` for `$emits`, and VM for parenting,\n // we have to create a fresh instance of `BvToast` for each VM\n this[PROP_NAME_PRIV] = new BvToast(this);\n }\n }); // Define our read-only `$bvToast` instance property\n // Placed in an if just in case in HMR mode\n // eslint-disable-next-line no-prototype-builtins\n\n if (!Vue.prototype.hasOwnProperty(PROP_NAME)) {\n Object(__WEBPACK_IMPORTED_MODULE_4__utils_object__[\"e\" /* defineProperty */])(Vue.prototype, PROP_NAME, {\n get: function get() {\n /* istanbul ignore next */\n if (!this || !this[PROP_NAME_PRIV]) {\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_warn__[\"b\" /* warn */])(\"'\".concat(PROP_NAME, \"' must be accessed from a Vue instance 'this' context\"));\n }\n\n return this[PROP_NAME_PRIV];\n }\n });\n }\n};\n\nvar BVToastPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_5__utils_plugins__[\"b\" /* pluginFactory */])({\n plugins: {\n plugin: plugin\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90b2FzdC9oZWxwZXJzL2J2LXRvYXN0LmpzPzM4YmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsaURBQWlELDBDQUEwQywwREFBMEQsRUFBRTs7QUFFdkosMkNBQTJDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQsMkRBQTJELEVBQUU7O0FBRTNULDZEQUE2RCxzRUFBc0UsOERBQThELG9CQUFvQjs7QUFFck4sMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUUvTSxrQ0FBa0MsaUZBQWlGOztBQUVuSCwrQkFBK0Isd0VBQXdFOztBQUV2RyxpQ0FBaUMsK0hBQStIOztBQUVoSyxrQ0FBa0MsMEJBQTBCLDhDQUE4QyxnQkFBZ0IsT0FBTyxrQkFBa0IsRUFBRSxhQUFhLEVBQUU7O0FBRXBLO0FBQ0E7QUFDQTtBQUM4QztBQUNhO0FBQ1o7QUFDZ0I7QUFDa0Q7QUFDMUQ7QUFDRztBQUNIOztBQUV2RDtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7O0FBRUEsa0RBQWtELG1FQUFJLENBQUMsbUVBQUksQ0FBQyxxREFBVSw0QkFBNEI7O0FBRWxHO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjs7QUFFQTtBQUNBO0FBQ0EsU0FBUywyRUFBVztBQUNwQjtBQUNBOztBQUVBO0FBQ0EsR0FBRyxJQUFJO0FBQ1AsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxzREFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0Esc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxRUFBUztBQUNyQjtBQUNBLGFBQWE7QUFDYixXQUFXO0FBQ1gsU0FBUztBQUNULFFBQVE7OztBQUdSLDBEQUEwRDs7QUFFMUQsMENBQTBDOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRyxFQUFFOztBQUVMO0FBQ0EsUUFBUSwwRUFBYTtBQUNyQjtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsZ0JBQWdCLGlGQUFrQixnQkFBZ0IsS0FBSyxFQUFFLG1FQUFJLFFBQVEsbUVBQUk7QUFDMUc7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUssRUFBRTs7QUFFUCxJQUFJLG1FQUFJO0FBQ1I7O0FBRUEsV0FBVywyRUFBVztBQUN0QjtBQUNBLGdDQUFnQyx3RUFBUTtBQUN4QztBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUEsMkNBQTJDLG9FQUFNO0FBQ2pEO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNLHFFQUFNO0FBQ1o7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVCxNQUFNLCtFQUFnQjtBQUN0QixhQUFhLGlGQUFrQjtBQUMvQixlQUFlLGlGQUFrQjtBQUNqQyxPQUFPO0FBQ1AsS0FBSztBQUNMOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx3QkFBd0IsMEVBQWE7QUFDckM7QUFDQTtBQUNBOztBQUVBLGtDQUFrQztBQUNsQztBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUCxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsR0FBRyxHQUFHOzs7QUFHTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7QUFDTDtBQUNBOztBQUVBO0FBQ0EsSUFBSSw2RUFBYztBQUNsQjtBQUNBO0FBQ0E7QUFDQSxVQUFVLGlFQUFJO0FBQ2Q7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVPO0FBQ1A7QUFDQSw2RUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMjE3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IHJldHVybiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5KGFycikgfHwgX25vbkl0ZXJhYmxlU3ByZWFkKCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2VcIik7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShpdGVyKSB7IGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGl0ZXIpIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpdGVyKSA9PT0gXCJbb2JqZWN0IEFyZ3VtZW50c11cIikgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH0gfVxuXG4vKipcbiAqIFBsdWdpbiBmb3IgYWRkaW5nIGAkYnZUb2FzdGAgcHJvcGVydHkgdG8gYWxsIFZ1ZSBpbnN0YW5jZXNcbiAqL1xuaW1wb3J0IHsgY29uY2F0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYXJyYXknO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY29uZmlnJztcbmltcG9ydCB7IHJlcXVlc3RBRiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyBpc1VuZGVmaW5lZCwgaXNTdHJpbmcgfSBmcm9tICcuLi8uLi8uLi91dGlscy9pbnNwZWN0JztcbmltcG9ydCB7IGFzc2lnbiwgZGVmaW5lUHJvcGVydGllcywgZGVmaW5lUHJvcGVydHksIGtleXMsIG9taXQsIHJlYWRvbmx5RGVzY3JpcHRvciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL29iamVjdCc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG5pbXBvcnQgeyB3YXJuLCB3YXJuTm90Q2xpZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvd2Fybic7XG5pbXBvcnQgeyBCVG9hc3QsIHByb3BzIGFzIHRvYXN0UHJvcHMgfSBmcm9tICcuLi90b2FzdCc7IC8vIC0tLSBDb25zdGFudHMgLS0tXG5cbnZhciBQUk9QX05BTUUgPSAnJGJ2VG9hc3QnO1xudmFyIFBST1BfTkFNRV9QUklWID0gJ19idl9fdG9hc3QnOyAvLyBCYXNlIHRvYXN0IHByb3BzIHRoYXQgYXJlIGFsbG93ZWRcbi8vIFNvbWUgbWF5IGJlIGlnbm9yZWQgb3Igb3ZlcnJpZGRlbiBvbiBzb21lIG1lc3NhZ2UgYm94ZXNcbi8vIFByb3AgSUQgaXMgYWxsb3dlZCwgYnV0IHJlYWxseSBvbmx5IHNob3VsZCBiZSB1c2VkIGZvciB0ZXN0aW5nXG4vLyBXZSBuZWVkIHRvIGFkZCBpdCBpbiBleHBsaWNpdGx5IGFzIGl0IGNvbWVzIGZyb20gdGhlIGBpZE1peGluYFxuXG52YXIgQkFTRV9QUk9QUyA9IFsnaWQnXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGtleXMob21pdCh0b2FzdFByb3BzLCBbJ3N0YXRpYycsICd2aXNpYmxlJ10pKSkpOyAvLyBNYXAgcHJvcCBuYW1lcyB0byB0b2FzdCBzbG90IG5hbWVzXG5cbnZhciBwcm9wc1RvU2xvdHMgPSB7XG4gIHRvYXN0Q29udGVudDogJ2RlZmF1bHQnLFxuICB0aXRsZTogJ3RvYXN0LXRpdGxlJ1xufTsgLy8gLS0tIFV0aWxpdHkgbWV0aG9kcyAtLS1cbi8vIE1ldGhvZCB0byBmaWx0ZXIgb25seSByZWNvZ25pemVkIHByb3BzIHRoYXQgYXJlIG5vdCB1bmRlZmluZWRcblxudmFyIGZpbHRlck9wdGlvbnMgPSBmdW5jdGlvbiBmaWx0ZXJPcHRpb25zKG9wdGlvbnMpIHtcbiAgcmV0dXJuIEJBU0VfUFJPUFMucmVkdWNlKGZ1bmN0aW9uIChtZW1vLCBrZXkpIHtcbiAgICBpZiAoIWlzVW5kZWZpbmVkKG9wdGlvbnNba2V5XSkpIHtcbiAgICAgIG1lbW9ba2V5XSA9IG9wdGlvbnNba2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtbztcbiAgfSwge30pO1xufTsgLy8gTWV0aG9kIHRvIGluc3RhbGwgYCRidlRvYXN0YCBWTSBpbmplY3Rpb25cblxuXG52YXIgcGx1Z2luID0gZnVuY3Rpb24gcGx1Z2luKFZ1ZSkge1xuICAvLyBDcmVhdGUgYSBwcml2YXRlIHN1Yi1jb21wb25lbnQgY29uc3RydWN0b3IgdGhhdFxuICAvLyBleHRlbmRzIEJUb2FzdCBhbmQgc2VsZi1kZXN0cnVjdHMgYWZ0ZXIgaGlkZGVuXG4gIC8vIEB2dWUvY29tcG9uZW50XG4gIHZhciBCVG9hc3RQb3AgPSBWdWUuZXh0ZW5kKHtcbiAgICBuYW1lOiAnQlRvYXN0UG9wJyxcbiAgICBleHRlbmRzOiBCVG9hc3QsXG4gICAgZGVzdHJveWVkOiBmdW5jdGlvbiBkZXN0cm95ZWQoKSB7XG4gICAgICAvLyBNYWtlIHN1cmUgd2Ugbm90IGluIGRvY3VtZW50IGFueSBtb3JlXG4gICAgICBpZiAodGhpcy4kZWwgJiYgdGhpcy4kZWwucGFyZW50Tm9kZSkge1xuICAgICAgICB0aGlzLiRlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuJGVsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7IC8vIFNlbGYgZGVzdHJ1Y3QgaGFuZGxlclxuXG4gICAgICB2YXIgaGFuZGxlRGVzdHJveSA9IGZ1bmN0aW9uIGhhbmRsZURlc3Ryb3koKSB7XG4gICAgICAgIC8vIEVuc3VyZSB0aGUgdG9hc3QgaGFzIGJlZW4gZm9yY2UgaGlkZGVuXG4gICAgICAgIHNlbGYubG9jYWxTaG93ID0gZmFsc2U7XG4gICAgICAgIHNlbGYuZG9SZW5kZXIgPSBmYWxzZTtcbiAgICAgICAgc2VsZi4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHNlbGYuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vIEluIGEgYHJlcXVlc3RBRigpYCB0byByZWxlYXNlIGNvbnRyb2wgYmFjayB0byBhcHBsaWNhdGlvblxuICAgICAgICAgICAgLy8gYW5kIHRvIGFsbG93IHRoZSBwb3J0YWwtdGFyZ2V0IHRpbWUgdG8gcmVtb3ZlIHRoZSBjb250ZW50XG4gICAgICAgICAgICByZXF1ZXN0QUYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICBzZWxmLiRkZXN0cm95KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9OyAvLyBTZWxmIGRlc3RydWN0IGlmIHBhcmVudCBkZXN0cm95ZWRcblxuXG4gICAgICB0aGlzLiRwYXJlbnQuJG9uY2UoJ2hvb2s6ZGVzdHJveWVkJywgaGFuZGxlRGVzdHJveSk7IC8vIFNlbGYgZGVzdHJ1Y3QgYWZ0ZXIgaGlkZGVuXG5cbiAgICAgIHRoaXMuJG9uY2UoJ2hpZGRlbicsIGhhbmRsZURlc3Ryb3kpOyAvLyBTZWxmIGRlc3RydWN0IHdoZW4gdG9hc3RlciBpcyBkZXN0cm95ZWRcblxuICAgICAgdGhpcy5saXN0ZW5PblJvb3QoJ2J2Ojp0b2FzdGVyOjpkZXN0cm95ZWQnLCBmdW5jdGlvbiAodG9hc3Rlcikge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogaGFyZCB0byB0ZXN0ICovXG4gICAgICAgIGlmICh0b2FzdGVyID09PSBzZWxmLnRvYXN0ZXIpIHtcbiAgICAgICAgICBoYW5kbGVEZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7IC8vIFByaXZhdGUgbWV0aG9kIHRvIGdlbmVyYXRlIHRoZSBvbi1kZW1hbmQgdG9hc3RcblxuICB2YXIgbWFrZVRvYXN0ID0gZnVuY3Rpb24gbWFrZVRvYXN0KHByb3BzLCAkcGFyZW50KSB7XG4gICAgaWYgKHdhcm5Ob3RDbGllbnQoUFJPUF9OQU1FKSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybjtcbiAgICB9IC8vIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiBgQlRvYXN0UG9wYCBjb21wb25lbnRcblxuXG4gICAgdmFyIHRvYXN0ID0gbmV3IEJUb2FzdFBvcCh7XG4gICAgICAvLyBXZSBzZXQgcGFyZW50IGFzIHRoZSBsb2NhbCBWTSBzbyB0aGVzZSB0b2FzdHMgY2FuIGVtaXQgZXZlbnRzIG9uIHRoZVxuICAgICAgLy8gYXBwIGAkcm9vdGAsIGFuZCBpdCBlbnN1cmVzIGBCVG9hc3RgIGlzIGRlc3Ryb3llZCB3aGVuIHBhcmVudCBpcyBkZXN0cm95ZWRcbiAgICAgIHBhcmVudDogJHBhcmVudCxcbiAgICAgIHByb3BzRGF0YTogX29iamVjdFNwcmVhZCh7fSwgZmlsdGVyT3B0aW9ucyhnZXRDb21wb25lbnRDb25maWcoJ0JUb2FzdCcpIHx8IHt9KSwge30sIG9taXQocHJvcHMsIGtleXMocHJvcHNUb1Nsb3RzKSksIHtcbiAgICAgICAgLy8gUHJvcHMgdGhhdCBjYW4ndCBiZSBvdmVycmlkZGVuXG4gICAgICAgIHN0YXRpYzogZmFsc2UsXG4gICAgICAgIHZpc2libGU6IHRydWVcbiAgICAgIH0pXG4gICAgfSk7IC8vIENvbnZlcnQgY2VydGFpbiBwcm9wcyB0byBzbG90c1xuXG4gICAga2V5cyhwcm9wc1RvU2xvdHMpLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgIHZhciB2YWx1ZSA9IHByb3BzW3Byb3BdO1xuXG4gICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgICAvLyBDYW4gYmUgYSBzdHJpbmcsIG9yIGFycmF5IG9mIFZOb2Rlc1xuICAgICAgICBpZiAocHJvcCA9PT0gJ3RpdGxlJyAmJiBpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHRpdGxlIGlmIGl0IGlzIGEgc3RyaW5nLCB3ZSB3cmFwIGluIGEgPHN0cm9uZz5cbiAgICAgICAgICB2YWx1ZSA9IFskcGFyZW50LiRjcmVhdGVFbGVtZW50KCdzdHJvbmcnLCB7XG4gICAgICAgICAgICBjbGFzczogJ21yLTInXG4gICAgICAgICAgfSwgdmFsdWUpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRvYXN0LiRzbG90c1twcm9wc1RvU2xvdHNbcHJvcF1dID0gY29uY2F0KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gQ3JlYXRlIGEgbW91bnQgcG9pbnQgKGEgRElWKSBhbmQgbW91bnQgaXQgKHdoaWNoIHRyaWdnZXJzIHRoZSBzaG93KVxuXG4gICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTtcbiAgICB0b2FzdC4kbW91bnQoZGl2KTtcbiAgfTsgLy8gRGVjbGFyZSBCdlRvYXN0IGluc3RhbmNlIHByb3BlcnR5IGNsYXNzXG5cblxuICB2YXIgQnZUb2FzdCA9XG4gIC8qI19fUFVSRV9fKi9cbiAgZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEJ2VG9hc3Qodm0pIHtcbiAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBCdlRvYXN0KTtcblxuICAgICAgLy8gQXNzaWduIHRoZSBuZXcgcHJvcGVydGllcyB0byB0aGlzIGluc3RhbmNlXG4gICAgICBhc3NpZ24odGhpcywge1xuICAgICAgICBfdm06IHZtLFxuICAgICAgICBfcm9vdDogdm0uJHJvb3RcbiAgICAgIH0pOyAvLyBTZXQgdGhlc2UgcHJvcGVydGllcyBhcyByZWFkLW9ubHkgYW5kIG5vbi1lbnVtZXJhYmxlXG5cbiAgICAgIGRlZmluZVByb3BlcnRpZXModGhpcywge1xuICAgICAgICBfdm06IHJlYWRvbmx5RGVzY3JpcHRvcigpLFxuICAgICAgICBfcm9vdDogcmVhZG9ubHlEZXNjcmlwdG9yKClcbiAgICAgIH0pO1xuICAgIH0gLy8gLS0tIFB1YmxpYyBJbnN0YW5jZSBtZXRob2RzIC0tLVxuICAgIC8vIE9wZW5zIGEgdXNlciBkZWZpbmVkIHRvYXN0IGFuZCByZXR1cm5zIGltbWVkaWF0ZWx5XG5cblxuICAgIF9jcmVhdGVDbGFzcyhCdlRvYXN0LCBbe1xuICAgICAga2V5OiBcInRvYXN0XCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gdG9hc3QoY29udGVudCkge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgICAgICAgaWYgKCFjb250ZW50IHx8IHdhcm5Ob3RDbGllbnQoUFJPUF9OQU1FKSkge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbWFrZVRvYXN0KF9vYmplY3RTcHJlYWQoe30sIGZpbHRlck9wdGlvbnMob3B0aW9ucyksIHtcbiAgICAgICAgICB0b2FzdENvbnRlbnQ6IGNvbnRlbnRcbiAgICAgICAgfSksIHRoaXMuX3ZtKTtcbiAgICAgIH0gLy8gc2hvd3MgYSBgPGItdG9hc3Q+YCBjb21wb25lbnQgd2l0aCB0aGUgc3BlY2lmaWVkIElEXG5cbiAgICB9LCB7XG4gICAgICBrZXk6IFwic2hvd1wiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHNob3coaWQpIHtcbiAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgdGhpcy5fcm9vdC4kZW1pdCgnYnY6OnNob3c6OnRvYXN0JywgaWQpO1xuICAgICAgICB9XG4gICAgICB9IC8vIEhpZGUgYSB0b2FzdCB3aXRoIHNwZWNpZmllZCBJRCwgb3IgaWYgbm90IElEIGFsbCB0b2FzdHNcblxuICAgIH0sIHtcbiAgICAgIGtleTogXCJoaWRlXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gaGlkZSgpIHtcbiAgICAgICAgdmFyIGlkID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBudWxsO1xuXG4gICAgICAgIHRoaXMuX3Jvb3QuJGVtaXQoJ2J2OjpoaWRlOjp0b2FzdCcsIGlkKTtcbiAgICAgIH1cbiAgICB9XSk7XG5cbiAgICByZXR1cm4gQnZUb2FzdDtcbiAgfSgpOyAvLyBBZGQgb3VyIGluc3RhbmNlIG1peGluXG5cblxuICBWdWUubWl4aW4oe1xuICAgIGJlZm9yZUNyZWF0ZTogZnVuY3Rpb24gYmVmb3JlQ3JlYXRlKCkge1xuICAgICAgLy8gQmVjYXVzZSB3ZSBuZWVkIGFjY2VzcyB0byBgJHJvb3RgIGZvciBgJGVtaXRzYCwgYW5kIFZNIGZvciBwYXJlbnRpbmcsXG4gICAgICAvLyB3ZSBoYXZlIHRvIGNyZWF0ZSBhIGZyZXNoIGluc3RhbmNlIG9mIGBCdlRvYXN0YCBmb3IgZWFjaCBWTVxuICAgICAgdGhpc1tQUk9QX05BTUVfUFJJVl0gPSBuZXcgQnZUb2FzdCh0aGlzKTtcbiAgICB9XG4gIH0pOyAvLyBEZWZpbmUgb3VyIHJlYWQtb25seSBgJGJ2VG9hc3RgIGluc3RhbmNlIHByb3BlcnR5XG4gIC8vIFBsYWNlZCBpbiBhbiBpZiBqdXN0IGluIGNhc2UgaW4gSE1SIG1vZGVcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuXG4gIGlmICghVnVlLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eShQUk9QX05BTUUpKSB7XG4gICAgZGVmaW5lUHJvcGVydHkoVnVlLnByb3RvdHlwZSwgUFJPUF9OQU1FLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgaWYgKCF0aGlzIHx8ICF0aGlzW1BST1BfTkFNRV9QUklWXSkge1xuICAgICAgICAgIHdhcm4oXCInXCIuY29uY2F0KFBST1BfTkFNRSwgXCInIG11c3QgYmUgYWNjZXNzZWQgZnJvbSBhIFZ1ZSBpbnN0YW5jZSAndGhpcycgY29udGV4dFwiKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpc1tQUk9QX05BTUVfUFJJVl07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCB2YXIgQlZUb2FzdFBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgcGx1Z2luczoge1xuICAgIHBsdWdpbjogcGx1Z2luXG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdG9hc3QvaGVscGVycy9idi10b2FzdC5qc1xuLy8gbW9kdWxlIGlkID0gMjE3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///217\n"); /***/ }), /* 218 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return VBTooltip; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_get_scope_id__ = __webpack_require__(32);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_loose_equal__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_env__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__components_tooltip_helpers_bv_tooltip__ = __webpack_require__(82);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n // Key which we use to store tooltip object on element\n\nvar BV_TOOLTIP = '__BV_Tooltip__'; // Default trigger\n\nvar DefaultTrigger = 'hover focus'; // Valid event triggers\n\nvar validTriggers = {\n focus: true,\n hover: true,\n click: true,\n blur: true,\n manual: true\n}; // Directive modifier test regular expressions. Pre-compile for performance\n\nvar htmlRE = /^html$/i;\nvar noFadeRE = /^nofade$/i;\nvar placementRE = /^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/i;\nvar boundaryRE = /^(window|viewport|scrollParent)$/i;\nvar delayRE = /^d\\d+$/i;\nvar delayShowRE = /^ds\\d+$/i;\nvar delayHideRE = /^dh\\d+$/i;\nvar offsetRE = /^o-?\\d+$/i;\nvar variantRE = /^v-.+$/i; // Build a Tooltip config based on bindings (if any)\n// Arguments and modifiers take precedence over passed value config object\n\nvar parseBindings = function parseBindings(bindings, vnode)\n/* istanbul ignore next: not easy to test */\n{\n // We start out with a basic config\n var NAME = 'BTooltip'; // Default config\n\n var config = {\n title: undefined,\n trigger: '',\n // Default set below if needed\n placement: 'top',\n fallbackPlacement: 'flip',\n container: false,\n // Default of body\n animation: true,\n offset: 0,\n id: null,\n html: false,\n disabled: false,\n delay: Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'delay'),\n boundary: String(Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'boundary')),\n boundaryPadding: parseInt(Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'boundaryPadding'), 10) || 0,\n variant: Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant'),\n customClass: Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'customClass')\n }; // Process `bindings.value`\n\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"m\" /* isString */])(bindings.value) || Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"h\" /* isNumber */])(bindings.value)) {\n // Value is tooltip content (HTML optionally supported)\n config.title = bindings.value;\n } else if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"f\" /* isFunction */])(bindings.value)) {\n // Title generator function\n config.title = bindings.value;\n } else if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"j\" /* isPlainObject */])(bindings.value)) {\n // Value is config object, so merge\n config = _objectSpread({}, config, {}, bindings.value);\n } // If title is not provided, try title attribute\n\n\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"n\" /* isUndefined */])(config.title)) {\n // Try attribute\n var data = vnode.data || {};\n config.title = data.attrs && !Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"o\" /* isUndefinedOrNull */])(data.attrs.title) ? data.attrs.title : undefined;\n } // Normalize delay\n\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"j\" /* isPlainObject */])(config.delay)) {\n config.delay = {\n show: parseInt(config.delay, 10) || 0,\n hide: parseInt(config.delay, 10) || 0\n };\n } // If argument, assume element ID of container element\n\n\n if (bindings.arg) {\n // Element ID specified as arg\n // We must prepend '#' to become a CSS selector\n config.container = \"#\".concat(bindings.arg);\n } // Process modifiers\n\n\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_object__[\"j\" /* keys */])(bindings.modifiers).forEach(function (mod) {\n if (htmlRE.test(mod)) {\n // Title allows HTML\n config.html = true;\n } else if (noFadeRE.test(mod)) {\n // No animation\n config.animation = false;\n } else if (placementRE.test(mod)) {\n // Placement of tooltip\n config.placement = mod;\n } else if (boundaryRE.test(mod)) {\n // Boundary of tooltip\n mod = mod === 'scrollparent' ? 'scrollParent' : mod;\n config.boundary = mod;\n } else if (delayRE.test(mod)) {\n // Delay value\n var delay = parseInt(mod.slice(1), 10) || 0;\n config.delay.show = delay;\n config.delay.hide = delay;\n } else if (delayShowRE.test(mod)) {\n // Delay show value\n config.delay.show = parseInt(mod.slice(2), 10) || 0;\n } else if (delayHideRE.test(mod)) {\n // Delay hide value\n config.delay.hide = parseInt(mod.slice(2), 10) || 0;\n } else if (offsetRE.test(mod)) {\n // Offset value, negative allowed\n config.offset = parseInt(mod.slice(1), 10) || 0;\n } else if (variantRE.test(mod)) {\n // Variant\n config.variant = mod.slice(2) || null;\n }\n }); // Special handling of event trigger modifiers trigger is\n // a space separated list\n\n var selectedTriggers = {}; // Parse current config object trigger\n\n Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"b\" /* concat */])(config.trigger || '').filter(Boolean).join(' ').trim().toLowerCase().split(/\\s+/).forEach(function (trigger) {\n if (validTriggers[trigger]) {\n selectedTriggers[trigger] = true;\n }\n }); // Parse modifiers for triggers\n\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_object__[\"j\" /* keys */])(bindings.modifiers).forEach(function (mod) {\n mod = mod.toLowerCase();\n\n if (validTriggers[mod]) {\n // If modifier is a valid trigger\n selectedTriggers[mod] = true;\n }\n }); // Sanitize triggers\n\n config.trigger = Object(__WEBPACK_IMPORTED_MODULE_6__utils_object__[\"j\" /* keys */])(selectedTriggers).join(' ');\n\n if (config.trigger === 'blur') {\n // Blur by itself is useless, so convert it to 'focus'\n config.trigger = 'focus';\n }\n\n if (!config.trigger) {\n // Use default trigger\n config.trigger = DefaultTrigger;\n } // Return the config\n\n\n return config;\n}; // Add/update Tooltip on our element\n\n\nvar applyTooltip = function applyTooltip(el, bindings, vnode) {\n if (!__WEBPACK_IMPORTED_MODULE_4__utils_env__[\"j\" /* isBrowser */]) {\n /* istanbul ignore next */\n return;\n }\n\n var config = parseBindings(bindings, vnode);\n\n if (!el[BV_TOOLTIP]) {\n var $parent = vnode.context;\n el[BV_TOOLTIP] = new __WEBPACK_IMPORTED_MODULE_7__components_tooltip_helpers_bv_tooltip__[\"a\" /* BVTooltip */]({\n parent: $parent,\n // Add the parent's scoped style attribute data\n _scopeId: Object(__WEBPACK_IMPORTED_MODULE_0__utils_get_scope_id__[\"a\" /* default */])($parent, undefined)\n });\n el[BV_TOOLTIP].__bv_prev_data__ = {};\n el[BV_TOOLTIP].$on('show', function ()\n /* istanbul ignore next: for now */\n {\n // Before showing the tooltip, we update the title if it is a function\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"f\" /* isFunction */])(config.title)) {\n el[BV_TOOLTIP].updateData({\n title: config.title()\n });\n }\n });\n }\n\n var data = {\n title: config.title,\n triggers: config.trigger,\n placement: config.placement,\n fallbackPlacement: config.fallbackPlacement,\n variant: config.variant,\n customClass: config.customClass,\n container: config.container,\n boundary: config.boundary,\n delay: config.delay,\n offset: config.offset,\n noFade: !config.animation,\n id: config.id,\n disabled: config.disabled,\n html: config.html\n };\n var oldData = el[BV_TOOLTIP].__bv_prev_data__;\n el[BV_TOOLTIP].__bv_prev_data__ = data;\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__utils_loose_equal__[\"a\" /* default */])(data, oldData)) {\n // We only update the instance if data has changed\n var newData = {\n target: el\n };\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_object__[\"j\" /* keys */])(data).forEach(function (prop) {\n // We only pass data properties that have changed\n if (data[prop] !== oldData[prop]) {\n // if title is a function, we execute it here\n newData[prop] = prop === 'title' && Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"f\" /* isFunction */])(data[prop]) ? data[prop]() : data[prop];\n }\n });\n el[BV_TOOLTIP].updateData(newData);\n }\n}; // Remove Tooltip on our element\n\n\nvar removeTooltip = function removeTooltip(el) {\n if (el[BV_TOOLTIP]) {\n el[BV_TOOLTIP].$destroy();\n el[BV_TOOLTIP] = null;\n }\n\n delete el[BV_TOOLTIP];\n}; // Export our directive\n\n\nvar VBTooltip = {\n bind: function bind(el, bindings, vnode) {\n applyTooltip(el, bindings, vnode);\n },\n // We use `componentUpdated` here instead of `update`, as the former\n // waits until the containing component and children have finished updating\n componentUpdated: function componentUpdated(el, bindings, vnode) {\n // Performed in a `$nextTick()` to prevent render update loops\n vnode.context.$nextTick(function () {\n applyTooltip(el, bindings, vnode);\n });\n },\n unbind: function unbind(el) {\n removeTooltip(el);\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy90b29sdGlwL3Rvb2x0aXAuanM/MjY2NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTlKO0FBQ0E7QUFDTjtBQUNhO0FBQ1o7QUFDd0U7QUFDMUU7QUFDOEI7O0FBRXhFLGtDQUFrQzs7QUFFbEMsbUNBQW1DOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxpRkFBa0I7QUFDN0IscUJBQXFCLGlGQUFrQjtBQUN2Qyw4QkFBOEIsaUZBQWtCO0FBQ2hELGFBQWEsaUZBQWtCO0FBQy9CLGlCQUFpQixpRkFBa0I7QUFDbkMsSUFBSTs7QUFFSixNQUFNLHdFQUFRLG9CQUFvQix3RUFBUTtBQUMxQztBQUNBO0FBQ0EsR0FBRyxVQUFVLDBFQUFVO0FBQ3ZCO0FBQ0E7QUFDQSxHQUFHLFVBQVUsNkVBQWE7QUFDMUI7QUFDQSw2QkFBNkIsWUFBWTtBQUN6QyxHQUFHOzs7QUFHSCxNQUFNLDJFQUFXO0FBQ2pCO0FBQ0E7QUFDQSxrQ0FBa0MsaUZBQWlCO0FBQ25ELEdBQUc7OztBQUdILE9BQU8sNkVBQWE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdILEVBQUUsbUVBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7QUFDTDs7QUFFQSw0QkFBNEI7O0FBRTVCLEVBQUUsb0VBQU07QUFDUjtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUwsRUFBRSxtRUFBSTtBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMLG1CQUFtQixtRUFBSTs7QUFFdkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQSxFQUFFOzs7QUFHRjtBQUNBLE9BQU8sNkRBQVM7QUFDaEI7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSx5QkFBeUIseUZBQVM7QUFDbEM7QUFDQTtBQUNBLGdCQUFnQiw0RUFBUztBQUN6QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsMEVBQVU7QUFDcEI7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsT0FBTywyRUFBVTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksbUVBQUk7QUFDUjtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsMEVBQVU7QUFDdEQ7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOzs7QUFHSztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIyMTguanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgZ2V0U2NvcElkIGZyb20gJy4uLy4uL3V0aWxzL2dldC1zY29wZS1pZCc7XG5pbXBvcnQgbG9vc2VFcXVhbCBmcm9tICcuLi8uLi91dGlscy9sb29zZS1lcXVhbCc7XG5pbXBvcnQgeyBjb25jYXQgfSBmcm9tICcuLi8uLi91dGlscy9hcnJheSc7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi8uLi91dGlscy9jb25maWcnO1xuaW1wb3J0IHsgaXNCcm93c2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvZW52JztcbmltcG9ydCB7IGlzRnVuY3Rpb24sIGlzTnVtYmVyLCBpc1BsYWluT2JqZWN0LCBpc1N0cmluZywgaXNVbmRlZmluZWQsIGlzVW5kZWZpbmVkT3JOdWxsIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgeyBrZXlzIH0gZnJvbSAnLi4vLi4vdXRpbHMvb2JqZWN0JztcbmltcG9ydCB7IEJWVG9vbHRpcCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvdG9vbHRpcC9oZWxwZXJzL2J2LXRvb2x0aXAnOyAvLyBLZXkgd2hpY2ggd2UgdXNlIHRvIHN0b3JlIHRvb2x0aXAgb2JqZWN0IG9uIGVsZW1lbnRcblxudmFyIEJWX1RPT0xUSVAgPSAnX19CVl9Ub29sdGlwX18nOyAvLyBEZWZhdWx0IHRyaWdnZXJcblxudmFyIERlZmF1bHRUcmlnZ2VyID0gJ2hvdmVyIGZvY3VzJzsgLy8gVmFsaWQgZXZlbnQgdHJpZ2dlcnNcblxudmFyIHZhbGlkVHJpZ2dlcnMgPSB7XG4gIGZvY3VzOiB0cnVlLFxuICBob3ZlcjogdHJ1ZSxcbiAgY2xpY2s6IHRydWUsXG4gIGJsdXI6IHRydWUsXG4gIG1hbnVhbDogdHJ1ZVxufTsgLy8gRGlyZWN0aXZlIG1vZGlmaWVyIHRlc3QgcmVndWxhciBleHByZXNzaW9ucy4gUHJlLWNvbXBpbGUgZm9yIHBlcmZvcm1hbmNlXG5cbnZhciBodG1sUkUgPSAvXmh0bWwkL2k7XG52YXIgbm9GYWRlUkUgPSAvXm5vZmFkZSQvaTtcbnZhciBwbGFjZW1lbnRSRSA9IC9eKGF1dG98dG9wKGxlZnR8cmlnaHQpP3xib3R0b20obGVmdHxyaWdodCk/fGxlZnQodG9wfGJvdHRvbSk/fHJpZ2h0KHRvcHxib3R0b20pPykkL2k7XG52YXIgYm91bmRhcnlSRSA9IC9eKHdpbmRvd3x2aWV3cG9ydHxzY3JvbGxQYXJlbnQpJC9pO1xudmFyIGRlbGF5UkUgPSAvXmRcXGQrJC9pO1xudmFyIGRlbGF5U2hvd1JFID0gL15kc1xcZCskL2k7XG52YXIgZGVsYXlIaWRlUkUgPSAvXmRoXFxkKyQvaTtcbnZhciBvZmZzZXRSRSA9IC9eby0/XFxkKyQvaTtcbnZhciB2YXJpYW50UkUgPSAvXnYtLiskL2k7IC8vIEJ1aWxkIGEgVG9vbHRpcCBjb25maWcgYmFzZWQgb24gYmluZGluZ3MgKGlmIGFueSlcbi8vIEFyZ3VtZW50cyBhbmQgbW9kaWZpZXJzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHBhc3NlZCB2YWx1ZSBjb25maWcgb2JqZWN0XG5cbnZhciBwYXJzZUJpbmRpbmdzID0gZnVuY3Rpb24gcGFyc2VCaW5kaW5ncyhiaW5kaW5ncywgdm5vZGUpXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogbm90IGVhc3kgdG8gdGVzdCAqL1xue1xuICAvLyBXZSBzdGFydCBvdXQgd2l0aCBhIGJhc2ljIGNvbmZpZ1xuICB2YXIgTkFNRSA9ICdCVG9vbHRpcCc7IC8vIERlZmF1bHQgY29uZmlnXG5cbiAgdmFyIGNvbmZpZyA9IHtcbiAgICB0aXRsZTogdW5kZWZpbmVkLFxuICAgIHRyaWdnZXI6ICcnLFxuICAgIC8vIERlZmF1bHQgc2V0IGJlbG93IGlmIG5lZWRlZFxuICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgZmFsbGJhY2tQbGFjZW1lbnQ6ICdmbGlwJyxcbiAgICBjb250YWluZXI6IGZhbHNlLFxuICAgIC8vIERlZmF1bHQgb2YgYm9keVxuICAgIGFuaW1hdGlvbjogdHJ1ZSxcbiAgICBvZmZzZXQ6IDAsXG4gICAgaWQ6IG51bGwsXG4gICAgaHRtbDogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGRlbGF5OiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ2RlbGF5JyksXG4gICAgYm91bmRhcnk6IFN0cmluZyhnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ2JvdW5kYXJ5JykpLFxuICAgIGJvdW5kYXJ5UGFkZGluZzogcGFyc2VJbnQoZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdib3VuZGFyeVBhZGRpbmcnKSwgMTApIHx8IDAsXG4gICAgdmFyaWFudDogZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICd2YXJpYW50JyksXG4gICAgY3VzdG9tQ2xhc3M6IGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAnY3VzdG9tQ2xhc3MnKVxuICB9OyAvLyBQcm9jZXNzIGBiaW5kaW5ncy52YWx1ZWBcblxuICBpZiAoaXNTdHJpbmcoYmluZGluZ3MudmFsdWUpIHx8IGlzTnVtYmVyKGJpbmRpbmdzLnZhbHVlKSkge1xuICAgIC8vIFZhbHVlIGlzIHRvb2x0aXAgY29udGVudCAoSFRNTCBvcHRpb25hbGx5IHN1cHBvcnRlZClcbiAgICBjb25maWcudGl0bGUgPSBiaW5kaW5ncy52YWx1ZTtcbiAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKGJpbmRpbmdzLnZhbHVlKSkge1xuICAgIC8vIFRpdGxlIGdlbmVyYXRvciBmdW5jdGlvblxuICAgIGNvbmZpZy50aXRsZSA9IGJpbmRpbmdzLnZhbHVlO1xuICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QoYmluZGluZ3MudmFsdWUpKSB7XG4gICAgLy8gVmFsdWUgaXMgY29uZmlnIG9iamVjdCwgc28gbWVyZ2VcbiAgICBjb25maWcgPSBfb2JqZWN0U3ByZWFkKHt9LCBjb25maWcsIHt9LCBiaW5kaW5ncy52YWx1ZSk7XG4gIH0gLy8gSWYgdGl0bGUgaXMgbm90IHByb3ZpZGVkLCB0cnkgdGl0bGUgYXR0cmlidXRlXG5cblxuICBpZiAoaXNVbmRlZmluZWQoY29uZmlnLnRpdGxlKSkge1xuICAgIC8vIFRyeSBhdHRyaWJ1dGVcbiAgICB2YXIgZGF0YSA9IHZub2RlLmRhdGEgfHwge307XG4gICAgY29uZmlnLnRpdGxlID0gZGF0YS5hdHRycyAmJiAhaXNVbmRlZmluZWRPck51bGwoZGF0YS5hdHRycy50aXRsZSkgPyBkYXRhLmF0dHJzLnRpdGxlIDogdW5kZWZpbmVkO1xuICB9IC8vIE5vcm1hbGl6ZSBkZWxheVxuXG5cbiAgaWYgKCFpc1BsYWluT2JqZWN0KGNvbmZpZy5kZWxheSkpIHtcbiAgICBjb25maWcuZGVsYXkgPSB7XG4gICAgICBzaG93OiBwYXJzZUludChjb25maWcuZGVsYXksIDEwKSB8fCAwLFxuICAgICAgaGlkZTogcGFyc2VJbnQoY29uZmlnLmRlbGF5LCAxMCkgfHwgMFxuICAgIH07XG4gIH0gLy8gSWYgYXJndW1lbnQsIGFzc3VtZSBlbGVtZW50IElEIG9mIGNvbnRhaW5lciBlbGVtZW50XG5cblxuICBpZiAoYmluZGluZ3MuYXJnKSB7XG4gICAgLy8gRWxlbWVudCBJRCBzcGVjaWZpZWQgYXMgYXJnXG4gICAgLy8gV2UgbXVzdCBwcmVwZW5kICcjJyB0byBiZWNvbWUgYSBDU1Mgc2VsZWN0b3JcbiAgICBjb25maWcuY29udGFpbmVyID0gXCIjXCIuY29uY2F0KGJpbmRpbmdzLmFyZyk7XG4gIH0gLy8gUHJvY2VzcyBtb2RpZmllcnNcblxuXG4gIGtleXMoYmluZGluZ3MubW9kaWZpZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChtb2QpIHtcbiAgICBpZiAoaHRtbFJFLnRlc3QobW9kKSkge1xuICAgICAgLy8gVGl0bGUgYWxsb3dzIEhUTUxcbiAgICAgIGNvbmZpZy5odG1sID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKG5vRmFkZVJFLnRlc3QobW9kKSkge1xuICAgICAgLy8gTm8gYW5pbWF0aW9uXG4gICAgICBjb25maWcuYW5pbWF0aW9uID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChwbGFjZW1lbnRSRS50ZXN0KG1vZCkpIHtcbiAgICAgIC8vIFBsYWNlbWVudCBvZiB0b29sdGlwXG4gICAgICBjb25maWcucGxhY2VtZW50ID0gbW9kO1xuICAgIH0gZWxzZSBpZiAoYm91bmRhcnlSRS50ZXN0KG1vZCkpIHtcbiAgICAgIC8vIEJvdW5kYXJ5IG9mIHRvb2x0aXBcbiAgICAgIG1vZCA9IG1vZCA9PT0gJ3Njcm9sbHBhcmVudCcgPyAnc2Nyb2xsUGFyZW50JyA6IG1vZDtcbiAgICAgIGNvbmZpZy5ib3VuZGFyeSA9IG1vZDtcbiAgICB9IGVsc2UgaWYgKGRlbGF5UkUudGVzdChtb2QpKSB7XG4gICAgICAvLyBEZWxheSB2YWx1ZVxuICAgICAgdmFyIGRlbGF5ID0gcGFyc2VJbnQobW9kLnNsaWNlKDEpLCAxMCkgfHwgMDtcbiAgICAgIGNvbmZpZy5kZWxheS5zaG93ID0gZGVsYXk7XG4gICAgICBjb25maWcuZGVsYXkuaGlkZSA9IGRlbGF5O1xuICAgIH0gZWxzZSBpZiAoZGVsYXlTaG93UkUudGVzdChtb2QpKSB7XG4gICAgICAvLyBEZWxheSBzaG93IHZhbHVlXG4gICAgICBjb25maWcuZGVsYXkuc2hvdyA9IHBhcnNlSW50KG1vZC5zbGljZSgyKSwgMTApIHx8IDA7XG4gICAgfSBlbHNlIGlmIChkZWxheUhpZGVSRS50ZXN0KG1vZCkpIHtcbiAgICAgIC8vIERlbGF5IGhpZGUgdmFsdWVcbiAgICAgIGNvbmZpZy5kZWxheS5oaWRlID0gcGFyc2VJbnQobW9kLnNsaWNlKDIpLCAxMCkgfHwgMDtcbiAgICB9IGVsc2UgaWYgKG9mZnNldFJFLnRlc3QobW9kKSkge1xuICAgICAgLy8gT2Zmc2V0IHZhbHVlLCBuZWdhdGl2ZSBhbGxvd2VkXG4gICAgICBjb25maWcub2Zmc2V0ID0gcGFyc2VJbnQobW9kLnNsaWNlKDEpLCAxMCkgfHwgMDtcbiAgICB9IGVsc2UgaWYgKHZhcmlhbnRSRS50ZXN0KG1vZCkpIHtcbiAgICAgIC8vIFZhcmlhbnRcbiAgICAgIGNvbmZpZy52YXJpYW50ID0gbW9kLnNsaWNlKDIpIHx8IG51bGw7XG4gICAgfVxuICB9KTsgLy8gU3BlY2lhbCBoYW5kbGluZyBvZiBldmVudCB0cmlnZ2VyIG1vZGlmaWVycyB0cmlnZ2VyIGlzXG4gIC8vIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3RcblxuICB2YXIgc2VsZWN0ZWRUcmlnZ2VycyA9IHt9OyAvLyBQYXJzZSBjdXJyZW50IGNvbmZpZyBvYmplY3QgdHJpZ2dlclxuXG4gIGNvbmNhdChjb25maWcudHJpZ2dlciB8fCAnJykuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKS50cmltKCkudG9Mb3dlckNhc2UoKS5zcGxpdCgvXFxzKy8pLmZvckVhY2goZnVuY3Rpb24gKHRyaWdnZXIpIHtcbiAgICBpZiAodmFsaWRUcmlnZ2Vyc1t0cmlnZ2VyXSkge1xuICAgICAgc2VsZWN0ZWRUcmlnZ2Vyc1t0cmlnZ2VyXSA9IHRydWU7XG4gICAgfVxuICB9KTsgLy8gUGFyc2UgbW9kaWZpZXJzIGZvciB0cmlnZ2Vyc1xuXG4gIGtleXMoYmluZGluZ3MubW9kaWZpZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChtb2QpIHtcbiAgICBtb2QgPSBtb2QudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmICh2YWxpZFRyaWdnZXJzW21vZF0pIHtcbiAgICAgIC8vIElmIG1vZGlmaWVyIGlzIGEgdmFsaWQgdHJpZ2dlclxuICAgICAgc2VsZWN0ZWRUcmlnZ2Vyc1ttb2RdID0gdHJ1ZTtcbiAgICB9XG4gIH0pOyAvLyBTYW5pdGl6ZSB0cmlnZ2Vyc1xuXG4gIGNvbmZpZy50cmlnZ2VyID0ga2V5cyhzZWxlY3RlZFRyaWdnZXJzKS5qb2luKCcgJyk7XG5cbiAgaWYgKGNvbmZpZy50cmlnZ2VyID09PSAnYmx1cicpIHtcbiAgICAvLyBCbHVyIGJ5IGl0c2VsZiBpcyB1c2VsZXNzLCBzbyBjb252ZXJ0IGl0IHRvICdmb2N1cydcbiAgICBjb25maWcudHJpZ2dlciA9ICdmb2N1cyc7XG4gIH1cblxuICBpZiAoIWNvbmZpZy50cmlnZ2VyKSB7XG4gICAgLy8gVXNlIGRlZmF1bHQgdHJpZ2dlclxuICAgIGNvbmZpZy50cmlnZ2VyID0gRGVmYXVsdFRyaWdnZXI7XG4gIH0gLy8gUmV0dXJuIHRoZSBjb25maWdcblxuXG4gIHJldHVybiBjb25maWc7XG59OyAvLyBBZGQvdXBkYXRlIFRvb2x0aXAgb24gb3VyIGVsZW1lbnRcblxuXG52YXIgYXBwbHlUb29sdGlwID0gZnVuY3Rpb24gYXBwbHlUb29sdGlwKGVsLCBiaW5kaW5ncywgdm5vZGUpIHtcbiAgaWYgKCFpc0Jyb3dzZXIpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBjb25maWcgPSBwYXJzZUJpbmRpbmdzKGJpbmRpbmdzLCB2bm9kZSk7XG5cbiAgaWYgKCFlbFtCVl9UT09MVElQXSkge1xuICAgIHZhciAkcGFyZW50ID0gdm5vZGUuY29udGV4dDtcbiAgICBlbFtCVl9UT09MVElQXSA9IG5ldyBCVlRvb2x0aXAoe1xuICAgICAgcGFyZW50OiAkcGFyZW50LFxuICAgICAgLy8gQWRkIHRoZSBwYXJlbnQncyBzY29wZWQgc3R5bGUgYXR0cmlidXRlIGRhdGFcbiAgICAgIF9zY29wZUlkOiBnZXRTY29wSWQoJHBhcmVudCwgdW5kZWZpbmVkKVxuICAgIH0pO1xuICAgIGVsW0JWX1RPT0xUSVBdLl9fYnZfcHJldl9kYXRhX18gPSB7fTtcbiAgICBlbFtCVl9UT09MVElQXS4kb24oJ3Nob3cnLCBmdW5jdGlvbiAoKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBmb3Igbm93ICovXG4gICAge1xuICAgICAgLy8gQmVmb3JlIHNob3dpbmcgdGhlIHRvb2x0aXAsIHdlIHVwZGF0ZSB0aGUgdGl0bGUgaWYgaXQgaXMgYSBmdW5jdGlvblxuICAgICAgaWYgKGlzRnVuY3Rpb24oY29uZmlnLnRpdGxlKSkge1xuICAgICAgICBlbFtCVl9UT09MVElQXS51cGRhdGVEYXRhKHtcbiAgICAgICAgICB0aXRsZTogY29uZmlnLnRpdGxlKClcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB2YXIgZGF0YSA9IHtcbiAgICB0aXRsZTogY29uZmlnLnRpdGxlLFxuICAgIHRyaWdnZXJzOiBjb25maWcudHJpZ2dlcixcbiAgICBwbGFjZW1lbnQ6IGNvbmZpZy5wbGFjZW1lbnQsXG4gICAgZmFsbGJhY2tQbGFjZW1lbnQ6IGNvbmZpZy5mYWxsYmFja1BsYWNlbWVudCxcbiAgICB2YXJpYW50OiBjb25maWcudmFyaWFudCxcbiAgICBjdXN0b21DbGFzczogY29uZmlnLmN1c3RvbUNsYXNzLFxuICAgIGNvbnRhaW5lcjogY29uZmlnLmNvbnRhaW5lcixcbiAgICBib3VuZGFyeTogY29uZmlnLmJvdW5kYXJ5LFxuICAgIGRlbGF5OiBjb25maWcuZGVsYXksXG4gICAgb2Zmc2V0OiBjb25maWcub2Zmc2V0LFxuICAgIG5vRmFkZTogIWNvbmZpZy5hbmltYXRpb24sXG4gICAgaWQ6IGNvbmZpZy5pZCxcbiAgICBkaXNhYmxlZDogY29uZmlnLmRpc2FibGVkLFxuICAgIGh0bWw6IGNvbmZpZy5odG1sXG4gIH07XG4gIHZhciBvbGREYXRhID0gZWxbQlZfVE9PTFRJUF0uX19idl9wcmV2X2RhdGFfXztcbiAgZWxbQlZfVE9PTFRJUF0uX19idl9wcmV2X2RhdGFfXyA9IGRhdGE7XG5cbiAgaWYgKCFsb29zZUVxdWFsKGRhdGEsIG9sZERhdGEpKSB7XG4gICAgLy8gV2Ugb25seSB1cGRhdGUgdGhlIGluc3RhbmNlIGlmIGRhdGEgaGFzIGNoYW5nZWRcbiAgICB2YXIgbmV3RGF0YSA9IHtcbiAgICAgIHRhcmdldDogZWxcbiAgICB9O1xuICAgIGtleXMoZGF0YSkuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICAgICAgLy8gV2Ugb25seSBwYXNzIGRhdGEgcHJvcGVydGllcyB0aGF0IGhhdmUgY2hhbmdlZFxuICAgICAgaWYgKGRhdGFbcHJvcF0gIT09IG9sZERhdGFbcHJvcF0pIHtcbiAgICAgICAgLy8gaWYgdGl0bGUgaXMgYSBmdW5jdGlvbiwgd2UgZXhlY3V0ZSBpdCBoZXJlXG4gICAgICAgIG5ld0RhdGFbcHJvcF0gPSBwcm9wID09PSAndGl0bGUnICYmIGlzRnVuY3Rpb24oZGF0YVtwcm9wXSkgPyBkYXRhW3Byb3BdKCkgOiBkYXRhW3Byb3BdO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGVsW0JWX1RPT0xUSVBdLnVwZGF0ZURhdGEobmV3RGF0YSk7XG4gIH1cbn07IC8vIFJlbW92ZSBUb29sdGlwIG9uIG91ciBlbGVtZW50XG5cblxudmFyIHJlbW92ZVRvb2x0aXAgPSBmdW5jdGlvbiByZW1vdmVUb29sdGlwKGVsKSB7XG4gIGlmIChlbFtCVl9UT09MVElQXSkge1xuICAgIGVsW0JWX1RPT0xUSVBdLiRkZXN0cm95KCk7XG4gICAgZWxbQlZfVE9PTFRJUF0gPSBudWxsO1xuICB9XG5cbiAgZGVsZXRlIGVsW0JWX1RPT0xUSVBdO1xufTsgLy8gRXhwb3J0IG91ciBkaXJlY3RpdmVcblxuXG5leHBvcnQgdmFyIFZCVG9vbHRpcCA9IHtcbiAgYmluZDogZnVuY3Rpb24gYmluZChlbCwgYmluZGluZ3MsIHZub2RlKSB7XG4gICAgYXBwbHlUb29sdGlwKGVsLCBiaW5kaW5ncywgdm5vZGUpO1xuICB9LFxuICAvLyBXZSB1c2UgYGNvbXBvbmVudFVwZGF0ZWRgIGhlcmUgaW5zdGVhZCBvZiBgdXBkYXRlYCwgYXMgdGhlIGZvcm1lclxuICAvLyB3YWl0cyB1bnRpbCB0aGUgY29udGFpbmluZyBjb21wb25lbnQgYW5kIGNoaWxkcmVuIGhhdmUgZmluaXNoZWQgdXBkYXRpbmdcbiAgY29tcG9uZW50VXBkYXRlZDogZnVuY3Rpb24gY29tcG9uZW50VXBkYXRlZChlbCwgYmluZGluZ3MsIHZub2RlKSB7XG4gICAgLy8gUGVyZm9ybWVkIGluIGEgYCRuZXh0VGljaygpYCB0byBwcmV2ZW50IHJlbmRlciB1cGRhdGUgbG9vcHNcbiAgICB2bm9kZS5jb250ZXh0LiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICBhcHBseVRvb2x0aXAoZWwsIGJpbmRpbmdzLCB2bm9kZSk7XG4gICAgfSk7XG4gIH0sXG4gIHVuYmluZDogZnVuY3Rpb24gdW5iaW5kKGVsKSB7XG4gICAgcmVtb3ZlVG9vbHRpcChlbCk7XG4gIH1cbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy90b29sdGlwL3Rvb2x0aXAuanNcbi8vIG1vZHVsZSBpZCA9IDIxOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///218\n"); +eval("\n /*! \n * portal-vue © Thorsten Lünborg, 2019 \n * \n * Version: 2.1.6\n * \n * LICENCE: MIT \n * \n * https://github.com/linusborg/portal-vue\n * \n */\n\n\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Vue = _interopDefault(__webpack_require__(50));\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar inBrowser = typeof window !== 'undefined';\nfunction freeze(item) {\n if (Array.isArray(item) || _typeof(item) === 'object') {\n return Object.freeze(item);\n }\n\n return item;\n}\nfunction combinePassengers(transports) {\n var slotProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return transports.reduce(function (passengers, transport) {\n var temp = transport.passengers[0];\n var newPassengers = typeof temp === 'function' ? temp(slotProps) : transport.passengers;\n return passengers.concat(newPassengers);\n }, []);\n}\nfunction stableSort(array, compareFn) {\n return array.map(function (v, idx) {\n return [idx, v];\n }).sort(function (a, b) {\n return compareFn(a[1], b[1]) || a[0] - b[0];\n }).map(function (c) {\n return c[1];\n });\n}\nfunction pick(obj, keys) {\n return keys.reduce(function (acc, key) {\n if (obj.hasOwnProperty(key)) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\n\nvar transports = {};\nvar targets = {};\nvar sources = {};\nvar Wormhole = Vue.extend({\n data: function data() {\n return {\n transports: transports,\n targets: targets,\n sources: sources,\n trackInstances: inBrowser\n };\n },\n methods: {\n open: function open(transport) {\n if (!inBrowser) return;\n var to = transport.to,\n from = transport.from,\n passengers = transport.passengers,\n _transport$order = transport.order,\n order = _transport$order === void 0 ? Infinity : _transport$order;\n if (!to || !from || !passengers) return;\n var newTransport = {\n to: to,\n from: from,\n passengers: freeze(passengers),\n order: order\n };\n var keys = Object.keys(this.transports);\n\n if (keys.indexOf(to) === -1) {\n Vue.set(this.transports, to, []);\n }\n\n var currentIndex = this.$_getTransportIndex(newTransport); // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n\n var newTransports = this.transports[to].slice(0);\n\n if (currentIndex === -1) {\n newTransports.push(newTransport);\n } else {\n newTransports[currentIndex] = newTransport;\n }\n\n this.transports[to] = stableSort(newTransports, function (a, b) {\n return a.order - b.order;\n });\n },\n close: function close(transport) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var to = transport.to,\n from = transport.from;\n if (!to || !from && force === false) return;\n\n if (!this.transports[to]) {\n return;\n }\n\n if (force) {\n this.transports[to] = [];\n } else {\n var index = this.$_getTransportIndex(transport);\n\n if (index >= 0) {\n // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n var newTransports = this.transports[to].slice(0);\n newTransports.splice(index, 1);\n this.transports[to] = newTransports;\n }\n }\n },\n registerTarget: function registerTarget(target, vm, force) {\n if (!inBrowser) return;\n\n if (this.trackInstances && !force && this.targets[target]) {\n console.warn(\"[portal-vue]: Target \".concat(target, \" already exists\"));\n }\n\n this.$set(this.targets, target, Object.freeze([vm]));\n },\n unregisterTarget: function unregisterTarget(target) {\n this.$delete(this.targets, target);\n },\n registerSource: function registerSource(source, vm, force) {\n if (!inBrowser) return;\n\n if (this.trackInstances && !force && this.sources[source]) {\n console.warn(\"[portal-vue]: source \".concat(source, \" already exists\"));\n }\n\n this.$set(this.sources, source, Object.freeze([vm]));\n },\n unregisterSource: function unregisterSource(source) {\n this.$delete(this.sources, source);\n },\n hasTarget: function hasTarget(to) {\n return !!(this.targets[to] && this.targets[to][0]);\n },\n hasSource: function hasSource(to) {\n return !!(this.sources[to] && this.sources[to][0]);\n },\n hasContentFor: function hasContentFor(to) {\n return !!this.transports[to] && !!this.transports[to].length;\n },\n // Internal\n $_getTransportIndex: function $_getTransportIndex(_ref) {\n var to = _ref.to,\n from = _ref.from;\n\n for (var i in this.transports[to]) {\n if (this.transports[to][i].from === from) {\n return +i;\n }\n }\n\n return -1;\n }\n }\n});\nvar wormhole = new Wormhole(transports);\n\nvar _id = 1;\nvar Portal = Vue.extend({\n name: 'portal',\n props: {\n disabled: {\n type: Boolean\n },\n name: {\n type: String,\n default: function _default() {\n return String(_id++);\n }\n },\n order: {\n type: Number,\n default: 0\n },\n slim: {\n type: Boolean\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n },\n to: {\n type: String,\n default: function _default() {\n return String(Math.round(Math.random() * 10000000));\n }\n }\n },\n created: function created() {\n var _this = this;\n\n this.$nextTick(function () {\n wormhole.registerSource(_this.name, _this);\n });\n },\n mounted: function mounted() {\n if (!this.disabled) {\n this.sendUpdate();\n }\n },\n updated: function updated() {\n if (this.disabled) {\n this.clear();\n } else {\n this.sendUpdate();\n }\n },\n beforeDestroy: function beforeDestroy() {\n wormhole.unregisterSource(this.name);\n this.clear();\n },\n watch: {\n to: function to(newValue, oldValue) {\n oldValue && oldValue !== newValue && this.clear(oldValue);\n this.sendUpdate();\n }\n },\n methods: {\n clear: function clear(target) {\n var closer = {\n from: this.name,\n to: target || this.to\n };\n wormhole.close(closer);\n },\n normalizeSlots: function normalizeSlots() {\n return this.$scopedSlots.default ? [this.$scopedSlots.default] : this.$slots.default;\n },\n normalizeOwnChildren: function normalizeOwnChildren(children) {\n return typeof children === 'function' ? children(this.slotProps) : children;\n },\n sendUpdate: function sendUpdate() {\n var slotContent = this.normalizeSlots();\n\n if (slotContent) {\n var transport = {\n from: this.name,\n to: this.to,\n passengers: _toConsumableArray(slotContent),\n order: this.order\n };\n wormhole.open(transport);\n } else {\n this.clear();\n }\n }\n },\n render: function render(h) {\n var children = this.$slots.default || this.$scopedSlots.default || [];\n var Tag = this.tag;\n\n if (children && this.disabled) {\n return children.length <= 1 && this.slim ? this.normalizeOwnChildren(children)[0] : h(Tag, [this.normalizeOwnChildren(children)]);\n } else {\n return this.slim ? h() : h(Tag, {\n class: {\n 'v-portal': true\n },\n style: {\n display: 'none'\n },\n key: 'v-portal-placeholder'\n });\n }\n }\n});\n\nvar PortalTarget = Vue.extend({\n name: 'portalTarget',\n props: {\n multiple: {\n type: Boolean,\n default: false\n },\n name: {\n type: String,\n required: true\n },\n slim: {\n type: Boolean,\n default: false\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'div'\n },\n transition: {\n type: [String, Object, Function]\n }\n },\n data: function data() {\n return {\n transports: wormhole.transports,\n firstRender: true\n };\n },\n created: function created() {\n var _this = this;\n\n this.$nextTick(function () {\n wormhole.registerTarget(_this.name, _this);\n });\n },\n watch: {\n ownTransports: function ownTransports() {\n this.$emit('change', this.children().length > 0);\n },\n name: function name(newVal, oldVal) {\n /**\r\n * TODO\r\n * This should warn as well ...\r\n */\n wormhole.unregisterTarget(oldVal);\n wormhole.registerTarget(newVal, this);\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n if (this.transition) {\n this.$nextTick(function () {\n // only when we have a transition, because it causes a re-render\n _this2.firstRender = false;\n });\n }\n },\n beforeDestroy: function beforeDestroy() {\n wormhole.unregisterTarget(this.name);\n },\n computed: {\n ownTransports: function ownTransports() {\n var transports = this.transports[this.name] || [];\n\n if (this.multiple) {\n return transports;\n }\n\n return transports.length === 0 ? [] : [transports[transports.length - 1]];\n },\n passengers: function passengers() {\n return combinePassengers(this.ownTransports, this.slotProps);\n }\n },\n methods: {\n // can't be a computed prop because it has to \"react\" to $slot changes.\n children: function children() {\n return this.passengers.length !== 0 ? this.passengers : this.$scopedSlots.default ? this.$scopedSlots.default(this.slotProps) : this.$slots.default || [];\n },\n // can't be a computed prop because it has to \"react\" to this.children().\n noWrapper: function noWrapper() {\n var noWrapper = this.slim && !this.transition;\n\n if (noWrapper && this.children().length > 1) {\n console.warn('[portal-vue]: PortalTarget with `slim` option received more than one child element.');\n }\n\n return noWrapper;\n }\n },\n render: function render(h) {\n var noWrapper = this.noWrapper();\n var children = this.children();\n var Tag = this.transition || this.tag;\n return noWrapper ? children[0] : this.slim && !Tag ? h() : h(Tag, {\n props: {\n // if we have a transition component, pass the tag if it exists\n tag: this.transition && this.tag ? this.tag : undefined\n },\n class: {\n 'vue-portal-target': true\n }\n }, children);\n }\n});\n\nvar _id$1 = 0;\nvar portalProps = ['disabled', 'name', 'order', 'slim', 'slotProps', 'tag', 'to'];\nvar targetProps = ['multiple', 'transition'];\nvar MountingPortal = Vue.extend({\n name: 'MountingPortal',\n inheritAttrs: false,\n props: {\n append: {\n type: [Boolean, String]\n },\n bail: {\n type: Boolean\n },\n mountTo: {\n type: String,\n required: true\n },\n // Portal\n disabled: {\n type: Boolean\n },\n // name for the portal\n name: {\n type: String,\n default: function _default() {\n return 'mounted_' + String(_id$1++);\n }\n },\n order: {\n type: Number,\n default: 0\n },\n slim: {\n type: Boolean\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n },\n // name for the target\n to: {\n type: String,\n default: function _default() {\n return String(Math.round(Math.random() * 10000000));\n }\n },\n // Target\n multiple: {\n type: Boolean,\n default: false\n },\n targetSlim: {\n type: Boolean\n },\n targetSlotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n targetTag: {\n type: String,\n default: 'div'\n },\n transition: {\n type: [String, Object, Function]\n }\n },\n created: function created() {\n if (typeof document === 'undefined') return;\n var el = document.querySelector(this.mountTo);\n\n if (!el) {\n console.error(\"[portal-vue]: Mount Point '\".concat(this.mountTo, \"' not found in document\"));\n return;\n }\n\n var props = this.$props; // Target already exists\n\n if (wormhole.targets[props.name]) {\n if (props.bail) {\n console.warn(\"[portal-vue]: Target \".concat(props.name, \" is already mounted.\\n Aborting because 'bail: true' is set\"));\n } else {\n this.portalTarget = wormhole.targets[props.name];\n }\n\n return;\n }\n\n var append = props.append;\n\n if (append) {\n var type = typeof append === 'string' ? append : 'DIV';\n var mountEl = document.createElement(type);\n el.appendChild(mountEl);\n el = mountEl;\n } // get props for target from $props\n // we have to rename a few of them\n\n\n var _props = pick(this.$props, targetProps);\n\n _props.slim = this.targetSlim;\n _props.tag = this.targetTag;\n _props.slotProps = this.targetSlotProps;\n _props.name = this.to;\n this.portalTarget = new PortalTarget({\n el: el,\n parent: this.$parent || this,\n propsData: _props\n });\n },\n beforeDestroy: function beforeDestroy() {\n var target = this.portalTarget;\n\n if (this.append) {\n var el = target.$el;\n el.parentNode.removeChild(el);\n }\n\n target.$destroy();\n },\n render: function render(h) {\n if (!this.portalTarget) {\n console.warn(\"[portal-vue] Target wasn't mounted\");\n return h();\n } // if there's no \"manual\" scoped slot, so we create a <Portal> ourselves\n\n\n if (!this.$scopedSlots.manual) {\n var props = pick(this.$props, portalProps);\n return h(Portal, {\n props: props,\n attrs: this.$attrs,\n on: this.$listeners,\n scopedSlots: this.$scopedSlots\n }, this.$slots.default);\n } // else, we render the scoped slot\n\n\n var content = this.$scopedSlots.manual({\n to: this.to\n }); // if user used <template> for the scoped slot\n // content will be an array\n\n if (Array.isArray(content)) {\n content = content[0];\n }\n\n if (!content) return h();\n return content;\n }\n});\n\nfunction install(Vue$$1) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Vue$$1.component(options.portalName || 'Portal', Portal);\n Vue$$1.component(options.portalTargetName || 'PortalTarget', PortalTarget);\n Vue$$1.component(options.MountingPortalName || 'MountingPortal', MountingPortal);\n}\n\nvar index = {\n install: install\n};\n\nexports.default = index;\nexports.Portal = Portal;\nexports.PortalTarget = PortalTarget;\nexports.MountingPortal = MountingPortal;\nexports.Wormhole = wormhole;\n//# sourceMappingURL=portal-vue.common.js.map\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcG9ydGFsLXZ1ZS9kaXN0L3BvcnRhbC12dWUuY29tbW9uLmpzPzRkN2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVhOztBQUViLDhDQUE4QyxjQUFjOztBQUU1RCwrQkFBK0IsaUZBQWlGOztBQUVoSCwwQkFBMEIsbUJBQU8sQ0FBQyxFQUFLOztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpREFBaUQsZ0JBQWdCOztBQUVqRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRyxJQUFJO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsZ0VBQWdFOztBQUVoRTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRCQUE0Qjs7QUFFNUI7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLEtBQUssRUFBRTtBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjIxOC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuIC8qISBcbiAgKiBwb3J0YWwtdnVlIMKpIFRob3JzdGVuIEzDvG5ib3JnLCAyMDE5IFxuICAqIFxuICAqIFZlcnNpb246IDIuMS42XG4gICogXG4gICogTElDRU5DRTogTUlUIFxuICAqIFxuICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9saW51c2JvcmcvcG9ydGFsLXZ1ZVxuICAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuZnVuY3Rpb24gX2ludGVyb3BEZWZhdWx0IChleCkgeyByZXR1cm4gKGV4ICYmICh0eXBlb2YgZXggPT09ICdvYmplY3QnKSAmJiAnZGVmYXVsdCcgaW4gZXgpID8gZXhbJ2RlZmF1bHQnXSA6IGV4OyB9XG5cbnZhciBWdWUgPSBfaW50ZXJvcERlZmF1bHQocmVxdWlyZSgndnVlJykpO1xuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHtcbiAgICBfdHlwZW9mID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBfdHlwZW9mID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBfdHlwZW9mKG9iaik7XG59XG5cbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHtcbiAgcmV0dXJuIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfbm9uSXRlcmFibGVTcHJlYWQoKTtcbn1cblxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIGFycjJbaV0gPSBhcnJbaV07XG5cbiAgICByZXR1cm4gYXJyMjtcbiAgfVxufVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHtcbiAgaWYgKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoaXRlcikgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGl0ZXIpID09PSBcIltvYmplY3QgQXJndW1lbnRzXVwiKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTtcbn1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2VcIik7XG59XG5cbnZhciBpbkJyb3dzZXIgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbmZ1bmN0aW9uIGZyZWV6ZShpdGVtKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pIHx8IF90eXBlb2YoaXRlbSkgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUoaXRlbSk7XG4gIH1cblxuICByZXR1cm4gaXRlbTtcbn1cbmZ1bmN0aW9uIGNvbWJpbmVQYXNzZW5nZXJzKHRyYW5zcG9ydHMpIHtcbiAgdmFyIHNsb3RQcm9wcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gIHJldHVybiB0cmFuc3BvcnRzLnJlZHVjZShmdW5jdGlvbiAocGFzc2VuZ2VycywgdHJhbnNwb3J0KSB7XG4gICAgdmFyIHRlbXAgPSB0cmFuc3BvcnQucGFzc2VuZ2Vyc1swXTtcbiAgICB2YXIgbmV3UGFzc2VuZ2VycyA9IHR5cGVvZiB0ZW1wID09PSAnZnVuY3Rpb24nID8gdGVtcChzbG90UHJvcHMpIDogdHJhbnNwb3J0LnBhc3NlbmdlcnM7XG4gICAgcmV0dXJuIHBhc3NlbmdlcnMuY29uY2F0KG5ld1Bhc3NlbmdlcnMpO1xuICB9LCBbXSk7XG59XG5mdW5jdGlvbiBzdGFibGVTb3J0KGFycmF5LCBjb21wYXJlRm4pIHtcbiAgcmV0dXJuIGFycmF5Lm1hcChmdW5jdGlvbiAodiwgaWR4KSB7XG4gICAgcmV0dXJuIFtpZHgsIHZdO1xuICB9KS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIGNvbXBhcmVGbihhWzFdLCBiWzFdKSB8fCBhWzBdIC0gYlswXTtcbiAgfSkubWFwKGZ1bmN0aW9uIChjKSB7XG4gICAgcmV0dXJuIGNbMV07XG4gIH0pO1xufVxuZnVuY3Rpb24gcGljayhvYmosIGtleXMpIHtcbiAgcmV0dXJuIGtleXMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGtleSkge1xuICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgYWNjW2tleV0gPSBvYmpba2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG59XG5cbnZhciB0cmFuc3BvcnRzID0ge307XG52YXIgdGFyZ2V0cyA9IHt9O1xudmFyIHNvdXJjZXMgPSB7fTtcbnZhciBXb3JtaG9sZSA9IFZ1ZS5leHRlbmQoe1xuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0cmFuc3BvcnRzOiB0cmFuc3BvcnRzLFxuICAgICAgdGFyZ2V0czogdGFyZ2V0cyxcbiAgICAgIHNvdXJjZXM6IHNvdXJjZXMsXG4gICAgICB0cmFja0luc3RhbmNlczogaW5Ccm93c2VyXG4gICAgfTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIG9wZW46IGZ1bmN0aW9uIG9wZW4odHJhbnNwb3J0KSB7XG4gICAgICBpZiAoIWluQnJvd3NlcikgcmV0dXJuO1xuICAgICAgdmFyIHRvID0gdHJhbnNwb3J0LnRvLFxuICAgICAgICAgIGZyb20gPSB0cmFuc3BvcnQuZnJvbSxcbiAgICAgICAgICBwYXNzZW5nZXJzID0gdHJhbnNwb3J0LnBhc3NlbmdlcnMsXG4gICAgICAgICAgX3RyYW5zcG9ydCRvcmRlciA9IHRyYW5zcG9ydC5vcmRlcixcbiAgICAgICAgICBvcmRlciA9IF90cmFuc3BvcnQkb3JkZXIgPT09IHZvaWQgMCA/IEluZmluaXR5IDogX3RyYW5zcG9ydCRvcmRlcjtcbiAgICAgIGlmICghdG8gfHwgIWZyb20gfHwgIXBhc3NlbmdlcnMpIHJldHVybjtcbiAgICAgIHZhciBuZXdUcmFuc3BvcnQgPSB7XG4gICAgICAgIHRvOiB0byxcbiAgICAgICAgZnJvbTogZnJvbSxcbiAgICAgICAgcGFzc2VuZ2VyczogZnJlZXplKHBhc3NlbmdlcnMpLFxuICAgICAgICBvcmRlcjogb3JkZXJcbiAgICAgIH07XG4gICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMudHJhbnNwb3J0cyk7XG5cbiAgICAgIGlmIChrZXlzLmluZGV4T2YodG8pID09PSAtMSkge1xuICAgICAgICBWdWUuc2V0KHRoaXMudHJhbnNwb3J0cywgdG8sIFtdKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGN1cnJlbnRJbmRleCA9IHRoaXMuJF9nZXRUcmFuc3BvcnRJbmRleChuZXdUcmFuc3BvcnQpOyAvLyBDb3B5aW5nIHRoZSBhcnJheSBoZXJlIHNvIHRoYXQgdGhlIFBvcnRhbFRhcmdldCBjaGFuZ2UgZXZlbnQgd2lsbCBhY3R1YWxseSBjb250YWluIHR3byBkaXN0aW5jdCBhcnJheXNcblxuICAgICAgdmFyIG5ld1RyYW5zcG9ydHMgPSB0aGlzLnRyYW5zcG9ydHNbdG9dLnNsaWNlKDApO1xuXG4gICAgICBpZiAoY3VycmVudEluZGV4ID09PSAtMSkge1xuICAgICAgICBuZXdUcmFuc3BvcnRzLnB1c2gobmV3VHJhbnNwb3J0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1RyYW5zcG9ydHNbY3VycmVudEluZGV4XSA9IG5ld1RyYW5zcG9ydDtcbiAgICAgIH1cblxuICAgICAgdGhpcy50cmFuc3BvcnRzW3RvXSA9IHN0YWJsZVNvcnQobmV3VHJhbnNwb3J0cywgZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEub3JkZXIgLSBiLm9yZGVyO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBjbG9zZTogZnVuY3Rpb24gY2xvc2UodHJhbnNwb3J0KSB7XG4gICAgICB2YXIgZm9yY2UgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlO1xuICAgICAgdmFyIHRvID0gdHJhbnNwb3J0LnRvLFxuICAgICAgICAgIGZyb20gPSB0cmFuc3BvcnQuZnJvbTtcbiAgICAgIGlmICghdG8gfHwgIWZyb20gJiYgZm9yY2UgPT09IGZhbHNlKSByZXR1cm47XG5cbiAgICAgIGlmICghdGhpcy50cmFuc3BvcnRzW3RvXSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3JjZSkge1xuICAgICAgICB0aGlzLnRyYW5zcG9ydHNbdG9dID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLiRfZ2V0VHJhbnNwb3J0SW5kZXgodHJhbnNwb3J0KTtcblxuICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgIC8vIENvcHlpbmcgdGhlIGFycmF5IGhlcmUgc28gdGhhdCB0aGUgUG9ydGFsVGFyZ2V0IGNoYW5nZSBldmVudCB3aWxsIGFjdHVhbGx5IGNvbnRhaW4gdHdvIGRpc3RpbmN0IGFycmF5c1xuICAgICAgICAgIHZhciBuZXdUcmFuc3BvcnRzID0gdGhpcy50cmFuc3BvcnRzW3RvXS5zbGljZSgwKTtcbiAgICAgICAgICBuZXdUcmFuc3BvcnRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgdGhpcy50cmFuc3BvcnRzW3RvXSA9IG5ld1RyYW5zcG9ydHM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHJlZ2lzdGVyVGFyZ2V0OiBmdW5jdGlvbiByZWdpc3RlclRhcmdldCh0YXJnZXQsIHZtLCBmb3JjZSkge1xuICAgICAgaWYgKCFpbkJyb3dzZXIpIHJldHVybjtcblxuICAgICAgaWYgKHRoaXMudHJhY2tJbnN0YW5jZXMgJiYgIWZvcmNlICYmIHRoaXMudGFyZ2V0c1t0YXJnZXRdKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIltwb3J0YWwtdnVlXTogVGFyZ2V0IFwiLmNvbmNhdCh0YXJnZXQsIFwiIGFscmVhZHkgZXhpc3RzXCIpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy4kc2V0KHRoaXMudGFyZ2V0cywgdGFyZ2V0LCBPYmplY3QuZnJlZXplKFt2bV0pKTtcbiAgICB9LFxuICAgIHVucmVnaXN0ZXJUYXJnZXQ6IGZ1bmN0aW9uIHVucmVnaXN0ZXJUYXJnZXQodGFyZ2V0KSB7XG4gICAgICB0aGlzLiRkZWxldGUodGhpcy50YXJnZXRzLCB0YXJnZXQpO1xuICAgIH0sXG4gICAgcmVnaXN0ZXJTb3VyY2U6IGZ1bmN0aW9uIHJlZ2lzdGVyU291cmNlKHNvdXJjZSwgdm0sIGZvcmNlKSB7XG4gICAgICBpZiAoIWluQnJvd3NlcikgcmV0dXJuO1xuXG4gICAgICBpZiAodGhpcy50cmFja0luc3RhbmNlcyAmJiAhZm9yY2UgJiYgdGhpcy5zb3VyY2VzW3NvdXJjZV0pIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiW3BvcnRhbC12dWVdOiBzb3VyY2UgXCIuY29uY2F0KHNvdXJjZSwgXCIgYWxyZWFkeSBleGlzdHNcIikpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiRzZXQodGhpcy5zb3VyY2VzLCBzb3VyY2UsIE9iamVjdC5mcmVlemUoW3ZtXSkpO1xuICAgIH0sXG4gICAgdW5yZWdpc3RlclNvdXJjZTogZnVuY3Rpb24gdW5yZWdpc3RlclNvdXJjZShzb3VyY2UpIHtcbiAgICAgIHRoaXMuJGRlbGV0ZSh0aGlzLnNvdXJjZXMsIHNvdXJjZSk7XG4gICAgfSxcbiAgICBoYXNUYXJnZXQ6IGZ1bmN0aW9uIGhhc1RhcmdldCh0bykge1xuICAgICAgcmV0dXJuICEhKHRoaXMudGFyZ2V0c1t0b10gJiYgdGhpcy50YXJnZXRzW3RvXVswXSk7XG4gICAgfSxcbiAgICBoYXNTb3VyY2U6IGZ1bmN0aW9uIGhhc1NvdXJjZSh0bykge1xuICAgICAgcmV0dXJuICEhKHRoaXMuc291cmNlc1t0b10gJiYgdGhpcy5zb3VyY2VzW3RvXVswXSk7XG4gICAgfSxcbiAgICBoYXNDb250ZW50Rm9yOiBmdW5jdGlvbiBoYXNDb250ZW50Rm9yKHRvKSB7XG4gICAgICByZXR1cm4gISF0aGlzLnRyYW5zcG9ydHNbdG9dICYmICEhdGhpcy50cmFuc3BvcnRzW3RvXS5sZW5ndGg7XG4gICAgfSxcbiAgICAvLyBJbnRlcm5hbFxuICAgICRfZ2V0VHJhbnNwb3J0SW5kZXg6IGZ1bmN0aW9uICRfZ2V0VHJhbnNwb3J0SW5kZXgoX3JlZikge1xuICAgICAgdmFyIHRvID0gX3JlZi50byxcbiAgICAgICAgICBmcm9tID0gX3JlZi5mcm9tO1xuXG4gICAgICBmb3IgKHZhciBpIGluIHRoaXMudHJhbnNwb3J0c1t0b10pIHtcbiAgICAgICAgaWYgKHRoaXMudHJhbnNwb3J0c1t0b11baV0uZnJvbSA9PT0gZnJvbSkge1xuICAgICAgICAgIHJldHVybiAraTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICB9XG59KTtcbnZhciB3b3JtaG9sZSA9IG5ldyBXb3JtaG9sZSh0cmFuc3BvcnRzKTtcblxudmFyIF9pZCA9IDE7XG52YXIgUG9ydGFsID0gVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdwb3J0YWwnLFxuICBwcm9wczoge1xuICAgIGRpc2FibGVkOiB7XG4gICAgICB0eXBlOiBCb29sZWFuXG4gICAgfSxcbiAgICBuYW1lOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyhfaWQrKyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBvcmRlcjoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogMFxuICAgIH0sXG4gICAgc2xpbToge1xuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgc2xvdFByb3BzOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgdGFnOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnRElWJ1xuICAgIH0sXG4gICAgdG86IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gU3RyaW5nKE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDAwKSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICB3b3JtaG9sZS5yZWdpc3RlclNvdXJjZShfdGhpcy5uYW1lLCBfdGhpcyk7XG4gICAgfSk7XG4gIH0sXG4gIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnNlbmRVcGRhdGUoKTtcbiAgICB9XG4gIH0sXG4gIHVwZGF0ZWQ6IGZ1bmN0aW9uIHVwZGF0ZWQoKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZW5kVXBkYXRlKCk7XG4gICAgfVxuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIHdvcm1ob2xlLnVucmVnaXN0ZXJTb3VyY2UodGhpcy5uYW1lKTtcbiAgICB0aGlzLmNsZWFyKCk7XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgdG86IGZ1bmN0aW9uIHRvKG5ld1ZhbHVlLCBvbGRWYWx1ZSkge1xuICAgICAgb2xkVmFsdWUgJiYgb2xkVmFsdWUgIT09IG5ld1ZhbHVlICYmIHRoaXMuY2xlYXIob2xkVmFsdWUpO1xuICAgICAgdGhpcy5zZW5kVXBkYXRlKCk7XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgY2xlYXI6IGZ1bmN0aW9uIGNsZWFyKHRhcmdldCkge1xuICAgICAgdmFyIGNsb3NlciA9IHtcbiAgICAgICAgZnJvbTogdGhpcy5uYW1lLFxuICAgICAgICB0bzogdGFyZ2V0IHx8IHRoaXMudG9cbiAgICAgIH07XG4gICAgICB3b3JtaG9sZS5jbG9zZShjbG9zZXIpO1xuICAgIH0sXG4gICAgbm9ybWFsaXplU2xvdHM6IGZ1bmN0aW9uIG5vcm1hbGl6ZVNsb3RzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuJHNjb3BlZFNsb3RzLmRlZmF1bHQgPyBbdGhpcy4kc2NvcGVkU2xvdHMuZGVmYXVsdF0gOiB0aGlzLiRzbG90cy5kZWZhdWx0O1xuICAgIH0sXG4gICAgbm9ybWFsaXplT3duQ2hpbGRyZW46IGZ1bmN0aW9uIG5vcm1hbGl6ZU93bkNoaWxkcmVuKGNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nID8gY2hpbGRyZW4odGhpcy5zbG90UHJvcHMpIDogY2hpbGRyZW47XG4gICAgfSxcbiAgICBzZW5kVXBkYXRlOiBmdW5jdGlvbiBzZW5kVXBkYXRlKCkge1xuICAgICAgdmFyIHNsb3RDb250ZW50ID0gdGhpcy5ub3JtYWxpemVTbG90cygpO1xuXG4gICAgICBpZiAoc2xvdENvbnRlbnQpIHtcbiAgICAgICAgdmFyIHRyYW5zcG9ydCA9IHtcbiAgICAgICAgICBmcm9tOiB0aGlzLm5hbWUsXG4gICAgICAgICAgdG86IHRoaXMudG8sXG4gICAgICAgICAgcGFzc2VuZ2VyczogX3RvQ29uc3VtYWJsZUFycmF5KHNsb3RDb250ZW50KSxcbiAgICAgICAgICBvcmRlcjogdGhpcy5vcmRlclxuICAgICAgICB9O1xuICAgICAgICB3b3JtaG9sZS5vcGVuKHRyYW5zcG9ydCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy4kc2xvdHMuZGVmYXVsdCB8fCB0aGlzLiRzY29wZWRTbG90cy5kZWZhdWx0IHx8IFtdO1xuICAgIHZhciBUYWcgPSB0aGlzLnRhZztcblxuICAgIGlmIChjaGlsZHJlbiAmJiB0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gY2hpbGRyZW4ubGVuZ3RoIDw9IDEgJiYgdGhpcy5zbGltID8gdGhpcy5ub3JtYWxpemVPd25DaGlsZHJlbihjaGlsZHJlbilbMF0gOiBoKFRhZywgW3RoaXMubm9ybWFsaXplT3duQ2hpbGRyZW4oY2hpbGRyZW4pXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnNsaW0gPyBoKCkgOiBoKFRhZywge1xuICAgICAgICBjbGFzczoge1xuICAgICAgICAgICd2LXBvcnRhbCc6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBkaXNwbGF5OiAnbm9uZSdcbiAgICAgICAgfSxcbiAgICAgICAga2V5OiAndi1wb3J0YWwtcGxhY2Vob2xkZXInXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn0pO1xuXG52YXIgUG9ydGFsVGFyZ2V0ID0gVnVlLmV4dGVuZCh7XG4gIG5hbWU6ICdwb3J0YWxUYXJnZXQnLFxuICBwcm9wczoge1xuICAgIG11bHRpcGxlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIG5hbWU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgfSxcbiAgICBzbGltOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHNsb3RQcm9wczoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHRhZzoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ2RpdidcbiAgICB9LFxuICAgIHRyYW5zaXRpb246IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIE9iamVjdCwgRnVuY3Rpb25dXG4gICAgfVxuICB9LFxuICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0cmFuc3BvcnRzOiB3b3JtaG9sZS50cmFuc3BvcnRzLFxuICAgICAgZmlyc3RSZW5kZXI6IHRydWVcbiAgICB9O1xuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICB3b3JtaG9sZS5yZWdpc3RlclRhcmdldChfdGhpcy5uYW1lLCBfdGhpcyk7XG4gICAgfSk7XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgb3duVHJhbnNwb3J0czogZnVuY3Rpb24gb3duVHJhbnNwb3J0cygpIHtcbiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZScsIHRoaXMuY2hpbGRyZW4oKS5sZW5ndGggPiAwKTtcbiAgICB9LFxuICAgIG5hbWU6IGZ1bmN0aW9uIG5hbWUobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIC8qKlxyXG4gICAgICAgKiBUT0RPXHJcbiAgICAgICAqIFRoaXMgc2hvdWxkIHdhcm4gYXMgd2VsbCAuLi5cclxuICAgICAgICovXG4gICAgICB3b3JtaG9sZS51bnJlZ2lzdGVyVGFyZ2V0KG9sZFZhbCk7XG4gICAgICB3b3JtaG9sZS5yZWdpc3RlclRhcmdldChuZXdWYWwsIHRoaXMpO1xuICAgIH1cbiAgfSxcbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIGlmICh0aGlzLnRyYW5zaXRpb24pIHtcbiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gb25seSB3aGVuIHdlIGhhdmUgYSB0cmFuc2l0aW9uLCBiZWNhdXNlIGl0IGNhdXNlcyBhIHJlLXJlbmRlclxuICAgICAgICBfdGhpczIuZmlyc3RSZW5kZXIgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICB3b3JtaG9sZS51bnJlZ2lzdGVyVGFyZ2V0KHRoaXMubmFtZSk7XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgb3duVHJhbnNwb3J0czogZnVuY3Rpb24gb3duVHJhbnNwb3J0cygpIHtcbiAgICAgIHZhciB0cmFuc3BvcnRzID0gdGhpcy50cmFuc3BvcnRzW3RoaXMubmFtZV0gfHwgW107XG5cbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHJldHVybiB0cmFuc3BvcnRzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJhbnNwb3J0cy5sZW5ndGggPT09IDAgPyBbXSA6IFt0cmFuc3BvcnRzW3RyYW5zcG9ydHMubGVuZ3RoIC0gMV1dO1xuICAgIH0sXG4gICAgcGFzc2VuZ2VyczogZnVuY3Rpb24gcGFzc2VuZ2VycygpIHtcbiAgICAgIHJldHVybiBjb21iaW5lUGFzc2VuZ2Vycyh0aGlzLm93blRyYW5zcG9ydHMsIHRoaXMuc2xvdFByb3BzKTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICAvLyBjYW4ndCBiZSBhIGNvbXB1dGVkIHByb3AgYmVjYXVzZSBpdCBoYXMgdG8gXCJyZWFjdFwiIHRvICRzbG90IGNoYW5nZXMuXG4gICAgY2hpbGRyZW46IGZ1bmN0aW9uIGNoaWxkcmVuKCkge1xuICAgICAgcmV0dXJuIHRoaXMucGFzc2VuZ2Vycy5sZW5ndGggIT09IDAgPyB0aGlzLnBhc3NlbmdlcnMgOiB0aGlzLiRzY29wZWRTbG90cy5kZWZhdWx0ID8gdGhpcy4kc2NvcGVkU2xvdHMuZGVmYXVsdCh0aGlzLnNsb3RQcm9wcykgOiB0aGlzLiRzbG90cy5kZWZhdWx0IHx8IFtdO1xuICAgIH0sXG4gICAgLy8gY2FuJ3QgYmUgYSBjb21wdXRlZCBwcm9wIGJlY2F1c2UgaXQgaGFzIHRvIFwicmVhY3RcIiB0byB0aGlzLmNoaWxkcmVuKCkuXG4gICAgbm9XcmFwcGVyOiBmdW5jdGlvbiBub1dyYXBwZXIoKSB7XG4gICAgICB2YXIgbm9XcmFwcGVyID0gdGhpcy5zbGltICYmICF0aGlzLnRyYW5zaXRpb247XG5cbiAgICAgIGlmIChub1dyYXBwZXIgJiYgdGhpcy5jaGlsZHJlbigpLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbcG9ydGFsLXZ1ZV06IFBvcnRhbFRhcmdldCB3aXRoIGBzbGltYCBvcHRpb24gcmVjZWl2ZWQgbW9yZSB0aGFuIG9uZSBjaGlsZCBlbGVtZW50LicpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbm9XcmFwcGVyO1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBub1dyYXBwZXIgPSB0aGlzLm5vV3JhcHBlcigpO1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4oKTtcbiAgICB2YXIgVGFnID0gdGhpcy50cmFuc2l0aW9uIHx8IHRoaXMudGFnO1xuICAgIHJldHVybiBub1dyYXBwZXIgPyBjaGlsZHJlblswXSA6IHRoaXMuc2xpbSAmJiAhVGFnID8gaCgpIDogaChUYWcsIHtcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIC8vIGlmIHdlIGhhdmUgYSB0cmFuc2l0aW9uIGNvbXBvbmVudCwgcGFzcyB0aGUgdGFnIGlmIGl0IGV4aXN0c1xuICAgICAgICB0YWc6IHRoaXMudHJhbnNpdGlvbiAmJiB0aGlzLnRhZyA/IHRoaXMudGFnIDogdW5kZWZpbmVkXG4gICAgICB9LFxuICAgICAgY2xhc3M6IHtcbiAgICAgICAgJ3Z1ZS1wb3J0YWwtdGFyZ2V0JzogdHJ1ZVxuICAgICAgfVxuICAgIH0sIGNoaWxkcmVuKTtcbiAgfVxufSk7XG5cbnZhciBfaWQkMSA9IDA7XG52YXIgcG9ydGFsUHJvcHMgPSBbJ2Rpc2FibGVkJywgJ25hbWUnLCAnb3JkZXInLCAnc2xpbScsICdzbG90UHJvcHMnLCAndGFnJywgJ3RvJ107XG52YXIgdGFyZ2V0UHJvcHMgPSBbJ211bHRpcGxlJywgJ3RyYW5zaXRpb24nXTtcbnZhciBNb3VudGluZ1BvcnRhbCA9IFZ1ZS5leHRlbmQoe1xuICBuYW1lOiAnTW91bnRpbmdQb3J0YWwnLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBwcm9wczoge1xuICAgIGFwcGVuZDoge1xuICAgICAgdHlwZTogW0Jvb2xlYW4sIFN0cmluZ11cbiAgICB9LFxuICAgIGJhaWw6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIG1vdW50VG86IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgfSxcbiAgICAvLyBQb3J0YWxcbiAgICBkaXNhYmxlZDoge1xuICAgICAgdHlwZTogQm9vbGVhblxuICAgIH0sXG4gICAgLy8gbmFtZSBmb3IgdGhlIHBvcnRhbFxuICAgIG5hbWU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gJ21vdW50ZWRfJyArIFN0cmluZyhfaWQkMSsrKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9yZGVyOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiAwXG4gICAgfSxcbiAgICBzbGltOiB7XG4gICAgICB0eXBlOiBCb29sZWFuXG4gICAgfSxcbiAgICBzbG90UHJvcHM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICB0YWc6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdESVYnXG4gICAgfSxcbiAgICAvLyBuYW1lIGZvciB0aGUgdGFyZ2V0XG4gICAgdG86IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gU3RyaW5nKE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDAwKSk7XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyBUYXJnZXRcbiAgICBtdWx0aXBsZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICB0YXJnZXRTbGltOiB7XG4gICAgICB0eXBlOiBCb29sZWFuXG4gICAgfSxcbiAgICB0YXJnZXRTbG90UHJvcHM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICB0YXJnZXRUYWc6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdkaXYnXG4gICAgfSxcbiAgICB0cmFuc2l0aW9uOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3QsIEZ1bmN0aW9uXVxuICAgIH1cbiAgfSxcbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHtcbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgIHZhciBlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5tb3VudFRvKTtcblxuICAgIGlmICghZWwpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJbcG9ydGFsLXZ1ZV06IE1vdW50IFBvaW50ICdcIi5jb25jYXQodGhpcy5tb3VudFRvLCBcIicgbm90IGZvdW5kIGluIGRvY3VtZW50XCIpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcHJvcHMgPSB0aGlzLiRwcm9wczsgLy8gVGFyZ2V0IGFscmVhZHkgZXhpc3RzXG5cbiAgICBpZiAod29ybWhvbGUudGFyZ2V0c1twcm9wcy5uYW1lXSkge1xuICAgICAgaWYgKHByb3BzLmJhaWwpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiW3BvcnRhbC12dWVdOiBUYXJnZXQgXCIuY29uY2F0KHByb3BzLm5hbWUsIFwiIGlzIGFscmVhZHkgbW91bnRlZC5cXG4gICAgICAgIEFib3J0aW5nIGJlY2F1c2UgJ2JhaWw6IHRydWUnIGlzIHNldFwiKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBvcnRhbFRhcmdldCA9IHdvcm1ob2xlLnRhcmdldHNbcHJvcHMubmFtZV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgYXBwZW5kID0gcHJvcHMuYXBwZW5kO1xuXG4gICAgaWYgKGFwcGVuZCkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgYXBwZW5kID09PSAnc3RyaW5nJyA/IGFwcGVuZCA6ICdESVYnO1xuICAgICAgdmFyIG1vdW50RWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHR5cGUpO1xuICAgICAgZWwuYXBwZW5kQ2hpbGQobW91bnRFbCk7XG4gICAgICBlbCA9IG1vdW50RWw7XG4gICAgfSAvLyBnZXQgcHJvcHMgZm9yIHRhcmdldCBmcm9tICRwcm9wc1xuICAgIC8vIHdlIGhhdmUgdG8gcmVuYW1lIGEgZmV3IG9mIHRoZW1cblxuXG4gICAgdmFyIF9wcm9wcyA9IHBpY2sodGhpcy4kcHJvcHMsIHRhcmdldFByb3BzKTtcblxuICAgIF9wcm9wcy5zbGltID0gdGhpcy50YXJnZXRTbGltO1xuICAgIF9wcm9wcy50YWcgPSB0aGlzLnRhcmdldFRhZztcbiAgICBfcHJvcHMuc2xvdFByb3BzID0gdGhpcy50YXJnZXRTbG90UHJvcHM7XG4gICAgX3Byb3BzLm5hbWUgPSB0aGlzLnRvO1xuICAgIHRoaXMucG9ydGFsVGFyZ2V0ID0gbmV3IFBvcnRhbFRhcmdldCh7XG4gICAgICBlbDogZWwsXG4gICAgICBwYXJlbnQ6IHRoaXMuJHBhcmVudCB8fCB0aGlzLFxuICAgICAgcHJvcHNEYXRhOiBfcHJvcHNcbiAgICB9KTtcbiAgfSxcbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHtcbiAgICB2YXIgdGFyZ2V0ID0gdGhpcy5wb3J0YWxUYXJnZXQ7XG5cbiAgICBpZiAodGhpcy5hcHBlbmQpIHtcbiAgICAgIHZhciBlbCA9IHRhcmdldC4kZWw7XG4gICAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcbiAgICB9XG5cbiAgICB0YXJnZXQuJGRlc3Ryb3koKTtcbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIGlmICghdGhpcy5wb3J0YWxUYXJnZXQpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIltwb3J0YWwtdnVlXSBUYXJnZXQgd2Fzbid0IG1vdW50ZWRcIik7XG4gICAgICByZXR1cm4gaCgpO1xuICAgIH0gLy8gaWYgdGhlcmUncyBubyBcIm1hbnVhbFwiIHNjb3BlZCBzbG90LCBzbyB3ZSBjcmVhdGUgYSA8UG9ydGFsPiBvdXJzZWx2ZXNcblxuXG4gICAgaWYgKCF0aGlzLiRzY29wZWRTbG90cy5tYW51YWwpIHtcbiAgICAgIHZhciBwcm9wcyA9IHBpY2sodGhpcy4kcHJvcHMsIHBvcnRhbFByb3BzKTtcbiAgICAgIHJldHVybiBoKFBvcnRhbCwge1xuICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICAgIGF0dHJzOiB0aGlzLiRhdHRycyxcbiAgICAgICAgb246IHRoaXMuJGxpc3RlbmVycyxcbiAgICAgICAgc2NvcGVkU2xvdHM6IHRoaXMuJHNjb3BlZFNsb3RzXG4gICAgICB9LCB0aGlzLiRzbG90cy5kZWZhdWx0KTtcbiAgICB9IC8vIGVsc2UsIHdlIHJlbmRlciB0aGUgc2NvcGVkIHNsb3RcblxuXG4gICAgdmFyIGNvbnRlbnQgPSB0aGlzLiRzY29wZWRTbG90cy5tYW51YWwoe1xuICAgICAgdG86IHRoaXMudG9cbiAgICB9KTsgLy8gaWYgdXNlciB1c2VkIDx0ZW1wbGF0ZT4gZm9yIHRoZSBzY29wZWQgc2xvdFxuICAgIC8vIGNvbnRlbnQgd2lsbCBiZSBhbiBhcnJheVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29udGVudCkpIHtcbiAgICAgIGNvbnRlbnQgPSBjb250ZW50WzBdO1xuICAgIH1cblxuICAgIGlmICghY29udGVudCkgcmV0dXJuIGgoKTtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGluc3RhbGwoVnVlJCQxKSB7XG4gIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgVnVlJCQxLmNvbXBvbmVudChvcHRpb25zLnBvcnRhbE5hbWUgfHwgJ1BvcnRhbCcsIFBvcnRhbCk7XG4gIFZ1ZSQkMS5jb21wb25lbnQob3B0aW9ucy5wb3J0YWxUYXJnZXROYW1lIHx8ICdQb3J0YWxUYXJnZXQnLCBQb3J0YWxUYXJnZXQpO1xuICBWdWUkJDEuY29tcG9uZW50KG9wdGlvbnMuTW91bnRpbmdQb3J0YWxOYW1lIHx8ICdNb3VudGluZ1BvcnRhbCcsIE1vdW50aW5nUG9ydGFsKTtcbn1cblxudmFyIGluZGV4ID0ge1xuICBpbnN0YWxsOiBpbnN0YWxsXG59O1xuXG5leHBvcnRzLmRlZmF1bHQgPSBpbmRleDtcbmV4cG9ydHMuUG9ydGFsID0gUG9ydGFsO1xuZXhwb3J0cy5Qb3J0YWxUYXJnZXQgPSBQb3J0YWxUYXJnZXQ7XG5leHBvcnRzLk1vdW50aW5nUG9ydGFsID0gTW91bnRpbmdQb3J0YWw7XG5leHBvcnRzLldvcm1ob2xlID0gd29ybWhvbGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb3J0YWwtdnVlLmNvbW1vbi5qcy5tYXBcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3BvcnRhbC12dWUvZGlzdC9wb3J0YWwtdnVlLmNvbW1vbi5qc1xuLy8gbW9kdWxlIGlkID0gMjE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///218\n"); /***/ }), /* 219 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return VBModalPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__modal__ = __webpack_require__(79);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport VBModal */\n\n\nvar VBModalPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n directives: {\n VBModal: __WEBPACK_IMPORTED_MODULE_0__modal__[\"a\" /* VBModal */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy9tb2RhbC9pbmRleC5qcz84M2M3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ2tCO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsYUFBYSx1REFBTztBQUNwQjtBQUNBLENBQUMiLCJmaWxlIjoiMjE5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVkJNb2RhbCB9IGZyb20gJy4vbW9kYWwnO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIFZCTW9kYWxQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGRpcmVjdGl2ZXM6IHtcbiAgICBWQk1vZGFsOiBWQk1vZGFsXG4gIH1cbn0pO1xuZXhwb3J0IHsgVkJNb2RhbFBsdWdpbiwgVkJNb2RhbCB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2RpcmVjdGl2ZXMvbW9kYWwvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDIxOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///219\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return TooltipPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tooltip__ = __webpack_require__(81);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__directives_tooltip__ = __webpack_require__(93);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport BTooltip */\n\n\n\nvar TooltipPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_2__utils_plugins__[\"b\" /* pluginFactory */])({\n components: {\n BTooltip: __WEBPACK_IMPORTED_MODULE_0__tooltip__[\"a\" /* BTooltip */]\n },\n plugins: {\n VBTooltipPlugin: __WEBPACK_IMPORTED_MODULE_1__directives_tooltip__[\"a\" /* VBTooltipPlugin */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90b29sdGlwL2luZGV4LmpzPzE5NTIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFxQztBQUNzQjtBQUNQO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsY0FBYywwREFBUTtBQUN0QixHQUFHO0FBQ0g7QUFDQSxxQkFBcUIsNEVBQWU7QUFDcEM7QUFDQSxDQUFDIiwiZmlsZSI6IjIxOS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJUb29sdGlwIH0gZnJvbSAnLi90b29sdGlwJztcbmltcG9ydCB7IFZCVG9vbHRpcFBsdWdpbiB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdG9vbHRpcCc7XG5pbXBvcnQgeyBwbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucyc7XG52YXIgVG9vbHRpcFBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgY29tcG9uZW50czoge1xuICAgIEJUb29sdGlwOiBCVG9vbHRpcFxuICB9LFxuICBwbHVnaW5zOiB7XG4gICAgVkJUb29sdGlwUGx1Z2luOiBWQlRvb2x0aXBQbHVnaW5cbiAgfVxufSk7XG5leHBvcnQgeyBUb29sdGlwUGx1Z2luLCBCVG9vbHRpcCB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdG9vbHRpcC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMjE5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///219\n"); /***/ }), /* 220 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return VBScrollspyPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__scrollspy__ = __webpack_require__(221);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport VBScrollspy */\n\n\nvar VBScrollspyPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n directives: {\n VBScrollspy: __WEBPACK_IMPORTED_MODULE_0__scrollspy__[\"a\" /* VBScrollspy */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy9zY3JvbGxzcHkvaW5kZXguanM/N2U5MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwQztBQUNVO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsaUJBQWlCLCtEQUFXO0FBQzVCO0FBQ0EsQ0FBQyIsImZpbGUiOiIyMjAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWQlNjcm9sbHNweSB9IGZyb20gJy4vc2Nyb2xsc3B5JztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBWQlNjcm9sbHNweVBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgZGlyZWN0aXZlczoge1xuICAgIFZCU2Nyb2xsc3B5OiBWQlNjcm9sbHNweVxuICB9XG59KTtcbmV4cG9ydCB7IFZCU2Nyb2xsc3B5UGx1Z2luLCBWQlNjcm9sbHNweSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2RpcmVjdGl2ZXMvc2Nyb2xsc3B5L2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAyMjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///220\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return VBTooltip; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_get_scope_id__ = __webpack_require__(32);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_loose_equal__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_env__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__components_tooltip_helpers_bv_tooltip__ = __webpack_require__(82);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n\n\n // Key which we use to store tooltip object on element\n\nvar BV_TOOLTIP = '__BV_Tooltip__'; // Default trigger\n\nvar DefaultTrigger = 'hover focus'; // Valid event triggers\n\nvar validTriggers = {\n focus: true,\n hover: true,\n click: true,\n blur: true,\n manual: true\n}; // Directive modifier test regular expressions. Pre-compile for performance\n\nvar htmlRE = /^html$/i;\nvar noFadeRE = /^nofade$/i;\nvar placementRE = /^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/i;\nvar boundaryRE = /^(window|viewport|scrollParent)$/i;\nvar delayRE = /^d\\d+$/i;\nvar delayShowRE = /^ds\\d+$/i;\nvar delayHideRE = /^dh\\d+$/i;\nvar offsetRE = /^o-?\\d+$/i;\nvar variantRE = /^v-.+$/i; // Build a Tooltip config based on bindings (if any)\n// Arguments and modifiers take precedence over passed value config object\n\nvar parseBindings = function parseBindings(bindings, vnode)\n/* istanbul ignore next: not easy to test */\n{\n // We start out with a basic config\n var NAME = 'BTooltip'; // Default config\n\n var config = {\n title: undefined,\n trigger: '',\n // Default set below if needed\n placement: 'top',\n fallbackPlacement: 'flip',\n container: false,\n // Default of body\n animation: true,\n offset: 0,\n id: null,\n html: false,\n disabled: false,\n delay: Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'delay'),\n boundary: String(Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'boundary')),\n boundaryPadding: parseInt(Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'boundaryPadding'), 10) || 0,\n variant: Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'variant'),\n customClass: Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])(NAME, 'customClass')\n }; // Process `bindings.value`\n\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"m\" /* isString */])(bindings.value) || Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"h\" /* isNumber */])(bindings.value)) {\n // Value is tooltip content (HTML optionally supported)\n config.title = bindings.value;\n } else if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"f\" /* isFunction */])(bindings.value)) {\n // Title generator function\n config.title = bindings.value;\n } else if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"j\" /* isPlainObject */])(bindings.value)) {\n // Value is config object, so merge\n config = _objectSpread({}, config, {}, bindings.value);\n } // If title is not provided, try title attribute\n\n\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"n\" /* isUndefined */])(config.title)) {\n // Try attribute\n var data = vnode.data || {};\n config.title = data.attrs && !Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"o\" /* isUndefinedOrNull */])(data.attrs.title) ? data.attrs.title : undefined;\n } // Normalize delay\n\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"j\" /* isPlainObject */])(config.delay)) {\n config.delay = {\n show: parseInt(config.delay, 10) || 0,\n hide: parseInt(config.delay, 10) || 0\n };\n } // If argument, assume element ID of container element\n\n\n if (bindings.arg) {\n // Element ID specified as arg\n // We must prepend '#' to become a CSS selector\n config.container = \"#\".concat(bindings.arg);\n } // Process modifiers\n\n\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_object__[\"j\" /* keys */])(bindings.modifiers).forEach(function (mod) {\n if (htmlRE.test(mod)) {\n // Title allows HTML\n config.html = true;\n } else if (noFadeRE.test(mod)) {\n // No animation\n config.animation = false;\n } else if (placementRE.test(mod)) {\n // Placement of tooltip\n config.placement = mod;\n } else if (boundaryRE.test(mod)) {\n // Boundary of tooltip\n mod = mod === 'scrollparent' ? 'scrollParent' : mod;\n config.boundary = mod;\n } else if (delayRE.test(mod)) {\n // Delay value\n var delay = parseInt(mod.slice(1), 10) || 0;\n config.delay.show = delay;\n config.delay.hide = delay;\n } else if (delayShowRE.test(mod)) {\n // Delay show value\n config.delay.show = parseInt(mod.slice(2), 10) || 0;\n } else if (delayHideRE.test(mod)) {\n // Delay hide value\n config.delay.hide = parseInt(mod.slice(2), 10) || 0;\n } else if (offsetRE.test(mod)) {\n // Offset value, negative allowed\n config.offset = parseInt(mod.slice(1), 10) || 0;\n } else if (variantRE.test(mod)) {\n // Variant\n config.variant = mod.slice(2) || null;\n }\n }); // Special handling of event trigger modifiers trigger is\n // a space separated list\n\n var selectedTriggers = {}; // Parse current config object trigger\n\n Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"b\" /* concat */])(config.trigger || '').filter(Boolean).join(' ').trim().toLowerCase().split(/\\s+/).forEach(function (trigger) {\n if (validTriggers[trigger]) {\n selectedTriggers[trigger] = true;\n }\n }); // Parse modifiers for triggers\n\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_object__[\"j\" /* keys */])(bindings.modifiers).forEach(function (mod) {\n mod = mod.toLowerCase();\n\n if (validTriggers[mod]) {\n // If modifier is a valid trigger\n selectedTriggers[mod] = true;\n }\n }); // Sanitize triggers\n\n config.trigger = Object(__WEBPACK_IMPORTED_MODULE_6__utils_object__[\"j\" /* keys */])(selectedTriggers).join(' ');\n\n if (config.trigger === 'blur') {\n // Blur by itself is useless, so convert it to 'focus'\n config.trigger = 'focus';\n }\n\n if (!config.trigger) {\n // Use default trigger\n config.trigger = DefaultTrigger;\n } // Return the config\n\n\n return config;\n}; // Add/update Tooltip on our element\n\n\nvar applyTooltip = function applyTooltip(el, bindings, vnode) {\n if (!__WEBPACK_IMPORTED_MODULE_4__utils_env__[\"j\" /* isBrowser */]) {\n /* istanbul ignore next */\n return;\n }\n\n var config = parseBindings(bindings, vnode);\n\n if (!el[BV_TOOLTIP]) {\n var $parent = vnode.context;\n el[BV_TOOLTIP] = new __WEBPACK_IMPORTED_MODULE_7__components_tooltip_helpers_bv_tooltip__[\"a\" /* BVTooltip */]({\n parent: $parent,\n // Add the parent's scoped style attribute data\n _scopeId: Object(__WEBPACK_IMPORTED_MODULE_0__utils_get_scope_id__[\"a\" /* default */])($parent, undefined)\n });\n el[BV_TOOLTIP].__bv_prev_data__ = {};\n el[BV_TOOLTIP].$on('show', function ()\n /* istanbul ignore next: for now */\n {\n // Before showing the tooltip, we update the title if it is a function\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"f\" /* isFunction */])(config.title)) {\n el[BV_TOOLTIP].updateData({\n title: config.title()\n });\n }\n });\n }\n\n var data = {\n title: config.title,\n triggers: config.trigger,\n placement: config.placement,\n fallbackPlacement: config.fallbackPlacement,\n variant: config.variant,\n customClass: config.customClass,\n container: config.container,\n boundary: config.boundary,\n delay: config.delay,\n offset: config.offset,\n noFade: !config.animation,\n id: config.id,\n disabled: config.disabled,\n html: config.html\n };\n var oldData = el[BV_TOOLTIP].__bv_prev_data__;\n el[BV_TOOLTIP].__bv_prev_data__ = data;\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__utils_loose_equal__[\"a\" /* default */])(data, oldData)) {\n // We only update the instance if data has changed\n var newData = {\n target: el\n };\n Object(__WEBPACK_IMPORTED_MODULE_6__utils_object__[\"j\" /* keys */])(data).forEach(function (prop) {\n // We only pass data properties that have changed\n if (data[prop] !== oldData[prop]) {\n // if title is a function, we execute it here\n newData[prop] = prop === 'title' && Object(__WEBPACK_IMPORTED_MODULE_5__utils_inspect__[\"f\" /* isFunction */])(data[prop]) ? data[prop]() : data[prop];\n }\n });\n el[BV_TOOLTIP].updateData(newData);\n }\n}; // Remove Tooltip on our element\n\n\nvar removeTooltip = function removeTooltip(el) {\n if (el[BV_TOOLTIP]) {\n el[BV_TOOLTIP].$destroy();\n el[BV_TOOLTIP] = null;\n }\n\n delete el[BV_TOOLTIP];\n}; // Export our directive\n\n\nvar VBTooltip = {\n bind: function bind(el, bindings, vnode) {\n applyTooltip(el, bindings, vnode);\n },\n // We use `componentUpdated` here instead of `update`, as the former\n // waits until the containing component and children have finished updating\n componentUpdated: function componentUpdated(el, bindings, vnode) {\n // Performed in a `$nextTick()` to prevent render update loops\n vnode.context.$nextTick(function () {\n applyTooltip(el, bindings, vnode);\n });\n },\n unbind: function unbind(el) {\n removeTooltip(el);\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy90b29sdGlwL3Rvb2x0aXAuanM/MjY2NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSwrQ0FBK0MsMkNBQTJDLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLHlDQUF5QyxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwZ0IsMkNBQTJDLGtCQUFrQixrQ0FBa0MscUVBQXFFLEVBQUUsRUFBRSxPQUFPLGtCQUFrQixFQUFFLFlBQVk7O0FBRTlKO0FBQ0E7QUFDTjtBQUNhO0FBQ1o7QUFDd0U7QUFDMUU7QUFDOEI7O0FBRXhFLGtDQUFrQzs7QUFFbEMsbUNBQW1DOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxpRkFBa0I7QUFDN0IscUJBQXFCLGlGQUFrQjtBQUN2Qyw4QkFBOEIsaUZBQWtCO0FBQ2hELGFBQWEsaUZBQWtCO0FBQy9CLGlCQUFpQixpRkFBa0I7QUFDbkMsSUFBSTs7QUFFSixNQUFNLHdFQUFRLG9CQUFvQix3RUFBUTtBQUMxQztBQUNBO0FBQ0EsR0FBRyxVQUFVLDBFQUFVO0FBQ3ZCO0FBQ0E7QUFDQSxHQUFHLFVBQVUsNkVBQWE7QUFDMUI7QUFDQSw2QkFBNkIsWUFBWTtBQUN6QyxHQUFHOzs7QUFHSCxNQUFNLDJFQUFXO0FBQ2pCO0FBQ0E7QUFDQSxrQ0FBa0MsaUZBQWlCO0FBQ25ELEdBQUc7OztBQUdILE9BQU8sNkVBQWE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdILEVBQUUsbUVBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7QUFDTDs7QUFFQSw0QkFBNEI7O0FBRTVCLEVBQUUsb0VBQU07QUFDUjtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUwsRUFBRSxtRUFBSTtBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMLG1CQUFtQixtRUFBSTs7QUFFdkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQSxFQUFFOzs7QUFHRjtBQUNBLE9BQU8sNkRBQVM7QUFDaEI7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSx5QkFBeUIseUZBQVM7QUFDbEM7QUFDQTtBQUNBLGdCQUFnQiw0RUFBUztBQUN6QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsMEVBQVU7QUFDcEI7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsT0FBTywyRUFBVTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksbUVBQUk7QUFDUjtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsMEVBQVU7QUFDdEQ7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOzs7QUFHSztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIyMjAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoc291cmNlLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgZ2V0U2NvcElkIGZyb20gJy4uLy4uL3V0aWxzL2dldC1zY29wZS1pZCc7XG5pbXBvcnQgbG9vc2VFcXVhbCBmcm9tICcuLi8uLi91dGlscy9sb29zZS1lcXVhbCc7XG5pbXBvcnQgeyBjb25jYXQgfSBmcm9tICcuLi8uLi91dGlscy9hcnJheSc7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi8uLi91dGlscy9jb25maWcnO1xuaW1wb3J0IHsgaXNCcm93c2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvZW52JztcbmltcG9ydCB7IGlzRnVuY3Rpb24sIGlzTnVtYmVyLCBpc1BsYWluT2JqZWN0LCBpc1N0cmluZywgaXNVbmRlZmluZWQsIGlzVW5kZWZpbmVkT3JOdWxsIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgeyBrZXlzIH0gZnJvbSAnLi4vLi4vdXRpbHMvb2JqZWN0JztcbmltcG9ydCB7IEJWVG9vbHRpcCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvdG9vbHRpcC9oZWxwZXJzL2J2LXRvb2x0aXAnOyAvLyBLZXkgd2hpY2ggd2UgdXNlIHRvIHN0b3JlIHRvb2x0aXAgb2JqZWN0IG9uIGVsZW1lbnRcblxudmFyIEJWX1RPT0xUSVAgPSAnX19CVl9Ub29sdGlwX18nOyAvLyBEZWZhdWx0IHRyaWdnZXJcblxudmFyIERlZmF1bHRUcmlnZ2VyID0gJ2hvdmVyIGZvY3VzJzsgLy8gVmFsaWQgZXZlbnQgdHJpZ2dlcnNcblxudmFyIHZhbGlkVHJpZ2dlcnMgPSB7XG4gIGZvY3VzOiB0cnVlLFxuICBob3ZlcjogdHJ1ZSxcbiAgY2xpY2s6IHRydWUsXG4gIGJsdXI6IHRydWUsXG4gIG1hbnVhbDogdHJ1ZVxufTsgLy8gRGlyZWN0aXZlIG1vZGlmaWVyIHRlc3QgcmVndWxhciBleHByZXNzaW9ucy4gUHJlLWNvbXBpbGUgZm9yIHBlcmZvcm1hbmNlXG5cbnZhciBodG1sUkUgPSAvXmh0bWwkL2k7XG52YXIgbm9GYWRlUkUgPSAvXm5vZmFkZSQvaTtcbnZhciBwbGFjZW1lbnRSRSA9IC9eKGF1dG98dG9wKGxlZnR8cmlnaHQpP3xib3R0b20obGVmdHxyaWdodCk/fGxlZnQodG9wfGJvdHRvbSk/fHJpZ2h0KHRvcHxib3R0b20pPykkL2k7XG52YXIgYm91bmRhcnlSRSA9IC9eKHdpbmRvd3x2aWV3cG9ydHxzY3JvbGxQYXJlbnQpJC9pO1xudmFyIGRlbGF5UkUgPSAvXmRcXGQrJC9pO1xudmFyIGRlbGF5U2hvd1JFID0gL15kc1xcZCskL2k7XG52YXIgZGVsYXlIaWRlUkUgPSAvXmRoXFxkKyQvaTtcbnZhciBvZmZzZXRSRSA9IC9eby0/XFxkKyQvaTtcbnZhciB2YXJpYW50UkUgPSAvXnYtLiskL2k7IC8vIEJ1aWxkIGEgVG9vbHRpcCBjb25maWcgYmFzZWQgb24gYmluZGluZ3MgKGlmIGFueSlcbi8vIEFyZ3VtZW50cyBhbmQgbW9kaWZpZXJzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHBhc3NlZCB2YWx1ZSBjb25maWcgb2JqZWN0XG5cbnZhciBwYXJzZUJpbmRpbmdzID0gZnVuY3Rpb24gcGFyc2VCaW5kaW5ncyhiaW5kaW5ncywgdm5vZGUpXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogbm90IGVhc3kgdG8gdGVzdCAqL1xue1xuICAvLyBXZSBzdGFydCBvdXQgd2l0aCBhIGJhc2ljIGNvbmZpZ1xuICB2YXIgTkFNRSA9ICdCVG9vbHRpcCc7IC8vIERlZmF1bHQgY29uZmlnXG5cbiAgdmFyIGNvbmZpZyA9IHtcbiAgICB0aXRsZTogdW5kZWZpbmVkLFxuICAgIHRyaWdnZXI6ICcnLFxuICAgIC8vIERlZmF1bHQgc2V0IGJlbG93IGlmIG5lZWRlZFxuICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgZmFsbGJhY2tQbGFjZW1lbnQ6ICdmbGlwJyxcbiAgICBjb250YWluZXI6IGZhbHNlLFxuICAgIC8vIERlZmF1bHQgb2YgYm9keVxuICAgIGFuaW1hdGlvbjogdHJ1ZSxcbiAgICBvZmZzZXQ6IDAsXG4gICAgaWQ6IG51bGwsXG4gICAgaHRtbDogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGRlbGF5OiBnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ2RlbGF5JyksXG4gICAgYm91bmRhcnk6IFN0cmluZyhnZXRDb21wb25lbnRDb25maWcoTkFNRSwgJ2JvdW5kYXJ5JykpLFxuICAgIGJvdW5kYXJ5UGFkZGluZzogcGFyc2VJbnQoZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICdib3VuZGFyeVBhZGRpbmcnKSwgMTApIHx8IDAsXG4gICAgdmFyaWFudDogZ2V0Q29tcG9uZW50Q29uZmlnKE5BTUUsICd2YXJpYW50JyksXG4gICAgY3VzdG9tQ2xhc3M6IGdldENvbXBvbmVudENvbmZpZyhOQU1FLCAnY3VzdG9tQ2xhc3MnKVxuICB9OyAvLyBQcm9jZXNzIGBiaW5kaW5ncy52YWx1ZWBcblxuICBpZiAoaXNTdHJpbmcoYmluZGluZ3MudmFsdWUpIHx8IGlzTnVtYmVyKGJpbmRpbmdzLnZhbHVlKSkge1xuICAgIC8vIFZhbHVlIGlzIHRvb2x0aXAgY29udGVudCAoSFRNTCBvcHRpb25hbGx5IHN1cHBvcnRlZClcbiAgICBjb25maWcudGl0bGUgPSBiaW5kaW5ncy52YWx1ZTtcbiAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKGJpbmRpbmdzLnZhbHVlKSkge1xuICAgIC8vIFRpdGxlIGdlbmVyYXRvciBmdW5jdGlvblxuICAgIGNvbmZpZy50aXRsZSA9IGJpbmRpbmdzLnZhbHVlO1xuICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QoYmluZGluZ3MudmFsdWUpKSB7XG4gICAgLy8gVmFsdWUgaXMgY29uZmlnIG9iamVjdCwgc28gbWVyZ2VcbiAgICBjb25maWcgPSBfb2JqZWN0U3ByZWFkKHt9LCBjb25maWcsIHt9LCBiaW5kaW5ncy52YWx1ZSk7XG4gIH0gLy8gSWYgdGl0bGUgaXMgbm90IHByb3ZpZGVkLCB0cnkgdGl0bGUgYXR0cmlidXRlXG5cblxuICBpZiAoaXNVbmRlZmluZWQoY29uZmlnLnRpdGxlKSkge1xuICAgIC8vIFRyeSBhdHRyaWJ1dGVcbiAgICB2YXIgZGF0YSA9IHZub2RlLmRhdGEgfHwge307XG4gICAgY29uZmlnLnRpdGxlID0gZGF0YS5hdHRycyAmJiAhaXNVbmRlZmluZWRPck51bGwoZGF0YS5hdHRycy50aXRsZSkgPyBkYXRhLmF0dHJzLnRpdGxlIDogdW5kZWZpbmVkO1xuICB9IC8vIE5vcm1hbGl6ZSBkZWxheVxuXG5cbiAgaWYgKCFpc1BsYWluT2JqZWN0KGNvbmZpZy5kZWxheSkpIHtcbiAgICBjb25maWcuZGVsYXkgPSB7XG4gICAgICBzaG93OiBwYXJzZUludChjb25maWcuZGVsYXksIDEwKSB8fCAwLFxuICAgICAgaGlkZTogcGFyc2VJbnQoY29uZmlnLmRlbGF5LCAxMCkgfHwgMFxuICAgIH07XG4gIH0gLy8gSWYgYXJndW1lbnQsIGFzc3VtZSBlbGVtZW50IElEIG9mIGNvbnRhaW5lciBlbGVtZW50XG5cblxuICBpZiAoYmluZGluZ3MuYXJnKSB7XG4gICAgLy8gRWxlbWVudCBJRCBzcGVjaWZpZWQgYXMgYXJnXG4gICAgLy8gV2UgbXVzdCBwcmVwZW5kICcjJyB0byBiZWNvbWUgYSBDU1Mgc2VsZWN0b3JcbiAgICBjb25maWcuY29udGFpbmVyID0gXCIjXCIuY29uY2F0KGJpbmRpbmdzLmFyZyk7XG4gIH0gLy8gUHJvY2VzcyBtb2RpZmllcnNcblxuXG4gIGtleXMoYmluZGluZ3MubW9kaWZpZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChtb2QpIHtcbiAgICBpZiAoaHRtbFJFLnRlc3QobW9kKSkge1xuICAgICAgLy8gVGl0bGUgYWxsb3dzIEhUTUxcbiAgICAgIGNvbmZpZy5odG1sID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKG5vRmFkZVJFLnRlc3QobW9kKSkge1xuICAgICAgLy8gTm8gYW5pbWF0aW9uXG4gICAgICBjb25maWcuYW5pbWF0aW9uID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChwbGFjZW1lbnRSRS50ZXN0KG1vZCkpIHtcbiAgICAgIC8vIFBsYWNlbWVudCBvZiB0b29sdGlwXG4gICAgICBjb25maWcucGxhY2VtZW50ID0gbW9kO1xuICAgIH0gZWxzZSBpZiAoYm91bmRhcnlSRS50ZXN0KG1vZCkpIHtcbiAgICAgIC8vIEJvdW5kYXJ5IG9mIHRvb2x0aXBcbiAgICAgIG1vZCA9IG1vZCA9PT0gJ3Njcm9sbHBhcmVudCcgPyAnc2Nyb2xsUGFyZW50JyA6IG1vZDtcbiAgICAgIGNvbmZpZy5ib3VuZGFyeSA9IG1vZDtcbiAgICB9IGVsc2UgaWYgKGRlbGF5UkUudGVzdChtb2QpKSB7XG4gICAgICAvLyBEZWxheSB2YWx1ZVxuICAgICAgdmFyIGRlbGF5ID0gcGFyc2VJbnQobW9kLnNsaWNlKDEpLCAxMCkgfHwgMDtcbiAgICAgIGNvbmZpZy5kZWxheS5zaG93ID0gZGVsYXk7XG4gICAgICBjb25maWcuZGVsYXkuaGlkZSA9IGRlbGF5O1xuICAgIH0gZWxzZSBpZiAoZGVsYXlTaG93UkUudGVzdChtb2QpKSB7XG4gICAgICAvLyBEZWxheSBzaG93IHZhbHVlXG4gICAgICBjb25maWcuZGVsYXkuc2hvdyA9IHBhcnNlSW50KG1vZC5zbGljZSgyKSwgMTApIHx8IDA7XG4gICAgfSBlbHNlIGlmIChkZWxheUhpZGVSRS50ZXN0KG1vZCkpIHtcbiAgICAgIC8vIERlbGF5IGhpZGUgdmFsdWVcbiAgICAgIGNvbmZpZy5kZWxheS5oaWRlID0gcGFyc2VJbnQobW9kLnNsaWNlKDIpLCAxMCkgfHwgMDtcbiAgICB9IGVsc2UgaWYgKG9mZnNldFJFLnRlc3QobW9kKSkge1xuICAgICAgLy8gT2Zmc2V0IHZhbHVlLCBuZWdhdGl2ZSBhbGxvd2VkXG4gICAgICBjb25maWcub2Zmc2V0ID0gcGFyc2VJbnQobW9kLnNsaWNlKDEpLCAxMCkgfHwgMDtcbiAgICB9IGVsc2UgaWYgKHZhcmlhbnRSRS50ZXN0KG1vZCkpIHtcbiAgICAgIC8vIFZhcmlhbnRcbiAgICAgIGNvbmZpZy52YXJpYW50ID0gbW9kLnNsaWNlKDIpIHx8IG51bGw7XG4gICAgfVxuICB9KTsgLy8gU3BlY2lhbCBoYW5kbGluZyBvZiBldmVudCB0cmlnZ2VyIG1vZGlmaWVycyB0cmlnZ2VyIGlzXG4gIC8vIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3RcblxuICB2YXIgc2VsZWN0ZWRUcmlnZ2VycyA9IHt9OyAvLyBQYXJzZSBjdXJyZW50IGNvbmZpZyBvYmplY3QgdHJpZ2dlclxuXG4gIGNvbmNhdChjb25maWcudHJpZ2dlciB8fCAnJykuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKS50cmltKCkudG9Mb3dlckNhc2UoKS5zcGxpdCgvXFxzKy8pLmZvckVhY2goZnVuY3Rpb24gKHRyaWdnZXIpIHtcbiAgICBpZiAodmFsaWRUcmlnZ2Vyc1t0cmlnZ2VyXSkge1xuICAgICAgc2VsZWN0ZWRUcmlnZ2Vyc1t0cmlnZ2VyXSA9IHRydWU7XG4gICAgfVxuICB9KTsgLy8gUGFyc2UgbW9kaWZpZXJzIGZvciB0cmlnZ2Vyc1xuXG4gIGtleXMoYmluZGluZ3MubW9kaWZpZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChtb2QpIHtcbiAgICBtb2QgPSBtb2QudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmICh2YWxpZFRyaWdnZXJzW21vZF0pIHtcbiAgICAgIC8vIElmIG1vZGlmaWVyIGlzIGEgdmFsaWQgdHJpZ2dlclxuICAgICAgc2VsZWN0ZWRUcmlnZ2Vyc1ttb2RdID0gdHJ1ZTtcbiAgICB9XG4gIH0pOyAvLyBTYW5pdGl6ZSB0cmlnZ2Vyc1xuXG4gIGNvbmZpZy50cmlnZ2VyID0ga2V5cyhzZWxlY3RlZFRyaWdnZXJzKS5qb2luKCcgJyk7XG5cbiAgaWYgKGNvbmZpZy50cmlnZ2VyID09PSAnYmx1cicpIHtcbiAgICAvLyBCbHVyIGJ5IGl0c2VsZiBpcyB1c2VsZXNzLCBzbyBjb252ZXJ0IGl0IHRvICdmb2N1cydcbiAgICBjb25maWcudHJpZ2dlciA9ICdmb2N1cyc7XG4gIH1cblxuICBpZiAoIWNvbmZpZy50cmlnZ2VyKSB7XG4gICAgLy8gVXNlIGRlZmF1bHQgdHJpZ2dlclxuICAgIGNvbmZpZy50cmlnZ2VyID0gRGVmYXVsdFRyaWdnZXI7XG4gIH0gLy8gUmV0dXJuIHRoZSBjb25maWdcblxuXG4gIHJldHVybiBjb25maWc7XG59OyAvLyBBZGQvdXBkYXRlIFRvb2x0aXAgb24gb3VyIGVsZW1lbnRcblxuXG52YXIgYXBwbHlUb29sdGlwID0gZnVuY3Rpb24gYXBwbHlUb29sdGlwKGVsLCBiaW5kaW5ncywgdm5vZGUpIHtcbiAgaWYgKCFpc0Jyb3dzZXIpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBjb25maWcgPSBwYXJzZUJpbmRpbmdzKGJpbmRpbmdzLCB2bm9kZSk7XG5cbiAgaWYgKCFlbFtCVl9UT09MVElQXSkge1xuICAgIHZhciAkcGFyZW50ID0gdm5vZGUuY29udGV4dDtcbiAgICBlbFtCVl9UT09MVElQXSA9IG5ldyBCVlRvb2x0aXAoe1xuICAgICAgcGFyZW50OiAkcGFyZW50LFxuICAgICAgLy8gQWRkIHRoZSBwYXJlbnQncyBzY29wZWQgc3R5bGUgYXR0cmlidXRlIGRhdGFcbiAgICAgIF9zY29wZUlkOiBnZXRTY29wSWQoJHBhcmVudCwgdW5kZWZpbmVkKVxuICAgIH0pO1xuICAgIGVsW0JWX1RPT0xUSVBdLl9fYnZfcHJldl9kYXRhX18gPSB7fTtcbiAgICBlbFtCVl9UT09MVElQXS4kb24oJ3Nob3cnLCBmdW5jdGlvbiAoKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBmb3Igbm93ICovXG4gICAge1xuICAgICAgLy8gQmVmb3JlIHNob3dpbmcgdGhlIHRvb2x0aXAsIHdlIHVwZGF0ZSB0aGUgdGl0bGUgaWYgaXQgaXMgYSBmdW5jdGlvblxuICAgICAgaWYgKGlzRnVuY3Rpb24oY29uZmlnLnRpdGxlKSkge1xuICAgICAgICBlbFtCVl9UT09MVElQXS51cGRhdGVEYXRhKHtcbiAgICAgICAgICB0aXRsZTogY29uZmlnLnRpdGxlKClcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB2YXIgZGF0YSA9IHtcbiAgICB0aXRsZTogY29uZmlnLnRpdGxlLFxuICAgIHRyaWdnZXJzOiBjb25maWcudHJpZ2dlcixcbiAgICBwbGFjZW1lbnQ6IGNvbmZpZy5wbGFjZW1lbnQsXG4gICAgZmFsbGJhY2tQbGFjZW1lbnQ6IGNvbmZpZy5mYWxsYmFja1BsYWNlbWVudCxcbiAgICB2YXJpYW50OiBjb25maWcudmFyaWFudCxcbiAgICBjdXN0b21DbGFzczogY29uZmlnLmN1c3RvbUNsYXNzLFxuICAgIGNvbnRhaW5lcjogY29uZmlnLmNvbnRhaW5lcixcbiAgICBib3VuZGFyeTogY29uZmlnLmJvdW5kYXJ5LFxuICAgIGRlbGF5OiBjb25maWcuZGVsYXksXG4gICAgb2Zmc2V0OiBjb25maWcub2Zmc2V0LFxuICAgIG5vRmFkZTogIWNvbmZpZy5hbmltYXRpb24sXG4gICAgaWQ6IGNvbmZpZy5pZCxcbiAgICBkaXNhYmxlZDogY29uZmlnLmRpc2FibGVkLFxuICAgIGh0bWw6IGNvbmZpZy5odG1sXG4gIH07XG4gIHZhciBvbGREYXRhID0gZWxbQlZfVE9PTFRJUF0uX19idl9wcmV2X2RhdGFfXztcbiAgZWxbQlZfVE9PTFRJUF0uX19idl9wcmV2X2RhdGFfXyA9IGRhdGE7XG5cbiAgaWYgKCFsb29zZUVxdWFsKGRhdGEsIG9sZERhdGEpKSB7XG4gICAgLy8gV2Ugb25seSB1cGRhdGUgdGhlIGluc3RhbmNlIGlmIGRhdGEgaGFzIGNoYW5nZWRcbiAgICB2YXIgbmV3RGF0YSA9IHtcbiAgICAgIHRhcmdldDogZWxcbiAgICB9O1xuICAgIGtleXMoZGF0YSkuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICAgICAgLy8gV2Ugb25seSBwYXNzIGRhdGEgcHJvcGVydGllcyB0aGF0IGhhdmUgY2hhbmdlZFxuICAgICAgaWYgKGRhdGFbcHJvcF0gIT09IG9sZERhdGFbcHJvcF0pIHtcbiAgICAgICAgLy8gaWYgdGl0bGUgaXMgYSBmdW5jdGlvbiwgd2UgZXhlY3V0ZSBpdCBoZXJlXG4gICAgICAgIG5ld0RhdGFbcHJvcF0gPSBwcm9wID09PSAndGl0bGUnICYmIGlzRnVuY3Rpb24oZGF0YVtwcm9wXSkgPyBkYXRhW3Byb3BdKCkgOiBkYXRhW3Byb3BdO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGVsW0JWX1RPT0xUSVBdLnVwZGF0ZURhdGEobmV3RGF0YSk7XG4gIH1cbn07IC8vIFJlbW92ZSBUb29sdGlwIG9uIG91ciBlbGVtZW50XG5cblxudmFyIHJlbW92ZVRvb2x0aXAgPSBmdW5jdGlvbiByZW1vdmVUb29sdGlwKGVsKSB7XG4gIGlmIChlbFtCVl9UT09MVElQXSkge1xuICAgIGVsW0JWX1RPT0xUSVBdLiRkZXN0cm95KCk7XG4gICAgZWxbQlZfVE9PTFRJUF0gPSBudWxsO1xuICB9XG5cbiAgZGVsZXRlIGVsW0JWX1RPT0xUSVBdO1xufTsgLy8gRXhwb3J0IG91ciBkaXJlY3RpdmVcblxuXG5leHBvcnQgdmFyIFZCVG9vbHRpcCA9IHtcbiAgYmluZDogZnVuY3Rpb24gYmluZChlbCwgYmluZGluZ3MsIHZub2RlKSB7XG4gICAgYXBwbHlUb29sdGlwKGVsLCBiaW5kaW5ncywgdm5vZGUpO1xuICB9LFxuICAvLyBXZSB1c2UgYGNvbXBvbmVudFVwZGF0ZWRgIGhlcmUgaW5zdGVhZCBvZiBgdXBkYXRlYCwgYXMgdGhlIGZvcm1lclxuICAvLyB3YWl0cyB1bnRpbCB0aGUgY29udGFpbmluZyBjb21wb25lbnQgYW5kIGNoaWxkcmVuIGhhdmUgZmluaXNoZWQgdXBkYXRpbmdcbiAgY29tcG9uZW50VXBkYXRlZDogZnVuY3Rpb24gY29tcG9uZW50VXBkYXRlZChlbCwgYmluZGluZ3MsIHZub2RlKSB7XG4gICAgLy8gUGVyZm9ybWVkIGluIGEgYCRuZXh0VGljaygpYCB0byBwcmV2ZW50IHJlbmRlciB1cGRhdGUgbG9vcHNcbiAgICB2bm9kZS5jb250ZXh0LiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICBhcHBseVRvb2x0aXAoZWwsIGJpbmRpbmdzLCB2bm9kZSk7XG4gICAgfSk7XG4gIH0sXG4gIHVuYmluZDogZnVuY3Rpb24gdW5iaW5kKGVsKSB7XG4gICAgcmVtb3ZlVG9vbHRpcChlbCk7XG4gIH1cbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy90b29sdGlwL3Rvb2x0aXAuanNcbi8vIG1vZHVsZSBpZCA9IDIyMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///220\n"); /***/ }), /* 221 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return VBScrollspy; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__scrollspy_class__ = __webpack_require__(274);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_env__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\n\n\n\n // Key we use to store our instance\n\nvar BV_SCROLLSPY = '__BV_ScrollSpy__'; // Build a ScrollSpy config based on bindings (if any)\n// Arguments and modifiers take precedence over passed value config object\n\n/* istanbul ignore next: not easy to test */\n\nvar parseBindings = function parseBindings(bindings)\n/* istanbul ignore next: not easy to test */\n{\n var config = {}; // If argument, assume element ID\n\n if (bindings.arg) {\n // Element ID specified as arg\n // We must prepend '#' to become a CSS selector\n config.element = \"#\".concat(bindings.arg);\n } // Process modifiers\n\n\n Object(__WEBPACK_IMPORTED_MODULE_2__utils_object__[\"j\" /* keys */])(bindings.modifiers).forEach(function (mod) {\n if (/^\\d+$/.test(mod)) {\n // Offset value\n config.offset = parseInt(mod, 10);\n } else if (/^(auto|position|offset)$/.test(mod)) {\n // Offset method\n config.method = mod;\n }\n }); // Process value\n\n if (Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"m\" /* isString */])(bindings.value)) {\n // Value is a CSS ID or selector\n config.element = bindings.value;\n } else if (Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"h\" /* isNumber */])(bindings.value)) {\n // Value is offset\n config.offset = Math.round(bindings.value);\n } else if (Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"i\" /* isObject */])(bindings.value)) {\n // Value is config object\n // Filter the object based on our supported config options\n Object(__WEBPACK_IMPORTED_MODULE_2__utils_object__[\"j\" /* keys */])(bindings.value).filter(function (k) {\n return Boolean(__WEBPACK_IMPORTED_MODULE_0__scrollspy_class__[\"a\" /* default */].DefaultType[k]);\n }).forEach(function (k) {\n config[k] = bindings.value[k];\n });\n }\n\n return config;\n}; // Add or update ScrollSpy on our element\n\n\nvar applyScrollspy = function applyScrollspy(el, bindings, vnode)\n/* istanbul ignore next: not easy to test */\n{\n if (!__WEBPACK_IMPORTED_MODULE_1__utils_env__[\"j\" /* isBrowser */]) {\n /* istanbul ignore next */\n return;\n }\n\n var config = parseBindings(bindings);\n\n if (el[BV_SCROLLSPY]) {\n el[BV_SCROLLSPY].updateConfig(config, vnode.context.$root);\n } else {\n el[BV_SCROLLSPY] = new __WEBPACK_IMPORTED_MODULE_0__scrollspy_class__[\"a\" /* default */](el, config, vnode.context.$root);\n }\n}; // Remove ScrollSpy on our element\n\n/* istanbul ignore next: not easy to test */\n\n\nvar removeScrollspy = function removeScrollspy(el)\n/* istanbul ignore next: not easy to test */\n{\n if (el[BV_SCROLLSPY]) {\n el[BV_SCROLLSPY].dispose();\n el[BV_SCROLLSPY] = null;\n delete el[BV_SCROLLSPY];\n }\n};\n/*\n * Export our directive\n */\n\n\nvar VBScrollspy = {\n bind: function bind(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n applyScrollspy(el, bindings, vnode);\n },\n inserted: function inserted(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n applyScrollspy(el, bindings, vnode);\n },\n update: function update(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n if (bindings.value !== bindings.oldValue) {\n applyScrollspy(el, bindings, vnode);\n }\n },\n componentUpdated: function componentUpdated(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n if (bindings.value !== bindings.oldValue) {\n applyScrollspy(el, bindings, vnode);\n }\n },\n unbind: function unbind(el)\n /* istanbul ignore next: not easy to test */\n {\n removeScrollspy(el);\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy9zY3JvbGxzcHkvc2Nyb2xsc3B5LmpzP2Y4ODgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwQztBQUNFO0FBQ0Y7QUFDeUI7O0FBRW5FLHNDQUFzQztBQUN0Qzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7O0FBRWxCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsRUFBRSxtRUFBSTtBQUNOO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUwsTUFBTSx3RUFBUTtBQUNkO0FBQ0E7QUFDQSxHQUFHLFVBQVUsd0VBQVE7QUFDckI7QUFDQTtBQUNBLEdBQUcsVUFBVSx3RUFBUTtBQUNyQjtBQUNBO0FBQ0EsSUFBSSxtRUFBSTtBQUNSLHFCQUFxQixpRUFBUztBQUM5QixLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQSxPQUFPLDZEQUFTO0FBQ2hCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNILDJCQUEyQixpRUFBUztBQUNwQztBQUNBLEVBQUU7O0FBRUY7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIyMjEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU2Nyb2xsU3B5IGZyb20gJy4vc2Nyb2xsc3B5LmNsYXNzJztcbmltcG9ydCB7IGlzQnJvd3NlciB9IGZyb20gJy4uLy4uL3V0aWxzL2Vudic7XG5pbXBvcnQgeyBrZXlzIH0gZnJvbSAnLi4vLi4vdXRpbHMvb2JqZWN0JztcbmltcG9ydCB7IGlzTnVtYmVyLCBpc09iamVjdCwgaXNTdHJpbmcgfSBmcm9tICcuLi8uLi91dGlscy9pbnNwZWN0JzsgLy8gS2V5IHdlIHVzZSB0byBzdG9yZSBvdXIgaW5zdGFuY2VcblxudmFyIEJWX1NDUk9MTFNQWSA9ICdfX0JWX1Njcm9sbFNweV9fJzsgLy8gQnVpbGQgYSBTY3JvbGxTcHkgY29uZmlnIGJhc2VkIG9uIGJpbmRpbmdzIChpZiBhbnkpXG4vLyBBcmd1bWVudHMgYW5kIG1vZGlmaWVycyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBwYXNzZWQgdmFsdWUgY29uZmlnIG9iamVjdFxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogbm90IGVhc3kgdG8gdGVzdCAqL1xuXG52YXIgcGFyc2VCaW5kaW5ncyA9IGZ1bmN0aW9uIHBhcnNlQmluZGluZ3MoYmluZGluZ3MpXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogbm90IGVhc3kgdG8gdGVzdCAqL1xue1xuICB2YXIgY29uZmlnID0ge307IC8vIElmIGFyZ3VtZW50LCBhc3N1bWUgZWxlbWVudCBJRFxuXG4gIGlmIChiaW5kaW5ncy5hcmcpIHtcbiAgICAvLyBFbGVtZW50IElEIHNwZWNpZmllZCBhcyBhcmdcbiAgICAvLyBXZSBtdXN0IHByZXBlbmQgJyMnIHRvIGJlY29tZSBhIENTUyBzZWxlY3RvclxuICAgIGNvbmZpZy5lbGVtZW50ID0gXCIjXCIuY29uY2F0KGJpbmRpbmdzLmFyZyk7XG4gIH0gLy8gUHJvY2VzcyBtb2RpZmllcnNcblxuXG4gIGtleXMoYmluZGluZ3MubW9kaWZpZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChtb2QpIHtcbiAgICBpZiAoL15cXGQrJC8udGVzdChtb2QpKSB7XG4gICAgICAvLyBPZmZzZXQgdmFsdWVcbiAgICAgIGNvbmZpZy5vZmZzZXQgPSBwYXJzZUludChtb2QsIDEwKTtcbiAgICB9IGVsc2UgaWYgKC9eKGF1dG98cG9zaXRpb258b2Zmc2V0KSQvLnRlc3QobW9kKSkge1xuICAgICAgLy8gT2Zmc2V0IG1ldGhvZFxuICAgICAgY29uZmlnLm1ldGhvZCA9IG1vZDtcbiAgICB9XG4gIH0pOyAvLyBQcm9jZXNzIHZhbHVlXG5cbiAgaWYgKGlzU3RyaW5nKGJpbmRpbmdzLnZhbHVlKSkge1xuICAgIC8vIFZhbHVlIGlzIGEgQ1NTIElEIG9yIHNlbGVjdG9yXG4gICAgY29uZmlnLmVsZW1lbnQgPSBiaW5kaW5ncy52YWx1ZTtcbiAgfSBlbHNlIGlmIChpc051bWJlcihiaW5kaW5ncy52YWx1ZSkpIHtcbiAgICAvLyBWYWx1ZSBpcyBvZmZzZXRcbiAgICBjb25maWcub2Zmc2V0ID0gTWF0aC5yb3VuZChiaW5kaW5ncy52YWx1ZSk7XG4gIH0gZWxzZSBpZiAoaXNPYmplY3QoYmluZGluZ3MudmFsdWUpKSB7XG4gICAgLy8gVmFsdWUgaXMgY29uZmlnIG9iamVjdFxuICAgIC8vIEZpbHRlciB0aGUgb2JqZWN0IGJhc2VkIG9uIG91ciBzdXBwb3J0ZWQgY29uZmlnIG9wdGlvbnNcbiAgICBrZXlzKGJpbmRpbmdzLnZhbHVlKS5maWx0ZXIoZnVuY3Rpb24gKGspIHtcbiAgICAgIHJldHVybiBCb29sZWFuKFNjcm9sbFNweS5EZWZhdWx0VHlwZVtrXSk7XG4gICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgY29uZmlnW2tdID0gYmluZGluZ3MudmFsdWVba107XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gY29uZmlnO1xufTsgLy8gQWRkIG9yIHVwZGF0ZSBTY3JvbGxTcHkgb24gb3VyIGVsZW1lbnRcblxuXG52YXIgYXBwbHlTY3JvbGxzcHkgPSBmdW5jdGlvbiBhcHBseVNjcm9sbHNweShlbCwgYmluZGluZ3MsIHZub2RlKVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IG5vdCBlYXN5IHRvIHRlc3QgKi9cbntcbiAgaWYgKCFpc0Jyb3dzZXIpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBjb25maWcgPSBwYXJzZUJpbmRpbmdzKGJpbmRpbmdzKTtcblxuICBpZiAoZWxbQlZfU0NST0xMU1BZXSkge1xuICAgIGVsW0JWX1NDUk9MTFNQWV0udXBkYXRlQ29uZmlnKGNvbmZpZywgdm5vZGUuY29udGV4dC4kcm9vdCk7XG4gIH0gZWxzZSB7XG4gICAgZWxbQlZfU0NST0xMU1BZXSA9IG5ldyBTY3JvbGxTcHkoZWwsIGNvbmZpZywgdm5vZGUuY29udGV4dC4kcm9vdCk7XG4gIH1cbn07IC8vIFJlbW92ZSBTY3JvbGxTcHkgb24gb3VyIGVsZW1lbnRcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IG5vdCBlYXN5IHRvIHRlc3QgKi9cblxuXG52YXIgcmVtb3ZlU2Nyb2xsc3B5ID0gZnVuY3Rpb24gcmVtb3ZlU2Nyb2xsc3B5KGVsKVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IG5vdCBlYXN5IHRvIHRlc3QgKi9cbntcbiAgaWYgKGVsW0JWX1NDUk9MTFNQWV0pIHtcbiAgICBlbFtCVl9TQ1JPTExTUFldLmRpc3Bvc2UoKTtcbiAgICBlbFtCVl9TQ1JPTExTUFldID0gbnVsbDtcbiAgICBkZWxldGUgZWxbQlZfU0NST0xMU1BZXTtcbiAgfVxufTtcbi8qXG4gKiBFeHBvcnQgb3VyIGRpcmVjdGl2ZVxuICovXG5cblxuZXhwb3J0IHZhciBWQlNjcm9sbHNweSA9IHtcbiAgYmluZDogZnVuY3Rpb24gYmluZChlbCwgYmluZGluZ3MsIHZub2RlKVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogbm90IGVhc3kgdG8gdGVzdCAqL1xuICB7XG4gICAgYXBwbHlTY3JvbGxzcHkoZWwsIGJpbmRpbmdzLCB2bm9kZSk7XG4gIH0sXG4gIGluc2VydGVkOiBmdW5jdGlvbiBpbnNlcnRlZChlbCwgYmluZGluZ3MsIHZub2RlKVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogbm90IGVhc3kgdG8gdGVzdCAqL1xuICB7XG4gICAgYXBwbHlTY3JvbGxzcHkoZWwsIGJpbmRpbmdzLCB2bm9kZSk7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGVsLCBiaW5kaW5ncywgdm5vZGUpXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBub3QgZWFzeSB0byB0ZXN0ICovXG4gIHtcbiAgICBpZiAoYmluZGluZ3MudmFsdWUgIT09IGJpbmRpbmdzLm9sZFZhbHVlKSB7XG4gICAgICBhcHBseVNjcm9sbHNweShlbCwgYmluZGluZ3MsIHZub2RlKTtcbiAgICB9XG4gIH0sXG4gIGNvbXBvbmVudFVwZGF0ZWQ6IGZ1bmN0aW9uIGNvbXBvbmVudFVwZGF0ZWQoZWwsIGJpbmRpbmdzLCB2bm9kZSlcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IG5vdCBlYXN5IHRvIHRlc3QgKi9cbiAge1xuICAgIGlmIChiaW5kaW5ncy52YWx1ZSAhPT0gYmluZGluZ3Mub2xkVmFsdWUpIHtcbiAgICAgIGFwcGx5U2Nyb2xsc3B5KGVsLCBiaW5kaW5ncywgdm5vZGUpO1xuICAgIH1cbiAgfSxcbiAgdW5iaW5kOiBmdW5jdGlvbiB1bmJpbmQoZWwpXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBub3QgZWFzeSB0byB0ZXN0ICovXG4gIHtcbiAgICByZW1vdmVTY3JvbGxzcHkoZWwpO1xuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2RpcmVjdGl2ZXMvc2Nyb2xsc3B5L3Njcm9sbHNweS5qc1xuLy8gbW9kdWxlIGlkID0gMjIxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///221\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return VBModalPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__modal__ = __webpack_require__(79);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport VBModal */\n\n\nvar VBModalPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n directives: {\n VBModal: __WEBPACK_IMPORTED_MODULE_0__modal__[\"a\" /* VBModal */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy9tb2RhbC9pbmRleC5qcz84M2M3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ2tCO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsYUFBYSx1REFBTztBQUNwQjtBQUNBLENBQUMiLCJmaWxlIjoiMjIxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVkJNb2RhbCB9IGZyb20gJy4vbW9kYWwnO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIFZCTW9kYWxQbHVnaW4gPVxuLyojX19QVVJFX18qL1xucGx1Z2luRmFjdG9yeSh7XG4gIGRpcmVjdGl2ZXM6IHtcbiAgICBWQk1vZGFsOiBWQk1vZGFsXG4gIH1cbn0pO1xuZXhwb3J0IHsgVkJNb2RhbFBsdWdpbiwgVkJNb2RhbCB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2RpcmVjdGl2ZXMvbW9kYWwvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDIyMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///221\n"); /***/ }), /* 222 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return VBTogglePlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__toggle__ = __webpack_require__(64);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport VBToggle */\n\n\nvar VBTogglePlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n directives: {\n VBToggle: __WEBPACK_IMPORTED_MODULE_0__toggle__[\"a\" /* VBToggle */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy90b2dnbGUvaW5kZXguanM/YTU4ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvQztBQUNnQjtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGNBQWMseURBQVE7QUFDdEI7QUFDQSxDQUFDIiwiZmlsZSI6IjIyMi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZCVG9nZ2xlIH0gZnJvbSAnLi90b2dnbGUnO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIFZCVG9nZ2xlUGx1Z2luID1cbi8qI19fUFVSRV9fKi9cbnBsdWdpbkZhY3Rvcnkoe1xuICBkaXJlY3RpdmVzOiB7XG4gICAgVkJUb2dnbGU6IFZCVG9nZ2xlXG4gIH1cbn0pO1xuZXhwb3J0IHsgVkJUb2dnbGVQbHVnaW4sIFZCVG9nZ2xlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy90b2dnbGUvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDIyMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///222\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return VBScrollspyPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__scrollspy__ = __webpack_require__(223);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport VBScrollspy */\n\n\nvar VBScrollspyPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n directives: {\n VBScrollspy: __WEBPACK_IMPORTED_MODULE_0__scrollspy__[\"a\" /* VBScrollspy */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy9zY3JvbGxzcHkvaW5kZXguanM/N2U5MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwQztBQUNVO0FBQ3BEO0FBQ0E7QUFDQSw2RUFBYTtBQUNiO0FBQ0EsaUJBQWlCLCtEQUFXO0FBQzVCO0FBQ0EsQ0FBQyIsImZpbGUiOiIyMjIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWQlNjcm9sbHNweSB9IGZyb20gJy4vc2Nyb2xsc3B5JztcbmltcG9ydCB7IHBsdWdpbkZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zJztcbnZhciBWQlNjcm9sbHNweVBsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgZGlyZWN0aXZlczoge1xuICAgIFZCU2Nyb2xsc3B5OiBWQlNjcm9sbHNweVxuICB9XG59KTtcbmV4cG9ydCB7IFZCU2Nyb2xsc3B5UGx1Z2luLCBWQlNjcm9sbHNweSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2RpcmVjdGl2ZXMvc2Nyb2xsc3B5L2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAyMjJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///222\n"); /***/ }), /* 223 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue__ = __webpack_require__(50);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__App_vue__ = __webpack_require__(226);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_bootstrap_vue__ = __webpack_require__(246);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_bootstrap_dist_css_bootstrap_css__ = __webpack_require__(276);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_bootstrap_dist_css_bootstrap_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_bootstrap_dist_css_bootstrap_css__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_bootstrap_vue_dist_bootstrap_vue_css__ = __webpack_require__(278);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_bootstrap_vue_dist_bootstrap_vue_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_bootstrap_vue_dist_bootstrap_vue_css__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_vue_code_highlight_themes_prism_css__ = __webpack_require__(280);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_vue_code_highlight_themes_prism_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_vue_code_highlight_themes_prism_css__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_vue_code_highlight_themes_prism_coy_css__ = __webpack_require__(282);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_vue_code_highlight_themes_prism_coy_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_vue_code_highlight_themes_prism_coy_css__);\n\n\n\n__WEBPACK_IMPORTED_MODULE_0_vue__[\"default\"].use(__WEBPACK_IMPORTED_MODULE_2_bootstrap_vue__[\"a\" /* default */]);\n\n\n\n\n// import 'vue-code-highlight/themes/duotone-sea.css'\n\n\n// import 'vue-code-highlight/themes/prism-dark.css'\n// import 'vue-code-highlight/themes/prism-funky.css'\n// import 'vue-code-highlight/themes/prism-okaidia.css'\n// import 'vue-code-highlight/themes/prism-solarizedlight.css'\n// import 'vue-code-highlight/themes/prism-tomorrow.css'\n// import 'vue-code-highlight/themes/prism-twilight.css'\n// import 'vue-code-highlight/themes/window.css'\n\nnew __WEBPACK_IMPORTED_MODULE_0_vue__[\"default\"]({\n el: '#ocrd-kwalitee',\n render: function render(h) {\n return h(__WEBPACK_IMPORTED_MODULE_1__App_vue__[\"a\" /* default */]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbWFpbi5qcz8zNDc5Il0sIm5hbWVzIjpbIlZ1ZSIsInVzZSIsIkJvb3RzdHJhcFZ1ZSIsImVsIiwicmVuZGVyIiwiaCIsIkFwcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0FBLDRDQUFHQSxDQUFDQyxHQUFKLENBQVFDLDhEQUFSOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSUYsNENBQUosQ0FBUTtBQUNORyxNQUFJLGdCQURFO0FBRU5DLFVBQVE7QUFBQSxXQUFLQyxFQUFFQyx5REFBRixDQUFMO0FBQUE7QUFGRixDQUFSIiwiZmlsZSI6IjIyMy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWdWUgZnJvbSAndnVlJ1xuaW1wb3J0IEFwcCBmcm9tICcuL0FwcC52dWUnXG5pbXBvcnQgQm9vdHN0cmFwVnVlIGZyb20gJ2Jvb3RzdHJhcC12dWUnXG5WdWUudXNlKEJvb3RzdHJhcFZ1ZSlcblxuaW1wb3J0ICdib290c3RyYXAvZGlzdC9jc3MvYm9vdHN0cmFwLmNzcydcbmltcG9ydCAnYm9vdHN0cmFwLXZ1ZS9kaXN0L2Jvb3RzdHJhcC12dWUuY3NzJ1xuXG4vLyBpbXBvcnQgJ3Z1ZS1jb2RlLWhpZ2hsaWdodC90aGVtZXMvZHVvdG9uZS1zZWEuY3NzJ1xuaW1wb3J0ICd2dWUtY29kZS1oaWdobGlnaHQvdGhlbWVzL3ByaXNtLmNzcydcbmltcG9ydCAndnVlLWNvZGUtaGlnaGxpZ2h0L3RoZW1lcy9wcmlzbS1jb3kuY3NzJ1xuLy8gaW1wb3J0ICd2dWUtY29kZS1oaWdobGlnaHQvdGhlbWVzL3ByaXNtLWRhcmsuY3NzJ1xuLy8gaW1wb3J0ICd2dWUtY29kZS1oaWdobGlnaHQvdGhlbWVzL3ByaXNtLWZ1bmt5LmNzcydcbi8vIGltcG9ydCAndnVlLWNvZGUtaGlnaGxpZ2h0L3RoZW1lcy9wcmlzbS1va2FpZGlhLmNzcydcbi8vIGltcG9ydCAndnVlLWNvZGUtaGlnaGxpZ2h0L3RoZW1lcy9wcmlzbS1zb2xhcml6ZWRsaWdodC5jc3MnXG4vLyBpbXBvcnQgJ3Z1ZS1jb2RlLWhpZ2hsaWdodC90aGVtZXMvcHJpc20tdG9tb3Jyb3cuY3NzJ1xuLy8gaW1wb3J0ICd2dWUtY29kZS1oaWdobGlnaHQvdGhlbWVzL3ByaXNtLXR3aWxpZ2h0LmNzcydcbi8vIGltcG9ydCAndnVlLWNvZGUtaGlnaGxpZ2h0L3RoZW1lcy93aW5kb3cuY3NzJ1xuXG5uZXcgVnVlKHtcbiAgZWw6ICcjb2NyZC1rd2FsaXRlZScsXG4gIHJlbmRlcjogaCA9PiBoKEFwcClcbn0pXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvbWFpbi5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///223\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return VBScrollspy; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__scrollspy_class__ = __webpack_require__(274);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_env__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\n\n\n\n // Key we use to store our instance\n\nvar BV_SCROLLSPY = '__BV_ScrollSpy__'; // Build a ScrollSpy config based on bindings (if any)\n// Arguments and modifiers take precedence over passed value config object\n\n/* istanbul ignore next: not easy to test */\n\nvar parseBindings = function parseBindings(bindings)\n/* istanbul ignore next: not easy to test */\n{\n var config = {}; // If argument, assume element ID\n\n if (bindings.arg) {\n // Element ID specified as arg\n // We must prepend '#' to become a CSS selector\n config.element = \"#\".concat(bindings.arg);\n } // Process modifiers\n\n\n Object(__WEBPACK_IMPORTED_MODULE_2__utils_object__[\"j\" /* keys */])(bindings.modifiers).forEach(function (mod) {\n if (/^\\d+$/.test(mod)) {\n // Offset value\n config.offset = parseInt(mod, 10);\n } else if (/^(auto|position|offset)$/.test(mod)) {\n // Offset method\n config.method = mod;\n }\n }); // Process value\n\n if (Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"m\" /* isString */])(bindings.value)) {\n // Value is a CSS ID or selector\n config.element = bindings.value;\n } else if (Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"h\" /* isNumber */])(bindings.value)) {\n // Value is offset\n config.offset = Math.round(bindings.value);\n } else if (Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"i\" /* isObject */])(bindings.value)) {\n // Value is config object\n // Filter the object based on our supported config options\n Object(__WEBPACK_IMPORTED_MODULE_2__utils_object__[\"j\" /* keys */])(bindings.value).filter(function (k) {\n return Boolean(__WEBPACK_IMPORTED_MODULE_0__scrollspy_class__[\"a\" /* default */].DefaultType[k]);\n }).forEach(function (k) {\n config[k] = bindings.value[k];\n });\n }\n\n return config;\n}; // Add or update ScrollSpy on our element\n\n\nvar applyScrollspy = function applyScrollspy(el, bindings, vnode)\n/* istanbul ignore next: not easy to test */\n{\n if (!__WEBPACK_IMPORTED_MODULE_1__utils_env__[\"j\" /* isBrowser */]) {\n /* istanbul ignore next */\n return;\n }\n\n var config = parseBindings(bindings);\n\n if (el[BV_SCROLLSPY]) {\n el[BV_SCROLLSPY].updateConfig(config, vnode.context.$root);\n } else {\n el[BV_SCROLLSPY] = new __WEBPACK_IMPORTED_MODULE_0__scrollspy_class__[\"a\" /* default */](el, config, vnode.context.$root);\n }\n}; // Remove ScrollSpy on our element\n\n/* istanbul ignore next: not easy to test */\n\n\nvar removeScrollspy = function removeScrollspy(el)\n/* istanbul ignore next: not easy to test */\n{\n if (el[BV_SCROLLSPY]) {\n el[BV_SCROLLSPY].dispose();\n el[BV_SCROLLSPY] = null;\n delete el[BV_SCROLLSPY];\n }\n};\n/*\n * Export our directive\n */\n\n\nvar VBScrollspy = {\n bind: function bind(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n applyScrollspy(el, bindings, vnode);\n },\n inserted: function inserted(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n applyScrollspy(el, bindings, vnode);\n },\n update: function update(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n if (bindings.value !== bindings.oldValue) {\n applyScrollspy(el, bindings, vnode);\n }\n },\n componentUpdated: function componentUpdated(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n if (bindings.value !== bindings.oldValue) {\n applyScrollspy(el, bindings, vnode);\n }\n },\n unbind: function unbind(el)\n /* istanbul ignore next: not easy to test */\n {\n removeScrollspy(el);\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy9zY3JvbGxzcHkvc2Nyb2xsc3B5LmpzP2Y4ODgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwQztBQUNFO0FBQ0Y7QUFDeUI7O0FBRW5FLHNDQUFzQztBQUN0Qzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7O0FBRWxCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsRUFBRSxtRUFBSTtBQUNOO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUwsTUFBTSx3RUFBUTtBQUNkO0FBQ0E7QUFDQSxHQUFHLFVBQVUsd0VBQVE7QUFDckI7QUFDQTtBQUNBLEdBQUcsVUFBVSx3RUFBUTtBQUNyQjtBQUNBO0FBQ0EsSUFBSSxtRUFBSTtBQUNSLHFCQUFxQixpRUFBUztBQUM5QixLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQSxPQUFPLDZEQUFTO0FBQ2hCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNILDJCQUEyQixpRUFBUztBQUNwQztBQUNBLEVBQUU7O0FBRUY7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIyMjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU2Nyb2xsU3B5IGZyb20gJy4vc2Nyb2xsc3B5LmNsYXNzJztcbmltcG9ydCB7IGlzQnJvd3NlciB9IGZyb20gJy4uLy4uL3V0aWxzL2Vudic7XG5pbXBvcnQgeyBrZXlzIH0gZnJvbSAnLi4vLi4vdXRpbHMvb2JqZWN0JztcbmltcG9ydCB7IGlzTnVtYmVyLCBpc09iamVjdCwgaXNTdHJpbmcgfSBmcm9tICcuLi8uLi91dGlscy9pbnNwZWN0JzsgLy8gS2V5IHdlIHVzZSB0byBzdG9yZSBvdXIgaW5zdGFuY2VcblxudmFyIEJWX1NDUk9MTFNQWSA9ICdfX0JWX1Njcm9sbFNweV9fJzsgLy8gQnVpbGQgYSBTY3JvbGxTcHkgY29uZmlnIGJhc2VkIG9uIGJpbmRpbmdzIChpZiBhbnkpXG4vLyBBcmd1bWVudHMgYW5kIG1vZGlmaWVycyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBwYXNzZWQgdmFsdWUgY29uZmlnIG9iamVjdFxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogbm90IGVhc3kgdG8gdGVzdCAqL1xuXG52YXIgcGFyc2VCaW5kaW5ncyA9IGZ1bmN0aW9uIHBhcnNlQmluZGluZ3MoYmluZGluZ3MpXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogbm90IGVhc3kgdG8gdGVzdCAqL1xue1xuICB2YXIgY29uZmlnID0ge307IC8vIElmIGFyZ3VtZW50LCBhc3N1bWUgZWxlbWVudCBJRFxuXG4gIGlmIChiaW5kaW5ncy5hcmcpIHtcbiAgICAvLyBFbGVtZW50IElEIHNwZWNpZmllZCBhcyBhcmdcbiAgICAvLyBXZSBtdXN0IHByZXBlbmQgJyMnIHRvIGJlY29tZSBhIENTUyBzZWxlY3RvclxuICAgIGNvbmZpZy5lbGVtZW50ID0gXCIjXCIuY29uY2F0KGJpbmRpbmdzLmFyZyk7XG4gIH0gLy8gUHJvY2VzcyBtb2RpZmllcnNcblxuXG4gIGtleXMoYmluZGluZ3MubW9kaWZpZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChtb2QpIHtcbiAgICBpZiAoL15cXGQrJC8udGVzdChtb2QpKSB7XG4gICAgICAvLyBPZmZzZXQgdmFsdWVcbiAgICAgIGNvbmZpZy5vZmZzZXQgPSBwYXJzZUludChtb2QsIDEwKTtcbiAgICB9IGVsc2UgaWYgKC9eKGF1dG98cG9zaXRpb258b2Zmc2V0KSQvLnRlc3QobW9kKSkge1xuICAgICAgLy8gT2Zmc2V0IG1ldGhvZFxuICAgICAgY29uZmlnLm1ldGhvZCA9IG1vZDtcbiAgICB9XG4gIH0pOyAvLyBQcm9jZXNzIHZhbHVlXG5cbiAgaWYgKGlzU3RyaW5nKGJpbmRpbmdzLnZhbHVlKSkge1xuICAgIC8vIFZhbHVlIGlzIGEgQ1NTIElEIG9yIHNlbGVjdG9yXG4gICAgY29uZmlnLmVsZW1lbnQgPSBiaW5kaW5ncy52YWx1ZTtcbiAgfSBlbHNlIGlmIChpc051bWJlcihiaW5kaW5ncy52YWx1ZSkpIHtcbiAgICAvLyBWYWx1ZSBpcyBvZmZzZXRcbiAgICBjb25maWcub2Zmc2V0ID0gTWF0aC5yb3VuZChiaW5kaW5ncy52YWx1ZSk7XG4gIH0gZWxzZSBpZiAoaXNPYmplY3QoYmluZGluZ3MudmFsdWUpKSB7XG4gICAgLy8gVmFsdWUgaXMgY29uZmlnIG9iamVjdFxuICAgIC8vIEZpbHRlciB0aGUgb2JqZWN0IGJhc2VkIG9uIG91ciBzdXBwb3J0ZWQgY29uZmlnIG9wdGlvbnNcbiAgICBrZXlzKGJpbmRpbmdzLnZhbHVlKS5maWx0ZXIoZnVuY3Rpb24gKGspIHtcbiAgICAgIHJldHVybiBCb29sZWFuKFNjcm9sbFNweS5EZWZhdWx0VHlwZVtrXSk7XG4gICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgY29uZmlnW2tdID0gYmluZGluZ3MudmFsdWVba107XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gY29uZmlnO1xufTsgLy8gQWRkIG9yIHVwZGF0ZSBTY3JvbGxTcHkgb24gb3VyIGVsZW1lbnRcblxuXG52YXIgYXBwbHlTY3JvbGxzcHkgPSBmdW5jdGlvbiBhcHBseVNjcm9sbHNweShlbCwgYmluZGluZ3MsIHZub2RlKVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IG5vdCBlYXN5IHRvIHRlc3QgKi9cbntcbiAgaWYgKCFpc0Jyb3dzZXIpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBjb25maWcgPSBwYXJzZUJpbmRpbmdzKGJpbmRpbmdzKTtcblxuICBpZiAoZWxbQlZfU0NST0xMU1BZXSkge1xuICAgIGVsW0JWX1NDUk9MTFNQWV0udXBkYXRlQ29uZmlnKGNvbmZpZywgdm5vZGUuY29udGV4dC4kcm9vdCk7XG4gIH0gZWxzZSB7XG4gICAgZWxbQlZfU0NST0xMU1BZXSA9IG5ldyBTY3JvbGxTcHkoZWwsIGNvbmZpZywgdm5vZGUuY29udGV4dC4kcm9vdCk7XG4gIH1cbn07IC8vIFJlbW92ZSBTY3JvbGxTcHkgb24gb3VyIGVsZW1lbnRcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IG5vdCBlYXN5IHRvIHRlc3QgKi9cblxuXG52YXIgcmVtb3ZlU2Nyb2xsc3B5ID0gZnVuY3Rpb24gcmVtb3ZlU2Nyb2xsc3B5KGVsKVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IG5vdCBlYXN5IHRvIHRlc3QgKi9cbntcbiAgaWYgKGVsW0JWX1NDUk9MTFNQWV0pIHtcbiAgICBlbFtCVl9TQ1JPTExTUFldLmRpc3Bvc2UoKTtcbiAgICBlbFtCVl9TQ1JPTExTUFldID0gbnVsbDtcbiAgICBkZWxldGUgZWxbQlZfU0NST0xMU1BZXTtcbiAgfVxufTtcbi8qXG4gKiBFeHBvcnQgb3VyIGRpcmVjdGl2ZVxuICovXG5cblxuZXhwb3J0IHZhciBWQlNjcm9sbHNweSA9IHtcbiAgYmluZDogZnVuY3Rpb24gYmluZChlbCwgYmluZGluZ3MsIHZub2RlKVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogbm90IGVhc3kgdG8gdGVzdCAqL1xuICB7XG4gICAgYXBwbHlTY3JvbGxzcHkoZWwsIGJpbmRpbmdzLCB2bm9kZSk7XG4gIH0sXG4gIGluc2VydGVkOiBmdW5jdGlvbiBpbnNlcnRlZChlbCwgYmluZGluZ3MsIHZub2RlKVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogbm90IGVhc3kgdG8gdGVzdCAqL1xuICB7XG4gICAgYXBwbHlTY3JvbGxzcHkoZWwsIGJpbmRpbmdzLCB2bm9kZSk7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGVsLCBiaW5kaW5ncywgdm5vZGUpXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBub3QgZWFzeSB0byB0ZXN0ICovXG4gIHtcbiAgICBpZiAoYmluZGluZ3MudmFsdWUgIT09IGJpbmRpbmdzLm9sZFZhbHVlKSB7XG4gICAgICBhcHBseVNjcm9sbHNweShlbCwgYmluZGluZ3MsIHZub2RlKTtcbiAgICB9XG4gIH0sXG4gIGNvbXBvbmVudFVwZGF0ZWQ6IGZ1bmN0aW9uIGNvbXBvbmVudFVwZGF0ZWQoZWwsIGJpbmRpbmdzLCB2bm9kZSlcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IG5vdCBlYXN5IHRvIHRlc3QgKi9cbiAge1xuICAgIGlmIChiaW5kaW5ncy52YWx1ZSAhPT0gYmluZGluZ3Mub2xkVmFsdWUpIHtcbiAgICAgIGFwcGx5U2Nyb2xsc3B5KGVsLCBiaW5kaW5ncywgdm5vZGUpO1xuICAgIH1cbiAgfSxcbiAgdW5iaW5kOiBmdW5jdGlvbiB1bmJpbmQoZWwpXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBub3QgZWFzeSB0byB0ZXN0ICovXG4gIHtcbiAgICByZW1vdmVTY3JvbGxzcHkoZWwpO1xuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2RpcmVjdGl2ZXMvc2Nyb2xsc3B5L3Njcm9sbHNweS5qc1xuLy8gbW9kdWxlIGlkID0gMjIzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///223\n"); /***/ }), /* 224 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ (function(module, __webpack_exports__, __webpack_require__) { -eval("/* WEBPACK VAR INJECTION */(function(global) {var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.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}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\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\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\n__webpack_require__(225);\n// 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.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(25)))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdGltZXJzLWJyb3dzZXJpZnkvbWFpbi5qcz9kN2FkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxtQkFBTyxDQUFDLEdBQWM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjIyNC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBzY29wZSA9ICh0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiICYmIGdsb2JhbCkgfHxcbiAgICAgICAgICAgICh0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiAmJiBzZWxmKSB8fFxuICAgICAgICAgICAgd2luZG93O1xudmFyIGFwcGx5ID0gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5O1xuXG4vLyBET00gQVBJcywgZm9yIGNvbXBsZXRlbmVzc1xuXG5leHBvcnRzLnNldFRpbWVvdXQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBUaW1lb3V0KGFwcGx5LmNhbGwoc2V0VGltZW91dCwgc2NvcGUsIGFyZ3VtZW50cyksIGNsZWFyVGltZW91dCk7XG59O1xuZXhwb3J0cy5zZXRJbnRlcnZhbCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFRpbWVvdXQoYXBwbHkuY2FsbChzZXRJbnRlcnZhbCwgc2NvcGUsIGFyZ3VtZW50cyksIGNsZWFySW50ZXJ2YWwpO1xufTtcbmV4cG9ydHMuY2xlYXJUaW1lb3V0ID1cbmV4cG9ydHMuY2xlYXJJbnRlcnZhbCA9IGZ1bmN0aW9uKHRpbWVvdXQpIHtcbiAgaWYgKHRpbWVvdXQpIHtcbiAgICB0aW1lb3V0LmNsb3NlKCk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIFRpbWVvdXQoaWQsIGNsZWFyRm4pIHtcbiAgdGhpcy5faWQgPSBpZDtcbiAgdGhpcy5fY2xlYXJGbiA9IGNsZWFyRm47XG59XG5UaW1lb3V0LnByb3RvdHlwZS51bnJlZiA9IFRpbWVvdXQucHJvdG90eXBlLnJlZiA9IGZ1bmN0aW9uKCkge307XG5UaW1lb3V0LnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLl9jbGVhckZuLmNhbGwoc2NvcGUsIHRoaXMuX2lkKTtcbn07XG5cbi8vIERvZXMgbm90IHN0YXJ0IHRoZSB0aW1lLCBqdXN0IHNldHMgdXAgdGhlIG1lbWJlcnMgbmVlZGVkLlxuZXhwb3J0cy5lbnJvbGwgPSBmdW5jdGlvbihpdGVtLCBtc2Vjcykge1xuICBjbGVhclRpbWVvdXQoaXRlbS5faWRsZVRpbWVvdXRJZCk7XG4gIGl0ZW0uX2lkbGVUaW1lb3V0ID0gbXNlY3M7XG59O1xuXG5leHBvcnRzLnVuZW5yb2xsID0gZnVuY3Rpb24oaXRlbSkge1xuICBjbGVhclRpbWVvdXQoaXRlbS5faWRsZVRpbWVvdXRJZCk7XG4gIGl0ZW0uX2lkbGVUaW1lb3V0ID0gLTE7XG59O1xuXG5leHBvcnRzLl91bnJlZkFjdGl2ZSA9IGV4cG9ydHMuYWN0aXZlID0gZnVuY3Rpb24oaXRlbSkge1xuICBjbGVhclRpbWVvdXQoaXRlbS5faWRsZVRpbWVvdXRJZCk7XG5cbiAgdmFyIG1zZWNzID0gaXRlbS5faWRsZVRpbWVvdXQ7XG4gIGlmIChtc2VjcyA+PSAwKSB7XG4gICAgaXRlbS5faWRsZVRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gb25UaW1lb3V0KCkge1xuICAgICAgaWYgKGl0ZW0uX29uVGltZW91dClcbiAgICAgICAgaXRlbS5fb25UaW1lb3V0KCk7XG4gICAgfSwgbXNlY3MpO1xuICB9XG59O1xuXG4vLyBzZXRpbW1lZGlhdGUgYXR0YWNoZXMgaXRzZWxmIHRvIHRoZSBnbG9iYWwgb2JqZWN0XG5yZXF1aXJlKFwic2V0aW1tZWRpYXRlXCIpO1xuLy8gT24gc29tZSBleG90aWMgZW52aXJvbm1lbnRzLCBpdCdzIG5vdCBjbGVhciB3aGljaCBvYmplY3QgYHNldGltbWVkaWF0ZWAgd2FzXG4vLyBhYmxlIHRvIGluc3RhbGwgb250by4gIFNlYXJjaCBlYWNoIHBvc3NpYmlsaXR5IGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZVxuLy8gYHNldGltbWVkaWF0ZWAgbGlicmFyeS5cbmV4cG9ydHMuc2V0SW1tZWRpYXRlID0gKHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiICYmIHNlbGYuc2V0SW1tZWRpYXRlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAodHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBnbG9iYWwuc2V0SW1tZWRpYXRlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAodGhpcyAmJiB0aGlzLnNldEltbWVkaWF0ZSk7XG5leHBvcnRzLmNsZWFySW1tZWRpYXRlID0gKHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiICYmIHNlbGYuY2xlYXJJbW1lZGlhdGUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgJiYgZ2xvYmFsLmNsZWFySW1tZWRpYXRlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzICYmIHRoaXMuY2xlYXJJbW1lZGlhdGUpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvdGltZXJzLWJyb3dzZXJpZnkvbWFpbi5qc1xuLy8gbW9kdWxlIGlkID0gMjI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///224\n"); +"use strict"; +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return VBTogglePlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__toggle__ = __webpack_require__(64);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_plugins__ = __webpack_require__(3);\n/* unused harmony reexport VBToggle */\n\n\nvar VBTogglePlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_1__utils_plugins__[\"b\" /* pluginFactory */])({\n directives: {\n VBToggle: __WEBPACK_IMPORTED_MODULE_0__toggle__[\"a\" /* VBToggle */]\n }\n});\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy90b2dnbGUvaW5kZXguanM/YTU4ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvQztBQUNnQjtBQUNwRDtBQUNBO0FBQ0EsNkVBQWE7QUFDYjtBQUNBLGNBQWMseURBQVE7QUFDdEI7QUFDQSxDQUFDIiwiZmlsZSI6IjIyNC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZCVG9nZ2xlIH0gZnJvbSAnLi90b2dnbGUnO1xuaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMnO1xudmFyIFZCVG9nZ2xlUGx1Z2luID1cbi8qI19fUFVSRV9fKi9cbnBsdWdpbkZhY3Rvcnkoe1xuICBkaXJlY3RpdmVzOiB7XG4gICAgVkJUb2dnbGU6IFZCVG9nZ2xlXG4gIH1cbn0pO1xuZXhwb3J0IHsgVkJUb2dnbGVQbHVnaW4sIFZCVG9nZ2xlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy90b2dnbGUvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDIyNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///224\n"); /***/ }), /* 225 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ (function(module, __webpack_exports__, __webpack_require__) { -eval("/* WEBPACK VAR INJECTION */(function(global, process) {(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 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 }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\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 switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\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 if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\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 global.onmessage = function() {\n postMessageIsAsynchronous = false;\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\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n 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(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(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 script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\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\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(25), __webpack_require__(51)))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc2V0aW1tZWRpYXRlL3NldEltbWVkaWF0ZS5qcz85YjJhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixpQkFBaUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDBDQUEwQyxzQkFBc0IsRUFBRTtBQUNsRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIyMjUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKGdsb2JhbCwgdW5kZWZpbmVkKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICBpZiAoZ2xvYmFsLnNldEltbWVkaWF0ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIG5leHRIYW5kbGUgPSAxOyAvLyBTcGVjIHNheXMgZ3JlYXRlciB0aGFuIHplcm9cbiAgICB2YXIgdGFza3NCeUhhbmRsZSA9IHt9O1xuICAgIHZhciBjdXJyZW50bHlSdW5uaW5nQVRhc2sgPSBmYWxzZTtcbiAgICB2YXIgZG9jID0gZ2xvYmFsLmRvY3VtZW50O1xuICAgIHZhciByZWdpc3RlckltbWVkaWF0ZTtcblxuICAgIGZ1bmN0aW9uIHNldEltbWVkaWF0ZShjYWxsYmFjaykge1xuICAgICAgLy8gQ2FsbGJhY2sgY2FuIGVpdGhlciBiZSBhIGZ1bmN0aW9uIG9yIGEgc3RyaW5nXG4gICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgY2FsbGJhY2sgPSBuZXcgRnVuY3Rpb24oXCJcIiArIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICAgIC8vIENvcHkgZnVuY3Rpb24gYXJndW1lbnRzXG4gICAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2kgKyAxXTtcbiAgICAgIH1cbiAgICAgIC8vIFN0b3JlIGFuZCByZWdpc3RlciB0aGUgdGFza1xuICAgICAgdmFyIHRhc2sgPSB7IGNhbGxiYWNrOiBjYWxsYmFjaywgYXJnczogYXJncyB9O1xuICAgICAgdGFza3NCeUhhbmRsZVtuZXh0SGFuZGxlXSA9IHRhc2s7XG4gICAgICByZWdpc3RlckltbWVkaWF0ZShuZXh0SGFuZGxlKTtcbiAgICAgIHJldHVybiBuZXh0SGFuZGxlKys7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaGFuZGxlKSB7XG4gICAgICAgIGRlbGV0ZSB0YXNrc0J5SGFuZGxlW2hhbmRsZV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcnVuKHRhc2spIHtcbiAgICAgICAgdmFyIGNhbGxiYWNrID0gdGFzay5jYWxsYmFjaztcbiAgICAgICAgdmFyIGFyZ3MgPSB0YXNrLmFyZ3M7XG4gICAgICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgY2FsbGJhY2suYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcnVuSWZQcmVzZW50KGhhbmRsZSkge1xuICAgICAgICAvLyBGcm9tIHRoZSBzcGVjOiBcIldhaXQgdW50aWwgYW55IGludm9jYXRpb25zIG9mIHRoaXMgYWxnb3JpdGhtIHN0YXJ0ZWQgYmVmb3JlIHRoaXMgb25lIGhhdmUgY29tcGxldGVkLlwiXG4gICAgICAgIC8vIFNvIGlmIHdlJ3JlIGN1cnJlbnRseSBydW5uaW5nIGEgdGFzaywgd2UnbGwgbmVlZCB0byBkZWxheSB0aGlzIGludm9jYXRpb24uXG4gICAgICAgIGlmIChjdXJyZW50bHlSdW5uaW5nQVRhc2spIHtcbiAgICAgICAgICAgIC8vIERlbGF5IGJ5IGRvaW5nIGEgc2V0VGltZW91dC4gc2V0SW1tZWRpYXRlIHdhcyB0cmllZCBpbnN0ZWFkLCBidXQgaW4gRmlyZWZveCA3IGl0IGdlbmVyYXRlZCBhXG4gICAgICAgICAgICAvLyBcInRvbyBtdWNoIHJlY3Vyc2lvblwiIGVycm9yLlxuICAgICAgICAgICAgc2V0VGltZW91dChydW5JZlByZXNlbnQsIDAsIGhhbmRsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgdGFzayA9IHRhc2tzQnlIYW5kbGVbaGFuZGxlXTtcbiAgICAgICAgICAgIGlmICh0YXNrKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudGx5UnVubmluZ0FUYXNrID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBydW4odGFzayk7XG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbW1lZGlhdGUoaGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudGx5UnVubmluZ0FUYXNrID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFsbE5leHRUaWNrSW1wbGVtZW50YXRpb24oKSB7XG4gICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7XG4gICAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHsgcnVuSWZQcmVzZW50KGhhbmRsZSk7IH0pO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNhblVzZVBvc3RNZXNzYWdlKCkge1xuICAgICAgICAvLyBUaGUgdGVzdCBhZ2FpbnN0IGBpbXBvcnRTY3JpcHRzYCBwcmV2ZW50cyB0aGlzIGltcGxlbWVudGF0aW9uIGZyb20gYmVpbmcgaW5zdGFsbGVkIGluc2lkZSBhIHdlYiB3b3JrZXIsXG4gICAgICAgIC8vIHdoZXJlIGBnbG9iYWwucG9zdE1lc3NhZ2VgIG1lYW5zIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudCBhbmQgY2FuJ3QgYmUgdXNlZCBmb3IgdGhpcyBwdXJwb3NlLlxuICAgICAgICBpZiAoZ2xvYmFsLnBvc3RNZXNzYWdlICYmICFnbG9iYWwuaW1wb3J0U2NyaXB0cykge1xuICAgICAgICAgICAgdmFyIHBvc3RNZXNzYWdlSXNBc3luY2hyb25vdXMgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIG9sZE9uTWVzc2FnZSA9IGdsb2JhbC5vbm1lc3NhZ2U7XG4gICAgICAgICAgICBnbG9iYWwub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2VJc0FzeW5jaHJvbm91cyA9IGZhbHNlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShcIlwiLCBcIipcIik7XG4gICAgICAgICAgICBnbG9iYWwub25tZXNzYWdlID0gb2xkT25NZXNzYWdlO1xuICAgICAgICAgICAgcmV0dXJuIHBvc3RNZXNzYWdlSXNBc3luY2hyb25vdXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsUG9zdE1lc3NhZ2VJbXBsZW1lbnRhdGlvbigpIHtcbiAgICAgICAgLy8gSW5zdGFsbHMgYW4gZXZlbnQgaGFuZGxlciBvbiBgZ2xvYmFsYCBmb3IgdGhlIGBtZXNzYWdlYCBldmVudDogc2VlXG4gICAgICAgIC8vICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vRE9NL3dpbmRvdy5wb3N0TWVzc2FnZVxuICAgICAgICAvLyAqIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL2NvbW1zLmh0bWwjY3Jvc3NEb2N1bWVudE1lc3NhZ2VzXG5cbiAgICAgICAgdmFyIG1lc3NhZ2VQcmVmaXggPSBcInNldEltbWVkaWF0ZSRcIiArIE1hdGgucmFuZG9tKCkgKyBcIiRcIjtcbiAgICAgICAgdmFyIG9uR2xvYmFsTWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuc291cmNlID09PSBnbG9iYWwgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgZXZlbnQuZGF0YSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIGV2ZW50LmRhdGEuaW5kZXhPZihtZXNzYWdlUHJlZml4KSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJ1bklmUHJlc2VudCgrZXZlbnQuZGF0YS5zbGljZShtZXNzYWdlUHJlZml4Lmxlbmd0aCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICAgICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIG9uR2xvYmFsTWVzc2FnZSwgZmFsc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2xvYmFsLmF0dGFjaEV2ZW50KFwib25tZXNzYWdlXCIsIG9uR2xvYmFsTWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uKGhhbmRsZSkge1xuICAgICAgICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKG1lc3NhZ2VQcmVmaXggKyBoYW5kbGUsIFwiKlwiKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsTWVzc2FnZUNoYW5uZWxJbXBsZW1lbnRhdGlvbigpIHtcbiAgICAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICAgICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgdmFyIGhhbmRsZSA9IGV2ZW50LmRhdGE7XG4gICAgICAgICAgICBydW5JZlByZXNlbnQoaGFuZGxlKTtcbiAgICAgICAgfTtcblxuICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uKGhhbmRsZSkge1xuICAgICAgICAgICAgY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZShoYW5kbGUpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc3RhbGxSZWFkeVN0YXRlQ2hhbmdlSW1wbGVtZW50YXRpb24oKSB7XG4gICAgICAgIHZhciBodG1sID0gZG9jLmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgcmVnaXN0ZXJJbW1lZGlhdGUgPSBmdW5jdGlvbihoYW5kbGUpIHtcbiAgICAgICAgICAgIC8vIENyZWF0ZSBhIDxzY3JpcHQ+IGVsZW1lbnQ7IGl0cyByZWFkeXN0YXRlY2hhbmdlIGV2ZW50IHdpbGwgYmUgZmlyZWQgYXN5bmNocm9ub3VzbHkgb25jZSBpdCBpcyBpbnNlcnRlZFxuICAgICAgICAgICAgLy8gaW50byB0aGUgZG9jdW1lbnQuIERvIHNvLCB0aHVzIHF1ZXVpbmcgdXAgdGhlIHRhc2suIFJlbWVtYmVyIHRvIGNsZWFuIHVwIG9uY2UgaXQncyBiZWVuIGNhbGxlZC5cbiAgICAgICAgICAgIHZhciBzY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICAgICAgICAgIHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcnVuSWZQcmVzZW50KGhhbmRsZSk7XG4gICAgICAgICAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgaHRtbC5yZW1vdmVDaGlsZChzY3JpcHQpO1xuICAgICAgICAgICAgICAgIHNjcmlwdCA9IG51bGw7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaHRtbC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc3RhbGxTZXRUaW1lb3V0SW1wbGVtZW50YXRpb24oKSB7XG4gICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KHJ1bklmUHJlc2VudCwgMCwgaGFuZGxlKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBJZiBzdXBwb3J0ZWQsIHdlIHNob3VsZCBhdHRhY2ggdG8gdGhlIHByb3RvdHlwZSBvZiBnbG9iYWwsIHNpbmNlIHRoYXQgaXMgd2hlcmUgc2V0VGltZW91dCBldCBhbC4gbGl2ZS5cbiAgICB2YXIgYXR0YWNoVG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKGdsb2JhbCk7XG4gICAgYXR0YWNoVG8gPSBhdHRhY2hUbyAmJiBhdHRhY2hUby5zZXRUaW1lb3V0ID8gYXR0YWNoVG8gOiBnbG9iYWw7XG5cbiAgICAvLyBEb24ndCBnZXQgZm9vbGVkIGJ5IGUuZy4gYnJvd3NlcmlmeSBlbnZpcm9ubWVudHMuXG4gICAgaWYgKHt9LnRvU3RyaW5nLmNhbGwoZ2xvYmFsLnByb2Nlc3MpID09PSBcIltvYmplY3QgcHJvY2Vzc11cIikge1xuICAgICAgICAvLyBGb3IgTm9kZS5qcyBiZWZvcmUgMC45XG4gICAgICAgIGluc3RhbGxOZXh0VGlja0ltcGxlbWVudGF0aW9uKCk7XG5cbiAgICB9IGVsc2UgaWYgKGNhblVzZVBvc3RNZXNzYWdlKCkpIHtcbiAgICAgICAgLy8gRm9yIG5vbi1JRTEwIG1vZGVybiBicm93c2Vyc1xuICAgICAgICBpbnN0YWxsUG9zdE1lc3NhZ2VJbXBsZW1lbnRhdGlvbigpO1xuXG4gICAgfSBlbHNlIGlmIChnbG9iYWwuTWVzc2FnZUNoYW5uZWwpIHtcbiAgICAgICAgLy8gRm9yIHdlYiB3b3JrZXJzLCB3aGVyZSBzdXBwb3J0ZWRcbiAgICAgICAgaW5zdGFsbE1lc3NhZ2VDaGFubmVsSW1wbGVtZW50YXRpb24oKTtcblxuICAgIH0gZWxzZSBpZiAoZG9jICYmIFwib25yZWFkeXN0YXRlY2hhbmdlXCIgaW4gZG9jLmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIikpIHtcbiAgICAgICAgLy8gRm9yIElFIDbigJM4XG4gICAgICAgIGluc3RhbGxSZWFkeVN0YXRlQ2hhbmdlSW1wbGVtZW50YXRpb24oKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZvciBvbGRlciBicm93c2Vyc1xuICAgICAgICBpbnN0YWxsU2V0VGltZW91dEltcGxlbWVudGF0aW9uKCk7XG4gICAgfVxuXG4gICAgYXR0YWNoVG8uc2V0SW1tZWRpYXRlID0gc2V0SW1tZWRpYXRlO1xuICAgIGF0dGFjaFRvLmNsZWFySW1tZWRpYXRlID0gY2xlYXJJbW1lZGlhdGU7XG59KHR5cGVvZiBzZWxmID09PSBcInVuZGVmaW5lZFwiID8gdHlwZW9mIGdsb2JhbCA9PT0gXCJ1bmRlZmluZWRcIiA/IHRoaXMgOiBnbG9iYWwgOiBzZWxmKSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9zZXRpbW1lZGlhdGUvc2V0SW1tZWRpYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSAyMjVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///225\n"); +"use strict"; +eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue__ = __webpack_require__(50);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__App_vue__ = __webpack_require__(228);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_bootstrap_vue__ = __webpack_require__(246);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_bootstrap_dist_css_bootstrap_css__ = __webpack_require__(276);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_bootstrap_dist_css_bootstrap_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_bootstrap_dist_css_bootstrap_css__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_bootstrap_vue_dist_bootstrap_vue_css__ = __webpack_require__(278);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_bootstrap_vue_dist_bootstrap_vue_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_bootstrap_vue_dist_bootstrap_vue_css__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_vue_code_highlight_themes_prism_css__ = __webpack_require__(280);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_vue_code_highlight_themes_prism_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_vue_code_highlight_themes_prism_css__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_vue_code_highlight_themes_prism_coy_css__ = __webpack_require__(282);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_vue_code_highlight_themes_prism_coy_css___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_vue_code_highlight_themes_prism_coy_css__);\n\n\n\n__WEBPACK_IMPORTED_MODULE_0_vue__[\"default\"].use(__WEBPACK_IMPORTED_MODULE_2_bootstrap_vue__[\"a\" /* default */]);\n\n\n\n\n// import 'vue-code-highlight/themes/duotone-sea.css'\n\n\n// import 'vue-code-highlight/themes/prism-dark.css'\n// import 'vue-code-highlight/themes/prism-funky.css'\n// import 'vue-code-highlight/themes/prism-okaidia.css'\n// import 'vue-code-highlight/themes/prism-solarizedlight.css'\n// import 'vue-code-highlight/themes/prism-tomorrow.css'\n// import 'vue-code-highlight/themes/prism-twilight.css'\n// import 'vue-code-highlight/themes/window.css'\n\nwindow.kwalitee_app = new __WEBPACK_IMPORTED_MODULE_0_vue__[\"default\"]({\n el: '#ocrd-kwalitee',\n render: function render(h) {\n return h(__WEBPACK_IMPORTED_MODULE_1__App_vue__[\"a\" /* default */]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbWFpbi5qcz8zNDc5Il0sIm5hbWVzIjpbIlZ1ZSIsInVzZSIsIkJvb3RzdHJhcFZ1ZSIsIndpbmRvdyIsImt3YWxpdGVlX2FwcCIsImVsIiwicmVuZGVyIiwiaCIsIkFwcCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0FBLDRDQUFHQSxDQUFDQyxHQUFKLENBQVFDLDhEQUFSOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUFDLE9BQU9DLFlBQVAsR0FBc0IsSUFBSUosNENBQUosQ0FBUTtBQUM1QkssTUFBSSxnQkFEd0I7QUFFNUJDLFVBQVE7QUFBQSxXQUFLQyxFQUFFQyx5REFBRixDQUFMO0FBQUE7QUFGb0IsQ0FBUixDQUF0QiIsImZpbGUiOiIyMjUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcbmltcG9ydCBBcHAgZnJvbSAnLi9BcHAudnVlJ1xuaW1wb3J0IEJvb3RzdHJhcFZ1ZSBmcm9tICdib290c3RyYXAtdnVlJ1xuVnVlLnVzZShCb290c3RyYXBWdWUpXG5cbmltcG9ydCAnYm9vdHN0cmFwL2Rpc3QvY3NzL2Jvb3RzdHJhcC5jc3MnXG5pbXBvcnQgJ2Jvb3RzdHJhcC12dWUvZGlzdC9ib290c3RyYXAtdnVlLmNzcydcblxuLy8gaW1wb3J0ICd2dWUtY29kZS1oaWdobGlnaHQvdGhlbWVzL2R1b3RvbmUtc2VhLmNzcydcbmltcG9ydCAndnVlLWNvZGUtaGlnaGxpZ2h0L3RoZW1lcy9wcmlzbS5jc3MnXG5pbXBvcnQgJ3Z1ZS1jb2RlLWhpZ2hsaWdodC90aGVtZXMvcHJpc20tY295LmNzcydcbi8vIGltcG9ydCAndnVlLWNvZGUtaGlnaGxpZ2h0L3RoZW1lcy9wcmlzbS1kYXJrLmNzcydcbi8vIGltcG9ydCAndnVlLWNvZGUtaGlnaGxpZ2h0L3RoZW1lcy9wcmlzbS1mdW5reS5jc3MnXG4vLyBpbXBvcnQgJ3Z1ZS1jb2RlLWhpZ2hsaWdodC90aGVtZXMvcHJpc20tb2thaWRpYS5jc3MnXG4vLyBpbXBvcnQgJ3Z1ZS1jb2RlLWhpZ2hsaWdodC90aGVtZXMvcHJpc20tc29sYXJpemVkbGlnaHQuY3NzJ1xuLy8gaW1wb3J0ICd2dWUtY29kZS1oaWdobGlnaHQvdGhlbWVzL3ByaXNtLXRvbW9ycm93LmNzcydcbi8vIGltcG9ydCAndnVlLWNvZGUtaGlnaGxpZ2h0L3RoZW1lcy9wcmlzbS10d2lsaWdodC5jc3MnXG4vLyBpbXBvcnQgJ3Z1ZS1jb2RlLWhpZ2hsaWdodC90aGVtZXMvd2luZG93LmNzcydcblxud2luZG93Lmt3YWxpdGVlX2FwcCA9IG5ldyBWdWUoe1xuICBlbDogJyNvY3JkLWt3YWxpdGVlJyxcbiAgcmVuZGVyOiBoID0+IGgoQXBwKVxufSlcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9tYWluLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///225\n"); /***/ }), /* 226 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { -"use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_App_vue__ = __webpack_require__(94);\n/* unused harmony namespace reexport */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7ba5bd90_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_App_vue__ = __webpack_require__(245);\nvar disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n __webpack_require__(227)\n}\nvar normalizeComponent = __webpack_require__(29)\n/* script */\n\n\n/* template */\n\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_App_vue__[\"a\" /* default */],\n __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7ba5bd90_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_App_vue__[\"a\" /* default */],\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/App.vue\"\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-7ba5bd90\", Component.options)\n } else {\n hotAPI.reload(\"data-v-7ba5bd90\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Component.exports);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvQXBwLnZ1ZT9hOGU5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUJBQU8sQ0FBQyxHQUF3UDtBQUNsUTtBQUNBLHlCQUF5QixtQkFBTyxDQUFDLEVBQXNEO0FBQ3ZGO0FBQ29HO0FBQ2E7QUFDakg7QUFDOE87QUFDOU87QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSwrSEFBYztBQUNoQixFQUFFLDROQUFnQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQVUsR0FBRztBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsQ0FBQzs7QUFFYywwRUFBaUIiLCJmaWxlIjoiMjI2LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGRpc3Bvc2VkID0gZmFsc2VcbmZ1bmN0aW9uIGluamVjdFN0eWxlIChzc3JDb250ZXh0KSB7XG4gIGlmIChkaXNwb3NlZCkgcmV0dXJuXG4gIHJlcXVpcmUoXCIhIXZ1ZS1zdHlsZS1sb2FkZXIhY3NzLWxvYWRlcj9zb3VyY2VNYXAhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyL2luZGV4P3tcXFwidnVlXFxcIjp0cnVlLFxcXCJpZFxcXCI6XFxcImRhdGEtdi03YmE1YmQ5MFxcXCIsXFxcInNjb3BlZFxcXCI6ZmFsc2UsXFxcImhhc0lubGluZUNvbmZpZ1xcXCI6ZmFsc2V9IS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXN0eWxlcyZpbmRleD0wIS4vQXBwLnZ1ZVwiKVxufVxudmFyIG5vcm1hbGl6ZUNvbXBvbmVudCA9IHJlcXVpcmUoXCIhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2NvbXBvbmVudC1ub3JtYWxpemVyXCIpXG4vKiBzY3JpcHQgKi9cbmV4cG9ydCAqIGZyb20gXCIhIWJhYmVsLWxvYWRlciEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL0FwcC52dWVcIlxuaW1wb3J0IF9fdnVlX3NjcmlwdF9fIGZyb20gXCIhIWJhYmVsLWxvYWRlciEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL0FwcC52dWVcIlxuLyogdGVtcGxhdGUgKi9cbmltcG9ydCBfX3Z1ZV90ZW1wbGF0ZV9fIGZyb20gXCIhIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxlci9pbmRleD97XFxcImlkXFxcIjpcXFwiZGF0YS12LTdiYTViZDkwXFxcIixcXFwiaGFzU2NvcGVkXFxcIjpmYWxzZSxcXFwiYnVibGVcXFwiOntcXFwidHJhbnNmb3Jtc1xcXCI6e319fSEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vQXBwLnZ1ZVwiXG4vKiB0ZW1wbGF0ZSBmdW5jdGlvbmFsICovXG52YXIgX192dWVfdGVtcGxhdGVfZnVuY3Rpb25hbF9fID0gZmFsc2Vcbi8qIHN0eWxlcyAqL1xudmFyIF9fdnVlX3N0eWxlc19fID0gaW5qZWN0U3R5bGVcbi8qIHNjb3BlSWQgKi9cbnZhciBfX3Z1ZV9zY29wZUlkX18gPSBudWxsXG4vKiBtb2R1bGVJZGVudGlmaWVyIChzZXJ2ZXIgb25seSkgKi9cbnZhciBfX3Z1ZV9tb2R1bGVfaWRlbnRpZmllcl9fID0gbnVsbFxudmFyIENvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgX192dWVfc2NyaXB0X18sXG4gIF9fdnVlX3RlbXBsYXRlX18sXG4gIF9fdnVlX3RlbXBsYXRlX2Z1bmN0aW9uYWxfXyxcbiAgX192dWVfc3R5bGVzX18sXG4gIF9fdnVlX3Njb3BlSWRfXyxcbiAgX192dWVfbW9kdWxlX2lkZW50aWZpZXJfX1xuKVxuQ29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvQXBwLnZ1ZVwiXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7KGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcbiAgaG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSwgZmFsc2UpXG4gIGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghbW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgaG90QVBJLmNyZWF0ZVJlY29yZChcImRhdGEtdi03YmE1YmQ5MFwiLCBDb21wb25lbnQub3B0aW9ucylcbiAgfSBlbHNlIHtcbiAgICBob3RBUEkucmVsb2FkKFwiZGF0YS12LTdiYTViZDkwXCIsIENvbXBvbmVudC5vcHRpb25zKVxuICB9XG4gIG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbiAoZGF0YSkge1xuICAgIGRpc3Bvc2VkID0gdHJ1ZVxuICB9KVxufSkoKX1cblxuZXhwb3J0IGRlZmF1bHQgQ29tcG9uZW50LmV4cG9ydHNcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL0FwcC52dWVcbi8vIG1vZHVsZSBpZCA9IDIyNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///226\n"); +eval("/* WEBPACK VAR INJECTION */(function(global) {var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.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}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\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\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\n__webpack_require__(227);\n// 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.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(25)))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdGltZXJzLWJyb3dzZXJpZnkvbWFpbi5qcz9kN2FkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxtQkFBTyxDQUFDLEdBQWM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjIyNi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBzY29wZSA9ICh0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiICYmIGdsb2JhbCkgfHxcbiAgICAgICAgICAgICh0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiAmJiBzZWxmKSB8fFxuICAgICAgICAgICAgd2luZG93O1xudmFyIGFwcGx5ID0gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5O1xuXG4vLyBET00gQVBJcywgZm9yIGNvbXBsZXRlbmVzc1xuXG5leHBvcnRzLnNldFRpbWVvdXQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBUaW1lb3V0KGFwcGx5LmNhbGwoc2V0VGltZW91dCwgc2NvcGUsIGFyZ3VtZW50cyksIGNsZWFyVGltZW91dCk7XG59O1xuZXhwb3J0cy5zZXRJbnRlcnZhbCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFRpbWVvdXQoYXBwbHkuY2FsbChzZXRJbnRlcnZhbCwgc2NvcGUsIGFyZ3VtZW50cyksIGNsZWFySW50ZXJ2YWwpO1xufTtcbmV4cG9ydHMuY2xlYXJUaW1lb3V0ID1cbmV4cG9ydHMuY2xlYXJJbnRlcnZhbCA9IGZ1bmN0aW9uKHRpbWVvdXQpIHtcbiAgaWYgKHRpbWVvdXQpIHtcbiAgICB0aW1lb3V0LmNsb3NlKCk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIFRpbWVvdXQoaWQsIGNsZWFyRm4pIHtcbiAgdGhpcy5faWQgPSBpZDtcbiAgdGhpcy5fY2xlYXJGbiA9IGNsZWFyRm47XG59XG5UaW1lb3V0LnByb3RvdHlwZS51bnJlZiA9IFRpbWVvdXQucHJvdG90eXBlLnJlZiA9IGZ1bmN0aW9uKCkge307XG5UaW1lb3V0LnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLl9jbGVhckZuLmNhbGwoc2NvcGUsIHRoaXMuX2lkKTtcbn07XG5cbi8vIERvZXMgbm90IHN0YXJ0IHRoZSB0aW1lLCBqdXN0IHNldHMgdXAgdGhlIG1lbWJlcnMgbmVlZGVkLlxuZXhwb3J0cy5lbnJvbGwgPSBmdW5jdGlvbihpdGVtLCBtc2Vjcykge1xuICBjbGVhclRpbWVvdXQoaXRlbS5faWRsZVRpbWVvdXRJZCk7XG4gIGl0ZW0uX2lkbGVUaW1lb3V0ID0gbXNlY3M7XG59O1xuXG5leHBvcnRzLnVuZW5yb2xsID0gZnVuY3Rpb24oaXRlbSkge1xuICBjbGVhclRpbWVvdXQoaXRlbS5faWRsZVRpbWVvdXRJZCk7XG4gIGl0ZW0uX2lkbGVUaW1lb3V0ID0gLTE7XG59O1xuXG5leHBvcnRzLl91bnJlZkFjdGl2ZSA9IGV4cG9ydHMuYWN0aXZlID0gZnVuY3Rpb24oaXRlbSkge1xuICBjbGVhclRpbWVvdXQoaXRlbS5faWRsZVRpbWVvdXRJZCk7XG5cbiAgdmFyIG1zZWNzID0gaXRlbS5faWRsZVRpbWVvdXQ7XG4gIGlmIChtc2VjcyA+PSAwKSB7XG4gICAgaXRlbS5faWRsZVRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gb25UaW1lb3V0KCkge1xuICAgICAgaWYgKGl0ZW0uX29uVGltZW91dClcbiAgICAgICAgaXRlbS5fb25UaW1lb3V0KCk7XG4gICAgfSwgbXNlY3MpO1xuICB9XG59O1xuXG4vLyBzZXRpbW1lZGlhdGUgYXR0YWNoZXMgaXRzZWxmIHRvIHRoZSBnbG9iYWwgb2JqZWN0XG5yZXF1aXJlKFwic2V0aW1tZWRpYXRlXCIpO1xuLy8gT24gc29tZSBleG90aWMgZW52aXJvbm1lbnRzLCBpdCdzIG5vdCBjbGVhciB3aGljaCBvYmplY3QgYHNldGltbWVkaWF0ZWAgd2FzXG4vLyBhYmxlIHRvIGluc3RhbGwgb250by4gIFNlYXJjaCBlYWNoIHBvc3NpYmlsaXR5IGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZVxuLy8gYHNldGltbWVkaWF0ZWAgbGlicmFyeS5cbmV4cG9ydHMuc2V0SW1tZWRpYXRlID0gKHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiICYmIHNlbGYuc2V0SW1tZWRpYXRlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAodHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBnbG9iYWwuc2V0SW1tZWRpYXRlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAodGhpcyAmJiB0aGlzLnNldEltbWVkaWF0ZSk7XG5leHBvcnRzLmNsZWFySW1tZWRpYXRlID0gKHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiICYmIHNlbGYuY2xlYXJJbW1lZGlhdGUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgJiYgZ2xvYmFsLmNsZWFySW1tZWRpYXRlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzICYmIHRoaXMuY2xlYXJJbW1lZGlhdGUpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvdGltZXJzLWJyb3dzZXJpZnkvbWFpbi5qc1xuLy8gbW9kdWxlIGlkID0gMjI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///226\n"); /***/ }), /* 227 */ /***/ (function(module, exports, __webpack_require__) { -eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(228);\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = __webpack_require__(23)(\"2fbdf82a\", content, false, {});\n// Hot Module Replacement\nif(false) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../node_modules/css-loader/index.js?sourceMap!../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7ba5bd90\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./App.vue\", function() {\n var newContent = require(\"!!../node_modules/css-loader/index.js?sourceMap!../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7ba5bd90\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./App.vue\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvQXBwLnZ1ZT83YTJiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0EsY0FBYyxtQkFBTyxDQUFDLEdBQXNRO0FBQzVSLDRDQUE0QyxRQUFTO0FBQ3JEO0FBQ0E7QUFDQSxhQUFhLG1CQUFPLENBQUMsRUFBMEQsZ0NBQWdDO0FBQy9HO0FBQ0EsR0FBRyxLQUFVO0FBQ2I7QUFDQTtBQUNBLDhIQUE4SCxtRkFBbUY7QUFDak4sdUlBQXVJLG1GQUFtRjtBQUMxTjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxnQ0FBZ0MsVUFBVSxFQUFFO0FBQzVDIiwiZmlsZSI6IjIyNy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cbi8vIGxvYWQgdGhlIHN0eWxlc1xudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz9zb3VyY2VNYXAhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyL2luZGV4LmpzP3tcXFwidnVlXFxcIjp0cnVlLFxcXCJpZFxcXCI6XFxcImRhdGEtdi03YmE1YmQ5MFxcXCIsXFxcInNjb3BlZFxcXCI6ZmFsc2UsXFxcImhhc0lubGluZUNvbmZpZ1xcXCI6ZmFsc2V9IS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wIS4vQXBwLnZ1ZVwiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzXCIpKFwiMmZiZGY4MmFcIiwgY29udGVudCwgZmFsc2UsIHt9KTtcbi8vIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnRcbmlmKG1vZHVsZS5ob3QpIHtcbiAvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuIGlmKCFjb250ZW50LmxvY2Fscykge1xuICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJ2dWVcXFwiOnRydWUsXFxcImlkXFxcIjpcXFwiZGF0YS12LTdiYTViZDkwXFxcIixcXFwic2NvcGVkXFxcIjpmYWxzZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjpmYWxzZX0hLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9BcHAudnVlXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJ2dWVcXFwiOnRydWUsXFxcImlkXFxcIjpcXFwiZGF0YS12LTdiYTViZDkwXFxcIixcXFwic2NvcGVkXFxcIjpmYWxzZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjpmYWxzZX0hLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9BcHAudnVlXCIpO1xuICAgICBpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcbiAgICAgdXBkYXRlKG5ld0NvbnRlbnQpO1xuICAgfSk7XG4gfVxuIC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3NcbiBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyIS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXI/c291cmNlTWFwIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyP3tcInZ1ZVwiOnRydWUsXCJpZFwiOlwiZGF0YS12LTdiYTViZDkwXCIsXCJzY29wZWRcIjpmYWxzZSxcImhhc0lubGluZUNvbmZpZ1wiOmZhbHNlfSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wIS4vc3JjL0FwcC52dWVcbi8vIG1vZHVsZSBpZCA9IDIyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///227\n"); +eval("/* WEBPACK VAR INJECTION */(function(global, process) {(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 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 }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\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 switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\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 if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\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 global.onmessage = function() {\n postMessageIsAsynchronous = false;\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\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n 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(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(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 script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\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\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(25), __webpack_require__(51)))\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc2V0aW1tZWRpYXRlL3NldEltbWVkaWF0ZS5qcz85YjJhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixpQkFBaUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDBDQUEwQyxzQkFBc0IsRUFBRTtBQUNsRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIyMjcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKGdsb2JhbCwgdW5kZWZpbmVkKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICBpZiAoZ2xvYmFsLnNldEltbWVkaWF0ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIG5leHRIYW5kbGUgPSAxOyAvLyBTcGVjIHNheXMgZ3JlYXRlciB0aGFuIHplcm9cbiAgICB2YXIgdGFza3NCeUhhbmRsZSA9IHt9O1xuICAgIHZhciBjdXJyZW50bHlSdW5uaW5nQVRhc2sgPSBmYWxzZTtcbiAgICB2YXIgZG9jID0gZ2xvYmFsLmRvY3VtZW50O1xuICAgIHZhciByZWdpc3RlckltbWVkaWF0ZTtcblxuICAgIGZ1bmN0aW9uIHNldEltbWVkaWF0ZShjYWxsYmFjaykge1xuICAgICAgLy8gQ2FsbGJhY2sgY2FuIGVpdGhlciBiZSBhIGZ1bmN0aW9uIG9yIGEgc3RyaW5nXG4gICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgY2FsbGJhY2sgPSBuZXcgRnVuY3Rpb24oXCJcIiArIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICAgIC8vIENvcHkgZnVuY3Rpb24gYXJndW1lbnRzXG4gICAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2kgKyAxXTtcbiAgICAgIH1cbiAgICAgIC8vIFN0b3JlIGFuZCByZWdpc3RlciB0aGUgdGFza1xuICAgICAgdmFyIHRhc2sgPSB7IGNhbGxiYWNrOiBjYWxsYmFjaywgYXJnczogYXJncyB9O1xuICAgICAgdGFza3NCeUhhbmRsZVtuZXh0SGFuZGxlXSA9IHRhc2s7XG4gICAgICByZWdpc3RlckltbWVkaWF0ZShuZXh0SGFuZGxlKTtcbiAgICAgIHJldHVybiBuZXh0SGFuZGxlKys7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaGFuZGxlKSB7XG4gICAgICAgIGRlbGV0ZSB0YXNrc0J5SGFuZGxlW2hhbmRsZV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcnVuKHRhc2spIHtcbiAgICAgICAgdmFyIGNhbGxiYWNrID0gdGFzay5jYWxsYmFjaztcbiAgICAgICAgdmFyIGFyZ3MgPSB0YXNrLmFyZ3M7XG4gICAgICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgY2FsbGJhY2suYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcnVuSWZQcmVzZW50KGhhbmRsZSkge1xuICAgICAgICAvLyBGcm9tIHRoZSBzcGVjOiBcIldhaXQgdW50aWwgYW55IGludm9jYXRpb25zIG9mIHRoaXMgYWxnb3JpdGhtIHN0YXJ0ZWQgYmVmb3JlIHRoaXMgb25lIGhhdmUgY29tcGxldGVkLlwiXG4gICAgICAgIC8vIFNvIGlmIHdlJ3JlIGN1cnJlbnRseSBydW5uaW5nIGEgdGFzaywgd2UnbGwgbmVlZCB0byBkZWxheSB0aGlzIGludm9jYXRpb24uXG4gICAgICAgIGlmIChjdXJyZW50bHlSdW5uaW5nQVRhc2spIHtcbiAgICAgICAgICAgIC8vIERlbGF5IGJ5IGRvaW5nIGEgc2V0VGltZW91dC4gc2V0SW1tZWRpYXRlIHdhcyB0cmllZCBpbnN0ZWFkLCBidXQgaW4gRmlyZWZveCA3IGl0IGdlbmVyYXRlZCBhXG4gICAgICAgICAgICAvLyBcInRvbyBtdWNoIHJlY3Vyc2lvblwiIGVycm9yLlxuICAgICAgICAgICAgc2V0VGltZW91dChydW5JZlByZXNlbnQsIDAsIGhhbmRsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgdGFzayA9IHRhc2tzQnlIYW5kbGVbaGFuZGxlXTtcbiAgICAgICAgICAgIGlmICh0YXNrKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudGx5UnVubmluZ0FUYXNrID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBydW4odGFzayk7XG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbW1lZGlhdGUoaGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudGx5UnVubmluZ0FUYXNrID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFsbE5leHRUaWNrSW1wbGVtZW50YXRpb24oKSB7XG4gICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7XG4gICAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHsgcnVuSWZQcmVzZW50KGhhbmRsZSk7IH0pO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNhblVzZVBvc3RNZXNzYWdlKCkge1xuICAgICAgICAvLyBUaGUgdGVzdCBhZ2FpbnN0IGBpbXBvcnRTY3JpcHRzYCBwcmV2ZW50cyB0aGlzIGltcGxlbWVudGF0aW9uIGZyb20gYmVpbmcgaW5zdGFsbGVkIGluc2lkZSBhIHdlYiB3b3JrZXIsXG4gICAgICAgIC8vIHdoZXJlIGBnbG9iYWwucG9zdE1lc3NhZ2VgIG1lYW5zIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudCBhbmQgY2FuJ3QgYmUgdXNlZCBmb3IgdGhpcyBwdXJwb3NlLlxuICAgICAgICBpZiAoZ2xvYmFsLnBvc3RNZXNzYWdlICYmICFnbG9iYWwuaW1wb3J0U2NyaXB0cykge1xuICAgICAgICAgICAgdmFyIHBvc3RNZXNzYWdlSXNBc3luY2hyb25vdXMgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIG9sZE9uTWVzc2FnZSA9IGdsb2JhbC5vbm1lc3NhZ2U7XG4gICAgICAgICAgICBnbG9iYWwub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2VJc0FzeW5jaHJvbm91cyA9IGZhbHNlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShcIlwiLCBcIipcIik7XG4gICAgICAgICAgICBnbG9iYWwub25tZXNzYWdlID0gb2xkT25NZXNzYWdlO1xuICAgICAgICAgICAgcmV0dXJuIHBvc3RNZXNzYWdlSXNBc3luY2hyb25vdXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsUG9zdE1lc3NhZ2VJbXBsZW1lbnRhdGlvbigpIHtcbiAgICAgICAgLy8gSW5zdGFsbHMgYW4gZXZlbnQgaGFuZGxlciBvbiBgZ2xvYmFsYCBmb3IgdGhlIGBtZXNzYWdlYCBldmVudDogc2VlXG4gICAgICAgIC8vICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vRE9NL3dpbmRvdy5wb3N0TWVzc2FnZVxuICAgICAgICAvLyAqIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL2NvbW1zLmh0bWwjY3Jvc3NEb2N1bWVudE1lc3NhZ2VzXG5cbiAgICAgICAgdmFyIG1lc3NhZ2VQcmVmaXggPSBcInNldEltbWVkaWF0ZSRcIiArIE1hdGgucmFuZG9tKCkgKyBcIiRcIjtcbiAgICAgICAgdmFyIG9uR2xvYmFsTWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuc291cmNlID09PSBnbG9iYWwgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgZXZlbnQuZGF0YSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIGV2ZW50LmRhdGEuaW5kZXhPZihtZXNzYWdlUHJlZml4KSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJ1bklmUHJlc2VudCgrZXZlbnQuZGF0YS5zbGljZShtZXNzYWdlUHJlZml4Lmxlbmd0aCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICAgICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIG9uR2xvYmFsTWVzc2FnZSwgZmFsc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2xvYmFsLmF0dGFjaEV2ZW50KFwib25tZXNzYWdlXCIsIG9uR2xvYmFsTWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uKGhhbmRsZSkge1xuICAgICAgICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKG1lc3NhZ2VQcmVmaXggKyBoYW5kbGUsIFwiKlwiKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsTWVzc2FnZUNoYW5uZWxJbXBsZW1lbnRhdGlvbigpIHtcbiAgICAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICAgICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgdmFyIGhhbmRsZSA9IGV2ZW50LmRhdGE7XG4gICAgICAgICAgICBydW5JZlByZXNlbnQoaGFuZGxlKTtcbiAgICAgICAgfTtcblxuICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uKGhhbmRsZSkge1xuICAgICAgICAgICAgY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZShoYW5kbGUpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc3RhbGxSZWFkeVN0YXRlQ2hhbmdlSW1wbGVtZW50YXRpb24oKSB7XG4gICAgICAgIHZhciBodG1sID0gZG9jLmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgcmVnaXN0ZXJJbW1lZGlhdGUgPSBmdW5jdGlvbihoYW5kbGUpIHtcbiAgICAgICAgICAgIC8vIENyZWF0ZSBhIDxzY3JpcHQ+IGVsZW1lbnQ7IGl0cyByZWFkeXN0YXRlY2hhbmdlIGV2ZW50IHdpbGwgYmUgZmlyZWQgYXN5bmNocm9ub3VzbHkgb25jZSBpdCBpcyBpbnNlcnRlZFxuICAgICAgICAgICAgLy8gaW50byB0aGUgZG9jdW1lbnQuIERvIHNvLCB0aHVzIHF1ZXVpbmcgdXAgdGhlIHRhc2suIFJlbWVtYmVyIHRvIGNsZWFuIHVwIG9uY2UgaXQncyBiZWVuIGNhbGxlZC5cbiAgICAgICAgICAgIHZhciBzY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICAgICAgICAgIHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcnVuSWZQcmVzZW50KGhhbmRsZSk7XG4gICAgICAgICAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgaHRtbC5yZW1vdmVDaGlsZChzY3JpcHQpO1xuICAgICAgICAgICAgICAgIHNjcmlwdCA9IG51bGw7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaHRtbC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc3RhbGxTZXRUaW1lb3V0SW1wbGVtZW50YXRpb24oKSB7XG4gICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KHJ1bklmUHJlc2VudCwgMCwgaGFuZGxlKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBJZiBzdXBwb3J0ZWQsIHdlIHNob3VsZCBhdHRhY2ggdG8gdGhlIHByb3RvdHlwZSBvZiBnbG9iYWwsIHNpbmNlIHRoYXQgaXMgd2hlcmUgc2V0VGltZW91dCBldCBhbC4gbGl2ZS5cbiAgICB2YXIgYXR0YWNoVG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKGdsb2JhbCk7XG4gICAgYXR0YWNoVG8gPSBhdHRhY2hUbyAmJiBhdHRhY2hUby5zZXRUaW1lb3V0ID8gYXR0YWNoVG8gOiBnbG9iYWw7XG5cbiAgICAvLyBEb24ndCBnZXQgZm9vbGVkIGJ5IGUuZy4gYnJvd3NlcmlmeSBlbnZpcm9ubWVudHMuXG4gICAgaWYgKHt9LnRvU3RyaW5nLmNhbGwoZ2xvYmFsLnByb2Nlc3MpID09PSBcIltvYmplY3QgcHJvY2Vzc11cIikge1xuICAgICAgICAvLyBGb3IgTm9kZS5qcyBiZWZvcmUgMC45XG4gICAgICAgIGluc3RhbGxOZXh0VGlja0ltcGxlbWVudGF0aW9uKCk7XG5cbiAgICB9IGVsc2UgaWYgKGNhblVzZVBvc3RNZXNzYWdlKCkpIHtcbiAgICAgICAgLy8gRm9yIG5vbi1JRTEwIG1vZGVybiBicm93c2Vyc1xuICAgICAgICBpbnN0YWxsUG9zdE1lc3NhZ2VJbXBsZW1lbnRhdGlvbigpO1xuXG4gICAgfSBlbHNlIGlmIChnbG9iYWwuTWVzc2FnZUNoYW5uZWwpIHtcbiAgICAgICAgLy8gRm9yIHdlYiB3b3JrZXJzLCB3aGVyZSBzdXBwb3J0ZWRcbiAgICAgICAgaW5zdGFsbE1lc3NhZ2VDaGFubmVsSW1wbGVtZW50YXRpb24oKTtcblxuICAgIH0gZWxzZSBpZiAoZG9jICYmIFwib25yZWFkeXN0YXRlY2hhbmdlXCIgaW4gZG9jLmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIikpIHtcbiAgICAgICAgLy8gRm9yIElFIDbigJM4XG4gICAgICAgIGluc3RhbGxSZWFkeVN0YXRlQ2hhbmdlSW1wbGVtZW50YXRpb24oKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZvciBvbGRlciBicm93c2Vyc1xuICAgICAgICBpbnN0YWxsU2V0VGltZW91dEltcGxlbWVudGF0aW9uKCk7XG4gICAgfVxuXG4gICAgYXR0YWNoVG8uc2V0SW1tZWRpYXRlID0gc2V0SW1tZWRpYXRlO1xuICAgIGF0dGFjaFRvLmNsZWFySW1tZWRpYXRlID0gY2xlYXJJbW1lZGlhdGU7XG59KHR5cGVvZiBzZWxmID09PSBcInVuZGVmaW5lZFwiID8gdHlwZW9mIGdsb2JhbCA9PT0gXCJ1bmRlZmluZWRcIiA/IHRoaXMgOiBnbG9iYWwgOiBzZWxmKSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9zZXRpbW1lZGlhdGUvc2V0SW1tZWRpYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSAyMjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///227\n"); /***/ }), /* 228 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ (function(module, __webpack_exports__, __webpack_require__) { -eval("exports = module.exports = __webpack_require__(22)(true);\n// imports\n\n\n// module\nexports.push([module.i, \"\\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\\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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\", \"\", {\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"file\":\"App.vue\",\"sourceRoot\":\"\"}]);\n\n// exports\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvQXBwLnZ1ZT8wMzI4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQixtQkFBTyxDQUFDLEVBQTRDO0FBQy9FOzs7QUFHQTtBQUNBLGNBQWMsUUFBUyx1TkFBdU4sbUZBQW1GOztBQUVqVSIsImZpbGUiOiIyMjguanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKHRydWUpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXCIsIFwiXCIsIHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJcIixcImZpbGVcIjpcIkFwcC52dWVcIixcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuXG4vLyBleHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyP3NvdXJjZU1hcCEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlcj97XCJ2dWVcIjp0cnVlLFwiaWRcIjpcImRhdGEtdi03YmE1YmQ5MFwiLFwic2NvcGVkXCI6ZmFsc2UsXCJoYXNJbmxpbmVDb25maWdcIjpmYWxzZX0hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL3NyYy9BcHAudnVlXG4vLyBtb2R1bGUgaWQgPSAyMjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///228\n"); +"use strict"; +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_App_vue__ = __webpack_require__(94);\n/* unused harmony namespace reexport */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7ba5bd90_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_App_vue__ = __webpack_require__(245);\nvar disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n __webpack_require__(229)\n}\nvar normalizeComponent = __webpack_require__(29)\n/* script */\n\n\n/* template */\n\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_App_vue__[\"a\" /* default */],\n __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7ba5bd90_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_App_vue__[\"a\" /* default */],\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/App.vue\"\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-7ba5bd90\", Component.options)\n } else {\n hotAPI.reload(\"data-v-7ba5bd90\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Component.exports);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvQXBwLnZ1ZT9hOGU5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUJBQU8sQ0FBQyxHQUF3UDtBQUNsUTtBQUNBLHlCQUF5QixtQkFBTyxDQUFDLEVBQXNEO0FBQ3ZGO0FBQ29HO0FBQ2E7QUFDakg7QUFDOE87QUFDOU87QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSwrSEFBYztBQUNoQixFQUFFLDROQUFnQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQVUsR0FBRztBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsQ0FBQzs7QUFFYywwRUFBaUIiLCJmaWxlIjoiMjI4LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGRpc3Bvc2VkID0gZmFsc2VcbmZ1bmN0aW9uIGluamVjdFN0eWxlIChzc3JDb250ZXh0KSB7XG4gIGlmIChkaXNwb3NlZCkgcmV0dXJuXG4gIHJlcXVpcmUoXCIhIXZ1ZS1zdHlsZS1sb2FkZXIhY3NzLWxvYWRlcj9zb3VyY2VNYXAhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyL2luZGV4P3tcXFwidnVlXFxcIjp0cnVlLFxcXCJpZFxcXCI6XFxcImRhdGEtdi03YmE1YmQ5MFxcXCIsXFxcInNjb3BlZFxcXCI6ZmFsc2UsXFxcImhhc0lubGluZUNvbmZpZ1xcXCI6ZmFsc2V9IS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXN0eWxlcyZpbmRleD0wIS4vQXBwLnZ1ZVwiKVxufVxudmFyIG5vcm1hbGl6ZUNvbXBvbmVudCA9IHJlcXVpcmUoXCIhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2NvbXBvbmVudC1ub3JtYWxpemVyXCIpXG4vKiBzY3JpcHQgKi9cbmV4cG9ydCAqIGZyb20gXCIhIWJhYmVsLWxvYWRlciEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL0FwcC52dWVcIlxuaW1wb3J0IF9fdnVlX3NjcmlwdF9fIGZyb20gXCIhIWJhYmVsLWxvYWRlciEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL0FwcC52dWVcIlxuLyogdGVtcGxhdGUgKi9cbmltcG9ydCBfX3Z1ZV90ZW1wbGF0ZV9fIGZyb20gXCIhIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxlci9pbmRleD97XFxcImlkXFxcIjpcXFwiZGF0YS12LTdiYTViZDkwXFxcIixcXFwiaGFzU2NvcGVkXFxcIjpmYWxzZSxcXFwiYnVibGVcXFwiOntcXFwidHJhbnNmb3Jtc1xcXCI6e319fSEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vQXBwLnZ1ZVwiXG4vKiB0ZW1wbGF0ZSBmdW5jdGlvbmFsICovXG52YXIgX192dWVfdGVtcGxhdGVfZnVuY3Rpb25hbF9fID0gZmFsc2Vcbi8qIHN0eWxlcyAqL1xudmFyIF9fdnVlX3N0eWxlc19fID0gaW5qZWN0U3R5bGVcbi8qIHNjb3BlSWQgKi9cbnZhciBfX3Z1ZV9zY29wZUlkX18gPSBudWxsXG4vKiBtb2R1bGVJZGVudGlmaWVyIChzZXJ2ZXIgb25seSkgKi9cbnZhciBfX3Z1ZV9tb2R1bGVfaWRlbnRpZmllcl9fID0gbnVsbFxudmFyIENvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgX192dWVfc2NyaXB0X18sXG4gIF9fdnVlX3RlbXBsYXRlX18sXG4gIF9fdnVlX3RlbXBsYXRlX2Z1bmN0aW9uYWxfXyxcbiAgX192dWVfc3R5bGVzX18sXG4gIF9fdnVlX3Njb3BlSWRfXyxcbiAgX192dWVfbW9kdWxlX2lkZW50aWZpZXJfX1xuKVxuQ29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvQXBwLnZ1ZVwiXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7KGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcbiAgaG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSwgZmFsc2UpXG4gIGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghbW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgaG90QVBJLmNyZWF0ZVJlY29yZChcImRhdGEtdi03YmE1YmQ5MFwiLCBDb21wb25lbnQub3B0aW9ucylcbiAgfSBlbHNlIHtcbiAgICBob3RBUEkucmVsb2FkKFwiZGF0YS12LTdiYTViZDkwXCIsIENvbXBvbmVudC5vcHRpb25zKVxuICB9XG4gIG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbiAoZGF0YSkge1xuICAgIGRpc3Bvc2VkID0gdHJ1ZVxuICB9KVxufSkoKX1cblxuZXhwb3J0IGRlZmF1bHQgQ29tcG9uZW50LmV4cG9ydHNcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL0FwcC52dWVcbi8vIG1vZHVsZSBpZCA9IDIyOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///228\n"); /***/ }), /* 229 */ -/***/ (function(module, exports) { +/***/ (function(module, exports, __webpack_require__) { -eval("/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nmodule.exports = function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvbGlzdFRvU3R5bGVzLmpzP2I1MzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsaUJBQWlCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyx3QkFBd0I7QUFDM0QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMjI5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUcmFuc2xhdGVzIHRoZSBsaXN0IGZvcm1hdCBwcm9kdWNlZCBieSBjc3MtbG9hZGVyIGludG8gc29tZXRoaW5nXG4gKiBlYXNpZXIgdG8gbWFuaXB1bGF0ZS5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBsaXN0VG9TdHlsZXMgKHBhcmVudElkLCBsaXN0KSB7XG4gIHZhciBzdHlsZXMgPSBbXVxuICB2YXIgbmV3U3R5bGVzID0ge31cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldXG4gICAgdmFyIGlkID0gaXRlbVswXVxuICAgIHZhciBjc3MgPSBpdGVtWzFdXG4gICAgdmFyIG1lZGlhID0gaXRlbVsyXVxuICAgIHZhciBzb3VyY2VNYXAgPSBpdGVtWzNdXG4gICAgdmFyIHBhcnQgPSB7XG4gICAgICBpZDogcGFyZW50SWQgKyAnOicgKyBpLFxuICAgICAgY3NzOiBjc3MsXG4gICAgICBtZWRpYTogbWVkaWEsXG4gICAgICBzb3VyY2VNYXA6IHNvdXJjZU1hcFxuICAgIH1cbiAgICBpZiAoIW5ld1N0eWxlc1tpZF0pIHtcbiAgICAgIHN0eWxlcy5wdXNoKG5ld1N0eWxlc1tpZF0gPSB7IGlkOiBpZCwgcGFydHM6IFtwYXJ0XSB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXdTdHlsZXNbaWRdLnBhcnRzLnB1c2gocGFydClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0eWxlc1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvbGlzdFRvU3R5bGVzLmpzXG4vLyBtb2R1bGUgaWQgPSAyMjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///229\n"); +eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(230);\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = __webpack_require__(23)(\"2fbdf82a\", content, false, {});\n// Hot Module Replacement\nif(false) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../node_modules/css-loader/index.js?sourceMap!../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7ba5bd90\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./App.vue\", function() {\n var newContent = require(\"!!../node_modules/css-loader/index.js?sourceMap!../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7ba5bd90\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./App.vue\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvQXBwLnZ1ZT83YTJiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0EsY0FBYyxtQkFBTyxDQUFDLEdBQXNRO0FBQzVSLDRDQUE0QyxRQUFTO0FBQ3JEO0FBQ0E7QUFDQSxhQUFhLG1CQUFPLENBQUMsRUFBMEQsZ0NBQWdDO0FBQy9HO0FBQ0EsR0FBRyxLQUFVO0FBQ2I7QUFDQTtBQUNBLDhIQUE4SCxtRkFBbUY7QUFDak4sdUlBQXVJLG1GQUFtRjtBQUMxTjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxnQ0FBZ0MsVUFBVSxFQUFFO0FBQzVDIiwiZmlsZSI6IjIyOS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cbi8vIGxvYWQgdGhlIHN0eWxlc1xudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz9zb3VyY2VNYXAhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyL2luZGV4LmpzP3tcXFwidnVlXFxcIjp0cnVlLFxcXCJpZFxcXCI6XFxcImRhdGEtdi03YmE1YmQ5MFxcXCIsXFxcInNjb3BlZFxcXCI6ZmFsc2UsXFxcImhhc0lubGluZUNvbmZpZ1xcXCI6ZmFsc2V9IS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wIS4vQXBwLnZ1ZVwiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzXCIpKFwiMmZiZGY4MmFcIiwgY29udGVudCwgZmFsc2UsIHt9KTtcbi8vIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnRcbmlmKG1vZHVsZS5ob3QpIHtcbiAvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuIGlmKCFjb250ZW50LmxvY2Fscykge1xuICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJ2dWVcXFwiOnRydWUsXFxcImlkXFxcIjpcXFwiZGF0YS12LTdiYTViZDkwXFxcIixcXFwic2NvcGVkXFxcIjpmYWxzZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjpmYWxzZX0hLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9BcHAudnVlXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJ2dWVcXFwiOnRydWUsXFxcImlkXFxcIjpcXFwiZGF0YS12LTdiYTViZDkwXFxcIixcXFwic2NvcGVkXFxcIjpmYWxzZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjpmYWxzZX0hLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9BcHAudnVlXCIpO1xuICAgICBpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcbiAgICAgdXBkYXRlKG5ld0NvbnRlbnQpO1xuICAgfSk7XG4gfVxuIC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3NcbiBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyIS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXI/c291cmNlTWFwIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyP3tcInZ1ZVwiOnRydWUsXCJpZFwiOlwiZGF0YS12LTdiYTViZDkwXCIsXCJzY29wZWRcIjpmYWxzZSxcImhhc0lubGluZUNvbmZpZ1wiOmZhbHNlfSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wIS4vc3JjL0FwcC52dWVcbi8vIG1vZHVsZSBpZCA9IDIyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///229\n"); /***/ }), /* 230 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { -"use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_OcrdProcessorList_vue__ = __webpack_require__(95);\n/* unused harmony namespace reexport */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_5757c97e_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_OcrdProcessorList_vue__ = __webpack_require__(233);\nvar disposed = false\nvar normalizeComponent = __webpack_require__(29)\n/* script */\n\n\n/* template */\n\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_OcrdProcessorList_vue__[\"a\" /* default */],\n __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_5757c97e_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_OcrdProcessorList_vue__[\"a\" /* default */],\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/OcrdProcessorList.vue\"\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-5757c97e\", Component.options)\n } else {\n hotAPI.reload(\"data-v-5757c97e\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Component.exports);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2Nlc3Nvckxpc3QudnVlP2I3NjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQSx5QkFBeUIsbUJBQU8sQ0FBQyxFQUFzRDtBQUN2RjtBQUNrSDtBQUNhO0FBQy9IO0FBQzRQO0FBQzVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsNklBQWM7QUFDaEIsRUFBRSwwT0FBZ0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFVLEdBQUc7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILENBQUM7O0FBRWMsMEVBQWlCIiwiZmlsZSI6IjIzMC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkaXNwb3NlZCA9IGZhbHNlXG52YXIgbm9ybWFsaXplQ29tcG9uZW50ID0gcmVxdWlyZShcIiEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvY29tcG9uZW50LW5vcm1hbGl6ZXJcIilcbi8qIHNjcmlwdCAqL1xuZXhwb3J0ICogZnJvbSBcIiEhYmFiZWwtbG9hZGVyIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXNjcmlwdCZpbmRleD0wIS4vT2NyZFByb2Nlc3Nvckxpc3QudnVlXCJcbmltcG9ydCBfX3Z1ZV9zY3JpcHRfXyBmcm9tIFwiISFiYWJlbC1sb2FkZXIhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9PY3JkUHJvY2Vzc29yTGlzdC52dWVcIlxuLyogdGVtcGxhdGUgKi9cbmltcG9ydCBfX3Z1ZV90ZW1wbGF0ZV9fIGZyb20gXCIhIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxlci9pbmRleD97XFxcImlkXFxcIjpcXFwiZGF0YS12LTU3NTdjOTdlXFxcIixcXFwiaGFzU2NvcGVkXFxcIjpmYWxzZSxcXFwiYnVibGVcXFwiOntcXFwidHJhbnNmb3Jtc1xcXCI6e319fSEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vT2NyZFByb2Nlc3Nvckxpc3QudnVlXCJcbi8qIHRlbXBsYXRlIGZ1bmN0aW9uYWwgKi9cbnZhciBfX3Z1ZV90ZW1wbGF0ZV9mdW5jdGlvbmFsX18gPSBmYWxzZVxuLyogc3R5bGVzICovXG52YXIgX192dWVfc3R5bGVzX18gPSBudWxsXG4vKiBzY29wZUlkICovXG52YXIgX192dWVfc2NvcGVJZF9fID0gbnVsbFxuLyogbW9kdWxlSWRlbnRpZmllciAoc2VydmVyIG9ubHkpICovXG52YXIgX192dWVfbW9kdWxlX2lkZW50aWZpZXJfXyA9IG51bGxcbnZhciBDb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIF9fdnVlX3NjcmlwdF9fLFxuICBfX3Z1ZV90ZW1wbGF0ZV9fLFxuICBfX3Z1ZV90ZW1wbGF0ZV9mdW5jdGlvbmFsX18sXG4gIF9fdnVlX3N0eWxlc19fLFxuICBfX3Z1ZV9zY29wZUlkX18sXG4gIF9fdnVlX21vZHVsZV9pZGVudGlmaWVyX19cbilcbkNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL09jcmRQcm9jZXNzb3JMaXN0LnZ1ZVwiXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7KGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcbiAgaG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSwgZmFsc2UpXG4gIGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghbW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgaG90QVBJLmNyZWF0ZVJlY29yZChcImRhdGEtdi01NzU3Yzk3ZVwiLCBDb21wb25lbnQub3B0aW9ucylcbiAgfSBlbHNlIHtcbiAgICBob3RBUEkucmVsb2FkKFwiZGF0YS12LTU3NTdjOTdlXCIsIENvbXBvbmVudC5vcHRpb25zKVxuICB9XG4gIG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbiAoZGF0YSkge1xuICAgIGRpc3Bvc2VkID0gdHJ1ZVxuICB9KVxufSkoKX1cblxuZXhwb3J0IGRlZmF1bHQgQ29tcG9uZW50LmV4cG9ydHNcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL09jcmRQcm9jZXNzb3JMaXN0LnZ1ZVxuLy8gbW9kdWxlIGlkID0gMjMwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///230\n"); +eval("exports = module.exports = __webpack_require__(22)(true);\n// imports\n\n\n// module\nexports.push([module.i, \"\\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\\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\\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\", \"\", {\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"file\":\"App.vue\",\"sourceRoot\":\"\"}]);\n\n// exports\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvQXBwLnZ1ZT8wMzI4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQixtQkFBTyxDQUFDLEVBQTRDO0FBQy9FOzs7QUFHQTtBQUNBLGNBQWMsUUFBUyw2UEFBNlAsbUZBQW1GOztBQUV2VyIsImZpbGUiOiIyMzAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKHRydWUpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXCIsIFwiXCIsIHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJcIixcImZpbGVcIjpcIkFwcC52dWVcIixcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuXG4vLyBleHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyP3NvdXJjZU1hcCEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlcj97XCJ2dWVcIjp0cnVlLFwiaWRcIjpcImRhdGEtdi03YmE1YmQ5MFwiLFwic2NvcGVkXCI6ZmFsc2UsXCJoYXNJbmxpbmVDb25maWdcIjpmYWxzZX0hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL3NyYy9BcHAudnVlXG4vLyBtb2R1bGUgaWQgPSAyMzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///230\n"); /***/ }), /* 231 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +/***/ (function(module, exports) { -"use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_OcrdProcessorListItem_vue__ = __webpack_require__(96);\n/* unused harmony namespace reexport */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7a8fbc74_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_OcrdProcessorListItem_vue__ = __webpack_require__(232);\nvar disposed = false\nvar normalizeComponent = __webpack_require__(29)\n/* script */\n\n\n/* template */\n\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_OcrdProcessorListItem_vue__[\"a\" /* default */],\n __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7a8fbc74_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_OcrdProcessorListItem_vue__[\"a\" /* default */],\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/OcrdProcessorListItem.vue\"\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-7a8fbc74\", Component.options)\n } else {\n hotAPI.reload(\"data-v-7a8fbc74\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Component.exports);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2Nlc3Nvckxpc3RJdGVtLnZ1ZT9lMzliIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0EseUJBQXlCLG1CQUFPLENBQUMsRUFBc0Q7QUFDdkY7QUFDc0g7QUFDYTtBQUNuSTtBQUNnUTtBQUNoUTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLGlKQUFjO0FBQ2hCLEVBQUUsOE9BQWdCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksS0FBVSxHQUFHO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxDQUFDOztBQUVjLDBFQUFpQiIsImZpbGUiOiIyMzEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZGlzcG9zZWQgPSBmYWxzZVxudmFyIG5vcm1hbGl6ZUNvbXBvbmVudCA9IHJlcXVpcmUoXCIhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2NvbXBvbmVudC1ub3JtYWxpemVyXCIpXG4vKiBzY3JpcHQgKi9cbmV4cG9ydCAqIGZyb20gXCIhIWJhYmVsLWxvYWRlciEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL09jcmRQcm9jZXNzb3JMaXN0SXRlbS52dWVcIlxuaW1wb3J0IF9fdnVlX3NjcmlwdF9fIGZyb20gXCIhIWJhYmVsLWxvYWRlciEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL09jcmRQcm9jZXNzb3JMaXN0SXRlbS52dWVcIlxuLyogdGVtcGxhdGUgKi9cbmltcG9ydCBfX3Z1ZV90ZW1wbGF0ZV9fIGZyb20gXCIhIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxlci9pbmRleD97XFxcImlkXFxcIjpcXFwiZGF0YS12LTdhOGZiYzc0XFxcIixcXFwiaGFzU2NvcGVkXFxcIjpmYWxzZSxcXFwiYnVibGVcXFwiOntcXFwidHJhbnNmb3Jtc1xcXCI6e319fSEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vT2NyZFByb2Nlc3Nvckxpc3RJdGVtLnZ1ZVwiXG4vKiB0ZW1wbGF0ZSBmdW5jdGlvbmFsICovXG52YXIgX192dWVfdGVtcGxhdGVfZnVuY3Rpb25hbF9fID0gZmFsc2Vcbi8qIHN0eWxlcyAqL1xudmFyIF9fdnVlX3N0eWxlc19fID0gbnVsbFxuLyogc2NvcGVJZCAqL1xudmFyIF9fdnVlX3Njb3BlSWRfXyA9IG51bGxcbi8qIG1vZHVsZUlkZW50aWZpZXIgKHNlcnZlciBvbmx5KSAqL1xudmFyIF9fdnVlX21vZHVsZV9pZGVudGlmaWVyX18gPSBudWxsXG52YXIgQ29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBfX3Z1ZV9zY3JpcHRfXyxcbiAgX192dWVfdGVtcGxhdGVfXyxcbiAgX192dWVfdGVtcGxhdGVfZnVuY3Rpb25hbF9fLFxuICBfX3Z1ZV9zdHlsZXNfXyxcbiAgX192dWVfc2NvcGVJZF9fLFxuICBfX3Z1ZV9tb2R1bGVfaWRlbnRpZmllcl9fXG4pXG5Db21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9PY3JkUHJvY2Vzc29yTGlzdEl0ZW0udnVlXCJcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHsoZnVuY3Rpb24gKCkge1xuICB2YXIgaG90QVBJID0gcmVxdWlyZShcInZ1ZS1ob3QtcmVsb2FkLWFwaVwiKVxuICBob3RBUEkuaW5zdGFsbChyZXF1aXJlKFwidnVlXCIpLCBmYWxzZSlcbiAgaWYgKCFob3RBUEkuY29tcGF0aWJsZSkgcmV0dXJuXG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKCFtb2R1bGUuaG90LmRhdGEpIHtcbiAgICBob3RBUEkuY3JlYXRlUmVjb3JkKFwiZGF0YS12LTdhOGZiYzc0XCIsIENvbXBvbmVudC5vcHRpb25zKVxuICB9IGVsc2Uge1xuICAgIGhvdEFQSS5yZWxvYWQoXCJkYXRhLXYtN2E4ZmJjNzRcIiwgQ29tcG9uZW50Lm9wdGlvbnMpXG4gIH1cbiAgbW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgZGlzcG9zZWQgPSB0cnVlXG4gIH0pXG59KSgpfVxuXG5leHBvcnQgZGVmYXVsdCBDb21wb25lbnQuZXhwb3J0c1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvT2NyZFByb2Nlc3Nvckxpc3RJdGVtLnZ1ZVxuLy8gbW9kdWxlIGlkID0gMjMxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///231\n"); +eval("/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nmodule.exports = function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvbGlzdFRvU3R5bGVzLmpzP2I1MzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsaUJBQWlCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyx3QkFBd0I7QUFDM0QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMjMxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUcmFuc2xhdGVzIHRoZSBsaXN0IGZvcm1hdCBwcm9kdWNlZCBieSBjc3MtbG9hZGVyIGludG8gc29tZXRoaW5nXG4gKiBlYXNpZXIgdG8gbWFuaXB1bGF0ZS5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBsaXN0VG9TdHlsZXMgKHBhcmVudElkLCBsaXN0KSB7XG4gIHZhciBzdHlsZXMgPSBbXVxuICB2YXIgbmV3U3R5bGVzID0ge31cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldXG4gICAgdmFyIGlkID0gaXRlbVswXVxuICAgIHZhciBjc3MgPSBpdGVtWzFdXG4gICAgdmFyIG1lZGlhID0gaXRlbVsyXVxuICAgIHZhciBzb3VyY2VNYXAgPSBpdGVtWzNdXG4gICAgdmFyIHBhcnQgPSB7XG4gICAgICBpZDogcGFyZW50SWQgKyAnOicgKyBpLFxuICAgICAgY3NzOiBjc3MsXG4gICAgICBtZWRpYTogbWVkaWEsXG4gICAgICBzb3VyY2VNYXA6IHNvdXJjZU1hcFxuICAgIH1cbiAgICBpZiAoIW5ld1N0eWxlc1tpZF0pIHtcbiAgICAgIHN0eWxlcy5wdXNoKG5ld1N0eWxlc1tpZF0gPSB7IGlkOiBpZCwgcGFydHM6IFtwYXJ0XSB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXdTdHlsZXNbaWRdLnBhcnRzLnB1c2gocGFydClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0eWxlc1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvbGlzdFRvU3R5bGVzLmpzXG4vLyBtb2R1bGUgaWQgPSAyMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///231\n"); /***/ }), /* 232 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"b-card\",\n {\n staticClass: \"mb-5\",\n attrs: {\n tag: \"article\",\n title: _vm.processor.executable.replace(\"ocrd-\", \"\")\n }\n },\n [\n _c(\n \"b-card-text\",\n [\n _c(\n \"b-tabs\",\n [\n _c(\n \"b-tab\",\n { attrs: { title: \"Description\" } },\n [\n _c(\"blockquote\", [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.processor.description) +\n \"\\n \"\n )\n ]),\n _vm._v(\" \"),\n _vm._l(_vm.processor.steps, function(step) {\n return _c(\"b-badge\", { attrs: { variant: \"info\" } }, [\n _vm._v(_vm._s(step))\n ])\n }),\n _vm._v(\" \"),\n _vm._l(_vm.processor.categories, function(category) {\n return _c(\"b-badge\", { attrs: { variant: \"success\" } }, [\n _vm._v(_vm._s(category))\n ])\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\"\\n Part of \"),\n _c(\"a\", { attrs: { href: \"\" } }, [\n _vm._v(_vm._s(_vm.processor.part_of))\n ])\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"a\", { attrs: { href: \"\" } }, [\n _vm._v(\"Read the Documentation!\")\n ])\n ])\n ],\n 2\n ),\n _vm._v(\" \"),\n _c(\"b-tab\", { attrs: { title: \"Parameters\" } }, [\n _c(\n \"ul\",\n _vm._l(_vm.processor.parameters, function(param, name) {\n return _c(\"li\", [\n _c(\"strong\", [_vm._v(_vm._s(name))]),\n _vm._v(\" \" + _vm._s(param) + \"\\n \")\n ])\n }),\n 0\n )\n ])\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-7a8fbc74\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2Nlc3Nvckxpc3RJdGVtLnZ1ZT8wYWYxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsU0FBUyx1QkFBdUIsRUFBRTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxTQUFTLGtCQUFrQixFQUFFO0FBQ3ZFO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBLDBDQUEwQyxTQUFTLHFCQUFxQixFQUFFO0FBQzFFO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLFNBQVMsV0FBVyxFQUFFO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsU0FBUyxXQUFXLEVBQUU7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsU0FBUyxzQkFBc0IsRUFBRTtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDRixrRUFBUztBQUN4QixJQUFJLEtBQVU7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjIzMi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJiLWNhcmRcIixcbiAgICB7XG4gICAgICBzdGF0aWNDbGFzczogXCJtYi01XCIsXG4gICAgICBhdHRyczoge1xuICAgICAgICB0YWc6IFwiYXJ0aWNsZVwiLFxuICAgICAgICB0aXRsZTogX3ZtLnByb2Nlc3Nvci5leGVjdXRhYmxlLnJlcGxhY2UoXCJvY3JkLVwiLCBcIlwiKVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwiYi1jYXJkLXRleHRcIixcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJiLXRhYnNcIixcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJiLXRhYlwiLFxuICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgdGl0bGU6IFwiRGVzY3JpcHRpb25cIiB9IH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJibG9ja3F1b3RlXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhfdm0ucHJvY2Vzc29yLmRlc2NyaXB0aW9uKSArXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgX3ZtLl9sKF92bS5wcm9jZXNzb3Iuc3RlcHMsIGZ1bmN0aW9uKHN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFwiYi1iYWRnZVwiLCB7IGF0dHJzOiB7IHZhcmlhbnQ6IFwiaW5mb1wiIH0gfSwgW1xuICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3Moc3RlcCkpXG4gICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfdm0uX2woX3ZtLnByb2Nlc3Nvci5jYXRlZ29yaWVzLCBmdW5jdGlvbihjYXRlZ29yeSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2MoXCJiLWJhZGdlXCIsIHsgYXR0cnM6IHsgdmFyaWFudDogXCJzdWNjZXNzXCIgfSB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhjYXRlZ29yeSkpXG4gICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcInBcIiwgW1xuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCJcXG4gICAgICAgICAgUGFydCBvZiBcIiksXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiYVwiLCB7IGF0dHJzOiB7IGhyZWY6IFwiXCIgfSB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0ucHJvY2Vzc29yLnBhcnRfb2YpKVxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgX2MoXCJwXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJhXCIsIHsgYXR0cnM6IHsgaHJlZjogXCJcIiB9IH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCJSZWFkIHRoZSBEb2N1bWVudGF0aW9uIVwiKVxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXCJiLXRhYlwiLCB7IGF0dHJzOiB7IHRpdGxlOiBcIlBhcmFtZXRlcnNcIiB9IH0sIFtcbiAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgIFwidWxcIixcbiAgICAgICAgICAgICAgICAgIF92bS5fbChfdm0ucHJvY2Vzc29yLnBhcmFtZXRlcnMsIGZ1bmN0aW9uKHBhcmFtLCBuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcImxpXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcInN0cm9uZ1wiLCBbX3ZtLl92KF92bS5fcyhuYW1lKSldKSxcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIgKyBfdm0uX3MocGFyYW0pICsgXCJcXG4gICAgICAgICAgXCIpXG4gICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKVxuICAgIF0sXG4gICAgMVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxudmFyIGVzRXhwb3J0cyA9IHsgcmVuZGVyOiByZW5kZXIsIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zIH1cbmV4cG9ydCBkZWZhdWx0IGVzRXhwb3J0c1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAobW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgcmVxdWlyZShcInZ1ZS1ob3QtcmVsb2FkLWFwaVwiKSAgICAgIC5yZXJlbmRlcihcImRhdGEtdi03YThmYmM3NFwiLCBlc0V4cG9ydHMpXG4gIH1cbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxlcj97XCJpZFwiOlwiZGF0YS12LTdhOGZiYzc0XCIsXCJoYXNTY29wZWRcIjpmYWxzZSxcImJ1YmxlXCI6e1widHJhbnNmb3Jtc1wiOnt9fX0hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vc3JjL09jcmRQcm9jZXNzb3JMaXN0SXRlbS52dWVcbi8vIG1vZHVsZSBpZCA9IDIzMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///232\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_OcrdProcessorList_vue__ = __webpack_require__(95);\n/* unused harmony namespace reexport */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_5757c97e_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_OcrdProcessorList_vue__ = __webpack_require__(234);\nvar disposed = false\nvar normalizeComponent = __webpack_require__(29)\n/* script */\n\n\n/* template */\n\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_OcrdProcessorList_vue__[\"a\" /* default */],\n __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_5757c97e_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_OcrdProcessorList_vue__[\"a\" /* default */],\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/OcrdProcessorList.vue\"\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-5757c97e\", Component.options)\n } else {\n hotAPI.reload(\"data-v-5757c97e\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Component.exports);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2Nlc3Nvckxpc3QudnVlP2I3NjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQSx5QkFBeUIsbUJBQU8sQ0FBQyxFQUFzRDtBQUN2RjtBQUNrSDtBQUNhO0FBQy9IO0FBQzRQO0FBQzVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsNklBQWM7QUFDaEIsRUFBRSwwT0FBZ0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFVLEdBQUc7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILENBQUM7O0FBRWMsMEVBQWlCIiwiZmlsZSI6IjIzMi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkaXNwb3NlZCA9IGZhbHNlXG52YXIgbm9ybWFsaXplQ29tcG9uZW50ID0gcmVxdWlyZShcIiEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvY29tcG9uZW50LW5vcm1hbGl6ZXJcIilcbi8qIHNjcmlwdCAqL1xuZXhwb3J0ICogZnJvbSBcIiEhYmFiZWwtbG9hZGVyIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXNjcmlwdCZpbmRleD0wIS4vT2NyZFByb2Nlc3Nvckxpc3QudnVlXCJcbmltcG9ydCBfX3Z1ZV9zY3JpcHRfXyBmcm9tIFwiISFiYWJlbC1sb2FkZXIhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9PY3JkUHJvY2Vzc29yTGlzdC52dWVcIlxuLyogdGVtcGxhdGUgKi9cbmltcG9ydCBfX3Z1ZV90ZW1wbGF0ZV9fIGZyb20gXCIhIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxlci9pbmRleD97XFxcImlkXFxcIjpcXFwiZGF0YS12LTU3NTdjOTdlXFxcIixcXFwiaGFzU2NvcGVkXFxcIjpmYWxzZSxcXFwiYnVibGVcXFwiOntcXFwidHJhbnNmb3Jtc1xcXCI6e319fSEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vT2NyZFByb2Nlc3Nvckxpc3QudnVlXCJcbi8qIHRlbXBsYXRlIGZ1bmN0aW9uYWwgKi9cbnZhciBfX3Z1ZV90ZW1wbGF0ZV9mdW5jdGlvbmFsX18gPSBmYWxzZVxuLyogc3R5bGVzICovXG52YXIgX192dWVfc3R5bGVzX18gPSBudWxsXG4vKiBzY29wZUlkICovXG52YXIgX192dWVfc2NvcGVJZF9fID0gbnVsbFxuLyogbW9kdWxlSWRlbnRpZmllciAoc2VydmVyIG9ubHkpICovXG52YXIgX192dWVfbW9kdWxlX2lkZW50aWZpZXJfXyA9IG51bGxcbnZhciBDb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIF9fdnVlX3NjcmlwdF9fLFxuICBfX3Z1ZV90ZW1wbGF0ZV9fLFxuICBfX3Z1ZV90ZW1wbGF0ZV9mdW5jdGlvbmFsX18sXG4gIF9fdnVlX3N0eWxlc19fLFxuICBfX3Z1ZV9zY29wZUlkX18sXG4gIF9fdnVlX21vZHVsZV9pZGVudGlmaWVyX19cbilcbkNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL09jcmRQcm9jZXNzb3JMaXN0LnZ1ZVwiXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7KGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcbiAgaG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSwgZmFsc2UpXG4gIGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghbW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgaG90QVBJLmNyZWF0ZVJlY29yZChcImRhdGEtdi01NzU3Yzk3ZVwiLCBDb21wb25lbnQub3B0aW9ucylcbiAgfSBlbHNlIHtcbiAgICBob3RBUEkucmVsb2FkKFwiZGF0YS12LTU3NTdjOTdlXCIsIENvbXBvbmVudC5vcHRpb25zKVxuICB9XG4gIG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbiAoZGF0YSkge1xuICAgIGRpc3Bvc2VkID0gdHJ1ZVxuICB9KVxufSkoKX1cblxuZXhwb3J0IGRlZmF1bHQgQ29tcG9uZW50LmV4cG9ydHNcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL09jcmRQcm9jZXNzb3JMaXN0LnZ1ZVxuLy8gbW9kdWxlIGlkID0gMjMyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///232\n"); /***/ }), /* 233 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\n \"b-row\",\n [\n _vm._v(\"\\n Filter by category:\\n \"),\n _vm._l(_vm.categories, function(category) {\n return _c(\n \"b-badge\",\n {\n attrs: {\n variant:\n _vm.category_filter.indexOf(category) != -1\n ? \"primary\"\n : \"secondary\"\n },\n on: {\n click: function($event) {\n _vm.category_filter.indexOf(category) != -1\n ? _vm.category_filter.splice(\n _vm.category_filter.indexOf(category),\n 1\n )\n : _vm.category_filter.push(category)\n }\n }\n },\n [_vm._v(\"\\n \" + _vm._s(category) + \"\\n \")]\n )\n })\n ],\n 2\n ),\n _vm._v(\" \"),\n _c(\n \"b-row\",\n [\n _vm._v(\"\\n Filter by step:\\n \"),\n _vm._l(_vm.steps, function(step) {\n return _c(\n \"b-badge\",\n {\n attrs: {\n variant:\n _vm.step_filter.indexOf(step) != -1\n ? \"primary\"\n : \"secondary\"\n },\n on: {\n click: function($event) {\n _vm.step_filter.indexOf(step) != -1\n ? _vm.step_filter.splice(_vm.step_filter.indexOf(step), 1)\n : _vm.step_filter.push(step)\n }\n }\n },\n [_vm._v(\"\\n \" + _vm._s(step) + \"\\n \")]\n )\n })\n ],\n 2\n ),\n _vm._v(\" \"),\n _c(\n \"b-row\",\n _vm._l(_vm.processors, function(processor) {\n return _c(\"ocrd-processor-list-item\", {\n attrs: { processor: processor }\n })\n }),\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-5757c97e\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2Nlc3Nvckxpc3QudnVlP2YzMzEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCLFdBQVc7QUFDWCxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNGLGtFQUFTO0FBQ3hCLElBQUksS0FBVTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMjMzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcImItcm93XCIsXG4gICAgICAgIFtcbiAgICAgICAgICBfdm0uX3YoXCJcXG4gICAgRmlsdGVyIGJ5IGNhdGVnb3J5OlxcbiAgICBcIiksXG4gICAgICAgICAgX3ZtLl9sKF92bS5jYXRlZ29yaWVzLCBmdW5jdGlvbihjYXRlZ29yeSkge1xuICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICBcImItYmFkZ2VcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICB2YXJpYW50OlxuICAgICAgICAgICAgICAgICAgICBfdm0uY2F0ZWdvcnlfZmlsdGVyLmluZGV4T2YoY2F0ZWdvcnkpICE9IC0xXG4gICAgICAgICAgICAgICAgICAgICAgPyBcInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgIDogXCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLmNhdGVnb3J5X2ZpbHRlci5pbmRleE9mKGNhdGVnb3J5KSAhPSAtMVxuICAgICAgICAgICAgICAgICAgICAgID8gX3ZtLmNhdGVnb3J5X2ZpbHRlci5zcGxpY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5jYXRlZ29yeV9maWx0ZXIuaW5kZXhPZihjYXRlZ29yeSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICA6IF92bS5jYXRlZ29yeV9maWx0ZXIucHVzaChjYXRlZ29yeSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtfdm0uX3YoXCJcXG4gICAgICBcIiArIF92bS5fcyhjYXRlZ29yeSkgKyBcIlxcbiAgICBcIildXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgXSxcbiAgICAgICAgMlxuICAgICAgKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcbiAgICAgICAgXCJiLXJvd1wiLFxuICAgICAgICBbXG4gICAgICAgICAgX3ZtLl92KFwiXFxuICAgIEZpbHRlciBieSBzdGVwOlxcbiAgICBcIiksXG4gICAgICAgICAgX3ZtLl9sKF92bS5zdGVwcywgZnVuY3Rpb24oc3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICBcImItYmFkZ2VcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICB2YXJpYW50OlxuICAgICAgICAgICAgICAgICAgICBfdm0uc3RlcF9maWx0ZXIuaW5kZXhPZihzdGVwKSAhPSAtMVxuICAgICAgICAgICAgICAgICAgICAgID8gXCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICA6IFwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS5zdGVwX2ZpbHRlci5pbmRleE9mKHN0ZXApICE9IC0xXG4gICAgICAgICAgICAgICAgICAgICAgPyBfdm0uc3RlcF9maWx0ZXIuc3BsaWNlKF92bS5zdGVwX2ZpbHRlci5pbmRleE9mKHN0ZXApLCAxKVxuICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLnN0ZXBfZmlsdGVyLnB1c2goc3RlcClcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtfdm0uX3YoXCJcXG4gICAgICBcIiArIF92bS5fcyhzdGVwKSArIFwiXFxuICAgIFwiKV1cbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgICBdLFxuICAgICAgICAyXG4gICAgICApLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFxuICAgICAgICBcImItcm93XCIsXG4gICAgICAgIF92bS5fbChfdm0ucHJvY2Vzc29ycywgZnVuY3Rpb24ocHJvY2Vzc29yKSB7XG4gICAgICAgICAgcmV0dXJuIF9jKFwib2NyZC1wcm9jZXNzb3ItbGlzdC1pdGVtXCIsIHtcbiAgICAgICAgICAgIGF0dHJzOiB7IHByb2Nlc3NvcjogcHJvY2Vzc29yIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9KSxcbiAgICAgICAgMVxuICAgICAgKVxuICAgIF0sXG4gICAgMVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxudmFyIGVzRXhwb3J0cyA9IHsgcmVuZGVyOiByZW5kZXIsIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zIH1cbmV4cG9ydCBkZWZhdWx0IGVzRXhwb3J0c1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAobW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgcmVxdWlyZShcInZ1ZS1ob3QtcmVsb2FkLWFwaVwiKSAgICAgIC5yZXJlbmRlcihcImRhdGEtdi01NzU3Yzk3ZVwiLCBlc0V4cG9ydHMpXG4gIH1cbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxlcj97XCJpZFwiOlwiZGF0YS12LTU3NTdjOTdlXCIsXCJoYXNTY29wZWRcIjpmYWxzZSxcImJ1YmxlXCI6e1widHJhbnNmb3Jtc1wiOnt9fX0hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vc3JjL09jcmRQcm9jZXNzb3JMaXN0LnZ1ZVxuLy8gbW9kdWxlIGlkID0gMjMzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///233\n"); +eval("var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"b-card\",\n {\n staticClass: \"mb-5\",\n attrs: {\n tag: \"article\",\n title: _vm.processor.executable.replace(\"ocrd-\", \"\")\n }\n },\n [\n _c(\n \"b-card-text\",\n [\n _c(\n \"b-tabs\",\n [\n _c(\n \"b-tab\",\n { attrs: { title: \"Description\" } },\n [\n _c(\"blockquote\", [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.processor.description) +\n \"\\n \"\n )\n ]),\n _vm._v(\" \"),\n _vm._l(_vm.processor.steps, function(step) {\n return _c(\"b-badge\", { attrs: { variant: \"info\" } }, [\n _vm._v(_vm._s(step))\n ])\n }),\n _vm._v(\" \"),\n _vm._l(_vm.processor.categories, function(category) {\n return _c(\"b-badge\", { attrs: { variant: \"success\" } }, [\n _vm._v(_vm._s(category))\n ])\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\"\\n Part of \"),\n _c(\"a\", { attrs: { href: \"\" } }, [\n _vm._v(_vm._s(_vm.processor.part_of))\n ])\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"a\", { attrs: { href: \"\" } }, [\n _vm._v(\"Read the Documentation!\")\n ])\n ])\n ],\n 2\n ),\n _vm._v(\" \"),\n _c(\"b-tab\", { attrs: { title: \"Parameters\" } }, [\n _c(\n \"ul\",\n _vm._l(_vm.processor.parameters, function(param, name) {\n return _c(\"li\", [\n _c(\"strong\", [_vm._v(_vm._s(name))]),\n _vm._v(\" \" + _vm._s(param) + \"\\n \")\n ])\n }),\n 0\n )\n ])\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-7a8fbc74\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2Nlc3Nvckxpc3RJdGVtLnZ1ZT8wYWYxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsU0FBUyx1QkFBdUIsRUFBRTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxTQUFTLGtCQUFrQixFQUFFO0FBQ3ZFO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBLDBDQUEwQyxTQUFTLHFCQUFxQixFQUFFO0FBQzFFO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLFNBQVMsV0FBVyxFQUFFO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsU0FBUyxXQUFXLEVBQUU7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsU0FBUyxzQkFBc0IsRUFBRTtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDRixrRUFBUztBQUN4QixJQUFJLEtBQVU7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjIzMy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJiLWNhcmRcIixcbiAgICB7XG4gICAgICBzdGF0aWNDbGFzczogXCJtYi01XCIsXG4gICAgICBhdHRyczoge1xuICAgICAgICB0YWc6IFwiYXJ0aWNsZVwiLFxuICAgICAgICB0aXRsZTogX3ZtLnByb2Nlc3Nvci5leGVjdXRhYmxlLnJlcGxhY2UoXCJvY3JkLVwiLCBcIlwiKVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwiYi1jYXJkLXRleHRcIixcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJiLXRhYnNcIixcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJiLXRhYlwiLFxuICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgdGl0bGU6IFwiRGVzY3JpcHRpb25cIiB9IH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJibG9ja3F1b3RlXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhfdm0ucHJvY2Vzc29yLmRlc2NyaXB0aW9uKSArXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgX3ZtLl9sKF92bS5wcm9jZXNzb3Iuc3RlcHMsIGZ1bmN0aW9uKHN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFwiYi1iYWRnZVwiLCB7IGF0dHJzOiB7IHZhcmlhbnQ6IFwiaW5mb1wiIH0gfSwgW1xuICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3Moc3RlcCkpXG4gICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfdm0uX2woX3ZtLnByb2Nlc3Nvci5jYXRlZ29yaWVzLCBmdW5jdGlvbihjYXRlZ29yeSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2MoXCJiLWJhZGdlXCIsIHsgYXR0cnM6IHsgdmFyaWFudDogXCJzdWNjZXNzXCIgfSB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhjYXRlZ29yeSkpXG4gICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcInBcIiwgW1xuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCJcXG4gICAgICAgICAgUGFydCBvZiBcIiksXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiYVwiLCB7IGF0dHJzOiB7IGhyZWY6IFwiXCIgfSB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0ucHJvY2Vzc29yLnBhcnRfb2YpKVxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgX2MoXCJwXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJhXCIsIHsgYXR0cnM6IHsgaHJlZjogXCJcIiB9IH0sIFtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCJSZWFkIHRoZSBEb2N1bWVudGF0aW9uIVwiKVxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXCJiLXRhYlwiLCB7IGF0dHJzOiB7IHRpdGxlOiBcIlBhcmFtZXRlcnNcIiB9IH0sIFtcbiAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgIFwidWxcIixcbiAgICAgICAgICAgICAgICAgIF92bS5fbChfdm0ucHJvY2Vzc29yLnBhcmFtZXRlcnMsIGZ1bmN0aW9uKHBhcmFtLCBuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcImxpXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcInN0cm9uZ1wiLCBbX3ZtLl92KF92bS5fcyhuYW1lKSldKSxcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIgKyBfdm0uX3MocGFyYW0pICsgXCJcXG4gICAgICAgICAgXCIpXG4gICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKVxuICAgIF0sXG4gICAgMVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxudmFyIGVzRXhwb3J0cyA9IHsgcmVuZGVyOiByZW5kZXIsIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zIH1cbmV4cG9ydCBkZWZhdWx0IGVzRXhwb3J0c1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAobW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgcmVxdWlyZShcInZ1ZS1ob3QtcmVsb2FkLWFwaVwiKSAgICAgIC5yZXJlbmRlcihcImRhdGEtdi03YThmYmM3NFwiLCBlc0V4cG9ydHMpXG4gIH1cbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxlcj97XCJpZFwiOlwiZGF0YS12LTdhOGZiYzc0XCIsXCJoYXNTY29wZWRcIjpmYWxzZSxcImJ1YmxlXCI6e1widHJhbnNmb3Jtc1wiOnt9fX0hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vc3JjL09jcmRQcm9jZXNzb3JMaXN0SXRlbS52dWVcbi8vIG1vZHVsZSBpZCA9IDIzM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///233\n"); /***/ }), /* 234 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_OcrdProjectList_vue__ = __webpack_require__(97);\n/* unused harmony namespace reexport */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_a15c35f0_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_OcrdProjectList_vue__ = __webpack_require__(244);\nvar disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n __webpack_require__(235)\n}\nvar normalizeComponent = __webpack_require__(29)\n/* script */\n\n\n/* template */\n\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_OcrdProjectList_vue__[\"a\" /* default */],\n __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_a15c35f0_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_OcrdProjectList_vue__[\"a\" /* default */],\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/OcrdProjectList.vue\"\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-a15c35f0\", Component.options)\n } else {\n hotAPI.reload(\"data-v-a15c35f0\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Component.exports);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2plY3RMaXN0LnZ1ZT83MDg3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUJBQU8sQ0FBQyxHQUFvUTtBQUM5UTtBQUNBLHlCQUF5QixtQkFBTyxDQUFDLEVBQXNEO0FBQ3ZGO0FBQ2dIO0FBQ2E7QUFDN0g7QUFDMFA7QUFDMVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSwySUFBYztBQUNoQixFQUFFLHdPQUFnQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQVUsR0FBRztBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsQ0FBQzs7QUFFYywwRUFBaUIiLCJmaWxlIjoiMjM0LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGRpc3Bvc2VkID0gZmFsc2VcbmZ1bmN0aW9uIGluamVjdFN0eWxlIChzc3JDb250ZXh0KSB7XG4gIGlmIChkaXNwb3NlZCkgcmV0dXJuXG4gIHJlcXVpcmUoXCIhIXZ1ZS1zdHlsZS1sb2FkZXIhY3NzLWxvYWRlcj9zb3VyY2VNYXAhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyL2luZGV4P3tcXFwidnVlXFxcIjp0cnVlLFxcXCJpZFxcXCI6XFxcImRhdGEtdi1hMTVjMzVmMFxcXCIsXFxcInNjb3BlZFxcXCI6ZmFsc2UsXFxcImhhc0lubGluZUNvbmZpZ1xcXCI6ZmFsc2V9IS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXN0eWxlcyZpbmRleD0wIS4vT2NyZFByb2plY3RMaXN0LnZ1ZVwiKVxufVxudmFyIG5vcm1hbGl6ZUNvbXBvbmVudCA9IHJlcXVpcmUoXCIhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2NvbXBvbmVudC1ub3JtYWxpemVyXCIpXG4vKiBzY3JpcHQgKi9cbmV4cG9ydCAqIGZyb20gXCIhIWJhYmVsLWxvYWRlciEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL09jcmRQcm9qZWN0TGlzdC52dWVcIlxuaW1wb3J0IF9fdnVlX3NjcmlwdF9fIGZyb20gXCIhIWJhYmVsLWxvYWRlciEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL09jcmRQcm9qZWN0TGlzdC52dWVcIlxuLyogdGVtcGxhdGUgKi9cbmltcG9ydCBfX3Z1ZV90ZW1wbGF0ZV9fIGZyb20gXCIhIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxlci9pbmRleD97XFxcImlkXFxcIjpcXFwiZGF0YS12LWExNWMzNWYwXFxcIixcXFwiaGFzU2NvcGVkXFxcIjpmYWxzZSxcXFwiYnVibGVcXFwiOntcXFwidHJhbnNmb3Jtc1xcXCI6e319fSEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vT2NyZFByb2plY3RMaXN0LnZ1ZVwiXG4vKiB0ZW1wbGF0ZSBmdW5jdGlvbmFsICovXG52YXIgX192dWVfdGVtcGxhdGVfZnVuY3Rpb25hbF9fID0gZmFsc2Vcbi8qIHN0eWxlcyAqL1xudmFyIF9fdnVlX3N0eWxlc19fID0gaW5qZWN0U3R5bGVcbi8qIHNjb3BlSWQgKi9cbnZhciBfX3Z1ZV9zY29wZUlkX18gPSBudWxsXG4vKiBtb2R1bGVJZGVudGlmaWVyIChzZXJ2ZXIgb25seSkgKi9cbnZhciBfX3Z1ZV9tb2R1bGVfaWRlbnRpZmllcl9fID0gbnVsbFxudmFyIENvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgX192dWVfc2NyaXB0X18sXG4gIF9fdnVlX3RlbXBsYXRlX18sXG4gIF9fdnVlX3RlbXBsYXRlX2Z1bmN0aW9uYWxfXyxcbiAgX192dWVfc3R5bGVzX18sXG4gIF9fdnVlX3Njb3BlSWRfXyxcbiAgX192dWVfbW9kdWxlX2lkZW50aWZpZXJfX1xuKVxuQ29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvT2NyZFByb2plY3RMaXN0LnZ1ZVwiXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7KGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcbiAgaG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSwgZmFsc2UpXG4gIGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghbW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgaG90QVBJLmNyZWF0ZVJlY29yZChcImRhdGEtdi1hMTVjMzVmMFwiLCBDb21wb25lbnQub3B0aW9ucylcbiAgfSBlbHNlIHtcbiAgICBob3RBUEkucmVsb2FkKFwiZGF0YS12LWExNWMzNWYwXCIsIENvbXBvbmVudC5vcHRpb25zKVxuICB9XG4gIG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbiAoZGF0YSkge1xuICAgIGRpc3Bvc2VkID0gdHJ1ZVxuICB9KVxufSkoKX1cblxuZXhwb3J0IGRlZmF1bHQgQ29tcG9uZW50LmV4cG9ydHNcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL09jcmRQcm9qZWN0TGlzdC52dWVcbi8vIG1vZHVsZSBpZCA9IDIzNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///234\n"); +eval("var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\n \"b-row\",\n [\n _vm._v(\"\\n Filter by category:\\n \"),\n _vm._l(_vm.categories, function(category) {\n return _c(\n \"b-badge\",\n {\n attrs: {\n variant:\n _vm.category_filter.indexOf(category) != -1\n ? \"primary\"\n : \"secondary\"\n },\n on: {\n click: function($event) {\n _vm.category_filter.indexOf(category) != -1\n ? _vm.category_filter.splice(\n _vm.category_filter.indexOf(category),\n 1\n )\n : _vm.category_filter.push(category)\n }\n }\n },\n [_vm._v(\"\\n \" + _vm._s(category) + \"\\n \")]\n )\n })\n ],\n 2\n ),\n _vm._v(\" \"),\n _c(\n \"b-row\",\n [\n _vm._v(\"\\n Filter by step:\\n \"),\n _vm._l(_vm.steps, function(step) {\n return _c(\n \"b-badge\",\n {\n attrs: {\n variant:\n _vm.step_filter.indexOf(step) != -1\n ? \"primary\"\n : \"secondary\"\n },\n on: {\n click: function($event) {\n _vm.step_filter.indexOf(step) != -1\n ? _vm.step_filter.splice(_vm.step_filter.indexOf(step), 1)\n : _vm.step_filter.push(step)\n }\n }\n },\n [_vm._v(\"\\n \" + _vm._s(step) + \"\\n \")]\n )\n })\n ],\n 2\n ),\n _vm._v(\" \"),\n _c(\n \"b-row\",\n _vm._l(_vm.processors, function(processor) {\n return _c(\"ocrd-processor-list-item\", {\n attrs: { processor: processor }\n })\n }),\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-5757c97e\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2Nlc3Nvckxpc3QudnVlP2YzMzEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCLFdBQVc7QUFDWCxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNGLGtFQUFTO0FBQ3hCLElBQUksS0FBVTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMjM0LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcImItcm93XCIsXG4gICAgICAgIFtcbiAgICAgICAgICBfdm0uX3YoXCJcXG4gICAgRmlsdGVyIGJ5IGNhdGVnb3J5OlxcbiAgICBcIiksXG4gICAgICAgICAgX3ZtLl9sKF92bS5jYXRlZ29yaWVzLCBmdW5jdGlvbihjYXRlZ29yeSkge1xuICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICBcImItYmFkZ2VcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICB2YXJpYW50OlxuICAgICAgICAgICAgICAgICAgICBfdm0uY2F0ZWdvcnlfZmlsdGVyLmluZGV4T2YoY2F0ZWdvcnkpICE9IC0xXG4gICAgICAgICAgICAgICAgICAgICAgPyBcInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgIDogXCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLmNhdGVnb3J5X2ZpbHRlci5pbmRleE9mKGNhdGVnb3J5KSAhPSAtMVxuICAgICAgICAgICAgICAgICAgICAgID8gX3ZtLmNhdGVnb3J5X2ZpbHRlci5zcGxpY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5jYXRlZ29yeV9maWx0ZXIuaW5kZXhPZihjYXRlZ29yeSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICA6IF92bS5jYXRlZ29yeV9maWx0ZXIucHVzaChjYXRlZ29yeSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtfdm0uX3YoXCJcXG4gICAgICBcIiArIF92bS5fcyhjYXRlZ29yeSkgKyBcIlxcbiAgICBcIildXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgXSxcbiAgICAgICAgMlxuICAgICAgKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcbiAgICAgICAgXCJiLXJvd1wiLFxuICAgICAgICBbXG4gICAgICAgICAgX3ZtLl92KFwiXFxuICAgIEZpbHRlciBieSBzdGVwOlxcbiAgICBcIiksXG4gICAgICAgICAgX3ZtLl9sKF92bS5zdGVwcywgZnVuY3Rpb24oc3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICBcImItYmFkZ2VcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICB2YXJpYW50OlxuICAgICAgICAgICAgICAgICAgICBfdm0uc3RlcF9maWx0ZXIuaW5kZXhPZihzdGVwKSAhPSAtMVxuICAgICAgICAgICAgICAgICAgICAgID8gXCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICA6IFwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS5zdGVwX2ZpbHRlci5pbmRleE9mKHN0ZXApICE9IC0xXG4gICAgICAgICAgICAgICAgICAgICAgPyBfdm0uc3RlcF9maWx0ZXIuc3BsaWNlKF92bS5zdGVwX2ZpbHRlci5pbmRleE9mKHN0ZXApLCAxKVxuICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLnN0ZXBfZmlsdGVyLnB1c2goc3RlcClcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtfdm0uX3YoXCJcXG4gICAgICBcIiArIF92bS5fcyhzdGVwKSArIFwiXFxuICAgIFwiKV1cbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgICBdLFxuICAgICAgICAyXG4gICAgICApLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFxuICAgICAgICBcImItcm93XCIsXG4gICAgICAgIF92bS5fbChfdm0ucHJvY2Vzc29ycywgZnVuY3Rpb24ocHJvY2Vzc29yKSB7XG4gICAgICAgICAgcmV0dXJuIF9jKFwib2NyZC1wcm9jZXNzb3ItbGlzdC1pdGVtXCIsIHtcbiAgICAgICAgICAgIGF0dHJzOiB7IHByb2Nlc3NvcjogcHJvY2Vzc29yIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9KSxcbiAgICAgICAgMVxuICAgICAgKVxuICAgIF0sXG4gICAgMVxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxudmFyIGVzRXhwb3J0cyA9IHsgcmVuZGVyOiByZW5kZXIsIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zIH1cbmV4cG9ydCBkZWZhdWx0IGVzRXhwb3J0c1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAobW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgcmVxdWlyZShcInZ1ZS1ob3QtcmVsb2FkLWFwaVwiKSAgICAgIC5yZXJlbmRlcihcImRhdGEtdi01NzU3Yzk3ZVwiLCBlc0V4cG9ydHMpXG4gIH1cbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxlcj97XCJpZFwiOlwiZGF0YS12LTU3NTdjOTdlXCIsXCJoYXNTY29wZWRcIjpmYWxzZSxcImJ1YmxlXCI6e1widHJhbnNmb3Jtc1wiOnt9fX0hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vc3JjL09jcmRQcm9jZXNzb3JMaXN0LnZ1ZVxuLy8gbW9kdWxlIGlkID0gMjM0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///234\n"); /***/ }), /* 235 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ (function(module, __webpack_exports__, __webpack_require__) { -eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(236);\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = __webpack_require__(23)(\"2adfd839\", content, false, {});\n// Hot Module Replacement\nif(false) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../node_modules/css-loader/index.js?sourceMap!../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-a15c35f0\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./OcrdProjectList.vue\", function() {\n var newContent = require(\"!!../node_modules/css-loader/index.js?sourceMap!../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-a15c35f0\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./OcrdProjectList.vue\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2plY3RMaXN0LnZ1ZT82NjE4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0EsY0FBYyxtQkFBTyxDQUFDLEdBQWtSO0FBQ3hTLDRDQUE0QyxRQUFTO0FBQ3JEO0FBQ0E7QUFDQSxhQUFhLG1CQUFPLENBQUMsRUFBMEQsZ0NBQWdDO0FBQy9HO0FBQ0EsR0FBRyxLQUFVO0FBQ2I7QUFDQTtBQUNBLDhIQUE4SCxtRkFBbUY7QUFDak4sdUlBQXVJLG1GQUFtRjtBQUMxTjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxnQ0FBZ0MsVUFBVSxFQUFFO0FBQzVDIiwiZmlsZSI6IjIzNS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cbi8vIGxvYWQgdGhlIHN0eWxlc1xudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz9zb3VyY2VNYXAhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyL2luZGV4LmpzP3tcXFwidnVlXFxcIjp0cnVlLFxcXCJpZFxcXCI6XFxcImRhdGEtdi1hMTVjMzVmMFxcXCIsXFxcInNjb3BlZFxcXCI6ZmFsc2UsXFxcImhhc0lubGluZUNvbmZpZ1xcXCI6ZmFsc2V9IS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wIS4vT2NyZFByb2plY3RMaXN0LnZ1ZVwiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzXCIpKFwiMmFkZmQ4MzlcIiwgY29udGVudCwgZmFsc2UsIHt9KTtcbi8vIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnRcbmlmKG1vZHVsZS5ob3QpIHtcbiAvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuIGlmKCFjb250ZW50LmxvY2Fscykge1xuICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJ2dWVcXFwiOnRydWUsXFxcImlkXFxcIjpcXFwiZGF0YS12LWExNWMzNWYwXFxcIixcXFwic2NvcGVkXFxcIjpmYWxzZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjpmYWxzZX0hLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9PY3JkUHJvamVjdExpc3QudnVlXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJ2dWVcXFwiOnRydWUsXFxcImlkXFxcIjpcXFwiZGF0YS12LWExNWMzNWYwXFxcIixcXFwic2NvcGVkXFxcIjpmYWxzZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjpmYWxzZX0hLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9PY3JkUHJvamVjdExpc3QudnVlXCIpO1xuICAgICBpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcbiAgICAgdXBkYXRlKG5ld0NvbnRlbnQpO1xuICAgfSk7XG4gfVxuIC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3NcbiBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyIS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXI/c291cmNlTWFwIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyP3tcInZ1ZVwiOnRydWUsXCJpZFwiOlwiZGF0YS12LWExNWMzNWYwXCIsXCJzY29wZWRcIjpmYWxzZSxcImhhc0lubGluZUNvbmZpZ1wiOmZhbHNlfSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wIS4vc3JjL09jcmRQcm9qZWN0TGlzdC52dWVcbi8vIG1vZHVsZSBpZCA9IDIzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///235\n"); +"use strict"; +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_OcrdProjectList_vue__ = __webpack_require__(98);\n/* unused harmony namespace reexport */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_a15c35f0_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_OcrdProjectList_vue__ = __webpack_require__(244);\nvar disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n __webpack_require__(236)\n}\nvar normalizeComponent = __webpack_require__(29)\n/* script */\n\n\n/* template */\n\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_OcrdProjectList_vue__[\"a\" /* default */],\n __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_a15c35f0_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_OcrdProjectList_vue__[\"a\" /* default */],\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/OcrdProjectList.vue\"\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-a15c35f0\", Component.options)\n } else {\n hotAPI.reload(\"data-v-a15c35f0\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Component.exports);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2plY3RMaXN0LnZ1ZT83MDg3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUJBQU8sQ0FBQyxHQUFvUTtBQUM5UTtBQUNBLHlCQUF5QixtQkFBTyxDQUFDLEVBQXNEO0FBQ3ZGO0FBQ2dIO0FBQ2E7QUFDN0g7QUFDMFA7QUFDMVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSwySUFBYztBQUNoQixFQUFFLHdPQUFnQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLEtBQVUsR0FBRztBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsQ0FBQzs7QUFFYywwRUFBaUIiLCJmaWxlIjoiMjM1LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGRpc3Bvc2VkID0gZmFsc2VcbmZ1bmN0aW9uIGluamVjdFN0eWxlIChzc3JDb250ZXh0KSB7XG4gIGlmIChkaXNwb3NlZCkgcmV0dXJuXG4gIHJlcXVpcmUoXCIhIXZ1ZS1zdHlsZS1sb2FkZXIhY3NzLWxvYWRlcj9zb3VyY2VNYXAhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyL2luZGV4P3tcXFwidnVlXFxcIjp0cnVlLFxcXCJpZFxcXCI6XFxcImRhdGEtdi1hMTVjMzVmMFxcXCIsXFxcInNjb3BlZFxcXCI6ZmFsc2UsXFxcImhhc0lubGluZUNvbmZpZ1xcXCI6ZmFsc2V9IS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXN0eWxlcyZpbmRleD0wIS4vT2NyZFByb2plY3RMaXN0LnZ1ZVwiKVxufVxudmFyIG5vcm1hbGl6ZUNvbXBvbmVudCA9IHJlcXVpcmUoXCIhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2NvbXBvbmVudC1ub3JtYWxpemVyXCIpXG4vKiBzY3JpcHQgKi9cbmV4cG9ydCAqIGZyb20gXCIhIWJhYmVsLWxvYWRlciEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL09jcmRQcm9qZWN0TGlzdC52dWVcIlxuaW1wb3J0IF9fdnVlX3NjcmlwdF9fIGZyb20gXCIhIWJhYmVsLWxvYWRlciEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL09jcmRQcm9qZWN0TGlzdC52dWVcIlxuLyogdGVtcGxhdGUgKi9cbmltcG9ydCBfX3Z1ZV90ZW1wbGF0ZV9fIGZyb20gXCIhIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxlci9pbmRleD97XFxcImlkXFxcIjpcXFwiZGF0YS12LWExNWMzNWYwXFxcIixcXFwiaGFzU2NvcGVkXFxcIjpmYWxzZSxcXFwiYnVibGVcXFwiOntcXFwidHJhbnNmb3Jtc1xcXCI6e319fSEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vT2NyZFByb2plY3RMaXN0LnZ1ZVwiXG4vKiB0ZW1wbGF0ZSBmdW5jdGlvbmFsICovXG52YXIgX192dWVfdGVtcGxhdGVfZnVuY3Rpb25hbF9fID0gZmFsc2Vcbi8qIHN0eWxlcyAqL1xudmFyIF9fdnVlX3N0eWxlc19fID0gaW5qZWN0U3R5bGVcbi8qIHNjb3BlSWQgKi9cbnZhciBfX3Z1ZV9zY29wZUlkX18gPSBudWxsXG4vKiBtb2R1bGVJZGVudGlmaWVyIChzZXJ2ZXIgb25seSkgKi9cbnZhciBfX3Z1ZV9tb2R1bGVfaWRlbnRpZmllcl9fID0gbnVsbFxudmFyIENvbXBvbmVudCA9IG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgX192dWVfc2NyaXB0X18sXG4gIF9fdnVlX3RlbXBsYXRlX18sXG4gIF9fdnVlX3RlbXBsYXRlX2Z1bmN0aW9uYWxfXyxcbiAgX192dWVfc3R5bGVzX18sXG4gIF9fdnVlX3Njb3BlSWRfXyxcbiAgX192dWVfbW9kdWxlX2lkZW50aWZpZXJfX1xuKVxuQ29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJzcmMvT2NyZFByb2plY3RMaXN0LnZ1ZVwiXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7KGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcbiAgaG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSwgZmFsc2UpXG4gIGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghbW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgaG90QVBJLmNyZWF0ZVJlY29yZChcImRhdGEtdi1hMTVjMzVmMFwiLCBDb21wb25lbnQub3B0aW9ucylcbiAgfSBlbHNlIHtcbiAgICBob3RBUEkucmVsb2FkKFwiZGF0YS12LWExNWMzNWYwXCIsIENvbXBvbmVudC5vcHRpb25zKVxuICB9XG4gIG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbiAoZGF0YSkge1xuICAgIGRpc3Bvc2VkID0gdHJ1ZVxuICB9KVxufSkoKX1cblxuZXhwb3J0IGRlZmF1bHQgQ29tcG9uZW50LmV4cG9ydHNcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL09jcmRQcm9qZWN0TGlzdC52dWVcbi8vIG1vZHVsZSBpZCA9IDIzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///235\n"); /***/ }), /* 236 */ /***/ (function(module, exports, __webpack_require__) { -eval("exports = module.exports = __webpack_require__(22)(true);\n// imports\n\n\n// module\nexports.push([module.i, \"\\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\", \"\", {\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"file\":\"OcrdProjectList.vue\",\"sourceRoot\":\"\"}]);\n\n// exports\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2plY3RMaXN0LnZ1ZT85NzVmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQixtQkFBTyxDQUFDLEVBQTRDO0FBQy9FOzs7QUFHQTtBQUNBLGNBQWMsUUFBUyxtRUFBbUUsK0ZBQStGOztBQUV6TCIsImZpbGUiOiIyMzYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKHRydWUpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXCIsIFwiXCIsIHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJcIixcImZpbGVcIjpcIk9jcmRQcm9qZWN0TGlzdC52dWVcIixcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuXG4vLyBleHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyP3NvdXJjZU1hcCEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlcj97XCJ2dWVcIjp0cnVlLFwiaWRcIjpcImRhdGEtdi1hMTVjMzVmMFwiLFwic2NvcGVkXCI6ZmFsc2UsXCJoYXNJbmxpbmVDb25maWdcIjpmYWxzZX0hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL3NyYy9PY3JkUHJvamVjdExpc3QudnVlXG4vLyBtb2R1bGUgaWQgPSAyMzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///236\n"); +eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(237);\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = __webpack_require__(23)(\"2adfd839\", content, false, {});\n// Hot Module Replacement\nif(false) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../node_modules/css-loader/index.js?sourceMap!../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-a15c35f0\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./OcrdProjectList.vue\", function() {\n var newContent = require(\"!!../node_modules/css-loader/index.js?sourceMap!../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-a15c35f0\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./OcrdProjectList.vue\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2plY3RMaXN0LnZ1ZT82NjE4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0EsY0FBYyxtQkFBTyxDQUFDLEdBQWtSO0FBQ3hTLDRDQUE0QyxRQUFTO0FBQ3JEO0FBQ0E7QUFDQSxhQUFhLG1CQUFPLENBQUMsRUFBMEQsZ0NBQWdDO0FBQy9HO0FBQ0EsR0FBRyxLQUFVO0FBQ2I7QUFDQTtBQUNBLDhIQUE4SCxtRkFBbUY7QUFDak4sdUlBQXVJLG1GQUFtRjtBQUMxTjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxnQ0FBZ0MsVUFBVSxFQUFFO0FBQzVDIiwiZmlsZSI6IjIzNi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cbi8vIGxvYWQgdGhlIHN0eWxlc1xudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcz9zb3VyY2VNYXAhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyL2luZGV4LmpzP3tcXFwidnVlXFxcIjp0cnVlLFxcXCJpZFxcXCI6XFxcImRhdGEtdi1hMTVjMzVmMFxcXCIsXFxcInNjb3BlZFxcXCI6ZmFsc2UsXFxcImhhc0lubGluZUNvbmZpZ1xcXCI6ZmFsc2V9IS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wIS4vT2NyZFByb2plY3RMaXN0LnZ1ZVwiKTtcbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG4vLyBhZGQgdGhlIHN0eWxlcyB0byB0aGUgRE9NXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzXCIpKFwiMmFkZmQ4MzlcIiwgY29udGVudCwgZmFsc2UsIHt9KTtcbi8vIEhvdCBNb2R1bGUgUmVwbGFjZW1lbnRcbmlmKG1vZHVsZS5ob3QpIHtcbiAvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuIGlmKCFjb250ZW50LmxvY2Fscykge1xuICAgbW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJ2dWVcXFwiOnRydWUsXFxcImlkXFxcIjpcXFwiZGF0YS12LWExNWMzNWYwXFxcIixcXFwic2NvcGVkXFxcIjpmYWxzZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjpmYWxzZX0hLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9PY3JkUHJvamVjdExpc3QudnVlXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzP3NvdXJjZU1hcCEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXguanM/e1xcXCJ2dWVcXFwiOnRydWUsXFxcImlkXFxcIjpcXFwiZGF0YS12LWExNWMzNWYwXFxcIixcXFwic2NvcGVkXFxcIjpmYWxzZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjpmYWxzZX0hLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9PY3JkUHJvamVjdExpc3QudnVlXCIpO1xuICAgICBpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcbiAgICAgdXBkYXRlKG5ld0NvbnRlbnQpO1xuICAgfSk7XG4gfVxuIC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3NcbiBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyIS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXI/c291cmNlTWFwIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyP3tcInZ1ZVwiOnRydWUsXCJpZFwiOlwiZGF0YS12LWExNWMzNWYwXCIsXCJzY29wZWRcIjpmYWxzZSxcImhhc0lubGluZUNvbmZpZ1wiOmZhbHNlfSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wIS4vc3JjL09jcmRQcm9qZWN0TGlzdC52dWVcbi8vIG1vZHVsZSBpZCA9IDIzNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///236\n"); /***/ }), /* 237 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { -"use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_OcrdProjectListItem_vue__ = __webpack_require__(98);\n/* unused harmony namespace reexport */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_ab156a8a_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_OcrdProjectListItem_vue__ = __webpack_require__(243);\nvar disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n __webpack_require__(238)\n}\nvar normalizeComponent = __webpack_require__(29)\n/* script */\n\n\n/* template */\n\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_OcrdProjectListItem_vue__[\"a\" /* default */],\n __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_ab156a8a_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_OcrdProjectListItem_vue__[\"a\" /* default */],\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/OcrdProjectListItem.vue\"\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-ab156a8a\", Component.options)\n } else {\n hotAPI.reload(\"data-v-ab156a8a\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Component.exports);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2plY3RMaXN0SXRlbS52dWU/YWI2NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLG1CQUFPLENBQUMsR0FBd1E7QUFDbFI7QUFDQSx5QkFBeUIsbUJBQU8sQ0FBQyxFQUFzRDtBQUN2RjtBQUNvSDtBQUNhO0FBQ2pJO0FBQzhQO0FBQzlQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0lBQWM7QUFDaEIsRUFBRSw0T0FBZ0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxLQUFVLEdBQUc7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILENBQUM7O0FBRWMsMEVBQWlCIiwiZmlsZSI6IjIzNy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkaXNwb3NlZCA9IGZhbHNlXG5mdW5jdGlvbiBpbmplY3RTdHlsZSAoc3NyQ29udGV4dCkge1xuICBpZiAoZGlzcG9zZWQpIHJldHVyblxuICByZXF1aXJlKFwiISF2dWUtc3R5bGUtbG9hZGVyIWNzcy1sb2FkZXI/c291cmNlTWFwIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlci9pbmRleD97XFxcInZ1ZVxcXCI6dHJ1ZSxcXFwiaWRcXFwiOlxcXCJkYXRhLXYtYWIxNTZhOGFcXFwiLFxcXCJzY29wZWRcXFwiOmZhbHNlLFxcXCJoYXNJbmxpbmVDb25maWdcXFwiOmZhbHNlfSEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL09jcmRQcm9qZWN0TGlzdEl0ZW0udnVlXCIpXG59XG52YXIgbm9ybWFsaXplQ29tcG9uZW50ID0gcmVxdWlyZShcIiEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvY29tcG9uZW50LW5vcm1hbGl6ZXJcIilcbi8qIHNjcmlwdCAqL1xuZXhwb3J0ICogZnJvbSBcIiEhYmFiZWwtbG9hZGVyIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXNjcmlwdCZpbmRleD0wIS4vT2NyZFByb2plY3RMaXN0SXRlbS52dWVcIlxuaW1wb3J0IF9fdnVlX3NjcmlwdF9fIGZyb20gXCIhIWJhYmVsLWxvYWRlciEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL09jcmRQcm9qZWN0TGlzdEl0ZW0udnVlXCJcbi8qIHRlbXBsYXRlICovXG5pbXBvcnQgX192dWVfdGVtcGxhdGVfXyBmcm9tIFwiISEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXIvaW5kZXg/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi1hYjE1NmE4YVxcXCIsXFxcImhhc1Njb3BlZFxcXCI6ZmFsc2UsXFxcImJ1YmxlXFxcIjp7XFxcInRyYW5zZm9ybXNcXFwiOnt9fX0hLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL09jcmRQcm9qZWN0TGlzdEl0ZW0udnVlXCJcbi8qIHRlbXBsYXRlIGZ1bmN0aW9uYWwgKi9cbnZhciBfX3Z1ZV90ZW1wbGF0ZV9mdW5jdGlvbmFsX18gPSBmYWxzZVxuLyogc3R5bGVzICovXG52YXIgX192dWVfc3R5bGVzX18gPSBpbmplY3RTdHlsZVxuLyogc2NvcGVJZCAqL1xudmFyIF9fdnVlX3Njb3BlSWRfXyA9IG51bGxcbi8qIG1vZHVsZUlkZW50aWZpZXIgKHNlcnZlciBvbmx5KSAqL1xudmFyIF9fdnVlX21vZHVsZV9pZGVudGlmaWVyX18gPSBudWxsXG52YXIgQ29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBfX3Z1ZV9zY3JpcHRfXyxcbiAgX192dWVfdGVtcGxhdGVfXyxcbiAgX192dWVfdGVtcGxhdGVfZnVuY3Rpb25hbF9fLFxuICBfX3Z1ZV9zdHlsZXNfXyxcbiAgX192dWVfc2NvcGVJZF9fLFxuICBfX3Z1ZV9tb2R1bGVfaWRlbnRpZmllcl9fXG4pXG5Db21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy9PY3JkUHJvamVjdExpc3RJdGVtLnZ1ZVwiXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7KGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcbiAgaG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSwgZmFsc2UpXG4gIGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghbW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgaG90QVBJLmNyZWF0ZVJlY29yZChcImRhdGEtdi1hYjE1NmE4YVwiLCBDb21wb25lbnQub3B0aW9ucylcbiAgfSBlbHNlIHtcbiAgICBob3RBUEkucmVsb2FkKFwiZGF0YS12LWFiMTU2YThhXCIsIENvbXBvbmVudC5vcHRpb25zKVxuICB9XG4gIG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbiAoZGF0YSkge1xuICAgIGRpc3Bvc2VkID0gdHJ1ZVxuICB9KVxufSkoKX1cblxuZXhwb3J0IGRlZmF1bHQgQ29tcG9uZW50LmV4cG9ydHNcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL09jcmRQcm9qZWN0TGlzdEl0ZW0udnVlXG4vLyBtb2R1bGUgaWQgPSAyMzdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///237\n"); +eval("exports = module.exports = __webpack_require__(22)(true);\n// imports\n\n\n// module\nexports.push([module.i, \"\\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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\", \"\", {\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"file\":\"OcrdProjectList.vue\",\"sourceRoot\":\"\"}]);\n\n// exports\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2plY3RMaXN0LnZ1ZT85NzVmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQixtQkFBTyxDQUFDLEVBQTRDO0FBQy9FOzs7QUFHQTtBQUNBLGNBQWMsUUFBUywrSEFBK0gsK0ZBQStGOztBQUVyUCIsImZpbGUiOiIyMzcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKHRydWUpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXCIsIFwiXCIsIHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJcIixcImZpbGVcIjpcIk9jcmRQcm9qZWN0TGlzdC52dWVcIixcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuXG4vLyBleHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyP3NvdXJjZU1hcCEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlcj97XCJ2dWVcIjp0cnVlLFwiaWRcIjpcImRhdGEtdi1hMTVjMzVmMFwiLFwic2NvcGVkXCI6ZmFsc2UsXCJoYXNJbmxpbmVDb25maWdcIjpmYWxzZX0hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL3NyYy9PY3JkUHJvamVjdExpc3QudnVlXG4vLyBtb2R1bGUgaWQgPSAyMzdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///237\n"); /***/ }), /* 238 */ @@ -1727,7 +1727,7 @@ eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// lo /* 239 */ /***/ (function(module, exports, __webpack_require__) { -eval("exports = module.exports = __webpack_require__(22)(true);\n// imports\n\n\n// module\nexports.push([module.i, \"\\n.ocrd-project-list-item {\\n max-width: 30rem;\\n max-height: 30rem;\\n overflow: auto;\\n}\\n\", \"\", {\"version\":3,\"sources\":[\"/data/monorepo/ocrd-kwalitee/webapp/src/src/OcrdProjectListItem.vue\"],\"names\":[],\"mappings\":\";AAsEA;EACA,iBAAA;EACA,kBAAA;EACA,eAAA;CACA\",\"file\":\"OcrdProjectListItem.vue\",\"sourcesContent\":[\"<template>\\n <b-card\\n :title=\\\"repo.org_plus_name\\\"\\n tag=\\\"article\\\"\\n class=\\\"mb-5 ocrd-project-list-item\\\"\\n >\\n <b-tabs>\\n <b-tab title=\\\"README\\\">\\n <div v-html=\\\"compiledReadme\\\"></div>\\n </b-tab>\\n <b-tab title=\\\"Dockerfile\\\">\\n <vue-code-highlight>{{ repo.files.Dockerfile || '# NO DOCKERFILE' }}</vue-code-highlight>\\n </b-tab>\\n <b-tab title=\\\"Git\\\">\\n <b-card-text>\\n <p>\\n <a href=\\\"`https://pypi.org/project/${ repo.python.name }/`\\\"> <img :src=\\\"`https://img.shields.io/pypi/v/${ repo.python.name }.svg`\\\" /> </a>\\n <!-- <a href=\\\"`https://travis-ci.org/${ repo.org_plus_name }`\\\"> <img :src=\\\"`https://travis-ci.org/${ repo.org_plus_name }.svg?branch=master`\\\" /> </a> -->\\n <!-- <a href=\\\"`https://circleci.com/gh/${ repo.org_plus_name }`\\\"> <img :src=\\\"`https://circleci.com/gh/${ repo.org_plus_name }.svg?style=svg`\\\" /> </a> -->\\n <!-- <a href=\\\"`https://hub.docker.com/r/ocrd/core/tags/`\\\"> <img :src=\\\"`https://img.shields.io/docker/automated/ocrd/core.svg`\\\" /> </a> -->\\n <!-- <a href=\\\"`https://codecov.io/gh/${ repo.org_plus_name }`\\\"> <img :src=\\\"`https://codecov.io/gh/${ repo.org_plus_name }/branch/master/graph/badge.svg`\\\" /> </a> -->\\n <!-- <a href=\\\"`https://scrutinizer-ci.com/g/${ repo.org_plus_name }`\\\"> <img :src=\\\"`https://scrutinizer-ci.com/g/${ repo.org_plus_name }/badges/quality-score.png?b=master`\\\" /> </a> -->\\n <!-- <a href=\\\"`https://lgtm.com/projects/g/${ repo.org_plus_name }/alerts/`\\\"> <img :src=\\\"`https://img.shields.io/lgtm/alerts/g/${ repo.org_plus_name }.svg?logo=lgtm&logoWidth=18`\\\" /> </a> -->\\n </p>\\n <b-table v-if=\\\"repo.git\\\" :items=\\\"[repo.git]\\\"></b-table>\\n </b-card-text>\\n </b-tab>\\n\\n <b-tab title=\\\"ocrd-tool validation\\\">\\n <b-card-text>\\n <vue-code-highlight>{{ repo.ocrd_tool_validate || '# NO validation data' }}</vue-code-highlight>\\n </b-card-text>\\n </b-tab>\\n\\n <b-tab title=\\\"Python\\\">\\n <b-card-text>\\n <b-table v-if=\\\"repo.python\\\" :items=\\\"[repo.python]\\\"></b-table>\\n </b-card-text>\\n </b-tab>\\n\\n </b-tabs>\\n </b-card>\\n</template>\\n\\n<script>\\nimport marked from 'marked'\\nimport { component as VueCodeHighlight } from 'vue-code-highlight'\\n\\nexport default {\\n components: {\\n VueCodeHighlight\\n },\\n props: {\\n repo: {required: true},\\n },\\n computed: {\\n cleanId() {\\n return this.repo.org_plus_name.replace(/[^A-Za-z0-9]/g, '-')\\n },\\n compiledReadme() {\\n let src = this.repo.files['README.md']\\n if (!src) src = '`# NO README`'\\n return marked(src)\\n }\\n }\\n}\\n</script>\\n\\n<style>\\n\\n.ocrd-project-list-item {\\n max-width: 30rem;\\n max-height: 30rem;\\n overflow: auto;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2plY3RMaXN0SXRlbS52dWU/NmQ5MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQkFBMkIsbUJBQU8sQ0FBQyxFQUE0QztBQUMvRTs7O0FBR0E7QUFDQSxjQUFjLFFBQVMsOEJBQThCLHFCQUFxQixzQkFBc0IsbUJBQW1CLEdBQUcsVUFBVSxzSEFBc0gsTUFBTSxXQUFXLFdBQVcsVUFBVSwwV0FBMFcsOENBQThDLDRKQUE0SixtQkFBbUIsK0RBQStELG1CQUFtQix5R0FBeUcscUJBQXFCLHdEQUF3RCxxQkFBcUIscUhBQXFILHFCQUFxQix3REFBd0QscUJBQXFCLHdVQUF3VSxxQkFBcUIsd0RBQXdELHFCQUFxQiwwSEFBMEgscUJBQXFCLHdEQUF3RCxxQkFBcUIsa0hBQWtILHFCQUFxQixpRUFBaUUscUJBQXFCLG1CQUFtQixtUUFBbVEscURBQXFELHlVQUF5VSxnQ0FBZ0MsOENBQThDLGlCQUFpQiwyQkFBMkIsYUFBYSxhQUFhLGVBQWUsTUFBTSxnQkFBZ0IsaUJBQWlCLDJFQUEyRSx5QkFBeUIsc0hBQXNILEtBQUssR0FBRyxtREFBbUQscUJBQXFCLHNCQUFzQixtQkFBbUIsR0FBRywrQkFBK0I7O0FBRTc0RyIsImZpbGUiOiIyMzkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKHRydWUpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiXFxuLm9jcmQtcHJvamVjdC1saXN0LWl0ZW0ge1xcbiAgbWF4LXdpZHRoOiAzMHJlbTtcXG4gIG1heC1oZWlnaHQ6IDMwcmVtO1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxufVxcblwiLCBcIlwiLCB7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCIvZGF0YS9tb25vcmVwby9vY3JkLWt3YWxpdGVlL3dlYmFwcC9zcmMvc3JjL09jcmRQcm9qZWN0TGlzdEl0ZW0udnVlXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCI7QUFzRUE7RUFDQSxpQkFBQTtFQUNBLGtCQUFBO0VBQ0EsZUFBQTtDQUNBXCIsXCJmaWxlXCI6XCJPY3JkUHJvamVjdExpc3RJdGVtLnZ1ZVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCI8dGVtcGxhdGU+XFxuICA8Yi1jYXJkXFxuICAgIDp0aXRsZT1cXFwicmVwby5vcmdfcGx1c19uYW1lXFxcIlxcbiAgICB0YWc9XFxcImFydGljbGVcXFwiXFxuICAgIGNsYXNzPVxcXCJtYi01IG9jcmQtcHJvamVjdC1saXN0LWl0ZW1cXFwiXFxuICAgID5cXG4gICAgPGItdGFicz5cXG4gICAgICA8Yi10YWIgdGl0bGU9XFxcIlJFQURNRVxcXCI+XFxuICAgICAgICA8ZGl2IHYtaHRtbD1cXFwiY29tcGlsZWRSZWFkbWVcXFwiPjwvZGl2PlxcbiAgICAgIDwvYi10YWI+XFxuICAgICAgPGItdGFiIHRpdGxlPVxcXCJEb2NrZXJmaWxlXFxcIj5cXG4gICAgICAgIDx2dWUtY29kZS1oaWdobGlnaHQ+e3sgcmVwby5maWxlcy5Eb2NrZXJmaWxlIHx8ICcjIE5PIERPQ0tFUkZJTEUnIH19PC92dWUtY29kZS1oaWdobGlnaHQ+XFxuICAgICAgPC9iLXRhYj5cXG4gICAgICA8Yi10YWIgdGl0bGU9XFxcIkdpdFxcXCI+XFxuICAgICAgICA8Yi1jYXJkLXRleHQ+XFxuICAgICAgICAgIDxwPlxcbiAgICAgICAgICAgIDxhIGhyZWY9XFxcImBodHRwczovL3B5cGkub3JnL3Byb2plY3QvJHsgcmVwby5weXRob24ubmFtZSB9L2BcXFwiPiAgICAgICAgICAgICA8aW1nIDpzcmM9XFxcImBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi8keyByZXBvLnB5dGhvbi5uYW1lIH0uc3ZnYFxcXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz4gPC9hPlxcbiAgICAgICAgICAgIDwhLS0gPGEgaHJlZj1cXFwiYGh0dHBzOi8vdHJhdmlzLWNpLm9yZy8keyByZXBvLm9yZ19wbHVzX25hbWUgfWBcXFwiPiAgICAgICAgICAgICAgIDxpbWcgOnNyYz1cXFwiYGh0dHBzOi8vdHJhdmlzLWNpLm9yZy8keyByZXBvLm9yZ19wbHVzX25hbWUgfS5zdmc/YnJhbmNoPW1hc3RlcmBcXFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPiA8L2E+IC0tPlxcbiAgICAgICAgICAgIDwhLS0gPGEgaHJlZj1cXFwiYGh0dHBzOi8vY2lyY2xlY2kuY29tL2doLyR7IHJlcG8ub3JnX3BsdXNfbmFtZSB9YFxcXCI+ICAgICAgICAgICAgIDxpbWcgOnNyYz1cXFwiYGh0dHBzOi8vY2lyY2xlY2kuY29tL2doLyR7IHJlcG8ub3JnX3BsdXNfbmFtZSB9LnN2Zz9zdHlsZT1zdmdgXFxcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPiA8L2E+IC0tPlxcbiAgICAgICAgICAgIDwhLS0gPGEgaHJlZj1cXFwiYGh0dHBzOi8vaHViLmRvY2tlci5jb20vci9vY3JkL2NvcmUvdGFncy9gXFxcIj4gICAgICAgICAgICAgICAgICAgICA8aW1nIDpzcmM9XFxcImBodHRwczovL2ltZy5zaGllbGRzLmlvL2RvY2tlci9hdXRvbWF0ZWQvb2NyZC9jb3JlLnN2Z2BcXFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+IDwvYT4gLS0+XFxuICAgICAgICAgICAgPCEtLSA8YSBocmVmPVxcXCJgaHR0cHM6Ly9jb2RlY292LmlvL2doLyR7IHJlcG8ub3JnX3BsdXNfbmFtZSB9YFxcXCI+ICAgICAgICAgICAgICAgPGltZyA6c3JjPVxcXCJgaHR0cHM6Ly9jb2RlY292LmlvL2doLyR7IHJlcG8ub3JnX3BsdXNfbmFtZSB9L2JyYW5jaC9tYXN0ZXIvZ3JhcGgvYmFkZ2Uuc3ZnYFxcXCIgICAgICAgICAgICAgICAgIC8+IDwvYT4gLS0+XFxuICAgICAgICAgICAgPCEtLSA8YSBocmVmPVxcXCJgaHR0cHM6Ly9zY3J1dGluaXplci1jaS5jb20vZy8keyByZXBvLm9yZ19wbHVzX25hbWUgfWBcXFwiPiAgICAgICAgPGltZyA6c3JjPVxcXCJgaHR0cHM6Ly9zY3J1dGluaXplci1jaS5jb20vZy8keyByZXBvLm9yZ19wbHVzX25hbWUgfS9iYWRnZXMvcXVhbGl0eS1zY29yZS5wbmc/Yj1tYXN0ZXJgXFxcIiAgICAgIC8+IDwvYT4gLS0+XFxuICAgICAgICAgICAgPCEtLSA8YSBocmVmPVxcXCJgaHR0cHM6Ly9sZ3RtLmNvbS9wcm9qZWN0cy9nLyR7IHJlcG8ub3JnX3BsdXNfbmFtZSB9L2FsZXJ0cy9gXFxcIj4gPGltZyA6c3JjPVxcXCJgaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9sZ3RtL2FsZXJ0cy9nLyR7IHJlcG8ub3JnX3BsdXNfbmFtZSB9LnN2Zz9sb2dvPWxndG0mYW1wO2xvZ29XaWR0aD0xOGBcXFwiIC8+IDwvYT4gLS0+XFxuICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgPGItdGFibGUgdi1pZj1cXFwicmVwby5naXRcXFwiIDppdGVtcz1cXFwiW3JlcG8uZ2l0XVxcXCI+PC9iLXRhYmxlPlxcbiAgICAgICAgPC9iLWNhcmQtdGV4dD5cXG4gICAgICA8L2ItdGFiPlxcblxcbiAgICAgIDxiLXRhYiB0aXRsZT1cXFwib2NyZC10b29sIHZhbGlkYXRpb25cXFwiPlxcbiAgICAgICAgPGItY2FyZC10ZXh0PlxcbiAgICAgICAgICA8dnVlLWNvZGUtaGlnaGxpZ2h0Pnt7IHJlcG8ub2NyZF90b29sX3ZhbGlkYXRlIHx8ICcjIE5PIHZhbGlkYXRpb24gZGF0YScgfX08L3Z1ZS1jb2RlLWhpZ2hsaWdodD5cXG4gICAgICAgIDwvYi1jYXJkLXRleHQ+XFxuICAgICAgPC9iLXRhYj5cXG5cXG4gICAgICA8Yi10YWIgdGl0bGU9XFxcIlB5dGhvblxcXCI+XFxuICAgICAgICA8Yi1jYXJkLXRleHQ+XFxuICAgICAgICAgIDxiLXRhYmxlIHYtaWY9XFxcInJlcG8ucHl0aG9uXFxcIiA6aXRlbXM9XFxcIltyZXBvLnB5dGhvbl1cXFwiPjwvYi10YWJsZT5cXG4gICAgICAgIDwvYi1jYXJkLXRleHQ+XFxuICAgICAgPC9iLXRhYj5cXG5cXG4gICAgPC9iLXRhYnM+XFxuICA8L2ItY2FyZD5cXG48L3RlbXBsYXRlPlxcblxcbjxzY3JpcHQ+XFxuaW1wb3J0IG1hcmtlZCBmcm9tICdtYXJrZWQnXFxuaW1wb3J0IHsgY29tcG9uZW50IGFzIFZ1ZUNvZGVIaWdobGlnaHQgfSBmcm9tICd2dWUtY29kZS1oaWdobGlnaHQnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgY29tcG9uZW50czoge1xcbiAgICBWdWVDb2RlSGlnaGxpZ2h0XFxuICB9LFxcbiAgcHJvcHM6IHtcXG4gICAgcmVwbzoge3JlcXVpcmVkOiB0cnVlfSxcXG4gIH0sXFxuICBjb21wdXRlZDoge1xcbiAgICBjbGVhbklkKCkge1xcbiAgICAgIHJldHVybiB0aGlzLnJlcG8ub3JnX3BsdXNfbmFtZS5yZXBsYWNlKC9bXkEtWmEtejAtOV0vZywgJy0nKVxcbiAgICB9LFxcbiAgICBjb21waWxlZFJlYWRtZSgpIHtcXG4gICAgICBsZXQgc3JjID0gdGhpcy5yZXBvLmZpbGVzWydSRUFETUUubWQnXVxcbiAgICAgIGlmICghc3JjKSBzcmMgPSAnYCMgTk8gUkVBRE1FYCdcXG4gICAgICByZXR1cm4gbWFya2VkKHNyYylcXG4gICAgfVxcbiAgfVxcbn1cXG48L3NjcmlwdD5cXG5cXG48c3R5bGU+XFxuXFxuLm9jcmQtcHJvamVjdC1saXN0LWl0ZW0ge1xcbiAgbWF4LXdpZHRoOiAzMHJlbTtcXG4gIG1heC1oZWlnaHQ6IDMwcmVtO1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxufVxcbjwvc3R5bGU+XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG5cbi8vIGV4cG9ydHNcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXI/c291cmNlTWFwIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyP3tcInZ1ZVwiOnRydWUsXCJpZFwiOlwiZGF0YS12LWFiMTU2YThhXCIsXCJzY29wZWRcIjpmYWxzZSxcImhhc0lubGluZUNvbmZpZ1wiOmZhbHNlfSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wIS4vc3JjL09jcmRQcm9qZWN0TGlzdEl0ZW0udnVlXG4vLyBtb2R1bGUgaWQgPSAyMzlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///239\n"); +eval("exports = module.exports = __webpack_require__(22)(true);\n// imports\n\n\n// module\nexports.push([module.i, \"\\n.ocrd-project-list-item {\\n max-width: 30rem;\\n max-height: 30rem;\\n overflow: auto;\\n}\\n\", \"\", {\"version\":3,\"sources\":[\"/data/monorepo/ocrd-kwalitee/webapp/src/src/OcrdProjectListItem.vue\"],\"names\":[],\"mappings\":\";AA4EA;EACA,iBAAA;EACA,kBAAA;EACA,eAAA;CACA\",\"file\":\"OcrdProjectListItem.vue\",\"sourcesContent\":[\"<template>\\n <b-card\\n :title=\\\"repo.org_plus_name\\\"\\n tag=\\\"article\\\"\\n class=\\\"mb-5 ocrd-project-list-item\\\"\\n >\\n <b-tabs v-model=\\\"tabIndex\\\">\\n <b-tab title=\\\"README\\\">\\n <div v-html=\\\"compiledReadme\\\"></div>\\n </b-tab>\\n <b-tab title=\\\"Dockerfile\\\">\\n <vue-code-highlight>{{ repo.files.Dockerfile || '# NO DOCKERFILE' }}</vue-code-highlight>\\n </b-tab>\\n <b-tab title=\\\"Git\\\">\\n <b-card-text>\\n <p>\\n <a href=\\\"`https://pypi.org/project/${ repo.python.name }/`\\\"> <img :src=\\\"`https://img.shields.io/pypi/v/${ repo.python.name }.svg`\\\" /> </a>\\n <!-- <a href=\\\"`https://travis-ci.org/${ repo.org_plus_name }`\\\"> <img :src=\\\"`https://travis-ci.org/${ repo.org_plus_name }.svg?branch=master`\\\" /> </a> -->\\n <!-- <a href=\\\"`https://circleci.com/gh/${ repo.org_plus_name }`\\\"> <img :src=\\\"`https://circleci.com/gh/${ repo.org_plus_name }.svg?style=svg`\\\" /> </a> -->\\n <!-- <a href=\\\"`https://hub.docker.com/r/ocrd/core/tags/`\\\"> <img :src=\\\"`https://img.shields.io/docker/automated/ocrd/core.svg`\\\" /> </a> -->\\n <!-- <a href=\\\"`https://codecov.io/gh/${ repo.org_plus_name }`\\\"> <img :src=\\\"`https://codecov.io/gh/${ repo.org_plus_name }/branch/master/graph/badge.svg`\\\" /> </a> -->\\n <!-- <a href=\\\"`https://scrutinizer-ci.com/g/${ repo.org_plus_name }`\\\"> <img :src=\\\"`https://scrutinizer-ci.com/g/${ repo.org_plus_name }/badges/quality-score.png?b=master`\\\" /> </a> -->\\n <!-- <a href=\\\"`https://lgtm.com/projects/g/${ repo.org_plus_name }/alerts/`\\\"> <img :src=\\\"`https://img.shields.io/lgtm/alerts/g/${ repo.org_plus_name }.svg?logo=lgtm&logoWidth=18`\\\" /> </a> -->\\n </p>\\n <b-table v-if=\\\"repo.git\\\" :items=\\\"[repo.git]\\\"></b-table>\\n </b-card-text>\\n </b-tab>\\n\\n <b-tab title=\\\"ocrd-tool validation\\\">\\n <b-card-text>\\n <vue-code-highlight>{{ repo.ocrd_tool_validate || '# NO validation data' }}</vue-code-highlight>\\n </b-card-text>\\n </b-tab>\\n\\n <b-tab title=\\\"Python\\\">\\n <b-card-text>\\n <b-table v-if=\\\"repo.python\\\" :items=\\\"[repo.python]\\\"></b-table>\\n </b-card-text>\\n </b-tab>\\n\\n </b-tabs>\\n </b-card>\\n</template>\\n\\n<script>\\nimport marked from 'marked'\\nimport { component as VueCodeHighlight } from 'vue-code-highlight'\\n\\nexport default {\\n components: {\\n VueCodeHighlight\\n },\\n // data() {\\n // return {\\n // tabIndex: 0\\n // }\\n // },\\n props: {\\n repo: {required: true},\\n tabIndex: {default: 0},\\n },\\n computed: {\\n cleanId() {\\n return this.repo.org_plus_name.replace(/[^A-Za-z0-9]/g, '-')\\n },\\n compiledReadme() {\\n let src = this.repo.files['README.md']\\n if (!src) src = '`# NO README`'\\n return marked(src)\\n }\\n }\\n}\\n</script>\\n\\n<style>\\n\\n.ocrd-project-list-item {\\n max-width: 30rem;\\n max-height: 30rem;\\n overflow: auto;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2plY3RMaXN0SXRlbS52dWU/NmQ5MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQkFBMkIsbUJBQU8sQ0FBQyxFQUE0QztBQUMvRTs7O0FBR0E7QUFDQSxjQUFjLFFBQVMsOEJBQThCLHFCQUFxQixzQkFBc0IsbUJBQW1CLEdBQUcsVUFBVSxzSEFBc0gsTUFBTSxXQUFXLFdBQVcsVUFBVSwrWEFBK1gsOENBQThDLDRKQUE0SixtQkFBbUIsK0RBQStELG1CQUFtQix5R0FBeUcscUJBQXFCLHdEQUF3RCxxQkFBcUIscUhBQXFILHFCQUFxQix3REFBd0QscUJBQXFCLHdVQUF3VSxxQkFBcUIsd0RBQXdELHFCQUFxQiwwSEFBMEgscUJBQXFCLHdEQUF3RCxxQkFBcUIsa0hBQWtILHFCQUFxQixpRUFBaUUscUJBQXFCLG1CQUFtQixtUUFBbVEscURBQXFELHlVQUF5VSxnQ0FBZ0MsOENBQThDLGlCQUFpQiwyQkFBMkIsaUJBQWlCLGtCQUFrQixrQ0FBa0MsU0FBUyxhQUFhLGFBQWEsZUFBZSxrQkFBa0IsV0FBVyxNQUFNLGdCQUFnQixpQkFBaUIsMkVBQTJFLHlCQUF5QixzSEFBc0gsS0FBSyxHQUFHLG1EQUFtRCxxQkFBcUIsc0JBQXNCLG1CQUFtQixHQUFHLCtCQUErQjs7QUFFN2dIIiwiZmlsZSI6IjIzOS5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikodHJ1ZSk7XG4vLyBpbXBvcnRzXG5cblxuLy8gbW9kdWxlXG5leHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCJcXG4ub2NyZC1wcm9qZWN0LWxpc3QtaXRlbSB7XFxuICBtYXgtd2lkdGg6IDMwcmVtO1xcbiAgbWF4LWhlaWdodDogMzByZW07XFxuICBvdmVyZmxvdzogYXV0bztcXG59XFxuXCIsIFwiXCIsIHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIi9kYXRhL21vbm9yZXBvL29jcmQta3dhbGl0ZWUvd2ViYXBwL3NyYy9zcmMvT2NyZFByb2plY3RMaXN0SXRlbS52dWVcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIjtBQTRFQTtFQUNBLGlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxlQUFBO0NBQ0FcIixcImZpbGVcIjpcIk9jcmRQcm9qZWN0TGlzdEl0ZW0udnVlXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjx0ZW1wbGF0ZT5cXG4gIDxiLWNhcmRcXG4gICAgOnRpdGxlPVxcXCJyZXBvLm9yZ19wbHVzX25hbWVcXFwiXFxuICAgIHRhZz1cXFwiYXJ0aWNsZVxcXCJcXG4gICAgY2xhc3M9XFxcIm1iLTUgb2NyZC1wcm9qZWN0LWxpc3QtaXRlbVxcXCJcXG4gICAgPlxcbiAgICA8Yi10YWJzIHYtbW9kZWw9XFxcInRhYkluZGV4XFxcIj5cXG4gICAgICA8Yi10YWIgdGl0bGU9XFxcIlJFQURNRVxcXCI+XFxuICAgICAgICA8ZGl2IHYtaHRtbD1cXFwiY29tcGlsZWRSZWFkbWVcXFwiPjwvZGl2PlxcbiAgICAgIDwvYi10YWI+XFxuICAgICAgPGItdGFiIHRpdGxlPVxcXCJEb2NrZXJmaWxlXFxcIj5cXG4gICAgICAgIDx2dWUtY29kZS1oaWdobGlnaHQ+e3sgcmVwby5maWxlcy5Eb2NrZXJmaWxlIHx8ICcjIE5PIERPQ0tFUkZJTEUnIH19PC92dWUtY29kZS1oaWdobGlnaHQ+XFxuICAgICAgPC9iLXRhYj5cXG4gICAgICA8Yi10YWIgdGl0bGU9XFxcIkdpdFxcXCI+XFxuICAgICAgICA8Yi1jYXJkLXRleHQ+XFxuICAgICAgICAgIDxwPlxcbiAgICAgICAgICAgIDxhIGhyZWY9XFxcImBodHRwczovL3B5cGkub3JnL3Byb2plY3QvJHsgcmVwby5weXRob24ubmFtZSB9L2BcXFwiPiAgICAgICAgICAgICA8aW1nIDpzcmM9XFxcImBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi8keyByZXBvLnB5dGhvbi5uYW1lIH0uc3ZnYFxcXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz4gPC9hPlxcbiAgICAgICAgICAgIDwhLS0gPGEgaHJlZj1cXFwiYGh0dHBzOi8vdHJhdmlzLWNpLm9yZy8keyByZXBvLm9yZ19wbHVzX25hbWUgfWBcXFwiPiAgICAgICAgICAgICAgIDxpbWcgOnNyYz1cXFwiYGh0dHBzOi8vdHJhdmlzLWNpLm9yZy8keyByZXBvLm9yZ19wbHVzX25hbWUgfS5zdmc/YnJhbmNoPW1hc3RlcmBcXFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPiA8L2E+IC0tPlxcbiAgICAgICAgICAgIDwhLS0gPGEgaHJlZj1cXFwiYGh0dHBzOi8vY2lyY2xlY2kuY29tL2doLyR7IHJlcG8ub3JnX3BsdXNfbmFtZSB9YFxcXCI+ICAgICAgICAgICAgIDxpbWcgOnNyYz1cXFwiYGh0dHBzOi8vY2lyY2xlY2kuY29tL2doLyR7IHJlcG8ub3JnX3BsdXNfbmFtZSB9LnN2Zz9zdHlsZT1zdmdgXFxcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPiA8L2E+IC0tPlxcbiAgICAgICAgICAgIDwhLS0gPGEgaHJlZj1cXFwiYGh0dHBzOi8vaHViLmRvY2tlci5jb20vci9vY3JkL2NvcmUvdGFncy9gXFxcIj4gICAgICAgICAgICAgICAgICAgICA8aW1nIDpzcmM9XFxcImBodHRwczovL2ltZy5zaGllbGRzLmlvL2RvY2tlci9hdXRvbWF0ZWQvb2NyZC9jb3JlLnN2Z2BcXFwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+IDwvYT4gLS0+XFxuICAgICAgICAgICAgPCEtLSA8YSBocmVmPVxcXCJgaHR0cHM6Ly9jb2RlY292LmlvL2doLyR7IHJlcG8ub3JnX3BsdXNfbmFtZSB9YFxcXCI+ICAgICAgICAgICAgICAgPGltZyA6c3JjPVxcXCJgaHR0cHM6Ly9jb2RlY292LmlvL2doLyR7IHJlcG8ub3JnX3BsdXNfbmFtZSB9L2JyYW5jaC9tYXN0ZXIvZ3JhcGgvYmFkZ2Uuc3ZnYFxcXCIgICAgICAgICAgICAgICAgIC8+IDwvYT4gLS0+XFxuICAgICAgICAgICAgPCEtLSA8YSBocmVmPVxcXCJgaHR0cHM6Ly9zY3J1dGluaXplci1jaS5jb20vZy8keyByZXBvLm9yZ19wbHVzX25hbWUgfWBcXFwiPiAgICAgICAgPGltZyA6c3JjPVxcXCJgaHR0cHM6Ly9zY3J1dGluaXplci1jaS5jb20vZy8keyByZXBvLm9yZ19wbHVzX25hbWUgfS9iYWRnZXMvcXVhbGl0eS1zY29yZS5wbmc/Yj1tYXN0ZXJgXFxcIiAgICAgIC8+IDwvYT4gLS0+XFxuICAgICAgICAgICAgPCEtLSA8YSBocmVmPVxcXCJgaHR0cHM6Ly9sZ3RtLmNvbS9wcm9qZWN0cy9nLyR7IHJlcG8ub3JnX3BsdXNfbmFtZSB9L2FsZXJ0cy9gXFxcIj4gPGltZyA6c3JjPVxcXCJgaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9sZ3RtL2FsZXJ0cy9nLyR7IHJlcG8ub3JnX3BsdXNfbmFtZSB9LnN2Zz9sb2dvPWxndG0mYW1wO2xvZ29XaWR0aD0xOGBcXFwiIC8+IDwvYT4gLS0+XFxuICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgPGItdGFibGUgdi1pZj1cXFwicmVwby5naXRcXFwiIDppdGVtcz1cXFwiW3JlcG8uZ2l0XVxcXCI+PC9iLXRhYmxlPlxcbiAgICAgICAgPC9iLWNhcmQtdGV4dD5cXG4gICAgICA8L2ItdGFiPlxcblxcbiAgICAgIDxiLXRhYiB0aXRsZT1cXFwib2NyZC10b29sIHZhbGlkYXRpb25cXFwiPlxcbiAgICAgICAgPGItY2FyZC10ZXh0PlxcbiAgICAgICAgICA8dnVlLWNvZGUtaGlnaGxpZ2h0Pnt7IHJlcG8ub2NyZF90b29sX3ZhbGlkYXRlIHx8ICcjIE5PIHZhbGlkYXRpb24gZGF0YScgfX08L3Z1ZS1jb2RlLWhpZ2hsaWdodD5cXG4gICAgICAgIDwvYi1jYXJkLXRleHQ+XFxuICAgICAgPC9iLXRhYj5cXG5cXG4gICAgICA8Yi10YWIgdGl0bGU9XFxcIlB5dGhvblxcXCI+XFxuICAgICAgICA8Yi1jYXJkLXRleHQ+XFxuICAgICAgICAgIDxiLXRhYmxlIHYtaWY9XFxcInJlcG8ucHl0aG9uXFxcIiA6aXRlbXM9XFxcIltyZXBvLnB5dGhvbl1cXFwiPjwvYi10YWJsZT5cXG4gICAgICAgIDwvYi1jYXJkLXRleHQ+XFxuICAgICAgPC9iLXRhYj5cXG5cXG4gICAgPC9iLXRhYnM+XFxuICA8L2ItY2FyZD5cXG48L3RlbXBsYXRlPlxcblxcbjxzY3JpcHQ+XFxuaW1wb3J0IG1hcmtlZCBmcm9tICdtYXJrZWQnXFxuaW1wb3J0IHsgY29tcG9uZW50IGFzIFZ1ZUNvZGVIaWdobGlnaHQgfSBmcm9tICd2dWUtY29kZS1oaWdobGlnaHQnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgY29tcG9uZW50czoge1xcbiAgICBWdWVDb2RlSGlnaGxpZ2h0XFxuICB9LFxcbiAgLy8gIGRhdGEoKSB7XFxuICAvLyAgICByZXR1cm4ge1xcbiAgLy8gICAgICB0YWJJbmRleDogMFxcbiAgLy8gICAgfVxcbiAgLy8gIH0sXFxuICBwcm9wczoge1xcbiAgICByZXBvOiB7cmVxdWlyZWQ6IHRydWV9LFxcbiAgICB0YWJJbmRleDoge2RlZmF1bHQ6IDB9LFxcbiAgfSxcXG4gIGNvbXB1dGVkOiB7XFxuICAgIGNsZWFuSWQoKSB7XFxuICAgICAgcmV0dXJuIHRoaXMucmVwby5vcmdfcGx1c19uYW1lLnJlcGxhY2UoL1teQS1aYS16MC05XS9nLCAnLScpXFxuICAgIH0sXFxuICAgIGNvbXBpbGVkUmVhZG1lKCkge1xcbiAgICAgIGxldCBzcmMgPSB0aGlzLnJlcG8uZmlsZXNbJ1JFQURNRS5tZCddXFxuICAgICAgaWYgKCFzcmMpIHNyYyA9ICdgIyBOTyBSRUFETUVgJ1xcbiAgICAgIHJldHVybiBtYXJrZWQoc3JjKVxcbiAgICB9XFxuICB9XFxufVxcbjwvc2NyaXB0PlxcblxcbjxzdHlsZT5cXG5cXG4ub2NyZC1wcm9qZWN0LWxpc3QtaXRlbSB7XFxuICBtYXgtd2lkdGg6IDMwcmVtO1xcbiAgbWF4LWhlaWdodDogMzByZW07XFxuICBvdmVyZmxvdzogYXV0bztcXG59XFxuPC9zdHlsZT5cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcblxuLy8gZXhwb3J0c1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlcj9zb3VyY2VNYXAhLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXI/e1widnVlXCI6dHJ1ZSxcImlkXCI6XCJkYXRhLXYtYWIxNTZhOGFcIixcInNjb3BlZFwiOmZhbHNlLFwiaGFzSW5saW5lQ29uZmlnXCI6ZmFsc2V9IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9zcmMvT2NyZFByb2plY3RMaXN0SXRlbS52dWVcbi8vIG1vZHVsZSBpZCA9IDIzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///239\n"); /***/ }), /* 240 */ @@ -1753,42 +1753,42 @@ eval("module.exports = function(originalModule) {\r\n\tif(!originalModule.webpac /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"b-card\",\n {\n staticClass: \"mb-5 ocrd-project-list-item\",\n attrs: { title: _vm.repo.org_plus_name, tag: \"article\" }\n },\n [\n _c(\n \"b-tabs\",\n [\n _c(\"b-tab\", { attrs: { title: \"README\" } }, [\n _c(\"div\", { domProps: { innerHTML: _vm._s(_vm.compiledReadme) } })\n ]),\n _vm._v(\" \"),\n _c(\n \"b-tab\",\n { attrs: { title: \"Dockerfile\" } },\n [\n _c(\"vue-code-highlight\", [\n _vm._v(_vm._s(_vm.repo.files.Dockerfile || \"# NO DOCKERFILE\"))\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"b-tab\",\n { attrs: { title: \"Git\" } },\n [\n _c(\n \"b-card-text\",\n [\n _c(\"p\", [\n _c(\n \"a\",\n {\n attrs: {\n href:\n \"`https://pypi.org/project/${ repo.python.name }/`\"\n }\n },\n [\n _c(\"img\", {\n attrs: {\n src:\n \"https://img.shields.io/pypi/v/\" +\n _vm.repo.python.name +\n \".svg\"\n }\n })\n ]\n )\n ]),\n _vm._v(\" \"),\n _vm.repo.git\n ? _c(\"b-table\", { attrs: { items: [_vm.repo.git] } })\n : _vm._e()\n ],\n 1\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"b-tab\",\n { attrs: { title: \"ocrd-tool validation\" } },\n [\n _c(\n \"b-card-text\",\n [\n _c(\"vue-code-highlight\", [\n _vm._v(\n _vm._s(\n _vm.repo.ocrd_tool_validate || \"# NO validation data\"\n )\n )\n ])\n ],\n 1\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"b-tab\",\n { attrs: { title: \"Python\" } },\n [\n _c(\n \"b-card-text\",\n [\n _vm.repo.python\n ? _c(\"b-table\", { attrs: { items: [_vm.repo.python] } })\n : _vm._e()\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-ab156a8a\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2plY3RMaXN0SXRlbS52dWU/NzUzYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixTQUFTLGtCQUFrQixFQUFFO0FBQ3BELHVCQUF1QixZQUFZLHdDQUF3QyxFQUFFO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxTQUFTLHNCQUFzQixFQUFFO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxTQUFTLGVBQWUsRUFBRTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCxtQkFBbUI7QUFDNUU7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLFNBQVMsd0JBQXdCLEVBQUU7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFNBQVMsZ0NBQWdDLEVBQUU7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsU0FBUyxrQkFBa0IsRUFBRTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLFNBQVMsMkJBQTJCLEVBQUU7QUFDM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDRixrRUFBUztBQUN4QixJQUFJLEtBQVU7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjI0My5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJiLWNhcmRcIixcbiAgICB7XG4gICAgICBzdGF0aWNDbGFzczogXCJtYi01IG9jcmQtcHJvamVjdC1saXN0LWl0ZW1cIixcbiAgICAgIGF0dHJzOiB7IHRpdGxlOiBfdm0ucmVwby5vcmdfcGx1c19uYW1lLCB0YWc6IFwiYXJ0aWNsZVwiIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcImItdGFic1wiLFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJiLXRhYlwiLCB7IGF0dHJzOiB7IHRpdGxlOiBcIlJFQURNRVwiIH0gfSwgW1xuICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBkb21Qcm9wczogeyBpbm5lckhUTUw6IF92bS5fcyhfdm0uY29tcGlsZWRSZWFkbWUpIH0gfSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJiLXRhYlwiLFxuICAgICAgICAgICAgeyBhdHRyczogeyB0aXRsZTogXCJEb2NrZXJmaWxlXCIgfSB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcInZ1ZS1jb2RlLWhpZ2hsaWdodFwiLCBbXG4gICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0ucmVwby5maWxlcy5Eb2NrZXJmaWxlIHx8IFwiIyBOTyBET0NLRVJGSUxFXCIpKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImItdGFiXCIsXG4gICAgICAgICAgICB7IGF0dHJzOiB7IHRpdGxlOiBcIkdpdFwiIH0gfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJiLWNhcmQtdGV4dFwiLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwicFwiLCBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwiYVwiLFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJgaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0LyR7IHJlcG8ucHl0aG9uLm5hbWUgfS9gXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwiaW1nXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L1wiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5yZXBvLnB5dGhvbi5uYW1lICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfdm0ucmVwby5naXRcbiAgICAgICAgICAgICAgICAgICAgPyBfYyhcImItdGFibGVcIiwgeyBhdHRyczogeyBpdGVtczogW192bS5yZXBvLmdpdF0gfSB9KVxuICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJiLXRhYlwiLFxuICAgICAgICAgICAgeyBhdHRyczogeyB0aXRsZTogXCJvY3JkLXRvb2wgdmFsaWRhdGlvblwiIH0gfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJiLWNhcmQtdGV4dFwiLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwidnVlLWNvZGUtaGlnaGxpZ2h0XCIsIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5yZXBvLm9jcmRfdG9vbF92YWxpZGF0ZSB8fCBcIiMgTk8gdmFsaWRhdGlvbiBkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJiLXRhYlwiLFxuICAgICAgICAgICAgeyBhdHRyczogeyB0aXRsZTogXCJQeXRob25cIiB9IH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwiYi1jYXJkLXRleHRcIixcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfdm0ucmVwby5weXRob25cbiAgICAgICAgICAgICAgICAgICAgPyBfYyhcImItdGFibGVcIiwgeyBhdHRyczogeyBpdGVtczogW192bS5yZXBvLnB5dGhvbl0gfSB9KVxuICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICBdLFxuICAgICAgICAxXG4gICAgICApXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG52YXIgZXNFeHBvcnRzID0geyByZW5kZXI6IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnMgfVxuZXhwb3J0IGRlZmF1bHQgZXNFeHBvcnRzXG5pZiAobW9kdWxlLmhvdCkge1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmIChtb2R1bGUuaG90LmRhdGEpIHtcbiAgICByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpICAgICAgLnJlcmVuZGVyKFwiZGF0YS12LWFiMTU2YThhXCIsIGVzRXhwb3J0cylcbiAgfVxufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3RlbXBsYXRlLWNvbXBpbGVyP3tcImlkXCI6XCJkYXRhLXYtYWIxNTZhOGFcIixcImhhc1Njb3BlZFwiOmZhbHNlLFwiYnVibGVcIjp7XCJ0cmFuc2Zvcm1zXCI6e319fSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9zcmMvT2NyZFByb2plY3RMaXN0SXRlbS52dWVcbi8vIG1vZHVsZSBpZCA9IDI0M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///243\n"); +eval("var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"b-card\",\n {\n staticClass: \"mb-5 ocrd-project-list-item\",\n attrs: { title: _vm.repo.org_plus_name, tag: \"article\" }\n },\n [\n _c(\n \"b-tabs\",\n {\n model: {\n value: _vm.tabIndex,\n callback: function($$v) {\n _vm.tabIndex = $$v\n },\n expression: \"tabIndex\"\n }\n },\n [\n _c(\"b-tab\", { attrs: { title: \"README\" } }, [\n _c(\"div\", { domProps: { innerHTML: _vm._s(_vm.compiledReadme) } })\n ]),\n _vm._v(\" \"),\n _c(\n \"b-tab\",\n { attrs: { title: \"Dockerfile\" } },\n [\n _c(\"vue-code-highlight\", [\n _vm._v(_vm._s(_vm.repo.files.Dockerfile || \"# NO DOCKERFILE\"))\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"b-tab\",\n { attrs: { title: \"Git\" } },\n [\n _c(\n \"b-card-text\",\n [\n _c(\"p\", [\n _c(\n \"a\",\n {\n attrs: {\n href:\n \"`https://pypi.org/project/${ repo.python.name }/`\"\n }\n },\n [\n _c(\"img\", {\n attrs: {\n src:\n \"https://img.shields.io/pypi/v/\" +\n _vm.repo.python.name +\n \".svg\"\n }\n })\n ]\n )\n ]),\n _vm._v(\" \"),\n _vm.repo.git\n ? _c(\"b-table\", { attrs: { items: [_vm.repo.git] } })\n : _vm._e()\n ],\n 1\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"b-tab\",\n { attrs: { title: \"ocrd-tool validation\" } },\n [\n _c(\n \"b-card-text\",\n [\n _c(\"vue-code-highlight\", [\n _vm._v(\n _vm._s(\n _vm.repo.ocrd_tool_validate || \"# NO validation data\"\n )\n )\n ])\n ],\n 1\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"b-tab\",\n { attrs: { title: \"Python\" } },\n [\n _c(\n \"b-card-text\",\n [\n _vm.repo.python\n ? _c(\"b-table\", { attrs: { items: [_vm.repo.python] } })\n : _vm._e()\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-ab156a8a\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2plY3RMaXN0SXRlbS52dWU/NzUzYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSx1QkFBdUIsU0FBUyxrQkFBa0IsRUFBRTtBQUNwRCx1QkFBdUIsWUFBWSx3Q0FBd0MsRUFBRTtBQUM3RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsU0FBUyxzQkFBc0IsRUFBRTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsU0FBUyxlQUFlLEVBQUU7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQsbUJBQW1CO0FBQzVFO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxTQUFTLHdCQUF3QixFQUFFO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxTQUFTLGdDQUFnQyxFQUFFO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFNBQVMsa0JBQWtCLEVBQUU7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxTQUFTLDJCQUEyQixFQUFFO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ0Ysa0VBQVM7QUFDeEIsSUFBSSxLQUFVO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIyNDMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiYi1jYXJkXCIsXG4gICAge1xuICAgICAgc3RhdGljQ2xhc3M6IFwibWItNSBvY3JkLXByb2plY3QtbGlzdC1pdGVtXCIsXG4gICAgICBhdHRyczogeyB0aXRsZTogX3ZtLnJlcG8ub3JnX3BsdXNfbmFtZSwgdGFnOiBcImFydGljbGVcIiB9XG4gICAgfSxcbiAgICBbXG4gICAgICBfYyhcbiAgICAgICAgXCJiLXRhYnNcIixcbiAgICAgICAge1xuICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICB2YWx1ZTogX3ZtLnRhYkluZGV4LFxuICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICBfdm0udGFiSW5kZXggPSAkJHZcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleHByZXNzaW9uOiBcInRhYkluZGV4XCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcImItdGFiXCIsIHsgYXR0cnM6IHsgdGl0bGU6IFwiUkVBRE1FXCIgfSB9LCBbXG4gICAgICAgICAgICBfYyhcImRpdlwiLCB7IGRvbVByb3BzOiB7IGlubmVySFRNTDogX3ZtLl9zKF92bS5jb21waWxlZFJlYWRtZSkgfSB9KVxuICAgICAgICAgIF0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImItdGFiXCIsXG4gICAgICAgICAgICB7IGF0dHJzOiB7IHRpdGxlOiBcIkRvY2tlcmZpbGVcIiB9IH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFwidnVlLWNvZGUtaGlnaGxpZ2h0XCIsIFtcbiAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5yZXBvLmZpbGVzLkRvY2tlcmZpbGUgfHwgXCIjIE5PIERPQ0tFUkZJTEVcIikpXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgICksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiYi10YWJcIixcbiAgICAgICAgICAgIHsgYXR0cnM6IHsgdGl0bGU6IFwiR2l0XCIgfSB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcImItY2FyZC10ZXh0XCIsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJwXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJhXCIsXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImBodHRwczovL3B5cGkub3JnL3Byb2plY3QvJHsgcmVwby5weXRob24ubmFtZSB9L2BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJpbWdcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnJlcG8ucHl0aG9uLm5hbWUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIuc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgIF92bS5yZXBvLmdpdFxuICAgICAgICAgICAgICAgICAgICA/IF9jKFwiYi10YWJsZVwiLCB7IGF0dHJzOiB7IGl0ZW1zOiBbX3ZtLnJlcG8uZ2l0XSB9IH0pXG4gICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImItdGFiXCIsXG4gICAgICAgICAgICB7IGF0dHJzOiB7IHRpdGxlOiBcIm9jcmQtdG9vbCB2YWxpZGF0aW9uXCIgfSB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcImItY2FyZC10ZXh0XCIsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXCJ2dWUtY29kZS1oaWdobGlnaHRcIiwgW1xuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnJlcG8ub2NyZF90b29sX3ZhbGlkYXRlIHx8IFwiIyBOTyB2YWxpZGF0aW9uIGRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImItdGFiXCIsXG4gICAgICAgICAgICB7IGF0dHJzOiB7IHRpdGxlOiBcIlB5dGhvblwiIH0gfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJiLWNhcmQtdGV4dFwiLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF92bS5yZXBvLnB5dGhvblxuICAgICAgICAgICAgICAgICAgICA/IF9jKFwiYi10YWJsZVwiLCB7IGF0dHJzOiB7IGl0ZW1zOiBbX3ZtLnJlcG8ucHl0aG9uXSB9IH0pXG4gICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApXG4gICAgICAgIF0sXG4gICAgICAgIDFcbiAgICAgIClcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcbnZhciBlc0V4cG9ydHMgPSB7IHJlbmRlcjogcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZucyB9XG5leHBvcnQgZGVmYXVsdCBlc0V4cG9ydHNcbmlmIChtb2R1bGUuaG90KSB7XG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKG1vZHVsZS5ob3QuZGF0YSkge1xuICAgIHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIikgICAgICAucmVyZW5kZXIoXCJkYXRhLXYtYWIxNTZhOGFcIiwgZXNFeHBvcnRzKVxuICB9XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXI/e1wiaWRcIjpcImRhdGEtdi1hYjE1NmE4YVwiLFwiaGFzU2NvcGVkXCI6ZmFsc2UsXCJidWJsZVwiOntcInRyYW5zZm9ybXNcIjp7fX19IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL3NyYy9PY3JkUHJvamVjdExpc3RJdGVtLnZ1ZVxuLy8gbW9kdWxlIGlkID0gMjQzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///243\n"); /***/ }), /* 244 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\n \"b-row\",\n _vm._l(_vm.repos, function(repo) {\n return _c(\"ocrd-project-list-item\", {\n key: repo.org_plus_name,\n attrs: { repo: repo }\n })\n }),\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-a15c35f0\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2plY3RMaXN0LnZ1ZT9kYTZjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQixXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDRixrRUFBUztBQUN4QixJQUFJLEtBQVU7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjI0NC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICBbXG4gICAgICBfYyhcbiAgICAgICAgXCJiLXJvd1wiLFxuICAgICAgICBfdm0uX2woX3ZtLnJlcG9zLCBmdW5jdGlvbihyZXBvKSB7XG4gICAgICAgICAgcmV0dXJuIF9jKFwib2NyZC1wcm9qZWN0LWxpc3QtaXRlbVwiLCB7XG4gICAgICAgICAgICBrZXk6IHJlcG8ub3JnX3BsdXNfbmFtZSxcbiAgICAgICAgICAgIGF0dHJzOiB7IHJlcG86IHJlcG8gfVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pLFxuICAgICAgICAxXG4gICAgICApXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG52YXIgZXNFeHBvcnRzID0geyByZW5kZXI6IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnMgfVxuZXhwb3J0IGRlZmF1bHQgZXNFeHBvcnRzXG5pZiAobW9kdWxlLmhvdCkge1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmIChtb2R1bGUuaG90LmRhdGEpIHtcbiAgICByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpICAgICAgLnJlcmVuZGVyKFwiZGF0YS12LWExNWMzNWYwXCIsIGVzRXhwb3J0cylcbiAgfVxufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3RlbXBsYXRlLWNvbXBpbGVyP3tcImlkXCI6XCJkYXRhLXYtYTE1YzM1ZjBcIixcImhhc1Njb3BlZFwiOmZhbHNlLFwiYnVibGVcIjp7XCJ0cmFuc2Zvcm1zXCI6e319fSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9zcmMvT2NyZFByb2plY3RMaXN0LnZ1ZVxuLy8gbW9kdWxlIGlkID0gMjQ0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///244\n"); +eval("var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\n \"b-row\",\n [\n _c(\n \"b-button\",\n {\n directives: [\n {\n name: \"b-toggle\",\n rawName: \"v-b-toggle.project-controls\",\n modifiers: { \"project-controls\": true }\n }\n ],\n staticClass: \"m-1\"\n },\n [_vm._v(\"Toggle Controls\")]\n ),\n _vm._v(\" \"),\n _c(\n \"b-collapse\",\n { attrs: { id: \"project-controls\" } },\n [\n _c(\n \"b-container\",\n [\n _c(\"b-row\", [\n _vm._v(\"\\n Filter by name: \"),\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.name_filter,\n expression: \"name_filter\"\n }\n ],\n attrs: { type: \"text\" },\n domProps: { value: _vm.name_filter },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.name_filter = $event.target.value\n }\n }\n }),\n _vm._v(\n \" (Showing \" +\n _vm._s(_vm.filtered_repos.length) +\n \" of \" +\n _vm._s(_vm.repos.length) +\n \" repos)\\n \"\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"b-row\",\n [\n _vm._v(\"\\n Tabs: \"),\n _c(\n \"b-button\",\n {\n on: {\n click: function($event) {\n _vm.tabIndex -= 1\n }\n }\n },\n [_vm._v(\"<\")]\n ),\n _vm._v(\" \"),\n _c(\n \"b-button\",\n {\n on: {\n click: function($event) {\n _vm.tabIndex += 1\n }\n }\n },\n [_vm._v(\">\")]\n )\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"b-row\",\n _vm._l(_vm.filtered_repos, function(repo, idx) {\n return _c(\"ocrd-project-list-item\", {\n key: repo.org_plus_name,\n attrs: { repo: repo, tabIndex: _vm.tabIndex }\n })\n }),\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-a15c35f0\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2NyZFByb2plY3RMaXN0LnZ1ZT9kYTZjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFNBQVMseUJBQXlCLEVBQUU7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLGVBQWU7QUFDN0MsaUNBQWlDLHlCQUF5QjtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEIsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ0Ysa0VBQVM7QUFDeEIsSUFBSSxLQUFVO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIyNDQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwiYi1yb3dcIixcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJiLWJ1dHRvblwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogXCJiLXRvZ2dsZVwiLFxuICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LWItdG9nZ2xlLnByb2plY3QtY29udHJvbHNcIixcbiAgICAgICAgICAgICAgICAgIG1vZGlmaWVyczogeyBcInByb2plY3QtY29udHJvbHNcIjogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtLTFcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtfdm0uX3YoXCJUb2dnbGUgQ29udHJvbHNcIildXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJiLWNvbGxhcHNlXCIsXG4gICAgICAgICAgICB7IGF0dHJzOiB7IGlkOiBcInByb2plY3QtY29udHJvbHNcIiB9IH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwiYi1jb250YWluZXJcIixcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcImItcm93XCIsIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiXFxuICAgICAgICAgIEZpbHRlciBieSBuYW1lOiBcIiksXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5uYW1lX2ZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJuYW1lX2ZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyB0eXBlOiBcInRleHRcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0ubmFtZV9maWx0ZXIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0ubmFtZV9maWx0ZXIgPSAkZXZlbnQudGFyZ2V0LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgIFwiIChTaG93aW5nIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhfdm0uZmlsdGVyZWRfcmVwb3MubGVuZ3RoKSArXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiBvZiBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLnJlcG9zLmxlbmd0aCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgXCIgcmVwb3MpXFxuICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJiLXJvd1wiLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiXFxuICAgICAgICAgIFRhYnM6IFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYi1idXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0udGFiSW5kZXggLT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoXCI8XCIpXVxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYi1idXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0udGFiSW5kZXggKz0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoXCI+XCIpXVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgXSxcbiAgICAgICAgMVxuICAgICAgKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcbiAgICAgICAgXCJiLXJvd1wiLFxuICAgICAgICBfdm0uX2woX3ZtLmZpbHRlcmVkX3JlcG9zLCBmdW5jdGlvbihyZXBvLCBpZHgpIHtcbiAgICAgICAgICByZXR1cm4gX2MoXCJvY3JkLXByb2plY3QtbGlzdC1pdGVtXCIsIHtcbiAgICAgICAgICAgIGtleTogcmVwby5vcmdfcGx1c19uYW1lLFxuICAgICAgICAgICAgYXR0cnM6IHsgcmVwbzogcmVwbywgdGFiSW5kZXg6IF92bS50YWJJbmRleCB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSksXG4gICAgICAgIDFcbiAgICAgIClcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcbnZhciBlc0V4cG9ydHMgPSB7IHJlbmRlcjogcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZucyB9XG5leHBvcnQgZGVmYXVsdCBlc0V4cG9ydHNcbmlmIChtb2R1bGUuaG90KSB7XG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKG1vZHVsZS5ob3QuZGF0YSkge1xuICAgIHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIikgICAgICAucmVyZW5kZXIoXCJkYXRhLXYtYTE1YzM1ZjBcIiwgZXNFeHBvcnRzKVxuICB9XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXI/e1wiaWRcIjpcImRhdGEtdi1hMTVjMzVmMFwiLFwiaGFzU2NvcGVkXCI6ZmFsc2UsXCJidWJsZVwiOntcInRyYW5zZm9ybXNcIjp7fX19IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL3NyYy9PY3JkUHJvamVjdExpc3QudnVlXG4vLyBtb2R1bGUgaWQgPSAyNDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///244\n"); /***/ }), /* 245 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"b-container\",\n { attrs: { fluid: \"\" } },\n [\n _c(\"b-row\", [\n _c(\"button\", { on: { click: _vm.fetchRepoData } }, [_vm._v(\"Fetch!\")])\n ]),\n _vm._v(\" \"),\n _c(\n \"b-tabs\",\n [\n _c(\n \"b-tab\",\n { attrs: { title: \"Processors\" } },\n [\n _c(\"ocrd-processor-list\", {\n attrs: {\n processors: _vm.processors,\n steps: _vm.steps,\n step_filter: _vm.step_filter,\n categories: _vm.categories,\n category_filter: _vm.category_filter\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"b-tab\",\n { attrs: { title: \"Projects\" } },\n [_c(\"ocrd-project-list\", { attrs: { repos: _vm.repos } })],\n 1\n )\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-7ba5bd90\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvQXBwLnZ1ZT8zYTI1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssU0FBUyxZQUFZLEVBQUU7QUFDNUI7QUFDQTtBQUNBLHNCQUFzQixNQUFNLDJCQUEyQixFQUFFO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxTQUFTLHNCQUFzQixFQUFFO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFNBQVMsb0JBQW9CLEVBQUU7QUFDNUMsc0NBQXNDLFNBQVMsbUJBQW1CLEVBQUU7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNGLGtFQUFTO0FBQ3hCLElBQUksS0FBVTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMjQ1LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImItY29udGFpbmVyXCIsXG4gICAgeyBhdHRyczogeyBmbHVpZDogXCJcIiB9IH0sXG4gICAgW1xuICAgICAgX2MoXCJiLXJvd1wiLCBbXG4gICAgICAgIF9jKFwiYnV0dG9uXCIsIHsgb246IHsgY2xpY2s6IF92bS5mZXRjaFJlcG9EYXRhIH0gfSwgW192bS5fdihcIkZldGNoIVwiKV0pXG4gICAgICBdKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcbiAgICAgICAgXCJiLXRhYnNcIixcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJiLXRhYlwiLFxuICAgICAgICAgICAgeyBhdHRyczogeyB0aXRsZTogXCJQcm9jZXNzb3JzXCIgfSB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcIm9jcmQtcHJvY2Vzc29yLWxpc3RcIiwge1xuICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzOiBfdm0ucHJvY2Vzc29ycyxcbiAgICAgICAgICAgICAgICAgIHN0ZXBzOiBfdm0uc3RlcHMsXG4gICAgICAgICAgICAgICAgICBzdGVwX2ZpbHRlcjogX3ZtLnN0ZXBfZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgY2F0ZWdvcmllczogX3ZtLmNhdGVnb3JpZXMsXG4gICAgICAgICAgICAgICAgICBjYXRlZ29yeV9maWx0ZXI6IF92bS5jYXRlZ29yeV9maWx0ZXJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgICksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiYi10YWJcIixcbiAgICAgICAgICAgIHsgYXR0cnM6IHsgdGl0bGU6IFwiUHJvamVjdHNcIiB9IH0sXG4gICAgICAgICAgICBbX2MoXCJvY3JkLXByb2plY3QtbGlzdFwiLCB7IGF0dHJzOiB7IHJlcG9zOiBfdm0ucmVwb3MgfSB9KV0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICBdLFxuICAgICAgICAxXG4gICAgICApXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG52YXIgZXNFeHBvcnRzID0geyByZW5kZXI6IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnMgfVxuZXhwb3J0IGRlZmF1bHQgZXNFeHBvcnRzXG5pZiAobW9kdWxlLmhvdCkge1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmIChtb2R1bGUuaG90LmRhdGEpIHtcbiAgICByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpICAgICAgLnJlcmVuZGVyKFwiZGF0YS12LTdiYTViZDkwXCIsIGVzRXhwb3J0cylcbiAgfVxufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3RlbXBsYXRlLWNvbXBpbGVyP3tcImlkXCI6XCJkYXRhLXYtN2JhNWJkOTBcIixcImhhc1Njb3BlZFwiOmZhbHNlLFwiYnVibGVcIjp7XCJ0cmFuc2Zvcm1zXCI6e319fSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9zcmMvQXBwLnZ1ZVxuLy8gbW9kdWxlIGlkID0gMjQ1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///245\n"); +eval("var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"b-container\",\n { attrs: { fluid: \"\" } },\n [\n _c(\"b-row\", [\n _c(\"button\", { on: { click: _vm.fetchRepoData } }, [_vm._v(\"Fetch!\")])\n ]),\n _vm._v(\" \"),\n _c(\n \"b-tabs\",\n [\n _c(\n \"b-tab\",\n { attrs: { title: \"Processors\" } },\n [\n _c(\"ocrd-processor-list\", {\n attrs: {\n processors: _vm.processors,\n steps: _vm.steps,\n step_filter: _vm.step_filter,\n categories: _vm.categories,\n category_filter: _vm.category_filter\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"b-tab\",\n { attrs: { active: \"\", title: \"Projects\" } },\n [_c(\"ocrd-project-list\", { attrs: { repos: _vm.repos } })],\n 1\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"b-modal\",\n { attrs: { id: \"project-modal\" } },\n [\n _c(\"ocrd-project-list-item\", {\n attrs: { repo: _vm.repos[_vm.modalProjectIndex] }\n })\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-7ba5bd90\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvQXBwLnZ1ZT8zYTI1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssU0FBUyxZQUFZLEVBQUU7QUFDNUI7QUFDQTtBQUNBLHNCQUFzQixNQUFNLDJCQUEyQixFQUFFO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxTQUFTLHNCQUFzQixFQUFFO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFNBQVMsZ0NBQWdDLEVBQUU7QUFDeEQsc0NBQXNDLFNBQVMsbUJBQW1CLEVBQUU7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsU0FBUyxzQkFBc0IsRUFBRTtBQUMxQztBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDRixrRUFBUztBQUN4QixJQUFJLEtBQVU7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjI0NS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJiLWNvbnRhaW5lclwiLFxuICAgIHsgYXR0cnM6IHsgZmx1aWQ6IFwiXCIgfSB9LFxuICAgIFtcbiAgICAgIF9jKFwiYi1yb3dcIiwgW1xuICAgICAgICBfYyhcImJ1dHRvblwiLCB7IG9uOiB7IGNsaWNrOiBfdm0uZmV0Y2hSZXBvRGF0YSB9IH0sIFtfdm0uX3YoXCJGZXRjaCFcIildKVxuICAgICAgXSksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXG4gICAgICAgIFwiYi10YWJzXCIsXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiYi10YWJcIixcbiAgICAgICAgICAgIHsgYXR0cnM6IHsgdGl0bGU6IFwiUHJvY2Vzc29yc1wiIH0gfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXCJvY3JkLXByb2Nlc3Nvci1saXN0XCIsIHtcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yczogX3ZtLnByb2Nlc3NvcnMsXG4gICAgICAgICAgICAgICAgICBzdGVwczogX3ZtLnN0ZXBzLFxuICAgICAgICAgICAgICAgICAgc3RlcF9maWx0ZXI6IF92bS5zdGVwX2ZpbHRlcixcbiAgICAgICAgICAgICAgICAgIGNhdGVnb3JpZXM6IF92bS5jYXRlZ29yaWVzLFxuICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlfZmlsdGVyOiBfdm0uY2F0ZWdvcnlfZmlsdGVyXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImItdGFiXCIsXG4gICAgICAgICAgICB7IGF0dHJzOiB7IGFjdGl2ZTogXCJcIiwgdGl0bGU6IFwiUHJvamVjdHNcIiB9IH0sXG4gICAgICAgICAgICBbX2MoXCJvY3JkLXByb2plY3QtbGlzdFwiLCB7IGF0dHJzOiB7IHJlcG9zOiBfdm0ucmVwb3MgfSB9KV0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICBdLFxuICAgICAgICAxXG4gICAgICApLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFxuICAgICAgICBcImItbW9kYWxcIixcbiAgICAgICAgeyBhdHRyczogeyBpZDogXCJwcm9qZWN0LW1vZGFsXCIgfSB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJvY3JkLXByb2plY3QtbGlzdC1pdGVtXCIsIHtcbiAgICAgICAgICAgIGF0dHJzOiB7IHJlcG86IF92bS5yZXBvc1tfdm0ubW9kYWxQcm9qZWN0SW5kZXhdIH1cbiAgICAgICAgICB9KVxuICAgICAgICBdLFxuICAgICAgICAxXG4gICAgICApXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG52YXIgZXNFeHBvcnRzID0geyByZW5kZXI6IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnMgfVxuZXhwb3J0IGRlZmF1bHQgZXNFeHBvcnRzXG5pZiAobW9kdWxlLmhvdCkge1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmIChtb2R1bGUuaG90LmRhdGEpIHtcbiAgICByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpICAgICAgLnJlcmVuZGVyKFwiZGF0YS12LTdiYTViZDkwXCIsIGVzRXhwb3J0cylcbiAgfVxufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3RlbXBsYXRlLWNvbXBpbGVyP3tcImlkXCI6XCJkYXRhLXYtN2JhNWJkOTBcIixcImhhc1Njb3BlZFwiOmZhbHNlLFwiYnVibGVcIjp7XCJ0cmFuc2Zvcm1zXCI6e319fSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9zcmMvQXBwLnZ1ZVxuLy8gbW9kdWxlIGlkID0gMjQ1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///245\n"); /***/ }), /* 246 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export install */\n/* unused harmony export NAME */\n/* unused harmony export BootstrapVue */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_plugins__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components__ = __webpack_require__(248);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__directives__ = __webpack_require__(273);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__bv_config__ = __webpack_require__(275);\n/* unused harmony reexport BVConfigPlugin */\n/* unused harmony reexport BVConfig */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__components_modal_helpers_bv_modal__ = __webpack_require__(171);\n/* unused harmony reexport BVModalPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__components_toast_helpers_bv_toast__ = __webpack_require__(215);\n/* unused harmony reexport BVToastPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__components_alert__ = __webpack_require__(100);\n/* unused harmony reexport AlertPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__components_alert_alert__ = __webpack_require__(101);\n/* unused harmony reexport BAlert */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__components_badge__ = __webpack_require__(102);\n/* unused harmony reexport BadgePlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__components_badge_badge__ = __webpack_require__(103);\n/* unused harmony reexport BBadge */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__components_breadcrumb__ = __webpack_require__(106);\n/* unused harmony reexport BreadcrumbPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__components_breadcrumb_breadcrumb__ = __webpack_require__(107);\n/* unused harmony reexport BBreadcrumb */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__components_breadcrumb_breadcrumb_item__ = __webpack_require__(54);\n/* unused harmony reexport BBreadcrumbItem */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__components_button__ = __webpack_require__(109);\n/* unused harmony reexport ButtonPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__components_button_button__ = __webpack_require__(34);\n/* unused harmony reexport BButton */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__components_button_button_close__ = __webpack_require__(31);\n/* unused harmony reexport BButtonClose */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__components_button_group__ = __webpack_require__(110);\n/* unused harmony reexport ButtonGroupPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__components_button_group_button_group__ = __webpack_require__(111);\n/* unused harmony reexport BButtonGroup */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__components_button_toolbar__ = __webpack_require__(112);\n/* unused harmony reexport ButtonToolbarPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__components_button_toolbar_button_toolbar__ = __webpack_require__(113);\n/* unused harmony reexport BButtonToolbar */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__components_card__ = __webpack_require__(114);\n/* unused harmony reexport CardPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__components_card_card__ = __webpack_require__(115);\n/* unused harmony reexport BCard */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__components_card_card_body__ = __webpack_require__(56);\n/* unused harmony reexport BCardBody */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__components_card_card_footer__ = __webpack_require__(60);\n/* unused harmony reexport BCardFooter */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__components_card_card_group__ = __webpack_require__(119);\n/* unused harmony reexport BCardGroup */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__components_card_card_header__ = __webpack_require__(59);\n/* unused harmony reexport BCardHeader */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__components_card_card_img__ = __webpack_require__(61);\n/* unused harmony reexport BCardImg */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__components_card_card_img_lazy__ = __webpack_require__(116);\n/* unused harmony reexport BCardImgLazy */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__components_card_card_sub_title__ = __webpack_require__(58);\n/* unused harmony reexport BCardSubTitle */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__components_card_card_text__ = __webpack_require__(118);\n/* unused harmony reexport BCardText */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__components_card_card_title__ = __webpack_require__(57);\n/* unused harmony reexport BCardTitle */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__components_carousel__ = __webpack_require__(120);\n/* unused harmony reexport CarouselPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__components_carousel_carousel__ = __webpack_require__(121);\n/* unused harmony reexport BCarousel */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__components_carousel_carousel_slide__ = __webpack_require__(122);\n/* unused harmony reexport BCarouselSlide */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__components_collapse__ = __webpack_require__(63);\n/* unused harmony reexport CollapsePlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__components_collapse_collapse__ = __webpack_require__(123);\n/* unused harmony reexport BCollapse */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__components_dropdown__ = __webpack_require__(40);\n/* unused harmony reexport DropdownPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__components_dropdown_dropdown__ = __webpack_require__(65);\n/* unused harmony reexport BDropdown */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__components_dropdown_dropdown_item__ = __webpack_require__(126);\n/* unused harmony reexport BDropdownItem */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_39__components_dropdown_dropdown_item_button__ = __webpack_require__(127);\n/* unused harmony reexport BDropdownItemButton */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_40__components_dropdown_dropdown_divider__ = __webpack_require__(129);\n/* unused harmony reexport BDropdownDivider */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_41__components_dropdown_dropdown_form__ = __webpack_require__(130);\n/* unused harmony reexport BDropdownForm */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__components_dropdown_dropdown_group__ = __webpack_require__(132);\n/* unused harmony reexport BDropdownGroup */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__components_dropdown_dropdown_header__ = __webpack_require__(128);\n/* unused harmony reexport BDropdownHeader */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__components_dropdown_dropdown_text__ = __webpack_require__(131);\n/* unused harmony reexport BDropdownText */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__components_embed__ = __webpack_require__(133);\n/* unused harmony reexport EmbedPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__components_embed_embed__ = __webpack_require__(134);\n/* unused harmony reexport BEmbed */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_47__components_form__ = __webpack_require__(135);\n/* unused harmony reexport FormPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__components_form_form__ = __webpack_require__(42);\n/* unused harmony reexport BForm */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__components_form_form_datalist__ = __webpack_require__(136);\n/* unused harmony reexport BFormDatalist */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__components_form_form_text__ = __webpack_require__(66);\n/* unused harmony reexport BFormText */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_51__components_form_form_invalid_feedback__ = __webpack_require__(67);\n/* unused harmony reexport BFormInvalidFeedback */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_52__components_form_form_valid_feedback__ = __webpack_require__(68);\n/* unused harmony reexport BFormValidFeedback */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_53__components_form_checkbox__ = __webpack_require__(139);\n/* unused harmony reexport FormCheckboxPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_54__components_form_checkbox_form_checkbox__ = __webpack_require__(70);\n/* unused harmony reexport BFormCheckbox */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_55__components_form_checkbox_form_checkbox_group__ = __webpack_require__(141);\n/* unused harmony reexport BFormCheckboxGroup */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_56__components_form_file__ = __webpack_require__(152);\n/* unused harmony reexport FormFilePlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_57__components_form_file_form_file__ = __webpack_require__(153);\n/* unused harmony reexport BFormFile */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_58__components_form_group__ = __webpack_require__(137);\n/* unused harmony reexport FormGroupPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_59__components_form_group_form_group__ = __webpack_require__(138);\n/* unused harmony reexport BFormGroup */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_60__components_form_input__ = __webpack_require__(145);\n/* unused harmony reexport FormInputPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_61__components_form_input_form_input__ = __webpack_require__(146);\n/* unused harmony reexport BFormInput */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_62__components_form_radio__ = __webpack_require__(143);\n/* unused harmony reexport FormRadioPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_63__components_form_radio_form_radio__ = __webpack_require__(71);\n/* unused harmony reexport BFormRadio */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_64__components_form_radio_form_radio_group__ = __webpack_require__(144);\n/* unused harmony reexport BFormRadioGroup */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_65__components_form_select__ = __webpack_require__(155);\n/* unused harmony reexport FormSelectPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_66__components_form_select_form_select__ = __webpack_require__(156);\n/* unused harmony reexport BFormSelect */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_67__components_form_textarea__ = __webpack_require__(150);\n/* unused harmony reexport FormTextareaPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_68__components_form_textarea_form_textarea__ = __webpack_require__(151);\n/* unused harmony reexport BFormTextarea */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_69__components_image__ = __webpack_require__(157);\n/* unused harmony reexport ImagePlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_70__components_image_img__ = __webpack_require__(38);\n/* unused harmony reexport BImg */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_71__components_image_img_lazy__ = __webpack_require__(62);\n/* unused harmony reexport BImgLazy */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_72__components_input_group__ = __webpack_require__(158);\n/* unused harmony reexport InputGroupPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_73__components_input_group_input_group__ = __webpack_require__(159);\n/* unused harmony reexport BInputGroup */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_74__components_input_group_input_group_addon__ = __webpack_require__(45);\n/* unused harmony reexport BInputGroupAddon */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_75__components_input_group_input_group_append__ = __webpack_require__(73);\n/* unused harmony reexport BInputGroupAppend */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_76__components_input_group_input_group_prepend__ = __webpack_require__(72);\n/* unused harmony reexport BInputGroupPrepend */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_77__components_input_group_input_group_text__ = __webpack_require__(46);\n/* unused harmony reexport BInputGroupText */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_78__components_jumbotron__ = __webpack_require__(160);\n/* unused harmony reexport JumbotronPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_79__components_jumbotron_jumbotron__ = __webpack_require__(161);\n/* unused harmony reexport BJumbotron */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_80__components_layout__ = __webpack_require__(162);\n/* unused harmony reexport LayoutPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_81__components_layout_container__ = __webpack_require__(74);\n/* unused harmony reexport BContainer */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_82__components_layout_row__ = __webpack_require__(163);\n/* unused harmony reexport BRow */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_83__components_layout_col__ = __webpack_require__(69);\n/* unused harmony reexport BCol */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_84__components_layout_form_row__ = __webpack_require__(44);\n/* unused harmony reexport BFormRow */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_85__components_link__ = __webpack_require__(164);\n/* unused harmony reexport LinkPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_86__components_link_link__ = __webpack_require__(14);\n/* unused harmony reexport BLink */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_87__components_list_group__ = __webpack_require__(165);\n/* unused harmony reexport ListGroupPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_88__components_list_group_list_group__ = __webpack_require__(166);\n/* unused harmony reexport BListGroup */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_89__components_list_group_list_group_item__ = __webpack_require__(167);\n/* unused harmony reexport BListGroupItem */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_90__components_media__ = __webpack_require__(168);\n/* unused harmony reexport MediaPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_91__components_media_media__ = __webpack_require__(169);\n/* unused harmony reexport BMedia */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_92__components_media_media_aside__ = __webpack_require__(76);\n/* unused harmony reexport BMediaAside */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_93__components_media_media_body__ = __webpack_require__(75);\n/* unused harmony reexport BMediaBody */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_94__components_modal__ = __webpack_require__(170);\n/* unused harmony reexport ModalPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_95__components_modal_modal__ = __webpack_require__(77);\n/* unused harmony reexport BModal */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_96__components_nav__ = __webpack_require__(80);\n/* unused harmony reexport NavPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_97__components_nav_nav__ = __webpack_require__(47);\n/* unused harmony reexport BNav */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_98__components_nav_nav_form__ = __webpack_require__(174);\n/* unused harmony reexport BNavForm */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_99__components_nav_nav_item__ = __webpack_require__(172);\n/* unused harmony reexport BNavItem */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_100__components_nav_nav_item_dropdown__ = __webpack_require__(175);\n/* unused harmony reexport BNavItemDropdown */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_101__components_nav_nav_text__ = __webpack_require__(173);\n/* unused harmony reexport BNavText */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_102__components_navbar__ = __webpack_require__(176);\n/* unused harmony reexport NavbarPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_103__components_navbar_navbar__ = __webpack_require__(177);\n/* unused harmony reexport BNavbar */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_104__components_navbar_navbar_brand__ = __webpack_require__(179);\n/* unused harmony reexport BNavbarBrand */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_105__components_navbar_navbar_nav__ = __webpack_require__(178);\n/* unused harmony reexport BNavbarNav */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_106__components_navbar_navbar_toggle__ = __webpack_require__(180);\n/* unused harmony reexport BNavbarToggle */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_107__components_pagination__ = __webpack_require__(181);\n/* unused harmony reexport PaginationPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_108__components_pagination_pagination__ = __webpack_require__(182);\n/* unused harmony reexport BPagination */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_109__components_pagination_nav__ = __webpack_require__(185);\n/* unused harmony reexport PaginationNavPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_110__components_pagination_nav_pagination_nav__ = __webpack_require__(186);\n/* unused harmony reexport BPaginationNav */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_111__components_popover__ = __webpack_require__(187);\n/* unused harmony reexport PopoverPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_112__components_popover_popover__ = __webpack_require__(188);\n/* unused harmony reexport BPopover */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_113__components_progress__ = __webpack_require__(192);\n/* unused harmony reexport ProgressPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_114__components_progress_progress__ = __webpack_require__(193);\n/* unused harmony reexport BProgress */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_115__components_progress_progress_bar__ = __webpack_require__(84);\n/* unused harmony reexport BProgressBar */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_116__components_spinner__ = __webpack_require__(194);\n/* unused harmony reexport SpinnerPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_117__components_spinner_spinner__ = __webpack_require__(195);\n/* unused harmony reexport BSpinner */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_118__components_table__ = __webpack_require__(196);\n/* unused harmony reexport TablePlugin */\n/* unused harmony reexport TableLitePlugin */\n/* unused harmony reexport TableSimplePlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_119__components_table_table__ = __webpack_require__(197);\n/* unused harmony reexport BTable */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_120__components_table_table_lite__ = __webpack_require__(209);\n/* unused harmony reexport BTableLite */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_121__components_table_table_simple__ = __webpack_require__(210);\n/* unused harmony reexport BTableSimple */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_122__components_table_tbody__ = __webpack_require__(89);\n/* unused harmony reexport BTbody */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_123__components_table_thead__ = __webpack_require__(88);\n/* unused harmony reexport BThead */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_124__components_table_tfoot__ = __webpack_require__(48);\n/* unused harmony reexport BTfoot */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_125__components_table_tr__ = __webpack_require__(21);\n/* unused harmony reexport BTr */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_126__components_table_th__ = __webpack_require__(49);\n/* unused harmony reexport BTh */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_127__components_table_td__ = __webpack_require__(28);\n/* unused harmony reexport BTd */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_128__components_tabs__ = __webpack_require__(211);\n/* unused harmony reexport TabsPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_129__components_tabs_tabs__ = __webpack_require__(212);\n/* unused harmony reexport BTabs */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_130__components_tabs_tab__ = __webpack_require__(213);\n/* unused harmony reexport BTab */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_131__components_toast__ = __webpack_require__(214);\n/* unused harmony reexport ToastPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_132__components_toast_toast__ = __webpack_require__(91);\n/* unused harmony reexport BToast */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_133__components_toast_toaster__ = __webpack_require__(92);\n/* unused harmony reexport BToaster */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_134__components_tooltip__ = __webpack_require__(217);\n/* unused harmony reexport TooltipPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_135__components_tooltip_tooltip__ = __webpack_require__(81);\n/* unused harmony reexport BTooltip */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_136__directives_modal__ = __webpack_require__(219);\n/* unused harmony reexport VBModalPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_137__directives_modal_modal__ = __webpack_require__(79);\n/* unused harmony reexport VBModal */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_138__directives_popover__ = __webpack_require__(83);\n/* unused harmony reexport VBPopoverPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_139__directives_popover_popover__ = __webpack_require__(191);\n/* unused harmony reexport VBPopover */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_140__directives_scrollspy__ = __webpack_require__(220);\n/* unused harmony reexport VBScrollspyPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_141__directives_scrollspy_scrollspy__ = __webpack_require__(221);\n/* unused harmony reexport VBScrollspy */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_142__directives_toggle__ = __webpack_require__(222);\n/* unused harmony reexport VBTogglePlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_143__directives_toggle_toggle__ = __webpack_require__(64);\n/* unused harmony reexport VBToggle */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_144__directives_tooltip__ = __webpack_require__(93);\n/* unused harmony reexport VBTooltipPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_145__directives_tooltip_tooltip__ = __webpack_require__(218);\n/* unused harmony reexport VBTooltip */\n/*!\n * BoostrapVue 2.0.4\n *\n * @link https://bootstrap-vue.js.org\n * @source https://github.com/bootstrap-vue/bootstrap-vue\n * @copyright (c) 2016-2019 BootstrapVue\n * @license MIT\n * https://github.com/bootstrap-vue/bootstrap-vue/blob/master/LICENSE\n */\n\n\n\n\nvar NAME = 'BootstrapVue'; //\n// BootstrapVue installer\n//\n\nvar install =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_0__utils_plugins__[\"a\" /* installFactory */])({\n plugins: {\n componentsPlugin: __WEBPACK_IMPORTED_MODULE_1__components__[\"a\" /* componentsPlugin */],\n directivesPlugin: __WEBPACK_IMPORTED_MODULE_2__directives__[\"a\" /* directivesPlugin */]\n }\n}); //\n// BootstrapVue plugin\n//\n\nvar BootstrapVue =\n/*#__PURE__*/\n{\n install: install,\n NAME: NAME\n}; //\n// Named exports for BvConfigPlugin\n//\n\n //\n// Export named injection plugins\n//\n// TODO: we should probably move injections into their\n// own parent directory (i.e. /src/injections)\n\n\n //\n// Export all individual components and component group plugins as named exports.\n//\n// Webpack 4 has optimization difficulties with re-eport of re-exports, so\n// we import the components individulaly here for better tree shaking,\n//\n// Webpack v5 fixes the optimizations with re-export of re-exports so this\n// can be reverted back to `export * from './table'` when Webpack v5 is released.\n// https://github.com/webpack/webpack/pull/9203 (available in Webpack v5.0.0-alpha.15)\n// export * from './components/alert'\n\n\n // export * from './components/badge'\n\n\n // export * from './components/breadcrumb'\n\n\n\n // export * from './components/button'\n\n\n\n // export * from './components/button-group'\n\n\n // export * from './components/button-toolbar'\n\n\n // export * from './components/card'\n\n\n\n\n\n\n\n\n\n\n\n // export * from './components/carousel'\n\n\n\n // export * from './components/collapse'\n\n\n // export * from './components/dropdown'\n\n\n\n\n\n\n\n\n\n // export * from './components/embed'\n\n\n // export * from './components/form'\n\n\n\n\n\n\n // export * from './components/form-checkbox'\n\n\n\n // export * from './components/form-file'\n\n\n // export * from './components/form-group'\n\n\n // export * from './components/form-input'\n\n\n // export * from './components/form-radio'\n\n\n\n // export * from './components/form-select'\n\n\n // export * from './components/form-textarea'\n\n\n // export * from './components/image'\n\n\n\n // export * from './components/input-group'\n\n\n\n\n\n\n // export * from './components/jumbotron'\n\n\n // export * from './components/layout'\n\n\n\n\n\n // export * from './components/link'\n\n\n // export * from './components/list-group'\n\n\n\n // export * from './components/media'\n\n\n\n\n // export * from './components/modal'\n\n\n // export * from './components/nav'\n\n\n\n\n\n\n // export * from './components/navbar'\n\n\n\n\n\n // export * from './components/pagination'\n\n\n // export * from './components/pagination-nav'\n\n\n // export * from './components/popover'\n\n\n // export * from './components/progress'\n\n\n\n // export * from './components/spinner'\n\n\n // export * from './components/table'\n\n\n\n\n\n\n\n\n\n\n // export * from './components/tabs'\n\n\n\n // export * from './components/toast'\n\n\n\n // export * from './components/tooltip'\n\n\n //\n// Named exports of all directives (VB<Name>) and Plugins (VB<name>Plugin)\n//\n// Webpack 4 has optimization difficulties with re-eport of re-exports, so\n// we import the directives individulaly here for better tree shaking,\n//\n// Webpack v5 fixes the optimizations with re-export of re-exports so this\n// can be reverted back to `export * from './scrollspy'` when Webpack v5 is released.\n// https://github.com/webpack/webpack/pull/9203 (available in Webpack v5.0.0-alpha.15)\n// export * from './directives/modal'\n\n\n // export * from './directives/popover'\n\n\n // export * from './directives/scrollspy'\n\n\n // export * from './directives/toggle'\n\n\n // export * from './directives/tooltip'\n\n\n // Default export is the BootstrapVue plugin\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (BootstrapVue);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vaW5kZXguanM/NGVhNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNpRDtBQUNEO0FBQ0E7QUFDSDtBQUM3QywwQkFBMEI7QUFDMUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsOEVBQWM7QUFDZDtBQUNBLHNCQUFzQixxRUFBZ0I7QUFDdEMsc0JBQXNCLHFFQUFnQjtBQUN0QztBQUNBLENBQUMsRUFBRTtBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQVlpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFb0U7QUFDQTtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWlEO0FBQ0M7O0FBRUQ7QUFDQzs7QUFFUztBQUNNO0FBQ1M7O0FBRXZCO0FBQ0U7QUFDVzs7QUFFRjtBQUNROztBQUVKO0FBQ1U7O0FBRTdCO0FBQ0E7QUFDUztBQUNJO0FBQ0Y7QUFDRTtBQUNOO0FBQ1M7QUFDRTtBQUNUO0FBQ0U7O0FBRUg7QUFDSTtBQUNXOztBQUVmO0FBQ0k7O0FBRUo7QUFDSTtBQUNTO0FBQ2E7QUFDUDtBQUNOO0FBQ0U7QUFDRTtBQUNKOztBQUVuQjtBQUNDOztBQUVIO0FBQ0E7QUFDaUI7QUFDUjtBQUN1QjtBQUNKOztBQUVYO0FBQ1M7QUFDVzs7QUFFNUI7QUFDSzs7QUFFSDtBQUNNOztBQUVOO0FBQ007O0FBRU47QUFDTTtBQUNXOztBQUVmO0FBQ087O0FBRUg7QUFDUzs7QUFFeEI7QUFDSDtBQUNTOztBQUVLO0FBQ087QUFDVztBQUNFO0FBQ0U7QUFDTjs7QUFFbkI7QUFDSzs7QUFFWDtBQUNRO0FBQ1o7QUFDQTtBQUNTOztBQUVUO0FBQ0E7O0FBRVc7QUFDTTtBQUNTOztBQUV4QjtBQUNDO0FBQ1c7QUFDRjs7QUFFVjtBQUNDOztBQUVMO0FBQ0Q7QUFDUztBQUNBO0FBQ2lCO0FBQ2pCOztBQUVGO0FBQ0U7QUFDVztBQUNKO0FBQ007O0FBRVA7QUFDTTs7QUFFQztBQUNVOztBQUV2QjtBQUNHOztBQUVEO0FBQ0k7QUFDTzs7QUFFYjtBQUNHOztBQUU2QjtBQUNuQztBQUNTO0FBQ0k7QUFDYjtBQUNBO0FBQ0E7QUFDTjtBQUNBO0FBQ0E7O0FBRUc7QUFDQTtBQUNGOztBQUVJO0FBQ0M7QUFDSTs7QUFFRDtBQUNHO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFbUQ7QUFDQTs7QUFFSTtBQUNFOztBQUVFO0FBQ0k7O0FBRVY7QUFDQzs7QUFFQztBQUNFOztBQUUxQyxxRUFBWSIsImZpbGUiOiIyNDYuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEJvb3N0cmFwVnVlIDIuMC40XG4gKlxuICogQGxpbmsgaHR0cHM6Ly9ib290c3RyYXAtdnVlLmpzLm9yZ1xuICogQHNvdXJjZSBodHRwczovL2dpdGh1Yi5jb20vYm9vdHN0cmFwLXZ1ZS9ib290c3RyYXAtdnVlXG4gKiBAY29weXJpZ2h0IChjKSAyMDE2LTIwMTkgQm9vdHN0cmFwVnVlXG4gKiBAbGljZW5zZSBNSVRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ib290c3RyYXAtdnVlL2Jvb3RzdHJhcC12dWUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5pbXBvcnQgeyBpbnN0YWxsRmFjdG9yeSB9IGZyb20gJy4vdXRpbHMvcGx1Z2lucyc7XG5pbXBvcnQgeyBjb21wb25lbnRzUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IGRpcmVjdGl2ZXNQbHVnaW4gfSBmcm9tICcuL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgQlZDb25maWdQbHVnaW4gfSBmcm9tICcuL2J2LWNvbmZpZyc7XG52YXIgTkFNRSA9ICdCb290c3RyYXBWdWUnOyAvL1xuLy8gQm9vdHN0cmFwVnVlIGluc3RhbGxlclxuLy9cblxudmFyIGluc3RhbGwgPVxuLyojX19QVVJFX18qL1xuaW5zdGFsbEZhY3Rvcnkoe1xuICBwbHVnaW5zOiB7XG4gICAgY29tcG9uZW50c1BsdWdpbjogY29tcG9uZW50c1BsdWdpbixcbiAgICBkaXJlY3RpdmVzUGx1Z2luOiBkaXJlY3RpdmVzUGx1Z2luXG4gIH1cbn0pOyAvL1xuLy8gQm9vdHN0cmFwVnVlIHBsdWdpblxuLy9cblxudmFyIEJvb3RzdHJhcFZ1ZSA9XG4vKiNfX1BVUkVfXyovXG57XG4gIGluc3RhbGw6IGluc3RhbGwsXG4gIE5BTUU6IE5BTUVcbn07IC8vXG4vLyBOYW1lZCBleHBvcnRzIGZvciBCdkNvbmZpZ1BsdWdpblxuLy9cblxuZXhwb3J0IHsgLy8gSW5zdGFsbGVyIGV4cG9ydGVkIGluIGNhc2UgdGhlIGNvbnN1bWVyIGRvZXMgbm90IGltcG9ydCBgZGVmYXVsdGBcbi8vIGFzIHRoZSBwbHVnaW4gaW4gQ29tbW9uSlMgYnVpbGQgKG9yIGRvZXMgbm90IGhhdmUgaW50ZXJvcCBlbmFibGVkXG4vLyBmb3IgQ29tbW9uSlMpLiBCb3RoIHRoZSBmb2xsb3dpbmcgd2lsbCB3b3JrOlxuLy8gICBCb290c3RyYXBWdWUgPSByZXF1aXJlKCdib290c3RyYXAtdnVlJylcbi8vICAgQm9vdHN0cmFwVnVlID0gcmVxdWlyZSgnYm9vdHN0cmFwLXZ1ZScpLmRlZmF1bHRcbi8vICAgVnVlLnVzZShCb290c3RyYXBWdWUpXG5pbnN0YWxsLCBOQU1FIC8vIEJWIENvbmZpZyBQbHVnaW5cbiwgQlZDb25maWdQbHVnaW4gLy8gQlZDb25maWdQbHVnaW4gaGFzIGJlZW4gZG9jdW1lbnRlZCBhcyBCVkNvbmZpZyBhcyB3ZWxsLFxuLy8gc28gd2UgYWRkIGFuIGFsaWFzIHRvIHRoZSBzaG9ydGVyIG5hbWUgZm9yIGJhY2t3YXJkcyBjb21wYXRcbiwgQlZDb25maWdQbHVnaW4gYXMgQlZDb25maWcgLy8gTWFpbiBCb290c3RyYXBWdWUgUGx1Z2luXG4sIEJvb3RzdHJhcFZ1ZSB9OyAvL1xuLy8gRXhwb3J0IG5hbWVkIGluamVjdGlvbiBwbHVnaW5zXG4vL1xuLy8gVE9ETzogd2Ugc2hvdWxkIHByb2JhYmx5IG1vdmUgaW5qZWN0aW9ucyBpbnRvIHRoZWlyXG4vLyAgICAgICBvd24gcGFyZW50IGRpcmVjdG9yeSAoaS5lLiAvc3JjL2luamVjdGlvbnMpXG5cbmV4cG9ydCB7IEJWTW9kYWxQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvbW9kYWwvaGVscGVycy9idi1tb2RhbCc7XG5leHBvcnQgeyBCVlRvYXN0UGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL3RvYXN0L2hlbHBlcnMvYnYtdG9hc3QnOyAvL1xuLy8gRXhwb3J0IGFsbCBpbmRpdmlkdWFsIGNvbXBvbmVudHMgYW5kIGNvbXBvbmVudCBncm91cCBwbHVnaW5zIGFzIG5hbWVkIGV4cG9ydHMuXG4vL1xuLy8gV2VicGFjayA0IGhhcyBvcHRpbWl6YXRpb24gZGlmZmljdWx0aWVzIHdpdGggcmUtZXBvcnQgb2YgcmUtZXhwb3J0cywgc29cbi8vIHdlIGltcG9ydCB0aGUgY29tcG9uZW50cyBpbmRpdmlkdWxhbHkgaGVyZSBmb3IgYmV0dGVyIHRyZWUgc2hha2luZyxcbi8vXG4vLyBXZWJwYWNrIHY1IGZpeGVzIHRoZSBvcHRpbWl6YXRpb25zIHdpdGggcmUtZXhwb3J0IG9mIHJlLWV4cG9ydHMgc28gdGhpc1xuLy8gY2FuIGJlIHJldmVydGVkIGJhY2sgdG8gYGV4cG9ydCAqIGZyb20gJy4vdGFibGUnYCB3aGVuIFdlYnBhY2sgdjUgaXMgcmVsZWFzZWQuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay93ZWJwYWNrL3B1bGwvOTIwMyAoYXZhaWxhYmxlIGluIFdlYnBhY2sgdjUuMC4wLWFscGhhLjE1KVxuLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2FsZXJ0J1xuXG5leHBvcnQgeyBBbGVydFBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9hbGVydCc7XG5leHBvcnQgeyBCQWxlcnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWxlcnQvYWxlcnQnOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvYmFkZ2UnXG5cbmV4cG9ydCB7IEJhZGdlUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL2JhZGdlJztcbmV4cG9ydCB7IEJCYWRnZSB9IGZyb20gJy4vY29tcG9uZW50cy9iYWRnZS9iYWRnZSc7IC8vIGV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9icmVhZGNydW1iJ1xuXG5leHBvcnQgeyBCcmVhZGNydW1iUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL2JyZWFkY3J1bWInO1xuZXhwb3J0IHsgQkJyZWFkY3J1bWIgfSBmcm9tICcuL2NvbXBvbmVudHMvYnJlYWRjcnVtYi9icmVhZGNydW1iJztcbmV4cG9ydCB7IEJCcmVhZGNydW1iSXRlbSB9IGZyb20gJy4vY29tcG9uZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWItaXRlbSc7IC8vIGV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9idXR0b24nXG5cbmV4cG9ydCB7IEJ1dHRvblBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9idXR0b24nO1xuZXhwb3J0IHsgQkJ1dHRvbiB9IGZyb20gJy4vY29tcG9uZW50cy9idXR0b24vYnV0dG9uJztcbmV4cG9ydCB7IEJCdXR0b25DbG9zZSB9IGZyb20gJy4vY29tcG9uZW50cy9idXR0b24vYnV0dG9uLWNsb3NlJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2J1dHRvbi1ncm91cCdcblxuZXhwb3J0IHsgQnV0dG9uR3JvdXBQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvYnV0dG9uLWdyb3VwJztcbmV4cG9ydCB7IEJCdXR0b25Hcm91cCB9IGZyb20gJy4vY29tcG9uZW50cy9idXR0b24tZ3JvdXAvYnV0dG9uLWdyb3VwJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2J1dHRvbi10b29sYmFyJ1xuXG5leHBvcnQgeyBCdXR0b25Ub29sYmFyUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL2J1dHRvbi10b29sYmFyJztcbmV4cG9ydCB7IEJCdXR0b25Ub29sYmFyIH0gZnJvbSAnLi9jb21wb25lbnRzL2J1dHRvbi10b29sYmFyL2J1dHRvbi10b29sYmFyJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2NhcmQnXG5cbmV4cG9ydCB7IENhcmRQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvY2FyZCc7XG5leHBvcnQgeyBCQ2FyZCB9IGZyb20gJy4vY29tcG9uZW50cy9jYXJkL2NhcmQnO1xuZXhwb3J0IHsgQkNhcmRCb2R5IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhcmQvY2FyZC1ib2R5JztcbmV4cG9ydCB7IEJDYXJkRm9vdGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL2NhcmQvY2FyZC1mb290ZXInO1xuZXhwb3J0IHsgQkNhcmRHcm91cCB9IGZyb20gJy4vY29tcG9uZW50cy9jYXJkL2NhcmQtZ3JvdXAnO1xuZXhwb3J0IHsgQkNhcmRIZWFkZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvY2FyZC9jYXJkLWhlYWRlcic7XG5leHBvcnQgeyBCQ2FyZEltZyB9IGZyb20gJy4vY29tcG9uZW50cy9jYXJkL2NhcmQtaW1nJztcbmV4cG9ydCB7IEJDYXJkSW1nTGF6eSB9IGZyb20gJy4vY29tcG9uZW50cy9jYXJkL2NhcmQtaW1nLWxhenknO1xuZXhwb3J0IHsgQkNhcmRTdWJUaXRsZSB9IGZyb20gJy4vY29tcG9uZW50cy9jYXJkL2NhcmQtc3ViLXRpdGxlJztcbmV4cG9ydCB7IEJDYXJkVGV4dCB9IGZyb20gJy4vY29tcG9uZW50cy9jYXJkL2NhcmQtdGV4dCc7XG5leHBvcnQgeyBCQ2FyZFRpdGxlIH0gZnJvbSAnLi9jb21wb25lbnRzL2NhcmQvY2FyZC10aXRsZSc7IC8vIGV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9jYXJvdXNlbCdcblxuZXhwb3J0IHsgQ2Fyb3VzZWxQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvY2Fyb3VzZWwnO1xuZXhwb3J0IHsgQkNhcm91c2VsIH0gZnJvbSAnLi9jb21wb25lbnRzL2Nhcm91c2VsL2Nhcm91c2VsJztcbmV4cG9ydCB7IEJDYXJvdXNlbFNsaWRlIH0gZnJvbSAnLi9jb21wb25lbnRzL2Nhcm91c2VsL2Nhcm91c2VsLXNsaWRlJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2NvbGxhcHNlJ1xuXG5leHBvcnQgeyBDb2xsYXBzZVBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9jb2xsYXBzZSc7XG5leHBvcnQgeyBCQ29sbGFwc2UgfSBmcm9tICcuL2NvbXBvbmVudHMvY29sbGFwc2UvY29sbGFwc2UnOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvZHJvcGRvd24nXG5cbmV4cG9ydCB7IERyb3Bkb3duUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmV4cG9ydCB7IEJEcm9wZG93biB9IGZyb20gJy4vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bic7XG5leHBvcnQgeyBCRHJvcGRvd25JdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLWl0ZW0nO1xuZXhwb3J0IHsgQkRyb3Bkb3duSXRlbUJ1dHRvbiB9IGZyb20gJy4vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1pdGVtLWJ1dHRvbic7XG5leHBvcnQgeyBCRHJvcGRvd25EaXZpZGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLWRpdmlkZXInO1xuZXhwb3J0IHsgQkRyb3Bkb3duRm9ybSB9IGZyb20gJy4vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1mb3JtJztcbmV4cG9ydCB7IEJEcm9wZG93bkdyb3VwIH0gZnJvbSAnLi9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLWdyb3VwJztcbmV4cG9ydCB7IEJEcm9wZG93bkhlYWRlciB9IGZyb20gJy4vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1oZWFkZXInO1xuZXhwb3J0IHsgQkRyb3Bkb3duVGV4dCB9IGZyb20gJy4vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi10ZXh0JzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2VtYmVkJ1xuXG5leHBvcnQgeyBFbWJlZFBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9lbWJlZCc7XG5leHBvcnQgeyBCRW1iZWQgfSBmcm9tICcuL2NvbXBvbmVudHMvZW1iZWQvZW1iZWQnOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvZm9ybSdcblxuZXhwb3J0IHsgRm9ybVBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtJztcbmV4cG9ydCB7IEJGb3JtIH0gZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0vZm9ybSc7XG5leHBvcnQgeyBCRm9ybURhdGFsaXN0IH0gZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0vZm9ybS1kYXRhbGlzdCc7XG5leHBvcnQgeyBCRm9ybVRleHQgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS9mb3JtLXRleHQnO1xuZXhwb3J0IHsgQkZvcm1JbnZhbGlkRmVlZGJhY2sgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS9mb3JtLWludmFsaWQtZmVlZGJhY2snO1xuZXhwb3J0IHsgQkZvcm1WYWxpZEZlZWRiYWNrIH0gZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0vZm9ybS12YWxpZC1mZWVkYmFjayc7IC8vIGV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9mb3JtLWNoZWNrYm94J1xuXG5leHBvcnQgeyBGb3JtQ2hlY2tib3hQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1jaGVja2JveCc7XG5leHBvcnQgeyBCRm9ybUNoZWNrYm94IH0gZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0tY2hlY2tib3gvZm9ybS1jaGVja2JveCc7XG5leHBvcnQgeyBCRm9ybUNoZWNrYm94R3JvdXAgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1jaGVja2JveC9mb3JtLWNoZWNrYm94LWdyb3VwJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0tZmlsZSdcblxuZXhwb3J0IHsgRm9ybUZpbGVQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1maWxlJztcbmV4cG9ydCB7IEJGb3JtRmlsZSB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtLWZpbGUvZm9ybS1maWxlJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0tZ3JvdXAnXG5cbmV4cG9ydCB7IEZvcm1Hcm91cFBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtLWdyb3VwJztcbmV4cG9ydCB7IEJGb3JtR3JvdXAgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1ncm91cC9mb3JtLWdyb3VwJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0taW5wdXQnXG5cbmV4cG9ydCB7IEZvcm1JbnB1dFBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtLWlucHV0JztcbmV4cG9ydCB7IEJGb3JtSW5wdXQgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1pbnB1dC9mb3JtLWlucHV0JzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0tcmFkaW8nXG5cbmV4cG9ydCB7IEZvcm1SYWRpb1BsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtLXJhZGlvJztcbmV4cG9ydCB7IEJGb3JtUmFkaW8gfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1yYWRpby9mb3JtLXJhZGlvJztcbmV4cG9ydCB7IEJGb3JtUmFkaW9Hcm91cCB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtLXJhZGlvL2Zvcm0tcmFkaW8tZ3JvdXAnOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1zZWxlY3QnXG5cbmV4cG9ydCB7IEZvcm1TZWxlY3RQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1zZWxlY3QnO1xuZXhwb3J0IHsgQkZvcm1TZWxlY3QgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1zZWxlY3QvZm9ybS1zZWxlY3QnOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS10ZXh0YXJlYSdcblxuZXhwb3J0IHsgRm9ybVRleHRhcmVhUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0tdGV4dGFyZWEnO1xuZXhwb3J0IHsgQkZvcm1UZXh0YXJlYSB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtLXRleHRhcmVhL2Zvcm0tdGV4dGFyZWEnOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvaW1hZ2UnXG5cbmV4cG9ydCB7IEltYWdlUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL2ltYWdlJztcbmV4cG9ydCB7IEJJbWcgfSBmcm9tICcuL2NvbXBvbmVudHMvaW1hZ2UvaW1nJztcbmV4cG9ydCB7IEJJbWdMYXp5IH0gZnJvbSAnLi9jb21wb25lbnRzL2ltYWdlL2ltZy1sYXp5JzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2lucHV0LWdyb3VwJ1xuXG5leHBvcnQgeyBJbnB1dEdyb3VwUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL2lucHV0LWdyb3VwJztcbmV4cG9ydCB7IEJJbnB1dEdyb3VwIH0gZnJvbSAnLi9jb21wb25lbnRzL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwJztcbmV4cG9ydCB7IEJJbnB1dEdyb3VwQWRkb24gfSBmcm9tICcuL2NvbXBvbmVudHMvaW5wdXQtZ3JvdXAvaW5wdXQtZ3JvdXAtYWRkb24nO1xuZXhwb3J0IHsgQklucHV0R3JvdXBBcHBlbmQgfSBmcm9tICcuL2NvbXBvbmVudHMvaW5wdXQtZ3JvdXAvaW5wdXQtZ3JvdXAtYXBwZW5kJztcbmV4cG9ydCB7IEJJbnB1dEdyb3VwUHJlcGVuZCB9IGZyb20gJy4vY29tcG9uZW50cy9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC1wcmVwZW5kJztcbmV4cG9ydCB7IEJJbnB1dEdyb3VwVGV4dCB9IGZyb20gJy4vY29tcG9uZW50cy9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC10ZXh0JzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2p1bWJvdHJvbidcblxuZXhwb3J0IHsgSnVtYm90cm9uUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL2p1bWJvdHJvbic7XG5leHBvcnQgeyBCSnVtYm90cm9uIH0gZnJvbSAnLi9jb21wb25lbnRzL2p1bWJvdHJvbi9qdW1ib3Ryb24nOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvbGF5b3V0J1xuXG5leHBvcnQgeyBMYXlvdXRQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvbGF5b3V0JztcbmV4cG9ydCB7IEJDb250YWluZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvbGF5b3V0L2NvbnRhaW5lcic7XG5leHBvcnQgeyBCUm93IH0gZnJvbSAnLi9jb21wb25lbnRzL2xheW91dC9yb3cnO1xuZXhwb3J0IHsgQkNvbCB9IGZyb20gJy4vY29tcG9uZW50cy9sYXlvdXQvY29sJztcbmV4cG9ydCB7IEJGb3JtUm93IH0gZnJvbSAnLi9jb21wb25lbnRzL2xheW91dC9mb3JtLXJvdyc7IC8vIGV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9saW5rJ1xuXG5leHBvcnQgeyBMaW5rUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL2xpbmsnO1xuZXhwb3J0IHsgQkxpbmsgfSBmcm9tICcuL2NvbXBvbmVudHMvbGluay9saW5rJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2xpc3QtZ3JvdXAnXG5cbmV4cG9ydCB7IExpc3RHcm91cFBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9saXN0LWdyb3VwJztcbmV4cG9ydCB7IEJMaXN0R3JvdXAgfSBmcm9tICcuL2NvbXBvbmVudHMvbGlzdC1ncm91cC9saXN0LWdyb3VwJztcbmV4cG9ydCB7IEJMaXN0R3JvdXBJdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2xpc3QtZ3JvdXAvbGlzdC1ncm91cC1pdGVtJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL21lZGlhJ1xuXG5leHBvcnQgeyBNZWRpYVBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9tZWRpYSc7XG5leHBvcnQgeyBCTWVkaWEgfSBmcm9tICcuL2NvbXBvbmVudHMvbWVkaWEvbWVkaWEnO1xuZXhwb3J0IHsgQk1lZGlhQXNpZGUgfSBmcm9tICcuL2NvbXBvbmVudHMvbWVkaWEvbWVkaWEtYXNpZGUnO1xuZXhwb3J0IHsgQk1lZGlhQm9keSB9IGZyb20gJy4vY29tcG9uZW50cy9tZWRpYS9tZWRpYS1ib2R5JzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL21vZGFsJ1xuXG5leHBvcnQgeyBNb2RhbFBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9tb2RhbCc7XG5leHBvcnQgeyBCTW9kYWwgfSBmcm9tICcuL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwnOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvbmF2J1xuXG5leHBvcnQgeyBOYXZQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvbmF2JztcbmV4cG9ydCB7IEJOYXYgfSBmcm9tICcuL2NvbXBvbmVudHMvbmF2L25hdic7XG5leHBvcnQgeyBCTmF2Rm9ybSB9IGZyb20gJy4vY29tcG9uZW50cy9uYXYvbmF2LWZvcm0nO1xuZXhwb3J0IHsgQk5hdkl0ZW0gfSBmcm9tICcuL2NvbXBvbmVudHMvbmF2L25hdi1pdGVtJztcbmV4cG9ydCB7IEJOYXZJdGVtRHJvcGRvd24gfSBmcm9tICcuL2NvbXBvbmVudHMvbmF2L25hdi1pdGVtLWRyb3Bkb3duJztcbmV4cG9ydCB7IEJOYXZUZXh0IH0gZnJvbSAnLi9jb21wb25lbnRzL25hdi9uYXYtdGV4dCc7IC8vIGV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9uYXZiYXInXG5cbmV4cG9ydCB7IE5hdmJhclBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9uYXZiYXInO1xuZXhwb3J0IHsgQk5hdmJhciB9IGZyb20gJy4vY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyJztcbmV4cG9ydCB7IEJOYXZiYXJCcmFuZCB9IGZyb20gJy4vY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLWJyYW5kJztcbmV4cG9ydCB7IEJOYXZiYXJOYXYgfSBmcm9tICcuL2NvbXBvbmVudHMvbmF2YmFyL25hdmJhci1uYXYnO1xuZXhwb3J0IHsgQk5hdmJhclRvZ2dsZSB9IGZyb20gJy4vY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLXRvZ2dsZSc7IC8vIGV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9wYWdpbmF0aW9uJ1xuXG5leHBvcnQgeyBQYWdpbmF0aW9uUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL3BhZ2luYXRpb24nO1xuZXhwb3J0IHsgQlBhZ2luYXRpb24gfSBmcm9tICcuL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3BhZ2luYXRpb24tbmF2J1xuXG5leHBvcnQgeyBQYWdpbmF0aW9uTmF2UGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL3BhZ2luYXRpb24tbmF2JztcbmV4cG9ydCB7IEJQYWdpbmF0aW9uTmF2IH0gZnJvbSAnLi9jb21wb25lbnRzL3BhZ2luYXRpb24tbmF2L3BhZ2luYXRpb24tbmF2JzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3BvcG92ZXInXG5cbmV4cG9ydCB7IFBvcG92ZXJQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvcG9wb3Zlcic7XG5leHBvcnQgeyBCUG9wb3ZlciB9IGZyb20gJy4vY29tcG9uZW50cy9wb3BvdmVyL3BvcG92ZXInOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvcHJvZ3Jlc3MnXG5cbmV4cG9ydCB7IFByb2dyZXNzUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL3Byb2dyZXNzJztcbmV4cG9ydCB7IEJQcm9ncmVzcyB9IGZyb20gJy4vY29tcG9uZW50cy9wcm9ncmVzcy9wcm9ncmVzcyc7XG5leHBvcnQgeyBCUHJvZ3Jlc3NCYXIgfSBmcm9tICcuL2NvbXBvbmVudHMvcHJvZ3Jlc3MvcHJvZ3Jlc3MtYmFyJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3NwaW5uZXInXG5cbmV4cG9ydCB7IFNwaW5uZXJQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvc3Bpbm5lcic7XG5leHBvcnQgeyBCU3Bpbm5lciB9IGZyb20gJy4vY29tcG9uZW50cy9zcGlubmVyL3NwaW5uZXInOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUnXG5cbmV4cG9ydCB7IFRhYmxlUGx1Z2luLCBUYWJsZUxpdGVQbHVnaW4sIFRhYmxlU2ltcGxlUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlJztcbmV4cG9ydCB7IEJUYWJsZSB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS90YWJsZSc7XG5leHBvcnQgeyBCVGFibGVMaXRlIH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLWxpdGUnO1xuZXhwb3J0IHsgQlRhYmxlU2ltcGxlIH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLXNpbXBsZSc7XG5leHBvcnQgeyBCVGJvZHkgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvdGJvZHknO1xuZXhwb3J0IHsgQlRoZWFkIH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL3RoZWFkJztcbmV4cG9ydCB7IEJUZm9vdCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS90Zm9vdCc7XG5leHBvcnQgeyBCVHIgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvdHInO1xuZXhwb3J0IHsgQlRoIH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL3RoJztcbmV4cG9ydCB7IEJUZCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS90ZCc7IC8vIGV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy90YWJzJ1xuXG5leHBvcnQgeyBUYWJzUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYnMnO1xuZXhwb3J0IHsgQlRhYnMgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFicy90YWJzJztcbmV4cG9ydCB7IEJUYWIgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFicy90YWInOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdG9hc3QnXG5cbmV4cG9ydCB7IFRvYXN0UGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL3RvYXN0JztcbmV4cG9ydCB7IEJUb2FzdCB9IGZyb20gJy4vY29tcG9uZW50cy90b2FzdC90b2FzdCc7XG5leHBvcnQgeyBCVG9hc3RlciB9IGZyb20gJy4vY29tcG9uZW50cy90b2FzdC90b2FzdGVyJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3Rvb2x0aXAnXG5cbmV4cG9ydCB7IFRvb2x0aXBQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvdG9vbHRpcCc7XG5leHBvcnQgeyBCVG9vbHRpcCB9IGZyb20gJy4vY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAnOyAvL1xuLy8gTmFtZWQgZXhwb3J0cyBvZiBhbGwgZGlyZWN0aXZlcyAoVkI8TmFtZT4pIGFuZCBQbHVnaW5zIChWQjxuYW1lPlBsdWdpbilcbi8vXG4vLyBXZWJwYWNrIDQgaGFzIG9wdGltaXphdGlvbiBkaWZmaWN1bHRpZXMgd2l0aCByZS1lcG9ydCBvZiByZS1leHBvcnRzLCBzb1xuLy8gd2UgaW1wb3J0IHRoZSBkaXJlY3RpdmVzIGluZGl2aWR1bGFseSBoZXJlIGZvciBiZXR0ZXIgdHJlZSBzaGFraW5nLFxuLy9cbi8vIFdlYnBhY2sgdjUgZml4ZXMgdGhlIG9wdGltaXphdGlvbnMgd2l0aCByZS1leHBvcnQgb2YgcmUtZXhwb3J0cyBzbyB0aGlzXG4vLyBjYW4gYmUgcmV2ZXJ0ZWQgYmFjayB0byBgZXhwb3J0ICogZnJvbSAnLi9zY3JvbGxzcHknYCB3aGVuIFdlYnBhY2sgdjUgaXMgcmVsZWFzZWQuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay93ZWJwYWNrL3B1bGwvOTIwMyAoYXZhaWxhYmxlIGluIFdlYnBhY2sgdjUuMC4wLWFscGhhLjE1KVxuLy8gZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL21vZGFsJ1xuXG5leHBvcnQgeyBWQk1vZGFsUGx1Z2luIH0gZnJvbSAnLi9kaXJlY3RpdmVzL21vZGFsJztcbmV4cG9ydCB7IFZCTW9kYWwgfSBmcm9tICcuL2RpcmVjdGl2ZXMvbW9kYWwvbW9kYWwnOyAvLyBleHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvcG9wb3ZlcidcblxuZXhwb3J0IHsgVkJQb3BvdmVyUGx1Z2luIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3BvcG92ZXInO1xuZXhwb3J0IHsgVkJQb3BvdmVyIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3BvcG92ZXIvcG9wb3Zlcic7IC8vIGV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9zY3JvbGxzcHknXG5cbmV4cG9ydCB7IFZCU2Nyb2xsc3B5UGx1Z2luIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3Njcm9sbHNweSc7XG5leHBvcnQgeyBWQlNjcm9sbHNweSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zY3JvbGxzcHkvc2Nyb2xsc3B5JzsgLy8gZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL3RvZ2dsZSdcblxuZXhwb3J0IHsgVkJUb2dnbGVQbHVnaW4gfSBmcm9tICcuL2RpcmVjdGl2ZXMvdG9nZ2xlJztcbmV4cG9ydCB7IFZCVG9nZ2xlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3RvZ2dsZS90b2dnbGUnOyAvLyBleHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvdG9vbHRpcCdcblxuZXhwb3J0IHsgVkJUb29sdGlwUGx1Z2luIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3Rvb2x0aXAnO1xuZXhwb3J0IHsgVkJUb29sdGlwIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3Rvb2x0aXAvdG9vbHRpcCc7IC8vIERlZmF1bHQgZXhwb3J0IGlzIHRoZSBCb290c3RyYXBWdWUgcGx1Z2luXG5cbmV4cG9ydCBkZWZhdWx0IEJvb3RzdHJhcFZ1ZTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMjQ2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///246\n"); +eval("/* unused harmony export install */\n/* unused harmony export NAME */\n/* unused harmony export BootstrapVue */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_plugins__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components__ = __webpack_require__(248);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__directives__ = __webpack_require__(273);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__bv_config__ = __webpack_require__(275);\n/* unused harmony reexport BVConfigPlugin */\n/* unused harmony reexport BVConfig */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__components_modal_helpers_bv_modal__ = __webpack_require__(173);\n/* unused harmony reexport BVModalPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__components_toast_helpers_bv_toast__ = __webpack_require__(217);\n/* unused harmony reexport BVToastPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__components_alert__ = __webpack_require__(102);\n/* unused harmony reexport AlertPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__components_alert_alert__ = __webpack_require__(103);\n/* unused harmony reexport BAlert */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__components_badge__ = __webpack_require__(104);\n/* unused harmony reexport BadgePlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__components_badge_badge__ = __webpack_require__(105);\n/* unused harmony reexport BBadge */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__components_breadcrumb__ = __webpack_require__(108);\n/* unused harmony reexport BreadcrumbPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__components_breadcrumb_breadcrumb__ = __webpack_require__(109);\n/* unused harmony reexport BBreadcrumb */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__components_breadcrumb_breadcrumb_item__ = __webpack_require__(54);\n/* unused harmony reexport BBreadcrumbItem */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__components_button__ = __webpack_require__(111);\n/* unused harmony reexport ButtonPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__components_button_button__ = __webpack_require__(34);\n/* unused harmony reexport BButton */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__components_button_button_close__ = __webpack_require__(31);\n/* unused harmony reexport BButtonClose */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__components_button_group__ = __webpack_require__(112);\n/* unused harmony reexport ButtonGroupPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__components_button_group_button_group__ = __webpack_require__(113);\n/* unused harmony reexport BButtonGroup */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__components_button_toolbar__ = __webpack_require__(114);\n/* unused harmony reexport ButtonToolbarPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__components_button_toolbar_button_toolbar__ = __webpack_require__(115);\n/* unused harmony reexport BButtonToolbar */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__components_card__ = __webpack_require__(116);\n/* unused harmony reexport CardPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__components_card_card__ = __webpack_require__(117);\n/* unused harmony reexport BCard */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__components_card_card_body__ = __webpack_require__(56);\n/* unused harmony reexport BCardBody */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__components_card_card_footer__ = __webpack_require__(60);\n/* unused harmony reexport BCardFooter */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__components_card_card_group__ = __webpack_require__(121);\n/* unused harmony reexport BCardGroup */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__components_card_card_header__ = __webpack_require__(59);\n/* unused harmony reexport BCardHeader */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__components_card_card_img__ = __webpack_require__(61);\n/* unused harmony reexport BCardImg */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__components_card_card_img_lazy__ = __webpack_require__(118);\n/* unused harmony reexport BCardImgLazy */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__components_card_card_sub_title__ = __webpack_require__(58);\n/* unused harmony reexport BCardSubTitle */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__components_card_card_text__ = __webpack_require__(120);\n/* unused harmony reexport BCardText */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__components_card_card_title__ = __webpack_require__(57);\n/* unused harmony reexport BCardTitle */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__components_carousel__ = __webpack_require__(122);\n/* unused harmony reexport CarouselPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__components_carousel_carousel__ = __webpack_require__(123);\n/* unused harmony reexport BCarousel */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__components_carousel_carousel_slide__ = __webpack_require__(124);\n/* unused harmony reexport BCarouselSlide */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__components_collapse__ = __webpack_require__(63);\n/* unused harmony reexport CollapsePlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__components_collapse_collapse__ = __webpack_require__(125);\n/* unused harmony reexport BCollapse */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__components_dropdown__ = __webpack_require__(40);\n/* unused harmony reexport DropdownPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__components_dropdown_dropdown__ = __webpack_require__(65);\n/* unused harmony reexport BDropdown */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__components_dropdown_dropdown_item__ = __webpack_require__(128);\n/* unused harmony reexport BDropdownItem */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_39__components_dropdown_dropdown_item_button__ = __webpack_require__(129);\n/* unused harmony reexport BDropdownItemButton */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_40__components_dropdown_dropdown_divider__ = __webpack_require__(131);\n/* unused harmony reexport BDropdownDivider */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_41__components_dropdown_dropdown_form__ = __webpack_require__(132);\n/* unused harmony reexport BDropdownForm */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__components_dropdown_dropdown_group__ = __webpack_require__(134);\n/* unused harmony reexport BDropdownGroup */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__components_dropdown_dropdown_header__ = __webpack_require__(130);\n/* unused harmony reexport BDropdownHeader */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__components_dropdown_dropdown_text__ = __webpack_require__(133);\n/* unused harmony reexport BDropdownText */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__components_embed__ = __webpack_require__(135);\n/* unused harmony reexport EmbedPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__components_embed_embed__ = __webpack_require__(136);\n/* unused harmony reexport BEmbed */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_47__components_form__ = __webpack_require__(137);\n/* unused harmony reexport FormPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__components_form_form__ = __webpack_require__(42);\n/* unused harmony reexport BForm */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__components_form_form_datalist__ = __webpack_require__(138);\n/* unused harmony reexport BFormDatalist */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__components_form_form_text__ = __webpack_require__(66);\n/* unused harmony reexport BFormText */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_51__components_form_form_invalid_feedback__ = __webpack_require__(67);\n/* unused harmony reexport BFormInvalidFeedback */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_52__components_form_form_valid_feedback__ = __webpack_require__(68);\n/* unused harmony reexport BFormValidFeedback */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_53__components_form_checkbox__ = __webpack_require__(141);\n/* unused harmony reexport FormCheckboxPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_54__components_form_checkbox_form_checkbox__ = __webpack_require__(70);\n/* unused harmony reexport BFormCheckbox */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_55__components_form_checkbox_form_checkbox_group__ = __webpack_require__(143);\n/* unused harmony reexport BFormCheckboxGroup */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_56__components_form_file__ = __webpack_require__(154);\n/* unused harmony reexport FormFilePlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_57__components_form_file_form_file__ = __webpack_require__(155);\n/* unused harmony reexport BFormFile */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_58__components_form_group__ = __webpack_require__(139);\n/* unused harmony reexport FormGroupPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_59__components_form_group_form_group__ = __webpack_require__(140);\n/* unused harmony reexport BFormGroup */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_60__components_form_input__ = __webpack_require__(147);\n/* unused harmony reexport FormInputPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_61__components_form_input_form_input__ = __webpack_require__(148);\n/* unused harmony reexport BFormInput */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_62__components_form_radio__ = __webpack_require__(145);\n/* unused harmony reexport FormRadioPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_63__components_form_radio_form_radio__ = __webpack_require__(71);\n/* unused harmony reexport BFormRadio */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_64__components_form_radio_form_radio_group__ = __webpack_require__(146);\n/* unused harmony reexport BFormRadioGroup */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_65__components_form_select__ = __webpack_require__(157);\n/* unused harmony reexport FormSelectPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_66__components_form_select_form_select__ = __webpack_require__(158);\n/* unused harmony reexport BFormSelect */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_67__components_form_textarea__ = __webpack_require__(152);\n/* unused harmony reexport FormTextareaPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_68__components_form_textarea_form_textarea__ = __webpack_require__(153);\n/* unused harmony reexport BFormTextarea */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_69__components_image__ = __webpack_require__(159);\n/* unused harmony reexport ImagePlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_70__components_image_img__ = __webpack_require__(38);\n/* unused harmony reexport BImg */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_71__components_image_img_lazy__ = __webpack_require__(62);\n/* unused harmony reexport BImgLazy */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_72__components_input_group__ = __webpack_require__(160);\n/* unused harmony reexport InputGroupPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_73__components_input_group_input_group__ = __webpack_require__(161);\n/* unused harmony reexport BInputGroup */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_74__components_input_group_input_group_addon__ = __webpack_require__(45);\n/* unused harmony reexport BInputGroupAddon */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_75__components_input_group_input_group_append__ = __webpack_require__(73);\n/* unused harmony reexport BInputGroupAppend */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_76__components_input_group_input_group_prepend__ = __webpack_require__(72);\n/* unused harmony reexport BInputGroupPrepend */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_77__components_input_group_input_group_text__ = __webpack_require__(46);\n/* unused harmony reexport BInputGroupText */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_78__components_jumbotron__ = __webpack_require__(162);\n/* unused harmony reexport JumbotronPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_79__components_jumbotron_jumbotron__ = __webpack_require__(163);\n/* unused harmony reexport BJumbotron */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_80__components_layout__ = __webpack_require__(164);\n/* unused harmony reexport LayoutPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_81__components_layout_container__ = __webpack_require__(74);\n/* unused harmony reexport BContainer */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_82__components_layout_row__ = __webpack_require__(165);\n/* unused harmony reexport BRow */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_83__components_layout_col__ = __webpack_require__(69);\n/* unused harmony reexport BCol */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_84__components_layout_form_row__ = __webpack_require__(44);\n/* unused harmony reexport BFormRow */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_85__components_link__ = __webpack_require__(166);\n/* unused harmony reexport LinkPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_86__components_link_link__ = __webpack_require__(14);\n/* unused harmony reexport BLink */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_87__components_list_group__ = __webpack_require__(167);\n/* unused harmony reexport ListGroupPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_88__components_list_group_list_group__ = __webpack_require__(168);\n/* unused harmony reexport BListGroup */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_89__components_list_group_list_group_item__ = __webpack_require__(169);\n/* unused harmony reexport BListGroupItem */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_90__components_media__ = __webpack_require__(170);\n/* unused harmony reexport MediaPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_91__components_media_media__ = __webpack_require__(171);\n/* unused harmony reexport BMedia */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_92__components_media_media_aside__ = __webpack_require__(76);\n/* unused harmony reexport BMediaAside */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_93__components_media_media_body__ = __webpack_require__(75);\n/* unused harmony reexport BMediaBody */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_94__components_modal__ = __webpack_require__(172);\n/* unused harmony reexport ModalPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_95__components_modal_modal__ = __webpack_require__(77);\n/* unused harmony reexport BModal */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_96__components_nav__ = __webpack_require__(80);\n/* unused harmony reexport NavPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_97__components_nav_nav__ = __webpack_require__(47);\n/* unused harmony reexport BNav */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_98__components_nav_nav_form__ = __webpack_require__(176);\n/* unused harmony reexport BNavForm */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_99__components_nav_nav_item__ = __webpack_require__(174);\n/* unused harmony reexport BNavItem */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_100__components_nav_nav_item_dropdown__ = __webpack_require__(177);\n/* unused harmony reexport BNavItemDropdown */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_101__components_nav_nav_text__ = __webpack_require__(175);\n/* unused harmony reexport BNavText */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_102__components_navbar__ = __webpack_require__(178);\n/* unused harmony reexport NavbarPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_103__components_navbar_navbar__ = __webpack_require__(179);\n/* unused harmony reexport BNavbar */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_104__components_navbar_navbar_brand__ = __webpack_require__(181);\n/* unused harmony reexport BNavbarBrand */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_105__components_navbar_navbar_nav__ = __webpack_require__(180);\n/* unused harmony reexport BNavbarNav */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_106__components_navbar_navbar_toggle__ = __webpack_require__(182);\n/* unused harmony reexport BNavbarToggle */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_107__components_pagination__ = __webpack_require__(183);\n/* unused harmony reexport PaginationPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_108__components_pagination_pagination__ = __webpack_require__(184);\n/* unused harmony reexport BPagination */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_109__components_pagination_nav__ = __webpack_require__(187);\n/* unused harmony reexport PaginationNavPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_110__components_pagination_nav_pagination_nav__ = __webpack_require__(188);\n/* unused harmony reexport BPaginationNav */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_111__components_popover__ = __webpack_require__(189);\n/* unused harmony reexport PopoverPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_112__components_popover_popover__ = __webpack_require__(190);\n/* unused harmony reexport BPopover */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_113__components_progress__ = __webpack_require__(194);\n/* unused harmony reexport ProgressPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_114__components_progress_progress__ = __webpack_require__(195);\n/* unused harmony reexport BProgress */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_115__components_progress_progress_bar__ = __webpack_require__(84);\n/* unused harmony reexport BProgressBar */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_116__components_spinner__ = __webpack_require__(196);\n/* unused harmony reexport SpinnerPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_117__components_spinner_spinner__ = __webpack_require__(197);\n/* unused harmony reexport BSpinner */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_118__components_table__ = __webpack_require__(198);\n/* unused harmony reexport TablePlugin */\n/* unused harmony reexport TableLitePlugin */\n/* unused harmony reexport TableSimplePlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_119__components_table_table__ = __webpack_require__(199);\n/* unused harmony reexport BTable */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_120__components_table_table_lite__ = __webpack_require__(211);\n/* unused harmony reexport BTableLite */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_121__components_table_table_simple__ = __webpack_require__(212);\n/* unused harmony reexport BTableSimple */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_122__components_table_tbody__ = __webpack_require__(89);\n/* unused harmony reexport BTbody */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_123__components_table_thead__ = __webpack_require__(88);\n/* unused harmony reexport BThead */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_124__components_table_tfoot__ = __webpack_require__(48);\n/* unused harmony reexport BTfoot */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_125__components_table_tr__ = __webpack_require__(21);\n/* unused harmony reexport BTr */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_126__components_table_th__ = __webpack_require__(49);\n/* unused harmony reexport BTh */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_127__components_table_td__ = __webpack_require__(28);\n/* unused harmony reexport BTd */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_128__components_tabs__ = __webpack_require__(213);\n/* unused harmony reexport TabsPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_129__components_tabs_tabs__ = __webpack_require__(214);\n/* unused harmony reexport BTabs */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_130__components_tabs_tab__ = __webpack_require__(215);\n/* unused harmony reexport BTab */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_131__components_toast__ = __webpack_require__(216);\n/* unused harmony reexport ToastPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_132__components_toast_toast__ = __webpack_require__(91);\n/* unused harmony reexport BToast */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_133__components_toast_toaster__ = __webpack_require__(92);\n/* unused harmony reexport BToaster */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_134__components_tooltip__ = __webpack_require__(219);\n/* unused harmony reexport TooltipPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_135__components_tooltip_tooltip__ = __webpack_require__(81);\n/* unused harmony reexport BTooltip */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_136__directives_modal__ = __webpack_require__(221);\n/* unused harmony reexport VBModalPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_137__directives_modal_modal__ = __webpack_require__(79);\n/* unused harmony reexport VBModal */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_138__directives_popover__ = __webpack_require__(83);\n/* unused harmony reexport VBPopoverPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_139__directives_popover_popover__ = __webpack_require__(193);\n/* unused harmony reexport VBPopover */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_140__directives_scrollspy__ = __webpack_require__(222);\n/* unused harmony reexport VBScrollspyPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_141__directives_scrollspy_scrollspy__ = __webpack_require__(223);\n/* unused harmony reexport VBScrollspy */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_142__directives_toggle__ = __webpack_require__(224);\n/* unused harmony reexport VBTogglePlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_143__directives_toggle_toggle__ = __webpack_require__(64);\n/* unused harmony reexport VBToggle */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_144__directives_tooltip__ = __webpack_require__(93);\n/* unused harmony reexport VBTooltipPlugin */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_145__directives_tooltip_tooltip__ = __webpack_require__(220);\n/* unused harmony reexport VBTooltip */\n/*!\n * BoostrapVue 2.0.4\n *\n * @link https://bootstrap-vue.js.org\n * @source https://github.com/bootstrap-vue/bootstrap-vue\n * @copyright (c) 2016-2019 BootstrapVue\n * @license MIT\n * https://github.com/bootstrap-vue/bootstrap-vue/blob/master/LICENSE\n */\n\n\n\n\nvar NAME = 'BootstrapVue'; //\n// BootstrapVue installer\n//\n\nvar install =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_0__utils_plugins__[\"a\" /* installFactory */])({\n plugins: {\n componentsPlugin: __WEBPACK_IMPORTED_MODULE_1__components__[\"a\" /* componentsPlugin */],\n directivesPlugin: __WEBPACK_IMPORTED_MODULE_2__directives__[\"a\" /* directivesPlugin */]\n }\n}); //\n// BootstrapVue plugin\n//\n\nvar BootstrapVue =\n/*#__PURE__*/\n{\n install: install,\n NAME: NAME\n}; //\n// Named exports for BvConfigPlugin\n//\n\n //\n// Export named injection plugins\n//\n// TODO: we should probably move injections into their\n// own parent directory (i.e. /src/injections)\n\n\n //\n// Export all individual components and component group plugins as named exports.\n//\n// Webpack 4 has optimization difficulties with re-eport of re-exports, so\n// we import the components individulaly here for better tree shaking,\n//\n// Webpack v5 fixes the optimizations with re-export of re-exports so this\n// can be reverted back to `export * from './table'` when Webpack v5 is released.\n// https://github.com/webpack/webpack/pull/9203 (available in Webpack v5.0.0-alpha.15)\n// export * from './components/alert'\n\n\n // export * from './components/badge'\n\n\n // export * from './components/breadcrumb'\n\n\n\n // export * from './components/button'\n\n\n\n // export * from './components/button-group'\n\n\n // export * from './components/button-toolbar'\n\n\n // export * from './components/card'\n\n\n\n\n\n\n\n\n\n\n\n // export * from './components/carousel'\n\n\n\n // export * from './components/collapse'\n\n\n // export * from './components/dropdown'\n\n\n\n\n\n\n\n\n\n // export * from './components/embed'\n\n\n // export * from './components/form'\n\n\n\n\n\n\n // export * from './components/form-checkbox'\n\n\n\n // export * from './components/form-file'\n\n\n // export * from './components/form-group'\n\n\n // export * from './components/form-input'\n\n\n // export * from './components/form-radio'\n\n\n\n // export * from './components/form-select'\n\n\n // export * from './components/form-textarea'\n\n\n // export * from './components/image'\n\n\n\n // export * from './components/input-group'\n\n\n\n\n\n\n // export * from './components/jumbotron'\n\n\n // export * from './components/layout'\n\n\n\n\n\n // export * from './components/link'\n\n\n // export * from './components/list-group'\n\n\n\n // export * from './components/media'\n\n\n\n\n // export * from './components/modal'\n\n\n // export * from './components/nav'\n\n\n\n\n\n\n // export * from './components/navbar'\n\n\n\n\n\n // export * from './components/pagination'\n\n\n // export * from './components/pagination-nav'\n\n\n // export * from './components/popover'\n\n\n // export * from './components/progress'\n\n\n\n // export * from './components/spinner'\n\n\n // export * from './components/table'\n\n\n\n\n\n\n\n\n\n\n // export * from './components/tabs'\n\n\n\n // export * from './components/toast'\n\n\n\n // export * from './components/tooltip'\n\n\n //\n// Named exports of all directives (VB<Name>) and Plugins (VB<name>Plugin)\n//\n// Webpack 4 has optimization difficulties with re-eport of re-exports, so\n// we import the directives individulaly here for better tree shaking,\n//\n// Webpack v5 fixes the optimizations with re-export of re-exports so this\n// can be reverted back to `export * from './scrollspy'` when Webpack v5 is released.\n// https://github.com/webpack/webpack/pull/9203 (available in Webpack v5.0.0-alpha.15)\n// export * from './directives/modal'\n\n\n // export * from './directives/popover'\n\n\n // export * from './directives/scrollspy'\n\n\n // export * from './directives/toggle'\n\n\n // export * from './directives/tooltip'\n\n\n // Default export is the BootstrapVue plugin\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (BootstrapVue);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vaW5kZXguanM/NGVhNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNpRDtBQUNEO0FBQ0E7QUFDSDtBQUM3QywwQkFBMEI7QUFDMUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsOEVBQWM7QUFDZDtBQUNBLHNCQUFzQixxRUFBZ0I7QUFDdEMsc0JBQXNCLHFFQUFnQjtBQUN0QztBQUNBLENBQUMsRUFBRTtBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQVlpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFb0U7QUFDQTtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWlEO0FBQ0M7O0FBRUQ7QUFDQzs7QUFFUztBQUNNO0FBQ1M7O0FBRXZCO0FBQ0U7QUFDVzs7QUFFRjtBQUNROztBQUVKO0FBQ1U7O0FBRTdCO0FBQ0E7QUFDUztBQUNJO0FBQ0Y7QUFDRTtBQUNOO0FBQ1M7QUFDRTtBQUNUO0FBQ0U7O0FBRUg7QUFDSTtBQUNXOztBQUVmO0FBQ0k7O0FBRUo7QUFDSTtBQUNTO0FBQ2E7QUFDUDtBQUNOO0FBQ0U7QUFDRTtBQUNKOztBQUVuQjtBQUNDOztBQUVIO0FBQ0E7QUFDaUI7QUFDUjtBQUN1QjtBQUNKOztBQUVYO0FBQ1M7QUFDVzs7QUFFNUI7QUFDSzs7QUFFSDtBQUNNOztBQUVOO0FBQ007O0FBRU47QUFDTTtBQUNXOztBQUVmO0FBQ087O0FBRUg7QUFDUzs7QUFFeEI7QUFDSDtBQUNTOztBQUVLO0FBQ087QUFDVztBQUNFO0FBQ0U7QUFDTjs7QUFFbkI7QUFDSzs7QUFFWDtBQUNRO0FBQ1o7QUFDQTtBQUNTOztBQUVUO0FBQ0E7O0FBRVc7QUFDTTtBQUNTOztBQUV4QjtBQUNDO0FBQ1c7QUFDRjs7QUFFVjtBQUNDOztBQUVMO0FBQ0Q7QUFDUztBQUNBO0FBQ2lCO0FBQ2pCOztBQUVGO0FBQ0U7QUFDVztBQUNKO0FBQ007O0FBRVA7QUFDTTs7QUFFQztBQUNVOztBQUV2QjtBQUNHOztBQUVEO0FBQ0k7QUFDTzs7QUFFYjtBQUNHOztBQUU2QjtBQUNuQztBQUNTO0FBQ0k7QUFDYjtBQUNBO0FBQ0E7QUFDTjtBQUNBO0FBQ0E7O0FBRUc7QUFDQTtBQUNGOztBQUVJO0FBQ0M7QUFDSTs7QUFFRDtBQUNHO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFbUQ7QUFDQTs7QUFFSTtBQUNFOztBQUVFO0FBQ0k7O0FBRVY7QUFDQzs7QUFFQztBQUNFOztBQUUxQyxxRUFBWSIsImZpbGUiOiIyNDYuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEJvb3N0cmFwVnVlIDIuMC40XG4gKlxuICogQGxpbmsgaHR0cHM6Ly9ib290c3RyYXAtdnVlLmpzLm9yZ1xuICogQHNvdXJjZSBodHRwczovL2dpdGh1Yi5jb20vYm9vdHN0cmFwLXZ1ZS9ib290c3RyYXAtdnVlXG4gKiBAY29weXJpZ2h0IChjKSAyMDE2LTIwMTkgQm9vdHN0cmFwVnVlXG4gKiBAbGljZW5zZSBNSVRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ib290c3RyYXAtdnVlL2Jvb3RzdHJhcC12dWUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5pbXBvcnQgeyBpbnN0YWxsRmFjdG9yeSB9IGZyb20gJy4vdXRpbHMvcGx1Z2lucyc7XG5pbXBvcnQgeyBjb21wb25lbnRzUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IGRpcmVjdGl2ZXNQbHVnaW4gfSBmcm9tICcuL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgQlZDb25maWdQbHVnaW4gfSBmcm9tICcuL2J2LWNvbmZpZyc7XG52YXIgTkFNRSA9ICdCb290c3RyYXBWdWUnOyAvL1xuLy8gQm9vdHN0cmFwVnVlIGluc3RhbGxlclxuLy9cblxudmFyIGluc3RhbGwgPVxuLyojX19QVVJFX18qL1xuaW5zdGFsbEZhY3Rvcnkoe1xuICBwbHVnaW5zOiB7XG4gICAgY29tcG9uZW50c1BsdWdpbjogY29tcG9uZW50c1BsdWdpbixcbiAgICBkaXJlY3RpdmVzUGx1Z2luOiBkaXJlY3RpdmVzUGx1Z2luXG4gIH1cbn0pOyAvL1xuLy8gQm9vdHN0cmFwVnVlIHBsdWdpblxuLy9cblxudmFyIEJvb3RzdHJhcFZ1ZSA9XG4vKiNfX1BVUkVfXyovXG57XG4gIGluc3RhbGw6IGluc3RhbGwsXG4gIE5BTUU6IE5BTUVcbn07IC8vXG4vLyBOYW1lZCBleHBvcnRzIGZvciBCdkNvbmZpZ1BsdWdpblxuLy9cblxuZXhwb3J0IHsgLy8gSW5zdGFsbGVyIGV4cG9ydGVkIGluIGNhc2UgdGhlIGNvbnN1bWVyIGRvZXMgbm90IGltcG9ydCBgZGVmYXVsdGBcbi8vIGFzIHRoZSBwbHVnaW4gaW4gQ29tbW9uSlMgYnVpbGQgKG9yIGRvZXMgbm90IGhhdmUgaW50ZXJvcCBlbmFibGVkXG4vLyBmb3IgQ29tbW9uSlMpLiBCb3RoIHRoZSBmb2xsb3dpbmcgd2lsbCB3b3JrOlxuLy8gICBCb290c3RyYXBWdWUgPSByZXF1aXJlKCdib290c3RyYXAtdnVlJylcbi8vICAgQm9vdHN0cmFwVnVlID0gcmVxdWlyZSgnYm9vdHN0cmFwLXZ1ZScpLmRlZmF1bHRcbi8vICAgVnVlLnVzZShCb290c3RyYXBWdWUpXG5pbnN0YWxsLCBOQU1FIC8vIEJWIENvbmZpZyBQbHVnaW5cbiwgQlZDb25maWdQbHVnaW4gLy8gQlZDb25maWdQbHVnaW4gaGFzIGJlZW4gZG9jdW1lbnRlZCBhcyBCVkNvbmZpZyBhcyB3ZWxsLFxuLy8gc28gd2UgYWRkIGFuIGFsaWFzIHRvIHRoZSBzaG9ydGVyIG5hbWUgZm9yIGJhY2t3YXJkcyBjb21wYXRcbiwgQlZDb25maWdQbHVnaW4gYXMgQlZDb25maWcgLy8gTWFpbiBCb290c3RyYXBWdWUgUGx1Z2luXG4sIEJvb3RzdHJhcFZ1ZSB9OyAvL1xuLy8gRXhwb3J0IG5hbWVkIGluamVjdGlvbiBwbHVnaW5zXG4vL1xuLy8gVE9ETzogd2Ugc2hvdWxkIHByb2JhYmx5IG1vdmUgaW5qZWN0aW9ucyBpbnRvIHRoZWlyXG4vLyAgICAgICBvd24gcGFyZW50IGRpcmVjdG9yeSAoaS5lLiAvc3JjL2luamVjdGlvbnMpXG5cbmV4cG9ydCB7IEJWTW9kYWxQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvbW9kYWwvaGVscGVycy9idi1tb2RhbCc7XG5leHBvcnQgeyBCVlRvYXN0UGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL3RvYXN0L2hlbHBlcnMvYnYtdG9hc3QnOyAvL1xuLy8gRXhwb3J0IGFsbCBpbmRpdmlkdWFsIGNvbXBvbmVudHMgYW5kIGNvbXBvbmVudCBncm91cCBwbHVnaW5zIGFzIG5hbWVkIGV4cG9ydHMuXG4vL1xuLy8gV2VicGFjayA0IGhhcyBvcHRpbWl6YXRpb24gZGlmZmljdWx0aWVzIHdpdGggcmUtZXBvcnQgb2YgcmUtZXhwb3J0cywgc29cbi8vIHdlIGltcG9ydCB0aGUgY29tcG9uZW50cyBpbmRpdmlkdWxhbHkgaGVyZSBmb3IgYmV0dGVyIHRyZWUgc2hha2luZyxcbi8vXG4vLyBXZWJwYWNrIHY1IGZpeGVzIHRoZSBvcHRpbWl6YXRpb25zIHdpdGggcmUtZXhwb3J0IG9mIHJlLWV4cG9ydHMgc28gdGhpc1xuLy8gY2FuIGJlIHJldmVydGVkIGJhY2sgdG8gYGV4cG9ydCAqIGZyb20gJy4vdGFibGUnYCB3aGVuIFdlYnBhY2sgdjUgaXMgcmVsZWFzZWQuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay93ZWJwYWNrL3B1bGwvOTIwMyAoYXZhaWxhYmxlIGluIFdlYnBhY2sgdjUuMC4wLWFscGhhLjE1KVxuLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2FsZXJ0J1xuXG5leHBvcnQgeyBBbGVydFBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9hbGVydCc7XG5leHBvcnQgeyBCQWxlcnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWxlcnQvYWxlcnQnOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvYmFkZ2UnXG5cbmV4cG9ydCB7IEJhZGdlUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL2JhZGdlJztcbmV4cG9ydCB7IEJCYWRnZSB9IGZyb20gJy4vY29tcG9uZW50cy9iYWRnZS9iYWRnZSc7IC8vIGV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9icmVhZGNydW1iJ1xuXG5leHBvcnQgeyBCcmVhZGNydW1iUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL2JyZWFkY3J1bWInO1xuZXhwb3J0IHsgQkJyZWFkY3J1bWIgfSBmcm9tICcuL2NvbXBvbmVudHMvYnJlYWRjcnVtYi9icmVhZGNydW1iJztcbmV4cG9ydCB7IEJCcmVhZGNydW1iSXRlbSB9IGZyb20gJy4vY29tcG9uZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWItaXRlbSc7IC8vIGV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9idXR0b24nXG5cbmV4cG9ydCB7IEJ1dHRvblBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9idXR0b24nO1xuZXhwb3J0IHsgQkJ1dHRvbiB9IGZyb20gJy4vY29tcG9uZW50cy9idXR0b24vYnV0dG9uJztcbmV4cG9ydCB7IEJCdXR0b25DbG9zZSB9IGZyb20gJy4vY29tcG9uZW50cy9idXR0b24vYnV0dG9uLWNsb3NlJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2J1dHRvbi1ncm91cCdcblxuZXhwb3J0IHsgQnV0dG9uR3JvdXBQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvYnV0dG9uLWdyb3VwJztcbmV4cG9ydCB7IEJCdXR0b25Hcm91cCB9IGZyb20gJy4vY29tcG9uZW50cy9idXR0b24tZ3JvdXAvYnV0dG9uLWdyb3VwJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2J1dHRvbi10b29sYmFyJ1xuXG5leHBvcnQgeyBCdXR0b25Ub29sYmFyUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL2J1dHRvbi10b29sYmFyJztcbmV4cG9ydCB7IEJCdXR0b25Ub29sYmFyIH0gZnJvbSAnLi9jb21wb25lbnRzL2J1dHRvbi10b29sYmFyL2J1dHRvbi10b29sYmFyJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2NhcmQnXG5cbmV4cG9ydCB7IENhcmRQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvY2FyZCc7XG5leHBvcnQgeyBCQ2FyZCB9IGZyb20gJy4vY29tcG9uZW50cy9jYXJkL2NhcmQnO1xuZXhwb3J0IHsgQkNhcmRCb2R5IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhcmQvY2FyZC1ib2R5JztcbmV4cG9ydCB7IEJDYXJkRm9vdGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL2NhcmQvY2FyZC1mb290ZXInO1xuZXhwb3J0IHsgQkNhcmRHcm91cCB9IGZyb20gJy4vY29tcG9uZW50cy9jYXJkL2NhcmQtZ3JvdXAnO1xuZXhwb3J0IHsgQkNhcmRIZWFkZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvY2FyZC9jYXJkLWhlYWRlcic7XG5leHBvcnQgeyBCQ2FyZEltZyB9IGZyb20gJy4vY29tcG9uZW50cy9jYXJkL2NhcmQtaW1nJztcbmV4cG9ydCB7IEJDYXJkSW1nTGF6eSB9IGZyb20gJy4vY29tcG9uZW50cy9jYXJkL2NhcmQtaW1nLWxhenknO1xuZXhwb3J0IHsgQkNhcmRTdWJUaXRsZSB9IGZyb20gJy4vY29tcG9uZW50cy9jYXJkL2NhcmQtc3ViLXRpdGxlJztcbmV4cG9ydCB7IEJDYXJkVGV4dCB9IGZyb20gJy4vY29tcG9uZW50cy9jYXJkL2NhcmQtdGV4dCc7XG5leHBvcnQgeyBCQ2FyZFRpdGxlIH0gZnJvbSAnLi9jb21wb25lbnRzL2NhcmQvY2FyZC10aXRsZSc7IC8vIGV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9jYXJvdXNlbCdcblxuZXhwb3J0IHsgQ2Fyb3VzZWxQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvY2Fyb3VzZWwnO1xuZXhwb3J0IHsgQkNhcm91c2VsIH0gZnJvbSAnLi9jb21wb25lbnRzL2Nhcm91c2VsL2Nhcm91c2VsJztcbmV4cG9ydCB7IEJDYXJvdXNlbFNsaWRlIH0gZnJvbSAnLi9jb21wb25lbnRzL2Nhcm91c2VsL2Nhcm91c2VsLXNsaWRlJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2NvbGxhcHNlJ1xuXG5leHBvcnQgeyBDb2xsYXBzZVBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9jb2xsYXBzZSc7XG5leHBvcnQgeyBCQ29sbGFwc2UgfSBmcm9tICcuL2NvbXBvbmVudHMvY29sbGFwc2UvY29sbGFwc2UnOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvZHJvcGRvd24nXG5cbmV4cG9ydCB7IERyb3Bkb3duUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmV4cG9ydCB7IEJEcm9wZG93biB9IGZyb20gJy4vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bic7XG5leHBvcnQgeyBCRHJvcGRvd25JdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLWl0ZW0nO1xuZXhwb3J0IHsgQkRyb3Bkb3duSXRlbUJ1dHRvbiB9IGZyb20gJy4vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1pdGVtLWJ1dHRvbic7XG5leHBvcnQgeyBCRHJvcGRvd25EaXZpZGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLWRpdmlkZXInO1xuZXhwb3J0IHsgQkRyb3Bkb3duRm9ybSB9IGZyb20gJy4vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1mb3JtJztcbmV4cG9ydCB7IEJEcm9wZG93bkdyb3VwIH0gZnJvbSAnLi9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLWdyb3VwJztcbmV4cG9ydCB7IEJEcm9wZG93bkhlYWRlciB9IGZyb20gJy4vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi1oZWFkZXInO1xuZXhwb3J0IHsgQkRyb3Bkb3duVGV4dCB9IGZyb20gJy4vY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi10ZXh0JzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2VtYmVkJ1xuXG5leHBvcnQgeyBFbWJlZFBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9lbWJlZCc7XG5leHBvcnQgeyBCRW1iZWQgfSBmcm9tICcuL2NvbXBvbmVudHMvZW1iZWQvZW1iZWQnOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvZm9ybSdcblxuZXhwb3J0IHsgRm9ybVBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtJztcbmV4cG9ydCB7IEJGb3JtIH0gZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0vZm9ybSc7XG5leHBvcnQgeyBCRm9ybURhdGFsaXN0IH0gZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0vZm9ybS1kYXRhbGlzdCc7XG5leHBvcnQgeyBCRm9ybVRleHQgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS9mb3JtLXRleHQnO1xuZXhwb3J0IHsgQkZvcm1JbnZhbGlkRmVlZGJhY2sgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS9mb3JtLWludmFsaWQtZmVlZGJhY2snO1xuZXhwb3J0IHsgQkZvcm1WYWxpZEZlZWRiYWNrIH0gZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0vZm9ybS12YWxpZC1mZWVkYmFjayc7IC8vIGV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9mb3JtLWNoZWNrYm94J1xuXG5leHBvcnQgeyBGb3JtQ2hlY2tib3hQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1jaGVja2JveCc7XG5leHBvcnQgeyBCRm9ybUNoZWNrYm94IH0gZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0tY2hlY2tib3gvZm9ybS1jaGVja2JveCc7XG5leHBvcnQgeyBCRm9ybUNoZWNrYm94R3JvdXAgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1jaGVja2JveC9mb3JtLWNoZWNrYm94LWdyb3VwJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0tZmlsZSdcblxuZXhwb3J0IHsgRm9ybUZpbGVQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1maWxlJztcbmV4cG9ydCB7IEJGb3JtRmlsZSB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtLWZpbGUvZm9ybS1maWxlJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0tZ3JvdXAnXG5cbmV4cG9ydCB7IEZvcm1Hcm91cFBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtLWdyb3VwJztcbmV4cG9ydCB7IEJGb3JtR3JvdXAgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1ncm91cC9mb3JtLWdyb3VwJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0taW5wdXQnXG5cbmV4cG9ydCB7IEZvcm1JbnB1dFBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtLWlucHV0JztcbmV4cG9ydCB7IEJGb3JtSW5wdXQgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1pbnB1dC9mb3JtLWlucHV0JzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0tcmFkaW8nXG5cbmV4cG9ydCB7IEZvcm1SYWRpb1BsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtLXJhZGlvJztcbmV4cG9ydCB7IEJGb3JtUmFkaW8gfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1yYWRpby9mb3JtLXJhZGlvJztcbmV4cG9ydCB7IEJGb3JtUmFkaW9Hcm91cCB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtLXJhZGlvL2Zvcm0tcmFkaW8tZ3JvdXAnOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1zZWxlY3QnXG5cbmV4cG9ydCB7IEZvcm1TZWxlY3RQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1zZWxlY3QnO1xuZXhwb3J0IHsgQkZvcm1TZWxlY3QgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1zZWxlY3QvZm9ybS1zZWxlY3QnOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS10ZXh0YXJlYSdcblxuZXhwb3J0IHsgRm9ybVRleHRhcmVhUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0tdGV4dGFyZWEnO1xuZXhwb3J0IHsgQkZvcm1UZXh0YXJlYSB9IGZyb20gJy4vY29tcG9uZW50cy9mb3JtLXRleHRhcmVhL2Zvcm0tdGV4dGFyZWEnOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvaW1hZ2UnXG5cbmV4cG9ydCB7IEltYWdlUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL2ltYWdlJztcbmV4cG9ydCB7IEJJbWcgfSBmcm9tICcuL2NvbXBvbmVudHMvaW1hZ2UvaW1nJztcbmV4cG9ydCB7IEJJbWdMYXp5IH0gZnJvbSAnLi9jb21wb25lbnRzL2ltYWdlL2ltZy1sYXp5JzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2lucHV0LWdyb3VwJ1xuXG5leHBvcnQgeyBJbnB1dEdyb3VwUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL2lucHV0LWdyb3VwJztcbmV4cG9ydCB7IEJJbnB1dEdyb3VwIH0gZnJvbSAnLi9jb21wb25lbnRzL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwJztcbmV4cG9ydCB7IEJJbnB1dEdyb3VwQWRkb24gfSBmcm9tICcuL2NvbXBvbmVudHMvaW5wdXQtZ3JvdXAvaW5wdXQtZ3JvdXAtYWRkb24nO1xuZXhwb3J0IHsgQklucHV0R3JvdXBBcHBlbmQgfSBmcm9tICcuL2NvbXBvbmVudHMvaW5wdXQtZ3JvdXAvaW5wdXQtZ3JvdXAtYXBwZW5kJztcbmV4cG9ydCB7IEJJbnB1dEdyb3VwUHJlcGVuZCB9IGZyb20gJy4vY29tcG9uZW50cy9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC1wcmVwZW5kJztcbmV4cG9ydCB7IEJJbnB1dEdyb3VwVGV4dCB9IGZyb20gJy4vY29tcG9uZW50cy9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC10ZXh0JzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2p1bWJvdHJvbidcblxuZXhwb3J0IHsgSnVtYm90cm9uUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL2p1bWJvdHJvbic7XG5leHBvcnQgeyBCSnVtYm90cm9uIH0gZnJvbSAnLi9jb21wb25lbnRzL2p1bWJvdHJvbi9qdW1ib3Ryb24nOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvbGF5b3V0J1xuXG5leHBvcnQgeyBMYXlvdXRQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvbGF5b3V0JztcbmV4cG9ydCB7IEJDb250YWluZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvbGF5b3V0L2NvbnRhaW5lcic7XG5leHBvcnQgeyBCUm93IH0gZnJvbSAnLi9jb21wb25lbnRzL2xheW91dC9yb3cnO1xuZXhwb3J0IHsgQkNvbCB9IGZyb20gJy4vY29tcG9uZW50cy9sYXlvdXQvY29sJztcbmV4cG9ydCB7IEJGb3JtUm93IH0gZnJvbSAnLi9jb21wb25lbnRzL2xheW91dC9mb3JtLXJvdyc7IC8vIGV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9saW5rJ1xuXG5leHBvcnQgeyBMaW5rUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL2xpbmsnO1xuZXhwb3J0IHsgQkxpbmsgfSBmcm9tICcuL2NvbXBvbmVudHMvbGluay9saW5rJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2xpc3QtZ3JvdXAnXG5cbmV4cG9ydCB7IExpc3RHcm91cFBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9saXN0LWdyb3VwJztcbmV4cG9ydCB7IEJMaXN0R3JvdXAgfSBmcm9tICcuL2NvbXBvbmVudHMvbGlzdC1ncm91cC9saXN0LWdyb3VwJztcbmV4cG9ydCB7IEJMaXN0R3JvdXBJdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2xpc3QtZ3JvdXAvbGlzdC1ncm91cC1pdGVtJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL21lZGlhJ1xuXG5leHBvcnQgeyBNZWRpYVBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9tZWRpYSc7XG5leHBvcnQgeyBCTWVkaWEgfSBmcm9tICcuL2NvbXBvbmVudHMvbWVkaWEvbWVkaWEnO1xuZXhwb3J0IHsgQk1lZGlhQXNpZGUgfSBmcm9tICcuL2NvbXBvbmVudHMvbWVkaWEvbWVkaWEtYXNpZGUnO1xuZXhwb3J0IHsgQk1lZGlhQm9keSB9IGZyb20gJy4vY29tcG9uZW50cy9tZWRpYS9tZWRpYS1ib2R5JzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL21vZGFsJ1xuXG5leHBvcnQgeyBNb2RhbFBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9tb2RhbCc7XG5leHBvcnQgeyBCTW9kYWwgfSBmcm9tICcuL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwnOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvbmF2J1xuXG5leHBvcnQgeyBOYXZQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvbmF2JztcbmV4cG9ydCB7IEJOYXYgfSBmcm9tICcuL2NvbXBvbmVudHMvbmF2L25hdic7XG5leHBvcnQgeyBCTmF2Rm9ybSB9IGZyb20gJy4vY29tcG9uZW50cy9uYXYvbmF2LWZvcm0nO1xuZXhwb3J0IHsgQk5hdkl0ZW0gfSBmcm9tICcuL2NvbXBvbmVudHMvbmF2L25hdi1pdGVtJztcbmV4cG9ydCB7IEJOYXZJdGVtRHJvcGRvd24gfSBmcm9tICcuL2NvbXBvbmVudHMvbmF2L25hdi1pdGVtLWRyb3Bkb3duJztcbmV4cG9ydCB7IEJOYXZUZXh0IH0gZnJvbSAnLi9jb21wb25lbnRzL25hdi9uYXYtdGV4dCc7IC8vIGV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9uYXZiYXInXG5cbmV4cG9ydCB7IE5hdmJhclBsdWdpbiB9IGZyb20gJy4vY29tcG9uZW50cy9uYXZiYXInO1xuZXhwb3J0IHsgQk5hdmJhciB9IGZyb20gJy4vY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyJztcbmV4cG9ydCB7IEJOYXZiYXJCcmFuZCB9IGZyb20gJy4vY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLWJyYW5kJztcbmV4cG9ydCB7IEJOYXZiYXJOYXYgfSBmcm9tICcuL2NvbXBvbmVudHMvbmF2YmFyL25hdmJhci1uYXYnO1xuZXhwb3J0IHsgQk5hdmJhclRvZ2dsZSB9IGZyb20gJy4vY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLXRvZ2dsZSc7IC8vIGV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9wYWdpbmF0aW9uJ1xuXG5leHBvcnQgeyBQYWdpbmF0aW9uUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL3BhZ2luYXRpb24nO1xuZXhwb3J0IHsgQlBhZ2luYXRpb24gfSBmcm9tICcuL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3BhZ2luYXRpb24tbmF2J1xuXG5leHBvcnQgeyBQYWdpbmF0aW9uTmF2UGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL3BhZ2luYXRpb24tbmF2JztcbmV4cG9ydCB7IEJQYWdpbmF0aW9uTmF2IH0gZnJvbSAnLi9jb21wb25lbnRzL3BhZ2luYXRpb24tbmF2L3BhZ2luYXRpb24tbmF2JzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3BvcG92ZXInXG5cbmV4cG9ydCB7IFBvcG92ZXJQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvcG9wb3Zlcic7XG5leHBvcnQgeyBCUG9wb3ZlciB9IGZyb20gJy4vY29tcG9uZW50cy9wb3BvdmVyL3BvcG92ZXInOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvcHJvZ3Jlc3MnXG5cbmV4cG9ydCB7IFByb2dyZXNzUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL3Byb2dyZXNzJztcbmV4cG9ydCB7IEJQcm9ncmVzcyB9IGZyb20gJy4vY29tcG9uZW50cy9wcm9ncmVzcy9wcm9ncmVzcyc7XG5leHBvcnQgeyBCUHJvZ3Jlc3NCYXIgfSBmcm9tICcuL2NvbXBvbmVudHMvcHJvZ3Jlc3MvcHJvZ3Jlc3MtYmFyJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3NwaW5uZXInXG5cbmV4cG9ydCB7IFNwaW5uZXJQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvc3Bpbm5lcic7XG5leHBvcnQgeyBCU3Bpbm5lciB9IGZyb20gJy4vY29tcG9uZW50cy9zcGlubmVyL3NwaW5uZXInOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUnXG5cbmV4cG9ydCB7IFRhYmxlUGx1Z2luLCBUYWJsZUxpdGVQbHVnaW4sIFRhYmxlU2ltcGxlUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlJztcbmV4cG9ydCB7IEJUYWJsZSB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS90YWJsZSc7XG5leHBvcnQgeyBCVGFibGVMaXRlIH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLWxpdGUnO1xuZXhwb3J0IHsgQlRhYmxlU2ltcGxlIH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLXNpbXBsZSc7XG5leHBvcnQgeyBCVGJvZHkgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvdGJvZHknO1xuZXhwb3J0IHsgQlRoZWFkIH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL3RoZWFkJztcbmV4cG9ydCB7IEJUZm9vdCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS90Zm9vdCc7XG5leHBvcnQgeyBCVHIgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvdHInO1xuZXhwb3J0IHsgQlRoIH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL3RoJztcbmV4cG9ydCB7IEJUZCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS90ZCc7IC8vIGV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy90YWJzJ1xuXG5leHBvcnQgeyBUYWJzUGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYnMnO1xuZXhwb3J0IHsgQlRhYnMgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFicy90YWJzJztcbmV4cG9ydCB7IEJUYWIgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFicy90YWInOyAvLyBleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdG9hc3QnXG5cbmV4cG9ydCB7IFRvYXN0UGx1Z2luIH0gZnJvbSAnLi9jb21wb25lbnRzL3RvYXN0JztcbmV4cG9ydCB7IEJUb2FzdCB9IGZyb20gJy4vY29tcG9uZW50cy90b2FzdC90b2FzdCc7XG5leHBvcnQgeyBCVG9hc3RlciB9IGZyb20gJy4vY29tcG9uZW50cy90b2FzdC90b2FzdGVyJzsgLy8gZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3Rvb2x0aXAnXG5cbmV4cG9ydCB7IFRvb2x0aXBQbHVnaW4gfSBmcm9tICcuL2NvbXBvbmVudHMvdG9vbHRpcCc7XG5leHBvcnQgeyBCVG9vbHRpcCB9IGZyb20gJy4vY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAnOyAvL1xuLy8gTmFtZWQgZXhwb3J0cyBvZiBhbGwgZGlyZWN0aXZlcyAoVkI8TmFtZT4pIGFuZCBQbHVnaW5zIChWQjxuYW1lPlBsdWdpbilcbi8vXG4vLyBXZWJwYWNrIDQgaGFzIG9wdGltaXphdGlvbiBkaWZmaWN1bHRpZXMgd2l0aCByZS1lcG9ydCBvZiByZS1leHBvcnRzLCBzb1xuLy8gd2UgaW1wb3J0IHRoZSBkaXJlY3RpdmVzIGluZGl2aWR1bGFseSBoZXJlIGZvciBiZXR0ZXIgdHJlZSBzaGFraW5nLFxuLy9cbi8vIFdlYnBhY2sgdjUgZml4ZXMgdGhlIG9wdGltaXphdGlvbnMgd2l0aCByZS1leHBvcnQgb2YgcmUtZXhwb3J0cyBzbyB0aGlzXG4vLyBjYW4gYmUgcmV2ZXJ0ZWQgYmFjayB0byBgZXhwb3J0ICogZnJvbSAnLi9zY3JvbGxzcHknYCB3aGVuIFdlYnBhY2sgdjUgaXMgcmVsZWFzZWQuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay93ZWJwYWNrL3B1bGwvOTIwMyAoYXZhaWxhYmxlIGluIFdlYnBhY2sgdjUuMC4wLWFscGhhLjE1KVxuLy8gZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL21vZGFsJ1xuXG5leHBvcnQgeyBWQk1vZGFsUGx1Z2luIH0gZnJvbSAnLi9kaXJlY3RpdmVzL21vZGFsJztcbmV4cG9ydCB7IFZCTW9kYWwgfSBmcm9tICcuL2RpcmVjdGl2ZXMvbW9kYWwvbW9kYWwnOyAvLyBleHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvcG9wb3ZlcidcblxuZXhwb3J0IHsgVkJQb3BvdmVyUGx1Z2luIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3BvcG92ZXInO1xuZXhwb3J0IHsgVkJQb3BvdmVyIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3BvcG92ZXIvcG9wb3Zlcic7IC8vIGV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9zY3JvbGxzcHknXG5cbmV4cG9ydCB7IFZCU2Nyb2xsc3B5UGx1Z2luIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3Njcm9sbHNweSc7XG5leHBvcnQgeyBWQlNjcm9sbHNweSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zY3JvbGxzcHkvc2Nyb2xsc3B5JzsgLy8gZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL3RvZ2dsZSdcblxuZXhwb3J0IHsgVkJUb2dnbGVQbHVnaW4gfSBmcm9tICcuL2RpcmVjdGl2ZXMvdG9nZ2xlJztcbmV4cG9ydCB7IFZCVG9nZ2xlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3RvZ2dsZS90b2dnbGUnOyAvLyBleHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvdG9vbHRpcCdcblxuZXhwb3J0IHsgVkJUb29sdGlwUGx1Z2luIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3Rvb2x0aXAnO1xuZXhwb3J0IHsgVkJUb29sdGlwIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3Rvb2x0aXAvdG9vbHRpcCc7IC8vIERlZmF1bHQgZXhwb3J0IGlzIHRoZSBCb290c3RyYXBWdWUgcGx1Z2luXG5cbmV4cG9ydCBkZWZhdWx0IEJvb3RzdHJhcFZ1ZTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMjQ2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///246\n"); /***/ }), /* 247 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return setConfig; });\n/* unused harmony export resetConfig */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__clone_deep__ = __webpack_require__(52);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__get__ = __webpack_require__(33);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__warn__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__config_defaults__ = __webpack_require__(99);\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 // --- Constants ---\n\nvar PROP_NAME = '$bvConfig'; // Config manager class\n\nvar BvConfig =\n/*#__PURE__*/\nfunction () {\n function BvConfig() {\n _classCallCheck(this, BvConfig);\n\n // TODO: pre-populate with default config values (needs updated tests)\n // this.$_config = cloneDeep(DEFAULTS)\n this.$_config = {};\n this.$_cachedBreakpoints = null;\n }\n\n _createClass(BvConfig, [{\n key: \"getDefaults\",\n // Returns the defaults\n value: function getDefaults()\n /* istanbul ignore next */\n {\n return this.defaults;\n } // Method to merge in user config parameters\n\n }, {\n key: \"setConfig\",\n value: function setConfig() {\n var _this = this;\n\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_4__inspect__[\"j\" /* isPlainObject */])(config)) {\n /* istanbul ignore next */\n return;\n }\n\n var configKeys = Object(__WEBPACK_IMPORTED_MODULE_5__object__[\"f\" /* getOwnPropertyNames */])(config);\n configKeys.forEach(function (cmpName) {\n /* istanbul ignore next */\n if (!Object(__WEBPACK_IMPORTED_MODULE_5__object__[\"g\" /* hasOwnProperty */])(__WEBPACK_IMPORTED_MODULE_6__config_defaults__[\"a\" /* default */], cmpName)) {\n Object(__WEBPACK_IMPORTED_MODULE_3__warn__[\"a\" /* default */])(\"config: unknown config property \\\"\".concat(cmpName, \"\\\"\"));\n return;\n }\n\n var cmpConfig = config[cmpName];\n\n if (cmpName === 'breakpoints') {\n // Special case for breakpoints\n var breakpoints = config.breakpoints;\n /* istanbul ignore if */\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_4__inspect__[\"a\" /* isArray */])(breakpoints) || breakpoints.length < 2 || breakpoints.some(function (b) {\n return !Object(__WEBPACK_IMPORTED_MODULE_4__inspect__[\"m\" /* isString */])(b) || b.length === 0;\n })) {\n Object(__WEBPACK_IMPORTED_MODULE_3__warn__[\"a\" /* default */])('config: \"breakpoints\" must be an array of at least 2 breakpoint names');\n } else {\n _this.$_config.breakpoints = Object(__WEBPACK_IMPORTED_MODULE_1__clone_deep__[\"a\" /* default */])(breakpoints);\n }\n } else if (Object(__WEBPACK_IMPORTED_MODULE_4__inspect__[\"j\" /* isPlainObject */])(cmpConfig)) {\n // Component prop defaults\n var props = Object(__WEBPACK_IMPORTED_MODULE_5__object__[\"f\" /* getOwnPropertyNames */])(cmpConfig);\n props.forEach(function (prop) {\n /* istanbul ignore if */\n if (!Object(__WEBPACK_IMPORTED_MODULE_5__object__[\"g\" /* hasOwnProperty */])(__WEBPACK_IMPORTED_MODULE_6__config_defaults__[\"a\" /* default */][cmpName], prop)) {\n Object(__WEBPACK_IMPORTED_MODULE_3__warn__[\"a\" /* default */])(\"config: unknown config property \\\"\".concat(cmpName, \".\").concat(prop, \"\\\"\"));\n } else {\n // TODO: If we pre-populate the config with defaults, we can skip this line\n _this.$_config[cmpName] = _this.$_config[cmpName] || {};\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_4__inspect__[\"n\" /* isUndefined */])(cmpConfig[prop])) {\n _this.$_config[cmpName][prop] = Object(__WEBPACK_IMPORTED_MODULE_1__clone_deep__[\"a\" /* default */])(cmpConfig[prop]);\n }\n }\n });\n }\n });\n } // Clear the config. For testing purposes only\n\n }, {\n key: \"resetConfig\",\n value: function resetConfig() {\n this.$_config = {};\n } // Returns a deep copy of the user config\n\n }, {\n key: \"getConfig\",\n value: function getConfig() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__clone_deep__[\"a\" /* default */])(this.$_config);\n }\n }, {\n key: \"getConfigValue\",\n value: function getConfigValue(key) {\n // First we try the user config, and if key not found we fall back to default value\n // NOTE: If we deep clone DEFAULTS into config, then we can skip the fallback for get\n return Object(__WEBPACK_IMPORTED_MODULE_1__clone_deep__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_2__get__[\"a\" /* default */])(this.$_config, key, Object(__WEBPACK_IMPORTED_MODULE_2__get__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_6__config_defaults__[\"a\" /* default */], key)));\n }\n }, {\n key: \"defaults\",\n get: function get()\n /* istanbul ignore next */\n {\n return __WEBPACK_IMPORTED_MODULE_6__config_defaults__[\"a\" /* default */];\n }\n }], [{\n key: \"Defaults\",\n get: function get()\n /* istanbul ignore next */\n {\n return __WEBPACK_IMPORTED_MODULE_6__config_defaults__[\"a\" /* default */];\n }\n }]);\n\n return BvConfig;\n}(); // Method for applying a global config\n\n\nvar setConfig = function setConfig() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var Vue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : __WEBPACK_IMPORTED_MODULE_0__vue__[\"a\" /* default */];\n // Ensure we have a $bvConfig Object on the Vue prototype.\n // We set on Vue and OurVue just in case consumer has not set an alias of `vue`.\n Vue.prototype[PROP_NAME] = __WEBPACK_IMPORTED_MODULE_0__vue__[\"a\" /* default */].prototype[PROP_NAME] = Vue.prototype[PROP_NAME] || __WEBPACK_IMPORTED_MODULE_0__vue__[\"a\" /* default */].prototype[PROP_NAME] || new BvConfig(); // Apply the config values\n\n Vue.prototype[PROP_NAME].setConfig(config);\n}; // Method for resetting the user config. Exported for testing purposes only.\n\nvar resetConfig = function resetConfig() {\n if (__WEBPACK_IMPORTED_MODULE_0__vue__[\"a\" /* default */].prototype[PROP_NAME] && __WEBPACK_IMPORTED_MODULE_0__vue__[\"a\" /* default */].prototype[PROP_NAME].resetConfig) {\n __WEBPACK_IMPORTED_MODULE_0__vue__[\"a\" /* default */].prototype[PROP_NAME].resetConfig();\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvY29uZmlnLXNldC5qcz8wNGRmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKLDJDQUEyQyxnQkFBZ0Isa0JBQWtCLE9BQU8sMkJBQTJCLHdEQUF3RCxnQ0FBZ0MsdURBQXVELDJEQUEyRCxFQUFFOztBQUUzVCw2REFBNkQsc0VBQXNFLDhEQUE4RCxvQkFBb0I7O0FBRTFMO0FBQ1U7QUFDYjtBQUNFO0FBQ2dEO0FBQ1g7QUFDdEI7O0FBRXpDLDRCQUE0Qjs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTCxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBLFdBQVcsdUVBQWE7QUFDeEI7QUFDQTtBQUNBOztBQUVBLHVCQUF1Qiw0RUFBbUI7QUFDMUM7QUFDQTtBQUNBLGFBQWEsdUVBQWMsQ0FBQyxpRUFBUTtBQUNwQyxVQUFVLDhEQUFJO0FBQ2Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxlQUFlLGlFQUFPO0FBQ3RCLG9CQUFvQixrRUFBUTtBQUM1QixXQUFXO0FBQ1gsWUFBWSw4REFBSTtBQUNoQixXQUFXO0FBQ1gseUNBQXlDLG9FQUFTO0FBQ2xEO0FBQ0EsU0FBUyxVQUFVLHVFQUFhO0FBQ2hDO0FBQ0Esc0JBQXNCLDRFQUFtQjtBQUN6QztBQUNBO0FBQ0EsaUJBQWlCLHVFQUFjLENBQUMsaUVBQVE7QUFDeEMsY0FBYyw4REFBSTtBQUNsQixhQUFhO0FBQ2I7QUFDQTs7QUFFQSxtQkFBbUIscUVBQVc7QUFDOUIsZ0RBQWdELG9FQUFTO0FBQ3pEO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTCxHQUFHO0FBQ0g7QUFDQTtBQUNBLGFBQWEsb0VBQVM7QUFDdEI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLG9FQUFTLENBQUMsNkRBQUcscUJBQXFCLDZEQUFHLENBQUMsaUVBQVE7QUFDM0Q7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlFQUFRO0FBQ3JCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRUFBUTtBQUNyQjtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLEdBQUc7OztBQUdHO0FBQ1A7QUFDQSxnRkFBZ0YscURBQU07QUFDdEY7QUFDQTtBQUNBLDZCQUE2QixxREFBTSxvREFBb0QscURBQU0sd0NBQXdDOztBQUVySTtBQUNBLEVBQUU7O0FBRUs7QUFDUCxNQUFNLHFEQUFNLHlCQUF5QixxREFBTTtBQUMzQyxJQUFJLHFEQUFNO0FBQ1Y7QUFDQSIsImZpbGUiOiIyNDcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmltcG9ydCBPdXJWdWUgZnJvbSAnLi92dWUnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICcuL2Nsb25lLWRlZXAnO1xuaW1wb3J0IGdldCBmcm9tICcuL2dldCc7XG5pbXBvcnQgd2FybiBmcm9tICcuL3dhcm4nO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNQbGFpbk9iamVjdCwgaXNTdHJpbmcsIGlzVW5kZWZpbmVkIH0gZnJvbSAnLi9pbnNwZWN0JztcbmltcG9ydCB7IGdldE93blByb3BlcnR5TmFtZXMsIGhhc093blByb3BlcnR5IH0gZnJvbSAnLi9vYmplY3QnO1xuaW1wb3J0IERFRkFVTFRTIGZyb20gJy4vY29uZmlnLWRlZmF1bHRzJzsgLy8gLS0tIENvbnN0YW50cyAtLS1cblxudmFyIFBST1BfTkFNRSA9ICckYnZDb25maWcnOyAvLyBDb25maWcgbWFuYWdlciBjbGFzc1xuXG52YXIgQnZDb25maWcgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBCdkNvbmZpZygpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQnZDb25maWcpO1xuXG4gICAgLy8gVE9ETzogcHJlLXBvcHVsYXRlIHdpdGggZGVmYXVsdCBjb25maWcgdmFsdWVzIChuZWVkcyB1cGRhdGVkIHRlc3RzKVxuICAgIC8vIHRoaXMuJF9jb25maWcgPSBjbG9uZURlZXAoREVGQVVMVFMpXG4gICAgdGhpcy4kX2NvbmZpZyA9IHt9O1xuICAgIHRoaXMuJF9jYWNoZWRCcmVha3BvaW50cyA9IG51bGw7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQnZDb25maWcsIFt7XG4gICAga2V5OiBcImdldERlZmF1bHRzXCIsXG4gICAgLy8gUmV0dXJucyB0aGUgZGVmYXVsdHNcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RGVmYXVsdHMoKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAge1xuICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdHM7XG4gICAgfSAvLyBNZXRob2QgdG8gbWVyZ2UgaW4gdXNlciBjb25maWcgcGFyYW1ldGVyc1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Q29uZmlnXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldENvbmZpZygpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBjb25maWcgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuXG4gICAgICBpZiAoIWlzUGxhaW5PYmplY3QoY29uZmlnKSkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBjb25maWdLZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lcyhjb25maWcpO1xuICAgICAgY29uZmlnS2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChjbXBOYW1lKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGlmICghaGFzT3duUHJvcGVydHkoREVGQVVMVFMsIGNtcE5hbWUpKSB7XG4gICAgICAgICAgd2FybihcImNvbmZpZzogdW5rbm93biBjb25maWcgcHJvcGVydHkgXFxcIlwiLmNvbmNhdChjbXBOYW1lLCBcIlxcXCJcIikpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjbXBDb25maWcgPSBjb25maWdbY21wTmFtZV07XG5cbiAgICAgICAgaWYgKGNtcE5hbWUgPT09ICdicmVha3BvaW50cycpIHtcbiAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGJyZWFrcG9pbnRzXG4gICAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gY29uZmlnLmJyZWFrcG9pbnRzO1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXG4gICAgICAgICAgaWYgKCFpc0FycmF5KGJyZWFrcG9pbnRzKSB8fCBicmVha3BvaW50cy5sZW5ndGggPCAyIHx8IGJyZWFrcG9pbnRzLnNvbWUoZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIHJldHVybiAhaXNTdHJpbmcoYikgfHwgYi5sZW5ndGggPT09IDA7XG4gICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgIHdhcm4oJ2NvbmZpZzogXCJicmVha3BvaW50c1wiIG11c3QgYmUgYW4gYXJyYXkgb2YgYXQgbGVhc3QgMiBicmVha3BvaW50IG5hbWVzJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF90aGlzLiRfY29uZmlnLmJyZWFrcG9pbnRzID0gY2xvbmVEZWVwKGJyZWFrcG9pbnRzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChjbXBDb25maWcpKSB7XG4gICAgICAgICAgLy8gQ29tcG9uZW50IHByb3AgZGVmYXVsdHNcbiAgICAgICAgICB2YXIgcHJvcHMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzKGNtcENvbmZpZyk7XG4gICAgICAgICAgcHJvcHMuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgICBpZiAoIWhhc093blByb3BlcnR5KERFRkFVTFRTW2NtcE5hbWVdLCBwcm9wKSkge1xuICAgICAgICAgICAgICB3YXJuKFwiY29uZmlnOiB1bmtub3duIGNvbmZpZyBwcm9wZXJ0eSBcXFwiXCIuY29uY2F0KGNtcE5hbWUsIFwiLlwiKS5jb25jYXQocHJvcCwgXCJcXFwiXCIpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIFRPRE86IElmIHdlIHByZS1wb3B1bGF0ZSB0aGUgY29uZmlnIHdpdGggZGVmYXVsdHMsIHdlIGNhbiBza2lwIHRoaXMgbGluZVxuICAgICAgICAgICAgICBfdGhpcy4kX2NvbmZpZ1tjbXBOYW1lXSA9IF90aGlzLiRfY29uZmlnW2NtcE5hbWVdIHx8IHt9O1xuXG4gICAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQoY21wQ29uZmlnW3Byb3BdKSkge1xuICAgICAgICAgICAgICAgIF90aGlzLiRfY29uZmlnW2NtcE5hbWVdW3Byb3BdID0gY2xvbmVEZWVwKGNtcENvbmZpZ1twcm9wXSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSAvLyBDbGVhciB0aGUgY29uZmlnLiBGb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5XG5cbiAgfSwge1xuICAgIGtleTogXCJyZXNldENvbmZpZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNldENvbmZpZygpIHtcbiAgICAgIHRoaXMuJF9jb25maWcgPSB7fTtcbiAgICB9IC8vIFJldHVybnMgYSBkZWVwIGNvcHkgb2YgdGhlIHVzZXIgY29uZmlnXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRDb25maWdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29uZmlnKCkge1xuICAgICAgcmV0dXJuIGNsb25lRGVlcCh0aGlzLiRfY29uZmlnKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q29uZmlnVmFsdWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29uZmlnVmFsdWUoa2V5KSB7XG4gICAgICAvLyBGaXJzdCB3ZSB0cnkgdGhlIHVzZXIgY29uZmlnLCBhbmQgaWYga2V5IG5vdCBmb3VuZCB3ZSBmYWxsIGJhY2sgdG8gZGVmYXVsdCB2YWx1ZVxuICAgICAgLy8gTk9URTogSWYgd2UgZGVlcCBjbG9uZSBERUZBVUxUUyBpbnRvIGNvbmZpZywgdGhlbiB3ZSBjYW4gc2tpcCB0aGUgZmFsbGJhY2sgZm9yIGdldFxuICAgICAgcmV0dXJuIGNsb25lRGVlcChnZXQodGhpcy4kX2NvbmZpZywga2V5LCBnZXQoREVGQVVMVFMsIGtleSkpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVmYXVsdHNcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB7XG4gICAgICByZXR1cm4gREVGQVVMVFM7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiRGVmYXVsdHNcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB7XG4gICAgICByZXR1cm4gREVGQVVMVFM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEJ2Q29uZmlnO1xufSgpOyAvLyBNZXRob2QgZm9yIGFwcGx5aW5nIGEgZ2xvYmFsIGNvbmZpZ1xuXG5cbmV4cG9ydCB2YXIgc2V0Q29uZmlnID0gZnVuY3Rpb24gc2V0Q29uZmlnKCkge1xuICB2YXIgY29uZmlnID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcbiAgdmFyIFZ1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogT3VyVnVlO1xuICAvLyBFbnN1cmUgd2UgaGF2ZSBhICRidkNvbmZpZyBPYmplY3Qgb24gdGhlIFZ1ZSBwcm90b3R5cGUuXG4gIC8vIFdlIHNldCBvbiBWdWUgYW5kIE91clZ1ZSBqdXN0IGluIGNhc2UgY29uc3VtZXIgaGFzIG5vdCBzZXQgYW4gYWxpYXMgb2YgYHZ1ZWAuXG4gIFZ1ZS5wcm90b3R5cGVbUFJPUF9OQU1FXSA9IE91clZ1ZS5wcm90b3R5cGVbUFJPUF9OQU1FXSA9IFZ1ZS5wcm90b3R5cGVbUFJPUF9OQU1FXSB8fCBPdXJWdWUucHJvdG90eXBlW1BST1BfTkFNRV0gfHwgbmV3IEJ2Q29uZmlnKCk7IC8vIEFwcGx5IHRoZSBjb25maWcgdmFsdWVzXG5cbiAgVnVlLnByb3RvdHlwZVtQUk9QX05BTUVdLnNldENvbmZpZyhjb25maWcpO1xufTsgLy8gTWV0aG9kIGZvciByZXNldHRpbmcgdGhlIHVzZXIgY29uZmlnLiBFeHBvcnRlZCBmb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5LlxuXG5leHBvcnQgdmFyIHJlc2V0Q29uZmlnID0gZnVuY3Rpb24gcmVzZXRDb25maWcoKSB7XG4gIGlmIChPdXJWdWUucHJvdG90eXBlW1BST1BfTkFNRV0gJiYgT3VyVnVlLnByb3RvdHlwZVtQUk9QX05BTUVdLnJlc2V0Q29uZmlnKSB7XG4gICAgT3VyVnVlLnByb3RvdHlwZVtQUk9QX05BTUVdLnJlc2V0Q29uZmlnKCk7XG4gIH1cbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvY29uZmlnLXNldC5qc1xuLy8gbW9kdWxlIGlkID0gMjQ3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///247\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return setConfig; });\n/* unused harmony export resetConfig */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__clone_deep__ = __webpack_require__(52);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__get__ = __webpack_require__(33);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__warn__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__object__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__config_defaults__ = __webpack_require__(101);\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 // --- Constants ---\n\nvar PROP_NAME = '$bvConfig'; // Config manager class\n\nvar BvConfig =\n/*#__PURE__*/\nfunction () {\n function BvConfig() {\n _classCallCheck(this, BvConfig);\n\n // TODO: pre-populate with default config values (needs updated tests)\n // this.$_config = cloneDeep(DEFAULTS)\n this.$_config = {};\n this.$_cachedBreakpoints = null;\n }\n\n _createClass(BvConfig, [{\n key: \"getDefaults\",\n // Returns the defaults\n value: function getDefaults()\n /* istanbul ignore next */\n {\n return this.defaults;\n } // Method to merge in user config parameters\n\n }, {\n key: \"setConfig\",\n value: function setConfig() {\n var _this = this;\n\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_4__inspect__[\"j\" /* isPlainObject */])(config)) {\n /* istanbul ignore next */\n return;\n }\n\n var configKeys = Object(__WEBPACK_IMPORTED_MODULE_5__object__[\"f\" /* getOwnPropertyNames */])(config);\n configKeys.forEach(function (cmpName) {\n /* istanbul ignore next */\n if (!Object(__WEBPACK_IMPORTED_MODULE_5__object__[\"g\" /* hasOwnProperty */])(__WEBPACK_IMPORTED_MODULE_6__config_defaults__[\"a\" /* default */], cmpName)) {\n Object(__WEBPACK_IMPORTED_MODULE_3__warn__[\"a\" /* default */])(\"config: unknown config property \\\"\".concat(cmpName, \"\\\"\"));\n return;\n }\n\n var cmpConfig = config[cmpName];\n\n if (cmpName === 'breakpoints') {\n // Special case for breakpoints\n var breakpoints = config.breakpoints;\n /* istanbul ignore if */\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_4__inspect__[\"a\" /* isArray */])(breakpoints) || breakpoints.length < 2 || breakpoints.some(function (b) {\n return !Object(__WEBPACK_IMPORTED_MODULE_4__inspect__[\"m\" /* isString */])(b) || b.length === 0;\n })) {\n Object(__WEBPACK_IMPORTED_MODULE_3__warn__[\"a\" /* default */])('config: \"breakpoints\" must be an array of at least 2 breakpoint names');\n } else {\n _this.$_config.breakpoints = Object(__WEBPACK_IMPORTED_MODULE_1__clone_deep__[\"a\" /* default */])(breakpoints);\n }\n } else if (Object(__WEBPACK_IMPORTED_MODULE_4__inspect__[\"j\" /* isPlainObject */])(cmpConfig)) {\n // Component prop defaults\n var props = Object(__WEBPACK_IMPORTED_MODULE_5__object__[\"f\" /* getOwnPropertyNames */])(cmpConfig);\n props.forEach(function (prop) {\n /* istanbul ignore if */\n if (!Object(__WEBPACK_IMPORTED_MODULE_5__object__[\"g\" /* hasOwnProperty */])(__WEBPACK_IMPORTED_MODULE_6__config_defaults__[\"a\" /* default */][cmpName], prop)) {\n Object(__WEBPACK_IMPORTED_MODULE_3__warn__[\"a\" /* default */])(\"config: unknown config property \\\"\".concat(cmpName, \".\").concat(prop, \"\\\"\"));\n } else {\n // TODO: If we pre-populate the config with defaults, we can skip this line\n _this.$_config[cmpName] = _this.$_config[cmpName] || {};\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_4__inspect__[\"n\" /* isUndefined */])(cmpConfig[prop])) {\n _this.$_config[cmpName][prop] = Object(__WEBPACK_IMPORTED_MODULE_1__clone_deep__[\"a\" /* default */])(cmpConfig[prop]);\n }\n }\n });\n }\n });\n } // Clear the config. For testing purposes only\n\n }, {\n key: \"resetConfig\",\n value: function resetConfig() {\n this.$_config = {};\n } // Returns a deep copy of the user config\n\n }, {\n key: \"getConfig\",\n value: function getConfig() {\n return Object(__WEBPACK_IMPORTED_MODULE_1__clone_deep__[\"a\" /* default */])(this.$_config);\n }\n }, {\n key: \"getConfigValue\",\n value: function getConfigValue(key) {\n // First we try the user config, and if key not found we fall back to default value\n // NOTE: If we deep clone DEFAULTS into config, then we can skip the fallback for get\n return Object(__WEBPACK_IMPORTED_MODULE_1__clone_deep__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_2__get__[\"a\" /* default */])(this.$_config, key, Object(__WEBPACK_IMPORTED_MODULE_2__get__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_6__config_defaults__[\"a\" /* default */], key)));\n }\n }, {\n key: \"defaults\",\n get: function get()\n /* istanbul ignore next */\n {\n return __WEBPACK_IMPORTED_MODULE_6__config_defaults__[\"a\" /* default */];\n }\n }], [{\n key: \"Defaults\",\n get: function get()\n /* istanbul ignore next */\n {\n return __WEBPACK_IMPORTED_MODULE_6__config_defaults__[\"a\" /* default */];\n }\n }]);\n\n return BvConfig;\n}(); // Method for applying a global config\n\n\nvar setConfig = function setConfig() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var Vue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : __WEBPACK_IMPORTED_MODULE_0__vue__[\"a\" /* default */];\n // Ensure we have a $bvConfig Object on the Vue prototype.\n // We set on Vue and OurVue just in case consumer has not set an alias of `vue`.\n Vue.prototype[PROP_NAME] = __WEBPACK_IMPORTED_MODULE_0__vue__[\"a\" /* default */].prototype[PROP_NAME] = Vue.prototype[PROP_NAME] || __WEBPACK_IMPORTED_MODULE_0__vue__[\"a\" /* default */].prototype[PROP_NAME] || new BvConfig(); // Apply the config values\n\n Vue.prototype[PROP_NAME].setConfig(config);\n}; // Method for resetting the user config. Exported for testing purposes only.\n\nvar resetConfig = function resetConfig() {\n if (__WEBPACK_IMPORTED_MODULE_0__vue__[\"a\" /* default */].prototype[PROP_NAME] && __WEBPACK_IMPORTED_MODULE_0__vue__[\"a\" /* default */].prototype[PROP_NAME].resetConfig) {\n __WEBPACK_IMPORTED_MODULE_0__vue__[\"a\" /* default */].prototype[PROP_NAME].resetConfig();\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvY29uZmlnLXNldC5qcz8wNGRmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKLDJDQUEyQyxnQkFBZ0Isa0JBQWtCLE9BQU8sMkJBQTJCLHdEQUF3RCxnQ0FBZ0MsdURBQXVELDJEQUEyRCxFQUFFOztBQUUzVCw2REFBNkQsc0VBQXNFLDhEQUE4RCxvQkFBb0I7O0FBRTFMO0FBQ1U7QUFDYjtBQUNFO0FBQ2dEO0FBQ1g7QUFDdEI7O0FBRXpDLDRCQUE0Qjs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTCxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBLFdBQVcsdUVBQWE7QUFDeEI7QUFDQTtBQUNBOztBQUVBLHVCQUF1Qiw0RUFBbUI7QUFDMUM7QUFDQTtBQUNBLGFBQWEsdUVBQWMsQ0FBQyxpRUFBUTtBQUNwQyxVQUFVLDhEQUFJO0FBQ2Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxlQUFlLGlFQUFPO0FBQ3RCLG9CQUFvQixrRUFBUTtBQUM1QixXQUFXO0FBQ1gsWUFBWSw4REFBSTtBQUNoQixXQUFXO0FBQ1gseUNBQXlDLG9FQUFTO0FBQ2xEO0FBQ0EsU0FBUyxVQUFVLHVFQUFhO0FBQ2hDO0FBQ0Esc0JBQXNCLDRFQUFtQjtBQUN6QztBQUNBO0FBQ0EsaUJBQWlCLHVFQUFjLENBQUMsaUVBQVE7QUFDeEMsY0FBYyw4REFBSTtBQUNsQixhQUFhO0FBQ2I7QUFDQTs7QUFFQSxtQkFBbUIscUVBQVc7QUFDOUIsZ0RBQWdELG9FQUFTO0FBQ3pEO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTCxHQUFHO0FBQ0g7QUFDQTtBQUNBLGFBQWEsb0VBQVM7QUFDdEI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLG9FQUFTLENBQUMsNkRBQUcscUJBQXFCLDZEQUFHLENBQUMsaUVBQVE7QUFDM0Q7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlFQUFRO0FBQ3JCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpRUFBUTtBQUNyQjtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLEdBQUc7OztBQUdHO0FBQ1A7QUFDQSxnRkFBZ0YscURBQU07QUFDdEY7QUFDQTtBQUNBLDZCQUE2QixxREFBTSxvREFBb0QscURBQU0sd0NBQXdDOztBQUVySTtBQUNBLEVBQUU7O0FBRUs7QUFDUCxNQUFNLHFEQUFNLHlCQUF5QixxREFBTTtBQUMzQyxJQUFJLHFEQUFNO0FBQ1Y7QUFDQSIsImZpbGUiOiIyNDcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmltcG9ydCBPdXJWdWUgZnJvbSAnLi92dWUnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICcuL2Nsb25lLWRlZXAnO1xuaW1wb3J0IGdldCBmcm9tICcuL2dldCc7XG5pbXBvcnQgd2FybiBmcm9tICcuL3dhcm4nO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNQbGFpbk9iamVjdCwgaXNTdHJpbmcsIGlzVW5kZWZpbmVkIH0gZnJvbSAnLi9pbnNwZWN0JztcbmltcG9ydCB7IGdldE93blByb3BlcnR5TmFtZXMsIGhhc093blByb3BlcnR5IH0gZnJvbSAnLi9vYmplY3QnO1xuaW1wb3J0IERFRkFVTFRTIGZyb20gJy4vY29uZmlnLWRlZmF1bHRzJzsgLy8gLS0tIENvbnN0YW50cyAtLS1cblxudmFyIFBST1BfTkFNRSA9ICckYnZDb25maWcnOyAvLyBDb25maWcgbWFuYWdlciBjbGFzc1xuXG52YXIgQnZDb25maWcgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBCdkNvbmZpZygpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQnZDb25maWcpO1xuXG4gICAgLy8gVE9ETzogcHJlLXBvcHVsYXRlIHdpdGggZGVmYXVsdCBjb25maWcgdmFsdWVzIChuZWVkcyB1cGRhdGVkIHRlc3RzKVxuICAgIC8vIHRoaXMuJF9jb25maWcgPSBjbG9uZURlZXAoREVGQVVMVFMpXG4gICAgdGhpcy4kX2NvbmZpZyA9IHt9O1xuICAgIHRoaXMuJF9jYWNoZWRCcmVha3BvaW50cyA9IG51bGw7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQnZDb25maWcsIFt7XG4gICAga2V5OiBcImdldERlZmF1bHRzXCIsXG4gICAgLy8gUmV0dXJucyB0aGUgZGVmYXVsdHNcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RGVmYXVsdHMoKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAge1xuICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdHM7XG4gICAgfSAvLyBNZXRob2QgdG8gbWVyZ2UgaW4gdXNlciBjb25maWcgcGFyYW1ldGVyc1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Q29uZmlnXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldENvbmZpZygpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBjb25maWcgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuXG4gICAgICBpZiAoIWlzUGxhaW5PYmplY3QoY29uZmlnKSkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBjb25maWdLZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lcyhjb25maWcpO1xuICAgICAgY29uZmlnS2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChjbXBOYW1lKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGlmICghaGFzT3duUHJvcGVydHkoREVGQVVMVFMsIGNtcE5hbWUpKSB7XG4gICAgICAgICAgd2FybihcImNvbmZpZzogdW5rbm93biBjb25maWcgcHJvcGVydHkgXFxcIlwiLmNvbmNhdChjbXBOYW1lLCBcIlxcXCJcIikpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjbXBDb25maWcgPSBjb25maWdbY21wTmFtZV07XG5cbiAgICAgICAgaWYgKGNtcE5hbWUgPT09ICdicmVha3BvaW50cycpIHtcbiAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGJyZWFrcG9pbnRzXG4gICAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gY29uZmlnLmJyZWFrcG9pbnRzO1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXG4gICAgICAgICAgaWYgKCFpc0FycmF5KGJyZWFrcG9pbnRzKSB8fCBicmVha3BvaW50cy5sZW5ndGggPCAyIHx8IGJyZWFrcG9pbnRzLnNvbWUoZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIHJldHVybiAhaXNTdHJpbmcoYikgfHwgYi5sZW5ndGggPT09IDA7XG4gICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgIHdhcm4oJ2NvbmZpZzogXCJicmVha3BvaW50c1wiIG11c3QgYmUgYW4gYXJyYXkgb2YgYXQgbGVhc3QgMiBicmVha3BvaW50IG5hbWVzJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF90aGlzLiRfY29uZmlnLmJyZWFrcG9pbnRzID0gY2xvbmVEZWVwKGJyZWFrcG9pbnRzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChjbXBDb25maWcpKSB7XG4gICAgICAgICAgLy8gQ29tcG9uZW50IHByb3AgZGVmYXVsdHNcbiAgICAgICAgICB2YXIgcHJvcHMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzKGNtcENvbmZpZyk7XG4gICAgICAgICAgcHJvcHMuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgICBpZiAoIWhhc093blByb3BlcnR5KERFRkFVTFRTW2NtcE5hbWVdLCBwcm9wKSkge1xuICAgICAgICAgICAgICB3YXJuKFwiY29uZmlnOiB1bmtub3duIGNvbmZpZyBwcm9wZXJ0eSBcXFwiXCIuY29uY2F0KGNtcE5hbWUsIFwiLlwiKS5jb25jYXQocHJvcCwgXCJcXFwiXCIpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIFRPRE86IElmIHdlIHByZS1wb3B1bGF0ZSB0aGUgY29uZmlnIHdpdGggZGVmYXVsdHMsIHdlIGNhbiBza2lwIHRoaXMgbGluZVxuICAgICAgICAgICAgICBfdGhpcy4kX2NvbmZpZ1tjbXBOYW1lXSA9IF90aGlzLiRfY29uZmlnW2NtcE5hbWVdIHx8IHt9O1xuXG4gICAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQoY21wQ29uZmlnW3Byb3BdKSkge1xuICAgICAgICAgICAgICAgIF90aGlzLiRfY29uZmlnW2NtcE5hbWVdW3Byb3BdID0gY2xvbmVEZWVwKGNtcENvbmZpZ1twcm9wXSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSAvLyBDbGVhciB0aGUgY29uZmlnLiBGb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5XG5cbiAgfSwge1xuICAgIGtleTogXCJyZXNldENvbmZpZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNldENvbmZpZygpIHtcbiAgICAgIHRoaXMuJF9jb25maWcgPSB7fTtcbiAgICB9IC8vIFJldHVybnMgYSBkZWVwIGNvcHkgb2YgdGhlIHVzZXIgY29uZmlnXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRDb25maWdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29uZmlnKCkge1xuICAgICAgcmV0dXJuIGNsb25lRGVlcCh0aGlzLiRfY29uZmlnKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q29uZmlnVmFsdWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29uZmlnVmFsdWUoa2V5KSB7XG4gICAgICAvLyBGaXJzdCB3ZSB0cnkgdGhlIHVzZXIgY29uZmlnLCBhbmQgaWYga2V5IG5vdCBmb3VuZCB3ZSBmYWxsIGJhY2sgdG8gZGVmYXVsdCB2YWx1ZVxuICAgICAgLy8gTk9URTogSWYgd2UgZGVlcCBjbG9uZSBERUZBVUxUUyBpbnRvIGNvbmZpZywgdGhlbiB3ZSBjYW4gc2tpcCB0aGUgZmFsbGJhY2sgZm9yIGdldFxuICAgICAgcmV0dXJuIGNsb25lRGVlcChnZXQodGhpcy4kX2NvbmZpZywga2V5LCBnZXQoREVGQVVMVFMsIGtleSkpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVmYXVsdHNcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB7XG4gICAgICByZXR1cm4gREVGQVVMVFM7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiRGVmYXVsdHNcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB7XG4gICAgICByZXR1cm4gREVGQVVMVFM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEJ2Q29uZmlnO1xufSgpOyAvLyBNZXRob2QgZm9yIGFwcGx5aW5nIGEgZ2xvYmFsIGNvbmZpZ1xuXG5cbmV4cG9ydCB2YXIgc2V0Q29uZmlnID0gZnVuY3Rpb24gc2V0Q29uZmlnKCkge1xuICB2YXIgY29uZmlnID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcbiAgdmFyIFZ1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogT3VyVnVlO1xuICAvLyBFbnN1cmUgd2UgaGF2ZSBhICRidkNvbmZpZyBPYmplY3Qgb24gdGhlIFZ1ZSBwcm90b3R5cGUuXG4gIC8vIFdlIHNldCBvbiBWdWUgYW5kIE91clZ1ZSBqdXN0IGluIGNhc2UgY29uc3VtZXIgaGFzIG5vdCBzZXQgYW4gYWxpYXMgb2YgYHZ1ZWAuXG4gIFZ1ZS5wcm90b3R5cGVbUFJPUF9OQU1FXSA9IE91clZ1ZS5wcm90b3R5cGVbUFJPUF9OQU1FXSA9IFZ1ZS5wcm90b3R5cGVbUFJPUF9OQU1FXSB8fCBPdXJWdWUucHJvdG90eXBlW1BST1BfTkFNRV0gfHwgbmV3IEJ2Q29uZmlnKCk7IC8vIEFwcGx5IHRoZSBjb25maWcgdmFsdWVzXG5cbiAgVnVlLnByb3RvdHlwZVtQUk9QX05BTUVdLnNldENvbmZpZyhjb25maWcpO1xufTsgLy8gTWV0aG9kIGZvciByZXNldHRpbmcgdGhlIHVzZXIgY29uZmlnLiBFeHBvcnRlZCBmb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5LlxuXG5leHBvcnQgdmFyIHJlc2V0Q29uZmlnID0gZnVuY3Rpb24gcmVzZXRDb25maWcoKSB7XG4gIGlmIChPdXJWdWUucHJvdG90eXBlW1BST1BfTkFNRV0gJiYgT3VyVnVlLnByb3RvdHlwZVtQUk9QX05BTUVdLnJlc2V0Q29uZmlnKSB7XG4gICAgT3VyVnVlLnByb3RvdHlwZVtQUk9QX05BTUVdLnJlc2V0Q29uZmlnKCk7XG4gIH1cbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vdXRpbHMvY29uZmlnLXNldC5qc1xuLy8gbW9kdWxlIGlkID0gMjQ3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///247\n"); /***/ }), /* 248 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return componentsPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_plugins__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__alert__ = __webpack_require__(100);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__badge__ = __webpack_require__(102);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__breadcrumb__ = __webpack_require__(106);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__button__ = __webpack_require__(109);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__button_group__ = __webpack_require__(110);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__button_toolbar__ = __webpack_require__(112);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__card__ = __webpack_require__(114);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__carousel__ = __webpack_require__(120);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__collapse__ = __webpack_require__(63);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__dropdown__ = __webpack_require__(40);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__embed__ = __webpack_require__(133);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__form__ = __webpack_require__(135);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__form_group__ = __webpack_require__(137);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__form_checkbox__ = __webpack_require__(139);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__form_radio__ = __webpack_require__(143);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__form_input__ = __webpack_require__(145);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__form_textarea__ = __webpack_require__(150);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__form_file__ = __webpack_require__(152);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__form_select__ = __webpack_require__(155);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__image__ = __webpack_require__(157);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__input_group__ = __webpack_require__(158);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__jumbotron__ = __webpack_require__(160);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__layout__ = __webpack_require__(162);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__link__ = __webpack_require__(164);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__list_group__ = __webpack_require__(165);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__media__ = __webpack_require__(168);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__modal__ = __webpack_require__(170);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__nav__ = __webpack_require__(80);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__navbar__ = __webpack_require__(176);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__pagination__ = __webpack_require__(181);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__pagination_nav__ = __webpack_require__(185);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__popover__ = __webpack_require__(187);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__progress__ = __webpack_require__(192);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__spinner__ = __webpack_require__(194);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__table__ = __webpack_require__(196);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__tabs__ = __webpack_require__(211);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__toast__ = __webpack_require__(214);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__tooltip__ = __webpack_require__(217);\n // Component group plugins\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 // Table plugin includes TableLitePlugin and TableSimplePlugin\n\n\n\n\n // Main plugin to install all component group plugins\n\nvar componentsPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_0__utils_plugins__[\"b\" /* pluginFactory */])({\n plugins: {\n AlertPlugin: __WEBPACK_IMPORTED_MODULE_1__alert__[\"a\" /* AlertPlugin */],\n BadgePlugin: __WEBPACK_IMPORTED_MODULE_2__badge__[\"a\" /* BadgePlugin */],\n BreadcrumbPlugin: __WEBPACK_IMPORTED_MODULE_3__breadcrumb__[\"a\" /* BreadcrumbPlugin */],\n ButtonPlugin: __WEBPACK_IMPORTED_MODULE_4__button__[\"a\" /* ButtonPlugin */],\n ButtonGroupPlugin: __WEBPACK_IMPORTED_MODULE_5__button_group__[\"a\" /* ButtonGroupPlugin */],\n ButtonToolbarPlugin: __WEBPACK_IMPORTED_MODULE_6__button_toolbar__[\"a\" /* ButtonToolbarPlugin */],\n CardPlugin: __WEBPACK_IMPORTED_MODULE_7__card__[\"a\" /* CardPlugin */],\n CarouselPlugin: __WEBPACK_IMPORTED_MODULE_8__carousel__[\"a\" /* CarouselPlugin */],\n CollapsePlugin: __WEBPACK_IMPORTED_MODULE_9__collapse__[\"a\" /* CollapsePlugin */],\n DropdownPlugin: __WEBPACK_IMPORTED_MODULE_10__dropdown__[\"a\" /* DropdownPlugin */],\n EmbedPlugin: __WEBPACK_IMPORTED_MODULE_11__embed__[\"a\" /* EmbedPlugin */],\n FormPlugin: __WEBPACK_IMPORTED_MODULE_12__form__[\"a\" /* FormPlugin */],\n FormGroupPlugin: __WEBPACK_IMPORTED_MODULE_13__form_group__[\"a\" /* FormGroupPlugin */],\n FormCheckboxPlugin: __WEBPACK_IMPORTED_MODULE_14__form_checkbox__[\"a\" /* FormCheckboxPlugin */],\n FormRadioPlugin: __WEBPACK_IMPORTED_MODULE_15__form_radio__[\"a\" /* FormRadioPlugin */],\n FormInputPlugin: __WEBPACK_IMPORTED_MODULE_16__form_input__[\"a\" /* FormInputPlugin */],\n FormTextareaPlugin: __WEBPACK_IMPORTED_MODULE_17__form_textarea__[\"a\" /* FormTextareaPlugin */],\n FormFilePlugin: __WEBPACK_IMPORTED_MODULE_18__form_file__[\"a\" /* FormFilePlugin */],\n FormSelectPlugin: __WEBPACK_IMPORTED_MODULE_19__form_select__[\"a\" /* FormSelectPlugin */],\n ImagePlugin: __WEBPACK_IMPORTED_MODULE_20__image__[\"a\" /* ImagePlugin */],\n InputGroupPlugin: __WEBPACK_IMPORTED_MODULE_21__input_group__[\"a\" /* InputGroupPlugin */],\n JumbotronPlugin: __WEBPACK_IMPORTED_MODULE_22__jumbotron__[\"a\" /* JumbotronPlugin */],\n LayoutPlugin: __WEBPACK_IMPORTED_MODULE_23__layout__[\"a\" /* LayoutPlugin */],\n LinkPlugin: __WEBPACK_IMPORTED_MODULE_24__link__[\"a\" /* LinkPlugin */],\n ListGroupPlugin: __WEBPACK_IMPORTED_MODULE_25__list_group__[\"a\" /* ListGroupPlugin */],\n MediaPlugin: __WEBPACK_IMPORTED_MODULE_26__media__[\"a\" /* MediaPlugin */],\n ModalPlugin: __WEBPACK_IMPORTED_MODULE_27__modal__[\"a\" /* ModalPlugin */],\n NavPlugin: __WEBPACK_IMPORTED_MODULE_28__nav__[\"a\" /* NavPlugin */],\n NavbarPlugin: __WEBPACK_IMPORTED_MODULE_29__navbar__[\"a\" /* NavbarPlugin */],\n PaginationPlugin: __WEBPACK_IMPORTED_MODULE_30__pagination__[\"a\" /* PaginationPlugin */],\n PaginationNavPlugin: __WEBPACK_IMPORTED_MODULE_31__pagination_nav__[\"a\" /* PaginationNavPlugin */],\n PopoverPlugin: __WEBPACK_IMPORTED_MODULE_32__popover__[\"a\" /* PopoverPlugin */],\n ProgressPlugin: __WEBPACK_IMPORTED_MODULE_33__progress__[\"a\" /* ProgressPlugin */],\n SpinnerPlugin: __WEBPACK_IMPORTED_MODULE_34__spinner__[\"a\" /* SpinnerPlugin */],\n TablePlugin: __WEBPACK_IMPORTED_MODULE_35__table__[\"a\" /* TablePlugin */],\n TabsPlugin: __WEBPACK_IMPORTED_MODULE_36__tabs__[\"a\" /* TabsPlugin */],\n ToastPlugin: __WEBPACK_IMPORTED_MODULE_37__toast__[\"a\" /* ToastPlugin */],\n TooltipPlugin: __WEBPACK_IMPORTED_MODULE_38__tooltip__[\"a\" /* TooltipPlugin */]\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9pbmRleC5qcz9mYzYwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlEOztBQUVYO0FBQ0E7QUFDVTtBQUNSO0FBQ1c7QUFDSTtBQUNuQjtBQUNRO0FBQ0E7QUFDQTtBQUNOO0FBQ0Y7QUFDVztBQUNNO0FBQ047QUFDQTtBQUNNO0FBQ1I7QUFDSTtBQUNYO0FBQ1c7QUFDSDtBQUNOO0FBQ0o7QUFDVztBQUNUO0FBQ0E7QUFDSjtBQUNNO0FBQ1E7QUFDTztBQUNiO0FBQ0U7QUFDRjs7QUFFSjtBQUNGO0FBQ0U7QUFDSTs7QUFFbkM7QUFDUDtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxpQkFBaUIsMkRBQVc7QUFDNUIsaUJBQWlCLDJEQUFXO0FBQzVCLHNCQUFzQixxRUFBZ0I7QUFDdEMsa0JBQWtCLDZEQUFZO0FBQzlCLHVCQUF1Qix3RUFBaUI7QUFDeEMseUJBQXlCLDRFQUFtQjtBQUM1QyxnQkFBZ0IseURBQVU7QUFDMUIsb0JBQW9CLGlFQUFjO0FBQ2xDLG9CQUFvQixpRUFBYztBQUNsQyxvQkFBb0Isa0VBQWM7QUFDbEMsaUJBQWlCLDREQUFXO0FBQzVCLGdCQUFnQiwwREFBVTtBQUMxQixxQkFBcUIscUVBQWU7QUFDcEMsd0JBQXdCLDJFQUFrQjtBQUMxQyxxQkFBcUIscUVBQWU7QUFDcEMscUJBQXFCLHFFQUFlO0FBQ3BDLHdCQUF3QiwyRUFBa0I7QUFDMUMsb0JBQW9CLG1FQUFjO0FBQ2xDLHNCQUFzQix1RUFBZ0I7QUFDdEMsaUJBQWlCLDREQUFXO0FBQzVCLHNCQUFzQix1RUFBZ0I7QUFDdEMscUJBQXFCLG9FQUFlO0FBQ3BDLGtCQUFrQiw4REFBWTtBQUM5QixnQkFBZ0IsMERBQVU7QUFDMUIscUJBQXFCLHFFQUFlO0FBQ3BDLGlCQUFpQiw0REFBVztBQUM1QixpQkFBaUIsNERBQVc7QUFDNUIsZUFBZSx3REFBUztBQUN4QixrQkFBa0IsOERBQVk7QUFDOUIsc0JBQXNCLHNFQUFnQjtBQUN0Qyx5QkFBeUIsNkVBQW1CO0FBQzVDLG1CQUFtQixnRUFBYTtBQUNoQyxvQkFBb0Isa0VBQWM7QUFDbEMsbUJBQW1CLGdFQUFhO0FBQ2hDLGlCQUFpQiw0REFBVztBQUM1QixnQkFBZ0IsMERBQVU7QUFDMUIsaUJBQWlCLDREQUFXO0FBQzVCLG1CQUFtQixnRUFBYTtBQUNoQztBQUNBLENBQUMiLCJmaWxlIjoiMjQ4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uL3V0aWxzL3BsdWdpbnMnOyAvLyBDb21wb25lbnQgZ3JvdXAgcGx1Z2luc1xuXG5pbXBvcnQgeyBBbGVydFBsdWdpbiB9IGZyb20gJy4vYWxlcnQnO1xuaW1wb3J0IHsgQmFkZ2VQbHVnaW4gfSBmcm9tICcuL2JhZGdlJztcbmltcG9ydCB7IEJyZWFkY3J1bWJQbHVnaW4gfSBmcm9tICcuL2JyZWFkY3J1bWInO1xuaW1wb3J0IHsgQnV0dG9uUGx1Z2luIH0gZnJvbSAnLi9idXR0b24nO1xuaW1wb3J0IHsgQnV0dG9uR3JvdXBQbHVnaW4gfSBmcm9tICcuL2J1dHRvbi1ncm91cCc7XG5pbXBvcnQgeyBCdXR0b25Ub29sYmFyUGx1Z2luIH0gZnJvbSAnLi9idXR0b24tdG9vbGJhcic7XG5pbXBvcnQgeyBDYXJkUGx1Z2luIH0gZnJvbSAnLi9jYXJkJztcbmltcG9ydCB7IENhcm91c2VsUGx1Z2luIH0gZnJvbSAnLi9jYXJvdXNlbCc7XG5pbXBvcnQgeyBDb2xsYXBzZVBsdWdpbiB9IGZyb20gJy4vY29sbGFwc2UnO1xuaW1wb3J0IHsgRHJvcGRvd25QbHVnaW4gfSBmcm9tICcuL2Ryb3Bkb3duJztcbmltcG9ydCB7IEVtYmVkUGx1Z2luIH0gZnJvbSAnLi9lbWJlZCc7XG5pbXBvcnQgeyBGb3JtUGx1Z2luIH0gZnJvbSAnLi9mb3JtJztcbmltcG9ydCB7IEZvcm1Hcm91cFBsdWdpbiB9IGZyb20gJy4vZm9ybS1ncm91cCc7XG5pbXBvcnQgeyBGb3JtQ2hlY2tib3hQbHVnaW4gfSBmcm9tICcuL2Zvcm0tY2hlY2tib3gnO1xuaW1wb3J0IHsgRm9ybVJhZGlvUGx1Z2luIH0gZnJvbSAnLi9mb3JtLXJhZGlvJztcbmltcG9ydCB7IEZvcm1JbnB1dFBsdWdpbiB9IGZyb20gJy4vZm9ybS1pbnB1dCc7XG5pbXBvcnQgeyBGb3JtVGV4dGFyZWFQbHVnaW4gfSBmcm9tICcuL2Zvcm0tdGV4dGFyZWEnO1xuaW1wb3J0IHsgRm9ybUZpbGVQbHVnaW4gfSBmcm9tICcuL2Zvcm0tZmlsZSc7XG5pbXBvcnQgeyBGb3JtU2VsZWN0UGx1Z2luIH0gZnJvbSAnLi9mb3JtLXNlbGVjdCc7XG5pbXBvcnQgeyBJbWFnZVBsdWdpbiB9IGZyb20gJy4vaW1hZ2UnO1xuaW1wb3J0IHsgSW5wdXRHcm91cFBsdWdpbiB9IGZyb20gJy4vaW5wdXQtZ3JvdXAnO1xuaW1wb3J0IHsgSnVtYm90cm9uUGx1Z2luIH0gZnJvbSAnLi9qdW1ib3Ryb24nO1xuaW1wb3J0IHsgTGF5b3V0UGx1Z2luIH0gZnJvbSAnLi9sYXlvdXQnO1xuaW1wb3J0IHsgTGlua1BsdWdpbiB9IGZyb20gJy4vbGluayc7XG5pbXBvcnQgeyBMaXN0R3JvdXBQbHVnaW4gfSBmcm9tICcuL2xpc3QtZ3JvdXAnO1xuaW1wb3J0IHsgTWVkaWFQbHVnaW4gfSBmcm9tICcuL21lZGlhJztcbmltcG9ydCB7IE1vZGFsUGx1Z2luIH0gZnJvbSAnLi9tb2RhbCc7XG5pbXBvcnQgeyBOYXZQbHVnaW4gfSBmcm9tICcuL25hdic7XG5pbXBvcnQgeyBOYXZiYXJQbHVnaW4gfSBmcm9tICcuL25hdmJhcic7XG5pbXBvcnQgeyBQYWdpbmF0aW9uUGx1Z2luIH0gZnJvbSAnLi9wYWdpbmF0aW9uJztcbmltcG9ydCB7IFBhZ2luYXRpb25OYXZQbHVnaW4gfSBmcm9tICcuL3BhZ2luYXRpb24tbmF2JztcbmltcG9ydCB7IFBvcG92ZXJQbHVnaW4gfSBmcm9tICcuL3BvcG92ZXInO1xuaW1wb3J0IHsgUHJvZ3Jlc3NQbHVnaW4gfSBmcm9tICcuL3Byb2dyZXNzJztcbmltcG9ydCB7IFNwaW5uZXJQbHVnaW4gfSBmcm9tICcuL3NwaW5uZXInOyAvLyBUYWJsZSBwbHVnaW4gaW5jbHVkZXMgVGFibGVMaXRlUGx1Z2luIGFuZCBUYWJsZVNpbXBsZVBsdWdpblxuXG5pbXBvcnQgeyBUYWJsZVBsdWdpbiB9IGZyb20gJy4vdGFibGUnO1xuaW1wb3J0IHsgVGFic1BsdWdpbiB9IGZyb20gJy4vdGFicyc7XG5pbXBvcnQgeyBUb2FzdFBsdWdpbiB9IGZyb20gJy4vdG9hc3QnO1xuaW1wb3J0IHsgVG9vbHRpcFBsdWdpbiB9IGZyb20gJy4vdG9vbHRpcCc7IC8vIE1haW4gcGx1Z2luIHRvIGluc3RhbGwgYWxsIGNvbXBvbmVudCBncm91cCBwbHVnaW5zXG5cbmV4cG9ydCB2YXIgY29tcG9uZW50c1BsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgcGx1Z2luczoge1xuICAgIEFsZXJ0UGx1Z2luOiBBbGVydFBsdWdpbixcbiAgICBCYWRnZVBsdWdpbjogQmFkZ2VQbHVnaW4sXG4gICAgQnJlYWRjcnVtYlBsdWdpbjogQnJlYWRjcnVtYlBsdWdpbixcbiAgICBCdXR0b25QbHVnaW46IEJ1dHRvblBsdWdpbixcbiAgICBCdXR0b25Hcm91cFBsdWdpbjogQnV0dG9uR3JvdXBQbHVnaW4sXG4gICAgQnV0dG9uVG9vbGJhclBsdWdpbjogQnV0dG9uVG9vbGJhclBsdWdpbixcbiAgICBDYXJkUGx1Z2luOiBDYXJkUGx1Z2luLFxuICAgIENhcm91c2VsUGx1Z2luOiBDYXJvdXNlbFBsdWdpbixcbiAgICBDb2xsYXBzZVBsdWdpbjogQ29sbGFwc2VQbHVnaW4sXG4gICAgRHJvcGRvd25QbHVnaW46IERyb3Bkb3duUGx1Z2luLFxuICAgIEVtYmVkUGx1Z2luOiBFbWJlZFBsdWdpbixcbiAgICBGb3JtUGx1Z2luOiBGb3JtUGx1Z2luLFxuICAgIEZvcm1Hcm91cFBsdWdpbjogRm9ybUdyb3VwUGx1Z2luLFxuICAgIEZvcm1DaGVja2JveFBsdWdpbjogRm9ybUNoZWNrYm94UGx1Z2luLFxuICAgIEZvcm1SYWRpb1BsdWdpbjogRm9ybVJhZGlvUGx1Z2luLFxuICAgIEZvcm1JbnB1dFBsdWdpbjogRm9ybUlucHV0UGx1Z2luLFxuICAgIEZvcm1UZXh0YXJlYVBsdWdpbjogRm9ybVRleHRhcmVhUGx1Z2luLFxuICAgIEZvcm1GaWxlUGx1Z2luOiBGb3JtRmlsZVBsdWdpbixcbiAgICBGb3JtU2VsZWN0UGx1Z2luOiBGb3JtU2VsZWN0UGx1Z2luLFxuICAgIEltYWdlUGx1Z2luOiBJbWFnZVBsdWdpbixcbiAgICBJbnB1dEdyb3VwUGx1Z2luOiBJbnB1dEdyb3VwUGx1Z2luLFxuICAgIEp1bWJvdHJvblBsdWdpbjogSnVtYm90cm9uUGx1Z2luLFxuICAgIExheW91dFBsdWdpbjogTGF5b3V0UGx1Z2luLFxuICAgIExpbmtQbHVnaW46IExpbmtQbHVnaW4sXG4gICAgTGlzdEdyb3VwUGx1Z2luOiBMaXN0R3JvdXBQbHVnaW4sXG4gICAgTWVkaWFQbHVnaW46IE1lZGlhUGx1Z2luLFxuICAgIE1vZGFsUGx1Z2luOiBNb2RhbFBsdWdpbixcbiAgICBOYXZQbHVnaW46IE5hdlBsdWdpbixcbiAgICBOYXZiYXJQbHVnaW46IE5hdmJhclBsdWdpbixcbiAgICBQYWdpbmF0aW9uUGx1Z2luOiBQYWdpbmF0aW9uUGx1Z2luLFxuICAgIFBhZ2luYXRpb25OYXZQbHVnaW46IFBhZ2luYXRpb25OYXZQbHVnaW4sXG4gICAgUG9wb3ZlclBsdWdpbjogUG9wb3ZlclBsdWdpbixcbiAgICBQcm9ncmVzc1BsdWdpbjogUHJvZ3Jlc3NQbHVnaW4sXG4gICAgU3Bpbm5lclBsdWdpbjogU3Bpbm5lclBsdWdpbixcbiAgICBUYWJsZVBsdWdpbjogVGFibGVQbHVnaW4sXG4gICAgVGFic1BsdWdpbjogVGFic1BsdWdpbixcbiAgICBUb2FzdFBsdWdpbjogVG9hc3RQbHVnaW4sXG4gICAgVG9vbHRpcFBsdWdpbjogVG9vbHRpcFBsdWdpblxuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAyNDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///248\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return componentsPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_plugins__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__alert__ = __webpack_require__(102);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__badge__ = __webpack_require__(104);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__breadcrumb__ = __webpack_require__(108);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__button__ = __webpack_require__(111);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__button_group__ = __webpack_require__(112);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__button_toolbar__ = __webpack_require__(114);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__card__ = __webpack_require__(116);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__carousel__ = __webpack_require__(122);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__collapse__ = __webpack_require__(63);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__dropdown__ = __webpack_require__(40);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__embed__ = __webpack_require__(135);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__form__ = __webpack_require__(137);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__form_group__ = __webpack_require__(139);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__form_checkbox__ = __webpack_require__(141);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__form_radio__ = __webpack_require__(145);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__form_input__ = __webpack_require__(147);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__form_textarea__ = __webpack_require__(152);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__form_file__ = __webpack_require__(154);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__form_select__ = __webpack_require__(157);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__image__ = __webpack_require__(159);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__input_group__ = __webpack_require__(160);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__jumbotron__ = __webpack_require__(162);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__layout__ = __webpack_require__(164);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__link__ = __webpack_require__(166);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__list_group__ = __webpack_require__(167);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__media__ = __webpack_require__(170);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__modal__ = __webpack_require__(172);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__nav__ = __webpack_require__(80);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__navbar__ = __webpack_require__(178);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__pagination__ = __webpack_require__(183);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__pagination_nav__ = __webpack_require__(187);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__popover__ = __webpack_require__(189);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__progress__ = __webpack_require__(194);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__spinner__ = __webpack_require__(196);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__table__ = __webpack_require__(198);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__tabs__ = __webpack_require__(213);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__toast__ = __webpack_require__(216);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__tooltip__ = __webpack_require__(219);\n // Component group plugins\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 // Table plugin includes TableLitePlugin and TableSimplePlugin\n\n\n\n\n // Main plugin to install all component group plugins\n\nvar componentsPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_0__utils_plugins__[\"b\" /* pluginFactory */])({\n plugins: {\n AlertPlugin: __WEBPACK_IMPORTED_MODULE_1__alert__[\"a\" /* AlertPlugin */],\n BadgePlugin: __WEBPACK_IMPORTED_MODULE_2__badge__[\"a\" /* BadgePlugin */],\n BreadcrumbPlugin: __WEBPACK_IMPORTED_MODULE_3__breadcrumb__[\"a\" /* BreadcrumbPlugin */],\n ButtonPlugin: __WEBPACK_IMPORTED_MODULE_4__button__[\"a\" /* ButtonPlugin */],\n ButtonGroupPlugin: __WEBPACK_IMPORTED_MODULE_5__button_group__[\"a\" /* ButtonGroupPlugin */],\n ButtonToolbarPlugin: __WEBPACK_IMPORTED_MODULE_6__button_toolbar__[\"a\" /* ButtonToolbarPlugin */],\n CardPlugin: __WEBPACK_IMPORTED_MODULE_7__card__[\"a\" /* CardPlugin */],\n CarouselPlugin: __WEBPACK_IMPORTED_MODULE_8__carousel__[\"a\" /* CarouselPlugin */],\n CollapsePlugin: __WEBPACK_IMPORTED_MODULE_9__collapse__[\"a\" /* CollapsePlugin */],\n DropdownPlugin: __WEBPACK_IMPORTED_MODULE_10__dropdown__[\"a\" /* DropdownPlugin */],\n EmbedPlugin: __WEBPACK_IMPORTED_MODULE_11__embed__[\"a\" /* EmbedPlugin */],\n FormPlugin: __WEBPACK_IMPORTED_MODULE_12__form__[\"a\" /* FormPlugin */],\n FormGroupPlugin: __WEBPACK_IMPORTED_MODULE_13__form_group__[\"a\" /* FormGroupPlugin */],\n FormCheckboxPlugin: __WEBPACK_IMPORTED_MODULE_14__form_checkbox__[\"a\" /* FormCheckboxPlugin */],\n FormRadioPlugin: __WEBPACK_IMPORTED_MODULE_15__form_radio__[\"a\" /* FormRadioPlugin */],\n FormInputPlugin: __WEBPACK_IMPORTED_MODULE_16__form_input__[\"a\" /* FormInputPlugin */],\n FormTextareaPlugin: __WEBPACK_IMPORTED_MODULE_17__form_textarea__[\"a\" /* FormTextareaPlugin */],\n FormFilePlugin: __WEBPACK_IMPORTED_MODULE_18__form_file__[\"a\" /* FormFilePlugin */],\n FormSelectPlugin: __WEBPACK_IMPORTED_MODULE_19__form_select__[\"a\" /* FormSelectPlugin */],\n ImagePlugin: __WEBPACK_IMPORTED_MODULE_20__image__[\"a\" /* ImagePlugin */],\n InputGroupPlugin: __WEBPACK_IMPORTED_MODULE_21__input_group__[\"a\" /* InputGroupPlugin */],\n JumbotronPlugin: __WEBPACK_IMPORTED_MODULE_22__jumbotron__[\"a\" /* JumbotronPlugin */],\n LayoutPlugin: __WEBPACK_IMPORTED_MODULE_23__layout__[\"a\" /* LayoutPlugin */],\n LinkPlugin: __WEBPACK_IMPORTED_MODULE_24__link__[\"a\" /* LinkPlugin */],\n ListGroupPlugin: __WEBPACK_IMPORTED_MODULE_25__list_group__[\"a\" /* ListGroupPlugin */],\n MediaPlugin: __WEBPACK_IMPORTED_MODULE_26__media__[\"a\" /* MediaPlugin */],\n ModalPlugin: __WEBPACK_IMPORTED_MODULE_27__modal__[\"a\" /* ModalPlugin */],\n NavPlugin: __WEBPACK_IMPORTED_MODULE_28__nav__[\"a\" /* NavPlugin */],\n NavbarPlugin: __WEBPACK_IMPORTED_MODULE_29__navbar__[\"a\" /* NavbarPlugin */],\n PaginationPlugin: __WEBPACK_IMPORTED_MODULE_30__pagination__[\"a\" /* PaginationPlugin */],\n PaginationNavPlugin: __WEBPACK_IMPORTED_MODULE_31__pagination_nav__[\"a\" /* PaginationNavPlugin */],\n PopoverPlugin: __WEBPACK_IMPORTED_MODULE_32__popover__[\"a\" /* PopoverPlugin */],\n ProgressPlugin: __WEBPACK_IMPORTED_MODULE_33__progress__[\"a\" /* ProgressPlugin */],\n SpinnerPlugin: __WEBPACK_IMPORTED_MODULE_34__spinner__[\"a\" /* SpinnerPlugin */],\n TablePlugin: __WEBPACK_IMPORTED_MODULE_35__table__[\"a\" /* TablePlugin */],\n TabsPlugin: __WEBPACK_IMPORTED_MODULE_36__tabs__[\"a\" /* TabsPlugin */],\n ToastPlugin: __WEBPACK_IMPORTED_MODULE_37__toast__[\"a\" /* ToastPlugin */],\n TooltipPlugin: __WEBPACK_IMPORTED_MODULE_38__tooltip__[\"a\" /* TooltipPlugin */]\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9pbmRleC5qcz9mYzYwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlEOztBQUVYO0FBQ0E7QUFDVTtBQUNSO0FBQ1c7QUFDSTtBQUNuQjtBQUNRO0FBQ0E7QUFDQTtBQUNOO0FBQ0Y7QUFDVztBQUNNO0FBQ047QUFDQTtBQUNNO0FBQ1I7QUFDSTtBQUNYO0FBQ1c7QUFDSDtBQUNOO0FBQ0o7QUFDVztBQUNUO0FBQ0E7QUFDSjtBQUNNO0FBQ1E7QUFDTztBQUNiO0FBQ0U7QUFDRjs7QUFFSjtBQUNGO0FBQ0U7QUFDSTs7QUFFbkM7QUFDUDtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxpQkFBaUIsMkRBQVc7QUFDNUIsaUJBQWlCLDJEQUFXO0FBQzVCLHNCQUFzQixxRUFBZ0I7QUFDdEMsa0JBQWtCLDZEQUFZO0FBQzlCLHVCQUF1Qix3RUFBaUI7QUFDeEMseUJBQXlCLDRFQUFtQjtBQUM1QyxnQkFBZ0IseURBQVU7QUFDMUIsb0JBQW9CLGlFQUFjO0FBQ2xDLG9CQUFvQixpRUFBYztBQUNsQyxvQkFBb0Isa0VBQWM7QUFDbEMsaUJBQWlCLDREQUFXO0FBQzVCLGdCQUFnQiwwREFBVTtBQUMxQixxQkFBcUIscUVBQWU7QUFDcEMsd0JBQXdCLDJFQUFrQjtBQUMxQyxxQkFBcUIscUVBQWU7QUFDcEMscUJBQXFCLHFFQUFlO0FBQ3BDLHdCQUF3QiwyRUFBa0I7QUFDMUMsb0JBQW9CLG1FQUFjO0FBQ2xDLHNCQUFzQix1RUFBZ0I7QUFDdEMsaUJBQWlCLDREQUFXO0FBQzVCLHNCQUFzQix1RUFBZ0I7QUFDdEMscUJBQXFCLG9FQUFlO0FBQ3BDLGtCQUFrQiw4REFBWTtBQUM5QixnQkFBZ0IsMERBQVU7QUFDMUIscUJBQXFCLHFFQUFlO0FBQ3BDLGlCQUFpQiw0REFBVztBQUM1QixpQkFBaUIsNERBQVc7QUFDNUIsZUFBZSx3REFBUztBQUN4QixrQkFBa0IsOERBQVk7QUFDOUIsc0JBQXNCLHNFQUFnQjtBQUN0Qyx5QkFBeUIsNkVBQW1CO0FBQzVDLG1CQUFtQixnRUFBYTtBQUNoQyxvQkFBb0Isa0VBQWM7QUFDbEMsbUJBQW1CLGdFQUFhO0FBQ2hDLGlCQUFpQiw0REFBVztBQUM1QixnQkFBZ0IsMERBQVU7QUFDMUIsaUJBQWlCLDREQUFXO0FBQzVCLG1CQUFtQixnRUFBYTtBQUNoQztBQUNBLENBQUMiLCJmaWxlIjoiMjQ4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uL3V0aWxzL3BsdWdpbnMnOyAvLyBDb21wb25lbnQgZ3JvdXAgcGx1Z2luc1xuXG5pbXBvcnQgeyBBbGVydFBsdWdpbiB9IGZyb20gJy4vYWxlcnQnO1xuaW1wb3J0IHsgQmFkZ2VQbHVnaW4gfSBmcm9tICcuL2JhZGdlJztcbmltcG9ydCB7IEJyZWFkY3J1bWJQbHVnaW4gfSBmcm9tICcuL2JyZWFkY3J1bWInO1xuaW1wb3J0IHsgQnV0dG9uUGx1Z2luIH0gZnJvbSAnLi9idXR0b24nO1xuaW1wb3J0IHsgQnV0dG9uR3JvdXBQbHVnaW4gfSBmcm9tICcuL2J1dHRvbi1ncm91cCc7XG5pbXBvcnQgeyBCdXR0b25Ub29sYmFyUGx1Z2luIH0gZnJvbSAnLi9idXR0b24tdG9vbGJhcic7XG5pbXBvcnQgeyBDYXJkUGx1Z2luIH0gZnJvbSAnLi9jYXJkJztcbmltcG9ydCB7IENhcm91c2VsUGx1Z2luIH0gZnJvbSAnLi9jYXJvdXNlbCc7XG5pbXBvcnQgeyBDb2xsYXBzZVBsdWdpbiB9IGZyb20gJy4vY29sbGFwc2UnO1xuaW1wb3J0IHsgRHJvcGRvd25QbHVnaW4gfSBmcm9tICcuL2Ryb3Bkb3duJztcbmltcG9ydCB7IEVtYmVkUGx1Z2luIH0gZnJvbSAnLi9lbWJlZCc7XG5pbXBvcnQgeyBGb3JtUGx1Z2luIH0gZnJvbSAnLi9mb3JtJztcbmltcG9ydCB7IEZvcm1Hcm91cFBsdWdpbiB9IGZyb20gJy4vZm9ybS1ncm91cCc7XG5pbXBvcnQgeyBGb3JtQ2hlY2tib3hQbHVnaW4gfSBmcm9tICcuL2Zvcm0tY2hlY2tib3gnO1xuaW1wb3J0IHsgRm9ybVJhZGlvUGx1Z2luIH0gZnJvbSAnLi9mb3JtLXJhZGlvJztcbmltcG9ydCB7IEZvcm1JbnB1dFBsdWdpbiB9IGZyb20gJy4vZm9ybS1pbnB1dCc7XG5pbXBvcnQgeyBGb3JtVGV4dGFyZWFQbHVnaW4gfSBmcm9tICcuL2Zvcm0tdGV4dGFyZWEnO1xuaW1wb3J0IHsgRm9ybUZpbGVQbHVnaW4gfSBmcm9tICcuL2Zvcm0tZmlsZSc7XG5pbXBvcnQgeyBGb3JtU2VsZWN0UGx1Z2luIH0gZnJvbSAnLi9mb3JtLXNlbGVjdCc7XG5pbXBvcnQgeyBJbWFnZVBsdWdpbiB9IGZyb20gJy4vaW1hZ2UnO1xuaW1wb3J0IHsgSW5wdXRHcm91cFBsdWdpbiB9IGZyb20gJy4vaW5wdXQtZ3JvdXAnO1xuaW1wb3J0IHsgSnVtYm90cm9uUGx1Z2luIH0gZnJvbSAnLi9qdW1ib3Ryb24nO1xuaW1wb3J0IHsgTGF5b3V0UGx1Z2luIH0gZnJvbSAnLi9sYXlvdXQnO1xuaW1wb3J0IHsgTGlua1BsdWdpbiB9IGZyb20gJy4vbGluayc7XG5pbXBvcnQgeyBMaXN0R3JvdXBQbHVnaW4gfSBmcm9tICcuL2xpc3QtZ3JvdXAnO1xuaW1wb3J0IHsgTWVkaWFQbHVnaW4gfSBmcm9tICcuL21lZGlhJztcbmltcG9ydCB7IE1vZGFsUGx1Z2luIH0gZnJvbSAnLi9tb2RhbCc7XG5pbXBvcnQgeyBOYXZQbHVnaW4gfSBmcm9tICcuL25hdic7XG5pbXBvcnQgeyBOYXZiYXJQbHVnaW4gfSBmcm9tICcuL25hdmJhcic7XG5pbXBvcnQgeyBQYWdpbmF0aW9uUGx1Z2luIH0gZnJvbSAnLi9wYWdpbmF0aW9uJztcbmltcG9ydCB7IFBhZ2luYXRpb25OYXZQbHVnaW4gfSBmcm9tICcuL3BhZ2luYXRpb24tbmF2JztcbmltcG9ydCB7IFBvcG92ZXJQbHVnaW4gfSBmcm9tICcuL3BvcG92ZXInO1xuaW1wb3J0IHsgUHJvZ3Jlc3NQbHVnaW4gfSBmcm9tICcuL3Byb2dyZXNzJztcbmltcG9ydCB7IFNwaW5uZXJQbHVnaW4gfSBmcm9tICcuL3NwaW5uZXInOyAvLyBUYWJsZSBwbHVnaW4gaW5jbHVkZXMgVGFibGVMaXRlUGx1Z2luIGFuZCBUYWJsZVNpbXBsZVBsdWdpblxuXG5pbXBvcnQgeyBUYWJsZVBsdWdpbiB9IGZyb20gJy4vdGFibGUnO1xuaW1wb3J0IHsgVGFic1BsdWdpbiB9IGZyb20gJy4vdGFicyc7XG5pbXBvcnQgeyBUb2FzdFBsdWdpbiB9IGZyb20gJy4vdG9hc3QnO1xuaW1wb3J0IHsgVG9vbHRpcFBsdWdpbiB9IGZyb20gJy4vdG9vbHRpcCc7IC8vIE1haW4gcGx1Z2luIHRvIGluc3RhbGwgYWxsIGNvbXBvbmVudCBncm91cCBwbHVnaW5zXG5cbmV4cG9ydCB2YXIgY29tcG9uZW50c1BsdWdpbiA9XG4vKiNfX1BVUkVfXyovXG5wbHVnaW5GYWN0b3J5KHtcbiAgcGx1Z2luczoge1xuICAgIEFsZXJ0UGx1Z2luOiBBbGVydFBsdWdpbixcbiAgICBCYWRnZVBsdWdpbjogQmFkZ2VQbHVnaW4sXG4gICAgQnJlYWRjcnVtYlBsdWdpbjogQnJlYWRjcnVtYlBsdWdpbixcbiAgICBCdXR0b25QbHVnaW46IEJ1dHRvblBsdWdpbixcbiAgICBCdXR0b25Hcm91cFBsdWdpbjogQnV0dG9uR3JvdXBQbHVnaW4sXG4gICAgQnV0dG9uVG9vbGJhclBsdWdpbjogQnV0dG9uVG9vbGJhclBsdWdpbixcbiAgICBDYXJkUGx1Z2luOiBDYXJkUGx1Z2luLFxuICAgIENhcm91c2VsUGx1Z2luOiBDYXJvdXNlbFBsdWdpbixcbiAgICBDb2xsYXBzZVBsdWdpbjogQ29sbGFwc2VQbHVnaW4sXG4gICAgRHJvcGRvd25QbHVnaW46IERyb3Bkb3duUGx1Z2luLFxuICAgIEVtYmVkUGx1Z2luOiBFbWJlZFBsdWdpbixcbiAgICBGb3JtUGx1Z2luOiBGb3JtUGx1Z2luLFxuICAgIEZvcm1Hcm91cFBsdWdpbjogRm9ybUdyb3VwUGx1Z2luLFxuICAgIEZvcm1DaGVja2JveFBsdWdpbjogRm9ybUNoZWNrYm94UGx1Z2luLFxuICAgIEZvcm1SYWRpb1BsdWdpbjogRm9ybVJhZGlvUGx1Z2luLFxuICAgIEZvcm1JbnB1dFBsdWdpbjogRm9ybUlucHV0UGx1Z2luLFxuICAgIEZvcm1UZXh0YXJlYVBsdWdpbjogRm9ybVRleHRhcmVhUGx1Z2luLFxuICAgIEZvcm1GaWxlUGx1Z2luOiBGb3JtRmlsZVBsdWdpbixcbiAgICBGb3JtU2VsZWN0UGx1Z2luOiBGb3JtU2VsZWN0UGx1Z2luLFxuICAgIEltYWdlUGx1Z2luOiBJbWFnZVBsdWdpbixcbiAgICBJbnB1dEdyb3VwUGx1Z2luOiBJbnB1dEdyb3VwUGx1Z2luLFxuICAgIEp1bWJvdHJvblBsdWdpbjogSnVtYm90cm9uUGx1Z2luLFxuICAgIExheW91dFBsdWdpbjogTGF5b3V0UGx1Z2luLFxuICAgIExpbmtQbHVnaW46IExpbmtQbHVnaW4sXG4gICAgTGlzdEdyb3VwUGx1Z2luOiBMaXN0R3JvdXBQbHVnaW4sXG4gICAgTWVkaWFQbHVnaW46IE1lZGlhUGx1Z2luLFxuICAgIE1vZGFsUGx1Z2luOiBNb2RhbFBsdWdpbixcbiAgICBOYXZQbHVnaW46IE5hdlBsdWdpbixcbiAgICBOYXZiYXJQbHVnaW46IE5hdmJhclBsdWdpbixcbiAgICBQYWdpbmF0aW9uUGx1Z2luOiBQYWdpbmF0aW9uUGx1Z2luLFxuICAgIFBhZ2luYXRpb25OYXZQbHVnaW46IFBhZ2luYXRpb25OYXZQbHVnaW4sXG4gICAgUG9wb3ZlclBsdWdpbjogUG9wb3ZlclBsdWdpbixcbiAgICBQcm9ncmVzc1BsdWdpbjogUHJvZ3Jlc3NQbHVnaW4sXG4gICAgU3Bpbm5lclBsdWdpbjogU3Bpbm5lclBsdWdpbixcbiAgICBUYWJsZVBsdWdpbjogVGFibGVQbHVnaW4sXG4gICAgVGFic1BsdWdpbjogVGFic1BsdWdpbixcbiAgICBUb2FzdFBsdWdpbjogVG9hc3RQbHVnaW4sXG4gICAgVG9vbHRpcFBsdWdpbjogVG9vbHRpcFBsdWdpblxuICB9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdnVlL2VzbS9jb21wb25lbnRzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAyNDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///248\n"); /***/ }), /* 249 */ @@ -1858,14 +1858,14 @@ eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BVPopper; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_popper_js__ = __webpack_require__(125);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_safe_types__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_bv_transition__ = __webpack_require__(30);\n// Base on-demand component for tooltip / popover templates\n//\n// Currently:\n// Responsible for positioning and transitioning the template\n// Templates are only instantiated when shown, and destroyed when hidden\n//\n\n\n\n\n\nvar NAME = 'BVPopper';\nvar AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left',\n TOPLEFT: 'top',\n TOPRIGHT: 'top',\n RIGHTTOP: 'right',\n RIGHTBOTTOM: 'right',\n BOTTOMLEFT: 'bottom',\n BOTTOMRIGHT: 'bottom',\n LEFTTOP: 'left',\n LEFTBOTTOM: 'left'\n};\nvar OffsetMap = {\n AUTO: 0,\n TOPLEFT: -1,\n TOP: 0,\n TOPRIGHT: +1,\n RIGHTTOP: -1,\n RIGHT: 0,\n RIGHTBOTTOM: +1,\n BOTTOMLEFT: -1,\n BOTTOM: 0,\n BOTTOMRIGHT: +1,\n LEFTTOP: -1,\n LEFT: 0,\n LEFTBOTTOM: +1\n}; // @vue/component\n\nvar BVPopper =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n props: {\n target: {\n // Element that the tooltip/popover is positioned relative to\n type: [__WEBPACK_IMPORTED_MODULE_3__utils_safe_types__[\"b\" /* HTMLElement */], __WEBPACK_IMPORTED_MODULE_3__utils_safe_types__[\"c\" /* SVGElement */]],\n default: null\n },\n placement: {\n type: String,\n default: 'top'\n },\n fallbackPlacement: {\n type: [String, Array],\n default: 'flip'\n },\n offset: {\n type: Number,\n default: 0\n },\n boundary: {\n // 'scrollParent', 'viewport', 'window', or Element\n type: [String, __WEBPACK_IMPORTED_MODULE_3__utils_safe_types__[\"b\" /* HTMLElement */]],\n default: 'scrollParent'\n },\n boundaryPadding: {\n // Tooltip/popover will try and stay away from\n // boundary edge by this many pixels\n type: Number,\n default: 5\n },\n arrowPadding: {\n // The minimum distance (in `px`) from the edge of the\n // tooltip/popover that the arrow can be positioned\n type: Number,\n default: 6\n }\n },\n data: function data() {\n return {\n // reactive props set by parent\n noFade: false,\n // State related data\n localShow: true,\n attachment: this.getAttachment(this.placement)\n };\n },\n computed: {\n templateType: function templateType()\n /* istanbul ignore next */\n {\n // Overridden by template component\n return 'unknown';\n },\n popperConfig: function popperConfig() {\n var _this = this;\n\n var placement = this.placement;\n return {\n placement: this.getAttachment(placement),\n modifiers: {\n offset: {\n offset: this.getOffset(placement)\n },\n flip: {\n behavior: this.fallbackPlacement\n },\n // `arrow.element` can also be a reference to an HTML Element\n // maybe we should make this a `$ref` in the templates?\n arrow: {\n element: '.arrow'\n },\n preventOverflow: {\n padding: this.boundaryPadding,\n boundariesElement: this.boundary\n }\n },\n onCreate: function onCreate(data) {\n // Handle flipping arrow classes\n if (data.originalPlacement !== data.placement) {\n /* istanbul ignore next: can't test in JSDOM */\n _this.popperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n // Handle flipping arrow classes\n _this.popperPlacementChange(data);\n }\n };\n }\n },\n created: function created() {\n var _this2 = this;\n\n // Note: We are created on-demand, and should be guaranteed that\n // DOM is rendered/ready by the time the created hook runs\n this.$_popper = null; // Ensure we show as we mount\n\n this.localShow = true; // Create popper instance before shown\n\n this.$on('show', function (el) {\n _this2.popperCreate(el);\n }); // Self destruct once hidden\n\n this.$on('hidden', function () {\n _this2.$nextTick(_this2.$destroy);\n }); // If parent is destroyed, ensure we are destroyed\n\n this.$parent.$once('hook:destroyed', this.$destroy);\n },\n beforeMount: function beforeMount() {\n // Ensure that the attachment position is correct before mounting\n // as our propsData is added after `new Template({...})`\n this.attachment = this.getAttachment(this.placement);\n },\n mounted: function mounted() {// TBD\n },\n updated: function updated() {\n // Update popper if needed\n // TODO: Should this be a watcher on `this.popperConfig` instead?\n this.popperUpdate();\n },\n beforeDestroy: function beforeDestroy() {\n this.popperDestroy();\n },\n destroyed: function destroyed() {\n // Make sure template is removed from DOM\n var el = this.$el;\n el && el.parentNode && el.parentNode.removeChild(el);\n },\n methods: {\n // \"Public\" method to trigger hide template\n hide: function hide() {\n this.localShow = false;\n },\n // Private\n getAttachment: function getAttachment(placement) {\n return AttachmentMap[String(placement).toUpperCase()] || 'auto';\n },\n getOffset: function getOffset(placement) {\n if (!this.offset) {\n // Could set a ref for the arrow element\n var arrow = this.$refs.arrow || Object(__WEBPACK_IMPORTED_MODULE_2__utils_dom__[\"x\" /* select */])('.arrow', this.$el);\n var arrowOffset = (parseFloat(Object(__WEBPACK_IMPORTED_MODULE_2__utils_dom__[\"j\" /* getCS */])(arrow).width) || 0) + (parseFloat(this.arrowPadding) || 0);\n\n switch (OffsetMap[String(placement).toUpperCase()] || 0) {\n case +1:\n /* istanbul ignore next: can't test in JSDOM */\n return \"+50%p - \".concat(arrowOffset, \"px\");\n\n case -1:\n /* istanbul ignore next: can't test in JSDOM */\n return \"-50%p + \".concat(arrowOffset, \"px\");\n\n default:\n return 0;\n }\n }\n /* istanbul ignore next */\n\n\n return this.offset;\n },\n popperCreate: function popperCreate(el) {\n this.popperDestroy(); // We use `el` rather than `this.$el` just in case the original\n // mountpoint root element type was changed by the template\n\n this.$_popper = new __WEBPACK_IMPORTED_MODULE_1_popper_js__[\"a\" /* default */](this.target, el, this.popperConfig);\n },\n popperDestroy: function popperDestroy() {\n this.$_popper && this.$_popper.destroy();\n this.$_popper = null;\n },\n popperUpdate: function popperUpdate() {\n this.$_popper && this.$_popper.scheduleUpdate();\n },\n popperPlacementChange: function popperPlacementChange(data) {\n // Callback used by popper to adjust the arrow placement\n this.attachment = this.getAttachment(data.placement);\n },\n renderTemplate: function renderTemplate(h)\n /* istanbul ignore next */\n {\n // Will be overridden by templates\n return h('div');\n }\n },\n render: function render(h) {\n var _this3 = this;\n\n // Note: `show` and 'fade' classes are only appled during transition\n return h(__WEBPACK_IMPORTED_MODULE_4__utils_bv_transition__[\"a\" /* BVTransition */], {\n // Transitions as soon as mounted\n props: {\n appear: true,\n noFade: this.noFade\n },\n on: {\n // Events used by parent component/instance\n beforeEnter: function beforeEnter(el) {\n return _this3.$emit('show', el);\n },\n afterEnter: function afterEnter(el) {\n return _this3.$emit('shown', el);\n },\n beforeLeave: function beforeLeave(el) {\n return _this3.$emit('hide', el);\n },\n afterLeave: function afterLeave(el) {\n return _this3.$emit('hidden', el);\n }\n }\n }, [this.localShow ? this.renderTemplate(h) : h()]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90b29sdGlwL2hlbHBlcnMvYnYtcG9wcGVyLmpzPzM1MDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3FDO0FBQ047QUFDb0I7QUFDaUI7QUFDUjtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVLO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxzRUFBVyxFQUFFLHFFQUFVO0FBQ3BDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxxQkFBcUIsc0VBQVc7QUFDaEM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHlCQUF5Qjs7QUFFekIsMEJBQTBCOztBQUUxQjtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHNEQUFzRCxJQUFJO0FBQzFEO0FBQ0EsR0FBRztBQUNILCtCQUErQjtBQUMvQixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLGtFQUFNO0FBQzlDLHNDQUFzQyxpRUFBSzs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsMkJBQTJCO0FBQzNCOztBQUVBLDBCQUEwQiwwREFBTTtBQUNoQyxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0EsYUFBYSwwRUFBWTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjI1OC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEJhc2Ugb24tZGVtYW5kIGNvbXBvbmVudCBmb3IgdG9vbHRpcCAvIHBvcG92ZXIgdGVtcGxhdGVzXG4vL1xuLy8gQ3VycmVudGx5OlxuLy8gICBSZXNwb25zaWJsZSBmb3IgcG9zaXRpb25pbmcgYW5kIHRyYW5zaXRpb25pbmcgdGhlIHRlbXBsYXRlXG4vLyAgIFRlbXBsYXRlcyBhcmUgb25seSBpbnN0YW50aWF0ZWQgd2hlbiBzaG93biwgYW5kIGRlc3Ryb3llZCB3aGVuIGhpZGRlblxuLy9cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCBQb3BwZXIgZnJvbSAncG9wcGVyLmpzJztcbmltcG9ydCB7IGdldENTLCBzZWxlY3QgfSBmcm9tICcuLi8uLi8uLi91dGlscy9kb20nO1xuaW1wb3J0IHsgSFRNTEVsZW1lbnQsIFNWR0VsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zYWZlLXR5cGVzJztcbmltcG9ydCB7IEJWVHJhbnNpdGlvbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2J2LXRyYW5zaXRpb24nO1xudmFyIE5BTUUgPSAnQlZQb3BwZXInO1xudmFyIEF0dGFjaG1lbnRNYXAgPSB7XG4gIEFVVE86ICdhdXRvJyxcbiAgVE9QOiAndG9wJyxcbiAgUklHSFQ6ICdyaWdodCcsXG4gIEJPVFRPTTogJ2JvdHRvbScsXG4gIExFRlQ6ICdsZWZ0JyxcbiAgVE9QTEVGVDogJ3RvcCcsXG4gIFRPUFJJR0hUOiAndG9wJyxcbiAgUklHSFRUT1A6ICdyaWdodCcsXG4gIFJJR0hUQk9UVE9NOiAncmlnaHQnLFxuICBCT1RUT01MRUZUOiAnYm90dG9tJyxcbiAgQk9UVE9NUklHSFQ6ICdib3R0b20nLFxuICBMRUZUVE9QOiAnbGVmdCcsXG4gIExFRlRCT1RUT006ICdsZWZ0J1xufTtcbnZhciBPZmZzZXRNYXAgPSB7XG4gIEFVVE86IDAsXG4gIFRPUExFRlQ6IC0xLFxuICBUT1A6IDAsXG4gIFRPUFJJR0hUOiArMSxcbiAgUklHSFRUT1A6IC0xLFxuICBSSUdIVDogMCxcbiAgUklHSFRCT1RUT006ICsxLFxuICBCT1RUT01MRUZUOiAtMSxcbiAgQk9UVE9NOiAwLFxuICBCT1RUT01SSUdIVDogKzEsXG4gIExFRlRUT1A6IC0xLFxuICBMRUZUOiAwLFxuICBMRUZUQk9UVE9NOiArMVxufTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCVlBvcHBlciA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogTkFNRSxcbiAgcHJvcHM6IHtcbiAgICB0YXJnZXQ6IHtcbiAgICAgIC8vIEVsZW1lbnQgdGhhdCB0aGUgdG9vbHRpcC9wb3BvdmVyIGlzIHBvc2l0aW9uZWQgcmVsYXRpdmUgdG9cbiAgICAgIHR5cGU6IFtIVE1MRWxlbWVudCwgU1ZHRWxlbWVudF0sXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBwbGFjZW1lbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICd0b3AnXG4gICAgfSxcbiAgICBmYWxsYmFja1BsYWNlbWVudDoge1xuICAgICAgdHlwZTogW1N0cmluZywgQXJyYXldLFxuICAgICAgZGVmYXVsdDogJ2ZsaXAnXG4gICAgfSxcbiAgICBvZmZzZXQ6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9LFxuICAgIGJvdW5kYXJ5OiB7XG4gICAgICAvLyAnc2Nyb2xsUGFyZW50JywgJ3ZpZXdwb3J0JywgJ3dpbmRvdycsIG9yIEVsZW1lbnRcbiAgICAgIHR5cGU6IFtTdHJpbmcsIEhUTUxFbGVtZW50XSxcbiAgICAgIGRlZmF1bHQ6ICdzY3JvbGxQYXJlbnQnXG4gICAgfSxcbiAgICBib3VuZGFyeVBhZGRpbmc6IHtcbiAgICAgIC8vIFRvb2x0aXAvcG9wb3ZlciB3aWxsIHRyeSBhbmQgc3RheSBhd2F5IGZyb21cbiAgICAgIC8vIGJvdW5kYXJ5IGVkZ2UgYnkgdGhpcyBtYW55IHBpeGVsc1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogNVxuICAgIH0sXG4gICAgYXJyb3dQYWRkaW5nOiB7XG4gICAgICAvLyBUaGUgbWluaW11bSBkaXN0YW5jZSAoaW4gYHB4YCkgZnJvbSB0aGUgZWRnZSBvZiB0aGVcbiAgICAgIC8vIHRvb2x0aXAvcG9wb3ZlciB0aGF0IHRoZSBhcnJvdyBjYW4gYmUgcG9zaXRpb25lZFxuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogNlxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gcmVhY3RpdmUgcHJvcHMgc2V0IGJ5IHBhcmVudFxuICAgICAgbm9GYWRlOiBmYWxzZSxcbiAgICAgIC8vIFN0YXRlIHJlbGF0ZWQgZGF0YVxuICAgICAgbG9jYWxTaG93OiB0cnVlLFxuICAgICAgYXR0YWNobWVudDogdGhpcy5nZXRBdHRhY2htZW50KHRoaXMucGxhY2VtZW50KVxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgdGVtcGxhdGVUeXBlOiBmdW5jdGlvbiB0ZW1wbGF0ZVR5cGUoKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAge1xuICAgICAgLy8gT3ZlcnJpZGRlbiBieSB0ZW1wbGF0ZSBjb21wb25lbnRcbiAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgfSxcbiAgICBwb3BwZXJDb25maWc6IGZ1bmN0aW9uIHBvcHBlckNvbmZpZygpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBwbGFjZW1lbnQgPSB0aGlzLnBsYWNlbWVudDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBsYWNlbWVudDogdGhpcy5nZXRBdHRhY2htZW50KHBsYWNlbWVudCksXG4gICAgICAgIG1vZGlmaWVyczoge1xuICAgICAgICAgIG9mZnNldDoge1xuICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLmdldE9mZnNldChwbGFjZW1lbnQpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmbGlwOiB7XG4gICAgICAgICAgICBiZWhhdmlvcjogdGhpcy5mYWxsYmFja1BsYWNlbWVudFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gYGFycm93LmVsZW1lbnRgIGNhbiBhbHNvIGJlIGEgcmVmZXJlbmNlIHRvIGFuIEhUTUwgRWxlbWVudFxuICAgICAgICAgIC8vIG1heWJlIHdlIHNob3VsZCBtYWtlIHRoaXMgYSBgJHJlZmAgaW4gdGhlIHRlbXBsYXRlcz9cbiAgICAgICAgICBhcnJvdzoge1xuICAgICAgICAgICAgZWxlbWVudDogJy5hcnJvdydcbiAgICAgICAgICB9LFxuICAgICAgICAgIHByZXZlbnRPdmVyZmxvdzoge1xuICAgICAgICAgICAgcGFkZGluZzogdGhpcy5ib3VuZGFyeVBhZGRpbmcsXG4gICAgICAgICAgICBib3VuZGFyaWVzRWxlbWVudDogdGhpcy5ib3VuZGFyeVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25DcmVhdGU6IGZ1bmN0aW9uIG9uQ3JlYXRlKGRhdGEpIHtcbiAgICAgICAgICAvLyBIYW5kbGUgZmxpcHBpbmcgYXJyb3cgY2xhc3Nlc1xuICAgICAgICAgIGlmIChkYXRhLm9yaWdpbmFsUGxhY2VtZW50ICE9PSBkYXRhLnBsYWNlbWVudCkge1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGNhbid0IHRlc3QgaW4gSlNET00gKi9cbiAgICAgICAgICAgIF90aGlzLnBvcHBlclBsYWNlbWVudENoYW5nZShkYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uVXBkYXRlOiBmdW5jdGlvbiBvblVwZGF0ZShkYXRhKSB7XG4gICAgICAgICAgLy8gSGFuZGxlIGZsaXBwaW5nIGFycm93IGNsYXNzZXNcbiAgICAgICAgICBfdGhpcy5wb3BwZXJQbGFjZW1lbnRDaGFuZ2UoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgLy8gTm90ZTogV2UgYXJlIGNyZWF0ZWQgb24tZGVtYW5kLCBhbmQgc2hvdWxkIGJlIGd1YXJhbnRlZWQgdGhhdFxuICAgIC8vIERPTSBpcyByZW5kZXJlZC9yZWFkeSBieSB0aGUgdGltZSB0aGUgY3JlYXRlZCBob29rIHJ1bnNcbiAgICB0aGlzLiRfcG9wcGVyID0gbnVsbDsgLy8gRW5zdXJlIHdlIHNob3cgYXMgd2UgbW91bnRcblxuICAgIHRoaXMubG9jYWxTaG93ID0gdHJ1ZTsgLy8gQ3JlYXRlIHBvcHBlciBpbnN0YW5jZSBiZWZvcmUgc2hvd25cblxuICAgIHRoaXMuJG9uKCdzaG93JywgZnVuY3Rpb24gKGVsKSB7XG4gICAgICBfdGhpczIucG9wcGVyQ3JlYXRlKGVsKTtcbiAgICB9KTsgLy8gU2VsZiBkZXN0cnVjdCBvbmNlIGhpZGRlblxuXG4gICAgdGhpcy4kb24oJ2hpZGRlbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzMi4kbmV4dFRpY2soX3RoaXMyLiRkZXN0cm95KTtcbiAgICB9KTsgLy8gSWYgcGFyZW50IGlzIGRlc3Ryb3llZCwgZW5zdXJlIHdlIGFyZSBkZXN0cm95ZWRcblxuICAgIHRoaXMuJHBhcmVudC4kb25jZSgnaG9vazpkZXN0cm95ZWQnLCB0aGlzLiRkZXN0cm95KTtcbiAgfSxcbiAgYmVmb3JlTW91bnQ6IGZ1bmN0aW9uIGJlZm9yZU1vdW50KCkge1xuICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBhdHRhY2htZW50IHBvc2l0aW9uIGlzIGNvcnJlY3QgYmVmb3JlIG1vdW50aW5nXG4gICAgLy8gYXMgb3VyIHByb3BzRGF0YSBpcyBhZGRlZCBhZnRlciBgbmV3IFRlbXBsYXRlKHsuLi59KWBcbiAgICB0aGlzLmF0dGFjaG1lbnQgPSB0aGlzLmdldEF0dGFjaG1lbnQodGhpcy5wbGFjZW1lbnQpO1xuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgey8vIFRCRFxuICB9LFxuICB1cGRhdGVkOiBmdW5jdGlvbiB1cGRhdGVkKCkge1xuICAgIC8vIFVwZGF0ZSBwb3BwZXIgaWYgbmVlZGVkXG4gICAgLy8gVE9ETzogU2hvdWxkIHRoaXMgYmUgYSB3YXRjaGVyIG9uIGB0aGlzLnBvcHBlckNvbmZpZ2AgaW5zdGVhZD9cbiAgICB0aGlzLnBvcHBlclVwZGF0ZSgpO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIHRoaXMucG9wcGVyRGVzdHJveSgpO1xuICB9LFxuICBkZXN0cm95ZWQ6IGZ1bmN0aW9uIGRlc3Ryb3llZCgpIHtcbiAgICAvLyBNYWtlIHN1cmUgdGVtcGxhdGUgaXMgcmVtb3ZlZCBmcm9tIERPTVxuICAgIHZhciBlbCA9IHRoaXMuJGVsO1xuICAgIGVsICYmIGVsLnBhcmVudE5vZGUgJiYgZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCk7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICAvLyBcIlB1YmxpY1wiIG1ldGhvZCB0byB0cmlnZ2VyIGhpZGUgdGVtcGxhdGVcbiAgICBoaWRlOiBmdW5jdGlvbiBoaWRlKCkge1xuICAgICAgdGhpcy5sb2NhbFNob3cgPSBmYWxzZTtcbiAgICB9LFxuICAgIC8vIFByaXZhdGVcbiAgICBnZXRBdHRhY2htZW50OiBmdW5jdGlvbiBnZXRBdHRhY2htZW50KHBsYWNlbWVudCkge1xuICAgICAgcmV0dXJuIEF0dGFjaG1lbnRNYXBbU3RyaW5nKHBsYWNlbWVudCkudG9VcHBlckNhc2UoKV0gfHwgJ2F1dG8nO1xuICAgIH0sXG4gICAgZ2V0T2Zmc2V0OiBmdW5jdGlvbiBnZXRPZmZzZXQocGxhY2VtZW50KSB7XG4gICAgICBpZiAoIXRoaXMub2Zmc2V0KSB7XG4gICAgICAgIC8vIENvdWxkIHNldCBhIHJlZiBmb3IgdGhlIGFycm93IGVsZW1lbnRcbiAgICAgICAgdmFyIGFycm93ID0gdGhpcy4kcmVmcy5hcnJvdyB8fCBzZWxlY3QoJy5hcnJvdycsIHRoaXMuJGVsKTtcbiAgICAgICAgdmFyIGFycm93T2Zmc2V0ID0gKHBhcnNlRmxvYXQoZ2V0Q1MoYXJyb3cpLndpZHRoKSB8fCAwKSArIChwYXJzZUZsb2F0KHRoaXMuYXJyb3dQYWRkaW5nKSB8fCAwKTtcblxuICAgICAgICBzd2l0Y2ggKE9mZnNldE1hcFtTdHJpbmcocGxhY2VtZW50KS50b1VwcGVyQ2FzZSgpXSB8fCAwKSB7XG4gICAgICAgICAgY2FzZSArMTpcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBjYW4ndCB0ZXN0IGluIEpTRE9NICovXG4gICAgICAgICAgICByZXR1cm4gXCIrNTAlcCAtIFwiLmNvbmNhdChhcnJvd09mZnNldCwgXCJweFwiKTtcblxuICAgICAgICAgIGNhc2UgLTE6XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogY2FuJ3QgdGVzdCBpbiBKU0RPTSAqL1xuICAgICAgICAgICAgcmV0dXJuIFwiLTUwJXAgKyBcIi5jb25jYXQoYXJyb3dPZmZzZXQsIFwicHhcIik7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cblxuICAgICAgcmV0dXJuIHRoaXMub2Zmc2V0O1xuICAgIH0sXG4gICAgcG9wcGVyQ3JlYXRlOiBmdW5jdGlvbiBwb3BwZXJDcmVhdGUoZWwpIHtcbiAgICAgIHRoaXMucG9wcGVyRGVzdHJveSgpOyAvLyBXZSB1c2UgYGVsYCByYXRoZXIgdGhhbiBgdGhpcy4kZWxgIGp1c3QgaW4gY2FzZSB0aGUgb3JpZ2luYWxcbiAgICAgIC8vIG1vdW50cG9pbnQgcm9vdCBlbGVtZW50IHR5cGUgd2FzIGNoYW5nZWQgYnkgdGhlIHRlbXBsYXRlXG5cbiAgICAgIHRoaXMuJF9wb3BwZXIgPSBuZXcgUG9wcGVyKHRoaXMudGFyZ2V0LCBlbCwgdGhpcy5wb3BwZXJDb25maWcpO1xuICAgIH0sXG4gICAgcG9wcGVyRGVzdHJveTogZnVuY3Rpb24gcG9wcGVyRGVzdHJveSgpIHtcbiAgICAgIHRoaXMuJF9wb3BwZXIgJiYgdGhpcy4kX3BvcHBlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLiRfcG9wcGVyID0gbnVsbDtcbiAgICB9LFxuICAgIHBvcHBlclVwZGF0ZTogZnVuY3Rpb24gcG9wcGVyVXBkYXRlKCkge1xuICAgICAgdGhpcy4kX3BvcHBlciAmJiB0aGlzLiRfcG9wcGVyLnNjaGVkdWxlVXBkYXRlKCk7XG4gICAgfSxcbiAgICBwb3BwZXJQbGFjZW1lbnRDaGFuZ2U6IGZ1bmN0aW9uIHBvcHBlclBsYWNlbWVudENoYW5nZShkYXRhKSB7XG4gICAgICAvLyBDYWxsYmFjayB1c2VkIGJ5IHBvcHBlciB0byBhZGp1c3QgdGhlIGFycm93IHBsYWNlbWVudFxuICAgICAgdGhpcy5hdHRhY2htZW50ID0gdGhpcy5nZXRBdHRhY2htZW50KGRhdGEucGxhY2VtZW50KTtcbiAgICB9LFxuICAgIHJlbmRlclRlbXBsYXRlOiBmdW5jdGlvbiByZW5kZXJUZW1wbGF0ZShoKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAge1xuICAgICAgLy8gV2lsbCBiZSBvdmVycmlkZGVuIGJ5IHRlbXBsYXRlc1xuICAgICAgcmV0dXJuIGgoJ2RpdicpO1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgLy8gTm90ZTogYHNob3dgIGFuZCAnZmFkZScgY2xhc3NlcyBhcmUgb25seSBhcHBsZWQgZHVyaW5nIHRyYW5zaXRpb25cbiAgICByZXR1cm4gaChCVlRyYW5zaXRpb24sIHtcbiAgICAgIC8vIFRyYW5zaXRpb25zIGFzIHNvb24gYXMgbW91bnRlZFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgYXBwZWFyOiB0cnVlLFxuICAgICAgICBub0ZhZGU6IHRoaXMubm9GYWRlXG4gICAgICB9LFxuICAgICAgb246IHtcbiAgICAgICAgLy8gRXZlbnRzIHVzZWQgYnkgcGFyZW50IGNvbXBvbmVudC9pbnN0YW5jZVxuICAgICAgICBiZWZvcmVFbnRlcjogZnVuY3Rpb24gYmVmb3JlRW50ZXIoZWwpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMzLiRlbWl0KCdzaG93JywgZWwpO1xuICAgICAgICB9LFxuICAgICAgICBhZnRlckVudGVyOiBmdW5jdGlvbiBhZnRlckVudGVyKGVsKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzMy4kZW1pdCgnc2hvd24nLCBlbCk7XG4gICAgICAgIH0sXG4gICAgICAgIGJlZm9yZUxlYXZlOiBmdW5jdGlvbiBiZWZvcmVMZWF2ZShlbCkge1xuICAgICAgICAgIHJldHVybiBfdGhpczMuJGVtaXQoJ2hpZGUnLCBlbCk7XG4gICAgICAgIH0sXG4gICAgICAgIGFmdGVyTGVhdmU6IGZ1bmN0aW9uIGFmdGVyTGVhdmUoZWwpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMzLiRlbWl0KCdoaWRkZW4nLCBlbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBbdGhpcy5sb2NhbFNob3cgPyB0aGlzLnJlbmRlclRlbXBsYXRlKGgpIDogaCgpXSk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdG9vbHRpcC9oZWxwZXJzL2J2LXBvcHBlci5qc1xuLy8gbW9kdWxlIGlkID0gMjU4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///258\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BVPopper; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_popper_js__ = __webpack_require__(127);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_dom__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_safe_types__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_bv_transition__ = __webpack_require__(30);\n// Base on-demand component for tooltip / popover templates\n//\n// Currently:\n// Responsible for positioning and transitioning the template\n// Templates are only instantiated when shown, and destroyed when hidden\n//\n\n\n\n\n\nvar NAME = 'BVPopper';\nvar AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left',\n TOPLEFT: 'top',\n TOPRIGHT: 'top',\n RIGHTTOP: 'right',\n RIGHTBOTTOM: 'right',\n BOTTOMLEFT: 'bottom',\n BOTTOMRIGHT: 'bottom',\n LEFTTOP: 'left',\n LEFTBOTTOM: 'left'\n};\nvar OffsetMap = {\n AUTO: 0,\n TOPLEFT: -1,\n TOP: 0,\n TOPRIGHT: +1,\n RIGHTTOP: -1,\n RIGHT: 0,\n RIGHTBOTTOM: +1,\n BOTTOMLEFT: -1,\n BOTTOM: 0,\n BOTTOMRIGHT: +1,\n LEFTTOP: -1,\n LEFT: 0,\n LEFTBOTTOM: +1\n}; // @vue/component\n\nvar BVPopper =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n props: {\n target: {\n // Element that the tooltip/popover is positioned relative to\n type: [__WEBPACK_IMPORTED_MODULE_3__utils_safe_types__[\"b\" /* HTMLElement */], __WEBPACK_IMPORTED_MODULE_3__utils_safe_types__[\"c\" /* SVGElement */]],\n default: null\n },\n placement: {\n type: String,\n default: 'top'\n },\n fallbackPlacement: {\n type: [String, Array],\n default: 'flip'\n },\n offset: {\n type: Number,\n default: 0\n },\n boundary: {\n // 'scrollParent', 'viewport', 'window', or Element\n type: [String, __WEBPACK_IMPORTED_MODULE_3__utils_safe_types__[\"b\" /* HTMLElement */]],\n default: 'scrollParent'\n },\n boundaryPadding: {\n // Tooltip/popover will try and stay away from\n // boundary edge by this many pixels\n type: Number,\n default: 5\n },\n arrowPadding: {\n // The minimum distance (in `px`) from the edge of the\n // tooltip/popover that the arrow can be positioned\n type: Number,\n default: 6\n }\n },\n data: function data() {\n return {\n // reactive props set by parent\n noFade: false,\n // State related data\n localShow: true,\n attachment: this.getAttachment(this.placement)\n };\n },\n computed: {\n templateType: function templateType()\n /* istanbul ignore next */\n {\n // Overridden by template component\n return 'unknown';\n },\n popperConfig: function popperConfig() {\n var _this = this;\n\n var placement = this.placement;\n return {\n placement: this.getAttachment(placement),\n modifiers: {\n offset: {\n offset: this.getOffset(placement)\n },\n flip: {\n behavior: this.fallbackPlacement\n },\n // `arrow.element` can also be a reference to an HTML Element\n // maybe we should make this a `$ref` in the templates?\n arrow: {\n element: '.arrow'\n },\n preventOverflow: {\n padding: this.boundaryPadding,\n boundariesElement: this.boundary\n }\n },\n onCreate: function onCreate(data) {\n // Handle flipping arrow classes\n if (data.originalPlacement !== data.placement) {\n /* istanbul ignore next: can't test in JSDOM */\n _this.popperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n // Handle flipping arrow classes\n _this.popperPlacementChange(data);\n }\n };\n }\n },\n created: function created() {\n var _this2 = this;\n\n // Note: We are created on-demand, and should be guaranteed that\n // DOM is rendered/ready by the time the created hook runs\n this.$_popper = null; // Ensure we show as we mount\n\n this.localShow = true; // Create popper instance before shown\n\n this.$on('show', function (el) {\n _this2.popperCreate(el);\n }); // Self destruct once hidden\n\n this.$on('hidden', function () {\n _this2.$nextTick(_this2.$destroy);\n }); // If parent is destroyed, ensure we are destroyed\n\n this.$parent.$once('hook:destroyed', this.$destroy);\n },\n beforeMount: function beforeMount() {\n // Ensure that the attachment position is correct before mounting\n // as our propsData is added after `new Template({...})`\n this.attachment = this.getAttachment(this.placement);\n },\n mounted: function mounted() {// TBD\n },\n updated: function updated() {\n // Update popper if needed\n // TODO: Should this be a watcher on `this.popperConfig` instead?\n this.popperUpdate();\n },\n beforeDestroy: function beforeDestroy() {\n this.popperDestroy();\n },\n destroyed: function destroyed() {\n // Make sure template is removed from DOM\n var el = this.$el;\n el && el.parentNode && el.parentNode.removeChild(el);\n },\n methods: {\n // \"Public\" method to trigger hide template\n hide: function hide() {\n this.localShow = false;\n },\n // Private\n getAttachment: function getAttachment(placement) {\n return AttachmentMap[String(placement).toUpperCase()] || 'auto';\n },\n getOffset: function getOffset(placement) {\n if (!this.offset) {\n // Could set a ref for the arrow element\n var arrow = this.$refs.arrow || Object(__WEBPACK_IMPORTED_MODULE_2__utils_dom__[\"x\" /* select */])('.arrow', this.$el);\n var arrowOffset = (parseFloat(Object(__WEBPACK_IMPORTED_MODULE_2__utils_dom__[\"j\" /* getCS */])(arrow).width) || 0) + (parseFloat(this.arrowPadding) || 0);\n\n switch (OffsetMap[String(placement).toUpperCase()] || 0) {\n case +1:\n /* istanbul ignore next: can't test in JSDOM */\n return \"+50%p - \".concat(arrowOffset, \"px\");\n\n case -1:\n /* istanbul ignore next: can't test in JSDOM */\n return \"-50%p + \".concat(arrowOffset, \"px\");\n\n default:\n return 0;\n }\n }\n /* istanbul ignore next */\n\n\n return this.offset;\n },\n popperCreate: function popperCreate(el) {\n this.popperDestroy(); // We use `el` rather than `this.$el` just in case the original\n // mountpoint root element type was changed by the template\n\n this.$_popper = new __WEBPACK_IMPORTED_MODULE_1_popper_js__[\"a\" /* default */](this.target, el, this.popperConfig);\n },\n popperDestroy: function popperDestroy() {\n this.$_popper && this.$_popper.destroy();\n this.$_popper = null;\n },\n popperUpdate: function popperUpdate() {\n this.$_popper && this.$_popper.scheduleUpdate();\n },\n popperPlacementChange: function popperPlacementChange(data) {\n // Callback used by popper to adjust the arrow placement\n this.attachment = this.getAttachment(data.placement);\n },\n renderTemplate: function renderTemplate(h)\n /* istanbul ignore next */\n {\n // Will be overridden by templates\n return h('div');\n }\n },\n render: function render(h) {\n var _this3 = this;\n\n // Note: `show` and 'fade' classes are only appled during transition\n return h(__WEBPACK_IMPORTED_MODULE_4__utils_bv_transition__[\"a\" /* BVTransition */], {\n // Transitions as soon as mounted\n props: {\n appear: true,\n noFade: this.noFade\n },\n on: {\n // Events used by parent component/instance\n beforeEnter: function beforeEnter(el) {\n return _this3.$emit('show', el);\n },\n afterEnter: function afterEnter(el) {\n return _this3.$emit('shown', el);\n },\n beforeLeave: function beforeLeave(el) {\n return _this3.$emit('hide', el);\n },\n afterLeave: function afterLeave(el) {\n return _this3.$emit('hidden', el);\n }\n }\n }, [this.localShow ? this.renderTemplate(h) : h()]);\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90b29sdGlwL2hlbHBlcnMvYnYtcG9wcGVyLmpzPzM1MDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3FDO0FBQ047QUFDb0I7QUFDaUI7QUFDUjtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVLO0FBQ1A7QUFDQSwyREFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxzRUFBVyxFQUFFLHFFQUFVO0FBQ3BDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxxQkFBcUIsc0VBQVc7QUFDaEM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHlCQUF5Qjs7QUFFekIsMEJBQTBCOztBQUUxQjtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHNEQUFzRCxJQUFJO0FBQzFEO0FBQ0EsR0FBRztBQUNILCtCQUErQjtBQUMvQixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLGtFQUFNO0FBQzlDLHNDQUFzQyxpRUFBSzs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsMkJBQTJCO0FBQzNCOztBQUVBLDBCQUEwQiwwREFBTTtBQUNoQyxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0EsYUFBYSwwRUFBWTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6IjI1OC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEJhc2Ugb24tZGVtYW5kIGNvbXBvbmVudCBmb3IgdG9vbHRpcCAvIHBvcG92ZXIgdGVtcGxhdGVzXG4vL1xuLy8gQ3VycmVudGx5OlxuLy8gICBSZXNwb25zaWJsZSBmb3IgcG9zaXRpb25pbmcgYW5kIHRyYW5zaXRpb25pbmcgdGhlIHRlbXBsYXRlXG4vLyAgIFRlbXBsYXRlcyBhcmUgb25seSBpbnN0YW50aWF0ZWQgd2hlbiBzaG93biwgYW5kIGRlc3Ryb3llZCB3aGVuIGhpZGRlblxuLy9cbmltcG9ydCBWdWUgZnJvbSAnLi4vLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCBQb3BwZXIgZnJvbSAncG9wcGVyLmpzJztcbmltcG9ydCB7IGdldENTLCBzZWxlY3QgfSBmcm9tICcuLi8uLi8uLi91dGlscy9kb20nO1xuaW1wb3J0IHsgSFRNTEVsZW1lbnQsIFNWR0VsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zYWZlLXR5cGVzJztcbmltcG9ydCB7IEJWVHJhbnNpdGlvbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2J2LXRyYW5zaXRpb24nO1xudmFyIE5BTUUgPSAnQlZQb3BwZXInO1xudmFyIEF0dGFjaG1lbnRNYXAgPSB7XG4gIEFVVE86ICdhdXRvJyxcbiAgVE9QOiAndG9wJyxcbiAgUklHSFQ6ICdyaWdodCcsXG4gIEJPVFRPTTogJ2JvdHRvbScsXG4gIExFRlQ6ICdsZWZ0JyxcbiAgVE9QTEVGVDogJ3RvcCcsXG4gIFRPUFJJR0hUOiAndG9wJyxcbiAgUklHSFRUT1A6ICdyaWdodCcsXG4gIFJJR0hUQk9UVE9NOiAncmlnaHQnLFxuICBCT1RUT01MRUZUOiAnYm90dG9tJyxcbiAgQk9UVE9NUklHSFQ6ICdib3R0b20nLFxuICBMRUZUVE9QOiAnbGVmdCcsXG4gIExFRlRCT1RUT006ICdsZWZ0J1xufTtcbnZhciBPZmZzZXRNYXAgPSB7XG4gIEFVVE86IDAsXG4gIFRPUExFRlQ6IC0xLFxuICBUT1A6IDAsXG4gIFRPUFJJR0hUOiArMSxcbiAgUklHSFRUT1A6IC0xLFxuICBSSUdIVDogMCxcbiAgUklHSFRCT1RUT006ICsxLFxuICBCT1RUT01MRUZUOiAtMSxcbiAgQk9UVE9NOiAwLFxuICBCT1RUT01SSUdIVDogKzEsXG4gIExFRlRUT1A6IC0xLFxuICBMRUZUOiAwLFxuICBMRUZUQk9UVE9NOiArMVxufTsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCVlBvcHBlciA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogTkFNRSxcbiAgcHJvcHM6IHtcbiAgICB0YXJnZXQ6IHtcbiAgICAgIC8vIEVsZW1lbnQgdGhhdCB0aGUgdG9vbHRpcC9wb3BvdmVyIGlzIHBvc2l0aW9uZWQgcmVsYXRpdmUgdG9cbiAgICAgIHR5cGU6IFtIVE1MRWxlbWVudCwgU1ZHRWxlbWVudF0sXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBwbGFjZW1lbnQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICd0b3AnXG4gICAgfSxcbiAgICBmYWxsYmFja1BsYWNlbWVudDoge1xuICAgICAgdHlwZTogW1N0cmluZywgQXJyYXldLFxuICAgICAgZGVmYXVsdDogJ2ZsaXAnXG4gICAgfSxcbiAgICBvZmZzZXQ6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIGRlZmF1bHQ6IDBcbiAgICB9LFxuICAgIGJvdW5kYXJ5OiB7XG4gICAgICAvLyAnc2Nyb2xsUGFyZW50JywgJ3ZpZXdwb3J0JywgJ3dpbmRvdycsIG9yIEVsZW1lbnRcbiAgICAgIHR5cGU6IFtTdHJpbmcsIEhUTUxFbGVtZW50XSxcbiAgICAgIGRlZmF1bHQ6ICdzY3JvbGxQYXJlbnQnXG4gICAgfSxcbiAgICBib3VuZGFyeVBhZGRpbmc6IHtcbiAgICAgIC8vIFRvb2x0aXAvcG9wb3ZlciB3aWxsIHRyeSBhbmQgc3RheSBhd2F5IGZyb21cbiAgICAgIC8vIGJvdW5kYXJ5IGVkZ2UgYnkgdGhpcyBtYW55IHBpeGVsc1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogNVxuICAgIH0sXG4gICAgYXJyb3dQYWRkaW5nOiB7XG4gICAgICAvLyBUaGUgbWluaW11bSBkaXN0YW5jZSAoaW4gYHB4YCkgZnJvbSB0aGUgZWRnZSBvZiB0aGVcbiAgICAgIC8vIHRvb2x0aXAvcG9wb3ZlciB0aGF0IHRoZSBhcnJvdyBjYW4gYmUgcG9zaXRpb25lZFxuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogNlxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gcmVhY3RpdmUgcHJvcHMgc2V0IGJ5IHBhcmVudFxuICAgICAgbm9GYWRlOiBmYWxzZSxcbiAgICAgIC8vIFN0YXRlIHJlbGF0ZWQgZGF0YVxuICAgICAgbG9jYWxTaG93OiB0cnVlLFxuICAgICAgYXR0YWNobWVudDogdGhpcy5nZXRBdHRhY2htZW50KHRoaXMucGxhY2VtZW50KVxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgdGVtcGxhdGVUeXBlOiBmdW5jdGlvbiB0ZW1wbGF0ZVR5cGUoKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAge1xuICAgICAgLy8gT3ZlcnJpZGRlbiBieSB0ZW1wbGF0ZSBjb21wb25lbnRcbiAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgfSxcbiAgICBwb3BwZXJDb25maWc6IGZ1bmN0aW9uIHBvcHBlckNvbmZpZygpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBwbGFjZW1lbnQgPSB0aGlzLnBsYWNlbWVudDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBsYWNlbWVudDogdGhpcy5nZXRBdHRhY2htZW50KHBsYWNlbWVudCksXG4gICAgICAgIG1vZGlmaWVyczoge1xuICAgICAgICAgIG9mZnNldDoge1xuICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLmdldE9mZnNldChwbGFjZW1lbnQpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmbGlwOiB7XG4gICAgICAgICAgICBiZWhhdmlvcjogdGhpcy5mYWxsYmFja1BsYWNlbWVudFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gYGFycm93LmVsZW1lbnRgIGNhbiBhbHNvIGJlIGEgcmVmZXJlbmNlIHRvIGFuIEhUTUwgRWxlbWVudFxuICAgICAgICAgIC8vIG1heWJlIHdlIHNob3VsZCBtYWtlIHRoaXMgYSBgJHJlZmAgaW4gdGhlIHRlbXBsYXRlcz9cbiAgICAgICAgICBhcnJvdzoge1xuICAgICAgICAgICAgZWxlbWVudDogJy5hcnJvdydcbiAgICAgICAgICB9LFxuICAgICAgICAgIHByZXZlbnRPdmVyZmxvdzoge1xuICAgICAgICAgICAgcGFkZGluZzogdGhpcy5ib3VuZGFyeVBhZGRpbmcsXG4gICAgICAgICAgICBib3VuZGFyaWVzRWxlbWVudDogdGhpcy5ib3VuZGFyeVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25DcmVhdGU6IGZ1bmN0aW9uIG9uQ3JlYXRlKGRhdGEpIHtcbiAgICAgICAgICAvLyBIYW5kbGUgZmxpcHBpbmcgYXJyb3cgY2xhc3Nlc1xuICAgICAgICAgIGlmIChkYXRhLm9yaWdpbmFsUGxhY2VtZW50ICE9PSBkYXRhLnBsYWNlbWVudCkge1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGNhbid0IHRlc3QgaW4gSlNET00gKi9cbiAgICAgICAgICAgIF90aGlzLnBvcHBlclBsYWNlbWVudENoYW5nZShkYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uVXBkYXRlOiBmdW5jdGlvbiBvblVwZGF0ZShkYXRhKSB7XG4gICAgICAgICAgLy8gSGFuZGxlIGZsaXBwaW5nIGFycm93IGNsYXNzZXNcbiAgICAgICAgICBfdGhpcy5wb3BwZXJQbGFjZW1lbnRDaGFuZ2UoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgLy8gTm90ZTogV2UgYXJlIGNyZWF0ZWQgb24tZGVtYW5kLCBhbmQgc2hvdWxkIGJlIGd1YXJhbnRlZWQgdGhhdFxuICAgIC8vIERPTSBpcyByZW5kZXJlZC9yZWFkeSBieSB0aGUgdGltZSB0aGUgY3JlYXRlZCBob29rIHJ1bnNcbiAgICB0aGlzLiRfcG9wcGVyID0gbnVsbDsgLy8gRW5zdXJlIHdlIHNob3cgYXMgd2UgbW91bnRcblxuICAgIHRoaXMubG9jYWxTaG93ID0gdHJ1ZTsgLy8gQ3JlYXRlIHBvcHBlciBpbnN0YW5jZSBiZWZvcmUgc2hvd25cblxuICAgIHRoaXMuJG9uKCdzaG93JywgZnVuY3Rpb24gKGVsKSB7XG4gICAgICBfdGhpczIucG9wcGVyQ3JlYXRlKGVsKTtcbiAgICB9KTsgLy8gU2VsZiBkZXN0cnVjdCBvbmNlIGhpZGRlblxuXG4gICAgdGhpcy4kb24oJ2hpZGRlbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzMi4kbmV4dFRpY2soX3RoaXMyLiRkZXN0cm95KTtcbiAgICB9KTsgLy8gSWYgcGFyZW50IGlzIGRlc3Ryb3llZCwgZW5zdXJlIHdlIGFyZSBkZXN0cm95ZWRcblxuICAgIHRoaXMuJHBhcmVudC4kb25jZSgnaG9vazpkZXN0cm95ZWQnLCB0aGlzLiRkZXN0cm95KTtcbiAgfSxcbiAgYmVmb3JlTW91bnQ6IGZ1bmN0aW9uIGJlZm9yZU1vdW50KCkge1xuICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBhdHRhY2htZW50IHBvc2l0aW9uIGlzIGNvcnJlY3QgYmVmb3JlIG1vdW50aW5nXG4gICAgLy8gYXMgb3VyIHByb3BzRGF0YSBpcyBhZGRlZCBhZnRlciBgbmV3IFRlbXBsYXRlKHsuLi59KWBcbiAgICB0aGlzLmF0dGFjaG1lbnQgPSB0aGlzLmdldEF0dGFjaG1lbnQodGhpcy5wbGFjZW1lbnQpO1xuICB9LFxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgey8vIFRCRFxuICB9LFxuICB1cGRhdGVkOiBmdW5jdGlvbiB1cGRhdGVkKCkge1xuICAgIC8vIFVwZGF0ZSBwb3BwZXIgaWYgbmVlZGVkXG4gICAgLy8gVE9ETzogU2hvdWxkIHRoaXMgYmUgYSB3YXRjaGVyIG9uIGB0aGlzLnBvcHBlckNvbmZpZ2AgaW5zdGVhZD9cbiAgICB0aGlzLnBvcHBlclVwZGF0ZSgpO1xuICB9LFxuICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge1xuICAgIHRoaXMucG9wcGVyRGVzdHJveSgpO1xuICB9LFxuICBkZXN0cm95ZWQ6IGZ1bmN0aW9uIGRlc3Ryb3llZCgpIHtcbiAgICAvLyBNYWtlIHN1cmUgdGVtcGxhdGUgaXMgcmVtb3ZlZCBmcm9tIERPTVxuICAgIHZhciBlbCA9IHRoaXMuJGVsO1xuICAgIGVsICYmIGVsLnBhcmVudE5vZGUgJiYgZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCk7XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICAvLyBcIlB1YmxpY1wiIG1ldGhvZCB0byB0cmlnZ2VyIGhpZGUgdGVtcGxhdGVcbiAgICBoaWRlOiBmdW5jdGlvbiBoaWRlKCkge1xuICAgICAgdGhpcy5sb2NhbFNob3cgPSBmYWxzZTtcbiAgICB9LFxuICAgIC8vIFByaXZhdGVcbiAgICBnZXRBdHRhY2htZW50OiBmdW5jdGlvbiBnZXRBdHRhY2htZW50KHBsYWNlbWVudCkge1xuICAgICAgcmV0dXJuIEF0dGFjaG1lbnRNYXBbU3RyaW5nKHBsYWNlbWVudCkudG9VcHBlckNhc2UoKV0gfHwgJ2F1dG8nO1xuICAgIH0sXG4gICAgZ2V0T2Zmc2V0OiBmdW5jdGlvbiBnZXRPZmZzZXQocGxhY2VtZW50KSB7XG4gICAgICBpZiAoIXRoaXMub2Zmc2V0KSB7XG4gICAgICAgIC8vIENvdWxkIHNldCBhIHJlZiBmb3IgdGhlIGFycm93IGVsZW1lbnRcbiAgICAgICAgdmFyIGFycm93ID0gdGhpcy4kcmVmcy5hcnJvdyB8fCBzZWxlY3QoJy5hcnJvdycsIHRoaXMuJGVsKTtcbiAgICAgICAgdmFyIGFycm93T2Zmc2V0ID0gKHBhcnNlRmxvYXQoZ2V0Q1MoYXJyb3cpLndpZHRoKSB8fCAwKSArIChwYXJzZUZsb2F0KHRoaXMuYXJyb3dQYWRkaW5nKSB8fCAwKTtcblxuICAgICAgICBzd2l0Y2ggKE9mZnNldE1hcFtTdHJpbmcocGxhY2VtZW50KS50b1VwcGVyQ2FzZSgpXSB8fCAwKSB7XG4gICAgICAgICAgY2FzZSArMTpcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBjYW4ndCB0ZXN0IGluIEpTRE9NICovXG4gICAgICAgICAgICByZXR1cm4gXCIrNTAlcCAtIFwiLmNvbmNhdChhcnJvd09mZnNldCwgXCJweFwiKTtcblxuICAgICAgICAgIGNhc2UgLTE6XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogY2FuJ3QgdGVzdCBpbiBKU0RPTSAqL1xuICAgICAgICAgICAgcmV0dXJuIFwiLTUwJXAgKyBcIi5jb25jYXQoYXJyb3dPZmZzZXQsIFwicHhcIik7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cblxuICAgICAgcmV0dXJuIHRoaXMub2Zmc2V0O1xuICAgIH0sXG4gICAgcG9wcGVyQ3JlYXRlOiBmdW5jdGlvbiBwb3BwZXJDcmVhdGUoZWwpIHtcbiAgICAgIHRoaXMucG9wcGVyRGVzdHJveSgpOyAvLyBXZSB1c2UgYGVsYCByYXRoZXIgdGhhbiBgdGhpcy4kZWxgIGp1c3QgaW4gY2FzZSB0aGUgb3JpZ2luYWxcbiAgICAgIC8vIG1vdW50cG9pbnQgcm9vdCBlbGVtZW50IHR5cGUgd2FzIGNoYW5nZWQgYnkgdGhlIHRlbXBsYXRlXG5cbiAgICAgIHRoaXMuJF9wb3BwZXIgPSBuZXcgUG9wcGVyKHRoaXMudGFyZ2V0LCBlbCwgdGhpcy5wb3BwZXJDb25maWcpO1xuICAgIH0sXG4gICAgcG9wcGVyRGVzdHJveTogZnVuY3Rpb24gcG9wcGVyRGVzdHJveSgpIHtcbiAgICAgIHRoaXMuJF9wb3BwZXIgJiYgdGhpcy4kX3BvcHBlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLiRfcG9wcGVyID0gbnVsbDtcbiAgICB9LFxuICAgIHBvcHBlclVwZGF0ZTogZnVuY3Rpb24gcG9wcGVyVXBkYXRlKCkge1xuICAgICAgdGhpcy4kX3BvcHBlciAmJiB0aGlzLiRfcG9wcGVyLnNjaGVkdWxlVXBkYXRlKCk7XG4gICAgfSxcbiAgICBwb3BwZXJQbGFjZW1lbnRDaGFuZ2U6IGZ1bmN0aW9uIHBvcHBlclBsYWNlbWVudENoYW5nZShkYXRhKSB7XG4gICAgICAvLyBDYWxsYmFjayB1c2VkIGJ5IHBvcHBlciB0byBhZGp1c3QgdGhlIGFycm93IHBsYWNlbWVudFxuICAgICAgdGhpcy5hdHRhY2htZW50ID0gdGhpcy5nZXRBdHRhY2htZW50KGRhdGEucGxhY2VtZW50KTtcbiAgICB9LFxuICAgIHJlbmRlclRlbXBsYXRlOiBmdW5jdGlvbiByZW5kZXJUZW1wbGF0ZShoKVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAge1xuICAgICAgLy8gV2lsbCBiZSBvdmVycmlkZGVuIGJ5IHRlbXBsYXRlc1xuICAgICAgcmV0dXJuIGgoJ2RpdicpO1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCkge1xuICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgLy8gTm90ZTogYHNob3dgIGFuZCAnZmFkZScgY2xhc3NlcyBhcmUgb25seSBhcHBsZWQgZHVyaW5nIHRyYW5zaXRpb25cbiAgICByZXR1cm4gaChCVlRyYW5zaXRpb24sIHtcbiAgICAgIC8vIFRyYW5zaXRpb25zIGFzIHNvb24gYXMgbW91bnRlZFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgYXBwZWFyOiB0cnVlLFxuICAgICAgICBub0ZhZGU6IHRoaXMubm9GYWRlXG4gICAgICB9LFxuICAgICAgb246IHtcbiAgICAgICAgLy8gRXZlbnRzIHVzZWQgYnkgcGFyZW50IGNvbXBvbmVudC9pbnN0YW5jZVxuICAgICAgICBiZWZvcmVFbnRlcjogZnVuY3Rpb24gYmVmb3JlRW50ZXIoZWwpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMzLiRlbWl0KCdzaG93JywgZWwpO1xuICAgICAgICB9LFxuICAgICAgICBhZnRlckVudGVyOiBmdW5jdGlvbiBhZnRlckVudGVyKGVsKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzMy4kZW1pdCgnc2hvd24nLCBlbCk7XG4gICAgICAgIH0sXG4gICAgICAgIGJlZm9yZUxlYXZlOiBmdW5jdGlvbiBiZWZvcmVMZWF2ZShlbCkge1xuICAgICAgICAgIHJldHVybiBfdGhpczMuJGVtaXQoJ2hpZGUnLCBlbCk7XG4gICAgICAgIH0sXG4gICAgICAgIGFmdGVyTGVhdmU6IGZ1bmN0aW9uIGFmdGVyTGVhdmUoZWwpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMzLiRlbWl0KCdoaWRkZW4nLCBlbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBbdGhpcy5sb2NhbFNob3cgPyB0aGlzLnJlbmRlclRlbXBsYXRlKGgpIDogaCgpXSk7XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdG9vbHRpcC9oZWxwZXJzL2J2LXBvcHBlci5qc1xuLy8gbW9kdWxlIGlkID0gMjU4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///258\n"); /***/ }), /* 259 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BVPopoverTemplate; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__tooltip_helpers_bv_tooltip_template__ = __webpack_require__(189);\n\n\n\nvar NAME = 'BVPopoverTemplate'; // @vue/component\n\nvar BVPopoverTemplate =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n extends: __WEBPACK_IMPORTED_MODULE_2__tooltip_helpers_bv_tooltip_template__[\"a\" /* BVTooltipTemplate */],\n computed: {\n templateType: function templateType() {\n return 'popover';\n }\n },\n methods: {\n renderTemplate: function renderTemplate(h) {\n // Title and content could be a scoped slot function\n var $title = Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"f\" /* isFunction */])(this.title) ? this.title({}) : this.title;\n var $content = Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"f\" /* isFunction */])(this.content) ? this.content({}) : this.content; // Directive usage only\n\n var titleDomProps = this.html && !Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"f\" /* isFunction */])(this.title) ? {\n innerHTML: this.title\n } : {};\n var contentDomProps = this.html && !Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"f\" /* isFunction */])(this.content) ? {\n innerHTML: this.content\n } : {};\n return h('div', {\n staticClass: 'popover b-popover',\n class: this.templateClasses,\n attrs: this.templateAttributes,\n on: this.templateListeners\n }, [h('div', {\n ref: 'arrow',\n staticClass: 'arrow'\n }), Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"o\" /* isUndefinedOrNull */])($title) || $title === '' ? h() : h('h3', {\n staticClass: 'popover-header',\n domProps: titleDomProps\n }, [$title]), Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"o\" /* isUndefinedOrNull */])($content) || $content === '' ? h() : h('div', {\n staticClass: 'popover-body',\n domProps: contentDomProps\n }, [$content])]);\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wb3BvdmVyL2hlbHBlcnMvYnYtcG9wb3Zlci10ZW1wbGF0ZS5qcz8yYzdjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXFDO0FBQ2tDO0FBQ087QUFDOUUsK0JBQStCOztBQUV4QjtBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsK0ZBQWlCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwwRUFBVSw0QkFBNEI7QUFDekQscUJBQXFCLDBFQUFVLGdDQUFnQyxpQkFBaUI7O0FBRWhGLHdDQUF3QywwRUFBVTtBQUNsRDtBQUNBLE9BQU87QUFDUCwwQ0FBMEMsMEVBQVU7QUFDcEQ7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTyxHQUFHLGlGQUFpQjtBQUMzQjtBQUNBO0FBQ0EsT0FBTyxhQUFhLGlGQUFpQjtBQUNyQztBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6IjI1OS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWdWUgZnJvbSAnLi4vLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IGlzRnVuY3Rpb24sIGlzVW5kZWZpbmVkT3JOdWxsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgeyBCVlRvb2x0aXBUZW1wbGF0ZSB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvaGVscGVycy9idi10b29sdGlwLXRlbXBsYXRlJztcbnZhciBOQU1FID0gJ0JWUG9wb3ZlclRlbXBsYXRlJzsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCVlBvcG92ZXJUZW1wbGF0ZSA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogTkFNRSxcbiAgZXh0ZW5kczogQlZUb29sdGlwVGVtcGxhdGUsXG4gIGNvbXB1dGVkOiB7XG4gICAgdGVtcGxhdGVUeXBlOiBmdW5jdGlvbiB0ZW1wbGF0ZVR5cGUoKSB7XG4gICAgICByZXR1cm4gJ3BvcG92ZXInO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHJlbmRlclRlbXBsYXRlOiBmdW5jdGlvbiByZW5kZXJUZW1wbGF0ZShoKSB7XG4gICAgICAvLyBUaXRsZSBhbmQgY29udGVudCBjb3VsZCBiZSBhIHNjb3BlZCBzbG90IGZ1bmN0aW9uXG4gICAgICB2YXIgJHRpdGxlID0gaXNGdW5jdGlvbih0aGlzLnRpdGxlKSA/IHRoaXMudGl0bGUoe30pIDogdGhpcy50aXRsZTtcbiAgICAgIHZhciAkY29udGVudCA9IGlzRnVuY3Rpb24odGhpcy5jb250ZW50KSA/IHRoaXMuY29udGVudCh7fSkgOiB0aGlzLmNvbnRlbnQ7IC8vIERpcmVjdGl2ZSB1c2FnZSBvbmx5XG5cbiAgICAgIHZhciB0aXRsZURvbVByb3BzID0gdGhpcy5odG1sICYmICFpc0Z1bmN0aW9uKHRoaXMudGl0bGUpID8ge1xuICAgICAgICBpbm5lckhUTUw6IHRoaXMudGl0bGVcbiAgICAgIH0gOiB7fTtcbiAgICAgIHZhciBjb250ZW50RG9tUHJvcHMgPSB0aGlzLmh0bWwgJiYgIWlzRnVuY3Rpb24odGhpcy5jb250ZW50KSA/IHtcbiAgICAgICAgaW5uZXJIVE1MOiB0aGlzLmNvbnRlbnRcbiAgICAgIH0gOiB7fTtcbiAgICAgIHJldHVybiBoKCdkaXYnLCB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiAncG9wb3ZlciBiLXBvcG92ZXInLFxuICAgICAgICBjbGFzczogdGhpcy50ZW1wbGF0ZUNsYXNzZXMsXG4gICAgICAgIGF0dHJzOiB0aGlzLnRlbXBsYXRlQXR0cmlidXRlcyxcbiAgICAgICAgb246IHRoaXMudGVtcGxhdGVMaXN0ZW5lcnNcbiAgICAgIH0sIFtoKCdkaXYnLCB7XG4gICAgICAgIHJlZjogJ2Fycm93JyxcbiAgICAgICAgc3RhdGljQ2xhc3M6ICdhcnJvdydcbiAgICAgIH0pLCBpc1VuZGVmaW5lZE9yTnVsbCgkdGl0bGUpIHx8ICR0aXRsZSA9PT0gJycgPyBoKCkgOiBoKCdoMycsIHtcbiAgICAgICAgc3RhdGljQ2xhc3M6ICdwb3BvdmVyLWhlYWRlcicsXG4gICAgICAgIGRvbVByb3BzOiB0aXRsZURvbVByb3BzXG4gICAgICB9LCBbJHRpdGxlXSksIGlzVW5kZWZpbmVkT3JOdWxsKCRjb250ZW50KSB8fCAkY29udGVudCA9PT0gJycgPyBoKCkgOiBoKCdkaXYnLCB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiAncG9wb3Zlci1ib2R5JyxcbiAgICAgICAgZG9tUHJvcHM6IGNvbnRlbnREb21Qcm9wc1xuICAgICAgfSwgWyRjb250ZW50XSldKTtcbiAgICB9XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvcG9wb3Zlci9oZWxwZXJzL2J2LXBvcG92ZXItdGVtcGxhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDI1OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///259\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return BVPopoverTemplate; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_vue__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__tooltip_helpers_bv_tooltip_template__ = __webpack_require__(191);\n\n\n\nvar NAME = 'BVPopoverTemplate'; // @vue/component\n\nvar BVPopoverTemplate =\n/*#__PURE__*/\n__WEBPACK_IMPORTED_MODULE_0__utils_vue__[\"a\" /* default */].extend({\n name: NAME,\n extends: __WEBPACK_IMPORTED_MODULE_2__tooltip_helpers_bv_tooltip_template__[\"a\" /* BVTooltipTemplate */],\n computed: {\n templateType: function templateType() {\n return 'popover';\n }\n },\n methods: {\n renderTemplate: function renderTemplate(h) {\n // Title and content could be a scoped slot function\n var $title = Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"f\" /* isFunction */])(this.title) ? this.title({}) : this.title;\n var $content = Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"f\" /* isFunction */])(this.content) ? this.content({}) : this.content; // Directive usage only\n\n var titleDomProps = this.html && !Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"f\" /* isFunction */])(this.title) ? {\n innerHTML: this.title\n } : {};\n var contentDomProps = this.html && !Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"f\" /* isFunction */])(this.content) ? {\n innerHTML: this.content\n } : {};\n return h('div', {\n staticClass: 'popover b-popover',\n class: this.templateClasses,\n attrs: this.templateAttributes,\n on: this.templateListeners\n }, [h('div', {\n ref: 'arrow',\n staticClass: 'arrow'\n }), Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"o\" /* isUndefinedOrNull */])($title) || $title === '' ? h() : h('h3', {\n staticClass: 'popover-header',\n domProps: titleDomProps\n }, [$title]), Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"o\" /* isUndefinedOrNull */])($content) || $content === '' ? h() : h('div', {\n staticClass: 'popover-body',\n domProps: contentDomProps\n }, [$content])]);\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy9wb3BvdmVyL2hlbHBlcnMvYnYtcG9wb3Zlci10ZW1wbGF0ZS5qcz8yYzdjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXFDO0FBQ2tDO0FBQ087QUFDOUUsK0JBQStCOztBQUV4QjtBQUNQO0FBQ0EsMkRBQUc7QUFDSDtBQUNBLFdBQVcsK0ZBQWlCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwwRUFBVSw0QkFBNEI7QUFDekQscUJBQXFCLDBFQUFVLGdDQUFnQyxpQkFBaUI7O0FBRWhGLHdDQUF3QywwRUFBVTtBQUNsRDtBQUNBLE9BQU87QUFDUCwwQ0FBMEMsMEVBQVU7QUFDcEQ7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTyxHQUFHLGlGQUFpQjtBQUMzQjtBQUNBO0FBQ0EsT0FBTyxhQUFhLGlGQUFpQjtBQUNyQztBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6IjI1OS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWdWUgZnJvbSAnLi4vLi4vLi4vdXRpbHMvdnVlJztcbmltcG9ydCB7IGlzRnVuY3Rpb24sIGlzVW5kZWZpbmVkT3JOdWxsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgeyBCVlRvb2x0aXBUZW1wbGF0ZSB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvaGVscGVycy9idi10b29sdGlwLXRlbXBsYXRlJztcbnZhciBOQU1FID0gJ0JWUG9wb3ZlclRlbXBsYXRlJzsgLy8gQHZ1ZS9jb21wb25lbnRcblxuZXhwb3J0IHZhciBCVlBvcG92ZXJUZW1wbGF0ZSA9XG4vKiNfX1BVUkVfXyovXG5WdWUuZXh0ZW5kKHtcbiAgbmFtZTogTkFNRSxcbiAgZXh0ZW5kczogQlZUb29sdGlwVGVtcGxhdGUsXG4gIGNvbXB1dGVkOiB7XG4gICAgdGVtcGxhdGVUeXBlOiBmdW5jdGlvbiB0ZW1wbGF0ZVR5cGUoKSB7XG4gICAgICByZXR1cm4gJ3BvcG92ZXInO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHJlbmRlclRlbXBsYXRlOiBmdW5jdGlvbiByZW5kZXJUZW1wbGF0ZShoKSB7XG4gICAgICAvLyBUaXRsZSBhbmQgY29udGVudCBjb3VsZCBiZSBhIHNjb3BlZCBzbG90IGZ1bmN0aW9uXG4gICAgICB2YXIgJHRpdGxlID0gaXNGdW5jdGlvbih0aGlzLnRpdGxlKSA/IHRoaXMudGl0bGUoe30pIDogdGhpcy50aXRsZTtcbiAgICAgIHZhciAkY29udGVudCA9IGlzRnVuY3Rpb24odGhpcy5jb250ZW50KSA/IHRoaXMuY29udGVudCh7fSkgOiB0aGlzLmNvbnRlbnQ7IC8vIERpcmVjdGl2ZSB1c2FnZSBvbmx5XG5cbiAgICAgIHZhciB0aXRsZURvbVByb3BzID0gdGhpcy5odG1sICYmICFpc0Z1bmN0aW9uKHRoaXMudGl0bGUpID8ge1xuICAgICAgICBpbm5lckhUTUw6IHRoaXMudGl0bGVcbiAgICAgIH0gOiB7fTtcbiAgICAgIHZhciBjb250ZW50RG9tUHJvcHMgPSB0aGlzLmh0bWwgJiYgIWlzRnVuY3Rpb24odGhpcy5jb250ZW50KSA/IHtcbiAgICAgICAgaW5uZXJIVE1MOiB0aGlzLmNvbnRlbnRcbiAgICAgIH0gOiB7fTtcbiAgICAgIHJldHVybiBoKCdkaXYnLCB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiAncG9wb3ZlciBiLXBvcG92ZXInLFxuICAgICAgICBjbGFzczogdGhpcy50ZW1wbGF0ZUNsYXNzZXMsXG4gICAgICAgIGF0dHJzOiB0aGlzLnRlbXBsYXRlQXR0cmlidXRlcyxcbiAgICAgICAgb246IHRoaXMudGVtcGxhdGVMaXN0ZW5lcnNcbiAgICAgIH0sIFtoKCdkaXYnLCB7XG4gICAgICAgIHJlZjogJ2Fycm93JyxcbiAgICAgICAgc3RhdGljQ2xhc3M6ICdhcnJvdydcbiAgICAgIH0pLCBpc1VuZGVmaW5lZE9yTnVsbCgkdGl0bGUpIHx8ICR0aXRsZSA9PT0gJycgPyBoKCkgOiBoKCdoMycsIHtcbiAgICAgICAgc3RhdGljQ2xhc3M6ICdwb3BvdmVyLWhlYWRlcicsXG4gICAgICAgIGRvbVByb3BzOiB0aXRsZURvbVByb3BzXG4gICAgICB9LCBbJHRpdGxlXSksIGlzVW5kZWZpbmVkT3JOdWxsKCRjb250ZW50KSB8fCAkY29udGVudCA9PT0gJycgPyBoKCkgOiBoKCdkaXYnLCB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiAncG9wb3Zlci1ib2R5JyxcbiAgICAgICAgZG9tUHJvcHM6IGNvbnRlbnREb21Qcm9wc1xuICAgICAgfSwgWyRjb250ZW50XSldKTtcbiAgICB9XG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvcG9wb3Zlci9oZWxwZXJzL2J2LXBvcG92ZXItdGVtcGxhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDI1OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///259\n"); /***/ }), /* 260 */ @@ -1886,21 +1886,21 @@ eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_clone_deep__ = /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__sanitize_row__ = __webpack_require__(199);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__stringify_object_values__ = __webpack_require__(200);\n\n\n // Stringifies the values of a record, ignoring any special top level field keys\n// TODO: Add option to stringify `scopedSlot` items\n\nvar stringifyRecordValues = function stringifyRecordValues(row, ignoreFields, includeFields, fieldsObj) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils_inspect__[\"i\" /* isObject */])(row) ? Object(__WEBPACK_IMPORTED_MODULE_2__stringify_object_values__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_1__sanitize_row__[\"a\" /* default */])(row, ignoreFields, includeFields, fieldsObj)) : '';\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (stringifyRecordValues);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL3N0cmluZ2lmeS1yZWNvcmQtdmFsdWVzLmpzPzI0MmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWtEO0FBQ1Q7QUFDcUI7QUFDOUQ7O0FBRUE7QUFDQSxTQUFTLHdFQUFRLFFBQVEsaUZBQXFCLENBQUMsc0VBQVc7QUFDMUQ7O0FBRWUsOEVBQXFCIiwiZmlsZSI6IjI2Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgc2FuaXRpemVSb3cgZnJvbSAnLi9zYW5pdGl6ZS1yb3cnO1xuaW1wb3J0IHN0cmluZ2lmeU9iamVjdFZhbHVlcyBmcm9tICcuL3N0cmluZ2lmeS1vYmplY3QtdmFsdWVzJzsgLy8gU3RyaW5naWZpZXMgdGhlIHZhbHVlcyBvZiBhIHJlY29yZCwgaWdub3JpbmcgYW55IHNwZWNpYWwgdG9wIGxldmVsIGZpZWxkIGtleXNcbi8vIFRPRE86IEFkZCBvcHRpb24gdG8gc3RyaW5naWZ5IGBzY29wZWRTbG90YCBpdGVtc1xuXG52YXIgc3RyaW5naWZ5UmVjb3JkVmFsdWVzID0gZnVuY3Rpb24gc3RyaW5naWZ5UmVjb3JkVmFsdWVzKHJvdywgaWdub3JlRmllbGRzLCBpbmNsdWRlRmllbGRzLCBmaWVsZHNPYmopIHtcbiAgcmV0dXJuIGlzT2JqZWN0KHJvdykgPyBzdHJpbmdpZnlPYmplY3RWYWx1ZXMoc2FuaXRpemVSb3cocm93LCBpZ25vcmVGaWVsZHMsIGluY2x1ZGVGaWVsZHMsIGZpZWxkc09iaikpIDogJyc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBzdHJpbmdpZnlSZWNvcmRWYWx1ZXM7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL3N0cmluZ2lmeS1yZWNvcmQtdmFsdWVzLmpzXG4vLyBtb2R1bGUgaWQgPSAyNjJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///262\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__sanitize_row__ = __webpack_require__(201);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__stringify_object_values__ = __webpack_require__(202);\n\n\n // Stringifies the values of a record, ignoring any special top level field keys\n// TODO: Add option to stringify `scopedSlot` items\n\nvar stringifyRecordValues = function stringifyRecordValues(row, ignoreFields, includeFields, fieldsObj) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils_inspect__[\"i\" /* isObject */])(row) ? Object(__WEBPACK_IMPORTED_MODULE_2__stringify_object_values__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_1__sanitize_row__[\"a\" /* default */])(row, ignoreFields, includeFields, fieldsObj)) : '';\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (stringifyRecordValues);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL3N0cmluZ2lmeS1yZWNvcmQtdmFsdWVzLmpzPzI0MmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWtEO0FBQ1Q7QUFDcUI7QUFDOUQ7O0FBRUE7QUFDQSxTQUFTLHdFQUFRLFFBQVEsaUZBQXFCLENBQUMsc0VBQVc7QUFDMUQ7O0FBRWUsOEVBQXFCIiwiZmlsZSI6IjI2Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgc2FuaXRpemVSb3cgZnJvbSAnLi9zYW5pdGl6ZS1yb3cnO1xuaW1wb3J0IHN0cmluZ2lmeU9iamVjdFZhbHVlcyBmcm9tICcuL3N0cmluZ2lmeS1vYmplY3QtdmFsdWVzJzsgLy8gU3RyaW5naWZpZXMgdGhlIHZhbHVlcyBvZiBhIHJlY29yZCwgaWdub3JpbmcgYW55IHNwZWNpYWwgdG9wIGxldmVsIGZpZWxkIGtleXNcbi8vIFRPRE86IEFkZCBvcHRpb24gdG8gc3RyaW5naWZ5IGBzY29wZWRTbG90YCBpdGVtc1xuXG52YXIgc3RyaW5naWZ5UmVjb3JkVmFsdWVzID0gZnVuY3Rpb24gc3RyaW5naWZ5UmVjb3JkVmFsdWVzKHJvdywgaWdub3JlRmllbGRzLCBpbmNsdWRlRmllbGRzLCBmaWVsZHNPYmopIHtcbiAgcmV0dXJuIGlzT2JqZWN0KHJvdykgPyBzdHJpbmdpZnlPYmplY3RWYWx1ZXMoc2FuaXRpemVSb3cocm93LCBpZ25vcmVGaWVsZHMsIGluY2x1ZGVGaWVsZHMsIGZpZWxkc09iaikpIDogJyc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBzdHJpbmdpZnlSZWNvcmRWYWx1ZXM7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL3N0cmluZ2lmeS1yZWNvcmQtdmFsdWVzLmpzXG4vLyBtb2R1bGUgaWQgPSAyNjJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///262\n"); /***/ }), /* 263 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_stable_sort__ = __webpack_require__(201);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_startcase__ = __webpack_require__(85);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__default_sort_compare__ = __webpack_require__(264);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n props: {\n sortBy: {\n type: String,\n default: ''\n },\n sortDesc: {\n // TODO: Make this tri-state: true, false, null\n type: Boolean,\n default: false\n },\n sortDirection: {\n // This prop is named incorrectly\n // It should be `initialSortDirection` as it is a bit misleading\n // (not to mention it screws up the ARIA label on the headers)\n type: String,\n default: 'asc',\n validator: function validator(direction) {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"a\" /* arrayIncludes */])(['asc', 'desc', 'last'], direction);\n }\n },\n sortCompare: {\n type: Function,\n default: null\n },\n sortCompareOptions: {\n // Supported localCompare options, see `options` section of:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare\n type: Object,\n default: function _default() {\n return {\n numeric: true\n };\n }\n },\n sortCompareLocale: {\n // String: locale code\n // Array: array of Locale strings\n type: [String, Array] // default: undefined\n\n },\n sortNullLast: {\n // Sort null and undefined to appear last\n type: Boolean,\n default: false\n },\n noSortReset: {\n // Another prop that should have had a better name.\n // It should be noSortClear (on non-sortable headers).\n // We will need to make sure the documentation is clear on what\n // this prop does (as well as in the code for future reference)\n type: Boolean,\n default: false\n },\n labelSortAsc: {\n type: String,\n default: 'Click to sort Ascending'\n },\n labelSortDesc: {\n type: String,\n default: 'Click to sort Descending'\n },\n labelSortClear: {\n type: String,\n default: 'Click to clear sorting'\n },\n noLocalSorting: {\n type: Boolean,\n default: false\n },\n noFooterSorting: {\n type: Boolean,\n default: false\n },\n sortIconLeft: {\n // Place the sorting icon on the left of the header cells\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n localSortBy: this.sortBy || '',\n localSortDesc: this.sortDesc || false\n };\n },\n computed: {\n localSorting: function localSorting() {\n return this.hasProvider ? !!this.noProviderSorting : !this.noLocalSorting;\n },\n isSortable: function isSortable() {\n return this.computedFields.some(function (f) {\n return f.sortable;\n });\n },\n sortedItems: function sortedItems() {\n // Sorts the filtered items and returns a new array of the sorted items\n // or the original items array if not sorted.\n var items = (this.filteredItems || this.localItems || []).slice();\n var sortBy = this.localSortBy;\n var sortDesc = this.localSortDesc;\n var sortCompare = this.sortCompare;\n var localSorting = this.localSorting;\n\n var sortOptions = _objectSpread({}, this.sortCompareOptions, {\n usage: 'sort'\n });\n\n var sortLocale = this.sortCompareLocale || undefined;\n var nullLast = this.sortNullLast;\n\n if (sortBy && localSorting) {\n var field = this.computedFieldsObj[sortBy] || {};\n var sortByFormatted = field.sortByFormatted;\n var formatter = Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"f\" /* isFunction */])(sortByFormatted) ? sortByFormatted : sortByFormatted ? this.getFieldFormatter(sortBy) : undefined; // `stableSort` returns a new array, and leaves the original array intact\n\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils_stable_sort__[\"a\" /* default */])(items, function (a, b) {\n var result = null;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"f\" /* isFunction */])(sortCompare)) {\n // Call user provided sortCompare routine\n result = sortCompare(a, b, sortBy, sortDesc, formatter, sortOptions, sortLocale);\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"o\" /* isUndefinedOrNull */])(result) || result === false) {\n // Fallback to built-in defaultSortCompare if sortCompare\n // is not defined or returns null/false\n result = Object(__WEBPACK_IMPORTED_MODULE_4__default_sort_compare__[\"a\" /* default */])(a, b, sortBy, sortDesc, formatter, sortOptions, sortLocale, nullLast);\n } // Negate result if sorting in descending order\n\n\n return (result || 0) * (sortDesc ? -1 : 1);\n });\n }\n\n return items;\n }\n },\n watch: {\n isSortable: function isSortable(newVal, oldVal)\n /* istanbul ignore next: pain in the butt to test */\n {\n if (newVal) {\n if (this.isSortable) {\n this.$on('head-clicked', this.handleSort);\n }\n } else {\n this.$off('head-clicked', this.handleSort);\n }\n },\n sortDesc: function sortDesc(newVal, oldVal) {\n if (newVal === this.localSortDesc) {\n /* istanbul ignore next */\n return;\n }\n\n this.localSortDesc = newVal || false;\n },\n sortBy: function sortBy(newVal, oldVal) {\n if (newVal === this.localSortBy) {\n /* istanbul ignore next */\n return;\n }\n\n this.localSortBy = newVal || '';\n },\n // Update .sync props\n localSortDesc: function localSortDesc(newVal, oldVal) {\n // Emit update to sort-desc.sync\n if (newVal !== oldVal) {\n this.$emit('update:sortDesc', newVal);\n }\n },\n localSortBy: function localSortBy(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.$emit('update:sortBy', newVal);\n }\n }\n },\n created: function created() {\n if (this.isSortable) {\n this.$on('head-clicked', this.handleSort);\n }\n },\n methods: {\n // Handlers\n // Need to move from thead-mixin\n handleSort: function handleSort(key, field, evt, isFoot) {\n var _this = this;\n\n if (!this.isSortable) {\n /* istanbul ignore next */\n return;\n }\n\n if (isFoot && this.noFooterSorting) {\n return;\n } // TODO: make this tri-state sorting\n // cycle desc => asc => none => desc => ...\n\n\n var sortChanged = false;\n\n var toggleLocalSortDesc = function toggleLocalSortDesc() {\n var sortDirection = field.sortDirection || _this.sortDirection;\n\n if (sortDirection === 'asc') {\n _this.localSortDesc = false;\n } else if (sortDirection === 'desc') {\n _this.localSortDesc = true;\n } else {// sortDirection === 'last'\n // Leave at last sort direction from previous column\n }\n };\n\n if (field.sortable) {\n if (key === this.localSortBy) {\n // Change sorting direction on current column\n this.localSortDesc = !this.localSortDesc;\n } else {\n // Start sorting this column ascending\n this.localSortBy = key; // this.localSortDesc = false\n\n toggleLocalSortDesc();\n }\n\n sortChanged = true;\n } else if (this.localSortBy && !this.noSortReset) {\n this.localSortBy = '';\n toggleLocalSortDesc();\n sortChanged = true;\n }\n\n if (sortChanged) {\n // Sorting parameters changed\n this.$emit('sort-changed', this.context);\n }\n },\n // methods to compute classes and attrs for thead>th cells\n sortTheadThClasses: function sortTheadThClasses(key, field, isFoot) {\n return {\n // If sortable and sortIconLeft are true, then place sort icon on the left\n 'b-table-sort-icon-left': field.sortable && this.sortIconLeft && !(isFoot && this.noFooterSorting)\n };\n },\n sortTheadThAttrs: function sortTheadThAttrs(key, field, isFoot) {\n if (!this.isSortable || isFoot && this.noFooterSorting) {\n // No attributes if not a sortable table\n return {};\n }\n\n var sortable = field.sortable;\n var ariaLabel = '';\n\n if ((!field.label || !field.label.trim()) && !field.headerTitle) {\n // In case field's label and title are empty/blank, we need to\n // add a hint about what the column is about for non-sighted users.\n // This is duplicated code from tbody-row mixin, but we need it\n // here as well, since we overwrite the original aria-label.\n\n /* istanbul ignore next */\n ariaLabel = Object(__WEBPACK_IMPORTED_MODULE_1__utils_startcase__[\"a\" /* default */])(key);\n } // The correctness of these labels is very important for screen-reader users.\n\n\n var ariaLabelSorting = '';\n\n if (sortable) {\n if (this.localSortBy === key) {\n // currently sorted sortable column.\n ariaLabelSorting = this.localSortDesc ? this.labelSortAsc : this.labelSortDesc;\n } else {\n // Not currently sorted sortable column.\n // Not using nested ternary's here for clarity/readability\n // Default for ariaLabel\n ariaLabelSorting = this.localSortDesc ? this.labelSortDesc : this.labelSortAsc; // Handle sortDirection setting\n\n var sortDirection = this.sortDirection || field.sortDirection;\n\n if (sortDirection === 'asc') {\n ariaLabelSorting = this.labelSortAsc;\n } else if (sortDirection === 'desc') {\n ariaLabelSorting = this.labelSortDesc;\n }\n }\n } else if (!this.noSortReset) {\n // Non sortable column\n ariaLabelSorting = this.localSortBy ? this.labelSortClear : '';\n } // Assemble the aria-label attribute value\n\n\n ariaLabel = [ariaLabel.trim(), ariaLabelSorting.trim()].filter(Boolean).join(': '); // Assemble the aria-sort attribute value\n\n var ariaSort = sortable && this.localSortBy === key ? this.localSortDesc ? 'descending' : 'ascending' : sortable ? 'none' : null; // Return the attributes\n // (All the above just to get these two values)\n\n return {\n 'aria-label': ariaLabel || null,\n 'aria-sort': ariaSort\n };\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL21peGluLXNvcnRpbmcuanM/NGUwNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUUzSjtBQUNIO0FBQ0k7QUFDa0I7QUFDZjtBQUN6QztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSwyRUFBYTtBQUM1QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdDQUF3QztBQUN4QztBQUNBLE9BQU87O0FBRVA7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsMEVBQVUsbUdBQW1HOztBQUVySSxlQUFlLDJFQUFVO0FBQ3pCOztBQUVBLGNBQWMsMEVBQVU7QUFDeEI7QUFDQTtBQUNBOztBQUVBLGNBQWMsaUZBQWlCO0FBQy9CO0FBQ0E7QUFDQSxxQkFBcUIsOEVBQWtCO0FBQ3ZDLFdBQVc7OztBQUdYO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7OztBQUdBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVMsT0FBTztBQUNoQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CLHlFQUFTO0FBQzdCLE9BQU87OztBQUdQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLHlGQUF5Rjs7QUFFekY7O0FBRUE7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87OztBQUdQLHlGQUF5Rjs7QUFFekYsdUlBQXVJO0FBQ3ZJOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMjYzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IHN0YWJsZVNvcnQgZnJvbSAnLi4vLi4vLi4vdXRpbHMvc3RhYmxlLXNvcnQnO1xuaW1wb3J0IHN0YXJ0Q2FzZSBmcm9tICcuLi8uLi8uLi91dGlscy9zdGFydGNhc2UnO1xuaW1wb3J0IHsgYXJyYXlJbmNsdWRlcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FycmF5JztcbmltcG9ydCB7IGlzRnVuY3Rpb24sIGlzVW5kZWZpbmVkT3JOdWxsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgZGVmYXVsdFNvcnRDb21wYXJlIGZyb20gJy4vZGVmYXVsdC1zb3J0LWNvbXBhcmUnO1xuZXhwb3J0IGRlZmF1bHQge1xuICBwcm9wczoge1xuICAgIHNvcnRCeToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIHNvcnREZXNjOiB7XG4gICAgICAvLyBUT0RPOiBNYWtlIHRoaXMgdHJpLXN0YXRlOiB0cnVlLCBmYWxzZSwgbnVsbFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBzb3J0RGlyZWN0aW9uOiB7XG4gICAgICAvLyBUaGlzIHByb3AgaXMgbmFtZWQgaW5jb3JyZWN0bHlcbiAgICAgIC8vIEl0IHNob3VsZCBiZSBgaW5pdGlhbFNvcnREaXJlY3Rpb25gIGFzIGl0IGlzIGEgYml0IG1pc2xlYWRpbmdcbiAgICAgIC8vIChub3QgdG8gbWVudGlvbiBpdCBzY3Jld3MgdXAgdGhlIEFSSUEgbGFiZWwgb24gdGhlIGhlYWRlcnMpXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnYXNjJyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKGRpcmVjdGlvbikge1xuICAgICAgICByZXR1cm4gYXJyYXlJbmNsdWRlcyhbJ2FzYycsICdkZXNjJywgJ2xhc3QnXSwgZGlyZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNvcnRDb21wYXJlOiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIHNvcnRDb21wYXJlT3B0aW9uczoge1xuICAgICAgLy8gU3VwcG9ydGVkIGxvY2FsQ29tcGFyZSBvcHRpb25zLCBzZWUgYG9wdGlvbnNgIHNlY3Rpb24gb2Y6XG4gICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TdHJpbmcvbG9jYWxlQ29tcGFyZVxuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbnVtZXJpYzogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0sXG4gICAgc29ydENvbXBhcmVMb2NhbGU6IHtcbiAgICAgIC8vIFN0cmluZzogbG9jYWxlIGNvZGVcbiAgICAgIC8vIEFycmF5OiBhcnJheSBvZiBMb2NhbGUgc3RyaW5nc1xuICAgICAgdHlwZTogW1N0cmluZywgQXJyYXldIC8vIGRlZmF1bHQ6IHVuZGVmaW5lZFxuXG4gICAgfSxcbiAgICBzb3J0TnVsbExhc3Q6IHtcbiAgICAgIC8vIFNvcnQgbnVsbCBhbmQgdW5kZWZpbmVkIHRvIGFwcGVhciBsYXN0XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIG5vU29ydFJlc2V0OiB7XG4gICAgICAvLyBBbm90aGVyIHByb3AgdGhhdCBzaG91bGQgaGF2ZSBoYWQgYSBiZXR0ZXIgbmFtZS5cbiAgICAgIC8vIEl0IHNob3VsZCBiZSBub1NvcnRDbGVhciAob24gbm9uLXNvcnRhYmxlIGhlYWRlcnMpLlxuICAgICAgLy8gV2Ugd2lsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZG9jdW1lbnRhdGlvbiBpcyBjbGVhciBvbiB3aGF0XG4gICAgICAvLyB0aGlzIHByb3AgZG9lcyAoYXMgd2VsbCBhcyBpbiB0aGUgY29kZSBmb3IgZnV0dXJlIHJlZmVyZW5jZSlcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgbGFiZWxTb3J0QXNjOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnQ2xpY2sgdG8gc29ydCBBc2NlbmRpbmcnXG4gICAgfSxcbiAgICBsYWJlbFNvcnREZXNjOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnQ2xpY2sgdG8gc29ydCBEZXNjZW5kaW5nJ1xuICAgIH0sXG4gICAgbGFiZWxTb3J0Q2xlYXI6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdDbGljayB0byBjbGVhciBzb3J0aW5nJ1xuICAgIH0sXG4gICAgbm9Mb2NhbFNvcnRpbmc6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgbm9Gb290ZXJTb3J0aW5nOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHNvcnRJY29uTGVmdDoge1xuICAgICAgLy8gUGxhY2UgdGhlIHNvcnRpbmcgaWNvbiBvbiB0aGUgbGVmdCBvZiB0aGUgaGVhZGVyIGNlbGxzXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvY2FsU29ydEJ5OiB0aGlzLnNvcnRCeSB8fCAnJyxcbiAgICAgIGxvY2FsU29ydERlc2M6IHRoaXMuc29ydERlc2MgfHwgZmFsc2VcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGxvY2FsU29ydGluZzogZnVuY3Rpb24gbG9jYWxTb3J0aW5nKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGFzUHJvdmlkZXIgPyAhIXRoaXMubm9Qcm92aWRlclNvcnRpbmcgOiAhdGhpcy5ub0xvY2FsU29ydGluZztcbiAgICB9LFxuICAgIGlzU29ydGFibGU6IGZ1bmN0aW9uIGlzU29ydGFibGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wdXRlZEZpZWxkcy5zb21lKGZ1bmN0aW9uIChmKSB7XG4gICAgICAgIHJldHVybiBmLnNvcnRhYmxlO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBzb3J0ZWRJdGVtczogZnVuY3Rpb24gc29ydGVkSXRlbXMoKSB7XG4gICAgICAvLyBTb3J0cyB0aGUgZmlsdGVyZWQgaXRlbXMgYW5kIHJldHVybnMgYSBuZXcgYXJyYXkgb2YgdGhlIHNvcnRlZCBpdGVtc1xuICAgICAgLy8gb3IgdGhlIG9yaWdpbmFsIGl0ZW1zIGFycmF5IGlmIG5vdCBzb3J0ZWQuXG4gICAgICB2YXIgaXRlbXMgPSAodGhpcy5maWx0ZXJlZEl0ZW1zIHx8IHRoaXMubG9jYWxJdGVtcyB8fCBbXSkuc2xpY2UoKTtcbiAgICAgIHZhciBzb3J0QnkgPSB0aGlzLmxvY2FsU29ydEJ5O1xuICAgICAgdmFyIHNvcnREZXNjID0gdGhpcy5sb2NhbFNvcnREZXNjO1xuICAgICAgdmFyIHNvcnRDb21wYXJlID0gdGhpcy5zb3J0Q29tcGFyZTtcbiAgICAgIHZhciBsb2NhbFNvcnRpbmcgPSB0aGlzLmxvY2FsU29ydGluZztcblxuICAgICAgdmFyIHNvcnRPcHRpb25zID0gX29iamVjdFNwcmVhZCh7fSwgdGhpcy5zb3J0Q29tcGFyZU9wdGlvbnMsIHtcbiAgICAgICAgdXNhZ2U6ICdzb3J0J1xuICAgICAgfSk7XG5cbiAgICAgIHZhciBzb3J0TG9jYWxlID0gdGhpcy5zb3J0Q29tcGFyZUxvY2FsZSB8fCB1bmRlZmluZWQ7XG4gICAgICB2YXIgbnVsbExhc3QgPSB0aGlzLnNvcnROdWxsTGFzdDtcblxuICAgICAgaWYgKHNvcnRCeSAmJiBsb2NhbFNvcnRpbmcpIHtcbiAgICAgICAgdmFyIGZpZWxkID0gdGhpcy5jb21wdXRlZEZpZWxkc09ialtzb3J0QnldIHx8IHt9O1xuICAgICAgICB2YXIgc29ydEJ5Rm9ybWF0dGVkID0gZmllbGQuc29ydEJ5Rm9ybWF0dGVkO1xuICAgICAgICB2YXIgZm9ybWF0dGVyID0gaXNGdW5jdGlvbihzb3J0QnlGb3JtYXR0ZWQpID8gc29ydEJ5Rm9ybWF0dGVkIDogc29ydEJ5Rm9ybWF0dGVkID8gdGhpcy5nZXRGaWVsZEZvcm1hdHRlcihzb3J0QnkpIDogdW5kZWZpbmVkOyAvLyBgc3RhYmxlU29ydGAgcmV0dXJucyBhIG5ldyBhcnJheSwgYW5kIGxlYXZlcyB0aGUgb3JpZ2luYWwgYXJyYXkgaW50YWN0XG5cbiAgICAgICAgcmV0dXJuIHN0YWJsZVNvcnQoaXRlbXMsIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IG51bGw7XG5cbiAgICAgICAgICBpZiAoaXNGdW5jdGlvbihzb3J0Q29tcGFyZSkpIHtcbiAgICAgICAgICAgIC8vIENhbGwgdXNlciBwcm92aWRlZCBzb3J0Q29tcGFyZSByb3V0aW5lXG4gICAgICAgICAgICByZXN1bHQgPSBzb3J0Q29tcGFyZShhLCBiLCBzb3J0QnksIHNvcnREZXNjLCBmb3JtYXR0ZXIsIHNvcnRPcHRpb25zLCBzb3J0TG9jYWxlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXNVbmRlZmluZWRPck51bGwocmVzdWx0KSB8fCByZXN1bHQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAvLyBGYWxsYmFjayB0byBidWlsdC1pbiBkZWZhdWx0U29ydENvbXBhcmUgaWYgc29ydENvbXBhcmVcbiAgICAgICAgICAgIC8vIGlzIG5vdCBkZWZpbmVkIG9yIHJldHVybnMgbnVsbC9mYWxzZVxuICAgICAgICAgICAgcmVzdWx0ID0gZGVmYXVsdFNvcnRDb21wYXJlKGEsIGIsIHNvcnRCeSwgc29ydERlc2MsIGZvcm1hdHRlciwgc29ydE9wdGlvbnMsIHNvcnRMb2NhbGUsIG51bGxMYXN0KTtcbiAgICAgICAgICB9IC8vIE5lZ2F0ZSByZXN1bHQgaWYgc29ydGluZyBpbiBkZXNjZW5kaW5nIG9yZGVyXG5cblxuICAgICAgICAgIHJldHVybiAocmVzdWx0IHx8IDApICogKHNvcnREZXNjID8gLTEgOiAxKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgaXNTb3J0YWJsZTogZnVuY3Rpb24gaXNTb3J0YWJsZShuZXdWYWwsIG9sZFZhbClcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogcGFpbiBpbiB0aGUgYnV0dCB0byB0ZXN0ICovXG4gICAge1xuICAgICAgaWYgKG5ld1ZhbCkge1xuICAgICAgICBpZiAodGhpcy5pc1NvcnRhYmxlKSB7XG4gICAgICAgICAgdGhpcy4kb24oJ2hlYWQtY2xpY2tlZCcsIHRoaXMuaGFuZGxlU29ydCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuJG9mZignaGVhZC1jbGlja2VkJywgdGhpcy5oYW5kbGVTb3J0KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNvcnREZXNjOiBmdW5jdGlvbiBzb3J0RGVzYyhuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgaWYgKG5ld1ZhbCA9PT0gdGhpcy5sb2NhbFNvcnREZXNjKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sb2NhbFNvcnREZXNjID0gbmV3VmFsIHx8IGZhbHNlO1xuICAgIH0sXG4gICAgc29ydEJ5OiBmdW5jdGlvbiBzb3J0QnkobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIGlmIChuZXdWYWwgPT09IHRoaXMubG9jYWxTb3J0QnkpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxvY2FsU29ydEJ5ID0gbmV3VmFsIHx8ICcnO1xuICAgIH0sXG4gICAgLy8gVXBkYXRlIC5zeW5jIHByb3BzXG4gICAgbG9jYWxTb3J0RGVzYzogZnVuY3Rpb24gbG9jYWxTb3J0RGVzYyhuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgLy8gRW1pdCB1cGRhdGUgdG8gc29ydC1kZXNjLnN5bmNcbiAgICAgIGlmIChuZXdWYWwgIT09IG9sZFZhbCkge1xuICAgICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6c29ydERlc2MnLCBuZXdWYWwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgbG9jYWxTb3J0Qnk6IGZ1bmN0aW9uIGxvY2FsU29ydEJ5KG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICBpZiAobmV3VmFsICE9PSBvbGRWYWwpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgndXBkYXRlOnNvcnRCeScsIG5ld1ZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIGlmICh0aGlzLmlzU29ydGFibGUpIHtcbiAgICAgIHRoaXMuJG9uKCdoZWFkLWNsaWNrZWQnLCB0aGlzLmhhbmRsZVNvcnQpO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIC8vIEhhbmRsZXJzXG4gICAgLy8gTmVlZCB0byBtb3ZlIGZyb20gdGhlYWQtbWl4aW5cbiAgICBoYW5kbGVTb3J0OiBmdW5jdGlvbiBoYW5kbGVTb3J0KGtleSwgZmllbGQsIGV2dCwgaXNGb290KSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAoIXRoaXMuaXNTb3J0YWJsZSkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0Zvb3QgJiYgdGhpcy5ub0Zvb3RlclNvcnRpbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBUT0RPOiBtYWtlIHRoaXMgdHJpLXN0YXRlIHNvcnRpbmdcbiAgICAgIC8vIGN5Y2xlIGRlc2MgPT4gYXNjID0+IG5vbmUgPT4gZGVzYyA9PiAuLi5cblxuXG4gICAgICB2YXIgc29ydENoYW5nZWQgPSBmYWxzZTtcblxuICAgICAgdmFyIHRvZ2dsZUxvY2FsU29ydERlc2MgPSBmdW5jdGlvbiB0b2dnbGVMb2NhbFNvcnREZXNjKCkge1xuICAgICAgICB2YXIgc29ydERpcmVjdGlvbiA9IGZpZWxkLnNvcnREaXJlY3Rpb24gfHwgX3RoaXMuc29ydERpcmVjdGlvbjtcblxuICAgICAgICBpZiAoc29ydERpcmVjdGlvbiA9PT0gJ2FzYycpIHtcbiAgICAgICAgICBfdGhpcy5sb2NhbFNvcnREZXNjID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSBpZiAoc29ydERpcmVjdGlvbiA9PT0gJ2Rlc2MnKSB7XG4gICAgICAgICAgX3RoaXMubG9jYWxTb3J0RGVzYyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7Ly8gc29ydERpcmVjdGlvbiA9PT0gJ2xhc3QnXG4gICAgICAgICAgLy8gTGVhdmUgYXQgbGFzdCBzb3J0IGRpcmVjdGlvbiBmcm9tIHByZXZpb3VzIGNvbHVtblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBpZiAoZmllbGQuc29ydGFibGUpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gdGhpcy5sb2NhbFNvcnRCeSkge1xuICAgICAgICAgIC8vIENoYW5nZSBzb3J0aW5nIGRpcmVjdGlvbiBvbiBjdXJyZW50IGNvbHVtblxuICAgICAgICAgIHRoaXMubG9jYWxTb3J0RGVzYyA9ICF0aGlzLmxvY2FsU29ydERlc2M7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gU3RhcnQgc29ydGluZyB0aGlzIGNvbHVtbiBhc2NlbmRpbmdcbiAgICAgICAgICB0aGlzLmxvY2FsU29ydEJ5ID0ga2V5OyAvLyB0aGlzLmxvY2FsU29ydERlc2MgPSBmYWxzZVxuXG4gICAgICAgICAgdG9nZ2xlTG9jYWxTb3J0RGVzYygpO1xuICAgICAgICB9XG5cbiAgICAgICAgc29ydENoYW5nZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmxvY2FsU29ydEJ5ICYmICF0aGlzLm5vU29ydFJlc2V0KSB7XG4gICAgICAgIHRoaXMubG9jYWxTb3J0QnkgPSAnJztcbiAgICAgICAgdG9nZ2xlTG9jYWxTb3J0RGVzYygpO1xuICAgICAgICBzb3J0Q2hhbmdlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzb3J0Q2hhbmdlZCkge1xuICAgICAgICAvLyBTb3J0aW5nIHBhcmFtZXRlcnMgY2hhbmdlZFxuICAgICAgICB0aGlzLiRlbWl0KCdzb3J0LWNoYW5nZWQnLCB0aGlzLmNvbnRleHQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8gbWV0aG9kcyB0byBjb21wdXRlIGNsYXNzZXMgYW5kIGF0dHJzIGZvciB0aGVhZD50aCBjZWxsc1xuICAgIHNvcnRUaGVhZFRoQ2xhc3NlczogZnVuY3Rpb24gc29ydFRoZWFkVGhDbGFzc2VzKGtleSwgZmllbGQsIGlzRm9vdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLy8gSWYgc29ydGFibGUgYW5kIHNvcnRJY29uTGVmdCBhcmUgdHJ1ZSwgdGhlbiBwbGFjZSBzb3J0IGljb24gb24gdGhlIGxlZnRcbiAgICAgICAgJ2ItdGFibGUtc29ydC1pY29uLWxlZnQnOiBmaWVsZC5zb3J0YWJsZSAmJiB0aGlzLnNvcnRJY29uTGVmdCAmJiAhKGlzRm9vdCAmJiB0aGlzLm5vRm9vdGVyU29ydGluZylcbiAgICAgIH07XG4gICAgfSxcbiAgICBzb3J0VGhlYWRUaEF0dHJzOiBmdW5jdGlvbiBzb3J0VGhlYWRUaEF0dHJzKGtleSwgZmllbGQsIGlzRm9vdCkge1xuICAgICAgaWYgKCF0aGlzLmlzU29ydGFibGUgfHwgaXNGb290ICYmIHRoaXMubm9Gb290ZXJTb3J0aW5nKSB7XG4gICAgICAgIC8vIE5vIGF0dHJpYnV0ZXMgaWYgbm90IGEgc29ydGFibGUgdGFibGVcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuXG4gICAgICB2YXIgc29ydGFibGUgPSBmaWVsZC5zb3J0YWJsZTtcbiAgICAgIHZhciBhcmlhTGFiZWwgPSAnJztcblxuICAgICAgaWYgKCghZmllbGQubGFiZWwgfHwgIWZpZWxkLmxhYmVsLnRyaW0oKSkgJiYgIWZpZWxkLmhlYWRlclRpdGxlKSB7XG4gICAgICAgIC8vIEluIGNhc2UgZmllbGQncyBsYWJlbCBhbmQgdGl0bGUgYXJlIGVtcHR5L2JsYW5rLCB3ZSBuZWVkIHRvXG4gICAgICAgIC8vIGFkZCBhIGhpbnQgYWJvdXQgd2hhdCB0aGUgY29sdW1uIGlzIGFib3V0IGZvciBub24tc2lnaHRlZCB1c2Vycy5cbiAgICAgICAgLy8gVGhpcyBpcyBkdXBsaWNhdGVkIGNvZGUgZnJvbSB0Ym9keS1yb3cgbWl4aW4sIGJ1dCB3ZSBuZWVkIGl0XG4gICAgICAgIC8vIGhlcmUgYXMgd2VsbCwgc2luY2Ugd2Ugb3ZlcndyaXRlIHRoZSBvcmlnaW5hbCBhcmlhLWxhYmVsLlxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGFyaWFMYWJlbCA9IHN0YXJ0Q2FzZShrZXkpO1xuICAgICAgfSAvLyBUaGUgY29ycmVjdG5lc3Mgb2YgdGhlc2UgbGFiZWxzIGlzIHZlcnkgaW1wb3J0YW50IGZvciBzY3JlZW4tcmVhZGVyIHVzZXJzLlxuXG5cbiAgICAgIHZhciBhcmlhTGFiZWxTb3J0aW5nID0gJyc7XG5cbiAgICAgIGlmIChzb3J0YWJsZSkge1xuICAgICAgICBpZiAodGhpcy5sb2NhbFNvcnRCeSA9PT0ga2V5KSB7XG4gICAgICAgICAgLy8gY3VycmVudGx5IHNvcnRlZCBzb3J0YWJsZSBjb2x1bW4uXG4gICAgICAgICAgYXJpYUxhYmVsU29ydGluZyA9IHRoaXMubG9jYWxTb3J0RGVzYyA/IHRoaXMubGFiZWxTb3J0QXNjIDogdGhpcy5sYWJlbFNvcnREZXNjO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE5vdCBjdXJyZW50bHkgc29ydGVkIHNvcnRhYmxlIGNvbHVtbi5cbiAgICAgICAgICAvLyBOb3QgdXNpbmcgbmVzdGVkIHRlcm5hcnkncyBoZXJlIGZvciBjbGFyaXR5L3JlYWRhYmlsaXR5XG4gICAgICAgICAgLy8gRGVmYXVsdCBmb3IgYXJpYUxhYmVsXG4gICAgICAgICAgYXJpYUxhYmVsU29ydGluZyA9IHRoaXMubG9jYWxTb3J0RGVzYyA/IHRoaXMubGFiZWxTb3J0RGVzYyA6IHRoaXMubGFiZWxTb3J0QXNjOyAvLyBIYW5kbGUgc29ydERpcmVjdGlvbiBzZXR0aW5nXG5cbiAgICAgICAgICB2YXIgc29ydERpcmVjdGlvbiA9IHRoaXMuc29ydERpcmVjdGlvbiB8fCBmaWVsZC5zb3J0RGlyZWN0aW9uO1xuXG4gICAgICAgICAgaWYgKHNvcnREaXJlY3Rpb24gPT09ICdhc2MnKSB7XG4gICAgICAgICAgICBhcmlhTGFiZWxTb3J0aW5nID0gdGhpcy5sYWJlbFNvcnRBc2M7XG4gICAgICAgICAgfSBlbHNlIGlmIChzb3J0RGlyZWN0aW9uID09PSAnZGVzYycpIHtcbiAgICAgICAgICAgIGFyaWFMYWJlbFNvcnRpbmcgPSB0aGlzLmxhYmVsU29ydERlc2M7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLm5vU29ydFJlc2V0KSB7XG4gICAgICAgIC8vIE5vbiBzb3J0YWJsZSBjb2x1bW5cbiAgICAgICAgYXJpYUxhYmVsU29ydGluZyA9IHRoaXMubG9jYWxTb3J0QnkgPyB0aGlzLmxhYmVsU29ydENsZWFyIDogJyc7XG4gICAgICB9IC8vIEFzc2VtYmxlIHRoZSBhcmlhLWxhYmVsIGF0dHJpYnV0ZSB2YWx1ZVxuXG5cbiAgICAgIGFyaWFMYWJlbCA9IFthcmlhTGFiZWwudHJpbSgpLCBhcmlhTGFiZWxTb3J0aW5nLnRyaW0oKV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJzogJyk7IC8vIEFzc2VtYmxlIHRoZSBhcmlhLXNvcnQgYXR0cmlidXRlIHZhbHVlXG5cbiAgICAgIHZhciBhcmlhU29ydCA9IHNvcnRhYmxlICYmIHRoaXMubG9jYWxTb3J0QnkgPT09IGtleSA/IHRoaXMubG9jYWxTb3J0RGVzYyA/ICdkZXNjZW5kaW5nJyA6ICdhc2NlbmRpbmcnIDogc29ydGFibGUgPyAnbm9uZScgOiBudWxsOyAvLyBSZXR1cm4gdGhlIGF0dHJpYnV0ZXNcbiAgICAgIC8vIChBbGwgdGhlIGFib3ZlIGp1c3QgdG8gZ2V0IHRoZXNlIHR3byB2YWx1ZXMpXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsIHx8IG51bGwsXG4gICAgICAgICdhcmlhLXNvcnQnOiBhcmlhU29ydFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL21peGluLXNvcnRpbmcuanNcbi8vIG1vZHVsZSBpZCA9IDI2M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///263\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_stable_sort__ = __webpack_require__(203);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_startcase__ = __webpack_require__(85);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__default_sort_compare__ = __webpack_require__(264);\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n props: {\n sortBy: {\n type: String,\n default: ''\n },\n sortDesc: {\n // TODO: Make this tri-state: true, false, null\n type: Boolean,\n default: false\n },\n sortDirection: {\n // This prop is named incorrectly\n // It should be `initialSortDirection` as it is a bit misleading\n // (not to mention it screws up the ARIA label on the headers)\n type: String,\n default: 'asc',\n validator: function validator(direction) {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"a\" /* arrayIncludes */])(['asc', 'desc', 'last'], direction);\n }\n },\n sortCompare: {\n type: Function,\n default: null\n },\n sortCompareOptions: {\n // Supported localCompare options, see `options` section of:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare\n type: Object,\n default: function _default() {\n return {\n numeric: true\n };\n }\n },\n sortCompareLocale: {\n // String: locale code\n // Array: array of Locale strings\n type: [String, Array] // default: undefined\n\n },\n sortNullLast: {\n // Sort null and undefined to appear last\n type: Boolean,\n default: false\n },\n noSortReset: {\n // Another prop that should have had a better name.\n // It should be noSortClear (on non-sortable headers).\n // We will need to make sure the documentation is clear on what\n // this prop does (as well as in the code for future reference)\n type: Boolean,\n default: false\n },\n labelSortAsc: {\n type: String,\n default: 'Click to sort Ascending'\n },\n labelSortDesc: {\n type: String,\n default: 'Click to sort Descending'\n },\n labelSortClear: {\n type: String,\n default: 'Click to clear sorting'\n },\n noLocalSorting: {\n type: Boolean,\n default: false\n },\n noFooterSorting: {\n type: Boolean,\n default: false\n },\n sortIconLeft: {\n // Place the sorting icon on the left of the header cells\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n localSortBy: this.sortBy || '',\n localSortDesc: this.sortDesc || false\n };\n },\n computed: {\n localSorting: function localSorting() {\n return this.hasProvider ? !!this.noProviderSorting : !this.noLocalSorting;\n },\n isSortable: function isSortable() {\n return this.computedFields.some(function (f) {\n return f.sortable;\n });\n },\n sortedItems: function sortedItems() {\n // Sorts the filtered items and returns a new array of the sorted items\n // or the original items array if not sorted.\n var items = (this.filteredItems || this.localItems || []).slice();\n var sortBy = this.localSortBy;\n var sortDesc = this.localSortDesc;\n var sortCompare = this.sortCompare;\n var localSorting = this.localSorting;\n\n var sortOptions = _objectSpread({}, this.sortCompareOptions, {\n usage: 'sort'\n });\n\n var sortLocale = this.sortCompareLocale || undefined;\n var nullLast = this.sortNullLast;\n\n if (sortBy && localSorting) {\n var field = this.computedFieldsObj[sortBy] || {};\n var sortByFormatted = field.sortByFormatted;\n var formatter = Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"f\" /* isFunction */])(sortByFormatted) ? sortByFormatted : sortByFormatted ? this.getFieldFormatter(sortBy) : undefined; // `stableSort` returns a new array, and leaves the original array intact\n\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils_stable_sort__[\"a\" /* default */])(items, function (a, b) {\n var result = null;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"f\" /* isFunction */])(sortCompare)) {\n // Call user provided sortCompare routine\n result = sortCompare(a, b, sortBy, sortDesc, formatter, sortOptions, sortLocale);\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_3__utils_inspect__[\"o\" /* isUndefinedOrNull */])(result) || result === false) {\n // Fallback to built-in defaultSortCompare if sortCompare\n // is not defined or returns null/false\n result = Object(__WEBPACK_IMPORTED_MODULE_4__default_sort_compare__[\"a\" /* default */])(a, b, sortBy, sortDesc, formatter, sortOptions, sortLocale, nullLast);\n } // Negate result if sorting in descending order\n\n\n return (result || 0) * (sortDesc ? -1 : 1);\n });\n }\n\n return items;\n }\n },\n watch: {\n isSortable: function isSortable(newVal, oldVal)\n /* istanbul ignore next: pain in the butt to test */\n {\n if (newVal) {\n if (this.isSortable) {\n this.$on('head-clicked', this.handleSort);\n }\n } else {\n this.$off('head-clicked', this.handleSort);\n }\n },\n sortDesc: function sortDesc(newVal, oldVal) {\n if (newVal === this.localSortDesc) {\n /* istanbul ignore next */\n return;\n }\n\n this.localSortDesc = newVal || false;\n },\n sortBy: function sortBy(newVal, oldVal) {\n if (newVal === this.localSortBy) {\n /* istanbul ignore next */\n return;\n }\n\n this.localSortBy = newVal || '';\n },\n // Update .sync props\n localSortDesc: function localSortDesc(newVal, oldVal) {\n // Emit update to sort-desc.sync\n if (newVal !== oldVal) {\n this.$emit('update:sortDesc', newVal);\n }\n },\n localSortBy: function localSortBy(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.$emit('update:sortBy', newVal);\n }\n }\n },\n created: function created() {\n if (this.isSortable) {\n this.$on('head-clicked', this.handleSort);\n }\n },\n methods: {\n // Handlers\n // Need to move from thead-mixin\n handleSort: function handleSort(key, field, evt, isFoot) {\n var _this = this;\n\n if (!this.isSortable) {\n /* istanbul ignore next */\n return;\n }\n\n if (isFoot && this.noFooterSorting) {\n return;\n } // TODO: make this tri-state sorting\n // cycle desc => asc => none => desc => ...\n\n\n var sortChanged = false;\n\n var toggleLocalSortDesc = function toggleLocalSortDesc() {\n var sortDirection = field.sortDirection || _this.sortDirection;\n\n if (sortDirection === 'asc') {\n _this.localSortDesc = false;\n } else if (sortDirection === 'desc') {\n _this.localSortDesc = true;\n } else {// sortDirection === 'last'\n // Leave at last sort direction from previous column\n }\n };\n\n if (field.sortable) {\n if (key === this.localSortBy) {\n // Change sorting direction on current column\n this.localSortDesc = !this.localSortDesc;\n } else {\n // Start sorting this column ascending\n this.localSortBy = key; // this.localSortDesc = false\n\n toggleLocalSortDesc();\n }\n\n sortChanged = true;\n } else if (this.localSortBy && !this.noSortReset) {\n this.localSortBy = '';\n toggleLocalSortDesc();\n sortChanged = true;\n }\n\n if (sortChanged) {\n // Sorting parameters changed\n this.$emit('sort-changed', this.context);\n }\n },\n // methods to compute classes and attrs for thead>th cells\n sortTheadThClasses: function sortTheadThClasses(key, field, isFoot) {\n return {\n // If sortable and sortIconLeft are true, then place sort icon on the left\n 'b-table-sort-icon-left': field.sortable && this.sortIconLeft && !(isFoot && this.noFooterSorting)\n };\n },\n sortTheadThAttrs: function sortTheadThAttrs(key, field, isFoot) {\n if (!this.isSortable || isFoot && this.noFooterSorting) {\n // No attributes if not a sortable table\n return {};\n }\n\n var sortable = field.sortable;\n var ariaLabel = '';\n\n if ((!field.label || !field.label.trim()) && !field.headerTitle) {\n // In case field's label and title are empty/blank, we need to\n // add a hint about what the column is about for non-sighted users.\n // This is duplicated code from tbody-row mixin, but we need it\n // here as well, since we overwrite the original aria-label.\n\n /* istanbul ignore next */\n ariaLabel = Object(__WEBPACK_IMPORTED_MODULE_1__utils_startcase__[\"a\" /* default */])(key);\n } // The correctness of these labels is very important for screen-reader users.\n\n\n var ariaLabelSorting = '';\n\n if (sortable) {\n if (this.localSortBy === key) {\n // currently sorted sortable column.\n ariaLabelSorting = this.localSortDesc ? this.labelSortAsc : this.labelSortDesc;\n } else {\n // Not currently sorted sortable column.\n // Not using nested ternary's here for clarity/readability\n // Default for ariaLabel\n ariaLabelSorting = this.localSortDesc ? this.labelSortDesc : this.labelSortAsc; // Handle sortDirection setting\n\n var sortDirection = this.sortDirection || field.sortDirection;\n\n if (sortDirection === 'asc') {\n ariaLabelSorting = this.labelSortAsc;\n } else if (sortDirection === 'desc') {\n ariaLabelSorting = this.labelSortDesc;\n }\n }\n } else if (!this.noSortReset) {\n // Non sortable column\n ariaLabelSorting = this.localSortBy ? this.labelSortClear : '';\n } // Assemble the aria-label attribute value\n\n\n ariaLabel = [ariaLabel.trim(), ariaLabelSorting.trim()].filter(Boolean).join(': '); // Assemble the aria-sort attribute value\n\n var ariaSort = sortable && this.localSortBy === key ? this.localSortDesc ? 'descending' : 'ascending' : sortable ? 'none' : null; // Return the attributes\n // (All the above just to get these two values)\n\n return {\n 'aria-label': ariaLabel || null,\n 'aria-sort': ariaSort\n };\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL21peGluLXNvcnRpbmcuanM/NGUwNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsK0NBQStDLDJDQUEyQyxFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyx5Q0FBeUMsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcGdCLDJDQUEyQyxrQkFBa0Isa0NBQWtDLHFFQUFxRSxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsRUFBRSxZQUFZOztBQUUzSjtBQUNIO0FBQ0k7QUFDa0I7QUFDZjtBQUN6QztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSwyRUFBYTtBQUM1QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdDQUF3QztBQUN4QztBQUNBLE9BQU87O0FBRVA7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsMEVBQVUsbUdBQW1HOztBQUVySSxlQUFlLDJFQUFVO0FBQ3pCOztBQUVBLGNBQWMsMEVBQVU7QUFDeEI7QUFDQTtBQUNBOztBQUVBLGNBQWMsaUZBQWlCO0FBQy9CO0FBQ0E7QUFDQSxxQkFBcUIsOEVBQWtCO0FBQ3ZDLFdBQVc7OztBQUdYO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7OztBQUdBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVMsT0FBTztBQUNoQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CLHlFQUFTO0FBQzdCLE9BQU87OztBQUdQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLHlGQUF5Rjs7QUFFekY7O0FBRUE7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87OztBQUdQLHlGQUF5Rjs7QUFFekYsdUlBQXVJO0FBQ3ZJOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiMjYzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKHNvdXJjZSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IHN0YWJsZVNvcnQgZnJvbSAnLi4vLi4vLi4vdXRpbHMvc3RhYmxlLXNvcnQnO1xuaW1wb3J0IHN0YXJ0Q2FzZSBmcm9tICcuLi8uLi8uLi91dGlscy9zdGFydGNhc2UnO1xuaW1wb3J0IHsgYXJyYXlJbmNsdWRlcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FycmF5JztcbmltcG9ydCB7IGlzRnVuY3Rpb24sIGlzVW5kZWZpbmVkT3JOdWxsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgZGVmYXVsdFNvcnRDb21wYXJlIGZyb20gJy4vZGVmYXVsdC1zb3J0LWNvbXBhcmUnO1xuZXhwb3J0IGRlZmF1bHQge1xuICBwcm9wczoge1xuICAgIHNvcnRCeToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIHNvcnREZXNjOiB7XG4gICAgICAvLyBUT0RPOiBNYWtlIHRoaXMgdHJpLXN0YXRlOiB0cnVlLCBmYWxzZSwgbnVsbFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBzb3J0RGlyZWN0aW9uOiB7XG4gICAgICAvLyBUaGlzIHByb3AgaXMgbmFtZWQgaW5jb3JyZWN0bHlcbiAgICAgIC8vIEl0IHNob3VsZCBiZSBgaW5pdGlhbFNvcnREaXJlY3Rpb25gIGFzIGl0IGlzIGEgYml0IG1pc2xlYWRpbmdcbiAgICAgIC8vIChub3QgdG8gbWVudGlvbiBpdCBzY3Jld3MgdXAgdGhlIEFSSUEgbGFiZWwgb24gdGhlIGhlYWRlcnMpXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnYXNjJyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKGRpcmVjdGlvbikge1xuICAgICAgICByZXR1cm4gYXJyYXlJbmNsdWRlcyhbJ2FzYycsICdkZXNjJywgJ2xhc3QnXSwgZGlyZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNvcnRDb21wYXJlOiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIHNvcnRDb21wYXJlT3B0aW9uczoge1xuICAgICAgLy8gU3VwcG9ydGVkIGxvY2FsQ29tcGFyZSBvcHRpb25zLCBzZWUgYG9wdGlvbnNgIHNlY3Rpb24gb2Y6XG4gICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TdHJpbmcvbG9jYWxlQ29tcGFyZVxuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gX2RlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbnVtZXJpYzogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0sXG4gICAgc29ydENvbXBhcmVMb2NhbGU6IHtcbiAgICAgIC8vIFN0cmluZzogbG9jYWxlIGNvZGVcbiAgICAgIC8vIEFycmF5OiBhcnJheSBvZiBMb2NhbGUgc3RyaW5nc1xuICAgICAgdHlwZTogW1N0cmluZywgQXJyYXldIC8vIGRlZmF1bHQ6IHVuZGVmaW5lZFxuXG4gICAgfSxcbiAgICBzb3J0TnVsbExhc3Q6IHtcbiAgICAgIC8vIFNvcnQgbnVsbCBhbmQgdW5kZWZpbmVkIHRvIGFwcGVhciBsYXN0XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIG5vU29ydFJlc2V0OiB7XG4gICAgICAvLyBBbm90aGVyIHByb3AgdGhhdCBzaG91bGQgaGF2ZSBoYWQgYSBiZXR0ZXIgbmFtZS5cbiAgICAgIC8vIEl0IHNob3VsZCBiZSBub1NvcnRDbGVhciAob24gbm9uLXNvcnRhYmxlIGhlYWRlcnMpLlxuICAgICAgLy8gV2Ugd2lsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZG9jdW1lbnRhdGlvbiBpcyBjbGVhciBvbiB3aGF0XG4gICAgICAvLyB0aGlzIHByb3AgZG9lcyAoYXMgd2VsbCBhcyBpbiB0aGUgY29kZSBmb3IgZnV0dXJlIHJlZmVyZW5jZSlcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgbGFiZWxTb3J0QXNjOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnQ2xpY2sgdG8gc29ydCBBc2NlbmRpbmcnXG4gICAgfSxcbiAgICBsYWJlbFNvcnREZXNjOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnQ2xpY2sgdG8gc29ydCBEZXNjZW5kaW5nJ1xuICAgIH0sXG4gICAgbGFiZWxTb3J0Q2xlYXI6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdDbGljayB0byBjbGVhciBzb3J0aW5nJ1xuICAgIH0sXG4gICAgbm9Mb2NhbFNvcnRpbmc6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgbm9Gb290ZXJTb3J0aW5nOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHNvcnRJY29uTGVmdDoge1xuICAgICAgLy8gUGxhY2UgdGhlIHNvcnRpbmcgaWNvbiBvbiB0aGUgbGVmdCBvZiB0aGUgaGVhZGVyIGNlbGxzXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvY2FsU29ydEJ5OiB0aGlzLnNvcnRCeSB8fCAnJyxcbiAgICAgIGxvY2FsU29ydERlc2M6IHRoaXMuc29ydERlc2MgfHwgZmFsc2VcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGxvY2FsU29ydGluZzogZnVuY3Rpb24gbG9jYWxTb3J0aW5nKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGFzUHJvdmlkZXIgPyAhIXRoaXMubm9Qcm92aWRlclNvcnRpbmcgOiAhdGhpcy5ub0xvY2FsU29ydGluZztcbiAgICB9LFxuICAgIGlzU29ydGFibGU6IGZ1bmN0aW9uIGlzU29ydGFibGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wdXRlZEZpZWxkcy5zb21lKGZ1bmN0aW9uIChmKSB7XG4gICAgICAgIHJldHVybiBmLnNvcnRhYmxlO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBzb3J0ZWRJdGVtczogZnVuY3Rpb24gc29ydGVkSXRlbXMoKSB7XG4gICAgICAvLyBTb3J0cyB0aGUgZmlsdGVyZWQgaXRlbXMgYW5kIHJldHVybnMgYSBuZXcgYXJyYXkgb2YgdGhlIHNvcnRlZCBpdGVtc1xuICAgICAgLy8gb3IgdGhlIG9yaWdpbmFsIGl0ZW1zIGFycmF5IGlmIG5vdCBzb3J0ZWQuXG4gICAgICB2YXIgaXRlbXMgPSAodGhpcy5maWx0ZXJlZEl0ZW1zIHx8IHRoaXMubG9jYWxJdGVtcyB8fCBbXSkuc2xpY2UoKTtcbiAgICAgIHZhciBzb3J0QnkgPSB0aGlzLmxvY2FsU29ydEJ5O1xuICAgICAgdmFyIHNvcnREZXNjID0gdGhpcy5sb2NhbFNvcnREZXNjO1xuICAgICAgdmFyIHNvcnRDb21wYXJlID0gdGhpcy5zb3J0Q29tcGFyZTtcbiAgICAgIHZhciBsb2NhbFNvcnRpbmcgPSB0aGlzLmxvY2FsU29ydGluZztcblxuICAgICAgdmFyIHNvcnRPcHRpb25zID0gX29iamVjdFNwcmVhZCh7fSwgdGhpcy5zb3J0Q29tcGFyZU9wdGlvbnMsIHtcbiAgICAgICAgdXNhZ2U6ICdzb3J0J1xuICAgICAgfSk7XG5cbiAgICAgIHZhciBzb3J0TG9jYWxlID0gdGhpcy5zb3J0Q29tcGFyZUxvY2FsZSB8fCB1bmRlZmluZWQ7XG4gICAgICB2YXIgbnVsbExhc3QgPSB0aGlzLnNvcnROdWxsTGFzdDtcblxuICAgICAgaWYgKHNvcnRCeSAmJiBsb2NhbFNvcnRpbmcpIHtcbiAgICAgICAgdmFyIGZpZWxkID0gdGhpcy5jb21wdXRlZEZpZWxkc09ialtzb3J0QnldIHx8IHt9O1xuICAgICAgICB2YXIgc29ydEJ5Rm9ybWF0dGVkID0gZmllbGQuc29ydEJ5Rm9ybWF0dGVkO1xuICAgICAgICB2YXIgZm9ybWF0dGVyID0gaXNGdW5jdGlvbihzb3J0QnlGb3JtYXR0ZWQpID8gc29ydEJ5Rm9ybWF0dGVkIDogc29ydEJ5Rm9ybWF0dGVkID8gdGhpcy5nZXRGaWVsZEZvcm1hdHRlcihzb3J0QnkpIDogdW5kZWZpbmVkOyAvLyBgc3RhYmxlU29ydGAgcmV0dXJucyBhIG5ldyBhcnJheSwgYW5kIGxlYXZlcyB0aGUgb3JpZ2luYWwgYXJyYXkgaW50YWN0XG5cbiAgICAgICAgcmV0dXJuIHN0YWJsZVNvcnQoaXRlbXMsIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IG51bGw7XG5cbiAgICAgICAgICBpZiAoaXNGdW5jdGlvbihzb3J0Q29tcGFyZSkpIHtcbiAgICAgICAgICAgIC8vIENhbGwgdXNlciBwcm92aWRlZCBzb3J0Q29tcGFyZSByb3V0aW5lXG4gICAgICAgICAgICByZXN1bHQgPSBzb3J0Q29tcGFyZShhLCBiLCBzb3J0QnksIHNvcnREZXNjLCBmb3JtYXR0ZXIsIHNvcnRPcHRpb25zLCBzb3J0TG9jYWxlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXNVbmRlZmluZWRPck51bGwocmVzdWx0KSB8fCByZXN1bHQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAvLyBGYWxsYmFjayB0byBidWlsdC1pbiBkZWZhdWx0U29ydENvbXBhcmUgaWYgc29ydENvbXBhcmVcbiAgICAgICAgICAgIC8vIGlzIG5vdCBkZWZpbmVkIG9yIHJldHVybnMgbnVsbC9mYWxzZVxuICAgICAgICAgICAgcmVzdWx0ID0gZGVmYXVsdFNvcnRDb21wYXJlKGEsIGIsIHNvcnRCeSwgc29ydERlc2MsIGZvcm1hdHRlciwgc29ydE9wdGlvbnMsIHNvcnRMb2NhbGUsIG51bGxMYXN0KTtcbiAgICAgICAgICB9IC8vIE5lZ2F0ZSByZXN1bHQgaWYgc29ydGluZyBpbiBkZXNjZW5kaW5nIG9yZGVyXG5cblxuICAgICAgICAgIHJldHVybiAocmVzdWx0IHx8IDApICogKHNvcnREZXNjID8gLTEgOiAxKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgaXNTb3J0YWJsZTogZnVuY3Rpb24gaXNTb3J0YWJsZShuZXdWYWwsIG9sZFZhbClcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogcGFpbiBpbiB0aGUgYnV0dCB0byB0ZXN0ICovXG4gICAge1xuICAgICAgaWYgKG5ld1ZhbCkge1xuICAgICAgICBpZiAodGhpcy5pc1NvcnRhYmxlKSB7XG4gICAgICAgICAgdGhpcy4kb24oJ2hlYWQtY2xpY2tlZCcsIHRoaXMuaGFuZGxlU29ydCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuJG9mZignaGVhZC1jbGlja2VkJywgdGhpcy5oYW5kbGVTb3J0KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNvcnREZXNjOiBmdW5jdGlvbiBzb3J0RGVzYyhuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgaWYgKG5ld1ZhbCA9PT0gdGhpcy5sb2NhbFNvcnREZXNjKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sb2NhbFNvcnREZXNjID0gbmV3VmFsIHx8IGZhbHNlO1xuICAgIH0sXG4gICAgc29ydEJ5OiBmdW5jdGlvbiBzb3J0QnkobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIGlmIChuZXdWYWwgPT09IHRoaXMubG9jYWxTb3J0QnkpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxvY2FsU29ydEJ5ID0gbmV3VmFsIHx8ICcnO1xuICAgIH0sXG4gICAgLy8gVXBkYXRlIC5zeW5jIHByb3BzXG4gICAgbG9jYWxTb3J0RGVzYzogZnVuY3Rpb24gbG9jYWxTb3J0RGVzYyhuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgLy8gRW1pdCB1cGRhdGUgdG8gc29ydC1kZXNjLnN5bmNcbiAgICAgIGlmIChuZXdWYWwgIT09IG9sZFZhbCkge1xuICAgICAgICB0aGlzLiRlbWl0KCd1cGRhdGU6c29ydERlc2MnLCBuZXdWYWwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgbG9jYWxTb3J0Qnk6IGZ1bmN0aW9uIGxvY2FsU29ydEJ5KG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICBpZiAobmV3VmFsICE9PSBvbGRWYWwpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgndXBkYXRlOnNvcnRCeScsIG5ld1ZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkge1xuICAgIGlmICh0aGlzLmlzU29ydGFibGUpIHtcbiAgICAgIHRoaXMuJG9uKCdoZWFkLWNsaWNrZWQnLCB0aGlzLmhhbmRsZVNvcnQpO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIC8vIEhhbmRsZXJzXG4gICAgLy8gTmVlZCB0byBtb3ZlIGZyb20gdGhlYWQtbWl4aW5cbiAgICBoYW5kbGVTb3J0OiBmdW5jdGlvbiBoYW5kbGVTb3J0KGtleSwgZmllbGQsIGV2dCwgaXNGb290KSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAoIXRoaXMuaXNTb3J0YWJsZSkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0Zvb3QgJiYgdGhpcy5ub0Zvb3RlclNvcnRpbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBUT0RPOiBtYWtlIHRoaXMgdHJpLXN0YXRlIHNvcnRpbmdcbiAgICAgIC8vIGN5Y2xlIGRlc2MgPT4gYXNjID0+IG5vbmUgPT4gZGVzYyA9PiAuLi5cblxuXG4gICAgICB2YXIgc29ydENoYW5nZWQgPSBmYWxzZTtcblxuICAgICAgdmFyIHRvZ2dsZUxvY2FsU29ydERlc2MgPSBmdW5jdGlvbiB0b2dnbGVMb2NhbFNvcnREZXNjKCkge1xuICAgICAgICB2YXIgc29ydERpcmVjdGlvbiA9IGZpZWxkLnNvcnREaXJlY3Rpb24gfHwgX3RoaXMuc29ydERpcmVjdGlvbjtcblxuICAgICAgICBpZiAoc29ydERpcmVjdGlvbiA9PT0gJ2FzYycpIHtcbiAgICAgICAgICBfdGhpcy5sb2NhbFNvcnREZXNjID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSBpZiAoc29ydERpcmVjdGlvbiA9PT0gJ2Rlc2MnKSB7XG4gICAgICAgICAgX3RoaXMubG9jYWxTb3J0RGVzYyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7Ly8gc29ydERpcmVjdGlvbiA9PT0gJ2xhc3QnXG4gICAgICAgICAgLy8gTGVhdmUgYXQgbGFzdCBzb3J0IGRpcmVjdGlvbiBmcm9tIHByZXZpb3VzIGNvbHVtblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBpZiAoZmllbGQuc29ydGFibGUpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gdGhpcy5sb2NhbFNvcnRCeSkge1xuICAgICAgICAgIC8vIENoYW5nZSBzb3J0aW5nIGRpcmVjdGlvbiBvbiBjdXJyZW50IGNvbHVtblxuICAgICAgICAgIHRoaXMubG9jYWxTb3J0RGVzYyA9ICF0aGlzLmxvY2FsU29ydERlc2M7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gU3RhcnQgc29ydGluZyB0aGlzIGNvbHVtbiBhc2NlbmRpbmdcbiAgICAgICAgICB0aGlzLmxvY2FsU29ydEJ5ID0ga2V5OyAvLyB0aGlzLmxvY2FsU29ydERlc2MgPSBmYWxzZVxuXG4gICAgICAgICAgdG9nZ2xlTG9jYWxTb3J0RGVzYygpO1xuICAgICAgICB9XG5cbiAgICAgICAgc29ydENoYW5nZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmxvY2FsU29ydEJ5ICYmICF0aGlzLm5vU29ydFJlc2V0KSB7XG4gICAgICAgIHRoaXMubG9jYWxTb3J0QnkgPSAnJztcbiAgICAgICAgdG9nZ2xlTG9jYWxTb3J0RGVzYygpO1xuICAgICAgICBzb3J0Q2hhbmdlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzb3J0Q2hhbmdlZCkge1xuICAgICAgICAvLyBTb3J0aW5nIHBhcmFtZXRlcnMgY2hhbmdlZFxuICAgICAgICB0aGlzLiRlbWl0KCdzb3J0LWNoYW5nZWQnLCB0aGlzLmNvbnRleHQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8gbWV0aG9kcyB0byBjb21wdXRlIGNsYXNzZXMgYW5kIGF0dHJzIGZvciB0aGVhZD50aCBjZWxsc1xuICAgIHNvcnRUaGVhZFRoQ2xhc3NlczogZnVuY3Rpb24gc29ydFRoZWFkVGhDbGFzc2VzKGtleSwgZmllbGQsIGlzRm9vdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLy8gSWYgc29ydGFibGUgYW5kIHNvcnRJY29uTGVmdCBhcmUgdHJ1ZSwgdGhlbiBwbGFjZSBzb3J0IGljb24gb24gdGhlIGxlZnRcbiAgICAgICAgJ2ItdGFibGUtc29ydC1pY29uLWxlZnQnOiBmaWVsZC5zb3J0YWJsZSAmJiB0aGlzLnNvcnRJY29uTGVmdCAmJiAhKGlzRm9vdCAmJiB0aGlzLm5vRm9vdGVyU29ydGluZylcbiAgICAgIH07XG4gICAgfSxcbiAgICBzb3J0VGhlYWRUaEF0dHJzOiBmdW5jdGlvbiBzb3J0VGhlYWRUaEF0dHJzKGtleSwgZmllbGQsIGlzRm9vdCkge1xuICAgICAgaWYgKCF0aGlzLmlzU29ydGFibGUgfHwgaXNGb290ICYmIHRoaXMubm9Gb290ZXJTb3J0aW5nKSB7XG4gICAgICAgIC8vIE5vIGF0dHJpYnV0ZXMgaWYgbm90IGEgc29ydGFibGUgdGFibGVcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuXG4gICAgICB2YXIgc29ydGFibGUgPSBmaWVsZC5zb3J0YWJsZTtcbiAgICAgIHZhciBhcmlhTGFiZWwgPSAnJztcblxuICAgICAgaWYgKCghZmllbGQubGFiZWwgfHwgIWZpZWxkLmxhYmVsLnRyaW0oKSkgJiYgIWZpZWxkLmhlYWRlclRpdGxlKSB7XG4gICAgICAgIC8vIEluIGNhc2UgZmllbGQncyBsYWJlbCBhbmQgdGl0bGUgYXJlIGVtcHR5L2JsYW5rLCB3ZSBuZWVkIHRvXG4gICAgICAgIC8vIGFkZCBhIGhpbnQgYWJvdXQgd2hhdCB0aGUgY29sdW1uIGlzIGFib3V0IGZvciBub24tc2lnaHRlZCB1c2Vycy5cbiAgICAgICAgLy8gVGhpcyBpcyBkdXBsaWNhdGVkIGNvZGUgZnJvbSB0Ym9keS1yb3cgbWl4aW4sIGJ1dCB3ZSBuZWVkIGl0XG4gICAgICAgIC8vIGhlcmUgYXMgd2VsbCwgc2luY2Ugd2Ugb3ZlcndyaXRlIHRoZSBvcmlnaW5hbCBhcmlhLWxhYmVsLlxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGFyaWFMYWJlbCA9IHN0YXJ0Q2FzZShrZXkpO1xuICAgICAgfSAvLyBUaGUgY29ycmVjdG5lc3Mgb2YgdGhlc2UgbGFiZWxzIGlzIHZlcnkgaW1wb3J0YW50IGZvciBzY3JlZW4tcmVhZGVyIHVzZXJzLlxuXG5cbiAgICAgIHZhciBhcmlhTGFiZWxTb3J0aW5nID0gJyc7XG5cbiAgICAgIGlmIChzb3J0YWJsZSkge1xuICAgICAgICBpZiAodGhpcy5sb2NhbFNvcnRCeSA9PT0ga2V5KSB7XG4gICAgICAgICAgLy8gY3VycmVudGx5IHNvcnRlZCBzb3J0YWJsZSBjb2x1bW4uXG4gICAgICAgICAgYXJpYUxhYmVsU29ydGluZyA9IHRoaXMubG9jYWxTb3J0RGVzYyA/IHRoaXMubGFiZWxTb3J0QXNjIDogdGhpcy5sYWJlbFNvcnREZXNjO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE5vdCBjdXJyZW50bHkgc29ydGVkIHNvcnRhYmxlIGNvbHVtbi5cbiAgICAgICAgICAvLyBOb3QgdXNpbmcgbmVzdGVkIHRlcm5hcnkncyBoZXJlIGZvciBjbGFyaXR5L3JlYWRhYmlsaXR5XG4gICAgICAgICAgLy8gRGVmYXVsdCBmb3IgYXJpYUxhYmVsXG4gICAgICAgICAgYXJpYUxhYmVsU29ydGluZyA9IHRoaXMubG9jYWxTb3J0RGVzYyA/IHRoaXMubGFiZWxTb3J0RGVzYyA6IHRoaXMubGFiZWxTb3J0QXNjOyAvLyBIYW5kbGUgc29ydERpcmVjdGlvbiBzZXR0aW5nXG5cbiAgICAgICAgICB2YXIgc29ydERpcmVjdGlvbiA9IHRoaXMuc29ydERpcmVjdGlvbiB8fCBmaWVsZC5zb3J0RGlyZWN0aW9uO1xuXG4gICAgICAgICAgaWYgKHNvcnREaXJlY3Rpb24gPT09ICdhc2MnKSB7XG4gICAgICAgICAgICBhcmlhTGFiZWxTb3J0aW5nID0gdGhpcy5sYWJlbFNvcnRBc2M7XG4gICAgICAgICAgfSBlbHNlIGlmIChzb3J0RGlyZWN0aW9uID09PSAnZGVzYycpIHtcbiAgICAgICAgICAgIGFyaWFMYWJlbFNvcnRpbmcgPSB0aGlzLmxhYmVsU29ydERlc2M7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLm5vU29ydFJlc2V0KSB7XG4gICAgICAgIC8vIE5vbiBzb3J0YWJsZSBjb2x1bW5cbiAgICAgICAgYXJpYUxhYmVsU29ydGluZyA9IHRoaXMubG9jYWxTb3J0QnkgPyB0aGlzLmxhYmVsU29ydENsZWFyIDogJyc7XG4gICAgICB9IC8vIEFzc2VtYmxlIHRoZSBhcmlhLWxhYmVsIGF0dHJpYnV0ZSB2YWx1ZVxuXG5cbiAgICAgIGFyaWFMYWJlbCA9IFthcmlhTGFiZWwudHJpbSgpLCBhcmlhTGFiZWxTb3J0aW5nLnRyaW0oKV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJzogJyk7IC8vIEFzc2VtYmxlIHRoZSBhcmlhLXNvcnQgYXR0cmlidXRlIHZhbHVlXG5cbiAgICAgIHZhciBhcmlhU29ydCA9IHNvcnRhYmxlICYmIHRoaXMubG9jYWxTb3J0QnkgPT09IGtleSA/IHRoaXMubG9jYWxTb3J0RGVzYyA/ICdkZXNjZW5kaW5nJyA6ICdhc2NlbmRpbmcnIDogc29ydGFibGUgPyAnbm9uZScgOiBudWxsOyAvLyBSZXR1cm4gdGhlIGF0dHJpYnV0ZXNcbiAgICAgIC8vIChBbGwgdGhlIGFib3ZlIGp1c3QgdG8gZ2V0IHRoZXNlIHR3byB2YWx1ZXMpXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsIHx8IG51bGwsXG4gICAgICAgICdhcmlhLXNvcnQnOiBhcmlhU29ydFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL21peGluLXNvcnRpbmcuanNcbi8vIG1vZHVsZSBpZCA9IDI2M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///263\n"); /***/ }), /* 264 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_get__ = __webpack_require__(33);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__stringify_object_values__ = __webpack_require__(200);\n\n\n // Default sort compare routine\n//\n// TODO: Add option to sort by multiple columns (tri-state per column,\n// plus order of columns in sort) where sortBy could be an array\n// of objects `[ {key: 'foo', sortDir: 'asc'}, {key:'bar', sortDir: 'desc'} ...]`\n// or an array of arrays `[ ['foo','asc'], ['bar','desc'] ]`\n// Multisort will most likely be handled in mixin-sort.js by\n// calling this method for each sortBy\n\nvar defaultSortCompare = function defaultSortCompare(a, b, sortBy, sortDesc, formatter, localeOpts, locale, nullLast) {\n var aa = Object(__WEBPACK_IMPORTED_MODULE_0__utils_get__[\"a\" /* default */])(a, sortBy, null);\n var bb = Object(__WEBPACK_IMPORTED_MODULE_0__utils_get__[\"a\" /* default */])(b, sortBy, null);\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"f\" /* isFunction */])(formatter)) {\n aa = formatter(aa, sortBy, a);\n bb = formatter(bb, sortBy, b);\n }\n\n aa = Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"o\" /* isUndefinedOrNull */])(aa) ? '' : aa;\n bb = Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"o\" /* isUndefinedOrNull */])(bb) ? '' : bb;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"c\" /* isDate */])(aa) && Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"c\" /* isDate */])(bb) || Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"h\" /* isNumber */])(aa) && Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"h\" /* isNumber */])(bb)) {\n // Special case for comparing dates and numbers\n // Internally dates are compared via their epoch number values\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n } else if (nullLast && aa === '' && bb !== '') {\n // Special case when sorting null/undefined/empty string last\n return 1;\n } else if (nullLast && aa !== '' && bb === '') {\n // Special case when sorting null/undefined/empty string last\n return -1;\n } // Do localized string comparison\n\n\n return Object(__WEBPACK_IMPORTED_MODULE_2__stringify_object_values__[\"a\" /* default */])(aa).localeCompare(Object(__WEBPACK_IMPORTED_MODULE_2__stringify_object_values__[\"a\" /* default */])(bb), locale, localeOpts);\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (defaultSortCompare);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL2RlZmF1bHQtc29ydC1jb21wYXJlLmpzPzRmZmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQXFDO0FBQ29EO0FBQzNCO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QiwyQkFBMkIsR0FBRywyQkFBMkI7QUFDakY7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxtRUFBRztBQUNkLFdBQVcsbUVBQUc7O0FBRWQsTUFBTSwwRUFBVTtBQUNoQjtBQUNBO0FBQ0E7O0FBRUEsT0FBTyxpRkFBaUI7QUFDeEIsT0FBTyxpRkFBaUI7O0FBRXhCLE1BQU0sc0VBQU0sUUFBUSxzRUFBTSxRQUFRLHdFQUFRLFFBQVEsd0VBQVE7QUFDMUQ7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7OztBQUdILFNBQVMsaUZBQXFCLG1CQUFtQixpRkFBcUI7QUFDdEU7O0FBRWUsMkVBQWtCIiwiZmlsZSI6IjI2NC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXQgZnJvbSAnLi4vLi4vLi4vdXRpbHMvZ2V0JztcbmltcG9ydCB7IGlzRGF0ZSwgaXNGdW5jdGlvbiwgaXNOdW1iZXIsIGlzVW5kZWZpbmVkT3JOdWxsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgc3RyaW5naWZ5T2JqZWN0VmFsdWVzIGZyb20gJy4vc3RyaW5naWZ5LW9iamVjdC12YWx1ZXMnOyAvLyBEZWZhdWx0IHNvcnQgY29tcGFyZSByb3V0aW5lXG4vL1xuLy8gVE9ETzogQWRkIG9wdGlvbiB0byBzb3J0IGJ5IG11bHRpcGxlIGNvbHVtbnMgKHRyaS1zdGF0ZSBwZXIgY29sdW1uLFxuLy8gICAgICAgcGx1cyBvcmRlciBvZiBjb2x1bW5zIGluIHNvcnQpICB3aGVyZSBzb3J0QnkgY291bGQgYmUgYW4gYXJyYXlcbi8vICAgICAgIG9mIG9iamVjdHMgYFsge2tleTogJ2ZvbycsIHNvcnREaXI6ICdhc2MnfSwge2tleTonYmFyJywgc29ydERpcjogJ2Rlc2MnfSAuLi5dYFxuLy8gICAgICAgb3IgYW4gYXJyYXkgb2YgYXJyYXlzIGBbIFsnZm9vJywnYXNjJ10sIFsnYmFyJywnZGVzYyddIF1gXG4vLyAgICAgICBNdWx0aXNvcnQgd2lsbCBtb3N0IGxpa2VseSBiZSBoYW5kbGVkIGluIG1peGluLXNvcnQuanMgYnlcbi8vICAgICAgIGNhbGxpbmcgdGhpcyBtZXRob2QgZm9yIGVhY2ggc29ydEJ5XG5cbnZhciBkZWZhdWx0U29ydENvbXBhcmUgPSBmdW5jdGlvbiBkZWZhdWx0U29ydENvbXBhcmUoYSwgYiwgc29ydEJ5LCBzb3J0RGVzYywgZm9ybWF0dGVyLCBsb2NhbGVPcHRzLCBsb2NhbGUsIG51bGxMYXN0KSB7XG4gIHZhciBhYSA9IGdldChhLCBzb3J0QnksIG51bGwpO1xuICB2YXIgYmIgPSBnZXQoYiwgc29ydEJ5LCBudWxsKTtcblxuICBpZiAoaXNGdW5jdGlvbihmb3JtYXR0ZXIpKSB7XG4gICAgYWEgPSBmb3JtYXR0ZXIoYWEsIHNvcnRCeSwgYSk7XG4gICAgYmIgPSBmb3JtYXR0ZXIoYmIsIHNvcnRCeSwgYik7XG4gIH1cblxuICBhYSA9IGlzVW5kZWZpbmVkT3JOdWxsKGFhKSA/ICcnIDogYWE7XG4gIGJiID0gaXNVbmRlZmluZWRPck51bGwoYmIpID8gJycgOiBiYjtcblxuICBpZiAoaXNEYXRlKGFhKSAmJiBpc0RhdGUoYmIpIHx8IGlzTnVtYmVyKGFhKSAmJiBpc051bWJlcihiYikpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGNvbXBhcmluZyBkYXRlcyBhbmQgbnVtYmVyc1xuICAgIC8vIEludGVybmFsbHkgZGF0ZXMgYXJlIGNvbXBhcmVkIHZpYSB0aGVpciBlcG9jaCBudW1iZXIgdmFsdWVzXG4gICAgcmV0dXJuIGFhIDwgYmIgPyAtMSA6IGFhID4gYmIgPyAxIDogMDtcbiAgfSBlbHNlIGlmIChudWxsTGFzdCAmJiBhYSA9PT0gJycgJiYgYmIgIT09ICcnKSB7XG4gICAgLy8gU3BlY2lhbCBjYXNlIHdoZW4gc29ydGluZyBudWxsL3VuZGVmaW5lZC9lbXB0eSBzdHJpbmcgbGFzdFxuICAgIHJldHVybiAxO1xuICB9IGVsc2UgaWYgKG51bGxMYXN0ICYmIGFhICE9PSAnJyAmJiBiYiA9PT0gJycpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2Ugd2hlbiBzb3J0aW5nIG51bGwvdW5kZWZpbmVkL2VtcHR5IHN0cmluZyBsYXN0XG4gICAgcmV0dXJuIC0xO1xuICB9IC8vIERvIGxvY2FsaXplZCBzdHJpbmcgY29tcGFyaXNvblxuXG5cbiAgcmV0dXJuIHN0cmluZ2lmeU9iamVjdFZhbHVlcyhhYSkubG9jYWxlQ29tcGFyZShzdHJpbmdpZnlPYmplY3RWYWx1ZXMoYmIpLCBsb2NhbGUsIGxvY2FsZU9wdHMpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdFNvcnRDb21wYXJlO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdGFibGUvaGVscGVycy9kZWZhdWx0LXNvcnQtY29tcGFyZS5qc1xuLy8gbW9kdWxlIGlkID0gMjY0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///264\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_get__ = __webpack_require__(33);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__stringify_object_values__ = __webpack_require__(202);\n\n\n // Default sort compare routine\n//\n// TODO: Add option to sort by multiple columns (tri-state per column,\n// plus order of columns in sort) where sortBy could be an array\n// of objects `[ {key: 'foo', sortDir: 'asc'}, {key:'bar', sortDir: 'desc'} ...]`\n// or an array of arrays `[ ['foo','asc'], ['bar','desc'] ]`\n// Multisort will most likely be handled in mixin-sort.js by\n// calling this method for each sortBy\n\nvar defaultSortCompare = function defaultSortCompare(a, b, sortBy, sortDesc, formatter, localeOpts, locale, nullLast) {\n var aa = Object(__WEBPACK_IMPORTED_MODULE_0__utils_get__[\"a\" /* default */])(a, sortBy, null);\n var bb = Object(__WEBPACK_IMPORTED_MODULE_0__utils_get__[\"a\" /* default */])(b, sortBy, null);\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"f\" /* isFunction */])(formatter)) {\n aa = formatter(aa, sortBy, a);\n bb = formatter(bb, sortBy, b);\n }\n\n aa = Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"o\" /* isUndefinedOrNull */])(aa) ? '' : aa;\n bb = Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"o\" /* isUndefinedOrNull */])(bb) ? '' : bb;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"c\" /* isDate */])(aa) && Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"c\" /* isDate */])(bb) || Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"h\" /* isNumber */])(aa) && Object(__WEBPACK_IMPORTED_MODULE_1__utils_inspect__[\"h\" /* isNumber */])(bb)) {\n // Special case for comparing dates and numbers\n // Internally dates are compared via their epoch number values\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n } else if (nullLast && aa === '' && bb !== '') {\n // Special case when sorting null/undefined/empty string last\n return 1;\n } else if (nullLast && aa !== '' && bb === '') {\n // Special case when sorting null/undefined/empty string last\n return -1;\n } // Do localized string comparison\n\n\n return Object(__WEBPACK_IMPORTED_MODULE_2__stringify_object_values__[\"a\" /* default */])(aa).localeCompare(Object(__WEBPACK_IMPORTED_MODULE_2__stringify_object_values__[\"a\" /* default */])(bb), locale, localeOpts);\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (defaultSortCompare);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL2RlZmF1bHQtc29ydC1jb21wYXJlLmpzPzRmZmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQXFDO0FBQ29EO0FBQzNCO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QiwyQkFBMkIsR0FBRywyQkFBMkI7QUFDakY7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxtRUFBRztBQUNkLFdBQVcsbUVBQUc7O0FBRWQsTUFBTSwwRUFBVTtBQUNoQjtBQUNBO0FBQ0E7O0FBRUEsT0FBTyxpRkFBaUI7QUFDeEIsT0FBTyxpRkFBaUI7O0FBRXhCLE1BQU0sc0VBQU0sUUFBUSxzRUFBTSxRQUFRLHdFQUFRLFFBQVEsd0VBQVE7QUFDMUQ7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7OztBQUdILFNBQVMsaUZBQXFCLG1CQUFtQixpRkFBcUI7QUFDdEU7O0FBRWUsMkVBQWtCIiwiZmlsZSI6IjI2NC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXQgZnJvbSAnLi4vLi4vLi4vdXRpbHMvZ2V0JztcbmltcG9ydCB7IGlzRGF0ZSwgaXNGdW5jdGlvbiwgaXNOdW1iZXIsIGlzVW5kZWZpbmVkT3JOdWxsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgc3RyaW5naWZ5T2JqZWN0VmFsdWVzIGZyb20gJy4vc3RyaW5naWZ5LW9iamVjdC12YWx1ZXMnOyAvLyBEZWZhdWx0IHNvcnQgY29tcGFyZSByb3V0aW5lXG4vL1xuLy8gVE9ETzogQWRkIG9wdGlvbiB0byBzb3J0IGJ5IG11bHRpcGxlIGNvbHVtbnMgKHRyaS1zdGF0ZSBwZXIgY29sdW1uLFxuLy8gICAgICAgcGx1cyBvcmRlciBvZiBjb2x1bW5zIGluIHNvcnQpICB3aGVyZSBzb3J0QnkgY291bGQgYmUgYW4gYXJyYXlcbi8vICAgICAgIG9mIG9iamVjdHMgYFsge2tleTogJ2ZvbycsIHNvcnREaXI6ICdhc2MnfSwge2tleTonYmFyJywgc29ydERpcjogJ2Rlc2MnfSAuLi5dYFxuLy8gICAgICAgb3IgYW4gYXJyYXkgb2YgYXJyYXlzIGBbIFsnZm9vJywnYXNjJ10sIFsnYmFyJywnZGVzYyddIF1gXG4vLyAgICAgICBNdWx0aXNvcnQgd2lsbCBtb3N0IGxpa2VseSBiZSBoYW5kbGVkIGluIG1peGluLXNvcnQuanMgYnlcbi8vICAgICAgIGNhbGxpbmcgdGhpcyBtZXRob2QgZm9yIGVhY2ggc29ydEJ5XG5cbnZhciBkZWZhdWx0U29ydENvbXBhcmUgPSBmdW5jdGlvbiBkZWZhdWx0U29ydENvbXBhcmUoYSwgYiwgc29ydEJ5LCBzb3J0RGVzYywgZm9ybWF0dGVyLCBsb2NhbGVPcHRzLCBsb2NhbGUsIG51bGxMYXN0KSB7XG4gIHZhciBhYSA9IGdldChhLCBzb3J0QnksIG51bGwpO1xuICB2YXIgYmIgPSBnZXQoYiwgc29ydEJ5LCBudWxsKTtcblxuICBpZiAoaXNGdW5jdGlvbihmb3JtYXR0ZXIpKSB7XG4gICAgYWEgPSBmb3JtYXR0ZXIoYWEsIHNvcnRCeSwgYSk7XG4gICAgYmIgPSBmb3JtYXR0ZXIoYmIsIHNvcnRCeSwgYik7XG4gIH1cblxuICBhYSA9IGlzVW5kZWZpbmVkT3JOdWxsKGFhKSA/ICcnIDogYWE7XG4gIGJiID0gaXNVbmRlZmluZWRPck51bGwoYmIpID8gJycgOiBiYjtcblxuICBpZiAoaXNEYXRlKGFhKSAmJiBpc0RhdGUoYmIpIHx8IGlzTnVtYmVyKGFhKSAmJiBpc051bWJlcihiYikpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGNvbXBhcmluZyBkYXRlcyBhbmQgbnVtYmVyc1xuICAgIC8vIEludGVybmFsbHkgZGF0ZXMgYXJlIGNvbXBhcmVkIHZpYSB0aGVpciBlcG9jaCBudW1iZXIgdmFsdWVzXG4gICAgcmV0dXJuIGFhIDwgYmIgPyAtMSA6IGFhID4gYmIgPyAxIDogMDtcbiAgfSBlbHNlIGlmIChudWxsTGFzdCAmJiBhYSA9PT0gJycgJiYgYmIgIT09ICcnKSB7XG4gICAgLy8gU3BlY2lhbCBjYXNlIHdoZW4gc29ydGluZyBudWxsL3VuZGVmaW5lZC9lbXB0eSBzdHJpbmcgbGFzdFxuICAgIHJldHVybiAxO1xuICB9IGVsc2UgaWYgKG51bGxMYXN0ICYmIGFhICE9PSAnJyAmJiBiYiA9PT0gJycpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2Ugd2hlbiBzb3J0aW5nIG51bGwvdW5kZWZpbmVkL2VtcHR5IHN0cmluZyBsYXN0XG4gICAgcmV0dXJuIC0xO1xuICB9IC8vIERvIGxvY2FsaXplZCBzdHJpbmcgY29tcGFyaXNvblxuXG5cbiAgcmV0dXJuIHN0cmluZ2lmeU9iamVjdFZhbHVlcyhhYSkubG9jYWxlQ29tcGFyZShzdHJpbmdpZnlPYmplY3RWYWx1ZXMoYmIpLCBsb2NhbGUsIGxvY2FsZU9wdHMpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdFNvcnRDb21wYXJlO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdGFibGUvaGVscGVycy9kZWZhdWx0LXNvcnQtY29tcGFyZS5qc1xuLy8gbW9kdWxlIGlkID0gMjY0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///264\n"); /***/ }), /* 265 */ @@ -1949,7 +1949,7 @@ eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_inspect__ = __ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_loose_equal__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_range__ = __webpack_require__(184);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__sanitize_row__ = __webpack_require__(199);\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/* harmony default export */ __webpack_exports__[\"a\"] = ({\n props: {\n selectable: {\n type: Boolean,\n default: false\n },\n selectMode: {\n type: String,\n default: 'multi',\n validator: function validator(val) {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"a\" /* arrayIncludes */])(['range', 'multi', 'single'], val);\n }\n },\n selectedVariant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])('BTable', 'selectedVariant');\n }\n }\n },\n data: function data() {\n return {\n selectedRows: [],\n selectedLastRow: -1\n };\n },\n computed: {\n isSelectable: function isSelectable() {\n return this.selectable && this.selectMode;\n },\n selectableHasSelection: function selectableHasSelection() {\n return this.isSelectable && this.selectedRows && this.selectedRows.length > 0 && this.selectedRows.some(Boolean);\n },\n selectableIsMultiSelect: function selectableIsMultiSelect() {\n return this.isSelectable && Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"a\" /* arrayIncludes */])(['range', 'multi'], this.selectMode);\n },\n selectableTableClasses: function selectableTableClasses() {\n var _ref;\n\n return _ref = {\n 'b-table-selectable': this.isSelectable\n }, _defineProperty(_ref, \"b-table-select-\".concat(this.selectMode), this.isSelectable), _defineProperty(_ref, 'b-table-selecting', this.selectableHasSelection), _ref;\n },\n selectableTableAttrs: function selectableTableAttrs() {\n return {\n 'aria-multiselectable': !this.isSelectable ? null : this.selectableIsMultiSelect ? 'true' : 'false'\n };\n }\n },\n watch: {\n computedItems: function computedItems(newVal, oldVal) {\n // Reset for selectable\n var equal = false;\n\n if (this.isSelectable && this.selectedRows.length > 0) {\n // Quick check against array length\n equal = Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"d\" /* isArray */])(newVal) && Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"d\" /* isArray */])(oldVal) && newVal.length === oldVal.length;\n\n for (var i = 0; equal && i < newVal.length; i++) {\n // Look for the first non-loosely equal row, after ignoring reserved fields\n equal = Object(__WEBPACK_IMPORTED_MODULE_0__utils_loose_equal__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_5__sanitize_row__[\"a\" /* default */])(newVal[i]), Object(__WEBPACK_IMPORTED_MODULE_5__sanitize_row__[\"a\" /* default */])(oldVal[i]));\n }\n }\n\n if (!equal) {\n this.clearSelected();\n }\n },\n selectable: function selectable(newVal, oldVal) {\n this.clearSelected();\n this.setSelectionHandlers(newVal);\n },\n selectMode: function selectMode(newVal, oldVal) {\n this.clearSelected();\n },\n selectedRows: function selectedRows(_selectedRows, oldVal) {\n var _this = this;\n\n if (this.isSelectable && !Object(__WEBPACK_IMPORTED_MODULE_0__utils_loose_equal__[\"a\" /* default */])(_selectedRows, oldVal)) {\n var items = []; // `.forEach()` skips over non-existent indices (on sparse arrays)\n\n _selectedRows.forEach(function (v, idx) {\n if (v) {\n items.push(_this.computedItems[idx]);\n }\n });\n\n this.$emit('row-selected', items);\n }\n }\n },\n beforeMount: function beforeMount() {\n // Set up handlers\n if (this.isSelectable) {\n this.setSelectionHandlers(true);\n }\n },\n methods: {\n // Public methods\n selectRow: function selectRow(index) {\n // Select a particular row (indexed based on computedItems)\n if (this.isSelectable && Object(__WEBPACK_IMPORTED_MODULE_4__utils_inspect__[\"h\" /* isNumber */])(index) && index >= 0 && index < this.computedItems.length && !this.isRowSelected(index)) {\n var selectedRows = this.selectableIsMultiSelect ? this.selectedRows.slice() : [];\n selectedRows[index] = true;\n this.selectedLastClicked = -1;\n this.selectedRows = selectedRows;\n }\n },\n unselectRow: function unselectRow(index) {\n // Un-select a particular row (indexed based on `computedItems`)\n if (this.isSelectable && Object(__WEBPACK_IMPORTED_MODULE_4__utils_inspect__[\"h\" /* isNumber */])(index) && this.isRowSelected(index)) {\n var selectedRows = this.selectedRows.slice();\n selectedRows[index] = false;\n this.selectedLastClicked = -1;\n this.selectedRows = selectedRows;\n }\n },\n selectAllRows: function selectAllRows() {\n var length = this.computedItems.length;\n\n if (this.isSelectable && length > 0) {\n this.selectedLastClicked = -1;\n this.selectedRows = this.selectableIsMultiSelect ? Object(__WEBPACK_IMPORTED_MODULE_1__utils_range__[\"a\" /* default */])(length).map(function (i) {\n return true;\n }) : [true];\n }\n },\n isRowSelected: function isRowSelected(index) {\n // Determine if a row is selected (indexed based on `computedItems`)\n return Boolean(Object(__WEBPACK_IMPORTED_MODULE_4__utils_inspect__[\"h\" /* isNumber */])(index) && this.selectedRows[index]);\n },\n clearSelected: function clearSelected() {\n // Clear any active selected row(s)\n this.selectedLastClicked = -1;\n this.selectedRows = [];\n },\n // Internal private methods\n selectableRowClasses: function selectableRowClasses(index) {\n if (this.isSelectable && this.isRowSelected(index)) {\n var variant = this.selectedVariant;\n return _defineProperty({\n 'b-table-row-selected': true\n }, \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(variant), variant);\n } else {\n return {};\n }\n },\n selectableRowAttrs: function selectableRowAttrs(index) {\n return {\n 'aria-selected': !this.isSelectable ? null : this.isRowSelected(index) ? 'true' : 'false'\n };\n },\n setSelectionHandlers: function setSelectionHandlers(on) {\n var method = on ? '$on' : '$off'; // Handle row-clicked event\n\n this[method]('row-clicked', this.selectionHandler); // Clear selection on filter, pagination, and sort changes\n\n this[method]('filtered', this.clearSelected);\n this[method]('context-changed', this.clearSelected);\n },\n selectionHandler: function selectionHandler(item, index, evt) {\n /* istanbul ignore if: should never happen */\n if (!this.isSelectable) {\n // Don't do anything if table is not in selectable mode\n\n /* istanbul ignore next: should never happen */\n this.clearSelected();\n /* istanbul ignore next: should never happen */\n\n return;\n }\n\n var selectMode = this.selectMode;\n var selectedRows = this.selectedRows.slice();\n var selected = !selectedRows[index]; // Note 'multi' mode needs no special event handling\n\n if (selectMode === 'single') {\n selectedRows = [];\n } else if (selectMode === 'range') {\n if (this.selectedLastRow > -1 && evt.shiftKey) {\n // range\n for (var idx = Math.min(this.selectedLastRow, index); idx <= Math.max(this.selectedLastRow, index); idx++) {\n selectedRows[idx] = true;\n }\n\n selected = true;\n } else {\n if (!(evt.ctrlKey || evt.metaKey)) {\n // Clear range selection if any\n selectedRows = [];\n selected = true;\n }\n\n this.selectedLastRow = selected ? index : -1;\n }\n }\n\n selectedRows[index] = selected;\n this.selectedRows = selectedRows;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL21peGluLXNlbGVjdGFibGUuanM/ZTc2MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwyQ0FBMkMsa0JBQWtCLGtDQUFrQyxxRUFBcUUsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEVBQUUsWUFBWTs7QUFFM0o7QUFDWDtBQUNxQjtBQUNIO0FBQ1Q7QUFDVDtBQUMxQjtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSwyRUFBYTtBQUM1QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlGQUFrQjtBQUNqQztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxrQ0FBa0MsMkVBQWE7QUFDL0MsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCLHFFQUFPLFlBQVkscUVBQU87O0FBRTFDLHVCQUF1Qiw0QkFBNEI7QUFDbkQ7QUFDQSxrQkFBa0IsMkVBQVUsQ0FBQyxzRUFBVyxhQUFhLHNFQUFXO0FBQ2hFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEsZ0NBQWdDLDJFQUFVO0FBQzFDLHVCQUF1Qjs7QUFFdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLHdFQUFRO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLCtCQUErQix3RUFBUTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDJEQUEyRCxxRUFBSztBQUNoRTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EscUJBQXFCLHdFQUFRO0FBQzdCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSx1Q0FBdUM7O0FBRXZDLHlEQUF5RDs7QUFFekQ7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMENBQTBDOztBQUUxQztBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSwrREFBK0QsOENBQThDO0FBQzdHO0FBQ0E7O0FBRUE7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6IjI3MS5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBsb29zZUVxdWFsIGZyb20gJy4uLy4uLy4uL3V0aWxzL2xvb3NlLWVxdWFsJztcbmltcG9ydCByYW5nZSBmcm9tICcuLi8uLi8uLi91dGlscy9yYW5nZSc7XG5pbXBvcnQgeyBpc0FycmF5LCBhcnJheUluY2x1ZGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYXJyYXknO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY29uZmlnJztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgc2FuaXRpemVSb3cgZnJvbSAnLi9zYW5pdGl6ZS1yb3cnO1xuZXhwb3J0IGRlZmF1bHQge1xuICBwcm9wczoge1xuICAgIHNlbGVjdGFibGU6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgc2VsZWN0TW9kZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ211bHRpJyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbCkge1xuICAgICAgICByZXR1cm4gYXJyYXlJbmNsdWRlcyhbJ3JhbmdlJywgJ211bHRpJywgJ3NpbmdsZSddLCB2YWwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2VsZWN0ZWRWYXJpYW50OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZygnQlRhYmxlJywgJ3NlbGVjdGVkVmFyaWFudCcpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0ZWRSb3dzOiBbXSxcbiAgICAgIHNlbGVjdGVkTGFzdFJvdzogLTFcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGlzU2VsZWN0YWJsZTogZnVuY3Rpb24gaXNTZWxlY3RhYmxlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0YWJsZSAmJiB0aGlzLnNlbGVjdE1vZGU7XG4gICAgfSxcbiAgICBzZWxlY3RhYmxlSGFzU2VsZWN0aW9uOiBmdW5jdGlvbiBzZWxlY3RhYmxlSGFzU2VsZWN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNTZWxlY3RhYmxlICYmIHRoaXMuc2VsZWN0ZWRSb3dzICYmIHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA+IDAgJiYgdGhpcy5zZWxlY3RlZFJvd3Muc29tZShCb29sZWFuKTtcbiAgICB9LFxuICAgIHNlbGVjdGFibGVJc011bHRpU2VsZWN0OiBmdW5jdGlvbiBzZWxlY3RhYmxlSXNNdWx0aVNlbGVjdCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzU2VsZWN0YWJsZSAmJiBhcnJheUluY2x1ZGVzKFsncmFuZ2UnLCAnbXVsdGknXSwgdGhpcy5zZWxlY3RNb2RlKTtcbiAgICB9LFxuICAgIHNlbGVjdGFibGVUYWJsZUNsYXNzZXM6IGZ1bmN0aW9uIHNlbGVjdGFibGVUYWJsZUNsYXNzZXMoKSB7XG4gICAgICB2YXIgX3JlZjtcblxuICAgICAgcmV0dXJuIF9yZWYgPSB7XG4gICAgICAgICdiLXRhYmxlLXNlbGVjdGFibGUnOiB0aGlzLmlzU2VsZWN0YWJsZVxuICAgICAgfSwgX2RlZmluZVByb3BlcnR5KF9yZWYsIFwiYi10YWJsZS1zZWxlY3QtXCIuY29uY2F0KHRoaXMuc2VsZWN0TW9kZSksIHRoaXMuaXNTZWxlY3RhYmxlKSwgX2RlZmluZVByb3BlcnR5KF9yZWYsICdiLXRhYmxlLXNlbGVjdGluZycsIHRoaXMuc2VsZWN0YWJsZUhhc1NlbGVjdGlvbiksIF9yZWY7XG4gICAgfSxcbiAgICBzZWxlY3RhYmxlVGFibGVBdHRyczogZnVuY3Rpb24gc2VsZWN0YWJsZVRhYmxlQXR0cnMoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAnYXJpYS1tdWx0aXNlbGVjdGFibGUnOiAhdGhpcy5pc1NlbGVjdGFibGUgPyBudWxsIDogdGhpcy5zZWxlY3RhYmxlSXNNdWx0aVNlbGVjdCA/ICd0cnVlJyA6ICdmYWxzZSdcbiAgICAgIH07XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIGNvbXB1dGVkSXRlbXM6IGZ1bmN0aW9uIGNvbXB1dGVkSXRlbXMobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIC8vIFJlc2V0IGZvciBzZWxlY3RhYmxlXG4gICAgICB2YXIgZXF1YWwgPSBmYWxzZTtcblxuICAgICAgaWYgKHRoaXMuaXNTZWxlY3RhYmxlICYmIHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gUXVpY2sgY2hlY2sgYWdhaW5zdCBhcnJheSBsZW5ndGhcbiAgICAgICAgZXF1YWwgPSBpc0FycmF5KG5ld1ZhbCkgJiYgaXNBcnJheShvbGRWYWwpICYmIG5ld1ZhbC5sZW5ndGggPT09IG9sZFZhbC5sZW5ndGg7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGVxdWFsICYmIGkgPCBuZXdWYWwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAvLyBMb29rIGZvciB0aGUgZmlyc3Qgbm9uLWxvb3NlbHkgZXF1YWwgcm93LCBhZnRlciBpZ25vcmluZyByZXNlcnZlZCBmaWVsZHNcbiAgICAgICAgICBlcXVhbCA9IGxvb3NlRXF1YWwoc2FuaXRpemVSb3cobmV3VmFsW2ldKSwgc2FuaXRpemVSb3cob2xkVmFsW2ldKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFlcXVhbCkge1xuICAgICAgICB0aGlzLmNsZWFyU2VsZWN0ZWQoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNlbGVjdGFibGU6IGZ1bmN0aW9uIHNlbGVjdGFibGUobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIHRoaXMuY2xlYXJTZWxlY3RlZCgpO1xuICAgICAgdGhpcy5zZXRTZWxlY3Rpb25IYW5kbGVycyhuZXdWYWwpO1xuICAgIH0sXG4gICAgc2VsZWN0TW9kZTogZnVuY3Rpb24gc2VsZWN0TW9kZShuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgdGhpcy5jbGVhclNlbGVjdGVkKCk7XG4gICAgfSxcbiAgICBzZWxlY3RlZFJvd3M6IGZ1bmN0aW9uIHNlbGVjdGVkUm93cyhfc2VsZWN0ZWRSb3dzLCBvbGRWYWwpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLmlzU2VsZWN0YWJsZSAmJiAhbG9vc2VFcXVhbChfc2VsZWN0ZWRSb3dzLCBvbGRWYWwpKSB7XG4gICAgICAgIHZhciBpdGVtcyA9IFtdOyAvLyBgLmZvckVhY2goKWAgc2tpcHMgb3ZlciBub24tZXhpc3RlbnQgaW5kaWNlcyAob24gc3BhcnNlIGFycmF5cylcblxuICAgICAgICBfc2VsZWN0ZWRSb3dzLmZvckVhY2goZnVuY3Rpb24gKHYsIGlkeCkge1xuICAgICAgICAgIGlmICh2KSB7XG4gICAgICAgICAgICBpdGVtcy5wdXNoKF90aGlzLmNvbXB1dGVkSXRlbXNbaWR4XSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLiRlbWl0KCdyb3ctc2VsZWN0ZWQnLCBpdGVtcyk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBiZWZvcmVNb3VudDogZnVuY3Rpb24gYmVmb3JlTW91bnQoKSB7XG4gICAgLy8gU2V0IHVwIGhhbmRsZXJzXG4gICAgaWYgKHRoaXMuaXNTZWxlY3RhYmxlKSB7XG4gICAgICB0aGlzLnNldFNlbGVjdGlvbkhhbmRsZXJzKHRydWUpO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIC8vIFB1YmxpYyBtZXRob2RzXG4gICAgc2VsZWN0Um93OiBmdW5jdGlvbiBzZWxlY3RSb3coaW5kZXgpIHtcbiAgICAgIC8vIFNlbGVjdCBhIHBhcnRpY3VsYXIgcm93IChpbmRleGVkIGJhc2VkIG9uIGNvbXB1dGVkSXRlbXMpXG4gICAgICBpZiAodGhpcy5pc1NlbGVjdGFibGUgJiYgaXNOdW1iZXIoaW5kZXgpICYmIGluZGV4ID49IDAgJiYgaW5kZXggPCB0aGlzLmNvbXB1dGVkSXRlbXMubGVuZ3RoICYmICF0aGlzLmlzUm93U2VsZWN0ZWQoaW5kZXgpKSB7XG4gICAgICAgIHZhciBzZWxlY3RlZFJvd3MgPSB0aGlzLnNlbGVjdGFibGVJc011bHRpU2VsZWN0ID8gdGhpcy5zZWxlY3RlZFJvd3Muc2xpY2UoKSA6IFtdO1xuICAgICAgICBzZWxlY3RlZFJvd3NbaW5kZXhdID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZExhc3RDbGlja2VkID0gLTE7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gc2VsZWN0ZWRSb3dzO1xuICAgICAgfVxuICAgIH0sXG4gICAgdW5zZWxlY3RSb3c6IGZ1bmN0aW9uIHVuc2VsZWN0Um93KGluZGV4KSB7XG4gICAgICAvLyBVbi1zZWxlY3QgYSBwYXJ0aWN1bGFyIHJvdyAoaW5kZXhlZCBiYXNlZCBvbiBgY29tcHV0ZWRJdGVtc2ApXG4gICAgICBpZiAodGhpcy5pc1NlbGVjdGFibGUgJiYgaXNOdW1iZXIoaW5kZXgpICYmIHRoaXMuaXNSb3dTZWxlY3RlZChpbmRleCkpIHtcbiAgICAgICAgdmFyIHNlbGVjdGVkUm93cyA9IHRoaXMuc2VsZWN0ZWRSb3dzLnNsaWNlKCk7XG4gICAgICAgIHNlbGVjdGVkUm93c1tpbmRleF0gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZExhc3RDbGlja2VkID0gLTE7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gc2VsZWN0ZWRSb3dzO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2VsZWN0QWxsUm93czogZnVuY3Rpb24gc2VsZWN0QWxsUm93cygpIHtcbiAgICAgIHZhciBsZW5ndGggPSB0aGlzLmNvbXB1dGVkSXRlbXMubGVuZ3RoO1xuXG4gICAgICBpZiAodGhpcy5pc1NlbGVjdGFibGUgJiYgbGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTGFzdENsaWNrZWQgPSAtMTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MgPSB0aGlzLnNlbGVjdGFibGVJc011bHRpU2VsZWN0ID8gcmFuZ2UobGVuZ3RoKS5tYXAoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSkgOiBbdHJ1ZV07XG4gICAgICB9XG4gICAgfSxcbiAgICBpc1Jvd1NlbGVjdGVkOiBmdW5jdGlvbiBpc1Jvd1NlbGVjdGVkKGluZGV4KSB7XG4gICAgICAvLyBEZXRlcm1pbmUgaWYgYSByb3cgaXMgc2VsZWN0ZWQgKGluZGV4ZWQgYmFzZWQgb24gYGNvbXB1dGVkSXRlbXNgKVxuICAgICAgcmV0dXJuIEJvb2xlYW4oaXNOdW1iZXIoaW5kZXgpICYmIHRoaXMuc2VsZWN0ZWRSb3dzW2luZGV4XSk7XG4gICAgfSxcbiAgICBjbGVhclNlbGVjdGVkOiBmdW5jdGlvbiBjbGVhclNlbGVjdGVkKCkge1xuICAgICAgLy8gQ2xlYXIgYW55IGFjdGl2ZSBzZWxlY3RlZCByb3cocylcbiAgICAgIHRoaXMuc2VsZWN0ZWRMYXN0Q2xpY2tlZCA9IC0xO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBbXTtcbiAgICB9LFxuICAgIC8vIEludGVybmFsIHByaXZhdGUgbWV0aG9kc1xuICAgIHNlbGVjdGFibGVSb3dDbGFzc2VzOiBmdW5jdGlvbiBzZWxlY3RhYmxlUm93Q2xhc3NlcyhpbmRleCkge1xuICAgICAgaWYgKHRoaXMuaXNTZWxlY3RhYmxlICYmIHRoaXMuaXNSb3dTZWxlY3RlZChpbmRleCkpIHtcbiAgICAgICAgdmFyIHZhcmlhbnQgPSB0aGlzLnNlbGVjdGVkVmFyaWFudDtcbiAgICAgICAgcmV0dXJuIF9kZWZpbmVQcm9wZXJ0eSh7XG4gICAgICAgICAgJ2ItdGFibGUtcm93LXNlbGVjdGVkJzogdHJ1ZVxuICAgICAgICB9LCBcIlwiLmNvbmNhdCh0aGlzLmRhcmsgPyAnYmcnIDogJ3RhYmxlJywgXCItXCIpLmNvbmNhdCh2YXJpYW50KSwgdmFyaWFudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICBzZWxlY3RhYmxlUm93QXR0cnM6IGZ1bmN0aW9uIHNlbGVjdGFibGVSb3dBdHRycyhpbmRleCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJ2FyaWEtc2VsZWN0ZWQnOiAhdGhpcy5pc1NlbGVjdGFibGUgPyBudWxsIDogdGhpcy5pc1Jvd1NlbGVjdGVkKGluZGV4KSA/ICd0cnVlJyA6ICdmYWxzZSdcbiAgICAgIH07XG4gICAgfSxcbiAgICBzZXRTZWxlY3Rpb25IYW5kbGVyczogZnVuY3Rpb24gc2V0U2VsZWN0aW9uSGFuZGxlcnMob24pIHtcbiAgICAgIHZhciBtZXRob2QgPSBvbiA/ICckb24nIDogJyRvZmYnOyAvLyBIYW5kbGUgcm93LWNsaWNrZWQgZXZlbnRcblxuICAgICAgdGhpc1ttZXRob2RdKCdyb3ctY2xpY2tlZCcsIHRoaXMuc2VsZWN0aW9uSGFuZGxlcik7IC8vIENsZWFyIHNlbGVjdGlvbiBvbiBmaWx0ZXIsIHBhZ2luYXRpb24sIGFuZCBzb3J0IGNoYW5nZXNcblxuICAgICAgdGhpc1ttZXRob2RdKCdmaWx0ZXJlZCcsIHRoaXMuY2xlYXJTZWxlY3RlZCk7XG4gICAgICB0aGlzW21ldGhvZF0oJ2NvbnRleHQtY2hhbmdlZCcsIHRoaXMuY2xlYXJTZWxlY3RlZCk7XG4gICAgfSxcbiAgICBzZWxlY3Rpb25IYW5kbGVyOiBmdW5jdGlvbiBzZWxlY3Rpb25IYW5kbGVyKGl0ZW0sIGluZGV4LCBldnQpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZjogc2hvdWxkIG5ldmVyIGhhcHBlbiAqL1xuICAgICAgaWYgKCF0aGlzLmlzU2VsZWN0YWJsZSkge1xuICAgICAgICAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiB0YWJsZSBpcyBub3QgaW4gc2VsZWN0YWJsZSBtb2RlXG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IHNob3VsZCBuZXZlciBoYXBwZW4gKi9cbiAgICAgICAgdGhpcy5jbGVhclNlbGVjdGVkKCk7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBzaG91bGQgbmV2ZXIgaGFwcGVuICovXG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgc2VsZWN0TW9kZSA9IHRoaXMuc2VsZWN0TW9kZTtcbiAgICAgIHZhciBzZWxlY3RlZFJvd3MgPSB0aGlzLnNlbGVjdGVkUm93cy5zbGljZSgpO1xuICAgICAgdmFyIHNlbGVjdGVkID0gIXNlbGVjdGVkUm93c1tpbmRleF07IC8vIE5vdGUgJ211bHRpJyBtb2RlIG5lZWRzIG5vIHNwZWNpYWwgZXZlbnQgaGFuZGxpbmdcblxuICAgICAgaWYgKHNlbGVjdE1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgIHNlbGVjdGVkUm93cyA9IFtdO1xuICAgICAgfSBlbHNlIGlmIChzZWxlY3RNb2RlID09PSAncmFuZ2UnKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTGFzdFJvdyA+IC0xICYmIGV2dC5zaGlmdEtleSkge1xuICAgICAgICAgIC8vIHJhbmdlXG4gICAgICAgICAgZm9yICh2YXIgaWR4ID0gTWF0aC5taW4odGhpcy5zZWxlY3RlZExhc3RSb3csIGluZGV4KTsgaWR4IDw9IE1hdGgubWF4KHRoaXMuc2VsZWN0ZWRMYXN0Um93LCBpbmRleCk7IGlkeCsrKSB7XG4gICAgICAgICAgICBzZWxlY3RlZFJvd3NbaWR4XSA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghKGV2dC5jdHJsS2V5IHx8IGV2dC5tZXRhS2V5KSkge1xuICAgICAgICAgICAgLy8gQ2xlYXIgcmFuZ2Ugc2VsZWN0aW9uIGlmIGFueVxuICAgICAgICAgICAgc2VsZWN0ZWRSb3dzID0gW107XG4gICAgICAgICAgICBzZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZExhc3RSb3cgPSBzZWxlY3RlZCA/IGluZGV4IDogLTE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2VsZWN0ZWRSb3dzW2luZGV4XSA9IHNlbGVjdGVkO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBzZWxlY3RlZFJvd3M7XG4gICAgfVxuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdGFibGUvaGVscGVycy9taXhpbi1zZWxlY3RhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSAyNzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///271\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_loose_equal__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_range__ = __webpack_require__(186);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_array__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_config__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_inspect__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__sanitize_row__ = __webpack_require__(201);\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/* harmony default export */ __webpack_exports__[\"a\"] = ({\n props: {\n selectable: {\n type: Boolean,\n default: false\n },\n selectMode: {\n type: String,\n default: 'multi',\n validator: function validator(val) {\n return Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"a\" /* arrayIncludes */])(['range', 'multi', 'single'], val);\n }\n },\n selectedVariant: {\n type: String,\n default: function _default() {\n return Object(__WEBPACK_IMPORTED_MODULE_3__utils_config__[\"c\" /* getComponentConfig */])('BTable', 'selectedVariant');\n }\n }\n },\n data: function data() {\n return {\n selectedRows: [],\n selectedLastRow: -1\n };\n },\n computed: {\n isSelectable: function isSelectable() {\n return this.selectable && this.selectMode;\n },\n selectableHasSelection: function selectableHasSelection() {\n return this.isSelectable && this.selectedRows && this.selectedRows.length > 0 && this.selectedRows.some(Boolean);\n },\n selectableIsMultiSelect: function selectableIsMultiSelect() {\n return this.isSelectable && Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"a\" /* arrayIncludes */])(['range', 'multi'], this.selectMode);\n },\n selectableTableClasses: function selectableTableClasses() {\n var _ref;\n\n return _ref = {\n 'b-table-selectable': this.isSelectable\n }, _defineProperty(_ref, \"b-table-select-\".concat(this.selectMode), this.isSelectable), _defineProperty(_ref, 'b-table-selecting', this.selectableHasSelection), _ref;\n },\n selectableTableAttrs: function selectableTableAttrs() {\n return {\n 'aria-multiselectable': !this.isSelectable ? null : this.selectableIsMultiSelect ? 'true' : 'false'\n };\n }\n },\n watch: {\n computedItems: function computedItems(newVal, oldVal) {\n // Reset for selectable\n var equal = false;\n\n if (this.isSelectable && this.selectedRows.length > 0) {\n // Quick check against array length\n equal = Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"d\" /* isArray */])(newVal) && Object(__WEBPACK_IMPORTED_MODULE_2__utils_array__[\"d\" /* isArray */])(oldVal) && newVal.length === oldVal.length;\n\n for (var i = 0; equal && i < newVal.length; i++) {\n // Look for the first non-loosely equal row, after ignoring reserved fields\n equal = Object(__WEBPACK_IMPORTED_MODULE_0__utils_loose_equal__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_5__sanitize_row__[\"a\" /* default */])(newVal[i]), Object(__WEBPACK_IMPORTED_MODULE_5__sanitize_row__[\"a\" /* default */])(oldVal[i]));\n }\n }\n\n if (!equal) {\n this.clearSelected();\n }\n },\n selectable: function selectable(newVal, oldVal) {\n this.clearSelected();\n this.setSelectionHandlers(newVal);\n },\n selectMode: function selectMode(newVal, oldVal) {\n this.clearSelected();\n },\n selectedRows: function selectedRows(_selectedRows, oldVal) {\n var _this = this;\n\n if (this.isSelectable && !Object(__WEBPACK_IMPORTED_MODULE_0__utils_loose_equal__[\"a\" /* default */])(_selectedRows, oldVal)) {\n var items = []; // `.forEach()` skips over non-existent indices (on sparse arrays)\n\n _selectedRows.forEach(function (v, idx) {\n if (v) {\n items.push(_this.computedItems[idx]);\n }\n });\n\n this.$emit('row-selected', items);\n }\n }\n },\n beforeMount: function beforeMount() {\n // Set up handlers\n if (this.isSelectable) {\n this.setSelectionHandlers(true);\n }\n },\n methods: {\n // Public methods\n selectRow: function selectRow(index) {\n // Select a particular row (indexed based on computedItems)\n if (this.isSelectable && Object(__WEBPACK_IMPORTED_MODULE_4__utils_inspect__[\"h\" /* isNumber */])(index) && index >= 0 && index < this.computedItems.length && !this.isRowSelected(index)) {\n var selectedRows = this.selectableIsMultiSelect ? this.selectedRows.slice() : [];\n selectedRows[index] = true;\n this.selectedLastClicked = -1;\n this.selectedRows = selectedRows;\n }\n },\n unselectRow: function unselectRow(index) {\n // Un-select a particular row (indexed based on `computedItems`)\n if (this.isSelectable && Object(__WEBPACK_IMPORTED_MODULE_4__utils_inspect__[\"h\" /* isNumber */])(index) && this.isRowSelected(index)) {\n var selectedRows = this.selectedRows.slice();\n selectedRows[index] = false;\n this.selectedLastClicked = -1;\n this.selectedRows = selectedRows;\n }\n },\n selectAllRows: function selectAllRows() {\n var length = this.computedItems.length;\n\n if (this.isSelectable && length > 0) {\n this.selectedLastClicked = -1;\n this.selectedRows = this.selectableIsMultiSelect ? Object(__WEBPACK_IMPORTED_MODULE_1__utils_range__[\"a\" /* default */])(length).map(function (i) {\n return true;\n }) : [true];\n }\n },\n isRowSelected: function isRowSelected(index) {\n // Determine if a row is selected (indexed based on `computedItems`)\n return Boolean(Object(__WEBPACK_IMPORTED_MODULE_4__utils_inspect__[\"h\" /* isNumber */])(index) && this.selectedRows[index]);\n },\n clearSelected: function clearSelected() {\n // Clear any active selected row(s)\n this.selectedLastClicked = -1;\n this.selectedRows = [];\n },\n // Internal private methods\n selectableRowClasses: function selectableRowClasses(index) {\n if (this.isSelectable && this.isRowSelected(index)) {\n var variant = this.selectedVariant;\n return _defineProperty({\n 'b-table-row-selected': true\n }, \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(variant), variant);\n } else {\n return {};\n }\n },\n selectableRowAttrs: function selectableRowAttrs(index) {\n return {\n 'aria-selected': !this.isSelectable ? null : this.isRowSelected(index) ? 'true' : 'false'\n };\n },\n setSelectionHandlers: function setSelectionHandlers(on) {\n var method = on ? '$on' : '$off'; // Handle row-clicked event\n\n this[method]('row-clicked', this.selectionHandler); // Clear selection on filter, pagination, and sort changes\n\n this[method]('filtered', this.clearSelected);\n this[method]('context-changed', this.clearSelected);\n },\n selectionHandler: function selectionHandler(item, index, evt) {\n /* istanbul ignore if: should never happen */\n if (!this.isSelectable) {\n // Don't do anything if table is not in selectable mode\n\n /* istanbul ignore next: should never happen */\n this.clearSelected();\n /* istanbul ignore next: should never happen */\n\n return;\n }\n\n var selectMode = this.selectMode;\n var selectedRows = this.selectedRows.slice();\n var selected = !selectedRows[index]; // Note 'multi' mode needs no special event handling\n\n if (selectMode === 'single') {\n selectedRows = [];\n } else if (selectMode === 'range') {\n if (this.selectedLastRow > -1 && evt.shiftKey) {\n // range\n for (var idx = Math.min(this.selectedLastRow, index); idx <= Math.max(this.selectedLastRow, index); idx++) {\n selectedRows[idx] = true;\n }\n\n selected = true;\n } else {\n if (!(evt.ctrlKey || evt.metaKey)) {\n // Clear range selection if any\n selectedRows = [];\n selected = true;\n }\n\n this.selectedLastRow = selected ? index : -1;\n }\n }\n\n selectedRows[index] = selected;\n this.selectedRows = selectedRows;\n }\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vY29tcG9uZW50cy90YWJsZS9oZWxwZXJzL21peGluLXNlbGVjdGFibGUuanM/ZTc2MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwyQ0FBMkMsa0JBQWtCLGtDQUFrQyxxRUFBcUUsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEVBQUUsWUFBWTs7QUFFM0o7QUFDWDtBQUNxQjtBQUNIO0FBQ1Q7QUFDVDtBQUMxQjtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSwyRUFBYTtBQUM1QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlGQUFrQjtBQUNqQztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxrQ0FBa0MsMkVBQWE7QUFDL0MsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCLHFFQUFPLFlBQVkscUVBQU87O0FBRTFDLHVCQUF1Qiw0QkFBNEI7QUFDbkQ7QUFDQSxrQkFBa0IsMkVBQVUsQ0FBQyxzRUFBVyxhQUFhLHNFQUFXO0FBQ2hFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEsZ0NBQWdDLDJFQUFVO0FBQzFDLHVCQUF1Qjs7QUFFdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLHdFQUFRO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLCtCQUErQix3RUFBUTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDJEQUEyRCxxRUFBSztBQUNoRTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EscUJBQXFCLHdFQUFRO0FBQzdCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSx1Q0FBdUM7O0FBRXZDLHlEQUF5RDs7QUFFekQ7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMENBQTBDOztBQUUxQztBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSwrREFBK0QsOENBQThDO0FBQzdHO0FBQ0E7O0FBRUE7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6IjI3MS5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCBsb29zZUVxdWFsIGZyb20gJy4uLy4uLy4uL3V0aWxzL2xvb3NlLWVxdWFsJztcbmltcG9ydCByYW5nZSBmcm9tICcuLi8uLi8uLi91dGlscy9yYW5nZSc7XG5pbXBvcnQgeyBpc0FycmF5LCBhcnJheUluY2x1ZGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYXJyYXknO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY29uZmlnJztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaW5zcGVjdCc7XG5pbXBvcnQgc2FuaXRpemVSb3cgZnJvbSAnLi9zYW5pdGl6ZS1yb3cnO1xuZXhwb3J0IGRlZmF1bHQge1xuICBwcm9wczoge1xuICAgIHNlbGVjdGFibGU6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgc2VsZWN0TW9kZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ211bHRpJyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbCkge1xuICAgICAgICByZXR1cm4gYXJyYXlJbmNsdWRlcyhbJ3JhbmdlJywgJ211bHRpJywgJ3NpbmdsZSddLCB2YWwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2VsZWN0ZWRWYXJpYW50OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudENvbmZpZygnQlRhYmxlJywgJ3NlbGVjdGVkVmFyaWFudCcpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0ZWRSb3dzOiBbXSxcbiAgICAgIHNlbGVjdGVkTGFzdFJvdzogLTFcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGlzU2VsZWN0YWJsZTogZnVuY3Rpb24gaXNTZWxlY3RhYmxlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0YWJsZSAmJiB0aGlzLnNlbGVjdE1vZGU7XG4gICAgfSxcbiAgICBzZWxlY3RhYmxlSGFzU2VsZWN0aW9uOiBmdW5jdGlvbiBzZWxlY3RhYmxlSGFzU2VsZWN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNTZWxlY3RhYmxlICYmIHRoaXMuc2VsZWN0ZWRSb3dzICYmIHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA+IDAgJiYgdGhpcy5zZWxlY3RlZFJvd3Muc29tZShCb29sZWFuKTtcbiAgICB9LFxuICAgIHNlbGVjdGFibGVJc011bHRpU2VsZWN0OiBmdW5jdGlvbiBzZWxlY3RhYmxlSXNNdWx0aVNlbGVjdCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzU2VsZWN0YWJsZSAmJiBhcnJheUluY2x1ZGVzKFsncmFuZ2UnLCAnbXVsdGknXSwgdGhpcy5zZWxlY3RNb2RlKTtcbiAgICB9LFxuICAgIHNlbGVjdGFibGVUYWJsZUNsYXNzZXM6IGZ1bmN0aW9uIHNlbGVjdGFibGVUYWJsZUNsYXNzZXMoKSB7XG4gICAgICB2YXIgX3JlZjtcblxuICAgICAgcmV0dXJuIF9yZWYgPSB7XG4gICAgICAgICdiLXRhYmxlLXNlbGVjdGFibGUnOiB0aGlzLmlzU2VsZWN0YWJsZVxuICAgICAgfSwgX2RlZmluZVByb3BlcnR5KF9yZWYsIFwiYi10YWJsZS1zZWxlY3QtXCIuY29uY2F0KHRoaXMuc2VsZWN0TW9kZSksIHRoaXMuaXNTZWxlY3RhYmxlKSwgX2RlZmluZVByb3BlcnR5KF9yZWYsICdiLXRhYmxlLXNlbGVjdGluZycsIHRoaXMuc2VsZWN0YWJsZUhhc1NlbGVjdGlvbiksIF9yZWY7XG4gICAgfSxcbiAgICBzZWxlY3RhYmxlVGFibGVBdHRyczogZnVuY3Rpb24gc2VsZWN0YWJsZVRhYmxlQXR0cnMoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAnYXJpYS1tdWx0aXNlbGVjdGFibGUnOiAhdGhpcy5pc1NlbGVjdGFibGUgPyBudWxsIDogdGhpcy5zZWxlY3RhYmxlSXNNdWx0aVNlbGVjdCA/ICd0cnVlJyA6ICdmYWxzZSdcbiAgICAgIH07XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgIGNvbXB1dGVkSXRlbXM6IGZ1bmN0aW9uIGNvbXB1dGVkSXRlbXMobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIC8vIFJlc2V0IGZvciBzZWxlY3RhYmxlXG4gICAgICB2YXIgZXF1YWwgPSBmYWxzZTtcblxuICAgICAgaWYgKHRoaXMuaXNTZWxlY3RhYmxlICYmIHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gUXVpY2sgY2hlY2sgYWdhaW5zdCBhcnJheSBsZW5ndGhcbiAgICAgICAgZXF1YWwgPSBpc0FycmF5KG5ld1ZhbCkgJiYgaXNBcnJheShvbGRWYWwpICYmIG5ld1ZhbC5sZW5ndGggPT09IG9sZFZhbC5sZW5ndGg7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGVxdWFsICYmIGkgPCBuZXdWYWwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAvLyBMb29rIGZvciB0aGUgZmlyc3Qgbm9uLWxvb3NlbHkgZXF1YWwgcm93LCBhZnRlciBpZ25vcmluZyByZXNlcnZlZCBmaWVsZHNcbiAgICAgICAgICBlcXVhbCA9IGxvb3NlRXF1YWwoc2FuaXRpemVSb3cobmV3VmFsW2ldKSwgc2FuaXRpemVSb3cob2xkVmFsW2ldKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFlcXVhbCkge1xuICAgICAgICB0aGlzLmNsZWFyU2VsZWN0ZWQoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNlbGVjdGFibGU6IGZ1bmN0aW9uIHNlbGVjdGFibGUobmV3VmFsLCBvbGRWYWwpIHtcbiAgICAgIHRoaXMuY2xlYXJTZWxlY3RlZCgpO1xuICAgICAgdGhpcy5zZXRTZWxlY3Rpb25IYW5kbGVycyhuZXdWYWwpO1xuICAgIH0sXG4gICAgc2VsZWN0TW9kZTogZnVuY3Rpb24gc2VsZWN0TW9kZShuZXdWYWwsIG9sZFZhbCkge1xuICAgICAgdGhpcy5jbGVhclNlbGVjdGVkKCk7XG4gICAgfSxcbiAgICBzZWxlY3RlZFJvd3M6IGZ1bmN0aW9uIHNlbGVjdGVkUm93cyhfc2VsZWN0ZWRSb3dzLCBvbGRWYWwpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLmlzU2VsZWN0YWJsZSAmJiAhbG9vc2VFcXVhbChfc2VsZWN0ZWRSb3dzLCBvbGRWYWwpKSB7XG4gICAgICAgIHZhciBpdGVtcyA9IFtdOyAvLyBgLmZvckVhY2goKWAgc2tpcHMgb3ZlciBub24tZXhpc3RlbnQgaW5kaWNlcyAob24gc3BhcnNlIGFycmF5cylcblxuICAgICAgICBfc2VsZWN0ZWRSb3dzLmZvckVhY2goZnVuY3Rpb24gKHYsIGlkeCkge1xuICAgICAgICAgIGlmICh2KSB7XG4gICAgICAgICAgICBpdGVtcy5wdXNoKF90aGlzLmNvbXB1dGVkSXRlbXNbaWR4XSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLiRlbWl0KCdyb3ctc2VsZWN0ZWQnLCBpdGVtcyk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBiZWZvcmVNb3VudDogZnVuY3Rpb24gYmVmb3JlTW91bnQoKSB7XG4gICAgLy8gU2V0IHVwIGhhbmRsZXJzXG4gICAgaWYgKHRoaXMuaXNTZWxlY3RhYmxlKSB7XG4gICAgICB0aGlzLnNldFNlbGVjdGlvbkhhbmRsZXJzKHRydWUpO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIC8vIFB1YmxpYyBtZXRob2RzXG4gICAgc2VsZWN0Um93OiBmdW5jdGlvbiBzZWxlY3RSb3coaW5kZXgpIHtcbiAgICAgIC8vIFNlbGVjdCBhIHBhcnRpY3VsYXIgcm93IChpbmRleGVkIGJhc2VkIG9uIGNvbXB1dGVkSXRlbXMpXG4gICAgICBpZiAodGhpcy5pc1NlbGVjdGFibGUgJiYgaXNOdW1iZXIoaW5kZXgpICYmIGluZGV4ID49IDAgJiYgaW5kZXggPCB0aGlzLmNvbXB1dGVkSXRlbXMubGVuZ3RoICYmICF0aGlzLmlzUm93U2VsZWN0ZWQoaW5kZXgpKSB7XG4gICAgICAgIHZhciBzZWxlY3RlZFJvd3MgPSB0aGlzLnNlbGVjdGFibGVJc011bHRpU2VsZWN0ID8gdGhpcy5zZWxlY3RlZFJvd3Muc2xpY2UoKSA6IFtdO1xuICAgICAgICBzZWxlY3RlZFJvd3NbaW5kZXhdID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZExhc3RDbGlja2VkID0gLTE7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gc2VsZWN0ZWRSb3dzO1xuICAgICAgfVxuICAgIH0sXG4gICAgdW5zZWxlY3RSb3c6IGZ1bmN0aW9uIHVuc2VsZWN0Um93KGluZGV4KSB7XG4gICAgICAvLyBVbi1zZWxlY3QgYSBwYXJ0aWN1bGFyIHJvdyAoaW5kZXhlZCBiYXNlZCBvbiBgY29tcHV0ZWRJdGVtc2ApXG4gICAgICBpZiAodGhpcy5pc1NlbGVjdGFibGUgJiYgaXNOdW1iZXIoaW5kZXgpICYmIHRoaXMuaXNSb3dTZWxlY3RlZChpbmRleCkpIHtcbiAgICAgICAgdmFyIHNlbGVjdGVkUm93cyA9IHRoaXMuc2VsZWN0ZWRSb3dzLnNsaWNlKCk7XG4gICAgICAgIHNlbGVjdGVkUm93c1tpbmRleF0gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZExhc3RDbGlja2VkID0gLTE7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gc2VsZWN0ZWRSb3dzO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2VsZWN0QWxsUm93czogZnVuY3Rpb24gc2VsZWN0QWxsUm93cygpIHtcbiAgICAgIHZhciBsZW5ndGggPSB0aGlzLmNvbXB1dGVkSXRlbXMubGVuZ3RoO1xuXG4gICAgICBpZiAodGhpcy5pc1NlbGVjdGFibGUgJiYgbGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTGFzdENsaWNrZWQgPSAtMTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MgPSB0aGlzLnNlbGVjdGFibGVJc011bHRpU2VsZWN0ID8gcmFuZ2UobGVuZ3RoKS5tYXAoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSkgOiBbdHJ1ZV07XG4gICAgICB9XG4gICAgfSxcbiAgICBpc1Jvd1NlbGVjdGVkOiBmdW5jdGlvbiBpc1Jvd1NlbGVjdGVkKGluZGV4KSB7XG4gICAgICAvLyBEZXRlcm1pbmUgaWYgYSByb3cgaXMgc2VsZWN0ZWQgKGluZGV4ZWQgYmFzZWQgb24gYGNvbXB1dGVkSXRlbXNgKVxuICAgICAgcmV0dXJuIEJvb2xlYW4oaXNOdW1iZXIoaW5kZXgpICYmIHRoaXMuc2VsZWN0ZWRSb3dzW2luZGV4XSk7XG4gICAgfSxcbiAgICBjbGVhclNlbGVjdGVkOiBmdW5jdGlvbiBjbGVhclNlbGVjdGVkKCkge1xuICAgICAgLy8gQ2xlYXIgYW55IGFjdGl2ZSBzZWxlY3RlZCByb3cocylcbiAgICAgIHRoaXMuc2VsZWN0ZWRMYXN0Q2xpY2tlZCA9IC0xO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBbXTtcbiAgICB9LFxuICAgIC8vIEludGVybmFsIHByaXZhdGUgbWV0aG9kc1xuICAgIHNlbGVjdGFibGVSb3dDbGFzc2VzOiBmdW5jdGlvbiBzZWxlY3RhYmxlUm93Q2xhc3NlcyhpbmRleCkge1xuICAgICAgaWYgKHRoaXMuaXNTZWxlY3RhYmxlICYmIHRoaXMuaXNSb3dTZWxlY3RlZChpbmRleCkpIHtcbiAgICAgICAgdmFyIHZhcmlhbnQgPSB0aGlzLnNlbGVjdGVkVmFyaWFudDtcbiAgICAgICAgcmV0dXJuIF9kZWZpbmVQcm9wZXJ0eSh7XG4gICAgICAgICAgJ2ItdGFibGUtcm93LXNlbGVjdGVkJzogdHJ1ZVxuICAgICAgICB9LCBcIlwiLmNvbmNhdCh0aGlzLmRhcmsgPyAnYmcnIDogJ3RhYmxlJywgXCItXCIpLmNvbmNhdCh2YXJpYW50KSwgdmFyaWFudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICBzZWxlY3RhYmxlUm93QXR0cnM6IGZ1bmN0aW9uIHNlbGVjdGFibGVSb3dBdHRycyhpbmRleCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJ2FyaWEtc2VsZWN0ZWQnOiAhdGhpcy5pc1NlbGVjdGFibGUgPyBudWxsIDogdGhpcy5pc1Jvd1NlbGVjdGVkKGluZGV4KSA/ICd0cnVlJyA6ICdmYWxzZSdcbiAgICAgIH07XG4gICAgfSxcbiAgICBzZXRTZWxlY3Rpb25IYW5kbGVyczogZnVuY3Rpb24gc2V0U2VsZWN0aW9uSGFuZGxlcnMob24pIHtcbiAgICAgIHZhciBtZXRob2QgPSBvbiA/ICckb24nIDogJyRvZmYnOyAvLyBIYW5kbGUgcm93LWNsaWNrZWQgZXZlbnRcblxuICAgICAgdGhpc1ttZXRob2RdKCdyb3ctY2xpY2tlZCcsIHRoaXMuc2VsZWN0aW9uSGFuZGxlcik7IC8vIENsZWFyIHNlbGVjdGlvbiBvbiBmaWx0ZXIsIHBhZ2luYXRpb24sIGFuZCBzb3J0IGNoYW5nZXNcblxuICAgICAgdGhpc1ttZXRob2RdKCdmaWx0ZXJlZCcsIHRoaXMuY2xlYXJTZWxlY3RlZCk7XG4gICAgICB0aGlzW21ldGhvZF0oJ2NvbnRleHQtY2hhbmdlZCcsIHRoaXMuY2xlYXJTZWxlY3RlZCk7XG4gICAgfSxcbiAgICBzZWxlY3Rpb25IYW5kbGVyOiBmdW5jdGlvbiBzZWxlY3Rpb25IYW5kbGVyKGl0ZW0sIGluZGV4LCBldnQpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZjogc2hvdWxkIG5ldmVyIGhhcHBlbiAqL1xuICAgICAgaWYgKCF0aGlzLmlzU2VsZWN0YWJsZSkge1xuICAgICAgICAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiB0YWJsZSBpcyBub3QgaW4gc2VsZWN0YWJsZSBtb2RlXG5cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IHNob3VsZCBuZXZlciBoYXBwZW4gKi9cbiAgICAgICAgdGhpcy5jbGVhclNlbGVjdGVkKCk7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBzaG91bGQgbmV2ZXIgaGFwcGVuICovXG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgc2VsZWN0TW9kZSA9IHRoaXMuc2VsZWN0TW9kZTtcbiAgICAgIHZhciBzZWxlY3RlZFJvd3MgPSB0aGlzLnNlbGVjdGVkUm93cy5zbGljZSgpO1xuICAgICAgdmFyIHNlbGVjdGVkID0gIXNlbGVjdGVkUm93c1tpbmRleF07IC8vIE5vdGUgJ211bHRpJyBtb2RlIG5lZWRzIG5vIHNwZWNpYWwgZXZlbnQgaGFuZGxpbmdcblxuICAgICAgaWYgKHNlbGVjdE1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgIHNlbGVjdGVkUm93cyA9IFtdO1xuICAgICAgfSBlbHNlIGlmIChzZWxlY3RNb2RlID09PSAncmFuZ2UnKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTGFzdFJvdyA+IC0xICYmIGV2dC5zaGlmdEtleSkge1xuICAgICAgICAgIC8vIHJhbmdlXG4gICAgICAgICAgZm9yICh2YXIgaWR4ID0gTWF0aC5taW4odGhpcy5zZWxlY3RlZExhc3RSb3csIGluZGV4KTsgaWR4IDw9IE1hdGgubWF4KHRoaXMuc2VsZWN0ZWRMYXN0Um93LCBpbmRleCk7IGlkeCsrKSB7XG4gICAgICAgICAgICBzZWxlY3RlZFJvd3NbaWR4XSA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghKGV2dC5jdHJsS2V5IHx8IGV2dC5tZXRhS2V5KSkge1xuICAgICAgICAgICAgLy8gQ2xlYXIgcmFuZ2Ugc2VsZWN0aW9uIGlmIGFueVxuICAgICAgICAgICAgc2VsZWN0ZWRSb3dzID0gW107XG4gICAgICAgICAgICBzZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZExhc3RSb3cgPSBzZWxlY3RlZCA/IGluZGV4IDogLTE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2VsZWN0ZWRSb3dzW2luZGV4XSA9IHNlbGVjdGVkO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBzZWxlY3RlZFJvd3M7XG4gICAgfVxuICB9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2NvbXBvbmVudHMvdGFibGUvaGVscGVycy9taXhpbi1zZWxlY3RhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSAyNzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///271\n"); /***/ }), /* 272 */ @@ -1963,7 +1963,7 @@ eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_loose_equal__ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return directivesPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_plugins__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__modal__ = __webpack_require__(219);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__popover__ = __webpack_require__(83);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__scrollspy__ = __webpack_require__(220);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__toggle__ = __webpack_require__(222);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__tooltip__ = __webpack_require__(93);\n\n\n\n\n\n // Main plugin for installing all directive plugins\n\nvar directivesPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_0__utils_plugins__[\"b\" /* pluginFactory */])({\n plugins: {\n VBModalPlugin: __WEBPACK_IMPORTED_MODULE_1__modal__[\"a\" /* VBModalPlugin */],\n VBPopoverPlugin: __WEBPACK_IMPORTED_MODULE_2__popover__[\"a\" /* VBPopoverPlugin */],\n VBScrollspyPlugin: __WEBPACK_IMPORTED_MODULE_3__scrollspy__[\"a\" /* VBScrollspyPlugin */],\n VBTogglePlugin: __WEBPACK_IMPORTED_MODULE_4__toggle__[\"a\" /* VBTogglePlugin */],\n VBTooltipPlugin: __WEBPACK_IMPORTED_MODULE_5__tooltip__[\"a\" /* VBTooltipPlugin */]\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy9pbmRleC5qcz8yOWMwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlEO0FBQ1Q7QUFDSTtBQUNJO0FBQ047QUFDRTs7QUFFckM7QUFDUDtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxtQkFBbUIsNkRBQWE7QUFDaEMscUJBQXFCLGlFQUFlO0FBQ3BDLHVCQUF1QixxRUFBaUI7QUFDeEMsb0JBQW9CLCtEQUFjO0FBQ2xDLHFCQUFxQixpRUFBZTtBQUNwQztBQUNBLENBQUMiLCJmaWxlIjoiMjczLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uL3V0aWxzL3BsdWdpbnMnO1xuaW1wb3J0IHsgVkJNb2RhbFBsdWdpbiB9IGZyb20gJy4vbW9kYWwnO1xuaW1wb3J0IHsgVkJQb3BvdmVyUGx1Z2luIH0gZnJvbSAnLi9wb3BvdmVyJztcbmltcG9ydCB7IFZCU2Nyb2xsc3B5UGx1Z2luIH0gZnJvbSAnLi9zY3JvbGxzcHknO1xuaW1wb3J0IHsgVkJUb2dnbGVQbHVnaW4gfSBmcm9tICcuL3RvZ2dsZSc7XG5pbXBvcnQgeyBWQlRvb2x0aXBQbHVnaW4gfSBmcm9tICcuL3Rvb2x0aXAnOyAvLyBNYWluIHBsdWdpbiBmb3IgaW5zdGFsbGluZyBhbGwgZGlyZWN0aXZlIHBsdWdpbnNcblxuZXhwb3J0IHZhciBkaXJlY3RpdmVzUGx1Z2luID1cbi8qI19fUFVSRV9fKi9cbnBsdWdpbkZhY3Rvcnkoe1xuICBwbHVnaW5zOiB7XG4gICAgVkJNb2RhbFBsdWdpbjogVkJNb2RhbFBsdWdpbixcbiAgICBWQlBvcG92ZXJQbHVnaW46IFZCUG9wb3ZlclBsdWdpbixcbiAgICBWQlNjcm9sbHNweVBsdWdpbjogVkJTY3JvbGxzcHlQbHVnaW4sXG4gICAgVkJUb2dnbGVQbHVnaW46IFZCVG9nZ2xlUGx1Z2luLFxuICAgIFZCVG9vbHRpcFBsdWdpbjogVkJUb29sdGlwUGx1Z2luXG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2RpcmVjdGl2ZXMvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDI3M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///273\n"); +eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return directivesPlugin; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_plugins__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__modal__ = __webpack_require__(221);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__popover__ = __webpack_require__(83);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__scrollspy__ = __webpack_require__(222);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__toggle__ = __webpack_require__(224);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__tooltip__ = __webpack_require__(93);\n\n\n\n\n\n // Main plugin for installing all directive plugins\n\nvar directivesPlugin =\n/*#__PURE__*/\nObject(__WEBPACK_IMPORTED_MODULE_0__utils_plugins__[\"b\" /* pluginFactory */])({\n plugins: {\n VBModalPlugin: __WEBPACK_IMPORTED_MODULE_1__modal__[\"a\" /* VBModalPlugin */],\n VBPopoverPlugin: __WEBPACK_IMPORTED_MODULE_2__popover__[\"a\" /* VBPopoverPlugin */],\n VBScrollspyPlugin: __WEBPACK_IMPORTED_MODULE_3__scrollspy__[\"a\" /* VBScrollspyPlugin */],\n VBTogglePlugin: __WEBPACK_IMPORTED_MODULE_4__toggle__[\"a\" /* VBTogglePlugin */],\n VBTooltipPlugin: __WEBPACK_IMPORTED_MODULE_5__tooltip__[\"a\" /* VBTooltipPlugin */]\n }\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXZ1ZS9lc20vZGlyZWN0aXZlcy9pbmRleC5qcz8yOWMwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlEO0FBQ1Q7QUFDSTtBQUNJO0FBQ047QUFDRTs7QUFFckM7QUFDUDtBQUNBLDZFQUFhO0FBQ2I7QUFDQSxtQkFBbUIsNkRBQWE7QUFDaEMscUJBQXFCLGlFQUFlO0FBQ3BDLHVCQUF1QixxRUFBaUI7QUFDeEMsb0JBQW9CLCtEQUFjO0FBQ2xDLHFCQUFxQixpRUFBZTtBQUNwQztBQUNBLENBQUMiLCJmaWxlIjoiMjczLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uL3V0aWxzL3BsdWdpbnMnO1xuaW1wb3J0IHsgVkJNb2RhbFBsdWdpbiB9IGZyb20gJy4vbW9kYWwnO1xuaW1wb3J0IHsgVkJQb3BvdmVyUGx1Z2luIH0gZnJvbSAnLi9wb3BvdmVyJztcbmltcG9ydCB7IFZCU2Nyb2xsc3B5UGx1Z2luIH0gZnJvbSAnLi9zY3JvbGxzcHknO1xuaW1wb3J0IHsgVkJUb2dnbGVQbHVnaW4gfSBmcm9tICcuL3RvZ2dsZSc7XG5pbXBvcnQgeyBWQlRvb2x0aXBQbHVnaW4gfSBmcm9tICcuL3Rvb2x0aXAnOyAvLyBNYWluIHBsdWdpbiBmb3IgaW5zdGFsbGluZyBhbGwgZGlyZWN0aXZlIHBsdWdpbnNcblxuZXhwb3J0IHZhciBkaXJlY3RpdmVzUGx1Z2luID1cbi8qI19fUFVSRV9fKi9cbnBsdWdpbkZhY3Rvcnkoe1xuICBwbHVnaW5zOiB7XG4gICAgVkJNb2RhbFBsdWdpbjogVkJNb2RhbFBsdWdpbixcbiAgICBWQlBvcG92ZXJQbHVnaW46IFZCUG9wb3ZlclBsdWdpbixcbiAgICBWQlNjcm9sbHNweVBsdWdpbjogVkJTY3JvbGxzcHlQbHVnaW4sXG4gICAgVkJUb2dnbGVQbHVnaW46IFZCVG9nZ2xlUGx1Z2luLFxuICAgIFZCVG9vbHRpcFBsdWdpbjogVkJUb29sdGlwUGx1Z2luXG4gIH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC12dWUvZXNtL2RpcmVjdGl2ZXMvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDI3M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///273\n"); /***/ }), /* 274 */ diff --git a/webapp/src/App.vue b/webapp/src/App.vue index ba9875a..5355dbc 100644 --- a/webapp/src/App.vue +++ b/webapp/src/App.vue @@ -13,25 +13,41 @@ :category_filter="category_filter" ></ocrd-processor-list> </b-tab> - <b-tab title="Projects"> + <b-tab active title="Projects"> <ocrd-project-list :repos="repos" ></ocrd-project-list> </b-tab> </b-tabs> + <!-- <b-modal id="processor-modal"> + </b-modal> --> + <b-modal id="project-modal"> + <ocrd-project-list-item + :repo="repos[modalProjectIndex]" + > + </ocrd-project-list-item> + </b-modal> </b-container> </template> <script> import OcrdProcessorList from './OcrdProcessorList.vue' import OcrdProjectList from './OcrdProjectList.vue' +import OcrdProcessorListItem from './OcrdProcessorListItem.vue' +import OcrdProjectListItem from './OcrdProjectListItem.vue' export default { components: { OcrdProcessorList, - OcrdProjectList + OcrdProjectList, + OcrdProcessorListItem, + OcrdProjectListItem }, data() { return { + modalProjectIndex: 0, + modalProcessorIndex: 0, + modalProjectVisible: false, + modalProcessorVisible: false, repos_raw: [], category_filter: [], step_filter: [], @@ -55,8 +71,10 @@ export default { }, all_processors() { return this.repos_raw.reduce((all, repo) => { + tool_idx = 0 if (repo.ocrd_tool) all.push(...Object.values(repo.ocrd_tool.tools).map(tool => { + tool.idx = tool_idx++ tool.part_of = repo.org_plus_name return tool })) @@ -83,6 +101,7 @@ export default { methods: { fetchRepoData() { fetch('repos.json').then(resp => resp.json()).then(repos => { + repos.map((repo, idx) => repo.idx = idx) this.repos_raw.splice(0, this.repos_raw.length) this.repos_raw.push(...repos) } diff --git a/webapp/src/OcrdProjectList.vue b/webapp/src/OcrdProjectList.vue index a3cf119..799cbc6 100644 --- a/webapp/src/OcrdProjectList.vue +++ b/webapp/src/OcrdProjectList.vue @@ -1,10 +1,24 @@ <template> <div> + <b-row> + <b-button v-b-toggle.project-controls class="m-1">Toggle Controls</b-button> + <b-collapse id="project-controls"> + <b-container> + <b-row> + Filter by name: <input type="text" v-model="name_filter"/> (Showing {{ filtered_repos.length }} of {{ repos.length}} repos) + </b-row> + <b-row> + Tabs: <b-button @click="tabIndex -= 1"><</b-button> <b-button @click="tabIndex += 1">></b-button> + </b-row> + </b-container> + </b-collapse> + </b-row> <b-row> <ocrd-project-list-item - v-for="repo in repos" + v-for="repo, idx in filtered_repos" :key="repo.org_plus_name" :repo="repo" + :tabIndex="tabIndex" > </ocrd-project-list-item> </b-row> @@ -15,11 +29,27 @@ <script> import OcrdProjectListItem from './OcrdProjectListItem.vue' export default { + data() { + return { + name_filter: '', + tabIndex: 0, + } + }, + computed: { + filtered_repos() { + return this.repos.filter(repo => repo.name.toLowerCase().includes(this.name_filter.toLowerCase())) + } + }, components: { OcrdProjectListItem }, props: { repos: {required: true} + }, + methods: { + switchTab(delta) { + this.tabIndex += delta + } } } </script> diff --git a/webapp/src/OcrdProjectListItem.vue b/webapp/src/OcrdProjectListItem.vue index 3d952cd..56f32ad 100644 --- a/webapp/src/OcrdProjectListItem.vue +++ b/webapp/src/OcrdProjectListItem.vue @@ -4,7 +4,7 @@ tag="article" class="mb-5 ocrd-project-list-item" > - <b-tabs> + <b-tabs v-model="tabIndex"> <b-tab title="README"> <div v-html="compiledReadme"></div> </b-tab> @@ -50,8 +50,14 @@ export default { components: { VueCodeHighlight }, + // data() { + // return { + // tabIndex: 0 + // } + // }, props: { repo: {required: true}, + tabIndex: {default: 0}, }, computed: { cleanId() { diff --git a/webapp/src/main.js b/webapp/src/main.js index e0af7b6..3cd7911 100644 --- a/webapp/src/main.js +++ b/webapp/src/main.js @@ -17,7 +17,7 @@ import 'vue-code-highlight/themes/prism-coy.css' // import 'vue-code-highlight/themes/prism-twilight.css' // import 'vue-code-highlight/themes/window.css' -new Vue({ +window.kwalitee_app = new Vue({ el: '#ocrd-kwalitee', render: h => h(App) }) -- GitLab