sj-ng-webgl-globe
Version:
The fastest way to embed a 3D reactive globe in your Angular application using WebGL Earth. It is an open-source virtual globe made with HTML5 and Canvas WebGL technology. It comes with a JavaScript API adapting the popular LeafletJS API. On top of this A
165 lines • 15 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/sj-ng-webgl-globe.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, ViewChild, ElementRef, Input, ViewEncapsulation } from '@angular/core';
/**
* @record
*/
function Options() { }
if (false) {
/** @type {?|undefined} */
Options.prototype.center;
/** @type {?|undefined} */
Options.prototype.zoom;
/** @type {?|undefined} */
Options.prototype.altitude;
/** @type {?|undefined} */
Options.prototype.atmosphere;
/** @type {?|undefined} */
Options.prototype.sky;
/** @type {?|undefined} */
Options.prototype.minAltitude;
/** @type {?|undefined} */
Options.prototype.maxAltitude;
/** @type {?|undefined} */
Options.prototype.dragging;
/** @type {?|undefined} */
Options.prototype.tilting;
/** @type {?|undefined} */
Options.prototype.zooming;
/** @type {?|undefined} */
Options.prototype.scrollWheelZoom;
/** @type {?|undefined} */
Options.prototype.unconstrainedRotation;
/** @type {?|undefined} */
Options.prototype.proxyHost;
}
var SjNgWebglGlobeComponent = /** @class */ (function () {
function SjNgWebglGlobeComponent() {
this.options = {
center: [null, null],
zoom: null,
altitude: 7000000,
atmosphere: false,
sky: false,
minAltitude: 20,
dragging: true,
tilting: true,
zooming: true,
scrollWheelZoom: true,
unconstrainedRotation: false,
proxyHost: ''
};
}
/**
* @return {?}
*/
SjNgWebglGlobeComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
this.options = {
center: this.center,
zoom: this.zoom,
altitude: this.altitude,
atmosphere: this.atmosphere,
sky: this.sky,
minAltitude: this.minAltitude,
maxAltitude: this.maxAltitude,
dragging: this.dragging,
tilting: this.tilting,
zooming: this.zooming,
scrollWheelZoom: this.scrollWheelZoom,
unconstrainedRotation: this.unconstrainedRotation,
proxyHost: this.proxyHost
};
this.globe = new WE.map(this.sjGlobe.nativeElement, this.options);
WE.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© OpenStreetMap contributors'
}).addTo(this.globe);
console.log(this.markers);
if (this.markers !== undefined && this.markers.length > 0) {
this.markers.forEach((/**
* @param {?} m
* @param {?} i
* @return {?}
*/
function (m, i) {
/** @type {?} */
var marker = WE.marker([m.latitude, m.longitude]).addTo(_this.globe);
if (m.isPopupEnable) {
marker.bindPopup(m.popupHTML, { maxWidth: 200, closeButton: false });
}
}));
}
};
SjNgWebglGlobeComponent.decorators = [
{ type: Component, args: [{
selector: 'sj-ng-webgl-globe',
template: "<div #sjGlobe></div>",
encapsulation: ViewEncapsulation.None,
styles: ["\n .cesium-credit-textContainer{\n display: none;\n }\n "]
}] }
];
/** @nocollapse */
SjNgWebglGlobeComponent.ctorParameters = function () { return []; };
SjNgWebglGlobeComponent.propDecorators = {
sjGlobe: [{ type: ViewChild, args: ['sjGlobe', { static: true },] }],
center: [{ type: Input, args: ['center',] }],
zoom: [{ type: Input, args: ['zoom',] }],
altitude: [{ type: Input, args: ['altitude',] }],
atmosphere: [{ type: Input, args: ['atmosphere',] }],
sky: [{ type: Input, args: ['sky',] }],
minAltitude: [{ type: Input, args: ['minAltitude',] }],
maxAltitude: [{ type: Input, args: ['maxAltitude',] }],
dragging: [{ type: Input, args: ['dragging',] }],
tilting: [{ type: Input, args: ['tilting',] }],
zooming: [{ type: Input, args: ['zooming',] }],
scrollWheelZoom: [{ type: Input, args: ['scrollWheelZoom',] }],
unconstrainedRotation: [{ type: Input, args: ['unconstrainedRotation',] }],
proxyHost: [{ type: Input, args: ['proxyHost',] }],
markers: [{ type: Input, args: ['markers',] }]
};
return SjNgWebglGlobeComponent;
}());
export { SjNgWebglGlobeComponent };
if (false) {
/** @type {?} */
SjNgWebglGlobeComponent.prototype.globe;
/** @type {?} */
SjNgWebglGlobeComponent.prototype.options;
/** @type {?} */
SjNgWebglGlobeComponent.prototype.sjGlobe;
/** @type {?} */
SjNgWebglGlobeComponent.prototype.center;
/** @type {?} */
SjNgWebglGlobeComponent.prototype.zoom;
/** @type {?} */
SjNgWebglGlobeComponent.prototype.altitude;
/** @type {?} */
SjNgWebglGlobeComponent.prototype.atmosphere;
/** @type {?} */
SjNgWebglGlobeComponent.prototype.sky;
/** @type {?} */
SjNgWebglGlobeComponent.prototype.minAltitude;
/** @type {?} */
SjNgWebglGlobeComponent.prototype.maxAltitude;
/** @type {?} */
SjNgWebglGlobeComponent.prototype.dragging;
/** @type {?} */
SjNgWebglGlobeComponent.prototype.tilting;
/** @type {?} */
SjNgWebglGlobeComponent.prototype.zooming;
/** @type {?} */
SjNgWebglGlobeComponent.prototype.scrollWheelZoom;
/** @type {?} */
SjNgWebglGlobeComponent.prototype.unconstrainedRotation;
/** @type {?} */
SjNgWebglGlobeComponent.prototype.proxyHost;
/** @type {?} */
SjNgWebglGlobeComponent.prototype.markers;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2otbmctd2ViZ2wtZ2xvYmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vc2otbmctd2ViZ2wtZ2xvYmUvIiwic291cmNlcyI6WyJsaWIvc2otbmctd2ViZ2wtZ2xvYmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUluRyxzQkFjQzs7O0lBYkMseUJBQXVCOztJQUN2Qix1QkFBYzs7SUFDZCwyQkFBa0I7O0lBQ2xCLDZCQUFxQjs7SUFDckIsc0JBQWM7O0lBQ2QsOEJBQXFCOztJQUNyQiw4QkFBcUI7O0lBQ3JCLDJCQUFtQjs7SUFDbkIsMEJBQWtCOztJQUNsQiwwQkFBa0I7O0lBQ2xCLGtDQUEwQjs7SUFDMUIsd0NBQWdDOztJQUNoQyw0QkFBbUI7O0FBR3JCO0lBNkNFO1FBaENBLFlBQU8sR0FBWTtZQUNqQixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO1lBQ3BCLElBQUksRUFBRSxJQUFJO1lBQ1YsUUFBUSxFQUFFLE9BQU87WUFDakIsVUFBVSxFQUFFLEtBQUs7WUFDakIsR0FBRyxFQUFFLEtBQUs7WUFDVixXQUFXLEVBQUUsRUFBRTtZQUNmLFFBQVEsRUFBRSxJQUFJO1lBQ2QsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsSUFBSTtZQUNiLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLHFCQUFxQixFQUFFLEtBQUs7WUFDNUIsU0FBUyxFQUFFLEVBQUU7U0FDZCxDQUFDO0lBbUJjLENBQUM7Ozs7SUFFakIsMENBQVE7OztJQUFSO1FBQUEsaUJBK0JDO1FBOUJDLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMscUJBQXFCO1lBQ2pELFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztTQUMxQixDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWxFLEVBQUUsQ0FBQyxTQUFTLENBQUMsb0RBQW9ELEVBQUU7WUFDakUsV0FBVyxFQUFFLDhCQUE4QjtTQUM1QyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6RCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU87Ozs7O1lBQUMsVUFBQyxDQUFDLEVBQUUsQ0FBQzs7b0JBQ2xCLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSSxDQUFDLEtBQUssQ0FBQztnQkFDckUsSUFBSSxDQUFDLENBQUMsYUFBYSxFQUFFO29CQUNuQixNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2lCQUN0RTtZQUNILENBQUMsRUFBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOztnQkE5RUYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLGdDQUErQztvQkFNL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7NkJBTDVCLHNFQUlSO2lCQUVGOzs7OzswQkFtQkUsU0FBUyxTQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7eUJBRXJDLEtBQUssU0FBQyxRQUFRO3VCQUNkLEtBQUssU0FBQyxNQUFNOzJCQUNaLEtBQUssU0FBQyxVQUFVOzZCQUNoQixLQUFLLFNBQUMsWUFBWTtzQkFDbEIsS0FBSyxTQUFDLEtBQUs7OEJBQ1gsS0FBSyxTQUFDLGFBQWE7OEJBQ25CLEtBQUssU0FBQyxhQUFhOzJCQUNuQixLQUFLLFNBQUMsVUFBVTswQkFDaEIsS0FBSyxTQUFDLFNBQVM7MEJBQ2YsS0FBSyxTQUFDLFNBQVM7a0NBQ2YsS0FBSyxTQUFDLGlCQUFpQjt3Q0FDdkIsS0FBSyxTQUFDLHVCQUF1Qjs0QkFDN0IsS0FBSyxTQUFDLFdBQVc7MEJBRWpCLEtBQUssU0FBQyxTQUFTOztJQW9DbEIsOEJBQUM7Q0FBQSxBQWhGRCxJQWdGQztTQXRFWSx1QkFBdUI7OztJQUVsQyx3Q0FBVzs7SUFDWCwwQ0FhRTs7SUFFRiwwQ0FBNEQ7O0lBRTVELHlDQUF3Qzs7SUFDeEMsdUNBQTZCOztJQUM3QiwyQ0FBcUM7O0lBQ3JDLDZDQUEwQzs7SUFDMUMsc0NBQTRCOztJQUM1Qiw4Q0FBMkM7O0lBQzNDLDhDQUEyQzs7SUFDM0MsMkNBQXNDOztJQUN0QywwQ0FBb0M7O0lBQ3BDLDBDQUFvQzs7SUFDcEMsa0RBQW9EOztJQUNwRCx3REFBZ0U7O0lBQ2hFLDRDQUF1Qzs7SUFFdkMsMENBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmRlY2xhcmUgdmFyIFdFOiBhbnk7XG5cbmludGVyZmFjZSBPcHRpb25zIHtcbiAgY2VudGVyPzogQXJyYXk8bnVtYmVyPjsgLy8gTGF0LCBsbmcgY2VudGVyIG9mIHZpZXcuXG4gIHpvb20/OiBudW1iZXI7IC8vIFNldHMgem9vbS5cbiAgYWx0aXR1ZGU/OiBudW1iZXI7IC8vIFNldHMgYWx0aXR1ZGUgb2YgdmlldyBpbiBtZXRlcnMuXG4gIGF0bW9zcGhlcmU/OiBib29sZWFuOyAvLyBTaG93IHRoZSBhdGhtb3NwaGVyZS4gQmVzdCB1c2VkIHdpdGggYmxhY2sgYmFja2dyb3VuZCBzZXRzIGJ5IENTUy5cbiAgc2t5PzogYm9vbGVhbjsgLy8gU2hvdyBzdGFycy5cbiAgbWluQWx0aXR1ZGU/OiBudW1iZXI7IC8vIFNldHMgbG93ZXIgYWx0aXR1ZGUgbGltaXQgZm9yIGludGVyYWN0aW9ucy5cbiAgbWF4QWx0aXR1ZGU/OiBudW1iZXI7IC8vIFNldHMgdXBwZXIgYWx0aXR1ZGUgbGltaXQgZm9yIGludGVyYWN0aW9ucy5cbiAgZHJhZ2dpbmc/OiBib29sZWFuOyAvLyBBbGxvdyBpbnRlcmFjdGlvbi5cbiAgdGlsdGluZz86IGJvb2xlYW47IC8vIEFsbG93IHRpbHQgdGhlIHZpZXcuXG4gIHpvb21pbmc/OiBib29sZWFuOyAvLyBBbGxvdyB6b29taW5nLlxuICBzY3JvbGxXaGVlbFpvb20/OiBib29sZWFuOyAvLyBTZXRzIG1vdXNlIHNjcm9sbCB3aGVlbCB6b29tLlxuICB1bmNvbnN0cmFpbmVkUm90YXRpb24/OiBib29sZWFuOyAvLyBNb2RpZmllcyB0aGUgaW50ZXJhY3Rpb24gdG8gYWxsb3cgYXJiaXRyYXJ5IHJvdGF0aW9uICh1bmNvbnN0cmFpbmVkIGJ5IFogYXhpcykuXG4gIHByb3h5SG9zdD86IHN0cmluZzsgLy8gTGluayB0byBwcm94eSBtYXAgdGlsZXMgY3Jvc3MtZG9tYWluICh3aXRob3V0IENPUlMgaGVhZGVycyBvbiBzZXJ2ZXIpLlxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzai1uZy13ZWJnbC1nbG9iZScsXG4gIHRlbXBsYXRlVXJsOiAnc2otbmctd2ViZ2wtZ2xvYmUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtgXG4gICAgLmNlc2l1bS1jcmVkaXQtdGV4dENvbnRhaW5lcntcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICBgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBTak5nV2ViZ2xHbG9iZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgZ2xvYmU6IGFueTtcbiAgb3B0aW9uczogT3B0aW9ucyA9IHtcbiAgICBjZW50ZXI6IFtudWxsLCBudWxsXSxcbiAgICB6b29tOiBudWxsLFxuICAgIGFsdGl0dWRlOiA3MDAwMDAwLFxuICAgIGF0bW9zcGhlcmU6IGZhbHNlLFxuICAgIHNreTogZmFsc2UsXG4gICAgbWluQWx0aXR1ZGU6IDIwLFxuICAgIGRyYWdnaW5nOiB0cnVlLFxuICAgIHRpbHRpbmc6IHRydWUsXG4gICAgem9vbWluZzogdHJ1ZSxcbiAgICBzY3JvbGxXaGVlbFpvb206IHRydWUsXG4gICAgdW5jb25zdHJhaW5lZFJvdGF0aW9uOiBmYWxzZSxcbiAgICBwcm94eUhvc3Q6ICcnXG4gIH07XG5cbiAgQFZpZXdDaGlsZCgnc2pHbG9iZScsIHsgc3RhdGljOiB0cnVlIH0pIHNqR2xvYmU6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KCdjZW50ZXInKSBjZW50ZXI/OiBBcnJheTxudW1iZXI+OyAvLyBMYXQsIGxuZyBjZW50ZXIgb2Ygdmlldy5cbiAgQElucHV0KCd6b29tJykgem9vbT86IG51bWJlcjsgLy8gU2V0cyB6b29tLlxuICBASW5wdXQoJ2FsdGl0dWRlJykgYWx0aXR1ZGU/OiBudW1iZXI7IC8vIFNldHMgYWx0aXR1ZGUgb2YgdmlldyBpbiBtZXRlcnMuXG4gIEBJbnB1dCgnYXRtb3NwaGVyZScpIGF0bW9zcGhlcmU/OiBib29sZWFuOyAvLyBTaG93IHRoZSBhdGhtb3NwaGVyZS4gQmVzdCB1c2VkIHdpdGggYmxhY2sgYmFja2dyb3VuZCBzZXRzIGJ5IENTUy5cbiAgQElucHV0KCdza3knKSBza3k/OiBib29sZWFuOyAvLyBTaG93IHN0YXJzLlxuICBASW5wdXQoJ21pbkFsdGl0dWRlJykgbWluQWx0aXR1ZGU/OiBudW1iZXI7IC8vIFNldHMgbG93ZXIgYWx0aXR1ZGUgbGltaXQgZm9yIGludGVyYWN0aW9ucy5cbiAgQElucHV0KCdtYXhBbHRpdHVkZScpIG1heEFsdGl0dWRlPzogbnVtYmVyOyAvLyBTZXRzIHVwcGVyIGFsdGl0dWRlIGxpbWl0IGZvciBpbnRlcmFjdGlvbnMuXG4gIEBJbnB1dCgnZHJhZ2dpbmcnKSBkcmFnZ2luZz86IGJvb2xlYW47IC8vIEFsbG93IGludGVyYWN0aW9uLlxuICBASW5wdXQoJ3RpbHRpbmcnKSB0aWx0aW5nPzogYm9vbGVhbjsgLy8gQWxsb3cgdGlsdCB0aGUgdmlldy5cbiAgQElucHV0KCd6b29taW5nJykgem9vbWluZz86IGJvb2xlYW47IC8vIEFsbG93IHpvb21pbmcuXG4gIEBJbnB1dCgnc2Nyb2xsV2hlZWxab29tJykgc2Nyb2xsV2hlZWxab29tPzogYm9vbGVhbjsgLy8gU2V0cyBtb3VzZSBzY3JvbGwgd2hlZWwgem9vbS5cbiAgQElucHV0KCd1bmNvbnN0cmFpbmVkUm90YXRpb24nKSB1bmNvbnN0cmFpbmVkUm90YXRpb24/OiBib29sZWFuOyAvLyBNb2RpZmllcyB0aGUgaW50ZXJhY3Rpb24gdG8gYWxsb3cgYXJiaXRyYXJ5IHJvdGF0aW9uICh1bmNvbnN0cmFpbmVkIGJ5IFogYXhpcykuXG4gIEBJbnB1dCgncHJveHlIb3N0JykgcHJveHlIb3N0Pzogc3RyaW5nOyAvLyBMaW5rIHRvIHByb3h5IG1hcCB0aWxlcyBjcm9zcy1kb21haW4gKHdpdGhvdXQgQ09SUyBoZWFkZXJzIG9uIHNlcnZlcikuXG5cbiAgQElucHV0KCdtYXJrZXJzJykgbWFya2VyczogQXJyYXk8YW55PjsgLy8gTWFya2VyIGRhdGFcbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICBjZW50ZXI6IHRoaXMuY2VudGVyLFxuICAgICAgem9vbTogdGhpcy56b29tLFxuICAgICAgYWx0aXR1ZGU6IHRoaXMuYWx0aXR1ZGUsXG4gICAgICBhdG1vc3BoZXJlOiB0aGlzLmF0bW9zcGhlcmUsXG4gICAgICBza3k6IHRoaXMuc2t5LFxuICAgICAgbWluQWx0aXR1ZGU6IHRoaXMubWluQWx0aXR1ZGUsXG4gICAgICBtYXhBbHRpdHVkZTogdGhpcy5tYXhBbHRpdHVkZSxcbiAgICAgIGRyYWdnaW5nOiB0aGlzLmRyYWdnaW5nLFxuICAgICAgdGlsdGluZzogdGhpcy50aWx0aW5nLFxuICAgICAgem9vbWluZzogdGhpcy56b29taW5nLFxuICAgICAgc2Nyb2xsV2hlZWxab29tOiB0aGlzLnNjcm9sbFdoZWVsWm9vbSxcbiAgICAgIHVuY29uc3RyYWluZWRSb3RhdGlvbjogdGhpcy51bmNvbnN0cmFpbmVkUm90YXRpb24sXG4gICAgICBwcm94eUhvc3Q6IHRoaXMucHJveHlIb3N0XG4gICAgfTtcbiAgICB0aGlzLmdsb2JlID0gbmV3IFdFLm1hcCh0aGlzLnNqR2xvYmUubmF0aXZlRWxlbWVudCwgdGhpcy5vcHRpb25zKTtcblxuICAgIFdFLnRpbGVMYXllcignaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLCB7XG4gICAgICBhdHRyaWJ1dGlvbjogJ8KpIE9wZW5TdHJlZXRNYXAgY29udHJpYnV0b3JzJ1xuICAgIH0pLmFkZFRvKHRoaXMuZ2xvYmUpO1xuXG4gICAgY29uc29sZS5sb2codGhpcy5tYXJrZXJzKTtcbiAgICBpZiAodGhpcy5tYXJrZXJzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5tYXJrZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubWFya2Vycy5mb3JFYWNoKChtLCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hcmtlciA9IFdFLm1hcmtlcihbbS5sYXRpdHVkZSwgbS5sb25naXR1ZGVdKS5hZGRUbyh0aGlzLmdsb2JlKTtcbiAgICAgICAgaWYgKG0uaXNQb3B1cEVuYWJsZSkge1xuICAgICAgICAgIG1hcmtlci5iaW5kUG9wdXAobS5wb3B1cEhUTUwsIHsgbWF4V2lkdGg6IDIwMCwgY2xvc2VCdXR0b246IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxufVxuIl19