Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@ngneat/helipopper

Package Overview
Dependencies
Maintainers
4
Versions
81
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ngneat/helipopper - npm Package Compare versions

Comparing version 1.4.0 to 1.4.1

13

bundles/ngneat-helipopper.umd.js

@@ -292,5 +292,2 @@ (function (global, factory) {

}
function zoneStable(zone) {
return zone.onStable.pipe(operators.take(1));
}
function isString(value) {

@@ -424,5 +421,7 @@ return typeof value === 'string';

else {
rxjs.forkJoin([inView(this.host.nativeElement), zoneStable(this.zone)])
.pipe(operators.takeUntil(this._destroy))
.subscribe(function () { return _this.create(); });
requestAnimationFrame(function () {
inView(_this.host.nativeElement)
.pipe(operators.takeUntil(_this._destroy))
.subscribe(function () { return _this.create(); });
});
}

@@ -578,3 +577,3 @@ },

if (this.showOnlyOnTextOverflow) {
zoneStable(this.zone).subscribe(function () { return _this.markDisabled(_this.isElementOverflow() === false); });
requestAnimationFrame(function () { return _this.markDisabled(_this.isElementOverflow() === false); });
}

@@ -581,0 +580,0 @@ };

@@ -1,2 +0,2 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("tippy.js"),require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@ngneat/helipopper",["exports","@angular/core","tippy.js","rxjs","rxjs/operators"],t):t(((e=e||self).ngneat=e.ngneat||{},e.ngneat.helipopper={}),e.ng.core,e.tippy,e.rxjs,e.rxjs.operators)}(this,(function(e,t,o,n,i){"use strict";o=o&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o;var r=function(){return(r=Object.assign||function(e){for(var t,o=1,n=arguments.length;o<n;o++)for(var i in t=arguments[o])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};function p(e,t,o,n){var i,r=arguments.length,p=r<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)p=Reflect.decorate(e,t,o,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(p=(r<3?i(p):r>3?i(t,o,p):i(t,o))||p);return r>3&&p&&Object.defineProperty(t,o,p),p}function s(e,t){return function(o,n){t(o,n,e)}}function l(e,t){var o="function"==typeof Symbol&&e[Symbol.iterator];if(!o)return e;var n,i,r=o.call(e),p=[];try{for(;(void 0===t||t-- >0)&&!(n=r.next()).done;)p.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(o=r.return)&&o.call(r)}finally{if(i)throw i.error}}return p}var c="IntersectionObserver"in window;var a="ResizeObserver"in window;function h(e,t){return a?function(e,t){void 0===t&&(t={box:"border-box"});return new n.Observable((function(o){var n=new ResizeObserver((function(e){var t=l(e,1)[0];t.borderBoxSize?o.next({width:t.borderBoxSize.inlineSize,height:t.borderBoxSize.blockSize}):o.next({width:t.target.offsetWidth,height:t.target.offsetHeight})}));return n.observe(e,t),function(){return n.disconnect()}}))}(e,t).pipe(i.auditTime(150)):function(e){return n.fromEvent(window,"resize").pipe(i.auditTime(150),i.map((function(){return{width:e.offsetWidth,height:e.offsetHeight}})),i.distinctUntilChanged((function(e,t){return e.width===t.width&&e.height===t.height})))}(e)}function u(e){return e instanceof t.ElementRef?e.nativeElement:e}function f(e){return e.onStable.pipe(i.take(1))}function d(e,t){Array.isArray(t)?t.forEach((function(t){return e.classList.add(t)})):e.classList.add(t)}var v=function(){function e(e){this.viewRef=e.createEmbeddedView({}),this.viewRef.detectChanges()}return Object.defineProperty(e.prototype,"elementRef",{get:function(){return this.viewRef.rootNodes[0]},enumerable:!0,configurable:!0}),e.prototype.destroy=function(){this.viewRef.destroy()},e}(),y=new t.InjectionToken("HELIPOPPER_CONFIG"),g={options:{},textOverflow:!1,appendTo:document.body,placement:"top",variation:"tooltip",disabled:!1,allowClose:!0},b=function(){function e(e,t,o,i,r,p){this.host=e,this.appRef=t,this.zone=o,this.resolver=i,this.hostInjector=r,this.config=p,this.helipopperOptions=g.options,this.showOnlyOnTextOverflow=g.textOverflow,this.helipopperAppendTo=g.appendTo,this.helipopperAllowClose=g.allowClose,this.helipopperClose=new n.Subject,this.helipopperVisible=new n.Subject,this._destroy=new n.Subject,this._placement=g.placement,this._disabled=!1,this._variation=g.variation,this.whenStable=new n.Subject,this.mergedConfig=this.createConfig(p)}return Object.defineProperty(e.prototype,"placement",{set:function(e){this._placement=e,this.setProps({placement:e})},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"variation",{set:function(e){this._variation=e,this.setProps(this.resolveTheme())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"disabled",{set:function(e){this._disabled=e,this.markDisabled(this._disabled)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"sticky",{set:function(e){this.instance&&(e?(this.setProps({trigger:"manual",hideOnClick:!1}),this.show()):(this.hide(),this.setProps({trigger:this.helipopperTrigger})))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"helipopper",{set:function(e){var t,o,r=this;this._content=e,this.instance?this.checkOverflow():n.forkJoin([(t=this.host.nativeElement,void 0===o&&(o={root:null,threshold:.3}),new n.Observable((function(e){c||(e.next(),e.complete());var n=new IntersectionObserver((function(t){l(t,1)[0].isIntersecting&&(e.next(),e.complete())}),o);return n.observe(t),function(){return n.disconnect()}}))),f(this.zone)]).pipe(i.takeUntil(this._destroy)).subscribe((function(){return r.create()}))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"_tooltipTarget",{get:function(){return u(this.triggerTarget)||this.host.nativeElement},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"_tooltipHost",{get:function(){return u(this.helipopperHost)||this.host.nativeElement},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isTooltip",{get:function(){return"tooltip"===this._variation},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isPopper",{get:function(){return"popper"===this._variation},enumerable:!0,configurable:!0}),e.prototype.setProps=function(e){this.instance&&this.instance.setProps(e)},e.prototype.hide=function(){this.instance.hide()},e.prototype.show=function(){this.instance.show()},e.prototype.ngOnDestroy=function(){this.destroyView(),this.instance&&this.instance.destroy(),this.instance=null,this._destroy.next()},e.prototype.destroy=function(){this.ngOnDestroy()},e.prototype.destroyView=function(){this.tplPortal&&this.destroyTemplate(),this.innerComponentRef&&this.destroyComponent()},e.prototype.create=function(){var e=this;this.zone.runOutsideAngular((function(){return e.createInstance()}))},e.prototype.createInstance=function(){var e=this;this.showOnlyOnTextOverflow&&h(this._tooltipHost).pipe(i.takeUntil(this._destroy)).subscribe((function(){e.markDisabled(!1===e.isElementOverflow())})),this.helipopperTrigger=this.resolveTrigger(),this.instance=o(this._tooltipHost,r(r({content:void 0,appendTo:this.getParent(),arrow:!this.isTooltip,allowHTML:!0,zIndex:1e6,trigger:this.helipopperTrigger,placement:this._placement,triggerTarget:this._tooltipTarget,hideOnClick:this.helipopperAllowClose,onCreate:function(t){e.helipopperClass&&d(t.popper,e.helipopperClass)},onShow:function(t){e.zone.run((function(){return e.instance.setContent(e.resolveContent())})),e.helipopperAllowClose&&e.isPopper&&e.addCloseButton(t),e.helipopperVisible.next(!0)},onHidden:function(t){e.helipopperAllowClose&&e.isPopper&&e.removeCloseButton(t),e.destroyView(),e.helipopperClose.next(),e.helipopperVisible.next(!1)}},this.resolveTheme()),this.helipopperOptions)),this.whenStable.next(!0),this.markDisabled(this._disabled)},e.prototype.resolveTrigger=function(){return this.helipopperTrigger||(this.isTooltip?"mouseenter":"click")},e.prototype.resolveTemplate=function(e){return this.tplPortal&&this.destroyTemplate(),this.tplPortal=new v(e),this.appRef.attachView(this.tplPortal.viewRef),this.tplPortal.elementRef},e.prototype.isElementOverflow=function(){var e=this._tooltipTarget,t=e.parentElement,o=e.offsetWidth>t.offsetWidth,n=e.offsetWidth<e.scrollWidth;return o||n},e.prototype.getParent=function(){var e,t,o;return"string"==typeof this.helipopperAppendTo?(t=this.host.nativeElement,o=this.helipopperAppendTo,window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t,o=(this.document||this.ownerDocument).querySelectorAll(e),n=this;do{for(t=o.length;--t>=0&&o.item(t)!==n;);}while(t<0&&(n=n.parentElement));return n}),e=t.closest(o)):e=this.helipopperAppendTo,e||document.body},e.prototype.markDisabled=function(e){void 0===e&&(e=!0),this.instance&&(e?this.instance.disable():this.instance.enable())},e.prototype.resolveTheme=function(){return{offset:this.helipopperOffset||[0,this.isTooltip?5:10],theme:this.isTooltip?null:"light",arrow:!1===this.isTooltip,animation:this.isTooltip?"scale":null,interactive:!this.isTooltip}},e.prototype.addCloseButton=function(e){var t,o=this,i=e.popper,r=this.mergedConfig.closeIcon,p=(t="div",document.createElement(t));d(p,"tippy-close"),p.innerHTML=r;var s=n.fromEvent(p,"click").subscribe((function(){return o.hide()}));i.appendChild(p),e.closeButtonElement=p,e.closeButtonSubscription=s},e.prototype.removeCloseButton=function(e){e.popper.removeChild(e.closeButtonElement),e.closeButtonSubscription.unsubscribe(),e.closeButtonElement=null,e.closeButtonSubscription=null},e.prototype.checkOverflow=function(){var e=this;this.showOnlyOnTextOverflow&&f(this.zone).subscribe((function(){return e.markDisabled(!1===e.isElementOverflow())}))},e.prototype.destroyTemplate=function(){this.appRef.detachView(this.tplPortal.viewRef),this.tplPortal.destroy(),this.tplPortal=null},e.prototype.createConfig=function(e){return r(r({},{closeIcon:'\n <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 24 24" fit="" preserveAspectRatio="xMidYMid meet" focusable="false">\n<path d="M12.793 12l4.039-4.025c0.219-0.219 0.224-0.578 0.012-0.802-0.213-0.225-0.563-0.231-0.782-0.011l-4.062 4.049-4.062-4.049c-0.219-0.22-0.569-0.213-0.782 0.011s-0.208 0.583 0.012 0.802l4.039 4.025-4.039 4.025c-0.22 0.219-0.224 0.578-0.012 0.802 0.108 0.115 0.252 0.172 0.397 0.172 0.138 0 0.278-0.053 0.385-0.161l4.062-4.049 4.062 4.049c0.107 0.108 0.245 0.161 0.385 0.161 0.144 0 0.287-0.058 0.397-0.172 0.212-0.225 0.207-0.583-0.012-0.802l-4.039-4.025z"></path>\n</svg>\n ',beforeRender:function(e){return e}}),e)},e.prototype.resolveComponent=function(e){var t=this.resolver.resolveComponentFactory(e),o=this.injector||this.hostInjector;return this.innerComponentRef=t.create(o),this.appRef.attachView(this.innerComponentRef.hostView),this.innerComponentRef.hostView.detectChanges(),this.innerComponentRef.location.nativeElement},e.prototype.destroyComponent=function(){this.innerComponentRef.destroy(),this.appRef.attachView(this.innerComponentRef.hostView),this.innerComponentRef=null},e.prototype.resolveContent=function(){var e=this._content;return e instanceof t.TemplateRef?this.resolveTemplate(e):"string"==typeof e?this.mergedConfig.beforeRender(e):this.resolveComponent(e)},e.ctorParameters=function(){return[{type:t.ElementRef},{type:t.ApplicationRef},{type:t.NgZone},{type:t.ComponentFactoryResolver},{type:t.Injector},{type:void 0,decorators:[{type:t.Inject,args:[y]}]}]},p([t.Input()],e.prototype,"helipopperOptions",void 0),p([t.Input("helipopperTextOverflow")],e.prototype,"showOnlyOnTextOverflow",void 0),p([t.Input()],e.prototype,"triggerTarget",void 0),p([t.Input()],e.prototype,"helipopperHost",void 0),p([t.Input()],e.prototype,"helipopperAppendTo",void 0),p([t.Input()],e.prototype,"helipopperTrigger",void 0),p([t.Input()],e.prototype,"helipopperAllowClose",void 0),p([t.Input()],e.prototype,"helipopperClass",void 0),p([t.Input()],e.prototype,"helipopperOffset",void 0),p([t.Input("helipopperInjector")],e.prototype,"injector",void 0),p([t.Input("helipopperPlacement")],e.prototype,"placement",null),p([t.Input("helipopperVariation")],e.prototype,"variation",null),p([t.Input("helipopperDisabled")],e.prototype,"disabled",null),p([t.Input("helipopperSticky")],e.prototype,"sticky",null),p([t.Input()],e.prototype,"helipopper",null),p([t.Output()],e.prototype,"helipopperClose",void 0),p([t.Output()],e.prototype,"helipopperVisible",void 0),e=p([t.Directive({selector:"[helipopper]",exportAs:"helipopper"}),s(5,t.Inject(y))],e)}(),m=function(){function e(){}var o;return o=e,e.forRoot=function(e){return void 0===e&&(e={}),{ngModule:o,providers:[{provide:y,useValue:e}]}},e=o=p([t.NgModule({declarations:[b],exports:[b]})],e)}(),w=function(){function e(e,t,o,n,i){this.appRef=e,this.zone=t,this.resolver=o,this.hostInjector=n,this.config=i}return e.prototype.open=function(e,t,o){var n=new b(e,this.appRef,this.zone,this.resolver,this.hostInjector,this.config);return n.helipopper=t,n.helipopperOptions=(null==o?void 0:o.options)||g.options,n.showOnlyOnTextOverflow=O(null==o?void 0:o.textOverflow)?null==o?void 0:o.textOverflow:g.textOverflow,n.triggerTarget=null==o?void 0:o.triggerTarget,n.helipopperAppendTo=(null==o?void 0:o.appendTo)||g.appendTo,n.helipopperTrigger=null==o?void 0:o.trigger,n.helipopperClass=null==o?void 0:o.class,n.helipopperOffset=null==o?void 0:o.offset,n.injector=null==o?void 0:o.injector,n.placement=(null==o?void 0:o.placement)||g.placement,n.variation=(null==o?void 0:o.variation)||g.variation,n.disabled=O(null==o?void 0:o.disabled)?null==o?void 0:o.disabled:g.disabled,n.sticky=null==o?void 0:o.sticky,n.helipopperAllowClose=O(null==o?void 0:o.allowClose)?null==o?void 0:o.allowClose:g.allowClose,n.whenStable.subscribe((function(){return n.show()})),n},e.ctorParameters=function(){return[{type:t.ApplicationRef},{type:t.NgZone},{type:t.ComponentFactoryResolver},{type:t.Injector},{type:void 0,decorators:[{type:t.Inject,args:[y]}]}]},e.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new e(t.ɵɵinject(t.ApplicationRef),t.ɵɵinject(t.NgZone),t.ɵɵinject(t.ComponentFactoryResolver),t.ɵɵinject(t.INJECTOR),t.ɵɵinject(y))},token:e,providedIn:"root"}),e=p([t.Injectable({providedIn:"root"}),s(4,t.Inject(y))],e)}();function O(e){return void 0!==e}e.HelipopperDirective=b,e.HelipopperModule=m,e.HelipopperService=w,e.ɵb=y,Object.defineProperty(e,"__esModule",{value:!0})}));
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("tippy.js"),require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@ngneat/helipopper",["exports","@angular/core","tippy.js","rxjs","rxjs/operators"],t):t(((e=e||self).ngneat=e.ngneat||{},e.ngneat.helipopper={}),e.ng.core,e.tippy,e.rxjs,e.rxjs.operators)}(this,(function(e,t,o,n,i){"use strict";o=o&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o;var r=function(){return(r=Object.assign||function(e){for(var t,o=1,n=arguments.length;o<n;o++)for(var i in t=arguments[o])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};function p(e,t,o,n){var i,r=arguments.length,p=r<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)p=Reflect.decorate(e,t,o,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(p=(r<3?i(p):r>3?i(t,o,p):i(t,o))||p);return r>3&&p&&Object.defineProperty(t,o,p),p}function s(e,t){return function(o,n){t(o,n,e)}}function l(e,t){var o="function"==typeof Symbol&&e[Symbol.iterator];if(!o)return e;var n,i,r=o.call(e),p=[];try{for(;(void 0===t||t-- >0)&&!(n=r.next()).done;)p.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(o=r.return)&&o.call(r)}finally{if(i)throw i.error}}return p}var a="IntersectionObserver"in window;var c="ResizeObserver"in window;function h(e,t){return c?function(e,t){void 0===t&&(t={box:"border-box"});return new n.Observable((function(o){var n=new ResizeObserver((function(e){var t=l(e,1)[0];t.borderBoxSize?o.next({width:t.borderBoxSize.inlineSize,height:t.borderBoxSize.blockSize}):o.next({width:t.target.offsetWidth,height:t.target.offsetHeight})}));return n.observe(e,t),function(){return n.disconnect()}}))}(e,t).pipe(i.auditTime(150)):function(e){return n.fromEvent(window,"resize").pipe(i.auditTime(150),i.map((function(){return{width:e.offsetWidth,height:e.offsetHeight}})),i.distinctUntilChanged((function(e,t){return e.width===t.width&&e.height===t.height})))}(e)}function u(e){return e instanceof t.ElementRef?e.nativeElement:e}function f(e,t){Array.isArray(t)?t.forEach((function(t){return e.classList.add(t)})):e.classList.add(t)}var d=function(){function e(e){this.viewRef=e.createEmbeddedView({}),this.viewRef.detectChanges()}return Object.defineProperty(e.prototype,"elementRef",{get:function(){return this.viewRef.rootNodes[0]},enumerable:!0,configurable:!0}),e.prototype.destroy=function(){this.viewRef.destroy()},e}(),v=new t.InjectionToken("HELIPOPPER_CONFIG"),y={options:{},textOverflow:!1,appendTo:document.body,placement:"top",variation:"tooltip",disabled:!1,allowClose:!0},g=function(){function e(e,t,o,i,r,p){this.host=e,this.appRef=t,this.zone=o,this.resolver=i,this.hostInjector=r,this.config=p,this.helipopperOptions=y.options,this.showOnlyOnTextOverflow=y.textOverflow,this.helipopperAppendTo=y.appendTo,this.helipopperAllowClose=y.allowClose,this.helipopperClose=new n.Subject,this.helipopperVisible=new n.Subject,this._destroy=new n.Subject,this._placement=y.placement,this._disabled=!1,this._variation=y.variation,this.whenStable=new n.Subject,this.mergedConfig=this.createConfig(p)}return Object.defineProperty(e.prototype,"placement",{set:function(e){this._placement=e,this.setProps({placement:e})},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"variation",{set:function(e){this._variation=e,this.setProps(this.resolveTheme())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"disabled",{set:function(e){this._disabled=e,this.markDisabled(this._disabled)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"sticky",{set:function(e){this.instance&&(e?(this.setProps({trigger:"manual",hideOnClick:!1}),this.show()):(this.hide(),this.setProps({trigger:this.helipopperTrigger})))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"helipopper",{set:function(e){var t=this;this._content=e,this.instance?this.checkOverflow():requestAnimationFrame((function(){var e,o;(e=t.host.nativeElement,void 0===o&&(o={root:null,threshold:.3}),new n.Observable((function(t){a||(t.next(),t.complete());var n=new IntersectionObserver((function(e){l(e,1)[0].isIntersecting&&(t.next(),t.complete())}),o);return n.observe(e),function(){return n.disconnect()}}))).pipe(i.takeUntil(t._destroy)).subscribe((function(){return t.create()}))}))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"_tooltipTarget",{get:function(){return u(this.triggerTarget)||this.host.nativeElement},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"_tooltipHost",{get:function(){return u(this.helipopperHost)||this.host.nativeElement},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isTooltip",{get:function(){return"tooltip"===this._variation},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isPopper",{get:function(){return"popper"===this._variation},enumerable:!0,configurable:!0}),e.prototype.setProps=function(e){this.instance&&this.instance.setProps(e)},e.prototype.hide=function(){this.instance.hide()},e.prototype.show=function(){this.instance.show()},e.prototype.ngOnDestroy=function(){this.destroyView(),this.instance&&this.instance.destroy(),this.instance=null,this._destroy.next()},e.prototype.destroy=function(){this.ngOnDestroy()},e.prototype.destroyView=function(){this.tplPortal&&this.destroyTemplate(),this.innerComponentRef&&this.destroyComponent()},e.prototype.create=function(){var e=this;this.zone.runOutsideAngular((function(){return e.createInstance()}))},e.prototype.createInstance=function(){var e=this;this.showOnlyOnTextOverflow&&h(this._tooltipHost).pipe(i.takeUntil(this._destroy)).subscribe((function(){e.markDisabled(!1===e.isElementOverflow())})),this.helipopperTrigger=this.resolveTrigger(),this.instance=o(this._tooltipHost,r(r({content:void 0,appendTo:this.getParent(),arrow:!this.isTooltip,allowHTML:!0,zIndex:1e6,trigger:this.helipopperTrigger,placement:this._placement,triggerTarget:this._tooltipTarget,hideOnClick:this.helipopperAllowClose,onCreate:function(t){e.helipopperClass&&f(t.popper,e.helipopperClass)},onShow:function(t){e.zone.run((function(){return e.instance.setContent(e.resolveContent())})),e.helipopperAllowClose&&e.isPopper&&e.addCloseButton(t),e.helipopperVisible.next(!0)},onHidden:function(t){e.helipopperAllowClose&&e.isPopper&&e.removeCloseButton(t),e.destroyView(),e.helipopperClose.next(),e.helipopperVisible.next(!1)}},this.resolveTheme()),this.helipopperOptions)),this.whenStable.next(!0),this.markDisabled(this._disabled)},e.prototype.resolveTrigger=function(){return this.helipopperTrigger||(this.isTooltip?"mouseenter":"click")},e.prototype.resolveTemplate=function(e){return this.tplPortal&&this.destroyTemplate(),this.tplPortal=new d(e),this.appRef.attachView(this.tplPortal.viewRef),this.tplPortal.elementRef},e.prototype.isElementOverflow=function(){var e=this._tooltipTarget,t=e.parentElement,o=e.offsetWidth>t.offsetWidth,n=e.offsetWidth<e.scrollWidth;return o||n},e.prototype.getParent=function(){var e,t,o;return"string"==typeof this.helipopperAppendTo?(t=this.host.nativeElement,o=this.helipopperAppendTo,window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t,o=(this.document||this.ownerDocument).querySelectorAll(e),n=this;do{for(t=o.length;--t>=0&&o.item(t)!==n;);}while(t<0&&(n=n.parentElement));return n}),e=t.closest(o)):e=this.helipopperAppendTo,e||document.body},e.prototype.markDisabled=function(e){void 0===e&&(e=!0),this.instance&&(e?this.instance.disable():this.instance.enable())},e.prototype.resolveTheme=function(){return{offset:this.helipopperOffset||[0,this.isTooltip?5:10],theme:this.isTooltip?null:"light",arrow:!1===this.isTooltip,animation:this.isTooltip?"scale":null,interactive:!this.isTooltip}},e.prototype.addCloseButton=function(e){var t,o=this,i=e.popper,r=this.mergedConfig.closeIcon,p=(t="div",document.createElement(t));f(p,"tippy-close"),p.innerHTML=r;var s=n.fromEvent(p,"click").subscribe((function(){return o.hide()}));i.appendChild(p),e.closeButtonElement=p,e.closeButtonSubscription=s},e.prototype.removeCloseButton=function(e){e.popper.removeChild(e.closeButtonElement),e.closeButtonSubscription.unsubscribe(),e.closeButtonElement=null,e.closeButtonSubscription=null},e.prototype.checkOverflow=function(){var e=this;this.showOnlyOnTextOverflow&&requestAnimationFrame((function(){return e.markDisabled(!1===e.isElementOverflow())}))},e.prototype.destroyTemplate=function(){this.appRef.detachView(this.tplPortal.viewRef),this.tplPortal.destroy(),this.tplPortal=null},e.prototype.createConfig=function(e){return r(r({},{closeIcon:'\n <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 24 24" fit="" preserveAspectRatio="xMidYMid meet" focusable="false">\n<path d="M12.793 12l4.039-4.025c0.219-0.219 0.224-0.578 0.012-0.802-0.213-0.225-0.563-0.231-0.782-0.011l-4.062 4.049-4.062-4.049c-0.219-0.22-0.569-0.213-0.782 0.011s-0.208 0.583 0.012 0.802l4.039 4.025-4.039 4.025c-0.22 0.219-0.224 0.578-0.012 0.802 0.108 0.115 0.252 0.172 0.397 0.172 0.138 0 0.278-0.053 0.385-0.161l4.062-4.049 4.062 4.049c0.107 0.108 0.245 0.161 0.385 0.161 0.144 0 0.287-0.058 0.397-0.172 0.212-0.225 0.207-0.583-0.012-0.802l-4.039-4.025z"></path>\n</svg>\n ',beforeRender:function(e){return e}}),e)},e.prototype.resolveComponent=function(e){var t=this.resolver.resolveComponentFactory(e),o=this.injector||this.hostInjector;return this.innerComponentRef=t.create(o),this.appRef.attachView(this.innerComponentRef.hostView),this.innerComponentRef.hostView.detectChanges(),this.innerComponentRef.location.nativeElement},e.prototype.destroyComponent=function(){this.innerComponentRef.destroy(),this.appRef.attachView(this.innerComponentRef.hostView),this.innerComponentRef=null},e.prototype.resolveContent=function(){var e=this._content;return e instanceof t.TemplateRef?this.resolveTemplate(e):"string"==typeof e?this.mergedConfig.beforeRender(e):this.resolveComponent(e)},e.ctorParameters=function(){return[{type:t.ElementRef},{type:t.ApplicationRef},{type:t.NgZone},{type:t.ComponentFactoryResolver},{type:t.Injector},{type:void 0,decorators:[{type:t.Inject,args:[v]}]}]},p([t.Input()],e.prototype,"helipopperOptions",void 0),p([t.Input("helipopperTextOverflow")],e.prototype,"showOnlyOnTextOverflow",void 0),p([t.Input()],e.prototype,"triggerTarget",void 0),p([t.Input()],e.prototype,"helipopperHost",void 0),p([t.Input()],e.prototype,"helipopperAppendTo",void 0),p([t.Input()],e.prototype,"helipopperTrigger",void 0),p([t.Input()],e.prototype,"helipopperAllowClose",void 0),p([t.Input()],e.prototype,"helipopperClass",void 0),p([t.Input()],e.prototype,"helipopperOffset",void 0),p([t.Input("helipopperInjector")],e.prototype,"injector",void 0),p([t.Input("helipopperPlacement")],e.prototype,"placement",null),p([t.Input("helipopperVariation")],e.prototype,"variation",null),p([t.Input("helipopperDisabled")],e.prototype,"disabled",null),p([t.Input("helipopperSticky")],e.prototype,"sticky",null),p([t.Input()],e.prototype,"helipopper",null),p([t.Output()],e.prototype,"helipopperClose",void 0),p([t.Output()],e.prototype,"helipopperVisible",void 0),e=p([t.Directive({selector:"[helipopper]",exportAs:"helipopper"}),s(5,t.Inject(v))],e)}(),m=function(){function e(){}var o;return o=e,e.forRoot=function(e){return void 0===e&&(e={}),{ngModule:o,providers:[{provide:v,useValue:e}]}},e=o=p([t.NgModule({declarations:[g],exports:[g]})],e)}(),b=function(){function e(e,t,o,n,i){this.appRef=e,this.zone=t,this.resolver=o,this.hostInjector=n,this.config=i}return e.prototype.open=function(e,t,o){var n=new g(e,this.appRef,this.zone,this.resolver,this.hostInjector,this.config);return n.helipopper=t,n.helipopperOptions=(null==o?void 0:o.options)||y.options,n.showOnlyOnTextOverflow=w(null==o?void 0:o.textOverflow)?null==o?void 0:o.textOverflow:y.textOverflow,n.triggerTarget=null==o?void 0:o.triggerTarget,n.helipopperAppendTo=(null==o?void 0:o.appendTo)||y.appendTo,n.helipopperTrigger=null==o?void 0:o.trigger,n.helipopperClass=null==o?void 0:o.class,n.helipopperOffset=null==o?void 0:o.offset,n.injector=null==o?void 0:o.injector,n.placement=(null==o?void 0:o.placement)||y.placement,n.variation=(null==o?void 0:o.variation)||y.variation,n.disabled=w(null==o?void 0:o.disabled)?null==o?void 0:o.disabled:y.disabled,n.sticky=null==o?void 0:o.sticky,n.helipopperAllowClose=w(null==o?void 0:o.allowClose)?null==o?void 0:o.allowClose:y.allowClose,n.whenStable.subscribe((function(){return n.show()})),n},e.ctorParameters=function(){return[{type:t.ApplicationRef},{type:t.NgZone},{type:t.ComponentFactoryResolver},{type:t.Injector},{type:void 0,decorators:[{type:t.Inject,args:[v]}]}]},e.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new e(t.ɵɵinject(t.ApplicationRef),t.ɵɵinject(t.NgZone),t.ɵɵinject(t.ComponentFactoryResolver),t.ɵɵinject(t.INJECTOR),t.ɵɵinject(v))},token:e,providedIn:"root"}),e=p([t.Injectable({providedIn:"root"}),s(4,t.Inject(v))],e)}();function w(e){return void 0!==e}e.HelipopperDirective=g,e.HelipopperModule=m,e.HelipopperService=b,e.ɵb=v,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=ngneat-helipopper.umd.min.js.map
import { __decorate, __param } from "tslib";
import { ApplicationRef, ComponentFactoryResolver, ComponentRef, Directive, ElementRef, Inject, Injector, Input, NgZone, OnDestroy, Output, TemplateRef, Type } from '@angular/core';
import tippy from 'tippy.js';
import { forkJoin, fromEvent, Subject } from 'rxjs';
import { addClass, closest, coerceElement, createElement, dimensionsChanges, inView, isString, TemplatePortal, zoneStable } from './utils';
import { fromEvent, Subject } from 'rxjs';
import { addClass, closest, coerceElement, createElement, dimensionsChanges, inView, isString, TemplatePortal } from './utils';
import { takeUntil } from 'rxjs/operators';

@@ -66,5 +66,7 @@ import { HELIPOPPER_CONFIG } from './helipopper.types';

else {
forkJoin([inView(this.host.nativeElement), zoneStable(this.zone)])
.pipe(takeUntil(this._destroy))
.subscribe(() => this.create());
requestAnimationFrame(() => {
inView(this.host.nativeElement)
.pipe(takeUntil(this._destroy))
.subscribe(() => this.create());
});
}

@@ -196,3 +198,3 @@ }

if (this.showOnlyOnTextOverflow) {
zoneStable(this.zone).subscribe(() => this.markDisabled(this.isElementOverflow() === false));
requestAnimationFrame(() => this.markDisabled(this.isElementOverflow() === false));
}

@@ -306,2 +308,2 @@ }

