@arin-pang-agm/drawing
Version:
Angular Google Maps (AGM) extension for google maps drawing library
145 lines • 21.1 kB
JavaScript
import * as tslib_1 from "tslib";
import { Directive, EventEmitter, Input, isDevMode, NgZone, OnChanges, OnDestroy, Output, SimpleChanges } from '@angular/core';
import { fromEventPattern } from 'rxjs';
let AgmDrawingManager = class AgmDrawingManager {
constructor(_zone) {
this._zone = _zone;
/**
* This event is fired when the user has finished drawing a circle.
*/
this.circleComplete = new EventEmitter();
/**
* This event is fired when the user has finished drawing a marker.
*/
this.markerComplete = new EventEmitter();
/**
* This event is fired when the user has finished drawing an overlay of any
* type.
*/
this.overlayComplete = new EventEmitter();
/**
* This event is fired when the user has finished drawing a polygon.
*/
this.polygonComplete = new EventEmitter();
/**
* This event is fired when the user has finished drawing a polyline.
*/
this.polylineComplete = new EventEmitter();
/**
* This event is fired when the user has finished drawing a rectangle.
*/
this.rectangleComplete = new EventEmitter();
this.eventSubscriptions = [];
}
setMap(map) {
if (!google.maps.drawing && isDevMode()) {
console.error('Cannot use drawing manager if drawing library is not ' +
'loaded. To fix, add libraries: [\'drawing\'] to the ' +
'lazyMapsAPILoaderConfig you passed to AgmCoreModule.forRoot');
return;
}
if (map && !this.drawingManager) {
this.drawingManager = new google.maps.drawing.DrawingManager({
map,
circleOptions: this.circleOptions,
markerOptions: this.markerOptions,
polygonOptions: this.polygonOptions,
polylineOptions: this.polylineOptions,
rectangeOptions: this.rectangeOptions,
drawingControl: this.drawingControl,
drawingControlOptions: this.drawingControlOptions,
drawingMode: this.drawingMode,
});
this.initEvents(this.drawingManager);
}
else if (!map && this.drawingManager) {
this.drawingManager.setMap(null);
}
// else do nothing
}
initEvents(drawingManager) {
this.eventSubscriptions.push(this.createMvcObservable('circlecomplete', drawingManager)
.subscribe(circle => this._zone.run(() => this.circleComplete.next(circle))));
this.eventSubscriptions.push(this.createMvcObservable('markercomplete', drawingManager)
.subscribe(marker => this._zone.run(() => this.markerComplete.next(marker))));
this.eventSubscriptions.push(this.createMvcObservable('polygoncomplete', drawingManager)
.subscribe(polygon => this._zone.run(() => this.polygonComplete.next(polygon))));
this.eventSubscriptions.push(this.createMvcObservable('polylinecomplete', drawingManager)
.subscribe(polyline => this._zone.run(() => this.polylineComplete.next(polyline))));
this.eventSubscriptions.push(this.createMvcObservable('overlaycomplete', drawingManager)
.subscribe(overlayevent => this._zone.run(() => this.overlayComplete.next(overlayevent))));
this.eventSubscriptions.push(this.createMvcObservable('rectanglecomplete', drawingManager)
.subscribe(rectangle => this._zone.run(() => this.rectangleComplete.next(rectangle))));
}
createMvcObservable(eventName, mvcObject) {
return fromEventPattern(handler => mvcObject.addListener(eventName, (event) => handler.apply(null, [event])), (_handler, evListener) => evListener.remove());
}
ngOnChanges(changes) {
if (!this.drawingManager) {
return;
}
const options = Object.entries(changes)
.map(([prop, change]) => [prop, change.currentValue])
.reduce((obj, [propName, propValue]) => {
obj[propName] = propValue;
return obj;
}, {});
this.drawingManager.setOptions(options);
}
ngOnDestroy() {
this.eventSubscriptions.forEach(subscription => subscription.unsubscribe());
}
};
AgmDrawingManager.ctorParameters = () => [
{ type: NgZone }
];
tslib_1.__decorate([
Input()
], AgmDrawingManager.prototype, "drawingControl", void 0);
tslib_1.__decorate([
Input()
], AgmDrawingManager.prototype, "drawingMode", void 0);
tslib_1.__decorate([
Input()
], AgmDrawingManager.prototype, "drawingControlOptions", void 0);
tslib_1.__decorate([
Input()
], AgmDrawingManager.prototype, "circleOptions", void 0);
tslib_1.__decorate([
Input()
], AgmDrawingManager.prototype, "markerOptions", void 0);
tslib_1.__decorate([
Input()
], AgmDrawingManager.prototype, "polygonOptions", void 0);
tslib_1.__decorate([
Input()
], AgmDrawingManager.prototype, "polylineOptions", void 0);
tslib_1.__decorate([
Input()
], AgmDrawingManager.prototype, "rectangeOptions", void 0);
tslib_1.__decorate([
Output()
], AgmDrawingManager.prototype, "circleComplete", void 0);
tslib_1.__decorate([
Output()
], AgmDrawingManager.prototype, "markerComplete", void 0);
tslib_1.__decorate([
Output()
], AgmDrawingManager.prototype, "overlayComplete", void 0);
tslib_1.__decorate([
Output()
], AgmDrawingManager.prototype, "polygonComplete", void 0);
tslib_1.__decorate([
Output()
], AgmDrawingManager.prototype, "polylineComplete", void 0);
tslib_1.__decorate([
Output()
], AgmDrawingManager.prototype, "rectangleComplete", void 0);
AgmDrawingManager = tslib_1.__decorate([
Directive({
selector: 'agm-drawing-manager',
exportAs: 'agmDrawingManager',
})
], AgmDrawingManager);
export { AgmDrawingManager };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2luZy1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFyaW4tcGFuZy1hZ20vZHJhd2luZy8iLCJzb3VyY2VzIjpbImRpcmVjdGl2ZXMvZHJhd2luZy1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0gsT0FBTyxFQUFFLGdCQUFnQixFQUE0QixNQUFNLE1BQU0sQ0FBQztBQVNsRSxJQUFhLGlCQUFpQixHQUE5QixNQUFhLGlCQUFpQjtJQXlHNUIsWUFBb0IsS0FBYTtRQUFiLFVBQUssR0FBTCxLQUFLLENBQVE7UUFuQ2pDOztXQUVHO1FBQ08sbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXREOztXQUVHO1FBQ08sbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXREOzs7V0FHRztRQUNPLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFFckU7O1dBRUc7UUFDTyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFFeEQ7O1dBRUc7UUFDTyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBWSxDQUFDO1FBRTFEOztXQUVHO1FBQ08sc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUVwRCx1QkFBa0IsR0FBbUIsRUFBRSxDQUFDO0lBS2hELENBQUM7SUFFRCxNQUFNLENBQUMsR0FBYztRQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksU0FBUyxFQUFFLEVBQUU7WUFDdkMsT0FBTyxDQUFDLEtBQUssQ0FBQyx1REFBdUQ7Z0JBQ25FLHNEQUFzRDtnQkFDdEQsNkRBQTZELENBQUMsQ0FBQztZQUNqRSxPQUFPO1NBQ1I7UUFD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QUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztDQUVGLENBQUE7O1lBbEY0QixNQUFNOztBQWxHeEI7SUFBUixLQUFLLEVBQUU7eURBQXlCO0FBT3hCO0lBQVIsS0FBSyxFQUFFO3NEQUFpQztBQU9oQztJQUFSLEtBQUssRUFBRTtnRUFBOEM7QUFTN0M7SUFBUixLQUFLLEVBQUU7d0RBQThCO0FBUzdCO0lBQVIsS0FBSyxFQUFFO3dEQUE4QjtBQVM3QjtJQUFSLEtBQUssRUFBRTt5REFBZ0M7QUFVL0I7SUFBUixLQUFLLEVBQUU7MERBQWtDO0FBVWpDO0lBQVIsS0FBSyxFQUFFOzBEQUFtQztBQUtqQztJQUFULE1BQU0sRUFBRTt5REFBNkM7QUFLNUM7SUFBVCxNQUFNLEVBQUU7eURBQTZDO0FBTTVDO0lBQVQsTUFBTSxFQUFFOzBEQUE0RDtBQUszRDtJQUFULE1BQU0sRUFBRTswREFBK0M7QUFLOUM7SUFBVCxNQUFNLEVBQUU7MkRBQWlEO0FBS2hEO0lBQVQsTUFBTSxFQUFFOzREQUFtRDtBQW5HakQsaUJBQWlCO0lBSjdCLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxxQkFBcUI7UUFDL0IsUUFBUSxFQUFFLG1CQUFtQjtLQUM5QixDQUFDO0dBQ1csaUJBQWlCLENBMkw3QjtTQTNMWSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaXJjbGUsIENpcmNsZU9wdGlvbnMsIEdvb2dsZU1hcCwgTWFwc0V2ZW50TGlzdGVuZXIsIE1hcmtlciwgTWFya2VyT3B0aW9ucywgTVZDT2JqZWN0LCBQb2x5Z29uLCBQb2x5Z29uT3B0aW9ucywgUG9seWxpbmUsIFBvbHlsaW5lT3B0aW9ucywgUmVjdGFuZ2xlLCBSZWN0YW5nbGVPcHRpb25zIH0gZnJvbSAnQGFyaW4tcGFuZy1hZ20vY29yZS9zZXJ2aWNlcy9nb29nbGUtbWFwcy10eXBlcyc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIGlzRGV2TW9kZSwgTmdab25lLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnRQYXR0ZXJuLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERyYXdpbmdDb250cm9sT3B0aW9ucywgT3ZlcmxheUNvbXBsZXRlRXZlbnQsIE92ZXJsYXlUeXBlIH0gZnJvbSAnLi4vZ29vZ2xlLWRyYXdpbmctdHlwZXMnO1xuXG5kZWNsYXJlIHZhciBnb29nbGU6IGFueTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnYWdtLWRyYXdpbmctbWFuYWdlcicsXG4gIGV4cG9ydEFzOiAnYWdtRHJhd2luZ01hbmFnZXInLFxufSlcbmV4cG9ydCBjbGFzcyBBZ21EcmF3aW5nTWFuYWdlciBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95e1xuXG4gIC8qKlxuICAgKiBUaGUgZW5hYmxlZC9kaXNhYmxlZCBzdGF0ZSBvZiB0aGUgZHJhd2luZyBjb250cm9sLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgQElucHV0KCkgZHJhd2luZ0NvbnRyb2w6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBEcmF3aW5nTWFuYWdlcidzIGRyYXdpbmcgbW9kZSwgd2hpY2ggZGVmaW5lcyB0aGUgdHlwZSBvZiBvdmVybGF5IHRvIGJlXG4gICAqIGFkZGVkIG9uIHRoZSBtYXAuIEEgZHJhd2luZyBtb2RlIG9mIG51bGwgbWVhbnMgdGhhdCB0aGUgdXNlciBjYW4gaW50ZXJhY3RcbiAgICogd2l0aCB0aGUgbWFwIGFzIG5vcm1hbCwgYW5kIGNsaWNrcyBkbyBub3QgZHJhdyBhbnl0aGluZy5cbiAgICovXG4gIEBJbnB1dCgpIGRyYXdpbmdNb2RlOiBPdmVybGF5VHlwZSB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXNwbGF5IG9wdGlvbnMgZm9yIHRoZSBkcmF3aW5nIGNvbnRyb2wuXG4gICAqXG4gICAqIEB0eXBlIHtEcmF3aW5nQ29udHJvbE9wdGlvbnN9XG4gICAqL1xuICBASW5wdXQoKSBkcmF3aW5nQ29udHJvbE9wdGlvbnM6IERyYXdpbmdDb250cm9sT3B0aW9ucztcblxuICAvKipcbiAgICogT3B0aW9ucyB0byBhcHBseSB0byBhbnkgbmV3IGNpcmNsZXMgY3JlYXRlZCB3aXRoIHRoaXMgRHJhd2luZ01hbmFnZXIuXG4gICAqIFRoZSBgY2VudGVyYCBhbmQgYHJhZGl1c2AgcHJvcGVydGllcyBhcmUgaWdub3JlZCwgYW5kIHRoZSBgbWFwYCBwcm9wZXJ0eSBvZiBhXG4gICAqIG5ldyBjaXJjbGUgaXMgYWx3YXlzIHNldCB0byB0aGUgRHJhd2luZ01hbmFnZXIncyBtYXAuXG4gICAqXG4gICAqIEB0eXBlIHtDaXJjbGVPcHRpb25zfVxuICAgKi9cbiAgQElucHV0KCkgY2lyY2xlT3B0aW9uczogQ2lyY2xlT3B0aW9ucztcblxuICAvKipcbiAgICogT3B0aW9ucyB0byBhcHBseSB0byBhbnkgbmV3IG1hcmtlcnMgY3JlYXRlZCB3aXRoIHRoaXMgRHJhd2luZ01hbmFnZXIuXG4gICAqIFRoZSBgcG9zaXRpb25gIHByb3BlcnR5IGlzIGlnbm9yZWQsIGFuZCB0aGUgYG1hcGAgcHJvcGVydHkgb2YgYSBuZXcgbWFya2VyXG4gICAqIGlzIGFsd2F5cyBzZXQgdG8gdGhlIERyYXdpbmdNYW5hZ2VyJ3MgbWFwLlxuICAgKlxuICAgKiBAdHlwZSB7TWFya2VyT3B0aW9uc31cbiAgICovXG4gIEBJbnB1dCgpIG1hcmtlck9wdGlvbnM6IE1hcmtlck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgdG8gYXBwbHkgdG8gYW55IG5ldyBwb2x5Z29ucyBjcmVhdGVkIHdpdGggdGhpcyBEcmF3aW5nTWFuYWdlci5cbiAgICogVGhlIGBwYXRoc2AgcHJvcGVydHkgaXMgaWdub3JlZCwgYW5kIHRoZSBtYXAgcHJvcGVydHkgb2YgYSBuZXcgcG9seWdvbiBpc1xuICAgKiBhbHdheXMgc2V0IHRvIHRoZSBEcmF3aW5nTWFuYWdlcidzIG1hcC5cbiAgICpcbiAgICogQHR5cGUge1BvbHlnb25PcHRpb25zfVxuICAgKi9cbiAgQElucHV0KCkgcG9seWdvbk9wdGlvbnM6IFBvbHlnb25PcHRpb25zO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIHRvIGFwcGx5IHRvIGFueSBuZXcgcG9seWxpbmVzIGNyZWF0ZWQgd2l0aCB0aGlzIERyYXdpbmdNYW5hZ2VyLlxuICAgKiBUaGUgYHBhdGhgIHByb3BlcnR5IGlzIGlnbm9yZWQsIGFuZCB0aGUgbWFwIHByb3BlcnR5IG9mIGEgbmV3IHBvbHlsaW5lIGlzXG4gICAqIGFsd2F5cyBzZXQgdG8gdGhlIERyYXdpbmdNYW5hZ2VyJ3MgbWFwLlxuICAgKlxuICAgKiBAdHlwZSB7UG9seWxpbmVPcHRpb25zfVxuICAgKiBAbWVtYmVyb2YgQWdtRHJhd2luZ01hbmFnZXJcbiAgICovXG4gIEBJbnB1dCgpIHBvbHlsaW5lT3B0aW9uczogUG9seWxpbmVPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIHRvIGFwcGx5IHRvIGFueSBuZXcgcmVjdGFuZ2xlcyBjcmVhdGVkIHdpdGggdGhpcyBEcmF3aW5nTWFuYWdlci5cbiAgICogVGhlIGBib3VuZHNgIHByb3BlcnR5IGlzIGlnbm9yZWQsIGFuZCB0aGUgbWFwIHByb3BlcnR5IG9mIGEgbmV3IHJlY3RhbmdsZVxuICAgKiBpcyBhbHdheXMgc2V0IHRvIHRoZSBEcmF3aW5nTWFuYWdlcidzIG1hcC5cbiAgICpcbiAgICogQHR5cGUge1JlY3RhbmdsZU9wdGlvbnN9XG4gICAqIEBtZW1iZXJvZiBBZ21EcmF3aW5nTWFuYWdlclxuICAgKi9cbiAgQElucHV0KCkgcmVjdGFuZ2VPcHRpb25zOiBSZWN0YW5nbGVPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIHVzZXIgaGFzIGZpbmlzaGVkIGRyYXdpbmcgYSBjaXJjbGUuXG4gICAqL1xuICBAT3V0cHV0KCkgY2lyY2xlQ29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPENpcmNsZT4oKTtcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIGhhcyBmaW5pc2hlZCBkcmF3aW5nIGEgbWFya2VyLlxuICAgKi9cbiAgQE91dHB1dCgpIG1hcmtlckNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxNYXJrZXI+KCk7XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBoYXMgZmluaXNoZWQgZHJhd2luZyBhbiBvdmVybGF5IG9mIGFueVxuICAgKiB0eXBlLlxuICAgKi9cbiAgQE91dHB1dCgpIG92ZXJsYXlDb21wbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8T3ZlcmxheUNvbXBsZXRlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBoYXMgZmluaXNoZWQgZHJhd2luZyBhIHBvbHlnb24uXG4gICAqL1xuICBAT3V0cHV0KCkgcG9seWdvbkNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxQb2x5Z29uPigpO1xuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIHVzZXIgaGFzIGZpbmlzaGVkIGRyYXdpbmcgYSBwb2x5bGluZS5cbiAgICovXG4gIEBPdXRwdXQoKSBwb2x5bGluZUNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxQb2x5bGluZT4oKTtcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIGhhcyBmaW5pc2hlZCBkcmF3aW5nIGEgcmVjdGFuZ2xlLlxuICAgKi9cbiAgQE91dHB1dCgpIHJlY3RhbmdsZUNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWN0YW5nbGU+KCk7XG5cbiAgcHJpdmF0ZSBldmVudFN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgcHJpdmF0ZSBkcmF3aW5nTWFuYWdlcjogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3pvbmU6IE5nWm9uZSkge1xuICB9XG5cbiAgc2V0TWFwKG1hcDogR29vZ2xlTWFwKSB7XG4gICAgaWYgKCFnb29nbGUubWFwcy5kcmF3aW5nICYmIGlzRGV2TW9kZSgpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdDYW5ub3QgdXNlIGRyYXdpbmcgbWFuYWdlciBpZiBkcmF3aW5nIGxpYnJhcnkgaXMgbm90ICcgK1xuICAgICAgICAnbG9hZGVkLiBUbyBmaXgsIGFkZCBsaWJyYXJpZXM6IFtcXCdkcmF3aW5nXFwnXSB0byB0aGUgJyArXG4gICAgICAgICdsYXp5TWFwc0FQSUxvYWRlckNvbmZpZyB5b3UgcGFzc2VkIHRvIEFnbUNvcmVNb2R1bGUuZm9yUm9vdCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobWFwICYmICF0aGlzLmRyYXdpbmdNYW5hZ2VyKSB7XG4gICAgICB0aGlzLmRyYXdpbmdNYW5hZ2VyID0gbmV3IGdvb2dsZS5tYXBzLmRyYXdpbmcuRHJhd2luZ01hbmFnZXIoe1xuICAgICAgICAgIG1hcCxcbiAgICAgICAgICBjaXJjbGVPcHRpb25zOiB0aGlzLmNpcmNsZU9wdGlvbnMsXG4gICAgICAgICAgbWFya2VyT3B0aW9uczogdGhpcy5tYXJrZXJPcHRpb25zLFxuICAgICAgICAgIHBvbHlnb25PcHRpb25zOiB0aGlzLnBvbHlnb25PcHRpb25zLFxuICAgICAgICAgIHBvbHlsaW5lT3B0aW9uczogdGhpcy5wb2x5bGluZU9wdGlvbnMsXG4gICAgICAgICAgcmVjdGFuZ2VPcHRpb25zOiB0aGlzLnJlY3RhbmdlT3B0aW9ucyxcbiAgICAgICAgICBkcmF3aW5nQ29udHJvbDogdGhpcy5kcmF3aW5nQ29udHJvbCxcbiAgICAgICAgICBkcmF3aW5nQ29udHJvbE9wdGlvbnM6IHRoaXMuZHJhd2luZ0NvbnRyb2xPcHRpb25zLFxuICAgICAgICAgIGRyYXdpbmdNb2RlOiB0aGlzLmRyYXdpbmdNb2RlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmluaXRFdmVudHModGhpcy5kcmF3aW5nTWFuYWdlcik7XG4gICAgfSBlbHNlIGlmICghbWFwICYmIHRoaXMuZHJhd2luZ01hbmFnZXIpIHtcbiAgICAgIHRoaXMuZHJhd2luZ01hbmFnZXIuc2V0TWFwKG51bGwpO1xuICAgIH1cbiAgICAvLyBlbHNlIGRvIG5vdGhpbmdcbiAgfVxuXG4gIGluaXRFdmVudHMoZHJhd2luZ01hbmFnZXI6IGFueSkge1xuICAgIHRoaXMuZXZlbnRTdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNyZWF0ZU12Y09ic2VydmFibGU8Q2lyY2xlPignY2lyY2xlY29tcGxldGUnLCBkcmF3aW5nTWFuYWdlcilcbiAgICAgIC5zdWJzY3JpYmUoY2lyY2xlID0+IHRoaXMuX3pvbmUucnVuKCgpID0+IHRoaXMuY2lyY2xlQ29tcGxldGUubmV4dChjaXJjbGUpKSlcbiAgICApO1xuICAgIHRoaXMuZXZlbnRTdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNyZWF0ZU12Y09ic2VydmFibGU8TWFya2VyPignbWFya2VyY29tcGxldGUnLCBkcmF3aW5nTWFuYWdlcilcbiAgICAgIC5zdWJzY3JpYmUobWFya2VyID0+IHRoaXMuX3pvbmUucnVuKCgpID0+IHRoaXMubWFya2VyQ29tcGxldGUubmV4dChtYXJrZXIpKSlcbiAgICApO1xuICAgIHRoaXMuZXZlbnRTdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNyZWF0ZU12Y09ic2VydmFibGU8UG9seWdvbj4oJ3BvbHlnb25jb21wbGV0ZScsIGRyYXdpbmdNYW5hZ2VyKVxuICAgICAgLnN1YnNjcmliZShwb2x5Z29uID0+IHRoaXMuX3pvbmUucnVuKCgpID0+IHRoaXMucG9seWdvbkNvbXBsZXRlLm5leHQocG9seWdvbikpKVxuICAgICk7XG4gICAgdGhpcy5ldmVudFN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3JlYXRlTXZjT2JzZXJ2YWJsZTxQb2x5bGluZT4oJ3BvbHlsaW5lY29tcGxldGUnLCBkcmF3aW5nTWFuYWdlcilcbiAgICAgIC5zdWJzY3JpYmUocG9seWxpbmUgPT4gdGhpcy5fem9uZS5ydW4oKCkgPT4gdGhpcy5wb2x5bGluZUNvbXBsZXRlLm5leHQocG9seWxpbmUpKSlcbiAgICApO1xuICAgIHRoaXMuZXZlbnRTdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNyZWF0ZU12Y09ic2VydmFibGU8T3ZlcmxheUNvbXBsZXRlRXZlbnQ+KCdvdmVybGF5Y29tcGxldGUnLCBkcmF3aW5nTWFuYWdlcilcbiAgICAgIC5zdWJzY3JpYmUob3ZlcmxheWV2ZW50ID0+IHRoaXMuX3pvbmUucnVuKCgpID0+IHRoaXMub3ZlcmxheUNvbXBsZXRlLm5leHQob3ZlcmxheWV2ZW50KSkpXG4gICAgKTtcbiAgICB0aGlzLmV2ZW50U3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jcmVhdGVNdmNPYnNlcnZhYmxlPFJlY3RhbmdsZT4oJ3JlY3RhbmdsZWNvbXBsZXRlJywgZHJhd2luZ01hbmFnZXIpXG4gICAgICAuc3Vic2NyaWJlKHJlY3RhbmdsZSA9PiB0aGlzLl96b25lLnJ1bigoKSA9PiB0aGlzLnJlY3RhbmdsZUNvbXBsZXRlLm5leHQocmVjdGFuZ2xlKSkpXG4gICAgKTtcbiAgfVxuXG4gIGNyZWF0ZU12Y09ic2VydmFibGU8RT4oZXZlbnROYW1lOiBzdHJpbmcsIG12Y09iamVjdDogTVZDT2JqZWN0KTogT2JzZXJ2YWJsZTxFPiB7XG4gICAgcmV0dXJuIGZyb21FdmVudFBhdHRlcm4oXG4gICAgICBoYW5kbGVyID0+IG12Y09iamVjdC5hZGRMaXN0ZW5lcihldmVudE5hbWUsXG4gICAgICAgIChldmVudD86IEUpID0+IGhhbmRsZXIuYXBwbHkobnVsbCwgW2V2ZW50XSkpLFxuICAgICAgKF9oYW5kbGVyOiBGdW5jdGlvbiwgZXZMaXN0ZW5lcjogTWFwc0V2ZW50TGlzdGVuZXIpID0+IGV2TGlzdGVuZXIucmVtb3ZlKClcbiAgICApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kcmF3aW5nTWFuYWdlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnMgPSBPYmplY3QuZW50cmllcyhjaGFuZ2VzKVxuICAgIC5tYXAoKFtwcm9wLCBjaGFuZ2VdKSA9PiBbcHJvcCwgY2hhbmdlLmN1cnJlbnRWYWx1ZV0pXG4gICAgLnJlZHVjZSgob2JqOiBhbnksIFtwcm9wTmFtZSwgcHJvcFZhbHVlXSkgPT4ge1xuICAgICAgb2JqW3Byb3BOYW1lXSA9IHByb3BWYWx1ZTtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSwge30pO1xuICAgIHRoaXMuZHJhd2luZ01hbmFnZXIuc2V0T3B0aW9ucyhvcHRpb25zKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnRTdWJzY3JpcHRpb25zLmZvckVhY2goc3Vic2NyaXB0aW9uID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG59XG4iXX0=