@firestitch/address
Advanced tools
Comparing version 8.2.1 to 8.2.2
@@ -1,2 +0,2 @@ | ||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("@angular/core"),require("@angular/common"),require("@angular/flex-layout"),require("@angular/forms"),require("@agm/core"),require("@angular/material/autocomplete"),require("@angular/material/button"),require("@angular/material/icon"),require("@angular/material/input"),require("@angular/material/select"),require("@firestitch/form"),require("@firestitch/dialog"),require("rxjs"),require("lodash-es"),require("rxjs/operators"),require("@angular/material/form-field"),require("@angular/cdk/keycodes"),require("@firestitch/common"),require("@angular/material/dialog")):"function"==typeof define&&define.amd?define("@firestitch/address",["exports","@angular/core","@angular/common","@angular/flex-layout","@angular/forms","@agm/core","@angular/material/autocomplete","@angular/material/button","@angular/material/icon","@angular/material/input","@angular/material/select","@firestitch/form","@firestitch/dialog","rxjs","lodash-es","rxjs/operators","@angular/material/form-field","@angular/cdk/keycodes","@firestitch/common","@angular/material/dialog"],n):n(((e=e||self).firestitch=e.firestitch||{},e.firestitch.address={}),e.ng.core,e.ng.common,e.ng["flex-layout"],e.ng.forms,e.core$1,e.ng.material.autocomplete,e.ng.material.button,e.ng.material.icon,e.ng.material.input,e.ng.material.select,e.form,e.dialog,e.rxjs,e.lodashEs,e.rxjs.operators,e.ng.material["form-field"],e.ng.cdk.keycodes,e.common$1,e.ng.material.dialog)}(this,(function(e,n,t,o,a,i,r,s,d,c,l,m,u,g,p,h,f,y,b,C){"use strict";var v=[{code:"AF",name:"Afghanistan"},{code:"AL",name:"Albania"},{code:"DZ",name:"Algeria"},{code:"AS",name:"American Samoa"},{code:"AD",name:"Andorra"},{code:"AO",name:"Angola"},{code:"AI",name:"Anguilla"},{code:"AQ",name:"Antarctica"},{code:"AG",name:"Antigua and Barbuda"},{code:"AR",name:"Argentina"},{code:"AM",name:"Armenia"},{code:"AW",name:"Aruba"},{code:"AU",name:"Australia"},{code:"AT",name:"Austria"},{code:"AZ",name:"Azerbaijan"},{code:"BS",name:"Bahamas"},{code:"BH",name:"Bahrain"},{code:"BD",name:"Bangladesh"},{code:"BB",name:"Barbados"},{code:"BY",name:"Belarus"},{code:"BE",name:"Belgium"},{code:"BZ",name:"Belize"},{code:"BJ",name:"Benin"},{code:"BM",name:"Bermuda"},{code:"BT",name:"Bhutan"},{code:"BO",name:"Bolivia"},{code:"BA",name:"Bosnia and Herzegovina"},{code:"BW",name:"Botswana"},{code:"BV",name:"Bouvet Island"},{code:"BR",name:"Brazil"},{code:"IO",name:"British Indian Ocean Territory"},{code:"BN",name:"Brunei Darussalam"},{code:"BG",name:"Bulgaria"},{code:"BF",name:"Burkina Faso"},{code:"BI",name:"Burundi"},{code:"KH",name:"Cambodia"},{code:"CM",name:"Cameroon"},{code:"CA",name:"Canada",regions:[{code:"AB",name:"Alberta"},{code:"BC",name:"British Columbia"},{code:"MB",name:"Manitoba"},{code:"NB",name:"New Brunswick"},{code:"NL",name:"Newfoundland and Labrador"},{code:"NT",name:"Northwest Territories"},{code:"NS",name:"Nova Scotia"},{code:"NU",name:"Nunavut"},{code:"ON",name:"Ontario"},{code:"PE",name:"Prince Edward Island"},{code:"QC",name:"Quebec"},{code:"SK",name:"Saskatchewan"},{code:"YT",name:"Yukon Territory"}]},{code:"CV",name:"Cape Verde"},{code:"KY",name:"Cayman Islands"},{code:"CF",name:"Central African Republic"},{code:"TD",name:"Chad"},{code:"CL",name:"Chile"},{code:"CN",name:"China"},{code:"CX",name:"Christmas Island"},{code:"CC",name:"Cocos (Keeling) Islands"},{code:"CO",name:"Colombia"},{code:"KM",name:"Comoros"},{code:"CG",name:"Congo"},{code:"CD",name:"Congo, the Democratic Republic of the"},{code:"CK",name:"Cook Islands"},{code:"CR",name:"Costa Rica"},{code:"CI",name:"Cote D'Ivoire"},{code:"HR",name:"Croatia"},{code:"CU",name:"Cuba"},{code:"CY",name:"Cyprus"},{code:"CZ",name:"Czech Republic"},{code:"DK",name:"Denmark"},{code:"DJ",name:"Djibouti"},{code:"DM",name:"Dominica"},{code:"DO",name:"Dominican Republic"},{code:"EC",name:"Ecuador"},{code:"EG",name:"Egypt"},{code:"SV",name:"El Salvador"},{code:"GQ",name:"Equatorial Guinea"},{code:"ER",name:"Eritrea"},{code:"EE",name:"Estonia"},{code:"ET",name:"Ethiopia"},{code:"FK",name:"Falkland Islands (Malvinas)"},{code:"FO",name:"Faroe Islands"},{code:"FJ",name:"Fiji"},{code:"FI",name:"Finland"},{code:"FR",name:"France"},{code:"GF",name:"French Guiana"},{code:"PF",name:"French Polynesia"},{code:"TF",name:"French Southern Territories"},{code:"GA",name:"Gabon"},{code:"GM",name:"Gambia"},{code:"GE",name:"Georgia"},{code:"DE",name:"Germany"},{code:"GH",name:"Ghana"},{code:"GI",name:"Gibraltar"},{code:"GR",name:"Greece"},{code:"GL",name:"Greenland"},{code:"GD",name:"Grenada"},{code:"GP",name:"Guadeloupe"},{code:"GU",name:"Guam"},{code:"GT",name:"Guatemala"},{code:"GN",name:"Guinea"},{code:"GW",name:"Guinea-Bissau"},{code:"GY",name:"Guyana"},{code:"HT",name:"Haiti"},{code:"HM",name:"Heard Island and Mcdonald Islands"},{code:"VA",name:"Holy See (Vatican City State)"},{code:"HN",name:"Honduras"},{code:"HK",name:"Hong Kong"},{code:"HU",name:"Hungary"},{code:"IS",name:"Iceland"},{code:"IN",name:"India"},{code:"ID",name:"Indonesia"},{code:"IR",name:"Iran, Islamic Republic of"},{code:"IQ",name:"Iraq"},{code:"IE",name:"Ireland"},{code:"IL",name:"Israel"},{code:"IT",name:"Italy"},{code:"JM",name:"Jamaica"},{code:"JP",name:"Japan"},{code:"JO",name:"Jordan"},{code:"KZ",name:"Kazakhstan"},{code:"KE",name:"Kenya"},{code:"KI",name:"Kiribati"},{code:"KP",name:"Korea, Democratic People's Republic of"},{code:"KR",name:"Korea, Republic of"},{code:"KW",name:"Kuwait"},{code:"KG",name:"Kyrgyzstan"},{code:"LA",name:"Lao People's Democratic Republic"},{code:"LV",name:"Latvia"},{code:"LB",name:"Lebanon"},{code:"LS",name:"Lesotho"},{code:"LR",name:"Liberia"},{code:"LY",name:"Libyan Arab Jamahiriya"},{code:"LI",name:"Liechtenstein"},{code:"LT",name:"Lithuania"},{code:"LU",name:"Luxembourg"},{code:"MO",name:"Macao"},{code:"MK",name:"Macedonia"},{code:"MG",name:"Madagascar"},{code:"MW",name:"Malawi"},{code:"MY",name:"Malaysia"},{code:"MV",name:"Maldives"},{code:"ML",name:"Mali"},{code:"MT",name:"Malta"},{code:"MH",name:"Marshall Islands"},{code:"MQ",name:"Martinique"},{code:"MR",name:"Mauritania"},{code:"MU",name:"Mauritius"},{code:"YT",name:"Mayotte"},{code:"MX",name:"Mexico"},{code:"FM",name:"Micronesia, Federated States of"},{code:"MD",name:"Moldova, Republic of"},{code:"MC",name:"Monaco"},{code:"MN",name:"Mongolia"},{code:"MS",name:"Montserrat"},{code:"MA",name:"Morocco"},{code:"MZ",name:"Mozambique"},{code:"MM",name:"Myanmar"},{code:"NA",name:"Namibia"},{code:"NR",name:"Nauru"},{code:"NP",name:"Nepal"},{code:"NL",name:"Netherlands"},{code:"AN",name:"Netherlands Antilles"},{code:"NC",name:"New Caledonia"},{code:"NZ",name:"New Zealand"},{code:"NI",name:"Nicaragua"},{code:"NE",name:"Niger"},{code:"NG",name:"Nigeria"},{code:"NU",name:"Niue"},{code:"NF",name:"Norfolk Island"},{code:"MP",name:"Northern Mariana Islands"},{code:"NO",name:"Norway"},{code:"OM",name:"Oman"},{code:"PK",name:"Pakistan"},{code:"PW",name:"Palau"},{code:"PS",name:"Palestinian Territory, Occupied"},{code:"PA",name:"Panama"},{code:"PG",name:"Papua New Guinea"},{code:"PY",name:"Paraguay"},{code:"PE",name:"Peru"},{code:"PH",name:"Philippines"},{code:"PN",name:"Pitcairn"},{code:"PL",name:"Poland"},{code:"PT",name:"Portugal"},{code:"PR",name:"Puerto Rico"},{code:"QA",name:"Qatar"},{code:"RE",name:"Reunion"},{code:"RO",name:"Romania"},{code:"RU",name:"Russian Federation"},{code:"RW",name:"Rwanda"},{code:"SH",name:"Saint Helena"},{code:"KN",name:"Saint Kitts and Nevis"},{code:"LC",name:"Saint Lucia"},{code:"PM",name:"Saint Pierre and Miquelon"},{code:"VC",name:"Saint Vincent and the Grenadines"},{code:"WS",name:"Samoa"},{code:"SM",name:"San Marino"},{code:"ST",name:"Sao Tome and Principe"},{code:"SA",name:"Saudi Arabia"},{code:"SN",name:"Senegal"},{code:"CS",name:"Serbia and Montenegro"},{code:"SC",name:"Seychelles"},{code:"SL",name:"Sierra Leone"},{code:"SG",name:"Singapore"},{code:"SK",name:"Slovakia"},{code:"SI",name:"Slovenia"},{code:"SB",name:"Solomon Islands"},{code:"SO",name:"Somalia"},{code:"ZA",name:"South Africa"},{code:"GS",name:"South Georgia and Sandwich Isles"},{code:"ES",name:"Spain"},{code:"LK",name:"Sri Lanka"},{code:"SD",name:"Sudan"},{code:"SR",name:"Suriname"},{code:"SJ",name:"Svalbard and Jan Mayen"},{code:"SZ",name:"Swaziland"},{code:"SE",name:"Sweden"},{code:"CH",name:"Switzerland"},{code:"SY",name:"Syrian Arab Republic"},{code:"TW",name:"Taiwan (ROC)"},{code:"TJ",name:"Tajikistan"},{code:"TZ",name:"Tanzania, United Republic of"},{code:"TH",name:"Thailand"},{code:"TL",name:"Timor-Leste"},{code:"TG",name:"Togo"},{code:"TK",name:"Tokelau"},{code:"TO",name:"Tonga"},{code:"TT",name:"Trinidad and Tobago"},{code:"TN",name:"Tunisia"},{code:"TR",name:"Turkey"},{code:"TM",name:"Turkmenistan"},{code:"TC",name:"Turks and Caicos Islands"},{code:"TV",name:"Tuvalu"},{code:"UG",name:"Uganda"},{code:"UA",name:"Ukraine"},{code:"AE",name:"United Arab Emirates"},{code:"GB",name:"United Kingdom"},{code:"US",name:"United States",regions:[{code:"AK",name:"Alaska"},{code:"AL",name:"Alabama"},{code:"AR",name:"Arkansas"},{code:"AS",name:"American Samoa"},{code:"AZ",name:"Arizona"},{code:"CA",name:"California"},{code:"CO",name:"Colorado"},{code:"CT",name:"Connecticut"},{code:"DE",name:"Delaware"},{code:"FL",name:"Florida"},{code:"GA",name:"Georgia"},{code:"HI",name:"Hawaii"},{code:"IA",name:"Iowa"},{code:"ID",name:"Idaho"},{code:"IL",name:"Illinois"},{code:"IN",name:"Indiana"},{code:"KS",name:"Kansas"},{code:"KY",name:"Kentucky"},{code:"LA",name:"Louisiana"},{code:"MA",name:"Massachusetts"},{code:"MD",name:"Maryland"},{code:"ME",name:"Maine"},{code:"MI",name:"Michigan"},{code:"MN",name:"Minnesota"},{code:"MO",name:"Missouri"},{code:"MP",name:"Northern Mariana Islands"},{code:"MS",name:"Mississippi"},{code:"MT",name:"Montana"},{code:"NC",name:"North Carolina"},{code:"ND",name:"North Dakota"},{code:"NE",name:"Nebraska"},{code:"NH",name:"New Hampshire"},{code:"NJ",name:"New Jersey"},{code:"NM",name:"New Mexico"},{code:"NV",name:"Nevada"},{code:"NY",name:"New York"},{code:"OH",name:"Ohio"},{code:"OK",name:"Oklahoma"},{code:"OR",name:"Oregon"},{code:"PA",name:"Pennsylvania"},{code:"PR",name:"Puerto Rico"},{code:"RI",name:"Rhode Island"},{code:"SC",name:"South Carolina"},{code:"SD",name:"South Dakota"},{code:"TN",name:"Tennessee"},{code:"TX",name:"Texas"},{code:"UT",name:"Utah"},{code:"VA",name:"Virginia"},{code:"VI",name:"Virgin Islands"},{code:"VT",name:"Vermont"},{code:"WA",name:"Washington"},{code:"WI",name:"Wisconsin"},{code:"WV",name:"West Virginia"},{code:"WY",name:"Wyoming"}]},{code:"UM",name:"United States Minor Outlying Islands"},{code:"UY",name:"Uruguay"},{code:"UZ",name:"Uzbekistan"},{code:"VU",name:"Vanuatu"},{code:"VE",name:"Venezuela"},{code:"VN",name:"Viet Nam"},{code:"VG",name:"Virgin Islands, British"},{code:"VI",name:"Virgin Islands, U.s."},{code:"WF",name:"Wallis and Futuna"},{code:"EH",name:"Western Sahara"},{code:"YE",name:"Yemen"},{code:"ZM",name:"Zambia"},{code:"ZW",name:"Zimbabwe"}],M=new n.InjectionToken("fs-address-country.countries"),I=v,A=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{providers:[{provide:M,useValue:I}]}]}],e}(),S=new n.InjectionToken("fs-address-country.google-map-key"),w=function(){function e(e,n){this.apiKey=null,this.libraries=["places"],this.apiKey=e||n}return e.ctorParameters=function(){return[{type:void 0,decorators:[{type:n.Optional},{type:n.Inject,args:[S]}]},{type:void 0,decorators:[{type:n.Optional},{type:n.Inject,args:["GoogleMapKey"]}]}]},e}();var O={Canada:"CA",UnitedStates:"US"},P=function(){function e(){this.countries=[],this.disabled=!1,this.required=!1,this.regionChange=new n.EventEmitter,this.regions=[]}return Object.defineProperty(e.prototype,"country",{set:function(e){this._country=e,this.initRegions(),this.updateCountryRegionLabels()},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){this.initRegions(),this.updateCountryRegionLabels()},e.prototype.initRegions=function(){var e=this;if(this._country){var n=this.countries.find((function(n){return n.code===e._country}));n&&(this.regions=n.regions||[])}},e.prototype.updateCountryRegionLabels=function(){this.label?this.regionLabel=this.label:this.regionLabel=this._country===O.Canada?"Province":this._country===O.UnitedStates?"State":"Province/State"},e.prototype.changeRegion=function(){var e=this,n=this.countries.find((function(n){return n.code===e._country}));if(n&&n.regions){var t=n.regions.find((function(n){return n.code===e.region}));this.region=t.code}this.regionChange.emit(this.region)},e.decorators=[{type:n.Component,args:[{selector:"fs-address-region",template:'<mat-form-field>\n <mat-label>{{ regionLabel }}</mat-label>\n <mat-select\n matInput\n *ngIf="regions.length"\n [(ngModel)]="region"\n [disabled]="disabled"\n [fsFormRequired]="required"\n name="region"\n (selectionChange)="changeRegion()"\n autocomplete="off">\n\n <mat-option *ngFor="let region of regions" [value]="region.code">\n <span>{{ region.name }}</span>\n </mat-option>\n\n </mat-select>\n\n <input\n *ngIf="!regions.length"\n matInput\n [(ngModel)]="region"\n [disabled]="disabled"\n [fsFormRequired]="required"\n name="region"\n aria-label="Region"\n (change)="changeRegion()"\n autocomplete="off">\n</mat-form-field>\n',changeDetection:n.ChangeDetectionStrategy.OnPush,viewProviders:[{provide:a.ControlContainer,useExisting:a.NgForm}],styles:[""]}]}],e.ctorParameters=function(){return[]},e.propDecorators={region:[{type:n.Input}],countries:[{type:n.Input}],disabled:[{type:n.Input}],label:[{type:n.Input}],required:[{type:n.Input}],regionChange:[{type:n.Output}],country:[{type:n.Input,args:["country"]}]},e}();var F=function(){function e(){this.addressChange=new n.EventEmitter,this.collapseChange=new n.EventEmitter,this.config={},this.countries=v,this.isSearched=!1,this._destory$=new g.Subject}return Object.defineProperty(e.prototype,"setConfig",{set:function(e){e.search=void 0!==e.search&&e.search,p.isObject(e.map)||(e.map={showMap:!1}),this.config=e},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){var e=this;this.initAddress(),this.initConfig(),this.initMap(),this.initCountries(),this.initZipAndStateLabels(),this.initCollapseBtn(),this.agmMap&&this.agmMap.mapReady.pipe(h.takeUntil(this._destory$)).subscribe((function(){e.agmMap.triggerResize(),(e.address.name||e.address.country||e.address.region||e.address.city||e.address.zip)&&(e.address.lat=9999,e.address.lng=9999,e.change())}))},e.prototype.ngOnChanges=function(e){e.address&&(e.address.currentValue||(this.address={}),e.address.firstChange||(e.address.currentValue?e.address.currentValue.country:null)!==(e.address.previousValue?e.address.previousValue.country:null)&&this.initZipAndStateLabels())},e.prototype.ngOnDestroy=function(){this._destory$.next(),this._destory$.complete()},e.prototype.recenter=function(){var e=this;this.mapConfig.center={latitude:this.address.lat,longitude:this.address.lng},this.mapConfig.marker.coords.latitude=this.address.lat,this.mapConfig.marker.coords.longitude=this.address.lng,this.agmMap.triggerResize().then((function(){return e.agmMap._mapsWrapper.setCenter({lat:e.address.lat,lng:e.address.lng})}))},e.prototype.changeCountry=function(){var e=this,n=this.countries.find((function(n){return n.code===e.address.country}));n&&n.regions?n.regions.some((function(n){return n.code===e.address.region}))||(this.address.region=null):this.address.region=null;this.fsAddressRegionComponent.region=this.address.region,this.change()},e.prototype.change=function(e){var n=this;if(e&&e.stopPropagation(),!this.config.search)return this.addressChange.emit(this.address);var t=new google.maps.Geocoder,o=[this.address.country,this.address.region,this.address.city,this.address.zip,this.address.street,this.address.name];this.searchedAddress=o.filter((function(e){return e})).join(", "),this.addressChange.emit(this.address),t.geocode({address:this.searchedAddress},(function(e,t){n.isSearched=!0;var o=Object.assign({},n.address);if(t==google.maps.GeocoderStatus.OK&&e.length>0){var a=e[0].geometry.location;o.description=e[0].formatted_address,o.lat=a.lat(),o.lng=a.lng(),n.mapConfig.center={latitude:a.lat(),longitude:a.lng()},n.mapConfig.marker.coords.latitude=a.lat(),n.mapConfig.marker.coords.longitude=a.lng(),n.agmMap&&n.agmMap.triggerResize()}else o.lat=null,o.lng=null;n.addressChange.emit(o)}))},e.prototype.initAddress=function(){this.address=Object.assign({name:void 0,country:void 0,region:void 0,address2:void 0,street:void 0,city:void 0,zip:void 0,lat:null,lng:null},this.address)},e.prototype.initConfig=function(){this.config=Object.assign({name:{required:!1,visible:!0},country:{required:!1,visible:!0},region:{required:!1,visible:!0},address2:{required:!1,visible:!1},city:{required:!1,visible:!0},street:{required:!1,visible:!0},zip:{required:!1,visible:!0}},this.config)},e.prototype.initMap=function(){var e=this;this.mapConfig=Object.assign({center:{latitude:this.address.lat||9999,longitude:this.address.lng||9999},zoom:13,scrollwheel:!1,streetViewControl:!1,zoomControl:!1,mapTypeControlOptions:{mapTypeIds:[]},marker:{id:0,coords:{latitude:this.address.lat,longitude:this.address.lng},options:{draggable:!0},events:{dragend:function(n){e.address.lat=n.coords.lat,e.address.lng=n.coords.lng,e.addressChange.emit(e.address)}}}},this.config.map)},e.prototype.initCountries=function(){var e=this;this.config.country&&this.config.country.list&&this.config.country.list.length&&(this.countries.length=0,this.config.country.list.forEach((function(n){var t=e.countries.find((function(e){return e.code===n}));t&&e.countries.push(t)})));Object.keys(this.address).forEach((function(n){e.address[n]&&!1}))},e.prototype.initZipAndStateLabels=function(){this.updateCountryRegionLabels()},e.prototype.updateCountryRegionLabels=function(){this.zipLabel=this.address.country===O.UnitedStates?"Zip":"Postal Code"},e.prototype.initCollapseBtn=function(){this.config.collapseButton=Object.assign({show:!0,title:"Collapse Address Editor",color:"primary",theme:"mat-raised-button"},this.config.collapseButton)},e.decorators=[{type:n.Component,args:[{selector:"fs-address",template:'<mat-form-field\n *ngIf="config.name.visible!==false"\n class="name">\n <input\n matInput\n autocomplete="nope"\n [(ngModel)]="address.name"\n [disabled]="config.name.disabled"\n [fsFormRequired]="config.name.required"\n name="location_name"\n placeholder="Location name"\n (change)="change($event)"\n autocomplete="off">\n</mat-form-field>\n\n<mat-form-field\n *ngIf="config.street.visible!==false"\n class="street">\n <input\n matInput\n autocomplete="nope"\n [(ngModel)]="address.street"\n [disabled]="config.street.disabled"\n [fsFormRequired]="config.street.required"\n name="street"\n placeholder="Street"\n (change)="change($event)"\n autocomplete="off">\n</mat-form-field>\n\n<mat-form-field\n *ngIf="config.address2.visible"\n class="address2">\n <input\n matInput\n autocomplete="nope"\n [(ngModel)]="address.address2"\n [disabled]="config.address2.disabled"\n [fsFormRequired]="config.address2.required"\n name="address2"\n placeholder="Apartment, Suite, Unit, Etc."\n (change)="change($event)"\n autocomplete="off">\n</mat-form-field>\n\n<div class="city-region-zip-country">\n <div class="city">\n <mat-form-field *ngIf="config.city.visible!==false">\n <input\n matInput\n autocomplete="nope"\n [(ngModel)]="address.city"\n [disabled]="config.city.disabled"\n [fsFormRequired]="config.city.required"\n name="city"\n placeholder="City"\n (change)="change($event)"\n autocomplete="off">\n </mat-form-field>\n </div>\n <div class="region">\n <fs-address-region\n *ngIf="config.region.visible!==false"\n [(region)]="address.region"\n (regionChange)="change()"\n [country]="address.country"\n [countries]="countries"\n [disabled]="config.region.disabled"\n [required]="config.region.required">\n </fs-address-region>\n </div>\n\n <div class="zip">\n <mat-form-field\n *ngIf="config.zip.visible!==false">\n <mat-label>{{ zipLabel }}</mat-label>\n <input\n matInput\n autocomplete="nope"\n [(ngModel)]="address.zip"\n [disabled]="config.zip.disabled"\n [fsFormRequired]="config.zip.required"\n name="zip"\n (change)="change($event)"\n autocomplete="off">\n </mat-form-field>\n </div>\n\n <div class="country">\n <fs-address-country\n *ngIf="config.country.visible!==false"\n [disabled]="config.country.disabled"\n [required]="config.country.required"\n [(ngModel)]="address.country"\n (selectionChange)="changeCountry()"\n name="address-country">\n </fs-address-country>\n </div>\n</div>\n\n<div class="map-container" *ngIf="mapConfig.showMap">\n\n <agm-map\n [ngStyle.xs]="{\'height\': \'300px\'}"\n [latitude]="mapConfig.center.latitude"\n [longitude]="mapConfig.center.longitude"\n [zoom]="mapConfig.zoom"\n [scrollwheel]="mapConfig.scrollwheel"\n [streetViewControl]="mapConfig.streetViewControl"\n [zoomControl]="mapConfig.zoomControl"\n [mapTypeControlOptions]="mapConfig.mapTypeControlOptions">\n <agm-marker\n [latitude]="mapConfig.marker.coords.latitude"\n [longitude]="mapConfig.marker.coords.longitude"\n [markerDraggable]="mapConfig.marker.options.draggable"\n (dragEnd)="mapConfig.marker.events.dragend($event)">\n </agm-marker>\n </agm-map>\n\n <div class="address-incomplete" *ngIf="!address.lat && !address.lng">\n <div *ngIf="!isSearched">Please populate the address above to locate it on the map</div>\n <div *ngIf="isSearched">Could not find address "{{ searchedAddress }}"</div>\n </div>\n</div>',viewProviders:[{provide:a.ControlContainer,useExisting:a.NgForm}],changeDetection:n.ChangeDetectionStrategy.OnPush,styles:["agm-map{width:100%;height:400px;background-color:grey}.map-container{position:relative}.map-container .address-incomplete{position:absolute;top:0;bottom:0;left:0;background:#fff;border:1px solid #efefef;opacity:.87;font-size:larger;padding:40px;align-items:center;display:flex;right:0;flex-direction:column;justify-content:center;text-align:center}.map-container .center{position:absolute;right:5px;top:5px;z-index:5;background-color:#fff}.address2,.name,.street{width:100%;display:block}.city-region-zip-country{display:flex;flex-wrap:wrap}.city-region-zip-country .city,.city-region-zip-country .country,.city-region-zip-country .region,.city-region-zip-country .zip{flex:1 0 50%}.city-region-zip-country .city>*,.city-region-zip-country .country>*,.city-region-zip-country .region>*,.city-region-zip-country .zip>*{padding-right:5px;box-sizing:border-box;display:block}.city-region-zip-country:last-child>*{margin-right:0}.city-region-zip-country ::ng-deep .mat-form-field{width:100%}"]}]}],e.propDecorators={agmMap:[{type:n.ViewChild,args:[i.AgmMap,{static:!1}]}],agmMarker:[{type:n.ViewChild,args:[i.AgmMarker,{static:!1}]}],fsAddressRegionComponent:[{type:n.ViewChild,args:[P,{static:!1}]}],address:[{type:n.Input}],addressChange:[{type:n.Output}],collapseChange:[{type:n.Output}],setConfig:[{type:n.Input,args:["config"]}]},e}();var _={OneLine:"oneline",TwoLine:"twoline",Summary:"summary"},N=function(){function e(){this._address={},this.disabled=!1,this.lines=[],this.empty=!1,this._name=!0}return Object.defineProperty(e.prototype,"address",{get:function(){return this._address},set:function(e){this._address=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"name",{get:function(){return this._name},set:function(e){this._name="true"===e||"boolean"==typeof e&&e},enumerable:!0,configurable:!0}),e.prototype.ngOnChanges=function(e){e.address&&e.address.previousValue&&this._updateView()},e.prototype.ngOnInit=function(){this._updateView()},e.prototype._updateView=function(){this.format===_.Summary?this.summaryFormat():this.lineFormat()},e.prototype.lineFormat=function(){var e=this,n=[];this.lines=[],this.address&&p.each(["name","street","address2","city","region","zip","country"],(function(t){e.address[t]&&n.push(e.address[t])})),this.includeFirst&&(n=n.slice(0,this.includeFirst)),this.empty=!n.length,this.empty||(this.lines=[n],this.format===_.TwoLine&&(this.lines=[[n.shift()]],this.lines.push(n)))},e.prototype.summaryFormat=function(){var e=["name","street","address2","city","region","country"],n=[];if(this.lines=[],this.address)for(var t=0;t<e.length;t++){var o=e[t],a=this.address[o];if("name"===o&&this.name&&a){n.push(a);break}if(a&&"name"!==o){n.push(a);var i=this.address[e[t+1]];i&&n.push(i);break}}this.empty=!n.length,this.empty||(this.lines=[n])},e.decorators=[{type:n.Component,args:[{selector:"fs-address-format",template:'<span *ngIf="!empty" [ngClass]="format" [class.disabled]="disabled">\n <span *ngFor="let parts of lines; let index = index" class="line-{{index + 1}}">\n <span *ngFor="let part of parts;" class="part">{{part}}</span>\n </span>\n</span>\n\n\n',changeDetection:n.ChangeDetectionStrategy.OnPush,styles:['.twoline .line-1{display:block}.twoline .line-2{font-size:smaller}.part+.part:before{content:", "}.part:last-child:after{content:""}.disabled{color:rgba(0,0,0,.38)}']}]}],e.ctorParameters=function(){return[]},e.propDecorators={address:[{type:n.Input}],format:[{type:n.Input}],includeFirst:[{type:n.Input}],disabled:[{type:n.Input}],name:[{type:n.Input,args:["name"]}]},e}();var R=function(){function e(e,t,o,a){var i=this;this._mapsAPILoader=e,this._ngZone=t,this._ngForm=o,this._cdRef=a,this.format=_.TwoLine,this.disabled=!1,this.readonly=!1,this.name=!0,this.cleared=new n.EventEmitter,this.edited=new n.EventEmitter,this.address={},this.addressChange=new n.EventEmitter,this.searchFormField=null,this.showClear=!1,this.predictions=[],this.selecting=!1,this.googleAutocompleteService=null,this.googlePlacesService=null,this.location="",this.required=!1,this.emptyAddress=!0,this.editable=!0,this.autocompleteName="search-"+b.guid("xxxxxxxx"),this._changeAddressDebounce$=new g.Subject,this._destroy$=new g.Subject,this._config={},this.autocompleteFormat=function(e){return e?e.description:i.emptyAddress?void 0:" "}.bind(this),this.functionPromise=function(){return!0===i.selecting||new Promise((function(e,n){var t=[];if(["name","street","city","region","zip","country"].forEach((function(e){i.config[e]&&i.config[e].required&&!i.address[e]&&t.push([e])})),!(i.config.lat&&i.config.lat.required||i.config.lng&&i.config.lng.required)||i.address.lat&&i.address.lat||t.push("position on map"),t.length)if(1===t.length)n("The "+t[0]+" is required");else{var o=t.pop();n("The "+t.join(", ")+" and "+o+" are required")}else e()}))},this._changeAddressDebounce$.pipe(h.debounceTime(200),h.takeUntil(this._destroy$)).subscribe((function(e){i.updatePredictions(e)}))}return Object.defineProperty(e.prototype,"config",{get:function(){return this._config},set:function(e){this._config=e,this._config&&(this.required=this.config.name&&this.config.name.required||this.config.country&&this.config.country.required||this.config.region&&this.config.region.required||this.config.city&&this.config.city.required||this.config.street&&this.config.street.required||this.config.address2&&this.config.address2.required||this.config.zip&&this.config.zip.required)},enumerable:!0,configurable:!0}),e.prototype.revalidate=function(){this._ngForm.controls[this.autocompleteName].updateValueAndValidity()},e.prototype.ngOnChanges=function(e){e.address&&(this.calculateAddress(),this.showClear=!this.emptyAddress),this.editable=!this.disabled&&!this.readonly},e.prototype.ngOnInit=function(){this.calculateAddress(),this.initGoogleMap()},e.prototype.ngOnDestroy=function(){this._destroy$.next(),this._destroy$.complete()},e.prototype.calculateAddress=function(){this.emptyAddress=!(this.address&&(this.address.name||this.address.street||this.address.city||this.address.region||this.address.zip||this.address.country))},e.prototype.initGoogleMap=function(){var e=this;this._ngZone.runOutsideAngular((function(){e._mapsAPILoader.load().then((function(){e.googleAutocompleteService=new google.maps.places.AutocompleteService,e.googlePlacesService=new google.maps.places.PlacesService(e.searchElement.nativeElement)}))}))},e.prototype.updatePredictions=function(e){var n=this;e&&this.googleAutocompleteService&&this.googleAutocompleteService.getPlacePredictions({input:e},(function(t,o){n._ngZone.run((function(){n.predictions.length=0,o!=google.maps.places.PlacesServiceStatus.OK&&o!=google.maps.places.PlacesServiceStatus.ZERO_RESULTS||(n.predictions=t?t.slice():[],n.predictions.push({description:'Just use "'+e+'"',id:1,name:e}),n._cdRef.detectChanges())}))}))},e.prototype.addressChanged=function(e){e.keyCode!==y.ENTER&&(this._changeAddressDebounce$.next(e.currentTarget.value),this.autoComplete.openPanel())},e.prototype.autocompleteSelected=function(e){var n=this,t=e.value,o=this._createAddress();this.emptyAddress=!0,new Promise((function(e){t&&n.googlePlacesService||e(),t&&!t.place_id&&(n.addressChange.emit(t),e()),o.description=t.description,n.googlePlacesService.getDetails(t,(function(t,a){n._ngZone.run((function(){if(a!=google.maps.places.PlacesServiceStatus.OK)return e();var i,r,s;o.lat=t.geometry.location.lat(),o.lng=t.geometry.location.lng(),t.address_components.forEach((function(e){e.types.some((function(e){return"country"===e}))&&(o.country=e.short_name,i=e.long_name),e.types.some((function(e){return"administrative_area_level_1"===e}))&&(o.region=e.short_name,r=e.long_name),e.types.some((function(e){return"locality"===e}))&&(o.city=e.long_name),e.types.some((function(e){return"postal_code"===e}))&&(o.zip=e.long_name)}));var d=t.address_components.find((function(e){return e.types.some((function(e){return"street_number"===e}))}));if(d)o.street=d.long_name+" ",s=d.long_name+" ";else{var c=o.description.match(/^[\d-]+/);c&&(o.street=c[0]+" ",s=c[0]+" ")}var l=t.address_components.find((function(e){return e.types.some((function(e){return"route"===e}))}));l&&(o.street?(o.street+=l.long_name,s+=l.short_name):(o.street=l.long_name,s=l.short_name)),o.country!==t.name&&i!==t.name&&o.region!==t.name&&r!==t.name&&o.city!==t.name&&s!==t.name&&o.zip!==t.name&&o.street!==t.name?n.config.name&&!1!==n.config.name.visible&&(o.name=t.name):o.name="",e(o),n.addressChange.emit(o)}))}))})).then((function(){n.selecting=!1,n.address=o,n._cdRef.detectChanges(),n.revalidate()}),(function(){}))},e.prototype.focus=function(){this.selecting=!0},e.prototype.clear=function(){this.showClear=!1,this.location=null,this.address=this._createAddress(),this.inputAddress="",this.cleared.emit(this._createAddress()),this.addressChange.emit(this._createAddress())},e.prototype.edit=function(){this.editable&&this.edited.emit()},e.prototype._createAddress=function(){return{name:"",description:"",country:"",region:"",city:"",street:"",zip:"",lat:null,lng:null}},e.decorators=[{type:n.Component,args:[{selector:"fs-address-search",template:'<mat-form-field\n #searchFormField\n [floatLabel]="emptyAddress ? \'auto\' : \'always\'">\n <input\n matInput\n autocomplete="off"\n [placeholder]="config.label || \'Location\'"\n [(ngModel)]="inputAddress"\n [ngClass]="{ hide: !emptyAddress }"\n [fsFormFunction]="functionPromise"\n [matAutocomplete]="autocomplete"\n [ngModelOptions]="{ updateOn: \'blur\' }"\n [disabled]="disabled"\n (focus)="focus()"\n (keyup)="addressChanged($event)"\n [name]="autocompleteName"\n #searchInput>\n\n <fs-address-format\n [(address)]="address"\n [format]="format"\n [name]="name"\n (click)="edit()"\n [ngClass]="{ editable: editable }"\n [disabled]="disabled">\n </fs-address-format>\n\n <mat-autocomplete\n (optionSelected)="autocompleteSelected($event.option)"\n [displayWith]="autocompleteFormat"\n autoActiveFirstOption\n #autocomplete="matAutocomplete">\n <mat-option *ngFor="let option of predictions" [value]="option">\n {{ option.description }}\n </mat-option>\n </mat-autocomplete>\n\n <mat-icon\n class="control"\n matSuffix\n *ngIf="showClear && !emptyAddress && !disabled && !readonly"\n (click)="clear()">clear\n </mat-icon>\n\n</mat-form-field>\n',viewProviders:[{provide:a.ControlContainer,useExisting:a.NgForm}],changeDetection:n.ChangeDetectionStrategy.OnPush,styles:["mat-form-field{width:100%}.control{cursor:pointer}.hide{visibility:hidden;position:absolute}textarea{height:16px;resize:none;overflow:hidden}fs-address-format{display:block}fs-address-format.editable{cursor:pointer}"]}]}],e.ctorParameters=function(){return[{type:i.MapsAPILoader},{type:n.NgZone},{type:a.NgForm},{type:n.ChangeDetectorRef}]},e.propDecorators={format:[{type:n.Input}],disabled:[{type:n.Input}],readonly:[{type:n.Input}],config:[{type:n.Input}],name:[{type:n.Input}],cleared:[{type:n.Output}],edited:[{type:n.Output}],address:[{type:n.Input}],addressChange:[{type:n.Output}],searchFormField:[{type:n.ViewChild,args:["searchFormField",{static:!0}]}],searchElement:[{type:n.ViewChild,args:["searchInput",{static:!0}]}],trigger:[{type:n.ViewChild,args:[r.MatAutocompleteTrigger,{static:!0}]}],autoComplete:[{type:n.ViewChild,args:["searchInput",{read:r.MatAutocompleteTrigger,static:!0}]}]},e}();var T=function(){function e(e,n){var t=this;this._dialogRef=e,this._data=n,this.submit=function(){t._dialogRef.close(t.address)},this.address=n.address,this.config=n.config}return e.prototype.addressChange=function(e){this.address=e},e.prototype.recenter=function(){this.addressComponent.recenter()},e.decorators=[{type:n.Component,args:[{template:'<form fsForm [submit]="submit">\n <fs-dialog>\n <div mat-dialog-content>\n <fs-address\n [(address)]="address"\n [config]="config"\n (addressChange)="addressChange($event)">\n </fs-address>\n </div>\n <div mat-dialog-actions>\n <button mat-button type="submit" color="primary">Apply</button>\n <button\n mat-button\n type="button"\n *ngIf="config.map.showMap && address.lat && address.lng"\n (click)="recenter()">\n Center Address\n </button>\n <button mat-button type="button" [mat-dialog-close]="null">Cancel</button>\n </div>\n </fs-dialog>\n</form>\n',changeDetection:n.ChangeDetectionStrategy.OnPush,styles:[""]}]}],e.ctorParameters=function(){return[{type:C.MatDialogRef},{type:void 0,decorators:[{type:n.Inject,args:[C.MAT_DIALOG_DATA]}]}]},e.propDecorators={addressComponent:[{type:n.ViewChild,args:[F,{static:!1}]}]},e}();var E=function(){function e(e,t){this._dialog=e,this._ngForm=t,this.addressChange=new n.EventEmitter,this.view="search",this.config={},this._name=!0,this._destroy$=new g.Subject}return Object.defineProperty(e.prototype,"setConfig",{set:function(e){e.format||(e.format=_.TwoLine),e.search=!0,p.isObject(e.map)||(e.map={showMap:!1}),this.config=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"setFormat",{set:function(e){this.config.format=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"setDisabled",{set:function(e){this.config.disabled=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"setReadonly",{set:function(e){this.config.readonly=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"name",{get:function(){return this._name},set:function(e){this._name="true"===e||"boolean"==typeof e&&e},enumerable:!0,configurable:!0}),e.prototype.open=function(){var e=this;this._dialog.open(T,{width:"700px",data:{address:this.address,config:this.config}}).afterClosed().pipe(h.takeUntil(this._destroy$)).subscribe((function(n){n&&(e.address=n,e.addressChange.emit(e.address),setTimeout((function(){e.search.revalidate()})))}))},e.prototype.searchEdited=function(){this.open()},e.prototype.ngOnDestroy=function(){this._destroy$.next(),this._destroy$.complete()},e.decorators=[{type:n.Component,args:[{selector:"fs-address-picker",template:'<div class="address-picker-container">\n\n <div class="search">\n <fs-address-search\n [(address)]="address"\n [config]="config"\n [format]="config.format"\n [disabled]="config.disabled"\n [readonly]="config.readonly"\n [name]="name"\n (edited)="searchEdited()"\n (addressChange)="addressChange.emit($event)">\n </fs-address-search>\n </div>\n\n</div>\n',changeDetection:n.ChangeDetectionStrategy.OnPush,styles:[".address-picker-container{position:relative}.input-controls{position:absolute;top:0;right:0}:host ::ng-deep .search .mat-form-field-flex{flex-direction:row}:host ::ng-deep .search .mat-form-field-suffix{align-self:flex-end;padding-bottom:4px}:host ::ng-deep .hide-underline .mat-form-field-underline{display:none}:host ::ng-deep .hide-underline .mat-form-field-subscript-wrapper{margin-top:0}.map-buttons{margin-top:5px}.map-buttons button{width:100%}"]}]}],e.ctorParameters=function(){return[{type:C.MatDialog},{type:a.NgForm}]},e.propDecorators={setConfig:[{type:n.Input,args:["config"]}],setFormat:[{type:n.Input,args:["format"]}],setDisabled:[{type:n.Input,args:["disabled"]}],setReadonly:[{type:n.Input,args:["readonly"]}],address:[{type:n.Input}],addressChange:[{type:n.Output}],name:[{type:n.Input,args:["name"]}],search:[{type:n.ViewChild,args:[R,{static:!1}]}],editable:[{type:n.ViewChild,args:[F,{static:!1}]}]},e}();var z=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,a.FormsModule,m.FsFormModule,c.MatInputModule,l.MatSelectModule,A],declarations:[P],exports:[P]}]}],e}(),q=function(){function e(){this.disabled=!1,this.required=!1,this.countries=v,this.selectionChange=new n.EventEmitter,this.onChange=function(e){},this.onTouched=function(){}}return e.prototype.writeValue=function(e){this.country=e},e.prototype.changed=function(e){this.onChange(e),this.selectionChange.emit(e)},e.prototype.registerOnChange=function(e){this.onChange=e},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.decorators=[{type:n.Component,args:[{selector:"fs-address-country",template:'<mat-form-field>\n <mat-select\n [(ngModel)]="country"\n [disabled]="disabled"\n [fsFormRequired]="required"\n (ngModelChange)="changed($event)"\n name="country"\n placeholder="Country"\n autocomplete="country">\n <mat-option *ngFor="let country of countries" [value]="country.code">\n <span>{{ country.name }}</span>\n </mat-option>\n </mat-select>\n</mat-form-field>',providers:[{provide:a.NG_VALUE_ACCESSOR,multi:!0,useExisting:n.forwardRef((function(){return e}))}],changeDetection:n.ChangeDetectionStrategy.OnPush,viewProviders:[{provide:a.ControlContainer,useExisting:a.NgForm}],styles:[""]}]}],e.propDecorators={disabled:[{type:n.Input}],required:[{type:n.Input}],countries:[{type:n.Input}],selectionChange:[{type:n.Output}]},e}();var x=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,a.FormsModule,m.FsFormModule,l.MatSelectModule,A],declarations:[q],exports:[q]}]}],e}(),k=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,a.FormsModule,m.FsFormModule,r.MatAutocompleteModule,s.MatButtonModule,d.MatIconModule,c.MatInputModule,l.MatSelectModule,C.MatDialogModule,o.FlexLayoutModule,A,u.FsDialogModule,i.AgmCoreModule.forRoot(),z,x],exports:[i.AgmCoreModule,F,N,E,R],declarations:[F,N,E,R,T],entryComponents:[T],providers:[i.GoogleMapsAPIWrapper,i.MarkerManager,{provide:i.LAZY_MAPS_API_CONFIG,useClass:w}]}]}],e}(),D=function(){function e(){this.orientationVertical=!0,this.orientationHorizontal=!1,this.orientationHorizontalStretch=!1,this.config={},this.country="",this.region="",this.countryChange=new n.EventEmitter,this.regionChange=new n.EventEmitter,this.countries=v}return Object.defineProperty(e.prototype,"setOrientation",{set:function(e){this.orientationVertical="vertical"===e,this.orientationHorizontal="horizontal"===e,this.orientationHorizontalStretch="horizontal-stretch"===e},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){this.initConfig()},e.prototype.changeCountry=function(){this.countryChange.emit(this.country)},e.prototype.changeRegion=function(){this.regionChange.emit(this.region)},e.prototype.initConfig=function(){var e=this;this.config=Object.assign({country:{required:!1},region:{required:!1}},this.config),this.config.country.list&&(this.countries=v.filter((function(n){return e.config.country.list.indexOf(n.code)>=0})))},e.decorators=[{type:n.Component,args:[{selector:"fs-address-region-country",template:'<div fxLayout="column" class="region-country">\n <div class="country">\n <fs-address-country\n *ngIf="config.country.visible!==false"\n [disabled]="config.country.disabled"\n [required]="config.country.required"\n [countries]="countries"\n [(ngModel)]="country"\n (selectionChange)="changeCountry()"\n name="country">\n </fs-address-country>\n </div>\n <div class="region">\n <fs-address-region\n [(region)]="region"\n (regionChange)="changeRegion()"\n [country]="country"\n [countries]="countries"\n [disabled]="config.region.disabled"\n [required]="config.region.required"\n name="region">\n </fs-address-region>\n </div>\n</div>',changeDetection:n.ChangeDetectionStrategy.OnPush,styles:[".region-country{display:flex;flex-direction:column}:host.horizontal .region-country{flex-direction:row}:host.horizontal ::ng-deep .region{padding-left:10px}:host.horizontal ::ng-deep fs-address-region .mat-form-field{width:100%}:host.vertical ::ng-deep fs-address-country .mat-form-field,:host.vertical ::ng-deep fs-address-region .mat-form-field{width:100%}:host.horizontal-stretch .region-country{display:-ms-grid;display:grid;-ms-grid-columns:1fr 1fr;grid-template-columns:1fr 1fr;grid-gap:10px}:host.horizontal-stretch ::ng-deep fs-address-region .mat-form-field{width:100%}:host.horizontal-stretch ::ng-deep .country .mat-form-field{width:100%}"]}]}],e.propDecorators={orientationVertical:[{type:n.HostBinding,args:["class.vertical"]}],orientationHorizontal:[{type:n.HostBinding,args:["class.horizontal"]}],orientationHorizontalStretch:[{type:n.HostBinding,args:["class.horizontal-stretch"]}],config:[{type:n.Input}],country:[{type:n.Input}],region:[{type:n.Input}],setOrientation:[{type:n.Input,args:["orientation"]}],countryChange:[{type:n.Output}],regionChange:[{type:n.Output}]},e}();var L=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,a.FormsModule,m.FsFormModule,c.MatInputModule,l.MatSelectModule,A,z,x],declarations:[D],exports:[D]}]}],e}();e.AddressFormat=_,e.COUNTRIES=M,e.Countries=v,e.Country=O,e.FsAddressComponent=F,e.FsAddressCountriesModule=A,e.FsAddressCountryModule=x,e.FsAddressFormatComponent=N,e.FsAddressModule=k,e.FsAddressPickerComponent=E,e.FsAddressRegionCountryModule=L,e.FsAddressRegionModule=z,e.FsAddressSearchComponent=R,e.GOOGLE_MAP_KEY=S,e.ɵa=P,e.ɵb=q,e.ɵc=T,e.ɵd=w,e.ɵe=D,Object.defineProperty(e,"__esModule",{value:!0})})); | ||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("@angular/core"),require("@angular/common"),require("@angular/flex-layout"),require("@angular/forms"),require("@agm/core"),require("@angular/material/autocomplete"),require("@angular/material/button"),require("@angular/material/icon"),require("@angular/material/input"),require("@angular/material/select"),require("@firestitch/form"),require("@firestitch/dialog"),require("rxjs"),require("lodash-es"),require("rxjs/operators"),require("@angular/material/form-field"),require("@angular/cdk/keycodes"),require("@firestitch/common"),require("@angular/material/dialog")):"function"==typeof define&&define.amd?define("@firestitch/address",["exports","@angular/core","@angular/common","@angular/flex-layout","@angular/forms","@agm/core","@angular/material/autocomplete","@angular/material/button","@angular/material/icon","@angular/material/input","@angular/material/select","@firestitch/form","@firestitch/dialog","rxjs","lodash-es","rxjs/operators","@angular/material/form-field","@angular/cdk/keycodes","@firestitch/common","@angular/material/dialog"],n):n(((e=e||self).firestitch=e.firestitch||{},e.firestitch.address={}),e.ng.core,e.ng.common,e.ng["flex-layout"],e.ng.forms,e.core$1,e.ng.material.autocomplete,e.ng.material.button,e.ng.material.icon,e.ng.material.input,e.ng.material.select,e.form,e.dialog,e.rxjs,e.lodashEs,e.rxjs.operators,e.ng.material["form-field"],e.ng.cdk.keycodes,e.common$1,e.ng.material.dialog)}(this,(function(e,n,t,o,a,i,r,s,d,c,l,m,u,g,p,h,f,y,b,C){"use strict";var v=[{code:"AF",name:"Afghanistan"},{code:"AL",name:"Albania"},{code:"DZ",name:"Algeria"},{code:"AS",name:"American Samoa"},{code:"AD",name:"Andorra"},{code:"AO",name:"Angola"},{code:"AI",name:"Anguilla"},{code:"AQ",name:"Antarctica"},{code:"AG",name:"Antigua and Barbuda"},{code:"AR",name:"Argentina"},{code:"AM",name:"Armenia"},{code:"AW",name:"Aruba"},{code:"AU",name:"Australia"},{code:"AT",name:"Austria"},{code:"AZ",name:"Azerbaijan"},{code:"BS",name:"Bahamas"},{code:"BH",name:"Bahrain"},{code:"BD",name:"Bangladesh"},{code:"BB",name:"Barbados"},{code:"BY",name:"Belarus"},{code:"BE",name:"Belgium"},{code:"BZ",name:"Belize"},{code:"BJ",name:"Benin"},{code:"BM",name:"Bermuda"},{code:"BT",name:"Bhutan"},{code:"BO",name:"Bolivia"},{code:"BA",name:"Bosnia and Herzegovina"},{code:"BW",name:"Botswana"},{code:"BV",name:"Bouvet Island"},{code:"BR",name:"Brazil"},{code:"IO",name:"British Indian Ocean Territory"},{code:"BN",name:"Brunei Darussalam"},{code:"BG",name:"Bulgaria"},{code:"BF",name:"Burkina Faso"},{code:"BI",name:"Burundi"},{code:"KH",name:"Cambodia"},{code:"CM",name:"Cameroon"},{code:"CA",name:"Canada",regions:[{code:"AB",name:"Alberta"},{code:"BC",name:"British Columbia"},{code:"MB",name:"Manitoba"},{code:"NB",name:"New Brunswick"},{code:"NL",name:"Newfoundland and Labrador"},{code:"NT",name:"Northwest Territories"},{code:"NS",name:"Nova Scotia"},{code:"NU",name:"Nunavut"},{code:"ON",name:"Ontario"},{code:"PE",name:"Prince Edward Island"},{code:"QC",name:"Quebec"},{code:"SK",name:"Saskatchewan"},{code:"YT",name:"Yukon Territory"}]},{code:"CV",name:"Cape Verde"},{code:"KY",name:"Cayman Islands"},{code:"CF",name:"Central African Republic"},{code:"TD",name:"Chad"},{code:"CL",name:"Chile"},{code:"CN",name:"China"},{code:"CX",name:"Christmas Island"},{code:"CC",name:"Cocos (Keeling) Islands"},{code:"CO",name:"Colombia"},{code:"KM",name:"Comoros"},{code:"CG",name:"Congo"},{code:"CD",name:"Congo, the Democratic Republic of the"},{code:"CK",name:"Cook Islands"},{code:"CR",name:"Costa Rica"},{code:"CI",name:"Cote D'Ivoire"},{code:"HR",name:"Croatia"},{code:"CU",name:"Cuba"},{code:"CY",name:"Cyprus"},{code:"CZ",name:"Czech Republic"},{code:"DK",name:"Denmark"},{code:"DJ",name:"Djibouti"},{code:"DM",name:"Dominica"},{code:"DO",name:"Dominican Republic"},{code:"EC",name:"Ecuador"},{code:"EG",name:"Egypt"},{code:"SV",name:"El Salvador"},{code:"GQ",name:"Equatorial Guinea"},{code:"ER",name:"Eritrea"},{code:"EE",name:"Estonia"},{code:"ET",name:"Ethiopia"},{code:"FK",name:"Falkland Islands (Malvinas)"},{code:"FO",name:"Faroe Islands"},{code:"FJ",name:"Fiji"},{code:"FI",name:"Finland"},{code:"FR",name:"France"},{code:"GF",name:"French Guiana"},{code:"PF",name:"French Polynesia"},{code:"TF",name:"French Southern Territories"},{code:"GA",name:"Gabon"},{code:"GM",name:"Gambia"},{code:"GE",name:"Georgia"},{code:"DE",name:"Germany"},{code:"GH",name:"Ghana"},{code:"GI",name:"Gibraltar"},{code:"GR",name:"Greece"},{code:"GL",name:"Greenland"},{code:"GD",name:"Grenada"},{code:"GP",name:"Guadeloupe"},{code:"GU",name:"Guam"},{code:"GT",name:"Guatemala"},{code:"GN",name:"Guinea"},{code:"GW",name:"Guinea-Bissau"},{code:"GY",name:"Guyana"},{code:"HT",name:"Haiti"},{code:"HM",name:"Heard Island and Mcdonald Islands"},{code:"VA",name:"Holy See (Vatican City State)"},{code:"HN",name:"Honduras"},{code:"HK",name:"Hong Kong"},{code:"HU",name:"Hungary"},{code:"IS",name:"Iceland"},{code:"IN",name:"India"},{code:"ID",name:"Indonesia"},{code:"IR",name:"Iran, Islamic Republic of"},{code:"IQ",name:"Iraq"},{code:"IE",name:"Ireland"},{code:"IL",name:"Israel"},{code:"IT",name:"Italy"},{code:"JM",name:"Jamaica"},{code:"JP",name:"Japan"},{code:"JO",name:"Jordan"},{code:"KZ",name:"Kazakhstan"},{code:"KE",name:"Kenya"},{code:"KI",name:"Kiribati"},{code:"KP",name:"Korea, Democratic People's Republic of"},{code:"KR",name:"Korea, Republic of"},{code:"KW",name:"Kuwait"},{code:"KG",name:"Kyrgyzstan"},{code:"LA",name:"Lao People's Democratic Republic"},{code:"LV",name:"Latvia"},{code:"LB",name:"Lebanon"},{code:"LS",name:"Lesotho"},{code:"LR",name:"Liberia"},{code:"LY",name:"Libyan Arab Jamahiriya"},{code:"LI",name:"Liechtenstein"},{code:"LT",name:"Lithuania"},{code:"LU",name:"Luxembourg"},{code:"MO",name:"Macao"},{code:"MK",name:"Macedonia"},{code:"MG",name:"Madagascar"},{code:"MW",name:"Malawi"},{code:"MY",name:"Malaysia"},{code:"MV",name:"Maldives"},{code:"ML",name:"Mali"},{code:"MT",name:"Malta"},{code:"MH",name:"Marshall Islands"},{code:"MQ",name:"Martinique"},{code:"MR",name:"Mauritania"},{code:"MU",name:"Mauritius"},{code:"YT",name:"Mayotte"},{code:"MX",name:"Mexico"},{code:"FM",name:"Micronesia, Federated States of"},{code:"MD",name:"Moldova, Republic of"},{code:"MC",name:"Monaco"},{code:"MN",name:"Mongolia"},{code:"MS",name:"Montserrat"},{code:"MA",name:"Morocco"},{code:"MZ",name:"Mozambique"},{code:"MM",name:"Myanmar"},{code:"NA",name:"Namibia"},{code:"NR",name:"Nauru"},{code:"NP",name:"Nepal"},{code:"NL",name:"Netherlands"},{code:"AN",name:"Netherlands Antilles"},{code:"NC",name:"New Caledonia"},{code:"NZ",name:"New Zealand"},{code:"NI",name:"Nicaragua"},{code:"NE",name:"Niger"},{code:"NG",name:"Nigeria"},{code:"NU",name:"Niue"},{code:"NF",name:"Norfolk Island"},{code:"MP",name:"Northern Mariana Islands"},{code:"NO",name:"Norway"},{code:"OM",name:"Oman"},{code:"PK",name:"Pakistan"},{code:"PW",name:"Palau"},{code:"PS",name:"Palestinian Territory, Occupied"},{code:"PA",name:"Panama"},{code:"PG",name:"Papua New Guinea"},{code:"PY",name:"Paraguay"},{code:"PE",name:"Peru"},{code:"PH",name:"Philippines"},{code:"PN",name:"Pitcairn"},{code:"PL",name:"Poland"},{code:"PT",name:"Portugal"},{code:"PR",name:"Puerto Rico"},{code:"QA",name:"Qatar"},{code:"RE",name:"Reunion"},{code:"RO",name:"Romania"},{code:"RU",name:"Russian Federation"},{code:"RW",name:"Rwanda"},{code:"SH",name:"Saint Helena"},{code:"KN",name:"Saint Kitts and Nevis"},{code:"LC",name:"Saint Lucia"},{code:"PM",name:"Saint Pierre and Miquelon"},{code:"VC",name:"Saint Vincent and the Grenadines"},{code:"WS",name:"Samoa"},{code:"SM",name:"San Marino"},{code:"ST",name:"Sao Tome and Principe"},{code:"SA",name:"Saudi Arabia"},{code:"SN",name:"Senegal"},{code:"CS",name:"Serbia and Montenegro"},{code:"SC",name:"Seychelles"},{code:"SL",name:"Sierra Leone"},{code:"SG",name:"Singapore"},{code:"SK",name:"Slovakia"},{code:"SI",name:"Slovenia"},{code:"SB",name:"Solomon Islands"},{code:"SO",name:"Somalia"},{code:"ZA",name:"South Africa"},{code:"GS",name:"South Georgia and Sandwich Isles"},{code:"ES",name:"Spain"},{code:"LK",name:"Sri Lanka"},{code:"SD",name:"Sudan"},{code:"SR",name:"Suriname"},{code:"SJ",name:"Svalbard and Jan Mayen"},{code:"SZ",name:"Swaziland"},{code:"SE",name:"Sweden"},{code:"CH",name:"Switzerland"},{code:"SY",name:"Syrian Arab Republic"},{code:"TW",name:"Taiwan (ROC)"},{code:"TJ",name:"Tajikistan"},{code:"TZ",name:"Tanzania, United Republic of"},{code:"TH",name:"Thailand"},{code:"TL",name:"Timor-Leste"},{code:"TG",name:"Togo"},{code:"TK",name:"Tokelau"},{code:"TO",name:"Tonga"},{code:"TT",name:"Trinidad and Tobago"},{code:"TN",name:"Tunisia"},{code:"TR",name:"Turkey"},{code:"TM",name:"Turkmenistan"},{code:"TC",name:"Turks and Caicos Islands"},{code:"TV",name:"Tuvalu"},{code:"UG",name:"Uganda"},{code:"UA",name:"Ukraine"},{code:"AE",name:"United Arab Emirates"},{code:"GB",name:"United Kingdom"},{code:"US",name:"United States",regions:[{code:"AK",name:"Alaska"},{code:"AL",name:"Alabama"},{code:"AR",name:"Arkansas"},{code:"AS",name:"American Samoa"},{code:"AZ",name:"Arizona"},{code:"CA",name:"California"},{code:"CO",name:"Colorado"},{code:"CT",name:"Connecticut"},{code:"DE",name:"Delaware"},{code:"FL",name:"Florida"},{code:"GA",name:"Georgia"},{code:"HI",name:"Hawaii"},{code:"IA",name:"Iowa"},{code:"ID",name:"Idaho"},{code:"IL",name:"Illinois"},{code:"IN",name:"Indiana"},{code:"KS",name:"Kansas"},{code:"KY",name:"Kentucky"},{code:"LA",name:"Louisiana"},{code:"MA",name:"Massachusetts"},{code:"MD",name:"Maryland"},{code:"ME",name:"Maine"},{code:"MI",name:"Michigan"},{code:"MN",name:"Minnesota"},{code:"MO",name:"Missouri"},{code:"MP",name:"Northern Mariana Islands"},{code:"MS",name:"Mississippi"},{code:"MT",name:"Montana"},{code:"NC",name:"North Carolina"},{code:"ND",name:"North Dakota"},{code:"NE",name:"Nebraska"},{code:"NH",name:"New Hampshire"},{code:"NJ",name:"New Jersey"},{code:"NM",name:"New Mexico"},{code:"NV",name:"Nevada"},{code:"NY",name:"New York"},{code:"OH",name:"Ohio"},{code:"OK",name:"Oklahoma"},{code:"OR",name:"Oregon"},{code:"PA",name:"Pennsylvania"},{code:"PR",name:"Puerto Rico"},{code:"RI",name:"Rhode Island"},{code:"SC",name:"South Carolina"},{code:"SD",name:"South Dakota"},{code:"TN",name:"Tennessee"},{code:"TX",name:"Texas"},{code:"UT",name:"Utah"},{code:"VA",name:"Virginia"},{code:"VI",name:"Virgin Islands"},{code:"VT",name:"Vermont"},{code:"WA",name:"Washington"},{code:"WI",name:"Wisconsin"},{code:"WV",name:"West Virginia"},{code:"WY",name:"Wyoming"}]},{code:"UM",name:"United States Minor Outlying Islands"},{code:"UY",name:"Uruguay"},{code:"UZ",name:"Uzbekistan"},{code:"VU",name:"Vanuatu"},{code:"VE",name:"Venezuela"},{code:"VN",name:"Viet Nam"},{code:"VG",name:"Virgin Islands, British"},{code:"VI",name:"Virgin Islands, U.s."},{code:"WF",name:"Wallis and Futuna"},{code:"EH",name:"Western Sahara"},{code:"YE",name:"Yemen"},{code:"ZM",name:"Zambia"},{code:"ZW",name:"Zimbabwe"}],M=new n.InjectionToken("fs-address-country.countries"),A=v,I=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{providers:[{provide:M,useValue:A}]}]}],e}(),S=new n.InjectionToken("fs-address-country.google-map-key"),w=function(){function e(e,n){this.apiKey=null,this.libraries=["places"],this.apiKey=e||n}return e.ctorParameters=function(){return[{type:void 0,decorators:[{type:n.Optional},{type:n.Inject,args:[S]}]},{type:void 0,decorators:[{type:n.Optional},{type:n.Inject,args:["GoogleMapKey"]}]}]},e}();var O={Canada:"CA",UnitedStates:"US"},P=function(){function e(){this.countries=[],this.disabled=!1,this.required=!1,this.regionChange=new n.EventEmitter,this.regions=[]}return Object.defineProperty(e.prototype,"country",{set:function(e){this._country=e,this.initRegions(),this.updateCountryRegionLabels()},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){this.initRegions(),this.updateCountryRegionLabels()},e.prototype.initRegions=function(){var e=this;if(this._country){var n=this.countries.find((function(n){return n.code===e._country}));n&&(this.regions=n.regions||[])}},e.prototype.updateCountryRegionLabels=function(){this.label?this.regionLabel=this.label:this.regionLabel=this._country===O.Canada?"Province":this._country===O.UnitedStates?"State":"Province/State"},e.prototype.changeRegion=function(){var e=this,n=this.countries.find((function(n){return n.code===e._country}));if(n&&n.regions){var t=n.regions.find((function(n){return n.code===e.region}));this.region=t.code}this.regionChange.emit(this.region)},e.decorators=[{type:n.Component,args:[{selector:"fs-address-region",template:'<mat-form-field>\n <mat-label>{{ regionLabel }}</mat-label>\n <mat-select\n matInput\n *ngIf="regions.length"\n [(ngModel)]="region"\n [disabled]="disabled"\n [fsFormRequired]="required"\n name="region"\n (selectionChange)="changeRegion()"\n autocomplete="off">\n\n <mat-option *ngFor="let region of regions" [value]="region.code">\n <span>{{ region.name }}</span>\n </mat-option>\n\n </mat-select>\n\n <input\n *ngIf="!regions.length"\n matInput\n [(ngModel)]="region"\n [disabled]="disabled"\n [fsFormRequired]="required"\n name="region"\n aria-label="Region"\n (change)="changeRegion()"\n autocomplete="off">\n</mat-form-field>\n',changeDetection:n.ChangeDetectionStrategy.OnPush,viewProviders:[{provide:a.ControlContainer,useExisting:a.NgForm}],styles:[""]}]}],e.ctorParameters=function(){return[]},e.propDecorators={region:[{type:n.Input}],countries:[{type:n.Input}],disabled:[{type:n.Input}],label:[{type:n.Input}],required:[{type:n.Input}],regionChange:[{type:n.Output}],country:[{type:n.Input,args:["country"]}]},e}();var F=function(){function e(){this.addressChange=new n.EventEmitter,this.collapseChange=new n.EventEmitter,this.config={},this.countries=v,this.isSearched=!1,this._destory$=new g.Subject}return Object.defineProperty(e.prototype,"setConfig",{set:function(e){e.search=void 0!==e.search&&e.search,p.isObject(e.map)||(e.map={showMap:!1}),this.config=e},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){var e=this;this.initAddress(),this.initConfig(),this.initMap(),this.initCountries(),this.initZipAndStateLabels(),this.initCollapseBtn(),this.agmMap&&this.agmMap.mapReady.pipe(h.takeUntil(this._destory$)).subscribe((function(){e.agmMap.triggerResize(),(e.address.name||e.address.country||e.address.region||e.address.city||e.address.zip)&&(e.address.lat=9999,e.address.lng=9999,e.change())}))},e.prototype.ngOnChanges=function(e){e.address&&(e.address.currentValue||(this.address={}),e.address.firstChange||(e.address.currentValue?e.address.currentValue.country:null)!==(e.address.previousValue?e.address.previousValue.country:null)&&this.initZipAndStateLabels())},e.prototype.ngOnDestroy=function(){this._destory$.next(),this._destory$.complete()},e.prototype.recenter=function(){var e=this;this.mapConfig.center={latitude:this.address.lat,longitude:this.address.lng},this.mapConfig.marker.coords.latitude=this.address.lat,this.mapConfig.marker.coords.longitude=this.address.lng,this.agmMap.triggerResize().then((function(){return e.agmMap._mapsWrapper.setCenter({lat:e.address.lat,lng:e.address.lng})}))},e.prototype.changeCountry=function(){var e=this,n=this.countries.find((function(n){return n.code===e.address.country}));n&&n.regions?n.regions.some((function(n){return n.code===e.address.region}))||(this.address.region=null):this.address.region=null;this.fsAddressRegionComponent.region=this.address.region,this.change()},e.prototype.change=function(e){var n=this;if(e&&e.stopPropagation(),!this.config.search)return this.addressChange.emit(this.address);var t=new google.maps.Geocoder,o=[this.address.country,this.address.region,this.address.city,this.address.zip,this.address.street,this.address.name];this.searchedAddress=o.filter((function(e){return e})).join(", "),this.addressChange.emit(this.address),t.geocode({address:this.searchedAddress},(function(e,t){n.isSearched=!0;var o=Object.assign({},n.address);if(t==google.maps.GeocoderStatus.OK&&e.length>0){var a=e[0].geometry.location;o.description=e[0].formatted_address,o.lat=a.lat(),o.lng=a.lng(),n.mapConfig.center={latitude:a.lat(),longitude:a.lng()},n.mapConfig.marker.coords.latitude=a.lat(),n.mapConfig.marker.coords.longitude=a.lng(),n.agmMap&&n.agmMap.triggerResize()}else o.lat=null,o.lng=null;n.addressChange.emit(o)}))},e.prototype.initAddress=function(){this.address=Object.assign({name:void 0,country:void 0,region:void 0,address2:void 0,street:void 0,city:void 0,zip:void 0,lat:null,lng:null},this.address)},e.prototype.initConfig=function(){this.config=Object.assign({name:{required:!1,visible:!0},country:{required:!1,visible:!0},region:{required:!1,visible:!0},address2:{required:!1,visible:!1},city:{required:!1,visible:!0},street:{required:!1,visible:!0},zip:{required:!1,visible:!0}},this.config)},e.prototype.initMap=function(){var e=this;this.mapConfig=Object.assign({center:{latitude:this.address.lat||9999,longitude:this.address.lng||9999},zoom:13,scrollwheel:!1,streetViewControl:!1,zoomControl:!1,mapTypeControlOptions:{mapTypeIds:[]},marker:{id:0,coords:{latitude:this.address.lat,longitude:this.address.lng},options:{draggable:!0},events:{dragend:function(n){e.address.lat=n.coords.lat,e.address.lng=n.coords.lng,e.addressChange.emit(e.address)}}}},this.config.map)},e.prototype.initCountries=function(){var e=this;this.config.country&&this.config.country.list&&this.config.country.list.length&&(this.countries.length=0,this.config.country.list.forEach((function(n){var t=e.countries.find((function(e){return e.code===n}));t&&e.countries.push(t)})));Object.keys(this.address).forEach((function(n){e.address[n]&&!1}))},e.prototype.initZipAndStateLabels=function(){this.updateCountryRegionLabels()},e.prototype.updateCountryRegionLabels=function(){this.zipLabel=this.address.country===O.UnitedStates?"Zip":"Postal Code"},e.prototype.initCollapseBtn=function(){this.config.collapseButton=Object.assign({show:!0,title:"Collapse Address Editor",color:"primary",theme:"mat-raised-button"},this.config.collapseButton)},e.decorators=[{type:n.Component,args:[{selector:"fs-address",template:'<mat-form-field\n *ngIf="config.name.visible!==false"\n class="name">\n <input\n matInput\n autocomplete="nope"\n [(ngModel)]="address.name"\n [disabled]="config.name.disabled"\n [fsFormRequired]="config.name.required"\n name="location_name"\n placeholder="Location name"\n (change)="change($event)"\n autocomplete="off">\n</mat-form-field>\n\n<mat-form-field\n *ngIf="config.street.visible!==false"\n class="street">\n <input\n matInput\n autocomplete="nope"\n [(ngModel)]="address.street"\n [disabled]="config.street.disabled"\n [fsFormRequired]="config.street.required"\n name="street"\n placeholder="Street"\n (change)="change($event)"\n autocomplete="off">\n</mat-form-field>\n\n<mat-form-field\n *ngIf="config.address2.visible"\n class="address2">\n <input\n matInput\n autocomplete="nope"\n [(ngModel)]="address.address2"\n [disabled]="config.address2.disabled"\n [fsFormRequired]="config.address2.required"\n name="address2"\n placeholder="Apartment, Suite, Unit, Etc."\n (change)="change($event)"\n autocomplete="off">\n</mat-form-field>\n\n<div class="city-region-zip-country">\n <div class="city">\n <mat-form-field *ngIf="config.city.visible!==false">\n <input\n matInput\n autocomplete="nope"\n [(ngModel)]="address.city"\n [disabled]="config.city.disabled"\n [fsFormRequired]="config.city.required"\n name="city"\n placeholder="City"\n (change)="change($event)"\n autocomplete="off">\n </mat-form-field>\n </div>\n <div class="region">\n <fs-address-region\n *ngIf="config.region.visible!==false"\n [(region)]="address.region"\n (regionChange)="change()"\n [country]="address.country"\n [countries]="countries"\n [disabled]="config.region.disabled"\n [required]="config.region.required">\n </fs-address-region>\n </div>\n\n <div class="zip">\n <mat-form-field\n *ngIf="config.zip.visible!==false">\n <mat-label>{{ zipLabel }}</mat-label>\n <input\n matInput\n autocomplete="nope"\n [(ngModel)]="address.zip"\n [disabled]="config.zip.disabled"\n [fsFormRequired]="config.zip.required"\n name="zip"\n (change)="change($event)"\n autocomplete="off">\n </mat-form-field>\n </div>\n\n <div class="country">\n <fs-address-country\n *ngIf="config.country.visible!==false"\n [disabled]="config.country.disabled"\n [required]="config.country.required"\n [(ngModel)]="address.country"\n (selectionChange)="changeCountry()"\n name="address-country">\n </fs-address-country>\n </div>\n</div>\n\n<div class="map-container" *ngIf="mapConfig.showMap">\n\n <agm-map\n [ngStyle.xs]="{\'height\': \'300px\'}"\n [latitude]="mapConfig.center.latitude"\n [longitude]="mapConfig.center.longitude"\n [zoom]="mapConfig.zoom"\n [scrollwheel]="mapConfig.scrollwheel"\n [streetViewControl]="mapConfig.streetViewControl"\n [zoomControl]="mapConfig.zoomControl"\n [mapTypeControlOptions]="mapConfig.mapTypeControlOptions">\n <agm-marker\n [latitude]="mapConfig.marker.coords.latitude"\n [longitude]="mapConfig.marker.coords.longitude"\n [markerDraggable]="mapConfig.marker.options.draggable"\n (dragEnd)="mapConfig.marker.events.dragend($event)">\n </agm-marker>\n </agm-map>\n\n <div class="address-incomplete" *ngIf="!address.lat && !address.lng">\n <div *ngIf="!isSearched">Please populate the address above to locate it on the map</div>\n <div *ngIf="isSearched">Could not find address "{{ searchedAddress }}"</div>\n </div>\n</div>',viewProviders:[{provide:a.ControlContainer,useExisting:a.NgForm}],changeDetection:n.ChangeDetectionStrategy.OnPush,styles:["agm-map{width:100%;height:400px;background-color:grey}.map-container{position:relative}.map-container .address-incomplete{position:absolute;top:0;bottom:0;left:0;background:#fff;border:1px solid #efefef;opacity:.87;font-size:larger;padding:40px;align-items:center;display:flex;right:0;flex-direction:column;justify-content:center;text-align:center}.map-container .center{position:absolute;right:5px;top:5px;z-index:5;background-color:#fff}.address2,.name,.street{width:100%;display:block}.city-region-zip-country{display:flex;flex-wrap:wrap}.city-region-zip-country .city,.city-region-zip-country .country,.city-region-zip-country .region,.city-region-zip-country .zip{flex:1 0 50%}.city-region-zip-country .city>*,.city-region-zip-country .country>*,.city-region-zip-country .region>*,.city-region-zip-country .zip>*{padding-right:5px;box-sizing:border-box;display:block}.city-region-zip-country:last-child>*{margin-right:0}.city-region-zip-country ::ng-deep .mat-form-field{width:100%}"]}]}],e.propDecorators={agmMap:[{type:n.ViewChild,args:[i.AgmMap,{static:!1}]}],agmMarker:[{type:n.ViewChild,args:[i.AgmMarker,{static:!1}]}],fsAddressRegionComponent:[{type:n.ViewChild,args:[P,{static:!1}]}],address:[{type:n.Input}],addressChange:[{type:n.Output}],collapseChange:[{type:n.Output}],setConfig:[{type:n.Input,args:["config"]}]},e}();var _={OneLine:"oneline",TwoLine:"twoline",Summary:"summary"},N=function(){function e(){this._address={},this.disabled=!1,this.lines=[],this.empty=!1,this._name=!0}return Object.defineProperty(e.prototype,"address",{get:function(){return this._address},set:function(e){this._address=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"name",{get:function(){return this._name},set:function(e){this._name="true"===e||"boolean"==typeof e&&e},enumerable:!0,configurable:!0}),e.prototype.ngOnChanges=function(e){e.address&&e.address.previousValue&&this._updateView()},e.prototype.ngOnInit=function(){this._updateView()},e.prototype._updateView=function(){this.format===_.Summary?this.summaryFormat():this.lineFormat()},e.prototype.lineFormat=function(){var e=this,n=[];this.lines=[],this.address&&p.each(["name","street","address2","city","region","zip","country"],(function(t){e.address[t]&&n.push(e.address[t])})),this.includeFirst&&(n=n.slice(0,this.includeFirst)),this.empty=!n.length,this.empty||(this.lines=[n],this.format===_.TwoLine&&(this.lines=[[n.shift()]],this.lines.push(n)))},e.prototype.summaryFormat=function(){var e=["name","street","address2","city","region","country"],n=[];if(this.lines=[],this.address)for(var t=0;t<e.length;t++){var o=e[t],a=this.address[o];if("name"===o&&this.name&&a){n.push(a);break}if(a&&"name"!==o){n.push(a);var i=this.address[e[t+1]];i&&n.push(i);break}}this.empty=!n.length,this.empty||(this.lines=[n])},e.decorators=[{type:n.Component,args:[{selector:"fs-address-format",template:'<span *ngIf="!empty" [ngClass]="format" [class.disabled]="disabled">\n <span *ngFor="let parts of lines; let index = index" class="line-{{index + 1}}">\n <span *ngFor="let part of parts;" class="part">{{part}}</span>\n </span>\n</span>\n\n\n',changeDetection:n.ChangeDetectionStrategy.OnPush,styles:['.twoline .line-1{display:block}.twoline .line-2{font-size:smaller}.part+.part:before{content:", "}.part:last-child:after{content:""}.disabled{color:rgba(0,0,0,.38)}']}]}],e.ctorParameters=function(){return[]},e.propDecorators={address:[{type:n.Input}],format:[{type:n.Input}],includeFirst:[{type:n.Input}],disabled:[{type:n.Input}],name:[{type:n.Input,args:["name"]}]},e}();var R=function(){function e(e,t,o,a){var i=this;this._mapsAPILoader=e,this._ngZone=t,this._ngForm=o,this._cdRef=a,this.format=_.TwoLine,this.disabled=!1,this.readonly=!1,this.name=!0,this.cleared=new n.EventEmitter,this.edited=new n.EventEmitter,this.address={},this.addressChange=new n.EventEmitter,this.searchFormField=null,this.showClear=!1,this.predictions=[],this.selecting=!1,this.googleAutocompleteService=null,this.googlePlacesService=null,this.location="",this.required=!1,this.emptyAddress=!0,this.editable=!0,this.autocompleteName="search-"+b.guid("xxxxxxxx"),this._changeAddressDebounce$=new g.Subject,this._destroy$=new g.Subject,this._config={},this.autocompleteFormat=function(e){return e?e.description:i.emptyAddress?void 0:" "}.bind(this),this.functionPromise=function(){return!0===i.selecting||new Promise((function(e,n){var t=[];if(["name","street","city","region","zip","country"].forEach((function(e){i.config[e]&&i.config[e].required&&!i.address[e]&&t.push([e])})),!(i.config.lat&&i.config.lat.required||i.config.lng&&i.config.lng.required)||i.address.lat&&i.address.lat||t.push("position on map"),t.length)if(1===t.length)n("The "+t[0]+" is required");else{var o=t.pop();n("The "+t.join(", ")+" and "+o+" are required")}else e()}))},this._changeAddressDebounce$.pipe(h.debounceTime(200),h.takeUntil(this._destroy$)).subscribe((function(e){i.updatePredictions(e)}))}return Object.defineProperty(e.prototype,"config",{get:function(){return this._config},set:function(e){this._config=e,this._config&&(this.required=this.config.name&&this.config.name.required||this.config.country&&this.config.country.required||this.config.region&&this.config.region.required||this.config.city&&this.config.city.required||this.config.street&&this.config.street.required||this.config.address2&&this.config.address2.required||this.config.zip&&this.config.zip.required)},enumerable:!0,configurable:!0}),e.prototype.revalidate=function(){var e=this._ngForm.controls[this.autocompleteName];e.updateValueAndValidity(),e.markAsDirty(),e.markAsTouched()},e.prototype.ngOnChanges=function(e){e.address&&(this.calculateAddress(),this.showClear=!this.emptyAddress),this.editable=!this.disabled&&!this.readonly},e.prototype.ngOnInit=function(){this.calculateAddress(),this.initGoogleMap()},e.prototype.ngOnDestroy=function(){this._destroy$.next(),this._destroy$.complete()},e.prototype.calculateAddress=function(){this.emptyAddress=!(this.address&&(this.address.name||this.address.street||this.address.city||this.address.region||this.address.zip||this.address.country))},e.prototype.initGoogleMap=function(){var e=this;this._ngZone.runOutsideAngular((function(){e._mapsAPILoader.load().then((function(){e.googleAutocompleteService=new google.maps.places.AutocompleteService,e.googlePlacesService=new google.maps.places.PlacesService(e.searchElement.nativeElement)}))}))},e.prototype.updatePredictions=function(e){var n=this;e&&this.googleAutocompleteService&&this.googleAutocompleteService.getPlacePredictions({input:e},(function(t,o){n._ngZone.run((function(){n.predictions.length=0,o!=google.maps.places.PlacesServiceStatus.OK&&o!=google.maps.places.PlacesServiceStatus.ZERO_RESULTS||(n.predictions=t?t.slice():[],n.predictions.push({description:'Just use "'+e+'"',id:1,name:e}),n._cdRef.detectChanges())}))}))},e.prototype.addressChanged=function(e){e.keyCode!==y.ENTER&&(this._changeAddressDebounce$.next(e.currentTarget.value),this.autoComplete.openPanel())},e.prototype.autocompleteSelected=function(e){var n=this,t=e.value,o=this._createAddress();this.emptyAddress=!0,new Promise((function(e){t&&n.googlePlacesService||e(),t&&!t.place_id&&(n.addressChange.emit(t),e()),o.description=t.description,n.googlePlacesService.getDetails(t,(function(t,a){n._ngZone.run((function(){if(a!=google.maps.places.PlacesServiceStatus.OK)return e();var i,r,s;o.lat=t.geometry.location.lat(),o.lng=t.geometry.location.lng(),t.address_components.forEach((function(e){e.types.some((function(e){return"country"===e}))&&(o.country=e.short_name,i=e.long_name),e.types.some((function(e){return"administrative_area_level_1"===e}))&&(o.region=e.short_name,r=e.long_name),e.types.some((function(e){return"locality"===e}))&&(o.city=e.long_name),e.types.some((function(e){return"postal_code"===e}))&&(o.zip=e.long_name)}));var d=t.address_components.find((function(e){return e.types.some((function(e){return"street_number"===e}))}));if(d)o.street=d.long_name+" ",s=d.long_name+" ";else{var c=o.description.match(/^[\d-]+/);c&&(o.street=c[0]+" ",s=c[0]+" ")}var l=t.address_components.find((function(e){return e.types.some((function(e){return"route"===e}))}));l&&(o.street?(o.street+=l.long_name,s+=l.short_name):(o.street=l.long_name,s=l.short_name)),o.country!==t.name&&i!==t.name&&o.region!==t.name&&r!==t.name&&o.city!==t.name&&s!==t.name&&o.zip!==t.name&&o.street!==t.name?n.config.name&&!1!==n.config.name.visible&&(o.name=t.name):o.name="",e(o),n.addressChange.emit(o)}))}))})).then((function(){n.selecting=!1,n.address=o,n._cdRef.detectChanges(),n.revalidate()}),(function(){}))},e.prototype.focus=function(){this.selecting=!0},e.prototype.clear=function(){this.showClear=!1,this.location=null,this.address=this._createAddress(),this.inputAddress="",this.cleared.emit(this._createAddress()),this.addressChange.emit(this._createAddress())},e.prototype.edit=function(){this.editable&&this.edited.emit()},e.prototype._createAddress=function(){return{name:"",description:"",country:"",region:"",city:"",street:"",zip:"",lat:null,lng:null}},e.decorators=[{type:n.Component,args:[{selector:"fs-address-search",template:'<mat-form-field\n #searchFormField\n [floatLabel]="emptyAddress ? \'auto\' : \'always\'">\n <input\n matInput\n autocomplete="off"\n [placeholder]="config.label || \'Location\'"\n [(ngModel)]="inputAddress"\n [ngClass]="{ hide: !emptyAddress }"\n [fsFormFunction]="functionPromise"\n [matAutocomplete]="autocomplete"\n [ngModelOptions]="{ updateOn: \'blur\' }"\n [disabled]="disabled"\n (focus)="focus()"\n (keyup)="addressChanged($event)"\n [name]="autocompleteName"\n #searchInput>\n\n <fs-address-format\n [(address)]="address"\n [format]="format"\n [name]="name"\n (click)="edit()"\n [ngClass]="{ editable: editable }"\n [disabled]="disabled">\n </fs-address-format>\n\n <mat-autocomplete\n (optionSelected)="autocompleteSelected($event.option)"\n [displayWith]="autocompleteFormat"\n autoActiveFirstOption\n #autocomplete="matAutocomplete">\n <mat-option *ngFor="let option of predictions" [value]="option">\n {{ option.description }}\n </mat-option>\n </mat-autocomplete>\n\n <mat-icon\n class="control"\n matSuffix\n *ngIf="showClear && !emptyAddress && !disabled && !readonly"\n (click)="clear()">clear\n </mat-icon>\n\n</mat-form-field>\n',viewProviders:[{provide:a.ControlContainer,useExisting:a.NgForm}],changeDetection:n.ChangeDetectionStrategy.OnPush,styles:["mat-form-field{width:100%}.control{cursor:pointer}.hide{visibility:hidden;position:absolute}textarea{height:16px;resize:none;overflow:hidden}fs-address-format{display:block}fs-address-format.editable{cursor:pointer}"]}]}],e.ctorParameters=function(){return[{type:i.MapsAPILoader},{type:n.NgZone},{type:a.NgForm},{type:n.ChangeDetectorRef}]},e.propDecorators={format:[{type:n.Input}],disabled:[{type:n.Input}],readonly:[{type:n.Input}],config:[{type:n.Input}],name:[{type:n.Input}],cleared:[{type:n.Output}],edited:[{type:n.Output}],address:[{type:n.Input}],addressChange:[{type:n.Output}],searchFormField:[{type:n.ViewChild,args:["searchFormField",{static:!0}]}],searchElement:[{type:n.ViewChild,args:["searchInput",{static:!0}]}],trigger:[{type:n.ViewChild,args:[r.MatAutocompleteTrigger,{static:!0}]}],autoComplete:[{type:n.ViewChild,args:["searchInput",{read:r.MatAutocompleteTrigger,static:!0}]}]},e}();var T=function(){function e(e,n){var t=this;this._dialogRef=e,this._data=n,this.submit=function(){t._dialogRef.close(t.address)},this.address=n.address,this.config=n.config}return e.prototype.addressChange=function(e){this.address=e},e.prototype.recenter=function(){this.addressComponent.recenter()},e.decorators=[{type:n.Component,args:[{template:'<form fsForm [submit]="submit">\n <fs-dialog>\n <div mat-dialog-content>\n <fs-address\n [(address)]="address"\n [config]="config"\n (addressChange)="addressChange($event)">\n </fs-address>\n </div>\n <div mat-dialog-actions>\n <button mat-button type="submit" color="primary">Apply</button>\n <button\n mat-button\n type="button"\n *ngIf="config.map.showMap && address.lat && address.lng"\n (click)="recenter()">\n Center Address\n </button>\n <button mat-button type="button" [mat-dialog-close]="null">Cancel</button>\n </div>\n </fs-dialog>\n</form>\n',changeDetection:n.ChangeDetectionStrategy.OnPush,styles:[""]}]}],e.ctorParameters=function(){return[{type:C.MatDialogRef},{type:void 0,decorators:[{type:n.Inject,args:[C.MAT_DIALOG_DATA]}]}]},e.propDecorators={addressComponent:[{type:n.ViewChild,args:[F,{static:!1}]}]},e}();var E=function(){function e(e,t){this._dialog=e,this._ngForm=t,this.addressChange=new n.EventEmitter,this.view="search",this.config={},this._name=!0,this._destroy$=new g.Subject}return Object.defineProperty(e.prototype,"setConfig",{set:function(e){e.format||(e.format=_.TwoLine),e.search=!0,p.isObject(e.map)||(e.map={showMap:!1}),this.config=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"setFormat",{set:function(e){this.config.format=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"setDisabled",{set:function(e){this.config.disabled=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"setReadonly",{set:function(e){this.config.readonly=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"name",{get:function(){return this._name},set:function(e){this._name="true"===e||"boolean"==typeof e&&e},enumerable:!0,configurable:!0}),e.prototype.open=function(){var e=this;this._dialog.open(T,{width:"700px",data:{address:this.address,config:this.config}}).afterClosed().pipe(h.takeUntil(this._destroy$)).subscribe((function(n){n&&(e.address=n,e.addressChange.emit(e.address),setTimeout((function(){e.search.revalidate()})))}))},e.prototype.searchEdited=function(){this.open()},e.prototype.ngOnDestroy=function(){this._destroy$.next(),this._destroy$.complete()},e.decorators=[{type:n.Component,args:[{selector:"fs-address-picker",template:'<div class="address-picker-container">\n\n <div class="search">\n <fs-address-search\n [(address)]="address"\n [config]="config"\n [format]="config.format"\n [disabled]="config.disabled"\n [readonly]="config.readonly"\n [name]="name"\n (edited)="searchEdited()"\n (addressChange)="addressChange.emit($event)">\n </fs-address-search>\n </div>\n\n</div>\n',changeDetection:n.ChangeDetectionStrategy.OnPush,styles:[".address-picker-container{position:relative}.input-controls{position:absolute;top:0;right:0}:host ::ng-deep .search .mat-form-field-flex{flex-direction:row}:host ::ng-deep .search .mat-form-field-suffix{align-self:flex-end;padding-bottom:4px}:host ::ng-deep .hide-underline .mat-form-field-underline{display:none}:host ::ng-deep .hide-underline .mat-form-field-subscript-wrapper{margin-top:0}.map-buttons{margin-top:5px}.map-buttons button{width:100%}"]}]}],e.ctorParameters=function(){return[{type:C.MatDialog},{type:a.NgForm}]},e.propDecorators={setConfig:[{type:n.Input,args:["config"]}],setFormat:[{type:n.Input,args:["format"]}],setDisabled:[{type:n.Input,args:["disabled"]}],setReadonly:[{type:n.Input,args:["readonly"]}],address:[{type:n.Input}],addressChange:[{type:n.Output}],name:[{type:n.Input,args:["name"]}],search:[{type:n.ViewChild,args:[R,{static:!1}]}],editable:[{type:n.ViewChild,args:[F,{static:!1}]}]},e}();var z=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,a.FormsModule,m.FsFormModule,c.MatInputModule,l.MatSelectModule,I],declarations:[P],exports:[P]}]}],e}(),k=function(){function e(){this.disabled=!1,this.required=!1,this.countries=v,this.selectionChange=new n.EventEmitter,this.onChange=function(e){},this.onTouched=function(){}}return e.prototype.writeValue=function(e){this.country=e},e.prototype.changed=function(e){this.onChange(e),this.selectionChange.emit(e)},e.prototype.registerOnChange=function(e){this.onChange=e},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.decorators=[{type:n.Component,args:[{selector:"fs-address-country",template:'<mat-form-field>\n <mat-select\n [(ngModel)]="country"\n [disabled]="disabled"\n [fsFormRequired]="required"\n (ngModelChange)="changed($event)"\n name="country"\n placeholder="Country"\n autocomplete="country">\n <mat-option *ngFor="let country of countries" [value]="country.code">\n <span>{{ country.name }}</span>\n </mat-option>\n </mat-select>\n</mat-form-field>',providers:[{provide:a.NG_VALUE_ACCESSOR,multi:!0,useExisting:n.forwardRef((function(){return e}))}],changeDetection:n.ChangeDetectionStrategy.OnPush,viewProviders:[{provide:a.ControlContainer,useExisting:a.NgForm}],styles:[""]}]}],e.propDecorators={disabled:[{type:n.Input}],required:[{type:n.Input}],countries:[{type:n.Input}],selectionChange:[{type:n.Output}]},e}();var q=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,a.FormsModule,m.FsFormModule,l.MatSelectModule,I],declarations:[k],exports:[k]}]}],e}(),x=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,a.FormsModule,m.FsFormModule,r.MatAutocompleteModule,s.MatButtonModule,d.MatIconModule,c.MatInputModule,l.MatSelectModule,C.MatDialogModule,o.FlexLayoutModule,I,u.FsDialogModule,i.AgmCoreModule.forRoot(),z,q],exports:[i.AgmCoreModule,F,N,E,R],declarations:[F,N,E,R,T],entryComponents:[T],providers:[i.GoogleMapsAPIWrapper,i.MarkerManager,{provide:i.LAZY_MAPS_API_CONFIG,useClass:w}]}]}],e}(),D=function(){function e(){this.orientationVertical=!0,this.orientationHorizontal=!1,this.orientationHorizontalStretch=!1,this.config={},this.country="",this.region="",this.countryChange=new n.EventEmitter,this.regionChange=new n.EventEmitter,this.countries=v}return Object.defineProperty(e.prototype,"setOrientation",{set:function(e){this.orientationVertical="vertical"===e,this.orientationHorizontal="horizontal"===e,this.orientationHorizontalStretch="horizontal-stretch"===e},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){this.initConfig()},e.prototype.changeCountry=function(){this.countryChange.emit(this.country)},e.prototype.changeRegion=function(){this.regionChange.emit(this.region)},e.prototype.initConfig=function(){var e=this;this.config=Object.assign({country:{required:!1},region:{required:!1}},this.config),this.config.country.list&&(this.countries=v.filter((function(n){return e.config.country.list.indexOf(n.code)>=0})))},e.decorators=[{type:n.Component,args:[{selector:"fs-address-region-country",template:'<div fxLayout="column" class="region-country">\n <div class="country">\n <fs-address-country\n *ngIf="config.country.visible!==false"\n [disabled]="config.country.disabled"\n [required]="config.country.required"\n [countries]="countries"\n [(ngModel)]="country"\n (selectionChange)="changeCountry()"\n name="country">\n </fs-address-country>\n </div>\n <div class="region">\n <fs-address-region\n [(region)]="region"\n (regionChange)="changeRegion()"\n [country]="country"\n [countries]="countries"\n [disabled]="config.region.disabled"\n [required]="config.region.required"\n name="region">\n </fs-address-region>\n </div>\n</div>',changeDetection:n.ChangeDetectionStrategy.OnPush,styles:[".region-country{display:flex;flex-direction:column}:host.horizontal .region-country{flex-direction:row}:host.horizontal ::ng-deep .region{padding-left:10px}:host.horizontal ::ng-deep fs-address-region .mat-form-field{width:100%}:host.vertical ::ng-deep fs-address-country .mat-form-field,:host.vertical ::ng-deep fs-address-region .mat-form-field{width:100%}:host.horizontal-stretch .region-country{display:-ms-grid;display:grid;-ms-grid-columns:1fr 1fr;grid-template-columns:1fr 1fr;grid-gap:10px}:host.horizontal-stretch ::ng-deep fs-address-region .mat-form-field{width:100%}:host.horizontal-stretch ::ng-deep .country .mat-form-field{width:100%}"]}]}],e.propDecorators={orientationVertical:[{type:n.HostBinding,args:["class.vertical"]}],orientationHorizontal:[{type:n.HostBinding,args:["class.horizontal"]}],orientationHorizontalStretch:[{type:n.HostBinding,args:["class.horizontal-stretch"]}],config:[{type:n.Input}],country:[{type:n.Input}],region:[{type:n.Input}],setOrientation:[{type:n.Input,args:["orientation"]}],countryChange:[{type:n.Output}],regionChange:[{type:n.Output}]},e}();var L=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,a.FormsModule,m.FsFormModule,c.MatInputModule,l.MatSelectModule,I,z,q],declarations:[D],exports:[D]}]}],e}();e.AddressFormat=_,e.COUNTRIES=M,e.Countries=v,e.Country=O,e.FsAddressComponent=F,e.FsAddressCountriesModule=I,e.FsAddressCountryModule=q,e.FsAddressFormatComponent=N,e.FsAddressModule=x,e.FsAddressPickerComponent=E,e.FsAddressRegionCountryModule=L,e.FsAddressRegionModule=z,e.FsAddressSearchComponent=R,e.GOOGLE_MAP_KEY=S,e.ɵa=P,e.ɵb=k,e.ɵc=T,e.ɵd=w,e.ɵe=D,Object.defineProperty(e,"__esModule",{value:!0})})); | ||
//# sourceMappingURL=firestitch-address.umd.min.js.map |
@@ -148,2 +148,4 @@ /** | ||
control.updateValueAndValidity(); | ||
control.markAsDirty(); | ||
control.markAsTouched(); | ||
} | ||
@@ -568,2 +570,2 @@ /** | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvYWRkcmVzcy8iLCJzb3VyY2VzIjpbImFwcC9jb21wb25lbnRzL2FkZHJlc3Mtc2VhcmNoL2FkZHJlc3Mtc2VhcmNoLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUlOLE1BQU0sRUFDTixTQUFTLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQ3RELE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUkxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFZaEUsTUFBTSxPQUFPLHdCQUF3Qjs7Ozs7OztJQW1EbkMsWUFDVSxjQUE2QixFQUM3QixPQUFlLEVBQ2YsT0FBZSxFQUNmLE1BQXlCO1FBSHpCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsV0FBTSxHQUFOLE1BQU0s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bEQsU0FBUyxTQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOzs7O0lBL0J4RSwwQ0FBd0M7O0lBQ3hDLDRDQUEwQjs7SUFDMUIsNENBQTBCOztJQW9CMUIsd0NBQXFCOztJQUNyQiwyQ0FBK0Q7O0lBQy9ELDBDQUE4RDs7SUFDOUQsMkNBQWlDOztJQUNqQyxpREFBNkM7O0lBRTdDLG1EQUE0Rjs7SUFDNUYsaURBQXNFOztJQUN0RSwyQ0FBcUY7O0lBQ3JGLGdEQUErRzs7SUFFL0csZ0RBQW9COztJQUNwQiw2Q0FBeUI7O0lBQ3pCLCtDQUErQjs7SUFDL0IsNkNBQXlCOztJQUN6Qiw2REFBd0M7O0lBQ3hDLHVEQUFrQzs7SUFDbEMsNENBQXFCOztJQUNyQiw0Q0FBd0I7O0lBQ3hCLGdEQUEyQjs7SUFDM0IsNENBQXVCOztJQUN2QixvREFBdUQ7Ozs7O0lBRXZELDJEQUFxRDs7Ozs7SUFDckQsNkNBQXdDOzs7OztJQUN4QywyQ0FBdUM7O0lBMkR2QyxzREFRYzs7SUFtSmQsbURBa0NFOzs7OztJQXJQQSxrREFBcUM7Ozs7O0lBQ3JDLDJDQUF1Qjs7Ozs7SUFDdkIsMkNBQXVCOzs7OztJQUN2QiwwQ0FBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTmdGb3JtLCBDb250cm9sQ29udGFpbmVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5cbmltcG9ydCB7IE1hcHNBUElMb2FkZXIgfSBmcm9tICdAYWdtL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGd1aWQgfSBmcm9tICdAZmlyZXN0aXRjaC9jb21tb24nO1xuXG5pbXBvcnQgeyBGc0FkZHJlc3MgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2FkZHJlc3MuaW50ZXJmYWNlJztcbmltcG9ydCB7IElGc0FkZHJlc3NDb25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2FkZHJlc3MtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBZGRyZXNzRm9ybWF0IH0gZnJvbSAnLi4vLi4vZW51bXMvYWRkcmVzcy1mb3JtYXQuZW51bSc7XG5cbmRlY2xhcmUgdmFyIGdvb2dsZTogYW55O1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWFkZHJlc3Mtc2VhcmNoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZHJlc3Mtc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWRkcmVzcy1zZWFyY2guY29tcG9uZW50LnNjc3MnXSxcbiAgdmlld1Byb3ZpZGVyczogWyB7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBOZ0Zvcm0gfSBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRnNBZGRyZXNzU2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgZm9ybWF0ID0gQWRkcmVzc0Zvcm1hdC5Ud29MaW5lO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyAgc2V0IGNvbmZpZyh2YWx1ZTogSUZzQWRkcmVzc0NvbmZpZykge1xuICAgIHRoaXMuX2NvbmZpZyA9IHZhbHVlO1xuICAgIGlmICh0aGlzLl9jb25maWcpIHtcbiAgICAgIHRoaXMucmVxdWlyZWQgPVxuICAgICAgKCAodGhpcy5jb25maWcubmFtZSAmJiB0aGlzLmNvbmZpZy5uYW1lLnJlcXVpcmVkKSB8fFxuICAgICAgICAodGhpcy5jb25maWcuY291bnRyeSAmJiB0aGlzLmNvbmZpZy5jb3VudHJ5LnJlcXVpcmVkKSB8fFxuICAgICAgICAodGhpcy5jb25maWcucmVnaW9uICYmIHRoaXMuY29uZmlnLnJlZ2lvbi5yZXF1aXJlZCkgfHxcbiAgICAgICAgKHRoaXMuY29uZmlnLmNpdHkgJiYgdGhpcy5jb25maWcuY2l0eS5yZXF1aXJlZCkgfHxcbiAgICAgICAgKHRoaXMuY29uZmlnLnN0cmVldCAmJiB0aGlzLmNvbmZpZy5zdHJlZXQucmVxdWlyZWQpIHx8XG4gICAgICAgICh0aGlzLmNvbmZpZy5hZGRyZXNzMiAmJiB0aGlzLmNvbmZpZy5hZGRyZXNzMi5yZXF1aXJlZCkgfHxcbiAgICAgICAgKHRoaXMuY29uZmlnLnppcCAmJiB0aGlzLmNvbmZpZy56aXAucmVxdWlyZWQpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbmZpZygpOiBJRnNBZGRyZXNzQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnO1xuICB9XG5cbiAgQElucHV0KCkgbmFtZSA9IHRydWU7XG4gIEBPdXRwdXQoKSBjbGVhcmVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZWRpdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBhZGRyZXNzOiBGc0FkZHJlc3MgPSB7fTtcbiAgQE91dHB1dCgpIGFkZHJlc3NDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoRm9ybUZpZWxkJywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIHNlYXJjaEZvcm1GaWVsZDogTWF0Rm9ybUZpZWxkID0gbnVsbDtcbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBzZWFyY2hFbGVtZW50OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsIHsgc3RhdGljOiB0cnVlIH0pIHRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXI7XG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0JywgeyByZWFkOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyLCBzdGF0aWM6IHRydWUgfSkgYXV0b0NvbXBsZXRlOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyO1xuXG4gIHB1YmxpYyBpbnB1dEFkZHJlc3M7XG4gIHB1YmxpYyBzaG93Q2xlYXIgPSBmYWxzZTtcbiAgcHVibGljIHByZWRpY3Rpb25zOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgc2VsZWN0aW5nID0gZmFsc2U7XG4gIHB1YmxpYyBnb29nbGVBdXRvY29tcGxldGVTZXJ2aWNlID0gbnVsbDtcbiAgcHVibGljIGdvb2dsZVBsYWNlc1NlcnZpY2UgPSBudWxsO1xuICBwdWJsaWMgbG9jYXRpb24gPSAnJztcbiAgcHVibGljIHJlcXVpcmVkID0gZmFsc2U7XG4gIHB1YmxpYyBlbXB0eUFkZHJlc3MgPSB0cnVlO1xuICBwdWJsaWMgZWRpdGFibGUgPSB0cnVlO1xuICBwdWJsaWMgYXV0b2NvbXBsZXRlTmFtZSA9IGBzZWFyY2gtJHtndWlkKCd4eHh4eHh4eCcpfWA7XG5cbiAgcHJpdmF0ZSBfY2hhbmdlQWRkcmVzc0RlYm91bmNlJCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9jb25maWc6IElGc0FkZHJlc3NDb25maWcgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9tYXBzQVBJTG9hZGVyOiBNYXBzQVBJTG9hZGVyLFxuICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgX25nRm9ybTogTmdGb3JtLFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7XG4gICAgdGhpcy5fY2hhbmdlQWRkcmVzc0RlYm91bmNlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlUHJlZGljdGlvbnModmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmV2YWxpZGF0ZSgpIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5fbmdGb3JtLmNvbnRyb2xzW3RoaXMuYXV0b2NvbXBsZXRlTmFtZV07XG4gICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmFkZHJlc3MpIHtcbiAgICAgIHRoaXMuY2FsY3VsYXRlQWRkcmVzcygpO1xuICAgICAgdGhpcy5zaG93Q2xlYXIgPSAhdGhpcy5lbXB0eUFkZHJlc3M7XG4gICAgfVxuXG4gICAgdGhpcy5lZGl0YWJsZSA9ICF0aGlzLmRpc2FibGVkICYmICF0aGlzLnJlYWRvbmx5O1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY2FsY3VsYXRlQWRkcmVzcygpO1xuICAgIHRoaXMuaW5pdEdvb2dsZU1hcCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVBZGRyZXNzKCkge1xuICAgIHRoaXMuZW1wdHlBZGRyZXNzID0gIXRoaXMuYWRkcmVzcyB8fCAoISh0aGlzLmFkZHJlc3MubmFtZSkgJiYgISh0aGlzLmFkZHJlc3Muc3RyZWV0KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgISh0aGlzLmFkZHJlc3MuY2l0eSkgJiYgISh0aGlzLmFkZHJlc3MucmVnaW9uKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgISh0aGlzLmFkZHJlc3MuemlwKSAmJiAhKHRoaXMuYWRkcmVzcy5jb3VudHJ5KSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRHb29nbGVNYXAoKSB7XG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuX21hcHNBUElMb2FkZXJcbiAgICAgICAgLmxvYWQoKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5nb29nbGVBdXRvY29tcGxldGVTZXJ2aWNlID0gbmV3IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVTZXJ2aWNlKCk7XG4gICAgICAgICAgdGhpcy5nb29nbGVQbGFjZXNTZXJ2aWNlID0gbmV3IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlKHRoaXMuc2VhcmNoRWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXV0b2NvbXBsZXRlRm9ybWF0ID0gKCh2YWx1ZSkgPT4ge1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUuZGVzY3JpcHRpb25cbiAgICB9IGVsc2UgaWYgKCF0aGlzLmVtcHR5QWRkcmVzcykge1xuICAgICAgcmV0dXJuICcgJztcbiAgICB9XG5cbiAgfSkuYmluZCh0aGlzKTtcblxuICBwcml2YXRlIHVwZGF0ZVByZWRpY3Rpb25zKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlICYmIHRoaXMuZ29vZ2xlQXV0b2NvbXBsZXRlU2VydmljZSkge1xuXG4gICAgICB0aGlzLmdvb2dsZUF1dG9jb21wbGV0ZVNlcnZpY2UuZ2V0UGxhY2VQcmVkaWN0aW9ucyhcbiAgICAgICAge2lucHV0OiB2YWx1ZX0sXG4gICAgICAgIChwcmVkaWN0aW9ucywgc3RhdHVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnByZWRpY3Rpb25zLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICBpZiAoc3RhdHVzICE9IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlU3RhdHVzLk9LICYmXG4gICAgICAgICAgICAgICAgc3RhdHVzICE9IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlU3RhdHVzLlpFUk9fUkVTVUxUUykge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucHJlZGljdGlvbnMgPSBwcmVkaWN0aW9ucyA/IHByZWRpY3Rpb25zLnNsaWNlKCkgOiBbXTtcbiAgICAgICAgICAgIHRoaXMucHJlZGljdGlvbnMucHVzaCh7IGRlc2NyaXB0aW9uOiBgSnVzdCB1c2UgXCIke3ZhbHVlfVwiYCwgaWQ6IDEsIG5hbWU6IHZhbHVlIH0pO1xuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkcmVzc0NoYW5nZWQoZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gRU5URVIpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5fY2hhbmdlQWRkcmVzc0RlYm91bmNlJC5uZXh0KGV2ZW50LmN1cnJlbnRUYXJnZXQudmFsdWUpO1xuICAgIHRoaXMuYXV0b0NvbXBsZXRlLm9wZW5QYW5lbCgpO1xuICB9XG5cbiAgcHVibGljIGF1dG9jb21wbGV0ZVNlbGVjdGVkKG9wdGlvbikge1xuXG4gICAgY29uc3QgcGxhY2UgPSBvcHRpb24udmFsdWU7XG4gICAgY29uc3QgbmV3QWRkcmVzczogRnNBZGRyZXNzID0gdGhpcy5fY3JlYXRlQWRkcmVzcygpO1xuICAgIHRoaXMuZW1wdHlBZGRyZXNzID0gdHJ1ZTtcblxuICAgIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuXG4gICAgICAvLyB3aGVuIHNvbWV0aGluZyB3ZW50IHdyb25nXG4gICAgICBpZiAoIXBsYWNlIHx8ICF0aGlzLmdvb2dsZVBsYWNlc1NlcnZpY2UpIHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfVxuXG4gICAgICAvLyB3aGVuIGl0J3Mgbm90IGFuIGFkZHJlc3MgaXQncyBcIkp1c3QgdXNlXCIgY2FzZVxuICAgICAgaWYgKHBsYWNlICYmICFwbGFjZS5wbGFjZV9pZCkge1xuICAgICAgICB0aGlzLmFkZHJlc3NDaGFuZ2UuZW1pdChwbGFjZSk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH1cblxuICAgICAgbmV3QWRkcmVzcy5kZXNjcmlwdGlvbiA9IHBsYWNlLmRlc2NyaXB0aW9uO1xuICAgICAgdGhpcy5nb29nbGVQbGFjZXNTZXJ2aWNlLmdldERldGFpbHMocGxhY2UsIChyZXN1bHQsIHN0YXR1cykgPT4ge1xuICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHtcblxuICAgICAgICAgIGlmIChzdGF0dXMgIT0gZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlc1NlcnZpY2VTdGF0dXMuT0spIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV3QWRkcmVzcy5sYXQgPSByZXN1bHQuZ2VvbWV0cnkubG9jYXRpb24ubGF0KCk7XG4gICAgICAgICAgbmV3QWRkcmVzcy5sbmcgPSByZXN1bHQuZ2VvbWV0cnkubG9jYXRpb24ubG5nKCk7XG5cbiAgICAgICAgICBsZXQgY291bnRyeUxvbmdOYW1lLCByZWdpb25Mb25nTmFtZSwgc3RyZWV0U2hvcnROYW1lO1xuXG4gICAgICAgICAgLy8gRmluZGluZyBkaWZmZXJlbnQgcGFydHMgb2YgYWRkcmVzc1xuICAgICAgICAgIHJlc3VsdC5hZGRyZXNzX2NvbXBvbmVudHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0udHlwZXMuc29tZSh0eXBlID0+IHR5cGUgPT09ICdjb3VudHJ5JykpIHtcbiAgICAgICAgICAgICAgbmV3QWRkcmVzcy5jb3VudHJ5ID0gaXRlbS5zaG9ydF9uYW1lO1xuICAgICAgICAgICAgICBjb3VudHJ5TG9uZ05hbWUgPSBpdGVtLmxvbmdfbmFtZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGl0ZW0udHlwZXMuc29tZSh0eXBlID0+IHR5cGUgPT09ICdhZG1pbmlzdHJhdGl2ZV9hcmVhX2xldmVsXzEnKSkge1xuICAgICAgICAgICAgICBuZXdBZGRyZXNzLnJlZ2lvbiA9IGl0ZW0uc2hvcnRfbmFtZTtcbiAgICAgICAgICAgICAgcmVnaW9uTG9uZ05hbWUgPSBpdGVtLmxvbmdfbmFtZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGl0ZW0udHlwZXMuc29tZSh0eXBlID0+IHR5cGUgPT09ICdsb2NhbGl0eScpKSB7XG4gICAgICAgICAgICAgIG5ld0FkZHJlc3MuY2l0eSA9IGl0ZW0ubG9uZ19uYW1lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXRlbS50eXBlcy5zb21lKHR5cGUgPT4gdHlwZSA9PT0gJ3Bvc3RhbF9jb2RlJykpIHtcbiAgICAgICAgICAgICAgbmV3QWRkcmVzcy56aXAgPSBpdGVtLmxvbmdfbmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIC8vIEFkZHJlc3MuU3RyZWV0IGNvbnNpc3RzIGZyb20gbnVtYmVyIGFuZCBzdHJlZXRcbiAgICAgICAgICBjb25zdCBzdHJlZXROdW1iZXIgPSByZXN1bHQuYWRkcmVzc19jb21wb25lbnRzXG4gICAgICAgICAgICAuZmluZChlbCA9PiBlbC50eXBlcy5zb21lKHR5cGUgPT4gdHlwZSA9PT0gJ3N0cmVldF9udW1iZXInKSk7XG5cbiAgICAgICAgICBpZiAoc3RyZWV0TnVtYmVyKSB7XG4gICAgICAgICAgICBuZXdBZGRyZXNzLnN0cmVldCA9IHN0cmVldE51bWJlci5sb25nX25hbWUgKyAnICc7XG4gICAgICAgICAgICBzdHJlZXRTaG9ydE5hbWUgPSBzdHJlZXROdW1iZXIubG9uZ19uYW1lICsgJyAnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IG5ld0FkZHJlc3MuZGVzY3JpcHRpb24ubWF0Y2goL15bXFxkLV0rLyk7XG4gICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgbmV3QWRkcmVzcy5zdHJlZXQgPSBtYXRjaFswXSArICcgJztcbiAgICAgICAgICAgICAgc3RyZWV0U2hvcnROYW1lID0gbWF0Y2hbMF0gKyAnICc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc3RyZWV0QWRkcmVzcyA9IHJlc3VsdC5hZGRyZXNzX2NvbXBvbmVudHNcbiAgICAgICAgICAgIC5maW5kKGVsID0+IGVsLnR5cGVzLnNvbWUodHlwZSA9PiB0eXBlID09PSAncm91dGUnKSk7XG5cbiAgICAgICAgICBpZiAoc3RyZWV0QWRkcmVzcykge1xuICAgICAgICAgICAgaWYgKCFuZXdBZGRyZXNzLnN0cmVldCkge1xuICAgICAgICAgICAgICBuZXdBZGRyZXNzLnN0cmVldCA9IHN0cmVldEFkZHJlc3MubG9uZ19uYW1lO1xuICAgICAgICAgICAgICBzdHJlZXRTaG9ydE5hbWUgPSBzdHJlZXRBZGRyZXNzLnNob3J0X25hbWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBuZXdBZGRyZXNzLnN0cmVldCArPSBzdHJlZXRBZGRyZXNzLmxvbmdfbmFtZTtcbiAgICAgICAgICAgICAgc3RyZWV0U2hvcnROYW1lICs9IHN0cmVldEFkZHJlc3Muc2hvcnRfbmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDaGVja2luZyBjb3JyZWN0IHBsYWNlIE5BTUVcbiAgICAgICAgICBpZiAobmV3QWRkcmVzcy5jb3VudHJ5ICE9PSByZXN1bHQubmFtZSAmJlxuICAgICAgICAgICAgICBjb3VudHJ5TG9uZ05hbWUgIT09IHJlc3VsdC5uYW1lICYmXG4gICAgICAgICAgICAgIG5ld0FkZHJlc3MucmVnaW9uICE9PSByZXN1bHQubmFtZSAmJlxuICAgICAgICAgICAgICByZWdpb25Mb25nTmFtZSAhPT0gcmVzdWx0Lm5hbWUgJiZcbiAgICAgICAgICAgICAgbmV3QWRkcmVzcy5jaXR5ICE9PSByZXN1bHQubmFtZSAmJlxuICAgICAgICAgICAgICBzdHJlZXRTaG9ydE5hbWUgIT09IHJlc3VsdC5uYW1lICYmXG4gICAgICAgICAgICAgIG5ld0FkZHJlc3MuemlwICE9PSByZXN1bHQubmFtZSAmJlxuICAgICAgICAgICAgICBuZXdBZGRyZXNzLnN0cmVldCAhPT0gcmVzdWx0Lm5hbWUpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLm5hbWUgJiYgdGhpcy5jb25maWcubmFtZS52aXNpYmxlICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICBuZXdBZGRyZXNzLm5hbWUgPSByZXN1bHQubmFtZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdBZGRyZXNzLm5hbWUgPSAnJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKG5ld0FkZHJlc3MpO1xuICAgICAgICAgIHRoaXMuYWRkcmVzc0NoYW5nZS5lbWl0KG5ld0FkZHJlc3MpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgfSkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5hZGRyZXNzID0gbmV3QWRkcmVzcztcbiAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMucmV2YWxpZGF0ZSgpO1xuICAgIH0sICgpID0+IHtcblxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGZvY3VzKCkge1xuICAgIHRoaXMuc2VsZWN0aW5nID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBmdW5jdGlvblByb21pc2UgPSAoKSA9PiB7XG5cbiAgICBpZiAodGhpcy5zZWxlY3RpbmcgPT09IHRydWUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cbiAgICAgICAgY29uc3QgcmVxdWlyZWRGaWVsZCA9IFtdO1xuICAgICAgICBjb25zdCBwYXJ0cyA9IFsnbmFtZScsICdzdHJlZXQnLCAnY2l0eScsICdyZWdpb24nLCAnemlwJywgJ2NvdW50cnknXTtcblxuICAgICAgICBwYXJ0cy5mb3JFYWNoKHBhcnQgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ1twYXJ0XSAmJiB0aGlzLmNvbmZpZ1twYXJ0XS5yZXF1aXJlZCAmJiAhdGhpcy5hZGRyZXNzW3BhcnRdKSB7XG4gICAgICAgICAgICByZXF1aXJlZEZpZWxkLnB1c2goW3BhcnRdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICgoKHRoaXMuY29uZmlnLmxhdCAmJiB0aGlzLmNvbmZpZy5sYXQucmVxdWlyZWQpIHx8XG4gICAgICAgICAgICAodGhpcy5jb25maWcubG5nICYmIHRoaXMuY29uZmlnLmxuZy5yZXF1aXJlZCkpICYmXG4gICAgICAgICAgICAoIXRoaXMuYWRkcmVzcy5sYXQgfHwgIXRoaXMuYWRkcmVzcy5sYXQpKSB7XG4gICAgICAgICAgcmVxdWlyZWRGaWVsZC5wdXNoKCdwb3NpdGlvbiBvbiBtYXAnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXF1aXJlZEZpZWxkLmxlbmd0aCkge1xuICAgICAgICAgIGlmIChyZXF1aXJlZEZpZWxkLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmVqZWN0KGBUaGUgJHtyZXF1aXJlZEZpZWxkWzBdfSBpcyByZXF1aXJlZGApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0ID0gcmVxdWlyZWRGaWVsZC5wb3AoKTtcbiAgICAgICAgICAgIHJlamVjdChgVGhlICR7cmVxdWlyZWRGaWVsZC5qb2luKCcsICcpfSBhbmQgJHtsYXN0fSBhcmUgcmVxdWlyZWRgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgcHVibGljIGNsZWFyKCkge1xuICAgIHRoaXMuc2hvd0NsZWFyID0gZmFsc2U7XG4gICAgdGhpcy5sb2NhdGlvbiA9IG51bGw7XG4gICAgdGhpcy5hZGRyZXNzID0gdGhpcy5fY3JlYXRlQWRkcmVzcygpO1xuICAgIHRoaXMuaW5wdXRBZGRyZXNzID0gJyc7XG4gICAgdGhpcy5jbGVhcmVkLmVtaXQodGhpcy5fY3JlYXRlQWRkcmVzcygpKTtcbiAgICB0aGlzLmFkZHJlc3NDaGFuZ2UuZW1pdCh0aGlzLl9jcmVhdGVBZGRyZXNzKCkpO1xuICB9XG5cbiAgcHVibGljIGVkaXQoKSB7XG5cbiAgICBpZiAoIXRoaXMuZWRpdGFibGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmVkaXRlZC5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVBZGRyZXNzKCk6IEZzQWRkcmVzcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgY291bnRyeTogJycsXG4gICAgICByZWdpb246ICcnLFxuICAgICAgY2l0eTogJycsXG4gICAgICBzdHJlZXQ6ICcnLFxuICAgICAgemlwOiAnJyxcbiAgICAgIGxhdDogbnVsbCxcbiAgICAgIGxuZzogbnVsbCxcbiAgICB9O1xuICB9XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvYWRkcmVzcy8iLCJzb3VyY2VzIjpbImFwcC9jb21wb25lbnRzL2FkZHJlc3Mtc2VhcmNoL2FkZHJlc3Mtc2VhcmNoLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUlOLE1BQU0sRUFDTixTQUFTLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQ3RELE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUkxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFZaEUsTUFBTSxPQUFPLHdCQUF3Qjs7Ozs7OztJQW1EbkMsWUFDVSxjQUE2QixFQUM3QixPQUFlLEVBQ2YsT0FBZSxFQUNmLE1BQXlCO1FBSHpCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsV0FBTSxHQUFOLE1BQU0s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QUFFO3NCQUN6QyxTQUFTLFNBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOzJCQUNsRCxTQUFTLFNBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Ozs7SUEvQnhFLDBDQUF3Qzs7SUFDeEMsNENBQTBCOztJQUMxQiw0Q0FBMEI7O0lBb0IxQix3Q0FBcUI7O0lBQ3JCLDJDQUErRDs7SUFDL0QsMENBQThEOztJQUM5RCwyQ0FBaUM7O0lBQ2pDLGlEQUE2Qzs7SUFFN0MsbURBQTRGOztJQUM1RixpREFBc0U7O0lBQ3RFLDJDQUFxRjs7SUFDckYsZ0RBQStHOztJQUUvRyxnREFBb0I7O0lBQ3BCLDZDQUF5Qjs7SUFDekIsK0NBQStCOztJQUMvQiw2Q0FBeUI7O0lBQ3pCLDZEQUF3Qzs7SUFDeEMsdURBQWtDOztJQUNsQyw0Q0FBcUI7O0lBQ3JCLDRDQUF3Qjs7SUFDeEIsZ0RBQTJCOztJQUMzQiw0Q0FBdUI7O0lBQ3ZCLG9EQUF1RDs7Ozs7SUFFdkQsMkRBQXFEOzs7OztJQUNyRCw2Q0FBd0M7Ozs7O0lBQ3hDLDJDQUF1Qzs7SUE2RHZDLHNEQVFjOztJQW1KZCxtREFrQ0U7Ozs7O0lBdlBBLGtEQUFxQzs7Ozs7SUFDckMsMkNBQXVCOzs7OztJQUN2QiwyQ0FBdUI7Ozs7O0lBQ3ZCLDBDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBOZ0Zvcm0sIENvbnRyb2xDb250YWluZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IEVOVEVSIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcblxuaW1wb3J0IHsgTWFwc0FQSUxvYWRlciB9IGZyb20gJ0BhZ20vY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZ3VpZCB9IGZyb20gJ0BmaXJlc3RpdGNoL2NvbW1vbic7XG5cbmltcG9ydCB7IEZzQWRkcmVzcyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYWRkcmVzcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUZzQWRkcmVzc0NvbmZpZyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYWRkcmVzcy1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFkZHJlc3NGb3JtYXQgfSBmcm9tICcuLi8uLi9lbnVtcy9hZGRyZXNzLWZvcm1hdC5lbnVtJztcblxuZGVjbGFyZSB2YXIgZ29vZ2xlOiBhbnk7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtYWRkcmVzcy1zZWFyY2gnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRkcmVzcy1zZWFyY2guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hZGRyZXNzLXNlYXJjaC5jb21wb25lbnQuc2NzcyddLFxuICB2aWV3UHJvdmlkZXJzOiBbIHsgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IE5nRm9ybSB9IF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGc0FkZHJlc3NTZWFyY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBmb3JtYXQgPSBBZGRyZXNzRm9ybWF0LlR3b0xpbmU7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG5cbiAgQElucHV0KCkgcHVibGljICBzZXQgY29uZmlnKHZhbHVlOiBJRnNBZGRyZXNzQ29uZmlnKSB7XG4gICAgdGhpcy5fY29uZmlnID0gdmFsdWU7XG4gICAgaWYgKHRoaXMuX2NvbmZpZykge1xuICAgICAgdGhpcy5yZXF1aXJlZCA9XG4gICAgICAoICh0aGlzLmNvbmZpZy5uYW1lICYmIHRoaXMuY29uZmlnLm5hbWUucmVxdWlyZWQpIHx8XG4gICAgICAgICh0aGlzLmNvbmZpZy5jb3VudHJ5ICYmIHRoaXMuY29uZmlnLmNvdW50cnkucmVxdWlyZWQpIHx8XG4gICAgICAgICh0aGlzLmNvbmZpZy5yZWdpb24gJiYgdGhpcy5jb25maWcucmVnaW9uLnJlcXVpcmVkKSB8fFxuICAgICAgICAodGhpcy5jb25maWcuY2l0eSAmJiB0aGlzLmNvbmZpZy5jaXR5LnJlcXVpcmVkKSB8fFxuICAgICAgICAodGhpcy5jb25maWcuc3RyZWV0ICYmIHRoaXMuY29uZmlnLnN0cmVldC5yZXF1aXJlZCkgfHxcbiAgICAgICAgKHRoaXMuY29uZmlnLmFkZHJlc3MyICYmIHRoaXMuY29uZmlnLmFkZHJlc3MyLnJlcXVpcmVkKSB8fFxuICAgICAgICAodGhpcy5jb25maWcuemlwICYmIHRoaXMuY29uZmlnLnppcC5yZXF1aXJlZCkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29uZmlnKCk6IElGc0FkZHJlc3NDb25maWcge1xuICAgIHJldHVybiB0aGlzLl9jb25maWc7XG4gIH1cblxuICBASW5wdXQoKSBuYW1lID0gdHJ1ZTtcbiAgQE91dHB1dCgpIGNsZWFyZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBlZGl0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIGFkZHJlc3M6IEZzQWRkcmVzcyA9IHt9O1xuICBAT3V0cHV0KCkgYWRkcmVzc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hGb3JtRmllbGQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgc2VhcmNoRm9ybUZpZWxkOiBNYXRGb3JtRmllbGQgPSBudWxsO1xuICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIHNlYXJjaEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciwgeyBzdGF0aWM6IHRydWUgfSkgdHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnLCB7IHJlYWQ6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsIHN0YXRpYzogdHJ1ZSB9KSBhdXRvQ29tcGxldGU6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXI7XG5cbiAgcHVibGljIGlucHV0QWRkcmVzcztcbiAgcHVibGljIHNob3dDbGVhciA9IGZhbHNlO1xuICBwdWJsaWMgcHJlZGljdGlvbnM6IGFueVtdID0gW107XG4gIHB1YmxpYyBzZWxlY3RpbmcgPSBmYWxzZTtcbiAgcHVibGljIGdvb2dsZUF1dG9jb21wbGV0ZVNlcnZpY2UgPSBudWxsO1xuICBwdWJsaWMgZ29vZ2xlUGxhY2VzU2VydmljZSA9IG51bGw7XG4gIHB1YmxpYyBsb2NhdGlvbiA9ICcnO1xuICBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcbiAgcHVibGljIGVtcHR5QWRkcmVzcyA9IHRydWU7XG4gIHB1YmxpYyBlZGl0YWJsZSA9IHRydWU7XG4gIHB1YmxpYyBhdXRvY29tcGxldGVOYW1lID0gYHNlYXJjaC0ke2d1aWQoJ3h4eHh4eHh4Jyl9YDtcblxuICBwcml2YXRlIF9jaGFuZ2VBZGRyZXNzRGVib3VuY2UkID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX2NvbmZpZzogSUZzQWRkcmVzc0NvbmZpZyA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX21hcHNBUElMb2FkZXI6IE1hcHNBUElMb2FkZXIsXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBfbmdGb3JtOiBOZ0Zvcm0sXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICB0aGlzLl9jaGFuZ2VBZGRyZXNzRGVib3VuY2UkXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVQcmVkaWN0aW9ucyh2YWx1ZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZXZhbGlkYXRlKCkge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLl9uZ0Zvcm0uY29udHJvbHNbdGhpcy5hdXRvY29tcGxldGVOYW1lXTtcbiAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICBjb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmFkZHJlc3MpIHtcbiAgICAgIHRoaXMuY2FsY3VsYXRlQWRkcmVzcygpO1xuICAgICAgdGhpcy5zaG93Q2xlYXIgPSAhdGhpcy5lbXB0eUFkZHJlc3M7XG4gICAgfVxuXG4gICAgdGhpcy5lZGl0YWJsZSA9ICF0aGlzLmRpc2FibGVkICYmICF0aGlzLnJlYWRvbmx5O1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY2FsY3VsYXRlQWRkcmVzcygpO1xuICAgIHRoaXMuaW5pdEdvb2dsZU1hcCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVBZGRyZXNzKCkge1xuICAgIHRoaXMuZW1wdHlBZGRyZXNzID0gIXRoaXMuYWRkcmVzcyB8fCAoISh0aGlzLmFkZHJlc3MubmFtZSkgJiYgISh0aGlzLmFkZHJlc3Muc3RyZWV0KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgISh0aGlzLmFkZHJlc3MuY2l0eSkgJiYgISh0aGlzLmFkZHJlc3MucmVnaW9uKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgISh0aGlzLmFkZHJlc3MuemlwKSAmJiAhKHRoaXMuYWRkcmVzcy5jb3VudHJ5KSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRHb29nbGVNYXAoKSB7XG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuX21hcHNBUElMb2FkZXJcbiAgICAgICAgLmxvYWQoKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5nb29nbGVBdXRvY29tcGxldGVTZXJ2aWNlID0gbmV3IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVTZXJ2aWNlKCk7XG4gICAgICAgICAgdGhpcy5nb29nbGVQbGFjZXNTZXJ2aWNlID0gbmV3IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlKHRoaXMuc2VhcmNoRWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXV0b2NvbXBsZXRlRm9ybWF0ID0gKCh2YWx1ZSkgPT4ge1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUuZGVzY3JpcHRpb25cbiAgICB9IGVsc2UgaWYgKCF0aGlzLmVtcHR5QWRkcmVzcykge1xuICAgICAgcmV0dXJuICcgJztcbiAgICB9XG5cbiAgfSkuYmluZCh0aGlzKTtcblxuICBwcml2YXRlIHVwZGF0ZVByZWRpY3Rpb25zKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlICYmIHRoaXMuZ29vZ2xlQXV0b2NvbXBsZXRlU2VydmljZSkge1xuXG4gICAgICB0aGlzLmdvb2dsZUF1dG9jb21wbGV0ZVNlcnZpY2UuZ2V0UGxhY2VQcmVkaWN0aW9ucyhcbiAgICAgICAge2lucHV0OiB2YWx1ZX0sXG4gICAgICAgIChwcmVkaWN0aW9ucywgc3RhdHVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnByZWRpY3Rpb25zLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICBpZiAoc3RhdHVzICE9IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlU3RhdHVzLk9LICYmXG4gICAgICAgICAgICAgICAgc3RhdHVzICE9IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlU3RhdHVzLlpFUk9fUkVTVUxUUykge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucHJlZGljdGlvbnMgPSBwcmVkaWN0aW9ucyA/IHByZWRpY3Rpb25zLnNsaWNlKCkgOiBbXTtcbiAgICAgICAgICAgIHRoaXMucHJlZGljdGlvbnMucHVzaCh7IGRlc2NyaXB0aW9uOiBgSnVzdCB1c2UgXCIke3ZhbHVlfVwiYCwgaWQ6IDEsIG5hbWU6IHZhbHVlIH0pO1xuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkcmVzc0NoYW5nZWQoZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gRU5URVIpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5fY2hhbmdlQWRkcmVzc0RlYm91bmNlJC5uZXh0KGV2ZW50LmN1cnJlbnRUYXJnZXQudmFsdWUpO1xuICAgIHRoaXMuYXV0b0NvbXBsZXRlLm9wZW5QYW5lbCgpO1xuICB9XG5cbiAgcHVibGljIGF1dG9jb21wbGV0ZVNlbGVjdGVkKG9wdGlvbikge1xuXG4gICAgY29uc3QgcGxhY2UgPSBvcHRpb24udmFsdWU7XG4gICAgY29uc3QgbmV3QWRkcmVzczogRnNBZGRyZXNzID0gdGhpcy5fY3JlYXRlQWRkcmVzcygpO1xuICAgIHRoaXMuZW1wdHlBZGRyZXNzID0gdHJ1ZTtcblxuICAgIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuXG4gICAgICAvLyB3aGVuIHNvbWV0aGluZyB3ZW50IHdyb25nXG4gICAgICBpZiAoIXBsYWNlIHx8ICF0aGlzLmdvb2dsZVBsYWNlc1NlcnZpY2UpIHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfVxuXG4gICAgICAvLyB3aGVuIGl0J3Mgbm90IGFuIGFkZHJlc3MgaXQncyBcIkp1c3QgdXNlXCIgY2FzZVxuICAgICAgaWYgKHBsYWNlICYmICFwbGFjZS5wbGFjZV9pZCkge1xuICAgICAgICB0aGlzLmFkZHJlc3NDaGFuZ2UuZW1pdChwbGFjZSk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH1cblxuICAgICAgbmV3QWRkcmVzcy5kZXNjcmlwdGlvbiA9IHBsYWNlLmRlc2NyaXB0aW9uO1xuICAgICAgdGhpcy5nb29nbGVQbGFjZXNTZXJ2aWNlLmdldERldGFpbHMocGxhY2UsIChyZXN1bHQsIHN0YXR1cykgPT4ge1xuICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHtcblxuICAgICAgICAgIGlmIChzdGF0dXMgIT0gZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlc1NlcnZpY2VTdGF0dXMuT0spIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV3QWRkcmVzcy5sYXQgPSByZXN1bHQuZ2VvbWV0cnkubG9jYXRpb24ubGF0KCk7XG4gICAgICAgICAgbmV3QWRkcmVzcy5sbmcgPSByZXN1bHQuZ2VvbWV0cnkubG9jYXRpb24ubG5nKCk7XG5cbiAgICAgICAgICBsZXQgY291bnRyeUxvbmdOYW1lLCByZWdpb25Mb25nTmFtZSwgc3RyZWV0U2hvcnROYW1lO1xuXG4gICAgICAgICAgLy8gRmluZGluZyBkaWZmZXJlbnQgcGFydHMgb2YgYWRkcmVzc1xuICAgICAgICAgIHJlc3VsdC5hZGRyZXNzX2NvbXBvbmVudHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0udHlwZXMuc29tZSh0eXBlID0+IHR5cGUgPT09ICdjb3VudHJ5JykpIHtcbiAgICAgICAgICAgICAgbmV3QWRkcmVzcy5jb3VudHJ5ID0gaXRlbS5zaG9ydF9uYW1lO1xuICAgICAgICAgICAgICBjb3VudHJ5TG9uZ05hbWUgPSBpdGVtLmxvbmdfbmFtZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGl0ZW0udHlwZXMuc29tZSh0eXBlID0+IHR5cGUgPT09ICdhZG1pbmlzdHJhdGl2ZV9hcmVhX2xldmVsXzEnKSkge1xuICAgICAgICAgICAgICBuZXdBZGRyZXNzLnJlZ2lvbiA9IGl0ZW0uc2hvcnRfbmFtZTtcbiAgICAgICAgICAgICAgcmVnaW9uTG9uZ05hbWUgPSBpdGVtLmxvbmdfbmFtZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGl0ZW0udHlwZXMuc29tZSh0eXBlID0+IHR5cGUgPT09ICdsb2NhbGl0eScpKSB7XG4gICAgICAgICAgICAgIG5ld0FkZHJlc3MuY2l0eSA9IGl0ZW0ubG9uZ19uYW1lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXRlbS50eXBlcy5zb21lKHR5cGUgPT4gdHlwZSA9PT0gJ3Bvc3RhbF9jb2RlJykpIHtcbiAgICAgICAgICAgICAgbmV3QWRkcmVzcy56aXAgPSBpdGVtLmxvbmdfbmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIC8vIEFkZHJlc3MuU3RyZWV0IGNvbnNpc3RzIGZyb20gbnVtYmVyIGFuZCBzdHJlZXRcbiAgICAgICAgICBjb25zdCBzdHJlZXROdW1iZXIgPSByZXN1bHQuYWRkcmVzc19jb21wb25lbnRzXG4gICAgICAgICAgICAuZmluZChlbCA9PiBlbC50eXBlcy5zb21lKHR5cGUgPT4gdHlwZSA9PT0gJ3N0cmVldF9udW1iZXInKSk7XG5cbiAgICAgICAgICBpZiAoc3RyZWV0TnVtYmVyKSB7XG4gICAgICAgICAgICBuZXdBZGRyZXNzLnN0cmVldCA9IHN0cmVldE51bWJlci5sb25nX25hbWUgKyAnICc7XG4gICAgICAgICAgICBzdHJlZXRTaG9ydE5hbWUgPSBzdHJlZXROdW1iZXIubG9uZ19uYW1lICsgJyAnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IG5ld0FkZHJlc3MuZGVzY3JpcHRpb24ubWF0Y2goL15bXFxkLV0rLyk7XG4gICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgbmV3QWRkcmVzcy5zdHJlZXQgPSBtYXRjaFswXSArICcgJztcbiAgICAgICAgICAgICAgc3RyZWV0U2hvcnROYW1lID0gbWF0Y2hbMF0gKyAnICc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc3RyZWV0QWRkcmVzcyA9IHJlc3VsdC5hZGRyZXNzX2NvbXBvbmVudHNcbiAgICAgICAgICAgIC5maW5kKGVsID0+IGVsLnR5cGVzLnNvbWUodHlwZSA9PiB0eXBlID09PSAncm91dGUnKSk7XG5cbiAgICAgICAgICBpZiAoc3RyZWV0QWRkcmVzcykge1xuICAgICAgICAgICAgaWYgKCFuZXdBZGRyZXNzLnN0cmVldCkge1xuICAgICAgICAgICAgICBuZXdBZGRyZXNzLnN0cmVldCA9IHN0cmVldEFkZHJlc3MubG9uZ19uYW1lO1xuICAgICAgICAgICAgICBzdHJlZXRTaG9ydE5hbWUgPSBzdHJlZXRBZGRyZXNzLnNob3J0X25hbWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBuZXdBZGRyZXNzLnN0cmVldCArPSBzdHJlZXRBZGRyZXNzLmxvbmdfbmFtZTtcbiAgICAgICAgICAgICAgc3RyZWV0U2hvcnROYW1lICs9IHN0cmVldEFkZHJlc3Muc2hvcnRfbmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDaGVja2luZyBjb3JyZWN0IHBsYWNlIE5BTUVcbiAgICAgICAgICBpZiAobmV3QWRkcmVzcy5jb3VudHJ5ICE9PSByZXN1bHQubmFtZSAmJlxuICAgICAgICAgICAgICBjb3VudHJ5TG9uZ05hbWUgIT09IHJlc3VsdC5uYW1lICYmXG4gICAgICAgICAgICAgIG5ld0FkZHJlc3MucmVnaW9uICE9PSByZXN1bHQubmFtZSAmJlxuICAgICAgICAgICAgICByZWdpb25Mb25nTmFtZSAhPT0gcmVzdWx0Lm5hbWUgJiZcbiAgICAgICAgICAgICAgbmV3QWRkcmVzcy5jaXR5ICE9PSByZXN1bHQubmFtZSAmJlxuICAgICAgICAgICAgICBzdHJlZXRTaG9ydE5hbWUgIT09IHJlc3VsdC5uYW1lICYmXG4gICAgICAgICAgICAgIG5ld0FkZHJlc3MuemlwICE9PSByZXN1bHQubmFtZSAmJlxuICAgICAgICAgICAgICBuZXdBZGRyZXNzLnN0cmVldCAhPT0gcmVzdWx0Lm5hbWUpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLm5hbWUgJiYgdGhpcy5jb25maWcubmFtZS52aXNpYmxlICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICBuZXdBZGRyZXNzLm5hbWUgPSByZXN1bHQubmFtZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdBZGRyZXNzLm5hbWUgPSAnJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKG5ld0FkZHJlc3MpO1xuICAgICAgICAgIHRoaXMuYWRkcmVzc0NoYW5nZS5lbWl0KG5ld0FkZHJlc3MpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgfSkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5hZGRyZXNzID0gbmV3QWRkcmVzcztcbiAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMucmV2YWxpZGF0ZSgpO1xuICAgIH0sICgpID0+IHtcblxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGZvY3VzKCkge1xuICAgIHRoaXMuc2VsZWN0aW5nID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBmdW5jdGlvblByb21pc2UgPSAoKSA9PiB7XG5cbiAgICBpZiAodGhpcy5zZWxlY3RpbmcgPT09IHRydWUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cbiAgICAgICAgY29uc3QgcmVxdWlyZWRGaWVsZCA9IFtdO1xuICAgICAgICBjb25zdCBwYXJ0cyA9IFsnbmFtZScsICdzdHJlZXQnLCAnY2l0eScsICdyZWdpb24nLCAnemlwJywgJ2NvdW50cnknXTtcblxuICAgICAgICBwYXJ0cy5mb3JFYWNoKHBhcnQgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ1twYXJ0XSAmJiB0aGlzLmNvbmZpZ1twYXJ0XS5yZXF1aXJlZCAmJiAhdGhpcy5hZGRyZXNzW3BhcnRdKSB7XG4gICAgICAgICAgICByZXF1aXJlZEZpZWxkLnB1c2goW3BhcnRdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICgoKHRoaXMuY29uZmlnLmxhdCAmJiB0aGlzLmNvbmZpZy5sYXQucmVxdWlyZWQpIHx8XG4gICAgICAgICAgICAodGhpcy5jb25maWcubG5nICYmIHRoaXMuY29uZmlnLmxuZy5yZXF1aXJlZCkpICYmXG4gICAgICAgICAgICAoIXRoaXMuYWRkcmVzcy5sYXQgfHwgIXRoaXMuYWRkcmVzcy5sYXQpKSB7XG4gICAgICAgICAgcmVxdWlyZWRGaWVsZC5wdXNoKCdwb3NpdGlvbiBvbiBtYXAnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXF1aXJlZEZpZWxkLmxlbmd0aCkge1xuICAgICAgICAgIGlmIChyZXF1aXJlZEZpZWxkLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmVqZWN0KGBUaGUgJHtyZXF1aXJlZEZpZWxkWzBdfSBpcyByZXF1aXJlZGApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0ID0gcmVxdWlyZWRGaWVsZC5wb3AoKTtcbiAgICAgICAgICAgIHJlamVjdChgVGhlICR7cmVxdWlyZWRGaWVsZC5qb2luKCcsICcpfSBhbmQgJHtsYXN0fSBhcmUgcmVxdWlyZWRgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgcHVibGljIGNsZWFyKCkge1xuICAgIHRoaXMuc2hvd0NsZWFyID0gZmFsc2U7XG4gICAgdGhpcy5sb2NhdGlvbiA9IG51bGw7XG4gICAgdGhpcy5hZGRyZXNzID0gdGhpcy5fY3JlYXRlQWRkcmVzcygpO1xuICAgIHRoaXMuaW5wdXRBZGRyZXNzID0gJyc7XG4gICAgdGhpcy5jbGVhcmVkLmVtaXQodGhpcy5fY3JlYXRlQWRkcmVzcygpKTtcbiAgICB0aGlzLmFkZHJlc3NDaGFuZ2UuZW1pdCh0aGlzLl9jcmVhdGVBZGRyZXNzKCkpO1xuICB9XG5cbiAgcHVibGljIGVkaXQoKSB7XG5cbiAgICBpZiAoIXRoaXMuZWRpdGFibGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmVkaXRlZC5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVBZGRyZXNzKCk6IEZzQWRkcmVzcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgY291bnRyeTogJycsXG4gICAgICByZWdpb246ICcnLFxuICAgICAgY2l0eTogJycsXG4gICAgICBzdHJlZXQ6ICcnLFxuICAgICAgemlwOiAnJyxcbiAgICAgIGxhdDogbnVsbCxcbiAgICAgIGxuZzogbnVsbCxcbiAgICB9O1xuICB9XG59XG4iXX0= |
@@ -150,2 +150,4 @@ /** | ||
control.updateValueAndValidity(); | ||
control.markAsDirty(); | ||
control.markAsTouched(); | ||
}; | ||
@@ -619,2 +621,2 @@ /** | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvYWRkcmVzcy8iLCJzb3VyY2VzIjpbImFwcC9jb21wb25lbnRzL2FkZHJlc3Mtc2VhcmNoL2FkZHJlc3Mtc2VhcmNoLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUlOLE1BQU0sRUFDTixTQUFTLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQ3RELE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUkxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFLaEU7SUEwREUsa0NBQ1UsY0FBNkIsRUFDN0IsT0FBZSxFQUNmLE9BQWUsRUFDZixNQUF5QjtRQUpuQyxpQkFjQztRQWJTLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFyRDFC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RTtnQ0FDN0MsU0FBUyxTQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7MEJBQ3pDLFNBQVMsU0FBQyxzQkFBc0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7K0JBQ2xELFNBQVMsU0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs7SUF5UzFFLCtCQUFDO0NBQUEsQUFqVkQsSUFpVkM7U0ExVVksd0JBQXdCOzs7SUFFbkMsMENBQXdDOztJQUN4Qyw0Q0FBMEI7O0lBQzFCLDRDQUEwQjs7SUFvQjFCLHdDQUFxQjs7SUFDckIsMkNBQStEOztJQUMvRCwwQ0FBOEQ7O0lBQzlELDJDQUFpQzs7SUFDakMsaURBQTZDOztJQUU3QyxtREFBNEY7O0lBQzVGLGlEQUFzRTs7SUFDdEUsMkNBQXFGOztJQUNyRixnREFBK0c7O0lBRS9HLGdEQUFvQjs7SUFDcEIsNkNBQXlCOztJQUN6QiwrQ0FBK0I7O0lBQy9CLDZDQUF5Qjs7SUFDekIsNkRBQXdDOztJQUN4Qyx1REFBa0M7O0lBQ2xDLDRDQUFxQjs7SUFDckIsNENBQXdCOztJQUN4QixnREFBMkI7O0lBQzNCLDRDQUF1Qjs7SUFDdkIsb0RBQXVEOzs7OztJQUV2RCwyREFBcUQ7Ozs7O0lBQ3JELDZDQUF3Qzs7Ozs7SUFDeEMsMkNBQXVDOztJQTJEdkMsc0RBUWM7O0lBbUpkLG1EQWtDRTs7Ozs7SUFyUEEsa0RBQXFDOzs7OztJQUNyQywyQ0FBdUI7Ozs7O0lBQ3ZCLDJDQUF1Qjs7Ozs7SUFDdkIsMENBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IE5nRm9ybSwgQ29udHJvbENvbnRhaW5lciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuXG5pbXBvcnQgeyBNYXBzQVBJTG9hZGVyIH0gZnJvbSAnQGFnbS9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBndWlkIH0gZnJvbSAnQGZpcmVzdGl0Y2gvY29tbW9uJztcblxuaW1wb3J0IHsgRnNBZGRyZXNzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9hZGRyZXNzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRnNBZGRyZXNzQ29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9hZGRyZXNzLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQWRkcmVzc0Zvcm1hdCB9IGZyb20gJy4uLy4uL2VudW1zL2FkZHJlc3MtZm9ybWF0LmVudW0nO1xuXG5kZWNsYXJlIHZhciBnb29nbGU6IGFueTtcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1hZGRyZXNzLXNlYXJjaCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGRyZXNzLXNlYXJjaC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FkZHJlc3Mtc2VhcmNoLmNvbXBvbmVudC5zY3NzJ10sXG4gIHZpZXdQcm92aWRlcnM6IFsgeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogTmdGb3JtIH0gXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZzQWRkcmVzc1NlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIGZvcm1hdCA9IEFkZHJlc3NGb3JtYXQuVHdvTGluZTtcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcblxuICBASW5wdXQoKSBwdWJsaWMgIHNldCBjb25maWcodmFsdWU6IElGc0FkZHJlc3NDb25maWcpIHtcbiAgICB0aGlzLl9jb25maWcgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5fY29uZmlnKSB7XG4gICAgICB0aGlzLnJlcXVpcmVkID1cbiAgICAgICggKHRoaXMuY29uZmlnLm5hbWUgJiYgdGhpcy5jb25maWcubmFtZS5yZXF1aXJlZCkgfHxcbiAgICAgICAgKHRoaXMuY29uZmlnLmNvdW50cnkgJiYgdGhpcy5jb25maWcuY291bnRyeS5yZXF1aXJlZCkgfHxcbiAgICAgICAgKHRoaXMuY29uZmlnLnJlZ2lvbiAmJiB0aGlzLmNvbmZpZy5yZWdpb24ucmVxdWlyZWQpIHx8XG4gICAgICAgICh0aGlzLmNvbmZpZy5jaXR5ICYmIHRoaXMuY29uZmlnLmNpdHkucmVxdWlyZWQpIHx8XG4gICAgICAgICh0aGlzLmNvbmZpZy5zdHJlZXQgJiYgdGhpcy5jb25maWcuc3RyZWV0LnJlcXVpcmVkKSB8fFxuICAgICAgICAodGhpcy5jb25maWcuYWRkcmVzczIgJiYgdGhpcy5jb25maWcuYWRkcmVzczIucmVxdWlyZWQpIHx8XG4gICAgICAgICh0aGlzLmNvbmZpZy56aXAgJiYgdGhpcy5jb25maWcuemlwLnJlcXVpcmVkKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBjb25maWcoKTogSUZzQWRkcmVzc0NvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZztcbiAgfVxuXG4gIEBJbnB1dCgpIG5hbWUgPSB0cnVlO1xuICBAT3V0cHV0KCkgY2xlYXJlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGVkaXRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQElucHV0KCkgYWRkcmVzczogRnNBZGRyZXNzID0ge307XG4gIEBPdXRwdXQoKSBhZGRyZXNzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaEZvcm1GaWVsZCcsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBzZWFyY2hGb3JtRmllbGQ6IE1hdEZvcm1GaWVsZCA9IG51bGw7XG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgc2VhcmNoRWxlbWVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGVUcmlnZ2VyLCB7IHN0YXRpYzogdHJ1ZSB9KSB0cmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyO1xuICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcsIHsgcmVhZDogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciwgc3RhdGljOiB0cnVlIH0pIGF1dG9Db21wbGV0ZTogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcblxuICBwdWJsaWMgaW5wdXRBZGRyZXNzO1xuICBwdWJsaWMgc2hvd0NsZWFyID0gZmFsc2U7XG4gIHB1YmxpYyBwcmVkaWN0aW9uczogYW55W10gPSBbXTtcbiAgcHVibGljIHNlbGVjdGluZyA9IGZhbHNlO1xuICBwdWJsaWMgZ29vZ2xlQXV0b2NvbXBsZXRlU2VydmljZSA9IG51bGw7XG4gIHB1YmxpYyBnb29nbGVQbGFjZXNTZXJ2aWNlID0gbnVsbDtcbiAgcHVibGljIGxvY2F0aW9uID0gJyc7XG4gIHB1YmxpYyByZXF1aXJlZCA9IGZhbHNlO1xuICBwdWJsaWMgZW1wdHlBZGRyZXNzID0gdHJ1ZTtcbiAgcHVibGljIGVkaXRhYmxlID0gdHJ1ZTtcbiAgcHVibGljIGF1dG9jb21wbGV0ZU5hbWUgPSBgc2VhcmNoLSR7Z3VpZCgneHh4eHh4eHgnKX1gO1xuXG4gIHByaXZhdGUgX2NoYW5nZUFkZHJlc3NEZWJvdW5jZSQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfY29uZmlnOiBJRnNBZGRyZXNzQ29uZmlnID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfbWFwc0FQSUxvYWRlcjogTWFwc0FQSUxvYWRlcixcbiAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIF9uZ0Zvcm06IE5nRm9ybSxcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICAgIHRoaXMuX2NoYW5nZUFkZHJlc3NEZWJvdW5jZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVByZWRpY3Rpb25zKHZhbHVlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJldmFsaWRhdGUoKSB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuX25nRm9ybS5jb250cm9sc1t0aGlzLmF1dG9jb21wbGV0ZU5hbWVdO1xuICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5hZGRyZXNzKSB7XG4gICAgICB0aGlzLmNhbGN1bGF0ZUFkZHJlc3MoKTtcbiAgICAgIHRoaXMuc2hvd0NsZWFyID0gIXRoaXMuZW1wdHlBZGRyZXNzO1xuICAgIH1cblxuICAgIHRoaXMuZWRpdGFibGUgPSAhdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkb25seTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZUFkZHJlc3MoKTtcbiAgICB0aGlzLmluaXRHb29nbGVNYXAoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlQWRkcmVzcygpIHtcbiAgICB0aGlzLmVtcHR5QWRkcmVzcyA9ICF0aGlzLmFkZHJlc3MgfHwgKCEodGhpcy5hZGRyZXNzLm5hbWUpICYmICEodGhpcy5hZGRyZXNzLnN0cmVldCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICEodGhpcy5hZGRyZXNzLmNpdHkpICYmICEodGhpcy5hZGRyZXNzLnJlZ2lvbikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICEodGhpcy5hZGRyZXNzLnppcCkgJiYgISh0aGlzLmFkZHJlc3MuY291bnRyeSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0R29vZ2xlTWFwKCkge1xuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLl9tYXBzQVBJTG9hZGVyXG4gICAgICAgIC5sb2FkKClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZ29vZ2xlQXV0b2NvbXBsZXRlU2VydmljZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlU2VydmljZSgpO1xuICAgICAgICAgIHRoaXMuZ29vZ2xlUGxhY2VzU2VydmljZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZSh0aGlzLnNlYXJjaEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGF1dG9jb21wbGV0ZUZvcm1hdCA9ICgodmFsdWUpID0+IHtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlLmRlc2NyaXB0aW9uXG4gICAgfSBlbHNlIGlmICghdGhpcy5lbXB0eUFkZHJlc3MpIHtcbiAgICAgIHJldHVybiAnICc7XG4gICAgfVxuXG4gIH0pLmJpbmQodGhpcyk7XG5cbiAgcHJpdmF0ZSB1cGRhdGVQcmVkaWN0aW9ucyh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSAmJiB0aGlzLmdvb2dsZUF1dG9jb21wbGV0ZVNlcnZpY2UpIHtcblxuICAgICAgdGhpcy5nb29nbGVBdXRvY29tcGxldGVTZXJ2aWNlLmdldFBsYWNlUHJlZGljdGlvbnMoXG4gICAgICAgIHtpbnB1dDogdmFsdWV9LFxuICAgICAgICAocHJlZGljdGlvbnMsIHN0YXR1cykgPT4ge1xuICAgICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcmVkaWN0aW9ucy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZVN0YXR1cy5PSyAmJlxuICAgICAgICAgICAgICAgIHN0YXR1cyAhPSBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZVN0YXR1cy5aRVJPX1JFU1VMVFMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnByZWRpY3Rpb25zID0gcHJlZGljdGlvbnMgPyBwcmVkaWN0aW9ucy5zbGljZSgpIDogW107XG4gICAgICAgICAgICB0aGlzLnByZWRpY3Rpb25zLnB1c2goeyBkZXNjcmlwdGlvbjogYEp1c3QgdXNlIFwiJHt2YWx1ZX1cImAsIGlkOiAxLCBuYW1lOiB2YWx1ZSB9KTtcbiAgICAgICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZHJlc3NDaGFuZ2VkKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IEVOVEVSKSB7IHJldHVybjsgfVxuICAgIHRoaXMuX2NoYW5nZUFkZHJlc3NEZWJvdW5jZSQubmV4dChldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlKTtcbiAgICB0aGlzLmF1dG9Db21wbGV0ZS5vcGVuUGFuZWwoKTtcbiAgfVxuXG4gIHB1YmxpYyBhdXRvY29tcGxldGVTZWxlY3RlZChvcHRpb24pIHtcblxuICAgIGNvbnN0IHBsYWNlID0gb3B0aW9uLnZhbHVlO1xuICAgIGNvbnN0IG5ld0FkZHJlc3M6IEZzQWRkcmVzcyA9IHRoaXMuX2NyZWF0ZUFkZHJlc3MoKTtcbiAgICB0aGlzLmVtcHR5QWRkcmVzcyA9IHRydWU7XG5cbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcblxuICAgICAgLy8gd2hlbiBzb21ldGhpbmcgd2VudCB3cm9uZ1xuICAgICAgaWYgKCFwbGFjZSB8fCAhdGhpcy5nb29nbGVQbGFjZXNTZXJ2aWNlKSB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH1cblxuICAgICAgLy8gd2hlbiBpdCdzIG5vdCBhbiBhZGRyZXNzIGl0J3MgXCJKdXN0IHVzZVwiIGNhc2VcbiAgICAgIGlmIChwbGFjZSAmJiAhcGxhY2UucGxhY2VfaWQpIHtcbiAgICAgICAgdGhpcy5hZGRyZXNzQ2hhbmdlLmVtaXQocGxhY2UpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9XG5cbiAgICAgIG5ld0FkZHJlc3MuZGVzY3JpcHRpb24gPSBwbGFjZS5kZXNjcmlwdGlvbjtcbiAgICAgIHRoaXMuZ29vZ2xlUGxhY2VzU2VydmljZS5nZXREZXRhaWxzKHBsYWNlLCAocmVzdWx0LCBzdGF0dXMpID0+IHtcbiAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XG5cbiAgICAgICAgICBpZiAoc3RhdHVzICE9IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlU3RhdHVzLk9LKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5ld0FkZHJlc3MubGF0ID0gcmVzdWx0Lmdlb21ldHJ5LmxvY2F0aW9uLmxhdCgpO1xuICAgICAgICAgIG5ld0FkZHJlc3MubG5nID0gcmVzdWx0Lmdlb21ldHJ5LmxvY2F0aW9uLmxuZygpO1xuXG4gICAgICAgICAgbGV0IGNvdW50cnlMb25nTmFtZSwgcmVnaW9uTG9uZ05hbWUsIHN0cmVldFNob3J0TmFtZTtcblxuICAgICAgICAgIC8vIEZpbmRpbmcgZGlmZmVyZW50IHBhcnRzIG9mIGFkZHJlc3NcbiAgICAgICAgICByZXN1bHQuYWRkcmVzc19jb21wb25lbnRzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLnR5cGVzLnNvbWUodHlwZSA9PiB0eXBlID09PSAnY291bnRyeScpKSB7XG4gICAgICAgICAgICAgIG5ld0FkZHJlc3MuY291bnRyeSA9IGl0ZW0uc2hvcnRfbmFtZTtcbiAgICAgICAgICAgICAgY291bnRyeUxvbmdOYW1lID0gaXRlbS5sb25nX25hbWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpdGVtLnR5cGVzLnNvbWUodHlwZSA9PiB0eXBlID09PSAnYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8xJykpIHtcbiAgICAgICAgICAgICAgbmV3QWRkcmVzcy5yZWdpb24gPSBpdGVtLnNob3J0X25hbWU7XG4gICAgICAgICAgICAgIHJlZ2lvbkxvbmdOYW1lID0gaXRlbS5sb25nX25hbWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpdGVtLnR5cGVzLnNvbWUodHlwZSA9PiB0eXBlID09PSAnbG9jYWxpdHknKSkge1xuICAgICAgICAgICAgICBuZXdBZGRyZXNzLmNpdHkgPSBpdGVtLmxvbmdfbmFtZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGl0ZW0udHlwZXMuc29tZSh0eXBlID0+IHR5cGUgPT09ICdwb3N0YWxfY29kZScpKSB7XG4gICAgICAgICAgICAgIG5ld0FkZHJlc3MuemlwID0gaXRlbS5sb25nX25hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyBBZGRyZXNzLlN0cmVldCBjb25zaXN0cyBmcm9tIG51bWJlciBhbmQgc3RyZWV0XG4gICAgICAgICAgY29uc3Qgc3RyZWV0TnVtYmVyID0gcmVzdWx0LmFkZHJlc3NfY29tcG9uZW50c1xuICAgICAgICAgICAgLmZpbmQoZWwgPT4gZWwudHlwZXMuc29tZSh0eXBlID0+IHR5cGUgPT09ICdzdHJlZXRfbnVtYmVyJykpO1xuXG4gICAgICAgICAgaWYgKHN0cmVldE51bWJlcikge1xuICAgICAgICAgICAgbmV3QWRkcmVzcy5zdHJlZXQgPSBzdHJlZXROdW1iZXIubG9uZ19uYW1lICsgJyAnO1xuICAgICAgICAgICAgc3RyZWV0U2hvcnROYW1lID0gc3RyZWV0TnVtYmVyLmxvbmdfbmFtZSArICcgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBuZXdBZGRyZXNzLmRlc2NyaXB0aW9uLm1hdGNoKC9eW1xcZC1dKy8pO1xuICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgIG5ld0FkZHJlc3Muc3RyZWV0ID0gbWF0Y2hbMF0gKyAnICc7XG4gICAgICAgICAgICAgIHN0cmVldFNob3J0TmFtZSA9IG1hdGNoWzBdICsgJyAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHN0cmVldEFkZHJlc3MgPSByZXN1bHQuYWRkcmVzc19jb21wb25lbnRzXG4gICAgICAgICAgICAuZmluZChlbCA9PiBlbC50eXBlcy5zb21lKHR5cGUgPT4gdHlwZSA9PT0gJ3JvdXRlJykpO1xuXG4gICAgICAgICAgaWYgKHN0cmVldEFkZHJlc3MpIHtcbiAgICAgICAgICAgIGlmICghbmV3QWRkcmVzcy5zdHJlZXQpIHtcbiAgICAgICAgICAgICAgbmV3QWRkcmVzcy5zdHJlZXQgPSBzdHJlZXRBZGRyZXNzLmxvbmdfbmFtZTtcbiAgICAgICAgICAgICAgc3RyZWV0U2hvcnROYW1lID0gc3RyZWV0QWRkcmVzcy5zaG9ydF9uYW1lO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbmV3QWRkcmVzcy5zdHJlZXQgKz0gc3RyZWV0QWRkcmVzcy5sb25nX25hbWU7XG4gICAgICAgICAgICAgIHN0cmVldFNob3J0TmFtZSArPSBzdHJlZXRBZGRyZXNzLnNob3J0X25hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQ2hlY2tpbmcgY29ycmVjdCBwbGFjZSBOQU1FXG4gICAgICAgICAgaWYgKG5ld0FkZHJlc3MuY291bnRyeSAhPT0gcmVzdWx0Lm5hbWUgJiZcbiAgICAgICAgICAgICAgY291bnRyeUxvbmdOYW1lICE9PSByZXN1bHQubmFtZSAmJlxuICAgICAgICAgICAgICBuZXdBZGRyZXNzLnJlZ2lvbiAhPT0gcmVzdWx0Lm5hbWUgJiZcbiAgICAgICAgICAgICAgcmVnaW9uTG9uZ05hbWUgIT09IHJlc3VsdC5uYW1lICYmXG4gICAgICAgICAgICAgIG5ld0FkZHJlc3MuY2l0eSAhPT0gcmVzdWx0Lm5hbWUgJiZcbiAgICAgICAgICAgICAgc3RyZWV0U2hvcnROYW1lICE9PSByZXN1bHQubmFtZSAmJlxuICAgICAgICAgICAgICBuZXdBZGRyZXNzLnppcCAhPT0gcmVzdWx0Lm5hbWUgJiZcbiAgICAgICAgICAgICAgbmV3QWRkcmVzcy5zdHJlZXQgIT09IHJlc3VsdC5uYW1lKSB7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5uYW1lICYmIHRoaXMuY29uZmlnLm5hbWUudmlzaWJsZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgbmV3QWRkcmVzcy5uYW1lID0gcmVzdWx0Lm5hbWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3QWRkcmVzcy5uYW1lID0gJyc7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZShuZXdBZGRyZXNzKTtcbiAgICAgICAgICB0aGlzLmFkZHJlc3NDaGFuZ2UuZW1pdChuZXdBZGRyZXNzKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuYWRkcmVzcyA9IG5ld0FkZHJlc3M7XG4gICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB0aGlzLnJldmFsaWRhdGUoKTtcbiAgICB9LCAoKSA9PiB7XG5cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1cygpIHtcbiAgICB0aGlzLnNlbGVjdGluZyA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgZnVuY3Rpb25Qcm9taXNlID0gKCkgPT4ge1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0aW5nID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICAgIGNvbnN0IHJlcXVpcmVkRmllbGQgPSBbXTtcbiAgICAgICAgY29uc3QgcGFydHMgPSBbJ25hbWUnLCAnc3RyZWV0JywgJ2NpdHknLCAncmVnaW9uJywgJ3ppcCcsICdjb3VudHJ5J107XG5cbiAgICAgICAgcGFydHMuZm9yRWFjaChwYXJ0ID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5jb25maWdbcGFydF0gJiYgdGhpcy5jb25maWdbcGFydF0ucmVxdWlyZWQgJiYgIXRoaXMuYWRkcmVzc1twYXJ0XSkge1xuICAgICAgICAgICAgcmVxdWlyZWRGaWVsZC5wdXNoKFtwYXJ0XSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoKCh0aGlzLmNvbmZpZy5sYXQgJiYgdGhpcy5jb25maWcubGF0LnJlcXVpcmVkKSB8fFxuICAgICAgICAgICAgKHRoaXMuY29uZmlnLmxuZyAmJiB0aGlzLmNvbmZpZy5sbmcucmVxdWlyZWQpKSAmJlxuICAgICAgICAgICAgKCF0aGlzLmFkZHJlc3MubGF0IHx8ICF0aGlzLmFkZHJlc3MubGF0KSkge1xuICAgICAgICAgIHJlcXVpcmVkRmllbGQucHVzaCgncG9zaXRpb24gb24gbWFwJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVxdWlyZWRGaWVsZC5sZW5ndGgpIHtcbiAgICAgICAgICBpZiAocmVxdWlyZWRGaWVsZC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJlamVjdChgVGhlICR7cmVxdWlyZWRGaWVsZFswXX0gaXMgcmVxdWlyZWRgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbGFzdCA9IHJlcXVpcmVkRmllbGQucG9wKCk7XG4gICAgICAgICAgICByZWplY3QoYFRoZSAke3JlcXVpcmVkRmllbGQuam9pbignLCAnKX0gYW5kICR7bGFzdH0gYXJlIHJlcXVpcmVkYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIHB1YmxpYyBjbGVhcigpIHtcbiAgICB0aGlzLnNob3dDbGVhciA9IGZhbHNlO1xuICAgIHRoaXMubG9jYXRpb24gPSBudWxsO1xuICAgIHRoaXMuYWRkcmVzcyA9IHRoaXMuX2NyZWF0ZUFkZHJlc3MoKTtcbiAgICB0aGlzLmlucHV0QWRkcmVzcyA9ICcnO1xuICAgIHRoaXMuY2xlYXJlZC5lbWl0KHRoaXMuX2NyZWF0ZUFkZHJlc3MoKSk7XG4gICAgdGhpcy5hZGRyZXNzQ2hhbmdlLmVtaXQodGhpcy5fY3JlYXRlQWRkcmVzcygpKTtcbiAgfVxuXG4gIHB1YmxpYyBlZGl0KCkge1xuXG4gICAgaWYgKCF0aGlzLmVkaXRhYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5lZGl0ZWQuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlQWRkcmVzcygpOiBGc0FkZHJlc3Mge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgIGNvdW50cnk6ICcnLFxuICAgICAgcmVnaW9uOiAnJyxcbiAgICAgIGNpdHk6ICcnLFxuICAgICAgc3RyZWV0OiAnJyxcbiAgICAgIHppcDogJycsXG4gICAgICBsYXQ6IG51bGwsXG4gICAgICBsbmc6IG51bGwsXG4gICAgfTtcbiAgfVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvYWRkcmVzcy8iLCJzb3VyY2VzIjpbImFwcC9jb21wb25lbnRzL2FkZHJlc3Mtc2VhcmNoL2FkZHJlc3Mtc2VhcmNoLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUlOLE1BQU0sRUFDTixTQUFTLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQ3RELE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUkxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFLaEU7SUEwREUsa0NBQ1UsY0FBNkIsRUFDN0IsT0FBZSxFQUNmLE9BQWUsRUFDZixNQUF5QjtRQUpuQyxpQkFjQztRQWJTLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFyRDFC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Z0NBQ0wsTUFBTTtrQ0FFTixTQUFTLFNBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dDQUM3QyxTQUFTLFNBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTswQkFDekMsU0FBUyxTQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTsrQkFDbEQsU0FBUyxTQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOztJQTJTMUUsK0JBQUM7Q0FBQSxBQW5WRCxJQW1WQztTQTVVWSx3QkFBd0I7OztJQUVuQywwQ0FBd0M7O0lBQ3hDLDRDQUEwQjs7SUFDMUIsNENBQTBCOztJQW9CMUIsd0NBQXFCOztJQUNyQiwyQ0FBK0Q7O0lBQy9ELDBDQUE4RDs7SUFDOUQsMkNBQWlDOztJQUNqQyxpREFBNkM7O0lBRTdDLG1EQUE0Rjs7SUFDNUYsaURBQXNFOztJQUN0RSwyQ0FBcUY7O0lBQ3JGLGdEQUErRzs7SUFFL0csZ0RBQW9COztJQUNwQiw2Q0FBeUI7O0lBQ3pCLCtDQUErQjs7SUFDL0IsNkNBQXlCOztJQUN6Qiw2REFBd0M7O0lBQ3hDLHVEQUFrQzs7SUFDbEMsNENBQXFCOztJQUNyQiw0Q0FBd0I7O0lBQ3hCLGdEQUEyQjs7SUFDM0IsNENBQXVCOztJQUN2QixvREFBdUQ7Ozs7O0lBRXZELDJEQUFxRDs7Ozs7SUFDckQsNkNBQXdDOzs7OztJQUN4QywyQ0FBdUM7O0lBNkR2QyxzREFRYzs7SUFtSmQsbURBa0NFOzs7OztJQXZQQSxrREFBcUM7Ozs7O0lBQ3JDLDJDQUF1Qjs7Ozs7SUFDdkIsMkNBQXVCOzs7OztJQUN2QiwwQ0FBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTmdGb3JtLCBDb250cm9sQ29udGFpbmVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5cbmltcG9ydCB7IE1hcHNBUElMb2FkZXIgfSBmcm9tICdAYWdtL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGd1aWQgfSBmcm9tICdAZmlyZXN0aXRjaC9jb21tb24nO1xuXG5pbXBvcnQgeyBGc0FkZHJlc3MgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2FkZHJlc3MuaW50ZXJmYWNlJztcbmltcG9ydCB7IElGc0FkZHJlc3NDb25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2FkZHJlc3MtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBZGRyZXNzRm9ybWF0IH0gZnJvbSAnLi4vLi4vZW51bXMvYWRkcmVzcy1mb3JtYXQuZW51bSc7XG5cbmRlY2xhcmUgdmFyIGdvb2dsZTogYW55O1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWFkZHJlc3Mtc2VhcmNoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZHJlc3Mtc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWRkcmVzcy1zZWFyY2guY29tcG9uZW50LnNjc3MnXSxcbiAgdmlld1Byb3ZpZGVyczogWyB7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBOZ0Zvcm0gfSBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRnNBZGRyZXNzU2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgZm9ybWF0ID0gQWRkcmVzc0Zvcm1hdC5Ud29MaW5lO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyAgc2V0IGNvbmZpZyh2YWx1ZTogSUZzQWRkcmVzc0NvbmZpZykge1xuICAgIHRoaXMuX2NvbmZpZyA9IHZhbHVlO1xuICAgIGlmICh0aGlzLl9jb25maWcpIHtcbiAgICAgIHRoaXMucmVxdWlyZWQgPVxuICAgICAgKCAodGhpcy5jb25maWcubmFtZSAmJiB0aGlzLmNvbmZpZy5uYW1lLnJlcXVpcmVkKSB8fFxuICAgICAgICAodGhpcy5jb25maWcuY291bnRyeSAmJiB0aGlzLmNvbmZpZy5jb3VudHJ5LnJlcXVpcmVkKSB8fFxuICAgICAgICAodGhpcy5jb25maWcucmVnaW9uICYmIHRoaXMuY29uZmlnLnJlZ2lvbi5yZXF1aXJlZCkgfHxcbiAgICAgICAgKHRoaXMuY29uZmlnLmNpdHkgJiYgdGhpcy5jb25maWcuY2l0eS5yZXF1aXJlZCkgfHxcbiAgICAgICAgKHRoaXMuY29uZmlnLnN0cmVldCAmJiB0aGlzLmNvbmZpZy5zdHJlZXQucmVxdWlyZWQpIHx8XG4gICAgICAgICh0aGlzLmNvbmZpZy5hZGRyZXNzMiAmJiB0aGlzLmNvbmZpZy5hZGRyZXNzMi5yZXF1aXJlZCkgfHxcbiAgICAgICAgKHRoaXMuY29uZmlnLnppcCAmJiB0aGlzLmNvbmZpZy56aXAucmVxdWlyZWQpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbmZpZygpOiBJRnNBZGRyZXNzQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnO1xuICB9XG5cbiAgQElucHV0KCkgbmFtZSA9IHRydWU7XG4gIEBPdXRwdXQoKSBjbGVhcmVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZWRpdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBhZGRyZXNzOiBGc0FkZHJlc3MgPSB7fTtcbiAgQE91dHB1dCgpIGFkZHJlc3NDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoRm9ybUZpZWxkJywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIHNlYXJjaEZvcm1GaWVsZDogTWF0Rm9ybUZpZWxkID0gbnVsbDtcbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBzZWFyY2hFbGVtZW50OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsIHsgc3RhdGljOiB0cnVlIH0pIHRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXI7XG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0JywgeyByZWFkOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyLCBzdGF0aWM6IHRydWUgfSkgYXV0b0NvbXBsZXRlOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyO1xuXG4gIHB1YmxpYyBpbnB1dEFkZHJlc3M7XG4gIHB1YmxpYyBzaG93Q2xlYXIgPSBmYWxzZTtcbiAgcHVibGljIHByZWRpY3Rpb25zOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgc2VsZWN0aW5nID0gZmFsc2U7XG4gIHB1YmxpYyBnb29nbGVBdXRvY29tcGxldGVTZXJ2aWNlID0gbnVsbDtcbiAgcHVibGljIGdvb2dsZVBsYWNlc1NlcnZpY2UgPSBudWxsO1xuICBwdWJsaWMgbG9jYXRpb24gPSAnJztcbiAgcHVibGljIHJlcXVpcmVkID0gZmFsc2U7XG4gIHB1YmxpYyBlbXB0eUFkZHJlc3MgPSB0cnVlO1xuICBwdWJsaWMgZWRpdGFibGUgPSB0cnVlO1xuICBwdWJsaWMgYXV0b2NvbXBsZXRlTmFtZSA9IGBzZWFyY2gtJHtndWlkKCd4eHh4eHh4eCcpfWA7XG5cbiAgcHJpdmF0ZSBfY2hhbmdlQWRkcmVzc0RlYm91bmNlJCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9jb25maWc6IElGc0FkZHJlc3NDb25maWcgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9tYXBzQVBJTG9hZGVyOiBNYXBzQVBJTG9hZGVyLFxuICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgX25nRm9ybTogTmdGb3JtLFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7XG4gICAgdGhpcy5fY2hhbmdlQWRkcmVzc0RlYm91bmNlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlUHJlZGljdGlvbnModmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmV2YWxpZGF0ZSgpIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5fbmdGb3JtLmNvbnRyb2xzW3RoaXMuYXV0b2NvbXBsZXRlTmFtZV07XG4gICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgY29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5hZGRyZXNzKSB7XG4gICAgICB0aGlzLmNhbGN1bGF0ZUFkZHJlc3MoKTtcbiAgICAgIHRoaXMuc2hvd0NsZWFyID0gIXRoaXMuZW1wdHlBZGRyZXNzO1xuICAgIH1cblxuICAgIHRoaXMuZWRpdGFibGUgPSAhdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkb25seTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZUFkZHJlc3MoKTtcbiAgICB0aGlzLmluaXRHb29nbGVNYXAoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlQWRkcmVzcygpIHtcbiAgICB0aGlzLmVtcHR5QWRkcmVzcyA9ICF0aGlzLmFkZHJlc3MgfHwgKCEodGhpcy5hZGRyZXNzLm5hbWUpICYmICEodGhpcy5hZGRyZXNzLnN0cmVldCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICEodGhpcy5hZGRyZXNzLmNpdHkpICYmICEodGhpcy5hZGRyZXNzLnJlZ2lvbikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICEodGhpcy5hZGRyZXNzLnppcCkgJiYgISh0aGlzLmFkZHJlc3MuY291bnRyeSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0R29vZ2xlTWFwKCkge1xuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLl9tYXBzQVBJTG9hZGVyXG4gICAgICAgIC5sb2FkKClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZ29vZ2xlQXV0b2NvbXBsZXRlU2VydmljZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlU2VydmljZSgpO1xuICAgICAgICAgIHRoaXMuZ29vZ2xlUGxhY2VzU2VydmljZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZSh0aGlzLnNlYXJjaEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGF1dG9jb21wbGV0ZUZvcm1hdCA9ICgodmFsdWUpID0+IHtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlLmRlc2NyaXB0aW9uXG4gICAgfSBlbHNlIGlmICghdGhpcy5lbXB0eUFkZHJlc3MpIHtcbiAgICAgIHJldHVybiAnICc7XG4gICAgfVxuXG4gIH0pLmJpbmQodGhpcyk7XG5cbiAgcHJpdmF0ZSB1cGRhdGVQcmVkaWN0aW9ucyh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSAmJiB0aGlzLmdvb2dsZUF1dG9jb21wbGV0ZVNlcnZpY2UpIHtcblxuICAgICAgdGhpcy5nb29nbGVBdXRvY29tcGxldGVTZXJ2aWNlLmdldFBsYWNlUHJlZGljdGlvbnMoXG4gICAgICAgIHtpbnB1dDogdmFsdWV9LFxuICAgICAgICAocHJlZGljdGlvbnMsIHN0YXR1cykgPT4ge1xuICAgICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcmVkaWN0aW9ucy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZVN0YXR1cy5PSyAmJlxuICAgICAgICAgICAgICAgIHN0YXR1cyAhPSBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZVN0YXR1cy5aRVJPX1JFU1VMVFMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnByZWRpY3Rpb25zID0gcHJlZGljdGlvbnMgPyBwcmVkaWN0aW9ucy5zbGljZSgpIDogW107XG4gICAgICAgICAgICB0aGlzLnByZWRpY3Rpb25zLnB1c2goeyBkZXNjcmlwdGlvbjogYEp1c3QgdXNlIFwiJHt2YWx1ZX1cImAsIGlkOiAxLCBuYW1lOiB2YWx1ZSB9KTtcbiAgICAgICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZHJlc3NDaGFuZ2VkKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IEVOVEVSKSB7IHJldHVybjsgfVxuICAgIHRoaXMuX2NoYW5nZUFkZHJlc3NEZWJvdW5jZSQubmV4dChldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlKTtcbiAgICB0aGlzLmF1dG9Db21wbGV0ZS5vcGVuUGFuZWwoKTtcbiAgfVxuXG4gIHB1YmxpYyBhdXRvY29tcGxldGVTZWxlY3RlZChvcHRpb24pIHtcblxuICAgIGNvbnN0IHBsYWNlID0gb3B0aW9uLnZhbHVlO1xuICAgIGNvbnN0IG5ld0FkZHJlc3M6IEZzQWRkcmVzcyA9IHRoaXMuX2NyZWF0ZUFkZHJlc3MoKTtcbiAgICB0aGlzLmVtcHR5QWRkcmVzcyA9IHRydWU7XG5cbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcblxuICAgICAgLy8gd2hlbiBzb21ldGhpbmcgd2VudCB3cm9uZ1xuICAgICAgaWYgKCFwbGFjZSB8fCAhdGhpcy5nb29nbGVQbGFjZXNTZXJ2aWNlKSB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH1cblxuICAgICAgLy8gd2hlbiBpdCdzIG5vdCBhbiBhZGRyZXNzIGl0J3MgXCJKdXN0IHVzZVwiIGNhc2VcbiAgICAgIGlmIChwbGFjZSAmJiAhcGxhY2UucGxhY2VfaWQpIHtcbiAgICAgICAgdGhpcy5hZGRyZXNzQ2hhbmdlLmVtaXQocGxhY2UpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9XG5cbiAgICAgIG5ld0FkZHJlc3MuZGVzY3JpcHRpb24gPSBwbGFjZS5kZXNjcmlwdGlvbjtcbiAgICAgIHRoaXMuZ29vZ2xlUGxhY2VzU2VydmljZS5nZXREZXRhaWxzKHBsYWNlLCAocmVzdWx0LCBzdGF0dXMpID0+IHtcbiAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XG5cbiAgICAgICAgICBpZiAoc3RhdHVzICE9IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlU3RhdHVzLk9LKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5ld0FkZHJlc3MubGF0ID0gcmVzdWx0Lmdlb21ldHJ5LmxvY2F0aW9uLmxhdCgpO1xuICAgICAgICAgIG5ld0FkZHJlc3MubG5nID0gcmVzdWx0Lmdlb21ldHJ5LmxvY2F0aW9uLmxuZygpO1xuXG4gICAgICAgICAgbGV0IGNvdW50cnlMb25nTmFtZSwgcmVnaW9uTG9uZ05hbWUsIHN0cmVldFNob3J0TmFtZTtcblxuICAgICAgICAgIC8vIEZpbmRpbmcgZGlmZmVyZW50IHBhcnRzIG9mIGFkZHJlc3NcbiAgICAgICAgICByZXN1bHQuYWRkcmVzc19jb21wb25lbnRzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLnR5cGVzLnNvbWUodHlwZSA9PiB0eXBlID09PSAnY291bnRyeScpKSB7XG4gICAgICAgICAgICAgIG5ld0FkZHJlc3MuY291bnRyeSA9IGl0ZW0uc2hvcnRfbmFtZTtcbiAgICAgICAgICAgICAgY291bnRyeUxvbmdOYW1lID0gaXRlbS5sb25nX25hbWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpdGVtLnR5cGVzLnNvbWUodHlwZSA9PiB0eXBlID09PSAnYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8xJykpIHtcbiAgICAgICAgICAgICAgbmV3QWRkcmVzcy5yZWdpb24gPSBpdGVtLnNob3J0X25hbWU7XG4gICAgICAgICAgICAgIHJlZ2lvbkxvbmdOYW1lID0gaXRlbS5sb25nX25hbWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpdGVtLnR5cGVzLnNvbWUodHlwZSA9PiB0eXBlID09PSAnbG9jYWxpdHknKSkge1xuICAgICAgICAgICAgICBuZXdBZGRyZXNzLmNpdHkgPSBpdGVtLmxvbmdfbmFtZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGl0ZW0udHlwZXMuc29tZSh0eXBlID0+IHR5cGUgPT09ICdwb3N0YWxfY29kZScpKSB7XG4gICAgICAgICAgICAgIG5ld0FkZHJlc3MuemlwID0gaXRlbS5sb25nX25hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyBBZGRyZXNzLlN0cmVldCBjb25zaXN0cyBmcm9tIG51bWJlciBhbmQgc3RyZWV0XG4gICAgICAgICAgY29uc3Qgc3RyZWV0TnVtYmVyID0gcmVzdWx0LmFkZHJlc3NfY29tcG9uZW50c1xuICAgICAgICAgICAgLmZpbmQoZWwgPT4gZWwudHlwZXMuc29tZSh0eXBlID0+IHR5cGUgPT09ICdzdHJlZXRfbnVtYmVyJykpO1xuXG4gICAgICAgICAgaWYgKHN0cmVldE51bWJlcikge1xuICAgICAgICAgICAgbmV3QWRkcmVzcy5zdHJlZXQgPSBzdHJlZXROdW1iZXIubG9uZ19uYW1lICsgJyAnO1xuICAgICAgICAgICAgc3RyZWV0U2hvcnROYW1lID0gc3RyZWV0TnVtYmVyLmxvbmdfbmFtZSArICcgJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBuZXdBZGRyZXNzLmRlc2NyaXB0aW9uLm1hdGNoKC9eW1xcZC1dKy8pO1xuICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgIG5ld0FkZHJlc3Muc3RyZWV0ID0gbWF0Y2hbMF0gKyAnICc7XG4gICAgICAgICAgICAgIHN0cmVldFNob3J0TmFtZSA9IG1hdGNoWzBdICsgJyAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHN0cmVldEFkZHJlc3MgPSByZXN1bHQuYWRkcmVzc19jb21wb25lbnRzXG4gICAgICAgICAgICAuZmluZChlbCA9PiBlbC50eXBlcy5zb21lKHR5cGUgPT4gdHlwZSA9PT0gJ3JvdXRlJykpO1xuXG4gICAgICAgICAgaWYgKHN0cmVldEFkZHJlc3MpIHtcbiAgICAgICAgICAgIGlmICghbmV3QWRkcmVzcy5zdHJlZXQpIHtcbiAgICAgICAgICAgICAgbmV3QWRkcmVzcy5zdHJlZXQgPSBzdHJlZXRBZGRyZXNzLmxvbmdfbmFtZTtcbiAgICAgICAgICAgICAgc3RyZWV0U2hvcnROYW1lID0gc3RyZWV0QWRkcmVzcy5zaG9ydF9uYW1lO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbmV3QWRkcmVzcy5zdHJlZXQgKz0gc3RyZWV0QWRkcmVzcy5sb25nX25hbWU7XG4gICAgICAgICAgICAgIHN0cmVldFNob3J0TmFtZSArPSBzdHJlZXRBZGRyZXNzLnNob3J0X25hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQ2hlY2tpbmcgY29ycmVjdCBwbGFjZSBOQU1FXG4gICAgICAgICAgaWYgKG5ld0FkZHJlc3MuY291bnRyeSAhPT0gcmVzdWx0Lm5hbWUgJiZcbiAgICAgICAgICAgICAgY291bnRyeUxvbmdOYW1lICE9PSByZXN1bHQubmFtZSAmJlxuICAgICAgICAgICAgICBuZXdBZGRyZXNzLnJlZ2lvbiAhPT0gcmVzdWx0Lm5hbWUgJiZcbiAgICAgICAgICAgICAgcmVnaW9uTG9uZ05hbWUgIT09IHJlc3VsdC5uYW1lICYmXG4gICAgICAgICAgICAgIG5ld0FkZHJlc3MuY2l0eSAhPT0gcmVzdWx0Lm5hbWUgJiZcbiAgICAgICAgICAgICAgc3RyZWV0U2hvcnROYW1lICE9PSByZXN1bHQubmFtZSAmJlxuICAgICAgICAgICAgICBuZXdBZGRyZXNzLnppcCAhPT0gcmVzdWx0Lm5hbWUgJiZcbiAgICAgICAgICAgICAgbmV3QWRkcmVzcy5zdHJlZXQgIT09IHJlc3VsdC5uYW1lKSB7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5uYW1lICYmIHRoaXMuY29uZmlnLm5hbWUudmlzaWJsZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgbmV3QWRkcmVzcy5uYW1lID0gcmVzdWx0Lm5hbWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3QWRkcmVzcy5uYW1lID0gJyc7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZShuZXdBZGRyZXNzKTtcbiAgICAgICAgICB0aGlzLmFkZHJlc3NDaGFuZ2UuZW1pdChuZXdBZGRyZXNzKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuYWRkcmVzcyA9IG5ld0FkZHJlc3M7XG4gICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB0aGlzLnJldmFsaWRhdGUoKTtcbiAgICB9LCAoKSA9PiB7XG5cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1cygpIHtcbiAgICB0aGlzLnNlbGVjdGluZyA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgZnVuY3Rpb25Qcm9taXNlID0gKCkgPT4ge1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0aW5nID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICAgIGNvbnN0IHJlcXVpcmVkRmllbGQgPSBbXTtcbiAgICAgICAgY29uc3QgcGFydHMgPSBbJ25hbWUnLCAnc3RyZWV0JywgJ2NpdHknLCAncmVnaW9uJywgJ3ppcCcsICdjb3VudHJ5J107XG5cbiAgICAgICAgcGFydHMuZm9yRWFjaChwYXJ0ID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5jb25maWdbcGFydF0gJiYgdGhpcy5jb25maWdbcGFydF0ucmVxdWlyZWQgJiYgIXRoaXMuYWRkcmVzc1twYXJ0XSkge1xuICAgICAgICAgICAgcmVxdWlyZWRGaWVsZC5wdXNoKFtwYXJ0XSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoKCh0aGlzLmNvbmZpZy5sYXQgJiYgdGhpcy5jb25maWcubGF0LnJlcXVpcmVkKSB8fFxuICAgICAgICAgICAgKHRoaXMuY29uZmlnLmxuZyAmJiB0aGlzLmNvbmZpZy5sbmcucmVxdWlyZWQpKSAmJlxuICAgICAgICAgICAgKCF0aGlzLmFkZHJlc3MubGF0IHx8ICF0aGlzLmFkZHJlc3MubGF0KSkge1xuICAgICAgICAgIHJlcXVpcmVkRmllbGQucHVzaCgncG9zaXRpb24gb24gbWFwJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVxdWlyZWRGaWVsZC5sZW5ndGgpIHtcbiAgICAgICAgICBpZiAocmVxdWlyZWRGaWVsZC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJlamVjdChgVGhlICR7cmVxdWlyZWRGaWVsZFswXX0gaXMgcmVxdWlyZWRgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbGFzdCA9IHJlcXVpcmVkRmllbGQucG9wKCk7XG4gICAgICAgICAgICByZWplY3QoYFRoZSAke3JlcXVpcmVkRmllbGQuam9pbignLCAnKX0gYW5kICR7bGFzdH0gYXJlIHJlcXVpcmVkYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIHB1YmxpYyBjbGVhcigpIHtcbiAgICB0aGlzLnNob3dDbGVhciA9IGZhbHNlO1xuICAgIHRoaXMubG9jYXRpb24gPSBudWxsO1xuICAgIHRoaXMuYWRkcmVzcyA9IHRoaXMuX2NyZWF0ZUFkZHJlc3MoKTtcbiAgICB0aGlzLmlucHV0QWRkcmVzcyA9ICcnO1xuICAgIHRoaXMuY2xlYXJlZC5lbWl0KHRoaXMuX2NyZWF0ZUFkZHJlc3MoKSk7XG4gICAgdGhpcy5hZGRyZXNzQ2hhbmdlLmVtaXQodGhpcy5fY3JlYXRlQWRkcmVzcygpKTtcbiAgfVxuXG4gIHB1YmxpYyBlZGl0KCkge1xuXG4gICAgaWYgKCF0aGlzLmVkaXRhYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5lZGl0ZWQuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlQWRkcmVzcygpOiBGc0FkZHJlc3Mge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgIGNvdW50cnk6ICcnLFxuICAgICAgcmVnaW9uOiAnJyxcbiAgICAgIGNpdHk6ICcnLFxuICAgICAgc3RyZWV0OiAnJyxcbiAgICAgIHppcDogJycsXG4gICAgICBsYXQ6IG51bGwsXG4gICAgICBsbmc6IG51bGwsXG4gICAgfTtcbiAgfVxufVxuIl19 |
{ | ||
"name": "@firestitch/address", | ||
"version": "8.2.1", | ||
"version": "8.2.2", | ||
"repository": { | ||
@@ -5,0 +5,0 @@ "type": "git", |
Sorry, the diff of this file is too big to display
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 too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
1294364
13049