export { HelipopperDirective };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVsaXBvcHBlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmduZWF0L2hlbGlwb3BwZXIvIiwic291cmNlcyI6WyJsaWIvaGVsaXBvcHBlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLFdBQVcsRUFDWCxJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUEwQixNQUFNLFVBQVUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEQsT0FBTyxFQUNMLFFBQVEsRUFDUixPQUFPLEVBQ1AsYUFBYSxFQUNiLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsTUFBTSxFQUNOLFFBQVEsRUFDUixjQUFjLEVBQ2QsVUFBVSxFQUNYLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQWtELE1BQU0sb0JBQW9CLENBQUM7QUFDdkcsT0FBTyxFQUFFLHdCQUF3QixJQUFJLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxGLE1BQU0sSUFBSSxHQUFHOzs7O09BSU4sQ0FBQztBQUtSLElBQWEsbUJBQW1CLEdBQWhDLE1BQWEsbUJBQW1CO0lBMkY5QixZQUNVLElBQWdCLEVBQ2hCLE1BQXNCLEVBQ3RCLElBQVksRUFDWixRQUFrQyxFQUNsQyxZQUFzQixFQUNLLE1BQXdCO1FBTG5ELFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBUTtR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RUFDa0Q7QUFHMUQ7SUFEQyxLQUFLLEVBQUU7NERBQzRDO0FBR3BEO0lBREMsS0FBSyxFQUFFOzZEQUN1QztBQUcvQztJQURDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQztxREFDRztBQUcvQjtJQURDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQztvREFJNUI7QUFHRDtJQURDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQztvREFJNUI7QUFHRDtJQURDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQzttREFJM0I7QUFHRDtJQURDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztpREFhekI7QUFFUTtJQUFSLEtBQUssRUFBRTtxREFVUDtBQUVTO0lBQVQsTUFBTSxFQUFFOzREQUFpQztBQUNoQztJQUFULE1BQU0sRUFBRTs4REFBNEM7QUE5RTFDLG1CQUFtQjtJQUQvQixTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQztJQWtHM0QsV0FBQSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtHQWpHakIsbUJBQW1CLENBaVUvQjtTQWpVWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBUeXBlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHRpcHB5LCB7IEluc3RhbmNlLCBQcm9wcyB9IGZyb20gJ3RpcHB5LmpzJztcbmltcG9ydCB7IGZvcmtKb2luLCBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9wdGlvbnMgYXMgUG9wcGVyT3B0aW9ucyB9IGZyb20gJ0Bwb3BwZXJqcy9jb3JlJztcbmltcG9ydCB7XG4gIGFkZENsYXNzLFxuICBjbG9zZXN0LFxuICBjb2VyY2VFbGVtZW50LFxuICBjcmVhdGVFbGVtZW50LFxuICBkaW1lbnNpb25zQ2hhbmdlcyxcbiAgaW5WaWV3LFxuICBpc1N0cmluZyxcbiAgVGVtcGxhdGVQb3J0YWwsXG4gIHpvbmVTdGFibGVcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIRUxJUE9QUEVSX0NPTkZJRywgSGVsaXBvcHBlckNvbmZpZywgSW5zdGFuY2VXaXRoQ2xvc2UsIFZhcmlhdGlvbiB9IGZyb20gJy4vaGVsaXBvcHBlci50eXBlcyc7XG5pbXBvcnQgeyBpbml0aWFsSGVsaXBvcHBlck9wdGlvbnMgYXMgaW5pdGlhbE9wdGlvbnMgfSBmcm9tICcuL2hlbGlwb3BwZXItb3B0aW9ucyc7XG5cbmNvbnN0IGljb24gPSBgXG4gICAgICA8c3ZnIHZlcnNpb249XCIxLjFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaXQ9XCJcIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG48cGF0aCBkPVwiTTEyLjc5MyAxMmw0LjAzOS00LjAyNWMwLjIxOS0wLjIxOSAwLjIyNC0wLjU3OCAwLjAxMi0wLjgwMi0wLjIxMy0wLjIyNS0wLjU2My0wLjIzMS0wLjc4Mi0wLjAxMWwtNC4wNjIgNC4wNDktNC4wNjItNC4wNDljLTAuMjE5LTAuMjItMC41NjktMC4yMTMtMC43ODIgMC4wMTFzLTAuMjA4IDAuNTgzIDAuMDEyIDAuODAybDQuMDM5IDQuMDI1LTQuMDM5IDQuMDI1Yy0wLjIyIDAuMjE5LTAuMjI0IDAuNTc4LTAuMDEyIDAuODAyIDAuMTA4IDAuMTE1IDAuMjUyIDAuMTcyIDAuMzk3IDAuMTcyIDAuMTM4IDAgMC4yNzgtMC4wNTMgMC4zODUtMC4xNjFsNC4wNjItNC4wNDkgNC4wNjIgNC4wNDljMC4xMDcgMC4xMDggMC4yNDUgMC4xNjEgMC4zODUgMC4xNjEgMC4xNDQgMCAwLjI4Ny0wLjA1OCAwLjM5Ny0wLjE3MiAwLjIxMi0wLjIyNSAwLjIwNy0wLjU4My0wLjAxMi0wLjgwMmwtNC4wMzktNC4wMjV6XCI+PC9wYXRoPlxuPC9zdmc+XG4gICAgICBgO1xuXG50eXBlIENvbnRlbnQgPSBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgVHlwZTxhbnk+O1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6IGBbaGVsaXBvcHBlcl1gLCBleHBvcnRBczogJ2hlbGlwb3BwZXInIH0pXG5leHBvcnQgY2xhc3MgSGVsaXBvcHBlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIGhlbGlwb3BwZXJPcHRpb25zOiBQYXJ0aWFsPFByb3BzPiA9IGluaXRpYWxPcHRpb25zLm9wdGlvbnM7XG5cbiAgQElucHV0KCdoZWxpcG9wcGVyVGV4dE92ZXJmbG93JylcbiAgc2hvd09ubHlPblRleHRPdmVyZmxvdyA9IGluaXRpYWxPcHRpb25zLnRleHRPdmVyZmxvdztcblxuICAvLyBUaGUgZWxlbWVudCB0aGF0IHRoZSB0cmlnZ2VyIGV2ZW50IGxpc3RlbmVycyBhcmUgYWRkZWQgdG9cbiAgQElucHV0KClcbiAgdHJpZ2dlclRhcmdldDogRWxlbWVudDtcblxuICBASW5wdXQoKVxuICBoZWxpcG9wcGVySG9zdDogRWxlbWVudDtcblxuICBASW5wdXQoKVxuICBoZWxpcG9wcGVyQXBwZW5kVG86IHN0cmluZyB8IEhUTUxFbGVtZW50ID0gaW5pdGlhbE9wdGlvbnMuYXBwZW5kVG87XG5cbiAgQElucHV0KClcbiAgaGVsaXBvcHBlclRyaWdnZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBoZWxpcG9wcGVyQWxsb3dDbG9zZTogYm9vbGVhbiA9IGluaXRpYWxPcHRpb25zLmFsbG93Q2xvc2U7XG5cbiAgQElucHV0KClcbiAgaGVsaXBvcHBlckNsYXNzOiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+IHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIGhlbGlwb3BwZXJPZmZzZXQ6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KCdoZWxpcG9wcGVySW5qZWN0b3InKVxuICBpbmplY3RvcjogSW5qZWN0b3IgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KCdoZWxpcG9wcGVyUGxhY2VtZW50JylcbiAgc2V0IHBsYWNlbWVudChwbGFjZW1lbnQ6IFBvcHBlck9wdGlvbnNbJ3BsYWNlbWVudCddKSB7XG4gICAgdGhpcy5fcGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICAgIHRoaXMuc2V0UHJvcHMoeyBwbGFjZW1lbnQgfSk7XG4gIH1cblxuICBASW5wdXQoJ2hlbGlwb3BwZXJWYXJpYXRpb24nKVxuICBzZXQgdmFyaWF0aW9uKHZhcmlhdGlvbjogVmFyaWF0aW9uKSB7XG4gICAgdGhpcy5fdmFyaWF0aW9uID0gdmFyaWF0aW9uO1xuICAgIHRoaXMuc2V0UHJvcHModGhpcy5yZXNvbHZlVGhlbWUoKSk7XG4gIH1cblxuICBASW5wdXQoJ2hlbGlwb3BwZXJEaXNhYmxlZCcpXG4gIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgdGhpcy5tYXJrRGlzYWJsZWQodGhpcy5fZGlzYWJsZWQpO1xuICB9XG5cbiAgQElucHV0KCdoZWxpcG9wcGVyU3RpY2t5JylcbiAgc2V0IHN0aWNreShpc1N0aWNreTogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5pbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc1N0aWNreSkge1xuICAgICAgdGhpcy5zZXRQcm9wcyh7IHRyaWdnZXI6ICdtYW51YWwnLCBoaWRlT25DbGljazogZmFsc2UgfSk7XG4gICAgICB0aGlzLnNob3coKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICB0aGlzLnNldFByb3BzKHsgdHJpZ2dlcjogdGhpcy5oZWxpcG9wcGVyVHJpZ2dlciB9KTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBzZXQgaGVsaXBvcHBlcihjb250ZW50OiBDb250ZW50KSB7XG4gICAgdGhpcy5fY29udGVudCA9IGNvbnRlbnQ7XG5cbiAgICBpZiAodGhpcy5pbnN0YW5jZSkge1xuICAgICAgdGhpcy5jaGVja092ZXJmbG93KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvcmtKb2luKFtpblZpZXcodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpLCB6b25lU3RhYmxlKHRoaXMuem9uZSldKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jcmVhdGUoKSk7XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgpIGhlbGlwb3BwZXJDbG9zZSA9IG5ldyBTdWJqZWN0KCk7XG4gIEBPdXRwdXQoKSBoZWxpcG9wcGVyVmlzaWJsZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgcHJpdmF0ZSBfY29udGVudDogQ29udGVudDtcbiAgcHJpdmF0ZSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgX3BsYWNlbWVudDogUG9wcGVyT3B0aW9uc1sncGxhY2VtZW50J10gPSBpbml0aWFsT3B0aW9ucy5wbGFjZW1lbnQ7XG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX3ZhcmlhdGlvbjogVmFyaWF0aW9uID0gaW5pdGlhbE9wdGlvbnMudmFyaWF0aW9uO1xuICBwcml2YXRlIGluc3RhbmNlOiBJbnN0YW5jZTtcbiAgcHJpdmF0ZSB0cGxQb3J0YWw6IFRlbXBsYXRlUG9ydGFsO1xuICBwcml2YXRlIG1lcmdlZENvbmZpZzogSGVsaXBvcHBlckNvbmZpZztcbiAgcHJpdmF0ZSBpbm5lckNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT47XG4gIHB1YmxpYyB3aGVuU3RhYmxlOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGhvc3Q6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgIHByaXZhdGUgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIGhvc3RJbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQEluamVjdChIRUxJUE9QUEVSX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEhlbGlwb3BwZXJDb25maWdcbiAgKSB7XG4gICAgdGhpcy5tZXJnZWRDb25maWcgPSB0aGlzLmNyZWF0ZUNvbmZpZyhjb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX3Rvb2x0aXBUYXJnZXQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiBjb2VyY2VFbGVtZW50KHRoaXMudHJpZ2dlclRhcmdldCkgfHwgdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGdldCBfdG9vbHRpcEhvc3QoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiBjb2VyY2VFbGVtZW50KHRoaXMuaGVsaXBvcHBlckhvc3QpIHx8IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaXNUb29sdGlwKCkge1xuICAgIHJldHVybiB0aGlzLl92YXJpYXRpb24gPT09ICd0b29sdGlwJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGlzUG9wcGVyKCkge1xuICAgIHJldHVybiB0aGlzLl92YXJpYXRpb24gPT09ICdwb3BwZXInO1xuICB9XG5cbiAgc2V0UHJvcHMocHJvcHM6IFBhcnRpYWw8UHJvcHM+KSB7XG4gICAgdGhpcy5pbnN0YW5jZSAmJiB0aGlzLmluc3RhbmNlLnNldFByb3BzKHByb3BzKTtcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgdGhpcy5pbnN0YW5jZS5oaWRlKCk7XG4gIH1cblxuICBzaG93KCkge1xuICAgIHRoaXMuaW5zdGFuY2Uuc2hvdygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95VmlldygpO1xuICAgIHRoaXMuaW5zdGFuY2UgJiYgdGhpcy5pbnN0YW5jZS5kZXN0cm95KCk7XG4gICAgdGhpcy5pbnN0YW5jZSA9IG51bGw7XG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMubmdPbkRlc3Ryb3koKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveVZpZXcoKSB7XG4gICAgdGhpcy50cGxQb3J0YWwgJiYgdGhpcy5kZXN0cm95VGVtcGxhdGUoKTtcbiAgICB0aGlzLmlubmVyQ29tcG9uZW50UmVmICYmIHRoaXMuZGVzdHJveUNvbXBvbmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGUoKSB7XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHRoaXMuY3JlYXRlSW5zdGFuY2UoKSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUluc3RhbmNlKCkge1xuICAgIGlmICh0aGlzLnNob3dPbmx5T25UZXh0T3ZlcmZsb3cpIHtcbiAgICAgIGRpbWVuc2lvbnNDaGFuZ2VzKHRoaXMuX3Rvb2x0aXBIb3N0KVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubWFya0Rpc2FibGVkKHRoaXMuaXNFbGVtZW50T3ZlcmZsb3coKSA9PT0gZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmhlbGlwb3BwZXJUcmlnZ2VyID0gdGhpcy5yZXNvbHZlVHJpZ2dlcigpO1xuXG4gICAgdGhpcy5pbnN0YW5jZSA9IHRpcHB5KHRoaXMuX3Rvb2x0aXBIb3N0LCB7XG4gICAgICBjb250ZW50OiB1bmRlZmluZWQsXG4gICAgICBhcHBlbmRUbzogdGhpcy5nZXRQYXJlbnQoKSxcbiAgICAgIGFycm93OiAhdGhpcy5pc1Rvb2x0aXAsXG4gICAgICBhbGxvd0hUTUw6IHRydWUsXG4gICAgICB6SW5kZXg6IDEwMDAwMDAsXG4gICAgICB0cmlnZ2VyOiB0aGlzLmhlbGlwb3BwZXJUcmlnZ2VyLFxuICAgICAgcGxhY2VtZW50OiB0aGlzLl9wbGFjZW1lbnQsXG4gICAgICB0cmlnZ2VyVGFyZ2V0OiB0aGlzLl90b29sdGlwVGFyZ2V0LFxuICAgICAgaGlkZU9uQ2xpY2s6IHRoaXMuaGVsaXBvcHBlckFsbG93Q2xvc2UsXG4gICAgICAvLyBUT0RPOiBNZXJnZSB0aGUgZm9sbG93aW5nIG1ldGhvZHMgd2l0aCB0aGUgcGFzc2VkIGNvbmZpZ1xuICAgICAgb25DcmVhdGU6IGluc3RhbmNlID0+IHtcbiAgICAgICAgdGhpcy5oZWxpcG9wcGVyQ2xhc3MgJiYgYWRkQ2xhc3MoaW5zdGFuY2UucG9wcGVyLCB0aGlzLmhlbGlwb3BwZXJDbGFzcyk7XG4gICAgICB9LFxuICAgICAgb25TaG93OiBpbnN0YW5jZSA9PiB7XG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5pbnN0YW5jZS5zZXRDb250ZW50KHRoaXMucmVzb2x2ZUNvbnRlbnQoKSkpO1xuICAgICAgICB0aGlzLmhlbGlwb3BwZXJBbGxvd0Nsb3NlICYmIHRoaXMuaXNQb3BwZXIgJiYgdGhpcy5hZGRDbG9zZUJ1dHRvbihpbnN0YW5jZSBhcyBJbnN0YW5jZVdpdGhDbG9zZSk7XG4gICAgICAgIHRoaXMuaGVsaXBvcHBlclZpc2libGUubmV4dCh0cnVlKTtcbiAgICAgIH0sXG4gICAgICBvbkhpZGRlbjogaW5zdGFuY2UgPT4ge1xuICAgICAgICB0aGlzLmhlbGlwb3BwZXJBbGxvd0Nsb3NlICYmIHRoaXMuaXNQb3BwZXIgJiYgdGhpcy5yZW1vdmVDbG9zZUJ1dHRvbihpbnN0YW5jZSBhcyBJbnN0YW5jZVdpdGhDbG9zZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveVZpZXcoKTtcbiAgICAgICAgdGhpcy5oZWxpcG9wcGVyQ2xvc2UubmV4dCgpO1xuICAgICAgICB0aGlzLmhlbGlwb3BwZXJWaXNpYmxlLm5leHQoZmFsc2UpO1xuICAgICAgfSxcbiAgICAgIC4uLnRoaXMucmVzb2x2ZVRoZW1lKCksXG4gICAgICAuLi50aGlzLmhlbGlwb3BwZXJPcHRpb25zXG4gICAgfSk7XG5cbiAgICB0aGlzLndoZW5TdGFibGUubmV4dCh0cnVlKTtcbiAgICB0aGlzLm1hcmtEaXNhYmxlZCh0aGlzLl9kaXNhYmxlZCk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVUcmlnZ2VyKCkge1xuICAgIHJldHVybiB0aGlzLmhlbGlwb3BwZXJUcmlnZ2VyIHx8ICh0aGlzLmlzVG9vbHRpcCA/ICdtb3VzZWVudGVyJyA6ICdjbGljaycpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlVGVtcGxhdGUoY29udGVudDogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIGlmICh0aGlzLnRwbFBvcnRhbCkge1xuICAgICAgdGhpcy5kZXN0cm95VGVtcGxhdGUoKTtcbiAgICB9XG4gICAgdGhpcy50cGxQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwoY29udGVudCk7XG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyh0aGlzLnRwbFBvcnRhbC52aWV3UmVmKTtcblxuICAgIHJldHVybiB0aGlzLnRwbFBvcnRhbC5lbGVtZW50UmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0VsZW1lbnRPdmVyZmxvdygpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fdG9vbHRpcFRhcmdldDtcbiAgICBjb25zdCBwYXJlbnRFbCA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICBjb25zdCBwYXJlbnRUZXN0ID0gZWxlbWVudC5vZmZzZXRXaWR0aCA+IHBhcmVudEVsLm9mZnNldFdpZHRoO1xuICAgIGNvbnN0IGVsZW1lbnRUZXN0ID0gZWxlbWVudC5vZmZzZXRXaWR0aCA8IGVsZW1lbnQuc2Nyb2xsV2lkdGg7XG5cbiAgICByZXR1cm4gcGFyZW50VGVzdCB8fCBlbGVtZW50VGVzdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFyZW50KCkge1xuICAgIGxldCBjb250YWluZXJFbGVtZW50O1xuXG4gICAgaWYgKGlzU3RyaW5nKHRoaXMuaGVsaXBvcHBlckFwcGVuZFRvKSkge1xuICAgICAgY29udGFpbmVyRWxlbWVudCA9IGNsb3Nlc3QodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuaGVsaXBvcHBlckFwcGVuZFRvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGFpbmVyRWxlbWVudCA9IHRoaXMuaGVsaXBvcHBlckFwcGVuZFRvO1xuICAgIH1cblxuICAgIHJldHVybiBjb250YWluZXJFbGVtZW50IHx8IGRvY3VtZW50LmJvZHk7XG4gIH1cblxuICBwcml2YXRlIG1hcmtEaXNhYmxlZChkaXNhYmxlZCA9IHRydWUpIHtcbiAgICBpZiAodGhpcy5pbnN0YW5jZSkge1xuICAgICAgZGlzYWJsZWQgPyB0aGlzLmluc3RhbmNlLmRpc2FibGUoKSA6IHRoaXMuaW5zdGFuY2UuZW5hYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlVGhlbWUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9mZnNldDogdGhpcy5oZWxpcG9wcGVyT2Zmc2V0IHx8IChbMCwgdGhpcy5pc1Rvb2x0aXAgPyA1IDogMTBdIGFzIFtudW1iZXIsIG51bWJlcl0pLFxuICAgICAgdGhlbWU6IHRoaXMuaXNUb29sdGlwID8gbnVsbCA6ICdsaWdodCcsXG4gICAgICBhcnJvdzogdGhpcy5pc1Rvb2x0aXAgPT09IGZhbHNlLFxuICAgICAgYW5pbWF0aW9uOiB0aGlzLmlzVG9vbHRpcCA/IGBzY2FsZWAgOiBudWxsLFxuICAgICAgaW50ZXJhY3RpdmU6ICF0aGlzLmlzVG9vbHRpcFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFkZENsb3NlQnV0dG9uKGluc3RhbmNlOiBJbnN0YW5jZVdpdGhDbG9zZSkge1xuICAgIGNvbnN0IHBvcHBlciA9IGluc3RhbmNlLnBvcHBlcjtcbiAgICBjb25zdCBjbG9zZUljb24gPSB0aGlzLm1lcmdlZENvbmZpZy5jbG9zZUljb247XG4gICAgY29uc3QgY2xvc2VCdXR0b25FbGVtZW50ID0gY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgYWRkQ2xhc3MoY2xvc2VCdXR0b25FbGVtZW50LCAndGlwcHktY2xvc2UnKTtcbiAgICBjbG9zZUJ1dHRvbkVsZW1lbnQuaW5uZXJIVE1MID0gY2xvc2VJY29uO1xuXG4gICAgY29uc3QgY2xvc2VCdXR0b25TdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQoY2xvc2VCdXR0b25FbGVtZW50LCAnY2xpY2snKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5oaWRlKCkpO1xuICAgIHBvcHBlci5hcHBlbmRDaGlsZChjbG9zZUJ1dHRvbkVsZW1lbnQpO1xuXG4gICAgaW5zdGFuY2UuY2xvc2VCdXR0b25FbGVtZW50ID0gY2xvc2VCdXR0b25FbGVtZW50O1xuICAgIGluc3RhbmNlLmNsb3NlQnV0dG9uU3Vic2NyaXB0aW9uID0gY2xvc2VCdXR0b25TdWJzY3JpcHRpb247XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUNsb3NlQnV0dG9uKGluc3RhbmNlOiBJbnN0YW5jZVdpdGhDbG9zZSkge1xuICAgIGluc3RhbmNlLnBvcHBlci5yZW1vdmVDaGlsZChpbnN0YW5jZS5jbG9zZUJ1dHRvbkVsZW1lbnQpO1xuICAgIGluc3RhbmNlLmNsb3NlQnV0dG9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgaW5zdGFuY2UuY2xvc2VCdXR0b25FbGVtZW50ID0gbnVsbDtcbiAgICBpbnN0YW5jZS5jbG9zZUJ1dHRvblN1YnNjcmlwdGlvbiA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrT3ZlcmZsb3coKSB7XG4gICAgaWYgKHRoaXMuc2hvd09ubHlPblRleHRPdmVyZmxvdykge1xuICAgICAgem9uZVN0YWJsZSh0aGlzLnpvbmUpLnN1YnNjcmliZSgoKSA9PiB0aGlzLm1hcmtEaXNhYmxlZCh0aGlzLmlzRWxlbWVudE92ZXJmbG93KCkgPT09IGZhbHNlKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95VGVtcGxhdGUoKSB7XG4gICAgdGhpcy5hcHBSZWYuZGV0YWNoVmlldyh0aGlzLnRwbFBvcnRhbC52aWV3UmVmKTtcbiAgICB0aGlzLnRwbFBvcnRhbC5kZXN0cm95KCk7XG4gICAgdGhpcy50cGxQb3J0YWwgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb25maWcoY29uZmlnOiBIZWxpcG9wcGVyQ29uZmlnKSB7XG4gICAgY29uc3QgZGVmYXVsdHM6IEhlbGlwb3BwZXJDb25maWcgPSB7XG4gICAgICBjbG9zZUljb246IGljb24sXG4gICAgICBiZWZvcmVSZW5kZXIoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5kZWZhdWx0cyxcbiAgICAgIC4uLmNvbmZpZ1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVDb21wb25lbnQoY29udGVudDogVHlwZTxhbnk+KSB7XG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29udGVudCk7XG4gICAgY29uc3QgaW5qZWN0b3IgPSB0aGlzLmluamVjdG9yIHx8IHRoaXMuaG9zdEluamVjdG9yO1xuICAgIHRoaXMuaW5uZXJDb21wb25lbnRSZWYgPSBmYWN0b3J5LmNyZWF0ZShpbmplY3Rvcik7XG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyh0aGlzLmlubmVyQ29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICB0aGlzLmlubmVyQ29tcG9uZW50UmVmLmhvc3RWaWV3LmRldGVjdENoYW5nZXMoKTtcbiAgICByZXR1cm4gdGhpcy5pbm5lckNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95Q29tcG9uZW50KCkge1xuICAgIHRoaXMuaW5uZXJDb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgIHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcodGhpcy5pbm5lckNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgdGhpcy5pbm5lckNvbXBvbmVudFJlZiA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVDb250ZW50KCkge1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLl9jb250ZW50O1xuICAgIGxldCBmaW5hbENvbnRlbnQ7XG5cbiAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICBmaW5hbENvbnRlbnQgPSB0aGlzLnJlc29sdmVUZW1wbGF0ZShjb250ZW50KTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgZmluYWxDb250ZW50ID0gdGhpcy5tZXJnZWRDb25maWcuYmVmb3JlUmVuZGVyKGNvbnRlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaW5hbENvbnRlbnQgPSB0aGlzLnJlc29sdmVDb21wb25lbnQoY29udGVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbmFsQ29udGVudDtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVsaXBvcHBlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmduZWF0L2hlbGlwb3BwZXIvIiwic291cmNlcyI6WyJsaWIvaGVsaXBvcHBlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLFdBQVcsRUFDWCxJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUEwQixNQUFNLFVBQVUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQ0wsUUFBUSxFQUNSLE9BQU8sRUFDUCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixNQUFNLEVBQ04sUUFBUSxFQUNSLGNBQWMsRUFDZixNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFrRCxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSx3QkFBd0IsSUFBSSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRixNQUFNLElBQUksR0FBRzs7OztPQUlOLENBQUM7QUFLUixJQUFhLG1CQUFtQixHQUFoQyxNQUFhLG1CQUFtQjtJQTZGOUIsWUFDVSxJQUFnQixFQUNoQixNQUFzQixFQUN0QixJQUFZLEVBQ1osUUFBa0MsRUFDbEMsWUFBc0IsRUFDSyxNQUF3QjtRQUxuRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixhQUFRLEdBQVIsUUFBUSxDQUEwQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUNLLFdBQU0sR0FBTixNQUFNLENBQWtCO1FBakc3RCxzQkFBaUIsR0FBbUIsY0FBYyxDQUFDLE9BQU8sQ0FBQztRQUczRCwyQkFBc0IsR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDO1FBVXJELHVCQUFrQixHQUF5QixjQUFjLENBQUMsUUFBUSxDQUFDO1FBTW5FLHlCQUFvQixHQUFZLGNBQWMsQ0FBQyxVQUFVLENBQUM7UUEwRGhELG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNoQyxzQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBRzdDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBK0IsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUNsRSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGVBQVUsR0FBYyxjQUFjLENBQUMsU0FBUyxDQUFDO1FBS2xELGVBQVUsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQVUzRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQXJFRCxJQUFJLFNBQVMsQ0FBQyxTQUFxQztRQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBR0QsSUFBSSxTQUFTLENBQUMsU0FBb0I7UUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBR0QsSUFBSSxRQUFRLENBQUMsUUFBaUI7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUdELElBQUksTUFBTSxDQUFDLFFBQWlCO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLE9BQU87U0FDUjtRQUVELElBQUksUUFBUSxFQUFFO1lBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2I7YUFBTTtZQUNMLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFUSxJQUFJLFVBQVUsQ0FBQyxPQUFnQjtRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3RCO2FBQU07WUFDTCxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztxQkFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7cUJBQzlCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNwQyxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQTJCRCxJQUFZLGNBQWM7UUFDeEIsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFZLFlBQVk7UUFDdEIsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxJQUFZLFNBQVM7UUFDbkIsT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBWSxRQUFRO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsS0FBSyxRQUFRLENBQUM7SUFDdEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFxQjtRQUM1QixJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFTyxNQUFNO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUMvQixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO2lCQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDOUIsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ3hELENBQUMsQ0FBQyxDQUFDO1NBQ047UUFFRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRS9DLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLGdDQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUNsQixRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUMxQixLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUN0QixTQUFTLEVBQUUsSUFBSSxFQUNmLE1BQU0sRUFBRSxPQUFPLEVBQ2YsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFDL0IsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQzFCLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUNsQyxXQUFXLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtZQUN0QywyREFBMkQ7WUFDM0QsUUFBUSxFQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUNuQixJQUFJLENBQUMsZUFBZSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUMxRSxDQUFDLEVBQ0QsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNyRSxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQTZCLENBQUMsQ0FBQztnQkFDakcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQyxDQUFDLEVBQ0QsUUFBUSxFQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUNuQixJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBNkIsQ0FBQyxDQUFDO2dCQUNwRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsQ0FBQyxJQUNFLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FDbkIsSUFBSSxDQUFDLGlCQUFpQixFQUN6QixDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVPLGNBQWM7UUFDcEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFTyxlQUFlLENBQUMsT0FBeUI7UUFDL0MsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUvQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO0lBQ25DLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNwQyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQ3ZDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUM5RCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFFOUQsT0FBTyxVQUFVLElBQUksV0FBVyxDQUFDO0lBQ25DLENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxnQkFBZ0IsQ0FBQztRQUVyQixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRTtZQUNyQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDOUU7YUFBTTtZQUNMLGdCQUFnQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztTQUM1QztRQUVELE9BQU8sZ0JBQWdCLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQztJQUMzQyxDQUFDO0lBRU8sWUFBWSxDQUFDLFFBQVEsR0FBRyxJQUFJO1FBQ2xDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDN0Q7SUFDSCxDQUFDO0lBRU8sWUFBWTtRQUNsQixPQUFPO1lBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsSUFBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBc0I7WUFDbkYsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTztZQUN0QyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLO1lBQy9CLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDMUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVM7U0FDN0IsQ0FBQztJQUNKLENBQUM7SUFFTyxjQUFjLENBQUMsUUFBMkI7UUFDaEQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUMvQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztRQUM5QyxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxRQUFRLENBQUMsa0JBQWtCLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDNUMsa0JBQWtCLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUV6QyxNQUFNLHVCQUF1QixHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDcEcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRXZDLFFBQVEsQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUNqRCxRQUFRLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7SUFDN0QsQ0FBQztJQUVPLGlCQUFpQixDQUFDLFFBQTJCO1FBQ25ELFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3pELFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMvQyxRQUFRLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQ25DLFFBQVEsQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7SUFDMUMsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDL0IscUJBQXFCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ3BGO0lBQ0gsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxZQUFZLENBQUMsTUFBd0I7UUFDM0MsTUFBTSxRQUFRLEdBQXFCO1lBQ2pDLFNBQVMsRUFBRSxJQUFJO1lBQ2YsWUFBWSxDQUFDLE9BQWU7Z0JBQzFCLE9BQU8sT0FBTyxDQUFDO1lBQ2pCLENBQUM7U0FDRixDQUFDO1FBRUYsdUNBQ0ssUUFBUSxHQUNSLE1BQU0sRUFDVDtJQUNKLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUFrQjtRQUN6QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9ELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNwRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNoRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO0lBQ3ZELENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxjQUFjO1FBQ3BCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDOUIsSUFBSSxZQUFZLENBQUM7UUFFakIsSUFBSSxPQUFPLFlBQVksV0FBVyxFQUFFO1lBQ2xDLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzlDO2FBQU0sSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDdEMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3hEO2FBQU07WUFDTCxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQy9DO1FBRUQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztDQUNGLENBQUE7O1lBck9pQixVQUFVO1lBQ1IsY0FBYztZQUNoQixNQUFNO1lBQ0Ysd0JBQXdCO1lBQ3BCLFFBQVE7NENBQzdCLE1BQU0sU0FBQyxpQkFBaUI7O0FBakczQjtJQURDLEtBQUssRUFBRTs4REFDbUQ7QUFHM0Q7SUFEQyxLQUFLLENBQUMsd0JBQXdCLENBQUM7bUVBQ3FCO0FBSXJEO0lBREMsS0FBSyxFQUFFOzBEQUNlO0FBR3ZCO0lBREMsS0FBSyxFQUFFOzJEQUNnQjtBQUd4QjtJQURDLEtBQUssRUFBRTsrREFDMkQ7QUFHbkU7SUFEQyxLQUFLLEVBQUU7OERBQzhCO0FBR3RDO0lBREMsS0FBSyxFQUFFO2lFQUNrRDtBQUcxRDtJQURDLEtBQUssRUFBRTs0REFDNEM7QUFHcEQ7SUFEQyxLQUFLLEVBQUU7NkRBQ3VDO0FBRy9DO0lBREMsS0FBSyxDQUFDLG9CQUFvQixDQUFDO3FEQUNHO0FBRy9CO0lBREMsS0FBSyxDQUFDLHFCQUFxQixDQUFDO29EQUk1QjtBQUdEO0lBREMsS0FBSyxDQUFDLHFCQUFxQixDQUFDO29EQUk1QjtBQUdEO0lBREMsS0FBSyxDQUFDLG9CQUFvQixDQUFDO21EQUkzQjtBQUdEO0lBREMsS0FBSyxDQUFDLGtCQUFrQixDQUFDO2lEQWF6QjtBQUVRO0lBQVIsS0FBSyxFQUFFO3FEQVlQO0FBRVM7SUFBVCxNQUFNLEVBQUU7NERBQWlDO0FBQ2hDO0lBQVQsTUFBTSxFQUFFOzhEQUE0QztBQWhGMUMsbUJBQW1CO0lBRC9CLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBb0czRCxXQUFBLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0dBbkdqQixtQkFBbUIsQ0FtVS9CO1NBblVZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFwcGxpY2F0aW9uUmVmLFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdGlwcHksIHsgSW5zdGFuY2UsIFByb3BzIH0gZnJvbSAndGlwcHkuanMnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPcHRpb25zIGFzIFBvcHBlck9wdGlvbnMgfSBmcm9tICdAcG9wcGVyanMvY29yZSc7XG5pbXBvcnQge1xuICBhZGRDbGFzcyxcbiAgY2xvc2VzdCxcbiAgY29lcmNlRWxlbWVudCxcbiAgY3JlYXRlRWxlbWVudCxcbiAgZGltZW5zaW9uc0NoYW5nZXMsXG4gIGluVmlldyxcbiAgaXNTdHJpbmcsXG4gIFRlbXBsYXRlUG9ydGFsXG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSEVMSVBPUFBFUl9DT05GSUcsIEhlbGlwb3BwZXJDb25maWcsIEluc3RhbmNlV2l0aENsb3NlLCBWYXJpYXRpb24gfSBmcm9tICcuL2hlbGlwb3BwZXIudHlwZXMnO1xuaW1wb3J0IHsgaW5pdGlhbEhlbGlwb3BwZXJPcHRpb25zIGFzIGluaXRpYWxPcHRpb25zIH0gZnJvbSAnLi9oZWxpcG9wcGVyLW9wdGlvbnMnO1xuXG5jb25zdCBpY29uID0gYFxuICAgICAgPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZml0PVwiXCIgcHJlc2VydmVBc3BlY3RSYXRpbz1cInhNaWRZTWlkIG1lZXRcIiBmb2N1c2FibGU9XCJmYWxzZVwiPlxuPHBhdGggZD1cIk0xMi43OTMgMTJsNC4wMzktNC4wMjVjMC4yMTktMC4yMTkgMC4yMjQtMC41NzggMC4wMTItMC44MDItMC4yMTMtMC4yMjUtMC41NjMtMC4yMzEtMC43ODItMC4wMTFsLTQuMDYyIDQuMDQ5LTQuMDYyLTQuMDQ5Yy0wLjIxOS0wLjIyLTAuNTY5LTAuMjEzLTAuNzgyIDAuMDExcy0wLjIwOCAwLjU4MyAwLjAxMiAwLjgwMmw0LjAzOSA0LjAyNS00LjAzOSA0LjAyNWMtMC4yMiAwLjIxOS0wLjIyNCAwLjU3OC0wLjAxMiAwLjgwMiAwLjEwOCAwLjExNSAwLjI1MiAwLjE3MiAwLjM5NyAwLjE3MiAwLjEzOCAwIDAuMjc4LTAuMDUzIDAuMzg1LTAuMTYxbDQuMDYyLTQuMDQ5IDQuMDYyIDQuMDQ5YzAuMTA3IDAuMTA4IDAuMjQ1IDAuMTYxIDAuMzg1IDAuMTYxIDAuMTQ0IDAgMC4yODctMC4wNTggMC4zOTctMC4xNzIgMC4yMTItMC4yMjUgMC4yMDctMC41ODMtMC4wMTItMC44MDJsLTQuMDM5LTQuMDI1elwiPjwvcGF0aD5cbjwvc3ZnPlxuICAgICAgYDtcblxudHlwZSBDb250ZW50ID0gc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IFR5cGU8YW55PjtcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiBgW2hlbGlwb3BwZXJdYCwgZXhwb3J0QXM6ICdoZWxpcG9wcGVyJyB9KVxuZXhwb3J0IGNsYXNzIEhlbGlwb3BwZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBoZWxpcG9wcGVyT3B0aW9uczogUGFydGlhbDxQcm9wcz4gPSBpbml0aWFsT3B0aW9ucy5vcHRpb25zO1xuXG4gIEBJbnB1dCgnaGVsaXBvcHBlclRleHRPdmVyZmxvdycpXG4gIHNob3dPbmx5T25UZXh0T3ZlcmZsb3cgPSBpbml0aWFsT3B0aW9ucy50ZXh0T3ZlcmZsb3c7XG5cbiAgLy8gVGhlIGVsZW1lbnQgdGhhdCB0aGUgdHJpZ2dlciBldmVudCBsaXN0ZW5lcnMgYXJlIGFkZGVkIHRvXG4gIEBJbnB1dCgpXG4gIHRyaWdnZXJUYXJnZXQ6IEVsZW1lbnQ7XG5cbiAgQElucHV0KClcbiAgaGVsaXBvcHBlckhvc3Q6IEVsZW1lbnQ7XG5cbiAgQElucHV0KClcbiAgaGVsaXBvcHBlckFwcGVuZFRvOiBzdHJpbmcgfCBIVE1MRWxlbWVudCA9IGluaXRpYWxPcHRpb25zLmFwcGVuZFRvO1xuXG4gIEBJbnB1dCgpXG4gIGhlbGlwb3BwZXJUcmlnZ2VyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgaGVsaXBvcHBlckFsbG93Q2xvc2U6IGJvb2xlYW4gPSBpbml0aWFsT3B0aW9ucy5hbGxvd0Nsb3NlO1xuXG4gIEBJbnB1dCgpXG4gIGhlbGlwb3BwZXJDbGFzczogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPiB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBoZWxpcG9wcGVyT2Zmc2V0OiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgnaGVsaXBvcHBlckluamVjdG9yJylcbiAgaW5qZWN0b3I6IEluamVjdG9yIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgnaGVsaXBvcHBlclBsYWNlbWVudCcpXG4gIHNldCBwbGFjZW1lbnQocGxhY2VtZW50OiBQb3BwZXJPcHRpb25zWydwbGFjZW1lbnQnXSkge1xuICAgIHRoaXMuX3BsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICB0aGlzLnNldFByb3BzKHsgcGxhY2VtZW50IH0pO1xuICB9XG5cbiAgQElucHV0KCdoZWxpcG9wcGVyVmFyaWF0aW9uJylcbiAgc2V0IHZhcmlhdGlvbih2YXJpYXRpb246IFZhcmlhdGlvbikge1xuICAgIHRoaXMuX3ZhcmlhdGlvbiA9IHZhcmlhdGlvbjtcbiAgICB0aGlzLnNldFByb3BzKHRoaXMucmVzb2x2ZVRoZW1lKCkpO1xuICB9XG5cbiAgQElucHV0KCdoZWxpcG9wcGVyRGlzYWJsZWQnKVxuICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgIHRoaXMubWFya0Rpc2FibGVkKHRoaXMuX2Rpc2FibGVkKTtcbiAgfVxuXG4gIEBJbnB1dCgnaGVsaXBvcHBlclN0aWNreScpXG4gIHNldCBzdGlja3koaXNTdGlja3k6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMuaW5zdGFuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNTdGlja3kpIHtcbiAgICAgIHRoaXMuc2V0UHJvcHMoeyB0cmlnZ2VyOiAnbWFudWFsJywgaGlkZU9uQ2xpY2s6IGZhbHNlIH0pO1xuICAgICAgdGhpcy5zaG93KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgdGhpcy5zZXRQcm9wcyh7IHRyaWdnZXI6IHRoaXMuaGVsaXBvcHBlclRyaWdnZXIgfSk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgc2V0IGhlbGlwb3BwZXIoY29udGVudDogQ29udGVudCkge1xuICAgIHRoaXMuX2NvbnRlbnQgPSBjb250ZW50O1xuXG4gICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgIHRoaXMuY2hlY2tPdmVyZmxvdygpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBpblZpZXcodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jcmVhdGUoKSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBAT3V0cHV0KCkgaGVsaXBvcHBlckNsb3NlID0gbmV3IFN1YmplY3QoKTtcbiAgQE91dHB1dCgpIGhlbGlwb3BwZXJWaXNpYmxlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBwcml2YXRlIF9jb250ZW50OiBDb250ZW50O1xuICBwcml2YXRlIF9kZXN0cm95ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfcGxhY2VtZW50OiBQb3BwZXJPcHRpb25zWydwbGFjZW1lbnQnXSA9IGluaXRpYWxPcHRpb25zLnBsYWNlbWVudDtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfdmFyaWF0aW9uOiBWYXJpYXRpb24gPSBpbml0aWFsT3B0aW9ucy52YXJpYXRpb247XG4gIHByaXZhdGUgaW5zdGFuY2U6IEluc3RhbmNlO1xuICBwcml2YXRlIHRwbFBvcnRhbDogVGVtcGxhdGVQb3J0YWw7XG4gIHByaXZhdGUgbWVyZ2VkQ29uZmlnOiBIZWxpcG9wcGVyQ29uZmlnO1xuICBwcml2YXRlIGlubmVyQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PjtcbiAgcHVibGljIHdoZW5TdGFibGU6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaG9zdDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgaG9zdEluamVjdG9yOiBJbmplY3RvcixcbiAgICBASW5qZWN0KEhFTElQT1BQRVJfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogSGVsaXBvcHBlckNvbmZpZ1xuICApIHtcbiAgICB0aGlzLm1lcmdlZENvbmZpZyA9IHRoaXMuY3JlYXRlQ29uZmlnKGNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGdldCBfdG9vbHRpcFRhcmdldCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIGNvZXJjZUVsZW1lbnQodGhpcy50cmlnZ2VyVGFyZ2V0KSB8fCB0aGlzLmhvc3QubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IF90b29sdGlwSG9zdCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIGNvZXJjZUVsZW1lbnQodGhpcy5oZWxpcG9wcGVySG9zdCkgfHwgdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGdldCBpc1Rvb2x0aXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhcmlhdGlvbiA9PT0gJ3Rvb2x0aXAnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaXNQb3BwZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhcmlhdGlvbiA9PT0gJ3BvcHBlcic7XG4gIH1cblxuICBzZXRQcm9wcyhwcm9wczogUGFydGlhbDxQcm9wcz4pIHtcbiAgICB0aGlzLmluc3RhbmNlICYmIHRoaXMuaW5zdGFuY2Uuc2V0UHJvcHMocHJvcHMpO1xuICB9XG5cbiAgaGlkZSgpIHtcbiAgICB0aGlzLmluc3RhbmNlLmhpZGUoKTtcbiAgfVxuXG4gIHNob3coKSB7XG4gICAgdGhpcy5pbnN0YW5jZS5zaG93KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3lWaWV3KCk7XG4gICAgdGhpcy5pbnN0YW5jZSAmJiB0aGlzLmluc3RhbmNlLmRlc3Ryb3koKTtcbiAgICB0aGlzLmluc3RhbmNlID0gbnVsbDtcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5uZ09uRGVzdHJveSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95VmlldygpIHtcbiAgICB0aGlzLnRwbFBvcnRhbCAmJiB0aGlzLmRlc3Ryb3lUZW1wbGF0ZSgpO1xuICAgIHRoaXMuaW5uZXJDb21wb25lbnRSZWYgJiYgdGhpcy5kZXN0cm95Q29tcG9uZW50KCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZSgpIHtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gdGhpcy5jcmVhdGVJbnN0YW5jZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSW5zdGFuY2UoKSB7XG4gICAgaWYgKHRoaXMuc2hvd09ubHlPblRleHRPdmVyZmxvdykge1xuICAgICAgZGltZW5zaW9uc0NoYW5nZXModGhpcy5fdG9vbHRpcEhvc3QpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5tYXJrRGlzYWJsZWQodGhpcy5pc0VsZW1lbnRPdmVyZmxvdygpID09PSBmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuaGVsaXBvcHBlclRyaWdnZXIgPSB0aGlzLnJlc29sdmVUcmlnZ2VyKCk7XG5cbiAgICB0aGlzLmluc3RhbmNlID0gdGlwcHkodGhpcy5fdG9vbHRpcEhvc3QsIHtcbiAgICAgIGNvbnRlbnQ6IHVuZGVmaW5lZCxcbiAgICAgIGFwcGVuZFRvOiB0aGlzLmdldFBhcmVudCgpLFxuICAgICAgYXJyb3c6ICF0aGlzLmlzVG9vbHRpcCxcbiAgICAgIGFsbG93SFRNTDogdHJ1ZSxcbiAgICAgIHpJbmRleDogMTAwMDAwMCxcbiAgICAgIHRyaWdnZXI6IHRoaXMuaGVsaXBvcHBlclRyaWdnZXIsXG4gICAgICBwbGFjZW1lbnQ6IHRoaXMuX3BsYWNlbWVudCxcbiAgICAgIHRyaWdnZXJUYXJnZXQ6IHRoaXMuX3Rvb2x0aXBUYXJnZXQsXG4gICAgICBoaWRlT25DbGljazogdGhpcy5oZWxpcG9wcGVyQWxsb3dDbG9zZSxcbiAgICAgIC8vIFRPRE86IE1lcmdlIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyB3aXRoIHRoZSBwYXNzZWQgY29uZmlnXG4gICAgICBvbkNyZWF0ZTogaW5zdGFuY2UgPT4ge1xuICAgICAgICB0aGlzLmhlbGlwb3BwZXJDbGFzcyAmJiBhZGRDbGFzcyhpbnN0YW5jZS5wb3BwZXIsIHRoaXMuaGVsaXBvcHBlckNsYXNzKTtcbiAgICAgIH0sXG4gICAgICBvblNob3c6IGluc3RhbmNlID0+IHtcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmluc3RhbmNlLnNldENvbnRlbnQodGhpcy5yZXNvbHZlQ29udGVudCgpKSk7XG4gICAgICAgIHRoaXMuaGVsaXBvcHBlckFsbG93Q2xvc2UgJiYgdGhpcy5pc1BvcHBlciAmJiB0aGlzLmFkZENsb3NlQnV0dG9uKGluc3RhbmNlIGFzIEluc3RhbmNlV2l0aENsb3NlKTtcbiAgICAgICAgdGhpcy5oZWxpcG9wcGVyVmlzaWJsZS5uZXh0KHRydWUpO1xuICAgICAgfSxcbiAgICAgIG9uSGlkZGVuOiBpbnN0YW5jZSA9PiB7XG4gICAgICAgIHRoaXMuaGVsaXBvcHBlckFsbG93Q2xvc2UgJiYgdGhpcy5pc1BvcHBlciAmJiB0aGlzLnJlbW92ZUNsb3NlQnV0dG9uKGluc3RhbmNlIGFzIEluc3RhbmNlV2l0aENsb3NlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95VmlldygpO1xuICAgICAgICB0aGlzLmhlbGlwb3BwZXJDbG9zZS5uZXh0KCk7XG4gICAgICAgIHRoaXMuaGVsaXBvcHBlclZpc2libGUubmV4dChmYWxzZSk7XG4gICAgICB9LFxuICAgICAgLi4udGhpcy5yZXNvbHZlVGhlbWUoKSxcbiAgICAgIC4uLnRoaXMuaGVsaXBvcHBlck9wdGlvbnNcbiAgICB9KTtcblxuICAgIHRoaXMud2hlblN0YWJsZS5uZXh0KHRydWUpO1xuICAgIHRoaXMubWFya0Rpc2FibGVkKHRoaXMuX2Rpc2FibGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVRyaWdnZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVsaXBvcHBlclRyaWdnZXIgfHwgKHRoaXMuaXNUb29sdGlwID8gJ21vdXNlZW50ZXInIDogJ2NsaWNrJyk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVUZW1wbGF0ZShjb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgaWYgKHRoaXMudHBsUG9ydGFsKSB7XG4gICAgICB0aGlzLmRlc3Ryb3lUZW1wbGF0ZSgpO1xuICAgIH1cbiAgICB0aGlzLnRwbFBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbChjb250ZW50KTtcbiAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KHRoaXMudHBsUG9ydGFsLnZpZXdSZWYpO1xuXG4gICAgcmV0dXJuIHRoaXMudHBsUG9ydGFsLmVsZW1lbnRSZWY7XG4gIH1cblxuICBwcml2YXRlIGlzRWxlbWVudE92ZXJmbG93KCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl90b29sdGlwVGFyZ2V0O1xuICAgIGNvbnN0IHBhcmVudEVsID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIGNvbnN0IHBhcmVudFRlc3QgPSBlbGVtZW50Lm9mZnNldFdpZHRoID4gcGFyZW50RWwub2Zmc2V0V2lkdGg7XG4gICAgY29uc3QgZWxlbWVudFRlc3QgPSBlbGVtZW50Lm9mZnNldFdpZHRoIDwgZWxlbWVudC5zY3JvbGxXaWR0aDtcblxuICAgIHJldHVybiBwYXJlbnRUZXN0IHx8IGVsZW1lbnRUZXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJlbnQoKSB7XG4gICAgbGV0IGNvbnRhaW5lckVsZW1lbnQ7XG5cbiAgICBpZiAoaXNTdHJpbmcodGhpcy5oZWxpcG9wcGVyQXBwZW5kVG8pKSB7XG4gICAgICBjb250YWluZXJFbGVtZW50ID0gY2xvc2VzdCh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwgdGhpcy5oZWxpcG9wcGVyQXBwZW5kVG8pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250YWluZXJFbGVtZW50ID0gdGhpcy5oZWxpcG9wcGVyQXBwZW5kVG87XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRhaW5lckVsZW1lbnQgfHwgZG9jdW1lbnQuYm9keTtcbiAgfVxuXG4gIHByaXZhdGUgbWFya0Rpc2FibGVkKGRpc2FibGVkID0gdHJ1ZSkge1xuICAgIGlmICh0aGlzLmluc3RhbmNlKSB7XG4gICAgICBkaXNhYmxlZCA/IHRoaXMuaW5zdGFuY2UuZGlzYWJsZSgpIDogdGhpcy5pbnN0YW5jZS5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVUaGVtZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb2Zmc2V0OiB0aGlzLmhlbGlwb3BwZXJPZmZzZXQgfHwgKFswLCB0aGlzLmlzVG9vbHRpcCA/IDUgOiAxMF0gYXMgW251bWJlciwgbnVtYmVyXSksXG4gICAgICB0aGVtZTogdGhpcy5pc1Rvb2x0aXAgPyBudWxsIDogJ2xpZ2h0JyxcbiAgICAgIGFycm93OiB0aGlzLmlzVG9vbHRpcCA9PT0gZmFsc2UsXG4gICAgICBhbmltYXRpb246IHRoaXMuaXNUb29sdGlwID8gYHNjYWxlYCA6IG51bGwsXG4gICAgICBpbnRlcmFjdGl2ZTogIXRoaXMuaXNUb29sdGlwXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQ2xvc2VCdXR0b24oaW5zdGFuY2U6IEluc3RhbmNlV2l0aENsb3NlKSB7XG4gICAgY29uc3QgcG9wcGVyID0gaW5zdGFuY2UucG9wcGVyO1xuICAgIGNvbnN0IGNsb3NlSWNvbiA9IHRoaXMubWVyZ2VkQ29uZmlnLmNsb3NlSWNvbjtcbiAgICBjb25zdCBjbG9zZUJ1dHRvbkVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBhZGRDbGFzcyhjbG9zZUJ1dHRvbkVsZW1lbnQsICd0aXBweS1jbG9zZScpO1xuICAgIGNsb3NlQnV0dG9uRWxlbWVudC5pbm5lckhUTUwgPSBjbG9zZUljb247XG5cbiAgICBjb25zdCBjbG9zZUJ1dHRvblN1YnNjcmlwdGlvbiA9IGZyb21FdmVudChjbG9zZUJ1dHRvbkVsZW1lbnQsICdjbGljaycpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmhpZGUoKSk7XG4gICAgcG9wcGVyLmFwcGVuZENoaWxkKGNsb3NlQnV0dG9uRWxlbWVudCk7XG5cbiAgICBpbnN0YW5jZS5jbG9zZUJ1dHRvbkVsZW1lbnQgPSBjbG9zZUJ1dHRvbkVsZW1lbnQ7XG4gICAgaW5zdGFuY2UuY2xvc2VCdXR0b25TdWJzY3JpcHRpb24gPSBjbG9zZUJ1dHRvblN1YnNjcmlwdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQ2xvc2VCdXR0b24oaW5zdGFuY2U6IEluc3RhbmNlV2l0aENsb3NlKSB7XG4gICAgaW5zdGFuY2UucG9wcGVyLnJlbW92ZUNoaWxkKGluc3RhbmNlLmNsb3NlQnV0dG9uRWxlbWVudCk7XG4gICAgaW5zdGFuY2UuY2xvc2VCdXR0b25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICBpbnN0YW5jZS5jbG9zZUJ1dHRvbkVsZW1lbnQgPSBudWxsO1xuICAgIGluc3RhbmNlLmNsb3NlQnV0dG9uU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tPdmVyZmxvdygpIHtcbiAgICBpZiAodGhpcy5zaG93T25seU9uVGV4dE92ZXJmbG93KSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdGhpcy5tYXJrRGlzYWJsZWQodGhpcy5pc0VsZW1lbnRPdmVyZmxvdygpID09PSBmYWxzZSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveVRlbXBsYXRlKCkge1xuICAgIHRoaXMuYXBwUmVmLmRldGFjaFZpZXcodGhpcy50cGxQb3J0YWwudmlld1JlZik7XG4gICAgdGhpcy50cGxQb3J0YWwuZGVzdHJveSgpO1xuICAgIHRoaXMudHBsUG9ydGFsID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ29uZmlnKGNvbmZpZzogSGVsaXBvcHBlckNvbmZpZykge1xuICAgIGNvbnN0IGRlZmF1bHRzOiBIZWxpcG9wcGVyQ29uZmlnID0ge1xuICAgICAgY2xvc2VJY29uOiBpY29uLFxuICAgICAgYmVmb3JlUmVuZGVyKGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZGVmYXVsdHMsXG4gICAgICAuLi5jb25maWdcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlQ29tcG9uZW50KGNvbnRlbnQ6IFR5cGU8YW55Pikge1xuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLnJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbnRlbnQpO1xuICAgIGNvbnN0IGluamVjdG9yID0gdGhpcy5pbmplY3RvciB8fCB0aGlzLmhvc3RJbmplY3RvcjtcbiAgICB0aGlzLmlubmVyQ29tcG9uZW50UmVmID0gZmFjdG9yeS5jcmVhdGUoaW5qZWN0b3IpO1xuICAgIHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcodGhpcy5pbm5lckNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgdGhpcy5pbm5lckNvbXBvbmVudFJlZi5ob3N0Vmlldy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJDb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveUNvbXBvbmVudCgpIHtcbiAgICB0aGlzLmlubmVyQ29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KHRoaXMuaW5uZXJDb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgIHRoaXMuaW5uZXJDb21wb25lbnRSZWYgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlQ29udGVudCgpIHtcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5fY29udGVudDtcbiAgICBsZXQgZmluYWxDb250ZW50O1xuXG4gICAgaWYgKGNvbnRlbnQgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgICAgZmluYWxDb250ZW50ID0gdGhpcy5yZXNvbHZlVGVtcGxhdGUoY29udGVudCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGZpbmFsQ29udGVudCA9IHRoaXMubWVyZ2VkQ29uZmlnLmJlZm9yZVJlbmRlcihjb250ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmluYWxDb250ZW50ID0gdGhpcy5yZXNvbHZlQ29tcG9uZW50KGNvbnRlbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBmaW5hbENvbnRlbnQ7XG4gIH1cbn1cbiJdfQ==
import { fromEvent, Observable } from 'rxjs';
import { auditTime, distinctUntilChanged, map, take } from 'rxjs/operators';
import { auditTime, distinctUntilChanged, map } from 'rxjs/operators';
import { ElementRef } from '@angular/core';

