ngx-electron-croft
Version:
access Electron Renderer APIs easily using an Angular Service
280 lines (259 loc) • 23.2 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("@angular/core"));
else if(typeof define === 'function' && define.amd)
define(["@angular/core"], factory);
else if(typeof exports === 'object')
exports["ngx-electron"] = factory(require("@angular/core"));
else
root["ngx-electron"] = factory(root["@angular/core"]);
})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // identity function for calling harmony imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "/";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 3);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ElectronService; });
var ElectronService = (function () {
function ElectronService() {
}
Object.defineProperty(ElectronService.prototype, "electron", {
get: function () {
if (!this._electron) {
if (window && window.require) {
this._electron = window.require('electron');
return this._electron;
}
return null;
}
return this._electron;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ElectronService.prototype, "isElectronApp", {
/**
* determines if SPA is running in Electron
* @returns {boolean}
*/
get: function () {
return !!window.navigator.userAgent.match(/Electron/);
},
enumerable: true,
configurable: true
});
Object.defineProperty(ElectronService.prototype, "desktopCapturer", {
get: function () {
return this.electron ? this.electron.desktopCapturer : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ElectronService.prototype, "ipcRenderer", {
get: function () {
return this.electron ? this.electron.ipcRenderer : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ElectronService.prototype, "remote", {
get: function () {
return this.electron ? this.electron.remote : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ElectronService.prototype, "webFrame", {
get: function () {
return this.electron ? this.electron.webFrame : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ElectronService.prototype, "clipboard", {
get: function () {
return this.electron ? this.electron.clipboard : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ElectronService.prototype, "crashReporter", {
get: function () {
return this.electron ? this.electron.crashReporter : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ElectronService.prototype, "process", {
get: function () {
return this.remote ? this.remote.process : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ElectronService.prototype, "nativeImage", {
get: function () {
return this.electron ? this.electron.nativeImage : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ElectronService.prototype, "screen", {
get: function () {
return this.electron ? this.electron.screen : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ElectronService.prototype, "shell", {
get: function () {
return this.electron ? this.electron.shell : null;
},
enumerable: true,
configurable: true
});
return ElectronService;
}());
/***/ }),
/* 1 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ElectronServiceRef; });
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__electronService__ = __webpack_require__(0);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_core__ = __webpack_require__(2);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__angular_core__);
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var ElectronServiceRef = (function (_super) {
__extends(ElectronServiceRef, _super);
function ElectronServiceRef() {
return _super.call(this) || this;
}
return ElectronServiceRef;
}(__WEBPACK_IMPORTED_MODULE_0__electronService__["a" /* ElectronService */]));
ElectronServiceRef = __decorate([
__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__angular_core__["Injectable"])(),
__metadata("design:paramtypes", [])
], ElectronServiceRef);
/***/ }),
/* 2 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_2__;
/***/ }),
/* 3 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
;
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NgxElectronModule", function() { return NgxElectronModule; });
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__(2);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__angular_core__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_electronService__ = __webpack_require__(0);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_electronServiceRef__ = __webpack_require__(1);
/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ElectronService", function() { return __WEBPACK_IMPORTED_MODULE_1__src_electronService__["a"]; });
/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ElectronServiceRef", function() { return __WEBPACK_IMPORTED_MODULE_2__src_electronServiceRef__["a"]; });
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var NgxElectronModule = (function () {
function NgxElectronModule() {
}
return NgxElectronModule;
}());
NgxElectronModule = __decorate([
__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__angular_core__["NgModule"])({
declarations: [],
exports: [],
providers: [{ provide: __WEBPACK_IMPORTED_MODULE_1__src_electronService__["a" /* ElectronService */], useClass: __WEBPACK_IMPORTED_MODULE_2__src_electronServiceRef__["a" /* ElectronServiceRef */] }]
})
], NgxElectronModule);
/***/ })
/******/ ]);
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCAwYTk2N2E1ZjEwNjZiNGFlOGE1NyIsIndlYnBhY2s6Ly8vLi9zcmMvZWxlY3Ryb25TZXJ2aWNlLnRzIiwid2VicGFjazovLy8uL3NyYy9lbGVjdHJvblNlcnZpY2VSZWYudHMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGFuZ3VsYXIvY29yZVwiIiwid2VicGFjazovLy8uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxPO0FDVkE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLG1EQUEyQyxjQUFjOztBQUV6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1DQUEyQiwwQkFBMEIsRUFBRTtBQUN2RCx5Q0FBaUMsZUFBZTtBQUNoRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw4REFBc0QsK0RBQStEOztBQUVySDtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7O0FDM0RBO0FBQUE7SUFBQTtJQTZEQSxDQUFDO0lBMURHLHNCQUFZLHFDQUFRO2FBQXBCO1lBQ0ksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDbEIsRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO29CQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxP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TDdCLDhFQUFRLENBQUM7UUFDTixZQUFZLEVBQUUsRUFBRTtRQUNoQixPQUFPLEVBQUUsRUFBRTtRQUNYLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLDZFQUFlLEVBQUUsUUFBUSxFQUFFLG1GQUFrQixFQUFFLENBQUM7S0FDMUUsQ0FBQztHQUNXLGlCQUFpQixDQUU3QjtBQUY2QiIsImZpbGUiOiJjb3JlLnVtZC5qcyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcIkBhbmd1bGFyL2NvcmVcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wiQGFuZ3VsYXIvY29yZVwiXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJuZ3gtZWxlY3Ryb25cIl0gPSBmYWN0b3J5KHJlcXVpcmUoXCJAYW5ndWxhci9jb3JlXCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJuZ3gtZWxlY3Ryb25cIl0gPSBmYWN0b3J5KHJvb3RbXCJAYW5ndWxhci9jb3JlXCJdKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMl9fKSB7XG5yZXR1cm4gXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhhcm1vbnkgaW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbiBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbiBcdFx0XHRcdGdldDogZ2V0dGVyXG4gXHRcdFx0fSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiL1wiO1xuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDMpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svYm9vdHN0cmFwIDBhOTY3YTVmMTA2NmI0YWU4YTU3IiwiaW1wb3J0ICogYXMgRWxlY3Ryb24gZnJvbSAnZWxlY3Ryb24nO1xyXG5pbXBvcnQge0VsZWN0cm9uV2luZG93fSBmcm9tICcuLi90eXBpbmdzL2luZGV4JztcclxuXHJcbmRlY2xhcmUgbGV0IHdpbmRvdzogRWxlY3Ryb25XaW5kb3c7XHJcblxyXG5leHBvcnQgY2xhc3MgRWxlY3Ryb25TZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgX2VsZWN0cm9uOiBFbGVjdHJvbi5SZW5kZXJlckludGVyZmFjZTtcclxuXHJcbiAgICBwcml2YXRlIGdldCBlbGVjdHJvbigpOiBFbGVjdHJvbi5SZW5kZXJlckludGVyZmFjZSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9lbGVjdHJvbikge1xyXG4gICAgICAgICAgICBpZiAod2luZG93ICYmIHdpbmRvdy5yZXF1aXJlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9lbGVjdHJvbiA9IHdpbmRvdy5yZXF1aXJlKCdlbGVjdHJvbicpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZWN0cm9uO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fZWxlY3Ryb247XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBkZXRlcm1pbmVzIGlmIFNQQSBpcyBydW5uaW5nIGluIEVsZWN0cm9uXHJcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBpc0VsZWN0cm9uQXBwKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhIXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9FbGVjdHJvbi8pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZGVza3RvcENhcHR1cmVyKCk6IEVsZWN0cm9uLkRlc2t0b3BDYXB0dXJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlY3Ryb24gPyB0aGlzLmVsZWN0cm9uLmRlc2t0b3BDYXB0dXJlciA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBpcGNSZW5kZXJlcigpOiBFbGVjdHJvbi5JcGNSZW5kZXJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlY3Ryb24gPyB0aGlzLmVsZWN0cm9uLmlwY1JlbmRlcmVyIDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHJlbW90ZSgpOiBFbGVjdHJvbi5SZW1vdGUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVsZWN0cm9uID8gdGhpcy5lbGVjdHJvbi5yZW1vdGUgOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgd2ViRnJhbWUoKTogRWxlY3Ryb24uV2ViRnJhbWUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVsZWN0cm9uID8gdGhpcy5lbGVjdHJvbi53ZWJGcmFtZSA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBjbGlwYm9hcmQoKTogRWxlY3Ryb24uQ2xpcGJvYXJkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbGVjdHJvbiA/IHRoaXMuZWxlY3Ryb24uY2xpcGJvYXJkIDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGNyYXNoUmVwb3J0ZXIoKTogRWxlY3Ryb24uQ3Jhc2hSZXBvcnRlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlY3Ryb24gPyB0aGlzLmVsZWN0cm9uLmNyYXNoUmVwb3J0ZXIgOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgcHJvY2VzcygpOiBOb2RlSlMuUHJvY2VzcyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVtb3RlID8gdGhpcy5yZW1vdGUucHJvY2VzcyA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBuYXRpdmVJbWFnZSgpOiB0eXBlb2YgRWxlY3Ryb24ubmF0aXZlSW1hZ2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVsZWN0cm9uID8gdGhpcy5lbGVjdHJvbi5uYXRpdmVJbWFnZSA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBzY3JlZW4oKTogRWxlY3Ryb24uU2NyZWVuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbGVjdHJvbiA/IHRoaXMuZWxlY3Ryb24uc2NyZWVuIDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHNoZWxsKCk6IEVsZWN0cm9uLlNoZWxsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbGVjdHJvbiA/IHRoaXMuZWxlY3Ryb24uc2hlbGwgOiBudWxsO1xyXG4gICAgfVxyXG59XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vdHNsaW50LWxvYWRlcj8/cmVmLS0wIS4vc3JjL2VsZWN0cm9uU2VydmljZS50cyIsImltcG9ydCB7RWxlY3Ryb25TZXJ2aWNlfSBmcm9tICcuL2VsZWN0cm9uU2VydmljZSc7XHJcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBFbGVjdHJvblNlcnZpY2VSZWYgZXh0ZW5kcyBFbGVjdHJvblNlcnZpY2Uge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcbn1cclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi90c2xpbnQtbG9hZGVyPz9yZWYtLTAhLi9zcmMvZWxlY3Ryb25TZXJ2aWNlUmVmLnRzIiwibW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFXzJfXztcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCBcIkBhbmd1bGFyL2NvcmVcIlxuLy8gbW9kdWxlIGlkID0gMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJpbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtFbGVjdHJvblNlcnZpY2V9IGZyb20gJy4vc3JjL2VsZWN0cm9uU2VydmljZSc7XHJcbmltcG9ydCB7RWxlY3Ryb25TZXJ2aWNlUmVmfSBmcm9tICcuL3NyYy9lbGVjdHJvblNlcnZpY2VSZWYnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvZWxlY3Ryb25TZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvZWxlY3Ryb25TZXJ2aWNlUmVmJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBkZWNsYXJhdGlvbnM6IFtdLFxyXG4gICAgZXhwb3J0czogW10sXHJcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEVsZWN0cm9uU2VydmljZSwgdXNlQ2xhc3M6IEVsZWN0cm9uU2VydmljZVJlZiB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4RWxlY3Ryb25Nb2R1bGUge1xyXG5cclxufVxyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L3RzbGludC1sb2FkZXI/P3JlZi0tMCEuL2luZGV4LnRzIl0sInNvdXJjZVJvb3QiOiIifQ==