UNPKG

ngx-amap

Version:

[![npm](https://img.shields.io/npm/v/ngx-amap.svg)][npm-badge-url] [![npm](https://img.shields.io/npm/dm/ngx-amap.svg)][npm-badge-url] [![Build Status](https://travis-ci.org/xieziyu/ngx-amap.svg?branch=master)][ci-url]

270 lines 20.2 kB
/** * @fileoverview added by tsickle * Generated from: directives/amap-bezier-curve/amap-bezier-curve.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, Input, Output, EventEmitter, NgZone, } from '@angular/core'; import { zip } from 'rxjs'; import { PathOverlayOptions, AMapPathOverlay } from '../../base/amap-path-overlay'; import { AmapBezierCurveService } from './amap-bezier-curve.service'; import { LoggerService } from '../../shared/logger/logger.service'; import { EventBinderService } from '../../shared/event-binder.service'; import { getOptions, ChangeFilter } from '../../utils'; /** @type {?} */ const TAG = 'amap-bezier-curve'; /** @type {?} */ const BezierCurveOptions = [ ...PathOverlayOptions, 'isOutline', 'outlineColor', 'dirColor', 'borderWeight', 'showDir', 'path', ]; export class AmapBezierCurveDirective extends AMapPathOverlay { /** * @param {?} os * @param {?} binder * @param {?} logger * @param {?} ngZone */ constructor(os, binder, logger, ngZone) { super(os, binder); this.os = os; this.binder = binder; this.logger = logger; this.ngZone = ngZone; /** * 额外: 是否隐藏 */ this.hidden = false; /** * 额外: 是否开启曲线编辑器 */ this.editor = false; /** * 额外: 是否开启折线编辑器 */ this.polyEditor = false; // directive events: this.naReady = new EventEmitter(); this.inited = false; /** @type {?} */ const editor = this.os.getEditor(); /** @type {?} */ const polyEditor = this.os.getPolyEditor(); this.naEditorAddNode = this.binder.bindEvent(editor, 'addnode'); this.naEditorRemoveNode = this.binder.bindEvent(editor, 'removenode'); this.naEditorAdjust = this.binder.bindEvent(editor, 'adjust'); this.naEditorEnd = this.binder.bindEvent(editor, 'end'); this.naPolyEditorAddNode = this.binder.bindEvent(polyEditor, 'addnode'); this.naPolyEditorRemoveNode = this.binder.bindEvent(polyEditor, 'removenode'); this.naPolyEditorAdjust = this.binder.bindEvent(polyEditor, 'adjust'); this.naPolyEditorEnd = this.binder.bindEvent(polyEditor, 'end'); } /** * @return {?} */ ngOnDestroy() { this.os.destroy(); } /** * @param {?} changes * @return {?} */ ngOnChanges(changes) { /** @type {?} */ const filter = ChangeFilter.of(changes); /** @type {?} */ const bezierCurve = this.get(); if (!this.inited) { this.logger.d(TAG, 'initializing ...'); /** @type {?} */ const options = this.options || getOptions(this, BezierCurveOptions); this.logger.d(TAG, 'options:', options); this.os.create(options).subscribe((/** * @param {?} m * @return {?} */ m => { this.ngZone.run((/** * @return {?} */ () => this.naReady.emit(m))); this.logger.d(TAG, 'bezierCurve is ready.'); })); this.inited = true; } else { zip(filter.has('path'), bezierCurve).subscribe((/** * @param {?} __0 * @return {?} */ ([v, p]) => p.setPath(v))); zip(filter.has('options'), bezierCurve).subscribe((/** * @param {?} __0 * @return {?} */ ([v, p]) => p.setOptions(v || {}))); zip(filter.has('extData'), bezierCurve).subscribe((/** * @param {?} __0 * @return {?} */ ([v, p]) => p.setExtData(v))); } zip(filter.has('hidden'), bezierCurve).subscribe((/** * @param {?} __0 * @return {?} */ ([v, p]) => v ? p.hide() : p.show())); filter.has('editor').subscribe((/** * @param {?} v * @return {?} */ v => this.os.toggleEditor(v))); filter.has('polyEditor').subscribe((/** * @param {?} v * @return {?} */ v => this.os.togglePolyEditor(v))); } /** * 获取已创建的 AMap.BezierCurve 对象 * @return {?} */ get() { return this.os.get(); } } AmapBezierCurveDirective.decorators = [ { type: Directive, args: [{ selector: 'amap-bezier-curve', exportAs: 'bezier-curve', providers: [AmapBezierCurveService], },] } ]; /** @nocollapse */ AmapBezierCurveDirective.ctorParameters = () => [ { type: AmapBezierCurveService }, { type: EventBinderService }, { type: LoggerService }, { type: NgZone } ]; AmapBezierCurveDirective.propDecorators = { isOutline: [{ type: Input }], outlineColor: [{ type: Input }], dirColor: [{ type: Input }], borderWeight: [{ type: Input }], showDir: [{ type: Input }], path: [{ type: Input }], hidden: [{ type: Input }], editor: [{ type: Input }], polyEditor: [{ type: Input }], options: [{ type: Input }], naReady: [{ type: Output }], naEditorAddNode: [{ type: Output }], naEditorRemoveNode: [{ type: Output }], naEditorAdjust: [{ type: Output }], naEditorEnd: [{ type: Output }], naPolyEditorAddNode: [{ type: Output }], naPolyEditorRemoveNode: [{ type: Output }], naPolyEditorAdjust: [{ type: Output }], naPolyEditorEnd: [{ type: Output }] }; if (false) { /** * 线条是否带描边 * @type {?} */ AmapBezierCurveDirective.prototype.isOutline; /** * 线条描边颜色 * @type {?} */ AmapBezierCurveDirective.prototype.outlineColor; /** * 方向箭头颜色 * @type {?} */ AmapBezierCurveDirective.prototype.dirColor; /** * 描边的宽度 * @type {?} */ AmapBezierCurveDirective.prototype.borderWeight; /** * 是否延路径显示方向箭头 * @type {?} */ AmapBezierCurveDirective.prototype.showDir; /** * 贝瑟尔曲线的路径 * @type {?} */ AmapBezierCurveDirective.prototype.path; /** * 额外: 是否隐藏 * @type {?} */ AmapBezierCurveDirective.prototype.hidden; /** * 额外: 是否开启曲线编辑器 * @type {?} */ AmapBezierCurveDirective.prototype.editor; /** * 额外: 是否开启折线编辑器 * @type {?} */ AmapBezierCurveDirective.prototype.polyEditor; /** * 额外: 会覆盖其他属性的配置方式 * @type {?} */ AmapBezierCurveDirective.prototype.options; /** @type {?} */ AmapBezierCurveDirective.prototype.naReady; /** @type {?} */ AmapBezierCurveDirective.prototype.naEditorAddNode; /** @type {?} */ AmapBezierCurveDirective.prototype.naEditorRemoveNode; /** @type {?} */ AmapBezierCurveDirective.prototype.naEditorAdjust; /** @type {?} */ AmapBezierCurveDirective.prototype.naEditorEnd; /** @type {?} */ AmapBezierCurveDirective.prototype.naPolyEditorAddNode; /** @type {?} */ AmapBezierCurveDirective.prototype.naPolyEditorRemoveNode; /** @type {?} */ AmapBezierCurveDirective.prototype.naPolyEditorAdjust; /** @type {?} */ AmapBezierCurveDirective.prototype.naPolyEditorEnd; /** * @type {?} * @private */ AmapBezierCurveDirective.prototype.inited; /** * @type {?} * @protected */ AmapBezierCurveDirective.prototype.os; /** * @type {?} * @protected */ AmapBezierCurveDirective.prototype.binder; /** * @type {?} * @private */ AmapBezierCurveDirective.prototype.logger; /** * @type {?} * @private */ AmapBezierCurveDirective.prototype.ngZone; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hcC1iZXppZXItY3VydmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWFtYXAvIiwic291cmNlcyI6WyJkaXJlY3RpdmVzL2FtYXAtYmV6aWVyLWN1cnZlL2FtYXAtYmV6aWVyLWN1cnZlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUVMLE1BQU0sRUFDTixZQUFZLEVBR1osTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7TUFFakQsR0FBRyxHQUFHLG1CQUFtQjs7TUFDekIsa0JBQWtCLEdBQUc7SUFDekIsR0FBRyxrQkFBa0I7SUFDckIsV0FBVztJQUNYLGNBQWM7SUFDZCxVQUFVO0lBQ1YsY0FBYztJQUNkLFNBQVM7SUFDVCxNQUFNO0NBQ1A7QUFPRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZUFBaUM7Ozs7Ozs7SUEyRDdFLFlBQ1ksRUFBMEIsRUFDMUIsTUFBMEIsRUFDNUIsTUFBcUIsRUFDckIsTUFBYztRQUV0QixLQUFLLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBTFIsT0FBRSxHQUFGLEVBQUUsQ0FBd0I7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDNUIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixXQUFNLEdBQU4s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WUEzSEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLFFBQVEsRUFBRSxjQUFjO2dCQUN4QixTQUFTLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQzthQUNwQzs7OztZQXBCUSxzQkFBc0I7WUFFdEIsa0JBQWtCO1lBRGxCLGFBQWE7WUFMcEIsTUFBTTs7O3dCQStCTCxLQUFLOzJCQUlMLEtBQUs7dUJBSUwsS0FBSzsyQkFJTCxLQUFLO3NCQUlMLEtBQUs7bUJBSUwsS0FBSztxQkFJTCxLQUFLO3FCQUlMLEtBQUs7eUJBSUwsS0FBSztzQkFJTCxLQUFLO3NCQUdMLE1BQU07OEJBR04sTUFBTTtpQ0FDTixNQUFNOzZCQUNOLE1BQU07MEJBQ04sTUFBTTtrQ0FDTixNQUFNO3FDQUNOLE1BQU07aUNBQ04sTUFBTTs4QkFDTixNQUFNOzs7Ozs7O0lBakRQLDZDQUE0Qjs7Ozs7SUFJNUIsZ0RBQThCOzs7OztJQUk5Qiw0Q0FBMEI7Ozs7O0lBSTFCLGdEQUE4Qjs7Ozs7SUFJOUIsMkNBQTBCOzs7OztJQUkxQix3Q0FBc0U7Ozs7O0lBSXRFLDBDQUF3Qjs7Ozs7SUFJeEIsMENBQXdCOzs7OztJQUl4Qiw4Q0FBNEI7Ozs7O0lBSTVCLDJDQUEyQzs7SUFHM0MsMkNBQXVDOztJQUd2QyxtREFBNkM7O0lBQzdDLHNEQUFnRDs7SUFDaEQsa0RBQTRDOztJQUM1QywrQ0FBeUM7O0lBQ3pDLHVEQUFpRDs7SUFDakQsMERBQW9EOztJQUNwRCxzREFBZ0Q7O0lBQ2hELG1EQUE2Qzs7Ozs7SUFFN0MsMENBQXVCOzs7OztJQUdyQixzQ0FBb0M7Ozs7O0lBQ3BDLDBDQUFvQzs7Ozs7SUFDcEMsMENBQTZCOzs7OztJQUM3QiwwQ0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkNoYW5nZXMsXG4gIE5nWm9uZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBhdGhPdmVybGF5T3B0aW9ucywgQU1hcFBhdGhPdmVybGF5IH0gZnJvbSAnLi4vLi4vYmFzZS9hbWFwLXBhdGgtb3ZlcmxheSc7XG5pbXBvcnQgeyBBbWFwQmV6aWVyQ3VydmVTZXJ2aWNlIH0gZnJvbSAnLi9hbWFwLWJlemllci1jdXJ2ZS5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IEV2ZW50QmluZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9ldmVudC1iaW5kZXIuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRPcHRpb25zLCBDaGFuZ2VGaWx0ZXIgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmNvbnN0IFRBRyA9ICdhbWFwLWJlemllci1jdXJ2ZSc7XG5jb25zdCBCZXppZXJDdXJ2ZU9wdGlvbnMgPSBbXG4gIC4uLlBhdGhPdmVybGF5T3B0aW9ucyxcbiAgJ2lzT3V0bGluZScsXG4gICdvdXRsaW5lQ29sb3InLFxuICAnZGlyQ29sb3InLFxuICAnYm9yZGVyV2VpZ2h0JyxcbiAgJ3Nob3dEaXInLFxuICAncGF0aCcsXG5dO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdhbWFwLWJlemllci1jdXJ2ZScsXG4gIGV4cG9ydEFzOiAnYmV6aWVyLWN1cnZlJyxcbiAgcHJvdmlkZXJzOiBbQW1hcEJlemllckN1cnZlU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFtYXBCZXppZXJDdXJ2ZURpcmVjdGl2ZSBleHRlbmRzIEFNYXBQYXRoT3ZlcmxheTxBTWFwLkJlemllckN1cnZlPlxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgLy8gLS0tLSBPcHRpb25zIC0tLS1cbiAgLyoqXG4gICAqIOe6v+adoeaYr+WQpuW4puaPj+i+uVxuICAgKi9cbiAgQElucHV0KCkgaXNPdXRsaW5lOiBib29sZWFuO1xuICAvKipcbiAgICog57q/5p2h5o+P6L656aKc6ImyXG4gICAqL1xuICBASW5wdXQoKSBvdXRsaW5lQ29sb3I6IHN0cmluZztcbiAgLyoqXG4gICAqIOaWueWQkeeureWktOminOiJslxuICAgKi9cbiAgQElucHV0KCkgZGlyQ29sb3I6IHN0cmluZztcbiAgLyoqXG4gICAqIOaPj+i+ueeahOWuveW6plxuICAgKi9cbiAgQElucHV0KCkgYm9yZGVyV2VpZ2h0OiBudW1iZXI7XG4gIC8qKlxuICAgKiDmmK/lkKblu7bot6/lvoTmmL7npLrmlrnlkJHnrq3lpLRcbiAgICovXG4gIEBJbnB1dCgpIHNob3dEaXI6IGJvb2xlYW47XG4gIC8qKlxuICAgKiDotJ3nkZ/lsJTmm7Lnur/nmoTot6/lvoRcbiAgICovXG4gIEBJbnB1dCgpIHBhdGg6IEFycmF5PEFycmF5PG51bWJlciB8IHN0cmluZyB8IEFycmF5PHN0cmluZyB8IG51bWJlcj4+PjtcbiAgLyoqXG4gICAqIOmineWkljog5piv5ZCm6ZqQ6JePXG4gICAqL1xuICBASW5wdXQoKSBoaWRkZW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIOmineWkljog5piv5ZCm5byA5ZCv5puy57q/57yW6L6R5ZmoXG4gICAqL1xuICBASW5wdXQoKSBlZGl0b3IgPSBmYWxzZTtcbiAgLyoqXG4gICAqIOmineWkljog5piv5ZCm5byA5ZCv5oqY57q/57yW6L6R5ZmoXG4gICAqL1xuICBASW5wdXQoKSBwb2x5RWRpdG9yID0gZmFsc2U7XG4gIC8qKlxuICAgKiDpop3lpJY6IOS8muimhuebluWFtuS7luWxnuaAp+eahOmFjee9ruaWueW8j1xuICAgKi9cbiAgQElucHV0KCkgb3B0aW9uczogQU1hcC5CZXppZXJDdXJ2ZS5PcHRpb25zO1xuXG4gIC8vIGRpcmVjdGl2ZSBldmVudHM6XG4gIEBPdXRwdXQoKSBuYVJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8vIGVkaXRvciBldmVudHM6XG4gIEBPdXRwdXQoKSBuYUVkaXRvckFkZE5vZGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCkgbmFFZGl0b3JSZW1vdmVOb2RlOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgpIG5hRWRpdG9yQWRqdXN0OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgpIG5hRWRpdG9yRW5kOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgpIG5hUG9seUVkaXRvckFkZE5vZGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCkgbmFQb2x5RWRpdG9yUmVtb3ZlTm9kZTogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoKSBuYVBvbHlFZGl0b3JBZGp1c3Q6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCkgbmFQb2x5RWRpdG9yRW5kOiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICBwcml2YXRlIGluaXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBvczogQW1hcEJlemllckN1cnZlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYmluZGVyOiBFdmVudEJpbmRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgKSB7XG4gICAgc3VwZXIob3MsIGJpbmRlcik7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5vcy5nZXRFZGl0b3IoKTtcbiAgICBjb25zdCBwb2x5RWRpdG9yID0gdGhpcy5vcy5nZXRQb2x5RWRpdG9yKCk7XG4gICAgdGhpcy5uYUVkaXRvckFkZE5vZGUgPSB0aGlzLmJpbmRlci5iaW5kRXZlbnQoZWRpdG9yLCAnYWRkbm9kZScpO1xuICAgIHRoaXMubmFFZGl0b3JSZW1vdmVOb2RlID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KGVkaXRvciwgJ3JlbW92ZW5vZGUnKTtcbiAgICB0aGlzLm5hRWRpdG9yQWRqdXN0ID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KGVkaXRvciwgJ2FkanVzdCcpO1xuICAgIHRoaXMubmFFZGl0b3JFbmQgPSB0aGlzLmJpbmRlci5iaW5kRXZlbnQoZWRpdG9yLCAnZW5kJyk7XG4gICAgdGhpcy5uYVBvbHlFZGl0b3JBZGROb2RlID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KHBvbHlFZGl0b3IsICdhZGRub2RlJyk7XG4gICAgdGhpcy5uYVBvbHlFZGl0b3JSZW1vdmVOb2RlID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KHBvbHlFZGl0b3IsICdyZW1vdmVub2RlJyk7XG4gICAgdGhpcy5uYVBvbHlFZGl0b3JBZGp1c3QgPSB0aGlzLmJpbmRlci5iaW5kRXZlbnQocG9seUVkaXRvciwgJ2FkanVzdCcpO1xuICAgIHRoaXMubmFQb2x5RWRpdG9yRW5kID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KHBvbHlFZGl0b3IsICdlbmQnKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMub3MuZGVzdHJveSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGNvbnN0IGZpbHRlciA9IENoYW5nZUZpbHRlci5vZihjaGFuZ2VzKTtcbiAgICBjb25zdCBiZXppZXJDdXJ2ZSA9IHRoaXMuZ2V0KCk7XG4gICAgaWYgKCF0aGlzLmluaXRlZCkge1xuICAgICAgdGhpcy5sb2dnZXIuZChUQUcsICdpbml0aWFsaXppbmcgLi4uJyk7XG4gICAgICBjb25zdCBvcHRpb25zID1cbiAgICAgICAgdGhpcy5vcHRpb25zIHx8IGdldE9wdGlvbnM8QU1hcC5CZXppZXJDdXJ2ZS5PcHRpb25zPih0aGlzLCBCZXppZXJDdXJ2ZU9wdGlvbnMpO1xuICAgICAgdGhpcy5sb2dnZXIuZChUQUcsICdvcHRpb25zOicsIG9wdGlvbnMpO1xuICAgICAgdGhpcy5vcy5jcmVhdGUob3B0aW9ucykuc3Vic2NyaWJlKG0gPT4ge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5uYVJlYWR5LmVtaXQobSkpO1xuICAgICAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ2JlemllckN1cnZlIGlzIHJlYWR5LicpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmluaXRlZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHppcChcbiAgICAgICAgZmlsdGVyLmhhczxBcnJheTxBcnJheTxudW1iZXIgfCBzdHJpbmcgfCBBcnJheTxzdHJpbmcgfCBudW1iZXI+Pj4+KCdwYXRoJyksXG4gICAgICAgIGJlemllckN1cnZlLFxuICAgICAgKS5zdWJzY3JpYmUoKFt2LCBwXSkgPT4gcC5zZXRQYXRoKHYpKTtcbiAgICAgIHppcChmaWx0ZXIuaGFzPEFNYXAuQmV6aWVyQ3VydmUuT3B0aW9ucz4oJ29wdGlvbnMnKSwgYmV6aWVyQ3VydmUpLnN1YnNjcmliZSgoW3YsIHBdKSA9PlxuICAgICAgICBwLnNldE9wdGlvbnModiB8fCB7fSksXG4gICAgICApO1xuICAgICAgemlwKGZpbHRlci5oYXM8YW55PignZXh0RGF0YScpLCBiZXppZXJDdXJ2ZSkuc3Vic2NyaWJlKChbdiwgcF0pID0+IHAuc2V0RXh0RGF0YSh2KSk7XG4gICAgfVxuXG4gICAgemlwKGZpbHRlci5oYXM8Ym9vbGVhbj4oJ2hpZGRlbicpLCBiZXppZXJDdXJ2ZSkuc3Vic2NyaWJlKChbdiwgcF0pID0+XG4gICAgICB2ID8gcC5oaWRlKCkgOiBwLnNob3coKSxcbiAgICApO1xuICAgIGZpbHRlci5oYXM8Ym9vbGVhbj4oJ2VkaXRvcicpLnN1YnNjcmliZSh2ID0+IHRoaXMub3MudG9nZ2xlRWRpdG9yKHYpKTtcbiAgICBmaWx0ZXIuaGFzPGJvb2xlYW4+KCdwb2x5RWRpdG9yJykuc3Vic2NyaWJlKHYgPT4gdGhpcy5vcy50b2dnbGVQb2x5RWRpdG9yKHYpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5blt7LliJvlu7rnmoQgQU1hcC5CZXppZXJDdXJ2ZSDlr7nosaFcbiAgICovXG4gIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcy5nZXQoKTtcbiAgfVxufVxuIl19