@@ -64,5 +64,2 @@ const hasSupport = 'IntersectionObserver' in window;

}
export function zoneStable(zone) {
return zone.onStable.pipe(take(1));
}
export function isString(value) {

@@ -107,2 +104,2 @@ return typeof value === 'string';

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmduZWF0L2hlbGlwb3BwZXIvIiwic291cmNlcyI6WyJsaWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUUsT0FBTyxFQUFFLFVBQVUsRUFBd0MsTUFBTSxlQUFlLENBQUM7QUFFakYsTUFBTSxVQUFVLEdBQUcsc0JBQXNCLElBQUksTUFBTSxDQUFDO0FBRXBELE1BQU0sVUFBVSxNQUFNLENBQ3BCLE9BQW9CLEVBQ3BCLFVBQW9DO0lBQ2xDLElBQUksRUFBRSxJQUFJO0lBQ1YsU0FBUyxFQUFFLEdBQUc7Q0FDZjtJQUVELE9BQU8sSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUU7UUFDakMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDdkI7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ3BELElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTtnQkFDeEIsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNsQixVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDdkI7UUFDSCxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFWixRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFCLE9BQU8sR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3JDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQXVDRCxNQUFNLHVCQUF1QixHQUFHLGdC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O0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQWdCLENBQUM7SUFDbEQsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb21FdmVudCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgYXVkaXRUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWxlbWVudFJlZiwgRW1iZWRkZWRWaWV3UmVmLCBOZ1pvbmUsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmNvbnN0IGhhc1N1cHBvcnQgPSAnSW50ZXJzZWN0aW9uT2JzZXJ2ZXInIGluIHdpbmRvdztcblxuZXhwb3J0IGZ1bmN0aW9uIGluVmlldyhcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIG9wdGlvbnM6IEludGVyc2VjdGlvbk9ic2VydmVySW5pdCA9IHtcbiAgICByb290OiBudWxsLFxuICAgIHRocmVzaG9sZDogMC4zXG4gIH1cbikge1xuICByZXR1cm4gbmV3IE9ic2VydmFibGUoc3Vic2NyaWJlciA9PiB7XG4gICAgaWYgKCFoYXNTdXBwb3J0KSB7XG4gICAgICBzdWJzY3JpYmVyLm5leHQoKTtcbiAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoW2VudHJ5XSkgPT4ge1xuICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgIHN1YnNjcmliZXIubmV4dCgpO1xuICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgfSwgb3B0aW9ucyk7XG5cbiAgICBvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQpO1xuXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfSk7XG59XG5cbmludGVyZmFjZSBXaW5kb3cge1xuICBSZXNpemVPYnNlcnZlcjogdHlwZW9mIFJlc2l6ZU9ic2VydmVyO1xufVxuXG5pbnRlcmZhY2UgUmVzaXplT2JzZXJ2ZXJPcHRpb25zIHtcbiAgYm94PzogJ2NvbnRlbnQtYm94JyB8ICdib3JkZXItYm94Jztcbn1cblxuaW50ZXJmYWNlIFJlc2l6ZU9ic2VydmVyU2l6ZSB7XG4gIGlubGluZVNpemU6IG51bWJlcjtcbiAgYmxvY2tTaXplOiBudW1iZXI7XG59XG5cbmRlY2xhcmUgY2xhc3MgUmVzaXplT2JzZXJ2ZXIge1xuICBjb25zdHJ1Y3RvcihjYWxsYmFjazogUmVzaXplT2JzZXJ2ZXJDYWxsYmFjayk7XG5cbiAgZGlzY29ubmVjdCgpOiB2b2lkO1xuXG4gIG9ic2VydmUodGFyZ2V0OiBFbGVtZW50LCBvcHRpb25zPzogUmVzaXplT2JzZXJ2ZXJPcHRpb25zKTogdm9pZDtcblxuICB1bm9ic2VydmUodGFyZ2V0OiBFbGVtZW50KTogdm9pZDtcbn1cblxudHlwZSBSZXNpemVPYnNlcnZlckNhbGxiYWNrID0gKGVudHJpZXM6IFJlYWRvbmx5QXJyYXk8UmVzaXplT2JzZXJ2ZXJFbnRyeT4sIG9ic2VydmVyOiBSZXNpemVPYnNlcnZlcikgPT4gdm9pZDtcblxuaW50ZXJmYWNlIFJlc2l6ZU9ic2VydmVyRW50cnkge1xuICByZWFkb25seSB0YXJnZXQ6IEVsZW1lbnQ7XG4gIHJlYWRvbmx5IGNvbnRlbnRSZWN0OiBET01SZWN0UmVhZE9ubHk7XG4gIHJlYWRvbmx5IGJvcmRlckJveFNpemU6IFJlc2l6ZU9ic2VydmVyU2l6ZTtcbiAgcmVhZG9ubHkgY29udGVudEJveFNpemU6IFJlc2l6ZU9ic2VydmVyU2l6ZTtcbn1cblxudHlwZSBFbGVtZW50RGltZW5zaW9ucyA9IHtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG59O1xuXG5jb25zdCBpc1N1cHBvcnRSZXNpemVPYnNlcnZlciA9ICdSZXNpemVPYnNlcnZlcicgaW4gd2luZG93O1xuY29uc3QgQVVESVRfVElNRSA9IDE1MDtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpbWVuc2lvbnNDaGFuZ2VzKHRhcmdldDogSFRNTEVsZW1lbnQsIG9wdGlvbnM/OiBSZXNpemVPYnNlcnZlck9wdGlvbnMpIHtcbiAgcmV0dXJuIGlzU3VwcG9ydFJlc2l6ZU9ic2VydmVyXG4gICAgPyByZXNpemVPYnNlcnZlclN0cmF0ZWd5KHRhcmdldCwgb3B0aW9ucykucGlwZShhdWRpdFRpbWUoQVVESVRfVElNRSkpXG4gICAgOiByZXNpemVXaW5kb3dTdHJhdGVneSh0YXJnZXQpO1xufVxuXG5mdW5jdGlvbiByZXNpemVXaW5kb3dTdHJhdGVneSh0YXJnZXQ6IEhUTUxFbGVtZW50KTogT2JzZXJ2YWJsZTxFbGVtZW50RGltZW5zaW9ucz4ge1xuICByZXR1cm4gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLnBpcGUoXG4gICAgYXVkaXRUaW1lKEFVRElUX1RJTUUpLFxuICAgIG1hcCgoKSA9PiAoe1xuICAgICAgd2lkdGg6IHRhcmdldC5vZmZzZXRXaWR0aCxcbiAgICAgIGhlaWdodDogdGFyZ2V0Lm9mZnNldEhlaWdodFxuICAgIH0pKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgY3VycmVudCkgPT4ge1xuICAgICAgcmV0dXJuIHByZXYud2lkdGggPT09IGN1cnJlbnQud2lkdGggJiYgcHJldi5oZWlnaHQgPT09IGN1cnJlbnQuaGVpZ2h0O1xuICAgIH0pXG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlc2l6ZU9ic2VydmVyU3RyYXRlZ3koXG4gIHRhcmdldDogSFRNTEVsZW1lbnQsXG4gIG9wdGlvbnM6IFJlc2l6ZU9ic2VydmVyT3B0aW9ucyA9IHsgYm94OiAnYm9yZGVyLWJveCcgfVxuKTogT2JzZXJ2YWJsZTxFbGVtZW50RGltZW5zaW9ucz4ge1xuICByZXR1cm4gbmV3IE9ic2VydmFibGUoc3Vic2NyaWJlciA9PiB7XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKFtlbnRyeV0pID0+IHtcbiAgICAgIC8vIEN1cnJlbnRseSwgb25seSBGaXJlZm94IHN1cHBvcnRzIGBib3JkZXJCb3hTaXplYCBwcm9wZXJ0eSB3aGljaFxuICAgICAgLy8gZ2l2ZXMgdGhlIGJvcmRlci1ib3ggdmFsdWUgaW5jbHVkZSBwYWRkaW5nIGFuZCBib3JkZXJcbiAgICAgIGlmIChlbnRyeS5ib3JkZXJCb3hTaXplKSB7XG4gICAgICAgIHN1YnNjcmliZXIubmV4dCh7XG4gICAgICAgICAgd2lkdGg6IGVudHJ5LmJvcmRlckJveFNpemUuaW5saW5lU2l6ZSxcbiAgICAgICAgICBoZWlnaHQ6IGVudHJ5LmJvcmRlckJveFNpemUuYmxvY2tTaXplXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Vic2NyaWJlci5uZXh0KHtcbiAgICAgICAgICB3aWR0aDogKGVudHJ5LnRhcmdldCBhcyBIVE1MRWxlbWVudCkub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiAoZW50cnkudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5vZmZzZXRIZWlnaHRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBvYnNlcnZlci5vYnNlcnZlKHRhcmdldCwgb3B0aW9ucyk7XG5cbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZUVsZW1lbnQ8VD4oZWxlbWVudE9yUmVmOiBFbGVtZW50UmVmPFQ+IHwgVCk6IFQge1xuICByZXR1cm4gZWxlbWVudE9yUmVmIGluc3RhbmNlb2YgRWxlbWVudFJlZiA/IGVsZW1lbnRPclJlZi5uYXRpdmVFbGVtZW50IDogZWxlbWVudE9yUmVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gem9uZVN0YWJsZSh6b25lOiBOZ1pvbmUpIHtcbiAgcmV0dXJuIHpvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZENsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZTogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY2xhc3NOYW1lKSkge1xuICAgIGNsYXNzTmFtZS5mb3JFYWNoKG5hbWUgPT4gZWxlbWVudC5jbGFzc0xpc3QuYWRkKG5hbWUpKTtcbiAgfSBlbHNlIHtcbiAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0YWdOYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9zZXN0KGVsZW1lbnQ6IEVsZW1lbnQsIHNlbGVjdG9yOiBzdHJpbmcpIHtcbiAgaWYgKHdpbmRvd1snRWxlbWVudCddICYmICFFbGVtZW50LnByb3RvdHlwZS5jbG9zZXN0KSB7XG4gICAgRWxlbWVudC5wcm90b3R5cGUuY2xvc2VzdCA9IGZ1bmN0aW9uKHMpIHtcbiAgICAgIGxldCBtYXRjaGVzID0gKHRoaXMuZG9jdW1lbnQgfHwgdGhpcy5vd25lckRvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKHMpLFxuICAgICAgICBpLFxuICAgICAgICBlbCA9IHRoaXM7XG4gICAgICBkbyB7XG4gICAgICAgIGkgPSBtYXRjaGVzLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKC0taSA+PSAwICYmIG1hdGNoZXMuaXRlbShpKSAhPT0gZWwpIHt9XG4gICAgICB9IHdoaWxlIChpIDwgMCAmJiAoZWwgPSBlbC5wYXJlbnRFbGVtZW50KSk7XG4gICAgICByZXR1cm4gZWw7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50LmNsb3Nlc3Qoc2VsZWN0b3IpO1xufVxuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVQb3J0YWwge1xuICB2aWV3UmVmOiBFbWJlZGRlZFZpZXdSZWY8YW55PjtcblxuICBjb25zdHJ1Y3Rvcih0cGw6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICB0aGlzLnZpZXdSZWYgPSB0cGwuY3JlYXRlRW1iZWRkZWRWaWV3KHt9KTtcbiAgICB0aGlzLnZpZXdSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0IGVsZW1lbnRSZWYoKSB7XG4gICAgcmV0dXJuIHRoaXMudmlld1JlZi5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMudmlld1JlZi5kZXN0cm95KCk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmduZWF0L2hlbGlwb3BwZXIvIiwic291cmNlcyI6WyJsaWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQVEsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUV6RSxNQUFNLFVBQVUsR0FBRyxzQkFBc0IsSUFBSSxNQUFNLENBQUM7QUFFcEQsTUFBTSxVQUFVLE1BQU0sQ0FDcEIsT0FBb0IsRUFDcEIsVUFBb0M7SUFDbEMsSUFBSSxFQUFFLElBQUk7SUFDVixTQUFTLEVBQUUsR0FBRztDQUNmO0lBRUQsT0FBTyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUNqQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN2QjtRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDcEQsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFO2dCQUN4QixVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2xCLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN2QjtRQUNILENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVaLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFMUIsT0FBTyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDckMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBdUNELE1BQU0sdUJBQXVCLEdBQUcsZ0JBQWdCLElBQUks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LEVBQUUsQ0FBQztJQUN6QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcm9tRXZlbnQsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGF1ZGl0VGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVsZW1lbnRSZWYsIEVtYmVkZGVkVmlld1JlZiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuY29uc3QgaGFzU3VwcG9ydCA9ICdJbnRlcnNlY3Rpb25PYnNlcnZlcicgaW4gd2luZG93O1xuXG5leHBvcnQgZnVuY3Rpb24gaW5WaWV3KFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgb3B0aW9uczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJJbml0ID0ge1xuICAgIHJvb3Q6IG51bGwsXG4gICAgdGhyZXNob2xkOiAwLjNcbiAgfVxuKSB7XG4gIHJldHVybiBuZXcgT2JzZXJ2YWJsZShzdWJzY3JpYmVyID0+IHtcbiAgICBpZiAoIWhhc1N1cHBvcnQpIHtcbiAgICAgIHN1YnNjcmliZXIubmV4dCgpO1xuICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChbZW50cnldKSA9PiB7XG4gICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgc3Vic2NyaWJlci5uZXh0KCk7XG4gICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgIH1cbiAgICB9LCBvcHRpb25zKTtcblxuICAgIG9ic2VydmVyLm9ic2VydmUoZWxlbWVudCk7XG5cbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9KTtcbn1cblxuaW50ZXJmYWNlIFdpbmRvdyB7XG4gIFJlc2l6ZU9ic2VydmVyOiB0eXBlb2YgUmVzaXplT2JzZXJ2ZXI7XG59XG5cbmludGVyZmFjZSBSZXNpemVPYnNlcnZlck9wdGlvbnMge1xuICBib3g/OiAnY29udGVudC1ib3gnIHwgJ2JvcmRlci1ib3gnO1xufVxuXG5pbnRlcmZhY2UgUmVzaXplT2JzZXJ2ZXJTaXplIHtcbiAgaW5saW5lU2l6ZTogbnVtYmVyO1xuICBibG9ja1NpemU6IG51bWJlcjtcbn1cblxuZGVjbGFyZSBjbGFzcyBSZXNpemVPYnNlcnZlciB7XG4gIGNvbnN0cnVjdG9yKGNhbGxiYWNrOiBSZXNpemVPYnNlcnZlckNhbGxiYWNrKTtcblxuICBkaXNjb25uZWN0KCk6IHZvaWQ7XG5cbiAgb2JzZXJ2ZSh0YXJnZXQ6IEVsZW1lbnQsIG9wdGlvbnM/OiBSZXNpemVPYnNlcnZlck9wdGlvbnMpOiB2b2lkO1xuXG4gIHVub2JzZXJ2ZSh0YXJnZXQ6IEVsZW1lbnQpOiB2b2lkO1xufVxuXG50eXBlIFJlc2l6ZU9ic2VydmVyQ2FsbGJhY2sgPSAoZW50cmllczogUmVhZG9ubHlBcnJheTxSZXNpemVPYnNlcnZlckVudHJ5Piwgb2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyKSA9PiB2b2lkO1xuXG5pbnRlcmZhY2UgUmVzaXplT2JzZXJ2ZXJFbnRyeSB7XG4gIHJlYWRvbmx5IHRhcmdldDogRWxlbWVudDtcbiAgcmVhZG9ubHkgY29udGVudFJlY3Q6IERPTVJlY3RSZWFkT25seTtcbiAgcmVhZG9ubHkgYm9yZGVyQm94U2l6ZTogUmVzaXplT2JzZXJ2ZXJTaXplO1xuICByZWFkb25seSBjb250ZW50Qm94U2l6ZTogUmVzaXplT2JzZXJ2ZXJTaXplO1xufVxuXG50eXBlIEVsZW1lbnREaW1lbnNpb25zID0ge1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbn07XG5cbmNvbnN0IGlzU3VwcG9ydFJlc2l6ZU9ic2VydmVyID0gJ1Jlc2l6ZU9ic2VydmVyJyBpbiB3aW5kb3c7XG5jb25zdCBBVURJVF9USU1FID0gMTUwO1xuXG5leHBvcnQgZnVuY3Rpb24gZGltZW5zaW9uc0NoYW5nZXModGFyZ2V0OiBIVE1MRWxlbWVudCwgb3B0aW9ucz86IFJlc2l6ZU9ic2VydmVyT3B0aW9ucykge1xuICByZXR1cm4gaXNTdXBwb3J0UmVzaXplT2JzZXJ2ZXJcbiAgICA/IHJlc2l6ZU9ic2VydmVyU3RyYXRlZ3kodGFyZ2V0LCBvcHRpb25zKS5waXBlKGF1ZGl0VGltZShBVURJVF9USU1FKSlcbiAgICA6IHJlc2l6ZVdpbmRvd1N0cmF0ZWd5KHRhcmdldCk7XG59XG5cbmZ1bmN0aW9uIHJlc2l6ZVdpbmRvd1N0cmF0ZWd5KHRhcmdldDogSFRNTEVsZW1lbnQpOiBPYnNlcnZhYmxlPEVsZW1lbnREaW1lbnNpb25zPiB7XG4gIHJldHVybiBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJykucGlwZShcbiAgICBhdWRpdFRpbWUoQVVESVRfVElNRSksXG4gICAgbWFwKCgpID0+ICh7XG4gICAgICB3aWR0aDogdGFyZ2V0Lm9mZnNldFdpZHRoLFxuICAgICAgaGVpZ2h0OiB0YXJnZXQub2Zmc2V0SGVpZ2h0XG4gICAgfSkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyZW50KSA9PiB7XG4gICAgICByZXR1cm4gcHJldi53aWR0aCA9PT0gY3VycmVudC53aWR0aCAmJiBwcmV2LmhlaWdodCA9PT0gY3VycmVudC5oZWlnaHQ7XG4gICAgfSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gcmVzaXplT2JzZXJ2ZXJTdHJhdGVneShcbiAgdGFyZ2V0OiBIVE1MRWxlbWVudCxcbiAgb3B0aW9uczogUmVzaXplT2JzZXJ2ZXJPcHRpb25zID0geyBib3g6ICdib3JkZXItYm94JyB9XG4pOiBPYnNlcnZhYmxlPEVsZW1lbnREaW1lbnNpb25zPiB7XG4gIHJldHVybiBuZXcgT2JzZXJ2YWJsZShzdWJzY3JpYmVyID0+IHtcbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoW2VudHJ5XSkgPT4ge1xuICAgICAgLy8gQ3VycmVudGx5LCBvbmx5IEZpcmVmb3ggc3VwcG9ydHMgYGJvcmRlckJveFNpemVgIHByb3BlcnR5IHdoaWNoXG4gICAgICAvLyBnaXZlcyB0aGUgYm9yZGVyLWJveCB2YWx1ZSBpbmNsdWRlIHBhZGRpbmcgYW5kIGJvcmRlclxuICAgICAgaWYgKGVudHJ5LmJvcmRlckJveFNpemUpIHtcbiAgICAgICAgc3Vic2NyaWJlci5uZXh0KHtcbiAgICAgICAgICB3aWR0aDogZW50cnkuYm9yZGVyQm94U2l6ZS5pbmxpbmVTaXplLFxuICAgICAgICAgIGhlaWdodDogZW50cnkuYm9yZGVyQm94U2l6ZS5ibG9ja1NpemVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdWJzY3JpYmVyLm5leHQoe1xuICAgICAgICAgIHdpZHRoOiAoZW50cnkudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5vZmZzZXRXaWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IChlbnRyeS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLm9mZnNldEhlaWdodFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIG9ic2VydmVyLm9ic2VydmUodGFyZ2V0LCBvcHRpb25zKTtcblxuICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlRWxlbWVudDxUPihlbGVtZW50T3JSZWY6IEVsZW1lbnRSZWY8VD4gfCBUKTogVCB7XG4gIHJldHVybiBlbGVtZW50T3JSZWYgaW5zdGFuY2VvZiBFbGVtZW50UmVmID8gZWxlbWVudE9yUmVmLm5hdGl2ZUVsZW1lbnQgOiBlbGVtZW50T3JSZWY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZTogYW55KTogdmFsdWUgaXMgc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRDbGFzcyhlbGVtZW50LCBjbGFzc05hbWU6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNsYXNzTmFtZSkpIHtcbiAgICBjbGFzc05hbWUuZm9yRWFjaChuYW1lID0+IGVsZW1lbnQuY2xhc3NMaXN0LmFkZChuYW1lKSk7XG4gIH0gZWxzZSB7XG4gICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodGFnTmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VzdChlbGVtZW50OiBFbGVtZW50LCBzZWxlY3Rvcjogc3RyaW5nKSB7XG4gIGlmICh3aW5kb3dbJ0VsZW1lbnQnXSAmJiAhRWxlbWVudC5wcm90b3R5cGUuY2xvc2VzdCkge1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmNsb3Nlc3QgPSBmdW5jdGlvbihzKSB7XG4gICAgICBsZXQgbWF0Y2hlcyA9ICh0aGlzLmRvY3VtZW50IHx8IHRoaXMub3duZXJEb2N1bWVudCkucXVlcnlTZWxlY3RvckFsbChzKSxcbiAgICAgICAgaSxcbiAgICAgICAgZWwgPSB0aGlzO1xuICAgICAgZG8ge1xuICAgICAgICBpID0gbWF0Y2hlcy5sZW5ndGg7XG4gICAgICAgIHdoaWxlICgtLWkgPj0gMCAmJiBtYXRjaGVzLml0ZW0oaSkgIT09IGVsKSB7fVxuICAgICAgfSB3aGlsZSAoaSA8IDAgJiYgKGVsID0gZWwucGFyZW50RWxlbWVudCkpO1xuICAgICAgcmV0dXJuIGVsO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZWxlbWVudC5jbG9zZXN0KHNlbGVjdG9yKTtcbn1cblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlUG9ydGFsIHtcbiAgdmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPGFueT47XG5cbiAgY29uc3RydWN0b3IodHBsOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy52aWV3UmVmID0gdHBsLmNyZWF0ZUVtYmVkZGVkVmlldyh7fSk7XG4gICAgdGhpcy52aWV3UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCBlbGVtZW50UmVmKCkge1xuICAgIHJldHVybiB0aGlzLnZpZXdSZWYucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLnZpZXdSZWYuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
import { __assign, __decorate, __param } from "tslib";
import { ApplicationRef, ComponentFactoryResolver, ComponentRef, Directive, ElementRef, Inject, Injector, Input, NgZone, OnDestroy, Output, TemplateRef, Type } from '@angular/core';
import tippy from 'tippy.js';
import { forkJoin, fromEvent, Subject } from 'rxjs';
import { addClass, closest, coerceElement, createElement, dimensionsChanges, inView, isString, TemplatePortal, zoneStable } from './utils';
import { fromEvent, Subject } from 'rxjs';
import { addClass, closest, coerceElement, createElement, dimensionsChanges, inView, isString, TemplatePortal } from './utils';
import { takeUntil } from 'rxjs/operators';

@@ -80,5 +80,7 @@ import { HELIPOPPER_CONFIG } from './helipopper.types';

else {
forkJoin([inView(this.host.nativeElement), zoneStable(this.zone)])
.pipe(takeUntil(this._destroy))
.subscribe(function () { return _this.create(); });
requestAnimationFrame(function () {
inView(_this.host.nativeElement)
.pipe(takeUntil(_this._destroy))
.subscribe(function () { return _this.create(); });
});
}

@@ -234,3 +236,3 @@ },

