kivio 1.6.1 → 1.6.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.
@@ -16,6 +16,7 @@ export class KvItemCardComponent {
16
16
  this.showCostPopup = false;
17
17
  this.itemsSpecificationForm = new FormArray([]);
18
18
  this.onContinue = new EventEmitter();
19
+ this.onCancel = new EventEmitter();
19
20
  this.onItemsProcessed = new EventEmitter();
20
21
  this.actionTypeEnum = ActionType;
21
22
  this.defaultDate = new Date();
@@ -32,7 +33,7 @@ export class KvItemCardComponent {
32
33
  .filter((itemForm) => itemForm.get('name')?.value.toLowerCase().includes(this.searchText.toLowerCase()))
33
34
  .slice((this.currentPage - 1) * this.pageSize, this.currentPage * this.pageSize);
34
35
  }
35
- addItem(index, itemName, itemIsExternal, itemImage, availability, itemId, posId) {
36
+ addItem(index, itemName, itemIsExternal, itemImage, availability, itemId, posId, itemBasePrice) {
36
37
  const itemSpecFormConfig = [
37
38
  { name: 'amount', defaultValue: 0, validators: [Validators.required] },
38
39
  { name: 'availability', defaultValue: 0, validators: [Validators.required] },
@@ -45,6 +46,7 @@ export class KvItemCardComponent {
45
46
  { name: 'point_of_sale_id', defaultValue: '', validators: [Validators.required] },
46
47
  { name: 'image_url', defaultValue: '', validators: [] },
47
48
  { name: 'allow_multiple_items', defaultValue: false, validators: [] },
49
+ { name: 'base_price', defaultValue: itemBasePrice, validators: [] },
48
50
  ];
49
51
  const newItem = this.formFactory.createForm(itemSpecFormConfig);
50
52
  newItem.get('name')?.setValue(itemName);
@@ -70,6 +72,10 @@ export class KvItemCardComponent {
70
72
  const formatted = this.formatNumber(number);
71
73
  itemForm.get('amount')?.setValue(formatted, { emitEvent: false });
72
74
  }
75
+ onCancelAction() {
76
+ this.onCancel.emit();
77
+ this.itemsSpecificationForm.clear();
78
+ }
73
79
  formatNumber(value) {
74
80
  if (!value)
75
81
  return '';
@@ -78,6 +84,31 @@ export class KvItemCardComponent {
78
84
  allTimesHasCost() {
79
85
  return this.itemsSpecificationForm.invalid;
80
86
  }
87
+ getTotalExternalBasePrice() {
88
+ let total = 0;
89
+ this.itemsSpecificationForm.controls.forEach(itemForm => {
90
+ const isExternal = itemForm.get('is_external')?.value;
91
+ if (isExternal) {
92
+ const basePrice = itemForm.get('base_price')?.value;
93
+ const availability = itemForm.get('availability')?.value;
94
+ if (basePrice && availability) {
95
+ total += Number(basePrice) * Number(availability);
96
+ }
97
+ }
98
+ });
99
+ return total;
100
+ }
101
+ showExternalBasePriceWarning() {
102
+ const totalExternal = this.getTotalExternalBasePrice();
103
+ const hasExternalProducts = this.itemsSpecificationForm.controls.some(itemForm => itemForm.get('is_external')?.value === true);
104
+ return hasExternalProducts && totalExternal > 0 && totalExternal < 12900;
105
+ }
106
+ canSubmit() {
107
+ if (this.itemsSpecificationForm.invalid) {
108
+ return false;
109
+ }
110
+ return !this.showExternalBasePriceWarning();
111
+ }
81
112
  totalPages() {
82
113
  return Math.ceil(this.itemsSpecificationForm.controls.filter((itemForm) => itemForm.get('name')?.value.toLowerCase()).length / this.pageSize);
83
114
  }
@@ -91,7 +122,9 @@ export class KvItemCardComponent {
91
122
  return this.itemsSpecificationForm.length > 0;
92
123
  }
93
124
  onSubmit() {
94
- this.onContinue.emit();
125
+ if (this.canSubmit()) {
126
+ this.onContinue.emit();
127
+ }
95
128
  }
96
129
  processItemSpecifications() {
97
130
  this.itemsSpecificationForm.controls.forEach(itemForm => {
@@ -123,7 +156,8 @@ export class KvItemCardComponent {
123
156
  availability: itemSpec.availability,
124
157
  expire_at: itemSpec.expire_at,
125
158
  is_external: itemSpec.is_external,
126
- allow_multiple_items: true
159
+ allow_multiple_items: true,
160
+ base_price: itemSpec.base_price
127
161
  };
128
162
  multipleItemsSpecs.push(multipleItemSpec);
129
163
  }
@@ -146,7 +180,7 @@ export class KvItemCardComponent {
146
180
  }
147
181
  }
148
182
  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 }); }
149
- 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", 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=\"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)=\"showCostPopup = false; itemsSpecificationForm.clear()\">Cancel</button>\r\n <button type=\"submit\" class=\"button--primary-min\" \r\n [disabled]=\"allTimesHasCost()\"\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}.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;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:100%;max-height:80vh;padding:15px;border-radius:6px;margin:0 auto}}@media (max-width: 480px){.popup-container{width:100%;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}.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}\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
+ 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}.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;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:100%;max-height:80vh;padding:15px;border-radius:6px;margin:0 auto}}@media (max-width: 480px){.popup-container{width:100%;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}.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"] }] }); }
150
184
  }
151
185
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KvItemCardComponent, decorators: [{
152
186
  type: Component,
@@ -155,7 +189,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
155
189
  ReactiveFormsModule,
156
190
  KvPopupComponent,
157
191
  DatePickerComponent,
158
- ], 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=\"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)=\"showCostPopup = false; itemsSpecificationForm.clear()\">Cancel</button>\r\n <button type=\"submit\" class=\"button--primary-min\" \r\n [disabled]=\"allTimesHasCost()\"\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}.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;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:100%;max-height:80vh;padding:15px;border-radius:6px;margin:0 auto}}@media (max-width: 480px){.popup-container{width:100%;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}.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}\n"] }]
192
+ ], 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}.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;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:100%;max-height:80vh;padding:15px;border-radius:6px;margin:0 auto}}@media (max-width: 480px){.popup-container{width:100%;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}.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"] }]
159
193
  }], ctorParameters: () => [{ type: i1.FormFactoryService }], propDecorators: { shouldShowDatepicker: [{
160
194
  type: Input
161
195
  }], offerId: [{
@@ -166,7 +200,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
166
200
  type: Input
167
201
  }], onContinue: [{
168
202
  type: Output
203
+ }], onCancel: [{
204
+ type: Output
169
205
  }], onItemsProcessed: [{
170
206
  type: Output
171
207
  }] } });
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtaXRlbS1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdmlvL3NyYy9saWIvY29tcG9uZW50cy9rdi1pdGVtLWNhcmQva3YtaXRlbS1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdmlvL3NyYy9saWIvY29tcG9uZW50cy9rdi1pdGVtLWNhcmQva3YtaXRlbS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBYSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQThCL0MsTUFBTSxPQUFPLG1CQUFtQjtJQXNCOUIsWUFDbUIsV0FBK0I7UUFBL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBdEJ6Qyx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQiwyQkFBc0IsR0FBeUIsSUFBSSxTQUFTLENBQVksRUFBRSxDQUFDLENBQUM7UUFFM0UsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDdEMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBR3pDLENBQUM7UUFJRSxtQkFBYyxHQUFHLFVBQVUs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LEVBQUU7WUFDaEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QztJQUNILENBQUM7K0dBL0tVLG1CQUFtQjttR0FBbkIsbUJBQW1CLHlUQ3pDaEMsaThOQXlIZSx5NmJEekZYLFlBQVksK1BBQ1osbUJBQW1CLHMzREFDbkIsZ0JBQWdCLGtMQUNoQixtQkFBbUI7OzRGQU1WLG1CQUFtQjtrQkFiL0IsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjtxQkFFcEI7dUZBS1Esb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEt2UG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9rdi1wb3B1cC9rdi1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvYWN0aW9uLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Zvcm0tZmllbGQuY29uZmlnJztcclxuaW1wb3J0IHsgRm9ybUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZmFjdG9yaWVzL2Zvcm0tZmFjdG9yeS5zZXJ2aWNlJztcclxuXHJcblxyXG5pbnRlcmZhY2UgQ3JlYXRlV2l0aE11bHRpcGxlSXRlbXNSZXF1ZXN0IHtcclxuICAgIGN1cnJlbmN5OiBzdHJpbmc7XHJcbiAgICBvZmZlcl9pZDogc3RyaW5nO1xyXG4gICAgaXRlbV9pZDogc3RyaW5nO1xyXG4gICAgcG9pbnRfb2Zfc2FsZV9pZDogc3RyaW5nO1xyXG4gICAgYW1vdW50OiBudW1iZXI7XHJcbiAgICBhdmFpbGFiaWxpdHk6IG51bWJlcjtcclxuICAgIGV4cGlyZV9hdDogc3RyaW5nO1xyXG4gICAgaXNfZXh0ZXJuYWw6IGJvb2xlYW47XHJcbiAgICBhbGxvd19tdWx0aXBsZV9pdGVtczogYm9vbGVhbjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWIta3YtaXRlbS1jYXJkJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBLdlBvcHVwQ29tcG9uZW50LFxyXG4gICAgRGF0ZVBpY2tlckNvbXBvbmVudCwgXHJcblxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LWl0ZW0tY2FyZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2t2LWl0ZW0tY2FyZC5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdkl0ZW1DYXJkQ29tcG9uZW50e1xyXG4gIEBJbnB1dCgpIHNob3VsZFNob3dEYXRlcGlja2VyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgb2ZmZXJJZDogc3RyaW5nID0gXCJcIjtcclxuICBASW5wdXQoKSBzaG93Q29zdFBvcHVwOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXRlbXNTcGVjaWZpY2F0aW9uRm9ybTogRm9ybUFycmF5PEZvcm1Hcm91cD4gPSBuZXcgRm9ybUFycmF5PEZvcm1Hcm91cD4oW10pO1xyXG5cclxuICBAT3V0cHV0KCkgb25Db250aW51ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgb25JdGVtc1Byb2Nlc3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgbXVsdGlwbGVJdGVtczogQ3JlYXRlV2l0aE11bHRpcGxlSXRlbXNSZXF1ZXN0W107XHJcbiAgICByZWd1bGFySXRlbXM6IGFueVtdO1xyXG4gIH0+KCk7XHJcblxyXG4gIFxyXG5cclxuICBwdWJsaWMgYWN0aW9uVHlwZUVudW0gPSBBY3Rpb25UeXBlO1xyXG4gIHB1YmxpYyBkZWZhdWx0RGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gIHBhZ2VTaXplOiBudW1iZXIgPSAyO1xyXG4gIGN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xyXG4gIE1hdGggPSBNYXRoO1xyXG4gIHNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUZhY3Rvcnk6IEZvcm1GYWN0b3J5U2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtID0gbmV3IEZvcm1BcnJheTxGb3JtR3JvdXA+KFtdKTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXQgZmlsdGVyZWREYXRhSXRlbXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzXHJcbiAgICAgIC5maWx0ZXIoKGl0ZW1Gb3JtKSA9PlxyXG4gICAgICAgIGl0ZW1Gb3JtLmdldCgnbmFtZScpPy52YWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICApXHJcbiAgICAgIC5zbGljZSgodGhpcy5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5wYWdlU2l6ZSwgdGhpcy5jdXJyZW50UGFnZSAqIHRoaXMucGFnZVNpemUpO1xyXG4gIH1cclxuXHJcbiAgICBhZGRJdGVtKGluZGV4OiBudW1iZXIsIGl0ZW1OYW1lPzogc3RyaW5nLCBpdGVtSXNFeHRlcm5hbD86IGJvb2xlYW4sIGl0ZW1JbWFnZT86IHN0cmluZywgYXZhaWxhYmlsaXR5PzogbnVtYmVyLCBpdGVtSWQ/OiBzdHJpbmcsIHBvc0lkPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgaXRlbVNwZWNGb3JtQ29uZmlnOiBGb3JtRmllbGRDb25maWdbXSA9IFtcclxuICAgICAgICB7IG5hbWU6ICdhbW91bnQnLCBkZWZhdWx0VmFsdWU6IDAsIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9LFxyXG4gICAgICAgIHsgbmFtZTogJ2F2YWlsYWJpbGl0eScsIGRlZmF1bHRWYWx1ZTogMCwgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdIH0sXHJcbiAgICAgICAgeyBuYW1lOiAnY3VycmVuY3knLCBkZWZhdWx0VmFsdWU6ICdDT1AnLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSxcclxuICAgICAgICB7IG5hbWU6ICdleHBpcmVfYXQnLCBkZWZhdWx0VmFsdWU6IHRoaXMuZGVmYXVsdERhdGUsIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9LFxyXG4gICAgICAgIHsgbmFtZTogJ29mZmVyX2lkJywgZGVmYXVsdFZhbHVlOiAnJyB9LFxyXG4gICAgICAgIHsgbmFtZTogJ2l0ZW1faWQnLCBkZWZhdWx0VmFsdWU6ICcnLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSxcclxuICAgICAgICB7IG5hbWU6ICduYW1lJywgZGVmYXVsdFZhbHVlOiAnJywgdmFsaWRhdG9yczogW10gfSxcclxuICAgICAgICB7IG5hbWU6ICdpc19leHRlcm5hbCcsIGRlZmF1bHRWYWx1ZTogZmFsc2UsIHZhbGlkYXRvcnM6IFtdIH0sXHJcbiAgICAgICAgeyBuYW1lOiAncG9pbnRfb2Zfc2FsZV9pZCcsIGRlZmF1bHRWYWx1ZTogJycsIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9LFxyXG4gICAgICAgIHsgbmFtZTogJ2ltYWdlX3VybCcsIGRlZmF1bHRWYWx1ZTogJycsIHZhbGlkYXRvcnM6IFtdIH0sXHJcbiAgICAgICAgeyBuYW1lOiAnYWxsb3dfbXVsdGlwbGVfaXRlbXMnLCBkZWZhdWx0VmFsdWU6IGZhbHNlLCB2YWxpZGF0b3JzOiBbXSB9LFxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIGNvbnN0IG5ld0l0ZW0gPSB0aGlzLmZvcm1GYWN0b3J5LmNyZWF0ZUZvcm0oaXRlbVNwZWNGb3JtQ29uZmlnKTtcclxuICAgICAgICBuZXdJdGVtLmdldCgnbmFtZScpPy5zZXRWYWx1ZShpdGVtTmFtZSk7XHJcbiAgICAgICAgbmV3SXRlbS5nZXQoJ2lzX2V4dGVybmFsJyk/LnNldFZhbHVlKGl0ZW1Jc0V4dGVybmFsID8/IGZhbHNlKTtcclxuICAgICAgICBuZXdJdGVtLmdldCgncG9pbnRfb2Zfc2FsZV9pZCcpPy5zZXRWYWx1ZShwb3NJZCk7XHJcbiAgICAgICAgbmV3SXRlbS5nZXQoJ2ltYWdlX3VybCcpPy5zZXRWYWx1ZShpdGVtSW1hZ2UgfHwgJycpO1xyXG4gICAgICAgIG5ld0l0ZW0uZ2V0KCdhdmFpbGFiaWxpdHknKT8uc2V0VmFsdWUoYXZhaWxhYmlsaXR5IHx8IG51bGwpO1xyXG4gICAgICAgIG5ld0l0ZW0uZ2V0KCdpdGVtX2lkJyk/LnNldFZhbHVlKGl0ZW1JZCk7XHJcbiAgICAgICAgYXZhaWxhYmlsaXR5ID8gbmV3SXRlbS5nZXQoJ2F2YWlsYWJpbGl0eScpPy5kaXNhYmxlKCkgOiBuZXdJdGVtLmdldCgnYXZhaWxhYmlsaXR5Jyk/LmVuYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5wdXNoKG5ld0l0ZW0pO1xyXG4gICAgfVxyXG5cclxuICBwcmV2ZW50TmVnYXRpdmUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGNvbnN0IGludmFsaWRLZXlzID0gWyctJywgJ2UnXTtcclxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcblxyXG4gICAgaWYgKGludmFsaWRLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSkgfHxcclxuICAgICAgKGV2ZW50LmtleSA9PT0gJzAnICYmIGlucHV0LnZhbHVlLmxlbmd0aCA9PT0gMCkpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50LCBpdGVtRm9ybTogRm9ybUdyb3VwKSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgY29uc3QgbnVtYmVyID0gaW5wdXQudmFsdWUucmVwbGFjZSgvXFxEL2csICcnKTtcclxuICAgIGNvbnN0IGZvcm1hdHRlZCA9IHRoaXMuZm9ybWF0TnVtYmVyKG51bWJlcik7XHJcbiAgICBpdGVtRm9ybS5nZXQoJ2Ftb3VudCcpPy5zZXRWYWx1ZShmb3JtYXR0ZWQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIGZvcm1hdE51bWJlcih2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiAnJztcclxuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCAnLicpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFsbFRpbWVzSGFzQ29zdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0uaW52YWxpZDtcclxuICB9XHJcblxyXG4gIHRvdGFsUGFnZXMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLmNlaWwoXHJcbiAgICAgIHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5jb250cm9scy5maWx0ZXIoKGl0ZW1Gb3JtKSA9PlxyXG4gICAgICAgIGl0ZW1Gb3JtLmdldCgnbmFtZScpPy52YWx1ZS50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICkubGVuZ3RoIC8gdGhpcy5wYWdlU2l6ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVBhZ2UoZGlyZWN0aW9uOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IG5ld1BhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlICsgZGlyZWN0aW9uO1xyXG4gICAgaWYgKG5ld1BhZ2UgPiAwICYmIG5ld1BhZ2UgPD0gdGhpcy50b3RhbFBhZ2VzKCkpIHtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IG5ld1BhZ2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAgaGFzSXRlbXNBc3NvY2lhdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU3VibWl0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNvbnRpbnVlLmVtaXQoKTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgcHJvY2Vzc0l0ZW1TcGVjaWZpY2F0aW9ucygpOiB2b2lkIHtcclxuICAgIHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5jb250cm9scy5mb3JFYWNoKGl0ZW1Gb3JtID0+IHtcclxuICAgICAgaXRlbUZvcm0uZ2V0KCdvZmZlcl9pZCcpPy5zZXRWYWx1ZSh0aGlzLm9mZmVySWQpO1xyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0Nvc3RQb3B1cCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0uY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcclxuICAgICAgICBsZXQgaXRlbUFtb3VudCA9IGNvbnRyb2wuZ2V0KCdhbW91bnQnKT8udmFsdWU7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtQW1vdW50ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgaXRlbUFtb3VudCA9IGl0ZW1BbW91bnQucmVwbGFjZSgvXFwuL2csICcnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udHJvbC5nZXQoJ2Ftb3VudCcpPy5zZXRWYWx1ZShOdW1iZXIoaXRlbUFtb3VudCkpXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbXVsdGlwbGVJdGVtc1NwZWNzOiBDcmVhdGVXaXRoTXVsdGlwbGVJdGVtc1JlcXVlc3RbXSA9IFtdO1xyXG4gICAgY29uc3QgcmVndWxhckl0ZW1zU3BlY3M6IGFueVtdID0gW107XHJcblxyXG4gICAgdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzLmZvckVhY2goY29udHJvbCA9PiB7XHJcbiAgICAgIGNvbnN0IGFsbG93TXVsdGlwbGUgPSBjb250cm9sLmdldCgnYWxsb3dfbXVsdGlwbGVfaXRlbXMnKT8udmFsdWU7XHJcbiAgICAgIGNvbnRyb2wuZ2V0KCdhdmFpbGFiaWxpdHknKT8uZW5hYmxlKCk7XHJcbiAgICAgIGNvbnN0IGl0ZW1TcGVjID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgXHJcbiAgICAgIGlmIChhbGxvd011bHRpcGxlKSB7XHJcbiAgICAgICAgY29uc3QgbXVsdGlwbGVJdGVtU3BlYzogQ3JlYXRlV2l0aE11bHRpcGxlSXRlbXNSZXF1ZXN0ID0ge1xyXG4gICAgICAgICAgY3VycmVuY3k6IGl0ZW1TcGVjLmN1cnJlbmN5LFxyXG4gICAgICAgICAgb2ZmZXJfaWQ6IGl0ZW1TcGVjLm9mZmVyX2lkLFxyXG4gICAgICAgICAgaXRlbV9pZDogaXRlbVNwZWMuaXRlbV9pZCxcclxuICAgICAgICAgIHBvaW50X29mX3NhbGVfaWQ6IGl0ZW1TcGVjLnBvaW50X29mX3NhbGVfaWQsXHJcbiAgICAgICAgICBhbW91bnQ6IGl0ZW1TcGVjLmFtb3VudCxcclxuICAgICAgICAgIGF2YWlsYWJpbGl0eTogaXRlbVNwZWMuYXZhaWxhYmlsaXR5LFxyXG4gICAgICAgICAgZXhwaXJlX2F0OiBpdGVtU3BlYy5leHBpcmVfYXQsXHJcbiAgICAgICAgICBpc19leHRlcm5hbDogaXRlbVNwZWMuaXNfZXh0ZXJuYWwsXHJcbiAgICAgICAgICBhbGxvd19tdWx0aXBsZV9pdGVtczogdHJ1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbXVsdGlwbGVJdGVtc1NwZWNzLnB1c2gobXVsdGlwbGVJdGVtU3BlYyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVndWxhckl0ZW1zU3BlY3MucHVzaChpdGVtU3BlYyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMub25JdGVtc1Byb2Nlc3NlZC5lbWl0KHtcclxuICAgICAgbXVsdGlwbGVJdGVtczogbXVsdGlwbGVJdGVtc1NwZWNzLFxyXG4gICAgICByZWd1bGFySXRlbXM6IHJlZ3VsYXJJdGVtc1NwZWNzLFxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uRGF0ZVBpY2tlZChkYXRlOiBhbnksIGl0ZW1Gb3JtOiBGb3JtR3JvdXApIHtcclxuICAgIGl0ZW1Gb3JtLmdldCgnZXhwaXJlX2F0Jyk/LnNldFZhbHVlKGRhdGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZUl0ZW0oaXRlbUlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzLmZpbmRJbmRleChjb250cm9sID0+XHJcbiAgICAgIGNvbnRyb2wuZ2V0KCdpdGVtX2lkJyk/LnZhbHVlID09PSBpdGVtSWRcclxuICAgICk7XHJcblxyXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0ucmVtb3ZlQXQoaW5kZXgpO1xyXG4gICAgfVxyXG4gIH1cclxufSIsIjxsaWIta3YtcG9wdXAgKm5nSWY9XCJzaG93Q29zdFBvcHVwXCIgW3RpdGxlXT1cIidTZXQgcHJpY2luZyBhbmQgYXZhaWxhYmlsaXR5IGZvciB5b3VyIGl0ZW1zJ1wiIFtkZXNjcmlwdGlvbl09XCInQ29uZmlndXJlIHRoZSBjb3N0LCBhdmFpbGFiaWxpdHksIGFuZCBleHBpcmF0aW9uIGRldGFpbHMgZm9yIGVhY2ggc2VsZWN0ZWQgaXRlbSBpbiB5b3VyIG9mZmVyLidcIiBbaXNDdXN0b21UZW1wbGF0ZV09XCJ0cnVlXCIgW2FjdGlvblR5cGVdPVwiYWN0aW9uVHlwZUVudW0uSW5mb1wiXHJcbiAgICAob25BY2NlcHQpPVwic2hvd0Nvc3RQb3B1cCA9IGZhbHNlXCIgKG9uQ2xvc2UpPVwic2hvd0Nvc3RQb3B1cCA9IGZhbHNlXCI+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJpdGVtcy1jb250YWluZXJcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtRm9ybSBvZiBmaWx0ZXJlZERhdGFJdGVtczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpdGVtRm9ybS5nZXQoJ2ltYWdlX3VybCcpPy52YWx1ZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaXRlbUZvcm0uZ2V0KCdpbWFnZV91cmwnKT8udmFsdWVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW1Gb3JtLmdldCgnbmFtZScpPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpdGVtLWltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWRldGFpbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cIml0ZW0tbmFtZVwiPnt7IGl0ZW1Gb3JtLmdldCgnbmFtZScpPy52YWx1ZSB9fTwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW0tdHlwZVwiICpuZ0lmPVwiaXRlbUZvcm0uZ2V0KCdpc19leHRlcm5hbCcpPy52YWx1ZVwiPkV4dGVybmFsIEl0ZW08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiaXRlbUZvcm1cIiBjbGFzcz1cIml0ZW0tZm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPlByaWNpbmcgJiBBdmFpbGFiaWxpdHk8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJhbW91bnQte3tpfX1cIj5Db3N0ICo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3N0LWlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJhbW91bnQte3tpfX1cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhbW91bnRcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgY29zdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50LCBpdGVtRm9ybSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiY3VycmVuY3ktc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwiY3VycmVuY3lcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJDT1BcIj5DT1A8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cIml0ZW1Gb3JtLmdldCgnYW1vdW50Jyk/LmludmFsaWQgJiYgaXRlbUZvcm0uZ2V0KCdhbW91bnQnKT8udG91Y2hlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3N0IGlzIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImF2YWlsYWJpbGl0eS17e2l9fVwiPkF2YWlsYWJpbGl0eSAqPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJhdmFpbGFiaWxpdHkte3tpfX1cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImF2YWlsYWJpbGl0eVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluPVwiMVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJBdmFpbGFibGUgcXVhbnRpdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwicHJldmVudE5lZ2F0aXZlKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJpdGVtRm9ybS5nZXQoJ2F2YWlsYWJpbGl0eScpPy5pbnZhbGlkICYmIGl0ZW1Gb3JtLmdldCgnYXZhaWxhYmlsaXR5Jyk/LnRvdWNoZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5IGlzIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPk11bHRpcGxlIEl0ZW1zIFNldHRpbmdzPC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b2dnbGUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0b2dnbGUtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhbGxvd19tdWx0aXBsZV9pdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1pbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9nZ2xlLXNsaWRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvZ2dsZS10ZXh0XCI+QWxsb3cgbXVsdGlwbGUgaXRlbXMgcGVyIHVzZXI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0b2dnbGUtZGVzY3JpcHRpb25cIj5XaGVuIGVuYWJsZWQsIHVzZXJzIGNhbiBiaWQgb24gbXVsdGlwbGUgcXVhbnRpdGllcyBvZiB0aGlzIGl0ZW08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXNlY3Rpb25cIiAqbmdJZj1cInNob3VsZFNob3dEYXRlcGlja2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5FeHBpcmF0aW9uPC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZXhwaXJlQXQte3tpfX1cIj5FeHBpcmVzIG9uPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWIta3YtZGF0ZS1waWNrZXIgW2luaXRpYWxEYXRlXT1cImRlZmF1bHREYXRlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93RGV0YWlsc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVTZWxlY3RlZCk9XCJvbkRhdGVQaWNrZWQoJGV2ZW50LCBpdGVtRm9ybSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLWt2LWRhdGUtcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1jb250YWluZXJcIiAqbmdJZj1cInRvdGFsUGFnZXMoKSA+IDFcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1pbmZvXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPlNob3dpbmcge3sgKGN1cnJlbnRQYWdlIC0gMSkgKiBwYWdlU2l6ZSArIDEgfX0gLSB7eyBNYXRoLm1pbihjdXJyZW50UGFnZSAqIHBhZ2VTaXplLCBpdGVtc1NwZWNpZmljYXRpb25Gb3JtLmxlbmd0aCkgfX0gb2Yge3sgaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5sZW5ndGggfX0gaXRlbXM8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2luYXRpb24tY29udHJvbHNcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBhZ2luYXRpb24tYnRuXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVBhZ2UoLTEpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSAxXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IDFcIj5cclxuICAgICAgICAgICAgICAgIOKGkCBQcmV2aW91c1xyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWdlLWluZGljYXRvclwiPnt7IGN1cnJlbnRQYWdlIH19IC8ge3sgdG90YWxQYWdlcygpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGFnaW5hdGlvbi1idG5cIiBcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlUGFnZSgxKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gdG90YWxQYWdlcygpXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IHRvdGFsUGFnZXMoKVwiPlxyXG4gICAgICAgICAgICAgICAgTmV4dCDihpJcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicG9wdXAtZm9vdGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1pbmZvXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXRlbXMtY291bnRcIj57eyBpdGVtc1NwZWNpZmljYXRpb25Gb3JtLmxlbmd0aCB9fSBpdGVtKHMpIGNvbmZpZ3VyZWQ8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uLS1jYW5jZWxcIiAoY2xpY2spPVwic2hvd0Nvc3RQb3B1cCA9IGZhbHNlOyBpdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNsZWFyKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidXR0b24tLXByaW1hcnktbWluXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFsbFRpbWVzSGFzQ29zdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdWJtaXQoKVwiPlxyXG4gICAgICAgICAgICAgICAgQ29udGludWVcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9saWIta3YtcG9wdXA+Il19
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtaXRlbS1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdmlvL3NyYy9saWIvY29tcG9uZW50cy9rdi1pdGVtLWNhcmQva3YtaXRlbS1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdmlvL3NyYy9saWIvY29tcG9uZW50cy9rdi1pdGVtLWNhcmQva3YtaXRlbS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBYSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQStCL0MsTUFBTSxPQUFPLG1CQUFtQjtJQXFCOUIsWUFDbUIsV0FBK0I7UUFBL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBckJ6Qyx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQiwyQkFBc0IsR0FBeUIsSUFBSSxTQUFTLENBQVksRUFBRSxDQUFDLENBQUM7UUFFM0UsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDdEMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDcEMscUJBQWdCLEdBQUcsSUFBSSxZ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LENBQUMsSUFBUyxFQUFFLFFBQW1CO1FBQ25ELFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxVQUFVLENBQUMsTUFBYztRQUM5QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUNyRSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssS0FBSyxNQUFNLENBQ3pDLENBQUM7UUFFRixJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQzsrR0EzTlUsbUJBQW1CO21HQUFuQixtQkFBbUIsK1VDMUNoQywwdk9BOEhlLDJ2Y0Q3RlgsWUFBWSwrUEFDWixtQkFBbUIsczNEQUNuQixnQkFBZ0Isa0xBQ2hCLG1CQUFtQjs7NEZBTVYsbUJBQW1CO2tCQWIvQixTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3FCQUVwQjt1RkFLUSxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBLdlBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4va3YtcG9wdXAva3YtcG9wdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2FjdGlvbi10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9mb3JtLWZpZWxkLmNvbmZpZyc7XHJcbmltcG9ydCB7IEZvcm1GYWN0b3J5U2VydmljZSB9IGZyb20gJy4uLy4uL2ZhY3Rvcmllcy9mb3JtLWZhY3Rvcnkuc2VydmljZSc7XHJcblxyXG5cclxuaW50ZXJmYWNlIENyZWF0ZVdpdGhNdWx0aXBsZUl0ZW1zUmVxdWVzdCB7XHJcbiAgY3VycmVuY3k6IHN0cmluZztcclxuICBvZmZlcl9pZDogc3RyaW5nO1xyXG4gIGl0ZW1faWQ6IHN0cmluZztcclxuICBwb2ludF9vZl9zYWxlX2lkOiBzdHJpbmc7XHJcbiAgYW1vdW50OiBudW1iZXI7XHJcbiAgYXZhaWxhYmlsaXR5OiBudW1iZXI7XHJcbiAgZXhwaXJlX2F0OiBzdHJpbmc7XHJcbiAgaXNfZXh0ZXJuYWw6IGJvb2xlYW47XHJcbiAgYWxsb3dfbXVsdGlwbGVfaXRlbXM6IGJvb2xlYW47XHJcbiAgYmFzZV9wcmljZTogbnVtYmVyO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1rdi1pdGVtLWNhcmQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEt2UG9wdXBDb21wb25lbnQsXHJcbiAgICBEYXRlUGlja2VyQ29tcG9uZW50LFxyXG5cclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi1pdGVtLWNhcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9rdi1pdGVtLWNhcmQuY29tcG9uZW50LnNjc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZJdGVtQ2FyZENvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgc2hvdWxkU2hvd0RhdGVwaWNrZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBvZmZlcklkOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHNob3dDb3N0UG9wdXA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBpdGVtc1NwZWNpZmljYXRpb25Gb3JtOiBGb3JtQXJyYXk8Rm9ybUdyb3VwPiA9IG5ldyBGb3JtQXJyYXk8Rm9ybUdyb3VwPihbXSk7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkNvbnRpbnVlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgb25JdGVtc1Byb2Nlc3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgbXVsdGlwbGVJdGVtczogQ3JlYXRlV2l0aE11bHRpcGxlSXRlbXNSZXF1ZXN0W107XHJcbiAgICByZWd1bGFySXRlbXM6IGFueVtdO1xyXG4gIH0+KCk7XHJcblxyXG4gIHB1YmxpYyBhY3Rpb25UeXBlRW51bSA9IEFjdGlvblR5cGU7XHJcbiAgcHVibGljIGRlZmF1bHREYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgcGFnZVNpemU6IG51bWJlciA9IDI7XHJcbiAgY3VycmVudFBhZ2U6IG51bWJlciA9IDE7XHJcbiAgTWF0aCA9IE1hdGg7XHJcbiAgc2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtRmFjdG9yeTogRm9ybUZhY3RvcnlTZXJ2aWNlLFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtID0gbmV3IEZvcm1BcnJheTxGb3JtR3JvdXA+KFtdKTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXQgZmlsdGVyZWREYXRhSXRlbXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzXHJcbiAgICAgIC5maWx0ZXIoKGl0ZW1Gb3JtKSA9PlxyXG4gICAgICAgIGl0ZW1Gb3JtLmdldCgnbmFtZScpPy52YWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICApXHJcbiAgICAgIC5zbGljZSgodGhpcy5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5wYWdlU2l6ZSwgdGhpcy5jdXJyZW50UGFnZSAqIHRoaXMucGFnZVNpemUpO1xyXG4gIH1cclxuXHJcbiAgYWRkSXRlbShpbmRleDogbnVtYmVyLCBpdGVtTmFtZT86IHN0cmluZywgaXRlbUlzRXh0ZXJuYWw/OiBib29sZWFuLCBpdGVtSW1hZ2U/OiBzdHJpbmcsIGF2YWlsYWJpbGl0eT86IG51bWJlciwgaXRlbUlkPzogc3RyaW5nLCBwb3NJZD86IHN0cmluZywgaXRlbUJhc2VQcmljZT86IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgaXRlbVNwZWNGb3JtQ29uZmlnOiBGb3JtRmllbGRDb25maWdbXSA9IFtcclxuICAgICAgeyBuYW1lOiAnYW1vdW50JywgZGVmYXVsdFZhbHVlOiAwLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSxcclxuICAgICAgeyBuYW1lOiAnYXZhaWxhYmlsaXR5JywgZGVmYXVsdFZhbHVlOiAwLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSxcclxuICAgICAgeyBuYW1lOiAnY3VycmVuY3knLCBkZWZhdWx0VmFsdWU6ICdDT1AnLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSxcclxuICAgICAgeyBuYW1lOiAnZXhwaXJlX2F0JywgZGVmYXVsdFZhbHVlOiB0aGlzLmRlZmF1bHREYXRlLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSxcclxuICAgICAgeyBuYW1lOiAnb2ZmZXJfaWQnLCBkZWZhdWx0VmFsdWU6ICcnIH0sXHJcbiAgICAgIHsgbmFtZTogJ2l0ZW1faWQnLCBkZWZhdWx0VmFsdWU6ICcnLCB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gfSxcclxuICAgICAgeyBuYW1lOiAnbmFtZScsIGRlZmF1bHRWYWx1ZTogJycsIHZhbGlkYXRvcnM6IFtdIH0sXHJcbiAgICAgIHsgbmFtZTogJ2lzX2V4dGVybmFsJywgZGVmYXVsdFZhbHVlOiBmYWxzZSwgdmFsaWRhdG9yczogW10gfSxcclxuICAgICAgeyBuYW1lOiAncG9pbnRfb2Zfc2FsZV9pZCcsIGRlZmF1bHRWYWx1ZTogJycsIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9LFxyXG4gICAgICB7IG5hbWU6ICdpbWFnZV91cmwnLCBkZWZhdWx0VmFsdWU6ICcnLCB2YWxpZGF0b3JzOiBbXSB9LFxyXG4gICAgICB7IG5hbWU6ICdhbGxvd19tdWx0aXBsZV9pdGVtcycsIGRlZmF1bHRWYWx1ZTogZmFsc2UsIHZhbGlkYXRvcnM6IFtdIH0sXHJcbiAgICAgIHsgbmFtZTogJ2Jhc2VfcHJpY2UnLCBkZWZhdWx0VmFsdWU6IGl0ZW1CYXNlUHJpY2UsIHZhbGlkYXRvcnM6IFtdIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIGNvbnN0IG5ld0l0ZW0gPSB0aGlzLmZvcm1GYWN0b3J5LmNyZWF0ZUZvcm0oaXRlbVNwZWNGb3JtQ29uZmlnKTtcclxuICAgIG5ld0l0ZW0uZ2V0KCduYW1lJyk/LnNldFZhbHVlKGl0ZW1OYW1lKTtcclxuICAgIG5ld0l0ZW0uZ2V0KCdpc19leHRlcm5hbCcpPy5zZXRWYWx1ZShpdGVtSXNFeHRlcm5hbCA/PyBmYWxzZSk7XHJcbiAgICBuZXdJdGVtLmdldCgncG9pbnRfb2Zfc2FsZV9pZCcpPy5zZXRWYWx1ZShwb3NJZCk7XHJcbiAgICBuZXdJdGVtLmdldCgnaW1hZ2VfdXJsJyk/LnNldFZhbHVlKGl0ZW1JbWFnZSB8fCAnJyk7XHJcbiAgICBuZXdJdGVtLmdldCgnYXZhaWxhYmlsaXR5Jyk/LnNldFZhbHVlKGF2YWlsYWJpbGl0eSB8fCBudWxsKTtcclxuICAgIG5ld0l0ZW0uZ2V0KCdpdGVtX2lkJyk/LnNldFZhbHVlKGl0ZW1JZCk7XHJcbiAgICBhdmFpbGFiaWxpdHkgPyBuZXdJdGVtLmdldCgnYXZhaWxhYmlsaXR5Jyk/LmRpc2FibGUoKSA6IG5ld0l0ZW0uZ2V0KCdhdmFpbGFiaWxpdHknKT8uZW5hYmxlKCk7XHJcbiAgICB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0ucHVzaChuZXdJdGVtKTtcclxuICB9XHJcblxyXG4gIHByZXZlbnROZWdhdGl2ZShldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgY29uc3QgaW52YWxpZEtleXMgPSBbJy0nLCAnZSddO1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuXHJcbiAgICBpZiAoaW52YWxpZEtleXMuaW5jbHVkZXMoZXZlbnQua2V5KSB8fFxyXG4gICAgICAoZXZlbnQua2V5ID09PSAnMCcgJiYgaW5wdXQudmFsdWUubGVuZ3RoID09PSAwKSkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25JbnB1dChldmVudDogRXZlbnQsIGl0ZW1Gb3JtOiBGb3JtR3JvdXApIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBjb25zdCBudW1iZXIgPSBpbnB1dC52YWx1ZS5yZXBsYWNlKC9cXEQvZywgJycpO1xyXG4gICAgY29uc3QgZm9ybWF0dGVkID0gdGhpcy5mb3JtYXROdW1iZXIobnVtYmVyKTtcclxuICAgIGl0ZW1Gb3JtLmdldCgnYW1vdW50Jyk/LnNldFZhbHVlKGZvcm1hdHRlZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uQ2FuY2VsQWN0aW9uKCkge1xyXG4gICAgdGhpcy5vbkNhbmNlbC5lbWl0KCk7XHJcbiAgICB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0uY2xlYXIoKVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0TnVtYmVyKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csICcuJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWxsVGltZXNIYXNDb3N0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5pbnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFRvdGFsRXh0ZXJuYWxCYXNlUHJpY2UoKTogbnVtYmVyIHtcclxuICAgIGxldCB0b3RhbCA9IDA7XHJcblxyXG4gICAgdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzLmZvckVhY2goaXRlbUZvcm0gPT4ge1xyXG4gICAgICBjb25zdCBpc0V4dGVybmFsID0gaXRlbUZvcm0uZ2V0KCdpc19leHRlcm5hbCcpPy52YWx1ZTtcclxuXHJcbiAgICAgIGlmIChpc0V4dGVybmFsKSB7XHJcbiAgICAgICAgY29uc3QgYmFzZVByaWNlID0gaXRlbUZvcm0uZ2V0KCdiYXNlX3ByaWNlJyk/LnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGF2YWlsYWJpbGl0eSA9IGl0ZW1Gb3JtLmdldCgnYXZhaWxhYmlsaXR5Jyk/LnZhbHVlO1xyXG5cclxuICAgICAgICBpZiAoYmFzZVByaWNlICYmIGF2YWlsYWJpbGl0eSkge1xyXG4gICAgICAgICAgdG90YWwgKz0gTnVtYmVyKGJhc2VQcmljZSkgKiBOdW1iZXIoYXZhaWxhYmlsaXR5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0b3RhbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93RXh0ZXJuYWxCYXNlUHJpY2VXYXJuaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdG90YWxFeHRlcm5hbCA9IHRoaXMuZ2V0VG90YWxFeHRlcm5hbEJhc2VQcmljZSgpO1xyXG5cclxuICAgIGNvbnN0IGhhc0V4dGVybmFsUHJvZHVjdHMgPSB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0uY29udHJvbHMuc29tZShcclxuICAgICAgaXRlbUZvcm0gPT4gaXRlbUZvcm0uZ2V0KCdpc19leHRlcm5hbCcpPy52YWx1ZSA9PT0gdHJ1ZVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gaGFzRXh0ZXJuYWxQcm9kdWN0cyAmJiB0b3RhbEV4dGVybmFsID4gMCAmJiB0b3RhbEV4dGVybmFsIDwgMTI5MDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuU3VibWl0KCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gIXRoaXMuc2hvd0V4dGVybmFsQmFzZVByaWNlV2FybmluZygpO1xyXG4gIH1cclxuXHJcbiAgdG90YWxQYWdlcygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIE1hdGguY2VpbChcclxuICAgICAgdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzLmZpbHRlcigoaXRlbUZvcm0pID0+XHJcbiAgICAgICAgaXRlbUZvcm0uZ2V0KCduYW1lJyk/LnZhbHVlLnRvTG93ZXJDYXNlKClcclxuICAgICAgKS5sZW5ndGggLyB0aGlzLnBhZ2VTaXplXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlUGFnZShkaXJlY3Rpb246IG51bWJlcikge1xyXG4gICAgY29uc3QgbmV3UGFnZSA9IHRoaXMuY3VycmVudFBhZ2UgKyBkaXJlY3Rpb247XHJcbiAgICBpZiAobmV3UGFnZSA+IDAgJiYgbmV3UGFnZSA8PSB0aGlzLnRvdGFsUGFnZXMoKSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gbmV3UGFnZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhc0l0ZW1zQXNzb2NpYXRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0ubGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblN1Ym1pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNhblN1Ym1pdCgpKSB7XHJcbiAgICAgIHRoaXMub25Db250aW51ZS5lbWl0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm9jZXNzSXRlbVNwZWNpZmljYXRpb25zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzLmZvckVhY2goaXRlbUZvcm0gPT4ge1xyXG4gICAgICBpdGVtRm9ybS5nZXQoJ29mZmVyX2lkJyk/LnNldFZhbHVlKHRoaXMub2ZmZXJJZCk7XHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0udmFsaWQpIHtcclxuICAgICAgdGhpcy5zaG93Q29zdFBvcHVwID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5jb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xyXG4gICAgICAgIGxldCBpdGVtQW1vdW50ID0gY29udHJvbC5nZXQoJ2Ftb3VudCcpPy52YWx1ZTtcclxuICAgICAgICBpZiAodHlwZW9mIGl0ZW1BbW91bnQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICBpdGVtQW1vdW50ID0gaXRlbUFtb3VudC5yZXBsYWNlKC9cXC4vZywgJycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250cm9sLmdldCgnYW1vdW50Jyk/LnNldFZhbHVlKE51bWJlcihpdGVtQW1vdW50KSlcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtdWx0aXBsZUl0ZW1zU3BlY3M6IENyZWF0ZVdpdGhNdWx0aXBsZUl0ZW1zUmVxdWVzdFtdID0gW107XHJcbiAgICBjb25zdCByZWd1bGFySXRlbXNTcGVjczogYW55W10gPSBbXTtcclxuXHJcbiAgICB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0uY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcclxuICAgICAgY29uc3QgYWxsb3dNdWx0aXBsZSA9IGNvbnRyb2wuZ2V0KCdhbGxvd19tdWx0aXBsZV9pdGVtcycpPy52YWx1ZTtcclxuICAgICAgY29udHJvbC5nZXQoJ2F2YWlsYWJpbGl0eScpPy5lbmFibGUoKTtcclxuICAgICAgY29uc3QgaXRlbVNwZWMgPSBjb250cm9sLnZhbHVlO1xyXG5cclxuICAgICAgaWYgKGFsbG93TXVsdGlwbGUpIHtcclxuICAgICAgICBjb25zdCBtdWx0aXBsZUl0ZW1TcGVjOiBDcmVhdGVXaXRoTXVsdGlwbGVJdGVtc1JlcXVlc3QgPSB7XHJcbiAgICAgICAgICBjdXJyZW5jeTogaXRlbVNwZWMuY3VycmVuY3ksXHJcbiAgICAgICAgICBvZmZlcl9pZDogaXRlbVNwZWMub2ZmZXJfaWQsXHJcbiAgICAgICAgICBpdGVtX2lkOiBpdGVtU3BlYy5pdGVtX2lkLFxyXG4gICAgICAgICAgcG9pbnRfb2Zfc2FsZV9pZDogaXRlbVNwZWMucG9pbnRfb2Zfc2FsZV9pZCxcclxuICAgICAgICAgIGFtb3VudDogaXRlbVNwZWMuYW1vdW50LFxyXG4gICAgICAgICAgYXZhaWxhYmlsaXR5OiBpdGVtU3BlYy5hdmFpbGFiaWxpdHksXHJcbiAgICAgICAgICBleHBpcmVfYXQ6IGl0ZW1TcGVjLmV4cGlyZV9hdCxcclxuICAgICAgICAgIGlzX2V4dGVybmFsOiBpdGVtU3BlYy5pc19leHRlcm5hbCxcclxuICAgICAgICAgIGFsbG93X211bHRpcGxlX2l0ZW1zOiB0cnVlLFxyXG4gICAgICAgICAgYmFzZV9wcmljZTogaXRlbVNwZWMuYmFzZV9wcmljZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbXVsdGlwbGVJdGVtc1NwZWNzLnB1c2gobXVsdGlwbGVJdGVtU3BlYyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVndWxhckl0ZW1zU3BlY3MucHVzaChpdGVtU3BlYyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMub25JdGVtc1Byb2Nlc3NlZC5lbWl0KHtcclxuICAgICAgbXVsdGlwbGVJdGVtczogbXVsdGlwbGVJdGVtc1NwZWNzLFxyXG4gICAgICByZWd1bGFySXRlbXM6IHJlZ3VsYXJJdGVtc1NwZWNzLFxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uRGF0ZVBpY2tlZChkYXRlOiBhbnksIGl0ZW1Gb3JtOiBGb3JtR3JvdXApIHtcclxuICAgIGl0ZW1Gb3JtLmdldCgnZXhwaXJlX2F0Jyk/LnNldFZhbHVlKGRhdGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZUl0ZW0oaXRlbUlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pdGVtc1NwZWNpZmljYXRpb25Gb3JtLmNvbnRyb2xzLmZpbmRJbmRleChjb250cm9sID0+XHJcbiAgICAgIGNvbnRyb2wuZ2V0KCdpdGVtX2lkJyk/LnZhbHVlID09PSBpdGVtSWRcclxuICAgICk7XHJcblxyXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLml0ZW1zU3BlY2lmaWNhdGlvbkZvcm0ucmVtb3ZlQXQoaW5kZXgpO1xyXG4gICAgfVxyXG4gIH1cclxufSIsIjxsaWIta3YtcG9wdXAgKm5nSWY9XCJzaG93Q29zdFBvcHVwXCIgW3RpdGxlXT1cIidTZXQgcHJpY2luZyBhbmQgYXZhaWxhYmlsaXR5IGZvciB5b3VyIGl0ZW1zJ1wiIFtkZXNjcmlwdGlvbl09XCInQ29uZmlndXJlIHRoZSBjb3N0LCBhdmFpbGFiaWxpdHksIGFuZCBleHBpcmF0aW9uIGRldGFpbHMgZm9yIGVhY2ggc2VsZWN0ZWQgaXRlbSBpbiB5b3VyIG9mZmVyLidcIiBbaXNDdXN0b21UZW1wbGF0ZV09XCJ0cnVlXCIgW2FjdGlvblR5cGVdPVwiYWN0aW9uVHlwZUVudW0uSW5mb1wiXHJcbiAgICAob25BY2NlcHQpPVwic2hvd0Nvc3RQb3B1cCA9IGZhbHNlXCIgKG9uQ2xvc2UpPVwic2hvd0Nvc3RQb3B1cCA9IGZhbHNlXCI+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJiYXNlLXByaWNlLXdhcm5pbmdcIiAqbmdJZj1cInNob3dFeHRlcm5hbEJhc2VQcmljZVdhcm5pbmcoKVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj53YXJuaW5nPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuPkVsIHRvdGFsIGRlIGxvcyBwcm9kdWN0b3MgZXh0ZXJub3MgKFByZWNpbyBleHRlcm5vIMOXIGRpc3BvbmliaWxpZGFkKSBkZWJlIHNlciBhbCBtZW5vcyAkMTIuOTAwLiBUb3RhbCBhY3R1YWw6ICR7eyBnZXRUb3RhbEV4dGVybmFsQmFzZVByaWNlKCkudG9Mb2NhbGVTdHJpbmcoJ2VzLUNPJykgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiaXRlbXMtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbUZvcm0gb2YgZmlsdGVyZWREYXRhSXRlbXM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0taGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0taW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiaXRlbUZvcm0uZ2V0KCdpbWFnZV91cmwnKT8udmFsdWVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIml0ZW1Gb3JtLmdldCgnaW1hZ2VfdXJsJyk/LnZhbHVlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJpdGVtRm9ybS5nZXQoJ25hbWUnKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbS1pbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1kZXRhaWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJpdGVtLW5hbWVcIj57eyBpdGVtRm9ybS5nZXQoJ25hbWUnKT8udmFsdWUgfX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtLXR5cGVcIiAqbmdJZj1cIml0ZW1Gb3JtLmdldCgnaXNfZXh0ZXJuYWwnKT8udmFsdWVcIj5FeHRlcm5hbCBJdGVtPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIml0ZW1Gb3JtXCIgY2xhc3M9XCJpdGVtLWZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5QcmljaW5nICYgQXZhaWxhYmlsaXR5PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYW1vdW50LXt7aX19XCI+Q29zdCAqPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29zdC1pbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiYW1vdW50LXt7aX19XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYW1vdW50XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIGNvc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudCwgaXRlbUZvcm0pXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImN1cnJlbmN5LXNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cImN1cnJlbmN5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQ09QXCI+Q09QPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJpdGVtRm9ybS5nZXQoJ2Ftb3VudCcpPy5pbnZhbGlkICYmIGl0ZW1Gb3JtLmdldCgnYW1vdW50Jyk/LnRvdWNoZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29zdCBpcyByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJhdmFpbGFiaWxpdHkte3tpfX1cIj5BdmFpbGFiaWxpdHkgKjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiYXZhaWxhYmlsaXR5LXt7aX19XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhdmFpbGFiaWxpdHlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj1cIjFcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQXZhaWxhYmxlIHF1YW50aXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cInByZXZlbnROZWdhdGl2ZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiaXRlbUZvcm0uZ2V0KCdhdmFpbGFiaWxpdHknKT8uaW52YWxpZCAmJiBpdGVtRm9ybS5nZXQoJ2F2YWlsYWJpbGl0eScpPy50b3VjaGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eSBpcyByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5NdWx0aXBsZSBJdGVtcyBTZXR0aW5nczwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidG9nZ2xlLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWxsb3dfbXVsdGlwbGVfaXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvZ2dsZS1zbGlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b2dnbGUtdGV4dFwiPkFsbG93IG11bHRpcGxlIGl0ZW1zIHBlciB1c2VyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidG9nZ2xlLWRlc2NyaXB0aW9uXCI+V2hlbiBlbmFibGVkLCB1c2VycyBjYW4gYmlkIG9uIG11bHRpcGxlIHF1YW50aXRpZXMgb2YgdGhpcyBpdGVtPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1zZWN0aW9uXCIgKm5nSWY9XCJzaG91bGRTaG93RGF0ZXBpY2tlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+RXhwaXJhdGlvbjwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImV4cGlyZUF0LXt7aX19XCI+RXhwaXJlcyBvbjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWt2LWRhdGUtcGlja2VyIFtpbml0aWFsRGF0ZV09XCJkZWZhdWx0RGF0ZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0RldGFpbHNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlU2VsZWN0ZWQpPVwib25EYXRlUGlja2VkKCRldmVudCwgaXRlbUZvcm0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpYi1rdi1kYXRlLXBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInBhZ2luYXRpb24tY29udGFpbmVyXCIgKm5nSWY9XCJ0b3RhbFBhZ2VzKCkgPiAxXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2luYXRpb24taW5mb1wiPlxyXG4gICAgICAgICAgICA8c3Bhbj5TaG93aW5nIHt7IChjdXJyZW50UGFnZSAtIDEpICogcGFnZVNpemUgKyAxIH19IC0ge3sgTWF0aC5taW4oY3VycmVudFBhZ2UgKiBwYWdlU2l6ZSwgaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5sZW5ndGgpIH19IG9mIHt7IGl0ZW1zU3BlY2lmaWNhdGlvbkZvcm0ubGVuZ3RoIH19IGl0ZW1zPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0aW9uLWNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwYWdpbmF0aW9uLWJ0blwiIFxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VQYWdlKC0xKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSA9PT0gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSAxXCI+XHJcbiAgICAgICAgICAgICAgICDihpAgUHJldmlvdXNcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFnZS1pbmRpY2F0b3JcIj57eyBjdXJyZW50UGFnZSB9fSAvIHt7IHRvdGFsUGFnZXMoKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBhZ2luYXRpb24tYnRuXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVBhZ2UoMSlcIiBcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UgPT09IHRvdGFsUGFnZXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSB0b3RhbFBhZ2VzKClcIj5cclxuICAgICAgICAgICAgICAgIE5leHQg4oaSXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInBvcHVwLWZvb3RlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItaW5mb1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW1zLWNvdW50XCI+e3sgaXRlbXNTcGVjaWZpY2F0aW9uRm9ybS5sZW5ndGggfX0gaXRlbShzKSBjb25maWd1cmVkPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ1dHRvbi0tY2FuY2VsXCIgKGNsaWNrKT1cIm9uQ2FuY2VsQWN0aW9uKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidXR0b24tLXByaW1hcnktbWluXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblN1Ym1pdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdWJtaXQoKVwiPlxyXG4gICAgICAgICAgICAgICAgQ29udGludWVcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9saWIta3YtcG9wdXA+Il19
@@ -34,11 +34,11 @@ export class KvStepperComponent {
34
34
  this.closeEvent.emit();
35
35
  }
