kivio 1.7.1 → 1.7.2

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.
@@ -179,7 +179,7 @@ export class KvItemCardComponent {
179
179
  }
180
180
  }
181
181
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KvItemCardComponent, deps: [{ token: i1.FormFactoryService }], target: i0.ɵɵFactoryTarget.Component }); }
182
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: KvItemCardComponent, isStandalone: true, selector: "lib-kv-item-card", inputs: { shouldShowDatepicker: "shouldShowDatepicker", offerId: "offerId", showCostPopup: "showCostPopup", itemsSpecificationForm: "itemsSpecificationForm" }, outputs: { onContinue: "onContinue", onCancel: "onCancel", onItemsProcessed: "onItemsProcessed" }, ngImport: i0, template: "<lib-kv-popup *ngIf=\"showCostPopup\" [title]=\"'Set pricing and availability for your items'\" [description]=\"'Configure the cost, availability, and expiration details for each selected item in your offer.'\" [isCustomTemplate]=\"true\" [actionType]=\"actionTypeEnum.Info\"\r\n (onAccept)=\"showCostPopup = false\" (onClose)=\"showCostPopup = false\">\r\n\r\n\r\n <div class=\"base-price-warning\" *ngIf=\"showExternalBasePriceWarning()\">\r\n <span class=\"material-icons\">warning</span>\r\n <span>El total de los productos externos (Precio externo \u00D7 disponibilidad) debe ser al menos $12.900. Total actual: ${{ getTotalExternalBasePrice().toLocaleString('es-CO') }}</span>\r\n </div>\r\n\r\n <div class=\"items-container\">\r\n <ng-container *ngFor=\"let itemForm of filteredDataItems; let i = index\">\r\n <div class=\"item-card\">\r\n <div class=\"item-header\">\r\n <div class=\"item-info\">\r\n <img *ngIf=\"itemForm.get('image_url')?.value\" \r\n [src]=\"itemForm.get('image_url')?.value\" \r\n [alt]=\"itemForm.get('name')?.value\"\r\n class=\"item-image\">\r\n <div class=\"item-details\">\r\n <h4 class=\"item-name\">{{ itemForm.get('name')?.value }}</h4>\r\n <span class=\"item-type\" *ngIf=\"itemForm.get('is_external')?.value\">External Item</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <form [formGroup]=\"itemForm\" class=\"item-form\">\r\n <div class=\"form-section\">\r\n <h5 class=\"section-title\">Pricing & Availability</h5>\r\n \r\n <div class=\"input-grid\">\r\n <div class=\"input-group\">\r\n <label for=\"amount-{{i}}\">Cost *</label>\r\n <div class=\"cost-input-container\">\r\n <input id=\"amount-{{i}}\" \r\n formControlName=\"amount\" \r\n type=\"text\" \r\n placeholder=\"Enter cost\"\r\n (input)=\"onInput($event, itemForm)\" />\r\n <select class=\"currency-select\" formControlName=\"currency\">\r\n <option value=\"COP\">COP</option>\r\n </select>\r\n </div>\r\n <div class=\"error-message\" *ngIf=\"itemForm.get('amount')?.invalid && itemForm.get('amount')?.touched\">\r\n Cost is required\r\n </div>\r\n </div>\r\n \r\n <div class=\"input-group\">\r\n <label for=\"availability-{{i}}\">Availability *</label>\r\n <input id=\"availability-{{i}}\" \r\n formControlName=\"availability\" \r\n type=\"number\" \r\n min=\"1\" \r\n placeholder=\"Available quantity\"\r\n (keydown)=\"preventNegative($event)\" />\r\n <div class=\"error-message\" *ngIf=\"itemForm.get('availability')?.invalid && itemForm.get('availability')?.touched\">\r\n Availability is required\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-section\">\r\n <h5 class=\"section-title\">Multiple Items Settings</h5>\r\n \r\n <div class=\"toggle-container\">\r\n <label class=\"toggle-label\">\r\n <input type=\"checkbox\" \r\n formControlName=\"allow_multiple_items\"\r\n class=\"toggle-input\">\r\n <span class=\"toggle-slider\"></span>\r\n <span class=\"toggle-text\">Allow multiple items per user</span>\r\n </label>\r\n <p class=\"toggle-description\">When enabled, users can bid on multiple quantities of this item</p>\r\n </div>\r\n </div>\r\n \r\n <div class=\"form-section\" *ngIf=\"shouldShowDatepicker\">\r\n <h5 class=\"section-title\">Expiration</h5>\r\n <div class=\"input-group\">\r\n <label for=\"expireAt-{{i}}\">Expires on</label>\r\n <lib-kv-date-picker [initialDate]=\"defaultDate\" \r\n [showDetails]=\"true\"\r\n (dateSelected)=\"onDatePicked($event, itemForm)\">\r\n </lib-kv-date-picker>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"pagination-container\" *ngIf=\"totalPages() > 1\">\r\n <div class=\"pagination-info\">\r\n <span>Showing {{ (currentPage - 1) * pageSize + 1 }} - {{ Math.min(currentPage * pageSize, itemsSpecificationForm.length) }} of {{ itemsSpecificationForm.length }} items</span>\r\n </div>\r\n <div class=\"pagination-controls\">\r\n <button class=\"pagination-btn\" \r\n (click)=\"changePage(-1)\" \r\n [disabled]=\"currentPage === 1\"\r\n [class.disabled]=\"currentPage === 1\">\r\n \u2190 Previous\r\n </button>\r\n <span class=\"page-indicator\">{{ currentPage }} / {{ totalPages() }}</span>\r\n <button class=\"pagination-btn\" \r\n (click)=\"changePage(1)\" \r\n [disabled]=\"currentPage === totalPages()\"\r\n [class.disabled]=\"currentPage === totalPages()\">\r\n Next \u2192\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"popup-footer\">\r\n <div class=\"footer-info\">\r\n <span class=\"items-count\">{{ itemsSpecificationForm.length }} item(s) configured</span>\r\n </div>\r\n <div class=\"footer-actions\">\r\n <button type=\"button\" class=\"button--cancel\" (click)=\"onCancelAction()\">Cancel</button>\r\n <button type=\"submit\" class=\"button--primary-min\"\r\n [disabled]=\"!canSubmit()\"\r\n (click)=\"onSubmit()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</lib-kv-popup>", styles: [".table-button--primary{width:100%;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.table-button--primary:hover{background-color:#00438a}.table-button--primary:disabled{background-color:#ededed;cursor:not-allowed}.button--primary{width:100%;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--primary:hover{background-color:#00438a}.button--primary:disabled{background-color:#ededed;cursor:not-allowed}.button--minimalist{height:min-content;padding:5px;background-color:#ebebeb;color:#475467;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--minimalist:disabled{background-color:#ededed;cursor:not-allowed}.button--primary-min{height:min-content;width:max-content;margin-left:8px;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;background:#0052cc;color:#fcfcfd}@media (max-width: 768px){.button--primary-min{padding:8px}}.button--primary-min:hover{background:#00438a}.button--primary-min:disabled{background-color:#ededed;cursor:not-allowed}.button--cancel{height:min-content;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;color:#475467;background-color:#fff;border:1px solid #ededed}.button--cancel:disabled{background-color:#ededed;cursor:not-allowed}.button--create{height:min-content;align-self:center;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--create:hover{background-color:#00438a}.button--create:disabled{background-color:#ededed;cursor:not-allowed}.button--sidenav{background-color:#fff;color:#475467;padding:8px;font-weight:700;border:none;display:flex;border-radius:4px;cursor:pointer;gap:10px;margin-top:10px;width:100%;align-items:center}.button--sidenav:hover{background-color:#f2f4f7;color:#101828}.button--sidenav:disabled{background-color:#ededed;cursor:not-allowed}.button--warn{background-color:#b90000;color:#f2f4f7;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;height:min-content}.button--warn:hover{background-color:red}.button--warn:disabled{background-color:#ededed;cursor:not-allowed}.button-container{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.button-container:disabled{background-color:#ededed;cursor:not-allowed}input,textarea{padding:10px;width:-webkit-fill-available;border:1px solid #ccc;border-radius:5px;font-size:16px!important;font-family:Roboto,sans-serif!important;color:#101828;background-color:#fff}input::placeholder,textarea::placeholder{color:#475467}input:focus,textarea:focus{border-color:#007bff;box-shadow:0 0 8px #007bff80;background-color:#fff}input.error,textarea.error{border-color:#fcd9d9;box-shadow:0 0 8px #fcd9d980}.input-group{margin-bottom:15px}.input-group label{font-size:14px;margin-bottom:5px;color:#555}.input-group .error-message{color:red}@media (max-width: 768px){.input-group{margin-bottom:13px}.input-group label{font-size:13px}}@media (max-width: 480px){.input-group{margin-bottom:3px}.input-group label{font-size:12px}}.input-cost{display:flex;gap:10px}.a-link{text-decoration:none}.a-link:hover{cursor:pointer;text-decoration:underline}.a-link2{text-decoration:underline}.a-link2:hover{cursor:pointer;text-decoration:underline}.column-direction{display:flex;flex-direction:row;gap:1rem;padding:2rem;width:100%}.main-text{font-size:30px;color:#101828}@media (max-width: 768px){.main-text{font-size:25px}}@media (max-width: 480px){.main-text{font-size:20px}}.secondary-text{font-size:16px;color:#475467}@media (max-width: 768px){.secondary-text{font-size:14px}}@media (max-width: 480px){.secondary-text{font-size:12px}}.sidebar-title{font-size:24px;color:#101828;font-weight:700;margin-bottom:20px}@media (max-width: 768px){.sidebar-title{margin-top:-36px;margin-bottom:3px;font-size:20px}}.description-section{margin-top:30px}@media (max-width: 768px){.description-section{margin-top:7px}}.description-section .description-title{color:#101828}.description-section .description-body{color:#475467}.list-container{width:100%;border:1px solid #ccc;border-radius:12px;margin-top:22px}@media (max-width: 768px){.list-container{margin-top:7px}}.list-container .list-section{margin:1rem;color:#101828}.list-container .list-section .list{margin-top:12px;color:#475467}@media (max-width: 768px){.list-container .list-section .list{margin-top:6px}}.required{color:#b90000;font-weight:700}.service-info{align-items:center;display:flex}.service-info img{width:40px;height:40px;border:2px solid #ccc;border-radius:50%;margin:5px}.popup-backdrop{position:fixed;inset:0;width:100%;height:100%;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000;transform:translateZ(0)}.popup-container{max-height:80vh;background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 10px #0000001a;overflow-y:auto;width:50%;position:relative}@media (max-width: 768px){.popup-container{width:80%;max-height:80vh;padding:15px;border-radius:6px;margin:0 auto}}@media (max-width: 480px){.popup-container{width:90%;max-height:90vh;padding:10px;border-radius:4px}}.popup-container .close{float:right;font-size:20px;cursor:pointer}table{width:100%;border-collapse:collapse;text-align:left;border:1px solid #ccc;border-radius:4px}thead{background-color:#fff;color:#101828}tbody{color:#475467}th,td{padding:10px;font-size:14px;border-bottom:1px solid #ccc}tbody tr:hover{background-color:#fff}.state.Active{background-color:#12b76a26;color:#036338!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Active a{color:#036338!important}.state.Waiting{background-color:#f8e0d1;color:#b53701!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Waiting a{color:#b53701!important}.state.Created{background-color:#f8e0d1;color:#b53701!important;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Created a{color:#b53701!important}.state.Offered{background-color:#12b76a26;color:#036338!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Offered a{color:#036338!important}.state.Closed{background-color:#fcd9d9;color:#581d1d;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Closed a{color:#581d1d!important}.state.Approved{background-color:#d1e7dd;color:#0f5132;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Approved a{color:#0f5132!important}.state.Rejected{background-color:#f8d7da;color:#842029;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Rejected a{color:#842029!important}.state.Pending{background-color:#f8e0d1;color:#b53701;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Pending a{color:#b53701!important}.pagination{display:flex;justify-content:space-between;margin-top:10px}.pagination button{padding:5px 10px;border:1px solid #ccc;background-color:#fff;cursor:pointer}.pagination button:disabled{color:#555;cursor:not-allowed}.search-container{margin-bottom:10px;display:flex;justify-content:flex-end;width:100%}.search-container .search-section input{width:min-content!important}.pagination{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:14px;color:#101828}.pagination button{padding:6px 12px;border:none;color:#101828;cursor:pointer;border-radius:4px;margin-right:6px;touch-action:manipulation}.pagination button:disabled{background-color:#ededed;cursor:not-allowed}@media (max-width: 768px){.pagination{gap:8px;margin:12px}.pagination button{padding:4px 10px;border-radius:3px}}@media (max-width: 480px){.pagination{gap:6px;margin:10px}.pagination button{padding:2px 8px;border-radius:2px}}.table-pagination{border-top:0!important}@media (max-width: 768px){.search-container{margin-bottom:10px;display:flex;justify-content:center;width:100%}table{table-layout:auto!important;border:none!important}table td{padding:5px!important}.hidden-mobile{display:none}}table,table th{border:none!important}table td{border:none!important;padding:0!important}table td div{display:flex}table td div span{margin-top:5px;margin-left:10px}table td p{color:#101828}.card{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 4px 12px #0000001a}.simple-card{background-color:#f8fafb;padding:1rem;border-radius:8px;color:#101828}.border-card{background:#fff;padding:2rem;border-radius:8px;border:1px solid #ccc}select{width:100%;padding:12px 16px;font-size:16px;border:1px solid #ccc;border-radius:8px;color:#101828;appearance:none;transition:all .3s ease;cursor:pointer;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24'%3E%3Cpath d='M7 10l5 5 5-5z' fill='%23333'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:calc(100% - 12px) center}select option{background-color:#fff;color:#101828;padding:28px;font-size:16px;cursor:pointer}select option:hover{background-color:#fff;color:#fff;cursor:pointer}select:focus{border-color:#007bff;box-shadow:0 0 8px #007bff80;background-color:#fff}select:disabled{background-color:#fff}select.error{border-color:#fcd9d9;box-shadow:0 0 8px #fcd9d980}.pagination-container{display:flex;justify-content:space-between;align-items:center;padding:1rem 0;border-top:1px solid #ccc;border-bottom:1px solid #ccc;margin-bottom:1.5rem}.pagination-container .pagination-info{font-size:.875rem;color:#475467}.pagination-container .pagination-controls{display:flex;align-items:center;gap:1rem}.pagination-container .pagination-controls .pagination-btn{padding:.5rem 1rem;border:1px solid #ccc;background:#fff;color:#101828;border-radius:6px;cursor:pointer;font-size:.875rem;transition:all .2s ease}.pagination-container .pagination-controls .pagination-btn:hover:not(.disabled){background:#f8fafb;border-color:#007bff}.pagination-container .pagination-controls .pagination-btn.disabled{color:#6c757d;cursor:not-allowed;background:#ededed}.pagination-container .pagination-controls .page-indicator{font-size:.875rem;font-weight:500;color:#101828;min-width:60px;text-align:center}.items-container{max-height:60vh;overflow-y:auto;margin-bottom:1.5rem}.items-container .item-card{background:#fff;border:1px solid #ccc;border-radius:8px;margin-bottom:1rem;padding:1.5rem;box-shadow:0 1px 3px #0000001a;transition:all .2s ease}.items-container .item-card:hover{box-shadow:0 2px 8px #0000001f;border-color:#007bff}.items-container .item-card:last-child{margin-bottom:0}.items-container .item-header{margin-bottom:1.5rem}.items-container .item-header .item-info{display:flex;align-items:center;gap:1rem}.items-container .item-header .item-info .item-image{width:60px;height:60px;border-radius:8px;object-fit:cover;border:1px solid #ccc}.items-container .item-header .item-info .item-details{flex:1}.items-container .item-header .item-info .item-details .item-name{font-size:1.1rem;font-weight:600;color:#101828;margin:0 0 .25rem}@media (max-width: 768px){.items-container .item-header .item-info .item-details .item-name{font-size:1rem}}@media (max-width: 480px){.items-container .item-header .item-info .item-details .item-name{font-size:.9rem}}.items-container .item-header .item-info .item-details .item-type{font-size:.75rem;color:#475467;background:#ebebeb;padding:.25rem .5rem;border-radius:4px;text-transform:uppercase;font-weight:500}.items-container .item-form .form-section{margin-bottom:1.5rem}.items-container .item-form .form-section:last-child{margin-bottom:0}.items-container .item-form .form-section .section-title{font-size:.875rem;font-weight:600;color:#101828;margin:0 0 1rem;padding-bottom:.5rem;border-bottom:1px solid #EBEBEB}.items-container .item-form .input-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media (max-width: 768px){.items-container .item-form .input-grid{grid-template-columns:1fr}}.items-container .item-form .input-group{margin-bottom:1rem}.items-container .item-form .input-group label{font-size:.875rem;font-weight:500;color:#555;margin-bottom:.5rem;display:block}.items-container .item-form .input-group input,.items-container .item-form .input-group select{width:100%;padding:.75rem;border:1px solid #ccc;border-radius:6px;font-size:.875rem;transition:all .2s ease}.items-container .item-form .input-group input:focus,.items-container .item-form .input-group select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.items-container .item-form .input-group input::placeholder,.items-container .item-form .input-group select::placeholder{color:#475467}.items-container .item-form .input-group input{width:95%!important}.items-container .item-form .input-group .error-message{font-size:.75rem;color:red;margin-top:.25rem}.items-container .item-form .cost-input-container{display:flex;gap:.5rem}.items-container .item-form .cost-input-container input{flex:1}.items-container .item-form .cost-input-container .currency-select{width:80px;flex-shrink:0}.toggle-container .toggle-label{display:flex;align-items:center;gap:.75rem;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-container .toggle-label .toggle-input{display:none}.toggle-container .toggle-label .toggle-slider{position:relative;width:44px;height:24px;background:#ededed;border-radius:12px;transition:background .3s ease}.toggle-container .toggle-label .toggle-slider:before{content:\"\";position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .3s ease;box-shadow:0 1px 3px #0000004d}.toggle-container .toggle-label .toggle-input:checked+.toggle-slider{background:#0052cc}.toggle-container .toggle-label .toggle-input:checked+.toggle-slider:before{transform:translate(20px)}.toggle-container .toggle-label .toggle-text{font-weight:500;color:#101828}.toggle-container .toggle-description{font-size:.75rem;color:#475467;margin:.5rem 0 0;line-height:1.4}.popup-footer{display:flex;justify-content:space-between;align-items:center;padding-top:1.5rem;border-top:1px solid #ccc}.popup-footer .footer-info .items-count{font-size:.875rem;color:#475467;font-weight:500}.popup-footer .footer-actions{display:flex;gap:.75rem}.popup-footer .footer-actions button{min-width:120px;font-weight:500}.base-price-warning{background-color:#fff3cd;border:1px solid #ffc107;border-radius:6px;padding:.75rem 1rem;margin-bottom:1rem;font-size:.875rem;color:#856404;font-weight:500;display:flex;align-items:center;gap:.5rem}.base-price-warning .material-icons{font-size:1.25rem;color:#ffc107}.base-price-warning span:not(.material-icons){flex:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: KvPopupComponent, selector: "lib-kv-popup", inputs: ["title", "description", "isCustomTemplate", "actionType", "showCloseButton"], outputs: ["onAccept", "onClose"] }, { kind: "component", type: DatePickerComponent, selector: "lib-kv-date-picker", inputs: ["initialDate", "showDetails"], outputs: ["dateSelected"] }] }); }
182
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: KvItemCardComponent, isStandalone: true, selector: "lib-kv-item-card", inputs: { shouldShowDatepicker: "shouldShowDatepicker", offerId: "offerId", showCostPopup: "showCostPopup", itemsSpecificationForm: "itemsSpecificationForm" }, outputs: { onContinue: "onContinue", onCancel: "onCancel", onItemsProcessed: "onItemsProcessed" }, ngImport: i0, template: "<lib-kv-popup *ngIf=\"showCostPopup\" [title]=\"'Set pricing and availability for your items'\" [description]=\"'Configure the cost, availability, and expiration details for each selected item in your offer.'\" [isCustomTemplate]=\"true\" [actionType]=\"actionTypeEnum.Info\"\r\n (onAccept)=\"showCostPopup = false\" (onClose)=\"showCostPopup = false\">\r\n\r\n\r\n <div class=\"base-price-warning\" *ngIf=\"showExternalBasePriceWarning()\">\r\n <span class=\"material-icons\">warning</span>\r\n <span>El total de los productos externos (Precio externo \u00D7 disponibilidad) debe ser al menos $12.900. Total actual: ${{ getTotalExternalBasePrice().toLocaleString('es-CO') }}</span>\r\n </div>\r\n\r\n <div class=\"items-container\">\r\n <ng-container *ngFor=\"let itemForm of filteredDataItems; let i = index\">\r\n <div class=\"item-card\">\r\n <div class=\"item-header\">\r\n <div class=\"item-info\">\r\n <img *ngIf=\"itemForm.get('image_url')?.value\" \r\n [src]=\"itemForm.get('image_url')?.value\" \r\n [alt]=\"itemForm.get('name')?.value\"\r\n class=\"item-image\">\r\n <div class=\"item-details\">\r\n <h4 class=\"item-name\">{{ itemForm.get('name')?.value }}</h4>\r\n <span class=\"item-type\" *ngIf=\"itemForm.get('is_external')?.value\">External Item</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <form [formGroup]=\"itemForm\" class=\"item-form\">\r\n <div class=\"form-section\">\r\n <h5 class=\"section-title\">Pricing & Availability</h5>\r\n \r\n <div class=\"input-grid\">\r\n <div class=\"input-group\">\r\n <label for=\"amount-{{i}}\">Cost *</label>\r\n <div class=\"cost-input-container\">\r\n <input id=\"amount-{{i}}\" \r\n formControlName=\"amount\" \r\n type=\"text\" \r\n placeholder=\"Enter cost\"\r\n (input)=\"onInput($event, itemForm)\" />\r\n <select class=\"currency-select\" formControlName=\"currency\">\r\n <option value=\"COP\">COP</option>\r\n </select>\r\n </div>\r\n <div class=\"error-message\" *ngIf=\"itemForm.get('amount')?.invalid && itemForm.get('amount')?.touched\">\r\n Cost is required\r\n </div>\r\n </div>\r\n \r\n <div class=\"input-group\">\r\n <label for=\"availability-{{i}}\">Availability *</label>\r\n <input id=\"availability-{{i}}\" \r\n formControlName=\"availability\" \r\n type=\"number\" \r\n min=\"1\" \r\n placeholder=\"Available quantity\"\r\n (keydown)=\"preventNegative($event)\" />\r\n <div class=\"error-message\" *ngIf=\"itemForm.get('availability')?.invalid && itemForm.get('availability')?.touched\">\r\n Availability is required\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-section\">\r\n <h5 class=\"section-title\">Multiple Items Settings</h5>\r\n \r\n <div class=\"toggle-container\">\r\n <label class=\"toggle-label\">\r\n <input type=\"checkbox\" \r\n formControlName=\"allow_multiple_items\"\r\n class=\"toggle-input\">\r\n <span class=\"toggle-slider\"></span>\r\n <span class=\"toggle-text\">Allow multiple items per user</span>\r\n </label>\r\n <p class=\"toggle-description\">When enabled, users can bid on multiple quantities of this item</p>\r\n </div>\r\n </div>\r\n \r\n <div class=\"form-section\" *ngIf=\"shouldShowDatepicker\">\r\n <h5 class=\"section-title\">Expiration</h5>\r\n <div class=\"input-group\">\r\n <label for=\"expireAt-{{i}}\">Expires on</label>\r\n <lib-kv-date-picker [initialDate]=\"defaultDate\" \r\n [showDetails]=\"true\"\r\n (dateSelected)=\"onDatePicked($event, itemForm)\">\r\n </lib-kv-date-picker>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"pagination-container\" *ngIf=\"totalPages() > 1\">\r\n <div class=\"pagination-info\">\r\n <span>Showing {{ (currentPage - 1) * pageSize + 1 }} - {{ Math.min(currentPage * pageSize, itemsSpecificationForm.length) }} of {{ itemsSpecificationForm.length }} items</span>\r\n </div>\r\n <div class=\"pagination-controls\">\r\n <button class=\"pagination-btn\" \r\n (click)=\"changePage(-1)\" \r\n [disabled]=\"currentPage === 1\"\r\n [class.disabled]=\"currentPage === 1\">\r\n \u2190 Previous\r\n </button>\r\n <span class=\"page-indicator\">{{ currentPage }} / {{ totalPages() }}</span>\r\n <button class=\"pagination-btn\" \r\n (click)=\"changePage(1)\" \r\n [disabled]=\"currentPage === totalPages()\"\r\n [class.disabled]=\"currentPage === totalPages()\">\r\n Next \u2192\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"popup-footer\">\r\n <div class=\"footer-info\">\r\n <span class=\"items-count\">{{ itemsSpecificationForm.length }} item(s) configured</span>\r\n </div>\r\n <div class=\"footer-actions\">\r\n <button type=\"button\" class=\"button--cancel\" (click)=\"onCancelAction()\">Cancel</button>\r\n <button type=\"submit\" class=\"button--primary-min\"\r\n [disabled]=\"!canSubmit()\"\r\n (click)=\"onSubmit()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</lib-kv-popup>", styles: [".table-button--primary{width:100%;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.table-button--primary:hover{background-color:#00438a}.table-button--primary:disabled{background-color:#ededed;cursor:not-allowed}.button--primary{width:100%;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--primary:hover{background-color:#00438a}.button--primary:disabled{background-color:#ededed;cursor:not-allowed}.button--minimalist{height:min-content;padding:5px;background-color:#ebebeb;color:#475467;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--minimalist:disabled{background-color:#ededed;cursor:not-allowed}.button--primary-min{height:min-content;width:max-content;margin-left:8px;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;background:#0052cc;color:#fcfcfd}@media (max-width: 768px){.button--primary-min{padding:8px}}.button--primary-min:hover{background:#00438a}.button--primary-min:disabled{background-color:#ededed;cursor:not-allowed}.button--cancel{height:min-content;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;color:#475467;background-color:#fff;border:1px solid #ededed}.button--cancel:disabled{background-color:#ededed;cursor:not-allowed}.button--create{height:min-content;align-self:center;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--create:hover{background-color:#00438a}.button--create:disabled{background-color:#ededed;cursor:not-allowed}.button--sidenav{background-color:#fff;color:#475467;padding:8px;font-weight:700;border:none;display:flex;border-radius:4px;cursor:pointer;gap:10px;margin-top:10px;width:100%;align-items:center}.button--sidenav:hover{background-color:#f2f4f7;color:#101828}.button--sidenav:disabled{background-color:#ededed;cursor:not-allowed}.button--warn{background-color:#b90000;color:#f2f4f7;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;height:min-content}.button--warn:hover{background-color:red}.button--warn:disabled{background-color:#ededed;cursor:not-allowed}.button-container{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.button-container:disabled{background-color:#ededed;cursor:not-allowed}input,textarea{padding:10px;width:-webkit-fill-available;border:1px solid #ccc;border-radius:5px;font-size:16px!important;font-family:Roboto,sans-serif!important;color:#101828;background-color:#fff}input::placeholder,textarea::placeholder{color:#475467}input:focus,textarea:focus{border-color:#007bff;box-shadow:0 0 8px #007bff80;background-color:#fff}input.error,textarea.error{border-color:#fcd9d9;box-shadow:0 0 8px #fcd9d980}.input-group{margin-bottom:15px}.input-group label{font-size:14px;margin-bottom:5px;color:#555}.input-group .error-message{color:red}@media (max-width: 768px){.input-group{margin-bottom:13px}.input-group label{font-size:13px}}@media (max-width: 480px){.input-group{margin-bottom:3px}.input-group label{font-size:12px}}.input-cost{display:flex;gap:10px}.a-link{text-decoration:none}.a-link:hover{cursor:pointer;text-decoration:underline}.a-link2{text-decoration:underline}.a-link2:hover{cursor:pointer;text-decoration:underline}.column-direction{display:flex;flex-direction:row;gap:1rem;padding:2rem;width:100%}.main-text{font-size:30px;color:#101828}@media (max-width: 768px){.main-text{font-size:25px}}@media (max-width: 480px){.main-text{font-size:20px}}.secondary-text{font-size:16px;color:#475467}@media (max-width: 768px){.secondary-text{font-size:14px}}@media (max-width: 480px){.secondary-text{font-size:12px}}.sidebar-title{font-size:24px;color:#101828;font-weight:700;margin-bottom:20px}@media (max-width: 768px){.sidebar-title{margin-top:-36px;margin-bottom:3px;font-size:20px}}.description-section{margin-top:30px}@media (max-width: 768px){.description-section{margin-top:7px}}.description-section .description-title{color:#101828}.description-section .description-body{color:#475467}.list-container{width:100%;border:1px solid #ccc;border-radius:12px;margin-top:22px}@media (max-width: 768px){.list-container{margin-top:7px}}.list-container .list-section{margin:1rem;color:#101828}.list-container .list-section .list{margin-top:12px;color:#475467}@media (max-width: 768px){.list-container .list-section .list{margin-top:6px}}.required{color:#b90000;font-weight:700}.service-info{align-items:center;display:flex}.service-info img{width:40px;height:40px;border:2px solid #ccc;border-radius:50%;margin:5px}.popup-backdrop{position:fixed;inset:0;width:100%;height:100%;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000;transform:translateZ(0)}.popup-container{max-height:80vh;background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 10px #0000001a;overflow-y:auto;width:50%;position:relative}@media (max-width: 768px){.popup-container{width:80%;max-height:80vh;padding:15px;border-radius:6px;margin:0 auto}}@media (max-width: 480px){.popup-container{width:90%;max-height:90vh;padding:10px;border-radius:4px}}.popup-container .close{float:right;font-size:20px;cursor:pointer}table{width:100%;border-collapse:collapse;text-align:left;border:1px solid #ccc;border-radius:4px}thead{background-color:#fff;color:#101828}tbody{color:#475467}th,td{padding:10px;font-size:14px;border-bottom:1px solid #ccc}tbody tr:hover{background-color:#fff}.state.Active{background-color:#12b76a26;color:#036338!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Active a{color:#036338!important}.state.Waiting{background-color:#f8e0d1;color:#b53701!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Waiting a{color:#b53701!important}.state.Created{background-color:#f8e0d1;color:#b53701!important;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Created a{color:#b53701!important}.state.Offered{background-color:#12b76a26;color:#036338!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Offered a{color:#036338!important}.state.Closed{background-color:#fcd9d9;color:#581d1d;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Closed a{color:#581d1d!important}.state.Approved{background-color:#d1e7dd;color:#0f5132;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Approved a{color:#0f5132!important}.state.Rejected{background-color:#f8d7da;color:#842029;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Rejected a{color:#842029!important}.state.Pending{background-color:#f8e0d1;color:#b53701;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Pending a{color:#b53701!important}.state.Error{background-color:#ffc067;color:#e85d04;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Error a{color:#e85d04!important}.pagination{display:flex;justify-content:space-between;margin-top:10px}.pagination button{padding:5px 10px;border:1px solid #ccc;background-color:#fff;cursor:pointer}.pagination button:disabled{color:#555;cursor:not-allowed}.search-container{margin-bottom:10px;display:flex;justify-content:flex-end;width:100%}.search-container .search-section input{width:min-content!important}.pagination{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:14px;color:#101828}.pagination button{padding:6px 12px;border:none;color:#101828;cursor:pointer;border-radius:4px;margin-right:6px;touch-action:manipulation}.pagination button:disabled{background-color:#ededed;cursor:not-allowed}@media (max-width: 768px){.pagination{gap:8px;margin:12px}.pagination button{padding:4px 10px;border-radius:3px}}@media (max-width: 480px){.pagination{gap:6px;margin:10px}.pagination button{padding:2px 8px;border-radius:2px}}.table-pagination{border-top:0!important}@media (max-width: 768px){.search-container{margin-bottom:10px;display:flex;justify-content:center;width:100%}table{table-layout:auto!important;border:none!important}table td{padding:5px!important}.hidden-mobile{display:none}}table,table th{border:none!important}table td{border:none!important;padding:0!important}table td div{display:flex}table td div span{margin-top:5px;margin-left:10px}table td p{color:#101828}.card{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 4px 12px #0000001a}.simple-card{background-color:#f8fafb;padding:1rem;border-radius:8px;color:#101828}.border-card{background:#fff;padding:2rem;border-radius:8px;border:1px solid #ccc}select{width:100%;padding:12px 16px;font-size:16px;border:1px solid #ccc;border-radius:8px;color:#101828;appearance:none;transition:all .3s ease;cursor:pointer;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24'%3E%3Cpath d='M7 10l5 5 5-5z' fill='%23333'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:calc(100% - 12px) center}select option{background-color:#fff;color:#101828;padding:28px;font-size:16px;cursor:pointer}select option:hover{background-color:#fff;color:#fff;cursor:pointer}select:focus{border-color:#007bff;box-shadow:0 0 8px #007bff80;background-color:#fff}select:disabled{background-color:#fff}select.error{border-color:#fcd9d9;box-shadow:0 0 8px #fcd9d980}.pagination-container{display:flex;justify-content:space-between;align-items:center;padding:1rem 0;border-top:1px solid #ccc;border-bottom:1px solid #ccc;margin-bottom:1.5rem}.pagination-container .pagination-info{font-size:.875rem;color:#475467}.pagination-container .pagination-controls{display:flex;align-items:center;gap:1rem}.pagination-container .pagination-controls .pagination-btn{padding:.5rem 1rem;border:1px solid #ccc;background:#fff;color:#101828;border-radius:6px;cursor:pointer;font-size:.875rem;transition:all .2s ease}.pagination-container .pagination-controls .pagination-btn:hover:not(.disabled){background:#f8fafb;border-color:#007bff}.pagination-container .pagination-controls .pagination-btn.disabled{color:#6c757d;cursor:not-allowed;background:#ededed}.pagination-container .pagination-controls .page-indicator{font-size:.875rem;font-weight:500;color:#101828;min-width:60px;text-align:center}.items-container{max-height:60vh;overflow-y:auto;margin-bottom:1.5rem}.items-container .item-card{background:#fff;border:1px solid #ccc;border-radius:8px;margin-bottom:1rem;padding:1.5rem;box-shadow:0 1px 3px #0000001a;transition:all .2s ease}.items-container .item-card:hover{box-shadow:0 2px 8px #0000001f;border-color:#007bff}.items-container .item-card:last-child{margin-bottom:0}.items-container .item-header{margin-bottom:1.5rem}.items-container .item-header .item-info{display:flex;align-items:center;gap:1rem}.items-container .item-header .item-info .item-image{width:60px;height:60px;border-radius:8px;object-fit:cover;border:1px solid #ccc}.items-container .item-header .item-info .item-details{flex:1}.items-container .item-header .item-info .item-details .item-name{font-size:1.1rem;font-weight:600;color:#101828;margin:0 0 .25rem}@media (max-width: 768px){.items-container .item-header .item-info .item-details .item-name{font-size:1rem}}@media (max-width: 480px){.items-container .item-header .item-info .item-details .item-name{font-size:.9rem}}.items-container .item-header .item-info .item-details .item-type{font-size:.75rem;color:#475467;background:#ebebeb;padding:.25rem .5rem;border-radius:4px;text-transform:uppercase;font-weight:500}.items-container .item-form .form-section{margin-bottom:1.5rem}.items-container .item-form .form-section:last-child{margin-bottom:0}.items-container .item-form .form-section .section-title{font-size:.875rem;font-weight:600;color:#101828;margin:0 0 1rem;padding-bottom:.5rem;border-bottom:1px solid #EBEBEB}.items-container .item-form .input-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media (max-width: 768px){.items-container .item-form .input-grid{grid-template-columns:1fr}}.items-container .item-form .input-group{margin-bottom:1rem}.items-container .item-form .input-group label{font-size:.875rem;font-weight:500;color:#555;margin-bottom:.5rem;display:block}.items-container .item-form .input-group input,.items-container .item-form .input-group select{width:100%;padding:.75rem;border:1px solid #ccc;border-radius:6px;font-size:.875rem;transition:all .2s ease}.items-container .item-form .input-group input:focus,.items-container .item-form .input-group select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.items-container .item-form .input-group input::placeholder,.items-container .item-form .input-group select::placeholder{color:#475467}.items-container .item-form .input-group input{width:95%!important}.items-container .item-form .input-group .error-message{font-size:.75rem;color:red;margin-top:.25rem}.items-container .item-form .cost-input-container{display:flex;gap:.5rem}.items-container .item-form .cost-input-container input{flex:1}.items-container .item-form .cost-input-container .currency-select{width:80px;flex-shrink:0}.toggle-container .toggle-label{display:flex;align-items:center;gap:.75rem;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-container .toggle-label .toggle-input{display:none}.toggle-container .toggle-label .toggle-slider{position:relative;width:44px;height:24px;background:#ededed;border-radius:12px;transition:background .3s ease}.toggle-container .toggle-label .toggle-slider:before{content:\"\";position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .3s ease;box-shadow:0 1px 3px #0000004d}.toggle-container .toggle-label .toggle-input:checked+.toggle-slider{background:#0052cc}.toggle-container .toggle-label .toggle-input:checked+.toggle-slider:before{transform:translate(20px)}.toggle-container .toggle-label .toggle-text{font-weight:500;color:#101828}.toggle-container .toggle-description{font-size:.75rem;color:#475467;margin:.5rem 0 0;line-height:1.4}.popup-footer{display:flex;justify-content:space-between;align-items:center;padding-top:1.5rem;border-top:1px solid #ccc}.popup-footer .footer-info .items-count{font-size:.875rem;color:#475467;font-weight:500}.popup-footer .footer-actions{display:flex;gap:.75rem}.popup-footer .footer-actions button{min-width:120px;font-weight:500}.base-price-warning{background-color:#fff3cd;border:1px solid #ffc107;border-radius:6px;padding:.75rem 1rem;margin-bottom:1rem;font-size:.875rem;color:#856404;font-weight:500;display:flex;align-items:center;gap:.5rem}.base-price-warning .material-icons{font-size:1.25rem;color:#ffc107}.base-price-warning span:not(.material-icons){flex:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: KvPopupComponent, selector: "lib-kv-popup", inputs: ["title", "description", "isCustomTemplate", "actionType", "showCloseButton"], outputs: ["onAccept", "onClose"] }, { kind: "component", type: DatePickerComponent, selector: "lib-kv-date-picker", inputs: ["initialDate", "showDetails"], outputs: ["dateSelected"] }] }); }
183
183
  }
184
184
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KvItemCardComponent, decorators: [{
185
185
  type: Component,
@@ -188,7 +188,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
188
188
  ReactiveFormsModule,
189
189
  KvPopupComponent,
190
190
  DatePickerComponent,
191
- ], template: "<lib-kv-popup *ngIf=\"showCostPopup\" [title]=\"'Set pricing and availability for your items'\" [description]=\"'Configure the cost, availability, and expiration details for each selected item in your offer.'\" [isCustomTemplate]=\"true\" [actionType]=\"actionTypeEnum.Info\"\r\n (onAccept)=\"showCostPopup = false\" (onClose)=\"showCostPopup = false\">\r\n\r\n\r\n <div class=\"base-price-warning\" *ngIf=\"showExternalBasePriceWarning()\">\r\n <span class=\"material-icons\">warning</span>\r\n <span>El total de los productos externos (Precio externo \u00D7 disponibilidad) debe ser al menos $12.900. Total actual: ${{ getTotalExternalBasePrice().toLocaleString('es-CO') }}</span>\r\n </div>\r\n\r\n <div class=\"items-container\">\r\n <ng-container *ngFor=\"let itemForm of filteredDataItems; let i = index\">\r\n <div class=\"item-card\">\r\n <div class=\"item-header\">\r\n <div class=\"item-info\">\r\n <img *ngIf=\"itemForm.get('image_url')?.value\" \r\n [src]=\"itemForm.get('image_url')?.value\" \r\n [alt]=\"itemForm.get('name')?.value\"\r\n class=\"item-image\">\r\n <div class=\"item-details\">\r\n <h4 class=\"item-name\">{{ itemForm.get('name')?.value }}</h4>\r\n <span class=\"item-type\" *ngIf=\"itemForm.get('is_external')?.value\">External Item</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <form [formGroup]=\"itemForm\" class=\"item-form\">\r\n <div class=\"form-section\">\r\n <h5 class=\"section-title\">Pricing & Availability</h5>\r\n \r\n <div class=\"input-grid\">\r\n <div class=\"input-group\">\r\n <label for=\"amount-{{i}}\">Cost *</label>\r\n <div class=\"cost-input-container\">\r\n <input id=\"amount-{{i}}\" \r\n formControlName=\"amount\" \r\n type=\"text\" \r\n placeholder=\"Enter cost\"\r\n (input)=\"onInput($event, itemForm)\" />\r\n <select class=\"currency-select\" formControlName=\"currency\">\r\n <option value=\"COP\">COP</option>\r\n </select>\r\n </div>\r\n <div class=\"error-message\" *ngIf=\"itemForm.get('amount')?.invalid && itemForm.get('amount')?.touched\">\r\n Cost is required\r\n </div>\r\n </div>\r\n \r\n <div class=\"input-group\">\r\n <label for=\"availability-{{i}}\">Availability *</label>\r\n <input id=\"availability-{{i}}\" \r\n formControlName=\"availability\" \r\n type=\"number\" \r\n min=\"1\" \r\n placeholder=\"Available quantity\"\r\n (keydown)=\"preventNegative($event)\" />\r\n <div class=\"error-message\" *ngIf=\"itemForm.get('availability')?.invalid && itemForm.get('availability')?.touched\">\r\n Availability is required\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-section\">\r\n <h5 class=\"section-title\">Multiple Items Settings</h5>\r\n \r\n <div class=\"toggle-container\">\r\n <label class=\"toggle-label\">\r\n <input type=\"checkbox\" \r\n formControlName=\"allow_multiple_items\"\r\n class=\"toggle-input\">\r\n <span class=\"toggle-slider\"></span>\r\n <span class=\"toggle-text\">Allow multiple items per user</span>\r\n </label>\r\n <p class=\"toggle-description\">When enabled, users can bid on multiple quantities of this item</p>\r\n </div>\r\n </div>\r\n \r\n <div class=\"form-section\" *ngIf=\"shouldShowDatepicker\">\r\n <h5 class=\"section-title\">Expiration</h5>\r\n <div class=\"input-group\">\r\n <label for=\"expireAt-{{i}}\">Expires on</label>\r\n <lib-kv-date-picker [initialDate]=\"defaultDate\" \r\n [showDetails]=\"true\"\r\n (dateSelected)=\"onDatePicked($event, itemForm)\">\r\n </lib-kv-date-picker>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"pagination-container\" *ngIf=\"totalPages() > 1\">\r\n <div class=\"pagination-info\">\r\n <span>Showing {{ (currentPage - 1) * pageSize + 1 }} - {{ Math.min(currentPage * pageSize, itemsSpecificationForm.length) }} of {{ itemsSpecificationForm.length }} items</span>\r\n </div>\r\n <div class=\"pagination-controls\">\r\n <button class=\"pagination-btn\" \r\n (click)=\"changePage(-1)\" \r\n [disabled]=\"currentPage === 1\"\r\n [class.disabled]=\"currentPage === 1\">\r\n \u2190 Previous\r\n </button>\r\n <span class=\"page-indicator\">{{ currentPage }} / {{ totalPages() }}</span>\r\n <button class=\"pagination-btn\" \r\n (click)=\"changePage(1)\" \r\n [disabled]=\"currentPage === totalPages()\"\r\n [class.disabled]=\"currentPage === totalPages()\">\r\n Next \u2192\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"popup-footer\">\r\n <div class=\"footer-info\">\r\n <span class=\"items-count\">{{ itemsSpecificationForm.length }} item(s) configured</span>\r\n </div>\r\n <div class=\"footer-actions\">\r\n <button type=\"button\" class=\"button--cancel\" (click)=\"onCancelAction()\">Cancel</button>\r\n <button type=\"submit\" class=\"button--primary-min\"\r\n [disabled]=\"!canSubmit()\"\r\n (click)=\"onSubmit()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</lib-kv-popup>", styles: [".table-button--primary{width:100%;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.table-button--primary:hover{background-color:#00438a}.table-button--primary:disabled{background-color:#ededed;cursor:not-allowed}.button--primary{width:100%;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--primary:hover{background-color:#00438a}.button--primary:disabled{background-color:#ededed;cursor:not-allowed}.button--minimalist{height:min-content;padding:5px;background-color:#ebebeb;color:#475467;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--minimalist:disabled{background-color:#ededed;cursor:not-allowed}.button--primary-min{height:min-content;width:max-content;margin-left:8px;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;background:#0052cc;color:#fcfcfd}@media (max-width: 768px){.button--primary-min{padding:8px}}.button--primary-min:hover{background:#00438a}.button--primary-min:disabled{background-color:#ededed;cursor:not-allowed}.button--cancel{height:min-content;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;color:#475467;background-color:#fff;border:1px solid #ededed}.button--cancel:disabled{background-color:#ededed;cursor:not-allowed}.button--create{height:min-content;align-self:center;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--create:hover{background-color:#00438a}.button--create:disabled{background-color:#ededed;cursor:not-allowed}.button--sidenav{background-color:#fff;color:#475467;padding:8px;font-weight:700;border:none;display:flex;border-radius:4px;cursor:pointer;gap:10px;margin-top:10px;width:100%;align-items:center}.button--sidenav:hover{background-color:#f2f4f7;color:#101828}.button--sidenav:disabled{background-color:#ededed;cursor:not-allowed}.button--warn{background-color:#b90000;color:#f2f4f7;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;height:min-content}.button--warn:hover{background-color:red}.button--warn:disabled{background-color:#ededed;cursor:not-allowed}.button-container{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.button-container:disabled{background-color:#ededed;cursor:not-allowed}input,textarea{padding:10px;width:-webkit-fill-available;border:1px solid #ccc;border-radius:5px;font-size:16px!important;font-family:Roboto,sans-serif!important;color:#101828;background-color:#fff}input::placeholder,textarea::placeholder{color:#475467}input:focus,textarea:focus{border-color:#007bff;box-shadow:0 0 8px #007bff80;background-color:#fff}input.error,textarea.error{border-color:#fcd9d9;box-shadow:0 0 8px #fcd9d980}.input-group{margin-bottom:15px}.input-group label{font-size:14px;margin-bottom:5px;color:#555}.input-group .error-message{color:red}@media (max-width: 768px){.input-group{margin-bottom:13px}.input-group label{font-size:13px}}@media (max-width: 480px){.input-group{margin-bottom:3px}.input-group label{font-size:12px}}.input-cost{display:flex;gap:10px}.a-link{text-decoration:none}.a-link:hover{cursor:pointer;text-decoration:underline}.a-link2{text-decoration:underline}.a-link2:hover{cursor:pointer;text-decoration:underline}.column-direction{display:flex;flex-direction:row;gap:1rem;padding:2rem;width:100%}.main-text{font-size:30px;color:#101828}@media (max-width: 768px){.main-text{font-size:25px}}@media (max-width: 480px){.main-text{font-size:20px}}.secondary-text{font-size:16px;color:#475467}@media (max-width: 768px){.secondary-text{font-size:14px}}@media (max-width: 480px){.secondary-text{font-size:12px}}.sidebar-title{font-size:24px;color:#101828;font-weight:700;margin-bottom:20px}@media (max-width: 768px){.sidebar-title{margin-top:-36px;margin-bottom:3px;font-size:20px}}.description-section{margin-top:30px}@media (max-width: 768px){.description-section{margin-top:7px}}.description-section .description-title{color:#101828}.description-section .description-body{color:#475467}.list-container{width:100%;border:1px solid #ccc;border-radius:12px;margin-top:22px}@media (max-width: 768px){.list-container{margin-top:7px}}.list-container .list-section{margin:1rem;color:#101828}.list-container .list-section .list{margin-top:12px;color:#475467}@media (max-width: 768px){.list-container .list-section .list{margin-top:6px}}.required{color:#b90000;font-weight:700}.service-info{align-items:center;display:flex}.service-info img{width:40px;height:40px;border:2px solid #ccc;border-radius:50%;margin:5px}.popup-backdrop{position:fixed;inset:0;width:100%;height:100%;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000;transform:translateZ(0)}.popup-container{max-height:80vh;background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 10px #0000001a;overflow-y:auto;width:50%;position:relative}@media (max-width: 768px){.popup-container{width:80%;max-height:80vh;padding:15px;border-radius:6px;margin:0 auto}}@media (max-width: 480px){.popup-container{width:90%;max-height:90vh;padding:10px;border-radius:4px}}.popup-container .close{float:right;font-size:20px;cursor:pointer}table{width:100%;border-collapse:collapse;text-align:left;border:1px solid #ccc;border-radius:4px}thead{background-color:#fff;color:#101828}tbody{color:#475467}th,td{padding:10px;font-size:14px;border-bottom:1px solid #ccc}tbody tr:hover{background-color:#fff}.state.Active{background-color:#12b76a26;color:#036338!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Active a{color:#036338!important}.state.Waiting{background-color:#f8e0d1;color:#b53701!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Waiting a{color:#b53701!important}.state.Created{background-color:#f8e0d1;color:#b53701!important;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Created a{color:#b53701!important}.state.Offered{background-color:#12b76a26;color:#036338!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Offered a{color:#036338!important}.state.Closed{background-color:#fcd9d9;color:#581d1d;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Closed a{color:#581d1d!important}.state.Approved{background-color:#d1e7dd;color:#0f5132;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Approved a{color:#0f5132!important}.state.Rejected{background-color:#f8d7da;color:#842029;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Rejected a{color:#842029!important}.state.Pending{background-color:#f8e0d1;color:#b53701;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Pending a{color:#b53701!important}.pagination{display:flex;justify-content:space-between;margin-top:10px}.pagination button{padding:5px 10px;border:1px solid #ccc;background-color:#fff;cursor:pointer}.pagination button:disabled{color:#555;cursor:not-allowed}.search-container{margin-bottom:10px;display:flex;justify-content:flex-end;width:100%}.search-container .search-section input{width:min-content!important}.pagination{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:14px;color:#101828}.pagination button{padding:6px 12px;border:none;color:#101828;cursor:pointer;border-radius:4px;margin-right:6px;touch-action:manipulation}.pagination button:disabled{background-color:#ededed;cursor:not-allowed}@media (max-width: 768px){.pagination{gap:8px;margin:12px}.pagination button{padding:4px 10px;border-radius:3px}}@media (max-width: 480px){.pagination{gap:6px;margin:10px}.pagination button{padding:2px 8px;border-radius:2px}}.table-pagination{border-top:0!important}@media (max-width: 768px){.search-container{margin-bottom:10px;display:flex;justify-content:center;width:100%}table{table-layout:auto!important;border:none!important}table td{padding:5px!important}.hidden-mobile{display:none}}table,table th{border:none!important}table td{border:none!important;padding:0!important}table td div{display:flex}table td div span{margin-top:5px;margin-left:10px}table td p{color:#101828}.card{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 4px 12px #0000001a}.simple-card{background-color:#f8fafb;padding:1rem;border-radius:8px;color:#101828}.border-card{background:#fff;padding:2rem;border-radius:8px;border:1px solid #ccc}select{width:100%;padding:12px 16px;font-size:16px;border:1px solid #ccc;border-radius:8px;color:#101828;appearance:none;transition:all .3s ease;cursor:pointer;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24'%3E%3Cpath d='M7 10l5 5 5-5z' fill='%23333'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:calc(100% - 12px) center}select option{background-color:#fff;color:#101828;padding:28px;font-size:16px;cursor:pointer}select option:hover{background-color:#fff;color:#fff;cursor:pointer}select:focus{border-color:#007bff;box-shadow:0 0 8px #007bff80;background-color:#fff}select:disabled{background-color:#fff}select.error{border-color:#fcd9d9;box-shadow:0 0 8px #fcd9d980}.pagination-container{display:flex;justify-content:space-between;align-items:center;padding:1rem 0;border-top:1px solid #ccc;border-bottom:1px solid #ccc;margin-bottom:1.5rem}.pagination-container .pagination-info{font-size:.875rem;color:#475467}.pagination-container .pagination-controls{display:flex;align-items:center;gap:1rem}.pagination-container .pagination-controls .pagination-btn{padding:.5rem 1rem;border:1px solid #ccc;background:#fff;color:#101828;border-radius:6px;cursor:pointer;font-size:.875rem;transition:all .2s ease}.pagination-container .pagination-controls .pagination-btn:hover:not(.disabled){background:#f8fafb;border-color:#007bff}.pagination-container .pagination-controls .pagination-btn.disabled{color:#6c757d;cursor:not-allowed;background:#ededed}.pagination-container .pagination-controls .page-indicator{font-size:.875rem;font-weight:500;color:#101828;min-width:60px;text-align:center}.items-container{max-height:60vh;overflow-y:auto;margin-bottom:1.5rem}.items-container .item-card{background:#fff;border:1px solid #ccc;border-radius:8px;margin-bottom:1rem;padding:1.5rem;box-shadow:0 1px 3px #0000001a;transition:all .2s ease}.items-container .item-card:hover{box-shadow:0 2px 8px #0000001f;border-color:#007bff}.items-container .item-card:last-child{margin-bottom:0}.items-container .item-header{margin-bottom:1.5rem}.items-container .item-header .item-info{display:flex;align-items:center;gap:1rem}.items-container .item-header .item-info .item-image{width:60px;height:60px;border-radius:8px;object-fit:cover;border:1px solid #ccc}.items-container .item-header .item-info .item-details{flex:1}.items-container .item-header .item-info .item-details .item-name{font-size:1.1rem;font-weight:600;color:#101828;margin:0 0 .25rem}@media (max-width: 768px){.items-container .item-header .item-info .item-details .item-name{font-size:1rem}}@media (max-width: 480px){.items-container .item-header .item-info .item-details .item-name{font-size:.9rem}}.items-container .item-header .item-info .item-details .item-type{font-size:.75rem;color:#475467;background:#ebebeb;padding:.25rem .5rem;border-radius:4px;text-transform:uppercase;font-weight:500}.items-container .item-form .form-section{margin-bottom:1.5rem}.items-container .item-form .form-section:last-child{margin-bottom:0}.items-container .item-form .form-section .section-title{font-size:.875rem;font-weight:600;color:#101828;margin:0 0 1rem;padding-bottom:.5rem;border-bottom:1px solid #EBEBEB}.items-container .item-form .input-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media (max-width: 768px){.items-container .item-form .input-grid{grid-template-columns:1fr}}.items-container .item-form .input-group{margin-bottom:1rem}.items-container .item-form .input-group label{font-size:.875rem;font-weight:500;color:#555;margin-bottom:.5rem;display:block}.items-container .item-form .input-group input,.items-container .item-form .input-group select{width:100%;padding:.75rem;border:1px solid #ccc;border-radius:6px;font-size:.875rem;transition:all .2s ease}.items-container .item-form .input-group input:focus,.items-container .item-form .input-group select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.items-container .item-form .input-group input::placeholder,.items-container .item-form .input-group select::placeholder{color:#475467}.items-container .item-form .input-group input{width:95%!important}.items-container .item-form .input-group .error-message{font-size:.75rem;color:red;margin-top:.25rem}.items-container .item-form .cost-input-container{display:flex;gap:.5rem}.items-container .item-form .cost-input-container input{flex:1}.items-container .item-form .cost-input-container .currency-select{width:80px;flex-shrink:0}.toggle-container .toggle-label{display:flex;align-items:center;gap:.75rem;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-container .toggle-label .toggle-input{display:none}.toggle-container .toggle-label .toggle-slider{position:relative;width:44px;height:24px;background:#ededed;border-radius:12px;transition:background .3s ease}.toggle-container .toggle-label .toggle-slider:before{content:\"\";position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .3s ease;box-shadow:0 1px 3px #0000004d}.toggle-container .toggle-label .toggle-input:checked+.toggle-slider{background:#0052cc}.toggle-container .toggle-label .toggle-input:checked+.toggle-slider:before{transform:translate(20px)}.toggle-container .toggle-label .toggle-text{font-weight:500;color:#101828}.toggle-container .toggle-description{font-size:.75rem;color:#475467;margin:.5rem 0 0;line-height:1.4}.popup-footer{display:flex;justify-content:space-between;align-items:center;padding-top:1.5rem;border-top:1px solid #ccc}.popup-footer .footer-info .items-count{font-size:.875rem;color:#475467;font-weight:500}.popup-footer .footer-actions{display:flex;gap:.75rem}.popup-footer .footer-actions button{min-width:120px;font-weight:500}.base-price-warning{background-color:#fff3cd;border:1px solid #ffc107;border-radius:6px;padding:.75rem 1rem;margin-bottom:1rem;font-size:.875rem;color:#856404;font-weight:500;display:flex;align-items:center;gap:.5rem}.base-price-warning .material-icons{font-size:1.25rem;color:#ffc107}.base-price-warning span:not(.material-icons){flex:1}\n"] }]
191
+ ], template: "<lib-kv-popup *ngIf=\"showCostPopup\" [title]=\"'Set pricing and availability for your items'\" [description]=\"'Configure the cost, availability, and expiration details for each selected item in your offer.'\" [isCustomTemplate]=\"true\" [actionType]=\"actionTypeEnum.Info\"\r\n (onAccept)=\"showCostPopup = false\" (onClose)=\"showCostPopup = false\">\r\n\r\n\r\n <div class=\"base-price-warning\" *ngIf=\"showExternalBasePriceWarning()\">\r\n <span class=\"material-icons\">warning</span>\r\n <span>El total de los productos externos (Precio externo \u00D7 disponibilidad) debe ser al menos $12.900. Total actual: ${{ getTotalExternalBasePrice().toLocaleString('es-CO') }}</span>\r\n </div>\r\n\r\n <div class=\"items-container\">\r\n <ng-container *ngFor=\"let itemForm of filteredDataItems; let i = index\">\r\n <div class=\"item-card\">\r\n <div class=\"item-header\">\r\n <div class=\"item-info\">\r\n <img *ngIf=\"itemForm.get('image_url')?.value\" \r\n [src]=\"itemForm.get('image_url')?.value\" \r\n [alt]=\"itemForm.get('name')?.value\"\r\n class=\"item-image\">\r\n <div class=\"item-details\">\r\n <h4 class=\"item-name\">{{ itemForm.get('name')?.value }}</h4>\r\n <span class=\"item-type\" *ngIf=\"itemForm.get('is_external')?.value\">External Item</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <form [formGroup]=\"itemForm\" class=\"item-form\">\r\n <div class=\"form-section\">\r\n <h5 class=\"section-title\">Pricing & Availability</h5>\r\n \r\n <div class=\"input-grid\">\r\n <div class=\"input-group\">\r\n <label for=\"amount-{{i}}\">Cost *</label>\r\n <div class=\"cost-input-container\">\r\n <input id=\"amount-{{i}}\" \r\n formControlName=\"amount\" \r\n type=\"text\" \r\n placeholder=\"Enter cost\"\r\n (input)=\"onInput($event, itemForm)\" />\r\n <select class=\"currency-select\" formControlName=\"currency\">\r\n <option value=\"COP\">COP</option>\r\n </select>\r\n </div>\r\n <div class=\"error-message\" *ngIf=\"itemForm.get('amount')?.invalid && itemForm.get('amount')?.touched\">\r\n Cost is required\r\n </div>\r\n </div>\r\n \r\n <div class=\"input-group\">\r\n <label for=\"availability-{{i}}\">Availability *</label>\r\n <input id=\"availability-{{i}}\" \r\n formControlName=\"availability\" \r\n type=\"number\" \r\n min=\"1\" \r\n placeholder=\"Available quantity\"\r\n (keydown)=\"preventNegative($event)\" />\r\n <div class=\"error-message\" *ngIf=\"itemForm.get('availability')?.invalid && itemForm.get('availability')?.touched\">\r\n Availability is required\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-section\">\r\n <h5 class=\"section-title\">Multiple Items Settings</h5>\r\n \r\n <div class=\"toggle-container\">\r\n <label class=\"toggle-label\">\r\n <input type=\"checkbox\" \r\n formControlName=\"allow_multiple_items\"\r\n class=\"toggle-input\">\r\n <span class=\"toggle-slider\"></span>\r\n <span class=\"toggle-text\">Allow multiple items per user</span>\r\n </label>\r\n <p class=\"toggle-description\">When enabled, users can bid on multiple quantities of this item</p>\r\n </div>\r\n </div>\r\n \r\n <div class=\"form-section\" *ngIf=\"shouldShowDatepicker\">\r\n <h5 class=\"section-title\">Expiration</h5>\r\n <div class=\"input-group\">\r\n <label for=\"expireAt-{{i}}\">Expires on</label>\r\n <lib-kv-date-picker [initialDate]=\"defaultDate\" \r\n [showDetails]=\"true\"\r\n (dateSelected)=\"onDatePicked($event, itemForm)\">\r\n </lib-kv-date-picker>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"pagination-container\" *ngIf=\"totalPages() > 1\">\r\n <div class=\"pagination-info\">\r\n <span>Showing {{ (currentPage - 1) * pageSize + 1 }} - {{ Math.min(currentPage * pageSize, itemsSpecificationForm.length) }} of {{ itemsSpecificationForm.length }} items</span>\r\n </div>\r\n <div class=\"pagination-controls\">\r\n <button class=\"pagination-btn\" \r\n (click)=\"changePage(-1)\" \r\n [disabled]=\"currentPage === 1\"\r\n [class.disabled]=\"currentPage === 1\">\r\n \u2190 Previous\r\n </button>\r\n <span class=\"page-indicator\">{{ currentPage }} / {{ totalPages() }}</span>\r\n <button class=\"pagination-btn\" \r\n (click)=\"changePage(1)\" \r\n [disabled]=\"currentPage === totalPages()\"\r\n [class.disabled]=\"currentPage === totalPages()\">\r\n Next \u2192\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"popup-footer\">\r\n <div class=\"footer-info\">\r\n <span class=\"items-count\">{{ itemsSpecificationForm.length }} item(s) configured</span>\r\n </div>\r\n <div class=\"footer-actions\">\r\n <button type=\"button\" class=\"button--cancel\" (click)=\"onCancelAction()\">Cancel</button>\r\n <button type=\"submit\" class=\"button--primary-min\"\r\n [disabled]=\"!canSubmit()\"\r\n (click)=\"onSubmit()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</lib-kv-popup>", styles: [".table-button--primary{width:100%;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.table-button--primary:hover{background-color:#00438a}.table-button--primary:disabled{background-color:#ededed;cursor:not-allowed}.button--primary{width:100%;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--primary:hover{background-color:#00438a}.button--primary:disabled{background-color:#ededed;cursor:not-allowed}.button--minimalist{height:min-content;padding:5px;background-color:#ebebeb;color:#475467;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--minimalist:disabled{background-color:#ededed;cursor:not-allowed}.button--primary-min{height:min-content;width:max-content;margin-left:8px;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;background:#0052cc;color:#fcfcfd}@media (max-width: 768px){.button--primary-min{padding:8px}}.button--primary-min:hover{background:#00438a}.button--primary-min:disabled{background-color:#ededed;cursor:not-allowed}.button--cancel{height:min-content;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;color:#475467;background-color:#fff;border:1px solid #ededed}.button--cancel:disabled{background-color:#ededed;cursor:not-allowed}.button--create{height:min-content;align-self:center;padding:10px;background-color:#0052cc;color:#fcfcfd;border:none;border-radius:5px;font-size:16px;cursor:pointer}.button--create:hover{background-color:#00438a}.button--create:disabled{background-color:#ededed;cursor:not-allowed}.button--sidenav{background-color:#fff;color:#475467;padding:8px;font-weight:700;border:none;display:flex;border-radius:4px;cursor:pointer;gap:10px;margin-top:10px;width:100%;align-items:center}.button--sidenav:hover{background-color:#f2f4f7;color:#101828}.button--sidenav:disabled{background-color:#ededed;cursor:not-allowed}.button--warn{background-color:#b90000;color:#f2f4f7;padding:8px 20px;border:none;border-radius:4px;cursor:pointer;height:min-content}.button--warn:hover{background-color:red}.button--warn:disabled{background-color:#ededed;cursor:not-allowed}.button-container{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.button-container:disabled{background-color:#ededed;cursor:not-allowed}input,textarea{padding:10px;width:-webkit-fill-available;border:1px solid #ccc;border-radius:5px;font-size:16px!important;font-family:Roboto,sans-serif!important;color:#101828;background-color:#fff}input::placeholder,textarea::placeholder{color:#475467}input:focus,textarea:focus{border-color:#007bff;box-shadow:0 0 8px #007bff80;background-color:#fff}input.error,textarea.error{border-color:#fcd9d9;box-shadow:0 0 8px #fcd9d980}.input-group{margin-bottom:15px}.input-group label{font-size:14px;margin-bottom:5px;color:#555}.input-group .error-message{color:red}@media (max-width: 768px){.input-group{margin-bottom:13px}.input-group label{font-size:13px}}@media (max-width: 480px){.input-group{margin-bottom:3px}.input-group label{font-size:12px}}.input-cost{display:flex;gap:10px}.a-link{text-decoration:none}.a-link:hover{cursor:pointer;text-decoration:underline}.a-link2{text-decoration:underline}.a-link2:hover{cursor:pointer;text-decoration:underline}.column-direction{display:flex;flex-direction:row;gap:1rem;padding:2rem;width:100%}.main-text{font-size:30px;color:#101828}@media (max-width: 768px){.main-text{font-size:25px}}@media (max-width: 480px){.main-text{font-size:20px}}.secondary-text{font-size:16px;color:#475467}@media (max-width: 768px){.secondary-text{font-size:14px}}@media (max-width: 480px){.secondary-text{font-size:12px}}.sidebar-title{font-size:24px;color:#101828;font-weight:700;margin-bottom:20px}@media (max-width: 768px){.sidebar-title{margin-top:-36px;margin-bottom:3px;font-size:20px}}.description-section{margin-top:30px}@media (max-width: 768px){.description-section{margin-top:7px}}.description-section .description-title{color:#101828}.description-section .description-body{color:#475467}.list-container{width:100%;border:1px solid #ccc;border-radius:12px;margin-top:22px}@media (max-width: 768px){.list-container{margin-top:7px}}.list-container .list-section{margin:1rem;color:#101828}.list-container .list-section .list{margin-top:12px;color:#475467}@media (max-width: 768px){.list-container .list-section .list{margin-top:6px}}.required{color:#b90000;font-weight:700}.service-info{align-items:center;display:flex}.service-info img{width:40px;height:40px;border:2px solid #ccc;border-radius:50%;margin:5px}.popup-backdrop{position:fixed;inset:0;width:100%;height:100%;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000;transform:translateZ(0)}.popup-container{max-height:80vh;background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 10px #0000001a;overflow-y:auto;width:50%;position:relative}@media (max-width: 768px){.popup-container{width:80%;max-height:80vh;padding:15px;border-radius:6px;margin:0 auto}}@media (max-width: 480px){.popup-container{width:90%;max-height:90vh;padding:10px;border-radius:4px}}.popup-container .close{float:right;font-size:20px;cursor:pointer}table{width:100%;border-collapse:collapse;text-align:left;border:1px solid #ccc;border-radius:4px}thead{background-color:#fff;color:#101828}tbody{color:#475467}th,td{padding:10px;font-size:14px;border-bottom:1px solid #ccc}tbody tr:hover{background-color:#fff}.state.Active{background-color:#12b76a26;color:#036338!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Active a{color:#036338!important}.state.Waiting{background-color:#f8e0d1;color:#b53701!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Waiting a{color:#b53701!important}.state.Created{background-color:#f8e0d1;color:#b53701!important;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Created a{color:#b53701!important}.state.Offered{background-color:#12b76a26;color:#036338!important;font-weight:700;width:min-content;padding:6px;border-radius:4px;white-space:nowrap}.state.Offered a{color:#036338!important}.state.Closed{background-color:#fcd9d9;color:#581d1d;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Closed a{color:#581d1d!important}.state.Approved{background-color:#d1e7dd;color:#0f5132;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Approved a{color:#0f5132!important}.state.Rejected{background-color:#f8d7da;color:#842029;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Rejected a{color:#842029!important}.state.Pending{background-color:#f8e0d1;color:#b53701;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Pending a{color:#b53701!important}.state.Error{background-color:#ffc067;color:#e85d04;font-weight:700;width:min-content;padding:6px;border-radius:4px}.state.Error a{color:#e85d04!important}.pagination{display:flex;justify-content:space-between;margin-top:10px}.pagination button{padding:5px 10px;border:1px solid #ccc;background-color:#fff;cursor:pointer}.pagination button:disabled{color:#555;cursor:not-allowed}.search-container{margin-bottom:10px;display:flex;justify-content:flex-end;width:100%}.search-container .search-section input{width:min-content!important}.pagination{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:14px;color:#101828}.pagination button{padding:6px 12px;border:none;color:#101828;cursor:pointer;border-radius:4px;margin-right:6px;touch-action:manipulation}.pagination button:disabled{background-color:#ededed;cursor:not-allowed}@media (max-width: 768px){.pagination{gap:8px;margin:12px}.pagination button{padding:4px 10px;border-radius:3px}}@media (max-width: 480px){.pagination{gap:6px;margin:10px}.pagination button{padding:2px 8px;border-radius:2px}}.table-pagination{border-top:0!important}@media (max-width: 768px){.search-container{margin-bottom:10px;display:flex;justify-content:center;width:100%}table{table-layout:auto!important;border:none!important}table td{padding:5px!important}.hidden-mobile{display:none}}table,table th{border:none!important}table td{border:none!important;padding:0!important}table td div{display:flex}table td div span{margin-top:5px;margin-left:10px}table td p{color:#101828}.card{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 4px 12px #0000001a}.simple-card{background-color:#f8fafb;padding:1rem;border-radius:8px;color:#101828}.border-card{background:#fff;padding:2rem;border-radius:8px;border:1px solid #ccc}select{width:100%;padding:12px 16px;font-size:16px;border:1px solid #ccc;border-radius:8px;color:#101828;appearance:none;transition:all .3s ease;cursor:pointer;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24'%3E%3Cpath d='M7 10l5 5 5-5z' fill='%23333'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:calc(100% - 12px) center}select option{background-color:#fff;color:#101828;padding:28px;font-size:16px;cursor:pointer}select option:hover{background-color:#fff;color:#fff;cursor:pointer}select:focus{border-color:#007bff;box-shadow:0 0 8px #007bff80;background-color:#fff}select:disabled{background-color:#fff}select.error{border-color:#fcd9d9;box-shadow:0 0 8px #fcd9d980}.pagination-container{display:flex;justify-content:space-between;align-items:center;padding:1rem 0;border-top:1px solid #ccc;border-bottom:1px solid #ccc;margin-bottom:1.5rem}.pagination-container .pagination-info{font-size:.875rem;color:#475467}.pagination-container .pagination-controls{display:flex;align-items:center;gap:1rem}.pagination-container .pagination-controls .pagination-btn{padding:.5rem 1rem;border:1px solid #ccc;background:#fff;color:#101828;border-radius:6px;cursor:pointer;font-size:.875rem;transition:all .2s ease}.pagination-container .pagination-controls .pagination-btn:hover:not(.disabled){background:#f8fafb;border-color:#007bff}.pagination-container .pagination-controls .pagination-btn.disabled{color:#6c757d;cursor:not-allowed;background:#ededed}.pagination-container .pagination-controls .page-indicator{font-size:.875rem;font-weight:500;color:#101828;min-width:60px;text-align:center}.items-container{max-height:60vh;overflow-y:auto;margin-bottom:1.5rem}.items-container .item-card{background:#fff;border:1px solid #ccc;border-radius:8px;margin-bottom:1rem;padding:1.5rem;box-shadow:0 1px 3px #0000001a;transition:all .2s ease}.items-container .item-card:hover{box-shadow:0 2px 8px #0000001f;border-color:#007bff}.items-container .item-card:last-child{margin-bottom:0}.items-container .item-header{margin-bottom:1.5rem}.items-container .item-header .item-info{display:flex;align-items:center;gap:1rem}.items-container .item-header .item-info .item-image{width:60px;height:60px;border-radius:8px;object-fit:cover;border:1px solid #ccc}.items-container .item-header .item-info .item-details{flex:1}.items-container .item-header .item-info .item-details .item-name{font-size:1.1rem;font-weight:600;color:#101828;margin:0 0 .25rem}@media (max-width: 768px){.items-container .item-header .item-info .item-details .item-name{font-size:1rem}}@media (max-width: 480px){.items-container .item-header .item-info .item-details .item-name{font-size:.9rem}}.items-container .item-header .item-info .item-details .item-type{font-size:.75rem;color:#475467;background:#ebebeb;padding:.25rem .5rem;border-radius:4px;text-transform:uppercase;font-weight:500}.items-container .item-form .form-section{margin-bottom:1.5rem}.items-container .item-form .form-section:last-child{margin-bottom:0}.items-container .item-form .form-section .section-title{font-size:.875rem;font-weight:600;color:#101828;margin:0 0 1rem;padding-bottom:.5rem;border-bottom:1px solid #EBEBEB}.items-container .item-form .input-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media (max-width: 768px){.items-container .item-form .input-grid{grid-template-columns:1fr}}.items-container .item-form .input-group{margin-bottom:1rem}.items-container .item-form .input-group label{font-size:.875rem;font-weight:500;color:#555;margin-bottom:.5rem;display:block}.items-container .item-form .input-group input,.items-container .item-form .input-group select{width:100%;padding:.75rem;border:1px solid #ccc;border-radius:6px;font-size:.875rem;transition:all .2s ease}.items-container .item-form .input-group input:focus,.items-container .item-form .input-group select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.items-container .item-form .input-group input::placeholder,.items-container .item-form .input-group select::placeholder{color:#475467}.items-container .item-form .input-group input{width:95%!important}.items-container .item-form .input-group .error-message{font-size:.75rem;color:red;margin-top:.25rem}.items-container .item-form .cost-input-container{display:flex;gap:.5rem}.items-container .item-form .cost-input-container input{flex:1}.items-container .item-form .cost-input-container .currency-select{width:80px;flex-shrink:0}.toggle-container .toggle-label{display:flex;align-items:center;gap:.75rem;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-container .toggle-label .toggle-input{display:none}.toggle-container .toggle-label .toggle-slider{position:relative;width:44px;height:24px;background:#ededed;border-radius:12px;transition:background .3s ease}.toggle-container .toggle-label .toggle-slider:before{content:\"\";position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .3s ease;box-shadow:0 1px 3px #0000004d}.toggle-container .toggle-label .toggle-input:checked+.toggle-slider{background:#0052cc}.toggle-container .toggle-label .toggle-input:checked+.toggle-slider:before{transform:translate(20px)}.toggle-container .toggle-label .toggle-text{font-weight:500;color:#101828}.toggle-container .toggle-description{font-size:.75rem;color:#475467;margin:.5rem 0 0;line-height:1.4}.popup-footer{display:flex;justify-content:space-between;align-items:center;padding-top:1.5rem;border-top:1px solid #ccc}.popup-footer .footer-info .items-count{font-size:.875rem;color:#475467;font-weight:500}.popup-footer .footer-actions{display:flex;gap:.75rem}.popup-footer .footer-actions button{min-width:120px;font-weight:500}.base-price-warning{background-color:#fff3cd;border:1px solid #ffc107;border-radius:6px;padding:.75rem 1rem;margin-bottom:1rem;font-size:.875rem;color:#856404;font-weight:500;display:flex;align-items:center;gap:.5rem}.base-price-warning .material-icons{font-size:1.25rem;color:#ffc107}.base-price-warning span:not(.material-icons){flex:1}\n"] }]
192
192
  }], ctorParameters: () => [{ type: i1.FormFactoryService }], propDecorators: { shouldShowDatepicker: [{
193
193
  type: Input
194
194
  }], offerId: [{
@@ -204,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
204
204
  }], onItemsProcessed: [{
205
205
  type: Output
206
206
  }] } });
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtaXRlbS1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdmlvL3NyYy9saWIvY29tcG9uZW50cy9rdi1pdGVtLWNhcmQva3YtaXRlbS1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdmlvL3NyYy9saWIvY29tcG9uZW50cy9rdi1pdGVtLWNhcmQva3YtaXRlbS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBYSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQStCL0MsTUFBTSxPQUFPLG1CQUFtQjtJQXFCOUIsWUFDbUIsV0FBK0I7UUFBL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBckJ6Qyx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQiwyQkFBc0IsR0FBeUIsSUFBSSxTQUFTLENBQVksRUFBRSxDQUFDLENBQUM7UUFFM0UsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDdEMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDcEMscUJBQWdCLEdBQUcsSUFBSSxZ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Q0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxNQUFjO1FBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQ3JFLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxLQUFLLE1BQU0sQ0FDekMsQ0FBQztRQUVGLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0M7SUFDSCxDQUFDOytHQTFOVSxtQkFBbUI7bUdBQW5CLG1CQUFtQiwrVUMxQ2hDLDB2T0E4SGUsNnljRDdGWCxZQUFZLCtQQUNaLG1CQUFtQixzM0RBQ25CLGdCQUFnQixrTEFDaEIsbUJBQW1COzs0RkFNVixtQkFBbUI7a0JBYi9CLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixtQkFBbUI7cUJBRXBCO3VGQUtRLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEt2UG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9rdi1wb3B1cC9rdi1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvYWN0aW9uLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Zvcm0tZmllbGQuY29uZmlnJztcclxuaW1wb3J0IHsgRm9ybUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZmFjdG9yaWVzL2Zvcm0tZmFjdG9yeS5zZXJ2aWNlJztcclxuXHJcblxyXG5pbnRlcmZhY2UgQ3JlYXRlV2l0aE11bHRpcGxlSXRlbXNSZXF1ZXN0IHtcclxuICBjdXJyZW5jeTogc3RyaW5nO1xyXG4gIG9mZmVyX2lkOiBzdHJpbmc7XHJcbiAgaXRlbV9pZDogc3RyaW5nO1xyXG4gIHBvaW50X29mX3NhbGVfaWQ6IHN0cmluZztcclxuICBhbW91bnQ6IG51bWJlcjtcclxuICBhdmFpbGFiaWxpdHk6IG51bWJlcjtcclxuICBleHBpcmVfYXQ6IHN0cmluZztcclxuICBpc19leHRlcm5hbDogYm9vbGVhbjtcclxuICBhbGxvd19tdWx0aXBsZV9pdGVtczogYm9vbGVhbjtcclxuICBiYXNlX3ByaWNlOiBudW1iZXI7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWt2LWl0ZW0tY2FyZCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgS3ZQb3B1cENvbXBvbmVudCxcclxuICAgIERhdGVQaWNrZXJDb21wb25lbnQsXHJcblxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LWl0ZW0tY2FyZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2t2LWl0ZW0tY2FyZC5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdkl0ZW1DYXJkQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBzaG91bGRTaG93RGF0ZXBpY2tlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG9mZmVySWQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgQElucHV0KCkgc2hvd0Nvc3RQb3B1cDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGl0ZW1zU3BlY2lmaWNhdGlvbkZvcm06IEZvcm1BcnJheTxGb3JtR3JvdXA+ID0gbmV3IEZvcm1BcnJheTxGb3JtR3JvdXA+KFtdKTtcclxuXHJcbiAgQE91dHB1dCgpIG9uQ29udGludWUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBvbkl0ZW1zUHJvY2Vzc2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBtdWx0aXBsZUl0ZW1zOiBDcmVhdGVXaXRoTXVsdGlwbGVJdGVtc1JlcXVlc3RbXTtcclxuICAgIHJlZ3VsYXJJdGVtczogYW55W107XHJcbiAgfT4oKTtcclxuXHJcbiAgcHVibGljIGFjdGlvblR5cGVFbnVtID0gQWN0aW9uVHlwZTtcclxuICBwdWJsaWMgZGVmYXVsdERhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICBwYWdlU2l6ZTogbnVtYmVyID0gMjtcclxuICBjdXJyZW50UGFnZTogbnVtYmVyID0gMTtcclxuICBNYXRoID0gTWF0aDtcclxuICBzZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1GYWN0b3J5OiBGb3JtRmFjdG9yeVNlcnZpY2UsXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0gPSBuZXcgRm9ybUFycmF5PEZvcm1Hcm91cD4oW10pO1xyXG5cclxuICB9XHJcblxyXG4gIGdldCBmaWx0ZXJlZERhdGFJdGVtcygpIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0uY29udHJvbHNcclxuICAgICAgLmZpbHRlcigoaXRlbUZvcm0pID0+XHJcbiAgICAgICAgaXRlbUZvcm0uZ2V0KCduYW1lJyk/LnZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgIClcclxuICAgICAgLnNsaWNlKCh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLnBhZ2VTaXplLCB0aGlzLmN1cnJlbnRQYWdlICogdGhpcy5wYWdlU2l6ZSk7XHJcbiAgfVxyXG5cclxuICBhZGRJdGVtKGluZGV4OiBudW1iZXIsIGl0ZW1OYW1lPzogc3RyaW5nLCBpdGVtSXNFeHRlcm5hbD86IGJvb2xlYW4sIGl0ZW1JbWFnZT86IHN0cmluZywgYXZhaWxhYmlsaXR5PzogbnVtYmVyLCBpdGVtSWQ/OiBzdHJpbmcsIHBvc0lkPzogc3RyaW5nLCBpdGVtQmFzZVByaWNlPzogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBpdGVtU3BlY0Zvcm1Db25maWc6IEZvcm1GaWVsZENvbmZpZ1tdID0gW1xyXG4gICAgICB7IG5hbWU6ICdhbW91bnQnLCBkZWZhdWx0VmFsdWU6IDAsIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9LFxyXG4gICAgICB7IG5hbWU6ICdhdmFpbGFiaWxpdHknLCBkZWZhdWx0VmFsdWU6IDAsIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9LFxyXG4gICAgICB7IG5hbWU6ICdjdXJyZW5jeScsIGRlZmF1bHRWYWx1ZTogJ0NPUCcsIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9LFxyXG4gICAgICB7IG5hbWU6ICdleHBpcmVfYXQnLCBkZWZhdWx0VmFsdWU6IHRoaXMuZGVmYXVsdERhdGUsIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9LFxyXG4gICAgICB7IG5hbWU6ICdvZmZlcl9pZCcsIGRlZmF1bHRWYWx1ZTogJycgfSxcclxuICAgICAgeyBuYW1lOiAnaXRlbV9pZCcsIGRlZmF1bHRWYWx1ZTogJycsIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9LFxyXG4gICAgICB7IG5hbWU6ICduYW1lJywgZGVmYXVsdFZhbHVlOiAnJywgdmFsaWRhdG9yczogW10gfSxcclxuICAgICAgeyBuYW1lOiAnaXNfZXh0ZXJuYWwnLCBkZWZhdWx0VmFsdWU6IGZhbHNlLCB2YWxpZGF0b3JzOiBbXSB9LFxyXG4gICAgICB7IG5hbWU6ICdwb2ludF9vZl9zYWxlX2lkJywgZGVmYXVsdFZhbHVlOiAnJywgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdIH0sXHJcbiAgICAgIHsgbmFtZTogJ2ltYWdlX3VybCcsIGRlZmF1bHRWYWx1ZTogJycsIHZhbGlkYXRvcnM6IFtdIH0sXHJcbiAgICAgIHsgbmFtZTogJ2FsbG93X211bHRpcGxlX2l0ZW1zJywgZGVmYXVsdFZhbHVlOiBmYWxzZSwgdmFsaWRhdG9yczogW10gfSxcclxuICAgICAgeyBuYW1lOiAnYmFzZV9wcmljZScsIGRlZmF1bHRWYWx1ZTogaXRlbUJhc2VQcmljZSwgdmFsaWRhdG9yczogW10gfSxcclxuICAgIF07XHJcblxyXG4gICAgY29uc3QgbmV3SXRlbSA9IHRoaXMuZm9ybUZhY3RvcnkuY3JlYXRlRm9ybShpdGVtU3BlY0Zvcm1Db25maWcpO1xyXG4gICAgbmV3SXRlbS5nZXQoJ25hbWUnKT8uc2V0VmFsdWUoaXRlbU5hbWUpO1xyXG4gICAgbmV3SXRlbS5nZXQoJ2lzX2V4dGVybmFsJyk/LnNldFZhbHVlKGl0ZW1Jc0V4dGVybmFsID8/IGZhbHNlKTtcclxuICAgIG5ld0l0ZW0uZ2V0KCdwb2ludF9vZl9zYWxlX2lkJyk/LnNldFZhbHVlKHBvc0lkKTtcclxuICAgIG5ld0l0ZW0uZ2V0KCdpbWFnZV91cmwnKT8uc2V0VmFsdWUoaXRlbUltYWdlIHx8ICcnKTtcclxuICAgIG5ld0l0ZW0uZ2V0KCdhdmFpbGFiaWxpdHknKT8uc2V0VmFsdWUoYXZhaWxhYmlsaXR5IHx8IG51bGwpO1xyXG4gICAgbmV3SXRlbS5nZXQoJ2l0ZW1faWQnKT8uc2V0VmFsdWUoaXRlbUlkKTtcclxuICAgIGF2YWlsYWJpbGl0eSA/IG5ld0l0ZW0uZ2V0KCdhdmFpbGFiaWxpdHknKT8uZGlzYWJsZSgpIDogbmV3SXRlbS5nZXQoJ2F2YWlsYWJpbGl0eScpPy5lbmFibGUoKTtcclxuICAgIHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5wdXNoKG5ld0l0ZW0pO1xyXG4gIH1cclxuXHJcbiAgcHJldmVudE5lZ2F0aXZlKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBjb25zdCBpbnZhbGlkS2V5cyA9IFsnLScsICdlJ107XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG5cclxuICAgIGlmIChpbnZhbGlkS2V5cy5pbmNsdWRlcyhldmVudC5rZXkpIHx8XHJcbiAgICAgIChldmVudC5rZXkgPT09ICcwJyAmJiBpbnB1dC52YWx1ZS5sZW5ndGggPT09IDApKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbklucHV0KGV2ZW50OiBFdmVudCwgaXRlbUZvcm06IEZvcm1Hcm91cCkge1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGNvbnN0IG51bWJlciA9IGlucHV0LnZhbHVlLnJlcGxhY2UoL1xcRC9nLCAnJyk7XHJcbiAgICBjb25zdCBmb3JtYXR0ZWQgPSB0aGlzLmZvcm1hdE51bWJlcihudW1iZXIpO1xyXG4gICAgaXRlbUZvcm0uZ2V0KCdhbW91bnQnKT8uc2V0VmFsdWUoZm9ybWF0dGVkLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25DYW5jZWxBY3Rpb24oKSB7XHJcbiAgICB0aGlzLm9uQ2FuY2VsLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdE51bWJlcih2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiAnJztcclxuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCAnLicpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFsbFRpbWVzSGFzQ29zdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0uaW52YWxpZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRUb3RhbEV4dGVybmFsQmFzZVByaWNlKCk6IG51bWJlciB7XHJcbiAgICBsZXQgdG90YWwgPSAwO1xyXG5cclxuICAgIHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5jb250cm9scy5mb3JFYWNoKGl0ZW1Gb3JtID0+IHtcclxuICAgICAgY29uc3QgaXNFeHRlcm5hbCA9IGl0ZW1Gb3JtLmdldCgnaXNfZXh0ZXJuYWwnKT8udmFsdWU7XHJcblxyXG4gICAgICBpZiAoaXNFeHRlcm5hbCkge1xyXG4gICAgICAgIGNvbnN0IGJhc2VQcmljZSA9IGl0ZW1Gb3JtLmdldCgnYmFzZV9wcmljZScpPy52YWx1ZTtcclxuICAgICAgICBjb25zdCBhdmFpbGFiaWxpdHkgPSBpdGVtRm9ybS5nZXQoJ2F2YWlsYWJpbGl0eScpPy52YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKGJhc2VQcmljZSAmJiBhdmFpbGFiaWxpdHkpIHtcclxuICAgICAgICAgIHRvdGFsICs9IE51bWJlcihiYXNlUHJpY2UpICogTnVtYmVyKGF2YWlsYWJpbGl0eSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gdG90YWw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd0V4dGVybmFsQmFzZVByaWNlV2FybmluZygpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHRvdGFsRXh0ZXJuYWwgPSB0aGlzLmdldFRvdGFsRXh0ZXJuYWxCYXNlUHJpY2UoKTtcclxuXHJcbiAgICBjb25zdCBoYXNFeHRlcm5hbFByb2R1Y3RzID0gdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzLnNvbWUoXHJcbiAgICAgIGl0ZW1Gb3JtID0+IGl0ZW1Gb3JtLmdldCgnaXNfZXh0ZXJuYWwnKT8udmFsdWUgPT09IHRydWVcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIGhhc0V4dGVybmFsUHJvZHVjdHMgJiYgdG90YWxFeHRlcm5hbCA+IDAgJiYgdG90YWxFeHRlcm5hbCA8IDEyOTAwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhblN1Ym1pdCgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0uaW52YWxpZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICF0aGlzLnNob3dFeHRlcm5hbEJhc2VQcmljZVdhcm5pbmcoKTtcclxuICB9XHJcblxyXG4gIHRvdGFsUGFnZXMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLmNlaWwoXHJcbiAgICAgIHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5jb250cm9scy5maWx0ZXIoKGl0ZW1Gb3JtKSA9PlxyXG4gICAgICAgIGl0ZW1Gb3JtLmdldCgnbmFtZScpPy52YWx1ZS50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICkubGVuZ3RoIC8gdGhpcy5wYWdlU2l6ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVBhZ2UoZGlyZWN0aW9uOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IG5ld1BhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlICsgZGlyZWN0aW9uO1xyXG4gICAgaWYgKG5ld1BhZ2UgPiAwICYmIG5ld1BhZ2UgPD0gdGhpcy50b3RhbFBhZ2VzKCkpIHtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IG5ld1BhZ2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYXNJdGVtc0Fzc29jaWF0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25TdWJtaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jYW5TdWJtaXQoKSkge1xyXG4gICAgICB0aGlzLm9uQ29udGludWUuZW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvY2Vzc0l0ZW1TcGVjaWZpY2F0aW9ucygpOiB2b2lkIHtcclxuICAgIHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5jb250cm9scy5mb3JFYWNoKGl0ZW1Gb3JtID0+IHtcclxuICAgICAgaXRlbUZvcm0uZ2V0KCdvZmZlcl9pZCcpPy5zZXRWYWx1ZSh0aGlzLm9mZmVySWQpO1xyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0Nvc3RQb3B1cCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0uY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcclxuICAgICAgICBsZXQgaXRlbUFtb3VudCA9IGNvbnRyb2wuZ2V0KCdhbW91bnQnKT8udmFsdWU7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtQW1vdW50ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgaXRlbUFtb3VudCA9IGl0ZW1BbW91bnQucmVwbGFjZSgvXFwuL2csICcnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udHJvbC5nZXQoJ2Ftb3VudCcpPy5zZXRWYWx1ZShOdW1iZXIoaXRlbUFtb3VudCkpXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbXVsdGlwbGVJdGVtc1NwZWNzOiBDcmVhdGVXaXRoTXVsdGlwbGVJdGVtc1JlcXVlc3RbXSA9IFtdO1xyXG4gICAgY29uc3QgcmVndWxhckl0ZW1zU3BlY3M6IGFueVtdID0gW107XHJcblxyXG4gICAgdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzLmZvckVhY2goY29udHJvbCA9PiB7XHJcbiAgICAgIGNvbnN0IGFsbG93TXVsdGlwbGUgPSBjb250cm9sLmdldCgnYWxsb3dfbXVsdGlwbGVfaXRlbXMnKT8udmFsdWU7XHJcbiAgICAgIGNvbnRyb2wuZ2V0KCdhdmFpbGFiaWxpdHknKT8uZW5hYmxlKCk7XHJcbiAgICAgIGNvbnN0IGl0ZW1TcGVjID0gY29udHJvbC52YWx1ZTtcclxuXHJcbiAgICAgIGlmIChhbGxvd011bHRpcGxlKSB7XHJcbiAgICAgICAgY29uc3QgbXVsdGlwbGVJdGVtU3BlYzogQ3JlYXRlV2l0aE11bHRpcGxlSXRlbXNSZXF1ZXN0ID0ge1xyXG4gICAgICAgICAgY3VycmVuY3k6IGl0ZW1TcGVjLmN1cnJlbmN5LFxyXG4gICAgICAgICAgb2ZmZXJfaWQ6IGl0ZW1TcGVjLm9mZmVyX2lkLFxyXG4gICAgICAgICAgaXRlbV9pZDogaXRlbVNwZWMuaXRlbV9pZCxcclxuICAgICAgICAgIHBvaW50X29mX3NhbGVfaWQ6IGl0ZW1TcGVjLnBvaW50X29mX3NhbGVfaWQsXHJcbiAgICAgICAgICBhbW91bnQ6IGl0ZW1TcGVjLmFtb3VudCxcclxuICAgICAgICAgIGF2YWlsYWJpbGl0eTogaXRlbVNwZWMuYXZhaWxhYmlsaXR5LFxyXG4gICAgICAgICAgZXhwaXJlX2F0OiBpdGVtU3BlYy5leHBpcmVfYXQsXHJcbiAgICAgICAgICBpc19leHRlcm5hbDogaXRlbVNwZWMuaXNfZXh0ZXJuYWwsXHJcbiAgICAgICAgICBhbGxvd19tdWx0aXBsZV9pdGVtczogdHJ1ZSxcclxuICAgICAgICAgIGJhc2VfcHJpY2U6IGl0ZW1TcGVjLmJhc2VfcHJpY2VcclxuICAgICAgICB9O1xyXG4gICAgICAgIG11bHRpcGxlSXRlbXNTcGVjcy5wdXNoKG11bHRpcGxlSXRlbVNwZWMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlZ3VsYXJJdGVtc1NwZWNzLnB1c2goaXRlbVNwZWMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm9uSXRlbXNQcm9jZXNzZWQuZW1pdCh7XHJcbiAgICAgIG11bHRpcGxlSXRlbXM6IG11bHRpcGxlSXRlbXNTcGVjcyxcclxuICAgICAgcmVndWxhckl0ZW1zOiByZWd1bGFySXRlbXNTcGVjcyxcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvbkRhdGVQaWNrZWQoZGF0ZTogYW55LCBpdGVtRm9ybTogRm9ybUdyb3VwKSB7XHJcbiAgICBpdGVtRm9ybS5nZXQoJ2V4cGlyZV9hdCcpPy5zZXRWYWx1ZShkYXRlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVJdGVtKGl0ZW1JZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5jb250cm9scy5maW5kSW5kZXgoY29udHJvbCA9PlxyXG4gICAgICBjb250cm9sLmdldCgnaXRlbV9pZCcpPy52YWx1ZSA9PT0gaXRlbUlkXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLnJlbW92ZUF0KGluZGV4KTtcclxuICAgIH1cclxuICB9XHJcbn0iLCI8bGliLWt2LXBvcHVwICpuZ0lmPVwic2hvd0Nvc3RQb3B1cFwiIFt0aXRsZV09XCInU2V0IHByaWNpbmcgYW5kIGF2YWlsYWJpbGl0eSBmb3IgeW91ciBpdGVtcydcIiBbZGVzY3JpcHRpb25dPVwiJ0NvbmZpZ3VyZSB0aGUgY29zdCwgYXZhaWxhYmlsaXR5LCBhbmQgZXhwaXJhdGlvbiBkZXRhaWxzIGZvciBlYWNoIHNlbGVjdGVkIGl0ZW0gaW4geW91ciBvZmZlci4nXCIgW2lzQ3VzdG9tVGVtcGxhdGVdPVwidHJ1ZVwiIFthY3Rpb25UeXBlXT1cImFjdGlvblR5cGVFbnVtLkluZm9cIlxyXG4gICAgKG9uQWNjZXB0KT1cInNob3dDb3N0UG9wdXAgPSBmYWxzZVwiIChvbkNsb3NlKT1cInNob3dDb3N0UG9wdXAgPSBmYWxzZVwiPlxyXG5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYmFzZS1wcmljZS13YXJuaW5nXCIgKm5nSWY9XCJzaG93RXh0ZXJuYWxCYXNlUHJpY2VXYXJuaW5nKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+d2FybmluZzwvc3Bhbj5cclxuICAgICAgICA8c3Bhbj5FbCB0b3RhbCBkZSBsb3MgcHJvZHVjdG9zIGV4dGVybm9zIChQcmVjaW8gZXh0ZXJubyDDlyBkaXNwb25pYmlsaWRhZCkgZGViZSBzZXIgYWwgbWVub3MgJDEyLjkwMC4gVG90YWwgYWN0dWFsOiAke3sgZ2V0VG90YWxFeHRlcm5hbEJhc2VQcmljZSgpLnRvTG9jYWxlU3RyaW5nKCdlcy1DTycpIH19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIml0ZW1zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW1Gb3JtIG9mIGZpbHRlcmVkRGF0YUl0ZW1zOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cIml0ZW1Gb3JtLmdldCgnaW1hZ2VfdXJsJyk/LnZhbHVlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpdGVtRm9ybS5nZXQoJ2ltYWdlX3VybCcpPy52YWx1ZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiaXRlbUZvcm0uZ2V0KCduYW1lJyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW0taW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tZGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiaXRlbS1uYW1lXCI+e3sgaXRlbUZvcm0uZ2V0KCduYW1lJyk/LnZhbHVlIH19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXRlbS10eXBlXCIgKm5nSWY9XCJpdGVtRm9ybS5nZXQoJ2lzX2V4dGVybmFsJyk/LnZhbHVlXCI+RXh0ZXJuYWwgSXRlbTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJpdGVtRm9ybVwiIGNsYXNzPVwiaXRlbS1mb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+UHJpY2luZyAmIEF2YWlsYWJpbGl0eTwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFtb3VudC17e2l9fVwiPkNvc3QgKjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvc3QtaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cImFtb3VudC17e2l9fVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFtb3VudFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBjb3N0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQsIGl0ZW1Gb3JtKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJjdXJyZW5jeS1zZWxlY3RcIiBmb3JtQ29udHJvbE5hbWU9XCJjdXJyZW5jeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkNPUFwiPkNPUDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiaXRlbUZvcm0uZ2V0KCdhbW91bnQnKT8uaW52YWxpZCAmJiBpdGVtRm9ybS5nZXQoJ2Ftb3VudCcpPy50b3VjaGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvc3QgaXMgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYXZhaWxhYmlsaXR5LXt7aX19XCI+QXZhaWxhYmlsaXR5ICo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cImF2YWlsYWJpbGl0eS17e2l9fVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYXZhaWxhYmlsaXR5XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49XCIxXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkF2YWlsYWJsZSBxdWFudGl0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJwcmV2ZW50TmVnYXRpdmUoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cIml0ZW1Gb3JtLmdldCgnYXZhaWxhYmlsaXR5Jyk/LmludmFsaWQgJiYgaXRlbUZvcm0uZ2V0KCdhdmFpbGFiaWxpdHknKT8udG91Y2hlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdmFpbGFiaWxpdHkgaXMgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+TXVsdGlwbGUgSXRlbXMgU2V0dGluZ3M8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvZ2dsZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRvZ2dsZS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFsbG93X211bHRpcGxlX2l0ZW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWlucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b2dnbGUtc2xpZGVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9nZ2xlLXRleHRcIj5BbGxvdyBtdWx0aXBsZSBpdGVtcyBwZXIgdXNlcjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRvZ2dsZS1kZXNjcmlwdGlvblwiPldoZW4gZW5hYmxlZCwgdXNlcnMgY2FuIGJpZCBvbiBtdWx0aXBsZSBxdWFudGl0aWVzIG9mIHRoaXMgaXRlbTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tc2VjdGlvblwiICpuZ0lmPVwic2hvdWxkU2hvd0RhdGVwaWNrZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPkV4cGlyYXRpb248L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJleHBpcmVBdC17e2l9fVwiPkV4cGlyZXMgb248L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1rdi1kYXRlLXBpY2tlciBbaW5pdGlhbERhdGVdPVwiZGVmYXVsdERhdGVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dEZXRhaWxzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZVNlbGVjdGVkKT1cIm9uRGF0ZVBpY2tlZCgkZXZlbnQsIGl0ZW1Gb3JtKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saWIta3YtZGF0ZS1waWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0aW9uLWNvbnRhaW5lclwiICpuZ0lmPVwidG90YWxQYWdlcygpID4gMVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0aW9uLWluZm9cIj5cclxuICAgICAgICAgICAgPHNwYW4+U2hvd2luZyB7eyAoY3VycmVudFBhZ2UgLSAxKSAqIHBhZ2VTaXplICsgMSB9fSAtIHt7IE1hdGgubWluKGN1cnJlbnRQYWdlICogcGFnZVNpemUsIGl0ZW1zU3BlY2lmaWNhdGlvbkZvcm0ubGVuZ3RoKSB9fSBvZiB7eyBpdGVtc1NwZWNpZmljYXRpb25Gb3JtLmxlbmd0aCB9fSBpdGVtczwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1jb250cm9sc1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGFnaW5hdGlvbi1idG5cIiBcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlUGFnZSgtMSlcIiBcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IDFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gMVwiPlxyXG4gICAgICAgICAgICAgICAg4oaQIFByZXZpb3VzXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhZ2UtaW5kaWNhdG9yXCI+e3sgY3VycmVudFBhZ2UgfX0gLyB7eyB0b3RhbFBhZ2VzKCkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwYWdpbmF0aW9uLWJ0blwiIFxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VQYWdlKDEpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSB0b3RhbFBhZ2VzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gdG90YWxQYWdlcygpXCI+XHJcbiAgICAgICAgICAgICAgICBOZXh0IOKGklxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1mb290ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyLWluZm9cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtcy1jb3VudFwiPnt7IGl0ZW1zU3BlY2lmaWNhdGlvbkZvcm0ubGVuZ3RoIH19IGl0ZW0ocykgY29uZmlndXJlZDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyLWFjdGlvbnNcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b24tLWNhbmNlbFwiIChjbGljayk9XCJvbkNhbmNlbEFjdGlvbigpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnV0dG9uLS1wcmltYXJ5LW1pblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5TdWJtaXQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU3VibWl0KClcIj5cclxuICAgICAgICAgICAgICAgIENvbnRpbnVlXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbGliLWt2LXBvcHVwPiJdfQ==
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtaXRlbS1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdmlvL3NyYy9saWIvY29tcG9uZW50cy9rdi1pdGVtLWNhcmQva3YtaXRlbS1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdmlvL3NyYy9saWIvY29tcG9uZW50cy9rdi1pdGVtLWNhcmQva3YtaXRlbS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBYSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQStCL0MsTUFBTSxPQUFPLG1CQUFtQjtJQXFCOUIsWUFDbUIsV0FBK0I7UUFBL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBckJ6Qyx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQiwyQkFBc0IsR0FBeUIsSUFBSSxTQUFTLENBQVksRUFBRSxDQUFDLENBQUM7UUFFM0UsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDdEMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDcEMscUJBQWdCLEdBQUcsSUFBSSxZ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Q0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxNQUFjO1FBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQ3JFLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxLQUFLLE1BQU0sQ0FDekMsQ0FBQztRQUVGLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0M7SUFDSCxDQUFDOytHQTFOVSxtQkFBbUI7bUdBQW5CLG1CQUFtQiwrVUMxQ2hDLDB2T0E4SGUsdzhjRDdGWCxZQUFZLCtQQUNaLG1CQUFtQixzM0RBQ25CLGdCQUFnQixrTEFDaEIsbUJBQW1COzs0RkFNVixtQkFBbUI7a0JBYi9CLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixtQkFBbUI7cUJBRXBCO3VGQUtRLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEt2UG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9rdi1wb3B1cC9rdi1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvYWN0aW9uLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Zvcm0tZmllbGQuY29uZmlnJztcclxuaW1wb3J0IHsgRm9ybUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZmFjdG9yaWVzL2Zvcm0tZmFjdG9yeS5zZXJ2aWNlJztcclxuXHJcblxyXG5pbnRlcmZhY2UgQ3JlYXRlV2l0aE11bHRpcGxlSXRlbXNSZXF1ZXN0IHtcclxuICBjdXJyZW5jeTogc3RyaW5nO1xyXG4gIG9mZmVyX2lkOiBzdHJpbmc7XHJcbiAgaXRlbV9pZDogc3RyaW5nO1xyXG4gIHBvaW50X29mX3NhbGVfaWQ6IHN0cmluZztcclxuICBhbW91bnQ6IG51bWJlcjtcclxuICBhdmFpbGFiaWxpdHk6IG51bWJlcjtcclxuICBleHBpcmVfYXQ6IHN0cmluZztcclxuICBpc19leHRlcm5hbDogYm9vbGVhbjtcclxuICBhbGxvd19tdWx0aXBsZV9pdGVtczogYm9vbGVhbjtcclxuICBiYXNlX3ByaWNlOiBudW1iZXI7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWt2LWl0ZW0tY2FyZCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgS3ZQb3B1cENvbXBvbmVudCxcclxuICAgIERhdGVQaWNrZXJDb21wb25lbnQsXHJcblxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LWl0ZW0tY2FyZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2t2LWl0ZW0tY2FyZC5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdkl0ZW1DYXJkQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBzaG91bGRTaG93RGF0ZXBpY2tlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG9mZmVySWQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgQElucHV0KCkgc2hvd0Nvc3RQb3B1cDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGl0ZW1zU3BlY2lmaWNhdGlvbkZvcm06IEZvcm1BcnJheTxGb3JtR3JvdXA+ID0gbmV3IEZvcm1BcnJheTxGb3JtR3JvdXA+KFtdKTtcclxuXHJcbiAgQE91dHB1dCgpIG9uQ29udGludWUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBvbkl0ZW1zUHJvY2Vzc2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBtdWx0aXBsZUl0ZW1zOiBDcmVhdGVXaXRoTXVsdGlwbGVJdGVtc1JlcXVlc3RbXTtcclxuICAgIHJlZ3VsYXJJdGVtczogYW55W107XHJcbiAgfT4oKTtcclxuXHJcbiAgcHVibGljIGFjdGlvblR5cGVFbnVtID0gQWN0aW9uVHlwZTtcclxuICBwdWJsaWMgZGVmYXVsdERhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICBwYWdlU2l6ZTogbnVtYmVyID0gMjtcclxuICBjdXJyZW50UGFnZTogbnVtYmVyID0gMTtcclxuICBNYXRoID0gTWF0aDtcclxuICBzZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1GYWN0b3J5OiBGb3JtRmFjdG9yeVNlcnZpY2UsXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0gPSBuZXcgRm9ybUFycmF5PEZvcm1Hcm91cD4oW10pO1xyXG5cclxuICB9XHJcblxyXG4gIGdldCBmaWx0ZXJlZERhdGFJdGVtcygpIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0uY29udHJvbHNcclxuICAgICAgLmZpbHRlcigoaXRlbUZvcm0pID0+XHJcbiAgICAgICAgaXRlbUZvcm0uZ2V0KCduYW1lJyk/LnZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgIClcclxuICAgICAgLnNsaWNlKCh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLnBhZ2VTaXplLCB0aGlzLmN1cnJlbnRQYWdlICogdGhpcy5wYWdlU2l6ZSk7XHJcbiAgfVxyXG5cclxuICBhZGRJdGVtKGluZGV4OiBudW1iZXIsIGl0ZW1OYW1lPzogc3RyaW5nLCBpdGVtSXNFeHRlcm5hbD86IGJvb2xlYW4sIGl0ZW1JbWFnZT86IHN0cmluZywgYXZhaWxhYmlsaXR5PzogbnVtYmVyLCBpdGVtSWQ/OiBzdHJpbmcsIHBvc0lkPzogc3RyaW5nLCBpdGVtQmFzZVByaWNlPzogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBpdGVtU3BlY0Zvcm1Db25maWc6IEZvcm1GaWVsZENvbmZpZ1tdID0gW1xyXG4gICAgICB7IG5hbWU6ICdhbW91bnQnLCBkZWZhdWx0VmFsdWU6IDAsIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9LFxyXG4gICAgICB7IG5hbWU6ICdhdmFpbGFiaWxpdHknLCBkZWZhdWx0VmFsdWU6IDAsIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9LFxyXG4gICAgICB7IG5hbWU6ICdjdXJyZW5jeScsIGRlZmF1bHRWYWx1ZTogJ0NPUCcsIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9LFxyXG4gICAgICB7IG5hbWU6ICdleHBpcmVfYXQnLCBkZWZhdWx0VmFsdWU6IHRoaXMuZGVmYXVsdERhdGUsIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9LFxyXG4gICAgICB7IG5hbWU6ICdvZmZlcl9pZCcsIGRlZmF1bHRWYWx1ZTogJycgfSxcclxuICAgICAgeyBuYW1lOiAnaXRlbV9pZCcsIGRlZmF1bHRWYWx1ZTogJycsIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9LFxyXG4gICAgICB7IG5hbWU6ICduYW1lJywgZGVmYXVsdFZhbHVlOiAnJywgdmFsaWRhdG9yczogW10gfSxcclxuICAgICAgeyBuYW1lOiAnaXNfZXh0ZXJuYWwnLCBkZWZhdWx0VmFsdWU6IGZhbHNlLCB2YWxpZGF0b3JzOiBbXSB9LFxyXG4gICAgICB7IG5hbWU6ICdwb2ludF9vZl9zYWxlX2lkJywgZGVmYXVsdFZhbHVlOiAnJywgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdIH0sXHJcbiAgICAgIHsgbmFtZTogJ2ltYWdlX3VybCcsIGRlZmF1bHRWYWx1ZTogJycsIHZhbGlkYXRvcnM6IFtdIH0sXHJcbiAgICAgIHsgbmFtZTogJ2FsbG93X211bHRpcGxlX2l0ZW1zJywgZGVmYXVsdFZhbHVlOiBmYWxzZSwgdmFsaWRhdG9yczogW10gfSxcclxuICAgICAgeyBuYW1lOiAnYmFzZV9wcmljZScsIGRlZmF1bHRWYWx1ZTogaXRlbUJhc2VQcmljZSwgdmFsaWRhdG9yczogW10gfSxcclxuICAgIF07XHJcblxyXG4gICAgY29uc3QgbmV3SXRlbSA9IHRoaXMuZm9ybUZhY3RvcnkuY3JlYXRlRm9ybShpdGVtU3BlY0Zvcm1Db25maWcpO1xyXG4gICAgbmV3SXRlbS5nZXQoJ25hbWUnKT8uc2V0VmFsdWUoaXRlbU5hbWUpO1xyXG4gICAgbmV3SXRlbS5nZXQoJ2lzX2V4dGVybmFsJyk/LnNldFZhbHVlKGl0ZW1Jc0V4dGVybmFsID8/IGZhbHNlKTtcclxuICAgIG5ld0l0ZW0uZ2V0KCdwb2ludF9vZl9zYWxlX2lkJyk/LnNldFZhbHVlKHBvc0lkKTtcclxuICAgIG5ld0l0ZW0uZ2V0KCdpbWFnZV91cmwnKT8uc2V0VmFsdWUoaXRlbUltYWdlIHx8ICcnKTtcclxuICAgIG5ld0l0ZW0uZ2V0KCdhdmFpbGFiaWxpdHknKT8uc2V0VmFsdWUoYXZhaWxhYmlsaXR5IHx8IG51bGwpO1xyXG4gICAgbmV3SXRlbS5nZXQoJ2l0ZW1faWQnKT8uc2V0VmFsdWUoaXRlbUlkKTtcclxuICAgIGF2YWlsYWJpbGl0eSA/IG5ld0l0ZW0uZ2V0KCdhdmFpbGFiaWxpdHknKT8uZGlzYWJsZSgpIDogbmV3SXRlbS5nZXQoJ2F2YWlsYWJpbGl0eScpPy5lbmFibGUoKTtcclxuICAgIHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5wdXNoKG5ld0l0ZW0pO1xyXG4gIH1cclxuXHJcbiAgcHJldmVudE5lZ2F0aXZlKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBjb25zdCBpbnZhbGlkS2V5cyA9IFsnLScsICdlJ107XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG5cclxuICAgIGlmIChpbnZhbGlkS2V5cy5pbmNsdWRlcyhldmVudC5rZXkpIHx8XHJcbiAgICAgIChldmVudC5rZXkgPT09ICcwJyAmJiBpbnB1dC52YWx1ZS5sZW5ndGggPT09IDApKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbklucHV0KGV2ZW50OiBFdmVudCwgaXRlbUZvcm06IEZvcm1Hcm91cCkge1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGNvbnN0IG51bWJlciA9IGlucHV0LnZhbHVlLnJlcGxhY2UoL1xcRC9nLCAnJyk7XHJcbiAgICBjb25zdCBmb3JtYXR0ZWQgPSB0aGlzLmZvcm1hdE51bWJlcihudW1iZXIpO1xyXG4gICAgaXRlbUZvcm0uZ2V0KCdhbW91bnQnKT8uc2V0VmFsdWUoZm9ybWF0dGVkLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25DYW5jZWxBY3Rpb24oKSB7XHJcbiAgICB0aGlzLm9uQ2FuY2VsLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdE51bWJlcih2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiAnJztcclxuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCAnLicpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFsbFRpbWVzSGFzQ29zdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0uaW52YWxpZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRUb3RhbEV4dGVybmFsQmFzZVByaWNlKCk6IG51bWJlciB7XHJcbiAgICBsZXQgdG90YWwgPSAwO1xyXG5cclxuICAgIHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5jb250cm9scy5mb3JFYWNoKGl0ZW1Gb3JtID0+IHtcclxuICAgICAgY29uc3QgaXNFeHRlcm5hbCA9IGl0ZW1Gb3JtLmdldCgnaXNfZXh0ZXJuYWwnKT8udmFsdWU7XHJcblxyXG4gICAgICBpZiAoaXNFeHRlcm5hbCkge1xyXG4gICAgICAgIGNvbnN0IGJhc2VQcmljZSA9IGl0ZW1Gb3JtLmdldCgnYmFzZV9wcmljZScpPy52YWx1ZTtcclxuICAgICAgICBjb25zdCBhdmFpbGFiaWxpdHkgPSBpdGVtRm9ybS5nZXQoJ2F2YWlsYWJpbGl0eScpPy52YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKGJhc2VQcmljZSAmJiBhdmFpbGFiaWxpdHkpIHtcclxuICAgICAgICAgIHRvdGFsICs9IE51bWJlcihiYXNlUHJpY2UpICogTnVtYmVyKGF2YWlsYWJpbGl0eSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gdG90YWw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd0V4dGVybmFsQmFzZVByaWNlV2FybmluZygpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHRvdGFsRXh0ZXJuYWwgPSB0aGlzLmdldFRvdGFsRXh0ZXJuYWxCYXNlUHJpY2UoKTtcclxuXHJcbiAgICBjb25zdCBoYXNFeHRlcm5hbFByb2R1Y3RzID0gdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzLnNvbWUoXHJcbiAgICAgIGl0ZW1Gb3JtID0+IGl0ZW1Gb3JtLmdldCgnaXNfZXh0ZXJuYWwnKT8udmFsdWUgPT09IHRydWVcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIGhhc0V4dGVybmFsUHJvZHVjdHMgJiYgdG90YWxFeHRlcm5hbCA+IDAgJiYgdG90YWxFeHRlcm5hbCA8IDEyOTAwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhblN1Ym1pdCgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0uaW52YWxpZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICF0aGlzLnNob3dFeHRlcm5hbEJhc2VQcmljZVdhcm5pbmcoKTtcclxuICB9XHJcblxyXG4gIHRvdGFsUGFnZXMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLmNlaWwoXHJcbiAgICAgIHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5jb250cm9scy5maWx0ZXIoKGl0ZW1Gb3JtKSA9PlxyXG4gICAgICAgIGl0ZW1Gb3JtLmdldCgnbmFtZScpPy52YWx1ZS50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICkubGVuZ3RoIC8gdGhpcy5wYWdlU2l6ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVBhZ2UoZGlyZWN0aW9uOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IG5ld1BhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlICsgZGlyZWN0aW9uO1xyXG4gICAgaWYgKG5ld1BhZ2UgPiAwICYmIG5ld1BhZ2UgPD0gdGhpcy50b3RhbFBhZ2VzKCkpIHtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IG5ld1BhZ2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYXNJdGVtc0Fzc29jaWF0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25TdWJtaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jYW5TdWJtaXQoKSkge1xyXG4gICAgICB0aGlzLm9uQ29udGludWUuZW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvY2Vzc0l0ZW1TcGVjaWZpY2F0aW9ucygpOiB2b2lkIHtcclxuICAgIHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5jb250cm9scy5mb3JFYWNoKGl0ZW1Gb3JtID0+IHtcclxuICAgICAgaXRlbUZvcm0uZ2V0KCdvZmZlcl9pZCcpPy5zZXRWYWx1ZSh0aGlzLm9mZmVySWQpO1xyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0Nvc3RQb3B1cCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0uY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcclxuICAgICAgICBsZXQgaXRlbUFtb3VudCA9IGNvbnRyb2wuZ2V0KCdhbW91bnQnKT8udmFsdWU7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtQW1vdW50ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgaXRlbUFtb3VudCA9IGl0ZW1BbW91bnQucmVwbGFjZSgvXFwuL2csICcnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udHJvbC5nZXQoJ2Ftb3VudCcpPy5zZXRWYWx1ZShOdW1iZXIoaXRlbUFtb3VudCkpXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbXVsdGlwbGVJdGVtc1NwZWNzOiBDcmVhdGVXaXRoTXVsdGlwbGVJdGVtc1JlcXVlc3RbXSA9IFtdO1xyXG4gICAgY29uc3QgcmVndWxhckl0ZW1zU3BlY3M6IGFueVtdID0gW107XHJcblxyXG4gICAgdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzLmZvckVhY2goY29udHJvbCA9PiB7XHJcbiAgICAgIGNvbnN0IGFsbG93TXVsdGlwbGUgPSBjb250cm9sLmdldCgnYWxsb3dfbXVsdGlwbGVfaXRlbXMnKT8udmFsdWU7XHJcbiAgICAgIGNvbnRyb2wuZ2V0KCdhdmFpbGFiaWxpdHknKT8uZW5hYmxlKCk7XHJcbiAgICAgIGNvbnN0IGl0ZW1TcGVjID0gY29udHJvbC52YWx1ZTtcclxuXHJcbiAgICAgIGlmIChhbGxvd011bHRpcGxlKSB7XHJcbiAgICAgICAgY29uc3QgbXVsdGlwbGVJdGVtU3BlYzogQ3JlYXRlV2l0aE11bHRpcGxlSXRlbXNSZXF1ZXN0ID0ge1xyXG4gICAgICAgICAgY3VycmVuY3k6IGl0ZW1TcGVjLmN1cnJlbmN5LFxyXG4gICAgICAgICAgb2ZmZXJfaWQ6IGl0ZW1TcGVjLm9mZmVyX2lkLFxyXG4gICAgICAgICAgaXRlbV9pZDogaXRlbVNwZWMuaXRlbV9pZCxcclxuICAgICAgICAgIHBvaW50X29mX3NhbGVfaWQ6IGl0ZW1TcGVjLnBvaW50X29mX3NhbGVfaWQsXHJcbiAgICAgICAgICBhbW91bnQ6IGl0ZW1TcGVjLmFtb3VudCxcclxuICAgICAgICAgIGF2YWlsYWJpbGl0eTogaXRlbVNwZWMuYXZhaWxhYmlsaXR5LFxyXG4gICAgICAgICAgZXhwaXJlX2F0OiBpdGVtU3BlYy5leHBpcmVfYXQsXHJcbiAgICAgICAgICBpc19leHRlcm5hbDogaXRlbVNwZWMuaXNfZXh0ZXJuYWwsXHJcbiAgICAgICAgICBhbGxvd19tdWx0aXBsZV9pdGVtczogdHJ1ZSxcclxuICAgICAgICAgIGJhc2VfcHJpY2U6IGl0ZW1TcGVjLmJhc2VfcHJpY2VcclxuICAgICAgICB9O1xyXG4gICAgICAgIG11bHRpcGxlSXRlbXNTcGVjcy5wdXNoKG11bHRpcGxlSXRlbVNwZWMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlZ3VsYXJJdGVtc1NwZWNzLnB1c2goaXRlbVNwZWMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm9uSXRlbXNQcm9jZXNzZWQuZW1pdCh7XHJcbiAgICAgIG11bHRpcGxlSXRlbXM6IG11bHRpcGxlSXRlbXNTcGVjcyxcclxuICAgICAgcmVndWxhckl0ZW1zOiByZWd1bGFySXRlbXNTcGVjcyxcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvbkRhdGVQaWNrZWQoZGF0ZTogYW55LCBpdGVtRm9ybTogRm9ybUdyb3VwKSB7XHJcbiAgICBpdGVtRm9ybS5nZXQoJ2V4cGlyZV9hdCcpPy5zZXRWYWx1ZShkYXRlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVJdGVtKGl0ZW1JZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5jb250cm9scy5maW5kSW5kZXgoY29udHJvbCA9PlxyXG4gICAgICBjb250cm9sLmdldCgnaXRlbV9pZCcpPy52YWx1ZSA9PT0gaXRlbUlkXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLnJlbW92ZUF0KGluZGV4KTtcclxuICAgIH1cclxuICB9XHJcbn0iLCI8bGliLWt2LXBvcHVwICpuZ0lmPVwic2hvd0Nvc3RQb3B1cFwiIFt0aXRsZV09XCInU2V0IHByaWNpbmcgYW5kIGF2YWlsYWJpbGl0eSBmb3IgeW91ciBpdGVtcydcIiBbZGVzY3JpcHRpb25dPVwiJ0NvbmZpZ3VyZSB0aGUgY29zdCwgYXZhaWxhYmlsaXR5LCBhbmQgZXhwaXJhdGlvbiBkZXRhaWxzIGZvciBlYWNoIHNlbGVjdGVkIGl0ZW0gaW4geW91ciBvZmZlci4nXCIgW2lzQ3VzdG9tVGVtcGxhdGVdPVwidHJ1ZVwiIFthY3Rpb25UeXBlXT1cImFjdGlvblR5cGVFbnVtLkluZm9cIlxyXG4gICAgKG9uQWNjZXB0KT1cInNob3dDb3N0UG9wdXAgPSBmYWxzZVwiIChvbkNsb3NlKT1cInNob3dDb3N0UG9wdXAgPSBmYWxzZVwiPlxyXG5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYmFzZS1wcmljZS13YXJuaW5nXCIgKm5nSWY9XCJzaG93RXh0ZXJuYWxCYXNlUHJpY2VXYXJuaW5nKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+d2FybmluZzwvc3Bhbj5cclxuICAgICAgICA8c3Bhbj5FbCB0b3RhbCBkZSBsb3MgcHJvZHVjdG9zIGV4dGVybm9zIChQcmVjaW8gZXh0ZXJubyDDlyBkaXNwb25pYmlsaWRhZCkgZGViZSBzZXIgYWwgbWVub3MgJDEyLjkwMC4gVG90YWwgYWN0dWFsOiAke3sgZ2V0VG90YWxFeHRlcm5hbEJhc2VQcmljZSgpLnRvTG9jYWxlU3RyaW5nKCdlcy1DTycpIH19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIml0ZW1zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW1Gb3JtIG9mIGZpbHRlcmVkRGF0YUl0ZW1zOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cIml0ZW1Gb3JtLmdldCgnaW1hZ2VfdXJsJyk/LnZhbHVlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpdGVtRm9ybS5nZXQoJ2ltYWdlX3VybCcpPy52YWx1ZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiaXRlbUZvcm0uZ2V0KCduYW1lJyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW0taW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tZGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiaXRlbS1uYW1lXCI+e3sgaXRlbUZvcm0uZ2V0KCduYW1lJyk/LnZhbHVlIH19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXRlbS10eXBlXCIgKm5nSWY9XCJpdGVtRm9ybS5nZXQoJ2lzX2V4dGVybmFsJyk/LnZhbHVlXCI+RXh0ZXJuYWwgSXRlbTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJpdGVtRm9ybVwiIGNsYXNzPVwiaXRlbS1mb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+UHJpY2luZyAmIEF2YWlsYWJpbGl0eTwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFtb3VudC17e2l9fVwiPkNvc3QgKjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvc3QtaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cImFtb3VudC17e2l9fVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFtb3VudFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBjb3N0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQsIGl0ZW1Gb3JtKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJjdXJyZW5jeS1zZWxlY3RcIiBmb3JtQ29udHJvbE5hbWU9XCJjdXJyZW5jeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkNPUFwiPkNPUDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiaXRlbUZvcm0uZ2V0KCdhbW91bnQnKT8uaW52YWxpZCAmJiBpdGVtRm9ybS5nZXQoJ2Ftb3VudCcpPy50b3VjaGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvc3QgaXMgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYXZhaWxhYmlsaXR5LXt7aX19XCI+QXZhaWxhYmlsaXR5ICo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cImF2YWlsYWJpbGl0eS17e2l9fVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYXZhaWxhYmlsaXR5XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49XCIxXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkF2YWlsYWJsZSBxdWFudGl0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJwcmV2ZW50TmVnYXRpdmUoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cIml0ZW1Gb3JtLmdldCgnYXZhaWxhYmlsaXR5Jyk/LmludmFsaWQgJiYgaXRlbUZvcm0uZ2V0KCdhdmFpbGFiaWxpdHknKT8udG91Y2hlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdmFpbGFiaWxpdHkgaXMgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+TXVsdGlwbGUgSXRlbXMgU2V0dGluZ3M8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvZ2dsZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRvZ2dsZS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFsbG93X211bHRpcGxlX2l0ZW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWlucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b2dnbGUtc2xpZGVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9nZ2xlLXRleHRcIj5BbGxvdyBtdWx0aXBsZSBpdGVtcyBwZXIgdXNlcjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRvZ2dsZS1kZXNjcmlwdGlvblwiPldoZW4gZW5hYmxlZCwgdXNlcnMgY2FuIGJpZCBvbiBtdWx0aXBsZSBxdWFudGl0aWVzIG9mIHRoaXMgaXRlbTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tc2VjdGlvblwiICpuZ0lmPVwic2hvdWxkU2hvd0RhdGVwaWNrZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPkV4cGlyYXRpb248L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJleHBpcmVBdC17e2l9fVwiPkV4cGlyZXMgb248L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1rdi1kYXRlLXBpY2tlciBbaW5pdGlhbERhdGVdPVwiZGVmYXVsdERhdGVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dEZXRhaWxzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZVNlbGVjdGVkKT1cIm9uRGF0ZVBpY2tlZCgkZXZlbnQsIGl0ZW1Gb3JtKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saWIta3YtZGF0ZS1waWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0aW9uLWNvbnRhaW5lclwiICpuZ0lmPVwidG90YWxQYWdlcygpID4gMVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0aW9uLWluZm9cIj5cclxuICAgICAgICAgICAgPHNwYW4+U2hvd2luZyB7eyAoY3VycmVudFBhZ2UgLSAxKSAqIHBhZ2VTaXplICsgMSB9fSAtIHt7IE1hdGgubWluKGN1cnJlbnRQYWdlICogcGFnZVNpemUsIGl0ZW1zU3BlY2lmaWNhdGlvbkZvcm0ubGVuZ3RoKSB9fSBvZiB7eyBpdGVtc1NwZWNpZmljYXRpb25Gb3JtLmxlbmd0aCB9fSBpdGVtczwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1jb250cm9sc1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGFnaW5hdGlvbi1idG5cIiBcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlUGFnZSgtMSlcIiBcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IDFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gMVwiPlxyXG4gICAgICAgICAgICAgICAg4oaQIFByZXZpb3VzXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhZ2UtaW5kaWNhdG9yXCI+e3sgY3VycmVudFBhZ2UgfX0gLyB7eyB0b3RhbFBhZ2VzKCkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwYWdpbmF0aW9uLWJ0blwiIFxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VQYWdlKDEpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSB0b3RhbFBhZ2VzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gdG90YWxQYWdlcygpXCI+XHJcbiAgICAgICAgICAgICAgICBOZXh0IOKGklxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1mb290ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyLWluZm9cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtcy1jb3VudFwiPnt7IGl0ZW1zU3BlY2lmaWNhdGlvbkZvcm0ubGVuZ3RoIH19IGl0ZW0ocykgY29uZmlndXJlZDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyLWFjdGlvbnNcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b24tLWNhbmNlbFwiIChjbGljayk9XCJvbkNhbmNlbEFjdGlvbigpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnV0dG9uLS1wcmltYXJ5LW1pblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5TdWJtaXQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU3VibWl0KClcIj5cclxuICAgICAgICAgICAgICAgIENvbnRpbnVlXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbGliLWt2LXBvcHVwPiJdfQ==