if (this.showOnlyOnTextOverflow) {
zoneStable(this.zone).subscribe(function () { return _this.markDisabled(_this.isElementOverflow() === false); });
requestAnimationFrame(function () { return _this.markDisabled(_this.isElementOverflow() === false); });
}

@@ -345,2 +347,2 @@ };

export { HelipopperDirective };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVsaXBvcHBlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmduZWF0L2hlbGlwb3BwZXIvIiwic291cmNlcyI6WyJsaWIvaGVsaXBvcHBlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLFdBQVcsRUFDWCxJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUEwQixNQUFNLFVBQVUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEQsT0FBTyxFQUNMLFFBQVEsRUFDUixPQUFPLEVBQ1AsYUFBYSxFQUNiLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsTUFBTSxFQUNOLFFBQVEsRUFDUixjQUFjLEVBQ2QsVUFBVSxFQUNYLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQWtELE1BQU0sb0JBQW9CLENBQUM7QUFDdkcsT0FBTyxFQUFFLHdCQUF3QixJQUFJLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxGLElBQU0sSUFBSSxHQUFHLG9xQkFJTixDQUFDO0FBS1I7SUEyRkUsNkJBQ1UsSUFBZ0IsRUFDaEIsTUFBc0IsRUFDdEIsSUFBWSxFQUNaLFFBQWtDLEVBQ2xDLFlBQXNCLEVBQ0ssTUFBd0I7UUFMbkQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osYUFBUSxHQUFSLFFBQVEsQ0FBMEI7UUFDbEMs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bnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdGlwcHksIHsgSW5zdGFuY2UsIFByb3BzIH0gZnJvbSAndGlwcHkuanMnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIGZyb21FdmVudCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT3B0aW9ucyBhcyBQb3BwZXJPcHRpb25zIH0gZnJvbSAnQHBvcHBlcmpzL2NvcmUnO1xuaW1wb3J0IHtcbiAgYWRkQ2xhc3MsXG4gIGNsb3Nlc3QsXG4gIGNvZXJjZUVsZW1lbnQsXG4gIGNyZWF0ZUVsZW1lbnQsXG4gIGRpbWVuc2lvbnNDaGFuZ2VzLFxuICBpblZpZXcsXG4gIGlzU3RyaW5nLFxuICBUZW1wbGF0ZVBvcnRhbCxcbiAgem9uZVN0YWJsZVxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEhFTElQT1BQRVJfQ09ORklHLCBIZWxpcG9wcGVyQ29uZmlnLCBJbnN0YW5jZVdpdGhDbG9zZSwgVmFyaWF0aW9uIH0gZnJvbSAnLi9oZWxpcG9wcGVyLnR5cGVzJztcbmltcG9ydCB7IGluaXRpYWxIZWxpcG9wcGVyT3B0aW9ucyBhcyBpbml0aWFsT3B0aW9ucyB9IGZyb20gJy4vaGVsaXBvcHBlci1vcHRpb25zJztcblxuY29uc3QgaWNvbiA9IGBcbiAgICAgIDxzdmcgdmVyc2lvbj1cIjEuMVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpdD1cIlwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCIgZm9jdXNhYmxlPVwiZmFsc2VcIj5cbjxwYXRoIGQ9XCJNMTIuNzkzIDEybDQuMDM5LTQuMDI1YzAuMjE5LTAuMjE5IDAuMjI0LTAuNTc4IDAuMDEyLTAuODAyLTAuMjEzLTAuMjI1LTAuNTYzLTAuMjMxLTAuNzgyLTAuMDExbC00LjA2MiA0LjA0OS00LjA2Mi00LjA0OWMtMC4yMTktMC4yMi0wLjU2OS0wLjIxMy0wLjc4MiAwLjAxMXMtMC4yMDggMC41ODMgMC4wMTIgMC44MDJsNC4wMzkgNC4wMjUtNC4wMzkgNC4wMjVjLTAuMjIgMC4yMTktMC4yMjQgMC41NzgtMC4wMTIgMC44MDIgMC4xMDggMC4xMTUgMC4yNTIgMC4xNzIgMC4zOTcgMC4xNzIgMC4xMzggMCAwLjI3OC0wLjA1MyAwLjM4NS0wLjE2MWw0LjA2Mi00LjA0OSA0LjA2MiA0LjA0OWMwLjEwNyAwLjEwOCAwLjI0NSAwLjE2MSAwLjM4NSAwLjE2MSAwLjE0NCAwIDAuMjg3LTAuMDU4IDAuMzk3LTAuMTcyIDAuMjEyLTAuMjI1IDAuMjA3LTAuNTgzLTAuMDEyLTAuODAybC00LjAzOS00LjAyNXpcIj48L3BhdGg+XG48L3N2Zz5cbiAgICAgIGA7XG5cbnR5cGUgQ29udGVudCA9IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCBUeXBlPGFueT47XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogYFtoZWxpcG9wcGVyXWAsIGV4cG9ydEFzOiAnaGVsaXBvcHBlcicgfSlcbmV4cG9ydCBjbGFzcyBIZWxpcG9wcGVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgaGVsaXBvcHBlck9wdGlvbnM6IFBhcnRpYWw8UHJvcHM+ID0gaW5pdGlhbE9wdGlvbnMub3B0aW9ucztcblxuICBASW5wdXQoJ2hlbGlwb3BwZXJUZXh0T3ZlcmZsb3cnKVxuICBzaG93T25seU9uVGV4dE92ZXJmbG93ID0gaW5pdGlhbE9wdGlvbnMudGV4dE92ZXJmbG93O1xuXG4gIC8vIFRoZSBlbGVtZW50IHRoYXQgdGhlIHRyaWdnZXIgZXZlbnQgbGlzdGVuZXJzIGFyZSBhZGRlZCB0b1xuICBASW5wdXQoKVxuICB0cmlnZ2VyVGFyZ2V0OiBFbGVtZW50O1xuXG4gIEBJbnB1dCgpXG4gIGhlbGlwb3BwZXJIb3N0OiBFbGVtZW50O1xuXG4gIEBJbnB1dCgpXG4gIGhlbGlwb3BwZXJBcHBlbmRUbzogc3RyaW5nIHwgSFRNTEVsZW1lbnQgPSBpbml0aWFsT3B0aW9ucy5hcHBlbmRUbztcblxuICBASW5wdXQoKVxuICBoZWxpcG9wcGVyVHJpZ2dlcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIGhlbGlwb3BwZXJBbGxvd0Nsb3NlOiBib29sZWFuID0gaW5pdGlhbE9wdGlvbnMuYWxsb3dDbG9zZTtcblxuICBASW5wdXQoKVxuICBoZWxpcG9wcGVyQ2xhc3M6IHN0cmluZyB8IEFycmF5PHN0cmluZz4gfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgaGVsaXBvcHBlck9mZnNldDogW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoJ2hlbGlwb3BwZXJJbmplY3RvcicpXG4gIGluamVjdG9yOiBJbmplY3RvciB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoJ2hlbGlwb3BwZXJQbGFjZW1lbnQnKVxuICBzZXQgcGxhY2VtZW50KHBsYWNlbWVudDogUG9wcGVyT3B0aW9uc1sncGxhY2VtZW50J10pIHtcbiAgICB0aGlzLl9wbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgdGhpcy5zZXRQcm9wcyh7IHBsYWNlbWVudCB9KTtcbiAgfVxuXG4gIEBJbnB1dCgnaGVsaXBvcHBlclZhcmlhdGlvbicpXG4gIHNldCB2YXJpYXRpb24odmFyaWF0aW9uOiBWYXJpYXRpb24pIHtcbiAgICB0aGlzLl92YXJpYXRpb24gPSB2YXJpYXRpb247XG4gICAgdGhpcy5zZXRQcm9wcyh0aGlzLnJlc29sdmVUaGVtZSgpKTtcbiAgfVxuXG4gIEBJbnB1dCgnaGVsaXBvcHBlckRpc2FibGVkJylcbiAgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICB0aGlzLm1hcmtEaXNhYmxlZCh0aGlzLl9kaXNhYmxlZCk7XG4gIH1cblxuICBASW5wdXQoJ2hlbGlwb3BwZXJTdGlja3knKVxuICBzZXQgc3RpY2t5KGlzU3RpY2t5OiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLmluc3RhbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzU3RpY2t5KSB7XG4gICAgICB0aGlzLnNldFByb3BzKHsgdHJpZ2dlcjogJ21hbnVhbCcsIGhpZGVPbkNsaWNrOiBmYWxzZSB9KTtcbiAgICAgIHRoaXMuc2hvdygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICAgIHRoaXMuc2V0UHJvcHMoeyB0cmlnZ2VyOiB0aGlzLmhlbGlwb3BwZXJUcmlnZ2VyIH0pO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBoZWxpcG9wcGVyKGNvbnRlbnQ6IENvbnRlbnQpIHtcbiAgICB0aGlzLl9jb250ZW50ID0gY29udGVudDtcblxuICAgIGlmICh0aGlzLmluc3RhbmNlKSB7XG4gICAgICB0aGlzLmNoZWNrT3ZlcmZsb3coKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ya0pvaW4oW2luVmlldyh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCksIHpvbmVTdGFibGUodGhpcy56b25lKV0pXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNyZWF0ZSgpKTtcbiAgICB9XG4gIH1cblxuICBAT3V0cHV0KCkgaGVsaXBvcHBlckNsb3NlID0gbmV3IFN1YmplY3QoKTtcbiAgQE91dHB1dCgpIGhlbGlwb3BwZXJWaXNpYmxlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBwcml2YXRlIF9jb250ZW50OiBDb250ZW50O1xuICBwcml2YXRlIF9kZXN0cm95ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfcGxhY2VtZW50OiBQb3BwZXJPcHRpb25zWydwbGFjZW1lbnQnXSA9IGluaXRpYWxPcHRpb25zLnBsYWNlbWVudDtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfdmFyaWF0aW9uOiBWYXJpYXRpb24gPSBpbml0aWFsT3B0aW9ucy52YXJpYXRpb247XG4gIHByaXZhdGUgaW5zdGFuY2U6IEluc3RhbmNlO1xuICBwcml2YXRlIHRwbFBvcnRhbDogVGVtcGxhdGVQb3J0YWw7XG4gIHByaXZhdGUgbWVyZ2VkQ29uZmlnOiBIZWxpcG9wcGVyQ29uZmlnO1xuICBwcml2YXRlIGlubmVyQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PjtcbiAgcHVibGljIHdoZW5TdGFibGU6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaG9zdDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgaG9zdEluamVjdG9yOiBJbmplY3RvcixcbiAgICBASW5qZWN0KEhFTElQT1BQRVJfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogSGVsaXBvcHBlckNvbmZpZ1xuICApIHtcbiAgICB0aGlzLm1lcmdlZENvbmZpZyA9IHRoaXMuY3JlYXRlQ29uZmlnKGNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGdldCBfdG9vbHRpcFRhcmdldCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIGNvZXJjZUVsZW1lbnQodGhpcy50cmlnZ2VyVGFyZ2V0KSB8fCB0aGlzLmhvc3QubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IF90b29sdGlwSG9zdCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIGNvZXJjZUVsZW1lbnQodGhpcy5oZWxpcG9wcGVySG9zdCkgfHwgdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGdldCBpc1Rvb2x0aXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhcmlhdGlvbiA9PT0gJ3Rvb2x0aXAnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaXNQb3BwZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhcmlhdGlvbiA9PT0gJ3BvcHBlcic7XG4gIH1cblxuICBzZXRQcm9wcyhwcm9wczogUGFydGlhbDxQcm9wcz4pIHtcbiAgICB0aGlzLmluc3RhbmNlICYmIHRoaXMuaW5zdGFuY2Uuc2V0UHJvcHMocHJvcHMpO1xuICB9XG5cbiAgaGlkZSgpIHtcbiAgICB0aGlzLmluc3RhbmNlLmhpZGUoKTtcbiAgfVxuXG4gIHNob3coKSB7XG4gICAgdGhpcy5pbnN0YW5jZS5zaG93KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3lWaWV3KCk7XG4gICAgdGhpcy5pbnN0YW5jZSAmJiB0aGlzLmluc3RhbmNlLmRlc3Ryb3koKTtcbiAgICB0aGlzLmluc3RhbmNlID0gbnVsbDtcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5uZ09uRGVzdHJveSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95VmlldygpIHtcbiAgICB0aGlzLnRwbFBvcnRhbCAmJiB0aGlzLmRlc3Ryb3lUZW1wbGF0ZSgpO1xuICAgIHRoaXMuaW5uZXJDb21wb25lbnRSZWYgJiYgdGhpcy5kZXN0cm95Q29tcG9uZW50KCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZSgpIHtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gdGhpcy5jcmVhdGVJbnN0YW5jZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSW5zdGFuY2UoKSB7XG4gICAgaWYgKHRoaXMuc2hvd09ubHlPblRleHRPdmVyZmxvdykge1xuICAgICAgZGltZW5zaW9uc0NoYW5nZXModGhpcy5fdG9vbHRpcEhvc3QpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5tYXJrRGlzYWJsZWQodGhpcy5pc0VsZW1lbnRPdmVyZmxvdygpID09PSBmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuaGVsaXBvcHBlclRyaWdnZXIgPSB0aGlzLnJlc29sdmVUcmlnZ2VyKCk7XG5cbiAgICB0aGlzLmluc3RhbmNlID0gdGlwcHkodGhpcy5fdG9vbHRpcEhvc3QsIHtcbiAgICAgIGNvbnRlbnQ6IHVuZGVmaW5lZCxcbiAgICAgIGFwcGVuZFRvOiB0aGlzLmdldFBhcmVudCgpLFxuICAgICAgYXJyb3c6ICF0aGlzLmlzVG9vbHRpcCxcbiAgICAgIGFsbG93SFRNTDogdHJ1ZSxcbiAgICAgIHpJbmRleDogMTAwMDAwMCxcbiAgICAgIHRyaWdnZXI6IHRoaXMuaGVsaXBvcHBlclRyaWdnZXIsXG4gICAgICBwbGFjZW1lbnQ6IHRoaXMuX3BsYWNlbWVudCxcbiAgICAgIHRyaWdnZXJUYXJnZXQ6IHRoaXMuX3Rvb2x0aXBUYXJnZXQsXG4gICAgICBoaWRlT25DbGljazogdGhpcy5oZWxpcG9wcGVyQWxsb3dDbG9zZSxcbiAgICAgIC8vIFRPRE86IE1lcmdlIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyB3aXRoIHRoZSBwYXNzZWQgY29uZmlnXG4gICAgICBvbkNyZWF0ZTogaW5zdGFuY2UgPT4ge1xuICAgICAgICB0aGlzLmhlbGlwb3BwZXJDbGFzcyAmJiBhZGRDbGFzcyhpbnN0YW5jZS5wb3BwZXIsIHRoaXMuaGVsaXBvcHBlckNsYXNzKTtcbiAgICAgIH0sXG4gICAgICBvblNob3c6IGluc3RhbmNlID0+IHtcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmluc3RhbmNlLnNldENvbnRlbnQodGhpcy5yZXNvbHZlQ29udGVudCgpKSk7XG4gICAgICAgIHRoaXMuaGVsaXBvcHBlckFsbG93Q2xvc2UgJiYgdGhpcy5pc1BvcHBlciAmJiB0aGlzLmFkZENsb3NlQnV0dG9uKGluc3RhbmNlIGFzIEluc3RhbmNlV2l0aENsb3NlKTtcbiAgICAgICAgdGhpcy5oZWxpcG9wcGVyVmlzaWJsZS5uZXh0KHRydWUpO1xuICAgICAgfSxcbiAgICAgIG9uSGlkZGVuOiBpbnN0YW5jZSA9PiB7XG4gICAgICAgIHRoaXMuaGVsaXBvcHBlckFsbG93Q2xvc2UgJiYgdGhpcy5pc1BvcHBlciAmJiB0aGlzLnJlbW92ZUNsb3NlQnV0dG9uKGluc3RhbmNlIGFzIEluc3RhbmNlV2l0aENsb3NlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95VmlldygpO1xuICAgICAgICB0aGlzLmhlbGlwb3BwZXJDbG9zZS5uZXh0KCk7XG4gICAgICAgIHRoaXMuaGVsaXBvcHBlclZpc2libGUubmV4dChmYWxzZSk7XG4gICAgICB9LFxuICAgICAgLi4udGhpcy5yZXNvbHZlVGhlbWUoKSxcbiAgICAgIC4uLnRoaXMuaGVsaXBvcHBlck9wdGlvbnNcbiAgICB9KTtcblxuICAgIHRoaXMud2hlblN0YWJsZS5uZXh0KHRydWUpO1xuICAgIHRoaXMubWFya0Rpc2FibGVkKHRoaXMuX2Rpc2FibGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVRyaWdnZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVsaXBvcHBlclRyaWdnZXIgfHwgKHRoaXMuaXNUb29sdGlwID8gJ21vdXNlZW50ZXInIDogJ2NsaWNrJyk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVUZW1wbGF0ZShjb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgaWYgKHRoaXMudHBsUG9ydGFsKSB7XG4gICAgICB0aGlzLmRlc3Ryb3lUZW1wbGF0ZSgpO1xuICAgIH1cbiAgICB0aGlzLnRwbFBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbChjb250ZW50KTtcbiAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KHRoaXMudHBsUG9ydGFsLnZpZXdSZWYpO1xuXG4gICAgcmV0dXJuIHRoaXMudHBsUG9ydGFsLmVsZW1lbnRSZWY7XG4gIH1cblxuICBwcml2YXRlIGlzRWxlbWVudE92ZXJmbG93KCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl90b29sdGlwVGFyZ2V0O1xuICAgIGNvbnN0IHBhcmVudEVsID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIGNvbnN0IHBhcmVudFRlc3QgPSBlbGVtZW50Lm9mZnNldFdpZHRoID4gcGFyZW50RWwub2Zmc2V0V2lkdGg7XG4gICAgY29uc3QgZWxlbWVudFRlc3QgPSBlbGVtZW50Lm9mZnNldFdpZHRoIDwgZWxlbWVudC5zY3JvbGxXaWR0aDtcblxuICAgIHJldHVybiBwYXJlbnRUZXN0IHx8IGVsZW1lbnRUZXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJlbnQoKSB7XG4gICAgbGV0IGNvbnRhaW5lckVsZW1lbnQ7XG5cbiAgICBpZiAoaXNTdHJpbmcodGhpcy5oZWxpcG9wcGVyQXBwZW5kVG8pKSB7XG4gICAgICBjb250YWluZXJFbGVtZW50ID0gY2xvc2VzdCh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwgdGhpcy5oZWxpcG9wcGVyQXBwZW5kVG8pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250YWluZXJFbGVtZW50ID0gdGhpcy5oZWxpcG9wcGVyQXBwZW5kVG87XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRhaW5lckVsZW1lbnQgfHwgZG9jdW1lbnQuYm9keTtcbiAgfVxuXG4gIHByaXZhdGUgbWFya0Rpc2FibGVkKGRpc2FibGVkID0gdHJ1ZSkge1xuICAgIGlmICh0aGlzLmluc3RhbmNlKSB7XG4gICAgICBkaXNhYmxlZCA/IHRoaXMuaW5zdGFuY2UuZGlzYWJsZSgpIDogdGhpcy5pbnN0YW5jZS5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVUaGVtZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb2Zmc2V0OiB0aGlzLmhlbGlwb3BwZXJPZmZzZXQgfHwgKFswLCB0aGlzLmlzVG9vbHRpcCA/IDUgOiAxMF0gYXMgW251bWJlciwgbnVtYmVyXSksXG4gICAgICB0aGVtZTogdGhpcy5pc1Rvb2x0aXAgPyBudWxsIDogJ2xpZ2h0JyxcbiAgICAgIGFycm93OiB0aGlzLmlzVG9vbHRpcCA9PT0gZmFsc2UsXG4gICAgICBhbmltYXRpb246IHRoaXMuaXNUb29sdGlwID8gYHNjYWxlYCA6IG51bGwsXG4gICAgICBpbnRlcmFjdGl2ZTogIXRoaXMuaXNUb29sdGlwXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQ2xvc2VCdXR0b24oaW5zdGFuY2U6IEluc3RhbmNlV2l0aENsb3NlKSB7XG4gICAgY29uc3QgcG9wcGVyID0gaW5zdGFuY2UucG9wcGVyO1xuICAgIGNvbnN0IGNsb3NlSWNvbiA9IHRoaXMubWVyZ2VkQ29uZmlnLmNsb3NlSWNvbjtcbiAgICBjb25zdCBjbG9zZUJ1dHRvbkVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBhZGRDbGFzcyhjbG9zZUJ1dHRvbkVsZW1lbnQsICd0aXBweS1jbG9zZScpO1xuICAgIGNsb3NlQnV0dG9uRWxlbWVudC5pbm5lckhUTUwgPSBjbG9zZUljb247XG5cbiAgICBjb25zdCBjbG9zZUJ1dHRvblN1YnNjcmlwdGlvbiA9IGZyb21FdmVudChjbG9zZUJ1dHRvbkVsZW1lbnQsICdjbGljaycpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmhpZGUoKSk7XG4gICAgcG9wcGVyLmFwcGVuZENoaWxkKGNsb3NlQnV0dG9uRWxlbWVudCk7XG5cbiAgICBpbnN0YW5jZS5jbG9zZUJ1dHRvbkVsZW1lbnQgPSBjbG9zZUJ1dHRvbkVsZW1lbnQ7XG4gICAgaW5zdGFuY2UuY2xvc2VCdXR0b25TdWJzY3JpcHRpb24gPSBjbG9zZUJ1dHRvblN1YnNjcmlwdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQ2xvc2VCdXR0b24oaW5zdGFuY2U6IEluc3RhbmNlV2l0aENsb3NlKSB7XG4gICAgaW5zdGFuY2UucG9wcGVyLnJlbW92ZUNoaWxkKGluc3RhbmNlLmNsb3NlQnV0dG9uRWxlbWVudCk7XG4gICAgaW5zdGFuY2UuY2xvc2VCdXR0b25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICBpbnN0YW5jZS5jbG9zZUJ1dHRvbkVsZW1lbnQgPSBudWxsO1xuICAgIGluc3RhbmNlLmNsb3NlQnV0dG9uU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tPdmVyZmxvdygpIHtcbiAgICBpZiAodGhpcy5zaG93T25seU9uVGV4dE92ZXJmbG93KSB7XG4gICAgICB6b25lU3RhYmxlKHRoaXMuem9uZSkuc3Vic2NyaWJlKCgpID0+IHRoaXMubWFya0Rpc2FibGVkKHRoaXMuaXNFbGVtZW50T3ZlcmZsb3coKSA9PT0gZmFsc2UpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lUZW1wbGF0ZSgpIHtcbiAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KHRoaXMudHBsUG9ydGFsLnZpZXdSZWYpO1xuICAgIHRoaXMudHBsUG9ydGFsLmRlc3Ryb3koKTtcbiAgICB0aGlzLnRwbFBvcnRhbCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNvbmZpZyhjb25maWc6IEhlbGlwb3BwZXJDb25maWcpIHtcbiAgICBjb25zdCBkZWZhdWx0czogSGVsaXBvcHBlckNvbmZpZyA9IHtcbiAgICAgIGNsb3NlSWNvbjogaWNvbixcbiAgICAgIGJlZm9yZVJlbmRlcihjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRlZmF1bHRzLFxuICAgICAgLi4uY29uZmlnXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUNvbXBvbmVudChjb250ZW50OiBUeXBlPGFueT4pIHtcbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5yZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb250ZW50KTtcbiAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuaW5qZWN0b3IgfHwgdGhpcy5ob3N0SW5qZWN0b3I7XG4gICAgdGhpcy5pbm5lckNvbXBvbmVudFJlZiA9IGZhY3RvcnkuY3JlYXRlKGluamVjdG9yKTtcbiAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KHRoaXMuaW5uZXJDb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgIHRoaXMuaW5uZXJDb21wb25lbnRSZWYuaG9zdFZpZXcuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHJldHVybiB0aGlzLmlubmVyQ29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lDb21wb25lbnQoKSB7XG4gICAgdGhpcy5pbm5lckNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyh0aGlzLmlubmVyQ29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICB0aGlzLmlubmVyQ29tcG9uZW50UmVmID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUNvbnRlbnQoKSB7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuX2NvbnRlbnQ7XG4gICAgbGV0IGZpbmFsQ29udGVudDtcblxuICAgIGlmIChjb250ZW50IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcbiAgICAgIGZpbmFsQ29udGVudCA9IHRoaXMucmVzb2x2ZVRlbXBsYXRlKGNvbnRlbnQpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBmaW5hbENvbnRlbnQgPSB0aGlzLm1lcmdlZENvbmZpZy5iZWZvcmVSZW5kZXIoY29udGVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbmFsQ29udGVudCA9IHRoaXMucmVzb2x2ZUNvbXBvbmVudChjb250ZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmluYWxDb250ZW50O1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVsaXBvcHBlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmduZWF0L2hlbGlwb3BwZXIvIiwic291cmNlcyI6WyJsaWIvaGVsaXBvcHBlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLFdBQVcsRUFDWCxJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUEwQixNQUFNLFVBQVUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQ0wsUUFBUSxFQUNSLE9BQU8sRUFDUCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixNQUFNLEVBQ04sUUFBUSxFQUNSLGNBQWMsRUFDZixNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFrRCxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSx3QkFBd0IsSUFBSSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRixJQUFNLElBQUksR0FBRyxvcUJBSU4sQ0FBQztBQUtSO0lBNkZFLDZCQUNVLElBQWdCLEVBQ2hCLE1BQXNCLEVBQ3RCLElBQVksRUFDWixRQUFrQyxFQUNsQyxZQUFzQixFQUNLLE1BQXdCO1FBTG5ELFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFV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Q0Ysd0JBQXdCO2dCQUNwQixRQUFRO2dEQUM3QixNQUFNLFNBQUMsaUJBQWlCOztJQWpHM0I7UUFEQyxLQUFLLEVBQUU7a0VBQ21EO0lBRzNEO1FBREMsS0FBSyxDQUFDLHdCQUF3QixDQUFDO3VFQUNxQjtJQUlyRDtRQURDLEtBQUssRUFBRTs4REFDZTtJQUd2QjtRQURDLEtBQUssRUFBRTsrREFDZ0I7SUFHeEI7UUFEQyxLQUFLLEVBQUU7bUVBQzJEO0lBR25FO1FBREMsS0FBSyxFQUFFO2tFQUM4QjtJQUd0QztRQURDLEtBQUssRUFBRTtxRUFDa0Q7SUFHMUQ7UUFEQyxLQUFLLEVBQUU7Z0VBQzRDO0lBR3BEO1FBREMsS0FBSyxFQUFFO2lFQUN1QztJQUcvQztRQURDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQzt5REFDRztJQUcvQjtRQURDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQzt3REFJNUI7SUFHRDtRQURDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQzt3REFJNUI7SUFHRDtRQURDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQzt1REFJM0I7SUFHRDtRQURDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztxREFhekI7SUFFUTtRQUFSLEtBQUssRUFBRTt5REFZUDtJQUVTO1FBQVQsTUFBTSxFQUFFO2dFQUFpQztJQUNoQztRQUFULE1BQU0sRUFBRTtrRUFBNEM7SUFoRjFDLG1CQUFtQjtRQUQvQixTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQztRQW9HM0QsV0FBQSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtPQW5HakIsbUJBQW1CLENBbVUvQjtJQUFELDBCQUFDO0NBQUEsQUFuVUQsSUFtVUM7U0FuVVksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXBwbGljYXRpb25SZWYsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29tcG9uZW50UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVHlwZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0aXBweSwgeyBJbnN0YW5jZSwgUHJvcHMgfSBmcm9tICd0aXBweS5qcyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9wdGlvbnMgYXMgUG9wcGVyT3B0aW9ucyB9IGZyb20gJ0Bwb3BwZXJqcy9jb3JlJztcbmltcG9ydCB7XG4gIGFkZENsYXNzLFxuICBjbG9zZXN0LFxuICBjb2VyY2VFbGVtZW50LFxuICBjcmVhdGVFbGVtZW50LFxuICBkaW1lbnNpb25zQ2hhbmdlcyxcbiAgaW5WaWV3LFxuICBpc1N0cmluZyxcbiAgVGVtcGxhdGVQb3J0YWxcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIRUxJUE9QUEVSX0NPTkZJRywgSGVsaXBvcHBlckNvbmZpZywgSW5zdGFuY2VXaXRoQ2xvc2UsIFZhcmlhdGlvbiB9IGZyb20gJy4vaGVsaXBvcHBlci50eXBlcyc7XG5pbXBvcnQgeyBpbml0aWFsSGVsaXBvcHBlck9wdGlvbnMgYXMgaW5pdGlhbE9wdGlvbnMgfSBmcm9tICcuL2hlbGlwb3BwZXItb3B0aW9ucyc7XG5cbmNvbnN0IGljb24gPSBgXG4gICAgICA8c3ZnIHZlcnNpb249XCIxLjFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaXQ9XCJcIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG48cGF0aCBkPVwiTTEyLjc5MyAxMmw0LjAzOS00LjAyNWMwLjIxOS0wLjIxOSAwLjIyNC0wLjU3OCAwLjAxMi0wLjgwMi0wLjIxMy0wLjIyNS0wLjU2My0wLjIzMS0wLjc4Mi0wLjAxMWwtNC4wNjIgNC4wNDktNC4wNjItNC4wNDljLTAuMjE5LTAuMjItMC41NjktMC4yMTMtMC43ODIgMC4wMTFzLTAuMjA4IDAuNTgzIDAuMDEyIDAuODAybDQuMDM5IDQuMDI1LTQuMDM5IDQuMDI1Yy0wLjIyIDAuMjE5LTAuMjI0IDAuNTc4LTAuMDEyIDAuODAyIDAuMTA4IDAuMTE1IDAuMjUyIDAuMTcyIDAuMzk3IDAuMTcyIDAuMTM4IDAgMC4yNzgtMC4wNTMgMC4zODUtMC4xNjFsNC4wNjItNC4wNDkgNC4wNjIgNC4wNDljMC4xMDcgMC4xMDggMC4yNDUgMC4xNjEgMC4zODUgMC4xNjEgMC4xNDQgMCAwLjI4Ny0wLjA1OCAwLjM5Ny0wLjE3MiAwLjIxMi0wLjIyNSAwLjIwNy0wLjU4My0wLjAxMi0wLjgwMmwtNC4wMzktNC4wMjV6XCI+PC9wYXRoPlxuPC9zdmc+XG4gICAgICBgO1xuXG50eXBlIENvbnRlbnQgPSBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgVHlwZTxhbnk+O1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6IGBbaGVsaXBvcHBlcl1gLCBleHBvcnRBczogJ2hlbGlwb3BwZXInIH0pXG5leHBvcnQgY2xhc3MgSGVsaXBvcHBlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIGhlbGlwb3BwZXJPcHRpb25zOiBQYXJ0aWFsPFByb3BzPiA9IGluaXRpYWxPcHRpb25zLm9wdGlvbnM7XG5cbiAgQElucHV0KCdoZWxpcG9wcGVyVGV4dE92ZXJmbG93JylcbiAgc2hvd09ubHlPblRleHRPdmVyZmxvdyA9IGluaXRpYWxPcHRpb25zLnRleHRPdmVyZmxvdztcblxuICAvLyBUaGUgZWxlbWVudCB0aGF0IHRoZSB0cmlnZ2VyIGV2ZW50IGxpc3RlbmVycyBhcmUgYWRkZWQgdG9cbiAgQElucHV0KClcbiAgdHJpZ2dlclRhcmdldDogRWxlbWVudDtcblxuICBASW5wdXQoKVxuICBoZWxpcG9wcGVySG9zdDogRWxlbWVudDtcblxuICBASW5wdXQoKVxuICBoZWxpcG9wcGVyQXBwZW5kVG86IHN0cmluZyB8IEhUTUxFbGVtZW50ID0gaW5pdGlhbE9wdGlvbnMuYXBwZW5kVG87XG5cbiAgQElucHV0KClcbiAgaGVsaXBvcHBlclRyaWdnZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBoZWxpcG9wcGVyQWxsb3dDbG9zZTogYm9vbGVhbiA9IGluaXRpYWxPcHRpb25zLmFsbG93Q2xvc2U7XG5cbiAgQElucHV0KClcbiAgaGVsaXBvcHBlckNsYXNzOiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+IHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIGhlbGlwb3BwZXJPZmZzZXQ6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KCdoZWxpcG9wcGVySW5qZWN0b3InKVxuICBpbmplY3RvcjogSW5qZWN0b3IgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KCdoZWxpcG9wcGVyUGxhY2VtZW50JylcbiAgc2V0IHBsYWNlbWVudChwbGFjZW1lbnQ6IFBvcHBlck9wdGlvbnNbJ3BsYWNlbWVudCddKSB7XG4gICAgdGhpcy5fcGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICAgIHRoaXMuc2V0UHJvcHMoeyBwbGFjZW1lbnQgfSk7XG4gIH1cblxuICBASW5wdXQoJ2hlbGlwb3BwZXJWYXJpYXRpb24nKVxuICBzZXQgdmFyaWF0aW9uKHZhcmlhdGlvbjogVmFyaWF0aW9uKSB7XG4gICAgdGhpcy5fdmFyaWF0aW9uID0gdmFyaWF0aW9uO1xuICAgIHRoaXMuc2V0UHJvcHModGhpcy5yZXNvbHZlVGhlbWUoKSk7XG4gIH1cblxuICBASW5wdXQoJ2hlbGlwb3BwZXJEaXNhYmxlZCcpXG4gIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgdGhpcy5tYXJrRGlzYWJsZWQodGhpcy5fZGlzYWJsZWQpO1xuICB9XG5cbiAgQElucHV0KCdoZWxpcG9wcGVyU3RpY2t5JylcbiAgc2V0IHN0aWNreShpc1N0aWNreTogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5pbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc1N0aWNreSkge1xuICAgICAgdGhpcy5zZXRQcm9wcyh7IHRyaWdnZXI6ICdtYW51YWwnLCBoaWRlT25DbGljazogZmFsc2UgfSk7XG4gICAgICB0aGlzLnNob3coKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICB0aGlzLnNldFByb3BzKHsgdHJpZ2dlcjogdGhpcy5oZWxpcG9wcGVyVHJpZ2dlciB9KTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBzZXQgaGVsaXBvcHBlcihjb250ZW50OiBDb250ZW50KSB7XG4gICAgdGhpcy5fY29udGVudCA9IGNvbnRlbnQ7XG5cbiAgICBpZiAodGhpcy5pbnN0YW5jZSkge1xuICAgICAgdGhpcy5jaGVja092ZXJmbG93KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGluVmlldyh0aGlzLmhvc3QubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNyZWF0ZSgpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEBPdXRwdXQoKSBoZWxpcG9wcGVyQ2xvc2UgPSBuZXcgU3ViamVjdCgpO1xuICBAT3V0cHV0KCkgaGVsaXBvcHBlclZpc2libGUgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIHByaXZhdGUgX2NvbnRlbnQ6IENvbnRlbnQ7XG4gIHByaXZhdGUgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIF9wbGFjZW1lbnQ6IFBvcHBlck9wdGlvbnNbJ3BsYWNlbWVudCddID0gaW5pdGlhbE9wdGlvbnMucGxhY2VtZW50O1xuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuICBwcml2YXRlIF92YXJpYXRpb246IFZhcmlhdGlvbiA9IGluaXRpYWxPcHRpb25zLnZhcmlhdGlvbjtcbiAgcHJpdmF0ZSBpbnN0YW5jZTogSW5zdGFuY2U7XG4gIHByaXZhdGUgdHBsUG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDtcbiAgcHJpdmF0ZSBtZXJnZWRDb25maWc6IEhlbGlwb3BwZXJDb25maWc7XG4gIHByaXZhdGUgaW5uZXJDb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xuICBwdWJsaWMgd2hlblN0YWJsZTogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBob3N0OiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSBob3N0SW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBJbmplY3QoSEVMSVBPUFBFUl9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBIZWxpcG9wcGVyQ29uZmlnXG4gICkge1xuICAgIHRoaXMubWVyZ2VkQ29uZmlnID0gdGhpcy5jcmVhdGVDb25maWcoY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IF90b29sdGlwVGFyZ2V0KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gY29lcmNlRWxlbWVudCh0aGlzLnRyaWdnZXJUYXJnZXQpIHx8IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX3Rvb2x0aXBIb3N0KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gY29lcmNlRWxlbWVudCh0aGlzLmhlbGlwb3BwZXJIb3N0KSB8fCB0aGlzLmhvc3QubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGlzVG9vbHRpcCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFyaWF0aW9uID09PSAndG9vbHRpcCc7XG4gIH1cblxuICBwcml2YXRlIGdldCBpc1BvcHBlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFyaWF0aW9uID09PSAncG9wcGVyJztcbiAgfVxuXG4gIHNldFByb3BzKHByb3BzOiBQYXJ0aWFsPFByb3BzPikge1xuICAgIHRoaXMuaW5zdGFuY2UgJiYgdGhpcy5pbnN0YW5jZS5zZXRQcm9wcyhwcm9wcyk7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIHRoaXMuaW5zdGFuY2UuaGlkZSgpO1xuICB9XG5cbiAgc2hvdygpIHtcbiAgICB0aGlzLmluc3RhbmNlLnNob3coKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveVZpZXcoKTtcbiAgICB0aGlzLmluc3RhbmNlICYmIHRoaXMuaW5zdGFuY2UuZGVzdHJveSgpO1xuICAgIHRoaXMuaW5zdGFuY2UgPSBudWxsO1xuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLm5nT25EZXN0cm95KCk7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lWaWV3KCkge1xuICAgIHRoaXMudHBsUG9ydGFsICYmIHRoaXMuZGVzdHJveVRlbXBsYXRlKCk7XG4gICAgdGhpcy5pbm5lckNvbXBvbmVudFJlZiAmJiB0aGlzLmRlc3Ryb3lDb21wb25lbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlKCkge1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB0aGlzLmNyZWF0ZUluc3RhbmNlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVJbnN0YW5jZSgpIHtcbiAgICBpZiAodGhpcy5zaG93T25seU9uVGV4dE92ZXJmbG93KSB7XG4gICAgICBkaW1lbnNpb25zQ2hhbmdlcyh0aGlzLl90b29sdGlwSG9zdClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm1hcmtEaXNhYmxlZCh0aGlzLmlzRWxlbWVudE92ZXJmbG93KCkgPT09IGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5oZWxpcG9wcGVyVHJpZ2dlciA9IHRoaXMucmVzb2x2ZVRyaWdnZXIoKTtcblxuICAgIHRoaXMuaW5zdGFuY2UgPSB0aXBweSh0aGlzLl90b29sdGlwSG9zdCwge1xuICAgICAgY29udGVudDogdW5kZWZpbmVkLFxuICAgICAgYXBwZW5kVG86IHRoaXMuZ2V0UGFyZW50KCksXG4gICAgICBhcnJvdzogIXRoaXMuaXNUb29sdGlwLFxuICAgICAgYWxsb3dIVE1MOiB0cnVlLFxuICAgICAgekluZGV4OiAxMDAwMDAwLFxuICAgICAgdHJpZ2dlcjogdGhpcy5oZWxpcG9wcGVyVHJpZ2dlcixcbiAgICAgIHBsYWNlbWVudDogdGhpcy5fcGxhY2VtZW50LFxuICAgICAgdHJpZ2dlclRhcmdldDogdGhpcy5fdG9vbHRpcFRhcmdldCxcbiAgICAgIGhpZGVPbkNsaWNrOiB0aGlzLmhlbGlwb3BwZXJBbGxvd0Nsb3NlLFxuICAgICAgLy8gVE9ETzogTWVyZ2UgdGhlIGZvbGxvd2luZyBtZXRob2RzIHdpdGggdGhlIHBhc3NlZCBjb25maWdcbiAgICAgIG9uQ3JlYXRlOiBpbnN0YW5jZSA9PiB7XG4gICAgICAgIHRoaXMuaGVsaXBvcHBlckNsYXNzICYmIGFkZENsYXNzKGluc3RhbmNlLnBvcHBlciwgdGhpcy5oZWxpcG9wcGVyQ2xhc3MpO1xuICAgICAgfSxcbiAgICAgIG9uU2hvdzogaW5zdGFuY2UgPT4ge1xuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMuaW5zdGFuY2Uuc2V0Q29udGVudCh0aGlzLnJlc29sdmVDb250ZW50KCkpKTtcbiAgICAgICAgdGhpcy5oZWxpcG9wcGVyQWxsb3dDbG9zZSAmJiB0aGlzLmlzUG9wcGVyICYmIHRoaXMuYWRkQ2xvc2VCdXR0b24oaW5zdGFuY2UgYXMgSW5zdGFuY2VXaXRoQ2xvc2UpO1xuICAgICAgICB0aGlzLmhlbGlwb3BwZXJWaXNpYmxlLm5leHQodHJ1ZSk7XG4gICAgICB9LFxuICAgICAgb25IaWRkZW46IGluc3RhbmNlID0+IHtcbiAgICAgICAgdGhpcy5oZWxpcG9wcGVyQWxsb3dDbG9zZSAmJiB0aGlzLmlzUG9wcGVyICYmIHRoaXMucmVtb3ZlQ2xvc2VCdXR0b24oaW5zdGFuY2UgYXMgSW5zdGFuY2VXaXRoQ2xvc2UpO1xuICAgICAgICB0aGlzLmRlc3Ryb3lWaWV3KCk7XG4gICAgICAgIHRoaXMuaGVsaXBvcHBlckNsb3NlLm5leHQoKTtcbiAgICAgICAgdGhpcy5oZWxpcG9wcGVyVmlzaWJsZS5uZXh0KGZhbHNlKTtcbiAgICAgIH0sXG4gICAgICAuLi50aGlzLnJlc29sdmVUaGVtZSgpLFxuICAgICAgLi4udGhpcy5oZWxpcG9wcGVyT3B0aW9uc1xuICAgIH0pO1xuXG4gICAgdGhpcy53aGVuU3RhYmxlLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5tYXJrRGlzYWJsZWQodGhpcy5fZGlzYWJsZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlVHJpZ2dlcigpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxpcG9wcGVyVHJpZ2dlciB8fCAodGhpcy5pc1Rvb2x0aXAgPyAnbW91c2VlbnRlcicgOiAnY2xpY2snKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVRlbXBsYXRlKGNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICBpZiAodGhpcy50cGxQb3J0YWwpIHtcbiAgICAgIHRoaXMuZGVzdHJveVRlbXBsYXRlKCk7XG4gICAgfVxuICAgIHRoaXMudHBsUG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKGNvbnRlbnQpO1xuICAgIHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcodGhpcy50cGxQb3J0YWwudmlld1JlZik7XG5cbiAgICByZXR1cm4gdGhpcy50cGxQb3J0YWwuZWxlbWVudFJlZjtcbiAgfVxuXG4gIHByaXZhdGUgaXNFbGVtZW50T3ZlcmZsb3coKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX3Rvb2x0aXBUYXJnZXQ7XG4gICAgY29uc3QgcGFyZW50RWwgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgY29uc3QgcGFyZW50VGVzdCA9IGVsZW1lbnQub2Zmc2V0V2lkdGggPiBwYXJlbnRFbC5vZmZzZXRXaWR0aDtcbiAgICBjb25zdCBlbGVtZW50VGVzdCA9IGVsZW1lbnQub2Zmc2V0V2lkdGggPCBlbGVtZW50LnNjcm9sbFdpZHRoO1xuXG4gICAgcmV0dXJuIHBhcmVudFRlc3QgfHwgZWxlbWVudFRlc3Q7XG4gIH1cblxuICBwcml2YXRlIGdldFBhcmVudCgpIHtcbiAgICBsZXQgY29udGFpbmVyRWxlbWVudDtcblxuICAgIGlmIChpc1N0cmluZyh0aGlzLmhlbGlwb3BwZXJBcHBlbmRUbykpIHtcbiAgICAgIGNvbnRhaW5lckVsZW1lbnQgPSBjbG9zZXN0KHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCB0aGlzLmhlbGlwb3BwZXJBcHBlbmRUbyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lckVsZW1lbnQgPSB0aGlzLmhlbGlwb3BwZXJBcHBlbmRUbztcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGFpbmVyRWxlbWVudCB8fCBkb2N1bWVudC5ib2R5O1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrRGlzYWJsZWQoZGlzYWJsZWQgPSB0cnVlKSB7XG4gICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgIGRpc2FibGVkID8gdGhpcy5pbnN0YW5jZS5kaXNhYmxlKCkgOiB0aGlzLmluc3RhbmNlLmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVRoZW1lKCkge1xuICAgIHJldHVybiB7XG4gICAgICBvZmZzZXQ6IHRoaXMuaGVsaXBvcHBlck9mZnNldCB8fCAoWzAsIHRoaXMuaXNUb29sdGlwID8gNSA6IDEwXSBhcyBbbnVtYmVyLCBudW1iZXJdKSxcbiAgICAgIHRoZW1lOiB0aGlzLmlzVG9vbHRpcCA/IG51bGwgOiAnbGlnaHQnLFxuICAgICAgYXJyb3c6IHRoaXMuaXNUb29sdGlwID09PSBmYWxzZSxcbiAgICAgIGFuaW1hdGlvbjogdGhpcy5pc1Rvb2x0aXAgPyBgc2NhbGVgIDogbnVsbCxcbiAgICAgIGludGVyYWN0aXZlOiAhdGhpcy5pc1Rvb2x0aXBcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDbG9zZUJ1dHRvbihpbnN0YW5jZTogSW5zdGFuY2VXaXRoQ2xvc2UpIHtcbiAgICBjb25zdCBwb3BwZXIgPSBpbnN0YW5jZS5wb3BwZXI7XG4gICAgY29uc3QgY2xvc2VJY29uID0gdGhpcy5tZXJnZWRDb25maWcuY2xvc2VJY29uO1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uRWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGFkZENsYXNzKGNsb3NlQnV0dG9uRWxlbWVudCwgJ3RpcHB5LWNsb3NlJyk7XG4gICAgY2xvc2VCdXR0b25FbGVtZW50LmlubmVySFRNTCA9IGNsb3NlSWNvbjtcblxuICAgIGNvbnN0IGNsb3NlQnV0dG9uU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KGNsb3NlQnV0dG9uRWxlbWVudCwgJ2NsaWNrJykuc3Vic2NyaWJlKCgpID0+IHRoaXMuaGlkZSgpKTtcbiAgICBwb3BwZXIuYXBwZW5kQ2hpbGQoY2xvc2VCdXR0b25FbGVtZW50KTtcblxuICAgIGluc3RhbmNlLmNsb3NlQnV0dG9uRWxlbWVudCA9IGNsb3NlQnV0dG9uRWxlbWVudDtcbiAgICBpbnN0YW5jZS5jbG9zZUJ1dHRvblN1YnNjcmlwdGlvbiA9IGNsb3NlQnV0dG9uU3Vic2NyaXB0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVDbG9zZUJ1dHRvbihpbnN0YW5jZTogSW5zdGFuY2VXaXRoQ2xvc2UpIHtcbiAgICBpbnN0YW5jZS5wb3BwZXIucmVtb3ZlQ2hpbGQoaW5zdGFuY2UuY2xvc2VCdXR0b25FbGVtZW50KTtcbiAgICBpbnN0YW5jZS5jbG9zZUJ1dHRvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIGluc3RhbmNlLmNsb3NlQnV0dG9uRWxlbWVudCA9IG51bGw7XG4gICAgaW5zdGFuY2UuY2xvc2VCdXR0b25TdWJzY3JpcHRpb24gPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja092ZXJmbG93KCkge1xuICAgIGlmICh0aGlzLnNob3dPbmx5T25UZXh0T3ZlcmZsb3cpIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB0aGlzLm1hcmtEaXNhYmxlZCh0aGlzLmlzRWxlbWVudE92ZXJmbG93KCkgPT09IGZhbHNlKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95VGVtcGxhdGUoKSB7XG4gICAgdGhpcy5hcHBSZWYuZGV0YWNoVmlldyh0aGlzLnRwbFBvcnRhbC52aWV3UmVmKTtcbiAgICB0aGlzLnRwbFBvcnRhbC5kZXN0cm95KCk7XG4gICAgdGhpcy50cGxQb3J0YWwgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb25maWcoY29uZmlnOiBIZWxpcG9wcGVyQ29uZmlnKSB7XG4gICAgY29uc3QgZGVmYXVsdHM6IEhlbGlwb3BwZXJDb25maWcgPSB7XG4gICAgICBjbG9zZUljb246IGljb24sXG4gICAgICBiZWZvcmVSZW5kZXIoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5kZWZhdWx0cyxcbiAgICAgIC4uLmNvbmZpZ1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVDb21wb25lbnQoY29udGVudDogVHlwZTxhbnk+KSB7XG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29udGVudCk7XG4gICAgY29uc3QgaW5qZWN0b3IgPSB0aGlzLmluamVjdG9yIHx8IHRoaXMuaG9zdEluamVjdG9yO1xuICAgIHRoaXMuaW5uZXJDb21wb25lbnRSZWYgPSBmYWN0b3J5LmNyZWF0ZShpbmplY3Rvcik7XG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyh0aGlzLmlubmVyQ29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICB0aGlzLmlubmVyQ29tcG9uZW50UmVmLmhvc3RWaWV3LmRldGVjdENoYW5nZXMoKTtcbiAgICByZXR1cm4gdGhpcy5pbm5lckNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95Q29tcG9uZW50KCkge1xuICAgIHRoaXMuaW5uZXJDb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgIHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcodGhpcy5pbm5lckNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgdGhpcy5pbm5lckNvbXBvbmVudFJlZiA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVDb250ZW50KCkge1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLl9jb250ZW50O1xuICAgIGxldCBmaW5hbENvbnRlbnQ7XG5cbiAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICBmaW5hbENvbnRlbnQgPSB0aGlzLnJlc29sdmVUZW1wbGF0ZShjb250ZW50KTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgZmluYWxDb250ZW50ID0gdGhpcy5tZXJnZWRDb25maWcuYmVmb3JlUmVuZGVyKGNvbnRlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaW5hbENvbnRlbnQgPSB0aGlzLnJlc29sdmVDb21wb25lbnQoY29udGVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbmFsQ29udGVudDtcbiAgfVxufVxuIl19
import { __read } from "tslib";
import { fromEvent, Observable } from 'rxjs';
import { auditTime, distinctUntilChanged, map, take } from 'rxjs/operators';
import { auditTime, distinctUntilChanged, map } from 'rxjs/operators';
import { ElementRef } from '@angular/core';

