@maplander/components 0.21.76 → 0.21.77
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/maplander-components.umd.js +12 -12
- package/bundles/maplander-components.umd.js.map +1 -1
- package/bundles/maplander-components.umd.min.js +2 -2
- package/bundles/maplander-components.umd.min.js.map +1 -1
- package/esm2015/lib/components/filters/filters.component.js +1 -1
- package/esm2015/lib/components/panorama-visor/panorama-visor.component.js +3 -3
- package/esm2015/lib/components/property/components/details/details.component.js +1 -1
- package/esm2015/lib/components/property/components/editor/editor.component.js +3 -3
- package/esm2015/lib/components/property/components/gallery/gallery.component.js +1 -1
- package/esm2015/lib/components/property/components/multimedia-uploader/multimedia-uploader.component.js +1 -1
- package/esm2015/lib/components/property/components/property/property.component.js +1 -1
- package/esm2015/lib/components/property/components/slideshow/slide-show.component.js +1 -1
- package/esm2015/lib/components/property/components/stats/stats.component.js +1 -1
- package/esm2015/lib/components/property-card/property-card.component.js +1 -1
- package/esm5/lib/components/filters/filters.component.js +1 -1
- package/esm5/lib/components/panorama-visor/panorama-visor.component.js +3 -3
- package/esm5/lib/components/property/components/details/details.component.js +1 -1
- package/esm5/lib/components/property/components/editor/editor.component.js +3 -3
- package/esm5/lib/components/property/components/gallery/gallery.component.js +1 -1
- package/esm5/lib/components/property/components/multimedia-uploader/multimedia-uploader.component.js +1 -1
- package/esm5/lib/components/property/components/property/property.component.js +1 -1
- package/esm5/lib/components/property/components/slideshow/slide-show.component.js +1 -1
- package/esm5/lib/components/property/components/stats/stats.component.js +1 -1
- package/esm5/lib/components/property-card/property-card.component.js +1 -1
- package/fesm2015/maplander-components.js +12 -12
- package/fesm2015/maplander-components.js.map +1 -1
- package/fesm5/maplander-components.js +12 -12
- package/fesm5/maplander-components.js.map +1 -1
- package/maplander-components.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -536,13 +536,13 @@ export class EditorComponent {
|
|
|
536
536
|
EditorComponent.decorators = [
|
|
537
537
|
{ type: Component, args: [{
|
|
538
538
|
selector: 'lib-property-editor',
|
|
539
|
-
template: "<form class=\"editor\" [formGroup]=\"propertyForm\" autocomplete=\"off\">\r\n <div class=\"offering\">\r\n <p class=\"section_label\"><span>Tipo de oferta</span> <span>Informaci\u00F3n P\u00FAblica</span></p>\r\n <mat-button-toggle-group class=\"offering__toggle\" formControlName=\"offering\">\r\n <ng-container *ngFor=\"let offering of offeringTypeList\">\r\n <mat-button-toggle\r\n [disabled]=\"(propertyType === 'ROOM' && offering.value === 'SALE') || (propertyType === 'INVESTMENT' && offering.value === 'RENT')\"\r\n [value]=\"offering.value\">{{offering.name}}</mat-button-toggle>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n <ng-template [ngIf]=\"propertyForm.controls['offering'].value === 'RENT'\">\r\n <div class=\"direct-debit\">\r\n <mat-checkbox class=\"direct-debit__check-box\" formControlName=\"consumerReporting\">Domiciliaci\u00F3n</mat-checkbox>\r\n <mat-radio-group class=\"direct-debit__radio-group\" aria-label=\"Select an option\"\r\n formControlName=\"consumerReportingOption\"\r\n *ngIf=\"propertyForm.controls['consumerReporting'].value\">\r\n <mat-radio-button class=\"direct-debit__radio-button\" [value]=\"1\">Requerir certificado <br> de fiabilidad\r\n </mat-radio-button>\r\n <mat-radio-button class=\"direct-debit__radio-button\" [value]=\"2\">Requerir poliza <br> de arrendamiento\r\n </mat-radio-button>\r\n <p>\r\n Para mayor informaci\u00F3n de este servicio visite <br>\r\n <a href=\"https://www.burorentas.mx\">\r\n www.burorentas.mx\r\n </a>\r\n </p>\r\n <mat-error *ngIf=\"propertyForm.controls['consumerReportingOption'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-radio-group>\r\n </div>\r\n </ng-template>\r\n <div class=\"pricing\">\r\n <mat-form-field appearance=\"outline\" class=\"pricing__form-field\">\r\n <mat-label>Moneda</mat-label>\r\n <mat-select formControlName=\"currency\">\r\n <ng-container *ngFor=\"let currency of currencyList\">\r\n <mat-option [value]=\"currency.type\">{{currency.type}}</mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-error *ngIf=\"propertyForm.controls['currency'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"pricing__form-field\">\r\n <mat-label>Precio deseado</mat-label>\r\n <input libFormatPrice autocomplete=\"off\" matInput=\"\" type=\"text\" title=\"Max price\" formControlName=\"price\"\r\n [control]=\"propertyForm.controls['price']\" [currency]=\"propertyForm.get('currency').value\">\r\n <mat-error *ngIf=\"propertyForm.controls['price'].hasError('format')\">\r\n Debe ingresar solo numeros\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['price'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"pricing__form-field\">\r\n <mat-label>Precio m\u00EDnimo</mat-label>\r\n <input libFormatPrice autocomplete=\"off\" matInput=\"\" type=\"text\" title=\"Min price\" formControlName=\"minPrice\"\r\n [control]=\"propertyForm.controls['minPrice']\" [currency]=\"propertyForm.get('currency').value\">\r\n <mat-error *ngIf=\"propertyForm.controls['minPrice'].hasError('minPriceInvalid')\">\r\n Este valor debe ser menor al precio deseado\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['minPrice'].hasError('format')\">\r\n Debe ingresar solo numeros\r\n </mat-error>\r\n </mat-form-field>\r\n <div class=\"pricing__maintenance-fee\" *ngIf=\"propertyType !== 'INVESTMENT' && propertyType !== 'LAND'\">\r\n <mat-checkbox formControlName=\"maintenance\">Tiene cuota de mantenimiento\r\n </mat-checkbox>\r\n <mat-form-field appearance=\"outline\" class=\"pricing__form-field\"\r\n *ngIf=\"propertyForm.controls['maintenance'].value\">\r\n <mat-label>Cuota de mantenimiento</mat-label>\r\n <input autocomplete=\"off\" matInput type=\"text\" libFormatPrice title=\"Price\"\r\n [control]=\"propertyForm.controls['maintenancePrice']\"\r\n [currency]=\"propertyForm.get('currency').value\"\r\n formControlName=\"maintenancePrice\">\r\n <mat-error *ngIf=\"propertyForm.controls['maintenancePrice'].hasError('format')\">\r\n Debe ingresar solo numeros\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['maintenancePrice'].hasError('required')\">\r\n Esta campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"sku__maintenance-fee\">\r\n <mat-form-field appearance=\"outline\" class=\"sku__form-field\">\r\n <mat-label>SKU</mat-label>\r\n <input matInput=\"\" title=\"SKU\" formControlName=\"sku\">\r\n <mat-error *ngIf=\"propertyForm.controls['sku'].hasError('pattern')\">\r\n SKU invalida\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <ng-template [ngIf]=\"propertyForm.controls['offering'].value === 'RENT' && propertyType !== 'INVESTMENT'\">\r\n <div class=\"pricing__maintenance-fee\" *ngIf=\"propertyType !== 'ROOM'\">\r\n <mat-checkbox formControlName=\"transfer\">Traspaso\r\n </mat-checkbox>\r\n <mat-form-field appearance=\"outline\" class=\"pricing__form-field\"\r\n *ngIf=\"propertyForm.controls['transfer'].value\">\r\n <mat-label>Monto por traspaso</mat-label>\r\n <input autocomplete=\"off\" matInput type=\"text\" libFormatPrice\r\n title=\"Price\" [control]=\"propertyForm.controls['transferPrice']\"\r\n [currency]=\"propertyForm.get('currency').value\"\r\n formControlName=\"transferPrice\">\r\n <mat-error *ngIf=\"propertyForm.controls['transferPrice'].hasError('format')\">\r\n Debe ingresar solo numeros\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['transferPrice'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <hr>\r\n <div class=\"address\" formGroupName=\"address\">\r\n <p class=\"section_label\">\r\n Direcci\u00F3n\r\n <button mat-flat-button=\"\" type=\"button\" color=\"primary\" (click)=\"goToSelectAddress()\"\r\n class=\"address__label-button\">\r\n COLOCAR UBICACI\u00D3N EN EL MAPA\r\n </button>\r\n </p>\r\n <div class=\"address__body\">\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Pa\u00EDs</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Country\" formControlName=\"country\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>C\u00F3digo postal</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Postal code\" formControlName=\"postalCode\" type=\"number\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Entidad Federativa</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"State\" formControlName=\"state\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Ciudad</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"City\" formControlName=\"city\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Alcaldia/Municipio</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Township\" formControlName=\"township\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Colonia</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Colony\" formControlName=\"colony\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Vialidad</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Street\" formControlName=\"street\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>N\u00FAmero exterior</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"No exterior\" formControlName=\"extNumber\" type=\"number\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>N\u00FAmero interior</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"No interior\" formControlName=\"intNumber\" type=\"number\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Manzana</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Mz\" formControlName=\"mz\" type=\"number\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Lote</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Lt\" formControlName=\"lt\" type=\"number\">\r\n </mat-form-field>\r\n <div class=\"address__visibility\">\r\n <p class=\"section_label\">\r\n Ubicaci\u00F3n en el mapa\r\n </p>\r\n <div class=\"address__visibility-body\">\r\n <mat-radio-group formControlName=\"visible\" class=\"address__visibility-radio-group\">\r\n <mat-radio-button class=\"visibility-radio-group__button\" [value]=\"true\">\r\n Mostrar direcci\u00F3n exacta\r\n </mat-radio-button>\r\n <mat-radio-button class=\"visibility-radio-group__button\" [value]=\"false\">\r\n Mostrar direcci\u00F3n aproximada\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n <p class=\"visibility__about\">\r\n <span class=\"visibility__about-label\" [ngStyle]=\"{'font-weight': propertyForm.get('address.visible').value ? 'bold' : 'normal'}\">\r\n Mostrar direcci\u00F3n exacta: muestra el <br> lugar preciso en el mapa con un marcador.\r\n </span>\r\n <span class=\"visibility__about-label\" [ngStyle]=\"{'font-weight': !propertyForm.get('address.visible').value ? 'bold' : 'normal'}\">\r\n Mostrar direcci\u00F3n aproximada: reacomoda la ubicaci\u00F3n en un radio de 50 metros, ocultando calle y n\u00FAmero.\r\n </span>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <hr>\r\n <!-- Features [START], Only visible for all property types except INVESTMENT -->\r\n <div class=\"features\">\r\n <p class=\"section_label\">Caracteristicas</p>\r\n <div class=\"features__body\">\r\n <div class=\"features__item\" *ngIf=\"propertyType === 'HOUSE' || propertyType === 'APARTMENT'\">\r\n <span class=\"label__icon ic-features-bedroom\"></span>\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Habitaciones</mat-label>\r\n <input autocomplete=\"off\" matInput title=\"Bedrooms\" formControlName=\"bedrooms\" type=\"number\">\r\n <mat-error *ngIf=\"propertyForm.controls['bedrooms'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['bedrooms'].hasError('pattern')\">\r\n Valor invalido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"features__item features-item-bathrooms\"\r\n *ngIf=\"propertyType === 'HOUSE' || propertyType === 'APARTMENT' || propertyType === 'ROOM'\">\r\n <span class=\"label__icon ic-features-bathroom\"></span>\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Ba\u00F1os</mat-label>\r\n <input autocomplete=\"off\" title=\"Bathrooms\" matInput formControlName=\"bathrooms\" type=\"number\">\r\n <mat-error *ngIf=\"propertyForm.controls['bathrooms'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['bathrooms'].hasError('pattern')\">\r\n Valor invalido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"features__item features-item-parking-spaces\" *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <span class=\"label__icon ic-features-parking\"></span>\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Estacionamientos</mat-label>\r\n <input autocomplete=\"off\" title=\"Parking spaces\" matInput formControlName=\"parkingSpaces\" type=\"number\">\r\n <mat-error *ngIf=\"propertyForm.controls['parkingSpaces'].hasError('pattern')\">\r\n Valor invalido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <!-- Surfaces [START] Only visible for property type distinct INVESTMENT-->\r\n <div class=\"features__item features-item-surface\" *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <p class=\"features-item__label\">\r\n <span class=\"label__icon ic-features-surface\"></span>\r\n Superficie\r\n </p>\r\n <mat-radio-group class=\"features-item__radio-group\" formControlName=\"unit\">\r\n <mat-radio-button class=\"features-item__radio-button\" [value]=\"'M2'\">m<sup>2</sup></mat-radio-button>\r\n <mat-radio-button class=\"features-item__radio-button\" [value]=\"'FT2'\">sq ft</mat-radio-button>\r\n </mat-radio-group>\r\n <!--\r\n Build area [START]\r\n Only visible for HOUSE, APARTMENT, ROOM, OFFICE, RETAIL, WAREHOUSE and LAND property types\r\n -->\r\n <mat-form-field appearance=\"outline\"\r\n *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <mat-label>\r\n <ng-container [ngSwitch]=\"propertyType\">\r\n <span *ngSwitchDefault>Construida</span>\r\n <span *ngSwitchCase=\"'OFFICE'\">De Oficinas</span>\r\n <span *ngSwitchCase=\"'LAND'\">De Terreno</span>\r\n </ng-container>\r\n </mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Surface build\" formControlName=\"mainArea\" type=\"number\">\r\n <span matSuffix>\r\n <span *ngIf=\"propertyForm.controls['unit'].value === 'M2'\">m<sup>2</sup></span>\r\n <span *ngIf=\"propertyForm.controls['unit'].value === 'FT2'\">sq ft</span>\r\n </span>\r\n <mat-error *ngIf=\"propertyForm.controls['mainArea'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['mainArea'].hasError('pattern')\">\r\n Valor invalido\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Build area [END] -->\r\n <!--\r\n Secondary build area [START]\r\n Only visible for HOUSE, and WAREHOUSE\r\n -->\r\n <mat-form-field appearance=\"outline\"\r\n *ngIf=\"propertyType === 'HOUSE' || propertyType === 'WAREHOUSE'\">\r\n <mat-label>\r\n <ng-container [ngSwitch]=\"propertyType\">\r\n <span *ngSwitchCase=\"'HOUSE'\">De terreno</span>\r\n <span *ngSwitchCase=\"'WAREHOUSE'\">De oficinas</span>\r\n </ng-container>\r\n </mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Surface land build\" formControlName=\"secondaryArea\" type=\"number\">\r\n <span matSuffix>\r\n <span *ngIf=\"propertyForm.controls['unit'].value === 'M2'\">m<sup>2</sup></span>\r\n <span *ngIf=\"propertyForm.controls['unit'].value === 'FT2'\">sq ft</span>\r\n </span>\r\n <mat-error *ngIf=\"propertyForm.controls['secondaryArea'].hasError('pattern')\">\r\n Valor invalido\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Secondary build area [END]-->\r\n </div>\r\n <!-- Surfaces [END]-->\r\n <!-- Year build [START], Only visible for HOUSE, APARTMENT, ROOM, OFFICE, RETAIL and WAREHOUSE property types -->\r\n <div class=\"features__item\"\r\n *ngIf=\"propertyType === 'HOUSE' || propertyType === 'APARTMENT' || propertyType === 'ROOM' || propertyType === 'OFFICE' || propertyType === 'RETAIL' || propertyType === 'WAREHOUSE'\">\r\n <p class=\"features-item__label\">\r\n <span class=\"label__icon\"><mat-icon>event</mat-icon></span>\r\n A\u00F1o de construcci\u00F3n\r\n </p>\r\n <lib-property-custom-datepicker formControlName=\"buildIn\"></lib-property-custom-datepicker>\r\n </div>\r\n <!-- Year build [END] -->\r\n <!-- Land use [START], Only for LAND property type -->\r\n <div class=\"features__item\" *ngIf=\"propertyType === 'LAND'\">\r\n <p class=\"features-item__label\">\r\n <span class=\"label__icon ic-features-land-use\"></span>\r\n Uso de suelo\r\n </p>\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Tipo</mat-label>\r\n <mat-select formControlName=\"landUse\">\r\n <mat-option [value]=\"null\">\r\n Seleccione una opci\u00F3n\r\n </mat-option>\r\n <ng-container *ngFor=\"let use of landUseList\">\r\n <mat-option [value]=\"use.value\">\r\n {{use.name}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <!-- Land use [END] -->\r\n </div>\r\n </div>\r\n <!-- Features [END] -->\r\n <hr>\r\n <div class=\"agreement\">\r\n <p class=\"section_label\">Contrato</p>\r\n <div class=\"agreement__body\">\r\n <mat-form-field appearance=\"outline\" class=\"agreement__form-field\">\r\n <mat-label>Fecha de inicio</mat-label>\r\n <input autocomplete=\"off\" matInput formControlName=\"agreementDate\" [matDatepicker]=\"dp2\"\r\n placeholder=\"Seleccione una fecha\"\r\n title=\"Chose a date\">\r\n <mat-datepicker-toggle matSuffix [for]=\"dp2\"></mat-datepicker-toggle>\r\n <mat-datepicker #dp2 [disabled]=\"false\"></mat-datepicker>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"agreement__form-field\">\r\n <mat-label>Duraci\u00F3n</mat-label>\r\n <mat-select formControlName=\"duration\">\r\n <mat-option [value]=\"null\">\r\n Seleccione una opci\u00F3n\r\n </mat-option>\r\n <ng-container *ngFor=\"let time of durationList\">\r\n <mat-option [value]=\"time\">\r\n <ng-container [ngSwitch]=\"time\">\r\n <span *ngSwitchCase=\"365\">1 a\u00F1o</span>\r\n <span *ngSwitchCase=\"180\">6 meses</span>\r\n <span *ngSwitchDefault>{{time}} d\u00EDas</span>\r\n </ng-container>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"agreement__form-field\">\r\n <mat-label>Comisi\u00F3n</mat-label>\r\n <mat-select formControlName=\"commission\">\r\n <mat-option [value]=\"null\">\r\n Seleccione una opci\u00F3n\r\n </mat-option>\r\n <ng-container *ngFor=\"let commission of commissionList\">\r\n <mat-option [value]=\"commission\">\r\n <span *ngIf=\"propertyForm.controls['offering'].value === 'RENT'\">\r\n <ng-container [ngSwitch]=\"commission\">\r\n <span *ngSwitchCase=\"1\">1 mes = {{propertyForm.controls['price'].value * commission | currency : '' : 'symbol' : '1.0-0'}}</span>\r\n <span *ngSwitchDefault>\r\n {{commission}} meses = {{propertyForm.controls['price'].value * commission | currency : '' : 'symbol' : '1.0-0'}}\r\n </span>\r\n </ng-container>\r\n </span>\r\n <span *ngIf=\"propertyForm.controls['offering'].value === 'SALE'\">\r\n <span>{{commission * 100 | currency: '' : '': '1.1-1'}}\r\n % = {{propertyForm.controls['price'].value * commission | currency : '' : 'symbol' : '1.0-0'}}</span>\r\n </span>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-error *ngIf=\"propertyForm.controls['commission'].hasError('commissionInvalid')\">\r\n Es necesario ingresar el precio deseado\r\n </mat-error>\r\n </mat-form-field>\r\n <ng-template [ngIf]=\"propertyType === 'INVESTMENT'\">\r\n <mat-form-field appearance=\"outline\" class=\"investment-return__form-field\">\r\n <mat-label>Retorno de Inversi\u00F3n</mat-label>\r\n <input autocomplete=\"off\" matInput title=\"Investment return\" formControlName=\"roi\" type=\"number\">\r\n <span matSuffix>%</span>\r\n </mat-form-field>\r\n </ng-template>\r\n <mat-checkbox class=\"agreement__body-check-box\" formControlName=\"exclusivity\">Contrato con exclusividad\r\n </mat-checkbox>\r\n <mat-checkbox class=\"agreement__body-check-box\" formControlName=\"mlm\">Quiero compartir en el {{mlsLabel || 'MLS'}}</mat-checkbox>\r\n <mat-form-field appearance=\"outline\" class=\"agreement__form-field\" *ngIf=\"propertyForm.controls['mlm'].value\">\r\n <mat-label>Monto de comisi\u00F3n compartida</mat-label>\r\n <mat-select formControlName=\"sharedCommission\">\r\n <mat-option [value]=\"null\">\r\n Seleccione una opci\u00F3n\r\n </mat-option>\r\n <ng-container *ngFor=\"let commission of sharedCommissionList\">\r\n <mat-option [value]=\"commission\">\r\n {{commission * 100}}% de mi comisi\u00F3n\r\n = {{propertyForm.controls['price'].value * propertyForm.controls['commission'].value * commission | currency : '' : 'symbol' : '1.0-0'}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-error *ngIf=\"propertyForm.controls['sharedCommission'].hasError('sharedCommissionInvalid')\">\r\n Debe seleccionar su comisi\u00F3n\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['sharedCommission'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <hr>\r\n <div class=\"description\">\r\n <p class=\"section_label\">Descripci\u00F3n</p>\r\n <mat-form-field appearance=\"outline\" class=\"description__form-field\">\r\n <textarea matInput=\"\" cdkTextareaAutosize title=\"Description\" formControlName=\"description\"></textarea>\r\n <mat-hint align=\"end\"><span>N\u00FAmero de caracteres ideal: 3500</span>\r\n Actuales: {{propertyForm.controls['description'].value ? propertyForm.controls['description'].value.length : 0}}\r\n </mat-hint>\r\n <mat-error *ngIf=\"propertyForm.controls['description'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"external-link\">\r\n <p class=\"section_label\">Tour virtual</p>\r\n <mat-form-field appearance=\"outline\" class=\"external-link__form-field\">\r\n <input matInput=\"\" title=\"externalLink\" formControlName=\"externalLink\">\r\n <mat-error *ngIf=\"propertyForm.controls['externalLink'].hasError('pattern')\">\r\n Url invalida\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"notes\">\r\n <p class=\"section_label\">Notas</p>\r\n <mat-form-field appearance=\"outline\" class=\"notes__form-field\">\r\n <textarea matInput=\"\" cdkTextareaAutosize title=\"Notes\" formControlName=\"notes\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n <hr *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <div class=\"amenities\" *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <p class=\"section_label\">Amenidades</p>\r\n <p class=\"amenities__list-amenities\">\r\n <ng-container *ngFor=\"let amenity of amenitiesList\">\r\n <span matRipple class=\"list-amenities__amenity\" (click)=\"updateAmenity(amenity)\">\r\n <span class=\"amenity__icon ic-amenities-{{amenity.iconName}}\"\r\n [ngClass]=\"{'amenity__icon-active': amenity.checked}\"></span>\r\n <span class=\"amenity__text\">{{amenity.name}}</span>\r\n </span>\r\n </ng-container>\r\n </p>\r\n </div>\r\n <div class=\"attributes\" *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <p class=\"section_label\">Caracteristicas de ubicaci\u00F3n</p>\r\n <p class=\"amenities__list-amenities\">\r\n <ng-container *ngFor=\"let feature of featuresList\">\r\n <span matRipple class=\"list-amenities__amenity\" (click)=\"updateAmenity(feature)\">\r\n <span class=\"amenity__icon ic-amenities-{{feature.iconName}}\"\r\n [ngClass]=\"{'amenity__icon-active': feature.checked}\"></span>\r\n <span class=\"amenity__text\">{{feature.name}}</span>\r\n </span>\r\n </ng-container>\r\n </p>\r\n </div>\r\n <button type=\"submit\" class=\"button-submit\" mat-button #btnSubmit>Enviar</button>\r\n</form>\r\n",
|
|
539
|
+
template: "<form class=\"editor\" [formGroup]=\"propertyForm\" autocomplete=\"off\">\r\n <div class=\"offering\">\r\n <p class=\"section_label\"><span>Tipo de oferta</span> <span>Informaci\u00F3n P\u00FAblica</span></p>\r\n <mat-button-toggle-group class=\"offering__toggle\" formControlName=\"offering\">\r\n <ng-container *ngFor=\"let offering of offeringTypeList\">\r\n <mat-button-toggle\r\n [disabled]=\"(propertyType === 'ROOM' && offering.value === 'SALE') || (propertyType === 'INVESTMENT' && offering.value === 'RENT')\"\r\n [value]=\"offering.value\">{{offering.name}}</mat-button-toggle>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n <ng-template [ngIf]=\"propertyForm.controls['offering'].value === 'RENT'\">\r\n <div class=\"direct-debit\">\r\n <mat-checkbox class=\"direct-debit__check-box\" formControlName=\"consumerReporting\">Domiciliaci\u00F3n</mat-checkbox>\r\n <mat-radio-group class=\"direct-debit__radio-group\" aria-label=\"Select an option\"\r\n formControlName=\"consumerReportingOption\"\r\n *ngIf=\"propertyForm.controls['consumerReporting'].value\">\r\n <mat-radio-button class=\"direct-debit__radio-button\" [value]=\"1\">Requerir certificado <br> de fiabilidad\r\n </mat-radio-button>\r\n <mat-radio-button class=\"direct-debit__radio-button\" [value]=\"2\">Requerir poliza <br> de arrendamiento\r\n </mat-radio-button>\r\n <p>\r\n Para mayor informaci\u00F3n de este servicio visite <br>\r\n <a href=\"https://www.burorentas.mx\">\r\n www.burorentas.mx\r\n </a>\r\n </p>\r\n <mat-error *ngIf=\"propertyForm.controls['consumerReportingOption'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-radio-group>\r\n </div>\r\n </ng-template>\r\n <div class=\"pricing\">\r\n <mat-form-field appearance=\"outline\" class=\"pricing__form-field\">\r\n <mat-label>Moneda</mat-label>\r\n <mat-select formControlName=\"currency\">\r\n <ng-container *ngFor=\"let currency of currencyList\">\r\n <mat-option [value]=\"currency.type\">{{currency.type}}</mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-error *ngIf=\"propertyForm.controls['currency'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"pricing__form-field\">\r\n <mat-label>Precio deseado</mat-label>\r\n <input libFormatPrice autocomplete=\"off\" matInput=\"\" type=\"text\" title=\"Max price\" formControlName=\"price\"\r\n [control]=\"propertyForm.controls['price']\" [currency]=\"propertyForm.get('currency').value\">\r\n <mat-error *ngIf=\"propertyForm.controls['price'].hasError('format')\">\r\n Debe ingresar solo n\u00FAmeros\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['price'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"pricing__form-field\">\r\n <mat-label>Precio m\u00EDnimo</mat-label>\r\n <input libFormatPrice autocomplete=\"off\" matInput=\"\" type=\"text\" title=\"Min price\" formControlName=\"minPrice\"\r\n [control]=\"propertyForm.controls['minPrice']\" [currency]=\"propertyForm.get('currency').value\">\r\n <mat-error *ngIf=\"propertyForm.controls['minPrice'].hasError('minPriceInvalid')\">\r\n Este valor debe ser menor al precio deseado\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['minPrice'].hasError('format')\">\r\n Debe ingresar solo n\u00FAmeros\r\n </mat-error>\r\n </mat-form-field>\r\n <div class=\"pricing__maintenance-fee\" *ngIf=\"propertyType !== 'INVESTMENT' && propertyType !== 'LAND'\">\r\n <mat-checkbox formControlName=\"maintenance\">Tiene cuota de mantenimiento\r\n </mat-checkbox>\r\n <mat-form-field appearance=\"outline\" class=\"pricing__form-field\"\r\n *ngIf=\"propertyForm.controls['maintenance'].value\">\r\n <mat-label>Cuota de mantenimiento</mat-label>\r\n <input autocomplete=\"off\" matInput type=\"text\" libFormatPrice title=\"Price\"\r\n [control]=\"propertyForm.controls['maintenancePrice']\"\r\n [currency]=\"propertyForm.get('currency').value\"\r\n formControlName=\"maintenancePrice\">\r\n <mat-error *ngIf=\"propertyForm.controls['maintenancePrice'].hasError('format')\">\r\n Debe ingresar solo n\u00FAmeros\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['maintenancePrice'].hasError('required')\">\r\n Esta campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"sku__maintenance-fee\">\r\n <mat-form-field appearance=\"outline\" class=\"sku__form-field\">\r\n <mat-label>SKU</mat-label>\r\n <input matInput=\"\" title=\"SKU\" formControlName=\"sku\">\r\n <mat-error *ngIf=\"propertyForm.controls['sku'].hasError('pattern')\">\r\n SKU invalida\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <ng-template [ngIf]=\"propertyForm.controls['offering'].value === 'RENT' && propertyType !== 'INVESTMENT'\">\r\n <div class=\"pricing__maintenance-fee\" *ngIf=\"propertyType !== 'ROOM'\">\r\n <mat-checkbox formControlName=\"transfer\">Traspaso\r\n </mat-checkbox>\r\n <mat-form-field appearance=\"outline\" class=\"pricing__form-field\"\r\n *ngIf=\"propertyForm.controls['transfer'].value\">\r\n <mat-label>Monto por traspaso</mat-label>\r\n <input autocomplete=\"off\" matInput type=\"text\" libFormatPrice\r\n title=\"Price\" [control]=\"propertyForm.controls['transferPrice']\"\r\n [currency]=\"propertyForm.get('currency').value\"\r\n formControlName=\"transferPrice\">\r\n <mat-error *ngIf=\"propertyForm.controls['transferPrice'].hasError('format')\">\r\n Debe ingresar solo n\u00FAmeros\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['transferPrice'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <hr>\r\n <div class=\"address\" formGroupName=\"address\">\r\n <p class=\"section_label\">\r\n Direcci\u00F3n\r\n <button mat-flat-button=\"\" type=\"button\" color=\"primary\" (click)=\"goToSelectAddress()\"\r\n class=\"address__label-button\">\r\n COLOCAR UBICACI\u00D3N EN EL MAPA\r\n </button>\r\n </p>\r\n <div class=\"address__body\">\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Pa\u00EDs</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Country\" formControlName=\"country\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>C\u00F3digo postal</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Postal code\" formControlName=\"postalCode\" type=\"number\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Entidad Federativa</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"State\" formControlName=\"state\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Ciudad</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"City\" formControlName=\"city\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Alcaldia/Municipio</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Township\" formControlName=\"township\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Colonia</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Colony\" formControlName=\"colony\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Vialidad</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Street\" formControlName=\"street\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>N\u00FAmero exterior</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"No exterior\" formControlName=\"extNumber\" type=\"number\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>N\u00FAmero interior</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"No interior\" formControlName=\"intNumber\" type=\"number\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Manzana</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Mz\" formControlName=\"mz\" type=\"number\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Lote</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Lt\" formControlName=\"lt\" type=\"number\">\r\n </mat-form-field>\r\n <div class=\"address__visibility\">\r\n <p class=\"section_label\">\r\n Ubicaci\u00F3n en el mapa\r\n </p>\r\n <div class=\"address__visibility-body\">\r\n <mat-radio-group formControlName=\"visible\" class=\"address__visibility-radio-group\">\r\n <mat-radio-button class=\"visibility-radio-group__button\" [value]=\"true\">\r\n Mostrar direcci\u00F3n exacta\r\n </mat-radio-button>\r\n <mat-radio-button class=\"visibility-radio-group__button\" [value]=\"false\">\r\n Mostrar direcci\u00F3n aproximada\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n <p class=\"visibility__about\">\r\n <span class=\"visibility__about-label\" [ngStyle]=\"{'font-weight': propertyForm.get('address.visible').value ? 'bold' : 'normal'}\">\r\n Mostrar direcci\u00F3n exacta: muestra el <br> lugar preciso en el mapa con un marcador.\r\n </span>\r\n <span class=\"visibility__about-label\" [ngStyle]=\"{'font-weight': !propertyForm.get('address.visible').value ? 'bold' : 'normal'}\">\r\n Mostrar direcci\u00F3n aproximada: reacomoda la ubicaci\u00F3n en un radio de 50 metros, ocultando calle y n\u00FAmero.\r\n </span>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <hr>\r\n <!-- Features [START], Only visible for all property types except INVESTMENT -->\r\n <div class=\"features\">\r\n <p class=\"section_label\">Caracteristicas</p>\r\n <div class=\"features__body\">\r\n <div class=\"features__item\" *ngIf=\"propertyType === 'HOUSE' || propertyType === 'APARTMENT'\">\r\n <span class=\"label__icon ic-features-bedroom\"></span>\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Habitaciones</mat-label>\r\n <input autocomplete=\"off\" matInput title=\"Bedrooms\" formControlName=\"bedrooms\" type=\"number\">\r\n <mat-error *ngIf=\"propertyForm.controls['bedrooms'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['bedrooms'].hasError('pattern')\">\r\n Valor invalido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"features__item features-item-bathrooms\"\r\n *ngIf=\"propertyType === 'HOUSE' || propertyType === 'APARTMENT' || propertyType === 'ROOM'\">\r\n <span class=\"label__icon ic-features-bathroom\"></span>\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Ba\u00F1os</mat-label>\r\n <input autocomplete=\"off\" title=\"Bathrooms\" matInput formControlName=\"bathrooms\" type=\"number\">\r\n <mat-error *ngIf=\"propertyForm.controls['bathrooms'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['bathrooms'].hasError('pattern')\">\r\n Valor invalido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"features__item features-item-parking-spaces\" *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <span class=\"label__icon ic-features-parking\"></span>\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Estacionamientos</mat-label>\r\n <input autocomplete=\"off\" title=\"Parking spaces\" matInput formControlName=\"parkingSpaces\" type=\"number\">\r\n <mat-error *ngIf=\"propertyForm.controls['parkingSpaces'].hasError('pattern')\">\r\n Valor invalido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <!-- Surfaces [START] Only visible for property type distinct INVESTMENT-->\r\n <div class=\"features__item features-item-surface\" *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <p class=\"features-item__label\">\r\n <span class=\"label__icon ic-features-surface\"></span>\r\n Superficie\r\n </p>\r\n <mat-radio-group class=\"features-item__radio-group\" formControlName=\"unit\">\r\n <mat-radio-button class=\"features-item__radio-button\" [value]=\"'M2'\">m<sup>2</sup></mat-radio-button>\r\n <mat-radio-button class=\"features-item__radio-button\" [value]=\"'FT2'\">sq ft</mat-radio-button>\r\n </mat-radio-group>\r\n <!--\r\n Build area [START]\r\n Only visible for HOUSE, APARTMENT, ROOM, OFFICE, RETAIL, WAREHOUSE and LAND property types\r\n -->\r\n <mat-form-field appearance=\"outline\"\r\n *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <mat-label>\r\n <ng-container [ngSwitch]=\"propertyType\">\r\n <span *ngSwitchDefault>Construida</span>\r\n <span *ngSwitchCase=\"'OFFICE'\">De Oficinas</span>\r\n <span *ngSwitchCase=\"'LAND'\">De Terreno</span>\r\n </ng-container>\r\n </mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Surface build\" formControlName=\"mainArea\" type=\"number\">\r\n <span matSuffix>\r\n <span *ngIf=\"propertyForm.controls['unit'].value === 'M2'\">m<sup>2</sup></span>\r\n <span *ngIf=\"propertyForm.controls['unit'].value === 'FT2'\">sq ft</span>\r\n </span>\r\n <mat-error *ngIf=\"propertyForm.controls['mainArea'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['mainArea'].hasError('pattern')\">\r\n Valor invalido\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Build area [END] -->\r\n <!--\r\n Secondary build area [START]\r\n Only visible for HOUSE, and WAREHOUSE\r\n -->\r\n <mat-form-field appearance=\"outline\"\r\n *ngIf=\"propertyType === 'HOUSE' || propertyType === 'WAREHOUSE'\">\r\n <mat-label>\r\n <ng-container [ngSwitch]=\"propertyType\">\r\n <span *ngSwitchCase=\"'HOUSE'\">De terreno</span>\r\n <span *ngSwitchCase=\"'WAREHOUSE'\">De oficinas</span>\r\n </ng-container>\r\n </mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Surface land build\" formControlName=\"secondaryArea\" type=\"number\">\r\n <span matSuffix>\r\n <span *ngIf=\"propertyForm.controls['unit'].value === 'M2'\">m<sup>2</sup></span>\r\n <span *ngIf=\"propertyForm.controls['unit'].value === 'FT2'\">sq ft</span>\r\n </span>\r\n <mat-error *ngIf=\"propertyForm.controls['secondaryArea'].hasError('pattern')\">\r\n Valor invalido\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Secondary build area [END]-->\r\n </div>\r\n <!-- Surfaces [END]-->\r\n <!-- Year build [START], Only visible for HOUSE, APARTMENT, ROOM, OFFICE, RETAIL and WAREHOUSE property types -->\r\n <div class=\"features__item\"\r\n *ngIf=\"propertyType === 'HOUSE' || propertyType === 'APARTMENT' || propertyType === 'ROOM' || propertyType === 'OFFICE' || propertyType === 'RETAIL' || propertyType === 'WAREHOUSE'\">\r\n <p class=\"features-item__label\">\r\n <span class=\"label__icon\"><mat-icon>event</mat-icon></span>\r\n A\u00F1o de construcci\u00F3n\r\n </p>\r\n <lib-property-custom-datepicker formControlName=\"buildIn\"></lib-property-custom-datepicker>\r\n </div>\r\n <!-- Year build [END] -->\r\n <!-- Land use [START], Only for LAND property type -->\r\n <div class=\"features__item\" *ngIf=\"propertyType === 'LAND'\">\r\n <p class=\"features-item__label\">\r\n <span class=\"label__icon ic-features-land-use\"></span>\r\n Uso de suelo\r\n </p>\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Tipo</mat-label>\r\n <mat-select formControlName=\"landUse\">\r\n <mat-option [value]=\"null\">\r\n Seleccione una opci\u00F3n\r\n </mat-option>\r\n <ng-container *ngFor=\"let use of landUseList\">\r\n <mat-option [value]=\"use.value\">\r\n {{use.name}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <!-- Land use [END] -->\r\n </div>\r\n </div>\r\n <!-- Features [END] -->\r\n <hr>\r\n <div class=\"agreement\">\r\n <p class=\"section_label\">Contrato</p>\r\n <div class=\"agreement__body\">\r\n <mat-form-field appearance=\"outline\" class=\"agreement__form-field\">\r\n <mat-label>Fecha de inicio</mat-label>\r\n <input autocomplete=\"off\" matInput formControlName=\"agreementDate\" [matDatepicker]=\"dp2\"\r\n placeholder=\"Seleccione una fecha\"\r\n title=\"Chose a date\">\r\n <mat-datepicker-toggle matSuffix [for]=\"dp2\"></mat-datepicker-toggle>\r\n <mat-datepicker #dp2 [disabled]=\"false\"></mat-datepicker>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"agreement__form-field\">\r\n <mat-label>Duraci\u00F3n</mat-label>\r\n <mat-select formControlName=\"duration\">\r\n <mat-option [value]=\"null\">\r\n Seleccione una opci\u00F3n\r\n </mat-option>\r\n <ng-container *ngFor=\"let time of durationList\">\r\n <mat-option [value]=\"time\">\r\n <ng-container [ngSwitch]=\"time\">\r\n <span *ngSwitchCase=\"365\">1 a\u00F1o</span>\r\n <span *ngSwitchCase=\"180\">6 meses</span>\r\n <span *ngSwitchDefault>{{time}} d\u00EDas</span>\r\n </ng-container>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"agreement__form-field\">\r\n <mat-label>Comisi\u00F3n</mat-label>\r\n <mat-select formControlName=\"commission\">\r\n <mat-option [value]=\"null\">\r\n Seleccione una opci\u00F3n\r\n </mat-option>\r\n <ng-container *ngFor=\"let commission of commissionList\">\r\n <mat-option [value]=\"commission\">\r\n <span *ngIf=\"propertyForm.controls['offering'].value === 'RENT'\">\r\n <ng-container [ngSwitch]=\"commission\">\r\n <span *ngSwitchCase=\"1\">1 mes = {{propertyForm.controls['price'].value * commission | currency : '' : 'symbol' : '1.0-0'}}</span>\r\n <span *ngSwitchDefault>\r\n {{commission}} meses = {{propertyForm.controls['price'].value * commission | currency : '' : 'symbol' : '1.0-0'}}\r\n </span>\r\n </ng-container>\r\n </span>\r\n <span *ngIf=\"propertyForm.controls['offering'].value === 'SALE'\">\r\n <span>{{commission * 100 | currency: '' : '': '1.1-1'}}\r\n % = {{propertyForm.controls['price'].value * commission | currency : '' : 'symbol' : '1.0-0'}}</span>\r\n </span>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-error *ngIf=\"propertyForm.controls['commission'].hasError('commissionInvalid')\">\r\n Es necesario ingresar el precio deseado\r\n </mat-error>\r\n </mat-form-field>\r\n <ng-template [ngIf]=\"propertyType === 'INVESTMENT'\">\r\n <mat-form-field appearance=\"outline\" class=\"investment-return__form-field\">\r\n <mat-label>Retorno de Inversi\u00F3n</mat-label>\r\n <input autocomplete=\"off\" matInput title=\"Investment return\" formControlName=\"roi\" type=\"number\">\r\n <span matSuffix>%</span>\r\n </mat-form-field>\r\n </ng-template>\r\n <mat-checkbox class=\"agreement__body-check-box\" formControlName=\"exclusivity\">Contrato con exclusividad\r\n </mat-checkbox>\r\n <mat-checkbox class=\"agreement__body-check-box\" formControlName=\"mlm\">Quiero compartir en el {{mlsLabel || 'MLS'}}</mat-checkbox>\r\n <mat-form-field appearance=\"outline\" class=\"agreement__form-field\" *ngIf=\"propertyForm.controls['mlm'].value\">\r\n <mat-label>Monto de comisi\u00F3n compartida</mat-label>\r\n <mat-select formControlName=\"sharedCommission\">\r\n <mat-option [value]=\"null\">\r\n Seleccione una opci\u00F3n\r\n </mat-option>\r\n <ng-container *ngFor=\"let commission of sharedCommissionList\">\r\n <mat-option [value]=\"commission\">\r\n {{commission * 100}}% de mi comisi\u00F3n\r\n = {{propertyForm.controls['price'].value * propertyForm.controls['commission'].value * commission | currency : '' : 'symbol' : '1.0-0'}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-error *ngIf=\"propertyForm.controls['sharedCommission'].hasError('sharedCommissionInvalid')\">\r\n Debe seleccionar su comisi\u00F3n\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['sharedCommission'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <hr>\r\n <div class=\"description\">\r\n <p class=\"section_label\">Descripci\u00F3n</p>\r\n <mat-form-field appearance=\"outline\" class=\"description__form-field\">\r\n <textarea matInput=\"\" cdkTextareaAutosize title=\"Description\" formControlName=\"description\"></textarea>\r\n <mat-hint align=\"end\"><span>N\u00FAmero de caracteres ideal: 3500</span>\r\n Actuales: {{propertyForm.controls['description'].value ? propertyForm.controls['description'].value.length : 0}}\r\n </mat-hint>\r\n <mat-error *ngIf=\"propertyForm.controls['description'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"external-link\">\r\n <p class=\"section_label\">Tour virtual</p>\r\n <mat-form-field appearance=\"outline\" class=\"external-link__form-field\">\r\n <input matInput=\"\" title=\"externalLink\" formControlName=\"externalLink\">\r\n <mat-error *ngIf=\"propertyForm.controls['externalLink'].hasError('pattern')\">\r\n Url invalida\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"notes\">\r\n <p class=\"section_label\">Notas</p>\r\n <mat-form-field appearance=\"outline\" class=\"notes__form-field\">\r\n <textarea matInput=\"\" cdkTextareaAutosize title=\"Notes\" formControlName=\"notes\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n <hr *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <div class=\"amenities\" *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <p class=\"section_label\">Amenidades</p>\r\n <p class=\"amenities__list-amenities\">\r\n <ng-container *ngFor=\"let amenity of amenitiesList\">\r\n <span matRipple class=\"list-amenities__amenity\" (click)=\"updateAmenity(amenity)\">\r\n <span class=\"amenity__icon ic-amenities-{{amenity.iconName}}\"\r\n [ngClass]=\"{'amenity__icon-active': amenity.checked}\"></span>\r\n <span class=\"amenity__text\">{{amenity.name}}</span>\r\n </span>\r\n </ng-container>\r\n </p>\r\n </div>\r\n <div class=\"attributes\" *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <p class=\"section_label\">Caracteristicas de ubicaci\u00F3n</p>\r\n <p class=\"amenities__list-amenities\">\r\n <ng-container *ngFor=\"let feature of featuresList\">\r\n <span matRipple class=\"list-amenities__amenity\" (click)=\"updateAmenity(feature)\">\r\n <span class=\"amenity__icon ic-amenities-{{feature.iconName}}\"\r\n [ngClass]=\"{'amenity__icon-active': feature.checked}\"></span>\r\n <span class=\"amenity__text\">{{feature.name}}</span>\r\n </span>\r\n </ng-container>\r\n </p>\r\n </div>\r\n <button type=\"submit\" class=\"button-submit\" mat-button #btnSubmit>Enviar</button>\r\n</form>\r\n",
|
|
540
540
|
providers: [
|
|
541
541
|
{ provide: MAT_DATE_LOCALE, useValue: 'es-MX' },
|
|
542
542
|
{ provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS] },
|
|
543
543
|
{ provide: MAT_DATE_FORMATS, useValue: ɵ0 }
|
|
544
544
|
],
|
|
545
|
-
styles: [":host{display:block;width:100%}.section_label{font-weight:700;display:flex;justify-content:space-between}.address__label-button{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.offering{margin-bottom:8px}.direct-debit{margin:16px 0;display:flex}.direct-debit__check-box{margin-top:4px}.direct-debit__radio-group{display:inline-block;margin:0 0 0 32px}@media screen and (max-width:600px){.section_label{flex-direction:column}.section_label :last-child{margin-top:16px}.direct-debit{flex-direction:column;align-items:flex-start}.direct-debit__radio-group{margin:16px 0 0}}.direct-debit__radio-button{margin-right:16px}.pricing{display:-ms-grid;display:grid;-ms-grid-columns:(
|
|
545
|
+
styles: [":host{display:block;width:100%}.section_label{font-weight:700;display:flex;justify-content:space-between}.address__label-button{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.offering{margin-bottom:8px}.direct-debit{margin:16px 0;display:flex}.direct-debit__check-box{margin-top:4px}.direct-debit__radio-group{display:inline-block;margin:0 0 0 32px}@media screen and (max-width:600px){.section_label{flex-direction:column}.section_label :last-child{margin-top:16px}.direct-debit{flex-direction:column;align-items:flex-start}.direct-debit__radio-group{margin:16px 0 0}}.direct-debit__radio-button{margin-right:16px}.pricing{display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 3))[3];grid-template-columns:repeat(3,calc(100% / 3))}@media screen and (max-width:600px){.pricing{-ms-grid-columns:100%;grid-template-columns:100%}}@media screen and (min-width:1800px){.pricing{-ms-grid-columns:(calc(100% / 4))[4];grid-template-columns:repeat(4,calc(100% / 4))}}.agreement__body{display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 3))[2];grid-template-columns:repeat(2,calc(100% / 3))}@media screen and (max-width:600px){.agreement__body{-ms-grid-columns:100%;grid-template-columns:100%}}@media screen and (min-width:1800px){.agreement__body{-ms-grid-columns:(calc(100% / 4))[4];grid-template-columns:repeat(4,calc(100% / 4))}}.agreement__body-check-box{margin-bottom:16px;-ms-grid-column:1;grid-column-start:1;-ms-grid-column-span:2;grid-column-end:3}.address__body{display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 4))[4];grid-template-columns:repeat(4,calc(100% / 4))}@media screen and (max-width:600px){.agreement__body-check-box{-ms-grid-column-span:auto;grid-column-end:auto}.address__body{-ms-grid-columns:100%;grid-template-columns:100%}}@media screen and (min-width:1800px){.address__body{-ms-grid-columns:(calc(100% / 5))[4];grid-template-columns:repeat(4,calc(100% / 5))}}.features__body{display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 2))[2];grid-template-columns:repeat(2,calc(100% / 2))}.features-item__label{display:flex;align-items:center;margin:0;padding:8px 0}.features-item__radio-group{display:block;margin:8px 0}.features-item__radio-button{margin-right:16px}.features-item-bathrooms,.features-item-parking-spaces{-ms-grid-column:1;grid-column-start:1}.features-item-surface{-ms-grid-column:2;grid-column-start:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-row-span:2;grid-row-end:3}.address__form-field,.agreement__form-field,.description__form-field,.external-link__form-field,.notes__form-field,.pricing__form-field{width:95%;margin:0 auto 0 0}@media screen and (max-width:600px){.features__body{-ms-grid-columns:100%;grid-template-columns:100%}.features-item-surface{-ms-grid-column:auto;grid-column-start:auto;-ms-grid-row:auto;grid-row-start:auto;-ms-grid-row-span:NaN;grid-row-end:auto}.address__form-field,.agreement__form-field,.description__form-field,.external-link__form-field,.notes__form-field,.pricing__form-field{width:100%;margin:0}}.pricing__maintenance-fee{display:flex;align-items:center;-ms-grid-column:1;grid-column-start:1;-ms-grid-column-span:2;grid-column-end:3}.pricing__maintenance-fee :first-child{margin:0 16px 0 0}@media screen and (max-width:600px){.pricing__maintenance-fee{flex-direction:column;align-items:start;-ms-grid-column:1;grid-column-start:1;-ms-grid-column-span:NaN;grid-column-end:auto}.pricing__maintenance-fee :first-child{margin:0 0 16px}}.address__visibility{-ms-grid-row:4;grid-row-start:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-column-span:4;grid-column-end:5}.address__visibility-body{display:flex}.address__visibility-radio-group{display:block;margin-right:16px}.visibility-radio-group__button{margin-bottom:16px;display:block}.visibility__about{margin:0}.visibility__about-label{display:block;padding:0 8px 8px;font-size:14px}.label__icon{width:24px;height:24px;font-size:24px;color:#707070;margin-right:8px}.amenities,.attributes{width:50%;display:inline-block}@media screen and (max-width:600px){.address__visibility{-ms-grid-row:auto;grid-row-start:auto;-ms-grid-column:auto;grid-column-start:auto;-ms-grid-column-span:NaN;grid-column-end:auto}.address__visibility-body{flex-direction:column}.amenities,.attributes{width:100%;display:block}}.amenities__list-amenities{display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 3))[3];grid-template-columns:repeat(3,calc(100% / 3))}.list-amenities__amenity{display:flex;flex-direction:column;justify-content:space-between;align-items:center;cursor:pointer;width:100px;padding:4px;box-sizing:border-box;border-radius:8px;margin:8px auto 0;text-align:center}.amenity__icon{width:24px;height:24px;font-size:24px;background:#707070;border-radius:50%;padding:8px;color:#fff;display:block;margin:0 auto}.amenity__text{padding:8px;box-sizing:border-box;display:block;font-size:12px}.button-submit{display:none}"]
|
|
546
546
|
}] }
|
|
547
547
|
];
|
|
548
548
|
/** @nocollapse */
|
|
@@ -666,4 +666,4 @@ if (false) {
|
|
|
666
666
|
EditorComponent.prototype._adapter;
|
|
667
667
|
}
|
|
668
668
|
export { ɵ0 };
|
|
669
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtYXBsYW5kZXIvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3Byb3BlcnR5L2NvbXBvbmVudHMvZWRpdG9yL2VkaXRvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsV0FBVyxFQUEwQixVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQ0wsT0FBTyxFQUNQLFNBQVMsRUFFVCxZQUFZLEVBRVosUUFBUSxFQUdSLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixjQUFjLEVBQ2YsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3RGLE9BQU8sRUFBQywrQkFBK0IsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BHLE9BQU8sS0FBSyxjQUFjLE1BQU0sUUFBUSxDQUFDO0FBR3pDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7O01BQ2xDLE1BQU0sR0FBRyxjQUFj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aXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgQWRkcmVzcyxcclxuICBBbWVuaXRpZXMsXHJcbiAgQXBwVXRpbCxcclxuICBBcmVhVW5pdEVudW0sXHJcbiAgQ0VSLFxyXG4gIEZlYXR1cmVzLFxyXG4gIEdlb1B0LFxyXG4gIExhbmRVc2VFbnVtLFxyXG4gIE5ld1Byb3BlcnR5LFxyXG4gIE9mZmVyaW5nVHlwZUVudW0sXHJcbiAgUHJvcGVydHlJbmZvLFxyXG4gIFByb3BlcnR5VHlwZUVudW0sXHJcbiAgU3RhdHVzVHlwZUVudW1cclxufSBmcm9tICdAbWFwbGFuZGVyL3R5cGVzJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0RpYWxvZ1NlcnZpY2V9IGZyb20gJ0BtYXBsYW5kZXIvc2hhcmVkJztcclxuaW1wb3J0IHtEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUywgTUFUX0RBVEVfTE9DQUxFfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHtNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TLCBNb21lbnREYXRlQWRhcHRlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXInO1xyXG5pbXBvcnQgKiBhcyBtb21lbnRJbXBvcnRlZCBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQge1Byb3BlcnR5VHlwZUl0ZW19IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL21vZGVscy9wcm9wZXJ0eS10eXBlLWl0ZW0nO1xyXG5pbXBvcnQge0FtZW5pdHlJdGVtfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9tb2RlbHMvYW1lbml0eS1pdGVtJztcclxuaW1wb3J0IHtDb25zdGFudHNDb21wb25lbnRzfSBmcm9tICcuLi8uLi8uLi8uLi9jb25zdGFudHNDb21wb25lbnRzJztcclxuaW1wb3J0IHtQcm9wZXJ0eUVkaXRvclZhbGlkYXRvcnN9IGZyb20gJy4uLy4uL3ZhbGlkYXRvcnMvcHJvcGVydHktZWRpdG9yLXZhbGlkYXRvcnMnO1xyXG5pbXBvcnQge01EYXRlfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9jbGFzc2VzJztcclxuaW1wb3J0IHtVdGlsc30gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnO1xyXG5jb25zdCBtb21lbnQgPSBtb21lbnRJbXBvcnRlZDtcclxuXHJcbmNvbnN0IE1ZX0ZPUk1BVFMgPSB7XHJcbiAgcGFyc2U6IHtcclxuICAgIGRhdGVJbnB1dDogJ0wnLFxyXG4gIH0sXHJcbiAgZGlzcGxheToge1xyXG4gICAgZGF0ZUlucHV0OiAnTCcsXHJcbiAgICBtb250aFllYXJMYWJlbDogJ01NTSBZWVlZJyxcclxuICAgIGRhdGVBMTF5TGFiZWw6ICdMJyxcclxuICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ01NTU0gWVlZWScsXHJcbiAgfSxcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXByb3BlcnR5LWVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7cHJvdmlkZTogTUFUX0RBVEVfTE9DQUxFLCB1c2VWYWx1ZTogJ2VzLU1YJ30sXHJcbiAgICB7cHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBNb21lbnREYXRlQWRhcHRlciwgZGVwczogW01BVF9EQVRFX0xPQ0FMRSwgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OU119LFxyXG4gICAge3Byb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBNWV9GT1JNQVRTfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2J0blN1Ym1pdCcsIHtzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWZ9KSBwcml2YXRlIF9idG5TdWJtaXRSZWY6IEVsZW1lbnRSZWY7XHJcbiAgQElucHV0KCkgdXRpbHM6IEFwcFV0aWw7XHJcbiAgQElucHV0KCkgYWRkcmVzczogQWRkcmVzcztcclxuICBASW5wdXQoKSBwcm9wZXJ0eVR5cGU6IFByb3BlcnR5VHlwZUVudW07XHJcbiAgQElucHV0KCkgcHJvcGVydHk6IE5ld1Byb3BlcnR5O1xyXG4gIEBJbnB1dCgpIG1sc0xhYmVsOiBzdHJpbmc7XHJcbiAgQE91dHB1dCgpIGVkaXRvckluc3RhbmNlOiBFdmVudEVtaXR0ZXI8RWRpdG9yQ29tcG9uZW50PjtcclxuICBAT3V0cHV0KCkgc2VsZWN0QWRkcmVzczogRXZlbnRFbWl0dGVyPHZvaWQ+O1xyXG4gIC8qKlxyXG4gICAqIFJFR0VYX09OTFlfSU5URUdFUlNcclxuICAgKiBSZWdleCBwYXR0ZXJuIHRvIG9ubHkgYWNjZXB0IGludGVnZXIgYW5kIHBvc2l0aXZlIG51bWJlcnNcclxuICAgKiAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgUkVHRVhfT05MWV9JTlRFR0VSUyA9IG5ldyBSZWdFeHAoL15bMC05XVxcZCokLyk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBSRUdFWF9NSURETEVfTlVNQkVSID0gbmV3IFJlZ0V4cCgvXlswLTldKihcXC5bNV0pPyQvKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IFJFR0VYX1dFQlNJVEUgPSBuZXcgUmVnRXhwKC8oaHR0cHxodHRwcyk6XFwvXFwvKFxcdys6P1xcdypAKT8oXFxTKykoOlswLTldKyk/KFxcL3xcXC8oW1xcdyMhOi4/Kz0mJUBcXC1cXC9dKSk/Lyk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBSRUdFWF9BTFBIQV9OVU1CRVIgPSBuZXcgUmVnRXhwKC9bQS1aYS16MC05X10vKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIHJlYWRvbmx5IF92YWxpZGF0b3JzOiB7XHJcbiAgICBiZWRyb29tczogVmFsaWRhdG9yRm5bXSxcclxuICAgIGJhdGhyb29tczogVmFsaWRhdG9yRm5bXSxcclxuICAgIHBhcmtpbmdTcGFjZXM6IFZhbGlkYXRvckZuW10sXHJcbiAgICBtYWluQXJlYTogVmFsaWRhdG9yRm5bXSxcclxuICAgIHNlY29uZGFyeUFyZWE6IFZhbGlkYXRvckZuW10sXHJcbiAgICBleHRlcm5hbExpbms6IFZhbGlkYXRvckZuW10sXHJcbiAgICBza3U6IFZhbGlkYXRvckZuW11cclxuICB9O1xyXG4gIHByaXZhdGUgX3Byb3BlcnR5OiBOZXdQcm9wZXJ0eTtcclxuICBwcml2YXRlIF9wcm9wZXJ0eVR5cGVJdGVtOiBQcm9wZXJ0eVR5cGVJdGVtO1xyXG4gIHByaXZhdGUgX2Vycm9yRmllbGRzOiBzdHJpbmdbXTtcclxuICBwdWJsaWMgcHJvcGVydHlGb3JtOiBGb3JtR3JvdXA7XHJcbiAgcHVibGljIG9mZmVyaW5nVHlwZUxpc3Q6IHsgbmFtZTogc3RyaW5nLCB2YWx1ZTogT2ZmZXJpbmdUeXBlRW51bSB9W107XHJcbiAgcHVibGljIGN1cnJlbmN5TGlzdDogQ0VSW107XHJcbiAgcHVibGljIHJvaUxpc3Q6IG51bWJlcltdO1xyXG4gIHB1YmxpYyBsYW5kVXNlTGlzdDogeyBuYW1lOiBzdHJpbmcsIHZhbHVlOiBMYW5kVXNlRW51bSB9W107XHJcbiAgcHVibGljIGFtZW5pdGllc0xpc3Q6IEFtZW5pdHlJdGVtW107XHJcbiAgcHVibGljIGZlYXR1cmVzTGlzdDogQW1lbml0eUl0ZW1bXTtcclxuICBwdWJsaWMgY29tbWlzc2lvbkxpc3Q6IG51bWJlcltdO1xyXG4gIHB1YmxpYyBzaGFyZWRDb21taXNzaW9uTGlzdDogbnVtYmVyW107XHJcbiAgcHVibGljIGR1cmF0aW9uTGlzdDogbnVtYmVyW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfYWRhcHRlcjogRGF0ZUFkYXB0ZXI8YW55PlxyXG4gICkge1xyXG4gICAgdGhpcy5lZGl0b3JJbnN0YW5jZSA9IG5ldyBFdmVudEVtaXR0ZXI8RWRpdG9yQ29tcG9uZW50PigpO1xyXG4gICAgdGhpcy5zZWxlY3RBZGRyZXNzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICAgdGhpcy5vZmZlcmluZ1R5cGVMaXN0ID0gQ29uc3RhbnRzQ29tcG9uZW50cy5PZmZlcmluZ1R5cGVMaXN0Lm1hcChkb2MgPT4gKHsuLi5kb2N9KSk7XHJcbiAgICB0aGlzLmxhbmRVc2VMaXN0ID0gQ29uc3RhbnRzQ29tcG9uZW50cy5MYW5kVXNlTGlzdC5tYXAoZG9jID0+ICh7Li4uZG9jfSkpO1xyXG4gICAgdGhpcy5jb21taXNzaW9uTGlzdCA9IENvbnN0YW50c0NvbXBvbmVudHMuQ29tbWlzc2lvbkxpc3RbT2ZmZXJpbmdUeXBlRW51bS5TQUxFXTtcclxuICAgIHRoaXMucm9pTGlzdCA9IE9iamVjdC5hc3NpZ24oW10sIENvbnN0YW50c0NvbXBvbmVudHMuUk9JTGlzdCk7XHJcbiAgICB0aGlzLmR1cmF0aW9uTGlzdCA9IE9iamVjdC5hc3NpZ24oW10sIENvbnN0YW50c0NvbXBvbmVudHMuRHVyYXRpb25MaXN0KTtcclxuICAgIHRoaXMuc2hhcmVkQ29tbWlzc2lvbkxpc3QgPSBPYmplY3QuYXNzaWduKFtdLCBDb25zdGFudHNDb21wb25lbnRzLlNoYXJlZENvbW1pc3Npb25MaXN0KTtcclxuICAgIHRoaXMuX2FkYXB0ZXIuc2V0TG9jYWxlKCdlcycpO1xyXG4gICAgdGhpcy5fZXJyb3JGaWVsZHMgPSBbXTtcclxuICAgIHRoaXMuX3ZhbGlkYXRvcnMgPSB7XHJcbiAgICAgIGJlZHJvb21zOiBbVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuUkVHRVhfT05MWV9JTlRFR0VSUyldLFxyXG4gICAgICBiYXRocm9vbXM6IFtWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5SRUdFWF9NSURETEVfTlVNQkVSKV0sXHJcbiAgICAgIHBhcmtpbmdTcGFjZXM6IFtWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5SRUdFWF9PTkxZX0lOVEVHRVJTKV0sXHJcbiAgICAgIG1haW5BcmVhOiBbXSxcclxuICAgICAgc2Vjb25kYXJ5QXJlYTogW10sXHJcbiAgICAgIGV4dGVybmFsTGluazogW1ZhbGlkYXRvcnMucGF0dGVybih0aGlzLlJFR0VYX1dFQlNJVEUpXSxcclxuICAgICAgc2t1OiBbVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuUkVHRVhfQUxQSEFfTlVNQkVSKV1cclxuICAgIH07XHJcbiAgICB0aGlzLnByb3BlcnR5Rm9ybSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgb2ZmZXJpbmc6IFtPZmZlcmluZ1R5cGVFbnVtLlNBTEVdLFxyXG4gICAgICBza3U6IFtudWxsLCB0aGlzLl92YWxpZGF0b3JzLnNrdV0sXHJcbiAgICAgIGNvbnN1bWVyUmVwb3J0aW5nOiBbXSxcclxuICAgICAgY29uc3VtZXJSZXBvcnRpbmdPcHRpb246IFsxXSxcclxuICAgICAgY3VycmVuY3k6IFsnTVhOJ10sXHJcbiAgICAgIG1pblByaWNlOiBbXSxcclxuICAgICAgcHJpY2U6IFtdLFxyXG4gICAgICBtYWludGVuYW5jZTogW10sXHJcbiAgICAgIG1haW50ZW5hbmNlUHJpY2U6IFtdLFxyXG4gICAgICB0cmFuc2ZlcjogW10sXHJcbiAgICAgIHRyYW5zZmVyUHJpY2U6IFtdLFxyXG4gICAgICBiZWRyb29tczogW251bGwsIHRoaXMuX3ZhbGlkYXRvcnMuYmVkcm9vbXNdLFxyXG4gICAgICBiYXRocm9vbXM6IFtudWxsLCB0aGlzLl92YWxpZGF0b3JzLmJhdGhyb29tc10sXHJcbiAgICAgIHBhcmtpbmdTcGFjZXM6IFtudWxsLCB0aGlzLl92YWxpZGF0b3JzLnBhcmtpbmdTcGFjZXNdLFxyXG4gICAgICBtYWluQXJlYTogW251bGwsIHRoaXMuX3ZhbGlkYXRvcnMubWFpbkFyZWFdLFxyXG4gICAgICBzZWNvbmRhcnlBcmVhOiBbbnVsbCwgdGhpcy5fdmFsaWRhdG9ycy5zZWNvbmRhcnlBcmVhXSxcclxuICAgICAgdW5pdDogW0FyZWFVbml0RW51bS5NMl0sXHJcbiAgICAgIGJ1aWxkSW46IFtdLFxyXG4gICAgICBsYW5kVXNlOiBbXSxcclxuICAgICAgZXhjbHVzaXZpdHk6IFtdLFxyXG4gICAgICBtbG06IFtdLFxyXG4gICAgICBzaGFyZWRDb21taXNzaW9uOiBbXSxcclxuICAgICAgYWdyZWVtZW50RGF0ZTogW3t2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IHRydWV9XSxcclxuICAgICAgZHVyYXRpb246IFtdLFxyXG4gICAgICBjb21taXNzaW9uOiBbXSxcclxuICAgICAgcm9pOiBbXSxcclxuICAgICAgZGVzY3JpcHRpb246IFtdLFxyXG4gICAgICBleHRlcm5hbExpbms6IFtudWxsLCB0aGlzLl92YWxpZGF0b3JzLmV4dGVybmFsTGlua10sXHJcbiAgICAgIG5vdGVzOiBbXSxcclxuICAgICAgYWRkcmVzczogdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgIGNvdW50cnk6IFtdLFxyXG4gICAgICAgIHBvc3RhbENvZGU6IFtdLFxyXG4gICAgICAgIHN0YXRlOiBbXSxcclxuICAgICAgICBjaXR5OiBbXSxcclxuICAgICAgICB0b3duc2hpcDogW10sXHJcbiAgICAgICAgY29sb255OiBbXSxcclxuICAgICAgICBzdHJlZXQ6IFtdLFxyXG4gICAgICAgIGV4dE51bWJlcjogW10sXHJcbiAgICAgICAgaW50TnVtYmVyOiBbXSxcclxuICAgICAgICBtejogW10sXHJcbiAgICAgICAgbHQ6IFtdLFxyXG4gICAgICAgIHZpc2libGU6IFt0cnVlXSxcclxuICAgICAgfSksXHJcbiAgICB9LCB7XHJcbiAgICAgIHZhbGlkYXRvcnM6IFByb3BlcnR5RWRpdG9yVmFsaWRhdG9ycy52YWxpZGF0b3JcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgZ2VvUHRHZW5lcmF0b3IoZ2VvUHQ6IEdlb1B0LCBtaW5EaXN0YW5jZTogbnVtYmVyLCBtYXhEaXN0YW5jZTogbnVtYmVyKTogR2VvUHQge1xyXG4gICAgY29uc3QgRUFSVEhfUkFESVVTX01FVEVSUyA9IDYzNzEwMTAuMDtcclxuICAgIGNvbnN0IGwgPSBNYXRoLnJhbmRvbSgpICogKG1heERpc3RhbmNlIC0gbWluRGlzdGFuY2UpICsgbWluRGlzdGFuY2U7XHJcbiAgICBjb25zdCBhbHBoYSA9IE1hdGgucmFuZG9tKCkgKiBNYXRoLlBJIC8gMjtcclxuICAgIGNvbnN0IHN4ID0gKE1hdGgucmFuZG9tKCkgPCAwLjUpID8gbCAqIE1hdGguY29zKGFscGhhKSA6IC1sICogTWF0aC5jb3MoYWxwaGEpO1xyXG4gICAgY29uc3Qgc3kgPSAoTWF0aC5yYW5kb20oKSA8IDAuNSkgPyBsICogTWF0aC5zaW4oYWxwaGEpIDogLWwgKiBNYXRoLnNpbihhbHBoYSk7XHJcbiAgICBjb25zdCBkZWx0YUxhdCA9IHN5IC8gRUFSVEhfUkFESVVTX01FVEVSUyAqIDE4MCAvIE1hdGguUEk7XHJcbiAgICBjb25zdCBsYXQgPSBnZW9QdC5sYXRpdHVkZSArIGRlbHRhTGF0O1xyXG4gICAgY29uc3QgZGVsdGFMb25nID0gc3ggLyBFQVJUSF9SQURJVVNfTUVURVJTIC8gTWF0aC5jb3MobGF0ICogTWF0aC5QSSAvIDE4MCkgKiAxODAgLyBNYXRoLlBJO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbGF0aXR1ZGU6IGxhdCxcclxuICAgICAgbG9uZ2l0dWRlOiBnZW9QdC5sb25naXR1ZGUgKyBkZWx0YUxvbmdcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMubGlzdGVuQ2hhbmdlc09uRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ3V0aWxzJ10gJiYgY2hhbmdlc1sndXRpbHMnXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5jdXJyZW5jeUxpc3QgPSBjaGFuZ2VzWyd1dGlscyddLmN1cnJlbnRWYWx1ZS5jZXJzO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ3Byb3BlcnR5VHlwZSddICYmIGNoYW5nZXNbJ3Byb3BlcnR5VHlwZSddLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICB0aGlzLnByb3BlcnR5VHlwZSA9IGNoYW5nZXNbJ3Byb3BlcnR5VHlwZSddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgdGhpcy5zZWFyY2hBbWVuaXRpZXNCeVByb3BlcnR5VHlwZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ3Byb3BlcnR5J10gJiYgY2hhbmdlc1sncHJvcGVydHknXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5jcmVhdGVQcm9wZXJ0eShjaGFuZ2VzWydwcm9wZXJ0eSddLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snYWRkcmVzcyddICYmIGNoYW5nZXNbJ2FkZHJlc3MnXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy51cGRhdGVBZGRyZXNzRm9ybShjaGFuZ2VzWydhZGRyZXNzJ10uY3VycmVudFZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdG9ySW5zdGFuY2UuZW1pdCh0aGlzKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRQcm9wZXJ0eSgpOiBOZXdQcm9wZXJ0eSB7XHJcbiAgICB0aGlzLnNldFZhbGlkYXRvck9uRmllbGRzKHRoaXMuX2Vycm9yRmllbGRzLCB0cnVlKTtcclxuICAgIHRoaXMudXBkYXRlUHJvcGVydHlCeUZvcm0odGhpcy5wcm9wZXJ0eUZvcm0uZ2V0UmF3VmFsdWUoKSk7XHJcbiAgICByZXR1cm4gdGhpcy5fcHJvcGVydHk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZUZvcm1JbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgdGhpcy5zZXRWYWxpZGF0b3JPbkZpZWxkcyh0aGlzLl9lcnJvckZpZWxkcywgdHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eUZvcm0uaW52YWxpZDtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUFtZW5pdHkoYW1lbml0eTogQW1lbml0eUl0ZW0pOiB2b2lkIHtcclxuICAgIGFtZW5pdHkuY2hlY2tlZCA9ICFhbWVuaXR5LmNoZWNrZWQ7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hbWVuaXRpZXNbYW1lbml0eS52YWx1ZV0gPSBhbWVuaXR5LmNoZWNrZWQ7XHJcbiAgfVxyXG5cclxuICBnb1RvU2VsZWN0QWRkcmVzcygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0QWRkcmVzcy5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBzZXRFcnJvcnNPbkZpZWxkcyhlcnJvcnM6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLl9lcnJvckZpZWxkcyA9IGVycm9ycztcclxuICAgIHRoaXMuc2V0VmFsaWRhdG9yT25GaWVsZHModGhpcy5fZXJyb3JGaWVsZHMpO1xyXG4gICAgdGhpcy5fYnRuU3VibWl0UmVmLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQWRkcmVzc0Zvcm0oYWRkcmVzczogQWRkcmVzcyk6IHZvaWQge1xyXG4gICAgdGhpcy5wcm9wZXJ0eUZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgIGFkZHJlc3M6IHtcclxuICAgICAgICBjb3VudHJ5OiBhZGRyZXNzLmNvdW50cnksXHJcbiAgICAgICAgc3RhdGU6IGFkZHJlc3Muc3RhdGUsXHJcbiAgICAgICAgY2l0eTogYWRkcmVzcy5jaXR5LFxyXG4gICAgICAgIHRvd25zaGlwOiBhZGRyZXNzLnRvd25zaGlwLFxyXG4gICAgICAgIGNvbG9ueTogYWRkcmVzcy5jb2xvbnksXHJcbiAgICAgICAgc3RyZWV0OiBhZGRyZXNzLnN0cmVldCxcclxuICAgICAgICBwb3N0YWxDb2RlOiBhZGRyZXNzLnBvc3RhbENvZGUsXHJcbiAgICAgICAgZXh0TnVtYmVyOiBhZGRyZXNzLm91dGRvb3JOdW1iZXJcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzc2lnbkFtZW5pdGllcygpOiB2b2lkIHtcclxuICAgIHRoaXMuYW1lbml0aWVzTGlzdC5mb3JFYWNoKChhbWVuaXR5KSA9PiB7XHJcbiAgICAgIGFtZW5pdHkuY2hlY2tlZCA9IHRoaXMuX3Byb3BlcnR5LmFtZW5pdGllc1thbWVuaXR5LnZhbHVlXTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3NpZ25Mb2NhdGlvbkZlYXR1cmVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mZWF0dXJlc0xpc3QuZm9yRWFjaCgoYW1lbml0eSkgPT4ge1xyXG4gICAgICBhbWVuaXR5LmNoZWNrZWQgPSB0aGlzLl9wcm9wZXJ0eS5hbWVuaXRpZXNbYW1lbml0eS52YWx1ZV07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXNzaWduQ29tbWlzc2lvbigpOiB2b2lkIHtcclxuICAgIHRoaXMuY29tbWlzc2lvbkxpc3QgPSBDb25zdGFudHNDb21wb25lbnRzLkNvbW1pc3Npb25MaXN0W3RoaXMuX3Byb3BlcnR5Lm9mZmVyaW5nXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXNzaWduQnVzaW5lc3NSdWxlcygpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAodGhpcy5wcm9wZXJ0eVR5cGUpIHtcclxuICAgICAgY2FzZSBQcm9wZXJ0eVR5cGVFbnVtLlJPT006XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICBvZmZlcmluZzogT2ZmZXJpbmdUeXBlRW51bS5SRU5UXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlRW51bS5JTlZFU1RNRU5UOlxyXG4gICAgICAgIHRoaXMucHJvcGVydHlGb3JtLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgICAgb2ZmZXJpbmc6IE9mZmVyaW5nVHlwZUVudW0uU0FMRVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX3Byb3BlcnR5LnN0YXR1cyA9PT0gU3RhdHVzVHlwZUVudW0uQU5OT1VOQ0VEKSB7XHJcbiAgICAgIGNvbnN0IGVycm9ycyA9IFV0aWxzLmxpc3RFcnJvcnNCeVByb3BlcnR5VHlwZUZvclB1Ymxpc2godGhpcy5fcHJvcGVydHkudHlwZSk7XHJcbiAgICAgIHRoaXMuc2V0VmFsaWRhdG9yT25GaWVsZHMoZXJyb3JzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRm9ybUJ5UHJvcGVydHkoKTogdm9pZCB7XHJcbiAgICB0aGlzLnByb3BlcnR5Rm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgb2ZmZXJpbmc6IHRoaXMuX3Byb3BlcnR5Lm9mZmVyaW5nLFxyXG4gICAgICBza3U6IHRoaXMuX3Byb3BlcnR5LnNrdSxcclxuICAgICAgY29uc3VtZXJSZXBvcnRpbmc6IHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5jb25zdW1lclJlcG9ydGluZyAmJiB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8uY29uc3VtZXJSZXBvcnRpbmcgIT09IDAsXHJcbiAgICAgIGNvbnN1bWVyUmVwb3J0aW5nT3B0aW9uOiB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8uY29uc3VtZXJSZXBvcnRpbmcsXHJcbiAgICAgIGN1cnJlbmN5OiB0aGlzLl9wcm9wZXJ0eS5jdXJyZW5jeSxcclxuICAgICAgbWluUHJpY2U6IHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5sb3dlc3RQcmljZSxcclxuICAgICAgcHJpY2U6IHRoaXMuX3Byb3BlcnR5LnByaWNlLFxyXG4gICAgICBtYWludGVuYW5jZTogdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuY29uZG9taW5pdW1GZWVQcmljZSAmJiB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5jb25kb21pbml1bUZlZVByaWNlICE9PSAwLFxyXG4gICAgICBtYWludGVuYW5jZVByaWNlOiB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5jb25kb21pbml1bUZlZVByaWNlLFxyXG4gICAgICB0cmFuc2ZlcjogdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmxlYXNlVHJhbnNmZXJQcmljZSAmJiB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubGVhc2VUcmFuc2ZlclByaWNlICE9PSAwLFxyXG4gICAgICB0cmFuc2ZlclByaWNlOiB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubGVhc2VUcmFuc2ZlclByaWNlLFxyXG4gICAgICBiZWRyb29tczogdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuYmVkcm9vbXMsXHJcbiAgICAgIGJhdGhyb29tczogdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuYmF0aHJvb21zLFxyXG4gICAgICBwYXJraW5nU3BhY2VzOiB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5wYXJraW5nU3BhY2VzLFxyXG4gICAgICBtYWluQXJlYTogdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMubWFpbkFyZWEsXHJcbiAgICAgIHNlY29uZGFyeUFyZWE6IHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLnNlY29uZGFyeUFyZWEsXHJcbiAgICAgIHVuaXQ6IHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLmFyZWFVbml0LFxyXG4gICAgICBidWlsZEluOiB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5idWlsdEluID8gbmV3IERhdGUodGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuYnVpbHRJbiwgMSwgMSkgOiBudWxsLFxyXG4gICAgICBsYW5kVXNlOiB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5sYW5kVXNlLFxyXG4gICAgICBleGNsdXNpdml0eTogdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmV4Y2x1c2l2aXR5LFxyXG4gICAgICBtbG06IHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5tbHMsXHJcbiAgICAgIHNoYXJlZENvbW1pc3Npb246IHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5zaGFyZWRDb21taXNzaW9uLFxyXG4gICAgICBhZ3JlZW1lbnREYXRlOiB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubGlzdGluZ0FncmVlbWVudFN0YXJ0RGF0ZSA/XHJcbiAgICAgICAgbW9tZW50KG5ldyBNRGF0ZSh0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubGlzdGluZ0FncmVlbWVudFN0YXJ0RGF0ZSkudG9EYXRlKCkpIDogbnVsbCxcclxuICAgICAgZHVyYXRpb246IHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5saXN0aW5nQWdyZWVtZW50VGltZSxcclxuICAgICAgY29tbWlzc2lvbjogdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmNvbW1pc3Npb24sXHJcbiAgICAgIHJvaTogdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMucm9pLFxyXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5fcHJvcGVydHkuZGVzY3JpcHRpb24sXHJcbiAgICAgIGV4dGVybmFsTGluazogdGhpcy5fcHJvcGVydHkuZXh0ZXJuYWxMaW5rLFxyXG4gICAgICBub3RlczogdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLm5vdGVzLFxyXG4gICAgICBhZGRyZXNzOiB7XHJcbiAgICAgICAgY291bnRyeTogdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5jb3VudHJ5LFxyXG4gICAgICAgIHN0YXRlOiB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLnN0YXRlLFxyXG4gICAgICAgIGNpdHk6IHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MuY2l0eSxcclxuICAgICAgICB0b3duc2hpcDogdGhpcy5fcHJvcGVydHkuYWRkcmVzcy50b3duc2hpcCxcclxuICAgICAgICBjb2xvbnk6IHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MuY29sb255LFxyXG4gICAgICAgIHBvc3RhbENvZGU6IHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MucG9zdGFsQ29kZSxcclxuICAgICAgICBzdHJlZXQ6IHRoaXMuX3Byb3BlcnR5LmFkZHJlc3Muc3RyZWV0LFxyXG4gICAgICAgIGV4dE51bWJlcjogdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5vdXRkb29yTnVtYmVyLFxyXG4gICAgICAgIGludE51bWJlcjogdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5pbnRlcmlvck51bWJlcixcclxuICAgICAgICBtejogdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5teixcclxuICAgICAgICBsdDogdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5sdCxcclxuICAgICAgICB2aXNpYmxlOiB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLnZpc2libGUgfHwgZmFsc2UsXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVQcm9wZXJ0eUJ5Rm9ybShkYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX3Byb3BlcnR5LnR5cGUgPSB0aGlzLnByb3BlcnR5VHlwZTtcclxuICAgIHRoaXMuX3Byb3BlcnR5Lm9mZmVyaW5nID0gZGF0YS5vZmZlcmluZztcclxuICAgIHRoaXMuX3Byb3BlcnR5LnNrdSA9IGRhdGEuc2t1O1xyXG4gICAgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmNvbnN1bWVyUmVwb3J0aW5nID0gZGF0YS5jb25zdW1lclJlcG9ydGluZyA/IGRhdGEuY29uc3VtZXJSZXBvcnRpbmdPcHRpb24gOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuY3VycmVuY3kgPSBkYXRhLmN1cnJlbmN5O1xyXG4gICAgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmxvd2VzdFByaWNlID0gZGF0YS5taW5QcmljZSA/IE51bWJlcihkYXRhLm1pblByaWNlKSA6IG51bGw7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5wcmljZSA9IGRhdGEucHJpY2UgPyBOdW1iZXIoZGF0YS5wcmljZSkgOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuY29uZG9taW5pdW1GZWVQcmljZSA9IGRhdGEubWFpbnRlbmFuY2UgPyBOdW1iZXIoZGF0YS5tYWludGVuYW5jZVByaWNlKSA6IG51bGw7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubGVhc2VUcmFuc2ZlclByaWNlID0gZGF0YS50cmFuc2ZlciA/IE51bWJlcihkYXRhLnRyYW5zZmVyUHJpY2UpIDogbnVsbDtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLmJlZHJvb21zID0gZGF0YS5iZWRyb29tcyA/IE51bWJlcihkYXRhLmJlZHJvb21zKSA6IG51bGw7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5iYXRocm9vbXMgPSBkYXRhLmJhdGhyb29tcyA/IE51bWJlcihkYXRhLmJhdGhyb29tcykgOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMucGFya2luZ1NwYWNlcyA9IGRhdGEucGFya2luZ1NwYWNlcyA/IE51bWJlcihkYXRhLnBhcmtpbmdTcGFjZXMpIDogbnVsbDtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLm1haW5BcmVhID0gZGF0YS5tYWluQXJlYSA/IE51bWJlcihkYXRhLm1haW5BcmVhKSA6IG51bGw7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5zZWNvbmRhcnlBcmVhID0gZGF0YS5zZWNvbmRhcnlBcmVhID8gTnVtYmVyKGRhdGEuc2Vjb25kYXJ5QXJlYSkgOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuYXJlYVVuaXQgPSBkYXRhLnVuaXQ7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5idWlsdEluID0gZGF0YS5idWlsZEluID8gZGF0YS5idWlsZEluLmdldEZ1bGxZZWFyKCkgOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMubGFuZFVzZSA9IGRhdGEubGFuZFVzZTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5leGNsdXNpdml0eSA9IGRhdGEuZXhjbHVzaXZpdHk7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubWxzID0gZGF0YS5tbG07XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8uc2hhcmVkQ29tbWlzc2lvbiA9IGRhdGEubWxtID8gTnVtYmVyKGRhdGEuc2hhcmVkQ29tbWlzc2lvbikgOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmxpc3RpbmdBZ3JlZW1lbnRTdGFydERhdGUgPVxyXG4gICAgICBkYXRhLmFncmVlbWVudERhdGUgPyBNRGF0ZS5nZXRUaW1lc3RhbXAoZGF0YS5hZ3JlZW1lbnREYXRlLnRvRGF0ZSgpKSA6IG51bGw7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubGlzdGluZ0FncmVlbWVudFRpbWUgPSBkYXRhLmR1cmF0aW9uO1xyXG4gICAgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmNvbW1pc3Npb24gPSBkYXRhLmNvbW1pc3Npb247XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5yb2kgPSBkYXRhLnJvaTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmRlc2NyaXB0aW9uID0gZGF0YS5kZXNjcmlwdGlvbjtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmV4dGVybmFsTGluayA9IGRhdGEuZXh0ZXJuYWxMaW5rO1xyXG4gICAgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLm5vdGVzID0gZGF0YS5ub3RlcztcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MuY291bnRyeSA9IGRhdGEuYWRkcmVzcy5jb3VudHJ5O1xyXG4gICAgdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5zdGF0ZSA9IGRhdGEuYWRkcmVzcy5zdGF0ZTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MuY2l0eSA9IGRhdGEuYWRkcmVzcy5jaXR5O1xyXG4gICAgdGhpcy5fcHJvcGVydHkuYWRkcmVzcy50b3duc2hpcCA9IGRhdGEuYWRkcmVzcy50b3duc2hpcDtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MuY29sb255ID0gZGF0YS5hZGRyZXNzLmNvbG9ueTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MucG9zdGFsQ29kZSA9IGRhdGEuYWRkcmVzcy5wb3N0YWxDb2RlO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5zdHJlZXQgPSBkYXRhLmFkZHJlc3Muc3RyZWV0O1xyXG4gICAgdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5vdXRkb29yTnVtYmVyID0gZGF0YS5hZGRyZXNzLmV4dE51bWJlcjtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MuaW50ZXJpb3JOdW1iZXIgPSBkYXRhLmFkZHJlc3MuaW50TnVtYmVyO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5teiA9IGRhdGEuYWRkcmVzcy5tejtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MubHQgPSBkYXRhLmFkZHJlc3MubHQ7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLmxvY2F0aW9uID0gdGhpcy5hZGRyZXNzLmxvY2F0aW9uO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5wdWJsaWNMb2NhdGlvbiA9ICFkYXRhLmFkZHJlc3MudmlzaWJsZSA/XHJcbiAgICAgIEVkaXRvckNvbXBvbmVudC5nZW9QdEdlbmVyYXRvcih0aGlzLmFkZHJlc3MubG9jYXRpb24sIDIwMCwgNDAwKSA6IHRoaXMuYWRkcmVzcy5sb2NhdGlvbjtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MudmlzaWJsZSA9IGRhdGEuYWRkcmVzcy52aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZWFyY2hBbWVuaXRpZXNCeVByb3BlcnR5VHlwZSgpOiB2b2lkIHtcclxuICAgIENvbnN0YW50c0NvbXBvbmVudHMuUHJvcGVydHlUeXBlTGlzdC5mb3JFYWNoKHR5cGUgPT4ge1xyXG4gICAgICBpZiAodHlwZS52YWx1ZSA9PT0gdGhpcy5wcm9wZXJ0eVR5cGUpIHtcclxuICAgICAgICB0aGlzLl9wcm9wZXJ0eVR5cGVJdGVtID0gdHlwZTtcclxuICAgICAgICB0aGlzLmFtZW5pdGllc0xpc3QgPSB0eXBlLmFtZW5pdGllcy5tYXAoaXRlbSA9PiAoey4uLml0ZW19KSk7XHJcbiAgICAgICAgdGhpcy5mZWF0dXJlc0xpc3QgPSB0eXBlLmZlYXR1cmVzLm1hcChpdGVtID0+ICh7Li4uaXRlbX0pKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxpc3RlbkNoYW5nZXNPbkZvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1snb2ZmZXJpbmcnXS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tbWlzc2lvbkxpc3QgPSBDb25zdGFudHNDb21wb25lbnRzLkNvbW1pc3Npb25MaXN0W3ZhbHVlXTtcclxuICAgICAgICB0aGlzLnByb3BlcnR5Rm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgIG1pblByaWNlOiBudWxsLFxyXG4gICAgICAgICAgbWF4UHJpY2U6IG51bGxcclxuICAgICAgICB9KTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1sncHJpY2UnXS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIGlmICh2YWx1ZSAmJiBOdW1iZXIodmFsdWUpID09PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLnByb3BlcnR5Rm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgICAgbWluUHJpY2U6IG51bGxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1snbWxtJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbJ3NoYXJlZENvbW1pc3Npb24nXS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1snbWFpbnRlbmFuY2UnXS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1snbWFpbnRlbmFuY2VQcmljZSddLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMucHJvcGVydHlGb3JtLmNvbnRyb2xzWyd0cmFuc2ZlciddLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucHJvcGVydHlGb3JtLmNvbnRyb2xzWyd0cmFuc2ZlclByaWNlJ10uc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbJ2NvbnN1bWVyUmVwb3J0aW5nJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbJ2NvbnN1bWVyUmVwb3J0aW5nT3B0aW9uJ10uc2V0VmFsdWUoMSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVQcm9wZXJ0eShwcm9wZXJ0eT86IE5ld1Byb3BlcnR5KTogdm9pZCB7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eSA9IG5ldyBOZXdQcm9wZXJ0eShwcm9wZXJ0eSB8fCBudWxsKTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LnR5cGUgPSB0aGlzLnByb3BlcnR5VHlwZTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mbyA9IG5ldyBQcm9wZXJ0eUluZm8ocHJvcGVydHkgPyBwcm9wZXJ0eS5wcm9wZXJ0eUluZm8gOiBudWxsKTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzID0gbmV3IEZlYXR1cmVzKHByb3BlcnR5ID8gcHJvcGVydHkuZmVhdHVyZXMgOiBudWxsKTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MgPSBuZXcgQWRkcmVzcyhwcm9wZXJ0eSA/IHByb3BlcnR5LmFkZHJlc3MgOiBudWxsKTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFtZW5pdGllcyA9IG5ldyBBbWVuaXRpZXMocHJvcGVydHkgPyBwcm9wZXJ0eS5hbWVuaXRpZXMgOiBudWxsKTtcclxuICAgIHRoaXMuYXNzaWduQnVzaW5lc3NSdWxlcygpO1xyXG4gICAgaWYgKHByb3BlcnR5ICYmIHByb3BlcnR5LmlkKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlRm9ybUJ5UHJvcGVydHkoKTtcclxuICAgICAgdGhpcy5hc3NpZ25BbWVuaXRpZXMoKTtcclxuICAgICAgdGhpcy5hc3NpZ25Mb2NhdGlvbkZlYXR1cmVzKCk7XHJcbiAgICAgIHRoaXMuYXNzaWduQ29tbWlzc2lvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRWYWxpZGF0b3JPbkZpZWxkcyhlcnJvcnM6IHN0cmluZ1tdLCByZW1vdmU/OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBlcnJvcnMuZm9yRWFjaChlcnJvciA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbZXJyb3JdKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZW1vdmUpIHtcclxuICAgICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1tlcnJvcl0uY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbZXJyb3JdLnNldFZhbGlkYXRvcnModGhpcy5fdmFsaWRhdG9yc1tlcnJvcl0gPyB0aGlzLl92YWxpZGF0b3JzW2Vycm9yXSA6IFtdKTtcclxuICAgICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1tlcnJvcl0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucHJvcGVydHlGb3JtLmNvbnRyb2xzW2Vycm9yXS5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1tlcnJvcl0uc2V0VmFsaWRhdG9ycyhcclxuICAgICAgICAgIHRoaXMuX3ZhbGlkYXRvcnNbZXJyb3JdID8gdGhpcy5fdmFsaWRhdG9yc1tlcnJvcl0uY29uY2F0KFZhbGlkYXRvcnMucmVxdWlyZWQpIDogW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1tlcnJvcl0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
669
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtYXBsYW5kZXIvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3Byb3BlcnR5L2NvbXBvbmVudHMvZWRpdG9yL2VkaXRvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsV0FBVyxFQUEwQixVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQ0wsT0FBTyxFQUNQLFNBQVMsRUFFVCxZQUFZLEVBRVosUUFBUSxFQUdSLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixjQUFjLEVBQ2YsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3RGLE9BQU8sRUFBQywrQkFBK0IsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BHLE9BQU8sS0FBSyxjQUFjLE1BQU0sUUFBUSxDQUFDO0FBR3pDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7O01BQ2xDLE1BQU0sR0FBRyxjQUFj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aXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgQWRkcmVzcyxcclxuICBBbWVuaXRpZXMsXHJcbiAgQXBwVXRpbCxcclxuICBBcmVhVW5pdEVudW0sXHJcbiAgQ0VSLFxyXG4gIEZlYXR1cmVzLFxyXG4gIEdlb1B0LFxyXG4gIExhbmRVc2VFbnVtLFxyXG4gIE5ld1Byb3BlcnR5LFxyXG4gIE9mZmVyaW5nVHlwZUVudW0sXHJcbiAgUHJvcGVydHlJbmZvLFxyXG4gIFByb3BlcnR5VHlwZUVudW0sXHJcbiAgU3RhdHVzVHlwZUVudW1cclxufSBmcm9tICdAbWFwbGFuZGVyL3R5cGVzJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0RpYWxvZ1NlcnZpY2V9IGZyb20gJ0BtYXBsYW5kZXIvc2hhcmVkJztcclxuaW1wb3J0IHtEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUywgTUFUX0RBVEVfTE9DQUxFfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHtNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TLCBNb21lbnREYXRlQWRhcHRlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXInO1xyXG5pbXBvcnQgKiBhcyBtb21lbnRJbXBvcnRlZCBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQge1Byb3BlcnR5VHlwZUl0ZW19IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL21vZGVscy9wcm9wZXJ0eS10eXBlLWl0ZW0nO1xyXG5pbXBvcnQge0FtZW5pdHlJdGVtfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9tb2RlbHMvYW1lbml0eS1pdGVtJztcclxuaW1wb3J0IHtDb25zdGFudHNDb21wb25lbnRzfSBmcm9tICcuLi8uLi8uLi8uLi9jb25zdGFudHNDb21wb25lbnRzJztcclxuaW1wb3J0IHtQcm9wZXJ0eUVkaXRvclZhbGlkYXRvcnN9IGZyb20gJy4uLy4uL3ZhbGlkYXRvcnMvcHJvcGVydHktZWRpdG9yLXZhbGlkYXRvcnMnO1xyXG5pbXBvcnQge01EYXRlfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9jbGFzc2VzJztcclxuaW1wb3J0IHtVdGlsc30gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnO1xyXG5jb25zdCBtb21lbnQgPSBtb21lbnRJbXBvcnRlZDtcclxuXHJcbmNvbnN0IE1ZX0ZPUk1BVFMgPSB7XHJcbiAgcGFyc2U6IHtcclxuICAgIGRhdGVJbnB1dDogJ0wnLFxyXG4gIH0sXHJcbiAgZGlzcGxheToge1xyXG4gICAgZGF0ZUlucHV0OiAnTCcsXHJcbiAgICBtb250aFllYXJMYWJlbDogJ01NTSBZWVlZJyxcclxuICAgIGRhdGVBMTF5TGFiZWw6ICdMJyxcclxuICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ01NTU0gWVlZWScsXHJcbiAgfSxcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXByb3BlcnR5LWVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7cHJvdmlkZTogTUFUX0RBVEVfTE9DQUxFLCB1c2VWYWx1ZTogJ2VzLU1YJ30sXHJcbiAgICB7cHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBNb21lbnREYXRlQWRhcHRlciwgZGVwczogW01BVF9EQVRFX0xPQ0FMRSwgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OU119LFxyXG4gICAge3Byb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBNWV9GT1JNQVRTfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2J0blN1Ym1pdCcsIHtzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWZ9KSBwcml2YXRlIF9idG5TdWJtaXRSZWY6IEVsZW1lbnRSZWY7XHJcbiAgQElucHV0KCkgdXRpbHM6IEFwcFV0aWw7XHJcbiAgQElucHV0KCkgYWRkcmVzczogQWRkcmVzcztcclxuICBASW5wdXQoKSBwcm9wZXJ0eVR5cGU6IFByb3BlcnR5VHlwZUVudW07XHJcbiAgQElucHV0KCkgcHJvcGVydHk6IE5ld1Byb3BlcnR5O1xyXG4gIEBJbnB1dCgpIG1sc0xhYmVsOiBzdHJpbmc7XHJcbiAgQE91dHB1dCgpIGVkaXRvckluc3RhbmNlOiBFdmVudEVtaXR0ZXI8RWRpdG9yQ29tcG9uZW50PjtcclxuICBAT3V0cHV0KCkgc2VsZWN0QWRkcmVzczogRXZlbnRFbWl0dGVyPHZvaWQ+O1xyXG4gIC8qKlxyXG4gICAqIFJFR0VYX09OTFlfSU5URUdFUlNcclxuICAgKiBSZWdleCBwYXR0ZXJuIHRvIG9ubHkgYWNjZXB0IGludGVnZXIgYW5kIHBvc2l0aXZlIG51bWJlcnNcclxuICAgKiAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgUkVHRVhfT05MWV9JTlRFR0VSUyA9IG5ldyBSZWdFeHAoL15bMC05XVxcZCokLyk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBSRUdFWF9NSURETEVfTlVNQkVSID0gbmV3IFJlZ0V4cCgvXlswLTldKihcXC5bNV0pPyQvKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IFJFR0VYX1dFQlNJVEUgPSBuZXcgUmVnRXhwKC8oaHR0cHxodHRwcyk6XFwvXFwvKFxcdys6P1xcdypAKT8oXFxTKykoOlswLTldKyk/KFxcL3xcXC8oW1xcdyMhOi4/Kz0mJUBcXC1cXC9dKSk/Lyk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBSRUdFWF9BTFBIQV9OVU1CRVIgPSBuZXcgUmVnRXhwKC9bQS1aYS16MC05X10vKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIHJlYWRvbmx5IF92YWxpZGF0b3JzOiB7XHJcbiAgICBiZWRyb29tczogVmFsaWRhdG9yRm5bXSxcclxuICAgIGJhdGhyb29tczogVmFsaWRhdG9yRm5bXSxcclxuICAgIHBhcmtpbmdTcGFjZXM6IFZhbGlkYXRvckZuW10sXHJcbiAgICBtYWluQXJlYTogVmFsaWRhdG9yRm5bXSxcclxuICAgIHNlY29uZGFyeUFyZWE6IFZhbGlkYXRvckZuW10sXHJcbiAgICBleHRlcm5hbExpbms6IFZhbGlkYXRvckZuW10sXHJcbiAgICBza3U6IFZhbGlkYXRvckZuW11cclxuICB9O1xyXG4gIHByaXZhdGUgX3Byb3BlcnR5OiBOZXdQcm9wZXJ0eTtcclxuICBwcml2YXRlIF9wcm9wZXJ0eVR5cGVJdGVtOiBQcm9wZXJ0eVR5cGVJdGVtO1xyXG4gIHByaXZhdGUgX2Vycm9yRmllbGRzOiBzdHJpbmdbXTtcclxuICBwdWJsaWMgcHJvcGVydHlGb3JtOiBGb3JtR3JvdXA7XHJcbiAgcHVibGljIG9mZmVyaW5nVHlwZUxpc3Q6IHsgbmFtZTogc3RyaW5nLCB2YWx1ZTogT2ZmZXJpbmdUeXBlRW51bSB9W107XHJcbiAgcHVibGljIGN1cnJlbmN5TGlzdDogQ0VSW107XHJcbiAgcHVibGljIHJvaUxpc3Q6IG51bWJlcltdO1xyXG4gIHB1YmxpYyBsYW5kVXNlTGlzdDogeyBuYW1lOiBzdHJpbmcsIHZhbHVlOiBMYW5kVXNlRW51bSB9W107XHJcbiAgcHVibGljIGFtZW5pdGllc0xpc3Q6IEFtZW5pdHlJdGVtW107XHJcbiAgcHVibGljIGZlYXR1cmVzTGlzdDogQW1lbml0eUl0ZW1bXTtcclxuICBwdWJsaWMgY29tbWlzc2lvbkxpc3Q6IG51bWJlcltdO1xyXG4gIHB1YmxpYyBzaGFyZWRDb21taXNzaW9uTGlzdDogbnVtYmVyW107XHJcbiAgcHVibGljIGR1cmF0aW9uTGlzdDogbnVtYmVyW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfYWRhcHRlcjogRGF0ZUFkYXB0ZXI8YW55PlxyXG4gICkge1xyXG4gICAgdGhpcy5lZGl0b3JJbnN0YW5jZSA9IG5ldyBFdmVudEVtaXR0ZXI8RWRpdG9yQ29tcG9uZW50PigpO1xyXG4gICAgdGhpcy5zZWxlY3RBZGRyZXNzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICAgdGhpcy5vZmZlcmluZ1R5cGVMaXN0ID0gQ29uc3RhbnRzQ29tcG9uZW50cy5PZmZlcmluZ1R5cGVMaXN0Lm1hcChkb2MgPT4gKHsuLi5kb2N9KSk7XHJcbiAgICB0aGlzLmxhbmRVc2VMaXN0ID0gQ29uc3RhbnRzQ29tcG9uZW50cy5MYW5kVXNlTGlzdC5tYXAoZG9jID0+ICh7Li4uZG9jfSkpO1xyXG4gICAgdGhpcy5jb21taXNzaW9uTGlzdCA9IENvbnN0YW50c0NvbXBvbmVudHMuQ29tbWlzc2lvbkxpc3RbT2ZmZXJpbmdUeXBlRW51bS5TQUxFXTtcclxuICAgIHRoaXMucm9pTGlzdCA9IE9iamVjdC5hc3NpZ24oW10sIENvbnN0YW50c0NvbXBvbmVudHMuUk9JTGlzdCk7XHJcbiAgICB0aGlzLmR1cmF0aW9uTGlzdCA9IE9iamVjdC5hc3NpZ24oW10sIENvbnN0YW50c0NvbXBvbmVudHMuRHVyYXRpb25MaXN0KTtcclxuICAgIHRoaXMuc2hhcmVkQ29tbWlzc2lvbkxpc3QgPSBPYmplY3QuYXNzaWduKFtdLCBDb25zdGFudHNDb21wb25lbnRzLlNoYXJlZENvbW1pc3Npb25MaXN0KTtcclxuICAgIHRoaXMuX2FkYXB0ZXIuc2V0TG9jYWxlKCdlcycpO1xyXG4gICAgdGhpcy5fZXJyb3JGaWVsZHMgPSBbXTtcclxuICAgIHRoaXMuX3ZhbGlkYXRvcnMgPSB7XHJcbiAgICAgIGJlZHJvb21zOiBbVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuUkVHRVhfT05MWV9JTlRFR0VSUyldLFxyXG4gICAgICBiYXRocm9vbXM6IFtWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5SRUdFWF9NSURETEVfTlVNQkVSKV0sXHJcbiAgICAgIHBhcmtpbmdTcGFjZXM6IFtWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5SRUdFWF9PTkxZX0lOVEVHRVJTKV0sXHJcbiAgICAgIG1haW5BcmVhOiBbXSxcclxuICAgICAgc2Vjb25kYXJ5QXJlYTogW10sXHJcbiAgICAgIGV4dGVybmFsTGluazogW1ZhbGlkYXRvcnMucGF0dGVybih0aGlzLlJFR0VYX1dFQlNJVEUpXSxcclxuICAgICAgc2t1OiBbVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuUkVHRVhfQUxQSEFfTlVNQkVSKV1cclxuICAgIH07XHJcbiAgICB0aGlzLnByb3BlcnR5Rm9ybSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgb2ZmZXJpbmc6IFtPZmZlcmluZ1R5cGVFbnVtLlNBTEVdLFxyXG4gICAgICBza3U6IFtudWxsLCB0aGlzLl92YWxpZGF0b3JzLnNrdV0sXHJcbiAgICAgIGNvbnN1bWVyUmVwb3J0aW5nOiBbXSxcclxuICAgICAgY29uc3VtZXJSZXBvcnRpbmdPcHRpb246IFsxXSxcclxuICAgICAgY3VycmVuY3k6IFsnTVhOJ10sXHJcbiAgICAgIG1pblByaWNlOiBbXSxcclxuICAgICAgcHJpY2U6IFtdLFxyXG4gICAgICBtYWludGVuYW5jZTogW10sXHJcbiAgICAgIG1haW50ZW5hbmNlUHJpY2U6IFtdLFxyXG4gICAgICB0cmFuc2ZlcjogW10sXHJcbiAgICAgIHRyYW5zZmVyUHJpY2U6IFtdLFxyXG4gICAgICBiZWRyb29tczogW251bGwsIHRoaXMuX3ZhbGlkYXRvcnMuYmVkcm9vbXNdLFxyXG4gICAgICBiYXRocm9vbXM6IFtudWxsLCB0aGlzLl92YWxpZGF0b3JzLmJhdGhyb29tc10sXHJcbiAgICAgIHBhcmtpbmdTcGFjZXM6IFtudWxsLCB0aGlzLl92YWxpZGF0b3JzLnBhcmtpbmdTcGFjZXNdLFxyXG4gICAgICBtYWluQXJlYTogW251bGwsIHRoaXMuX3ZhbGlkYXRvcnMubWFpbkFyZWFdLFxyXG4gICAgICBzZWNvbmRhcnlBcmVhOiBbbnVsbCwgdGhpcy5fdmFsaWRhdG9ycy5zZWNvbmRhcnlBcmVhXSxcclxuICAgICAgdW5pdDogW0FyZWFVbml0RW51bS5NMl0sXHJcbiAgICAgIGJ1aWxkSW46IFtdLFxyXG4gICAgICBsYW5kVXNlOiBbXSxcclxuICAgICAgZXhjbHVzaXZpdHk6IFtdLFxyXG4gICAgICBtbG06IFtdLFxyXG4gICAgICBzaGFyZWRDb21taXNzaW9uOiBbXSxcclxuICAgICAgYWdyZWVtZW50RGF0ZTogW3t2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IHRydWV9XSxcclxuICAgICAgZHVyYXRpb246IFtdLFxyXG4gICAgICBjb21taXNzaW9uOiBbXSxcclxuICAgICAgcm9pOiBbXSxcclxuICAgICAgZGVzY3JpcHRpb246IFtdLFxyXG4gICAgICBleHRlcm5hbExpbms6IFtudWxsLCB0aGlzLl92YWxpZGF0b3JzLmV4dGVybmFsTGlua10sXHJcbiAgICAgIG5vdGVzOiBbXSxcclxuICAgICAgYWRkcmVzczogdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgIGNvdW50cnk6IFtdLFxyXG4gICAgICAgIHBvc3RhbENvZGU6IFtdLFxyXG4gICAgICAgIHN0YXRlOiBbXSxcclxuICAgICAgICBjaXR5OiBbXSxcclxuICAgICAgICB0b3duc2hpcDogW10sXHJcbiAgICAgICAgY29sb255OiBbXSxcclxuICAgICAgICBzdHJlZXQ6IFtdLFxyXG4gICAgICAgIGV4dE51bWJlcjogW10sXHJcbiAgICAgICAgaW50TnVtYmVyOiBbXSxcclxuICAgICAgICBtejogW10sXHJcbiAgICAgICAgbHQ6IFtdLFxyXG4gICAgICAgIHZpc2libGU6IFt0cnVlXSxcclxuICAgICAgfSksXHJcbiAgICB9LCB7XHJcbiAgICAgIHZhbGlkYXRvcnM6IFByb3BlcnR5RWRpdG9yVmFsaWRhdG9ycy52YWxpZGF0b3JcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgZ2VvUHRHZW5lcmF0b3IoZ2VvUHQ6IEdlb1B0LCBtaW5EaXN0YW5jZTogbnVtYmVyLCBtYXhEaXN0YW5jZTogbnVtYmVyKTogR2VvUHQge1xyXG4gICAgY29uc3QgRUFSVEhfUkFESVVTX01FVEVSUyA9IDYzNzEwMTAuMDtcclxuICAgIGNvbnN0IGwgPSBNYXRoLnJhbmRvbSgpICogKG1heERpc3RhbmNlIC0gbWluRGlzdGFuY2UpICsgbWluRGlzdGFuY2U7XHJcbiAgICBjb25zdCBhbHBoYSA9IE1hdGgucmFuZG9tKCkgKiBNYXRoLlBJIC8gMjtcclxuICAgIGNvbnN0IHN4ID0gKE1hdGgucmFuZG9tKCkgPCAwLjUpID8gbCAqIE1hdGguY29zKGFscGhhKSA6IC1sICogTWF0aC5jb3MoYWxwaGEpO1xyXG4gICAgY29uc3Qgc3kgPSAoTWF0aC5yYW5kb20oKSA8IDAuNSkgPyBsICogTWF0aC5zaW4oYWxwaGEpIDogLWwgKiBNYXRoLnNpbihhbHBoYSk7XHJcbiAgICBjb25zdCBkZWx0YUxhdCA9IHN5IC8gRUFSVEhfUkFESVVTX01FVEVSUyAqIDE4MCAvIE1hdGguUEk7XHJcbiAgICBjb25zdCBsYXQgPSBnZW9QdC5sYXRpdHVkZSArIGRlbHRhTGF0O1xyXG4gICAgY29uc3QgZGVsdGFMb25nID0gc3ggLyBFQVJUSF9SQURJVVNfTUVURVJTIC8gTWF0aC5jb3MobGF0ICogTWF0aC5QSSAvIDE4MCkgKiAxODAgLyBNYXRoLlBJO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbGF0aXR1ZGU6IGxhdCxcclxuICAgICAgbG9uZ2l0dWRlOiBnZW9QdC5sb25naXR1ZGUgKyBkZWx0YUxvbmdcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMubGlzdGVuQ2hhbmdlc09uRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ3V0aWxzJ10gJiYgY2hhbmdlc1sndXRpbHMnXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5jdXJyZW5jeUxpc3QgPSBjaGFuZ2VzWyd1dGlscyddLmN1cnJlbnRWYWx1ZS5jZXJzO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ3Byb3BlcnR5VHlwZSddICYmIGNoYW5nZXNbJ3Byb3BlcnR5VHlwZSddLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICB0aGlzLnByb3BlcnR5VHlwZSA9IGNoYW5nZXNbJ3Byb3BlcnR5VHlwZSddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgdGhpcy5zZWFyY2hBbWVuaXRpZXNCeVByb3BlcnR5VHlwZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ3Byb3BlcnR5J10gJiYgY2hhbmdlc1sncHJvcGVydHknXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5jcmVhdGVQcm9wZXJ0eShjaGFuZ2VzWydwcm9wZXJ0eSddLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snYWRkcmVzcyddICYmIGNoYW5nZXNbJ2FkZHJlc3MnXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy51cGRhdGVBZGRyZXNzRm9ybShjaGFuZ2VzWydhZGRyZXNzJ10uY3VycmVudFZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdG9ySW5zdGFuY2UuZW1pdCh0aGlzKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRQcm9wZXJ0eSgpOiBOZXdQcm9wZXJ0eSB7XHJcbiAgICB0aGlzLnNldFZhbGlkYXRvck9uRmllbGRzKHRoaXMuX2Vycm9yRmllbGRzLCB0cnVlKTtcclxuICAgIHRoaXMudXBkYXRlUHJvcGVydHlCeUZvcm0odGhpcy5wcm9wZXJ0eUZvcm0uZ2V0UmF3VmFsdWUoKSk7XHJcbiAgICByZXR1cm4gdGhpcy5fcHJvcGVydHk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZUZvcm1JbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgdGhpcy5zZXRWYWxpZGF0b3JPbkZpZWxkcyh0aGlzLl9lcnJvckZpZWxkcywgdHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eUZvcm0uaW52YWxpZDtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUFtZW5pdHkoYW1lbml0eTogQW1lbml0eUl0ZW0pOiB2b2lkIHtcclxuICAgIGFtZW5pdHkuY2hlY2tlZCA9ICFhbWVuaXR5LmNoZWNrZWQ7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hbWVuaXRpZXNbYW1lbml0eS52YWx1ZV0gPSBhbWVuaXR5LmNoZWNrZWQ7XHJcbiAgfVxyXG5cclxuICBnb1RvU2VsZWN0QWRkcmVzcygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0QWRkcmVzcy5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBzZXRFcnJvcnNPbkZpZWxkcyhlcnJvcnM6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLl9lcnJvckZpZWxkcyA9IGVycm9ycztcclxuICAgIHRoaXMuc2V0VmFsaWRhdG9yT25GaWVsZHModGhpcy5fZXJyb3JGaWVsZHMpO1xyXG4gICAgdGhpcy5fYnRuU3VibWl0UmVmLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQWRkcmVzc0Zvcm0oYWRkcmVzczogQWRkcmVzcyk6IHZvaWQge1xyXG4gICAgdGhpcy5wcm9wZXJ0eUZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgIGFkZHJlc3M6IHtcclxuICAgICAgICBjb3VudHJ5OiBhZGRyZXNzLmNvdW50cnksXHJcbiAgICAgICAgc3RhdGU6IGFkZHJlc3Muc3RhdGUsXHJcbiAgICAgICAgY2l0eTogYWRkcmVzcy5jaXR5LFxyXG4gICAgICAgIHRvd25zaGlwOiBhZGRyZXNzLnRvd25zaGlwLFxyXG4gICAgICAgIGNvbG9ueTogYWRkcmVzcy5jb2xvbnksXHJcbiAgICAgICAgc3RyZWV0OiBhZGRyZXNzLnN0cmVldCxcclxuICAgICAgICBwb3N0YWxDb2RlOiBhZGRyZXNzLnBvc3RhbENvZGUsXHJcbiAgICAgICAgZXh0TnVtYmVyOiBhZGRyZXNzLm91dGRvb3JOdW1iZXJcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzc2lnbkFtZW5pdGllcygpOiB2b2lkIHtcclxuICAgIHRoaXMuYW1lbml0aWVzTGlzdC5mb3JFYWNoKChhbWVuaXR5KSA9PiB7XHJcbiAgICAgIGFtZW5pdHkuY2hlY2tlZCA9IHRoaXMuX3Byb3BlcnR5LmFtZW5pdGllc1thbWVuaXR5LnZhbHVlXTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3NpZ25Mb2NhdGlvbkZlYXR1cmVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mZWF0dXJlc0xpc3QuZm9yRWFjaCgoYW1lbml0eSkgPT4ge1xyXG4gICAgICBhbWVuaXR5LmNoZWNrZWQgPSB0aGlzLl9wcm9wZXJ0eS5hbWVuaXRpZXNbYW1lbml0eS52YWx1ZV07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXNzaWduQ29tbWlzc2lvbigpOiB2b2lkIHtcclxuICAgIHRoaXMuY29tbWlzc2lvbkxpc3QgPSBDb25zdGFudHNDb21wb25lbnRzLkNvbW1pc3Npb25MaXN0W3RoaXMuX3Byb3BlcnR5Lm9mZmVyaW5nXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXNzaWduQnVzaW5lc3NSdWxlcygpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAodGhpcy5wcm9wZXJ0eVR5cGUpIHtcclxuICAgICAgY2FzZSBQcm9wZXJ0eVR5cGVFbnVtLlJPT006XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICBvZmZlcmluZzogT2ZmZXJpbmdUeXBlRW51bS5SRU5UXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlRW51bS5JTlZFU1RNRU5UOlxyXG4gICAgICAgIHRoaXMucHJvcGVydHlGb3JtLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgICAgb2ZmZXJpbmc6IE9mZmVyaW5nVHlwZUVudW0uU0FMRVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX3Byb3BlcnR5LnN0YXR1cyA9PT0gU3RhdHVzVHlwZUVudW0uQU5OT1VOQ0VEKSB7XHJcbiAgICAgIGNvbnN0IGVycm9ycyA9IFV0aWxzLmxpc3RFcnJvcnNCeVByb3BlcnR5VHlwZUZvclB1Ymxpc2godGhpcy5fcHJvcGVydHkudHlwZSk7XHJcbiAgICAgIHRoaXMuc2V0VmFsaWRhdG9yT25GaWVsZHMoZXJyb3JzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRm9ybUJ5UHJvcGVydHkoKTogdm9pZCB7XHJcbiAgICB0aGlzLnByb3BlcnR5Rm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgb2ZmZXJpbmc6IHRoaXMuX3Byb3BlcnR5Lm9mZmVyaW5nLFxyXG4gICAgICBza3U6IHRoaXMuX3Byb3BlcnR5LnNrdSxcclxuICAgICAgY29uc3VtZXJSZXBvcnRpbmc6IHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5jb25zdW1lclJlcG9ydGluZyAmJiB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8uY29uc3VtZXJSZXBvcnRpbmcgIT09IDAsXHJcbiAgICAgIGNvbnN1bWVyUmVwb3J0aW5nT3B0aW9uOiB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8uY29uc3VtZXJSZXBvcnRpbmcsXHJcbiAgICAgIGN1cnJlbmN5OiB0aGlzLl9wcm9wZXJ0eS5jdXJyZW5jeSxcclxuICAgICAgbWluUHJpY2U6IHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5sb3dlc3RQcmljZSxcclxuICAgICAgcHJpY2U6IHRoaXMuX3Byb3BlcnR5LnByaWNlLFxyXG4gICAgICBtYWludGVuYW5jZTogdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuY29uZG9taW5pdW1GZWVQcmljZSAmJiB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5jb25kb21pbml1bUZlZVByaWNlICE9PSAwLFxyXG4gICAgICBtYWludGVuYW5jZVByaWNlOiB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5jb25kb21pbml1bUZlZVByaWNlLFxyXG4gICAgICB0cmFuc2ZlcjogdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmxlYXNlVHJhbnNmZXJQcmljZSAmJiB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubGVhc2VUcmFuc2ZlclByaWNlICE9PSAwLFxyXG4gICAgICB0cmFuc2ZlclByaWNlOiB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubGVhc2VUcmFuc2ZlclByaWNlLFxyXG4gICAgICBiZWRyb29tczogdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuYmVkcm9vbXMsXHJcbiAgICAgIGJhdGhyb29tczogdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuYmF0aHJvb21zLFxyXG4gICAgICBwYXJraW5nU3BhY2VzOiB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5wYXJraW5nU3BhY2VzLFxyXG4gICAgICBtYWluQXJlYTogdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMubWFpbkFyZWEsXHJcbiAgICAgIHNlY29uZGFyeUFyZWE6IHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLnNlY29uZGFyeUFyZWEsXHJcbiAgICAgIHVuaXQ6IHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLmFyZWFVbml0LFxyXG4gICAgICBidWlsZEluOiB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5idWlsdEluID8gbmV3IERhdGUodGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuYnVpbHRJbiwgMSwgMSkgOiBudWxsLFxyXG4gICAgICBsYW5kVXNlOiB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5sYW5kVXNlLFxyXG4gICAgICBleGNsdXNpdml0eTogdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmV4Y2x1c2l2aXR5LFxyXG4gICAgICBtbG06IHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5tbHMsXHJcbiAgICAgIHNoYXJlZENvbW1pc3Npb246IHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5zaGFyZWRDb21taXNzaW9uLFxyXG4gICAgICBhZ3JlZW1lbnREYXRlOiB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubGlzdGluZ0FncmVlbWVudFN0YXJ0RGF0ZSA/XHJcbiAgICAgICAgbW9tZW50KG5ldyBNRGF0ZSh0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubGlzdGluZ0FncmVlbWVudFN0YXJ0RGF0ZSkudG9EYXRlKCkpIDogbnVsbCxcclxuICAgICAgZHVyYXRpb246IHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5saXN0aW5nQWdyZWVtZW50VGltZSxcclxuICAgICAgY29tbWlzc2lvbjogdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmNvbW1pc3Npb24sXHJcbiAgICAgIHJvaTogdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMucm9pLFxyXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5fcHJvcGVydHkuZGVzY3JpcHRpb24sXHJcbiAgICAgIGV4dGVybmFsTGluazogdGhpcy5fcHJvcGVydHkuZXh0ZXJuYWxMaW5rLFxyXG4gICAgICBub3RlczogdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLm5vdGVzLFxyXG4gICAgICBhZGRyZXNzOiB7XHJcbiAgICAgICAgY291bnRyeTogdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5jb3VudHJ5LFxyXG4gICAgICAgIHN0YXRlOiB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLnN0YXRlLFxyXG4gICAgICAgIGNpdHk6IHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MuY2l0eSxcclxuICAgICAgICB0b3duc2hpcDogdGhpcy5fcHJvcGVydHkuYWRkcmVzcy50b3duc2hpcCxcclxuICAgICAgICBjb2xvbnk6IHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MuY29sb255LFxyXG4gICAgICAgIHBvc3RhbENvZGU6IHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MucG9zdGFsQ29kZSxcclxuICAgICAgICBzdHJlZXQ6IHRoaXMuX3Byb3BlcnR5LmFkZHJlc3Muc3RyZWV0LFxyXG4gICAgICAgIGV4dE51bWJlcjogdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5vdXRkb29yTnVtYmVyLFxyXG4gICAgICAgIGludE51bWJlcjogdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5pbnRlcmlvck51bWJlcixcclxuICAgICAgICBtejogdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5teixcclxuICAgICAgICBsdDogdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5sdCxcclxuICAgICAgICB2aXNpYmxlOiB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLnZpc2libGUgfHwgZmFsc2UsXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVQcm9wZXJ0eUJ5Rm9ybShkYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX3Byb3BlcnR5LnR5cGUgPSB0aGlzLnByb3BlcnR5VHlwZTtcclxuICAgIHRoaXMuX3Byb3BlcnR5Lm9mZmVyaW5nID0gZGF0YS5vZmZlcmluZztcclxuICAgIHRoaXMuX3Byb3BlcnR5LnNrdSA9IGRhdGEuc2t1O1xyXG4gICAgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmNvbnN1bWVyUmVwb3J0aW5nID0gZGF0YS5jb25zdW1lclJlcG9ydGluZyA/IGRhdGEuY29uc3VtZXJSZXBvcnRpbmdPcHRpb24gOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuY3VycmVuY3kgPSBkYXRhLmN1cnJlbmN5O1xyXG4gICAgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmxvd2VzdFByaWNlID0gZGF0YS5taW5QcmljZSA/IE51bWJlcihkYXRhLm1pblByaWNlKSA6IG51bGw7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5wcmljZSA9IGRhdGEucHJpY2UgPyBOdW1iZXIoZGF0YS5wcmljZSkgOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuY29uZG9taW5pdW1GZWVQcmljZSA9IGRhdGEubWFpbnRlbmFuY2UgPyBOdW1iZXIoZGF0YS5tYWludGVuYW5jZVByaWNlKSA6IG51bGw7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubGVhc2VUcmFuc2ZlclByaWNlID0gZGF0YS50cmFuc2ZlciA/IE51bWJlcihkYXRhLnRyYW5zZmVyUHJpY2UpIDogbnVsbDtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLmJlZHJvb21zID0gZGF0YS5iZWRyb29tcyA/IE51bWJlcihkYXRhLmJlZHJvb21zKSA6IG51bGw7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5iYXRocm9vbXMgPSBkYXRhLmJhdGhyb29tcyA/IE51bWJlcihkYXRhLmJhdGhyb29tcykgOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMucGFya2luZ1NwYWNlcyA9IGRhdGEucGFya2luZ1NwYWNlcyA/IE51bWJlcihkYXRhLnBhcmtpbmdTcGFjZXMpIDogbnVsbDtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLm1haW5BcmVhID0gZGF0YS5tYWluQXJlYSA/IE51bWJlcihkYXRhLm1haW5BcmVhKSA6IG51bGw7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5zZWNvbmRhcnlBcmVhID0gZGF0YS5zZWNvbmRhcnlBcmVhID8gTnVtYmVyKGRhdGEuc2Vjb25kYXJ5QXJlYSkgOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuYXJlYVVuaXQgPSBkYXRhLnVuaXQ7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5idWlsdEluID0gZGF0YS5idWlsZEluID8gZGF0YS5idWlsZEluLmdldEZ1bGxZZWFyKCkgOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMubGFuZFVzZSA9IGRhdGEubGFuZFVzZTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5leGNsdXNpdml0eSA9IGRhdGEuZXhjbHVzaXZpdHk7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubWxzID0gZGF0YS5tbG07XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8uc2hhcmVkQ29tbWlzc2lvbiA9IGRhdGEubWxtID8gTnVtYmVyKGRhdGEuc2hhcmVkQ29tbWlzc2lvbikgOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmxpc3RpbmdBZ3JlZW1lbnRTdGFydERhdGUgPVxyXG4gICAgICBkYXRhLmFncmVlbWVudERhdGUgPyBNRGF0ZS5nZXRUaW1lc3RhbXAoZGF0YS5hZ3JlZW1lbnREYXRlLnRvRGF0ZSgpKSA6IG51bGw7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubGlzdGluZ0FncmVlbWVudFRpbWUgPSBkYXRhLmR1cmF0aW9uO1xyXG4gICAgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmNvbW1pc3Npb24gPSBkYXRhLmNvbW1pc3Npb247XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5yb2kgPSBkYXRhLnJvaTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmRlc2NyaXB0aW9uID0gZGF0YS5kZXNjcmlwdGlvbjtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmV4dGVybmFsTGluayA9IGRhdGEuZXh0ZXJuYWxMaW5rO1xyXG4gICAgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLm5vdGVzID0gZGF0YS5ub3RlcztcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MuY291bnRyeSA9IGRhdGEuYWRkcmVzcy5jb3VudHJ5O1xyXG4gICAgdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5zdGF0ZSA9IGRhdGEuYWRkcmVzcy5zdGF0ZTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MuY2l0eSA9IGRhdGEuYWRkcmVzcy5jaXR5O1xyXG4gICAgdGhpcy5fcHJvcGVydHkuYWRkcmVzcy50b3duc2hpcCA9IGRhdGEuYWRkcmVzcy50b3duc2hpcDtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MuY29sb255ID0gZGF0YS5hZGRyZXNzLmNvbG9ueTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MucG9zdGFsQ29kZSA9IGRhdGEuYWRkcmVzcy5wb3N0YWxDb2RlO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5zdHJlZXQgPSBkYXRhLmFkZHJlc3Muc3RyZWV0O1xyXG4gICAgdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5vdXRkb29yTnVtYmVyID0gZGF0YS5hZGRyZXNzLmV4dE51bWJlcjtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MuaW50ZXJpb3JOdW1iZXIgPSBkYXRhLmFkZHJlc3MuaW50TnVtYmVyO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5teiA9IGRhdGEuYWRkcmVzcy5tejtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MubHQgPSBkYXRhLmFkZHJlc3MubHQ7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLmxvY2F0aW9uID0gdGhpcy5hZGRyZXNzLmxvY2F0aW9uO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5wdWJsaWNMb2NhdGlvbiA9ICFkYXRhLmFkZHJlc3MudmlzaWJsZSA/XHJcbiAgICAgIEVkaXRvckNvbXBvbmVudC5nZW9QdEdlbmVyYXRvcih0aGlzLmFkZHJlc3MubG9jYXRpb24sIDIwMCwgNDAwKSA6IHRoaXMuYWRkcmVzcy5sb2NhdGlvbjtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MudmlzaWJsZSA9IGRhdGEuYWRkcmVzcy52aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZWFyY2hBbWVuaXRpZXNCeVByb3BlcnR5VHlwZSgpOiB2b2lkIHtcclxuICAgIENvbnN0YW50c0NvbXBvbmVudHMuUHJvcGVydHlUeXBlTGlzdC5mb3JFYWNoKHR5cGUgPT4ge1xyXG4gICAgICBpZiAodHlwZS52YWx1ZSA9PT0gdGhpcy5wcm9wZXJ0eVR5cGUpIHtcclxuICAgICAgICB0aGlzLl9wcm9wZXJ0eVR5cGVJdGVtID0gdHlwZTtcclxuICAgICAgICB0aGlzLmFtZW5pdGllc0xpc3QgPSB0eXBlLmFtZW5pdGllcy5tYXAoaXRlbSA9PiAoey4uLml0ZW19KSk7XHJcbiAgICAgICAgdGhpcy5mZWF0dXJlc0xpc3QgPSB0eXBlLmZlYXR1cmVzLm1hcChpdGVtID0+ICh7Li4uaXRlbX0pKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxpc3RlbkNoYW5nZXNPbkZvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1snb2ZmZXJpbmcnXS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tbWlzc2lvbkxpc3QgPSBDb25zdGFudHNDb21wb25lbnRzLkNvbW1pc3Npb25MaXN0W3ZhbHVlXTtcclxuICAgICAgICB0aGlzLnByb3BlcnR5Rm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgIG1pblByaWNlOiBudWxsLFxyXG4gICAgICAgICAgbWF4UHJpY2U6IG51bGxcclxuICAgICAgICB9KTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1sncHJpY2UnXS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIGlmICh2YWx1ZSAmJiBOdW1iZXIodmFsdWUpID09PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLnByb3BlcnR5Rm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgICAgbWluUHJpY2U6IG51bGxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1snbWxtJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbJ3NoYXJlZENvbW1pc3Npb24nXS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1snbWFpbnRlbmFuY2UnXS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1snbWFpbnRlbmFuY2VQcmljZSddLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMucHJvcGVydHlGb3JtLmNvbnRyb2xzWyd0cmFuc2ZlciddLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucHJvcGVydHlGb3JtLmNvbnRyb2xzWyd0cmFuc2ZlclByaWNlJ10uc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbJ2NvbnN1bWVyUmVwb3J0aW5nJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbJ2NvbnN1bWVyUmVwb3J0aW5nT3B0aW9uJ10uc2V0VmFsdWUoMSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVQcm9wZXJ0eShwcm9wZXJ0eT86IE5ld1Byb3BlcnR5KTogdm9pZCB7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eSA9IG5ldyBOZXdQcm9wZXJ0eShwcm9wZXJ0eSB8fCBudWxsKTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LnR5cGUgPSB0aGlzLnByb3BlcnR5VHlwZTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mbyA9IG5ldyBQcm9wZXJ0eUluZm8ocHJvcGVydHkgPyBwcm9wZXJ0eS5wcm9wZXJ0eUluZm8gOiBudWxsKTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzID0gbmV3IEZlYXR1cmVzKHByb3BlcnR5ID8gcHJvcGVydHkuZmVhdHVyZXMgOiBudWxsKTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MgPSBuZXcgQWRkcmVzcyhwcm9wZXJ0eSA/IHByb3BlcnR5LmFkZHJlc3MgOiBudWxsKTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFtZW5pdGllcyA9IG5ldyBBbWVuaXRpZXMocHJvcGVydHkgPyBwcm9wZXJ0eS5hbWVuaXRpZXMgOiBudWxsKTtcclxuICAgIHRoaXMuYXNzaWduQnVzaW5lc3NSdWxlcygpO1xyXG4gICAgaWYgKHByb3BlcnR5ICYmIHByb3BlcnR5LmlkKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlRm9ybUJ5UHJvcGVydHkoKTtcclxuICAgICAgdGhpcy5hc3NpZ25BbWVuaXRpZXMoKTtcclxuICAgICAgdGhpcy5hc3NpZ25Mb2NhdGlvbkZlYXR1cmVzKCk7XHJcbiAgICAgIHRoaXMuYXNzaWduQ29tbWlzc2lvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRWYWxpZGF0b3JPbkZpZWxkcyhlcnJvcnM6IHN0cmluZ1tdLCByZW1vdmU/OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBlcnJvcnMuZm9yRWFjaChlcnJvciA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbZXJyb3JdKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZW1vdmUpIHtcclxuICAgICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1tlcnJvcl0uY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbZXJyb3JdLnNldFZhbGlkYXRvcnModGhpcy5fdmFsaWRhdG9yc1tlcnJvcl0gPyB0aGlzLl92YWxpZGF0b3JzW2Vycm9yXSA6IFtdKTtcclxuICAgICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1tlcnJvcl0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucHJvcGVydHlGb3JtLmNvbnRyb2xzW2Vycm9yXS5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1tlcnJvcl0uc2V0VmFsaWRhdG9ycyhcclxuICAgICAgICAgIHRoaXMuX3ZhbGlkYXRvcnNbZXJyb3JdID8gdGhpcy5fdmFsaWRhdG9yc1tlcnJvcl0uY29uY2F0KFZhbGlkYXRvcnMucmVxdWlyZWQpIDogW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1tlcnJvcl0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -127,7 +127,7 @@ GalleryComponent.decorators = [
|
|
|
127
127
|
{ type: Component, args: [{
|
|
128
128
|
selector: 'lib-gallery',
|
|
129
129
|
template: "<div class=\"gallery\">\r\n <mat-sidenav-container class=\"gallery__sidenav-container\">\r\n <mat-sidenav mode=\"side\" [opened]=\"sideOpened\" class=\"sidenav-container__sidenav\">\r\n <mat-toolbar class=\"sidenav__toolbar\" color=\"primary\">\r\n <span>Galeria</span>\r\n <button mat-icon-button (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-toolbar>\r\n <mat-toolbar class=\"sidenav__thumbnails-types\">\r\n <button class=\"thumbnails-types__item-type\" mat-button\r\n [ngClass]=\"{'item-type--selected': typeSelected === 'IMAGE'}\" (click)=\"changePFileType('IMAGE')\">\r\n <span class=\"item-type__icon ic-component-property-file-image\"></span>\r\n <span class=\"item-type__label\">{{count.image}}</span>\r\n </button>\r\n <button class=\"thumbnails-types__item-type\" mat-button\r\n [ngClass]=\"{'item-type--selected': typeSelected === 'SPHERIC'}\" (click)=\"changePFileType('SPHERIC')\">\r\n <span class=\"item-type__icon ic-component-property-sphere\"></span>\r\n <span class=\"item-type__label\">{{count.sphere}}</span>\r\n </button>\r\n <button class=\"thumbnails-types__item-type\" mat-button\r\n [ngClass]=\"{'item-type--selected': typeSelected === 'VIDEO'}\" (click)=\"changePFileType('VIDEO')\">\r\n <span class=\"item-type__icon ic-component-property-video\"></span>\r\n <span class=\"item-type__label\">{{count.video}}</span>\r\n </button>\r\n </mat-toolbar>\r\n <div class=\"sidenav__thumbnail-list\">\r\n <ng-container *ngFor=\"let image of multimedia; let i = index\">\r\n <div class=\"thumbnail-list__item\" (click)=\"selectPFile(i)\"\r\n [ngClass]=\"{'thumbnail-list__item--selected': indexSelected === i}\">\r\n <ng-template [ngIf]=\"image.type !== 'VIDEO'\" [ngIfElse]=\"youTubeVideo\">\r\n <img class=\"item__img\" [src]=\"image.fileCS.thumbnail\" alt=\"Property image\">\r\n </ng-template>\r\n <ng-template #youTubeVideo>\r\n <img class=\"item__img\" [src]=\"'https://i3.ytimg.com/vi/'+image.fileCS.thumbnail+'/hqdefault.jpg'\"\r\n alt=\"Property image\">\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n <ng-template [ngIf]=\"multimedia.length === 0\">\r\n <div class=\"thumbnail-list__empty-list\">\r\n <p class=\"empty-list__label\">\r\n Por el momento no hay\r\n <span *ngIf=\"typeSelected === 'IMAGE'\">fotos</span>\r\n <span *ngIf=\"typeSelected === 'VIDEO'\">videos</span>\r\n <span *ngIf=\"typeSelected === 'SPHERIC'\">fotos esf\u00E9ricas</span>\r\n </p>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </mat-sidenav>\r\n <mat-sidenav-content class=\"sidenav-container__content\" [ngStyle]=\"{'width': sideOpened ? '80%' : '100%'}\">\r\n <button class=\"sidenav-container__button-sidenav\" mat-flat-button color=\"primary\" (click)=\"updateSideNav()\">\r\n <mat-icon *ngIf=\"sideOpened\">chevron_left</mat-icon>\r\n <mat-icon *ngIf=\"!sideOpened\">chevron_right</mat-icon>\r\n </button>\r\n <button class=\"sidenav-container__button-close\" mat-mini-fab color=\"primary\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <div class=\"content__list-container\">\r\n <lib-property-slide-show class=\"list-container__slide-show\" [multimedia]=\"multimedia\" [selectIndex]=\"indexSelected\"\r\n [initialIndex]=\"indexSelected\"\r\n (currentIndex)=\"onIndexSelectedChange($event)\"></lib-property-slide-show>\r\n </div>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n</div>\r\n",
|
|
130
|
-
styles: ["::ng-deep .gallery_dialog{max-width:100%!important;width:100%;height:100%}::ng-deep .gallery_dialog mat-dialog-container{width:100%;height:100%;padding:0}:host{display:block;width:100%;height:100%}.gallery,.gallery__sidenav-container{width:100%;height:100%}.sidenav__toolbar{display:flex;justify-content:space-between}.sidenav__thumbnail-list{width:100%;height:calc(100% - 128px);padding:16px;box-sizing:border-box;overflow-x:hidden;overflow-y:auto}.thumbnail-list__empty-list{width:100%;height:100%;display:flex}.empty-list__label{margin:auto;text-align:center}.thumbnail-list__item{width:100%;cursor:pointer;padding-bottom:
|
|
130
|
+
styles: ["::ng-deep .gallery_dialog{max-width:100%!important;width:100%;height:100%}::ng-deep .gallery_dialog mat-dialog-container{width:100%;height:100%;padding:0}:host{display:block;width:100%;height:100%}.gallery,.gallery__sidenav-container{width:100%;height:100%}.sidenav__toolbar{display:flex;justify-content:space-between}.sidenav__thumbnail-list{width:100%;height:calc(100% - 128px);padding:16px;box-sizing:border-box;overflow-x:hidden;overflow-y:auto}.thumbnail-list__empty-list{width:100%;height:100%;display:flex}.empty-list__label{margin:auto;text-align:center}.thumbnail-list__item{width:100%;cursor:pointer;padding-bottom:calc(100% / 4 * 3);border-radius:8px;margin-bottom:16px;position:relative}.item__img{position:absolute;top:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;border-radius:8px}.sidenav-container__sidenav{width:20%}@media screen and (max-width:1024px){.sidenav-container__sidenav{width:100%}}.sidenav__thumbnails-types{display:flex;align-items:center;justify-content:space-around}.item-type{padding:0}.item-type__label{padding:0 4px;display:inline-block}.item-type__icon{display:inline-block;width:24px;height:24px;font-size:24px;margin:auto}.sidenav-container__content{width:80%;display:flex;position:relative}@media screen and (max-width:1024px){.sidenav-container__content{width:100%}}.sidenav-container__button-sidenav{position:absolute;top:0;left:0;height:64px;padding:0;min-width:36px;border-radius:0 8px 8px 0;z-index:1}.sidenav-container__button-close{position:absolute;top:16px;right:16px;z-index:1}.content__list-container{width:100%;height:100%;margin:auto;overflow:hidden;position:relative;border-radius:8px}.list-container__slide-show{width:100%;height:100%;padding:initial}::ng-deep .list-container__slide-show .panorama-visor{height:100%!important;padding:initial!important}::ng-deep .list-container__slide-show lib-panorama-visor .panorama-visor__actions{top:72px!important}"]
|
|
131
131
|
}] }
|
|
132
132
|
];
|
|
133
133
|
/** @nocollapse */
|
|
@@ -359,7 +359,7 @@ MultimediaUploaderComponent.decorators = [
|
|
|
359
359
|
{ type: Component, args: [{
|
|
360
360
|
selector: 'lib-property-multimedia-uploader',
|
|
361
361
|
template: "<div class=\"multimedia-uploader\">\r\n <p class=\"title\">\r\n Multimedia\r\n <ng-template [ngIf]=\"currentIndex !== 2\">\r\n <lib-upload-file [content]=\"buttonUploadTemplate\" [noCrop]=\"true\" [fab]=\"true\" [fileType]=\"fileType\" [aspectRatio]=\"4 / 3\"\r\n [multiple]=\"true\"\r\n (loadImage)=\"onUploadImage($event)\">\r\n <ng-template #buttonUploadTemplate>\r\n <button mat-icon-button color=\"primary\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n </ng-template>\r\n </lib-upload-file>\r\n </ng-template>\r\n </p>\r\n <mat-tab-group class=\"multimedia-uploader__tab-group\" [selectedIndex]=\"currentIndex\"\r\n (selectedIndexChange)=\"onTabChanged($event)\">\r\n <mat-tab label=\"Fotografias\">\r\n <lib-custom-drag-and-drop [items]=\"images\" [content]=\"imageTemplate\" (itemsChanged)=\"onListChanged($event)\">\r\n <ng-template #imageTemplate let-image=\"image\" let-index=\"index\">\r\n <div class=\"list__item\" [ngClass]=\"{'first-photo': index === 0}\">\r\n <img alt=\"Property image\" [src]=\"image.fileCS.thumbnail\" class=\"list__item-img\">\r\n <button mat-icon-button class=\"list__item-button mat-elevation-z2\" (click)=\"removeMedia(image)\">\r\n <mat-icon class=\"list__item-icon\">close</mat-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </lib-custom-drag-and-drop>\r\n </mat-tab>\r\n <mat-tab label=\"Esfericas\">\r\n <lib-custom-drag-and-drop [items]=\"images360\" [content]=\"image360Template\" (itemsChanged)=\"onListChanged($event)\">\r\n <ng-template #image360Template let-image=\"image\">\r\n <div class=\"list__item\">\r\n <img alt=\"Property image\" [src]=\"image.fileCS.thumbnail\" class=\"list__item-img\">\r\n <button mat-icon-button class=\"list__item-button mat-elevation-z2\" (click)=\"removeMedia(image)\">\r\n <mat-icon class=\"list__item-icon\">close</mat-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </lib-custom-drag-and-drop>\r\n </mat-tab>\r\n <mat-tab label=\"Videos\">\r\n <div class=\"you-tube-container\">\r\n <span class=\"you-tube-container__searchbox\">\r\n <button *ngIf=\"inputYouTube.value !== ''\" mat-icon-button class=\"you-tube-container__close-btn\"\r\n (click)=\"inputYouTube.value = ''\"><mat-icon>close</mat-icon></button>\r\n <input class=\"you-tube-container__input\" #inputYouTube (input)=\"onYouTubeInputTextChanged(inputYouTube)\"\r\n title=\"YouTube URL\" placeholder=\"YouTube URL o YouTube Video ID\">\r\n </span>\r\n <a href=\"https://www.youtube.com\" target=\"_blank\" mat-button color=\"primary\">\r\n Ir a Youtube\r\n </a>\r\n </div>\r\n <lib-custom-drag-and-drop [items]=\"videos\" [content]=\"videosTemplate\" (itemsChanged)=\"onListChanged($event)\">\r\n <ng-template #videosTemplate let-image=\"image\">\r\n <div class=\"list__item\">\r\n <img alt=\"Property image\" [src]=\"'https://i3.ytimg.com/vi/'+image.fileCS.thumbnail+'/hqdefault.jpg'\"\r\n class=\"list__item-img\">\r\n <button mat-icon-button class=\"list__item-button mat-elevation-z2\" (click)=\"removeMedia(image)\">\r\n <mat-icon class=\"list__item-icon\">close</mat-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </lib-custom-drag-and-drop>\r\n </mat-tab>\r\n </mat-tab-group>\r\n <div class=\"multimedia-uploader__actions\">\r\n <button mat-flat-button color=\"primary\" class=\"actions__button\" (click)=\"close()\">\r\n CERRAR\r\n </button>\r\n <button mat-flat-button color=\"primary\" class=\"actions__button\" (click)=\"accept()\">\r\n ACEPTAR\r\n </button>\r\n </div>\r\n</div>\r\n",
|
|
362
|
-
styles: [":host{display:block;width:100%;height:100%}::ng-deep .multimedia-uploader-panel-class{width:50%;height:70%}::ng-deep .multimedia-uploader-panel-class mat-dialog-container{width:100%;height:100%;padding:16px;overflow:hidden;position:relative}.multimedia-uploader{width:100%;height:100%}.multimedia-uploader__actions{position:absolute;left:0;bottom:0;width:100%;background:#fff;z-index:1}.actions__button{width:50%}.actions__button:first-child{border-radius:8px 0 0}.actions__button:last-child{border-radius:0 8px 0 0}.title{font-weight:700;display:flex;align-items:center;justify-content:space-between;padding:0 16px;margin:0}.multimedia-uploader__tab-group{width:100%;height:calc(100% - 36px)}.multimedia-uploader__list{width:100%;height:100%;overflow-x:hidden;overflow-y:auto;display:-ms-grid;display:grid;-ms-grid-columns:(
|
|
362
|
+
styles: [":host{display:block;width:100%;height:100%}::ng-deep .multimedia-uploader-panel-class{width:50%;height:70%}::ng-deep .multimedia-uploader-panel-class mat-dialog-container{width:100%;height:100%;padding:16px;overflow:hidden;position:relative}.multimedia-uploader{width:100%;height:100%}.multimedia-uploader__actions{position:absolute;left:0;bottom:0;width:100%;background:#fff;z-index:1}.actions__button{width:50%}.actions__button:first-child{border-radius:8px 0 0}.actions__button:last-child{border-radius:0 8px 0 0}.title{font-weight:700;display:flex;align-items:center;justify-content:space-between;padding:0 16px;margin:0}.multimedia-uploader__tab-group{width:100%;height:calc(100% - 36px)}.multimedia-uploader__list{width:100%;height:100%;overflow-x:hidden;overflow-y:auto;display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 3))[3];grid-template-columns:repeat(3,calc(100% / 3))}@media screen and (max-width:600px){::ng-deep .multimedia-uploader-panel-class{width:100%!important;max-width:100%!important;height:100%!important}.multimedia-uploader__list{-ms-grid-columns:100%;grid-template-columns:100%}}.list__item{width:200px;height:150px;border-radius:8px;margin:16px auto;position:relative}.first-photo:after{content:\"Imagen principal del anuncio\";position:absolute;top:0;padding:8px;box-sizing:border-box;font-size:12px;width:100%;color:#fff;background:rgba(0,0,0,.3)}.list__item-img{position:absolute;top:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;border-radius:8px}.list__item-button{position:absolute;width:24px;height:24px;top:-12px;right:-12px;background:#000;color:#fff}.list__item-icon{width:24px;height:24px;font-size:16px;line-height:8px}.you-tube-container{display:flex;padding:8px 0;box-sizing:border-box;justify-content:space-between;position:-webkit-sticky;position:sticky;top:0;z-index:5;background:#fff}.you-tube-container__searchbox{position:relative;width:calc(100% - 120px);box-sizing:border-box;display:flex;align-items:center}.you-tube-container__close-btn{position:absolute;right:0}.you-tube-container__input{width:100%;border:1px solid #d3d3d3;padding:8px 32px 8px 8px;border-radius:8px;outline:0}"]
|
|
363
363
|
}] }
|
|
364
364
|
];
|
|
365
365
|
/** @nocollapse */
|
|
@@ -450,7 +450,7 @@ PropertyComponent.decorators = [
|
|
|
450
450
|
{ type: Component, args: [{
|
|
451
451
|
selector: 'lib-property',
|
|
452
452
|
template: "<div class=\"property\">\r\n <div class=\"header\">\r\n <ng-container [ngSwitch]=\"mode\">\r\n <ng-container *ngSwitchCase=\"'add'\">\r\n <h1 class=\"title\">\r\n <span *ngIf=\"!completeProperty.property.id\">Cargar </span>\r\n <span *ngIf=\"completeProperty.property.id\">Editar </span>\r\n expediente de {{ propertyType | propertyType }}\r\n </h1>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'record'\">\r\n <h1 class=\"title\">Expediente de {{propertyType | propertyType}}</h1>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'detail'\">\r\n <div class=\"breadcrumb-list\">\r\n <p class=\"breadcrumb-content\">\r\n <span class=\"breadcrumb-item\">\r\n {{completeProperty.property.type | propertyType}}\r\n </span>\r\n <span class=\"breadcrumb-item\">\r\n {{completeProperty.property.offering | offeringType : ' ' | stringManipulation : 'capitalize'}}\r\n </span>\r\n <span *ngIf=\"completeProperty.property.address.city\" class=\"breadcrumb-item\">\r\n {{completeProperty.property.address.city}}\r\n </span>\r\n <span *ngIf=\"completeProperty.property.address.postalCode\" class=\"breadcrumb-item\">\r\n {{completeProperty.property.address.postalCode}}\r\n </span>\r\n <span *ngIf=\"completeProperty.property.address.colony\" class=\"breadcrumb-item\">\r\n {{completeProperty.property.address.colony}}\r\n </span>\r\n </p>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"header__actions\">\r\n <!-- Button Publish [START] -->\r\n <ng-template\r\n [ngIf]=\"(mode === 'record' || mode === 'add') && (completeProperty.property.status !== 'ANNOUNCED' && completeProperty.property.status !== 'HIDDEN')\">\r\n <button mat-icon-button color=\"primary\" matTooltip=\"Publicar\" matTooltipPosition=\"left\"\r\n class=\"header__actions-button-publish\" (click)=\"goToPublish()\">\r\n <span class=\"header__actions-button-publish-icon ic-property-status-announce\"></span>\r\n </button>\r\n </ng-template>\r\n <!-- Button Publish [END] -->\r\n <ng-container [ngSwitch]=\"mode\">\r\n <ng-container *ngSwitchCase=\"'add'\">\r\n <ng-template [ngIf]=\"multimedia.length > 0\">\r\n <button mat-icon-button color=\"primary\" (click)=\"openUploaderMultimedia()\">\r\n <mat-icon>photo_library</mat-icon>\r\n </button>\r\n </ng-template>\r\n <ng-template [ngIf]=\"completeProperty?.property?.id\">\r\n <button mat-icon-button color=\"primary\" matTooltip=\"Guardar\" matTooltipPosition=\"left\" (click)=\"saveData()\">\r\n <mat-icon>save</mat-icon>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'record'\">\r\n <ng-template\r\n [ngIf]=\"!sharedProperty.isShared && (completeProperty.property.status !== 'DRAFT' && completeProperty.property.status !== 'NONE')\">\r\n <button mat-icon-button color=\"primary\" matTooltip=\"Estad\u00EDsticas\" matTooltipPosition=\"left\"\r\n (click)=\"goToStats()\">\r\n <mat-icon>bar_chart</mat-icon>\r\n </button>\r\n </ng-template>\r\n <ng-template\r\n [ngIf]=\"(completeProperty.property.status === 'ANNOUNCED' || completeProperty.property.status === 'HIDDEN') && !sharedProperty.isShared\">\r\n <button mat-icon-button color=\"primary\"\r\n matTooltip=\"{{completeProperty.property.status === 'ANNOUNCED' ? 'Ocultar' : 'Mostrar'}}\"\r\n matTooltipPosition=\"left\" (click)=\"goToUpdateVisibility()\">\r\n <mat-icon *ngIf=\"completeProperty.property.status === 'HIDDEN'\">visibility</mat-icon>\r\n <mat-icon *ngIf=\"completeProperty.property.status === 'ANNOUNCED'\">visibility_off</mat-icon>\r\n </button>\r\n </ng-template>\r\n <ng-template [ngIf]=\"!sharedProperty.isShared\">\r\n <button mat-icon-button color=\"primary\" matTooltip=\"Editar\" matTooltipPosition=\"left\"\r\n (click)=\"goToEditProperty()\">\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'detail'\">\r\n <ng-template [ngIf]=\"isOPI\" [ngIfElse]=\"maplanderActions\">\r\n <button mat-flat-button color=\"primary\" class=\"header__actions-button-commission\"\r\n [disabled]=\"disableShareCommission\"\r\n (click)=\"agentActions('SHARE_COMMISSION')\">\r\n <span *ngIf=\"!disableShareCommission\">Solicitar comisi\u00F3n compartida</span>\r\n <span *ngIf=\"disableShareCommission\">Solicitud pendiente</span>\r\n </button>\r\n </ng-template>\r\n <ng-template #maplanderActions>\r\n <button mat-flat-button color=\"primary\" class=\"header__actions-button-commission\"\r\n (click)=\"agentActions('SHOW_AGENTS')\">\r\n Mostrar Asesor\r\n </button>\r\n <button mat-icon-button color=\"primary\" class=\"header__actions-button-commission\"\r\n (click)=\"agentActions('FAVORITE')\">\r\n <mat-icon *ngIf=\"isFavorite\">favorite</mat-icon>\r\n <mat-icon *ngIf=\"!isFavorite\">favorite_border</mat-icon>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n <!-- Button Share [START] -->\r\n <ng-template\r\n [ngIf]=\"mode === 'detail' || (mode === 'record' && (completeProperty.property.status === 'READY' || completeProperty.property.status === 'ANNOUNCED'))\" [ngIfElse]=\"noShare\">\r\n <button mat-icon-button color=\"primary\" (click)=\"shareProperty()\">\r\n <mat-icon>share</mat-icon>\r\n </button>\r\n </ng-template>\r\n <!-- Button Share [END] -->\r\n <ng-template #noShare>\r\n <ng-template [ngIf]=\"sharedProperty.isShared\">\r\n <h1 class=\"title\">\r\n Propiedad oculta</h1>\r\n </ng-template>\r\n </ng-template>\r\n <!-- Button Back [START] -->\r\n <button mat-icon-button color=\"primary\" (click)=\"goToBack()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <!-- Button Back [END] -->\r\n </div>\r\n </div>\r\n <div class=\"body\">\r\n <div class=\"body__multimedia-wrapper\">\r\n <div class=\"multimedia-wrapper__list-thumbnails\">\r\n <div class=\"list-thumbnails__wrapper-thumbnails\">\r\n <div class=\"wrapper-thumbnails__header-types\">\r\n <button mat-button class=\"header-types__button-type\"\r\n [ngClass]=\"{'header-types__button-type--active': currentType === 'IMAGE'}\"\r\n (click)=\"changeMultimediaType('IMAGE')\">\r\n <span class=\"button-type__icon ic-component-property-file-image\"></span>\r\n <span class=\"button-type__label\">{{multimediaCount.images}}</span>\r\n </button>\r\n <button mat-button class=\"header-types__button-type\"\r\n [ngClass]=\"{'header-types__button-type--active': currentType === 'SPHERIC'}\"\r\n (click)=\"changeMultimediaType('SPHERIC')\">\r\n <span class=\"button-type__icon ic-component-property-sphere\"></span>\r\n <span class=\"button-type__label\">{{multimediaCount.images360}}</span>\r\n </button>\r\n <button mat-button class=\"header-types__button-type\"\r\n [ngClass]=\"{'header-types__button-type--active': currentType === 'VIDEO'}\"\r\n (click)=\"changeMultimediaType('VIDEO')\">\r\n <span class=\"button-type__icon ic-component-property-video\"></span>\r\n <span class=\"button-type__label\">{{multimediaCount.videos}}</span>\r\n </button>\r\n </div>\r\n <ng-template [ngIf]=\"multimedia && multimedia.length === 0\">\r\n <div class=\"wrapper-thumbnails__item-thumbnail\"></div>\r\n <div class=\"wrapper-thumbnails__item-thumbnail\"></div>\r\n <div class=\"wrapper-thumbnails__item-thumbnail\"></div>\r\n </ng-template>\r\n <ng-container *ngFor=\"let image of multimedia; let i = index;\">\r\n <div class=\"wrapper-thumbnails__item-thumbnail\"\r\n [ngClass]=\"{'wrapper-thumbnails__item-thumbnail--selected': i === currentIndex}\"\r\n (click)=\"onMultimediaIndexChanged(i)\">\r\n <ng-container [ngSwitch]=\"image.type\">\r\n <ng-container *ngSwitchCase=\"'VIDEO'\">\r\n <img class=\"item-thumbnail__img\" alt=\"Property image\"\r\n [src]=\"'https://i3.ytimg.com/vi/'+image.fileCS.thumbnail+'/hqdefault.jpg'\">\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <img class=\"item-thumbnail__img\" alt=\"Property image\" [src]=\"image.fileCS.thumbnail\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"multimedia-wrapper__front-image\">\r\n <lib-property-slide-show [multimedia]=\"multimedia\"\r\n [selectIndex]=\"currentIndex\"\r\n (currentIndex)=\"onMultimediaIndexChanged($event)\"\r\n [customActions]=\"customSlideShowActions\"\r\n ></lib-property-slide-show>\r\n <ng-template [ngIf]=\"mode === 'add' && multimedia.length === 0\">\r\n <div class=\"front-image__upload-multimedia\">\r\n <div class=\"upload-multimedia__container-add-multimedia\">\r\n <button class=\"container-add-multimedia__button\" mat-button color=\"primary\"\r\n (click)=\"openUploaderMultimedia()\">\r\n AGREGAR\r\n </button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #customSlideShowActions>\r\n <button *ngIf=\"multimedia.length > 0\" mat-icon-button (click)=\"openGallery()\" matTooltip=\"Fullscreen\">\r\n <mat-icon>fullscreen</mat-icon>\r\n </button>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div class=\"body__additional-content\">\r\n <ng-template\r\n [ngIf]=\"mode === 'record' && property.property.status === 'ANNOUNCED' && property.property.propertyInfo.mls\">\r\n <div class=\"additional-content__mls\">\r\n <p class=\"mls__title\">\r\n Bolsa inmobiliaria\r\n </p>\r\n <button mat-flat-button color=\"primary\" class=\"mls__button\"\r\n (click)=\"agentActions('REAL_ESTATE_EXCHANGE')\">\r\n Mesa de comercializaci\u00F3n\r\n </button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"body__content\">\r\n <ng-container [ngSwitch]=\"mode\">\r\n <ng-container *ngSwitchCase=\"'detail'\">\r\n <lib-property-details [property]=\"completeProperty.property\" [mlsLabel]=\"mlsLabel\"\r\n [currencyConverted]=\"currencyConverted\" [visibleTour]=\"!isOPI\"></lib-property-details>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'record'\">\r\n <lib-property-details [property]=\"completeProperty.property\" [mlsLabel]=\"mlsLabel\"\r\n [record]=\"true\"></lib-property-details>\r\n <ng-template [ngIf]=\"sharedProperty.ownerAvailable\">\r\n <div class=\"content__private-info\">\r\n <p class=\"private-info__title\">INFORMACI\u00D3N PRIVADA</p>\r\n <lib-property-owner-info [owner]=\"completeProperty.property.propertyInfo.owner\"\r\n [disabled]=\"true\"></lib-property-owner-info>\r\n <ng-template [ngIf]=\"!sharedProperty.isShared\">\r\n <lib-property-documents [files]=\"completeProperty.files\" [disabled]=\"true\"></lib-property-documents>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'add'\">\r\n <ng-template [ngIf]=\"frontImageError\">\r\n <p class=\"content__error-front-image\">\r\n * Debe subir al menos una imagen\r\n </p>\r\n </ng-template>\r\n <lib-property-editor [utils]=\"utils\" [propertyType]=\"propertyType\" [address]=\"address\"\r\n [mlsLabel]=\"mlsLabel\"\r\n [property]=\"completeProperty.property\"\r\n (editorInstance)=\"onEditorInstance($event)\"\r\n (selectAddress)=\"onSelectAddress()\"></lib-property-editor>\r\n <div class=\"content__private-info\">\r\n <p class=\"private-info__title\">INFORMACI\u00D3N PRIVADA</p>\r\n <lib-property-owner-info (ownerInstance)=\"onOwnerInstance($event)\"\r\n [owner]=\"completeProperty.property.propertyInfo.owner\"></lib-property-owner-info>\r\n <lib-property-documents (documentsInstance)=\"onDocumentsInstance($event)\"\r\n [files]=\"completeProperty.files\"></lib-property-documents>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"footer mat-elevation-z2\" [ngClass]=\"{'footer--primary': mode === 'record'}\"\r\n [ngStyle]=\"{'display': (mode === 'detail' && isOPI) ? 'none' : 'block'}\">\r\n <ng-container [ngSwitch]=\"mode\">\r\n <ng-container *ngSwitchCase=\"'detail'\">\r\n <div class=\"footer__footer-content\">\r\n <ng-template [ngIf]=\"!isOPI\">\r\n <button mat-raised-button color=\"primary\" class=\"footer-content__button-request-info mat-elevation-z2\"\r\n (click)=\"agentActions('REQUEST_INFO')\">\r\n Solicitar informaci\u00F3n\r\n </button>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'record'\">\r\n <div class=\"footer__footer-content\">\r\n <p class=\"footer-content__status-label\">\r\n <ng-container [ngSwitch]=\"completeProperty.property.status\">\r\n <ng-container *ngSwitchCase=\"'HIDDEN'\">\r\n Propiedad oculta\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'READY'\">\r\n Propiedad lista <br> para publicar\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'EXPIRED'\">\r\n Propiedad expirada desde el <br>\r\n {{completeProperty.property.propertyInfo.endPublishDate | libFormatDate : true : 'dd MMMMM yyyy'}}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'ANNOUNCED'\">\r\n Anunciada\r\n <br> Anuncio valido hasta el\r\n {{completeProperty.property.propertyInfo.endPublishDate | libFormatDate : true : 'dd MMMMM yyyy'}}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n Propiedad en borrador\r\n </ng-container>\r\n </ng-container>\r\n </p>\r\n <div class=\"footer-content__fab\">\r\n <eco-fab-speed-dial>\r\n <eco-fab-speed-dial-trigger>\r\n <button mat-fab color=\"primary\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n </eco-fab-speed-dial-trigger>\r\n <eco-fab-speed-dial-actions>\r\n <button *ngIf=\"completeProperty.property.status !== 'NONE' && completeProperty.property.status !== 'DRAFT'\"\r\n mat-mini-fab color=\"primary\" matTooltip=\"Clientes\" matTooltipPosition=\"left\" (click)=\"goToClients()\">\r\n <mat-icon class=\"fab-button__icon\">people</mat-icon>\r\n </button>\r\n <button *ngIf=\"!sharedProperty.isShared\" mat-mini-fab color=\"primary\" matTooltip=\"Archivar propiedad\"\r\n matTooltipPosition=\"left\"\r\n (click)=\"agentActions('ARCHIVE')\">\r\n <mat-icon class=\"fab-button__icon\">archive</mat-icon>\r\n </button>\r\n <button mat-mini-fab color=\"primary\" matTooltip=\"Generar letrero\" matTooltipPosition=\"left\"\r\n (click)=\"agentActions('POSTER')\">\r\n <span class=\"fab-button__icon ic-component-property-poster\"></span>\r\n </button>\r\n <button mat-mini-fab color=\"primary\" matTooltip=\"Generar folleto\" matTooltipPosition=\"left\"\r\n (click)=\"agentActions('BROCHURE')\">\r\n <span class=\"fab-button__icon ic-component-property-brochure\"></span>\r\n </button>\r\n <button mat-mini-fab color=\"primary\" matTooltip=\"Generar lona\" matTooltipPosition=\"left\"\r\n (click)=\"agentActions('TARPS')\">\r\n <span class=\"fab-button__icon ic-component-property-canvas\"></span>\r\n </button>\r\n </eco-fab-speed-dial-actions>\r\n </eco-fab-speed-dial>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'add'\">\r\n <div class=\"footer__footer-content\">\r\n <button class=\"footer-content__button-save\" mat-flat-button color=\"primary\" (click)=\"saveData()\">Guardar\r\n </button>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n",
|
|
453
|
-
styles: [":host{width:100%;height:100%;display:block}.property{position:relative;width:100%;height:100%;z-index:5;border-radius:4px}.title{margin:0 16px;font-size:24px}.breadcrumb-list{width:50%;padding:4px 16px;box-sizing:border-box;border-radius:0 24px 24px 0}.breadcrumb-content{color:#fff;margin:4px 0;width:100%;line-height:21px}.breadcrumb-item{position:relative;display:inline-flex;padding:0 18px 0 4px}.breadcrumb-item:last-child:before{content:none}.divider{border-width:1px}.divider-vertical{display:block;border:.5px inset}.header{width:100%;position:-webkit-sticky;position:sticky;top:0;z-index:10;padding:8px 0;display:flex;align-items:center;justify-content:space-between}@media screen and (max-width:600px){.breadcrumb-list{width:100%;order:1}.header{flex-direction:column}}.header__actions{padding:8px;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between}@media screen and (max-width:600px){.header__actions{order:0;width:100%;padding:4px 8px;justify-content:flex-end}}.header__actions button{margin-right:8px}.header__actions-button-commission{border-radius:16px}.actions-button-commission__icon{display:inline-block;width:24px;height:24px;font-size:24px;margin-left:8px}.header__actions-button-publish-icon{font-size:24px;width:24px;height:24px}.body{width:100%;height:calc(100% - 80px);overflow-x:hidden;overflow-y:auto;background:0 0;box-sizing:border-box;padding-bottom:56px}@media screen and (max-width:600px){.body{display:flex;flex-direction:column;padding:0 8px 56px}}.body__additional-content{width:25%;display:inline-block;padding:16px;box-sizing:border-box;background:#fff}@media screen and (max-width:600px){.body__additional-content{width:100%;order:2}}.mls__title{font-size:12px}.mls__button{width:100%;display:block;margin-bottom:8px;border-radius:16px}.body__content{width:75%;display:inline-block;padding:16px;box-sizing:border-box;float:right;background:#fff}.body__multimedia-wrapper{width:100%;background:#fff;display:flex}@media screen and (max-width:600px){.body__content{width:100%;order:1}.body__multimedia-wrapper{width:100%;order:0;flex-direction:column}}.multimedia-wrapper__list-thumbnails{width:25%;height:0;padding-bottom:
|
|
453
|
+
styles: [":host{width:100%;height:100%;display:block}.property{position:relative;width:100%;height:100%;z-index:5;border-radius:4px}.title{margin:0 16px;font-size:24px}.breadcrumb-list{width:50%;padding:4px 16px;box-sizing:border-box;border-radius:0 24px 24px 0}.breadcrumb-content{color:#fff;margin:4px 0;width:100%;line-height:21px}.breadcrumb-item{position:relative;display:inline-flex;padding:0 18px 0 4px}.breadcrumb-item:last-child:before{content:none}.divider{border-width:1px}.divider-vertical{display:block;border:.5px inset}.header{width:100%;position:-webkit-sticky;position:sticky;top:0;z-index:10;padding:8px 0;display:flex;align-items:center;justify-content:space-between}@media screen and (max-width:600px){.breadcrumb-list{width:100%;order:1}.header{flex-direction:column}}.header__actions{padding:8px;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between}@media screen and (max-width:600px){.header__actions{order:0;width:100%;padding:4px 8px;justify-content:flex-end}}.header__actions button{margin-right:8px}.header__actions-button-commission{border-radius:16px}.actions-button-commission__icon{display:inline-block;width:24px;height:24px;font-size:24px;margin-left:8px}.header__actions-button-publish-icon{font-size:24px;width:24px;height:24px}.body{width:100%;height:calc(100% - 80px);overflow-x:hidden;overflow-y:auto;background:0 0;box-sizing:border-box;padding-bottom:56px}@media screen and (max-width:600px){.body{display:flex;flex-direction:column;padding:0 8px 56px}}.body__additional-content{width:25%;display:inline-block;padding:16px;box-sizing:border-box;background:#fff}@media screen and (max-width:600px){.body__additional-content{width:100%;order:2}}.mls__title{font-size:12px}.mls__button{width:100%;display:block;margin-bottom:8px;border-radius:16px}.body__content{width:75%;display:inline-block;padding:16px;box-sizing:border-box;float:right;background:#fff}.body__multimedia-wrapper{width:100%;background:#fff;display:flex}@media screen and (max-width:600px){.body__content{width:100%;order:1}.body__multimedia-wrapper{width:100%;order:0;flex-direction:column}}.multimedia-wrapper__list-thumbnails{width:25%;height:0;padding-bottom:calc((100% - 25%)/ 4 * 3);overflow:hidden;position:relative}@media screen and (max-width:600px){.multimedia-wrapper__list-thumbnails{width:100%;height:56px;padding:0}}.list-thumbnails__wrapper-thumbnails{position:absolute;width:100%;height:100%;background:#fff;overflow-x:hidden;overflow-y:scroll;padding:0 18px 8px;box-sizing:border-box}.wrapper-thumbnails__header-types{width:100%;height:40px;background:#fff;padding-top:8px;position:-webkit-sticky;position:sticky;top:0;z-index:1}.header-types__button-type{min-width:calc(100% / 3);width:calc(100% / 3);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0;height:100%;font-size:12px;line-height:16px}.button-type__icon{font-size:24px;width:24px;height:24px;display:inline-block}.button-type__label{display:inline-block;margin:0 4px}.wrapper-thumbnails__item-thumbnail{width:100%;padding-bottom:calc(100% / 4 * 3);margin-top:8px;border-radius:8px;position:relative;cursor:pointer}.item-thumbnail__img{position:absolute;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;border-radius:inherit}.multimedia-wrapper__front-image{width:calc(75% - 16px);height:0;padding-bottom:calc((75% - 16px)/ 4 * 3);margin:auto;border-radius:8px;position:relative}@media screen and (max-width:600px){.wrapper-thumbnails__item-thumbnail{display:none}.multimedia-wrapper__front-image{width:100%;padding-bottom:calc(100% / 4 * 3)}}.front-image__upload-multimedia{position:absolute;top:0;left:25%;width:50%;height:100%;z-index:1;display:flex}@media screen{.front-image__upload-multimedia{width:80%;left:10%}}.upload-multimedia__container-add-multimedia{margin:auto;width:200px;height:200px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;background:url(https://storage.googleapis.com/maplander-develop/public/file/front-end/cdn/360-image.svg) center/80% no-repeat}.container-add-multimedia__button{position:absolute;bottom:8px}.content__error-front-image{font-size:12px;margin:8px 0 8px 8px}.content__private-info{border-radius:8px}.private-info__title{font-weight:700;margin:0;padding:16px;border-radius:8px 8px 0 0}.footer{width:100%;height:43px;border-radius:16px 16px 0 0;padding:8px 16px;box-sizing:border-box;background:#fff;position:-webkit-sticky;position:sticky;z-index:2;bottom:0}.footer__footer-content{width:100%;height:100%;position:relative;display:flex;align-items:center;justify-content:center}.footer-content__status-label{margin:6px 0;font-size:14px;text-align:center}.footer-content__button-request-info{width:30%;border-radius:16px}@media screen and (max-width:600px){.footer-content__button-request-info{width:90%}}.footer-content__button-save{width:120px;border-radius:16px}.footer-content__fab{position:absolute;right:0;bottom:12px;padding:8px;border-radius:50%;background:linear-gradient(transparent 50%,#fff 50%)}.fab-button__icon{width:24px;height:24px;font-size:24px}"]
|
|
454
454
|
}] }
|
|
455
455
|
];
|
|
456
456
|
/** @nocollapse */
|