ngx-amap
Version:
[][npm-badge-url] [][npm-badge-url] [][ci-url]
269 lines • 18.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: directives/amap-polyline/amap-polyline.directive.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Directive, Input, Output, EventEmitter, NgZone, } from '@angular/core';
import { zip } from 'rxjs';
import { PathOverlayOptions, AMapPathOverlay } from '../../base/amap-path-overlay';
import { AmapPolylineService } from './amap-polyline.service';
import { LoggerService } from '../../shared/logger/logger.service';
import { EventBinderService } from '../../shared/event-binder.service';
import { getOptions, ChangeFilter } from '../../utils';
/** @type {?} */
var TAG = 'amap-polyline';
/** @type {?} */
var PolylineOptions = tslib_1.__spread(PathOverlayOptions, [
'isOutline',
'outlineColor',
'geodesic',
'dirColor',
'borderWeight',
'showDir',
'path',
]);
var AmapPolylineDirective = /** @class */ (function (_super) {
tslib_1.__extends(AmapPolylineDirective, _super);
function AmapPolylineDirective(os, binder, logger, ngZone) {
var _this = _super.call(this, os, binder) || this;
_this.os = os;
_this.binder = binder;
_this.logger = logger;
_this.ngZone = ngZone;
/**
* 额外: 是否隐藏
*/
_this.hidden = false;
/**
* 额外: 是否开启编辑器
*/
_this.editor = false;
// directive events:
_this.naReady = new EventEmitter();
_this.inited = false;
/** @type {?} */
var editor = _this.os.getEditor();
_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');
return _this;
}
/**
* @return {?}
*/
AmapPolylineDirective.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
this.os.destroy();
};
/**
* @param {?} changes
* @return {?}
*/
AmapPolylineDirective.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
var _this = this;
/** @type {?} */
var filter = ChangeFilter.of(changes);
/** @type {?} */
var polyline = this.get();
if (!this.inited) {
this.logger.d(TAG, 'initializing ...');
/** @type {?} */
var options = this.options || getOptions(this, PolylineOptions);
this.logger.d(TAG, 'options:', options);
this.os.create(options).subscribe((/**
* @param {?} m
* @return {?}
*/
function (m) {
_this.ngZone.run((/**
* @return {?}
*/
function () { return _this.naReady.emit(m); }));
_this.logger.d(TAG, 'polyline is ready.');
}));
this.inited = true;
}
else {
zip(filter.has('path'), polyline).subscribe((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = tslib_1.__read(_a, 2), v = _b[0], p = _b[1];
return p.setPath(v);
}));
zip(filter.has('options'), polyline).subscribe((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = tslib_1.__read(_a, 2), v = _b[0], p = _b[1];
return p.setOptions(v || {});
}));
zip(filter.has('extData'), polyline).subscribe((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = tslib_1.__read(_a, 2), v = _b[0], p = _b[1];
return p.setExtData(v);
}));
}
zip(filter.has('hidden'), polyline).subscribe((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = tslib_1.__read(_a, 2), v = _b[0], p = _b[1];
return (v ? p.hide() : p.show());
}));
filter.has('editor').subscribe((/**
* @param {?} v
* @return {?}
*/
function (v) { return _this.os.toggleEditor(v); }));
};
/**
* 获取已创建的 AMap.Polyline 对象
*/
/**
* 获取已创建的 AMap.Polyline 对象
* @return {?}
*/
AmapPolylineDirective.prototype.get = /**
* 获取已创建的 AMap.Polyline 对象
* @return {?}
*/
function () {
return this.os.get();
};
AmapPolylineDirective.decorators = [
{ type: Directive, args: [{
selector: 'amap-polyline',
exportAs: 'polyline',
providers: [AmapPolylineService],
},] }
];
/** @nocollapse */
AmapPolylineDirective.ctorParameters = function () { return [
{ type: AmapPolylineService },
{ type: EventBinderService },
{ type: LoggerService },
{ type: NgZone }
]; };
AmapPolylineDirective.propDecorators = {
isOutline: [{ type: Input }],
outlineColor: [{ type: Input }],
geodesic: [{ type: Input }],
dirColor: [{ type: Input }],
borderWeight: [{ type: Input }],
showDir: [{ type: Input }],
path: [{ type: Input }],
hidden: [{ type: Input }],
editor: [{ type: Input }],
options: [{ type: Input }],
naReady: [{ type: Output }],
naEditorAddNode: [{ type: Output }],
naEditorRemoveNode: [{ type: Output }],
naEditorAdjust: [{ type: Output }],
naEditorEnd: [{ type: Output }]
};
return AmapPolylineDirective;
}(AMapPathOverlay));
export { AmapPolylineDirective };
if (false) {
/**
* 线条是否带描边
* @type {?}
*/
AmapPolylineDirective.prototype.isOutline;
/**
* 线条描边颜色
* @type {?}
*/
AmapPolylineDirective.prototype.outlineColor;
/**
* 是否绘制成大地线
* @type {?}
*/
AmapPolylineDirective.prototype.geodesic;
/**
* 方向箭头颜色
* @type {?}
*/
AmapPolylineDirective.prototype.dirColor;
/**
* 描边的宽度
* @type {?}
*/
AmapPolylineDirective.prototype.borderWeight;
/**
* 是否延路径显示方向箭头
* @type {?}
*/
AmapPolylineDirective.prototype.showDir;
/**
* 折线的节点数组
* @type {?}
*/
AmapPolylineDirective.prototype.path;
/**
* 额外: 是否隐藏
* @type {?}
*/
AmapPolylineDirective.prototype.hidden;
/**
* 额外: 是否开启编辑器
* @type {?}
*/
AmapPolylineDirective.prototype.editor;
/**
* 额外: 会覆盖其他属性的配置方式
* @type {?}
*/
AmapPolylineDirective.prototype.options;
/** @type {?} */
AmapPolylineDirective.prototype.naReady;
/** @type {?} */
AmapPolylineDirective.prototype.naEditorAddNode;
/** @type {?} */
AmapPolylineDirective.prototype.naEditorRemoveNode;
/** @type {?} */
AmapPolylineDirective.prototype.naEditorAdjust;
/** @type {?} */
AmapPolylineDirective.prototype.naEditorEnd;
/**
* @type {?}
* @private
*/
AmapPolylineDirective.prototype.inited;
/**
* @type {?}
* @protected
*/
AmapPolylineDirective.prototype.os;
/**
* @type {?}
* @protected
*/
AmapPolylineDirective.prototype.binder;
/**
* @type {?}
* @private
*/
AmapPolylineDirective.prototype.logger;
/**
* @type {?}
* @private
*/
AmapPolylineDirective.prototype.ngZone;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hcC1wb2x5bGluZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYW1hcC8iLCJzb3VyY2VzIjpbImRpcmVjdGl2ZXMvYW1hcC1wb2x5bGluZS9hbWFwLXBvbHlsaW5lLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxNQUFNLEVBQ04sWUFBWSxFQUdaLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7O0lBRWpELEdBQUcsR0FBRyxlQUFlOztJQUNyQixlQUFlLG9CQUNoQixrQkFBa0I7SUFDckIsV0FBVztJQUNYLGNBQWM7SUFDZCxVQUFVO0lBQ1YsVUFBVTtJQUNWLGNBQWM7SUFDZCxTQUFTO0lBQ1QsTUFBTTtFQUNQO0FBRUQ7SUFLMkMsaURBQThCO0lBdUR2RSwrQkFDWSxFQUF1QixFQUN2QixNQUEwQixFQUM1QixNQUFxQixFQUNyQixNQUFjO1FBSnhCLFlBTUUsa0JBQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxTQU1sQjtRQVhXLFFBQUUsR0FBRixFQUFFLENBQXFCO1FBQ3ZCLFlBQU0sR0FBTixNQUFNLENBQW9CO1FBQzVCLFlBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsWUFBTSxHQUFOLE1BQU0sQ0FBUTs7OztRQXpCZixZQUFNLEdBQUcsS0FBSyxDQUFDOzs7O1FBSWYsWUFBTSxHQUFHLEtBQUssQ0FBQzs7UUFPZCxhQUFPLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVEvQixZQUFNLEdBQUcsS0FBSyxDQUFDOztZQVNmLE1BQU0sR0FBRyxLQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRTtRQUNsQyxLQUFJLENBQUMsZUFBZSxHQUFHLEtBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNoRSxLQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3RFLEtBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlELEtBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDOztJQUMxRCxDQUFDOzs7O0lBRUQsMkNBQVc7OztJQUFYO1FBQ0UsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNwQixDQUFDOzs7OztJQUVELDJDQUFXOzs7O0lBQVgsVUFBWSxPQUFzQjtRQUFsQyxpQkFzQkM7O1lBckJPLE1BQU0sR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQzs7WUFDakMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLGtCQUFrQixDQUFDLENBQUM7O2dCQUNqQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQXdCLElBQUksRUFBRSxlQUFlLENBQUM7WUFDeEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTOzs7O1lBQUMsVUFBQSxDQUFDO2dCQUNqQyxLQUFJLENBQUMsTUFBTSxDQUFDLEdBQUc7OztnQkFBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQXBCLENBQW9CLEVBQUMsQ0FBQztnQkFDNUMsS0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDLENBQUM7WUFDM0MsQ0FBQyxFQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztTQUNwQjthQUFNO1lBQ0wsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQXVCLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFNBQVM7Ozs7WUFBQyxVQUFDLEVBQU07b0JBQU4sMEJBQU0sRUFBTCxTQUFDLEVBQUUsU0FBQztnQkFBTSxPQUFBLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQVosQ0FBWSxFQUFDLENBQUM7WUFDNUYsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQXdCLFNBQVMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFNBQVM7Ozs7WUFBQyxVQUFDLEVBQU07b0JBQU4sMEJBQU0sRUFBTCxTQUFDLEVBQUUsU0FBQztnQkFDMUUsT0FBQSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFBckIsQ0FBcUIsRUFDdEIsQ0FBQztZQUNGLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFNLFNBQVMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFNBQVM7Ozs7WUFBQyxVQUFDLEVBQU07b0JBQU4sMEJBQU0sRUFBTCxTQUFDLEVBQUUsU0FBQztnQkFBTSxPQUFBLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQWYsQ0FBZSxFQUFDLENBQUM7U0FDbEY7UUFFRCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBVSxRQUFRLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxTQUFTOzs7O1FBQUMsVUFBQyxFQUFNO2dCQUFOLDBCQUFNLEVBQUwsU0FBQyxFQUFFLFNBQUM7WUFBTSxPQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUF6QixDQUF5QixFQUFDLENBQUM7UUFDOUYsTUFBTSxDQUFDLEdBQUcsQ0FBVSxRQUFRLENBQUMsQ0FBQyxTQUFTOzs7O1FBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxLQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBdkIsQ0FBdUIsRUFBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7T0FFRzs7Ozs7SUFDSCxtQ0FBRzs7OztJQUFIO1FBQ0UsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7O2dCQTNHRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFFBQVEsRUFBRSxVQUFVO29CQUNwQixTQUFTLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztpQkFDakM7Ozs7Z0JBckJRLG1CQUFtQjtnQkFFbkIsa0JBQWtCO2dCQURsQixhQUFhO2dCQUxwQixNQUFNOzs7NEJBZ0NMLEtBQUs7K0JBSUwsS0FBSzsyQkFJTCxLQUFLOzJCQUlMLEtBQUs7K0JBSUwsS0FBSzswQkFJTCxLQUFLO3VCQUlMLEtBQUs7eUJBSUwsS0FBSzt5QkFJTCxLQUFLOzBCQUlMLEtBQUs7MEJBR0wsTUFBTTtrQ0FHTixNQUFNO3FDQUNOLE1BQU07aUNBQ04sTUFBTTs4QkFDTixNQUFNOztJQW9EVCw0QkFBQztDQUFBLEFBNUdELENBSzJDLGVBQWUsR0F1R3pEO1NBdkdZLHFCQUFxQjs7Ozs7O0lBTWhDLDBDQUE0Qjs7Ozs7SUFJNUIsNkNBQThCOzs7OztJQUk5Qix5Q0FBMkI7Ozs7O0lBSTNCLHlDQUEwQjs7Ozs7SUFJMUIsNkNBQThCOzs7OztJQUk5Qix3Q0FBMEI7Ozs7O0lBSTFCLHFDQUFvQzs7Ozs7SUFJcEMsdUNBQXdCOzs7OztJQUl4Qix1Q0FBd0I7Ozs7O0lBSXhCLHdDQUF3Qzs7SUFHeEMsd0NBQXVDOztJQUd2QyxnREFBNkM7O0lBQzdDLG1EQUFnRDs7SUFDaEQsK0NBQTRDOztJQUM1Qyw0Q0FBeUM7Ozs7O0lBRXpDLHVDQUF1Qjs7Ozs7SUFHckIsbUNBQWlDOzs7OztJQUNqQyx1Q0FBb0M7Ozs7O0lBQ3BDLHVDQUE2Qjs7Ozs7SUFDN0IsdUNBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25DaGFuZ2VzLFxuICBOZ1pvbmUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgemlwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQYXRoT3ZlcmxheU9wdGlvbnMsIEFNYXBQYXRoT3ZlcmxheSB9IGZyb20gJy4uLy4uL2Jhc2UvYW1hcC1wYXRoLW92ZXJsYXknO1xuaW1wb3J0IHsgQW1hcFBvbHlsaW5lU2VydmljZSB9IGZyb20gJy4vYW1hcC1wb2x5bGluZS5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IEV2ZW50QmluZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9ldmVudC1iaW5kZXIuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRPcHRpb25zLCBDaGFuZ2VGaWx0ZXIgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmNvbnN0IFRBRyA9ICdhbWFwLXBvbHlsaW5lJztcbmNvbnN0IFBvbHlsaW5lT3B0aW9ucyA9IFtcbiAgLi4uUGF0aE92ZXJsYXlPcHRpb25zLFxuICAnaXNPdXRsaW5lJyxcbiAgJ291dGxpbmVDb2xvcicsXG4gICdnZW9kZXNpYycsXG4gICdkaXJDb2xvcicsXG4gICdib3JkZXJXZWlnaHQnLFxuICAnc2hvd0RpcicsXG4gICdwYXRoJyxcbl07XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2FtYXAtcG9seWxpbmUnLFxuICBleHBvcnRBczogJ3BvbHlsaW5lJyxcbiAgcHJvdmlkZXJzOiBbQW1hcFBvbHlsaW5lU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFtYXBQb2x5bGluZURpcmVjdGl2ZSBleHRlbmRzIEFNYXBQYXRoT3ZlcmxheTxBTWFwLlBvbHlsaW5lPlxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgLy8gLS0tLSBPcHRpb25zIC0tLS1cbiAgLyoqXG4gICAqIOe6v+adoeaYr+WQpuW4puaPj+i+uVxuICAgKi9cbiAgQElucHV0KCkgaXNPdXRsaW5lOiBib29sZWFuO1xuICAvKipcbiAgICog57q/5p2h5o+P6L656aKc6ImyXG4gICAqL1xuICBASW5wdXQoKSBvdXRsaW5lQ29sb3I6IHN0cmluZztcbiAgLyoqXG4gICAqIOaYr+WQpue7mOWItuaIkOWkp+WcsOe6v1xuICAgKi9cbiAgQElucHV0KCkgZ2VvZGVzaWM6IGJvb2xlYW47XG4gIC8qKlxuICAgKiDmlrnlkJHnrq3lpLTpopzoibJcbiAgICovXG4gIEBJbnB1dCgpIGRpckNvbG9yOiBzdHJpbmc7XG4gIC8qKlxuICAgKiDmj4/ovrnnmoTlrr3luqZcbiAgICovXG4gIEBJbnB1dCgpIGJvcmRlcldlaWdodDogbnVtYmVyO1xuICAvKipcbiAgICog5piv5ZCm5bu26Lev5b6E5pi+56S65pa55ZCR566t5aS0XG4gICAqL1xuICBASW5wdXQoKSBzaG93RGlyOiBib29sZWFuO1xuICAvKipcbiAgICog5oqY57q/55qE6IqC54K55pWw57uEXG4gICAqL1xuICBASW5wdXQoKSBwYXRoOiBBTWFwLkxvY2F0aW9uVmFsdWVbXTtcbiAgLyoqXG4gICAqIOmineWkljog5piv5ZCm6ZqQ6JePXG4gICAqL1xuICBASW5wdXQoKSBoaWRkZW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIOmineWkljog5piv5ZCm5byA5ZCv57yW6L6R5ZmoXG4gICAqL1xuICBASW5wdXQoKSBlZGl0b3IgPSBmYWxzZTtcbiAgLyoqXG4gICAqIOmineWkljog5Lya6KaG55uW5YW25LuW5bGe5oCn55qE6YWN572u5pa55byPXG4gICAqL1xuICBASW5wdXQoKSBvcHRpb25zOiBBTWFwLlBvbHlsaW5lLk9wdGlvbnM7XG5cbiAgLy8gZGlyZWN0aXZlIGV2ZW50czpcbiAgQE91dHB1dCgpIG5hUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLy8gZWRpdG9yIGV2ZW50czpcbiAgQE91dHB1dCgpIG5hRWRpdG9yQWRkTm9kZTogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoKSBuYUVkaXRvclJlbW92ZU5vZGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCkgbmFFZGl0b3JBZGp1c3Q6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCkgbmFFZGl0b3JFbmQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gIHByaXZhdGUgaW5pdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIG9zOiBBbWFwUG9seWxpbmVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBiaW5kZXI6IEV2ZW50QmluZGVyU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICApIHtcbiAgICBzdXBlcihvcywgYmluZGVyKTtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLm9zLmdldEVkaXRvcigpO1xuICAgIHRoaXMubmFFZGl0b3JBZGROb2RlID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KGVkaXRvciwgJ2FkZG5vZGUnKTtcbiAgICB0aGlzLm5hRWRpdG9yUmVtb3ZlTm9kZSA9IHRoaXMuYmluZGVyLmJpbmRFdmVudChlZGl0b3IsICdyZW1vdmVub2RlJyk7XG4gICAgdGhpcy5uYUVkaXRvckFkanVzdCA9IHRoaXMuYmluZGVyLmJpbmRFdmVudChlZGl0b3IsICdhZGp1c3QnKTtcbiAgICB0aGlzLm5hRWRpdG9yRW5kID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KGVkaXRvciwgJ2VuZCcpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5vcy5kZXN0cm95KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgZmlsdGVyID0gQ2hhbmdlRmlsdGVyLm9mKGNoYW5nZXMpO1xuICAgIGNvbnN0IHBvbHlsaW5lID0gdGhpcy5nZXQoKTtcbiAgICBpZiAoIXRoaXMuaW5pdGVkKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ2luaXRpYWxpemluZyAuLi4nKTtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMgfHwgZ2V0T3B0aW9uczxBTWFwLlBvbHlsaW5lLk9wdGlvbnM+KHRoaXMsIFBvbHlsaW5lT3B0aW9ucyk7XG4gICAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ29wdGlvbnM6Jywgb3B0aW9ucyk7XG4gICAgICB0aGlzLm9zLmNyZWF0ZShvcHRpb25zKS5zdWJzY3JpYmUobSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLm5hUmVhZHkuZW1pdChtKSk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAncG9seWxpbmUgaXMgcmVhZHkuJyk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuaW5pdGVkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgemlwKGZpbHRlci5oYXM8QU1hcC5Mb2NhdGlvblZhbHVlW10+KCdwYXRoJyksIHBvbHlsaW5lKS5zdWJzY3JpYmUoKFt2LCBwXSkgPT4gcC5zZXRQYXRoKHYpKTtcbiAgICAgIHppcChmaWx0ZXIuaGFzPEFNYXAuUG9seWxpbmUuT3B0aW9ucz4oJ29wdGlvbnMnKSwgcG9seWxpbmUpLnN1YnNjcmliZSgoW3YsIHBdKSA9PlxuICAgICAgICBwLnNldE9wdGlvbnModiB8fCB7fSksXG4gICAgICApO1xuICAgICAgemlwKGZpbHRlci5oYXM8YW55PignZXh0RGF0YScpLCBwb2x5bGluZSkuc3Vic2NyaWJlKChbdiwgcF0pID0+IHAuc2V0RXh0RGF0YSh2KSk7XG4gICAgfVxuXG4gICAgemlwKGZpbHRlci5oYXM8Ym9vbGVhbj4oJ2hpZGRlbicpLCBwb2x5bGluZSkuc3Vic2NyaWJlKChbdiwgcF0pID0+ICh2ID8gcC5oaWRlKCkgOiBwLnNob3coKSkpO1xuICAgIGZpbHRlci5oYXM8Ym9vbGVhbj4oJ2VkaXRvcicpLnN1YnNjcmliZSh2ID0+IHRoaXMub3MudG9nZ2xlRWRpdG9yKHYpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5blt7LliJvlu7rnmoQgQU1hcC5Qb2x5bGluZSDlr7nosaFcbiAgICovXG4gIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcy5nZXQoKTtcbiAgfVxufVxuIl19