@@ -69,5 +69,2 @@ var hasSupport = 'IntersectionObserver' in window;

}
export function zoneStable(zone) {
return zone.onStable.pipe(take(1));
}
export function isString(value) {

@@ -118,2 +115,2 @@ return typeof value === 'string';

export { TemplatePortal };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmduZWF0L2hlbGlwb3BwZXIvIiwic291cmNlcyI6WyJsaWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxVQUFVLEVBQXdDLE1BQU0sZUFBZSxDQUFDO0FBRWpGLElBQU0sVUFBVSxHQUFHLHNCQUFzQixJQUFJLE1BQU0sQ0FBQztBQUVwRCxNQUFNLFVBQVUsTUFBTSxDQUNwQixPQUFvQixFQUNwQixPQUdDO0lBSEQsd0JBQUEsRUFBQTtRQUNFLElBQUksRUFBRSxJQUFJO1FBQ1YsU0FBUyxFQUFFLEdBQUc7S0FDZjtJQUVELE9BQU8sSUFBSSxVQUFVLENBQUMsVUFBQSxVQUFVO1FBQzlCLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3ZCO1FBRUQsSUFBTSxRQUFRLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxVQUFDLEVBQU87Z0JBQVAsa0JBQU8sRUFBTixhQUFLO1lBQy9DLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTtnQkFDeEIsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNsQixVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDdkI7UUFDSCxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFWixRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFCLE9BQU8sY0FBTSxPQUFBLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBckIsQ0FBcUIsQ0FBQztJQUNyQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUF1Q0Qs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QU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsc0JBQUksc0NBQVU7YUFBZDtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFnQixDQUFDO1FBQ2xELENBQUM7OztPQUFBO0lBRUQsZ0NBQU8sR0FBUDtRQUNFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUNILHFCQUFDO0FBQUQsQ0FBQyxBQWZELElBZUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcm9tRXZlbnQsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGF1ZGl0VGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVsZW1lbnRSZWYsIEVtYmVkZGVkVmlld1JlZiwgTmdab25lLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5jb25zdCBoYXNTdXBwb3J0ID0gJ0ludGVyc2VjdGlvbk9ic2VydmVyJyBpbiB3aW5kb3c7XG5cbmV4cG9ydCBmdW5jdGlvbiBpblZpZXcoXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBvcHRpb25zOiBJbnRlcnNlY3Rpb25PYnNlcnZlckluaXQgPSB7XG4gICAgcm9vdDogbnVsbCxcbiAgICB0aHJlc2hvbGQ6IDAuM1xuICB9XG4pIHtcbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKHN1YnNjcmliZXIgPT4ge1xuICAgIGlmICghaGFzU3VwcG9ydCkge1xuICAgICAgc3Vic2NyaWJlci5uZXh0KCk7XG4gICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKFtlbnRyeV0pID0+IHtcbiAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykge1xuICAgICAgICBzdWJzY3JpYmVyLm5leHQoKTtcbiAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgfVxuICAgIH0sIG9wdGlvbnMpO1xuXG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50KTtcblxuICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH0pO1xufVxuXG5pbnRlcmZhY2UgV2luZG93IHtcbiAgUmVzaXplT2JzZXJ2ZXI6IHR5cGVvZiBSZXNpemVPYnNlcnZlcjtcbn1cblxuaW50ZXJmYWNlIFJlc2l6ZU9ic2VydmVyT3B0aW9ucyB7XG4gIGJveD86ICdjb250ZW50LWJveCcgfCAnYm9yZGVyLWJveCc7XG59XG5cbmludGVyZmFjZSBSZXNpemVPYnNlcnZlclNpemUge1xuICBpbmxpbmVTaXplOiBudW1iZXI7XG4gIGJsb2NrU2l6ZTogbnVtYmVyO1xufVxuXG5kZWNsYXJlIGNsYXNzIFJlc2l6ZU9ic2VydmVyIHtcbiAgY29uc3RydWN0b3IoY2FsbGJhY2s6IFJlc2l6ZU9ic2VydmVyQ2FsbGJhY2spO1xuXG4gIGRpc2Nvbm5lY3QoKTogdm9pZDtcblxuICBvYnNlcnZlKHRhcmdldDogRWxlbWVudCwgb3B0aW9ucz86IFJlc2l6ZU9ic2VydmVyT3B0aW9ucyk6IHZvaWQ7XG5cbiAgdW5vYnNlcnZlKHRhcmdldDogRWxlbWVudCk6IHZvaWQ7XG59XG5cbnR5cGUgUmVzaXplT2JzZXJ2ZXJDYWxsYmFjayA9IChlbnRyaWVzOiBSZWFkb25seUFycmF5PFJlc2l6ZU9ic2VydmVyRW50cnk+LCBvYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXIpID0+IHZvaWQ7XG5cbmludGVyZmFjZSBSZXNpemVPYnNlcnZlckVudHJ5IHtcbiAgcmVhZG9ubHkgdGFyZ2V0OiBFbGVtZW50O1xuICByZWFkb25seSBjb250ZW50UmVjdDogRE9NUmVjdFJlYWRPbmx5O1xuICByZWFkb25seSBib3JkZXJCb3hTaXplOiBSZXNpemVPYnNlcnZlclNpemU7XG4gIHJlYWRvbmx5IGNvbnRlbnRCb3hTaXplOiBSZXNpemVPYnNlcnZlclNpemU7XG59XG5cbnR5cGUgRWxlbWVudERpbWVuc2lvbnMgPSB7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xufTtcblxuY29uc3QgaXNTdXBwb3J0UmVzaXplT2JzZXJ2ZXIgPSAnUmVzaXplT2JzZXJ2ZXInIGluIHdpbmRvdztcbmNvbnN0IEFVRElUX1RJTUUgPSAxNTA7XG5cbmV4cG9ydCBmdW5jdGlvbiBkaW1lbnNpb25zQ2hhbmdlcyh0YXJnZXQ6IEhUTUxFbGVtZW50LCBvcHRpb25zPzogUmVzaXplT2JzZXJ2ZXJPcHRpb25zKSB7XG4gIHJldHVybiBpc1N1cHBvcnRSZXNpemVPYnNlcnZlclxuICAgID8gcmVzaXplT2JzZXJ2ZXJTdHJhdGVneSh0YXJnZXQsIG9wdGlvbnMpLnBpcGUoYXVkaXRUaW1lKEFVRElUX1RJTUUpKVxuICAgIDogcmVzaXplV2luZG93U3RyYXRlZ3kodGFyZ2V0KTtcbn1cblxuZnVuY3Rpb24gcmVzaXplV2luZG93U3RyYXRlZ3kodGFyZ2V0OiBIVE1MRWxlbWVudCk6IE9ic2VydmFibGU8RWxlbWVudERpbWVuc2lvbnM+IHtcbiAgcmV0dXJuIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKS5waXBlKFxuICAgIGF1ZGl0VGltZShBVURJVF9USU1FKSxcbiAgICBtYXAoKCkgPT4gKHtcbiAgICAgIHdpZHRoOiB0YXJnZXQub2Zmc2V0V2lkdGgsXG4gICAgICBoZWlnaHQ6IHRhcmdldC5vZmZzZXRIZWlnaHRcbiAgICB9KSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXYsIGN1cnJlbnQpID0+IHtcbiAgICAgIHJldHVybiBwcmV2LndpZHRoID09PSBjdXJyZW50LndpZHRoICYmIHByZXYuaGVpZ2h0ID09PSBjdXJyZW50LmhlaWdodDtcbiAgICB9KVxuICApO1xufVxuXG5mdW5jdGlvbiByZXNpemVPYnNlcnZlclN0cmF0ZWd5KFxuICB0YXJnZXQ6IEhUTUxFbGVtZW50LFxuICBvcHRpb25zOiBSZXNpemVPYnNlcnZlck9wdGlvbnMgPSB7IGJveDogJ2JvcmRlci1ib3gnIH1cbik6IE9ic2VydmFibGU8RWxlbWVudERpbWVuc2lvbnM+IHtcbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKHN1YnNjcmliZXIgPT4ge1xuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChbZW50cnldKSA9PiB7XG4gICAgICAvLyBDdXJyZW50bHksIG9ubHkgRmlyZWZveCBzdXBwb3J0cyBgYm9yZGVyQm94U2l6ZWAgcHJvcGVydHkgd2hpY2hcbiAgICAgIC8vIGdpdmVzIHRoZSBib3JkZXItYm94IHZhbHVlIGluY2x1ZGUgcGFkZGluZyBhbmQgYm9yZGVyXG4gICAgICBpZiAoZW50cnkuYm9yZGVyQm94U2l6ZSkge1xuICAgICAgICBzdWJzY3JpYmVyLm5leHQoe1xuICAgICAgICAgIHdpZHRoOiBlbnRyeS5ib3JkZXJCb3hTaXplLmlubGluZVNpemUsXG4gICAgICAgICAgaGVpZ2h0OiBlbnRyeS5ib3JkZXJCb3hTaXplLmJsb2NrU2l6ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1YnNjcmliZXIubmV4dCh7XG4gICAgICAgICAgd2lkdGg6IChlbnRyeS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLm9mZnNldFdpZHRoLFxuICAgICAgICAgIGhlaWdodDogKGVudHJ5LnRhcmdldCBhcyBIVE1MRWxlbWVudCkub2Zmc2V0SGVpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0YXJnZXQsIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VFbGVtZW50PFQ+KGVsZW1lbnRPclJlZjogRWxlbWVudFJlZjxUPiB8IFQpOiBUIHtcbiAgcmV0dXJuIGVsZW1lbnRPclJlZiBpbnN0YW5jZW9mIEVsZW1lbnRSZWYgPyBlbGVtZW50T3JSZWYubmF0aXZlRWxlbWVudCA6IGVsZW1lbnRPclJlZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHpvbmVTdGFibGUoem9uZTogTmdab25lKSB7XG4gIHJldHVybiB6b25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZTogYW55KTogdmFsdWUgaXMgc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRDbGFzcyhlbGVtZW50LCBjbGFzc05hbWU6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNsYXNzTmFtZSkpIHtcbiAgICBjbGFzc05hbWUuZm9yRWFjaChuYW1lID0+IGVsZW1lbnQuY2xhc3NMaXN0LmFkZChuYW1lKSk7XG4gIH0gZWxzZSB7XG4gICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodGFnTmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VzdChlbGVtZW50OiBFbGVtZW50LCBzZWxlY3Rvcjogc3RyaW5nKSB7XG4gIGlmICh3aW5kb3dbJ0VsZW1lbnQnXSAmJiAhRWxlbWVudC5wcm90b3R5cGUuY2xvc2VzdCkge1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmNsb3Nlc3QgPSBmdW5jdGlvbihzKSB7XG4gICAgICBsZXQgbWF0Y2hlcyA9ICh0aGlzLmRvY3VtZW50IHx8IHRoaXMub3duZXJEb2N1bWVudCkucXVlcnlTZWxlY3RvckFsbChzKSxcbiAgICAgICAgaSxcbiAgICAgICAgZWwgPSB0aGlzO1xuICAgICAgZG8ge1xuICAgICAgICBpID0gbWF0Y2hlcy5sZW5ndGg7XG4gICAgICAgIHdoaWxlICgtLWkgPj0gMCAmJiBtYXRjaGVzLml0ZW0oaSkgIT09IGVsKSB7fVxuICAgICAgfSB3aGlsZSAoaSA8IDAgJiYgKGVsID0gZWwucGFyZW50RWxlbWVudCkpO1xuICAgICAgcmV0dXJuIGVsO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZWxlbWVudC5jbG9zZXN0KHNlbGVjdG9yKTtcbn1cblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlUG9ydGFsIHtcbiAgdmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPGFueT47XG5cbiAgY29uc3RydWN0b3IodHBsOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy52aWV3UmVmID0gdHBsLmNyZWF0ZUVtYmVkZGVkVmlldyh7fSk7XG4gICAgdGhpcy52aWV3UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCBlbGVtZW50UmVmKCkge1xuICAgIHJldHVybiB0aGlzLnZpZXdSZWYucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLnZpZXdSZWYuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmduZWF0L2hlbGlwb3BwZXIvIiwic291cmNlcyI6WyJsaWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUUsT0FBTyxFQUFFLFVBQVUsRUFBZ0MsTUFBTSxlQUFlLENBQUM7QUFFekUsSUFBTSxVQUFVLEdBQUcsc0JBQXNCLElBQUksTUFBTSxDQUFDO0FBRXBELE1BQU0sVUFBVSxNQUFNLENBQ3BCLE9BQW9CLEVBQ3BCLE9BR0M7SUFIRCx3QkFBQSxFQUFBO1FBQ0UsSUFBSSxFQUFFLElBQUk7UUFDVixTQUFTLEVBQUUsR0FBRztLQUNmO0lBRUQsT0FBTyxJQUFJLFVBQVUsQ0FBQyxVQUFBLFVBQVU7UUFDOUIsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDdkI7UUFFRCxJQUFNLFFBQVEsR0FBRyxJQUFJLG9CQUFvQixDQUFDLFVBQUMsRUFBTztnQkFBUCxrQkFBTyxFQUFOLGFBQUs7WUFDL0MsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFO2dCQUN4QixVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2xCLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN2QjtRQUNILENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVaLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFMUIsT0FBTyxjQUFNLE9BQUEsUUFBUSxDQUFDLFVBQVUsRUFBRSxFQUFyQixDQUFxQixDQUFDO0lBQ3JDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQXVDRCxJQUFNLHVCQUF1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Ozs7T0FBQTtJQUVELGdDQUFPLEdBQVA7UUFDRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFDSCxxQkFBQztBQUFELENBQUMsQUFmRCxJQWVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZnJvbUV2ZW50LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBhdWRpdFRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFbGVtZW50UmVmLCBFbWJlZGRlZFZpZXdSZWYsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmNvbnN0IGhhc1N1cHBvcnQgPSAnSW50ZXJzZWN0aW9uT2JzZXJ2ZXInIGluIHdpbmRvdztcblxuZXhwb3J0IGZ1bmN0aW9uIGluVmlldyhcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIG9wdGlvbnM6IEludGVyc2VjdGlvbk9ic2VydmVySW5pdCA9IHtcbiAgICByb290OiBudWxsLFxuICAgIHRocmVzaG9sZDogMC4zXG4gIH1cbikge1xuICByZXR1cm4gbmV3IE9ic2VydmFibGUoc3Vic2NyaWJlciA9PiB7XG4gICAgaWYgKCFoYXNTdXBwb3J0KSB7XG4gICAgICBzdWJzY3JpYmVyLm5leHQoKTtcbiAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoW2VudHJ5XSkgPT4ge1xuICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgIHN1YnNjcmliZXIubmV4dCgpO1xuICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgfSwgb3B0aW9ucyk7XG5cbiAgICBvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQpO1xuXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfSk7XG59XG5cbmludGVyZmFjZSBXaW5kb3cge1xuICBSZXNpemVPYnNlcnZlcjogdHlwZW9mIFJlc2l6ZU9ic2VydmVyO1xufVxuXG5pbnRlcmZhY2UgUmVzaXplT2JzZXJ2ZXJPcHRpb25zIHtcbiAgYm94PzogJ2NvbnRlbnQtYm94JyB8ICdib3JkZXItYm94Jztcbn1cblxuaW50ZXJmYWNlIFJlc2l6ZU9ic2VydmVyU2l6ZSB7XG4gIGlubGluZVNpemU6IG51bWJlcjtcbiAgYmxvY2tTaXplOiBudW1iZXI7XG59XG5cbmRlY2xhcmUgY2xhc3MgUmVzaXplT2JzZXJ2ZXIge1xuICBjb25zdHJ1Y3RvcihjYWxsYmFjazogUmVzaXplT2JzZXJ2ZXJDYWxsYmFjayk7XG5cbiAgZGlzY29ubmVjdCgpOiB2b2lkO1xuXG4gIG9ic2VydmUodGFyZ2V0OiBFbGVtZW50LCBvcHRpb25zPzogUmVzaXplT2JzZXJ2ZXJPcHRpb25zKTogdm9pZDtcblxuICB1bm9ic2VydmUodGFyZ2V0OiBFbGVtZW50KTogdm9pZDtcbn1cblxudHlwZSBSZXNpemVPYnNlcnZlckNhbGxiYWNrID0gKGVudHJpZXM6IFJlYWRvbmx5QXJyYXk8UmVzaXplT2JzZXJ2ZXJFbnRyeT4sIG9ic2VydmVyOiBSZXNpemVPYnNlcnZlcikgPT4gdm9pZDtcblxuaW50ZXJmYWNlIFJlc2l6ZU9ic2VydmVyRW50cnkge1xuICByZWFkb25seSB0YXJnZXQ6IEVsZW1lbnQ7XG4gIHJlYWRvbmx5IGNvbnRlbnRSZWN0OiBET01SZWN0UmVhZE9ubHk7XG4gIHJlYWRvbmx5IGJvcmRlckJveFNpemU6IFJlc2l6ZU9ic2VydmVyU2l6ZTtcbiAgcmVhZG9ubHkgY29udGVudEJveFNpemU6IFJlc2l6ZU9ic2VydmVyU2l6ZTtcbn1cblxudHlwZSBFbGVtZW50RGltZW5zaW9ucyA9IHtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG59O1xuXG5jb25zdCBpc1N1cHBvcnRSZXNpemVPYnNlcnZlciA9ICdSZXNpemVPYnNlcnZlcicgaW4gd2luZG93O1xuY29uc3QgQVVESVRfVElNRSA9IDE1MDtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpbWVuc2lvbnNDaGFuZ2VzKHRhcmdldDogSFRNTEVsZW1lbnQsIG9wdGlvbnM/OiBSZXNpemVPYnNlcnZlck9wdGlvbnMpIHtcbiAgcmV0dXJuIGlzU3VwcG9ydFJlc2l6ZU9ic2VydmVyXG4gICAgPyByZXNpemVPYnNlcnZlclN0cmF0ZWd5KHRhcmdldCwgb3B0aW9ucykucGlwZShhdWRpdFRpbWUoQVVESVRfVElNRSkpXG4gICAgOiByZXNpemVXaW5kb3dTdHJhdGVneSh0YXJnZXQpO1xufVxuXG5mdW5jdGlvbiByZXNpemVXaW5kb3dTdHJhdGVneSh0YXJnZXQ6IEhUTUxFbGVtZW50KTogT2JzZXJ2YWJsZTxFbGVtZW50RGltZW5zaW9ucz4ge1xuICByZXR1cm4gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLnBpcGUoXG4gICAgYXVkaXRUaW1lKEFVRElUX1RJTUUpLFxuICAgIG1hcCgoKSA9PiAoe1xuICAgICAgd2lkdGg6IHRhcmdldC5vZmZzZXRXaWR0aCxcbiAgICAgIGhlaWdodDogdGFyZ2V0Lm9mZnNldEhlaWdodFxuICAgIH0pKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgY3VycmVudCkgPT4ge1xuICAgICAgcmV0dXJuIHByZXYud2lkdGggPT09IGN1cnJlbnQud2lkdGggJiYgcHJldi5oZWlnaHQgPT09IGN1cnJlbnQuaGVpZ2h0O1xuICAgIH0pXG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlc2l6ZU9ic2VydmVyU3RyYXRlZ3koXG4gIHRhcmdldDogSFRNTEVsZW1lbnQsXG4gIG9wdGlvbnM6IFJlc2l6ZU9ic2VydmVyT3B0aW9ucyA9IHsgYm94OiAnYm9yZGVyLWJveCcgfVxuKTogT2JzZXJ2YWJsZTxFbGVtZW50RGltZW5zaW9ucz4ge1xuICByZXR1cm4gbmV3IE9ic2VydmFibGUoc3Vic2NyaWJlciA9PiB7XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKFtlbnRyeV0pID0+IHtcbiAgICAgIC8vIEN1cnJlbnRseSwgb25seSBGaXJlZm94IHN1cHBvcnRzIGBib3JkZXJCb3hTaXplYCBwcm9wZXJ0eSB3aGljaFxuICAgICAgLy8gZ2l2ZXMgdGhlIGJvcmRlci1ib3ggdmFsdWUgaW5jbHVkZSBwYWRkaW5nIGFuZCBib3JkZXJcbiAgICAgIGlmIChlbnRyeS5ib3JkZXJCb3hTaXplKSB7XG4gICAgICAgIHN1YnNjcmliZXIubmV4dCh7XG4gICAgICAgICAgd2lkdGg6IGVudHJ5LmJvcmRlckJveFNpemUuaW5saW5lU2l6ZSxcbiAgICAgICAgICBoZWlnaHQ6IGVudHJ5LmJvcmRlckJveFNpemUuYmxvY2tTaXplXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Vic2NyaWJlci5uZXh0KHtcbiAgICAgICAgICB3aWR0aDogKGVudHJ5LnRhcmdldCBhcyBIVE1MRWxlbWVudCkub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiAoZW50cnkudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5vZmZzZXRIZWlnaHRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBvYnNlcnZlci5vYnNlcnZlKHRhcmdldCwgb3B0aW9ucyk7XG5cbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZUVsZW1lbnQ8VD4oZWxlbWVudE9yUmVmOiBFbGVtZW50UmVmPFQ+IHwgVCk6IFQge1xuICByZXR1cm4gZWxlbWVudE9yUmVmIGluc3RhbmNlb2YgRWxlbWVudFJlZiA/IGVsZW1lbnRPclJlZi5uYXRpdmVFbGVtZW50IDogZWxlbWVudE9yUmVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWU6IGFueSk6IHZhbHVlIGlzIHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuICBpZiAoQXJyYXkuaXNBcnJheShjbGFzc05hbWUpKSB7XG4gICAgY2xhc3NOYW1lLmZvckVhY2gobmFtZSA9PiBlbGVtZW50LmNsYXNzTGlzdC5hZGQobmFtZSkpO1xuICB9IGVsc2Uge1xuICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbGVtZW50KHRhZ05hbWU6IHN0cmluZykge1xuICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb3Nlc3QoZWxlbWVudDogRWxlbWVudCwgc2VsZWN0b3I6IHN0cmluZykge1xuICBpZiAod2luZG93WydFbGVtZW50J10gJiYgIUVsZW1lbnQucHJvdG90eXBlLmNsb3Nlc3QpIHtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5jbG9zZXN0ID0gZnVuY3Rpb24ocykge1xuICAgICAgbGV0IG1hdGNoZXMgPSAodGhpcy5kb2N1bWVudCB8fCB0aGlzLm93bmVyRG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwocyksXG4gICAgICAgIGksXG4gICAgICAgIGVsID0gdGhpcztcbiAgICAgIGRvIHtcbiAgICAgICAgaSA9IG1hdGNoZXMubGVuZ3RoO1xuICAgICAgICB3aGlsZSAoLS1pID49IDAgJiYgbWF0Y2hlcy5pdGVtKGkpICE9PSBlbCkge31cbiAgICAgIH0gd2hpbGUgKGkgPCAwICYmIChlbCA9IGVsLnBhcmVudEVsZW1lbnQpKTtcbiAgICAgIHJldHVybiBlbDtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnQuY2xvc2VzdChzZWxlY3Rvcik7XG59XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZVBvcnRhbCB7XG4gIHZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKHRwbDogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIHRoaXMudmlld1JlZiA9IHRwbC5jcmVhdGVFbWJlZGRlZFZpZXcoe30pO1xuICAgIHRoaXMudmlld1JlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBnZXQgZWxlbWVudFJlZigpIHtcbiAgICByZXR1cm4gdGhpcy52aWV3UmVmLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy52aWV3UmVmLmRlc3Ryb3koKTtcbiAgfVxufVxuIl19
import { __decorate, __param } from 'tslib';
import { ElementRef, InjectionToken, TemplateRef, ApplicationRef, NgZone, ComponentFactoryResolver, Injector, Inject, Input, Output, Directive, NgModule, ɵɵdefineInjectable, ɵɵinject, INJECTOR, Injectable } from '@angular/core';
import tippy from 'tippy.js';
import { Observable, fromEvent, Subject, forkJoin } from 'rxjs';
import { auditTime, map, distinctUntilChanged, take, takeUntil } from 'rxjs/operators';
import { Observable, fromEvent, Subject } from 'rxjs';
import { auditTime, map, distinctUntilChanged, takeUntil } from 'rxjs/operators';

@@ -67,5 +67,2 @@ const hasSupport = 'IntersectionObserver' in window;

}
function zoneStable(zone) {
return zone.onStable.pipe(take(1));
}
function isString(value) {

@@ -180,5 +177,7 @@ return typeof value === 'string';

else {
forkJoin([inView(this.host.nativeElement), zoneStable(this.zone)])
.pipe(takeUntil(this._destroy))
.subscribe(() => this.create());
requestAnimationFrame(() => {
inView(this.host.nativeElement)
.pipe(takeUntil(this._destroy))
.subscribe(() => this.create());
});
}

@@ -310,3 +309,3 @@ }