36
36
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KvStepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
37
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: KvStepperComponent, isStandalone: true, selector: "lib-kv-stepper", inputs: { isSimpleStepper: "isSimpleStepper", isVertical: "isVertical", isAssociated: "isAssociated" }, outputs: { submit: "submit", closeEvent: "closeEvent", isLastStep: "isLastStep" }, queries: [{ propertyName: "steps", predicate: KvStepComponent }], ngImport: i0, template: "<ng-container *ngIf=\"!isSimpleStepper\">\r\n <div class=\"stepper-container\">\r\n <div class=\"step-header\">\r\n <div *ngFor=\"let step of steps; let i = index\" class=\"step-item\" [class.active]=\"currentStep() === i\"\r\n [class.completed]=\"i < currentStep()\">\r\n <div class=\"step-number\">{{ i + 1 }}</div>\r\n <div class=\"step-title\">{{ step.title }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"step-content\">\r\n <ng-container *ngIf=\"steps.get(currentStep())?.content\">\r\n <ng-container *ngTemplateOutlet=\"steps.get(currentStep())!.content\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"step-actions\">\r\n <button class=\"button--cancel\" (click)=\"close()\">Cancel</button>\r\n <button class=\"button--primary-min\" *ngIf=\"currentStep() > 0\" (click)=\"previous()\">Anterior</button>\r\n <button class=\"button--primary-min\" *ngIf=\"currentStep() < steps.length - 1\" (click)=\"next()\"\r\n [disabled]=\"!isAssociated\">Next</button>\r\n <button class=\"button--primary-min\" *ngIf=\"currentStep() === steps.length - 1\"\r\n (click)=\"submit.emit()\">Create</button>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isSimpleStepper && !isVertical\">\r\n <div class=\"stepper-container-simple\">\r\n <div class=\"step-header\">\r\n <div *ngFor=\"let step of steps; let i = index\" class=\"step-item\" [class.active]=\"currentStep() === i\"\r\n [class.completed]=\"i < currentStep()\">\r\n <div class=\"step-number\">{{ i + 1 }}</div>\r\n <div class=\"step-title\">{{ step.title }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"step-content-simple\">\r\n <ng-container *ngIf=\"steps.get(currentStep())?.content\">\r\n <ng-container *ngTemplateOutlet=\"steps.get(currentStep())!.content\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isSimpleStepper && isVertical\">\r\n <div class=\"stepper-container-vertical\">\r\n <div class=\"vertical-steps\">\r\n <div *ngFor=\"let step of steps; let i = index\" class=\"vertical-step-item\">\r\n <div class=\"step-indicator-container\">\r\n <div class=\"vertical-step-indicator\" [class.active]=\"currentStep() === i\"\r\n [class.completed]=\"i < currentStep()\">\r\n <div class=\"step-number\">{{ i + 1 }}</div>\r\n </div>\r\n <div class=\"vertical-line\" *ngIf=\"i !== steps.length - 1\"></div>\r\n </div>\r\n <div class=\"title-container\">\r\n <div class=\"step-title\">{{ step.title }}</div>\r\n <div class=\"step-description\">{{ step.description }}</div>\r\n </div>\r\n <div class=\"vertical-step-content\" [class.active]=\"currentStep() === i\" (click)=\"currentStep.set(i)\">\r\n <div class=\"step-content-vertical\" *ngIf=\"currentStep() === i\">\r\n <ng-container *ngTemplateOutlet=\"step.content\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>", 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}.button-container:disabled{background-color:#ededed;cursor:not-allowed}.stepper-container,.stepper-container-vertical{max-width:800px;max-height:75vh;overflow-y:auto;margin:0 auto;padding:20px;background:#fff;border-radius:8px}.stepper-container-simple{max-height:75vh;margin:0 auto;padding:20px;background:#fff;border-radius:8px}@media (max-width: 768px){.stepper-container-simple{padding:0;margin-top:4rem}}.step-header{display:flex;justify-content:space-between;margin-bottom:30px;padding:0 20px}.step-header .step-item{display:flex;flex-direction:column;align-items:center;flex:1;position:relative}.step-header .step-item:before{content:\"\";position:absolute;top:20px;left:-50%;right:50%;height:2px;background:#ddd;z-index:0}.step-header .step-item:first-child:before{display:none}.step-header .step-item .step-number{width:40px;height:40px;border-radius:50%;background:#f7f7f7;display:flex;align-items:center;justify-content:center;margin-bottom:8px;z-index:1;transition:all .3s ease}.step-header .step-item .title-container{max-width:200px}.step-header .step-item .title-container .step-title{font-size:.9rem;color:#666}.step-header .step-item.active .step-number{background:#2196f3;color:#fff}.step-header .step-item.active .title-container{max-width:200px}.step-header .step-item.active .title-container .step-title{color:#2196f3;font-weight:500}.step-header .step-item.completed .step-number{background:#4caf50;color:#fff}.step-header .step-item.completed:before{background:#4caf50}.step-content,.step-content-simple{padding:20px;border-radius:4px;margin-bottom:20px}@media (max-width: 768px){.step-content,.step-content-simple{padding:0;margin-bottom:0}}.step-actions{display:flex;gap:10px;justify-content:flex-end}.stepper-container-vertical{max-width:1000px}.stepper-container-vertical .vertical-steps{display:flex;flex-direction:column;gap:20px}.stepper-container-vertical .vertical-step-item{display:flex;gap:20px;position:relative}.stepper-container-vertical .step-indicator-container{display:flex;flex-direction:column;align-items:center;position:relative}.stepper-container-vertical .vertical-step-indicator{width:40px;height:40px;border-radius:50%;background:#f7f7f7;display:flex;align-items:center;justify-content:center;transition:all .3s ease;position:relative;z-index:2}.stepper-container-vertical .vertical-step-indicator.active{background:#2196f3;color:#fff}.stepper-container-vertical .vertical-step-indicator.completed{background:#4caf50;color:#fff}.stepper-container-vertical .vertical-line{width:2px;height:calc(100% + 20px);background:#ddd;position:absolute;top:40px;z-index:1}.stepper-container-vertical .vertical-step-content{pointer-events:none;flex:1;padding:10px;border-radius:4px;transition:all .3s ease}.stepper-container-vertical .vertical-step-content.active{pointer-events:auto}.stepper-container-vertical .vertical-step-content .title-container{max-width:200px}.stepper-container-vertical .vertical-step-content .title-container .step-title{font-weight:500;color:#333;margin-bottom:10px}.stepper-container-vertical .vertical-step-content .step-content-vertical{padding:10px;background:#fff}.title-container{max-width:200px!important}.title-container .step-title{color:#101828;margin-bottom:10px}.title-container .step-description{color:#475467;margin-bottom:10px}@media (max-width: 768px){.step-header{margin-bottom:20px;margin-top:5rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
37
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: KvStepperComponent, isStandalone: true, selector: "lib-kv-stepper", inputs: { isSimpleStepper: "isSimpleStepper", isVertical: "isVertical", isAssociated: "isAssociated" }, outputs: { submit: "submit", closeEvent: "closeEvent", isLastStep: "isLastStep" }, queries: [{ propertyName: "steps", predicate: KvStepComponent }], ngImport: i0, template: "<ng-container *ngIf=\"!isSimpleStepper\">\r\n <div class=\"stepper-container\">\r\n <div class=\"step-header\">\r\n <div *ngFor=\"let step of steps; let i = index\" class=\"step-item\" [class.active]=\"currentStep() === i\"\r\n [class.completed]=\"i < currentStep()\">\r\n <div class=\"step-number\">{{ i + 1 }}</div>\r\n <div class=\"step-title\">{{ step.title }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"step-content\">\r\n <ng-container *ngIf=\"steps.get(currentStep())?.content\">\r\n <ng-container *ngTemplateOutlet=\"steps.get(currentStep())!.content\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"step-actions\">\r\n <button class=\"button--cancel\" (click)=\"close()\">Cancel</button>\r\n <button class=\"button--primary-min\" *ngIf=\"currentStep() > 0\" (click)=\"previous()\">Anterior</button>\r\n <button class=\"button--primary-min\" *ngIf=\"currentStep() < steps.length - 1\" (click)=\"next()\"\r\n [disabled]=\"!isAssociated\">Next</button>\r\n <button class=\"button--primary-min\" *ngIf=\"currentStep() === steps.length - 1\"\r\n (click)=\"submit.emit()\">Create</button>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isSimpleStepper && !isVertical\">\r\n <div class=\"stepper-container-simple\">\r\n <div class=\"step-header\">\r\n <div *ngFor=\"let step of steps; let i = index\" class=\"step-item\" [class.active]=\"currentStep() === i\"\r\n [class.completed]=\"i < currentStep()\">\r\n <div class=\"step-number\">{{ i + 1 }}</div>\r\n <div class=\"step-title\">{{ step.title }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"step-content-simple\">\r\n <ng-container *ngIf=\"steps.get(currentStep())?.content\">\r\n <ng-container *ngTemplateOutlet=\"steps.get(currentStep())!.content\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isSimpleStepper && isVertical\">\r\n <div class=\"stepper-container-vertical\">\r\n <div class=\"vertical-steps\">\r\n <div *ngFor=\"let step of steps; let i = index\" class=\"vertical-step-item\">\r\n <div class=\"step-indicator-container\">\r\n <div class=\"vertical-step-indicator\" [class.active]=\"currentStep() === i\"\r\n [class.completed]=\"i < currentStep()\">\r\n <div class=\"step-number\">{{ i + 1 }}</div>\r\n </div>\r\n <div class=\"vertical-line\" *ngIf=\"i !== steps.length - 1\"></div>\r\n </div>\r\n <div class=\"title-container\">\r\n <div class=\"step-title\">{{ step.title }}</div>\r\n <div class=\"step-description\">{{ step.description }}</div>\r\n </div>\r\n <div class=\"vertical-step-content\" [class.active]=\"currentStep() === i\" (click)=\"currentStep.set(i)\">\r\n <div class=\"step-content-vertical\" *ngIf=\"currentStep() === i\">\r\n <ng-container *ngTemplateOutlet=\"step.content\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>", 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}.button-container:disabled{background-color:#ededed;cursor:not-allowed}.stepper-container,.stepper-container-vertical{max-width:800px;max-height:75vh;overflow-y:auto;margin:0 auto;padding:20px;background:#fff;border-radius:8px}.stepper-container-simple{max-height:85vh;margin:0 auto;padding:20px;background:#fff;border-radius:8px}@media (max-width: 768px){.stepper-container-simple{padding:0;margin-top:4rem}}.step-header{display:flex;justify-content:space-between;margin-bottom:30px;padding:0 20px}.step-header .step-item{display:flex;flex-direction:column;align-items:center;flex:1;position:relative}.step-header .step-item:before{content:\"\";position:absolute;top:20px;left:-50%;right:50%;height:2px;background:#ddd;z-index:0}.step-header .step-item:first-child:before{display:none}.step-header .step-item .step-number{width:40px;height:40px;border-radius:50%;background:#f7f7f7;display:flex;align-items:center;justify-content:center;margin-bottom:8px;z-index:1;transition:all .3s ease}.step-header .step-item .title-container{max-width:200px}.step-header .step-item .title-container .step-title{font-size:.9rem;color:#666}.step-header .step-item.active .step-number{background:#2196f3;color:#fff}.step-header .step-item.active .title-container{max-width:200px}.step-header .step-item.active .title-container .step-title{color:#2196f3;font-weight:500}.step-header .step-item.completed .step-number{background:#4caf50;color:#fff}.step-header .step-item.completed:before{background:#4caf50}.step-content,.step-content-simple{padding:20px;border-radius:4px;margin-bottom:20px}@media (max-width: 768px){.step-content,.step-content-simple{padding:0;margin-bottom:0}}.step-actions{display:flex;gap:10px;justify-content:flex-end}.stepper-container-vertical{max-width:1000px}.stepper-container-vertical .vertical-steps{display:flex;flex-direction:column;gap:20px}.stepper-container-vertical .vertical-step-item{display:flex;gap:20px;position:relative}.stepper-container-vertical .step-indicator-container{display:flex;flex-direction:column;align-items:center;position:relative}.stepper-container-vertical .vertical-step-indicator{width:40px;height:40px;border-radius:50%;background:#f7f7f7;display:flex;align-items:center;justify-content:center;transition:all .3s ease;position:relative;z-index:2}.stepper-container-vertical .vertical-step-indicator.active{background:#2196f3;color:#fff}.stepper-container-vertical .vertical-step-indicator.completed{background:#4caf50;color:#fff}.stepper-container-vertical .vertical-line{width:2px;height:calc(100% + 20px);background:#ddd;position:absolute;top:40px;z-index:1}.stepper-container-vertical .vertical-step-content{pointer-events:none;flex:1;padding:10px;border-radius:4px;transition:all .3s ease}.stepper-container-vertical .vertical-step-content.active{pointer-events:auto}.stepper-container-vertical .vertical-step-content .title-container{max-width:200px}.stepper-container-vertical .vertical-step-content .title-container .step-title{font-weight:500;color:#333;margin-bottom:10px}.stepper-container-vertical .vertical-step-content .step-content-vertical{padding:10px;background:#fff}.title-container{max-width:200px!important}.title-container .step-title{color:#101828;margin-bottom:10px}.title-container .step-description{color:#475467;margin-bottom:10px}@media (max-width: 768px){.step-header{margin-bottom:20px;margin-top:5rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
38
38
  }
