aiservermanager 0.5.3 → 0.5.4
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.
|
@@ -11,5 +11,5 @@
|
|
|
11
11
|
<style>html{--mat-sys-on-surface:initial}html{--mat-app-background-color:#fafafa;--mat-app-text-color:rgba(0, 0, 0, .87);--mat-app-elevation-shadow-level-0:0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-1:0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-2:0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-3:0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-4:0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-5:0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 5px 8px 0px rgba(0, 0, 0, .14), 0px 1px 14px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-6:0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-7:0px 4px 5px -2px rgba(0, 0, 0, .2), 0px 7px 10px 1px rgba(0, 0, 0, .14), 0px 2px 16px 1px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-8:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-9:0px 5px 6px -3px rgba(0, 0, 0, .2), 0px 9px 12px 1px rgba(0, 0, 0, .14), 0px 3px 16px 2px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-10:0px 6px 6px -3px rgba(0, 0, 0, .2), 0px 10px 14px 1px rgba(0, 0, 0, .14), 0px 4px 18px 3px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-11:0px 6px 7px -4px rgba(0, 0, 0, .2), 0px 11px 15px 1px rgba(0, 0, 0, .14), 0px 4px 20px 3px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-12:0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-13:0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 13px 19px 2px rgba(0, 0, 0, .14), 0px 5px 24px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-14:0px 7px 9px -4px rgba(0, 0, 0, .2), 0px 14px 21px 2px rgba(0, 0, 0, .14), 0px 5px 26px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-15:0px 8px 9px -5px rgba(0, 0, 0, .2), 0px 15px 22px 2px rgba(0, 0, 0, .14), 0px 6px 28px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-16:0px 8px 10px -5px rgba(0, 0, 0, .2), 0px 16px 24px 2px rgba(0, 0, 0, .14), 0px 6px 30px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-17:0px 8px 11px -5px rgba(0, 0, 0, .2), 0px 17px 26px 2px rgba(0, 0, 0, .14), 0px 6px 32px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-18:0px 9px 11px -5px rgba(0, 0, 0, .2), 0px 18px 28px 2px rgba(0, 0, 0, .14), 0px 7px 34px 6px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-19:0px 9px 12px -6px rgba(0, 0, 0, .2), 0px 19px 29px 2px rgba(0, 0, 0, .14), 0px 7px 36px 6px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-20:0px 10px 13px -6px rgba(0, 0, 0, .2), 0px 20px 31px 3px rgba(0, 0, 0, .14), 0px 8px 38px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-21:0px 10px 13px -6px rgba(0, 0, 0, .2), 0px 21px 33px 3px rgba(0, 0, 0, .14), 0px 8px 40px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-22:0px 10px 14px -6px rgba(0, 0, 0, .2), 0px 22px 35px 3px rgba(0, 0, 0, .14), 0px 8px 42px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-23:0px 11px 14px -7px rgba(0, 0, 0, .2), 0px 23px 36px 3px rgba(0, 0, 0, .14), 0px 9px 44px 8px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-24:0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12)}html{--mat-ripple-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent)}html{--mat-option-selected-state-label-text-color:#3f51b5;--mat-option-label-text-color:rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color:color-mix(in srgb, rgba(0, 0, 0, .87) 4%, transparent);--mat-option-focus-state-layer-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-option-selected-state-layer-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent)}html{--mat-optgroup-label-text-color:rgba(0, 0, 0, .87)}html{--mat-pseudo-checkbox-full-selected-icon-color:#ff4081;--mat-pseudo-checkbox-full-selected-checkmark-color:#fafafa;--mat-pseudo-checkbox-full-unselected-icon-color:rgba(0, 0, 0, .54);--mat-pseudo-checkbox-full-disabled-selected-checkmark-color:#fafafa;--mat-pseudo-checkbox-full-disabled-unselected-icon-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-pseudo-checkbox-full-disabled-selected-icon-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-pseudo-checkbox-minimal-selected-checkmark-color:#ff4081;--mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent)}html{--mat-option-label-text-font:Roboto, sans-serif;--mat-option-label-text-line-height:24px;--mat-option-label-text-size:16px;--mat-option-label-text-tracking:.03125em;--mat-option-label-text-weight:400}html{--mat-optgroup-label-text-font:Roboto, sans-serif;--mat-optgroup-label-text-line-height:24px;--mat-optgroup-label-text-size:16px;--mat-optgroup-label-text-tracking:.03125em;--mat-optgroup-label-text-weight:400}html{--mat-card-elevated-container-shape:4px;--mat-card-outlined-container-shape:4px;--mat-card-filled-container-shape:4px;--mat-card-outlined-outline-width:1px}html{--mat-card-elevated-container-color:white;--mat-card-elevated-container-elevation:0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-card-outlined-container-color:white;--mat-card-outlined-container-elevation:0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-card-outlined-outline-color:rgba(0, 0, 0, .12);--mat-card-subtitle-text-color:rgba(0, 0, 0, .54);--mat-card-filled-container-color:white;--mat-card-filled-container-elevation:0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12)}html{--mat-card-title-text-font:Roboto, sans-serif;--mat-card-title-text-line-height:32px;--mat-card-title-text-size:20px;--mat-card-title-text-tracking:.0125em;--mat-card-title-text-weight:500;--mat-card-subtitle-text-font:Roboto, sans-serif;--mat-card-subtitle-text-line-height:22px;--mat-card-subtitle-text-size:14px;--mat-card-subtitle-text-tracking:.0071428571em;--mat-card-subtitle-text-weight:500}html{--mat-progress-bar-active-indicator-height:4px;--mat-progress-bar-track-height:4px;--mat-progress-bar-track-shape:0}html{--mat-tooltip-container-shape:4px;--mat-tooltip-supporting-text-line-height:16px}html{--mat-tooltip-container-color:#424242;--mat-tooltip-supporting-text-color:white}html{--mat-tooltip-supporting-text-font:Roboto, sans-serif;--mat-tooltip-supporting-text-size:12px;--mat-tooltip-supporting-text-weight:400;--mat-tooltip-supporting-text-tracking:.0333333333em}html{--mat-form-field-filled-active-indicator-height:1px;--mat-form-field-filled-focus-active-indicator-height:2px;--mat-form-field-filled-container-shape:4px;--mat-form-field-outlined-outline-width:1px;--mat-form-field-outlined-focus-outline-width:2px;--mat-form-field-outlined-container-shape:4px}html{--mat-form-field-focus-select-arrow-color:color-mix(in srgb, #3f51b5 87%, transparent);--mat-form-field-filled-caret-color:#3f51b5;--mat-form-field-filled-focus-active-indicator-color:#3f51b5;--mat-form-field-filled-focus-label-text-color:color-mix(in srgb, #3f51b5 87%, transparent);--mat-form-field-outlined-caret-color:#3f51b5;--mat-form-field-outlined-focus-outline-color:#3f51b5;--mat-form-field-outlined-focus-label-text-color:color-mix(in srgb, #3f51b5 87%, transparent);--mat-form-field-disabled-input-text-placeholder-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-form-field-state-layer-color:rgba(0, 0, 0, .87);--mat-form-field-error-text-color:#f44336;--mat-form-field-select-option-text-color:inherit;--mat-form-field-select-disabled-option-text-color:GrayText;--mat-form-field-leading-icon-color:unset;--mat-form-field-disabled-leading-icon-color:unset;--mat-form-field-trailing-icon-color:unset;--mat-form-field-disabled-trailing-icon-color:unset;--mat-form-field-error-focus-trailing-icon-color:unset;--mat-form-field-error-hover-trailing-icon-color:unset;--mat-form-field-error-trailing-icon-color:unset;--mat-form-field-enabled-select-arrow-color:rgba(0, 0, 0, .54);--mat-form-field-disabled-select-arrow-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-form-field-hover-state-layer-opacity:.04;--mat-form-field-focus-state-layer-opacity:.12;--mat-form-field-filled-container-color:#f6f6f6;--mat-form-field-filled-disabled-container-color:color-mix(in srgb, rgba(0, 0, 0, .87) 4%, transparent);--mat-form-field-filled-label-text-color:rgba(0, 0, 0, .54);--mat-form-field-filled-hover-label-text-color:rgba(0, 0, 0, .54);--mat-form-field-filled-disabled-label-text-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-form-field-filled-input-text-color:rgba(0, 0, 0, .87);--mat-form-field-filled-disabled-input-text-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-form-field-filled-input-text-placeholder-color:rgba(0, 0, 0, .54);--mat-form-field-filled-error-hover-label-text-color:#f44336;--mat-form-field-filled-error-focus-label-text-color:#f44336;--mat-form-field-filled-error-label-text-color:#f44336;--mat-form-field-filled-error-caret-color:#f44336;--mat-form-field-filled-active-indicator-color:rgba(0, 0, 0, .54);--mat-form-field-filled-disabled-active-indicator-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-form-field-filled-hover-active-indicator-color:rgba(0, 0, 0, .87);--mat-form-field-filled-error-active-indicator-color:#f44336;--mat-form-field-filled-error-focus-active-indicator-color:#f44336;--mat-form-field-filled-error-hover-active-indicator-color:#f44336;--mat-form-field-outlined-label-text-color:rgba(0, 0, 0, .54);--mat-form-field-outlined-hover-label-text-color:rgba(0, 0, 0, .87);--mat-form-field-outlined-disabled-label-text-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-form-field-outlined-input-text-color:rgba(0, 0, 0, .87);--mat-form-field-outlined-disabled-input-text-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-form-field-outlined-input-text-placeholder-color:rgba(0, 0, 0, .54);--mat-form-field-outlined-error-caret-color:#f44336;--mat-form-field-outlined-error-focus-label-text-color:#f44336;--mat-form-field-outlined-error-label-text-color:#f44336;--mat-form-field-outlined-error-hover-label-text-color:#f44336;--mat-form-field-outlined-outline-color:rgba(0, 0, 0, .38);--mat-form-field-outlined-disabled-outline-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-form-field-outlined-hover-outline-color:rgba(0, 0, 0, .87);--mat-form-field-outlined-error-focus-outline-color:#f44336;--mat-form-field-outlined-error-hover-outline-color:#f44336;--mat-form-field-outlined-error-outline-color:#f44336}html{--mat-form-field-container-height:56px;--mat-form-field-filled-label-display:block;--mat-form-field-container-vertical-padding:16px;--mat-form-field-filled-with-label-container-padding-top:24px;--mat-form-field-filled-with-label-container-padding-bottom:8px}html{--mat-form-field-container-text-font:Roboto, sans-serif;--mat-form-field-container-text-line-height:24px;--mat-form-field-container-text-size:16px;--mat-form-field-container-text-tracking:.03125em;--mat-form-field-container-text-weight:400;--mat-form-field-outlined-label-text-populated-size:16px;--mat-form-field-subscript-text-font:Roboto, sans-serif;--mat-form-field-subscript-text-line-height:20px;--mat-form-field-subscript-text-size:12px;--mat-form-field-subscript-text-tracking:.0333333333em;--mat-form-field-subscript-text-weight:400;--mat-form-field-filled-label-text-font:Roboto, sans-serif;--mat-form-field-filled-label-text-size:16px;--mat-form-field-filled-label-text-tracking:.03125em;--mat-form-field-filled-label-text-weight:400;--mat-form-field-outlined-label-text-font:Roboto, sans-serif;--mat-form-field-outlined-label-text-size:16px;--mat-form-field-outlined-label-text-tracking:.03125em;--mat-form-field-outlined-label-text-weight:400}html{--mat-select-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-select-panel-background-color:white;--mat-select-enabled-trigger-text-color:rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-select-placeholder-text-color:rgba(0, 0, 0, .54);--mat-select-enabled-arrow-color:rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-select-focused-arrow-color:#3f51b5;--mat-select-invalid-arrow-color:#f44336}html{--mat-select-arrow-transform:translateY(-8px)}html{--mat-select-trigger-text-font:Roboto, sans-serif;--mat-select-trigger-text-line-height:24px;--mat-select-trigger-text-size:16px;--mat-select-trigger-text-tracking:.03125em;--mat-select-trigger-text-weight:400}html{--mat-autocomplete-container-shape:4px;--mat-autocomplete-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-autocomplete-background-color:white}html{--mat-dialog-container-shape:4px;--mat-dialog-container-elevation-shadow:0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12);--mat-dialog-container-max-width:80vw;--mat-dialog-container-small-max-width:80vw;--mat-dialog-container-min-width:0;--mat-dialog-actions-alignment:start;--mat-dialog-actions-padding:8px;--mat-dialog-content-padding:20px 24px;--mat-dialog-with-actions-content-padding:20px 24px;--mat-dialog-headline-padding:0 24px 9px}html{--mat-dialog-container-color:white;--mat-dialog-subhead-color:rgba(0, 0, 0, .87);--mat-dialog-supporting-text-color:rgba(0, 0, 0, .54)}html{--mat-dialog-subhead-font:Roboto, sans-serif;--mat-dialog-subhead-line-height:32px;--mat-dialog-subhead-size:20px;--mat-dialog-subhead-weight:500;--mat-dialog-subhead-tracking:.0125em;--mat-dialog-supporting-text-font:Roboto, sans-serif;--mat-dialog-supporting-text-line-height:24px;--mat-dialog-supporting-text-size:16px;--mat-dialog-supporting-text-weight:400;--mat-dialog-supporting-text-tracking:.03125em}html{--mat-slide-toggle-disabled-handle-opacity:.38;--mat-slide-toggle-disabled-selected-handle-opacity:.38;--mat-slide-toggle-disabled-selected-icon-opacity:.38;--mat-slide-toggle-disabled-track-opacity:.12;--mat-slide-toggle-disabled-unselected-handle-opacity:.38;--mat-slide-toggle-disabled-unselected-icon-opacity:.38;--mat-slide-toggle-disabled-unselected-track-outline-color:transparent;--mat-slide-toggle-disabled-unselected-track-outline-width:1px;--mat-slide-toggle-handle-height:20px;--mat-slide-toggle-handle-shape:10px;--mat-slide-toggle-handle-width:20px;--mat-slide-toggle-hidden-track-opacity:1;--mat-slide-toggle-hidden-track-transition:transform 75ms 0ms cubic-bezier(.4, 0, .6, 1);--mat-slide-toggle-pressed-handle-size:20px;--mat-slide-toggle-selected-focus-state-layer-opacity:.12;--mat-slide-toggle-selected-handle-horizontal-margin:0;--mat-slide-toggle-selected-handle-size:20px;--mat-slide-toggle-selected-hover-state-layer-opacity:.04;--mat-slide-toggle-selected-icon-size:18px;--mat-slide-toggle-selected-pressed-handle-horizontal-margin:0;--mat-slide-toggle-selected-pressed-state-layer-opacity:.12;--mat-slide-toggle-selected-track-outline-color:transparent;--mat-slide-toggle-selected-track-outline-width:1px;--mat-slide-toggle-selected-with-icon-handle-horizontal-margin:0;--mat-slide-toggle-track-height:14px;--mat-slide-toggle-track-outline-color:transparent;--mat-slide-toggle-track-outline-width:1px;--mat-slide-toggle-track-shape:7px;--mat-slide-toggle-track-width:36px;--mat-slide-toggle-unselected-focus-state-layer-opacity:.12;--mat-slide-toggle-unselected-handle-horizontal-margin:0;--mat-slide-toggle-unselected-handle-size:20px;--mat-slide-toggle-unselected-hover-state-layer-opacity:.12;--mat-slide-toggle-unselected-icon-size:18px;--mat-slide-toggle-unselected-pressed-handle-horizontal-margin:0;--mat-slide-toggle-unselected-pressed-state-layer-opacity:.1;--mat-slide-toggle-unselected-with-icon-handle-horizontal-margin:0;--mat-slide-toggle-visible-track-opacity:1;--mat-slide-toggle-visible-track-transition:transform 75ms 0ms cubic-bezier(0, 0, .2, 1);--mat-slide-toggle-with-icon-handle-size:20px;--mat-slide-toggle-touch-target-size:48px}html{--mat-slide-toggle-selected-icon-color:white;--mat-slide-toggle-disabled-selected-icon-color:white;--mat-slide-toggle-selected-focus-state-layer-color:#3f51b5;--mat-slide-toggle-selected-handle-color:#3f51b5;--mat-slide-toggle-selected-hover-state-layer-color:#3f51b5;--mat-slide-toggle-selected-pressed-state-layer-color:#3f51b5;--mat-slide-toggle-selected-focus-handle-color:#3f51b5;--mat-slide-toggle-selected-hover-handle-color:#3f51b5;--mat-slide-toggle-selected-pressed-handle-color:#3f51b5;--mat-slide-toggle-selected-focus-track-color:#7986cb;--mat-slide-toggle-selected-hover-track-color:#7986cb;--mat-slide-toggle-selected-pressed-track-color:#7986cb;--mat-slide-toggle-selected-track-color:#7986cb;--mat-slide-toggle-disabled-label-text-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-slide-toggle-disabled-handle-elevation-shadow:0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-slide-toggle-disabled-selected-handle-color:rgba(0, 0, 0, .87);--mat-slide-toggle-disabled-selected-track-color:rgba(0, 0, 0, .87);--mat-slide-toggle-disabled-unselected-handle-color:rgba(0, 0, 0, .87);--mat-slide-toggle-disabled-unselected-icon-color:#f6f6f6;--mat-slide-toggle-disabled-unselected-track-color:rgba(0, 0, 0, .87);--mat-slide-toggle-handle-elevation-shadow:0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-slide-toggle-handle-surface-color:white;--mat-slide-toggle-label-text-color:rgba(0, 0, 0, .87);--mat-slide-toggle-unselected-hover-handle-color:#424242;--mat-slide-toggle-unselected-focus-handle-color:#424242;--mat-slide-toggle-unselected-focus-state-layer-color:rgba(0, 0, 0, .87);--mat-slide-toggle-unselected-focus-track-color:rgba(0, 0, 0, .12);--mat-slide-toggle-unselected-icon-color:#f6f6f6;--mat-slide-toggle-unselected-handle-color:rgba(0, 0, 0, .54);--mat-slide-toggle-unselected-hover-state-layer-color:rgba(0, 0, 0, .87);--mat-slide-toggle-unselected-hover-track-color:rgba(0, 0, 0, .12);--mat-slide-toggle-unselected-pressed-handle-color:#424242;--mat-slide-toggle-unselected-pressed-track-color:rgba(0, 0, 0, .12);--mat-slide-toggle-unselected-pressed-state-layer-color:rgba(0, 0, 0, .87);--mat-slide-toggle-unselected-track-color:rgba(0, 0, 0, .12)}html{--mat-slide-toggle-state-layer-size:40px;--mat-slide-toggle-touch-target-display:block}html{--mat-slide-toggle-label-text-font:Roboto, sans-serif;--mat-slide-toggle-label-text-line-height:20px;--mat-slide-toggle-label-text-size:14px;--mat-slide-toggle-label-text-tracking:.0178571429em;--mat-slide-toggle-label-text-weight:400}html{--mat-radio-disabled-selected-icon-opacity:.38;--mat-radio-disabled-unselected-icon-opacity:.38;--mat-radio-state-layer-size:40px;--mat-radio-touch-target-size:48px}html{--mat-radio-state-layer-size:40px;--mat-radio-touch-target-display:block}html{--mat-radio-label-text-font:Roboto, sans-serif;--mat-radio-label-text-line-height:20px;--mat-radio-label-text-size:14px;--mat-radio-label-text-tracking:.0178571429em;--mat-radio-label-text-weight:400}html{--mat-slider-active-track-height:6px;--mat-slider-active-track-shape:9999px;--mat-slider-handle-elevation:0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-slider-handle-height:20px;--mat-slider-handle-shape:50%;--mat-slider-handle-width:20px;--mat-slider-inactive-track-height:4px;--mat-slider-inactive-track-shape:9999px;--mat-slider-value-indicator-border-radius:4px;--mat-slider-value-indicator-caret-display:block;--mat-slider-value-indicator-container-transform:translateX(-50%);--mat-slider-value-indicator-height:32px;--mat-slider-value-indicator-padding:0 12px;--mat-slider-value-indicator-text-transform:none;--mat-slider-value-indicator-width:auto;--mat-slider-with-overlap-handle-outline-width:1px;--mat-slider-with-tick-marks-active-container-opacity:.6;--mat-slider-with-tick-marks-container-shape:50%;--mat-slider-with-tick-marks-container-size:2px;--mat-slider-with-tick-marks-inactive-container-opacity:.6;--mat-slider-value-indicator-transform-origin:bottom}html{--mat-slider-active-track-color:#3f51b5;--mat-slider-focus-handle-color:#3f51b5;--mat-slider-handle-color:#3f51b5;--mat-slider-hover-handle-color:#3f51b5;--mat-slider-focus-state-layer-color:color-mix(in srgb, #3f51b5 12%, transparent);--mat-slider-hover-state-layer-color:color-mix(in srgb, #3f51b5 4%, transparent);--mat-slider-inactive-track-color:#3f51b5;--mat-slider-ripple-color:#3f51b5;--mat-slider-with-tick-marks-active-container-color:white;--mat-slider-with-tick-marks-inactive-container-color:#3f51b5;--mat-slider-disabled-active-track-color:rgba(0, 0, 0, .87);--mat-slider-disabled-handle-color:rgba(0, 0, 0, .87);--mat-slider-disabled-inactive-track-color:rgba(0, 0, 0, .87);--mat-slider-label-container-color:#424242;--mat-slider-label-label-text-color:white;--mat-slider-value-indicator-opacity:1;--mat-slider-with-overlap-handle-outline-color:rgba(0, 0, 0, .87);--mat-slider-with-tick-marks-disabled-container-color:rgba(0, 0, 0, .87)}html{--mat-slider-label-label-text-font:Roboto, sans-serif;--mat-slider-label-label-text-size:14px;--mat-slider-label-label-text-line-height:22px;--mat-slider-label-label-text-tracking:.0071428571em;--mat-slider-label-label-text-weight:500}html{--mat-menu-container-shape:4px;--mat-menu-divider-bottom-spacing:0;--mat-menu-divider-top-spacing:0;--mat-menu-item-spacing:16px;--mat-menu-item-icon-size:24px;--mat-menu-item-leading-spacing:16px;--mat-menu-item-trailing-spacing:16px;--mat-menu-item-with-icon-leading-spacing:16px;--mat-menu-item-with-icon-trailing-spacing:16px;--mat-menu-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-menu-item-label-text-color:rgba(0, 0, 0, .87);--mat-menu-item-icon-color:rgba(0, 0, 0, .87);--mat-menu-item-hover-state-layer-color:color-mix(in srgb, rgba(0, 0, 0, .87) 4%, transparent);--mat-menu-item-focus-state-layer-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-menu-container-color:white;--mat-menu-divider-color:rgba(0, 0, 0, .12)}html{--mat-menu-item-label-text-font:Roboto, sans-serif;--mat-menu-item-label-text-size:16px;--mat-menu-item-label-text-tracking:.03125em;--mat-menu-item-label-text-line-height:24px;--mat-menu-item-label-text-weight:400}html{--mat-list-active-indicator-color:transparent;--mat-list-active-indicator-shape:4px;--mat-list-list-item-container-shape:0;--mat-list-list-item-leading-avatar-shape:50%;--mat-list-list-item-container-color:transparent;--mat-list-list-item-selected-container-color:transparent;--mat-list-list-item-leading-avatar-color:transparent;--mat-list-list-item-leading-icon-size:24px;--mat-list-list-item-leading-avatar-size:40px;--mat-list-list-item-trailing-icon-size:24px;--mat-list-list-item-disabled-state-layer-color:transparent;--mat-list-list-item-disabled-state-layer-opacity:0;--mat-list-list-item-disabled-label-text-opacity:.38;--mat-list-list-item-disabled-leading-icon-opacity:.38;--mat-list-list-item-disabled-trailing-icon-opacity:.38}html{--mat-list-list-item-label-text-color:rgba(0, 0, 0, .87);--mat-list-list-item-supporting-text-color:rgba(0, 0, 0, .54);--mat-list-list-item-leading-icon-color:rgba(0, 0, 0, .54);--mat-list-list-item-trailing-supporting-text-color:rgba(0, 0, 0, .54);--mat-list-list-item-trailing-icon-color:rgba(0, 0, 0, .54);--mat-list-list-item-selected-trailing-icon-color:rgba(0, 0, 0, .54);--mat-list-list-item-disabled-label-text-color:rgba(0, 0, 0, .87);--mat-list-list-item-disabled-leading-icon-color:rgba(0, 0, 0, .87);--mat-list-list-item-disabled-trailing-icon-color:rgba(0, 0, 0, .87);--mat-list-list-item-hover-label-text-color:rgba(0, 0, 0, .87);--mat-list-list-item-hover-leading-icon-color:rgba(0, 0, 0, .54);--mat-list-list-item-hover-state-layer-color:rgba(0, 0, 0, .87);--mat-list-list-item-hover-state-layer-opacity:.04;--mat-list-list-item-hover-trailing-icon-color:rgba(0, 0, 0, .54);--mat-list-list-item-focus-label-text-color:rgba(0, 0, 0, .87);--mat-list-list-item-focus-state-layer-color:rgba(0, 0, 0, .87);--mat-list-list-item-focus-state-layer-opacity:.12}html{--mat-list-list-item-leading-icon-start-space:16px;--mat-list-list-item-leading-icon-end-space:32px;--mat-list-list-item-one-line-container-height:48px;--mat-list-list-item-two-line-container-height:64px;--mat-list-list-item-three-line-container-height:88px}html{--mat-list-list-item-label-text-font:Roboto, sans-serif;--mat-list-list-item-label-text-line-height:24px;--mat-list-list-item-label-text-size:16px;--mat-list-list-item-label-text-tracking:.03125em;--mat-list-list-item-label-text-weight:400;--mat-list-list-item-supporting-text-font:Roboto, sans-serif;--mat-list-list-item-supporting-text-line-height:20px;--mat-list-list-item-supporting-text-size:14px;--mat-list-list-item-supporting-text-tracking:.0178571429em;--mat-list-list-item-supporting-text-weight:400;--mat-list-list-item-trailing-supporting-text-font:Roboto, sans-serif;--mat-list-list-item-trailing-supporting-text-line-height:20px;--mat-list-list-item-trailing-supporting-text-size:12px;--mat-list-list-item-trailing-supporting-text-tracking:.0333333333em;--mat-list-list-item-trailing-supporting-text-weight:400}html{--mat-paginator-page-size-select-width:84px;--mat-paginator-page-size-select-touch-target-height:48px}html{--mat-paginator-container-text-color:rgba(0, 0, 0, .87);--mat-paginator-container-background-color:white;--mat-paginator-enabled-icon-color:rgba(0, 0, 0, .54);--mat-paginator-disabled-icon-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent)}html{--mat-paginator-container-size:56px;--mat-paginator-form-field-container-height:40px;--mat-paginator-form-field-container-vertical-padding:8px;--mat-paginator-touch-target-display:block}html{--mat-paginator-container-text-font:Roboto, sans-serif;--mat-paginator-container-text-line-height:20px;--mat-paginator-container-text-size:12px;--mat-paginator-container-text-tracking:.0333333333em;--mat-paginator-container-text-weight:400;--mat-paginator-select-trigger-text-size:12px}html{--mat-tab-container-height:48px;--mat-tab-divider-color:transparent;--mat-tab-divider-height:0;--mat-tab-active-indicator-height:2px;--mat-tab-active-indicator-shape:0}html{--mat-checkbox-disabled-selected-checkmark-color:white;--mat-checkbox-selected-focus-state-layer-opacity:.12;--mat-checkbox-selected-hover-state-layer-opacity:.04;--mat-checkbox-selected-pressed-state-layer-opacity:.12;--mat-checkbox-unselected-focus-state-layer-opacity:.12;--mat-checkbox-unselected-hover-state-layer-opacity:.04;--mat-checkbox-unselected-pressed-state-layer-opacity:.12;--mat-checkbox-touch-target-size:48px}html{--mat-checkbox-disabled-label-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-checkbox-label-text-color:rgba(0, 0, 0, .87);--mat-checkbox-disabled-selected-icon-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-checkbox-disabled-unselected-icon-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-checkbox-selected-checkmark-color:white;--mat-checkbox-selected-focus-icon-color:#ff4081;--mat-checkbox-selected-hover-icon-color:#ff4081;--mat-checkbox-selected-icon-color:#ff4081;--mat-checkbox-selected-pressed-icon-color:#ff4081;--mat-checkbox-unselected-focus-icon-color:rgba(0, 0, 0, .87);--mat-checkbox-unselected-hover-icon-color:rgba(0, 0, 0, .87);--mat-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mat-checkbox-selected-focus-state-layer-color:#ff4081;--mat-checkbox-selected-hover-state-layer-color:#ff4081;--mat-checkbox-selected-pressed-state-layer-color:#ff4081;--mat-checkbox-unselected-focus-state-layer-color:rgba(0, 0, 0, .87);--mat-checkbox-unselected-hover-state-layer-color:rgba(0, 0, 0, .87);--mat-checkbox-unselected-pressed-state-layer-color:rgba(0, 0, 0, .87)}html{--mat-checkbox-touch-target-display:block;--mat-checkbox-state-layer-size:40px}html{--mat-checkbox-label-text-font:Roboto, sans-serif;--mat-checkbox-label-text-line-height:20px;--mat-checkbox-label-text-size:14px;--mat-checkbox-label-text-tracking:.0178571429em;--mat-checkbox-label-text-weight:400}html{--mat-button-filled-container-shape:4px;--mat-button-filled-horizontal-padding:16px;--mat-button-filled-icon-offset:-4px;--mat-button-filled-icon-spacing:8px;--mat-button-filled-touch-target-size:48px;--mat-button-outlined-container-shape:4px;--mat-button-outlined-horizontal-padding:15px;--mat-button-outlined-icon-offset:-4px;--mat-button-outlined-icon-spacing:8px;--mat-button-outlined-keep-touch-target:false;--mat-button-outlined-outline-width:1px;--mat-button-outlined-touch-target-size:48px;--mat-button-protected-container-elevation-shadow:0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mat-button-protected-container-shape:4px;--mat-button-protected-disabled-container-elevation-shadow:0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-button-protected-focus-container-elevation-shadow:0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mat-button-protected-horizontal-padding:16px;--mat-button-protected-hover-container-elevation-shadow:0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mat-button-protected-icon-offset:-4px;--mat-button-protected-icon-spacing:8px;--mat-button-protected-pressed-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-button-protected-touch-target-size:48px;--mat-button-text-container-shape:4px;--mat-button-text-horizontal-padding:8px;--mat-button-text-icon-offset:0;--mat-button-text-icon-spacing:8px;--mat-button-text-with-icon-horizontal-padding:8px;--mat-button-text-touch-target-size:48px;--mat-button-tonal-container-shape:4px;--mat-button-tonal-horizontal-padding:16px;--mat-button-tonal-icon-offset:-4px;--mat-button-tonal-icon-spacing:8px;--mat-button-tonal-touch-target-size:48px}html{--mat-button-filled-container-color:white;--mat-button-filled-disabled-container-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-button-filled-disabled-label-text-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-button-filled-disabled-state-layer-color:rgba(0, 0, 0, .54);--mat-button-filled-focus-state-layer-opacity:.12;--mat-button-filled-hover-state-layer-opacity:.04;--mat-button-filled-label-text-color:rgba(0, 0, 0, .87);--mat-button-filled-pressed-state-layer-opacity:.12;--mat-button-filled-ripple-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-button-filled-state-layer-color:rgba(0, 0, 0, .87);--mat-button-outlined-disabled-label-text-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-button-outlined-disabled-outline-color:rgba(0, 0, 0, .12);--mat-button-outlined-disabled-state-layer-color:rgba(0, 0, 0, .54);--mat-button-outlined-focus-state-layer-opacity:.12;--mat-button-outlined-hover-state-layer-opacity:.04;--mat-button-outlined-label-text-color:rgba(0, 0, 0, .87);--mat-button-outlined-outline-color:rgba(0, 0, 0, .12);--mat-button-outlined-pressed-state-layer-opacity:.12;--mat-button-outlined-ripple-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-button-outlined-state-layer-color:rgba(0, 0, 0, .87);--mat-button-protected-container-color:white;--mat-button-protected-disabled-container-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-button-protected-disabled-label-text-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-button-protected-disabled-state-layer-color:rgba(0, 0, 0, .54);--mat-button-protected-focus-state-layer-opacity:.12;--mat-button-protected-hover-state-layer-opacity:.04;--mat-button-protected-label-text-color:rgba(0, 0, 0, .87);--mat-button-protected-pressed-state-layer-opacity:.12;--mat-button-protected-ripple-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-button-protected-state-layer-color:rgba(0, 0, 0, .87);--mat-button-text-disabled-label-text-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-button-text-disabled-state-layer-color:rgba(0, 0, 0, .54);--mat-button-text-focus-state-layer-opacity:.12;--mat-button-text-hover-state-layer-opacity:.04;--mat-button-text-label-text-color:rgba(0, 0, 0, .87);--mat-button-text-pressed-state-layer-opacity:.12;--mat-button-text-ripple-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-button-text-state-layer-color:rgba(0, 0, 0, .87);--mat-button-tonal-container-color:white;--mat-button-tonal-disabled-container-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-button-tonal-disabled-label-text-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-button-tonal-disabled-state-layer-color:rgba(0, 0, 0, .54);--mat-button-tonal-focus-state-layer-opacity:.12;--mat-button-tonal-hover-state-layer-opacity:.04;--mat-button-tonal-label-text-color:rgba(0, 0, 0, .87);--mat-button-tonal-pressed-state-layer-opacity:.12;--mat-button-tonal-ripple-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-button-tonal-state-layer-color:rgba(0, 0, 0, .87)}html{--mat-button-filled-container-height:36px;--mat-button-filled-touch-target-display:block;--mat-button-outlined-container-height:36px;--mat-button-outlined-touch-target-display:block;--mat-button-protected-container-height:36px;--mat-button-protected-touch-target-display:block;--mat-button-text-container-height:36px;--mat-button-text-touch-target-display:block;--mat-button-tonal-container-height:36px;--mat-button-tonal-touch-target-display:block}html{--mat-button-filled-label-text-font:Roboto, sans-serif;--mat-button-filled-label-text-size:14px;--mat-button-filled-label-text-tracking:.0892857143em;--mat-button-filled-label-text-transform:none;--mat-button-filled-label-text-weight:500;--mat-button-outlined-label-text-font:Roboto, sans-serif;--mat-button-outlined-label-text-size:14px;--mat-button-outlined-label-text-tracking:.0892857143em;--mat-button-outlined-label-text-transform:none;--mat-button-outlined-label-text-weight:500;--mat-button-protected-label-text-font:Roboto, sans-serif;--mat-button-protected-label-text-size:14px;--mat-button-protected-label-text-tracking:.0892857143em;--mat-button-protected-label-text-transform:none;--mat-button-protected-label-text-weight:500;--mat-button-text-label-text-font:Roboto, sans-serif;--mat-button-text-label-text-size:14px;--mat-button-text-label-text-tracking:.0892857143em;--mat-button-text-label-text-transform:none;--mat-button-text-label-text-weight:500;--mat-button-tonal-label-text-font:Roboto, sans-serif;--mat-button-tonal-label-text-size:14px;--mat-button-tonal-label-text-tracking:.0892857143em;--mat-button-tonal-label-text-transform:none;--mat-button-tonal-label-text-weight:500}html{--mat-icon-button-icon-size:24px;--mat-icon-button-container-shape:50%;--mat-icon-button-touch-target-size:48px}html{--mat-icon-button-disabled-icon-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-icon-button-disabled-state-layer-color:rgba(0, 0, 0, .54);--mat-icon-button-focus-state-layer-opacity:.12;--mat-icon-button-hover-state-layer-opacity:.04;--mat-icon-button-icon-color:inherit;--mat-icon-button-pressed-state-layer-opacity:.12;--mat-icon-button-ripple-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-icon-button-state-layer-color:rgba(0, 0, 0, .87)}html{--mat-icon-button-touch-target-display:block}html{--mat-fab-container-elevation-shadow:0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-fab-container-shape:50%;--mat-fab-touch-target-size:48px;--mat-fab-extended-container-elevation-shadow:0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-fab-extended-container-height:48px;--mat-fab-extended-container-shape:24px;--mat-fab-extended-focus-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-fab-extended-hover-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-fab-extended-pressed-container-elevation-shadow:0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-fab-focus-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-fab-hover-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-fab-pressed-container-elevation-shadow:0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-fab-small-container-elevation-shadow:0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-fab-small-container-shape:50%;--mat-fab-small-touch-target-size:48px;--mat-fab-small-focus-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-fab-small-hover-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-fab-small-pressed-container-elevation-shadow:0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12)}html{--mat-fab-container-color:white;--mat-fab-disabled-state-container-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-fab-disabled-state-foreground-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-fab-disabled-state-layer-color:rgba(0, 0, 0, .54);--mat-fab-focus-state-layer-opacity:.12;--mat-fab-foreground-color:rgba(0, 0, 0, .87);--mat-fab-hover-state-layer-opacity:.04;--mat-fab-pressed-state-layer-opacity:.12;--mat-fab-ripple-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-fab-small-container-color:white;--mat-fab-small-disabled-state-container-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-fab-small-disabled-state-foreground-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-fab-small-disabled-state-layer-color:rgba(0, 0, 0, .54);--mat-fab-small-focus-state-layer-opacity:.12;--mat-fab-small-foreground-color:rgba(0, 0, 0, .87);--mat-fab-small-hover-state-layer-opacity:.04;--mat-fab-small-pressed-state-layer-opacity:.12;--mat-fab-small-ripple-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-fab-small-state-layer-color:rgba(0, 0, 0, .87);--mat-fab-state-layer-color:rgba(0, 0, 0, .87)}html{--mat-fab-small-touch-target-display:block;--mat-fab-touch-target-display:block}html{--mat-fab-extended-label-text-font:Roboto, sans-serif;--mat-fab-extended-label-text-size:14px;--mat-fab-extended-label-text-tracking:.0892857143em;--mat-fab-extended-label-text-weight:500}html{--mat-snack-bar-container-shape:4px}html{--mat-snack-bar-container-color:#424242;--mat-snack-bar-supporting-text-color:white;--mat-snack-bar-button-color:#7986cb}html{--mat-snack-bar-supporting-text-font:Roboto, sans-serif;--mat-snack-bar-supporting-text-line-height:20px;--mat-snack-bar-supporting-text-size:14px;--mat-snack-bar-supporting-text-weight:400}html{--mat-table-row-item-outline-width:1px}html{--mat-table-background-color:white;--mat-table-header-headline-color:rgba(0, 0, 0, .87);--mat-table-row-item-label-text-color:rgba(0, 0, 0, .87);--mat-table-row-item-outline-color:rgba(0, 0, 0, .12)}html{--mat-table-header-container-height:56px;--mat-table-footer-container-height:52px;--mat-table-row-item-container-height:52px}html{--mat-table-header-headline-font:Roboto, sans-serif;--mat-table-header-headline-line-height:22px;--mat-table-header-headline-size:14px;--mat-table-header-headline-weight:500;--mat-table-header-headline-tracking:.0071428571em;--mat-table-row-item-label-text-font:Roboto, sans-serif;--mat-table-row-item-label-text-line-height:20px;--mat-table-row-item-label-text-size:14px;--mat-table-row-item-label-text-weight:400;--mat-table-row-item-label-text-tracking:.0178571429em;--mat-table-footer-supporting-text-font:Roboto, sans-serif;--mat-table-footer-supporting-text-line-height:20px;--mat-table-footer-supporting-text-size:14px;--mat-table-footer-supporting-text-weight:400;--mat-table-footer-supporting-text-tracking:.0178571429em}html{--mat-progress-spinner-active-indicator-width:4px;--mat-progress-spinner-size:48px}html{--mat-progress-spinner-active-indicator-color:#3f51b5}html{--mat-badge-container-shape:50%;--mat-badge-container-size:unset;--mat-badge-small-size-container-size:unset;--mat-badge-large-size-container-size:unset;--mat-badge-legacy-container-size:22px;--mat-badge-legacy-small-size-container-size:16px;--mat-badge-legacy-large-size-container-size:28px;--mat-badge-container-offset:-11px 0;--mat-badge-small-size-container-offset:-8px 0;--mat-badge-large-size-container-offset:-14px 0;--mat-badge-container-overlap-offset:-11px;--mat-badge-small-size-container-overlap-offset:-8px;--mat-badge-large-size-container-overlap-offset:-14px;--mat-badge-container-padding:0;--mat-badge-small-size-container-padding:0;--mat-badge-large-size-container-padding:0}html{--mat-badge-background-color:#3f51b5;--mat-badge-text-color:white;--mat-badge-disabled-state-background-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-badge-disabled-state-text-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent)}html{--mat-badge-text-font:Roboto, sans-serif;--mat-badge-line-height:22px;--mat-badge-text-size:12px;--mat-badge-text-weight:600;--mat-badge-small-size-text-size:9px;--mat-badge-small-size-line-height:16px;--mat-badge-large-size-text-size:24px;--mat-badge-large-size-line-height:28px}html{--mat-bottom-sheet-container-shape:4px}html{--mat-bottom-sheet-container-text-color:rgba(0, 0, 0, .87);--mat-bottom-sheet-container-background-color:white}html{--mat-bottom-sheet-container-text-font:Roboto, sans-serif;--mat-bottom-sheet-container-text-line-height:20px;--mat-bottom-sheet-container-text-size:14px;--mat-bottom-sheet-container-text-tracking:.0178571429em;--mat-bottom-sheet-container-text-weight:400}html{--mat-button-toggle-focus-state-layer-opacity:.12;--mat-button-toggle-hover-state-layer-opacity:.04;--mat-button-toggle-legacy-focus-state-layer-opacity:1;--mat-button-toggle-legacy-height:36px;--mat-button-toggle-legacy-shape:2px;--mat-button-toggle-shape:4px}html{--mat-button-toggle-background-color:white;--mat-button-toggle-disabled-selected-state-background-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-button-toggle-disabled-selected-state-text-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-button-toggle-disabled-state-background-color:white;--mat-button-toggle-disabled-state-text-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-button-toggle-divider-color:rgba(0, 0, 0, .12);--mat-button-toggle-legacy-disabled-selected-state-background-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-button-toggle-legacy-disabled-state-background-color:white;--mat-button-toggle-legacy-disabled-state-text-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-button-toggle-legacy-selected-state-background-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-button-toggle-legacy-selected-state-text-color:rgba(0, 0, 0, .87);--mat-button-toggle-legacy-state-layer-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-button-toggle-legacy-text-color:rgba(0, 0, 0, .87);--mat-button-toggle-selected-state-background-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-button-toggle-selected-state-text-color:rgba(0, 0, 0, .87);--mat-button-toggle-state-layer-color:rgba(0, 0, 0, .87);--mat-button-toggle-text-color:rgba(0, 0, 0, .87)}html{--mat-button-toggle-height:48px}html{--mat-button-toggle-label-text-font:Roboto, sans-serif;--mat-button-toggle-label-text-line-height:24px;--mat-button-toggle-label-text-size:16px;--mat-button-toggle-label-text-tracking:.03125em;--mat-button-toggle-label-text-weight:400;--mat-button-toggle-legacy-label-text-font:Roboto, sans-serif;--mat-button-toggle-legacy-label-text-line-height:24px;--mat-button-toggle-legacy-label-text-size:16px;--mat-button-toggle-legacy-label-text-tracking:.03125em;--mat-button-toggle-legacy-label-text-weight:400}html{--mat-datepicker-calendar-container-shape:4px;--mat-datepicker-calendar-container-touch-shape:4px;--mat-datepicker-calendar-container-elevation-shadow:0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mat-datepicker-calendar-container-touch-elevation-shadow:0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12)}html{--mat-datepicker-calendar-date-in-range-state-background-color:color-mix(in srgb, #3f51b5 20%, transparent);--mat-datepicker-calendar-date-in-comparison-range-state-background-color:color-mix(in srgb, #ff4081 20%, transparent);--mat-datepicker-calendar-date-in-overlap-range-state-background-color:#a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color:rgb(69.5241935484, 163.4758064516, 93.9516129032);--mat-datepicker-calendar-date-selected-state-text-color:white;--mat-datepicker-calendar-date-selected-state-background-color:#3f51b5;--mat-datepicker-calendar-date-selected-disabled-state-background-color:color-mix(in srgb, #3f51b5 38%, transparent);--mat-datepicker-calendar-date-today-selected-state-outline-color:white;--mat-datepicker-calendar-date-focus-state-background-color:color-mix(in srgb, #3f51b5 12%, transparent);--mat-datepicker-calendar-date-hover-state-background-color:color-mix(in srgb, #3f51b5 4%, transparent);--mat-datepicker-toggle-active-state-icon-color:#3f51b5;--mat-datepicker-toggle-icon-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-body-label-text-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-period-button-text-color:rgba(0, 0, 0, .87);--mat-datepicker-calendar-period-button-icon-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-navigation-button-icon-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-header-divider-color:rgba(0, 0, 0, .12);--mat-datepicker-calendar-header-text-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-date-today-outline-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-date-today-disabled-state-outline-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-datepicker-calendar-date-text-color:rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-outline-color:transparent;--mat-datepicker-calendar-date-disabled-state-text-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-datepicker-calendar-date-preview-state-outline-color:rgba(0, 0, 0, .54);--mat-datepicker-range-input-separator-color:rgba(0, 0, 0, .87);--mat-datepicker-range-input-disabled-state-separator-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-datepicker-range-input-disabled-state-text-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-datepicker-calendar-container-background-color:white;--mat-datepicker-calendar-container-text-color:rgba(0, 0, 0, .87)}html{--mat-datepicker-calendar-text-font:Roboto, sans-serif;--mat-datepicker-calendar-text-size:13px;--mat-datepicker-calendar-body-label-text-size:14px;--mat-datepicker-calendar-body-label-text-weight:500;--mat-datepicker-calendar-period-button-text-size:14px;--mat-datepicker-calendar-period-button-text-weight:500;--mat-datepicker-calendar-header-text-size:11px;--mat-datepicker-calendar-header-text-weight:400}html{--mat-divider-width:1px}html{--mat-divider-color:rgba(0, 0, 0, .12)}html{--mat-expansion-container-shape:4px;--mat-expansion-container-elevation-shadow:0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mat-expansion-legacy-header-indicator-display:inline-block;--mat-expansion-header-indicator-display:none}html{--mat-expansion-container-background-color:white;--mat-expansion-container-text-color:rgba(0, 0, 0, .87);--mat-expansion-actions-divider-color:rgba(0, 0, 0, .12);--mat-expansion-header-hover-state-layer-color:color-mix(in srgb, rgba(0, 0, 0, .87) 4%, transparent);--mat-expansion-header-focus-state-layer-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-expansion-header-disabled-state-text-color:color-mix(in srgb, rgba(0, 0, 0, .87) 38%, transparent);--mat-expansion-header-text-color:rgba(0, 0, 0, .87);--mat-expansion-header-description-color:rgba(0, 0, 0, .54);--mat-expansion-header-indicator-color:rgba(0, 0, 0, .54)}html{--mat-expansion-header-collapsed-state-height:48px;--mat-expansion-header-expanded-state-height:64px}html{--mat-expansion-header-text-font:Roboto, sans-serif;--mat-expansion-header-text-size:14px;--mat-expansion-header-text-weight:500;--mat-expansion-header-text-line-height:inherit;--mat-expansion-header-text-tracking:inherit;--mat-expansion-container-text-font:Roboto, sans-serif;--mat-expansion-container-text-line-height:20px;--mat-expansion-container-text-size:14px;--mat-expansion-container-text-tracking:.0178571429em;--mat-expansion-container-text-weight:400}html{--mat-grid-list-tile-header-primary-text-size:14px;--mat-grid-list-tile-header-secondary-text-size:12px;--mat-grid-list-tile-footer-primary-text-size:14px;--mat-grid-list-tile-footer-secondary-text-size:12px}html{--mat-icon-color:inherit}html{--mat-sidenav-container-shape:0;--mat-sidenav-container-elevation-shadow:0px 8px 10px -5px rgba(0, 0, 0, .2), 0px 16px 24px 2px rgba(0, 0, 0, .14), 0px 6px 30px 5px rgba(0, 0, 0, .12);--mat-sidenav-container-width:auto}html{--mat-sidenav-container-divider-color:rgba(0, 0, 0, .12);--mat-sidenav-container-background-color:white;--mat-sidenav-container-text-color:rgba(0, 0, 0, .87);--mat-sidenav-content-background-color:#fafafa;--mat-sidenav-content-text-color:rgba(0, 0, 0, .87);--mat-sidenav-scrim-color:rgba(0, 0, 0, .6)}html{--mat-stepper-header-focus-state-layer-shape:0;--mat-stepper-header-hover-state-layer-shape:0}html{--mat-stepper-header-icon-foreground-color:white;--mat-stepper-header-selected-state-icon-background-color:#3f51b5;--mat-stepper-header-selected-state-icon-foreground-color:white;--mat-stepper-header-done-state-icon-background-color:#3f51b5;--mat-stepper-header-done-state-icon-foreground-color:white;--mat-stepper-header-edit-state-icon-background-color:#3f51b5;--mat-stepper-header-edit-state-icon-foreground-color:white;--mat-stepper-container-color:white;--mat-stepper-line-color:rgba(0, 0, 0, .12);--mat-stepper-header-hover-state-layer-color:color-mix(in srgb, rgba(0, 0, 0, .87) 4%, transparent);--mat-stepper-header-focus-state-layer-color:color-mix(in srgb, rgba(0, 0, 0, .87) 12%, transparent);--mat-stepper-header-label-text-color:rgba(0, 0, 0, .54);--mat-stepper-header-optional-label-text-color:rgba(0, 0, 0, .54);--mat-stepper-header-selected-state-label-text-color:rgba(0, 0, 0, .87);--mat-stepper-header-error-state-label-text-color:#f44336;--mat-stepper-header-icon-background-color:rgba(0, 0, 0, .54);--mat-stepper-header-error-state-icon-foreground-color:#f44336;--mat-stepper-header-error-state-icon-background-color:transparent}html{--mat-stepper-header-height:72px}html{--mat-stepper-container-text-font:Roboto, sans-serif;--mat-stepper-header-label-text-font:Roboto, sans-serif;--mat-stepper-header-label-text-size:14px;--mat-stepper-header-label-text-weight:400;--mat-stepper-header-error-state-label-text-size:16px;--mat-stepper-header-selected-state-label-text-size:16px;--mat-stepper-header-selected-state-label-text-weight:400}html{--mat-sort-arrow-color:rgba(0, 0, 0, .87)}html{--mat-toolbar-container-background-color:white;--mat-toolbar-container-text-color:rgba(0, 0, 0, .87)}html{--mat-toolbar-standard-height:64px;--mat-toolbar-mobile-height:56px}html{--mat-toolbar-title-text-font:Roboto, sans-serif;--mat-toolbar-title-text-line-height:32px;--mat-toolbar-title-text-size:20px;--mat-toolbar-title-text-tracking:.0125em;--mat-toolbar-title-text-weight:500}html{--mat-tree-container-background-color:white;--mat-tree-node-text-color:rgba(0, 0, 0, .87)}html{--mat-tree-node-min-height:48px}html{--mat-tree-node-text-font:Roboto, sans-serif;--mat-tree-node-text-size:14px;--mat-tree-node-text-weight:400}html{--mat-timepicker-container-shape:4px;--mat-timepicker-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-timepicker-container-background-color:white}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;overflow:hidden}body{font-family:Roboto,Helvetica Neue,sans-serif;background-color:#f5f5f5}</style><link rel="stylesheet" href="styles-QBUDNRKH.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-QBUDNRKH.css"></noscript></head>
|
|
12
12
|
<body>
|
|
13
13
|
<app-root></app-root>
|
|
14
|
-
<link rel="modulepreload" href="chunk-JGNPKRLU.js"><script src="polyfills-5CFQRCPP.js" type="module"></script><script src="main-
|
|
14
|
+
<link rel="modulepreload" href="chunk-JGNPKRLU.js"><script src="polyfills-5CFQRCPP.js" type="module"></script><script src="main-MI5RADR4.js" type="module"></script></body>
|
|
15
15
|
</html>
|
|
@@ -5580,14 +5580,14 @@ div.mat-mdc-select-panel {
|
|
|
5580
5580
|
.mat-mdc-tooltip-hide {
|
|
5581
5581
|
animation: mat-mdc-tooltip-hide 75ms cubic-bezier(0.4, 0, 1, 1) forwards;
|
|
5582
5582
|
}
|
|
5583
|
-
`],encapsulation:2})}return i})();var Is=(()=>{class i{static \u0275fac=function(t){return new(t||i)};static \u0275mod=j({type:i});static \u0275inj=z({imports:[sa,Pt,ee,_i]})}return i})();function wn(i,o){for(let e of i){let t=e.indexOf("=");if(t>0&&e.slice(0,t)===o)return e.slice(t+1);let n=e.indexOf(" ");if(n>0&&e.slice(0,n)===o)return e.slice(n+1).trim()}for(let e=0;e<i.length;e++)if(i[e]===o&&e+1<i.length)return i[e+1];return null}function Wn(i,o,e,t){for(let n of i){let a=n.split(/\s|=/)[0];if(a===o)return!0;if(a===e)return!1}return t}function Ke(i,o,e){let t=wn(i,o);return t!==null?t:e}function Ee(i,o,e){let t=wn(i,o);if(t!==null){let n=parseInt(t,10);return isNaN(n)?e:n}return e}function ut(i,o,e){let t=wn(i,o);if(t!==null){let n=parseFloat(t);return isNaN(n)?e:n}return e}var ey=(i,o)=>o.path;function ty(i,o){i&1&&(s(0,"span",7),m(1,"(dir)"),l())}function iy(i,o){if(i&1&&(s(0,"mat-option",5)(1,"span",6),m(2),l(),M(3,ty,2,0,"span",7),l()),i&2){let e=o.$implicit;x("value",e.path),c(2),q(e.path),c(),E(e.isDir?3:-1)}}var Dp=(()=>{class i{constructor(){this.fb=d(un),this.service=d(_t),this.label="Path",this.placeholder="/path/to/file",this.required=!1,this.fieldClass="",this.existingPaths=[],this.onChange=e=>{},this.onTouched=()=>{},this._subscription=null,this.suggestions=R([]),this.innerForm=this.fb.group({value:[""]})}writeValue(e){let t=(e??"").toString();this.innerForm.patchValue({value:t},{emitEvent:!1})}registerOnChange(e){this.onChange=e}registerOnTouched(e){this.onTouched=e}setDisabledState(e){e?this.innerForm.disable():this.innerForm.enable()}ngOnInit(){this._subscription=this.innerForm.get("value").valueChanges.subscribe(e=>{this.onChange(e)}),this._subscription.add(this.innerForm.get("value").valueChanges.pipe(Vt(200),xi(),We(e=>{let t=(e??"").trim();return t?this.service.getLlamaAutocomplete("path",t).pipe(Kt(()=>ge([]))):ge(this.emptySuggestions)})).subscribe(e=>{this.suggestions.set(e)}))}get emptySuggestions(){return this.existingPaths.filter(Boolean).map(e=>({path:e,source:"existing config"}))}ngOnDestroy(){this._subscription?.unsubscribe()}onSelect(e){this.innerForm.patchValue({value:e},{emitEvent:!1}),this.onChange(e)}onBlur(){this.onTouched()}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275cmp=T({type:i,selectors:[["app-file-autocomplete"]],inputs:{label:"label",placeholder:"placeholder",required:"required",fieldClass:"fieldClass",existingPaths:"existingPaths"},features:[J([{provide:Mi,useExisting:nt(()=>i),multi:!0}])],decls:9,vars:7,consts:[["auto","matAutocomplete"],[3,"formGroup"],["appearance","outline",1,"full-width"],["matInput","","formControlName","value",3,"blur","placeholder","required","matAutocomplete"],[3,"optionSelected"],[3,"value"],[1,"file-path"],[1,"file-dir"]],template:function(t,n){if(t&1&&(ui(0,1),s(1,"mat-form-field",2)(2,"input",3),A("blur",function(){return n.onBlur()}),l(),b(),s(3,"mat-label"),m(4),l()(),s(5,"mat-autocomplete",4,0),A("optionSelected",function(r){return n.onSelect(r.option.value)}),me(7,iy,4,3,"mat-option",5,ey),l(),hi()),t&2){let a=je(6);x("formGroup",n.innerForm),c(),et(n.fieldClass),c(),x("placeholder",n.placeholder)("required",n.required)("matAutocomplete",a),y(),c(2),q(n.label),c(3),ue(n.suggestions())}},dependencies:[Le,pn,Ei,Ai,mn,Kr,Ut,ji,St,kt,Rt,ti,ei,xn,Cn,vt,Wi],styles:[".full-width[_ngcontent-%COMP%]{width:100%}.file-path[_ngcontent-%COMP%]{font-family:monospace}.file-dir[_ngcontent-%COMP%]{margin-left:4px;color:#1976d2;font-size:11px;font-weight:500}.file-source[_ngcontent-%COMP%]{margin-left:8px;opacity:.6;font-size:12px}"]})}}return i})();function qi(i){i||(i=d(Bt));let o=new yt(e=>{if(i.destroyed){e.next();return}return i.onDestroy(e.next.bind(e))});return e=>e.pipe(oe(o))}function qn(i,o){let t=!o?.manualCleanup?o?.injector?.get(Bt)??d(Bt):null,n=ny(o?.equal),a;o?.requireSync?a=R({kind:0},{equal:n}):a=R({kind:1,value:o?.initialValue},{equal:n});let r,u=i.subscribe({next:h=>a.set({kind:1,value:h}),error:h=>{a.set({kind:2,error:h}),r?.()},complete:()=>{r?.()}});if(o?.requireSync&&a().kind===0)throw new ae(601,!1);return r=t?.onDestroy(u.unsubscribe.bind(u)),W(()=>{let h=a();switch(h.kind){case 1:return h.value;case 2:throw h.error;case 0:throw new ae(601,!1)}},{equal:o?.equal})}function ny(i=Object.is){return(o,e)=>o.kind===1&&e.kind===1&&i(o.value,e.value)}function Rs(i){if(typeof i=="number")return i;let o=i.trim();if(!o)return 0;let e=o.split(/\s*x\s*/i),t=1,n;if(e.length>=2){let h=e[0].trim();h&&(t=parseInt(h,10),(isNaN(t)||t<1)&&(t=1)),n=e.slice(1).join("").trim()}else n=o;let a=n.match(/^(\d+)\s*([kKmM])?$/);if(!a)return 0;let r=parseInt(a[1],10),u=a[2];return u&&(u.toLowerCase()==="k"?r*=1024:u.toLowerCase()==="m"&&(r*=1024*1024)),t*r}var jc=[8192,16384,32768,65536,98304,131072,196608,262144,524288,1048576];function kp(i){if(i<=0)return"0";if(i>=1048576){let o=i/1048576;return`${o%1===0?o:o.toFixed(1)}M`}if(i>=1024){let o=i/1024;return`${o%1===0?o:o.toFixed(1)}K`}return`${i}`}function Os(i,o){if(i<=0)return"";if(o>1&&i%o===0){let e=i/o;if(jc.includes(e))return`${o} x ${kp(e)}`}return kp(i)}var oy=(i,o)=>o.command,Hc=(i,o)=>o.path,ay=(i,o)=>o.label;function ry(i,o){i&1&&(s(0,"mat-error"),m(1,"Required"),l())}function sy(i,o){i&1&&(s(0,"mat-error"),m(1,"Starts with letter, alphanumeric + hyphens/underscores, max 128 chars"),l())}function ly(i,o){i&1&&(s(0,"mat-error"),m(1,"Required"),l())}function cy(i,o){if(i&1&&(s(0,"mat-option",8)(1,"span",99),m(2),l(),s(3,"span",100),m(4),l()()),i&2){let e=o.$implicit;x("value",e.command),c(2),q(e.command),c(2),he("(",e.from,")")}}function dy(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e.path),c(),q(e.path)}}function my(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e.label),c(),q(e.label)}}function uy(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e),c(),q(e)}}function hy(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e),c(),q(e)}}function py(i,o){if(i&1&&(s(0,"div",26),m(1,"YaRN Parameters"),l(),s(2,"div",13)(3,"mat-form-field",18),v(4,"input",101),b(),s(5,"mat-label"),m(6,"YaRN Orig Ctx"),l()(),s(7,"mat-form-field",18),v(8,"input",102),b(),s(9,"mat-label"),m(10,"Extrapolation Mix"),l()(),s(11,"mat-form-field",18),v(12,"input",103),b(),s(13,"mat-label"),m(14,"Attn Factor"),l()(),s(15,"mat-form-field",18),v(16,"input",104),b(),s(17,"mat-label"),m(18,"Beta Slow"),l()(),s(19,"mat-form-field",18),v(20,"input",105),b(),s(21,"mat-label"),m(22,"Beta Fast"),l()()()),i&2){let e=D();c(3),p("changed",e.isControlChanged("yarnOrigCtx")),c(),y(),c(3),p("changed",e.isControlChanged("yarnExtFactor")),c(),y(),c(3),p("changed",e.isControlChanged("yarnAttnFactor")),c(),y(),c(3),p("changed",e.isControlChanged("yarnBetaSlow")),c(),y(),c(3),p("changed",e.isControlChanged("yarnBetaFast")),c(),y()}}function fy(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e.path),c(),q(e.path)}}function gy(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e),c(),q(e)}}function _y(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e),c(),q(e)}}function vy(i,o){if(i&1&&(s(0,"div",26),m(1,"Draft Model"),l(),v(2,"app-file-autocomplete",106),b(),s(3,"div",13)(4,"mat-form-field",18)(5,"mat-select",107),me(6,fy,2,2,"mat-option",8,Hc),l(),b(),s(8,"mat-label"),m(9,"Draft Device (multi-select)"),l()()(),s(10,"div",13)(11,"mat-form-field",18),v(12,"input",108),b(),s(13,"mat-label"),m(14,"Draft N Max"),l()(),s(15,"mat-form-field",18),v(16,"input",109),b(),s(17,"mat-label"),m(18,"Draft GPU Layers"),l()()(),s(19,"div",13)(20,"mat-form-field",18)(21,"mat-select",110),me(22,gy,2,2,"mat-option",8,xt),l(),b(),s(24,"mat-label"),m(25,"Draft Cache Type K"),l()(),s(26,"mat-form-field",18)(27,"mat-select",111),me(28,_y,2,2,"mat-option",8,xt),l(),b(),s(30,"mat-label"),m(31,"Draft Cache Type V"),l()()()),i&2){let e=D();c(2),x("existingPaths",e.existingDraftModelPaths())("fieldClass",e.isControlChanged("modelDraft")?"changed":""),y(),c(2),p("changed",e.isControlChanged("specDraftDevice")),c(),y(),c(),ue(e.availableDevices()),c(5),p("changed",e.isControlChanged("specDraftNMax")),c(),y(),c(3),p("changed",e.isControlChanged("nGpuLayersDraft")),c(),y(),c(4),p("changed",e.isControlChanged("specDraftCacheTypeK")),c(),y(),c(),ue(e.kvCacheTypes),c(4),p("changed",e.isControlChanged("specDraftCacheTypeV")),c(),y(),c(),ue(e.kvCacheTypes)}}function by(i,o){if(i&1&&(s(0,"div",26),m(1,"Ngram Mod Parameters"),l(),s(2,"div",13)(3,"mat-form-field",18),v(4,"input",112),b(),s(5,"mat-label"),m(6,"Ngram Mod N Min"),l()(),s(7,"mat-form-field",18),v(8,"input",113),b(),s(9,"mat-label"),m(10,"Ngram Mod N Max"),l()(),s(11,"mat-form-field",18),v(12,"input",114),b(),s(13,"mat-label"),m(14,"Ngram Mod Match"),l()()()),i&2){let e=D();c(3),p("changed",e.isControlChanged("specNgramModNMin")),c(),y(),c(3),p("changed",e.isControlChanged("specNgramModNMax")),c(),y(),c(3),p("changed",e.isControlChanged("specNgramModNMatch")),c(),y()}}function yy(i,o){if(i&1&&(s(0,"div",26),m(1,"Ngram Simple Parameters"),l(),s(2,"div",13)(3,"mat-form-field",18),v(4,"input",115),b(),s(5,"mat-label"),m(6,"Simple Size N"),l()(),s(7,"mat-form-field",18),v(8,"input",116),b(),s(9,"mat-label"),m(10,"Simple Size M"),l()(),s(11,"mat-form-field",18),v(12,"input",117),b(),s(13,"mat-label"),m(14,"Simple Min Hits"),l()()()),i&2){let e=D();c(3),p("changed",e.isControlChanged("specNgramSimpleSizeN")),c(),y(),c(3),p("changed",e.isControlChanged("specNgramSimpleSizeM")),c(),y(),c(3),p("changed",e.isControlChanged("specNgramSimpleMinHits")),c(),y()}}function Cy(i,o){if(i&1&&(s(0,"mat-option",8)(1,"span",99),m(2),l(),s(3,"span",100),m(4),l()()),i&2){let e=o.$implicit;x("value",e.path),c(2),q(e.path),c(2),he("(",e.source,")")}}var f={host:"127.0.0.1",port:8080,threads:-1,flashAttn:"auto",fit:"on",parallel:-1,alias:"",nPredict:-1,contextShift:"off",contBatching:"on",model:"",mmproj:"",nGpuLayers:"auto",device:[],tensorSplit:"",splitMode:"layer",mainGpu:0,fitTarget:1024,fitCtx:4096,mlock:"off",mmap:"on",cpuMoe:"off",nCpuMoe:0,ctxSize:0,batchSize:2048,ubatchSize:512,cacheTypeK:"f16",cacheTypeV:"f16",kvOffload:"on",cacheRam:8192,swaFull:"off",ropeScaling:"none",ropeScale:1,ropeFreqBase:0,ropeFreqScale:0,yarnOrigCtx:0,yarnExtFactor:-1,yarnAttnFactor:-1,yarnBetaSlow:-1,yarnBetaFast:-1,temperature:.8,seed:-1,topK:40,topP:.95,minP:.05,typicalP:1,repeatLastN:64,repeatPenalty:1,presencePenalty:0,frequencyPenalty:0,dryMultiplier:0,dryBase:1.75,mirostat:0,dynatempRange:0,modelDraft:"",specDraftDevice:[],specDraftNMax:3,nGpuLayersDraft:"auto",specDraftCacheTypeK:"f16",specDraftCacheTypeV:"f16",specType:"none",specNgramModNMin:48,specNgramModNMax:64,specNgramModNMatch:24,specNgramSimpleSizeN:12,specNgramSimpleSizeM:48,specNgramSimpleMinHits:1,lora:"",loraScaled:"",timeout:3600,threadsHttp:-1,metrics:"off",slots:"on",cachePrompt:"on",cacheReuse:0,reasoning:"auto",reasoningBudget:-1,reasoningFormat:"auto",apiKeyFile:""};function xy(i,o){let e=f[i];if(e===void 0)return!1;if(Array.isArray(o)||Array.isArray(e)){let t=Array.isArray(o)?o:[],n=Array.isArray(e)?e:[];return t.length!==n.length||t.some((a,r)=>a!==n[r])}return String(o)!==String(e)}var wy="^[a-zA-Z][a-zA-Z0-9_-]{0,127}$",Dy=["f32","f16","bf16","q8_0","q4_0","q4_1","iq4_nl","q5_0","q5_1"],ky=new Set(["--host","--port","--threads","--flash-attn","--fit","--parallel","--alias","--n-predict","--context-shift","--no-context-shift","--cont-batching","--no-cont-batching","--device","--tensor-split","--model","--mmproj","--n-gpu-layers","--split-mode","--main-gpu","--fit-target","--fit-ctx","--mlock","--mmap","--no-mmap","--cpu-moe","--n-cpu-moe","--ctx-size","--batch-size","--ubatch-size","--cache-type-k","--cache-type-v","--kv-offload","--no-kv-offload","--cache-ram","--swa-full","--rope-scaling","--rope-scale","--rope-freq-base","--rope-freq-scale","--yarn-orig-ctx","--yarn-ext-factor","--yarn-attn-factor","--yarn-beta-slow","--yarn-beta-fast","--temperature","--seed","--top-k","--top-p","--min-p","--typical","--repeat-last-n","--repeat-penalty","--presence-penalty","--frequency-penalty","--dry-multiplier","--dry-base","--mirostat","--dynatemp-range","--spec-type","--spec-draft-n-max","--model-draft","--spec-draft-device","--device-draft","--n-gpu-layers-draft","--cache-type-k-draft","--cache-type-v-draft","--spec-ngram-mod-n-min","--spec-ngram-mod-n-max","--spec-ngram-mod-n-match","--spec-ngram-simple-size-n","--spec-ngram-simple-size-m","--spec-ngram-simple-min-hits","--lora","--lora-scaled","--timeout","--threads-http","--metrics","--slots","--no-slots","--cache-prompt","--no-cache-prompt","--cache-reuse","--reasoning","--reasoning-budget","--reasoning-format","--api-key-file"]),Sp=(()=>{class i{constructor(){this.fb=d(un),this.dialogRef=d(gt),this.data=d(Gn),this.serviceService=d(_t),this.cdr=d(te),this.destroyRef=d(Bt),this.isEdit=this.data.config!==null,this.isClone=this.data.clone===!0,this.kvCacheTypes=Dy,this.allExistingCommands=W(()=>{let e=this.data.allConfigs??[],t=this.data.config?.name??null,n=new Set,a=[];for(let r of e)r.name!==t&&(n.has(r.command)||(n.add(r.command),a.push({command:r.command,from:r.name})));return a}),this._commandValue=R(this.data.config?.command??""),this.commandValue=this._commandValue.asReadonly(),this.filteredCommands=W(()=>{let e=this.commandValue()?.toLowerCase()??"";return this.allExistingCommands().filter(t=>t.command.toLowerCase().includes(e)||t.from.toLowerCase().includes(e))}),this.form=this.fb.group({name:[this.data.config?.name??"",{validators:[st.required,st.pattern(wy)]}],command:[this.data.config?.command??"",st.required],host:[f.host],port:[f.port],threads:[f.threads],flashAttn:[f.flashAttn],fit:[f.fit],parallel:[f.parallel],alias:[f.alias],nPredict:[f.nPredict],contextShift:[f.contextShift],contBatching:[f.contBatching],model:[""],mmproj:[""],nGpuLayers:[f.nGpuLayers],device:[[]],tensorSplit:[""],splitMode:[f.splitMode],mainGpu:[f.mainGpu],fitTarget:[f.fitTarget],fitCtx:[f.fitCtx],mlock:[f.mlock],mmap:[f.mmap],cpuMoe:[f.cpuMoe],nCpuMoe:[f.nCpuMoe],ctxSize:[""],batchSize:[f.batchSize],ubatchSize:[f.ubatchSize],cacheTypeK:[f.cacheTypeK],cacheTypeV:[f.cacheTypeV],kvOffload:[f.kvOffload],cacheRam:[f.cacheRam],swaFull:[f.swaFull],ropeScaling:[f.ropeScaling],ropeScale:[f.ropeScale],ropeFreqBase:[f.ropeFreqBase],ropeFreqScale:[f.ropeFreqScale],yarnOrigCtx:[f.yarnOrigCtx],yarnExtFactor:[f.yarnExtFactor],yarnAttnFactor:[f.yarnAttnFactor],yarnBetaSlow:[f.yarnBetaSlow],yarnBetaFast:[f.yarnBetaFast],temperature:[f.temperature],seed:[f.seed],topK:[f.topK],topP:[f.topP],minP:[f.minP],typicalP:[f.typicalP],repeatLastN:[f.repeatLastN],repeatPenalty:[f.repeatPenalty],presencePenalty:[f.presencePenalty],frequencyPenalty:[f.frequencyPenalty],dryMultiplier:[f.dryMultiplier],dryBase:[f.dryBase],mirostat:[f.mirostat],dynatempRange:[f.dynatempRange],modelDraft:[""],specDraftDevice:[[]],specDraftNMax:[f.specDraftNMax],nGpuLayersDraft:[f.nGpuLayersDraft],specDraftCacheTypeK:[f.specDraftCacheTypeK],specDraftCacheTypeV:[f.specDraftCacheTypeV],specType:[f.specType],specNgramModNMin:[f.specNgramModNMin],specNgramModNMax:[f.specNgramModNMax],specNgramModNMatch:[f.specNgramModNMatch],specNgramSimpleSizeN:[f.specNgramSimpleSizeN],specNgramSimpleSizeM:[f.specNgramSimpleSizeM],specNgramSimpleMinHits:[f.specNgramSimpleMinHits],lora:[""],loraScaled:[""],timeout:[f.timeout],threadsHttp:[f.threadsHttp],metrics:[f.metrics],slots:[f.slots],cachePrompt:[f.cachePrompt],cacheReuse:[f.cacheReuse],reasoning:[f.reasoning],reasoningBudget:[f.reasoningBudget],reasoningFormat:[f.reasoningFormat],apiKeyFile:[""],extraFlags:[""],envText:[""]}),this.availableDevices=W(()=>this.availableDevicesRaw()),this.availableDevicesRaw=qn(this.form.controls.command.valueChanges.pipe(qi(),ke(this.form.controls.command.value),Vt(300),xi(),We(e=>{let t=(e??"").trim();return t?this.serviceService.getLlamaAutocomplete("device","",t).pipe(Kt(()=>ge([]))):this.serviceService.getLlamaAutocomplete("device","").pipe(Kt(()=>ge([])))})),{initialValue:[]}),this.filteredHosts=qn(this.form.controls.host.valueChanges.pipe(qi(),ke(this.form.controls.host.value),Vt(250),xi(),We(e=>{let t=(e??"").trim();return t?this.serviceService.getLlamaAutocomplete("host",t).pipe(Kt(()=>ge([]))):ge([])})),{initialValue:[]}),this.existingModelPaths=W(()=>this.extractConfigPaths("--model")),this.existingMmprojPaths=W(()=>this.extractConfigPaths("--mmproj")),this.existingApiKeyPaths=W(()=>this.extractConfigPaths("--api-key-file")),this.existingDraftModelPaths=W(()=>this.extractConfigPaths("--model-draft")),this.existingLoraPaths=W(()=>this.extractConfigPaths("--lora")),this.formValue=qn(this.form.valueChanges,{initialValue:this.form.value}),this.fitValue=W(()=>this.formValue()?.fit),this.splitModeValue=W(()=>this.formValue()?.splitMode),this.specTypeValue=W(()=>this.formValue()?.specType),this.ropeScalingValue=W(()=>this.formValue()?.ropeScaling),this.cpuMoeValue=W(()=>this.formValue()?.cpuMoe),this.cachePromptValue=W(()=>this.formValue()?.cachePrompt),this.reasoningValue=W(()=>this.formValue()?.reasoning),this.mirostatValue=W(()=>this.formValue()?.mirostat),this.hostValue=W(()=>this.formValue()?.host),this.isTensorSplitDisabled=W(()=>this.splitModeValue()==="none"),this.isFitTargetDisabled=W(()=>this.fitValue()==="off"),this.isCpuMoeLayersDisabled=W(()=>this.cpuMoeValue()==="on"),this.isCacheReuseDisabled=W(()=>this.cachePromptValue()==="off"),this.isReasoningParamsDisabled=W(()=>this.reasoningValue()==="off"),this.isMirostatEnabled=W(()=>(this.mirostatValue()??0)!==0),this.isRopeParamsDisabled=W(()=>this.ropeScalingValue()==="none"),this.isPortDisabled=W(()=>(this.hostValue()??"").trim().toLowerCase().endsWith(".sock")),this.showDraftParams=W(()=>(this.specTypeValue()??"").includes("draft")),this.showNgramModParams=W(()=>(this.specTypeValue()??"").includes("ngram-mod")),this.showNgramSimpleParams=W(()=>(this.specTypeValue()??"").includes("ngram-simple")),this.showYarnParams=W(()=>this.ropeScalingValue()==="yarn"),this.parallelSlots=W(()=>{let e=this.formValue()?.parallel;return typeof e=="number"&&e>0?e:1}),this.ctxPresets=W(()=>{let e=this.parallelSlots();return jc.map(t=>({label:Os(e*t,e)}))}),this._flags=null}extractConfigPaths(e){let t=this.data.allConfigs??[],n=this.data.config?.name??null,a=new Set,r=[];for(let u of t){if(u.name===n||!u.flags)continue;let h=wn(u.flags,e);h&&!a.has(h)&&(a.add(h),r.push(h))}return r}isControlChanged(e){let t=this.form.get(e)?.value;return e==="ctxSize"?+Rs(t)!==f.ctxSize:t!==void 0&&xy(e,t)}isSectionChanged(...e){return e.some(t=>this.isControlChanged(t))}onCtxSizeInput(e){let t=e.target.value,n=Rs(t),a=Os(n,this.parallelSlots());this.form.get("ctxSize")?.setValue(a,{emitEvent:!1})}ngOnInit(){this.form.controls.command.valueChanges.pipe(qi(this.destroyRef)).subscribe(e=>this._commandValue.set(e)),this.data.config&&this.populateFormFromFlags(this.data.config.flags,this.data.config.environment),this.form.valueChanges.pipe(qi(this.destroyRef)).subscribe(()=>{this.cdr.markForCheck()})}populateFormFromFlags(e,t){let n=this.form.controls;n.host.setValue(Ke(e,"--host",f.host)),n.port.setValue(Ee(e,"--port",f.port)),n.threads.setValue(Ee(e,"--threads",f.threads)),n.flashAttn.setValue(Ke(e,"--flash-attn",f.flashAttn)),n.fit.setValue(Ke(e,"--fit",f.fit)),n.parallel.setValue(Ee(e,"--parallel",f.parallel)),n.alias.setValue(Ke(e,"--alias","")),n.nPredict.setValue(Ee(e,"--n-predict",f.nPredict)),n.contextShift.setValue(Wn(e,"--context-shift","--no-context-shift",!1)?"on":"off"),n.contBatching.setValue(Wn(e,"--cont-batching","--no-cont-batching",!0)?"on":"off");let a=wn(e,"--device");n.device.setValue(a?a.split(",").map(g=>g.trim()).filter(Boolean):[]),n.tensorSplit.setValue(Ke(e,"--tensor-split","")),n.model.setValue(Ke(e,"--model","")),n.mmproj.setValue(Ke(e,"--mmproj","")),n.nGpuLayers.setValue(Ke(e,"--n-gpu-layers",f.nGpuLayers)),n.splitMode.setValue(Ke(e,"--split-mode",f.splitMode)),n.mainGpu.setValue(Ee(e,"--main-gpu",f.mainGpu)),n.fitTarget.setValue(Ee(e,"--fit-target",f.fitTarget)),n.fitCtx.setValue(Ee(e,"--fit-ctx",f.fitCtx)),n.mlock.setValue(e.includes("--mlock")?"on":"off"),n.mmap.setValue(Wn(e,"--mmap","--no-mmap",!0)?"on":"off"),n.cpuMoe.setValue(e.includes("--cpu-moe")?"on":"off"),n.nCpuMoe.setValue(Ee(e,"--n-cpu-moe",0));let r=Ee(e,"--ctx-size",f.ctxSize),u=typeof n.parallel.value=="number"&&n.parallel.value>0?n.parallel.value:1;n.ctxSize.setValue(Os(r,u)),n.batchSize.setValue(Ee(e,"--batch-size",f.batchSize)),n.ubatchSize.setValue(Ee(e,"--ubatch-size",f.ubatchSize)),n.cacheTypeK.setValue(Ke(e,"--cache-type-k",f.cacheTypeK)),n.cacheTypeV.setValue(Ke(e,"--cache-type-v",f.cacheTypeV)),n.kvOffload.setValue(Wn(e,"--kv-offload","--no-kv-offload",!0)?"on":"off"),n.cacheRam.setValue(Ee(e,"--cache-ram",f.cacheRam)),n.swaFull.setValue(e.includes("--swa-full")?"on":"off"),n.ropeScaling.setValue(Ke(e,"--rope-scaling",f.ropeScaling)),n.ropeScale.setValue(ut(e,"--rope-scale",f.ropeScale)),n.ropeFreqBase.setValue(ut(e,"--rope-freq-base",f.ropeFreqBase)),n.ropeFreqScale.setValue(ut(e,"--rope-freq-scale",f.ropeFreqScale)),n.yarnOrigCtx.setValue(Ee(e,"--yarn-orig-ctx",f.yarnOrigCtx)),n.yarnExtFactor.setValue(ut(e,"--yarn-ext-factor",f.yarnExtFactor)),n.yarnAttnFactor.setValue(ut(e,"--yarn-attn-factor",f.yarnAttnFactor)),n.yarnBetaSlow.setValue(ut(e,"--yarn-beta-slow",f.yarnBetaSlow)),n.yarnBetaFast.setValue(ut(e,"--yarn-beta-fast",f.yarnBetaFast)),n.temperature.setValue(ut(e,"--temperature",f.temperature)),n.seed.setValue(Ee(e,"--seed",f.seed)),n.topK.setValue(Ee(e,"--top-k",f.topK)),n.topP.setValue(ut(e,"--top-p",f.topP)),n.minP.setValue(ut(e,"--min-p",f.minP)),n.typicalP.setValue(ut(e,"--typical",f.typicalP)),n.repeatLastN.setValue(Ee(e,"--repeat-last-n",f.repeatLastN)),n.repeatPenalty.setValue(ut(e,"--repeat-penalty",f.repeatPenalty)),n.presencePenalty.setValue(ut(e,"--presence-penalty",f.presencePenalty)),n.frequencyPenalty.setValue(ut(e,"--frequency-penalty",f.frequencyPenalty)),n.dryMultiplier.setValue(ut(e,"--dry-multiplier",f.dryMultiplier)),n.dryBase.setValue(ut(e,"--dry-base",f.dryBase)),n.mirostat.setValue(Ee(e,"--mirostat",f.mirostat)),n.dynatempRange.setValue(ut(e,"--dynatemp-range",f.dynatempRange)),n.modelDraft.setValue(Ke(e,"--model-draft",""));let h=wn(e,"--spec-draft-device")??wn(e,"--device-draft");if(n.specDraftDevice.setValue(h?h.split(",").map(g=>g.trim()).filter(Boolean):[]),n.specDraftNMax.setValue(Ee(e,"--spec-draft-n-max",f.specDraftNMax)),n.nGpuLayersDraft.setValue(Ke(e,"--n-gpu-layers-draft",f.nGpuLayersDraft)),n.specDraftCacheTypeK.setValue(Ke(e,"--cache-type-k-draft",f.specDraftCacheTypeK)),n.specDraftCacheTypeV.setValue(Ke(e,"--cache-type-v-draft",f.specDraftCacheTypeV)),n.specType.setValue(Ke(e,"--spec-type",f.specType)),n.specNgramModNMin.setValue(Ee(e,"--spec-ngram-mod-n-min",f.specNgramModNMin)),n.specNgramModNMax.setValue(Ee(e,"--spec-ngram-mod-n-max",f.specNgramModNMax)),n.specNgramModNMatch.setValue(Ee(e,"--spec-ngram-mod-n-match",f.specNgramModNMatch)),n.specNgramSimpleSizeN.setValue(Ee(e,"--spec-ngram-simple-size-n",f.specNgramSimpleSizeN)),n.specNgramSimpleSizeM.setValue(Ee(e,"--spec-ngram-simple-size-m",f.specNgramSimpleSizeM)),n.specNgramSimpleMinHits.setValue(Ee(e,"--spec-ngram-simple-min-hits",f.specNgramSimpleMinHits)),n.lora.setValue(Ke(e,"--lora","")),n.loraScaled.setValue(Ke(e,"--lora-scaled","")),n.timeout.setValue(Ee(e,"--timeout",f.timeout)),n.threadsHttp.setValue(Ee(e,"--threads-http",f.threadsHttp)),n.metrics.setValue(e.includes("--metrics")?"on":"off"),n.slots.setValue(Wn(e,"--slots","--no-slots",!0)?"on":"off"),n.cachePrompt.setValue(Wn(e,"--cache-prompt","--no-cache-prompt",!0)?"on":"off"),n.cacheReuse.setValue(Ee(e,"--cache-reuse",f.cacheReuse)),n.reasoning.setValue(Ke(e,"--reasoning",f.reasoning)),n.reasoningBudget.setValue(Ee(e,"--reasoning-budget",f.reasoningBudget)),n.reasoningFormat.setValue(Ke(e,"--reasoning-format",f.reasoningFormat)),n.apiKeyFile.setValue(Ke(e,"--api-key-file","")),n.extraFlags.setValue(this.extractExtraFlags(e).join(`
|
|
5583
|
+
`],encapsulation:2})}return i})();var Is=(()=>{class i{static \u0275fac=function(t){return new(t||i)};static \u0275mod=j({type:i});static \u0275inj=z({imports:[sa,Pt,ee,_i]})}return i})();function wn(i,o){for(let e of i){let t=e.indexOf("=");if(t>0&&e.slice(0,t)===o)return e.slice(t+1);let n=e.indexOf(" ");if(n>0&&e.slice(0,n)===o)return e.slice(n+1).trim()}for(let e=0;e<i.length;e++)if(i[e]===o&&e+1<i.length)return i[e+1];return null}function Wn(i,o,e,t){for(let n of i){let a=n.split(/\s|=/)[0];if(a===o)return!0;if(a===e)return!1}return t}function Ke(i,o,e){let t=wn(i,o);return t!==null?t:e}function Ee(i,o,e){let t=wn(i,o);if(t!==null){let n=parseInt(t,10);return isNaN(n)?e:n}return e}function ut(i,o,e){let t=wn(i,o);if(t!==null){let n=parseFloat(t);return isNaN(n)?e:n}return e}var ey=(i,o)=>o.path;function ty(i,o){i&1&&(s(0,"span",7),m(1,"(dir)"),l())}function iy(i,o){if(i&1&&(s(0,"mat-option",5)(1,"span",6),m(2),l(),M(3,ty,2,0,"span",7),l()),i&2){let e=o.$implicit;x("value",e.path),c(2),q(e.path),c(),E(e.isDir?3:-1)}}var Dp=(()=>{class i{constructor(){this.fb=d(un),this.service=d(_t),this.label="Path",this.placeholder="/path/to/file",this.required=!1,this.fieldClass="",this.existingPaths=[],this.onChange=e=>{},this.onTouched=()=>{},this._subscription=null,this.suggestions=R([]),this.innerForm=this.fb.group({value:[""]})}writeValue(e){let t=(e??"").toString();this.innerForm.patchValue({value:t},{emitEvent:!1})}registerOnChange(e){this.onChange=e}registerOnTouched(e){this.onTouched=e}setDisabledState(e){e?this.innerForm.disable():this.innerForm.enable()}ngOnInit(){this._subscription=this.innerForm.get("value").valueChanges.subscribe(e=>{this.onChange(e)}),this._subscription.add(this.innerForm.get("value").valueChanges.pipe(Vt(200),xi(),We(e=>{let t=(e??"").trim();return t?this.service.getLlamaAutocomplete("path",t).pipe(Kt(()=>ge([]))):ge(this.emptySuggestions)})).subscribe(e=>{this.suggestions.set(e)}))}get emptySuggestions(){return this.existingPaths.filter(Boolean).map(e=>({path:e,source:"existing config"}))}ngOnDestroy(){this._subscription?.unsubscribe()}onSelect(e){this.innerForm.patchValue({value:e},{emitEvent:!1}),this.onChange(e)}onBlur(){this.onTouched()}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275cmp=T({type:i,selectors:[["app-file-autocomplete"]],inputs:{label:"label",placeholder:"placeholder",required:"required",fieldClass:"fieldClass",existingPaths:"existingPaths"},features:[J([{provide:Mi,useExisting:nt(()=>i),multi:!0}])],decls:9,vars:7,consts:[["auto","matAutocomplete"],[3,"formGroup"],["appearance","outline",1,"full-width"],["matInput","","formControlName","value",3,"blur","placeholder","required","matAutocomplete"],[3,"optionSelected"],[3,"value"],[1,"file-path"],[1,"file-dir"]],template:function(t,n){if(t&1&&(ui(0,1),s(1,"mat-form-field",2)(2,"input",3),A("blur",function(){return n.onBlur()}),l(),b(),s(3,"mat-label"),m(4),l()(),s(5,"mat-autocomplete",4,0),A("optionSelected",function(r){return n.onSelect(r.option.value)}),me(7,iy,4,3,"mat-option",5,ey),l(),hi()),t&2){let a=je(6);x("formGroup",n.innerForm),c(),et(n.fieldClass),c(),x("placeholder",n.placeholder)("required",n.required)("matAutocomplete",a),y(),c(2),q(n.label),c(3),ue(n.suggestions())}},dependencies:[Le,pn,Ei,Ai,mn,Kr,Ut,ji,St,kt,Rt,ti,ei,xn,Cn,vt,Wi],styles:[".full-width[_ngcontent-%COMP%]{width:100%}.file-path[_ngcontent-%COMP%]{font-family:monospace}.file-dir[_ngcontent-%COMP%]{margin-left:4px;color:#1976d2;font-size:11px;font-weight:500}.file-source[_ngcontent-%COMP%]{margin-left:8px;opacity:.6;font-size:12px}"]})}}return i})();function qi(i){i||(i=d(Bt));let o=new yt(e=>{if(i.destroyed){e.next();return}return i.onDestroy(e.next.bind(e))});return e=>e.pipe(oe(o))}function qn(i,o){let t=!o?.manualCleanup?o?.injector?.get(Bt)??d(Bt):null,n=ny(o?.equal),a;o?.requireSync?a=R({kind:0},{equal:n}):a=R({kind:1,value:o?.initialValue},{equal:n});let r,u=i.subscribe({next:h=>a.set({kind:1,value:h}),error:h=>{a.set({kind:2,error:h}),r?.()},complete:()=>{r?.()}});if(o?.requireSync&&a().kind===0)throw new ae(601,!1);return r=t?.onDestroy(u.unsubscribe.bind(u)),W(()=>{let h=a();switch(h.kind){case 1:return h.value;case 2:throw h.error;case 0:throw new ae(601,!1)}},{equal:o?.equal})}function ny(i=Object.is){return(o,e)=>o.kind===1&&e.kind===1&&i(o.value,e.value)}function Rs(i){if(typeof i=="number")return i;let o=i.trim();if(!o)return 0;let e=o.split(/\s*x\s*/i),t=1,n;if(e.length>=2){let h=e[0].trim();h&&(t=parseInt(h,10),(isNaN(t)||t<1)&&(t=1)),n=e.slice(1).join("").trim()}else n=o;let a=n.match(/^(\d+)\s*([kKmM])?$/);if(!a)return 0;let r=parseInt(a[1],10),u=a[2];return u&&(u.toLowerCase()==="k"?r*=1024:u.toLowerCase()==="m"&&(r*=1024*1024)),t*r}var jc=[8192,16384,32768,65536,98304,131072,196608,262144,524288,1048576];function kp(i){if(i<=0)return"0";if(i>=1048576){let o=i/1048576;return`${o%1===0?o:o.toFixed(1)}M`}if(i>=1024){let o=i/1024;return`${o%1===0?o:o.toFixed(1)}K`}return`${i}`}function Os(i,o){if(i<=0)return"";if(o>1&&i%o===0){let e=i/o;if(jc.includes(e))return`${o} x ${kp(e)}`}return kp(i)}var oy=(i,o)=>o.command,Hc=(i,o)=>o.path,ay=(i,o)=>o.label;function ry(i,o){i&1&&(s(0,"mat-error"),m(1,"Required"),l())}function sy(i,o){i&1&&(s(0,"mat-error"),m(1,"Starts with letter, alphanumeric + hyphens/underscores, max 128 chars"),l())}function ly(i,o){i&1&&(s(0,"mat-error"),m(1,"Required"),l())}function cy(i,o){if(i&1&&(s(0,"mat-option",8)(1,"span",100),m(2),l(),s(3,"span",101),m(4),l()()),i&2){let e=o.$implicit;x("value",e.command),c(2),q(e.command),c(2),he("(",e.from,")")}}function dy(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e.path),c(),q(e.path)}}function my(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e.label),c(),q(e.label)}}function uy(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e),c(),q(e)}}function hy(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e),c(),q(e)}}function py(i,o){if(i&1&&(s(0,"div",26),m(1,"YaRN Parameters"),l(),s(2,"div",13)(3,"mat-form-field",18),v(4,"input",102),b(),s(5,"mat-label"),m(6,"YaRN Orig Ctx"),l()(),s(7,"mat-form-field",18),v(8,"input",103),b(),s(9,"mat-label"),m(10,"Extrapolation Mix"),l()(),s(11,"mat-form-field",18),v(12,"input",104),b(),s(13,"mat-label"),m(14,"Attn Factor"),l()(),s(15,"mat-form-field",18),v(16,"input",105),b(),s(17,"mat-label"),m(18,"Beta Slow"),l()(),s(19,"mat-form-field",18),v(20,"input",106),b(),s(21,"mat-label"),m(22,"Beta Fast"),l()()()),i&2){let e=D();c(3),p("changed",e.isControlChanged("yarnOrigCtx")),c(),y(),c(3),p("changed",e.isControlChanged("yarnExtFactor")),c(),y(),c(3),p("changed",e.isControlChanged("yarnAttnFactor")),c(),y(),c(3),p("changed",e.isControlChanged("yarnBetaSlow")),c(),y(),c(3),p("changed",e.isControlChanged("yarnBetaFast")),c(),y()}}function fy(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e.path),c(),q(e.path)}}function gy(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e),c(),q(e)}}function _y(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e),c(),q(e)}}function vy(i,o){if(i&1&&(s(0,"div",26),m(1,"Draft Model"),l(),v(2,"app-file-autocomplete",107),b(),s(3,"div",13)(4,"mat-form-field",18)(5,"mat-select",108),me(6,fy,2,2,"mat-option",8,Hc),l(),b(),s(8,"mat-label"),m(9,"Draft Device (multi-select)"),l()()(),s(10,"div",13)(11,"mat-form-field",18),v(12,"input",109),b(),s(13,"mat-label"),m(14,"Draft N Max"),l()(),s(15,"mat-form-field",18),v(16,"input",110),b(),s(17,"mat-label"),m(18,"Draft GPU Layers"),l()()(),s(19,"div",13)(20,"mat-form-field",18)(21,"mat-select",111),me(22,gy,2,2,"mat-option",8,xt),l(),b(),s(24,"mat-label"),m(25,"Draft Cache Type K"),l()(),s(26,"mat-form-field",18)(27,"mat-select",112),me(28,_y,2,2,"mat-option",8,xt),l(),b(),s(30,"mat-label"),m(31,"Draft Cache Type V"),l()()()),i&2){let e=D();c(2),x("existingPaths",e.existingDraftModelPaths())("fieldClass",e.isControlChanged("modelDraft")?"changed":""),y(),c(2),p("changed",e.isControlChanged("specDraftDevice")),c(),y(),c(),ue(e.availableDevices()),c(5),p("changed",e.isControlChanged("specDraftNMax")),c(),y(),c(3),p("changed",e.isControlChanged("nGpuLayersDraft")),c(),y(),c(4),p("changed",e.isControlChanged("specDraftCacheTypeK")),c(),y(),c(),ue(e.kvCacheTypes),c(4),p("changed",e.isControlChanged("specDraftCacheTypeV")),c(),y(),c(),ue(e.kvCacheTypes)}}function by(i,o){if(i&1&&(s(0,"div",26),m(1,"Ngram Mod Parameters"),l(),s(2,"div",13)(3,"mat-form-field",18),v(4,"input",113),b(),s(5,"mat-label"),m(6,"Ngram Mod N Min"),l()(),s(7,"mat-form-field",18),v(8,"input",114),b(),s(9,"mat-label"),m(10,"Ngram Mod N Max"),l()(),s(11,"mat-form-field",18),v(12,"input",115),b(),s(13,"mat-label"),m(14,"Ngram Mod Match"),l()()()),i&2){let e=D();c(3),p("changed",e.isControlChanged("specNgramModNMin")),c(),y(),c(3),p("changed",e.isControlChanged("specNgramModNMax")),c(),y(),c(3),p("changed",e.isControlChanged("specNgramModNMatch")),c(),y()}}function yy(i,o){if(i&1&&(s(0,"div",26),m(1,"Ngram Simple Parameters"),l(),s(2,"div",13)(3,"mat-form-field",18),v(4,"input",116),b(),s(5,"mat-label"),m(6,"Simple Size N"),l()(),s(7,"mat-form-field",18),v(8,"input",117),b(),s(9,"mat-label"),m(10,"Simple Size M"),l()(),s(11,"mat-form-field",18),v(12,"input",118),b(),s(13,"mat-label"),m(14,"Simple Min Hits"),l()()()),i&2){let e=D();c(3),p("changed",e.isControlChanged("specNgramSimpleSizeN")),c(),y(),c(3),p("changed",e.isControlChanged("specNgramSimpleSizeM")),c(),y(),c(3),p("changed",e.isControlChanged("specNgramSimpleMinHits")),c(),y()}}function Cy(i,o){if(i&1&&(s(0,"mat-option",8)(1,"span",100),m(2),l(),s(3,"span",101),m(4),l()()),i&2){let e=o.$implicit;x("value",e.path),c(2),q(e.path),c(2),he("(",e.source,")")}}var f={host:"127.0.0.1",port:8080,threads:-1,flashAttn:"auto",fit:"on",parallel:-1,alias:"",nPredict:-1,contextShift:"off",contBatching:"on",model:"",mmproj:"",nGpuLayers:"auto",device:[],tensorSplit:"",splitMode:"layer",mainGpu:0,fitTarget:1024,fitCtx:4096,mlock:"off",mmap:"on",cpuMoe:"off",nCpuMoe:0,ctxSize:0,batchSize:2048,ubatchSize:512,cacheTypeK:"f16",cacheTypeV:"f16",kvOffload:"on",cacheRam:8192,swaFull:"off",ropeScaling:"none",ropeScale:1,ropeFreqBase:0,ropeFreqScale:0,yarnOrigCtx:0,yarnExtFactor:-1,yarnAttnFactor:-1,yarnBetaSlow:-1,yarnBetaFast:-1,temperature:.8,seed:-1,topK:40,topP:.95,minP:.05,typicalP:1,repeatLastN:64,repeatPenalty:1,presencePenalty:0,frequencyPenalty:0,dryMultiplier:0,dryBase:1.75,mirostat:0,dynatempRange:0,modelDraft:"",specDraftDevice:[],specDraftNMax:3,nGpuLayersDraft:"auto",specDraftCacheTypeK:"f16",specDraftCacheTypeV:"f16",specType:"none",specNgramModNMin:48,specNgramModNMax:64,specNgramModNMatch:24,specNgramSimpleSizeN:12,specNgramSimpleSizeM:48,specNgramSimpleMinHits:1,lora:"",loraScaled:"",timeout:3600,threadsHttp:-1,metrics:"off",slots:"on",cachePrompt:"on",cacheReuse:0,reasoning:"auto",reasoningBudget:-1,reasoningFormat:"auto",apiKeyFile:""};function xy(i,o){let e=f[i];if(e===void 0)return!1;if(Array.isArray(o)||Array.isArray(e)){let t=Array.isArray(o)?o:[],n=Array.isArray(e)?e:[];return t.length!==n.length||t.some((a,r)=>a!==n[r])}return String(o)!==String(e)}var wy="^[a-zA-Z][a-zA-Z0-9_-]{0,127}$",Dy=["f32","f16","bf16","q8_0","q4_0","q4_1","iq4_nl","q5_0","q5_1"],ky=new Set(["--host","--port","--threads","--flash-attn","--fit","--parallel","--alias","--n-predict","--context-shift","--no-context-shift","--cont-batching","--no-cont-batching","--device","--tensor-split","--model","--mmproj","--n-gpu-layers","--split-mode","--main-gpu","--fit-target","--fit-ctx","--mlock","--mmap","--no-mmap","--cpu-moe","--n-cpu-moe","--ctx-size","--batch-size","--ubatch-size","--cache-type-k","--cache-type-v","--kv-offload","--no-kv-offload","--cache-ram","--swa-full","--rope-scaling","--rope-scale","--rope-freq-base","--rope-freq-scale","--yarn-orig-ctx","--yarn-ext-factor","--yarn-attn-factor","--yarn-beta-slow","--yarn-beta-fast","--temperature","--seed","--top-k","--top-p","--min-p","--typical","--repeat-last-n","--repeat-penalty","--presence-penalty","--frequency-penalty","--dry-multiplier","--dry-base","--mirostat","--dynatemp-range","--spec-type","--spec-draft-n-max","--model-draft","--spec-draft-device","--device-draft","--n-gpu-layers-draft","--cache-type-k-draft","--cache-type-v-draft","--spec-ngram-mod-n-min","--spec-ngram-mod-n-max","--spec-ngram-mod-n-match","--spec-ngram-simple-size-n","--spec-ngram-simple-size-m","--spec-ngram-simple-min-hits","--lora","--lora-scaled","--timeout","--threads-http","--metrics","--slots","--no-slots","--cache-prompt","--no-cache-prompt","--cache-reuse","--reasoning","--reasoning-budget","--reasoning-format","--api-key-file"]),Sp=(()=>{class i{constructor(){this.fb=d(un),this.dialogRef=d(gt),this.data=d(Gn),this.serviceService=d(_t),this.cdr=d(te),this.destroyRef=d(Bt),this.isEdit=this.data.config!==null,this.isClone=this.data.clone===!0,this.kvCacheTypes=Dy,this.allExistingCommands=W(()=>{let e=this.data.allConfigs??[],t=this.data.config?.name??null,n=new Set,a=[];for(let r of e)r.name!==t&&(n.has(r.command)||(n.add(r.command),a.push({command:r.command,from:r.name})));return a}),this._commandValue=R(this.data.config?.command??""),this.commandValue=this._commandValue.asReadonly(),this.filteredCommands=W(()=>{let e=this.commandValue()?.toLowerCase()??"";return this.allExistingCommands().filter(t=>t.command.toLowerCase().includes(e)||t.from.toLowerCase().includes(e))}),this.form=this.fb.group({name:[this.data.config?.name??"",{validators:[st.required,st.pattern(wy)]}],command:[this.data.config?.command??"",st.required],host:[f.host],port:[f.port],threads:[f.threads],flashAttn:[f.flashAttn],fit:[f.fit],parallel:[f.parallel],alias:[f.alias],nPredict:[f.nPredict],contextShift:[f.contextShift],contBatching:[f.contBatching],model:[""],mmproj:[""],nGpuLayers:[f.nGpuLayers],device:[[]],tensorSplit:[""],splitMode:[f.splitMode],mainGpu:[f.mainGpu],fitTarget:[f.fitTarget],fitCtx:[f.fitCtx],mlock:[f.mlock],mmap:[f.mmap],cpuMoe:[f.cpuMoe],nCpuMoe:[f.nCpuMoe],ctxSize:[""],batchSize:[f.batchSize],ubatchSize:[f.ubatchSize],cacheTypeK:[f.cacheTypeK],cacheTypeV:[f.cacheTypeV],kvOffload:[f.kvOffload],cacheRam:[f.cacheRam],swaFull:[f.swaFull],ropeScaling:[f.ropeScaling],ropeScale:[f.ropeScale],ropeFreqBase:[f.ropeFreqBase],ropeFreqScale:[f.ropeFreqScale],yarnOrigCtx:[f.yarnOrigCtx],yarnExtFactor:[f.yarnExtFactor],yarnAttnFactor:[f.yarnAttnFactor],yarnBetaSlow:[f.yarnBetaSlow],yarnBetaFast:[f.yarnBetaFast],temperature:[f.temperature],seed:[f.seed],topK:[f.topK],topP:[f.topP],minP:[f.minP],typicalP:[f.typicalP],repeatLastN:[f.repeatLastN],repeatPenalty:[f.repeatPenalty],presencePenalty:[f.presencePenalty],frequencyPenalty:[f.frequencyPenalty],dryMultiplier:[f.dryMultiplier],dryBase:[f.dryBase],mirostat:[f.mirostat],dynatempRange:[f.dynatempRange],modelDraft:[""],specDraftDevice:[[]],specDraftNMax:[f.specDraftNMax],nGpuLayersDraft:[f.nGpuLayersDraft],specDraftCacheTypeK:[f.specDraftCacheTypeK],specDraftCacheTypeV:[f.specDraftCacheTypeV],specType:[f.specType],specNgramModNMin:[f.specNgramModNMin],specNgramModNMax:[f.specNgramModNMax],specNgramModNMatch:[f.specNgramModNMatch],specNgramSimpleSizeN:[f.specNgramSimpleSizeN],specNgramSimpleSizeM:[f.specNgramSimpleSizeM],specNgramSimpleMinHits:[f.specNgramSimpleMinHits],lora:[""],loraScaled:[""],timeout:[f.timeout],threadsHttp:[f.threadsHttp],metrics:[f.metrics],slots:[f.slots],cachePrompt:[f.cachePrompt],cacheReuse:[f.cacheReuse],reasoning:[f.reasoning],reasoningBudget:[f.reasoningBudget],reasoningFormat:[f.reasoningFormat],apiKeyFile:[""],extraFlags:[""],envText:[""]}),this.availableDevices=W(()=>this.availableDevicesRaw()),this.availableDevicesRaw=qn(this.form.controls.command.valueChanges.pipe(qi(),ke(this.form.controls.command.value),Vt(300),xi(),We(e=>{let t=(e??"").trim();return t?this.serviceService.getLlamaAutocomplete("device","",t).pipe(Kt(()=>ge([]))):this.serviceService.getLlamaAutocomplete("device","").pipe(Kt(()=>ge([])))})),{initialValue:[]}),this.filteredHosts=qn(this.form.controls.host.valueChanges.pipe(qi(),ke(this.form.controls.host.value),Vt(250),xi(),We(e=>{let t=(e??"").trim();return t?this.serviceService.getLlamaAutocomplete("host",t).pipe(Kt(()=>ge([]))):ge([])})),{initialValue:[]}),this.existingModelPaths=W(()=>this.extractConfigPaths("--model")),this.existingMmprojPaths=W(()=>this.extractConfigPaths("--mmproj")),this.existingApiKeyPaths=W(()=>this.extractConfigPaths("--api-key-file")),this.existingDraftModelPaths=W(()=>this.extractConfigPaths("--model-draft")),this.existingLoraPaths=W(()=>this.extractConfigPaths("--lora")),this.formValue=qn(this.form.valueChanges,{initialValue:this.form.value}),this.fitValue=W(()=>this.formValue()?.fit),this.splitModeValue=W(()=>this.formValue()?.splitMode),this.specTypeValue=W(()=>this.formValue()?.specType),this.ropeScalingValue=W(()=>this.formValue()?.ropeScaling),this.cpuMoeValue=W(()=>this.formValue()?.cpuMoe),this.cachePromptValue=W(()=>this.formValue()?.cachePrompt),this.reasoningValue=W(()=>this.formValue()?.reasoning),this.mirostatValue=W(()=>this.formValue()?.mirostat),this.hostValue=W(()=>this.formValue()?.host),this.isTensorSplitDisabled=W(()=>this.splitModeValue()==="none"),this.isFitTargetDisabled=W(()=>this.fitValue()==="off"),this.isCpuMoeLayersDisabled=W(()=>this.cpuMoeValue()==="on"),this.isCacheReuseDisabled=W(()=>this.cachePromptValue()==="off"),this.isReasoningParamsDisabled=W(()=>this.reasoningValue()==="off"),this.isMirostatEnabled=W(()=>(this.mirostatValue()??0)!==0),this.isRopeParamsDisabled=W(()=>this.ropeScalingValue()==="none"),this.isPortDisabled=W(()=>(this.hostValue()??"").trim().toLowerCase().endsWith(".sock")),this.showDraftParams=W(()=>(this.specTypeValue()??"").includes("draft")),this.showNgramModParams=W(()=>(this.specTypeValue()??"").includes("ngram-mod")),this.showNgramSimpleParams=W(()=>(this.specTypeValue()??"").includes("ngram-simple")),this.showYarnParams=W(()=>this.ropeScalingValue()==="yarn"),this.parallelSlots=W(()=>{let e=this.formValue()?.parallel;return typeof e=="number"&&e>0?e:1}),this.ctxPresets=W(()=>{let e=this.parallelSlots();return jc.map(t=>({label:Os(e*t,e)}))}),this._flags=null}extractConfigPaths(e){let t=this.data.allConfigs??[],n=this.data.config?.name??null,a=new Set,r=[];for(let u of t){if(u.name===n||!u.flags)continue;let h=wn(u.flags,e);h&&!a.has(h)&&(a.add(h),r.push(h))}return r}isControlChanged(e){let t=this.form.get(e)?.value;return e==="ctxSize"?+Rs(t)!==f.ctxSize:t!==void 0&&xy(e,t)}isSectionChanged(...e){return e.some(t=>this.isControlChanged(t))}onCtxSizeInput(e){let t=e.target.value,n=Rs(t),a=Os(n,this.parallelSlots());this.form.get("ctxSize")?.setValue(a,{emitEvent:!1})}ngOnInit(){this.form.controls.command.valueChanges.pipe(qi(this.destroyRef)).subscribe(e=>this._commandValue.set(e)),this.data.config&&this.populateFormFromFlags(this.data.config.flags,this.data.config.environment),this.form.valueChanges.pipe(qi(this.destroyRef)).subscribe(()=>{this.cdr.markForCheck()})}populateFormFromFlags(e,t){let n=this.form.controls;n.host.setValue(Ke(e,"--host",f.host)),n.port.setValue(Ee(e,"--port",f.port)),n.threads.setValue(Ee(e,"--threads",f.threads)),n.flashAttn.setValue(Ke(e,"--flash-attn",f.flashAttn)),n.fit.setValue(Ke(e,"--fit",f.fit)),n.parallel.setValue(Ee(e,"--parallel",f.parallel)),n.alias.setValue(Ke(e,"--alias","")),n.nPredict.setValue(Ee(e,"--n-predict",f.nPredict)),n.contextShift.setValue(Wn(e,"--context-shift","--no-context-shift",!1)?"on":"off"),n.contBatching.setValue(Wn(e,"--cont-batching","--no-cont-batching",!0)?"on":"off");let a=wn(e,"--device");n.device.setValue(a?a.split(",").map(g=>g.trim()).filter(Boolean):[]),n.tensorSplit.setValue(Ke(e,"--tensor-split","")),n.model.setValue(Ke(e,"--model","")),n.mmproj.setValue(Ke(e,"--mmproj","")),n.nGpuLayers.setValue(Ke(e,"--n-gpu-layers",f.nGpuLayers)),n.splitMode.setValue(Ke(e,"--split-mode",f.splitMode)),n.mainGpu.setValue(Ee(e,"--main-gpu",f.mainGpu)),n.fitTarget.setValue(Ee(e,"--fit-target",f.fitTarget)),n.fitCtx.setValue(Ee(e,"--fit-ctx",f.fitCtx)),n.mlock.setValue(e.includes("--mlock")?"on":"off"),n.mmap.setValue(Wn(e,"--mmap","--no-mmap",!0)?"on":"off"),n.cpuMoe.setValue(e.includes("--cpu-moe")?"on":"off"),n.nCpuMoe.setValue(Ee(e,"--n-cpu-moe",0));let r=Ee(e,"--ctx-size",f.ctxSize),u=typeof n.parallel.value=="number"&&n.parallel.value>0?n.parallel.value:1;n.ctxSize.setValue(Os(r,u)),n.batchSize.setValue(Ee(e,"--batch-size",f.batchSize)),n.ubatchSize.setValue(Ee(e,"--ubatch-size",f.ubatchSize)),n.cacheTypeK.setValue(Ke(e,"--cache-type-k",f.cacheTypeK)),n.cacheTypeV.setValue(Ke(e,"--cache-type-v",f.cacheTypeV)),n.kvOffload.setValue(Wn(e,"--kv-offload","--no-kv-offload",!0)?"on":"off"),n.cacheRam.setValue(Ee(e,"--cache-ram",f.cacheRam)),n.swaFull.setValue(e.includes("--swa-full")?"on":"off"),n.ropeScaling.setValue(Ke(e,"--rope-scaling",f.ropeScaling)),n.ropeScale.setValue(ut(e,"--rope-scale",f.ropeScale)),n.ropeFreqBase.setValue(ut(e,"--rope-freq-base",f.ropeFreqBase)),n.ropeFreqScale.setValue(ut(e,"--rope-freq-scale",f.ropeFreqScale)),n.yarnOrigCtx.setValue(Ee(e,"--yarn-orig-ctx",f.yarnOrigCtx)),n.yarnExtFactor.setValue(ut(e,"--yarn-ext-factor",f.yarnExtFactor)),n.yarnAttnFactor.setValue(ut(e,"--yarn-attn-factor",f.yarnAttnFactor)),n.yarnBetaSlow.setValue(ut(e,"--yarn-beta-slow",f.yarnBetaSlow)),n.yarnBetaFast.setValue(ut(e,"--yarn-beta-fast",f.yarnBetaFast)),n.temperature.setValue(ut(e,"--temperature",f.temperature)),n.seed.setValue(Ee(e,"--seed",f.seed)),n.topK.setValue(Ee(e,"--top-k",f.topK)),n.topP.setValue(ut(e,"--top-p",f.topP)),n.minP.setValue(ut(e,"--min-p",f.minP)),n.typicalP.setValue(ut(e,"--typical",f.typicalP)),n.repeatLastN.setValue(Ee(e,"--repeat-last-n",f.repeatLastN)),n.repeatPenalty.setValue(ut(e,"--repeat-penalty",f.repeatPenalty)),n.presencePenalty.setValue(ut(e,"--presence-penalty",f.presencePenalty)),n.frequencyPenalty.setValue(ut(e,"--frequency-penalty",f.frequencyPenalty)),n.dryMultiplier.setValue(ut(e,"--dry-multiplier",f.dryMultiplier)),n.dryBase.setValue(ut(e,"--dry-base",f.dryBase)),n.mirostat.setValue(Ee(e,"--mirostat",f.mirostat)),n.dynatempRange.setValue(ut(e,"--dynatemp-range",f.dynatempRange)),n.modelDraft.setValue(Ke(e,"--model-draft",""));let h=wn(e,"--spec-draft-device")??wn(e,"--device-draft");if(n.specDraftDevice.setValue(h?h.split(",").map(g=>g.trim()).filter(Boolean):[]),n.specDraftNMax.setValue(Ee(e,"--spec-draft-n-max",f.specDraftNMax)),n.nGpuLayersDraft.setValue(Ke(e,"--n-gpu-layers-draft",f.nGpuLayersDraft)),n.specDraftCacheTypeK.setValue(Ke(e,"--cache-type-k-draft",f.specDraftCacheTypeK)),n.specDraftCacheTypeV.setValue(Ke(e,"--cache-type-v-draft",f.specDraftCacheTypeV)),n.specType.setValue(Ke(e,"--spec-type",f.specType)),n.specNgramModNMin.setValue(Ee(e,"--spec-ngram-mod-n-min",f.specNgramModNMin)),n.specNgramModNMax.setValue(Ee(e,"--spec-ngram-mod-n-max",f.specNgramModNMax)),n.specNgramModNMatch.setValue(Ee(e,"--spec-ngram-mod-n-match",f.specNgramModNMatch)),n.specNgramSimpleSizeN.setValue(Ee(e,"--spec-ngram-simple-size-n",f.specNgramSimpleSizeN)),n.specNgramSimpleSizeM.setValue(Ee(e,"--spec-ngram-simple-size-m",f.specNgramSimpleSizeM)),n.specNgramSimpleMinHits.setValue(Ee(e,"--spec-ngram-simple-min-hits",f.specNgramSimpleMinHits)),n.lora.setValue(Ke(e,"--lora","")),n.loraScaled.setValue(Ke(e,"--lora-scaled","")),n.timeout.setValue(Ee(e,"--timeout",f.timeout)),n.threadsHttp.setValue(Ee(e,"--threads-http",f.threadsHttp)),n.metrics.setValue(e.includes("--metrics")?"on":"off"),n.slots.setValue(Wn(e,"--slots","--no-slots",!0)?"on":"off"),n.cachePrompt.setValue(Wn(e,"--cache-prompt","--no-cache-prompt",!0)?"on":"off"),n.cacheReuse.setValue(Ee(e,"--cache-reuse",f.cacheReuse)),n.reasoning.setValue(Ke(e,"--reasoning",f.reasoning)),n.reasoningBudget.setValue(Ee(e,"--reasoning-budget",f.reasoningBudget)),n.reasoningFormat.setValue(Ke(e,"--reasoning-format",f.reasoningFormat)),n.apiKeyFile.setValue(Ke(e,"--api-key-file","")),n.extraFlags.setValue(this.extractExtraFlags(e).join(`
|
|
5584
5584
|
`)),t){let g=Object.entries(t).map(([_,w])=>`${_}=${w}`).join(`
|
|
5585
5585
|
`);g&&n.envText.setValue(g+`
|
|
5586
5586
|
`)}}extractExtraFlags(e){let t=[];for(let n of e){let a=n.split(/\s|=/)[0];n.startsWith("--")&&!ky.has(a)&&t.push(n)}return t}parseEnvironment(){let e={};for(let t of this.form.controls.envText.value.split(`
|
|
5587
5587
|
`)){let n=t.trim();if(!n||n.startsWith("#"))continue;let a=n.indexOf("=");a<=0||(e[n.slice(0,a).trim()]=n.slice(a+1))}return e}addIf(e,t,n){String(t)!==String(n)&&this._flags.push(`${e} ${t}`)}addToggle(e,t,n,a){let r=e==="on";r!==a&&this._flags.push(r?t:n)}buildFlags(){this._flags=[];let e=this.form.controls;this.addIf("--host",e.host.value,f.host),this.addIf("--port",e.port.value,f.port),this.addIf("--threads",e.threads.value,f.threads),this.addIf("--flash-attn",e.flashAttn.value,f.flashAttn),this.addIf("--fit",e.fit.value,f.fit),this.addIf("--parallel",e.parallel.value,f.parallel),this.addIf("--alias",e.alias.value,f.alias),this.addIf("--n-predict",e.nPredict.value,f.nPredict),this.addToggle(e.contextShift.value,"--context-shift","--no-context-shift",!1),this.addToggle(e.contBatching.value,"--cont-batching","--no-cont-batching",!0);let t=e.device.value;t&&t.length>0&&this._flags.push(`--device ${t.join(",")}`),e.splitMode.value!=="none"&&this.addIf("--tensor-split",e.tensorSplit.value,f.tensorSplit),this.addIf("--model",e.model.value,f.model),this.addIf("--mmproj",e.mmproj.value,f.mmproj),this.addIf("--n-gpu-layers",e.nGpuLayers.value,f.nGpuLayers),this.addIf("--split-mode",e.splitMode.value,f.splitMode),this.addIf("--main-gpu",e.mainGpu.value,f.mainGpu),e.fit.value==="on"&&(this.addIf("--fit-target",e.fitTarget.value,f.fitTarget),this.addIf("--fit-ctx",e.fitCtx.value,f.fitCtx)),e.mlock.value==="on"&&this._flags.push("--mlock"),this.addToggle(e.mmap.value,"--mmap","--no-mmap",!0),e.cpuMoe.value==="on"&&this._flags.push("--cpu-moe"),e.cpuMoe.value!=="on"&&this.addIf("--n-cpu-moe",e.nCpuMoe.value,f.nCpuMoe),this.addIf("--ctx-size",+Rs(e.ctxSize.value??""),f.ctxSize),this.addIf("--batch-size",e.batchSize.value,f.batchSize),this.addIf("--ubatch-size",e.ubatchSize.value,f.ubatchSize),this.addIf("--cache-type-k",e.cacheTypeK.value,f.cacheTypeK),this.addIf("--cache-type-v",e.cacheTypeV.value,f.cacheTypeV),this.addToggle(e.kvOffload.value,"--kv-offload","--no-kv-offload",!0),this.addIf("--cache-ram",e.cacheRam.value,f.cacheRam),e.swaFull.value==="on"&&this._flags.push("--swa-full");let n=e.ropeScaling.value;n&&n!==f.ropeScaling&&(this._flags.push(`--rope-scaling ${n}`),this.addIf("--rope-scale",e.ropeScale.value,f.ropeScale),this.addIf("--rope-freq-base",e.ropeFreqBase.value,f.ropeFreqBase),this.addIf("--rope-freq-scale",e.ropeFreqScale.value,f.ropeFreqScale),n==="yarn"&&(this.addIf("--yarn-orig-ctx",e.yarnOrigCtx.value,f.yarnOrigCtx),this.addIf("--yarn-ext-factor",e.yarnExtFactor.value,f.yarnExtFactor),this.addIf("--yarn-attn-factor",e.yarnAttnFactor.value,f.yarnAttnFactor),this.addIf("--yarn-beta-slow",e.yarnBetaSlow.value,f.yarnBetaSlow),this.addIf("--yarn-beta-fast",e.yarnBetaFast.value,f.yarnBetaFast))),this.addIf("--temperature",e.temperature.value,f.temperature),this.addIf("--seed",e.seed.value,f.seed),this.addIf("--top-k",e.topK.value,f.topK),this.addIf("--top-p",e.topP.value,f.topP),this.addIf("--min-p",e.minP.value,f.minP),this.addIf("--typical",e.typicalP.value,f.typicalP),this.addIf("--repeat-last-n",e.repeatLastN.value,f.repeatLastN),this.addIf("--repeat-penalty",e.repeatPenalty.value,f.repeatPenalty),this.addIf("--presence-penalty",e.presencePenalty.value,f.presencePenalty),this.addIf("--frequency-penalty",e.frequencyPenalty.value,f.frequencyPenalty),this.addIf("--dry-multiplier",e.dryMultiplier.value,f.dryMultiplier),this.addIf("--dry-base",e.dryBase.value,f.dryBase),this.addIf("--mirostat",e.mirostat.value,f.mirostat),this.addIf("--dynatemp-range",e.dynatempRange.value,f.dynatempRange);let a=e.specType.value;if(this.addIf("--spec-type",a,f.specType),a?.includes("draft")){this.addIf("--spec-draft-n-max",e.specDraftNMax.value,f.specDraftNMax),this.addIf("--model-draft",e.modelDraft.value,f.modelDraft);let u=e.specDraftDevice.value;u&&u.length>0&&this._flags.push(`--spec-draft-device ${u.join(",")}`),this.addIf("--n-gpu-layers-draft",e.nGpuLayersDraft.value,f.nGpuLayersDraft),this.addIf("--cache-type-k-draft",e.specDraftCacheTypeK.value,f.specDraftCacheTypeK),this.addIf("--cache-type-v-draft",e.specDraftCacheTypeV.value,f.specDraftCacheTypeV)}a?.includes("ngram")&&(this.addIf("--spec-ngram-mod-n-min",e.specNgramModNMin.value,f.specNgramModNMin),this.addIf("--spec-ngram-mod-n-max",e.specNgramModNMax.value,f.specNgramModNMax),this.addIf("--spec-ngram-mod-n-match",e.specNgramModNMatch.value,f.specNgramModNMatch),this.addIf("--spec-ngram-simple-size-n",e.specNgramSimpleSizeN.value,f.specNgramSimpleSizeN),this.addIf("--spec-ngram-simple-size-m",e.specNgramSimpleSizeM.value,f.specNgramSimpleSizeM),this.addIf("--spec-ngram-simple-min-hits",e.specNgramSimpleMinHits.value,f.specNgramSimpleMinHits)),this.addIf("--lora",e.lora.value,f.lora),this.addIf("--lora-scaled",e.loraScaled.value,f.loraScaled),this.addIf("--timeout",e.timeout.value,f.timeout),this.addIf("--threads-http",e.threadsHttp.value,f.threadsHttp),e.metrics.value==="on"&&this._flags.push("--metrics"),this.addToggle(e.slots.value,"--slots","--no-slots",!0),this.addToggle(e.cachePrompt.value,"--cache-prompt","--no-cache-prompt",!0),e.cachePrompt.value==="on"&&this.addIf("--cache-reuse",e.cacheReuse.value,f.cacheReuse),this.addIf("--reasoning",e.reasoning.value,f.reasoning),this.addIf("--reasoning-budget",e.reasoningBudget.value,f.reasoningBudget),this.addIf("--reasoning-format",e.reasoningFormat.value,f.reasoningFormat),this.addIf("--api-key-file",e.apiKeyFile.value,f.apiKeyFile);for(let u of e.extraFlags.value.split(`
|
|
5588
|
-
`)){let h=u.trim();h&&h.startsWith("--")&&this._flags.push(h)}let r=this._flags;return this._flags=null,r}save(){if(this.form.invalid)return;let e=this.parseEnvironment(),t=V({name:this.form.controls.name.value.trim(),type:"llama-server",command:this.form.controls.command.value.trim(),flags:this.buildFlags()},Object.keys(e).length?{environment:e}:{});this.dialogRef.close(t)}cancel(){this.dialogRef.close()}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275cmp=T({type:i,selectors:[["app-llama-server-dialog"]],decls:461,vars:185,consts:[["commandAuto","matAutocomplete"],["ctxSizeAuto","matAutocomplete"],["hostAuto","matAutocomplete"],["mat-dialog-title",""],[1,"llama-form",3,"formGroup"],["appearance","outline",1,"full-width"],["matInput","","formControlName","name","placeholder","e.g. llama-qwen3_6-27b-q8",3,"disabled"],["matInput","","formControlName","command","placeholder","/path/to/llama-server",3,"matAutocomplete"],[3,"value"],["expanded",""],["formControlName","model","label","Model Path","placeholder","/path/to/model.gguf",3,"existingPaths","fieldClass"],["formControlName","mmproj","label","MMProj Path","placeholder","/path/to/mmproj.gguf (optional)",3,"existingPaths","fieldClass"],["matInput","","formControlName","alias","type","text","matTooltip","Set model name aliases (comma-separated). Used by API for model identification"],[1,"form-row"],["appearance","outline",1,"form-col-40"],["matInput","","formControlName","nGpuLayers","type","number","matTooltip","Max number of layers to store in VRAM. 999 = all layers. Can use 'auto' or 'all'"],["appearance","outline",1,"form-col-60"],["formControlName","device","multiple","","placeholder","Select GPU devices","matTooltip","Comma-separated list of devices for offloading. Use --list-devices to see available"],["appearance","outline",1,"form-col"],["formControlName","splitMode","matTooltip","How to split model across multiple GPUs. layer=pipelined, row=parallelized, tensor=experimental"],["value","layer"],["value","row"],["value","tensor"],["value","none"],["matInput","","formControlName","tensorSplit","placeholder","10,10,10","matTooltip","Fraction of model to offload to each GPU (comma-separated proportions, e.g. 3,1)",3,"disabled"],["matInput","","formControlName","mainGpu","type","number","matTooltip","GPU index for model (with split-mode=none) or for intermediate results and KV (with split-mode=row)"],[1,"subsection-label"],["formControlName","fit","matTooltip","Adjust unset arguments to fit in device memory. Helps prevent OOM errors"],["value","on"],["value","off"],["matInput","","formControlName","fitTarget","type","number","matTooltip","Target margin per device in MiB for --fit option. Default: 1024",3,"disabled"],["matInput","","formControlName","fitCtx","type","number","matTooltip","Minimum context size that can be set by --fit option. Default: 4096",3,"disabled"],["formControlName","mlock","matTooltip","Force system to keep model in RAM rather than swapping or compressing"],["formControlName","mmap","matTooltip","Memory-map model. If disabled: slower load but may reduce pageouts if not using mlock"],["formControlName","cpuMoe","matTooltip","Keep all Mixture of Experts (MoE) weights in CPU memory"],["matInput","","formControlName","nCpuMoe","type","number","matTooltip","Keep MoE weights of first N layers in CPU. 0 = disabled",3,"disabled"],["matInput","","formControlName","ctxSize","type","text","placeholder","e.g. 8K, 3x16K, 20000","matTooltip","Context size. Supports: 20000, 20K, 3x20K. 0 = from model metadata",3,"blur","keyup.enter","matAutocomplete"],["matInput","","formControlName","batchSize","type","number","matTooltip","Logical maximum batch size for processing. Default: 2048"],["matInput","","formControlName","ubatchSize","type","number","matTooltip","Physical maximum batch size. Default: 512"],["formControlName","cacheTypeK","matTooltip","KV cache data type for K. Options: f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1"],["formControlName","cacheTypeV","matTooltip","KV cache data type for V. Options: f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1"],["formControlName","kvOffload","matTooltip","Enable KV cache offloading to GPU. Reduces CPU memory usage"],["matInput","","formControlName","cacheRam","type","number","matTooltip","Maximum prompt cache size in MiB. -1 = no limit, 0 = disable. Default: 8192"],["formControlName","swaFull","matTooltip","Use full-size SWA (Sliding Window Attention) cache instead of compressed"],["formControlName","ropeScaling","matTooltip","RoPE frequency scaling method. linear or yarn for extended context"],["value","linear"],["value","yarn"],["matInput","","formControlName","ropeScale","type","number","matTooltip","RoPE context scaling factor. Expands context by factor of N",3,"disabled"],["matInput","","formControlName","ropeFreqBase","type","number","matTooltip","RoPE base frequency for NTK-aware scaling. 0 = loaded from model",3,"disabled"],["matInput","","formControlName","ropeFreqScale","type","number","matTooltip","RoPE frequency scaling factor. Expands context by factor of 1/N. 0 = from model",3,"disabled"],["matInput","","formControlName","threads","type","number","matTooltip","Number of CPU threads to use during generation. -1 = auto-detect"],["matInput","","formControlName","parallel","type","number","matTooltip","Number of server slots for parallel requests. -1 = auto"],["matInput","","formControlName","nPredict","type","number","matTooltip","Maximum number of tokens to predict. -1 = infinity (unlimited generation)"],["formControlName","flashAttn","matTooltip","Enable Flash Attention for faster inference with lower VRAM usage"],["value","auto"],["formControlName","contBatching","matTooltip","Enable continuous (dynamic) batching for better throughput with multiple requests"],["formControlName","contextShift","matTooltip","Enable context shift on infinite text generation. Shifts context window when full"],["matInput","","formControlName","temperature","type","number","matTooltip","Temperature for sampling. Higher = more random, lower = more deterministic. Default: 0.8"],["matInput","","formControlName","seed","type","number","matTooltip","RNG seed for reproducibility. -1 = random seed"],["matInput","","formControlName","topK","type","number","matTooltip","Top-K sampling: limit to K most likely tokens. 0 = disabled. Default: 40",3,"disabled"],["matInput","","formControlName","topP","type","number","matTooltip","Top-P (nucleus) sampling: cumulative probability threshold. 1.0 = disabled. Default: 0.95",3,"disabled"],["matInput","","formControlName","minP","type","number","matTooltip","Min-P sampling: minimum probability threshold. 0.0 = disabled. Default: 0.05"],["matInput","","formControlName","typicalP","type","number","matTooltip","Locally typical sampling parameter p. 1.0 = disabled",3,"disabled"],["formControlName","mirostat","matTooltip","Mirostat sampling mode. 0=disabled, 1=Mirostat, 2=Mirostat 2.0. Top-K/Nucleus ignored when enabled"],["matInput","","formControlName","dynatempRange","type","number","matTooltip","Dynamic temperature range. 0.0 = disabled"],["matInput","","formControlName","repeatLastN","type","number","matTooltip","Last N tokens to consider for penalty. 0 = disabled, -1 = ctx_size. Default: 64"],["matInput","","formControlName","repeatPenalty","type","number","matTooltip","Penalize repeat sequence of tokens. 1.0 = disabled"],["matInput","","formControlName","presencePenalty","type","number","matTooltip","Alpha presence penalty: penalize tokens that appeared. 0.0 = disabled"],["matInput","","formControlName","frequencyPenalty","type","number","matTooltip","Alpha frequency penalty: penalize by token frequency. 0.0 = disabled"],["matInput","","formControlName","dryMultiplier","type","number","matTooltip","DRY sampling multiplier: prevents repetition by penalizing recent tokens. 0.0 = disabled"],["matInput","","formControlName","dryBase","type","number","matTooltip","DRY sampling base value. Default: 1.75"],["appearance","outline","subscriptSizing","dynamic",1,"full-width"],["formControlName","specType","matTooltip","Type of speculative decoding. draft-* uses draft model, ngram-* uses n-gram lookup"],["value","draft-simple"],["value","draft-eagle3"],["value","draft-mtp"],["value","ngram-simple"],["value","ngram-mod"],["formControlName","lora","label","LoRA Adapter Path","placeholder","/path/to/lora.gguf (comma-separated for multiple)",3,"existingPaths","fieldClass"],["matInput","","formControlName","loraScaled","type","text","matTooltip","LoRA adapter with user-defined scaling. Format: path:scale,... (e.g. lora.gguf:0.5)"],["matInput","","formControlName","host","type","text","matTooltip","IP address to listen (default: 127.0.0.1). Can bind to UNIX socket if ends with .sock",3,"matAutocomplete"],["matInput","","formControlName","port","type","number","matTooltip","Port to listen (default: 8080). Ignored when host is a UNIX socket",3,"disabled"],["matInput","","formControlName","timeout","type","number","matTooltip","Server read/write timeout in seconds. Default: 3600"],["matInput","","formControlName","threadsHttp","type","number","matTooltip","Number of threads for HTTP requests. -1 = auto"],["formControlName","apiKeyFile","label","API Key File","placeholder","/path/to/keys.ini",3,"existingPaths","fieldClass"],["formControlName","metrics","matTooltip","Enable Prometheus-compatible metrics endpoint at /metrics"],["formControlName","slots","matTooltip","Expose slots monitoring endpoint at /slots"],["formControlName","cachePrompt","matTooltip","Enable prompt caching to speed up repeated prompts"],["matInput","","formControlName","cacheReuse","type","number","matTooltip","Min chunk size to attempt reusing from cache via KV shifting. Requires prompt caching",3,"disabled"],["formControlName","reasoning","matTooltip","Use reasoning/thinking in chat. auto = detect from template"],["matInput","","formControlName","reasoningBudget","type","number","matTooltip","Token budget for thinking. -1 = unlimited, 0 = immediate end, N>0 = token limit",3,"disabled"],["formControlName","reasoningFormat","matTooltip","Format for reasoning output. none=raw, deepseek=reasoning_content field, deepseek-legacy=keep think tags",3,"disabled"],["value","deepseek"],["value","deepseek-legacy"],["matInput","","formControlName","extraFlags","rows","4","wrap","off","placeholder",`--custom-flag value
|
|
5588
|
+
`)){let h=u.trim();h&&h.startsWith("--")&&this._flags.push(h)}let r=this._flags;return this._flags=null,r}save(){if(this.form.invalid)return;let e=this.parseEnvironment(),t=V({name:this.form.controls.name.value.trim(),type:"llama-server",command:this.form.controls.command.value.trim(),flags:this.buildFlags()},Object.keys(e).length?{environment:e}:{});this.dialogRef.close(t)}cancel(){this.dialogRef.close()}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275cmp=T({type:i,selectors:[["app-llama-server-dialog"]],decls:463,vars:185,consts:[["commandAuto","matAutocomplete"],["ctxSizeAuto","matAutocomplete"],["hostAuto","matAutocomplete"],["mat-dialog-title",""],[1,"llama-form",3,"formGroup"],["appearance","outline",1,"full-width"],["matInput","","formControlName","name","placeholder","e.g. llama-qwen3_6-27b-q8",3,"disabled"],["matInput","","formControlName","command","placeholder","/path/to/llama-server",3,"matAutocomplete"],[3,"value"],["expanded",""],["formControlName","model","label","Model Path","placeholder","/path/to/model.gguf",3,"existingPaths","fieldClass"],["formControlName","mmproj","label","MMProj Path","placeholder","/path/to/mmproj.gguf (optional)",3,"existingPaths","fieldClass"],["matInput","","formControlName","alias","type","text","matTooltip","Set model name aliases (comma-separated). Used by API for model identification"],[1,"form-row"],["appearance","outline",1,"form-col-40"],["matInput","","formControlName","nGpuLayers","type","number","matTooltip","Max number of layers to store in VRAM. 999 = all layers. Can use 'auto' or 'all'"],["appearance","outline",1,"form-col-60"],["formControlName","device","multiple","","placeholder","Select GPU devices","matTooltip","Comma-separated list of devices for offloading. Use --list-devices to see available"],["appearance","outline",1,"form-col"],["formControlName","splitMode","matTooltip","How to split model across multiple GPUs. layer=pipelined, row=parallelized, tensor=experimental"],["value","layer"],["value","row"],["value","tensor"],["value","none"],["matInput","","formControlName","tensorSplit","placeholder","10,10,10","matTooltip","Fraction of model to offload to each GPU (comma-separated proportions, e.g. 3,1)",3,"disabled"],["matInput","","formControlName","mainGpu","type","number","matTooltip","GPU index for model (with split-mode=none) or for intermediate results and KV (with split-mode=row)"],[1,"subsection-label"],["formControlName","fit","matTooltip","Adjust unset arguments to fit in device memory. Helps prevent OOM errors"],["value","on"],["value","off"],["matInput","","formControlName","fitTarget","type","number","matTooltip","Target margin per device in MiB for --fit option. Default: 1024",3,"disabled"],["matInput","","formControlName","fitCtx","type","number","matTooltip","Minimum context size that can be set by --fit option. Default: 4096",3,"disabled"],["formControlName","mlock","matTooltip","Force system to keep model in RAM rather than swapping or compressing"],["formControlName","mmap","matTooltip","Memory-map model. If disabled: slower load but may reduce pageouts if not using mlock"],["formControlName","cpuMoe","matTooltip","Keep all Mixture of Experts (MoE) weights in CPU memory"],["matInput","","formControlName","nCpuMoe","type","number","matTooltip","Keep MoE weights of first N layers in CPU. 0 = disabled",3,"disabled"],["matInput","","formControlName","ctxSize","type","text","placeholder","e.g. 8K, 3x16K, 20000","matTooltip","Context size. Supports: 20000, 20K, 3x20K. 0 = from model metadata",3,"blur","keyup.enter","matAutocomplete"],["matInput","","formControlName","batchSize","type","number","matTooltip","Logical maximum batch size for processing. Default: 2048"],["matInput","","formControlName","ubatchSize","type","number","matTooltip","Physical maximum batch size. Default: 512"],["formControlName","cacheTypeK","matTooltip","KV cache data type for K. Options: f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1"],["formControlName","cacheTypeV","matTooltip","KV cache data type for V. Options: f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1"],["formControlName","kvOffload","matTooltip","Enable KV cache offloading to GPU. Reduces CPU memory usage"],["matInput","","formControlName","cacheRam","type","number","matTooltip","Maximum prompt cache size in MiB. -1 = no limit, 0 = disable. Default: 8192"],["formControlName","swaFull","matTooltip","Use full-size SWA (Sliding Window Attention) cache instead of compressed"],["formControlName","ropeScaling","matTooltip","RoPE frequency scaling method. linear or yarn for extended context"],["value","linear"],["value","yarn"],["matInput","","formControlName","ropeScale","type","number","matTooltip","RoPE context scaling factor. Expands context by factor of N",3,"disabled"],["matInput","","formControlName","ropeFreqBase","type","number","matTooltip","RoPE base frequency for NTK-aware scaling. 0 = loaded from model",3,"disabled"],["matInput","","formControlName","ropeFreqScale","type","number","matTooltip","RoPE frequency scaling factor. Expands context by factor of 1/N. 0 = from model",3,"disabled"],["matInput","","formControlName","threads","type","number","matTooltip","Number of CPU threads to use during generation. -1 = auto-detect"],["matInput","","formControlName","parallel","type","number","matTooltip","Number of server slots for parallel requests. -1 = auto"],["matInput","","formControlName","nPredict","type","number","matTooltip","Maximum number of tokens to predict. -1 = infinity (unlimited generation)"],["formControlName","flashAttn","matTooltip","Enable Flash Attention for faster inference with lower VRAM usage"],["value","auto"],["formControlName","contBatching","matTooltip","Enable continuous (dynamic) batching for better throughput with multiple requests"],["formControlName","contextShift","matTooltip","Enable context shift on infinite text generation. Shifts context window when full"],["matInput","","formControlName","temperature","type","number","matTooltip","Temperature for sampling. Higher = more random, lower = more deterministic. Default: 0.8"],["matInput","","formControlName","seed","type","number","matTooltip","RNG seed for reproducibility. -1 = random seed"],["matInput","","formControlName","topK","type","number","matTooltip","Top-K sampling: limit to K most likely tokens. 0 = disabled. Default: 40",3,"disabled"],["matInput","","formControlName","topP","type","number","matTooltip","Top-P (nucleus) sampling: cumulative probability threshold. 1.0 = disabled. Default: 0.95",3,"disabled"],["matInput","","formControlName","minP","type","number","matTooltip","Min-P sampling: minimum probability threshold. 0.0 = disabled. Default: 0.05"],["matInput","","formControlName","typicalP","type","number","matTooltip","Locally typical sampling parameter p. 1.0 = disabled",3,"disabled"],["formControlName","mirostat","matTooltip","Mirostat sampling mode. 0=disabled, 1=Mirostat, 2=Mirostat 2.0. Top-K/Nucleus ignored when enabled"],["matInput","","formControlName","dynatempRange","type","number","matTooltip","Dynamic temperature range. 0.0 = disabled"],["matInput","","formControlName","repeatLastN","type","number","matTooltip","Last N tokens to consider for penalty. 0 = disabled, -1 = ctx_size. Default: 64"],["matInput","","formControlName","repeatPenalty","type","number","matTooltip","Penalize repeat sequence of tokens. 1.0 = disabled"],["matInput","","formControlName","presencePenalty","type","number","matTooltip","Alpha presence penalty: penalize tokens that appeared. 0.0 = disabled"],["matInput","","formControlName","frequencyPenalty","type","number","matTooltip","Alpha frequency penalty: penalize by token frequency. 0.0 = disabled"],["matInput","","formControlName","dryMultiplier","type","number","matTooltip","DRY sampling multiplier: prevents repetition by penalizing recent tokens. 0.0 = disabled"],["matInput","","formControlName","dryBase","type","number","matTooltip","DRY sampling base value. Default: 1.75"],["appearance","outline","subscriptSizing","dynamic",1,"full-width"],["formControlName","specType","matTooltip","Type of speculative decoding. draft-* uses draft model, ngram-* uses n-gram lookup; draft-mtp,ngram-mod runs both (recent llama.cpp builds)"],["value","draft-simple"],["value","draft-eagle3"],["value","draft-mtp"],["value","ngram-simple"],["value","ngram-mod"],["value","draft-mtp,ngram-mod"],["formControlName","lora","label","LoRA Adapter Path","placeholder","/path/to/lora.gguf (comma-separated for multiple)",3,"existingPaths","fieldClass"],["matInput","","formControlName","loraScaled","type","text","matTooltip","LoRA adapter with user-defined scaling. Format: path:scale,... (e.g. lora.gguf:0.5)"],["matInput","","formControlName","host","type","text","matTooltip","IP address to listen (default: 127.0.0.1). Can bind to UNIX socket if ends with .sock",3,"matAutocomplete"],["matInput","","formControlName","port","type","number","matTooltip","Port to listen (default: 8080). Ignored when host is a UNIX socket",3,"disabled"],["matInput","","formControlName","timeout","type","number","matTooltip","Server read/write timeout in seconds. Default: 3600"],["matInput","","formControlName","threadsHttp","type","number","matTooltip","Number of threads for HTTP requests. -1 = auto"],["formControlName","apiKeyFile","label","API Key File","placeholder","/path/to/keys.ini",3,"existingPaths","fieldClass"],["formControlName","metrics","matTooltip","Enable Prometheus-compatible metrics endpoint at /metrics"],["formControlName","slots","matTooltip","Expose slots monitoring endpoint at /slots"],["formControlName","cachePrompt","matTooltip","Enable prompt caching to speed up repeated prompts"],["matInput","","formControlName","cacheReuse","type","number","matTooltip","Min chunk size to attempt reusing from cache via KV shifting. Requires prompt caching",3,"disabled"],["formControlName","reasoning","matTooltip","Use reasoning/thinking in chat. auto = detect from template"],["matInput","","formControlName","reasoningBudget","type","number","matTooltip","Token budget for thinking. -1 = unlimited, 0 = immediate end, N>0 = token limit",3,"disabled"],["formControlName","reasoningFormat","matTooltip","Format for reasoning output. none=raw, deepseek=reasoning_content field, deepseek-legacy=keep think tags",3,"disabled"],["value","deepseek"],["value","deepseek-legacy"],["matInput","","formControlName","extraFlags","rows","4","wrap","off","placeholder",`--custom-flag value
|
|
5589
5589
|
--flash-attn on`,"matTooltip","Any llama-server flags not covered by the fields above (one per line). Pass-through \u2014 not validated",1,"flags-textarea"],["matInput","","formControlName","envText","rows","4","wrap","off","placeholder",`HF_HOME=/data/huggingface
|
|
5590
|
-
HSA_OVERRIDE_GFX_VERSION=11.0.0`,"matTooltip","Environment variables for the service process (KEY=VALUE, one per line)",1,"env-textarea"],["align","end"],["mat-stroked-button","",3,"click"],["mat-raised-button","","color","primary",3,"click","disabled"],[1,"auto-path"],[1,"auto-from"],["matInput","","formControlName","yarnOrigCtx","type","number","matTooltip","YaRN: original context size of model. 0 = model training context size"],["matInput","","formControlName","yarnExtFactor","type","number","matTooltip","YaRN: extrapolation mix factor. -1 = default, 0.0 = full interpolation"],["matInput","","formControlName","yarnAttnFactor","type","number","matTooltip","YaRN: scale sqrt(t) or attention magnitude. -1 = default"],["matInput","","formControlName","yarnBetaSlow","type","number","matTooltip","YaRN: high correction dim (alpha). -1 = default"],["matInput","","formControlName","yarnBetaFast","type","number","matTooltip","YaRN: low correction dim (beta). -1 = default"],["formControlName","modelDraft","label","Draft Model Path","placeholder","/path/to/draft-model.gguf",3,"existingPaths","fieldClass"],["formControlName","specDraftDevice","multiple","","placeholder","Select GPU devices for draft model","matTooltip","Devices for offloading the draft model. Same options as main --device"],["matInput","","formControlName","specDraftNMax","type","number","matTooltip","Max number of tokens to draft for speculative decoding. Default: 3"],["matInput","","formControlName","nGpuLayersDraft","type","number","matTooltip","Max draft model layers to store in VRAM. 999 = all layers"],["formControlName","specDraftCacheTypeK","matTooltip","KV cache data type for K for the draft model"],["formControlName","specDraftCacheTypeV","matTooltip","KV cache data type for V for the draft model"],["matInput","","formControlName","specNgramModNMin","type","number","matTooltip","Min number of ngram tokens for ngram-mod speculative decoding. Default: 48"],["matInput","","formControlName","specNgramModNMax","type","number","matTooltip","Max number of ngram tokens for ngram-mod speculative decoding. Default: 64"],["matInput","","formControlName","specNgramModNMatch","type","number","matTooltip","Ngram-mod lookup length. Default: 24"],["matInput","","formControlName","specNgramSimpleSizeN","type","number","matTooltip","Ngram size N for ngram-simple: length of lookup n-gram. Default: 12"],["matInput","","formControlName","specNgramSimpleSizeM","type","number","matTooltip","Ngram size M for ngram-simple: length of draft m-gram. Default: 48"],["matInput","","formControlName","specNgramSimpleMinHits","type","number","matTooltip","Minimum hits for ngram-simple speculative decoding. Default: 1"]],template:function(t,n){if(t&1&&(s(0,"h2",3),m(1),l(),s(2,"mat-dialog-content")(3,"form",4)(4,"mat-form-field",5),v(5,"input",6),b(),s(6,"mat-label"),m(7,"Service Name"),l(),M(8,ry,2,0,"mat-error")(9,sy,2,0,"mat-error"),l(),s(10,"mat-form-field",5),v(11,"input",7),b(),s(12,"mat-label"),m(13,"Binary Path"),l(),M(14,ly,2,0,"mat-error"),l(),s(15,"mat-autocomplete",null,0),me(17,cy,5,3,"mat-option",8,oy),l(),s(19,"mat-expansion-panel",9)(20,"mat-expansion-panel-header")(21,"mat-panel-title"),m(22,"Model"),l()(),v(23,"app-file-autocomplete",10),b(),v(24,"app-file-autocomplete",11),b(),s(25,"mat-form-field",5),v(26,"input",12),b(),s(27,"mat-label"),m(28,"Model Alias"),l()()(),s(29,"mat-expansion-panel",9)(30,"mat-expansion-panel-header")(31,"mat-panel-title"),m(32,"GPU & Memory"),l()(),s(33,"div",13)(34,"mat-form-field",14),v(35,"input",15),b(),s(36,"mat-label"),m(37,"GPU Layers"),l()(),s(38,"mat-form-field",16)(39,"mat-select",17),me(40,dy,2,2,"mat-option",8,Hc),l(),b(),s(42,"mat-label"),m(43,"Device (multi-select)"),l()()(),s(44,"div",13)(45,"mat-form-field",18)(46,"mat-select",19)(47,"mat-option",20),m(48,"layer (pipelined)"),l(),s(49,"mat-option",21),m(50,"row (parallelized)"),l(),s(51,"mat-option",22),m(52,"tensor (experimental)"),l(),s(53,"mat-option",23),m(54,"none (single GPU)"),l()(),b(),s(55,"mat-label"),m(56,"Split Mode"),l()(),s(57,"mat-form-field",18),v(58,"input",24),b(),s(59,"mat-label"),m(60,"Tensor Split"),l()(),s(61,"mat-form-field",18),v(62,"input",25),b(),s(63,"mat-label"),m(64,"Main GPU"),l()()(),s(65,"div",26),m(66,"Memory"),l(),s(67,"div",13)(68,"mat-form-field",18)(69,"mat-select",27)(70,"mat-option",28),m(71,"on"),l(),s(72,"mat-option",29),m(73,"off"),l()(),b(),s(74,"mat-label"),m(75,"Fit to VRAM"),l()(),s(76,"mat-form-field",18),v(77,"input",30),b(),s(78,"mat-label"),m(79,"Fit Target (MiB)"),l()(),s(80,"mat-form-field",18),v(81,"input",31),b(),s(82,"mat-label"),m(83,"Fit Min Ctx"),l()()(),s(84,"div",13)(85,"mat-form-field",18)(86,"mat-select",32)(87,"mat-option",28),m(88,"on"),l(),s(89,"mat-option",29),m(90,"off"),l()(),b(),s(91,"mat-label"),m(92,"mlock (pin RAM)"),l()(),s(93,"mat-form-field",18)(94,"mat-select",33)(95,"mat-option",28),m(96,"on"),l(),s(97,"mat-option",29),m(98,"off"),l()(),b(),s(99,"mat-label"),m(100,"mmap"),l()(),s(101,"mat-form-field",18)(102,"mat-select",34)(103,"mat-option",28),m(104,"on"),l(),s(105,"mat-option",29),m(106,"off"),l()(),b(),s(107,"mat-label"),m(108,"CPU MoE"),l()(),s(109,"mat-form-field",18),v(110,"input",35),b(),s(111,"mat-label"),m(112,"N CPU MoE Layers"),l()()()(),s(113,"mat-expansion-panel")(114,"mat-expansion-panel-header")(115,"mat-panel-title"),m(116,"Context & KV Cache"),l()(),s(117,"div",13)(118,"mat-form-field",18)(119,"input",36),A("blur",function(r){return n.onCtxSizeInput(r)})("keyup.enter",function(r){return n.onCtxSizeInput(r)}),l(),b(),s(120,"mat-label"),m(121,"Context Size"),l()(),s(122,"mat-autocomplete",null,1),me(124,my,2,2,"mat-option",8,ay),l(),s(126,"mat-form-field",18),v(127,"input",37),b(),s(128,"mat-label"),m(129,"Batch Size"),l()(),s(130,"mat-form-field",18),v(131,"input",38),b(),s(132,"mat-label"),m(133,"Ubatch Size"),l()()(),s(134,"div",13)(135,"mat-form-field",18)(136,"mat-select",39),me(137,uy,2,2,"mat-option",8,xt),l(),b(),s(139,"mat-label"),m(140,"KV Cache Type K"),l()(),s(141,"mat-form-field",18)(142,"mat-select",40),me(143,hy,2,2,"mat-option",8,xt),l(),b(),s(145,"mat-label"),m(146,"KV Cache Type V"),l()(),s(147,"mat-form-field",18)(148,"mat-select",41)(149,"mat-option",28),m(150,"on"),l(),s(151,"mat-option",29),m(152,"off"),l()(),b(),s(153,"mat-label"),m(154,"KV Offload"),l()()(),s(155,"div",13)(156,"mat-form-field",18),v(157,"input",42),b(),s(158,"mat-label"),m(159,"Cache RAM (MiB)"),l()(),s(160,"mat-form-field",18)(161,"mat-select",43)(162,"mat-option",28),m(163,"on"),l(),s(164,"mat-option",29),m(165,"off"),l()(),b(),s(166,"mat-label"),m(167,"Full SWA Cache"),l()()()(),s(168,"mat-expansion-panel")(169,"mat-expansion-panel-header")(170,"mat-panel-title"),m(171,"RoPE Scaling"),l()(),s(172,"div",13)(173,"mat-form-field",18)(174,"mat-select",44)(175,"mat-option",23),m(176,"none"),l(),s(177,"mat-option",45),m(178,"linear"),l(),s(179,"mat-option",46),m(180,"yarn"),l()(),b(),s(181,"mat-label"),m(182,"Scaling Method"),l()(),s(183,"mat-form-field",18),v(184,"input",47),b(),s(185,"mat-label"),m(186,"Scale Factor"),l()(),s(187,"mat-form-field",18),v(188,"input",48),b(),s(189,"mat-label"),m(190,"Freq Base"),l()(),s(191,"mat-form-field",18),v(192,"input",49),b(),s(193,"mat-label"),m(194,"Freq Scale"),l()()(),M(195,py,23,10),l(),s(196,"mat-expansion-panel")(197,"mat-expansion-panel-header")(198,"mat-panel-title"),m(199,"Generation"),l(),s(200,"mat-panel-description"),m(201,"Runtime and batching defaults"),l()(),s(202,"div",13)(203,"mat-form-field",18),v(204,"input",50),b(),s(205,"mat-label"),m(206,"Threads"),l()(),s(207,"mat-form-field",18),v(208,"input",51),b(),s(209,"mat-label"),m(210,"Parallel Slots"),l()(),s(211,"mat-form-field",18),v(212,"input",52),b(),s(213,"mat-label"),m(214,"Max Tokens (n-predict)"),l()()(),s(215,"div",13)(216,"mat-form-field",18)(217,"mat-select",53)(218,"mat-option",28),m(219,"on"),l(),s(220,"mat-option",29),m(221,"off"),l(),s(222,"mat-option",54),m(223,"auto"),l()(),b(),s(224,"mat-label"),m(225,"Flash Attention"),l()(),s(226,"mat-form-field",18)(227,"mat-select",55)(228,"mat-option",28),m(229,"on"),l(),s(230,"mat-option",29),m(231,"off"),l()(),b(),s(232,"mat-label"),m(233,"Cont. Batching"),l()(),s(234,"mat-form-field",18)(235,"mat-select",56)(236,"mat-option",28),m(237,"on"),l(),s(238,"mat-option",29),m(239,"off"),l()(),b(),s(240,"mat-label"),m(241,"Context Shift"),l()()()(),s(242,"mat-expansion-panel")(243,"mat-expansion-panel-header")(244,"mat-panel-title"),m(245,"Sampling Defaults"),l(),s(246,"mat-panel-description"),m(247,"Default sampling parameters for generation"),l()(),s(248,"div",26),m(249,"Core"),l(),s(250,"div",13)(251,"mat-form-field",18),v(252,"input",57),b(),s(253,"mat-label"),m(254,"Temperature"),l()(),s(255,"mat-form-field",18),v(256,"input",58),b(),s(257,"mat-label"),m(258,"Seed"),l()(),s(259,"mat-form-field",18),v(260,"input",59),b(),s(261,"mat-label"),m(262,"Top-K"),l()(),s(263,"mat-form-field",18),v(264,"input",60),b(),s(265,"mat-label"),m(266,"Top-P"),l()()(),s(267,"div",13)(268,"mat-form-field",18),v(269,"input",61),b(),s(270,"mat-label"),m(271,"Min-P"),l()(),s(272,"mat-form-field",18),v(273,"input",62),b(),s(274,"mat-label"),m(275,"Typical-P"),l()(),s(276,"mat-form-field",18)(277,"mat-select",63)(278,"mat-option",8),m(279,"disabled"),l(),s(280,"mat-option",8),m(281,"Mirostat"),l(),s(282,"mat-option",8),m(283,"Mirostat 2.0"),l()(),b(),s(284,"mat-label"),m(285,"Mirostat"),l()(),s(286,"mat-form-field",18),v(287,"input",64),b(),s(288,"mat-label"),m(289,"Dyn. Temp Range"),l()()(),s(290,"div",26),m(291,"Penalties"),l(),s(292,"div",13)(293,"mat-form-field",18),v(294,"input",65),b(),s(295,"mat-label"),m(296,"Repeat Last N"),l()(),s(297,"mat-form-field",18),v(298,"input",66),b(),s(299,"mat-label"),m(300,"Repeat Penalty"),l()(),s(301,"mat-form-field",18),v(302,"input",67),b(),s(303,"mat-label"),m(304,"Presence Penalty"),l()(),s(305,"mat-form-field",18),v(306,"input",68),b(),s(307,"mat-label"),m(308,"Frequency Penalty"),l()()(),s(309,"div",26),m(310,"DRY Sampling"),l(),s(311,"div",13)(312,"mat-form-field",18),v(313,"input",69),b(),s(314,"mat-label"),m(315,"DRY Multiplier"),l()(),s(316,"mat-form-field",18),v(317,"input",70),b(),s(318,"mat-label"),m(319,"DRY Base"),l()()()(),s(320,"mat-expansion-panel")(321,"mat-expansion-panel-header")(322,"mat-panel-title"),m(323,"Speculative Decoding"),l(),s(324,"mat-panel-description"),m(325,"Draft model and speculative decoding options"),l()(),s(326,"mat-form-field",71)(327,"mat-select",72)(328,"mat-option",23),m(329,"none"),l(),s(330,"mat-option",73),m(331,"draft-simple"),l(),s(332,"mat-option",74),m(333,"draft-eagle3"),l(),s(334,"mat-option",75),m(335,"draft-mtp"),l(),s(336,"mat-option",76),m(337,"ngram-simple"),l(),s(338,"mat-option",77),m(339,"ngram-mod"),l()(),b(),s(340,"mat-label"),m(341,"Spec Type"),l()(),M(342,vy,32,12),M(343,by,15,6),M(344,yy,15,6),l(),s(345,"mat-expansion-panel")(346,"mat-expansion-panel-header")(347,"mat-panel-title"),m(348,"LoRA & Adapters"),l()(),v(349,"app-file-autocomplete",78),b(),s(350,"mat-form-field",5),v(351,"input",79),b(),s(352,"mat-label"),m(353,"LoRA Scaled"),l()()(),s(354,"mat-expansion-panel")(355,"mat-expansion-panel-header")(356,"mat-panel-title"),m(357,"Server & Network"),l()(),s(358,"div",13)(359,"mat-form-field",18),v(360,"input",80),b(),s(361,"mat-label"),m(362,"Host"),l()(),s(363,"mat-autocomplete",null,2),me(365,Cy,5,3,"mat-option",8,Hc),l(),s(367,"mat-form-field",18),v(368,"input",81),b(),s(369,"mat-label"),m(370,"Port"),l()(),s(371,"mat-form-field",18),v(372,"input",82),b(),s(373,"mat-label"),m(374,"Timeout (s)"),l()(),s(375,"mat-form-field",18),v(376,"input",83),b(),s(377,"mat-label"),m(378,"HTTP Threads"),l()()(),v(379,"app-file-autocomplete",84),b(),s(380,"div",13)(381,"mat-form-field",18)(382,"mat-select",85)(383,"mat-option",28),m(384,"on"),l(),s(385,"mat-option",29),m(386,"off"),l()(),b(),s(387,"mat-label"),m(388,"Prometheus Metrics"),l()(),s(389,"mat-form-field",18)(390,"mat-select",86)(391,"mat-option",28),m(392,"on"),l(),s(393,"mat-option",29),m(394,"off"),l()(),b(),s(395,"mat-label"),m(396,"Slots Endpoint"),l()(),s(397,"mat-form-field",18)(398,"mat-select",87)(399,"mat-option",28),m(400,"on"),l(),s(401,"mat-option",29),m(402,"off"),l()(),b(),s(403,"mat-label"),m(404,"Prompt Cache"),l()(),s(405,"mat-form-field",18),v(406,"input",88),b(),s(407,"mat-label"),m(408,"Cache Reuse"),l()()()(),s(409,"mat-expansion-panel")(410,"mat-expansion-panel-header")(411,"mat-panel-title"),m(412,"Reasoning"),l(),s(413,"mat-panel-description"),m(414,"Thinking/reasoning mode settings"),l()(),s(415,"div",13)(416,"mat-form-field",18)(417,"mat-select",89)(418,"mat-option",28),m(419,"on"),l(),s(420,"mat-option",29),m(421,"off"),l(),s(422,"mat-option",54),m(423,"auto"),l()(),b(),s(424,"mat-label"),m(425,"Reasoning"),l()(),s(426,"mat-form-field",18),v(427,"input",90),b(),s(428,"mat-label"),m(429,"Reasoning Budget"),l()(),s(430,"mat-form-field",18)(431,"mat-select",91)(432,"mat-option",54),m(433,"auto"),l(),s(434,"mat-option",23),m(435,"none (raw)"),l(),s(436,"mat-option",92),m(437,"deepseek"),l(),s(438,"mat-option",93),m(439,"deepseek-legacy"),l()(),b(),s(440,"mat-label"),m(441,"Reasoning Format"),l()()()(),s(442,"mat-expansion-panel")(443,"mat-expansion-panel-header")(444,"mat-panel-title"),m(445,"Additional"),l(),s(446,"mat-panel-description"),m(447,"Extra CLI flags and environment variables"),l()(),s(448,"mat-form-field",5),v(449,"textarea",94),b(),s(450,"mat-label"),m(451,"Extra CLI Flags (one per line)"),l()(),s(452,"mat-form-field",5),v(453,"textarea",95),b(),s(454,"mat-label"),m(455,"Environment variables (KEY=VALUE, one per line)"),l()()()()(),s(456,"mat-dialog-actions",96)(457,"button",97),A("click",function(){return n.cancel()}),m(458,"Cancel"),l(),s(459,"button",98),A("click",function(){return n.save()}),m(460),l()()),t&2){let a=je(16),r=je(123),u=je(364);c(),he("",n.isClone?"Clone":n.isEdit?"Edit":"Add"," llama-server service"),c(2),x("formGroup",n.form),c(),p("changed",n.isControlChanged("name")),c(),x("disabled",n.isEdit&&!n.isClone),y(),c(3),E(n.form.controls.name.errors?.required?8:n.form.controls.name.errors?.pattern?9:-1),c(2),p("changed",n.isControlChanged("command")),c(),x("matAutocomplete",a),y(),c(3),E(n.form.controls.command.errors?.required?14:-1),c(3),ue(n.filteredCommands()),c(2),p("has-changed",n.isSectionChanged("model","mmproj","alias")),c(4),x("existingPaths",n.existingModelPaths())("fieldClass",n.isControlChanged("model")?"changed":""),y(),c(),x("existingPaths",n.existingMmprojPaths())("fieldClass",n.isControlChanged("mmproj")?"changed":""),y(),c(),p("changed",n.isControlChanged("alias")),c(),y(),c(3),p("has-changed",n.isSectionChanged("nGpuLayers","device","tensorSplit","splitMode","mainGpu","fit","fitTarget","fitCtx","mlock","mmap","cpuMoe","nCpuMoe")),c(5),p("changed",n.isControlChanged("nGpuLayers")),c(),y(),c(3),p("changed",n.isControlChanged("device")),c(),y(),c(),ue(n.availableDevices()),c(5),p("changed",n.isControlChanged("splitMode")),c(),y(),c(11),p("changed",n.isControlChanged("tensorSplit")&&!n.isTensorSplitDisabled()),c(),x("disabled",n.isTensorSplitDisabled()),y(),c(3),p("changed",n.isControlChanged("mainGpu")),c(),y(),c(6),p("changed",n.isControlChanged("fit")),c(),y(),c(7),p("changed",n.isControlChanged("fitTarget")&&!n.isFitTargetDisabled()),c(),x("disabled",n.isFitTargetDisabled()),y(),c(3),p("changed",n.isControlChanged("fitCtx")&&!n.isFitTargetDisabled()),c(),x("disabled",n.isFitTargetDisabled()),y(),c(4),p("changed",n.isControlChanged("mlock")),c(),y(),c(7),p("changed",n.isControlChanged("mmap")),c(),y(),c(7),p("changed",n.isControlChanged("cpuMoe")),c(),y(),c(7),p("changed",n.isControlChanged("nCpuMoe")&&!n.isCpuMoeLayersDisabled()),c(),x("disabled",n.isCpuMoeLayersDisabled()),y(),c(3),p("has-changed",n.isSectionChanged("ctxSize","batchSize","ubatchSize","cacheTypeK","cacheTypeV","kvOffload","cacheRam","swaFull")),c(5),p("changed",n.isControlChanged("ctxSize")),c(),x("matAutocomplete",r),y(),c(5),ue(n.ctxPresets()),c(2),p("changed",n.isControlChanged("batchSize")),c(),y(),c(3),p("changed",n.isControlChanged("ubatchSize")),c(),y(),c(4),p("changed",n.isControlChanged("cacheTypeK")),c(),y(),c(),ue(n.kvCacheTypes),c(4),p("changed",n.isControlChanged("cacheTypeV")),c(),y(),c(),ue(n.kvCacheTypes),c(4),p("changed",n.isControlChanged("kvOffload")),c(),y(),c(8),p("changed",n.isControlChanged("cacheRam")),c(),y(),c(3),p("changed",n.isControlChanged("swaFull")),c(),y(),c(7),p("has-changed",n.isSectionChanged("ropeScaling","ropeScale","ropeFreqBase","ropeFreqScale","yarnOrigCtx","yarnExtFactor","yarnAttnFactor","yarnBetaSlow","yarnBetaFast")),c(5),p("changed",n.isControlChanged("ropeScaling")),c(),y(),c(9),p("changed",n.isControlChanged("ropeScale")&&!n.isRopeParamsDisabled()),c(),x("disabled",n.isRopeParamsDisabled()),y(),c(3),p("changed",n.isControlChanged("ropeFreqBase")&&!n.isRopeParamsDisabled()),c(),x("disabled",n.isRopeParamsDisabled()),y(),c(3),p("changed",n.isControlChanged("ropeFreqScale")&&!n.isRopeParamsDisabled()),c(),x("disabled",n.isRopeParamsDisabled()),y(),c(3),E(n.showYarnParams()?195:-1),c(),p("has-changed",n.isSectionChanged("threads","parallel","flashAttn","contBatching","contextShift","nPredict")),c(7),p("changed",n.isControlChanged("threads")),c(),y(),c(3),p("changed",n.isControlChanged("parallel")),c(),y(),c(3),p("changed",n.isControlChanged("nPredict")),c(),y(),c(4),p("changed",n.isControlChanged("flashAttn")),c(),y(),c(9),p("changed",n.isControlChanged("contBatching")),c(),y(),c(7),p("changed",n.isControlChanged("contextShift")),c(),y(),c(7),p("has-changed",n.isSectionChanged("temperature","seed","topK","topP","minP","typicalP","mirostat","dynatempRange","repeatLastN","repeatPenalty","presencePenalty","frequencyPenalty","dryMultiplier","dryBase")),c(9),p("changed",n.isControlChanged("temperature")),c(),y(),c(3),p("changed",n.isControlChanged("seed")),c(),y(),c(3),p("changed",n.isControlChanged("topK")&&!n.isMirostatEnabled()),c(),x("disabled",n.isMirostatEnabled()),y(),c(3),p("changed",n.isControlChanged("topP")&&!n.isMirostatEnabled()),c(),x("disabled",n.isMirostatEnabled()),y(),c(4),p("changed",n.isControlChanged("minP")),c(),y(),c(3),p("changed",n.isControlChanged("typicalP")&&!n.isMirostatEnabled()),c(),x("disabled",n.isMirostatEnabled()),y(),c(3),p("changed",n.isControlChanged("mirostat")),c(),y(),c(),x("value",0),c(2),x("value",1),c(2),x("value",2),c(4),p("changed",n.isControlChanged("dynatempRange")),c(),y(),c(6),p("changed",n.isControlChanged("repeatLastN")),c(),y(),c(3),p("changed",n.isControlChanged("repeatPenalty")),c(),y(),c(3),p("changed",n.isControlChanged("presencePenalty")),c(),y(),c(3),p("changed",n.isControlChanged("frequencyPenalty")),c(),y(),c(6),p("changed",n.isControlChanged("dryMultiplier")),c(),y(),c(3),p("changed",n.isControlChanged("dryBase")),c(),y(),c(3),p("has-changed",n.isSectionChanged("modelDraft","specDraftDevice","specDraftNMax","nGpuLayersDraft","specDraftCacheTypeK","specDraftCacheTypeV","specType","specNgramModNMin","specNgramModNMax","specNgramModNMatch","specNgramSimpleSizeN","specNgramSimpleSizeM","specNgramSimpleMinHits")),c(6),p("changed",n.isControlChanged("specType")),c(),y(),c(15),E(n.showDraftParams()?342:-1),c(),E(n.showNgramModParams()?343:-1),c(),E(n.showNgramSimpleParams()?344:-1),c(),p("has-changed",n.isSectionChanged("lora","loraScaled")),c(4),x("existingPaths",n.existingLoraPaths())("fieldClass",n.isControlChanged("lora")?"changed":""),y(),c(),p("changed",n.isControlChanged("loraScaled")),c(),y(),c(3),p("has-changed",n.isSectionChanged("host","port","timeout","threadsHttp","apiKeyFile","metrics","slots","cachePrompt","cacheReuse")),c(5),p("changed",n.isControlChanged("host")),c(),x("matAutocomplete",u),y(),c(5),ue(n.filteredHosts()),c(2),p("changed",n.isControlChanged("port")&&!n.isPortDisabled()),c(),x("disabled",n.isPortDisabled()),y(),c(3),p("changed",n.isControlChanged("timeout")),c(),y(),c(3),p("changed",n.isControlChanged("threadsHttp")),c(),y(),c(3),x("existingPaths",n.existingApiKeyPaths())("fieldClass",n.isControlChanged("apiKeyFile")?"changed":""),y(),c(2),p("changed",n.isControlChanged("metrics")),c(),y(),c(7),p("changed",n.isControlChanged("slots")),c(),y(),c(7),p("changed",n.isControlChanged("cachePrompt")),c(),y(),c(7),p("changed",n.isControlChanged("cacheReuse")&&!n.isCacheReuseDisabled()),c(),x("disabled",n.isCacheReuseDisabled()),y(),c(3),p("has-changed",n.isSectionChanged("reasoning","reasoningBudget","reasoningFormat")),c(7),p("changed",n.isControlChanged("reasoning")),c(),y(),c(9),p("changed",n.isControlChanged("reasoningBudget")&&!n.isReasoningParamsDisabled()),c(),x("disabled",n.isReasoningParamsDisabled()),y(),c(3),p("changed",n.isControlChanged("reasoningFormat")&&!n.isReasoningParamsDisabled()),c(),x("disabled",n.isReasoningParamsDisabled()),y(),c(11),p("has-changed",n.isSectionChanged("extraFlags","envText")),c(6),p("changed",n.isControlChanged("extraFlags")),c(),y(),c(3),p("changed",n.isControlChanged("envText")),c(),y(),c(6),x("disabled",n.form.invalid),c(),he(" ",n.isEdit&&!n.isClone?"Save":"Create"," ")}},dependencies:[Le,hn,bo,Ei,va,Ai,mn,pn,Ut,ji,xn,Cn,vt,Wi,Qe,it,Oo,Ts,Ba,Ms,As,Es,St,kt,Rt,fn,ti,ei,Nt,oi,ri,ai,Po,Fo,Is,za,Dp],styles:['@charset "UTF-8";.llama-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;min-width:640px}.form-row[_ngcontent-%COMP%]{display:flex;gap:12px;margin-bottom:4px}.form-col[_ngcontent-%COMP%]{flex:1}.form-col-60[_ngcontent-%COMP%]{flex:3}.form-col-40[_ngcontent-%COMP%]{flex:2}.full-width[_ngcontent-%COMP%]{width:100%}.auto-path[_ngcontent-%COMP%]{font-family:monospace}.auto-from[_ngcontent-%COMP%]{margin-left:8px;opacity:.6;font-size:12px}.flags-textarea[_ngcontent-%COMP%], .env-textarea[_ngcontent-%COMP%]{overflow-x:auto}mat-dialog-content[_ngcontent-%COMP%]{padding-top:10px!important;max-height:80vh}mat-expansion-panel[_ngcontent-%COMP%]{margin-bottom:0}mat-dialog-actions[_ngcontent-%COMP%]{gap:8px}.subsection-label[_ngcontent-%COMP%]{font-size:12px;font-weight:500;color:#0009;margin:4px 0 14px;text-transform:uppercase;letter-spacing:.5px}.sub-section-hint[_ngcontent-%COMP%]{font-size:11px;color:#0006;margin-bottom:4px}mat-expansion-panel.has-changed[_ngcontent-%COMP%] mat-panel-title[_ngcontent-%COMP%]{font-weight:700}mat-form-field.changed[_ngcontent-%COMP%] .mat-mdc-form-field-infix input, mat-form-field.changed[_ngcontent-%COMP%] .mat-mdc-form-field-infix .mat-mdc-select{font-weight:700}']})}}return i})();function No(i,o){for(let e of i){let t=e.indexOf("=");if(t>0&&e.slice(0,t)===o)return e.slice(t+1);let n=e.indexOf(" ");if(n>0&&e.slice(0,n)===o)return e.slice(n+1).trim()}for(let e=0;e<i.length;e++)if(i[e]===o&&e+1<i.length)return i[e+1];return null}var Sy=(i,o)=>o.command,My=(i,o)=>o.value,Ey=(i,o)=>o.path;function Ay(i,o){i&1&&(s(0,"mat-error"),m(1,"Required"),l())}function Ty(i,o){i&1&&(s(0,"mat-error"),m(1,"Starts with letter, alphanumeric + hyphens/underscores, max 128 chars"),l())}function Iy(i,o){i&1&&(s(0,"mat-error"),m(1,"Required"),l())}function Ry(i,o){if(i&1&&(s(0,"mat-option",8)(1,"span",54),m(2),l(),s(3,"span",55),m(4),l()()),i&2){let e=o.$implicit;x("value",e.command),c(2),q(e.command),c(2),he("(",e.from,")")}}function Oy(i,o){i&1&&(s(0,"mat-error"),m(1,"Required"),l())}function Fy(i,o){if(i&1&&(s(0,"mat-option",8)(1,"span",54),m(2),l(),s(3,"span",55),m(4,"(existing config)"),l()()),i&2){let e=o.$implicit;x("value",e),c(2),q(e)}}function Py(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e),c(),q(e)}}function Ny(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e),c(),q(e)}}function Ly(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e.value),c(),q(e.label)}}function Vy(i,o){if(i&1&&(s(0,"div",56),m(1,"Draft Model"),l(),s(2,"div",11)(3,"mat-form-field",57),v(4,"input",58),b(),s(5,"mat-label"),m(6,"Draft Model"),l()(),s(7,"mat-form-field",12),v(8,"input",59),b(),s(9,"mat-label"),m(10,"Draft TP Size"),l()(),s(11,"mat-form-field",12),v(12,"input",60),b(),s(13,"mat-label"),m(14,"Num Spec Tokens"),l()()()),i&2){let e=D();c(3),p("changed",e.isControlChanged("specDraftModel")),c(),y(),c(3),p("changed",e.isControlChanged("specDraftTensorParallelSize")),c(),y(),c(3),p("changed",e.isControlChanged("specNumDraftTokens")),c(),y()}}function By(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e),c(),q(e||"(none)")}}function zy(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e),c(),q(e||"(none)")}}function jy(i,o){if(i&1&&(s(0,"mat-option",8)(1,"span",54),m(2),l(),s(3,"span",55),m(4),l()()),i&2){let e=o.$implicit;x("value",e.path),c(2),q(e.path),c(2),he("(",e.source,")")}}var S={host:"127.0.0.1",port:8e3,servedModelName:"",model:"",tokenizer:"",dtype:"auto",tensorParallelSize:1,pipelineParallelSize:1,maxParallelLoadingWorkers:0,gpuMemoryUtilization:.9,swapSpace:4,cpuOffloadGb:0,device:"",attentionBackend:"",maxModelLen:0,maxNumSeqs:256,maxNumBatchedTokens:0,blockSize:0,enableChunkedPrefill:"auto",specMethod:"none",specTokens:0,specDraftModel:"",specDraftTensorParallelSize:0,specNumDraftTokens:0,temperature:1,topP:1,topK:-1,minP:0,seed:-1,repetitionPenalty:1,maxNumSeq:0,trustRemoteCode:!1,enableAutoToolChoice:!1,toolCallParser:"",reasoningParser:"",enablePrefixCaching:"auto",apiKey:"",extraFlags:"",envText:""};function Hy(i,o){let e=S[i];return e===void 0?!1:String(o)!==String(e)}var Uy="^[a-zA-Z][a-zA-Z0-9_-]{0,127}$",Gy=["auto","half","bfloat16","float","float16","float32"],$y=["TRITON_ATTN","ROCM_ATTN","FLASH_ATTN","FLASHINFER","TRITON_MLA","FLASHMLA","FLEX_ATTENTION","TORCH_SDPA","TREE_ATTN","XFORMERS"],Wy=[{value:"none",label:"none"},{value:"ngram",label:"ngram"},{value:"eagle",label:"eagle"},{value:"eagle3",label:"eagle3"},{value:"medusa",label:"medusa"},{value:"mlp_speculator",label:"mlp_speculator"},{value:"draft_model",label:"draft_model"},{value:"qwen3_5_mtp",label:"qwen3_5_mtp"},{value:"qwen3_next_mtp",label:"qwen3_next_mtp"},{value:"deepseek_mtp",label:"deepseek_mtp"}],qy=["","hermes","mistral","llama3_json","qwen3_xml","qwen25_tool_call","phi4_mini_json","pythonic","internlm","glm45","step3","minimax_m2"],Ky=["","deepseek_r1","qwen3","granite","phi4_reasoning","glm45","step3","minimax_m2"],Mp=(()=>{class i{constructor(){this.fb=d(un),this.dialogRef=d(gt),this.data=d(Gn),this.serviceService=d(_t),this.cdr=d(te),this.destroyRef=d(Bt),this.isEdit=this.data.config!==null,this.isClone=this.data.clone===!0,this.dtypeOptions=Gy,this.attentionBackends=$y,this.specMethods=Wy,this.toolCallParsers=qy,this.reasoningParsers=Ky,this.allExistingCommands=W(()=>{let e=this.data.allConfigs??[],t=this.data.config?.name??null,n=new Set,a=[];for(let r of e)r.name!==t&&(n.has(r.command)||(n.add(r.command),a.push({command:r.command,from:r.name})));return a}),this._commandValue=R(this.data.config?.command??""),this.commandValue=this._commandValue.asReadonly(),this.filteredCommands=W(()=>{let e=this.commandValue()?.toLowerCase()??"";return this.allExistingCommands().filter(t=>t.command.toLowerCase().includes(e)||t.from.toLowerCase().includes(e))}),this.form=this.fb.group({name:[this.data.config?.name??"",{validators:[st.required,st.pattern(Uy)]}],command:[this.data.config?.command??"",st.required],host:[S.host],port:[S.port],servedModelName:[S.servedModelName],model:[S.model],tokenizer:[S.tokenizer],dtype:[S.dtype],tensorParallelSize:[S.tensorParallelSize],pipelineParallelSize:[S.pipelineParallelSize],maxParallelLoadingWorkers:[S.maxParallelLoadingWorkers],gpuMemoryUtilization:[S.gpuMemoryUtilization],swapSpace:[S.swapSpace],cpuOffloadGb:[S.cpuOffloadGb],device:[S.device],attentionBackend:[S.attentionBackend],maxModelLen:[S.maxModelLen],maxNumSeqs:[S.maxNumSeqs],maxNumBatchedTokens:[S.maxNumBatchedTokens],blockSize:[S.blockSize],enableChunkedPrefill:[S.enableChunkedPrefill],specMethod:[S.specMethod],specTokens:[S.specTokens],specDraftModel:[S.specDraftModel],specDraftTensorParallelSize:[S.specDraftTensorParallelSize],specNumDraftTokens:[S.specNumDraftTokens],temperature:[S.temperature],topP:[S.topP],topK:[S.topK],minP:[S.minP],seed:[S.seed],repetitionPenalty:[S.repetitionPenalty],maxNumSeq:[S.maxNumSeq],trustRemoteCode:[S.trustRemoteCode],enableAutoToolChoice:[S.enableAutoToolChoice],toolCallParser:[S.toolCallParser],reasoningParser:[S.reasoningParser],enablePrefixCaching:[S.enablePrefixCaching],apiKey:[S.apiKey],extraFlags:[S.extraFlags],envText:[S.envText]}),this.filteredHosts=qn(this.form.controls.host.valueChanges.pipe(qi(),ke(this.form.controls.host.value),Vt(250),xi(),We(e=>{let t=(e??"").trim();return t?this.serviceService.getLlamaAutocomplete("host",t).pipe(Kt(()=>ge([]))):ge([])})),{initialValue:[]}),this.existingModelPaths=W(()=>this.extractConfigModelPaths()),this.formValue=qn(this.form.valueChanges,{initialValue:this.form.value}),this.specMethodValue=W(()=>this.formValue()?.specMethod),this.showSpecDraftParams=W(()=>{let e=this.specMethodValue();return e!=="none"&&e!=="ngram"}),this.isToolCallParserDisabled=W(()=>!this.formValue()?.enableAutoToolChoice)}extractConfigModelPaths(){let e=this.data.allConfigs??[],t=this.data.config?.name??null,n=new Set,a=[];for(let r of e){if(r.name===t||!r.flags)continue;let u=No(r.flags,"serve");u&&!n.has(u)&&(n.add(u),a.push(u))}return a}isControlChanged(e){let t=this.form.get(e)?.value;return t!=null&&Hy(e,t)}isSectionChanged(...e){return e.some(t=>this.isControlChanged(t))}ngOnInit(){this.form.controls.command.valueChanges.pipe(qi(this.destroyRef)).subscribe(e=>this._commandValue.set(e)),this.data.config&&this.populateForm(this.data.config),this.form.valueChanges.pipe(qi(this.destroyRef)).subscribe(()=>{this.cdr.markForCheck()})}populateForm(e){let t=this.form.controls,n=e.flags,a=No(n,"serve")??"";if(t.model.setValue(a),t.host.setValue(si(n,"--host",S.host)),t.port.setValue(Lt(n,"--port",S.port)),t.servedModelName.setValue(si(n,"--served-model-name","")),t.tokenizer.setValue(si(n,"--tokenizer","")),t.dtype.setValue(si(n,"--dtype",S.dtype)),t.tensorParallelSize.setValue(Lt(n,"--tensor-parallel-size",S.tensorParallelSize)),t.pipelineParallelSize.setValue(Lt(n,"--pipeline-parallel-size",S.pipelineParallelSize)),t.maxParallelLoadingWorkers.setValue(Lt(n,"--max-parallel-loading-workers",S.maxParallelLoadingWorkers)),t.gpuMemoryUtilization.setValue(Kn(n,"--gpu-memory-utilization",S.gpuMemoryUtilization)),t.swapSpace.setValue(Kn(n,"--swap-space",S.swapSpace)),t.cpuOffloadGb.setValue(Kn(n,"--cpu-offload-gb",S.cpuOffloadGb)),t.device.setValue(si(n,"--device","")),t.attentionBackend.setValue(si(n,"--attention-backend",S.attentionBackend)),t.maxModelLen.setValue(Lt(n,"--max-model-len",S.maxModelLen)),t.maxNumSeqs.setValue(Lt(n,"--max-num-seqs",S.maxNumSeqs)),t.maxNumBatchedTokens.setValue(Lt(n,"--max-num-batched-tokens",S.maxNumBatchedTokens)),t.blockSize.setValue(Lt(n,"--block-size",S.blockSize)),t.enableChunkedPrefill.setValue(Yy(n,"--enable-chunked-prefill","--no-enable-chunked-prefill",S.enableChunkedPrefill)),t.specMethod.setValue(si(n,"--spec-method",S.specMethod)),t.specTokens.setValue(Lt(n,"--spec-tokens",S.specTokens)),t.specDraftModel.setValue(si(n,"--spec-draft-model","")),t.specDraftTensorParallelSize.setValue(Lt(n,"--spec-draft-tensor-parallel-size",S.specDraftTensorParallelSize)),t.specNumDraftTokens.setValue(Lt(n,"--num-spec-tokens",S.specNumDraftTokens)),t.temperature.setValue(Kn(n,"--temperature",S.temperature)),t.topP.setValue(Kn(n,"--top-p",S.topP)),t.topK.setValue(Lt(n,"--top-k",S.topK)),t.minP.setValue(Kn(n,"--min-p",S.minP)),t.seed.setValue(Lt(n,"--seed",S.seed)),t.repetitionPenalty.setValue(Kn(n,"--repetition-penalty",S.repetitionPenalty)),t.maxNumSeq.setValue(Lt(n,"--max-num-seq",S.maxNumSeq)),t.trustRemoteCode.setValue(n.some(r=>r.split(/\s|=/)[0]==="--trust-remote-code")),t.enableAutoToolChoice.setValue(n.some(r=>r.split(/\s|=/)[0]==="--enable-auto-tool-choice")),t.toolCallParser.setValue(si(n,"--tool-call-parser","")),t.reasoningParser.setValue(si(n,"--reasoning-parser","")),t.enablePrefixCaching.setValue(si(n,"--enable-prefix-caching",S.enablePrefixCaching)),t.apiKey.setValue(si(n,"--api-key","")),t.extraFlags.setValue(this.extractExtraFlags(n).join(`
|
|
5590
|
+
HSA_OVERRIDE_GFX_VERSION=11.0.0`,"matTooltip","Environment variables for the service process (KEY=VALUE, one per line)",1,"env-textarea"],["align","end"],["mat-stroked-button","",3,"click"],["mat-raised-button","","color","primary",3,"click","disabled"],[1,"auto-path"],[1,"auto-from"],["matInput","","formControlName","yarnOrigCtx","type","number","matTooltip","YaRN: original context size of model. 0 = model training context size"],["matInput","","formControlName","yarnExtFactor","type","number","matTooltip","YaRN: extrapolation mix factor. -1 = default, 0.0 = full interpolation"],["matInput","","formControlName","yarnAttnFactor","type","number","matTooltip","YaRN: scale sqrt(t) or attention magnitude. -1 = default"],["matInput","","formControlName","yarnBetaSlow","type","number","matTooltip","YaRN: high correction dim (alpha). -1 = default"],["matInput","","formControlName","yarnBetaFast","type","number","matTooltip","YaRN: low correction dim (beta). -1 = default"],["formControlName","modelDraft","label","Draft Model Path","placeholder","/path/to/draft-model.gguf",3,"existingPaths","fieldClass"],["formControlName","specDraftDevice","multiple","","placeholder","Select GPU devices for draft model","matTooltip","Devices for offloading the draft model. Same options as main --device"],["matInput","","formControlName","specDraftNMax","type","number","matTooltip","Max number of tokens to draft for speculative decoding. Default: 3"],["matInput","","formControlName","nGpuLayersDraft","type","number","matTooltip","Max draft model layers to store in VRAM. 999 = all layers"],["formControlName","specDraftCacheTypeK","matTooltip","KV cache data type for K for the draft model"],["formControlName","specDraftCacheTypeV","matTooltip","KV cache data type for V for the draft model"],["matInput","","formControlName","specNgramModNMin","type","number","matTooltip","Min number of ngram tokens for ngram-mod speculative decoding. Default: 48"],["matInput","","formControlName","specNgramModNMax","type","number","matTooltip","Max number of ngram tokens for ngram-mod speculative decoding. Default: 64"],["matInput","","formControlName","specNgramModNMatch","type","number","matTooltip","Ngram-mod lookup length. Default: 24"],["matInput","","formControlName","specNgramSimpleSizeN","type","number","matTooltip","Ngram size N for ngram-simple: length of lookup n-gram. Default: 12"],["matInput","","formControlName","specNgramSimpleSizeM","type","number","matTooltip","Ngram size M for ngram-simple: length of draft m-gram. Default: 48"],["matInput","","formControlName","specNgramSimpleMinHits","type","number","matTooltip","Minimum hits for ngram-simple speculative decoding. Default: 1"]],template:function(t,n){if(t&1&&(s(0,"h2",3),m(1),l(),s(2,"mat-dialog-content")(3,"form",4)(4,"mat-form-field",5),v(5,"input",6),b(),s(6,"mat-label"),m(7,"Service Name"),l(),M(8,ry,2,0,"mat-error")(9,sy,2,0,"mat-error"),l(),s(10,"mat-form-field",5),v(11,"input",7),b(),s(12,"mat-label"),m(13,"Binary Path"),l(),M(14,ly,2,0,"mat-error"),l(),s(15,"mat-autocomplete",null,0),me(17,cy,5,3,"mat-option",8,oy),l(),s(19,"mat-expansion-panel",9)(20,"mat-expansion-panel-header")(21,"mat-panel-title"),m(22,"Model"),l()(),v(23,"app-file-autocomplete",10),b(),v(24,"app-file-autocomplete",11),b(),s(25,"mat-form-field",5),v(26,"input",12),b(),s(27,"mat-label"),m(28,"Model Alias"),l()()(),s(29,"mat-expansion-panel",9)(30,"mat-expansion-panel-header")(31,"mat-panel-title"),m(32,"GPU & Memory"),l()(),s(33,"div",13)(34,"mat-form-field",14),v(35,"input",15),b(),s(36,"mat-label"),m(37,"GPU Layers"),l()(),s(38,"mat-form-field",16)(39,"mat-select",17),me(40,dy,2,2,"mat-option",8,Hc),l(),b(),s(42,"mat-label"),m(43,"Device (multi-select)"),l()()(),s(44,"div",13)(45,"mat-form-field",18)(46,"mat-select",19)(47,"mat-option",20),m(48,"layer (pipelined)"),l(),s(49,"mat-option",21),m(50,"row (parallelized)"),l(),s(51,"mat-option",22),m(52,"tensor (experimental)"),l(),s(53,"mat-option",23),m(54,"none (single GPU)"),l()(),b(),s(55,"mat-label"),m(56,"Split Mode"),l()(),s(57,"mat-form-field",18),v(58,"input",24),b(),s(59,"mat-label"),m(60,"Tensor Split"),l()(),s(61,"mat-form-field",18),v(62,"input",25),b(),s(63,"mat-label"),m(64,"Main GPU"),l()()(),s(65,"div",26),m(66,"Memory"),l(),s(67,"div",13)(68,"mat-form-field",18)(69,"mat-select",27)(70,"mat-option",28),m(71,"on"),l(),s(72,"mat-option",29),m(73,"off"),l()(),b(),s(74,"mat-label"),m(75,"Fit to VRAM"),l()(),s(76,"mat-form-field",18),v(77,"input",30),b(),s(78,"mat-label"),m(79,"Fit Target (MiB)"),l()(),s(80,"mat-form-field",18),v(81,"input",31),b(),s(82,"mat-label"),m(83,"Fit Min Ctx"),l()()(),s(84,"div",13)(85,"mat-form-field",18)(86,"mat-select",32)(87,"mat-option",28),m(88,"on"),l(),s(89,"mat-option",29),m(90,"off"),l()(),b(),s(91,"mat-label"),m(92,"mlock (pin RAM)"),l()(),s(93,"mat-form-field",18)(94,"mat-select",33)(95,"mat-option",28),m(96,"on"),l(),s(97,"mat-option",29),m(98,"off"),l()(),b(),s(99,"mat-label"),m(100,"mmap"),l()(),s(101,"mat-form-field",18)(102,"mat-select",34)(103,"mat-option",28),m(104,"on"),l(),s(105,"mat-option",29),m(106,"off"),l()(),b(),s(107,"mat-label"),m(108,"CPU MoE"),l()(),s(109,"mat-form-field",18),v(110,"input",35),b(),s(111,"mat-label"),m(112,"N CPU MoE Layers"),l()()()(),s(113,"mat-expansion-panel")(114,"mat-expansion-panel-header")(115,"mat-panel-title"),m(116,"Context & KV Cache"),l()(),s(117,"div",13)(118,"mat-form-field",18)(119,"input",36),A("blur",function(r){return n.onCtxSizeInput(r)})("keyup.enter",function(r){return n.onCtxSizeInput(r)}),l(),b(),s(120,"mat-label"),m(121,"Context Size"),l()(),s(122,"mat-autocomplete",null,1),me(124,my,2,2,"mat-option",8,ay),l(),s(126,"mat-form-field",18),v(127,"input",37),b(),s(128,"mat-label"),m(129,"Batch Size"),l()(),s(130,"mat-form-field",18),v(131,"input",38),b(),s(132,"mat-label"),m(133,"Ubatch Size"),l()()(),s(134,"div",13)(135,"mat-form-field",18)(136,"mat-select",39),me(137,uy,2,2,"mat-option",8,xt),l(),b(),s(139,"mat-label"),m(140,"KV Cache Type K"),l()(),s(141,"mat-form-field",18)(142,"mat-select",40),me(143,hy,2,2,"mat-option",8,xt),l(),b(),s(145,"mat-label"),m(146,"KV Cache Type V"),l()(),s(147,"mat-form-field",18)(148,"mat-select",41)(149,"mat-option",28),m(150,"on"),l(),s(151,"mat-option",29),m(152,"off"),l()(),b(),s(153,"mat-label"),m(154,"KV Offload"),l()()(),s(155,"div",13)(156,"mat-form-field",18),v(157,"input",42),b(),s(158,"mat-label"),m(159,"Cache RAM (MiB)"),l()(),s(160,"mat-form-field",18)(161,"mat-select",43)(162,"mat-option",28),m(163,"on"),l(),s(164,"mat-option",29),m(165,"off"),l()(),b(),s(166,"mat-label"),m(167,"Full SWA Cache"),l()()()(),s(168,"mat-expansion-panel")(169,"mat-expansion-panel-header")(170,"mat-panel-title"),m(171,"RoPE Scaling"),l()(),s(172,"div",13)(173,"mat-form-field",18)(174,"mat-select",44)(175,"mat-option",23),m(176,"none"),l(),s(177,"mat-option",45),m(178,"linear"),l(),s(179,"mat-option",46),m(180,"yarn"),l()(),b(),s(181,"mat-label"),m(182,"Scaling Method"),l()(),s(183,"mat-form-field",18),v(184,"input",47),b(),s(185,"mat-label"),m(186,"Scale Factor"),l()(),s(187,"mat-form-field",18),v(188,"input",48),b(),s(189,"mat-label"),m(190,"Freq Base"),l()(),s(191,"mat-form-field",18),v(192,"input",49),b(),s(193,"mat-label"),m(194,"Freq Scale"),l()()(),M(195,py,23,10),l(),s(196,"mat-expansion-panel")(197,"mat-expansion-panel-header")(198,"mat-panel-title"),m(199,"Generation"),l(),s(200,"mat-panel-description"),m(201,"Runtime and batching defaults"),l()(),s(202,"div",13)(203,"mat-form-field",18),v(204,"input",50),b(),s(205,"mat-label"),m(206,"Threads"),l()(),s(207,"mat-form-field",18),v(208,"input",51),b(),s(209,"mat-label"),m(210,"Parallel Slots"),l()(),s(211,"mat-form-field",18),v(212,"input",52),b(),s(213,"mat-label"),m(214,"Max Tokens (n-predict)"),l()()(),s(215,"div",13)(216,"mat-form-field",18)(217,"mat-select",53)(218,"mat-option",28),m(219,"on"),l(),s(220,"mat-option",29),m(221,"off"),l(),s(222,"mat-option",54),m(223,"auto"),l()(),b(),s(224,"mat-label"),m(225,"Flash Attention"),l()(),s(226,"mat-form-field",18)(227,"mat-select",55)(228,"mat-option",28),m(229,"on"),l(),s(230,"mat-option",29),m(231,"off"),l()(),b(),s(232,"mat-label"),m(233,"Cont. Batching"),l()(),s(234,"mat-form-field",18)(235,"mat-select",56)(236,"mat-option",28),m(237,"on"),l(),s(238,"mat-option",29),m(239,"off"),l()(),b(),s(240,"mat-label"),m(241,"Context Shift"),l()()()(),s(242,"mat-expansion-panel")(243,"mat-expansion-panel-header")(244,"mat-panel-title"),m(245,"Sampling Defaults"),l(),s(246,"mat-panel-description"),m(247,"Default sampling parameters for generation"),l()(),s(248,"div",26),m(249,"Core"),l(),s(250,"div",13)(251,"mat-form-field",18),v(252,"input",57),b(),s(253,"mat-label"),m(254,"Temperature"),l()(),s(255,"mat-form-field",18),v(256,"input",58),b(),s(257,"mat-label"),m(258,"Seed"),l()(),s(259,"mat-form-field",18),v(260,"input",59),b(),s(261,"mat-label"),m(262,"Top-K"),l()(),s(263,"mat-form-field",18),v(264,"input",60),b(),s(265,"mat-label"),m(266,"Top-P"),l()()(),s(267,"div",13)(268,"mat-form-field",18),v(269,"input",61),b(),s(270,"mat-label"),m(271,"Min-P"),l()(),s(272,"mat-form-field",18),v(273,"input",62),b(),s(274,"mat-label"),m(275,"Typical-P"),l()(),s(276,"mat-form-field",18)(277,"mat-select",63)(278,"mat-option",8),m(279,"disabled"),l(),s(280,"mat-option",8),m(281,"Mirostat"),l(),s(282,"mat-option",8),m(283,"Mirostat 2.0"),l()(),b(),s(284,"mat-label"),m(285,"Mirostat"),l()(),s(286,"mat-form-field",18),v(287,"input",64),b(),s(288,"mat-label"),m(289,"Dyn. Temp Range"),l()()(),s(290,"div",26),m(291,"Penalties"),l(),s(292,"div",13)(293,"mat-form-field",18),v(294,"input",65),b(),s(295,"mat-label"),m(296,"Repeat Last N"),l()(),s(297,"mat-form-field",18),v(298,"input",66),b(),s(299,"mat-label"),m(300,"Repeat Penalty"),l()(),s(301,"mat-form-field",18),v(302,"input",67),b(),s(303,"mat-label"),m(304,"Presence Penalty"),l()(),s(305,"mat-form-field",18),v(306,"input",68),b(),s(307,"mat-label"),m(308,"Frequency Penalty"),l()()(),s(309,"div",26),m(310,"DRY Sampling"),l(),s(311,"div",13)(312,"mat-form-field",18),v(313,"input",69),b(),s(314,"mat-label"),m(315,"DRY Multiplier"),l()(),s(316,"mat-form-field",18),v(317,"input",70),b(),s(318,"mat-label"),m(319,"DRY Base"),l()()()(),s(320,"mat-expansion-panel")(321,"mat-expansion-panel-header")(322,"mat-panel-title"),m(323,"Speculative Decoding"),l(),s(324,"mat-panel-description"),m(325,"Draft model and speculative decoding options"),l()(),s(326,"mat-form-field",71)(327,"mat-select",72)(328,"mat-option",23),m(329,"none"),l(),s(330,"mat-option",73),m(331,"draft-simple"),l(),s(332,"mat-option",74),m(333,"draft-eagle3"),l(),s(334,"mat-option",75),m(335,"draft-mtp"),l(),s(336,"mat-option",76),m(337,"ngram-simple"),l(),s(338,"mat-option",77),m(339,"ngram-mod"),l(),s(340,"mat-option",78),m(341,"draft-mtp,ngram-mod"),l()(),b(),s(342,"mat-label"),m(343,"Spec Type"),l()(),M(344,vy,32,12),M(345,by,15,6),M(346,yy,15,6),l(),s(347,"mat-expansion-panel")(348,"mat-expansion-panel-header")(349,"mat-panel-title"),m(350,"LoRA & Adapters"),l()(),v(351,"app-file-autocomplete",79),b(),s(352,"mat-form-field",5),v(353,"input",80),b(),s(354,"mat-label"),m(355,"LoRA Scaled"),l()()(),s(356,"mat-expansion-panel")(357,"mat-expansion-panel-header")(358,"mat-panel-title"),m(359,"Server & Network"),l()(),s(360,"div",13)(361,"mat-form-field",18),v(362,"input",81),b(),s(363,"mat-label"),m(364,"Host"),l()(),s(365,"mat-autocomplete",null,2),me(367,Cy,5,3,"mat-option",8,Hc),l(),s(369,"mat-form-field",18),v(370,"input",82),b(),s(371,"mat-label"),m(372,"Port"),l()(),s(373,"mat-form-field",18),v(374,"input",83),b(),s(375,"mat-label"),m(376,"Timeout (s)"),l()(),s(377,"mat-form-field",18),v(378,"input",84),b(),s(379,"mat-label"),m(380,"HTTP Threads"),l()()(),v(381,"app-file-autocomplete",85),b(),s(382,"div",13)(383,"mat-form-field",18)(384,"mat-select",86)(385,"mat-option",28),m(386,"on"),l(),s(387,"mat-option",29),m(388,"off"),l()(),b(),s(389,"mat-label"),m(390,"Prometheus Metrics"),l()(),s(391,"mat-form-field",18)(392,"mat-select",87)(393,"mat-option",28),m(394,"on"),l(),s(395,"mat-option",29),m(396,"off"),l()(),b(),s(397,"mat-label"),m(398,"Slots Endpoint"),l()(),s(399,"mat-form-field",18)(400,"mat-select",88)(401,"mat-option",28),m(402,"on"),l(),s(403,"mat-option",29),m(404,"off"),l()(),b(),s(405,"mat-label"),m(406,"Prompt Cache"),l()(),s(407,"mat-form-field",18),v(408,"input",89),b(),s(409,"mat-label"),m(410,"Cache Reuse"),l()()()(),s(411,"mat-expansion-panel")(412,"mat-expansion-panel-header")(413,"mat-panel-title"),m(414,"Reasoning"),l(),s(415,"mat-panel-description"),m(416,"Thinking/reasoning mode settings"),l()(),s(417,"div",13)(418,"mat-form-field",18)(419,"mat-select",90)(420,"mat-option",28),m(421,"on"),l(),s(422,"mat-option",29),m(423,"off"),l(),s(424,"mat-option",54),m(425,"auto"),l()(),b(),s(426,"mat-label"),m(427,"Reasoning"),l()(),s(428,"mat-form-field",18),v(429,"input",91),b(),s(430,"mat-label"),m(431,"Reasoning Budget"),l()(),s(432,"mat-form-field",18)(433,"mat-select",92)(434,"mat-option",54),m(435,"auto"),l(),s(436,"mat-option",23),m(437,"none (raw)"),l(),s(438,"mat-option",93),m(439,"deepseek"),l(),s(440,"mat-option",94),m(441,"deepseek-legacy"),l()(),b(),s(442,"mat-label"),m(443,"Reasoning Format"),l()()()(),s(444,"mat-expansion-panel")(445,"mat-expansion-panel-header")(446,"mat-panel-title"),m(447,"Additional"),l(),s(448,"mat-panel-description"),m(449,"Extra CLI flags and environment variables"),l()(),s(450,"mat-form-field",5),v(451,"textarea",95),b(),s(452,"mat-label"),m(453,"Extra CLI Flags (one per line)"),l()(),s(454,"mat-form-field",5),v(455,"textarea",96),b(),s(456,"mat-label"),m(457,"Environment variables (KEY=VALUE, one per line)"),l()()()()(),s(458,"mat-dialog-actions",97)(459,"button",98),A("click",function(){return n.cancel()}),m(460,"Cancel"),l(),s(461,"button",99),A("click",function(){return n.save()}),m(462),l()()),t&2){let a=je(16),r=je(123),u=je(366);c(),he("",n.isClone?"Clone":n.isEdit?"Edit":"Add"," llama-server service"),c(2),x("formGroup",n.form),c(),p("changed",n.isControlChanged("name")),c(),x("disabled",n.isEdit&&!n.isClone),y(),c(3),E(n.form.controls.name.errors?.required?8:n.form.controls.name.errors?.pattern?9:-1),c(2),p("changed",n.isControlChanged("command")),c(),x("matAutocomplete",a),y(),c(3),E(n.form.controls.command.errors?.required?14:-1),c(3),ue(n.filteredCommands()),c(2),p("has-changed",n.isSectionChanged("model","mmproj","alias")),c(4),x("existingPaths",n.existingModelPaths())("fieldClass",n.isControlChanged("model")?"changed":""),y(),c(),x("existingPaths",n.existingMmprojPaths())("fieldClass",n.isControlChanged("mmproj")?"changed":""),y(),c(),p("changed",n.isControlChanged("alias")),c(),y(),c(3),p("has-changed",n.isSectionChanged("nGpuLayers","device","tensorSplit","splitMode","mainGpu","fit","fitTarget","fitCtx","mlock","mmap","cpuMoe","nCpuMoe")),c(5),p("changed",n.isControlChanged("nGpuLayers")),c(),y(),c(3),p("changed",n.isControlChanged("device")),c(),y(),c(),ue(n.availableDevices()),c(5),p("changed",n.isControlChanged("splitMode")),c(),y(),c(11),p("changed",n.isControlChanged("tensorSplit")&&!n.isTensorSplitDisabled()),c(),x("disabled",n.isTensorSplitDisabled()),y(),c(3),p("changed",n.isControlChanged("mainGpu")),c(),y(),c(6),p("changed",n.isControlChanged("fit")),c(),y(),c(7),p("changed",n.isControlChanged("fitTarget")&&!n.isFitTargetDisabled()),c(),x("disabled",n.isFitTargetDisabled()),y(),c(3),p("changed",n.isControlChanged("fitCtx")&&!n.isFitTargetDisabled()),c(),x("disabled",n.isFitTargetDisabled()),y(),c(4),p("changed",n.isControlChanged("mlock")),c(),y(),c(7),p("changed",n.isControlChanged("mmap")),c(),y(),c(7),p("changed",n.isControlChanged("cpuMoe")),c(),y(),c(7),p("changed",n.isControlChanged("nCpuMoe")&&!n.isCpuMoeLayersDisabled()),c(),x("disabled",n.isCpuMoeLayersDisabled()),y(),c(3),p("has-changed",n.isSectionChanged("ctxSize","batchSize","ubatchSize","cacheTypeK","cacheTypeV","kvOffload","cacheRam","swaFull")),c(5),p("changed",n.isControlChanged("ctxSize")),c(),x("matAutocomplete",r),y(),c(5),ue(n.ctxPresets()),c(2),p("changed",n.isControlChanged("batchSize")),c(),y(),c(3),p("changed",n.isControlChanged("ubatchSize")),c(),y(),c(4),p("changed",n.isControlChanged("cacheTypeK")),c(),y(),c(),ue(n.kvCacheTypes),c(4),p("changed",n.isControlChanged("cacheTypeV")),c(),y(),c(),ue(n.kvCacheTypes),c(4),p("changed",n.isControlChanged("kvOffload")),c(),y(),c(8),p("changed",n.isControlChanged("cacheRam")),c(),y(),c(3),p("changed",n.isControlChanged("swaFull")),c(),y(),c(7),p("has-changed",n.isSectionChanged("ropeScaling","ropeScale","ropeFreqBase","ropeFreqScale","yarnOrigCtx","yarnExtFactor","yarnAttnFactor","yarnBetaSlow","yarnBetaFast")),c(5),p("changed",n.isControlChanged("ropeScaling")),c(),y(),c(9),p("changed",n.isControlChanged("ropeScale")&&!n.isRopeParamsDisabled()),c(),x("disabled",n.isRopeParamsDisabled()),y(),c(3),p("changed",n.isControlChanged("ropeFreqBase")&&!n.isRopeParamsDisabled()),c(),x("disabled",n.isRopeParamsDisabled()),y(),c(3),p("changed",n.isControlChanged("ropeFreqScale")&&!n.isRopeParamsDisabled()),c(),x("disabled",n.isRopeParamsDisabled()),y(),c(3),E(n.showYarnParams()?195:-1),c(),p("has-changed",n.isSectionChanged("threads","parallel","flashAttn","contBatching","contextShift","nPredict")),c(7),p("changed",n.isControlChanged("threads")),c(),y(),c(3),p("changed",n.isControlChanged("parallel")),c(),y(),c(3),p("changed",n.isControlChanged("nPredict")),c(),y(),c(4),p("changed",n.isControlChanged("flashAttn")),c(),y(),c(9),p("changed",n.isControlChanged("contBatching")),c(),y(),c(7),p("changed",n.isControlChanged("contextShift")),c(),y(),c(7),p("has-changed",n.isSectionChanged("temperature","seed","topK","topP","minP","typicalP","mirostat","dynatempRange","repeatLastN","repeatPenalty","presencePenalty","frequencyPenalty","dryMultiplier","dryBase")),c(9),p("changed",n.isControlChanged("temperature")),c(),y(),c(3),p("changed",n.isControlChanged("seed")),c(),y(),c(3),p("changed",n.isControlChanged("topK")&&!n.isMirostatEnabled()),c(),x("disabled",n.isMirostatEnabled()),y(),c(3),p("changed",n.isControlChanged("topP")&&!n.isMirostatEnabled()),c(),x("disabled",n.isMirostatEnabled()),y(),c(4),p("changed",n.isControlChanged("minP")),c(),y(),c(3),p("changed",n.isControlChanged("typicalP")&&!n.isMirostatEnabled()),c(),x("disabled",n.isMirostatEnabled()),y(),c(3),p("changed",n.isControlChanged("mirostat")),c(),y(),c(),x("value",0),c(2),x("value",1),c(2),x("value",2),c(4),p("changed",n.isControlChanged("dynatempRange")),c(),y(),c(6),p("changed",n.isControlChanged("repeatLastN")),c(),y(),c(3),p("changed",n.isControlChanged("repeatPenalty")),c(),y(),c(3),p("changed",n.isControlChanged("presencePenalty")),c(),y(),c(3),p("changed",n.isControlChanged("frequencyPenalty")),c(),y(),c(6),p("changed",n.isControlChanged("dryMultiplier")),c(),y(),c(3),p("changed",n.isControlChanged("dryBase")),c(),y(),c(3),p("has-changed",n.isSectionChanged("modelDraft","specDraftDevice","specDraftNMax","nGpuLayersDraft","specDraftCacheTypeK","specDraftCacheTypeV","specType","specNgramModNMin","specNgramModNMax","specNgramModNMatch","specNgramSimpleSizeN","specNgramSimpleSizeM","specNgramSimpleMinHits")),c(6),p("changed",n.isControlChanged("specType")),c(),y(),c(17),E(n.showDraftParams()?344:-1),c(),E(n.showNgramModParams()?345:-1),c(),E(n.showNgramSimpleParams()?346:-1),c(),p("has-changed",n.isSectionChanged("lora","loraScaled")),c(4),x("existingPaths",n.existingLoraPaths())("fieldClass",n.isControlChanged("lora")?"changed":""),y(),c(),p("changed",n.isControlChanged("loraScaled")),c(),y(),c(3),p("has-changed",n.isSectionChanged("host","port","timeout","threadsHttp","apiKeyFile","metrics","slots","cachePrompt","cacheReuse")),c(5),p("changed",n.isControlChanged("host")),c(),x("matAutocomplete",u),y(),c(5),ue(n.filteredHosts()),c(2),p("changed",n.isControlChanged("port")&&!n.isPortDisabled()),c(),x("disabled",n.isPortDisabled()),y(),c(3),p("changed",n.isControlChanged("timeout")),c(),y(),c(3),p("changed",n.isControlChanged("threadsHttp")),c(),y(),c(3),x("existingPaths",n.existingApiKeyPaths())("fieldClass",n.isControlChanged("apiKeyFile")?"changed":""),y(),c(2),p("changed",n.isControlChanged("metrics")),c(),y(),c(7),p("changed",n.isControlChanged("slots")),c(),y(),c(7),p("changed",n.isControlChanged("cachePrompt")),c(),y(),c(7),p("changed",n.isControlChanged("cacheReuse")&&!n.isCacheReuseDisabled()),c(),x("disabled",n.isCacheReuseDisabled()),y(),c(3),p("has-changed",n.isSectionChanged("reasoning","reasoningBudget","reasoningFormat")),c(7),p("changed",n.isControlChanged("reasoning")),c(),y(),c(9),p("changed",n.isControlChanged("reasoningBudget")&&!n.isReasoningParamsDisabled()),c(),x("disabled",n.isReasoningParamsDisabled()),y(),c(3),p("changed",n.isControlChanged("reasoningFormat")&&!n.isReasoningParamsDisabled()),c(),x("disabled",n.isReasoningParamsDisabled()),y(),c(11),p("has-changed",n.isSectionChanged("extraFlags","envText")),c(6),p("changed",n.isControlChanged("extraFlags")),c(),y(),c(3),p("changed",n.isControlChanged("envText")),c(),y(),c(6),x("disabled",n.form.invalid),c(),he(" ",n.isEdit&&!n.isClone?"Save":"Create"," ")}},dependencies:[Le,hn,bo,Ei,va,Ai,mn,pn,Ut,ji,xn,Cn,vt,Wi,Qe,it,Oo,Ts,Ba,Ms,As,Es,St,kt,Rt,fn,ti,ei,Nt,oi,ri,ai,Po,Fo,Is,za,Dp],styles:['@charset "UTF-8";.llama-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;min-width:640px}.form-row[_ngcontent-%COMP%]{display:flex;gap:12px;margin-bottom:4px}.form-col[_ngcontent-%COMP%]{flex:1}.form-col-60[_ngcontent-%COMP%]{flex:3}.form-col-40[_ngcontent-%COMP%]{flex:2}.full-width[_ngcontent-%COMP%]{width:100%}.auto-path[_ngcontent-%COMP%]{font-family:monospace}.auto-from[_ngcontent-%COMP%]{margin-left:8px;opacity:.6;font-size:12px}.flags-textarea[_ngcontent-%COMP%], .env-textarea[_ngcontent-%COMP%]{overflow-x:auto}mat-dialog-content[_ngcontent-%COMP%]{padding-top:10px!important;max-height:80vh}mat-expansion-panel[_ngcontent-%COMP%]{margin-bottom:0}mat-dialog-actions[_ngcontent-%COMP%]{gap:8px}.subsection-label[_ngcontent-%COMP%]{font-size:12px;font-weight:500;color:#0009;margin:4px 0 14px;text-transform:uppercase;letter-spacing:.5px}.sub-section-hint[_ngcontent-%COMP%]{font-size:11px;color:#0006;margin-bottom:4px}mat-expansion-panel.has-changed[_ngcontent-%COMP%] mat-panel-title[_ngcontent-%COMP%]{font-weight:700}mat-form-field.changed[_ngcontent-%COMP%] .mat-mdc-form-field-infix input, mat-form-field.changed[_ngcontent-%COMP%] .mat-mdc-form-field-infix .mat-mdc-select{font-weight:700}']})}}return i})();function No(i,o){for(let e of i){let t=e.indexOf("=");if(t>0&&e.slice(0,t)===o)return e.slice(t+1);let n=e.indexOf(" ");if(n>0&&e.slice(0,n)===o)return e.slice(n+1).trim()}for(let e=0;e<i.length;e++)if(i[e]===o&&e+1<i.length)return i[e+1];return null}var Sy=(i,o)=>o.command,My=(i,o)=>o.value,Ey=(i,o)=>o.path;function Ay(i,o){i&1&&(s(0,"mat-error"),m(1,"Required"),l())}function Ty(i,o){i&1&&(s(0,"mat-error"),m(1,"Starts with letter, alphanumeric + hyphens/underscores, max 128 chars"),l())}function Iy(i,o){i&1&&(s(0,"mat-error"),m(1,"Required"),l())}function Ry(i,o){if(i&1&&(s(0,"mat-option",8)(1,"span",54),m(2),l(),s(3,"span",55),m(4),l()()),i&2){let e=o.$implicit;x("value",e.command),c(2),q(e.command),c(2),he("(",e.from,")")}}function Oy(i,o){i&1&&(s(0,"mat-error"),m(1,"Required"),l())}function Fy(i,o){if(i&1&&(s(0,"mat-option",8)(1,"span",54),m(2),l(),s(3,"span",55),m(4,"(existing config)"),l()()),i&2){let e=o.$implicit;x("value",e),c(2),q(e)}}function Py(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e),c(),q(e)}}function Ny(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e),c(),q(e)}}function Ly(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e.value),c(),q(e.label)}}function Vy(i,o){if(i&1&&(s(0,"div",56),m(1,"Draft Model"),l(),s(2,"div",11)(3,"mat-form-field",57),v(4,"input",58),b(),s(5,"mat-label"),m(6,"Draft Model"),l()(),s(7,"mat-form-field",12),v(8,"input",59),b(),s(9,"mat-label"),m(10,"Draft TP Size"),l()(),s(11,"mat-form-field",12),v(12,"input",60),b(),s(13,"mat-label"),m(14,"Num Spec Tokens"),l()()()),i&2){let e=D();c(3),p("changed",e.isControlChanged("specDraftModel")),c(),y(),c(3),p("changed",e.isControlChanged("specDraftTensorParallelSize")),c(),y(),c(3),p("changed",e.isControlChanged("specNumDraftTokens")),c(),y()}}function By(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e),c(),q(e||"(none)")}}function zy(i,o){if(i&1&&(s(0,"mat-option",8),m(1),l()),i&2){let e=o.$implicit;x("value",e),c(),q(e||"(none)")}}function jy(i,o){if(i&1&&(s(0,"mat-option",8)(1,"span",54),m(2),l(),s(3,"span",55),m(4),l()()),i&2){let e=o.$implicit;x("value",e.path),c(2),q(e.path),c(2),he("(",e.source,")")}}var S={host:"127.0.0.1",port:8e3,servedModelName:"",model:"",tokenizer:"",dtype:"auto",tensorParallelSize:1,pipelineParallelSize:1,maxParallelLoadingWorkers:0,gpuMemoryUtilization:.9,swapSpace:4,cpuOffloadGb:0,device:"",attentionBackend:"",maxModelLen:0,maxNumSeqs:256,maxNumBatchedTokens:0,blockSize:0,enableChunkedPrefill:"auto",specMethod:"none",specTokens:0,specDraftModel:"",specDraftTensorParallelSize:0,specNumDraftTokens:0,temperature:1,topP:1,topK:-1,minP:0,seed:-1,repetitionPenalty:1,maxNumSeq:0,trustRemoteCode:!1,enableAutoToolChoice:!1,toolCallParser:"",reasoningParser:"",enablePrefixCaching:"auto",apiKey:"",extraFlags:"",envText:""};function Hy(i,o){let e=S[i];return e===void 0?!1:String(o)!==String(e)}var Uy="^[a-zA-Z][a-zA-Z0-9_-]{0,127}$",Gy=["auto","half","bfloat16","float","float16","float32"],$y=["TRITON_ATTN","ROCM_ATTN","FLASH_ATTN","FLASHINFER","TRITON_MLA","FLASHMLA","FLEX_ATTENTION","TORCH_SDPA","TREE_ATTN","XFORMERS"],Wy=[{value:"none",label:"none"},{value:"ngram",label:"ngram"},{value:"eagle",label:"eagle"},{value:"eagle3",label:"eagle3"},{value:"medusa",label:"medusa"},{value:"mlp_speculator",label:"mlp_speculator"},{value:"draft_model",label:"draft_model"},{value:"qwen3_5_mtp",label:"qwen3_5_mtp"},{value:"qwen3_next_mtp",label:"qwen3_next_mtp"},{value:"deepseek_mtp",label:"deepseek_mtp"}],qy=["","hermes","mistral","llama3_json","qwen3_xml","qwen25_tool_call","phi4_mini_json","pythonic","internlm","glm45","step3","minimax_m2"],Ky=["","deepseek_r1","qwen3","granite","phi4_reasoning","glm45","step3","minimax_m2"],Mp=(()=>{class i{constructor(){this.fb=d(un),this.dialogRef=d(gt),this.data=d(Gn),this.serviceService=d(_t),this.cdr=d(te),this.destroyRef=d(Bt),this.isEdit=this.data.config!==null,this.isClone=this.data.clone===!0,this.dtypeOptions=Gy,this.attentionBackends=$y,this.specMethods=Wy,this.toolCallParsers=qy,this.reasoningParsers=Ky,this.allExistingCommands=W(()=>{let e=this.data.allConfigs??[],t=this.data.config?.name??null,n=new Set,a=[];for(let r of e)r.name!==t&&(n.has(r.command)||(n.add(r.command),a.push({command:r.command,from:r.name})));return a}),this._commandValue=R(this.data.config?.command??""),this.commandValue=this._commandValue.asReadonly(),this.filteredCommands=W(()=>{let e=this.commandValue()?.toLowerCase()??"";return this.allExistingCommands().filter(t=>t.command.toLowerCase().includes(e)||t.from.toLowerCase().includes(e))}),this.form=this.fb.group({name:[this.data.config?.name??"",{validators:[st.required,st.pattern(Uy)]}],command:[this.data.config?.command??"",st.required],host:[S.host],port:[S.port],servedModelName:[S.servedModelName],model:[S.model],tokenizer:[S.tokenizer],dtype:[S.dtype],tensorParallelSize:[S.tensorParallelSize],pipelineParallelSize:[S.pipelineParallelSize],maxParallelLoadingWorkers:[S.maxParallelLoadingWorkers],gpuMemoryUtilization:[S.gpuMemoryUtilization],swapSpace:[S.swapSpace],cpuOffloadGb:[S.cpuOffloadGb],device:[S.device],attentionBackend:[S.attentionBackend],maxModelLen:[S.maxModelLen],maxNumSeqs:[S.maxNumSeqs],maxNumBatchedTokens:[S.maxNumBatchedTokens],blockSize:[S.blockSize],enableChunkedPrefill:[S.enableChunkedPrefill],specMethod:[S.specMethod],specTokens:[S.specTokens],specDraftModel:[S.specDraftModel],specDraftTensorParallelSize:[S.specDraftTensorParallelSize],specNumDraftTokens:[S.specNumDraftTokens],temperature:[S.temperature],topP:[S.topP],topK:[S.topK],minP:[S.minP],seed:[S.seed],repetitionPenalty:[S.repetitionPenalty],maxNumSeq:[S.maxNumSeq],trustRemoteCode:[S.trustRemoteCode],enableAutoToolChoice:[S.enableAutoToolChoice],toolCallParser:[S.toolCallParser],reasoningParser:[S.reasoningParser],enablePrefixCaching:[S.enablePrefixCaching],apiKey:[S.apiKey],extraFlags:[S.extraFlags],envText:[S.envText]}),this.filteredHosts=qn(this.form.controls.host.valueChanges.pipe(qi(),ke(this.form.controls.host.value),Vt(250),xi(),We(e=>{let t=(e??"").trim();return t?this.serviceService.getLlamaAutocomplete("host",t).pipe(Kt(()=>ge([]))):ge([])})),{initialValue:[]}),this.existingModelPaths=W(()=>this.extractConfigModelPaths()),this.formValue=qn(this.form.valueChanges,{initialValue:this.form.value}),this.specMethodValue=W(()=>this.formValue()?.specMethod),this.showSpecDraftParams=W(()=>{let e=this.specMethodValue();return e!=="none"&&e!=="ngram"}),this.isToolCallParserDisabled=W(()=>!this.formValue()?.enableAutoToolChoice)}extractConfigModelPaths(){let e=this.data.allConfigs??[],t=this.data.config?.name??null,n=new Set,a=[];for(let r of e){if(r.name===t||!r.flags)continue;let u=No(r.flags,"serve");u&&!n.has(u)&&(n.add(u),a.push(u))}return a}isControlChanged(e){let t=this.form.get(e)?.value;return t!=null&&Hy(e,t)}isSectionChanged(...e){return e.some(t=>this.isControlChanged(t))}ngOnInit(){this.form.controls.command.valueChanges.pipe(qi(this.destroyRef)).subscribe(e=>this._commandValue.set(e)),this.data.config&&this.populateForm(this.data.config),this.form.valueChanges.pipe(qi(this.destroyRef)).subscribe(()=>{this.cdr.markForCheck()})}populateForm(e){let t=this.form.controls,n=e.flags,a=No(n,"serve")??"";if(t.model.setValue(a),t.host.setValue(si(n,"--host",S.host)),t.port.setValue(Lt(n,"--port",S.port)),t.servedModelName.setValue(si(n,"--served-model-name","")),t.tokenizer.setValue(si(n,"--tokenizer","")),t.dtype.setValue(si(n,"--dtype",S.dtype)),t.tensorParallelSize.setValue(Lt(n,"--tensor-parallel-size",S.tensorParallelSize)),t.pipelineParallelSize.setValue(Lt(n,"--pipeline-parallel-size",S.pipelineParallelSize)),t.maxParallelLoadingWorkers.setValue(Lt(n,"--max-parallel-loading-workers",S.maxParallelLoadingWorkers)),t.gpuMemoryUtilization.setValue(Kn(n,"--gpu-memory-utilization",S.gpuMemoryUtilization)),t.swapSpace.setValue(Kn(n,"--swap-space",S.swapSpace)),t.cpuOffloadGb.setValue(Kn(n,"--cpu-offload-gb",S.cpuOffloadGb)),t.device.setValue(si(n,"--device","")),t.attentionBackend.setValue(si(n,"--attention-backend",S.attentionBackend)),t.maxModelLen.setValue(Lt(n,"--max-model-len",S.maxModelLen)),t.maxNumSeqs.setValue(Lt(n,"--max-num-seqs",S.maxNumSeqs)),t.maxNumBatchedTokens.setValue(Lt(n,"--max-num-batched-tokens",S.maxNumBatchedTokens)),t.blockSize.setValue(Lt(n,"--block-size",S.blockSize)),t.enableChunkedPrefill.setValue(Yy(n,"--enable-chunked-prefill","--no-enable-chunked-prefill",S.enableChunkedPrefill)),t.specMethod.setValue(si(n,"--spec-method",S.specMethod)),t.specTokens.setValue(Lt(n,"--spec-tokens",S.specTokens)),t.specDraftModel.setValue(si(n,"--spec-draft-model","")),t.specDraftTensorParallelSize.setValue(Lt(n,"--spec-draft-tensor-parallel-size",S.specDraftTensorParallelSize)),t.specNumDraftTokens.setValue(Lt(n,"--num-spec-tokens",S.specNumDraftTokens)),t.temperature.setValue(Kn(n,"--temperature",S.temperature)),t.topP.setValue(Kn(n,"--top-p",S.topP)),t.topK.setValue(Lt(n,"--top-k",S.topK)),t.minP.setValue(Kn(n,"--min-p",S.minP)),t.seed.setValue(Lt(n,"--seed",S.seed)),t.repetitionPenalty.setValue(Kn(n,"--repetition-penalty",S.repetitionPenalty)),t.maxNumSeq.setValue(Lt(n,"--max-num-seq",S.maxNumSeq)),t.trustRemoteCode.setValue(n.some(r=>r.split(/\s|=/)[0]==="--trust-remote-code")),t.enableAutoToolChoice.setValue(n.some(r=>r.split(/\s|=/)[0]==="--enable-auto-tool-choice")),t.toolCallParser.setValue(si(n,"--tool-call-parser","")),t.reasoningParser.setValue(si(n,"--reasoning-parser","")),t.enablePrefixCaching.setValue(si(n,"--enable-prefix-caching",S.enablePrefixCaching)),t.apiKey.setValue(si(n,"--api-key","")),t.extraFlags.setValue(this.extractExtraFlags(n).join(`
|
|
5591
5591
|
`)),e.environment){let r=Object.entries(e.environment).map(([u,h])=>`${u}=${h}`).join(`
|
|
5592
5592
|
`);r&&t.envText.setValue(r+`
|
|
5593
5593
|
`)}}extractExtraFlags(e){let t=new Set(["--host","--port","--served-model-name","--tokenizer","--dtype","--tensor-parallel-size","--pipeline-parallel-size","--max-parallel-loading-workers","--gpu-memory-utilization","--swap-space","--cpu-offload-gb","--device","--attention-backend","--max-model-len","--max-num-seqs","--max-num-batched-tokens","--block-size","--enable-chunked-prefill","--no-enable-chunked-prefill","--spec-method","--spec-tokens","--spec-draft-model","--spec-draft-tensor-parallel-size","--num-spec-tokens","--temperature","--top-p","--top-k","--min-p","--seed","--repetition-penalty","--max-num-seq","--trust-remote-code","--enable-auto-tool-choice","--tool-call-parser","--reasoning-parser","--enable-prefix-caching","--api-key"]),n=[];for(let a of e){let r=a.split(/\s|=/)[0];a.startsWith("--")&&!t.has(r)&&n.push(a)}return n}addIf(e,t,n,a){String(n)!==String(a)&&e.push(`${t} ${n}`)}addTri(e,t,n){t==="on"?e.push(n):t==="off"&&e.push(`--no-${n.slice(2)}`)}buildFlags(){let e=[],t=this.form.controls,n=(t.model.value??"").trim();n&&e.push(`serve ${n}`),this.addIf(e,"--served-model-name",(t.servedModelName.value??"").trim(),S.servedModelName),this.addIf(e,"--host",t.host.value,S.host),this.addIf(e,"--port",t.port.value,S.port),this.addIf(e,"--tokenizer",(t.tokenizer.value??"").trim(),S.tokenizer),this.addIf(e,"--dtype",t.dtype.value,S.dtype),this.addIf(e,"--tensor-parallel-size",t.tensorParallelSize.value,S.tensorParallelSize),this.addIf(e,"--pipeline-parallel-size",t.pipelineParallelSize.value,S.pipelineParallelSize),this.addIf(e,"--max-parallel-loading-workers",t.maxParallelLoadingWorkers.value,S.maxParallelLoadingWorkers),this.addIf(e,"--swap-space",t.swapSpace.value,S.swapSpace),this.addIf(e,"--cpu-offload-gb",t.cpuOffloadGb.value,S.cpuOffloadGb),this.addIf(e,"--device",(t.device.value??"").trim(),S.device),this.addIf(e,"--max-model-len",t.maxModelLen.value,S.maxModelLen),this.addIf(e,"--max-num-seqs",t.maxNumSeqs.value,S.maxNumSeqs),this.addIf(e,"--max-num-batched-tokens",t.maxNumBatchedTokens.value,S.maxNumBatchedTokens),this.addIf(e,"--block-size",t.blockSize.value,S.blockSize);let a=t.specMethod.value;a&&a!==S.specMethod&&(e.push(`--spec-method ${a}`),this.addIf(e,"--spec-tokens",t.specTokens.value,S.specTokens),this.showSpecDraftParams()&&(this.addIf(e,"--spec-draft-model",(t.specDraftModel.value??"").trim(),S.specDraftModel),this.addIf(e,"--spec-draft-tensor-parallel-size",t.specDraftTensorParallelSize.value,S.specDraftTensorParallelSize),this.addIf(e,"--num-spec-tokens",t.specNumDraftTokens.value,S.specNumDraftTokens))),this.addIf(e,"--gpu-memory-utilization",t.gpuMemoryUtilization.value,S.gpuMemoryUtilization),t.trustRemoteCode.value&&e.push("--trust-remote-code"),t.enableAutoToolChoice.value&&e.push("--enable-auto-tool-choice"),this.addIf(e,"--tool-call-parser",t.toolCallParser.value,S.toolCallParser),this.addIf(e,"--reasoning-parser",t.reasoningParser.value,S.reasoningParser),this.addTri(e,t.enableChunkedPrefill.value,"--enable-chunked-prefill"),this.addIf(e,"--attention-backend",t.attentionBackend.value,S.attentionBackend),this.addIf(e,"--temperature",t.temperature.value,S.temperature),this.addIf(e,"--top-p",t.topP.value,S.topP),this.addIf(e,"--top-k",t.topK.value,S.topK),this.addIf(e,"--min-p",t.minP.value,S.minP),this.addIf(e,"--seed",t.seed.value,S.seed),this.addIf(e,"--repetition-penalty",t.repetitionPenalty.value,S.repetitionPenalty),this.addIf(e,"--max-num-seq",t.maxNumSeq.value,S.maxNumSeq),this.addIf(e,"--enable-prefix-caching",t.enablePrefixCaching.value,S.enablePrefixCaching),this.addIf(e,"--api-key",(t.apiKey.value??"").trim(),S.apiKey);for(let r of t.extraFlags.value.split(`
|