if (this.showOnlyOnTextOverflow) {
zoneStable(this.zone).subscribe(() => this.markDisabled(this.isElementOverflow() === false));
requestAnimationFrame(() => this.markDisabled(this.isElementOverflow() === false));
}

@@ -313,0 +312,0 @@ }

import { __read, __assign, __decorate, __param } from 'tslib';
import { ElementRef, InjectionToken, TemplateRef, ApplicationRef, NgZone, ComponentFactoryResolver, Injector, Inject, Input, Output, Directive, NgModule, ɵɵdefineInjectable, ɵɵinject, INJECTOR, Injectable } from '@angular/core';
import tippy from 'tippy.js';
import { Observable, fromEvent, Subject, forkJoin } from 'rxjs';
import { auditTime, map, distinctUntilChanged, take, takeUntil } from 'rxjs/operators';
import { Observable, fromEvent, Subject } from 'rxjs';
import { auditTime, map, distinctUntilChanged, takeUntil } from 'rxjs/operators';

@@ -71,5 +71,2 @@ var hasSupport = 'IntersectionObserver' in window;

}
function zoneStable(zone) {
return zone.onStable.pipe(take(1));
}
function isString(value) {

@@ -203,5 +200,7 @@ return typeof value === 'string';

else {
forkJoin([inView(this.host.nativeElement), zoneStable(this.zone)])
.pipe(takeUntil(this._destroy))
.subscribe(function () { return _this.create(); });
requestAnimationFrame(function () {
inView(_this.host.nativeElement)
.pipe(takeUntil(_this._destroy))
.subscribe(function () { return _this.create(); });
});
}

@@ -357,3 +356,3 @@ },