39
39
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KvStepperComponent, decorators: [{
40
40
  type: Component,
41
- args: [{ selector: 'lib-kv-stepper', standalone: true, imports: [CommonModule], template: "<ng-container *ngIf=\"!isSimpleStepper\">\r\n <div class=\"stepper-container\">\r\n <div class=\"step-header\">\r\n <div *ngFor=\"let step of steps; let i = index\" class=\"step-item\" [class.active]=\"currentStep() === i\"\r\n [class.completed]=\"i < currentStep()\">\r\n <div class=\"step-number\">{{ i + 1 }}</div>\r\n <div class=\"step-title\">{{ step.title }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"step-content\">\r\n <ng-container *ngIf=\"steps.get(currentStep())?.content\">\r\n <ng-container *ngTemplateOutlet=\"steps.get(currentStep())!.content\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"step-actions\">\r\n <button class=\"button--cancel\" (click)=\"close()\">Cancel</button>\r\n <button class=\"button--primary-min\" *ngIf=\"currentStep() > 0\" (click)=\"previous()\">Anterior</button>\r\n <button class=\"button--primary-min\" *ngIf=\"currentStep() < steps.length - 1\" (click)=\"next()\"\r\n [disabled]=\"!isAssociated\">Next</button>\r\n <button class=\"button--primary-min\" *ngIf=\"currentStep() === steps.length - 1\"\r\n (click)=\"submit.emit()\">Create</button>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isSimpleStepper && !isVertical\">\r\n <div class=\"stepper-container-simple\">\r\n <div class=\"step-header\">\r\n <div *ngFor=\"let step of steps; let i = index\" class=\"step-item\" [class.active]=\"currentStep() === i\"\r\n [class.completed]=\"i < currentStep()\">\r\n <div class=\"step-number\">{{ i + 1 }}</div>\r\n <div class=\"step-title\">{{ step.title }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"step-content-simple\">\r\n <ng-container *ngIf=\"steps.get(currentStep())?.content\">\r\n <ng-container *ngTemplateOutlet=\"steps.get(currentStep())!.content\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isSimpleStepper && isVertical\">\r\n <div class=\"stepper-container-vertical\">\r\n <div class=\"vertical-steps\">\r\n <div *ngFor=\"let step of steps; let i = index\" class=\"vertical-step-item\">\r\n <div class=\"step-indicator-container\">\r\n <div class=\"vertical-step-indicator\" [class.active]=\"currentStep() === i\"\r\n [class.completed]=\"i < currentStep()\">\r\n <div class=\"step-number\">{{ i + 1 }}</div>\r\n </div>\r\n <div class=\"vertical-line\" *ngIf=\"i !== steps.length - 1\"></div>\r\n </div>\r\n <div class=\"title-container\">\r\n <div class=\"step-title\">{{ step.title }}</div>\r\n <div class=\"step-description\">{{ step.description }}</div>\r\n </div>\r\n <div class=\"vertical-step-content\" [class.active]=\"currentStep() === i\" (click)=\"currentStep.set(i)\">\r\n <div class=\"step-content-vertical\" *ngIf=\"currentStep() === i\">\r\n <ng-container *ngTemplateOutlet=\"step.content\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>", 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}.button-container:disabled{background-color:#ededed;cursor:not-allowed}.stepper-container,.stepper-container-vertical{max-width:800px;max-height:75vh;overflow-y:auto;margin:0 auto;padding:20px;background:#fff;border-radius:8px}.stepper-container-simple{max-height:75vh;margin:0 auto;padding:20px;background:#fff;border-radius:8px}@media (max-width: 768px){.stepper-container-simple{padding:0;margin-top:4rem}}.step-header{display:flex;justify-content:space-between;margin-bottom:30px;padding:0 20px}.step-header .step-item{display:flex;flex-direction:column;align-items:center;flex:1;position:relative}.step-header .step-item:before{content:\"\";position:absolute;top:20px;left:-50%;right:50%;height:2px;background:#ddd;z-index:0}.step-header .step-item:first-child:before{display:none}.step-header .step-item .step-number{width:40px;height:40px;border-radius:50%;background:#f7f7f7;display:flex;align-items:center;justify-content:center;margin-bottom:8px;z-index:1;transition:all .3s ease}.step-header .step-item .title-container{max-width:200px}.step-header .step-item .title-container .step-title{font-size:.9rem;color:#666}.step-header .step-item.active .step-number{background:#2196f3;color:#fff}.step-header .step-item.active .title-container{max-width:200px}.step-header .step-item.active .title-container .step-title{color:#2196f3;font-weight:500}.step-header .step-item.completed .step-number{background:#4caf50;color:#fff}.step-header .step-item.completed:before{background:#4caf50}.step-content,.step-content-simple{padding:20px;border-radius:4px;margin-bottom:20px}@media (max-width: 768px){.step-content,.step-content-simple{padding:0;margin-bottom:0}}.step-actions{display:flex;gap:10px;justify-content:flex-end}.stepper-container-vertical{max-width:1000px}.stepper-container-vertical .vertical-steps{display:flex;flex-direction:column;gap:20px}.stepper-container-vertical .vertical-step-item{display:flex;gap:20px;position:relative}.stepper-container-vertical .step-indicator-container{display:flex;flex-direction:column;align-items:center;position:relative}.stepper-container-vertical .vertical-step-indicator{width:40px;height:40px;border-radius:50%;background:#f7f7f7;display:flex;align-items:center;justify-content:center;transition:all .3s ease;position:relative;z-index:2}.stepper-container-vertical .vertical-step-indicator.active{background:#2196f3;color:#fff}.stepper-container-vertical .vertical-step-indicator.completed{background:#4caf50;color:#fff}.stepper-container-vertical .vertical-line{width:2px;height:calc(100% + 20px);background:#ddd;position:absolute;top:40px;z-index:1}.stepper-container-vertical .vertical-step-content{pointer-events:none;flex:1;padding:10px;border-radius:4px;transition:all .3s ease}.stepper-container-vertical .vertical-step-content.active{pointer-events:auto}.stepper-container-vertical .vertical-step-content .title-container{max-width:200px}.stepper-container-vertical .vertical-step-content .title-container .step-title{font-weight:500;color:#333;margin-bottom:10px}.stepper-container-vertical .vertical-step-content .step-content-vertical{padding:10px;background:#fff}.title-container{max-width:200px!important}.title-container .step-title{color:#101828;margin-bottom:10px}.title-container .step-description{color:#475467;margin-bottom:10px}@media (max-width: 768px){.step-header{margin-bottom:20px;margin-top:5rem}}\n"] }]
41
+ args: [{ selector: 'lib-kv-stepper', standalone: true, imports: [CommonModule], template: "<ng-container *ngIf=\"!isSimpleStepper\">\r\n <div class=\"stepper-container\">\r\n <div class=\"step-header\">\r\n <div *ngFor=\"let step of steps; let i = index\" class=\"step-item\" [class.active]=\"currentStep() === i\"\r\n [class.completed]=\"i < currentStep()\">\r\n <div class=\"step-number\">{{ i + 1 }}</div>\r\n <div class=\"step-title\">{{ step.title }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"step-content\">\r\n <ng-container *ngIf=\"steps.get(currentStep())?.content\">\r\n <ng-container *ngTemplateOutlet=\"steps.get(currentStep())!.content\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"step-actions\">\r\n <button class=\"button--cancel\" (click)=\"close()\">Cancel</button>\r\n <button class=\"button--primary-min\" *ngIf=\"currentStep() > 0\" (click)=\"previous()\">Anterior</button>\r\n <button class=\"button--primary-min\" *ngIf=\"currentStep() < steps.length - 1\" (click)=\"next()\"\r\n [disabled]=\"!isAssociated\">Next</button>\r\n <button class=\"button--primary-min\" *ngIf=\"currentStep() === steps.length - 1\"\r\n (click)=\"submit.emit()\">Create</button>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isSimpleStepper && !isVertical\">\r\n <div class=\"stepper-container-simple\">\r\n <div class=\"step-header\">\r\n <div *ngFor=\"let step of steps; let i = index\" class=\"step-item\" [class.active]=\"currentStep() === i\"\r\n [class.completed]=\"i < currentStep()\">\r\n <div class=\"step-number\">{{ i + 1 }}</div>\r\n <div class=\"step-title\">{{ step.title }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"step-content-simple\">\r\n <ng-container *ngIf=\"steps.get(currentStep())?.content\">\r\n <ng-container *ngTemplateOutlet=\"steps.get(currentStep())!.content\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isSimpleStepper && isVertical\">\r\n <div class=\"stepper-container-vertical\">\r\n <div class=\"vertical-steps\">\r\n <div *ngFor=\"let step of steps; let i = index\" class=\"vertical-step-item\">\r\n <div class=\"step-indicator-container\">\r\n <div class=\"vertical-step-indicator\" [class.active]=\"currentStep() === i\"\r\n [class.completed]=\"i < currentStep()\">\r\n <div class=\"step-number\">{{ i + 1 }}</div>\r\n </div>\r\n <div class=\"vertical-line\" *ngIf=\"i !== steps.length - 1\"></div>\r\n </div>\r\n <div class=\"title-container\">\r\n <div class=\"step-title\">{{ step.title }}</div>\r\n <div class=\"step-description\">{{ step.description }}</div>\r\n </div>\r\n <div class=\"vertical-step-content\" [class.active]=\"currentStep() === i\" (click)=\"currentStep.set(i)\">\r\n <div class=\"step-content-vertical\" *ngIf=\"currentStep() === i\">\r\n <ng-container *ngTemplateOutlet=\"step.content\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>", 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}.button-container:disabled{background-color:#ededed;cursor:not-allowed}.stepper-container,.stepper-container-vertical{max-width:800px;max-height:75vh;overflow-y:auto;margin:0 auto;padding:20px;background:#fff;border-radius:8px}.stepper-container-simple{max-height:85vh;margin:0 auto;padding:20px;background:#fff;border-radius:8px}@media (max-width: 768px){.stepper-container-simple{padding:0;margin-top:4rem}}.step-header{display:flex;justify-content:space-between;margin-bottom:30px;padding:0 20px}.step-header .step-item{display:flex;flex-direction:column;align-items:center;flex:1;position:relative}.step-header .step-item:before{content:\"\";position:absolute;top:20px;left:-50%;right:50%;height:2px;background:#ddd;z-index:0}.step-header .step-item:first-child:before{display:none}.step-header .step-item .step-number{width:40px;height:40px;border-radius:50%;background:#f7f7f7;display:flex;align-items:center;justify-content:center;margin-bottom:8px;z-index:1;transition:all .3s ease}.step-header .step-item .title-container{max-width:200px}.step-header .step-item .title-container .step-title{font-size:.9rem;color:#666}.step-header .step-item.active .step-number{background:#2196f3;color:#fff}.step-header .step-item.active .title-container{max-width:200px}.step-header .step-item.active .title-container .step-title{color:#2196f3;font-weight:500}.step-header .step-item.completed .step-number{background:#4caf50;color:#fff}.step-header .step-item.completed:before{background:#4caf50}.step-content,.step-content-simple{padding:20px;border-radius:4px;margin-bottom:20px}@media (max-width: 768px){.step-content,.step-content-simple{padding:0;margin-bottom:0}}.step-actions{display:flex;gap:10px;justify-content:flex-end}.stepper-container-vertical{max-width:1000px}.stepper-container-vertical .vertical-steps{display:flex;flex-direction:column;gap:20px}.stepper-container-vertical .vertical-step-item{display:flex;gap:20px;position:relative}.stepper-container-vertical .step-indicator-container{display:flex;flex-direction:column;align-items:center;position:relative}.stepper-container-vertical .vertical-step-indicator{width:40px;height:40px;border-radius:50%;background:#f7f7f7;display:flex;align-items:center;justify-content:center;transition:all .3s ease;position:relative;z-index:2}.stepper-container-vertical .vertical-step-indicator.active{background:#2196f3;color:#fff}.stepper-container-vertical .vertical-step-indicator.completed{background:#4caf50;color:#fff}.stepper-container-vertical .vertical-line{width:2px;height:calc(100% + 20px);background:#ddd;position:absolute;top:40px;z-index:1}.stepper-container-vertical .vertical-step-content{pointer-events:none;flex:1;padding:10px;border-radius:4px;transition:all .3s ease}.stepper-container-vertical .vertical-step-content.active{pointer-events:auto}.stepper-container-vertical .vertical-step-content .title-container{max-width:200px}.stepper-container-vertical .vertical-step-content .title-container .step-title{font-weight:500;color:#333;margin-bottom:10px}.stepper-container-vertical .vertical-step-content .step-content-vertical{padding:10px;background:#fff}.title-container{max-width:200px!important}.title-container .step-title{color:#101828;margin-bottom:10px}.title-container .step-description{color:#475467;margin-bottom:10px}@media (max-width: 768px){.step-header{margin-bottom:20px;margin-top:5rem}}\n"] }]
42
42
  }], propDecorators: { steps: [{
43
43
  type: ContentChildren,
44
44
  args: [KvStepComponent]