UNPKG

@ngez/core

Version:

A collection of minimalistic, easy-to-use and fully customizable Angular components, directives and services

203 lines 20.9 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, Input, ViewEncapsulation, ViewChild, ElementRef, ContentChild, Output, EventEmitter, HostBinding, PLATFORM_ID, Inject } from "@angular/core"; import { PrettifyService } from "./prettify.service"; import { CodeService } from "./code.service"; import { map, tap } from "rxjs/operators"; import { DomSanitizer } from "@angular/platform-browser"; import { NgEzCodeLoadingComponent } from "./code-loading.component"; import { NgEzCodeLoadingErrorComponent } from "./code-loading-error.component"; import { of } from "rxjs"; import { faClone } from '@fortawesome/free-regular-svg-icons'; import { isPlatformBrowser } from "@angular/common"; var NgEzCodePrettifyComponent = /** @class */ (function () { function NgEzCodePrettifyComponent(platformId, sanitizer, prettify, service) { this.platformId = platformId; this.sanitizer = sanitizer; this.prettify = prettify; this.service = service; this.reload = new EventEmitter(); this.faClone = faClone; this._loading = false; this._error = false; } Object.defineProperty(NgEzCodePrettifyComponent.prototype, "classes", { get: /** * @return {?} */ function () { return this.config && this.config.theme ? this.config.theme : 'dark'; }, enumerable: true, configurable: true }); /** * @return {?} */ NgEzCodePrettifyComponent.prototype.ngOnChanges = /** * @return {?} */ function () { this.update(); }; /** * @return {?} */ NgEzCodePrettifyComponent.prototype.ngOnInit = /** * @return {?} */ function () { this.update(); }; /** * @return {?} */ NgEzCodePrettifyComponent.prototype.ngAfterContentInit = /** * @return {?} */ function () { var _this = this; if (!this.codeLoadingErrorComponent || !this.codeLoadingErrorComponent.reloadDirective) return; this.subscription = this.codeLoadingErrorComponent.reloadDirective.reload.subscribe(function () { _this.reload.emit(); _this.update(); }); }; /** * @return {?} */ NgEzCodePrettifyComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { if (this.subscription) this.subscription.unsubscribe(); }; /** * @private * @return {?} */ NgEzCodePrettifyComponent.prototype.update = /** * @private * @return {?} */ function () { var _this = this; if (!isPlatformBrowser(this.platformId) || !this.config || !(this.config.code || this.config.path)) return; this._loading = true; this._error = false; /** @type {?} */ var code$ = this.config.code ? of(this.config.code) : this.service.get(this.config.path); /** @type {?} */ var prettifiedCode$ = code$.pipe(tap(function (code) { return _this._code = code; }), map(function (code) { return _this.prettify.formatCode(code, _this.config.language, _this.config.linenums); }), map(function (code) { return _this.sanitizer.bypassSecurityTrustHtml(code); }), tap(function () { return _this._loading = false; }, function () { _this._loading = false; _this._error = true; })); this.prettifiedCode$ = prettifiedCode$; }; Object.defineProperty(NgEzCodePrettifyComponent.prototype, "isLoading", { get: /** * @return {?} */ function () { return this.loading || this._loading; }, enumerable: true, configurable: true }); Object.defineProperty(NgEzCodePrettifyComponent.prototype, "hasError", { get: /** * @return {?} */ function () { return this.error || this._error; }, enumerable: true, configurable: true }); NgEzCodePrettifyComponent.decorators = [ { type: Component, args: [{ selector: 'ngez-code-prettify', template: "<div *ngIf=\"config && config.header\" class=\"ngez-code-prettify-header\">\r\n {{config.header}}\r\n</div>\r\n<div class=\"ngez-code-prettify-content-container\" style=\"position: relative\">\r\n <div *ngIf=\"config && config.canCopy && !isLoading && !hasError\" class=\"ngez-copy-container\">\r\n <button [ngezClipboard]=\"_code\" class=\"ngez-copy-button\">\r\n <fa-icon size=\"2x\" [icon]=\"faClone\"></fa-icon>\r\n </button>\r\n </div>\r\n <div [style.max-height.px]=\"config ? config.maxHeight : null\" class=\"ngez-code-prettify-content\">\r\n <ng-container *ngIf=\"codeLoadingComponent && isLoading\">\r\n <ng-container *ngTemplateOutlet=\"codeLoadingComponent.template\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"codeLoadingErrorComponent && hasError\">\r\n <ng-container *ngTemplateOutlet=\"codeLoadingErrorComponent.template\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"(prettifiedCode$ | async) as code\">\r\n <pre #pre class=\"ngez-code-prettify\" [innerHTML]=\"code\"></pre>\r\n </ng-container>\r\n </div>\r\n</div>", encapsulation: ViewEncapsulation.None, styles: ["ngez-code-prettify{display:block}.ngez-code-prettify{margin-top:0;margin-bottom:0}.ngez-code-prettify-content-container:hover .ngez-copy-button{display:inline-block}.ngez-code-prettify-content{overflow:auto;padding:12px}.ngez-copy-container{z-index:2;position:absolute;top:5px;right:16px}.ngez-copy-container .ngez-copy-button{outline:0;display:none;border:none;background-color:transparent;margin:0;text-decoration:none;cursor:pointer;text-align:center;transition:background 250ms ease-in-out,transform 150ms,-webkit-transform 150ms;-webkit-appearance:none;-moz-appearance:none}ol.linenums{margin-top:0;margin-bottom:0;color:#aeaeae}ol.linenums li.L0,ol.linenums li.L1,ol.linenums li.L2,ol.linenums li.L3,ol.linenums li.L5,ol.linenums li.L6,ol.linenums li.L7,ol.linenums li.L8,ol.linenums li.L9{list-style-type:decimal;background-color:inherit}.ngez-code-prettify-header{padding:10px}.light .ngez-copy-button:hover{color:#000b29}.light .ngez-code-prettify-header{background-color:#000b29;color:#fff}.light .ngez-code-prettify-content{background-color:rgba(241,241,241,.2)}.light .ngez-copy-button{color:#1e1e1e}.light .ngez-code-prettify{background-color:rgba(241,241,241,.2)}.light .ngez-code-prettify .str{color:#183691}.light .ngez-code-prettify .kwd{color:#a71d5d}.light .ngez-code-prettify .com{color:#969896}.light .ngez-code-prettify .lit,.light .ngez-code-prettify .typ{color:#0086b3}.light .ngez-code-prettify .clo,.light .ngez-code-prettify .opn,.light .ngez-code-prettify .pun{color:#333}.light .ngez-code-prettify .tag{color:navy}.light .ngez-code-prettify .atn{color:#795da3}.light .ngez-code-prettify .atv{color:#183691}.light .ngez-code-prettify .dec{color:#333}.light .ngez-code-prettify .var{color:teal}.light .ngez-code-prettify .fun{color:#900}.dark .ngez-copy-button:hover{color:#d70026}.dark .ngez-code-prettify-header{background-color:#d70026;color:#fff}.dark .ngez-code-prettify-content{border:0;background-color:#1e1e1e}.dark .ngez-copy-button{color:#fff}.dark .ngez-code-prettify{background-color:#1e1e1e}.dark .ngez-code-prettify.nocode{color:#fff}.dark .ngez-code-prettify .str{color:#b5bd68}.dark .ngez-code-prettify .kwd{color:#b294bb}.dark .ngez-code-prettify .pln{color:#fff}.dark .ngez-code-prettify .com{color:#969896}.dark .ngez-code-prettify .typ{color:#81a2be}.dark .ngez-code-prettify .lit{color:#de935f}.dark .ngez-code-prettify .clo,.dark .ngez-code-prettify .opn,.dark .ngez-code-prettify .pun{color:#c5c8c6}.dark .ngez-code-prettify .tag{color:#c66}.dark .ngez-code-prettify .atn{color:#de935f}.dark .ngez-code-prettify .atv{color:#8abeb7}.dark .ngez-code-prettify .dec{color:#de935f}.dark .ngez-code-prettify .var{color:#c66}.dark .ngez-code-prettify .fun{color:#81a2be}"] }] } ]; /** @nocollapse */ NgEzCodePrettifyComponent.ctorParameters = function () { return [ { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }, { type: DomSanitizer }, { type: PrettifyService }, { type: CodeService } ]; }; NgEzCodePrettifyComponent.propDecorators = { config: [{ type: Input }], loading: [{ type: Input }], error: [{ type: Input }], reload: [{ type: Output }], pre: [{ type: ViewChild, args: ['pre',] }], codeLoadingComponent: [{ type: ContentChild, args: [NgEzCodeLoadingComponent,] }], codeLoadingErrorComponent: [{ type: ContentChild, args: [NgEzCodeLoadingErrorComponent,] }], classes: [{ type: HostBinding, args: ['class',] }] }; return NgEzCodePrettifyComponent; }()); export { NgEzCodePrettifyComponent }; if (false) { /** @type {?} */ NgEzCodePrettifyComponent.prototype.config; /** @type {?} */ NgEzCodePrettifyComponent.prototype.loading; /** @type {?} */ NgEzCodePrettifyComponent.prototype.error; /** @type {?} */ NgEzCodePrettifyComponent.prototype.reload; /** @type {?} */ NgEzCodePrettifyComponent.prototype.pre; /** @type {?} */ NgEzCodePrettifyComponent.prototype.codeLoadingComponent; /** @type {?} */ NgEzCodePrettifyComponent.prototype.codeLoadingErrorComponent; /** @type {?} */ NgEzCodePrettifyComponent.prototype.faClone; /** @type {?} */ NgEzCodePrettifyComponent.prototype._code; /** @type {?} */ NgEzCodePrettifyComponent.prototype._loading; /** @type {?} */ NgEzCodePrettifyComponent.prototype._error; /** @type {?} */ NgEzCodePrettifyComponent.prototype.prettifiedCode$; /** * @type {?} * @private */ NgEzCodePrettifyComponent.prototype.subscription; /** * @type {?} * @private */ NgEzCodePrettifyComponent.prototype.platformId; /** * @type {?} * @private */ NgEzCodePrettifyComponent.prototype.sanitizer; /** * @type {?} * @private */ NgEzCodePrettifyComponent.prototype.prettify; /** * @type {?} * @private */ NgEzCodePrettifyComponent.prototype.service; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1wcmV0dGlmeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmdlei9jb3JlLyIsInNvdXJjZXMiOlsiY29kZS1wcmV0dGlmeS9jb2RlLXByZXR0aWZ5LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxLQUFLLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUVaLE1BQU0sRUFDTixZQUFZLEVBRVosV0FBVyxFQUdYLFdBQVcsRUFDWCxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsR0FBRyxFQUFhLEdBQUcsRUFBUyxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRSxPQUFPLEVBQWMsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUdwRCxPQUFPLEVBQUUsT0FBTyxFQUFrQixNQUFNLHFDQUFxQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBEO0lBc0NJLG1DQUNpQyxVQUFrQixFQUN2QyxTQUF1QixFQUN2QixRQUF5QixFQUN6QixPQUFvQjtRQUhDLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDdkMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUN2QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBNUJ0QixXQUFNLEdBQUcsSUFBSSxZQUFZ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REFBUzs7OztRQUFiO1lBQ0ksT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDekMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSwrQ0FBUTs7OztRQUFaO1lBQ0ksT0FBTyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDckMsQ0FBQzs7O09BQUE7O2dCQWpHSixTQUFTLFNBQUM7b0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsMnFDQUE2QztvQkFFN0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7O2lCQUN4Qzs7OztnQkFrQ2dELE1BQU0sdUJBQTlDLE1BQU0sU0FBQyxXQUFXO2dCQWhEbEIsWUFBWTtnQkFIWixlQUFlO2dCQUNmLFdBQVc7Ozt5QkFtQmYsS0FBSzswQkFFTCxLQUFLO3dCQUVMLEtBQUs7eUJBRUwsTUFBTTtzQkFFTixTQUFTLFNBQUMsS0FBSzt1Q0FFZixZQUFZLFNBQUMsd0JBQXdCOzRDQUVyQyxZQUFZLFNBQUMsNkJBQTZCOzBCQUUxQyxXQUFXLFNBQUMsT0FBTzs7SUE0RXhCLGdDQUFDO0NBQUEsQUFsR0QsSUFrR0M7U0E1RlkseUJBQXlCOzs7SUFFbEMsMkNBQXdDOztJQUV4Qyw0Q0FBMEI7O0lBRTFCLDBDQUF3Qjs7SUFFeEIsMkNBQXNDOztJQUV0Qyx3Q0FBa0M7O0lBRWxDLHlEQUF1Rjs7SUFFdkYsOERBQXNHOztJQU10Ryw0Q0FBa0M7O0lBRWxDLDBDQUFjOztJQUVkLDZDQUFpQjs7SUFFakIsMkNBQWU7O0lBRWYsb0RBQXNDOzs7OztJQUV0QyxpREFBbUM7Ozs7O0lBRy9CLCtDQUErQzs7Ozs7SUFDL0MsOENBQStCOzs7OztJQUMvQiw2Q0FBaUM7Ozs7O0lBQ2pDLDRDQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFxyXG4gICAgQ29tcG9uZW50LCBcclxuICAgIElucHV0LCBcclxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLCBcclxuICAgIFZpZXdDaGlsZCwgXHJcbiAgICBFbGVtZW50UmVmLCBcclxuICAgIENvbnRlbnRDaGlsZCwgIFxyXG4gICAgQWZ0ZXJDb250ZW50SW5pdCwgXHJcbiAgICBPdXRwdXQsIFxyXG4gICAgRXZlbnRFbWl0dGVyLCBcclxuICAgIE9uRGVzdHJveSwgXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIE9uSW5pdCxcclxuICAgIFBMQVRGT1JNX0lELCBcclxuICAgIEluamVjdH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUHJldHRpZnlTZXJ2aWNlIH0gZnJvbSBcIi4vcHJldHRpZnkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDb2RlU2VydmljZSB9IGZyb20gXCIuL2NvZGUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFwLCBkZWxheSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcclxuaW1wb3J0IHsgTmdFekNvZGVMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSBcIi4vY29kZS1sb2FkaW5nLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBOZ0V6Q29kZUxvYWRpbmdFcnJvckNvbXBvbmVudCB9IGZyb20gXCIuL2NvZGUtbG9hZGluZy1lcnJvci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IE5nRXpDb2RlUHJldHRpZnlDb25maWcgfSBmcm9tIFwiLi9tb2RlbHNcIjtcclxuaW1wb3J0IHsgTmdFelJlbG9hZERpcmVjdGl2ZSB9IGZyb20gXCIuL3JlbG9hZC5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHsgZmFDbG9uZSwgSWNvbkRlZmluaXRpb24gfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1yZWd1bGFyLXN2Zy1pY29ucyc7XHJcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ25nZXotY29kZS1wcmV0dGlmeScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29kZS1wcmV0dGlmeS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9jb2RlLXByZXR0aWZ5LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ0V6Q29kZVByZXR0aWZ5Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gICAgQElucHV0KCkgY29uZmlnOiBOZ0V6Q29kZVByZXR0aWZ5Q29uZmlnO1xyXG5cclxuICAgIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XHJcblxyXG4gICAgQElucHV0KCkgZXJyb3I6IGJvb2xlYW47XHJcblxyXG4gICAgQE91dHB1dCgpIHJlbG9hZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdwcmUnKSBwcmU6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZChOZ0V6Q29kZUxvYWRpbmdDb21wb25lbnQpIGNvZGVMb2FkaW5nQ29tcG9uZW50OiBOZ0V6Q29kZUxvYWRpbmdDb21wb25lbnQ7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZChOZ0V6Q29kZUxvYWRpbmdFcnJvckNvbXBvbmVudCkgY29kZUxvYWRpbmdFcnJvckNvbXBvbmVudDogTmdFekNvZGVMb2FkaW5nRXJyb3JDb21wb25lbnQ7XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGdldCBjbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLnRoZW1lID8gdGhpcy5jb25maWcudGhlbWUgOiAnZGFyayc7XHJcbiAgICB9XHJcblxyXG4gICAgZmFDbG9uZTogSWNvbkRlZmluaXRpb24gPSBmYUNsb25lO1xyXG5cclxuICAgIF9jb2RlOiBzdHJpbmc7XHJcbiAgICBcclxuICAgIF9sb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgX2Vycm9yID0gZmFsc2U7XHJcblxyXG4gICAgcHJldHRpZmllZENvZGUkOiBPYnNlcnZhYmxlPFNhZmVIdG1sPjtcclxuXHJcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxyXG4gICAgICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBwcmV0dGlmeTogUHJldHRpZnlTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgc2VydmljZTogQ29kZVNlcnZpY2UpIHsgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvZGVMb2FkaW5nRXJyb3JDb21wb25lbnQgfHwgIXRoaXMuY29kZUxvYWRpbmdFcnJvckNvbXBvbmVudC5yZWxvYWREaXJlY3RpdmUpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY29kZUxvYWRpbmdFcnJvckNvbXBvbmVudC5yZWxvYWREaXJlY3RpdmUucmVsb2FkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVsb2FkLmVtaXQoKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGUoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICBpZih0aGlzLnN1YnNjcmlwdGlvbilcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZSgpIHtcclxuXHJcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpIHx8ICF0aGlzLmNvbmZpZyB8fCAhKHRoaXMuY29uZmlnLmNvZGUgfHwgdGhpcy5jb25maWcucGF0aCkpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5fbG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fZXJyb3IgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgY29uc3QgY29kZSQgPSB0aGlzLmNvbmZpZy5jb2RlXHJcbiAgICAgICAgICAgID8gb2YodGhpcy5jb25maWcuY29kZSlcclxuICAgICAgICAgICAgOiB0aGlzLnNlcnZpY2UuZ2V0KHRoaXMuY29uZmlnLnBhdGgpO1xyXG5cclxuICAgICAgICBjb25zdCBwcmV0dGlmaWVkQ29kZSQgPSBjb2RlJC5waXBlKFxyXG4gICAgICAgICAgICB0YXAoY29kZSA9PiB0aGlzLl9jb2RlID0gY29kZSksXHJcbiAgICAgICAgICAgIG1hcChjb2RlID0+IHRoaXMucHJldHRpZnkuZm9ybWF0Q29kZShjb2RlLCB0aGlzLmNvbmZpZy5sYW5ndWFnZSwgdGhpcy5jb25maWcubGluZW51bXMpKSxcclxuICAgICAgICAgICAgbWFwKGNvZGUgPT4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoY29kZSkpLFxyXG4gICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5fbG9hZGluZyA9IGZhbHNlLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnJvciA9IHRydWU7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5wcmV0dGlmaWVkQ29kZSQgPSBwcmV0dGlmaWVkQ29kZSQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGlzTG9hZGluZygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkaW5nIHx8IHRoaXMuX2xvYWRpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGhhc0Vycm9yKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yIHx8IHRoaXMuX2Vycm9yO1xyXG4gICAgfVxyXG59Il19