if (this.showOnlyOnTextOverflow) {
zoneStable(this.zone).subscribe(function () { return _this.markDisabled(_this.isElementOverflow() === false); });
requestAnimationFrame(function () { return _this.markDisabled(_this.isElementOverflow() === false); });
}

@@ -360,0 +359,0 @@ };

import { Observable } from 'rxjs';
import { ElementRef, EmbeddedViewRef, NgZone, TemplateRef } from '@angular/core';
import { ElementRef, EmbeddedViewRef, TemplateRef } from '@angular/core';
export declare function inView(element: HTMLElement, options?: IntersectionObserverInit): Observable<unknown>;

@@ -13,3 +13,2 @@ interface ResizeObserverOptions {

export declare function coerceElement<T>(elementOrRef: ElementRef<T> | T): T;
export declare function zoneStable(zone: NgZone): Observable<any>;
export declare function isString(value: any): value is string;

@@ -16,0 +15,0 @@ export declare function addClass(element: any, className: string | string[]): void;

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"HelipopperModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":4,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"HelipopperDirective"}],"exports":[{"__symbolic":"reference","name":"HelipopperDirective"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"defaults":[{}],"value":{"ngModule":{"__symbolic":"reference","name":"HelipopperModule"},"providers":[{"provide":{"__symbolic":"reference","name":"ɵb"},"useValue":{"__symbolic":"reference","name":"config"}}]}}}},"HelipopperDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":41,"character":1},"arguments":[{"selector":"[helipopper]","exportAs":"helipopper"}]}],"members":{"helipopperOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"showOnlyOnTextOverflow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3},"arguments":["helipopperTextOverflow"]}]}],"triggerTarget":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"helipopperHost":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":53,"character":3}}]}],"helipopperAppendTo":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":56,"character":3}}]}],"helipopperTrigger":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":3}}]}],"helipopperAllowClose":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"helipopperClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":65,"character":3}}]}],"helipopperOffset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":68,"character":3}}]}],"injector":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":71,"character":3},"arguments":["helipopperInjector"]}]}],"placement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":74,"character":3},"arguments":["helipopperPlacement"]}]}],"variation":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":80,"character":3},"arguments":["helipopperVariation"]}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3},"arguments":["helipopperDisabled"]}]}],"sticky":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":92,"character":3},"arguments":["helipopperSticky"]}]}],"helipopper":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":107,"character":3}}]}],"helipopperClose":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":119,"character":3}}]}],"helipopperVisible":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":120,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":139,"character":5},"arguments":[{"__symbolic":"reference","name":"ɵb"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":134,"character":18},{"__symbolic":"reference","module":"@angular/core","name":"ApplicationRef","line":135,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":136,"character":18},{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":137,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":138,"character":26},{"__symbolic":"reference","name":"ɵa"}]}],"setProps":[{"__symbolic":"method"}],"hide":[{"__symbolic":"method"}],"show":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"destroyView":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"createInstance":[{"__symbolic":"method"}],"resolveTrigger":[{"__symbolic":"method"}],"resolveTemplate":[{"__symbolic":"method"}],"isElementOverflow":[{"__symbolic":"method"}],"getParent":[{"__symbolic":"method"}],"markDisabled":[{"__symbolic":"method"}],"resolveTheme":[{"__symbolic":"method"}],"addCloseButton":[{"__symbolic":"method"}],"removeCloseButton":[{"__symbolic":"method"}],"checkOverflow":[{"__symbolic":"method"}],"destroyTemplate":[{"__symbolic":"method"}],"createConfig":[{"__symbolic":"method"}],"resolveComponent":[{"__symbolic":"method"}],"destroyComponent":[{"__symbolic":"method"}],"resolveContent":[{"__symbolic":"method"}]}},"HelipopperService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":24,"character":5},"arguments":[{"__symbolic":"reference","name":"ɵb"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ApplicationRef","line":20,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":21,"character":18},{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":22,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":23,"character":26},{"__symbolic":"reference","name":"ɵa"}]}],"open":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵa":{"__symbolic":"interface"},"ɵb":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":27,"character":37},"arguments":["HELIPOPPER_CONFIG"]}},"origins":{"HelipopperModule":"./lib/helipopper.module","HelipopperDirective":"./lib/helipopper.directive","HelipopperService":"./lib/helipopper.service","ɵa":"./lib/helipopper.types","ɵb":"./lib/helipopper.types"},"importAs":"@ngneat/helipopper"}
{"__symbolic":"module","version":4,"metadata":{"HelipopperModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":4,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"HelipopperDirective"}],"exports":[{"__symbolic":"reference","name":"HelipopperDirective"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"defaults":[{}],"value":{"ngModule":{"__symbolic":"reference","name":"HelipopperModule"},"providers":[{"provide":{"__symbolic":"reference","name":"ɵb"},"useValue":{"__symbolic":"reference","name":"config"}}]}}}},"HelipopperDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":40,"character":1},"arguments":[{"selector":"[helipopper]","exportAs":"helipopper"}]}],"members":{"helipopperOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":42,"character":3}}]}],"showOnlyOnTextOverflow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3},"arguments":["helipopperTextOverflow"]}]}],"triggerTarget":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3}}]}],"helipopperHost":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"helipopperAppendTo":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"helipopperTrigger":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":58,"character":3}}]}],"helipopperAllowClose":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"helipopperClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3}}]}],"helipopperOffset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":67,"character":3}}]}],"injector":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":70,"character":3},"arguments":["helipopperInjector"]}]}],"placement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":73,"character":3},"arguments":["helipopperPlacement"]}]}],"variation":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":79,"character":3},"arguments":["helipopperVariation"]}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":85,"character":3},"arguments":["helipopperDisabled"]}]}],"sticky":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":91,"character":3},"arguments":["helipopperSticky"]}]}],"helipopper":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":106,"character":3}}]}],"helipopperClose":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":120,"character":3}}]}],"helipopperVisible":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":121,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":140,"character":5},"arguments":[{"__symbolic":"reference","name":"ɵb"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":135,"character":18},{"__symbolic":"reference","module":"@angular/core","name":"ApplicationRef","line":136,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":137,"character":18},{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":138,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":139,"character":26},{"__symbolic":"reference","name":"ɵa"}]}],"setProps":[{"__symbolic":"method"}],"hide":[{"__symbolic":"method"}],"show":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"destroyView":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"createInstance":[{"__symbolic":"method"}],"resolveTrigger":[{"__symbolic":"method"}],"resolveTemplate":[{"__symbolic":"method"}],"isElementOverflow":[{"__symbolic":"method"}],"getParent":[{"__symbolic":"method"}],"markDisabled":[{"__symbolic":"method"}],"resolveTheme":[{"__symbolic":"method"}],"addCloseButton":[{"__symbolic":"method"}],"removeCloseButton":[{"__symbolic":"method"}],"checkOverflow":[{"__symbolic":"method"}],"destroyTemplate":[{"__symbolic":"method"}],"createConfig":[{"__symbolic":"method"}],"resolveComponent":[{"__symbolic":"method"}],"destroyComponent":[{"__symbolic":"method"}],"resolveContent":[{"__symbolic":"method"}]}},"HelipopperService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":24,"character":5},"arguments":[{"__symbolic":"reference","name":"ɵb"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ApplicationRef","line":20,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":21,"character":18},{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":22,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":23,"character":26},{"__symbolic":"reference","name":"ɵa"}]}],"open":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵa":{"__symbolic":"interface"},"ɵb":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":27,"character":37},"arguments":["HELIPOPPER_CONFIG"]}},"origins":{"HelipopperModule":"./lib/helipopper.module","HelipopperDirective":"./lib/helipopper.directive","HelipopperService":"./lib/helipopper.service","ɵa":"./lib/helipopper.types","ɵb":"./lib/helipopper.types"},"importAs":"@ngneat/helipopper"}
{
"name": "@ngneat/helipopper",
"version": "1.4.0",
"version": "1.4.1",
"description": "A Powerful Tooltip and Popover for Angular Applications",

@@ -5,0 +5,0 @@ "schematics": "./schematics/collection.json",

@@ -178,3 +178,3 @@ <p align="center">

| helipopper | `string` \| `TemplateRef` | The tooltip content | `none` |
| helipopperPlacement | `Popper placement` | The tooltip placement | `bottom` |
| helipopperPlacement | `Popper placement` | The tooltip placement | `top` |
| helipopperClass | `string` \| `string[]` | Custom class that'll be added to the tooltip | `none` |

@@ -181,0 +181,0 @@ | helipopperOffset | `[number, number]` | Set tooltip offset position | `[0, 10]` |

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc