diff --git a/cmd/prods/migration_test.go b/cmd/prods/migration_test.go index 82e4b93..b0bae1d 100644 --- a/cmd/prods/migration_test.go +++ b/cmd/prods/migration_test.go @@ -89,7 +89,11 @@ func newMigrationFixture(t *testing.T) migrationFixture { t.Fatal(err) } if _, err := db.Exec(` - DROP TABLE public_spec_projection_fields; + DROP TABLE spec_normalization_work_items; +DROP TABLE spec_normalization_work; +DROP TABLE spec_filter_profile_work; +DROP TABLE spec_filter_profiles; +DROP TABLE public_spec_projection_fields; DROP TABLE public_spec_projection_products; DROP TABLE spec_numeric_profile_work; DROP TABLE spec_normalization_selections; diff --git a/internal/catalog/product.go b/internal/catalog/product.go index ceeda4a..154fdaa 100644 --- a/internal/catalog/product.go +++ b/internal/catalog/product.go @@ -4,8 +4,7 @@ import ( "errors" "strings" - "golang.org/x/text/cases" - "golang.org/x/text/unicode/norm" + "prods/internal/searchtext" ) const SearchProjectionVersion = "x-text-v0.25.0-nfc-casefold-fields-v2" @@ -276,7 +275,7 @@ func (p Product) DisplayName() string { } func FoldSearch(value string) string { - return norm.NFC.String(cases.Fold().String(norm.NFC.String(value))) + return searchtext.Fold(value) } func EscapeLike(value string) string { diff --git a/internal/catalog/spec_search.go b/internal/catalog/spec_search.go new file mode 100644 index 0000000..dcb8a3b --- /dev/null +++ b/internal/catalog/spec_search.go @@ -0,0 +1,30 @@ +package catalog + +import "prods/internal/catalogfilter" + +type SpecSearchProfile struct { + SpecID string `json:"spec_id"` + SpecSemanticVersion int64 `json:"spec_semantic_version"` + Revision int64 `json:"revision"` + Filterable bool `json:"filterable"` + Profile catalogfilter.Profile `json:"profile"` +} + +type SpecNormalizationWork struct { + InitialSeed bool `json:"-"` + ID string `json:"id"` + SpecID string `json:"spec_id"` + Status string `json:"status"` + Cursor string `json:"cursor"` + ProfileRevision int64 `json:"profile_revision"` + SemanticVersion int64 `json:"semantic_version"` + Processed int64 `json:"processed"` + Failed int64 `json:"failed"` + Skipped int64 `json:"skipped"` + Total int64 `json:"total"` +} +type SpecNormalizationWorkItem struct { + SpecValueID string `json:"spec_value_id"` + State string `json:"state"` + Reason string `json:"reason"` +} diff --git a/internal/catalogfilter/clause.go b/internal/catalogfilter/clause.go new file mode 100644 index 0000000..0fc5ba1 --- /dev/null +++ b/internal/catalogfilter/clause.go @@ -0,0 +1,15 @@ +package catalogfilter + +import "prods/internal/specnumeric" + +type Scope struct { + Kind string `json:"kind"` + ID string `json:"id,omitempty"` + Query string `json:"query,omitempty"` +} +type Clause struct { + Field string `json:"field"` + Operator string `json:"operator"` + Values []string `json:"values,omitempty"` + Numeric *specnumeric.Predicate `json:"numeric,omitempty"` +} diff --git a/internal/catalogfilter/profile.go b/internal/catalogfilter/profile.go new file mode 100644 index 0000000..cf547c7 --- /dev/null +++ b/internal/catalogfilter/profile.go @@ -0,0 +1,105 @@ +package catalogfilter + +import ( + "fmt" + "slices" + "strings" + + "prods/internal/searchtext" + "prods/internal/specnumeric" +) + +const TextRule = "unicode-fold-space-1" + +type Profile struct { + Version int `json:"version"` + Kind string `json:"kind"` + TextRule string `json:"text_rule,omitempty"` + Delimiter string `json:"delimiter,omitempty"` + Operators []string `json:"operators"` + Numeric *specnumeric.Profile `json:"numeric,omitempty"` +} + +func DefaultTextProfile() Profile { + return Profile{Version: 1, Kind: "text", TextRule: TextRule, Operators: []string{"equals", "contains"}} +} +func NumericProfile(p specnumeric.Profile) Profile { + result := Profile{Version: 1, Kind: "numeric", Numeric: &p} + for _, op := range p.AllowedOperators { + result.Operators = append(result.Operators, string(op)) + } + return result +} +func ValidateProfile(p Profile) error { + if p.Version != 1 || len(p.Operators) == 0 { + return fmt.Errorf("unsupported search profile version or empty operators") + } + allowed := []string{} + switch p.Kind { + case "text": + allowed = []string{"equals", "contains"} + case "choice", "multi_choice": + allowed = []string{"equals"} + case "numeric": + if p.Numeric == nil { + return fmt.Errorf("numeric profile required") + } + if err := specnumeric.ValidateProfile(*p.Numeric); err != nil { + return err + } + for _, op := range p.Numeric.AllowedOperators { + allowed = append(allowed, string(op)) + } + if len(allowed) != len(p.Operators) { + return fmt.Errorf("numeric operators must match their authoritative profile") + } + default: + return fmt.Errorf("unsupported search kind") + } + seen := map[string]bool{} + for _, op := range p.Operators { + if seen[op] || !slices.Contains(allowed, op) { + return fmt.Errorf("unsupported or duplicate search operator") + } + seen[op] = true + } + if p.Kind == "numeric" { + if p.TextRule != "" || p.Delimiter != "" { + return fmt.Errorf("numeric profile cannot declare text rules") + } + } else { + if p.Numeric != nil || p.TextRule != TextRule { + return fmt.Errorf("unsupported text rule") + } + if p.Kind == "multi_choice" { + if strings.TrimSpace(p.Delimiter) == "" || len(p.Delimiter) > 8 { + return fmt.Errorf("explicit literal delimiter required") + } + } else if p.Delimiter != "" { + return fmt.Errorf("delimiter only applies to declared multiple choices") + } + } + return nil +} + +func FoldText(value string) string { return searchtext.Fold(strings.Join(strings.Fields(value), " ")) } +func Values(raw string, p Profile) ([]string, error) { + if err := ValidateProfile(p); err != nil { + return nil, err + } + if p.Kind == "numeric" { + return nil, fmt.Errorf("numeric facts require controlled adoption") + } + parts := []string{raw} + if p.Kind == "multi_choice" { + parts = strings.Split(raw, p.Delimiter) + } + var result []string + for _, part := range parts { + value := FoldText(part) + if value != "" && !slices.Contains(result, value) { + result = append(result, value) + } + } + return result, nil +} diff --git a/internal/cataloglisting/listing.go b/internal/cataloglisting/listing.go index 954a3dd..20de6da 100644 --- a/internal/cataloglisting/listing.go +++ b/internal/cataloglisting/listing.go @@ -81,6 +81,14 @@ type CategoryNode struct { } func Resolve(views []publishing.PublicView, configuration site.Configuration, request Request) (Result, error) { + return resolve(views, nil, configuration, request) +} + +func ResolveSnapshot(snapshot publishing.CatalogSnapshot, request Request) (Result, error) { + return resolve(snapshot.Views, snapshot.ScopeViews, snapshot.Site, request) +} + +func resolve(views, columnViews []publishing.PublicView, configuration site.Configuration, request Request) (Result, error) { if request.Page < 1 { request.Page = 1 } @@ -104,6 +112,9 @@ func Resolve(views []publishing.PublicView, configuration site.Configuration, re } profile, hasProfile := configuration.CategoryListingProfiles[request.Scope.ID] common := commonApplicable(localized) + if columnViews != nil { + common = commonApplicable(columnViews) + } columns := resolveColumns(request.Scope, profile, hasProfile, common) sortKey, direction, err := resolveSort(request, profile, hasProfile) if err != nil { @@ -214,7 +225,7 @@ func commonApplicable(views []publishing.PublicView) map[string]publishing.Appli applicable[spec.ID] = spec } for id := range common { - if _, exists := applicable[id]; !exists { + if other, exists := applicable[id]; !exists || other.SemanticVersion != common[id].SemanticVersion { delete(common, id) } } diff --git a/internal/cataloglisting/listing_test.go b/internal/cataloglisting/listing_test.go index 4020280..a538dec 100644 --- a/internal/cataloglisting/listing_test.go +++ b/internal/cataloglisting/listing_test.go @@ -1,6 +1,7 @@ package cataloglisting import ( + "fmt" "reflect" "testing" @@ -9,6 +10,24 @@ import ( "prods/internal/site" ) +func TestFilteredSnapshotPaginatesWithScopeColumns(t *testing.T) { + var views []publishing.PublicView + for i := range 27 { + views = append(views, listingView(fmt.Sprintf("p%02d", i), fmt.Sprintf("P%02d", i), "cat", []publishing.ApplicableSpecification{spec("common"), spec("only_filtered")}, nil)) + } + scope := append(append([]publishing.PublicView{}, views...), listingView("other", "OTHER", "other", []publishing.ApplicableSpecification{spec("common")}, nil)) + snapshot := publishing.CatalogSnapshot{Views: views, ScopeViews: scope, Site: site.DefaultConfiguration()} + got, err := ResolveSnapshot(snapshot, Request{Scope: Scope{Kind: ScopeAll}, Page: 2, PageSize: 24}) + if err != nil || got.Total != 27 || len(got.Rows) != 3 || got.Rows[0].ProductID != "p24" { + t.Fatalf("page: %+v %v", got, err) + } + for _, column := range got.Columns { + if column.Key == "spec:only_filtered" { + t.Fatal("filtered subset expanded common fields") + } + } +} + func TestCommonUsesApplicabilityAcrossFullScopeNotCurrentPageValues(t *testing.T) { input := []publishing.PublicView{ listingView("ldo-1", "LDO-1", "cat_ldo", []publishing.ApplicableSpecification{spec("vin"), spec("vout"), spec("iout"), spec("iq")}, map[string]string{"vin": "3-6 V", "vout": "3.3 V"}), diff --git a/internal/distribution/client.go b/internal/distribution/client.go index fdad651..43dd849 100644 --- a/internal/distribution/client.go +++ b/internal/distribution/client.go @@ -8,6 +8,7 @@ import ( "io" "net/http" "net/url" + "prods/internal/catalogfilter" "runtime" "strings" "sync" @@ -70,12 +71,13 @@ type DictionaryEntry struct { } type SpecDefinition struct { - ID string `json:"id"` - Name string `json:"name"` - PreferredUnit string `json:"preferred_unit,omitempty"` - Filterable bool `json:"filterable"` - SemanticVersion int64 `json:"semantic_version"` - Status string `json:"status,omitempty"` + SearchProfile *catalogfilter.Profile `json:"search_profile,omitempty"` + ID string `json:"id"` + Name string `json:"name"` + PreferredUnit string `json:"preferred_unit,omitempty"` + Filterable bool `json:"filterable"` + SemanticVersion int64 `json:"semantic_version"` + Status string `json:"status,omitempty"` } type SpecSet struct { @@ -244,6 +246,11 @@ func validateSampleData(sample SampleData, version string) error { } specIDs := make(map[string]struct{}, len(sample.Specs)) for _, spec := range sample.Specs { + if spec.SearchProfile != nil { + if err := catalogfilter.ValidateProfile(*spec.SearchProfile); err != nil { + return fmt.Errorf("sample specification %q search profile: %w", spec.ID, err) + } + } if !validSampleID(spec.ID) || !validSampleText(spec.Name, 1, 500) || !validSampleText(spec.PreferredUnit, 0, 120) || spec.SemanticVersion < 1 || (spec.Status != "" && !oneOf(spec.Status, "active", "disabled")) { diff --git a/internal/distribution/prods-sample-data-v1.json.gz b/internal/distribution/prods-sample-data-v1.json.gz index dc66247..d1d99aa 100644 Binary files a/internal/distribution/prods-sample-data-v1.json.gz and b/internal/distribution/prods-sample-data-v1.json.gz differ diff --git a/internal/localization/catalog.go b/internal/localization/catalog.go index 4e36f95..3365222 100644 --- a/internal/localization/catalog.go +++ b/internal/localization/catalog.go @@ -31,51 +31,64 @@ func IsAvailable(locale string) bool { } type Messages struct { - Catalog string - RequestPart string - SearchLabel string - Search string - All string - Filters string - ClearFilters string - SelectForRFQ string - SelectedProducts string - ClearSelection string - MoreDetails string - LessDetails string - NoProducts string - NoProductsPrefix string - RequestThisPart string - PreviousPage string - NextPage string - PartNumber string - Manufacturer string - Brand string - Category string - Lifecycle string - Applications string - ProductImages string - Description string - Features string - Specification string - Specifications string - Documents string - RequestQuote string - RFQTitle string - CatalogProduct string - RequestedPart string - OriginalSearch string - Name string - Email string - QuantityOptional string - Notes string - SubmitRFQ string - RFQReceived string - Reference string - ReplayNotice string - Privacy string - Terms string - Language string + Package string + FilterEquals string + FilterContains string + FilterSupports string + FilterCovers string + FilterBetween string + FilterValue string + FilterLower string + FilterUpper string + FilterUnit string + FilterError string + FilterUnavailable string + FilterNumericHelp string + Catalog string + RequestPart string + SearchLabel string + Search string + All string + Filters string + ClearFilters string + SelectForRFQ string + SelectedProducts string + ClearSelection string + MoreDetails string + LessDetails string + NoProducts string + NoProductsPrefix string + RequestThisPart string + PreviousPage string + NextPage string + PartNumber string + Manufacturer string + Brand string + Category string + Lifecycle string + Applications string + ProductImages string + Description string + Features string + Specification string + Specifications string + Documents string + RequestQuote string + RFQTitle string + CatalogProduct string + RequestedPart string + OriginalSearch string + Name string + Email string + QuantityOptional string + Notes string + SubmitRFQ string + RFQReceived string + Reference string + ReplayNotice string + Privacy string + Terms string + Language string } var english = Messages{ diff --git a/internal/localization/catalog_filters.go b/internal/localization/catalog_filters.go new file mode 100644 index 0000000..08d6484 --- /dev/null +++ b/internal/localization/catalog_filters.go @@ -0,0 +1,34 @@ +package localization + +// Versioned defaults; professional language review remains outstanding. +func init() { + labels := map[string][]string{ + "en-US": {"Package / Form factor", "Equals", "Contains text", "Supports value", "Covers entire range", "Between", "Value", "Lower bound", "Upper bound", "Unit", "Check your filters", "Unavailable in this scope", "Use Value for a single value; use both bounds for a range."}, + "zh-TW": {"封裝/外形", "等於", "包含文字", "支援指定值", "涵蓋整段區間", "介於", "數值", "下限", "上限", "單位", "請檢查篩選條件", "此範圍不適用", "查單值請填數值;查區間請填下限與上限。"}, + "zh-CN": {"封装/外形", "等于", "包含文字", "支持指定值", "涵盖整个区间", "介于", "数值", "下限", "上限", "单位", "请检查筛选条件", "此范围不适用", "查单值请填数值;查区间请填下限与上限。"}, + "ja-JP": {"パッケージ/形状", "等しい", "文字を含む", "指定値に対応", "範囲全体に対応", "範囲内", "値", "下限", "上限", "単位", "絞り込み条件を確認してください", "この範囲では使用できません", "単一値には値を、範囲には下限と上限を入力してください。"}, + "ko-KR": {"패키지 / 형태", "같음", "텍스트 포함", "지정 값 지원", "전체 범위 지원", "범위 내", "값", "하한", "상한", "단위", "필터를 확인하세요", "이 범위에서 사용할 수 없음", "단일 값은 값에, 범위는 하한과 상한에 입력하세요."}, + "de-DE": {"Gehäuse / Bauform", "Gleich", "Text enthält", "Unterstützt Wert", "Deckt gesamten Bereich ab", "Zwischen", "Wert", "Untergrenze", "Obergrenze", "Einheit", "Filter prüfen", "In diesem Bereich nicht verfügbar", "Für einen Einzelwert das Wertfeld, für einen Bereich beide Grenzen ausfüllen."}, + "fr-FR": {"Boîtier / Format", "Égal à", "Contient le texte", "Prend en charge la valeur", "Couvre toute la plage", "Entre", "Valeur", "Borne inférieure", "Borne supérieure", "Unité", "Vérifiez les filtres", "Indisponible dans ce périmètre", "Pour une valeur, renseignez Valeur ; pour une plage, renseignez les deux bornes."}, + "it-IT": {"Contenitore / Formato", "Uguale a", "Contiene testo", "Supporta il valore", "Copre tutto l’intervallo", "Tra", "Valore", "Limite inferiore", "Limite superiore", "Unità", "Controlla i filtri", "Non disponibile in questo ambito", "Per un valore compila Valore; per un intervallo compila entrambi i limiti."}, + "es-ES": {"Encapsulado / Formato", "Igual a", "Contiene texto", "Admite el valor", "Cubre todo el intervalo", "Entre", "Valor", "Límite inferior", "Límite superior", "Unidad", "Comprueba los filtros", "No disponible en este ámbito", "Para un valor, rellena Valor; para un intervalo, rellena ambos límites."}, + "pt-BR": {"Encapsulamento / Formato", "Igual a", "Contém texto", "Suporta o valor", "Cobre todo o intervalo", "Entre", "Valor", "Limite inferior", "Limite superior", "Unidade", "Verifique os filtros", "Indisponível neste escopo", "Para um valor, preencha Valor; para um intervalo, preencha os dois limites."}, + } + for locale, values := range labels { + m := messageCatalogs[locale] + m.Package = values[0] + m.FilterEquals = values[1] + m.FilterContains = values[2] + m.FilterSupports = values[3] + m.FilterCovers = values[4] + m.FilterBetween = values[5] + m.FilterValue = values[6] + m.FilterLower = values[7] + m.FilterUpper = values[8] + m.FilterUnit = values[9] + m.FilterError = values[10] + m.FilterUnavailable = values[11] + m.FilterNumericHelp = values[12] + messageCatalogs[locale] = m + } +} diff --git a/internal/localization/official_public_copy.go b/internal/localization/official_public_copy.go index 86670a3..6572a2c 100644 --- a/internal/localization/official_public_copy.go +++ b/internal/localization/official_public_copy.go @@ -9,6 +9,20 @@ type officialCopyField struct { } var officialCopyFields = []officialCopyField{ + {"product.package", "Catalog filter Package", func(m Messages) string { return m.Package }}, + {"filter.equals", "Catalog filter FilterEquals", func(m Messages) string { return m.FilterEquals }}, + {"filter.contains", "Catalog filter FilterContains", func(m Messages) string { return m.FilterContains }}, + {"filter.supports_point", "Catalog filter FilterSupports", func(m Messages) string { return m.FilterSupports }}, + {"filter.covers_range", "Catalog filter FilterCovers", func(m Messages) string { return m.FilterCovers }}, + {"filter.between", "Catalog filter FilterBetween", func(m Messages) string { return m.FilterBetween }}, + {"filter.value", "Catalog filter FilterValue", func(m Messages) string { return m.FilterValue }}, + {"filter.lower", "Catalog filter FilterLower", func(m Messages) string { return m.FilterLower }}, + {"filter.upper", "Catalog filter FilterUpper", func(m Messages) string { return m.FilterUpper }}, + {"filter.unit", "Catalog filter FilterUnit", func(m Messages) string { return m.FilterUnit }}, + {"filter.error", "Catalog filter FilterError", func(m Messages) string { return m.FilterError }}, + {"filter.unavailable", "Catalog filter FilterUnavailable", func(m Messages) string { return m.FilterUnavailable }}, + {"filter.numeric_help", "Catalog filter FilterNumericHelp", func(m Messages) string { return m.FilterNumericHelp }}, + {"catalog.title", "Public catalog heading", func(m Messages) string { return m.Catalog }}, {"catalog.request_part", "Public catalog request-part action", func(m Messages) string { return m.RequestPart }}, {"search.label", "Public search field label", func(m Messages) string { return m.SearchLabel }}, @@ -80,6 +94,20 @@ func OfficialPublicCopyCatalog() PublicCopyCatalog { func ApplyPublicCopy(messages Messages, values map[string]string) Messages { targets := map[string]*string{ + "product.package": &messages.Package, + "filter.equals": &messages.FilterEquals, + "filter.contains": &messages.FilterContains, + "filter.supports_point": &messages.FilterSupports, + "filter.covers_range": &messages.FilterCovers, + "filter.between": &messages.FilterBetween, + "filter.value": &messages.FilterValue, + "filter.lower": &messages.FilterLower, + "filter.upper": &messages.FilterUpper, + "filter.unit": &messages.FilterUnit, + "filter.error": &messages.FilterError, + "filter.unavailable": &messages.FilterUnavailable, + "filter.numeric_help": &messages.FilterNumericHelp, + "catalog.title": &messages.Catalog, "catalog.request_part": &messages.RequestPart, "search.label": &messages.SearchLabel, "search.submit": &messages.Search, "search.all": &messages.All, "search.filters": &messages.Filters, "search.clear_filters": &messages.ClearFilters, diff --git a/internal/publishing/catalog_query.go b/internal/publishing/catalog_query.go new file mode 100644 index 0000000..498cd93 --- /dev/null +++ b/internal/publishing/catalog_query.go @@ -0,0 +1,468 @@ +package publishing + +import ( + "context" + "errors" + "slices" + "sort" + "strings" + + "prods/internal/catalog" + "prods/internal/catalogfilter" + "prods/internal/localization" + "prods/internal/site" + "prods/internal/specnumeric" +) + +type CatalogQuery struct { + ScopeURL string + Scope catalogfilter.Scope + Locale string + Clauses []catalogfilter.Clause +} +type CatalogFilterOption struct { + Value string + Label string +} +type CatalogSnapshot struct { + Scope catalogfilter.Scope + AllViews []PublicView + Presentation PublicView + Views []PublicView + ScopeViews []PublicView + Definitions []PublicFilterDefinition + Options map[string][]CatalogFilterOption + Site site.Configuration + Locale string + Generation int64 +} + +var ErrCatalogScopeNotFound = errors.New("public catalog scope not found") + +type CatalogFilterError struct{ Field, Message string } + +func (e *CatalogFilterError) Error() string { return e.Field + ": " + e.Message } + +func coreFilterDefinitions() []PublicFilterDefinition { + result := []PublicFilterDefinition{} + for _, field := range []string{"manufacturer", "brand", "category", "application", "lifecycle", "package"} { + p := catalogfilter.DefaultTextProfile() + if field != "package" { + p.Kind = "choice" + p.Operators = []string{"equals"} + } + result = append(result, PublicFilterDefinition{Field: field, SemanticVersion: 1, ProfileRevision: 1, Profile: p}) + } + return result +} + +// Candidate providers are read outside the public gate. Every fact, option, +// count and definition is then resolved against one admitted immutable index. +func (e *Engine) AdmitCatalog(ctx context.Context, request CatalogQuery) (CatalogSnapshot, error) { + var ids []string + var predicates []specnumeric.Predicate + for _, c := range request.Clauses { + if c.Numeric != nil { + ids = append(ids, c.Numeric.SpecID) + predicates = append(predicates, *c.Numeric) + } + } + var candidates SpecCandidateSnapshot + var projected bool + var candidateErr error + if len(ids) > 0 { + candidates, projected, candidateErr = e.readSpecCandidates(ctx, SpecSearchRequest{Predicates: predicates}) + } + e.gate.RLock() + defer e.gate.RUnlock() + if e.index == nil || e.index.unhealthy != nil { + return CatalogSnapshot{}, ErrPublicUnavailable + } + if err := ctx.Err(); err != nil { + return CatalogSnapshot{}, err + } + snapshot := CatalogSnapshot{Site: e.index.site, Generation: e.index.siteEpoch, Options: map[string][]CatalogFilterOption{}, Views: []PublicView{}, ScopeViews: []PublicView{}} + presentation := PublicView{Site: e.index.site, SiteEpoch: e.index.siteEpoch, Language: e.index.localization.DefaultLocale, DefaultLocale: e.index.localization.DefaultLocale, SupportedLocales: slices.Clone(e.index.localization.EnabledLocales), PublicCopyDefaults: map[string]map[string]string{}, PublicCopyOverrides: e.index.localization.PublicCopyOverrides} + if len(e.index.views) > 0 { + presentation = e.admittedViewLocked(e.index.views[0]) + presentation.Site = e.index.site + presentation.SiteEpoch = e.index.siteEpoch + } + if presentation.DefaultLocale == "" { + presentation.DefaultLocale = "en-US" + } + if presentation.Language == "" { + presentation.Language = presentation.DefaultLocale + } + if len(presentation.SupportedLocales) == 0 { + presentation.SupportedLocales = []string{presentation.DefaultLocale} + } + if len(presentation.PublicCopyDefaults) == 0 { + presentation.PublicCopyDefaults = map[string]map[string]string{} + for _, item := range localization.OfficialPublicCopyCatalog().Defaults { + if presentation.PublicCopyDefaults[item.Key] == nil { + presentation.PublicCopyDefaults[item.Key] = map[string]string{} + } + presentation.PublicCopyDefaults[item.Key][item.Locale] = item.Value + } + } + snapshot.Presentation = presentation + locale := request.Locale + if locale == "" { + locale = presentation.DefaultLocale + } + if !slices.Contains(presentation.SupportedLocales, locale) { + return snapshot, localization.ErrUnsupportedLocale + } + if request.ScopeURL != "" && request.Scope.ID == "" { + for _, v := range e.index.views { + switch request.Scope.Kind { + case "manufacturer": + if v.ManufacturerURL == request.ScopeURL { + request.Scope.ID = v.ManufacturerID + } + case "brand": + if v.BrandURL == request.ScopeURL { + request.Scope.ID = v.BrandID + } + case "application": + for _, a := range v.Applications { + if a.URL == request.ScopeURL { + request.Scope.ID = a.ID + } + } + } + } + if request.Scope.ID == "" { + return snapshot, ErrCatalogScopeNotFound + } + } + snapshot.Scope = request.Scope + if len(e.index.views) > 0 { + view := e.index.views[0] + if locale == "" { + locale = view.DefaultLocale + if locale == "" { + locale = view.Language + } + } + if !slices.Contains(publicSupportedLocales(view), locale) { + return snapshot, localization.ErrUnsupportedLocale + } + } + if locale == "" { + locale = "en-US" + } + snapshot.Locale = locale + switch request.Scope.Kind { + case "all": + if request.Scope.ID != "" { + return snapshot, &CatalogFilterError{Message: "invalid scope"} + } + case "search": + if strings.TrimSpace(request.Scope.Query) == "" { + return snapshot, &CatalogFilterError{Message: "empty search scope"} + } + case "category", "manufacturer", "brand", "application": + if request.Scope.ID == "" { + return snapshot, &CatalogFilterError{Message: "missing scope ID"} + } + default: + return snapshot, &CatalogFilterError{Message: "unknown scope"} + } + keywordRanks := map[string]int{} + for _, view := range e.index.views { + view = e.admittedViewLocked(view) + view.Applications = slices.Clone(view.Applications) + view.CategoryTrail = slices.Clone(view.CategoryTrail) + // Match the admitted source projection before replacing display labels. + matchesScope := catalogScopeMatches(view, request.Scope) + rank := catalogKeywordRank(view, request.Scope.Query) + keywordRanks[view.ID] = rank + view = view.ForLocale(locale) + snapshot.AllViews = append(snapshot.AllViews, view) + if matchesScope && (request.Scope.Kind == "search" || strings.TrimSpace(request.Scope.Query) == "" || rank >= 0) { + snapshot.ScopeViews = append(snapshot.ScopeViews, view) + } + } + sort.SliceStable(snapshot.ScopeViews, func(i, j int) bool { + a, b := snapshot.ScopeViews[i], snapshot.ScopeViews[j] + if request.Scope.Kind == "search" { + ar, br := keywordRanks[a.ID], keywordRanks[b.ID] + if ar != br { + return ar < br + } + } + ap, bp := catalog.FoldSearch(a.PartNumber), catalog.FoldSearch(b.PartNumber) + if ap != bp { + return ap < bp + } + return a.ID < b.ID + }) + snapshot.Definitions = append(coreFilterDefinitions(), CommonFilterDefinitions(snapshot.ScopeViews)...) + byField := map[string]PublicFilterDefinition{} + for _, d := range snapshot.Definitions { + byField[d.Field] = d + if d.Profile.Kind == "numeric" { + continue + } + options := map[string]string{} + for _, view := range snapshot.ScopeViews { + for _, option := range catalogFieldOptions(view, d) { + if option.Value != "" { + if _, exists := options[option.Value]; !exists { + options[option.Value] = option.Label + } + } + } + } + for value, label := range options { + snapshot.Options[d.Field] = append(snapshot.Options[d.Field], CatalogFilterOption{Value: value, Label: label}) + } + sort.Slice(snapshot.Options[d.Field], func(i, j int) bool { + a, b := snapshot.Options[d.Field][i], snapshot.Options[d.Field][j] + if a.Label != b.Label { + return a.Label < b.Label + } + return a.Value < b.Value + }) + } + seen := map[string]bool{} + for _, clause := range request.Clauses { + d, ok := byField[clause.Field] + invalid := func(message string) (CatalogSnapshot, error) { + return snapshot, &CatalogFilterError{Field: clause.Field, Message: message} + } + if !ok { + return invalid("field is not applicable with one published meaning in this scope") + } + if seen[clause.Field] { + return invalid("duplicate condition") + } + seen[clause.Field] = true + if !slices.Contains(d.Profile.Operators, clause.Operator) { + return invalid("unsupported operator") + } + if d.Profile.Kind == "numeric" { + if clause.Numeric == nil || len(clause.Values) != 0 || clause.Numeric.SpecID != strings.TrimPrefix(clause.Field, "spec:") || string(clause.Numeric.Operator) != clause.Operator { + return invalid("numeric condition requires matching operands") + } + if err := validateSpecPredicate(*clause.Numeric); err != nil { + return invalid(err.Error()) + } + if _, err := specnumeric.NormalizePredicate(*clause.Numeric, *d.Profile.Numeric); err != nil { + return invalid(err.Error()) + } + } else { + if clause.Numeric != nil || len(clause.Values) == 0 || len(clause.Values) > 20 { + return invalid("condition requires one to twenty values") + } + for _, value := range clause.Values { + if len(value) > 512 || catalogfilter.FoldText(value) == "" { + return invalid("invalid text value") + } + } + } + } + var candidateIDs map[string]bool + if len(ids) > 0 { + candidateIDs, projected = e.admitSpecCandidatesLocked(candidates, projected, candidateErr) + } + for _, view := range snapshot.ScopeViews { + if projected && !candidateIDs[view.ID] { + continue + } + match := true + for _, c := range request.Clauses { + if c.Numeric != nil { + if specViewTruth(view, []specnumeric.Predicate{*c.Numeric}) != specnumeric.Match { + match = false + break + } + } else if !catalogTextMatches(view, byField[c.Field], c) { + match = false + break + } + } + if match { + snapshot.Views = append(snapshot.Views, view) + } + } + return snapshot, nil +} + +func catalogScopeMatches(v PublicView, s catalogfilter.Scope) bool { + switch s.Kind { + case "all": + return true + case "search": + return catalogKeywordRank(v, s.Query) >= 0 + case "manufacturer": + return v.ManufacturerID == s.ID + case "brand": + return v.BrandID == s.ID + case "category": + if v.CategoryID == s.ID { + return true + } + for _, c := range v.CategoryTrail { + if c.ID == s.ID { + return true + } + } + case "application": + for _, a := range v.Applications { + if a.ID == s.ID { + return true + } + } + } + return false +} +func catalogKeywordRank(v PublicView, q string) int { + q = catalog.FoldSearch(q) + part := catalog.FoldSearch(v.PartNumber) + if part == q { + return 0 + } + if strings.HasPrefix(part, q) { + return 1 + } + if strings.Contains(part, q) { + return 2 + } + for _, value := range []string{v.Name, v.Manufacturer, v.Brand} { + if strings.Contains(catalog.FoldSearch(value), q) { + return 3 + } + } + // Keep the existing keyword field boundary and enabled localized names. + all := []string{v.PartNumber, v.Name, v.Manufacturer, v.Brand, v.Category, v.Lifecycle, applicationNames(v.Applications)} + for _, localized := range v.Localizations { + all = append(all, localized.Name) + } + if strings.Contains(catalog.FoldSearch(strings.Join(all, " ")), q) { + return 4 + } + return -1 +} +func catalogFieldOptions(v PublicView, d PublicFilterDefinition) []CatalogFilterOption { + option := func(value, label string) []CatalogFilterOption { + return []CatalogFilterOption{{Value: value, Label: label}} + } + switch d.Field { + case "manufacturer": + return option(v.ManufacturerID, v.Manufacturer) + case "brand": + return option(v.BrandID, v.Brand) + case "category": + r := option(v.CategoryID, v.Category) + for _, c := range v.CategoryTrail { + r = append(r, CatalogFilterOption{Value: c.ID, Label: c.Name}) + } + return r + case "application": + r := []CatalogFilterOption{} + for _, a := range v.Applications { + r = append(r, CatalogFilterOption{Value: a.ID, Label: a.Name}) + } + return r + case "lifecycle": + return option(v.LifecycleID, v.Lifecycle) + case "package": + return option(v.PackageFormFactor, v.PackageFormFactor) + } + id := strings.TrimPrefix(d.Field, "spec:") + for _, s := range v.Specifications { + if s.ID == id { + values := []string{s.RawValue} + if d.Profile.Kind == "multi_choice" { + values = strings.Split(s.RawValue, d.Profile.Delimiter) + } + r := []CatalogFilterOption{} + for _, value := range values { + value = strings.TrimSpace(value) + if value != "" { + r = append(r, CatalogFilterOption{Value: value, Label: value}) + } + } + return r + } + } + return nil +} +func catalogTextMatches(v PublicView, d PublicFilterDefinition, c catalogfilter.Clause) bool { + for _, actual := range catalogFieldOptions(v, d) { + for _, value := range c.Values { + if d.Profile.Kind == "choice" && !strings.HasPrefix(d.Field, "spec:") { + if value == actual.Value { + return true + } + continue + } + a, b := catalogfilter.FoldText(actual.Value), catalogfilter.FoldText(value) + if (c.Operator == "equals" && a == b) || (c.Operator == "contains" && strings.Contains(a, b)) { + return true + } + } + } + return false +} + +func (e *Engine) readSpecCandidates(ctx context.Context, request SpecSearchRequest) (SpecCandidateSnapshot, bool, error) { + switch e.specBackend { + case "bleve": + if e.specBleve != nil { + snapshot, err := e.specBleve.candidates(ctx, request) + return snapshot, err == nil, err + } + case "sqlite": + if r, ok := e.repository.(SpecSearchRepository); ok { + ids := make([]string, 0, len(request.Predicates)) + for _, p := range request.Predicates { + ids = append(ids, p.SpecID) + } + snapshot, err := r.SpecSearchCandidates(ctx, ids, SpecProjectionVersion) + return snapshot, err == nil, err + } + } + return SpecCandidateSnapshot{}, false, errors.New("spec search candidate provider unavailable") +} +func (e *Engine) admitSpecCandidatesLocked(snapshot SpecCandidateSnapshot, projected bool, candidateErr error) (map[string]bool, bool) { + candidates := map[string]bool{} + if projected && e.index.specDigestError == nil && e.completeSpecInventory(snapshot) && (e.specBackend != "bleve" || snapshot.SourceDigest == e.index.specDigest) { + for _, candidate := range snapshot.Candidates { + current, exists := e.index.byID[candidate.ProductID] + if !exists || !specBindingMatches(candidate, current) { + projected = false + break + } + candidates[candidate.ProductID] = true + } + } else { + projected = false + } + if projected { + e.specCandidateQueries.Add(1) + e.specStatus.Store(&specSearchStatus{digest: e.index.specDigest}) + } else { + e.specFallbackQueries.Add(1) + if candidateErr == nil { + candidateErr = errors.New("spec search candidate snapshot does not match admitted public inventory") + } + if e.index.specDigestError != nil { + candidateErr = e.index.specDigestError + } + e.specStatus.Store(&specSearchStatus{digest: snapshot.SourceDigest, lastError: candidateErr.Error()}) + } + return candidates, projected +} + +// AdmitCatalogViews retains the explicitly enabled PoC fallback with the same oracle. +func AdmitCatalogViews(ctx context.Context, views []PublicView, configuration site.Configuration, query CatalogQuery) (CatalogSnapshot, error) { + e := &Engine{index: &publicIndex{views: views, byID: map[string]ActivePublication{}, site: configuration}} + for _, v := range views { + e.index.byID[v.ID] = ActivePublication{ProductID: v.ID, View: v} + } + return e.AdmitCatalog(ctx, query) +} diff --git a/internal/publishing/catalog_query_test.go b/internal/publishing/catalog_query_test.go new file mode 100644 index 0000000..bb9024c --- /dev/null +++ b/internal/publishing/catalog_query_test.go @@ -0,0 +1,58 @@ +package publishing + +import ( + "fmt" + "prods/internal/catalogfilter" + "prods/internal/site" + "prods/internal/specnumeric" + "testing" +) + +func TestCatalogSourceKeywordSurvivesDisplayLocale(t *testing.T) { + v := PublicView{ID: "p", PartNumber: "ABC", Name: "SourceWidget", Language: "en-US", DefaultLocale: "en-US", SupportedLocales: []string{"en-US", "zh-TW"}, Localizations: map[string]LocalizedContent{"zh-TW": {Name: "中文元件"}}} + result, err := AdmitCatalogViews(t.Context(), []PublicView{v}, site.DefaultConfiguration(), CatalogQuery{Scope: catalogfilter.Scope{Kind: "search", Query: "SourceWidget"}, Locale: "zh-TW"}) + if err != nil || len(result.Views) != 1 { + t.Fatalf("source keyword in translated locale: %+v %v", result.Views, err) + } + if result.Views[0].Name != "中文元件" { + t.Fatalf("display name = %q", result.Views[0].Name) + } +} + +func TestCatalogPreservesCombinedKeywordProjection(t *testing.T) { + v := PublicView{ID: "p", PartNumber: "ABC", Name: "Precision", Description: "private-search-boundary", Language: "en-US", SupportedLocales: []string{"en-US"}} + result, err := AdmitCatalogViews(t.Context(), []PublicView{v}, site.DefaultConfiguration(), CatalogQuery{Scope: catalogfilter.Scope{Kind: "search", Query: "ABC Precision"}}) + if err != nil || len(result.Views) != 1 { + t.Fatalf("combined public keyword: %+v %v", result.Views, err) + } +} + +func TestCatalogCombinesTextAndNumericBeforePagination(t *testing.T) { + base := blevePublication(t).View + base.Language = "en-US" + base.DefaultLocale = "en-US" + base.SupportedLocales = []string{"en-US"} + base.FilterDefinitions = []PublicFilterDefinition{{Field: "spec:voltage/opaque", SemanticVersion: 1, ProfileRevision: 1, Profile: catalogfilter.NumericProfile(base.NumericDefinitions[0].Profile)}, {Field: "spec:interface", SemanticVersion: 1, ProfileRevision: 1, Profile: catalogfilter.DefaultTextProfile()}} + e := &Engine{index: &publicIndex{byID: map[string]ActivePublication{}, site: site.DefaultConfiguration()}} + for i := range 30 { + v := base + v.ID = fmt.Sprintf("p%02d", i) + v.PartNumber = v.ID + raw := "SPI" + if i >= 27 { + raw = "I2C" + } + v.Specifications = []Specification{{ID: "interface", RawValue: raw}} + e.index.views = append(e.index.views, v) + e.index.byID[v.ID] = ActivePublication{ProductID: v.ID, View: v} + } + value := bleveDecimal(t, "3.2") + q := CatalogQuery{Scope: catalogfilter.Scope{Kind: "all"}, Clauses: []catalogfilter.Clause{{Field: "spec:interface", Operator: "equals", Values: []string{"spi"}}, {Field: "spec:voltage/opaque", Operator: "contains_point", Numeric: &specnumeric.Predicate{SpecID: "voltage/opaque", Operator: specnumeric.OperatorContainsPoint, Value: &value, Unit: "V"}}}} + got, err := e.AdmitCatalog(t.Context(), q) + if err != nil || len(got.Views) != 27 || len(got.ScopeViews) != 30 { + t.Fatalf("combined=%d scope=%d err=%v", len(got.Views), len(got.ScopeViews), err) + } + if got.Views[24].ID != "p24" || len(got.Views[24:]) != 3 { + t.Fatalf("second page: %+v", got.Views[24:]) + } +} diff --git a/internal/publishing/filter_definitions.go b/internal/publishing/filter_definitions.go new file mode 100644 index 0000000..9b50bac --- /dev/null +++ b/internal/publishing/filter_definitions.go @@ -0,0 +1,46 @@ +package publishing + +import ( + "prods/internal/catalogfilter" + "reflect" + "sort" +) + +// PublicFilterDefinition is frozen with the product publication unit. +type PublicFilterDefinition struct { + Field string `json:"field"` + SemanticVersion int64 `json:"semantic_version"` + ProfileRevision int64 `json:"profile_revision"` + Profile catalogfilter.Profile `json:"profile"` +} + +// CommonFilterDefinitions uses formal applicability, independent of Raw presence. +func CommonFilterDefinitions(views []PublicView) []PublicFilterDefinition { + common := map[string]PublicFilterDefinition{} + if len(views) == 0 { + return nil + } + for _, d := range views[0].FilterDefinitions { + if catalogfilter.ValidateProfile(d.Profile) == nil { + common[d.Field] = d + } + } + for _, v := range views[1:] { + present := map[string]PublicFilterDefinition{} + for _, d := range v.FilterDefinitions { + present[d.Field] = d + } + for field, d := range common { + other, ok := present[field] + if !ok || !reflect.DeepEqual(d, other) { + delete(common, field) + } + } + } + result := make([]PublicFilterDefinition, 0, len(common)) + for _, d := range common { + result = append(result, d) + } + sort.Slice(result, func(i, j int) bool { return result[i].Field < result[j].Field }) + return result +} diff --git a/internal/publishing/filter_definitions_test.go b/internal/publishing/filter_definitions_test.go new file mode 100644 index 0000000..0fe967f --- /dev/null +++ b/internal/publishing/filter_definitions_test.go @@ -0,0 +1,25 @@ +package publishing + +import ( + "prods/internal/catalogfilter" + "testing" +) + +func TestCommonFiltersRejectMixedSemanticVersions(t *testing.T) { + d := PublicFilterDefinition{Field: "spec:interface", SemanticVersion: 1, ProfileRevision: 2, Profile: catalogfilter.DefaultTextProfile()} + a := PublicView{FilterDefinitions: []PublicFilterDefinition{d}} + t.Run("mixed meaning", func(t *testing.T) { + changed := d + changed.SemanticVersion++ + if got := CommonFilterDefinitions([]PublicView{a, {FilterDefinitions: []PublicFilterDefinition{changed}}}); len(got) != 0 { + t.Fatalf("mixed meanings: %+v", got) + } + }) + t.Run("missing raw remains applicable", func(t *testing.T) { + b := a + b.Specifications = []Specification{{ID: "interface", RawValue: "SPI"}} + if got := CommonFilterDefinitions([]PublicView{a, b}); len(got) != 1 { + t.Fatalf("missing Raw removed field: %+v", got) + } + }) +} diff --git a/internal/publishing/protocol.go b/internal/publishing/protocol.go index 2afd635..8d7ea31 100644 --- a/internal/publishing/protocol.go +++ b/internal/publishing/protocol.go @@ -39,12 +39,13 @@ type Intent struct { } type SourceSpec struct { - SourceRevision int64 - ID string - Name string - RawValue string - PreferredUnit string - Language string + SemanticVersion int64 + SourceRevision int64 + ID string + Name string + RawValue string + PreferredUnit string + Language string } type SourceDocument struct { @@ -66,6 +67,7 @@ type SourceImage struct { } type Source struct { + FilterDefinitions []PublicFilterDefinition NumericFacts []PublicNumericFact NumericDefinitions []PublicNumericDefinition ApplicableSpecs []SourceSpec @@ -215,6 +217,7 @@ type Config struct { } type publicIndex struct { + localization site.WebsiteLocalization specDigest string specDigestError error specInventory map[string]SpecCandidateBinding @@ -444,6 +447,24 @@ func (e *Engine) processOne(ctx context.Context) (bool, error) { return profileWorked, err } } + if worker, ok := e.repository.(interface { + ProcessSpecSearchProfileWork(context.Context, int) (bool, error) + }); ok { + worked, err := worker.ProcessSpecSearchProfileWork(ctx, 100) + profileWorked = profileWorked || worked + if err != nil { + return profileWorked, err + } + } + if worker, ok := e.repository.(interface { + ProcessSpecNormalizationWork(context.Context, int) (bool, error) + }); ok { + worked, err := worker.ProcessSpecNormalizationWork(ctx, 100) + profileWorked = profileWorked || worked + if err != nil { + return profileWorked, err + } + } intent, found, err := e.repository.ClaimPublicationIntent(ctx) if err != nil || !found { return profileWorked || found, err @@ -666,6 +687,15 @@ func (e *Engine) installLocked(ctx context.Context) error { return err } next := &publicIndex{byID: make(map[string]ActivePublication), byRoute: make(map[string]routeTarget), byAsset: make(map[string]assetTarget), history: make(map[string]RouteHistory), site: configuration, siteEpoch: siteEpoch, customCSSDisabled: customCSSDisabled, runtimeGeneration: runtimeGeneration} + if reader, ok := e.repository.(interface { + ActiveWebsiteLocalization(context.Context) (site.WebsiteLocalization, error) + }); ok { + next.localization, err = reader.ActiveWebsiteLocalization(ctx) + if err != nil { + e.index = &publicIndex{unhealthy: err} + return err + } + } siteAssets, err := e.assetsForSite(ctx, configuration, false) if err != nil { e.index = &publicIndex{unhealthy: err} @@ -733,14 +763,14 @@ func (e *Engine) installLocked(ctx context.Context) error { func applicableSpecifications(specs []SourceSpec) []ApplicableSpecification { result := make([]ApplicableSpecification, 0, len(specs)) for _, spec := range specs { - result = append(result, ApplicableSpecification{ID: spec.ID, Name: spec.Name, PreferredUnit: spec.PreferredUnit}) + result = append(result, ApplicableSpecification{ID: spec.ID, SemanticVersion: spec.SemanticVersion, Name: spec.Name, PreferredUnit: spec.PreferredUnit}) } return result } func (e *Engine) viewFromSource(source Source) PublicView { view := PublicView{ - NumericFacts: source.NumericFacts, NumericDefinitions: source.NumericDefinitions, + FilterDefinitions: source.FilterDefinitions, NumericFacts: source.NumericFacts, NumericDefinitions: source.NumericDefinitions, PackageFormFactor: source.Product.PackageFormFactor, ApplicableSpecifications: applicableSpecifications(source.ApplicableSpecs), Site: source.Site, diff --git a/internal/publishing/spec_search.go b/internal/publishing/spec_search.go index cb27f05..208dca3 100644 --- a/internal/publishing/spec_search.go +++ b/internal/publishing/spec_search.go @@ -86,28 +86,7 @@ func (e *Engine) SearchSpecs(ctx context.Context, request SpecSearchRequest) (Sp } ids = append(ids, predicate.SpecID) } - var snapshot SpecCandidateSnapshot - var projected bool - var candidateErr error - switch e.specBackend { - case "bleve": - if e.specBleve != nil { - snapshot, candidateErr = e.specBleve.candidates(ctx, request) - projected = candidateErr == nil - } else { - candidateErr = errors.New("Bleve spec search adapter unavailable") - if status := e.specStatus.Load(); status != nil && status.lastError != "" { - candidateErr = errors.New(status.lastError) - } - } - case "sqlite": - if repository, ok := e.repository.(SpecSearchRepository); ok { - snapshot, candidateErr = repository.SpecSearchCandidates(ctx, ids, SpecProjectionVersion) - projected = candidateErr == nil - } else { - candidateErr = errors.New("SQLite spec search repository unavailable") - } - } + snapshot, projected, candidateErr := e.readSpecCandidates(ctx, request) // The database read is outside the gate. Everything establishing truth, // visibility, scope, count and pagination uses this one current index. e.gate.RLock() @@ -162,33 +141,7 @@ func (e *Engine) SearchSpecs(ctx context.Context, request SpecSearchRequest) (Sp } } } - candidates := make(map[string]bool) - if projected && e.index.specDigestError == nil && e.completeSpecInventory(snapshot) && (e.specBackend != "bleve" || snapshot.SourceDigest == e.index.specDigest) { - for _, candidate := range snapshot.Candidates { - current, exists := e.index.byID[candidate.ProductID] - if !exists || !specBindingMatches(candidate, current) { - projected = false - break - } - candidates[candidate.ProductID] = true - } - } else { - projected = false - } - if projected { - e.specCandidateQueries.Add(1) - e.specStatus.Store(&specSearchStatus{digest: e.index.specDigest}) - } else { - e.specFallbackQueries.Add(1) - if candidateErr == nil { - candidateErr = errors.New("spec search candidate snapshot does not match admitted public inventory") - } - if e.index.specDigestError != nil { - candidateErr = e.index.specDigestError - } - // Atomic diagnostics cannot wait on refresh/adapter while the gate is held. - e.specStatus.Store(&specSearchStatus{digest: snapshot.SourceDigest, lastError: candidateErr.Error()}) - } + candidates, projected := e.admitSpecCandidatesLocked(snapshot, projected, candidateErr) matches := make([]PublicView, 0) for id, active := range e.index.byID { if err := ctx.Err(); err != nil { diff --git a/internal/publishing/view.go b/internal/publishing/view.go index dc17c6a..faf4bee 100644 --- a/internal/publishing/view.go +++ b/internal/publishing/view.go @@ -43,9 +43,10 @@ type Image struct { } type ApplicableSpecification struct { - ID string `json:"id"` - Name string `json:"name"` - PreferredUnit string `json:"preferred_unit,omitempty"` + SemanticVersion int64 `json:"semantic_version"` + ID string `json:"id"` + Name string `json:"name"` + PreferredUnit string `json:"preferred_unit,omitempty"` } // PublicNumericDefinition freezes an applicable, filterable semantic definition. @@ -64,6 +65,7 @@ type PublicNumericFact struct { } type PublicView struct { + FilterDefinitions []PublicFilterDefinition `json:"filter_definitions,omitempty"` NumericFacts []PublicNumericFact `json:"numeric_facts,omitempty"` NumericDefinitions []PublicNumericDefinition `json:"numeric_definitions,omitempty"` PackageFormFactor string `json:"package_form_factor,omitempty"` diff --git a/internal/referencecatalog/dataset.go b/internal/referencecatalog/dataset.go index f207943..e708a9f 100644 --- a/internal/referencecatalog/dataset.go +++ b/internal/referencecatalog/dataset.go @@ -9,10 +9,11 @@ import ( "time" "prods/internal/catalog" + "prods/internal/catalogfilter" ) const ( - Version = "a01-r1" + Version = "a01-r2" DefaultSeed = int64(20260916) ProductCount = 1200 PublishedCount = 1020 @@ -46,15 +47,16 @@ type SpecValueSeed struct { } type Dataset struct { - Version string - Seed int64 - ReferenceTime time.Time - Categories []catalog.Category - Dictionaries []catalog.DictionaryEntry - Specs []catalog.SpecDefinition - SpecSets []catalog.SpecSet - CategorySpecSet map[string]string - Products []ProductSeed + SpecSearchProfiles map[string]catalogfilter.Profile + Version string + Seed int64 + ReferenceTime time.Time + Categories []catalog.Category + Dictionaries []catalog.DictionaryEntry + Specs []catalog.SpecDefinition + SpecSets []catalog.SpecSet + CategorySpecSet map[string]string + Products []ProductSeed } type categoryDefinition struct { @@ -133,14 +135,15 @@ func Build(seed int64) (Dataset, Manifest, error) { return Dataset{}, Manifest{}, err } dataset := Dataset{ - Version: Version, - Seed: seed, - ReferenceTime: referenceTime, - Categories: buildCategories(), - Dictionaries: buildDictionaries(), - Specs: buildSpecs(), - SpecSets: buildSpecSets(), - CategorySpecSet: make(map[string]string), + Version: Version, + Seed: seed, + ReferenceTime: referenceTime, + Categories: buildCategories(), + Dictionaries: buildDictionaries(), + Specs: buildSpecs(), + SpecSearchProfiles: searchProfiles(), + SpecSets: buildSpecSets(), + CategorySpecSet: make(map[string]string), } for _, definition := range categoryDefinitions { dataset.CategorySpecSet[categoryID(definition.Key)] = specSetForCategory(definition.Key) @@ -461,31 +464,37 @@ func assignDesiredStates(seed int64, products []ProductSeed) { } func rawSpecValue(specID string, index int) string { - switch specID { - case "spc_input_voltage": - if index%9 == 0 { - return "3.0–3.6 V, 4.5–5.5 V" - } - return fmt.Sprintf("%d–%d V", 2+index%5, 8+index%17) - case "spc_output_voltage": - return []string{"0.8 V", "1.2 V", "1.8 V", "3.3 V", "5 V"}[index%5] - case "spc_output_current", "spc_rated_contact_current": - return fmt.Sprintf("%d.%d A", index%5, index%10) - case "spc_measurement_range": - return []string{"−40…125 °C", "0…100 kPa", "±2 g / ±4 g", "10–90 %RH"}[index%4] - case "spc_interface": - return []string{"I²C", "SPI", "UART", "Analog"}[index%4] - case "spc_package": - return []string{"QFN-24", "SOT-23-5", "0603", "Module"}[index%4] - case "spc_positions": - return fmt.Sprintf("%d", 2+(index%40)) - case "spc_pitch": - return []string{"0.50 mm", "1.00 mm", "2.00 mm", "2.54 mm"}[index%4] - case "spc_tolerance": - return []string{"±0.1 %", "±1 %", "±5 %", "asymmetric +10/−5 %"}[index%4] - default: - return fmt.Sprintf("%d %s", 1+index%97, strings.TrimPrefix(specID, "spc_")) - } + values := map[string][]string{ + "spc_input_voltage": {"3.0–3.6 V, 4.5–5.5 V", "2–12 V", "4–18 V", "3–24 V"}, + "spc_output_voltage": {"0.8 V", "1.2 V", "1.8 V", "3.3 V", "5 V"}, + "spc_output_current": {"0.5 A", "1 A", "2 A", "3 A"}, + "spc_quiescent_current": {"5 uA", "15 uA", "50 uA", "100 uA"}, + "spc_dropout": {"100 mV", "200 mV", "300 mV"}, + "spc_switching_frequency": {"400 kHz", "800 kHz", "1.2 MHz"}, + "spc_efficiency": {"85 %", "92 %", "96 %"}, "spc_gain": {"10 dB", "20 dB", "40 dB"}, + "spc_bandwidth": {"1 MHz", "10 MHz", "100 MHz"}, "spc_logic_family": {"74HC", "74LVC", "4000B"}, + "spc_memory_density": {"256 kbit", "1 Mbit", "8 Mbit"}, "spc_rds_on": {"10 mOhm", "25 mOhm", "100 mOhm"}, + "spc_reverse_voltage": {"20 V", "40 V", "100 V"}, "spc_power": {"0.125 W", "0.25 W", "1 W"}, + "spc_measurement_range": {"−40…125 °C", "0…100 kPa", "±2 g / ±4 g", "10–90 %RH"}, + "spc_interface": {"I²C", "SPI", "UART", "I²C; SPI"}, "spc_accuracy": {"±0.1 %", "±0.5 %", "±1 %"}, + "spc_pitch": {"0.50 mm", "1.00 mm", "2.00 mm", "2.54 mm"}, "spc_rated_contact_current": {"0.5 A", "1 A", "3 A"}, + "spc_mounting": {"Surface mount", "Through hole", "Panel mount"}, "spc_resistance": {"100 Ohm", "4.7 kOhm", "10 kOhm"}, + "spc_capacitance": {"100 nF", "1 uF", "10 uF"}, "spc_inductance": {"1 uH", "10 uH", "100 uH"}, + "spc_tolerance": {"±0.1 %", "±1 %", "±5 %", "asymmetric +10/−5 %"}, + "spc_wavelength": {"470 nm", "525 nm", "630 nm"}, "spc_luminous_intensity": {"100 mcd", "500 mcd", "1 cd"}, + "spc_coil_voltage": {"3 V", "5 V", "12 V", "24 V"}, "spc_contact_rating": {"1 A at 30 V DC", "3 A at 250 V AC", "5 A resistive at 24 V DC"}, + "spc_core": {"Cortex-M0+", "Cortex-M4", "RISC-V RV32IM"}, "spc_clock": {"16 MHz", "48 MHz", "120 MHz"}, + "spc_wireless_standard": {"IEEE 802.11n", "Bluetooth LE 5.3", "IEEE 802.15.4; Bluetooth LE 5.3"}, + "spc_breakdown_voltage": {"30 V", "60 V", "100 V"}, "spc_package": {"QFN-24", "SOT-23-5", "0603", "Module"}, + } + if specID == "spc_positions" { + return fmt.Sprintf("%d", 2+index%40) + } + options := values[specID] + if len(options) == 0 { + panic("missing explicit sample value: " + specID) + } + return options[index%len(options)] } func shortFamily(specSetID string) string { diff --git a/internal/referencecatalog/materialize.go b/internal/referencecatalog/materialize.go index a8d229b..be3ba93 100644 --- a/internal/referencecatalog/materialize.go +++ b/internal/referencecatalog/materialize.go @@ -15,6 +15,7 @@ import ( "prods/internal/identity" "prods/internal/publishing" "prods/internal/site" + "prods/internal/specnumeric" storesqlite "prods/internal/storage/sqlite" ) @@ -287,10 +288,15 @@ func loadTaxonomy(ctx context.Context, store *storesqlite.Store, actorID string, categoryRevisions[created.ID] = created.Revision } for _, spec := range dataset.Specs { - if _, err := store.CreateSpecDefinition(ctx, actorID, spec); err != nil { + created, err := store.CreateSpecDefinition(ctx, actorID, spec) + if err != nil { return fmt.Errorf("create spec %s: %w", spec.ID, err) } + if _, err = store.ConfigureSpecSearchProfile(ctx, actorID, spec.ID, created.Revision, catalog.SpecSearchProfile{Filterable: spec.Filterable, Profile: dataset.SpecSearchProfiles[spec.ID]}); err != nil { + return err + } } + for _, set := range dataset.SpecSets { if _, err := store.CreateSpecSet(ctx, actorID, set); err != nil { return fmt.Errorf("create spec set %s: %w", set.ID, err) @@ -320,11 +326,24 @@ func loadProducts(ctx context.Context, store *storesqlite.Store, actorID string, } revision := created.Revision for _, value := range seed.SpecValues { - if _, err := store.SaveSpecValue(ctx, actorID, created.ID, value.SpecID, value.RawValue, value.SourceLocale, revision); err != nil { - return fmt.Errorf("save %s for %s: %w", value.SpecID, created.ID, err) + saved, err := store.SaveSpecValue(ctx, actorID, created.ID, value.SpecID, value.RawValue, value.SourceLocale, revision) + if err != nil { + return fmt.Errorf("save %s %s: %w", value.SpecID, created.ID, err) } revision++ + if dataset.SpecSearchProfiles[value.SpecID].Kind == "numeric" { + frozen, err := store.SpecNormalizationContext(ctx, saved.ID) + if err != nil { + return err + } + outcome, err := store.RecordSpecNormalization(ctx, actorID, catalog.NormalizeSpecCommand{SpecValueID: saved.ID, Expected: frozen.Expected}, specnumeric.Normalize(frozen.Raw, frozen.Profile)) + if err != nil { + return err + } + revision = outcome.ProductRevision + } } + for _, translation := range seed.Translations { if _, err := store.SaveProductTranslation(ctx, actorID, created.ID, revision, translation); err != nil { return fmt.Errorf("save %s translation for %s: %w", translation.Locale, created.ID, err) diff --git a/internal/referencecatalog/search_profiles.go b/internal/referencecatalog/search_profiles.go new file mode 100644 index 0000000..980e5d3 --- /dev/null +++ b/internal/referencecatalog/search_profiles.go @@ -0,0 +1,57 @@ +package referencecatalog + +import ( + "prods/internal/catalogfilter" + "prods/internal/specnumeric" +) + +// Stable IDs explicitly declare quantity and purpose. Names and preferred +// display units never decide searchable meaning. +func searchProfiles() map[string]catalogfilter.Profile { + numeric := func(quantity, role string) catalogfilter.Profile { + for _, p := range specnumeric.SupportedProfiles() { + if p.Quantity == quantity && p.SemanticRole == role { + return catalogfilter.NumericProfile(p) + } + } + panic("missing sample numeric profile") + } + choice := catalogfilter.Profile{Version: 1, Kind: "choice", TextRule: catalogfilter.TextRule, Operators: []string{"equals"}} + multi := catalogfilter.Profile{Version: 1, Kind: "multi_choice", TextRule: catalogfilter.TextRule, Delimiter: ";", Operators: []string{"equals"}} + return map[string]catalogfilter.Profile{ + "spc_input_voltage": numeric("voltage", specnumeric.RoleOperatingSupport), + "spc_output_voltage": numeric("voltage", specnumeric.RoleNominal), + "spc_output_current": numeric("current", specnumeric.RoleMaximumLimit), + "spc_quiescent_current": numeric("current", specnumeric.RoleTypical), + "spc_dropout": numeric("voltage", specnumeric.RoleMaximumLimit), + "spc_switching_frequency": numeric("frequency", specnumeric.RoleNominal), + "spc_efficiency": numeric("ratio", specnumeric.RoleNominal), + "spc_gain": numeric("log_gain", specnumeric.RoleNominal), + "spc_bandwidth": numeric("frequency", specnumeric.RoleNominal), + "spc_logic_family": choice, + "spc_memory_density": numeric("memory", specnumeric.RoleNominal), + "spc_rds_on": numeric("resistance", specnumeric.RoleMaximumLimit), + "spc_reverse_voltage": numeric("voltage", specnumeric.RoleMaximumLimit), + "spc_power": numeric("power", specnumeric.RoleNominal), + "spc_measurement_range": catalogfilter.DefaultTextProfile(), + "spc_interface": multi, + "spc_accuracy": numeric("ratio", specnumeric.RoleErrorMagnitude), + "spc_positions": numeric("count", specnumeric.RoleNominal), + "spc_pitch": numeric("length", specnumeric.RoleNominal), + "spc_rated_contact_current": numeric("current", specnumeric.RoleMaximumLimit), + "spc_mounting": choice, + "spc_resistance": numeric("resistance", specnumeric.RoleNominal), + "spc_capacitance": numeric("capacitance", specnumeric.RoleNominal), + "spc_inductance": numeric("inductance", specnumeric.RoleNominal), + "spc_tolerance": numeric("ratio", specnumeric.RoleErrorMagnitude), + "spc_wavelength": numeric("length", specnumeric.RoleNominal), + "spc_luminous_intensity": numeric("luminous_intensity", specnumeric.RoleNominal), + "spc_coil_voltage": numeric("voltage", specnumeric.RoleNominal), + "spc_contact_rating": catalogfilter.DefaultTextProfile(), + "spc_core": choice, + "spc_clock": numeric("frequency", specnumeric.RoleNominal), + "spc_wireless_standard": multi, + "spc_breakdown_voltage": numeric("voltage", specnumeric.RoleMinimumLimit), + "spc_package": catalogfilter.DefaultTextProfile(), + } +} diff --git a/internal/referencecatalog/search_profiles_test.go b/internal/referencecatalog/search_profiles_test.go new file mode 100644 index 0000000..7522750 --- /dev/null +++ b/internal/referencecatalog/search_profiles_test.go @@ -0,0 +1,51 @@ +package referencecatalog + +import ( + "prods/internal/catalogfilter" + "prods/internal/specnumeric" + "testing" +) + +func TestSampleSearchProfilesCoverAllDefinitions(t *testing.T) { + dataset, _, err := Build(DefaultSeed) + if err != nil { + t.Fatal(err) + } + if len(dataset.Specs) != 34 || len(dataset.SpecSearchProfiles) != 34 { + t.Fatalf("complete profile inventory: specs=%d profiles=%d", len(dataset.Specs), len(dataset.SpecSearchProfiles)) + } + for _, spec := range dataset.Specs { + profile, ok := dataset.SpecSearchProfiles[spec.ID] + if !ok { + t.Fatalf("missing %s", spec.ID) + } + if err := catalogfilter.ValidateProfile(profile); err != nil { + t.Fatalf("%s: %v", spec.ID, err) + } + if profile.Numeric != nil { + supported := false + for _, product := range dataset.Products { + for _, value := range product.SpecValues { + if value.SpecID == spec.ID && specnumeric.Normalize(value.RawValue, *profile.Numeric).Candidate != nil { + supported = true + break + } + } + if supported { + break + } + } + if !supported { + t.Fatalf("%s has no supported realistic sample", spec.ID) + } + } + if spec.ID == "spc_package" && spec.Filterable { + t.Fatal("Package Spec became filterable") + } + } + for _, id := range []string{"spc_measurement_range", "spc_contact_rating"} { + if dataset.SpecSearchProfiles[id].Kind != "text" { + t.Fatalf("mixed quantities inferred: %s", id) + } + } +} diff --git a/internal/sampledata/generate.go b/internal/sampledata/generate.go index bd6223d..6aeb2c1 100644 --- a/internal/sampledata/generate.go +++ b/internal/sampledata/generate.go @@ -45,8 +45,9 @@ func Generate(releaseVersion string) (distribution.SampleData, error) { } } for _, spec := range dataset.Specs { + profile := dataset.SpecSearchProfiles[spec.ID] sample.Specs = append(sample.Specs, distribution.SpecDefinition{ - ID: spec.ID, Name: spec.Name, PreferredUnit: spec.PreferredUnit, Filterable: spec.Filterable, + ID: spec.ID, Name: spec.Name, SearchProfile: &profile, PreferredUnit: spec.PreferredUnit, Filterable: spec.Filterable, SemanticVersion: spec.SemanticVer, Status: string(spec.Status), }) } diff --git a/internal/searchtext/fold.go b/internal/searchtext/fold.go new file mode 100644 index 0000000..9211f93 --- /dev/null +++ b/internal/searchtext/fold.go @@ -0,0 +1,10 @@ +package searchtext + +import ( + "golang.org/x/text/cases" + "golang.org/x/text/unicode/norm" +) + +// Fold is the pinned NFC/full-case-fold rule shared by keyword and field +// queries. It intentionally preserves diacritics and literal wildcard text. +func Fold(value string) string { return norm.NFC.String(cases.Fold().String(norm.NFC.String(value))) } diff --git a/internal/specnumeric/normalize.go b/internal/specnumeric/normalize.go index 3c2d3e7..808e40d 100644 --- a/internal/specnumeric/normalize.go +++ b/internal/specnumeric/normalize.go @@ -24,7 +24,10 @@ type rawSegment struct { lowerInclusive, upperInclusive bool } -type rawParser struct{ rest string } +type rawParser struct { + rest string + units map[string]unitDefinition +} // Normalize derives a candidate under an explicit profile. A nonempty Reason // always prevents treating that candidate as an unconditional numeric fact. @@ -50,12 +53,24 @@ func Normalize(raw string, profile Profile) Result { } input = rest } - p := rawParser{rest: input} + p := rawParser{rest: input, units: registryForVersion(profile.UnitRegistryVersion)} value := Value{SchemaVersion: profile.SchemaVersion, Quantity: profile.Quantity, SemanticRole: profile.SemanticRole, Unit: profile.CanonicalUnit, UnitRegistryVersion: profile.UnitRegistryVersion, Context: Context{Kind: ContextUnconditional}} var reason Reason - if operator := p.takeOne(">=", "<=", "≥", "≤", ">", "<"); operator != "" { + if profile.SemanticRole == RoleErrorMagnitude { + marker := p.takeOne("±", "<=", "≤", "<") + atom, failure := p.atom() + if failure != "" { + return Result{Reason: failure} + } + number, failure := canonicalAtom(atom, "", profile) + if failure != "" { + return Result{Reason: failure} + } + value.Shape = ShapeBoundClaim + value.Bound = &BoundClaim{Direction: BoundUpper, Value: number, Inclusive: marker != "<"} + } else if operator := p.takeOne(">=", "<=", "≥", "≤", ">", "<"); operator != "" { value.Shape = ShapeBoundClaim atom, failure := p.atom() if failure != "" { @@ -155,19 +170,12 @@ func (p *rawParser) atom() (rawAtom, Reason) { } rest = rest[len(text):] unitRest := strings.TrimLeftFunc(rest, unicode.IsSpace) - end := 0 - for end < len(unitRest) { - r, size := utf8.DecodeRuneInString(unitRest[end:]) - if !unicode.IsLetter(r) { - break - } - end += size - } + end := p.unitLength(unitRest) unit := unitRest[:end] // Only registered electrical units are consumed. Words marking roles or // conditions remain suffixes; other adjacent unit text fails closed. if unit != "" { - if _, known := electricalUnits[unit]; known { + if _, known := p.units[unit]; known { rest = unitRest[end:] } else if !conditionalSuffix(unitRest) && !startsRoleMarker(unitRest) { return rawAtom{}, ReasonUnsupportedUnit @@ -179,6 +187,22 @@ func (p *rawParser) atom() (rawAtom, Reason) { return rawAtom{number: number, unit: unit}, "" } +func (p *rawParser) unitLength(rest string) int { + if _, ok := p.units["1"]; ok && strings.HasPrefix(rest, "1") { + return 1 + } + _, percent := p.units["%"] + end := 0 + for end < len(rest) { + r, size := utf8.DecodeRuneInString(rest[end:]) + if !unicode.IsLetter(r) && !(percent && r == '%') { + break + } + end += size + } + return end +} + func (p *rawParser) segment() (rawSegment, Reason) { opening := p.takeOne("[", "(") lower, reason := p.atom() @@ -210,17 +234,10 @@ func (p *rawParser) segment() (rawSegment, Reason) { segment.upperInclusive = closing == "]" // A unit following the closing bracket applies to both endpoints. rest := strings.TrimLeftFunc(p.rest, unicode.IsSpace) - end := 0 - for end < len(rest) { - r, size := utf8.DecodeRuneInString(rest[end:]) - if !unicode.IsLetter(r) { - break - } - end += size - } + end := p.unitLength(rest) if end > 0 { unit := rest[:end] - if _, known := electricalUnits[unit]; known { + if _, known := p.units[unit]; known { if segment.lower.unit != "" || segment.upper.unit != "" { return rawSegment{}, ReasonAmbiguous } @@ -286,8 +303,8 @@ func (p *rawParser) tolerance(nominalAtom rawAtom, profile Profile) (*Tolerance, return nil, reason } tolerance := &Tolerance{Nominal: nominal, Type: ToleranceAbsolute} - if p.takeOne("%") != "" { - if amountAtom.unit != "" { + if amountAtom.unit == "%" || p.takeOne("%") != "" { + if amountAtom.unit != "" && amountAtom.unit != "%" { return nil, ReasonUnsupportedShape } tolerance.Type = ToleranceRelative diff --git a/internal/specnumeric/predicate.go b/internal/specnumeric/predicate.go index f14c79c..976da60 100644 --- a/internal/specnumeric/predicate.go +++ b/internal/specnumeric/predicate.go @@ -52,6 +52,9 @@ func NormalizePredicate(input Predicate, profile Profile) (Predicate, error) { } func predicateCompatible(role string, shape Shape, operator Operator) bool { + if role == RoleErrorMagnitude { + return shape == ShapeBoundClaim && (operator == OperatorLess || operator == OperatorLessEqual) + } switch operator { case OperatorContainsPoint, OperatorContainsRange, OperatorOverlapsRange: return role == RoleOperatingSupport && (shape == ShapeScalar || shape == ShapeDiscreteSet || shape == ShapeIntervalSet) @@ -72,6 +75,11 @@ func Evaluate(value *Value, profile Profile, predicate Predicate) Truth { if err != nil { return Unknown } + if profile.SemanticRole == RoleErrorMagnitude { + // Compare the declared maximum magnitude, not an unknown actual error + // inside the claim and not a nominal value of a tolerance expression. + return evaluateScalar(value.Bound.Value, query) + } switch query.Operator { case OperatorContainsPoint, OperatorContainsRange, OperatorOverlapsRange: return evaluateSupport(*value, query) diff --git a/internal/specnumeric/profile.go b/internal/specnumeric/profile.go index 3107368..236c5ac 100644 --- a/internal/specnumeric/profile.go +++ b/internal/specnumeric/profile.go @@ -28,20 +28,25 @@ type Profile struct { } func ValidateProfile(profile Profile) error { - if profile.SchemaVersion != SchemaVersion || profile.ParserVersion != ParserVersion || profile.UnitRegistryVersion != UnitRegistryVersion || profile.NumericFormat != NumericFormatDecimalDot { + if profile.SchemaVersion != SchemaVersion || !validProfileVersions(profile) || profile.NumericFormat != NumericFormatDecimalDot { return fmt.Errorf("unsupported profile version or numeric format") } switch profile.SemanticRole { case RoleOperatingSupport, RoleNominal, RoleTypical, RoleMinimumLimit, RoleMaximumLimit, RoleAbsoluteMaximum: + case RoleErrorMagnitude: + if profile.ParserVersion != CatalogParserVersion || profile.Quantity != "ratio" { + return fmt.Errorf("unsupported error magnitude profile") + } default: return fmt.Errorf("unsupported semantic role: %q", profile.SemanticRole) } - unit, ok := electricalUnits[profile.CanonicalUnit] + units := registryForVersion(profile.UnitRegistryVersion) + unit, ok := units[profile.CanonicalUnit] if !ok || unit.exponent != 0 || unit.canonical != profile.CanonicalUnit || unit.quantity != profile.Quantity { return fmt.Errorf("invalid canonical unit for quantity") } if profile.DeclaredInputUnit != "" { - input, ok := electricalUnits[profile.DeclaredInputUnit] + input, ok := units[profile.DeclaredInputUnit] if !ok || input.quantity != profile.Quantity { return fmt.Errorf("invalid declared input unit for quantity") } @@ -51,6 +56,9 @@ func ValidateProfile(profile Profile) error { } shapes := map[Shape]bool{} for _, shape := range profile.AllowedShapes { + if profile.SemanticRole == RoleErrorMagnitude && shape != ShapeBoundClaim || profile.Quantity == "count" && shape == ShapeTolerance { + return fmt.Errorf("shape incompatible with quantity or role") + } if !knownShape(shape) || shapes[shape] { return fmt.Errorf("invalid or duplicate allowed shape: %q", shape) } @@ -58,6 +66,9 @@ func ValidateProfile(profile Profile) error { } operators := map[Operator]bool{} for _, operator := range profile.AllowedOperators { + if profile.SemanticRole == RoleErrorMagnitude && operator != OperatorLess && operator != OperatorLessEqual { + return fmt.Errorf("unsupported error magnitude operator") + } if !knownOperator(operator) || operators[operator] { return fmt.Errorf("invalid or duplicate allowed operator: %q", operator) } diff --git a/internal/specnumeric/registry_v2.go b/internal/specnumeric/registry_v2.go new file mode 100644 index 0000000..a98d0b2 --- /dev/null +++ b/internal/specnumeric/registry_v2.go @@ -0,0 +1,114 @@ +package specnumeric + +import ( + "maps" + "math/big" + "sort" +) + +const ( + CatalogParserVersion = "catalog-parser-2" + CatalogUnitRegistryVersion = "catalog-units-2" + RoleErrorMagnitude = "error_magnitude" +) + +var catalogUnits = func() map[string]unitDefinition { + units := maps.Clone(electricalUnits) + for unit, quantity := range map[string]string{"%": "ratio", "dB": "log_gain", "bit": "memory", "W": "power", "m": "length", "H": "inductance", "cd": "luminous_intensity", "1": "count"} { + units[unit] = unitDefinition{quantity, unit, 0} + } + for unit, definition := range map[string]unitDefinition{ + "mW": {"power", "W", -3}, "kW": {"power", "W", 3}, + "mm": {"length", "m", -3}, "µm": {"length", "m", -6}, "um": {"length", "m", -6}, "μm": {"length", "m", -6}, "nm": {"length", "m", -9}, "cm": {"length", "m", -2}, + "mH": {"inductance", "H", -3}, "µH": {"inductance", "H", -6}, "uH": {"inductance", "H", -6}, "μH": {"inductance", "H", -6}, "nH": {"inductance", "H", -9}, + "mcd": {"luminous_intensity", "cd", -3}, "count": {"count", "1", 0}, + } { + units[unit] = definition + } + for unit := range memoryFactors { + units[unit] = unitDefinition{"memory", "bit", 0} + } + return units +}() + +var memoryFactors = map[string]int64{ + "bit": 1, "B": 8, "byte": 8, + "kbit": 1000, "Mbit": 1000000, "Gbit": 1000000000, + "kB": 8000, "MB": 8000000, "GB": 8000000000, + "Kibit": 1024, "Mibit": 1048576, "Gibit": 1073741824, + "KiB": 8192, "MiB": 8388608, "GiB": 8589934592, +} + +func registryForVersion(version string) map[string]unitDefinition { + switch version { + case UnitRegistryVersion: + return electricalUnits + case CatalogUnitRegistryVersion: + return catalogUnits + default: + return nil + } +} + +func validProfileVersions(p Profile) bool { + return p.ParserVersion == ParserVersion && p.UnitRegistryVersion == UnitRegistryVersion || p.ParserVersion == CatalogParserVersion && p.UnitRegistryVersion == CatalogUnitRegistryVersion +} + +func unitFactor(unit string, definition unitDefinition, version string) *big.Rat { + if version == CatalogUnitRegistryVersion { + if factor, ok := memoryFactors[unit]; ok { + return big.NewRat(factor, 1) + } + } + factor := new(big.Int).Exp(big.NewInt(10), big.NewInt(int64(abs(definition.exponent))), nil) + if definition.exponent < 0 { + return new(big.Rat).SetFrac(big.NewInt(1), factor) + } + return new(big.Rat).SetInt(factor) +} + +// SupportedProfiles returns explicit templates, never a rule inferred from a +// Spec's name or display unit. Callers may narrow shapes/operators deliberately. +func SupportedProfiles() []Profile { + canonical := make(map[string]string) + for unit, definition := range catalogUnits { + if unit == definition.canonical { + canonical[definition.quantity] = unit + } + } + quantities := make([]string, 0, len(canonical)) + for quantity := range canonical { + quantities = append(quantities, quantity) + } + sort.Strings(quantities) + var result []Profile + for _, quantity := range quantities { + for _, role := range []string{RoleNominal, RoleTypical, RoleOperatingSupport, RoleMinimumLimit, RoleMaximumLimit, RoleAbsoluteMaximum, RoleErrorMagnitude} { + p := Profile{Quantity: quantity, CanonicalUnit: canonical[quantity], SemanticRole: role, NumericFormat: NumericFormatDecimalDot, SchemaVersion: SchemaVersion, ParserVersion: CatalogParserVersion, UnitRegistryVersion: CatalogUnitRegistryVersion} + p.AllowedShapes = []Shape{ShapeScalar} + p.AllowedOperators = []Operator{OperatorEqual, OperatorLess, OperatorLessEqual, OperatorGreater, OperatorGreaterEqual, OperatorBetween} + switch role { + case RoleOperatingSupport: + p.AllowedShapes = []Shape{ShapeScalar, ShapeDiscreteSet, ShapeIntervalSet} + p.AllowedOperators = []Operator{OperatorContainsPoint, OperatorContainsRange, OperatorOverlapsRange} + case RoleNominal: + if quantity != "count" { + p.AllowedShapes = append(p.AllowedShapes, ShapeTolerance) + } + case RoleMinimumLimit, RoleMaximumLimit, RoleAbsoluteMaximum: + p.AllowedShapes = append(p.AllowedShapes, ShapeBoundClaim) + case RoleErrorMagnitude: + if quantity != "ratio" { + continue + } + p.AllowedShapes = []Shape{ShapeBoundClaim} + p.AllowedOperators = []Operator{OperatorLess, OperatorLessEqual} + } + if quantity == "count" { + p.DeclaredInputUnit = "1" + } + result = append(result, p) + } + } + return result +} diff --git a/internal/specnumeric/registry_v2_test.go b/internal/specnumeric/registry_v2_test.go new file mode 100644 index 0000000..748b388 --- /dev/null +++ b/internal/specnumeric/registry_v2_test.go @@ -0,0 +1,106 @@ +package specnumeric + +import "testing" + +func TestCatalogValueRoundTrip(t *testing.T) { + p := catalogProfileForTest("ratio", "%") + p.SemanticRole = RoleErrorMagnitude + p.AllowedShapes = []Shape{ShapeBoundClaim} + p.AllowedOperators = []Operator{OperatorLessEqual} + result := Normalize("±0.5 %", p) + if result.Candidate == nil { + t.Fatalf("normalize: %+v", result) + } + encoded, err := MarshalValue(*result.Candidate) + if err != nil { + t.Fatal(err) + } + value, err := UnmarshalValue(encoded, p) + if err != nil { + t.Fatal(err) + } + ceiling, _ := ParseDecimal("1") + if Evaluate(&value, p, Predicate{SpecID: "accuracy", Operator: OperatorLessEqual, Value: &ceiling, Unit: "%"}) != Match { + t.Fatal("stored accuracy lost meaning") + } +} + +func catalogProfileForTest(quantity, unit string) Profile { + p := electricalProfile(quantity, unit) + p.ParserVersion, p.UnitRegistryVersion = "catalog-parser-2", "catalog-units-2" + return p +} + +func TestCatalogRegistryConvertsDeclaredQuantities(t *testing.T) { + for _, tc := range []struct{ quantity, canonical, raw, want string }{ + {"ratio", "%", "95 %", "95"}, + {"log_gain", "dB", "20 dB", "20"}, + {"memory", "bit", "1 kB", "8000"}, + {"memory", "bit", "1 KiB", "8192"}, + {"power", "W", "250 mW", "0.25"}, + {"length", "m", "2.54 mm", "0.00254"}, + {"inductance", "H", "10 µH", "0.00001"}, + {"luminous_intensity", "cd", "500 mcd", "0.5"}, + {"count", "1", "24", "24"}, + } { + t.Run(tc.raw, func(t *testing.T) { + p := catalogProfileForTest(tc.quantity, tc.canonical) + if tc.quantity == "count" { + p.DeclaredInputUnit = "1" + } + r := Normalize(tc.raw, p) + if r.Reason != "" || r.Candidate == nil || r.Candidate.Scalar == nil || r.Candidate.Scalar.String() != tc.want { + t.Fatalf("Normalize(%q) = %+v, want scalar %s %s", tc.raw, r, tc.want, tc.canonical) + } + }) + } +} + +func TestExtendedRegistryPreservesLegacyProfiles(t *testing.T) { + p := electricalProfile("voltage", "V") + r := Normalize("5000 mV", p) + if r.Reason != "" || r.Candidate == nil || r.Candidate.Scalar.String() != "5" { + t.Fatalf("legacy conversion: %+v", r) + } + p.Quantity, p.CanonicalUnit = "ratio", "%" + if err := ValidateProfile(p); err == nil { + t.Fatal("old registry acquired a new percentage meaning") + } +} + +func TestErrorMagnitudeUsesMaximumError(t *testing.T) { + p := catalogProfileForTest("ratio", "%") + p.SemanticRole, p.AllowedShapes, p.AllowedOperators = "error_magnitude", []Shape{ShapeBoundClaim}, []Operator{OperatorLessEqual} + threshold := decimalForTest(t, "1") + q := Predicate{SpecID: "accuracy", Operator: OperatorLessEqual, Unit: "%", Value: &threshold} + for _, tc := range []struct { + raw string + want Truth + }{{"±0.5 %", Match}, {"1.5 %", NoMatch}} { + r := Normalize(tc.raw, p) + if r.Reason != "" || r.Candidate == nil { + t.Fatalf("normalize %s: %+v", tc.raw, r) + } + if got := Evaluate(r.Candidate, p, q); got != tc.want { + t.Errorf("%s <= 1%%: %s, want %s", tc.raw, got, tc.want) + } + } +} + +func TestCountRejectsFractionalFacts(t *testing.T) { + p := catalogProfileForTest("count", "1") + p.DeclaredInputUnit = "1" + if err := ValidateProfile(p); err != nil { + t.Fatal(err) + } + r := Normalize("1.5", p) + if r.Reason == "" || r.Candidate != nil { + t.Fatalf("fractional count accepted: %+v", r) + } + v := Value{SchemaVersion: 1, Quantity: "count", SemanticRole: RoleOperatingSupport, Shape: ShapeScalar, Unit: "1", UnitRegistryVersion: "catalog-units-2", Context: Context{Kind: ContextUnconditional}} + n := decimalForTest(t, "1.5") + v.Scalar = &n + if err := ValidateValue(v, p); err == nil { + t.Fatal("manual fractional count accepted") + } +} diff --git a/internal/specnumeric/units.go b/internal/specnumeric/units.go index ce66621..f2fa0a1 100644 --- a/internal/specnumeric/units.go +++ b/internal/specnumeric/units.go @@ -2,7 +2,6 @@ package specnumeric import ( "fmt" - "math/big" ) const UnitRegistryVersion = "electrical-1" @@ -30,17 +29,12 @@ func Convert(value Decimal, unit string, profile Profile) (Decimal, error) { if unit == "" { unit = profile.DeclaredInputUnit } - definition, ok := electricalUnits[unit] + definition, ok := registryForVersion(profile.UnitRegistryVersion)[unit] if !ok || definition.quantity != profile.Quantity || definition.canonical != profile.CanonicalUnit { return Decimal{}, fmt.Errorf("unsupported_unit: %q", unit) } - factor := new(big.Int).Exp(big.NewInt(10), big.NewInt(int64(abs(definition.exponent))), nil) converted := value.rat() - if definition.exponent >= 0 { - converted.Mul(converted, new(big.Rat).SetInt(factor)) - } else { - converted.Quo(converted, new(big.Rat).SetInt(factor)) - } + converted.Mul(converted, unitFactor(unit, definition, profile.UnitRegistryVersion)) return decimalFromRat(converted) } diff --git a/internal/specnumeric/value.go b/internal/specnumeric/value.go index 9f5ec91..2eb53ca 100644 --- a/internal/specnumeric/value.go +++ b/internal/specnumeric/value.go @@ -254,9 +254,32 @@ func ValidateValue(value Value, profile Profile) error { if value.Bound.Direction != BoundLower && value.Bound.Direction != BoundUpper { return fmt.Errorf("invalid bound direction") } + if profile.SemanticRole == RoleErrorMagnitude && (value.Bound.Direction != BoundUpper || value.Bound.Value.rat().Sign() < 0) { + return fmt.Errorf("error magnitude requires a nonnegative upper bound") + } default: return fmt.Errorf("unsupported shape") } + if profile.Quantity == "count" { + var numbers []Decimal + switch value.Shape { + case ShapeScalar: + numbers = append(numbers, *value.Scalar) + case ShapeDiscreteSet: + numbers = value.Values + case ShapeIntervalSet: + for _, interval := range value.Intervals { + numbers = append(numbers, interval.Lower, interval.Upper) + } + case ShapeBoundClaim: + numbers = append(numbers, value.Bound.Value) + } + for _, number := range numbers { + if number.rat().Sign() < 0 || !number.rat().IsInt() { + return fmt.Errorf("count requires nonnegative integers") + } + } + } return nil } @@ -306,6 +329,12 @@ func validateTolerance(tolerance Tolerance) error { func MarshalValue(value Value) (string, error) { profile := Profile{Quantity: value.Quantity, SemanticRole: value.SemanticRole, AllowedShapes: []Shape{value.Shape}, AllowedOperators: []Operator{OperatorEqual}, CanonicalUnit: value.Unit, NumericFormat: NumericFormatDecimalDot, SchemaVersion: value.SchemaVersion, ParserVersion: ParserVersion, UnitRegistryVersion: value.UnitRegistryVersion} + if value.UnitRegistryVersion == CatalogUnitRegistryVersion { + profile.ParserVersion = CatalogParserVersion + } + if value.SemanticRole == RoleErrorMagnitude { + profile.AllowedOperators = []Operator{OperatorLessEqual} + } if err := ValidateValue(value, profile); err != nil { return "", err } diff --git a/internal/storage/sqlite/jobs_store.go b/internal/storage/sqlite/jobs_store.go index b660d5e..8484e74 100644 --- a/internal/storage/sqlite/jobs_store.go +++ b/internal/storage/sqlite/jobs_store.go @@ -16,11 +16,12 @@ import ( var ErrJobNotRetryable = errors.New("job is not safely retryable") type JobKinds struct { - Publication bool - Import bool - Backup bool - SMTP bool - Search bool + Normalization bool + Publication bool + Import bool + Backup bool + SMTP bool + Search bool } // JobRecord is an Admin read model over each subsystem's durable metadata. @@ -53,6 +54,7 @@ func (s *Store) RecentJobs(ctx context.Context, kinds JobKinds, limit int) ([]Jo load func(context.Context, int) ([]JobRecord, error) }{ {kinds.Publication, s.recentPublicationJobs}, + {kinds.Normalization, s.recentSpecNormalizationJobs}, {kinds.Import, s.recentImportJobs}, {kinds.Backup, s.recentBackupJobs}, {kinds.SMTP, s.recentSMTPJobs}, @@ -295,3 +297,25 @@ func (s *Store) RetryPublicationJob(ctx context.Context, actorID, failedIntentID CreatedAt: now, UpdatedAt: now, }, nil } + +func (s *Store) recentSpecNormalizationJobs(ctx context.Context, limit int) ([]JobRecord, error) { + rows, err := s.db.QueryContext(ctx, `SELECT id,spec_id,status,processed,total,failed,skipped,created_at,updated_at FROM spec_normalization_work ORDER BY updated_at DESC,id DESC LIMIT ?`, limit) + if err != nil { + return nil, err + } + defer rows.Close() + jobs := []JobRecord{} + for rows.Next() { + job := JobRecord{Kind: "spec_normalization", Stage: "normalize_selected_sources", TargetType: "spec"} + var failed, skipped int64 + if err = rows.Scan(&job.ID, &job.TargetID, &job.Status, &job.ProgressCurrent, &job.ProgressTotal, &failed, &skipped, &job.CreatedAt, &job.UpdatedAt); err != nil { + return nil, err + } + job.Label = fmt.Sprintf("processed: %d; failed: %d; preserved manual: %d", job.ProgressCurrent, failed, skipped) + if failed > 0 { + job.ErrorMessage = fmt.Sprintf("%d source values need review", failed) + } + jobs = append(jobs, job) + } + return jobs, rows.Err() +} diff --git a/internal/storage/sqlite/migrations.go b/internal/storage/sqlite/migrations.go index 5b023fb..7c48d95 100644 --- a/internal/storage/sqlite/migrations.go +++ b/internal/storage/sqlite/migrations.go @@ -13,7 +13,7 @@ import ( const ( MinimumSupportedSchemaVersion = 1 - CurrentSchemaVersion = 19 + CurrentSchemaVersion = 20 ) var ( @@ -553,6 +553,59 @@ FROM products p WHERE p.record_state='current' AND p.status='published' UPDATE products SET revision=revision+1,updated_by=NULL,updated_at=strftime('%Y-%m-%dT%H:%M:%fZ','now') WHERE record_state='current' AND status='published';`, }, + { + Version: 20, Name: "published-field-filter-profiles-and-normalization-work", Transactional: true, + SQL: `CREATE TABLE spec_filter_profiles ( + spec_id TEXT PRIMARY KEY REFERENCES spec_definitions(id), + revision INTEGER NOT NULL CHECK(revision>=1), + profile_json TEXT NOT NULL, + updated_by TEXT REFERENCES users(id), + updated_at TEXT NOT NULL +); +INSERT INTO spec_filter_profiles(spec_id,revision,profile_json,updated_at) +SELECT sd.id,sd.revision,CASE WHEN np.spec_id IS NULL + THEN '{"version":1,"kind":"text","text_rule":"unicode-fold-space-1","operators":["equals","contains"]}' + ELSE json_object('version',1,'kind','numeric','operators',json_extract(np.profile_json,'$.allowed_operators')) END, + strftime('%Y-%m-%dT%H:%M:%fZ','now') +FROM spec_definitions sd LEFT JOIN spec_numeric_profiles np ON np.spec_id=sd.id; +CREATE TABLE spec_filter_profile_work ( + spec_id TEXT NOT NULL REFERENCES spec_definitions(id),profile_revision INTEGER NOT NULL, + spec_semantic_version INTEGER NOT NULL,cursor_product_id TEXT NOT NULL DEFAULT '', + status TEXT NOT NULL CHECK(status IN ('pending','completed')), + created_at TEXT NOT NULL,updated_at TEXT NOT NULL,PRIMARY KEY(spec_id,profile_revision) +); +CREATE INDEX spec_filter_profile_work_pending_idx ON spec_filter_profile_work(status,spec_id,profile_revision); +CREATE TABLE spec_normalization_work ( + id TEXT PRIMARY KEY,spec_id TEXT NOT NULL REFERENCES spec_definitions(id), + actor_id TEXT NOT NULL REFERENCES users(id),profile_revision INTEGER NOT NULL,spec_semantic_version INTEGER NOT NULL, + initial_seed INTEGER NOT NULL DEFAULT 0 CHECK(initial_seed IN (0,1)), + status TEXT NOT NULL CHECK(status IN ('pending','completed','superseded')), + cursor_spec_value_id TEXT NOT NULL DEFAULT '',processed INTEGER NOT NULL DEFAULT 0, + failed INTEGER NOT NULL DEFAULT 0,skipped INTEGER NOT NULL DEFAULT 0,total INTEGER NOT NULL, + created_at TEXT NOT NULL,updated_at TEXT NOT NULL +); +CREATE INDEX spec_normalization_work_pending_idx ON spec_normalization_work(status,created_at,id); +CREATE TABLE spec_normalization_work_items ( + work_id TEXT NOT NULL REFERENCES spec_normalization_work(id),spec_value_id TEXT NOT NULL REFERENCES product_spec_values(id), + status TEXT NOT NULL CHECK(status IN ('pending','completed','failed','skipped')), + reason TEXT NOT NULL DEFAULT '',PRIMARY KEY(work_id,spec_value_id) +); +INSERT INTO admin_log(id,actor_id,action,target_type,target_id,result,details_json,created_at) +SELECT 'log_'||lower(hex(randomblob(16))),NULL,'product.filter_model_migrated','product',p.id,'success', + json_object('migration',20,'old_revision',p.revision,'new_revision',p.revision+1),strftime('%Y-%m-%dT%H:%M:%fZ','now') +FROM products p WHERE p.record_state='current' AND p.status='published' + AND NOT EXISTS(SELECT 1 FROM publication_intents pi WHERE pi.entity_type='product' AND pi.entity_id=p.id AND pi.desired_revision=p.revision AND pi.status IN ('pending','processing')); +INSERT INTO publication_intents(id,entity_type,entity_id,desired_revision,cause,status,created_at,updated_at) +SELECT 'out_'||lower(hex(randomblob(16))),'product',p.id,p.revision+1,'product.filter_model_migrated','pending', + strftime('%Y-%m-%dT%H:%M:%fZ','now'),strftime('%Y-%m-%dT%H:%M:%fZ','now') +FROM products p WHERE p.record_state='current' AND p.status='published' + AND NOT EXISTS(SELECT 1 FROM publication_intents pi WHERE pi.entity_type='product' AND pi.entity_id=p.id AND pi.desired_revision=p.revision AND pi.status IN ('pending','processing')) + AND NOT EXISTS(SELECT 1 FROM publication_intents pi WHERE pi.entity_type='product' AND pi.entity_id=p.id + AND pi.desired_revision=p.revision+1 AND pi.status IN ('pending','processing')); +UPDATE products SET revision=revision+1,updated_by=NULL,updated_at=strftime('%Y-%m-%dT%H:%M:%fZ','now') +WHERE record_state='current' AND status='published' + AND NOT EXISTS(SELECT 1 FROM publication_intents pi WHERE pi.entity_type='product' AND pi.entity_id=products.id AND pi.desired_revision=products.revision AND pi.status IN ('pending','processing'));`, + }, } func SupportedSchemaVersion(version int) bool { diff --git a/internal/storage/sqlite/publication_store.go b/internal/storage/sqlite/publication_store.go index 55a90ac..ed14f35 100644 --- a/internal/storage/sqlite/publication_store.go +++ b/internal/storage/sqlite/publication_store.go @@ -195,7 +195,7 @@ func (s *Store) PublicationSource(ctx context.Context, productID string) (publis if routeReason != "" { return publishing.Source{}, errors.New(routeReason) } - applicableRows, err := tx.QueryContext(ctx, `SELECT sd.id,sd.name,sd.preferred_unit + applicableRows, err := tx.QueryContext(ctx, `SELECT sd.id,sd.name,sd.preferred_unit,sd.semantic_version FROM products p JOIN category_spec_sets cs ON cs.category_id=p.category_id JOIN spec_set_members sm ON sm.spec_set_id=cs.spec_set_id @@ -206,7 +206,7 @@ func (s *Store) PublicationSource(ctx context.Context, productID string) (publis } for applicableRows.Next() { var spec publishing.SourceSpec - if err := applicableRows.Scan(&spec.ID, &spec.Name, &spec.PreferredUnit); err != nil { + if err := applicableRows.Scan(&spec.ID, &spec.Name, &spec.PreferredUnit, &spec.SemanticVersion); err != nil { applicableRows.Close() return publishing.Source{}, err } @@ -240,6 +240,9 @@ func (s *Store) PublicationSource(ctx context.Context, productID string) (publis if err := specRows.Err(); err != nil { return publishing.Source{}, err } + if err := loadPublicationFilterSnapshot(ctx, tx, productID, &source); err != nil { + return publishing.Source{}, err + } if err := loadPublicationNumericSnapshot(ctx, tx, productID, &source); err != nil { return publishing.Source{}, err } @@ -1400,5 +1403,39 @@ func publicationNumericSnapshotCurrent(ctx context.Context, tx *sql.Tx, activati if err := loadPublicationNumericSnapshot(ctx, tx, activation.ProductID, ¤t); err != nil { return false, err } - return reflect.DeepEqual(current.NumericDefinitions, activation.View.NumericDefinitions) && reflect.DeepEqual(current.NumericFacts, activation.View.NumericFacts), nil + if err := loadPublicationFilterSnapshot(ctx, tx, activation.ProductID, ¤t); err != nil { + return false, err + } + return reflect.DeepEqual(current.FilterDefinitions, activation.View.FilterDefinitions) && reflect.DeepEqual(current.NumericDefinitions, activation.View.NumericDefinitions) && reflect.DeepEqual(current.NumericFacts, activation.View.NumericFacts), nil +} + +// Read through the same transaction as Product and adopted facts. This is also +// checked at activation, before bounded profile fanout has bumped each Product. +func loadPublicationFilterSnapshot(ctx context.Context, tx *sql.Tx, productID string, source *publishing.Source) error { + rows, err := tx.QueryContext(ctx, `SELECT DISTINCT sd.id FROM products p JOIN category_spec_sets cs ON cs.category_id=p.category_id JOIN spec_set_members sm ON sm.spec_set_id=cs.spec_set_id JOIN spec_definitions sd ON sd.id=sm.spec_id AND sd.status='active' AND sd.filterable=1 WHERE p.id=? ORDER BY sd.id`, productID) + if err != nil { + return err + } + var ids []string + for rows.Next() { + var id string + if err = rows.Scan(&id); err != nil { + rows.Close() + return err + } + ids = append(ids, id) + } + err = rows.Err() + rows.Close() + if err != nil { + return err + } + for _, id := range ids { + profile, err := readSpecSearchProfile(ctx, tx, id) + if err != nil { + return err + } + source.FilterDefinitions = append(source.FilterDefinitions, publishing.PublicFilterDefinition{Field: "spec:" + id, SemanticVersion: profile.SpecSemanticVersion, ProfileRevision: profile.Revision, Profile: profile.Profile}) + } + return nil } diff --git a/internal/storage/sqlite/spec_filter_profile_work.go b/internal/storage/sqlite/spec_filter_profile_work.go new file mode 100644 index 0000000..6aceb7b --- /dev/null +++ b/internal/storage/sqlite/spec_filter_profile_work.go @@ -0,0 +1,93 @@ +package sqlite + +import ( + "context" + "database/sql" + "errors" + "time" +) + +// ProcessSpecSearchProfileWork advances one durable, bounded profile batch. +// Admission, target-version validation, stale marking, audit, publication intent, +// and the cursor commit together. Public activation snapshots are never edited. +func (s *Store) ProcessSpecSearchProfileWork(ctx context.Context, limit int) (bool, error) { + if limit <= 0 || limit > 100 { + limit = 100 + } + worked := false + err := s.withWriteTx(ctx, func(tx *sql.Tx) error { + var specID, cursor string + var revision, semantic int64 + err := tx.QueryRowContext(ctx, `SELECT spec_id,profile_revision,spec_semantic_version,cursor_product_id + FROM spec_filter_profile_work WHERE status='pending' ORDER BY created_at,spec_id,profile_revision LIMIT 1`).Scan(&specID, &revision, &semantic, &cursor) + if errors.Is(err, sql.ErrNoRows) { + return nil + } + if err != nil { + return err + } + worked = true + now := time.Now().UTC().Format(time.RFC3339Nano) + var current bool + if err = tx.QueryRowContext(ctx, `SELECT EXISTS(SELECT 1 FROM spec_filter_profiles np JOIN spec_definitions sd ON sd.id=np.spec_id + WHERE np.spec_id=? AND np.revision=? AND sd.semantic_version=? AND sd.semantic_version=?)`, specID, revision, semantic, semantic).Scan(¤t); err != nil { + return err + } + if !current { + // Superseded work may complete only its own durable record. + _, err = tx.ExecContext(ctx, `UPDATE spec_filter_profile_work SET status='completed',updated_at=? WHERE spec_id=? AND profile_revision=? AND spec_semantic_version=?`, now, specID, revision, semantic) + return err + } + rows, err := tx.QueryContext(ctx, `SELECT p.id,p.revision FROM products p WHERE p.record_state='current' AND p.id>? + AND (EXISTS(SELECT 1 FROM product_spec_values pv WHERE pv.product_id=p.id AND pv.spec_id=?) + OR EXISTS(SELECT 1 FROM category_spec_sets cs JOIN spec_set_members sm ON sm.spec_set_id=cs.spec_set_id WHERE cs.category_id=p.category_id AND sm.spec_id=?)) + ORDER BY p.id LIMIT ?`, cursor, specID, specID, limit) + if err != nil { + return err + } + type affectedProduct struct { + id string + revision int64 + } + products := make([]affectedProduct, 0, limit) + for rows.Next() { + var p affectedProduct + if err = rows.Scan(&p.id, &p.revision); err != nil { + rows.Close() + return err + } + products = append(products, p) + } + if err = rows.Err(); err != nil { + rows.Close() + return err + } + if err = rows.Close(); err != nil { + return err + } + for _, p := range products { + if _, err = tx.ExecContext(ctx, `UPDATE normalized_values SET status='stale' WHERE status='current' + AND spec_value_id IN (SELECT id FROM product_spec_values WHERE product_id=? AND spec_id=?) + AND (profile_revision<>? OR spec_semantic_version<>?)`, p.id, specID, revision, semantic); err != nil { + return err + } + if _, err = tx.ExecContext(ctx, `UPDATE products SET revision=revision+1,updated_by=NULL,updated_at=? WHERE id=? AND revision=?`, now, p.id, p.revision); err != nil { + return err + } + if err = appendAudit(ctx, tx, "", "product.spec_filter_profile_changed", "product", p.id, map[string]any{"spec_id": specID, "profile_revision": revision, "spec_semantic_version": semantic, "revision": p.revision + 1}); err != nil { + return err + } + if err = appendPublicationIntent(ctx, tx, p.id, p.revision+1, "product.spec_filter_profile_changed", now); err != nil { + return err + } + cursor = p.id + } + status := "pending" + if len(products) < limit { + status = "completed" + } + _, err = tx.ExecContext(ctx, `UPDATE spec_filter_profile_work SET cursor_product_id=?,status=?,updated_at=? WHERE spec_id=? AND profile_revision=? AND spec_semantic_version=? AND status='pending'`, cursor, status, now, specID, revision, semantic) + return err + }) + return worked, err +} diff --git a/internal/storage/sqlite/spec_filter_publication_test.go b/internal/storage/sqlite/spec_filter_publication_test.go new file mode 100644 index 0000000..b9ffcd4 --- /dev/null +++ b/internal/storage/sqlite/spec_filter_publication_test.go @@ -0,0 +1,126 @@ +package sqlite + +import ( + "prods/internal/catalog" + "prods/internal/catalogfilter" + "prods/internal/publishing" + "testing" + "time" +) + +func TestPublishedFilterDefinitionStaysFrozen(t *testing.T) { + f := newNormalizationFixture(t) + ctx := t.Context() + c := f.snapshot(t) + p, err := f.store.Product(ctx, c.ProductID) + if err != nil { + t.Fatal(err) + } + p.Status = catalog.Published + p, err = f.store.UpdateProduct(ctx, f.actor, p.Revision, p) + if err != nil { + t.Fatal(err) + } + source, err := f.store.PublicationSource(ctx, p.ID) + if err != nil { + t.Fatal(err) + } + intent, ok, err := f.store.ClaimPublicationIntent(ctx) + if err != nil || !ok { + t.Fatalf("claim: %v %v", ok, err) + } + view, err := publishing.FromProduct(p, "https://catalog.example.test") + if err != nil { + t.Fatal(err) + } + view.FilterDefinitions = source.FilterDefinitions + view.NumericDefinitions = source.NumericDefinitions + view.NumericFacts = source.NumericFacts + view.Specifications = []publishing.Specification{{ID: c.SpecID, RawValue: c.Raw}} + activation := publishing.ActivePublication{ProductID: p.ID, SourceRevision: p.Revision, PublicRevision: p.Revision, SiteEpoch: source.SiteEpoch, Route: source.Route, ArtifactID: "art_filter", ManifestHash: "hash_filter", ActivatedAt: time.Now().UTC(), View: view} + for range 5 { + ok, err = f.store.ActivatePublication(ctx, intent, activation, websiteVisibilityStub{}) + if err != nil { + t.Fatal(err) + } + if ok { + break + } + intent, ok, err = f.store.ClaimPublicationIntent(ctx) + if err != nil || !ok { + t.Fatalf("claim: %v %v", ok, err) + } + ok = false + } + if !ok { + t.Fatal("initial unit not activated") + } + profile, err := f.store.SpecSearchProfile(ctx, c.SpecID) + if err != nil { + t.Fatal(err) + } + profile.Profile = catalogfilter.DefaultTextProfile() + if _, err = f.store.ConfigureSpecSearchProfile(ctx, f.actor, c.SpecID, profile.Revision, profile); err != nil { + t.Fatal(err) + } + if _, err = f.store.SaveSpecValue(ctx, f.actor, p.ID, c.SpecID, "SPI", "en-US", p.Revision); err != nil { + t.Fatal(err) + } + active, err := f.store.ActivePublications(ctx) + if err != nil { + t.Fatal(err) + } + if len(active) != 1 || active[0].View.FilterDefinitions[0].Profile.Kind != "numeric" { + t.Fatalf("working config leaked: %+v", active) + } + if active[0].View.Specifications[0].RawValue != c.Raw { + t.Fatal("working Raw leaked") + } + tx, err := f.store.db.BeginTx(ctx, nil) + if err != nil { + t.Fatal(err) + } + defer tx.Rollback() + if current, err := publicationNumericSnapshotCurrent(ctx, tx, activation); err != nil || current { + t.Fatalf("stale candidate accepted before fanout: %v %v", current, err) + } + tx.Rollback() + if _, err = f.store.ProcessSpecSearchProfileWork(ctx, 100); err != nil { + t.Fatal(err) + } + source, err = f.store.PublicationSource(ctx, p.ID) + if err != nil { + t.Fatal(err) + } + activation.SourceRevision = source.Product.Revision + activation.PublicRevision = source.Product.Revision + activation.View.Revision = source.Product.Revision + activation.View.FilterDefinitions = source.FilterDefinitions + activation.View.NumericDefinitions = source.NumericDefinitions + activation.View.NumericFacts = source.NumericFacts + activation.View.Specifications = []publishing.Specification{{ID: c.SpecID, RawValue: source.Specs[0].RawValue}} + activated := false + for range 5 { + intent, found, err := f.store.ClaimPublicationIntent(ctx) + if err != nil || !found { + t.Fatalf("claim replacement: %v %v", found, err) + } + activated, err = f.store.ActivatePublication(ctx, intent, activation, websiteVisibilityStub{}) + if err != nil { + t.Fatal(err) + } + if activated { + break + } + } + if !activated { + t.Fatal("replacement not activated") + } + active, err = f.store.ActivePublications(ctx) + if err != nil { + t.Fatal(err) + } + if active[0].View.FilterDefinitions[0].Profile.Kind != "text" || active[0].View.Specifications[0].RawValue != "SPI" { + t.Fatalf("new unit missing: %+v", active[0].View) + } +} diff --git a/internal/storage/sqlite/spec_filter_store.go b/internal/storage/sqlite/spec_filter_store.go new file mode 100644 index 0000000..0084e6a --- /dev/null +++ b/internal/storage/sqlite/spec_filter_store.go @@ -0,0 +1,136 @@ +package sqlite + +import ( + "context" + "database/sql" + "encoding/json" + "fmt" + "time" + + "prods/internal/catalog" + "prods/internal/catalogfilter" + "prods/internal/identity" + "prods/internal/specnumeric" +) + +type specProfileQuerier interface { + QueryRowContext(context.Context, string, ...any) *sql.Row +} + +func readSpecSearchProfile(ctx context.Context, q specProfileQuerier, id string) (catalog.SpecSearchProfile, error) { + var result catalog.SpecSearchProfile + var metadata, numeric string + var numericSemantic int64 + err := q.QueryRowContext(ctx, `SELECT sd.id,sd.semantic_version,sd.revision,sd.filterable,COALESCE(sf.profile_json,''),COALESCE(np.profile_json,''),COALESCE(np.spec_semantic_version,0) + FROM spec_definitions sd LEFT JOIN spec_filter_profiles sf ON sf.spec_id=sd.id LEFT JOIN spec_numeric_profiles np ON np.spec_id=sd.id WHERE sd.id=?`, id).Scan(&result.SpecID, &result.SpecSemanticVersion, &result.Revision, &result.Filterable, &metadata, &numeric, &numericSemantic) + if err != nil { + return result, err + } + if metadata == "" { + result.Profile = catalogfilter.DefaultTextProfile() + } else if err = json.Unmarshal([]byte(metadata), &result.Profile); err != nil { + return result, err + } + if result.Profile.Kind == "numeric" { + if numeric == "" || numericSemantic != result.SpecSemanticVersion { + return result, catalog.ErrInvalidSpec + } + var p specnumeric.Profile + if err = json.Unmarshal([]byte(numeric), &p); err != nil { + return result, err + } + result.Profile.Numeric = &p + } + if err = catalogfilter.ValidateProfile(result.Profile); err != nil { + return result, fmt.Errorf("%w: %v", catalog.ErrInvalidSpec, err) + } + return result, nil +} + +func (s *Store) SpecSearchProfile(ctx context.Context, id string) (catalog.SpecSearchProfile, error) { + return readSpecSearchProfile(ctx, s.db, id) +} + +func saveSpecSearchMetadataTx(ctx context.Context, tx *sql.Tx, actorID, id string, revision int64, p catalogfilter.Profile, now string) error { + // Numeric meaning lives solely in spec_numeric_profiles. Metadata records + // only presentation kind/operators; readers attach that authoritative row. + p.Numeric = nil + encoded, err := json.Marshal(p) + if err != nil { + return err + } + _, err = tx.ExecContext(ctx, `INSERT INTO spec_filter_profiles(spec_id,revision,profile_json,updated_by,updated_at) VALUES(?,?,?,?,?) + ON CONFLICT(spec_id) DO UPDATE SET revision=excluded.revision,profile_json=excluded.profile_json,updated_by=excluded.updated_by,updated_at=excluded.updated_at`, id, revision, string(encoded), actorID, now) + return err +} + +func (s *Store) ConfigureSpecSearchProfile(ctx context.Context, actorID, specID string, expectedRevision int64, desired catalog.SpecSearchProfile) (catalog.SpecSearchProfile, error) { + if err := catalogfilter.ValidateProfile(desired.Profile); err != nil { + return catalog.SpecSearchProfile{}, fmt.Errorf("%w: %v", catalog.ErrInvalidSpec, err) + } + var result catalog.SpecSearchProfile + err := s.withWriteTx(ctx, func(tx *sql.Tx) error { + if desired.Profile.Kind == "numeric" { + var numeric catalog.SpecNumericProfile + if err := configureSpecNumericProfileTx(ctx, tx, actorID, specID, expectedRevision, *desired.Profile.Numeric, &numeric); err != nil { + return err + } + if _, err := tx.ExecContext(ctx, `UPDATE spec_definitions SET filterable=? WHERE id=?`, desired.Filterable, specID); err != nil { + return err + } + var err error + result, err = readSpecSearchProfile(ctx, tx, specID) + return err + } + if err := requireActorCapability(ctx, tx, actorID, identity.CapabilityCatalogEdit); err != nil { + return err + } + var revision, semantic int64 + if err := tx.QueryRowContext(ctx, `SELECT revision,semantic_version FROM spec_definitions WHERE id=?`, specID).Scan(&revision, &semantic); err != nil { + return err + } + if revision != expectedRevision { + return catalog.ErrRevisionConflict + } + now := time.Now().UTC().Format(time.RFC3339Nano) + revision++ + semantic++ + if _, err := tx.ExecContext(ctx, `UPDATE spec_definitions SET filterable=?,revision=?,semantic_version=?,updated_by=?,updated_at=? WHERE id=? AND revision=?`, desired.Filterable, revision, semantic, actorID, now, specID, expectedRevision); err != nil { + return err + } + if err := saveSpecSearchMetadataTx(ctx, tx, actorID, specID, revision, desired.Profile, now); err != nil { + return err + } + if _, err := tx.ExecContext(ctx, `INSERT INTO spec_filter_profile_work(spec_id,profile_revision,spec_semantic_version,status,created_at,updated_at) VALUES(?,?,?,'pending',?,?)`, specID, revision, semantic, now, now); err != nil { + return err + } + if err := appendAudit(ctx, tx, actorID, "spec.search_profile_configured", "spec", specID, map[string]any{"revision": revision, "spec_semantic_version": semantic, "kind": desired.Profile.Kind, "filterable": desired.Filterable}); err != nil { + return err + } + var err error + result, err = readSpecSearchProfile(ctx, tx, specID) + return err + }) + if err != nil { + return catalog.SpecSearchProfile{}, err + } + return result, nil +} + +// Initial seed definitions are installed once, before any Product exists. +// Adoption is deferred to bounded durable jobs after Installer commits Ready. +func installSpecSearchProfileTx(ctx context.Context, tx *sql.Tx, actorID string, spec catalog.SpecDefinition, profile catalogfilter.Profile, now string) error { + if err := catalogfilter.ValidateProfile(profile); err != nil { + return fmt.Errorf("%w: %v", catalog.ErrInvalidSpec, err) + } + if profile.Numeric != nil { + encoded, err := json.Marshal(profile.Numeric) + if err != nil { + return err + } + if _, err = tx.ExecContext(ctx, `INSERT INTO spec_numeric_profiles(spec_id,spec_semantic_version,revision,profile_json,updated_by,updated_at) VALUES(?,?,1,?,?,?)`, spec.ID, spec.SemanticVer, string(encoded), actorID, now); err != nil { + return err + } + } + return saveSpecSearchMetadataTx(ctx, tx, actorID, spec.ID, 1, profile, now) +} diff --git a/internal/storage/sqlite/spec_filter_store_test.go b/internal/storage/sqlite/spec_filter_store_test.go new file mode 100644 index 0000000..b0d358a --- /dev/null +++ b/internal/storage/sqlite/spec_filter_store_test.go @@ -0,0 +1,120 @@ +package sqlite + +import ( + "errors" + "testing" + + "prods/internal/catalog" + "prods/internal/catalogfilter" +) + +func TestSpecSearchProfileRequiresExpectedRevision(t *testing.T) { + s, owner := installedStore(t) + spec, err := s.CreateSpecDefinition(t.Context(), owner.ID, catalog.SpecDefinition{Name: "Interface", Filterable: true}) + if err != nil { + t.Fatal(err) + } + p := catalog.SpecSearchProfile{Filterable: true, Profile: catalogfilter.Profile{Version: 1, Kind: "choice", TextRule: "unicode-fold-space-1", Operators: []string{"equals"}}} + got, err := s.ConfigureSpecSearchProfile(t.Context(), owner.ID, spec.ID, spec.Revision, p) + if err != nil { + t.Fatal(err) + } + if got.Revision != spec.Revision+1 || got.Profile.Kind != "choice" { + t.Fatalf("configured: %+v", got) + } + p.Profile.Kind = "text" + if _, err = s.ConfigureSpecSearchProfile(t.Context(), owner.ID, spec.ID, spec.Revision, p); !errors.Is(err, catalog.ErrRevisionConflict) { + t.Fatalf("stale config: %v", err) + } + current, err := s.SpecSearchProfile(t.Context(), spec.ID) + if err != nil || current.Profile.Kind != "choice" { + t.Fatalf("config replaced: %+v %v", current, err) + } + var work int + if err = s.db.QueryRow(`SELECT COUNT(*) FROM spec_filter_profile_work WHERE spec_id=? AND status='pending'`, spec.ID).Scan(&work); err != nil || work != 1 { + t.Fatalf("durable work=%d err=%v", work, err) + } +} + +func TestNormalizationWorkPreservesManualPreferenceAndRaw(t *testing.T) { + f := newNormalizationFixture(t) + manual := f.adopt(t) + c := f.snapshot(t) + if _, err := f.store.SaveSpecValue(t.Context(), f.actor, c.ProductID, c.SpecID, "4–6V", "en-US", c.Expected.ProductRevision); err != nil { + t.Fatal(err) + } + p, err := f.store.SpecSearchProfile(t.Context(), c.SpecID) + if err != nil { + t.Fatal(err) + } + work, err := f.store.StartSpecNormalizationWork(t.Context(), f.actor, c.SpecID, p.Revision) + if err != nil { + t.Fatal(err) + } + for { + worked, err := f.store.ProcessSpecNormalizationWork(t.Context(), 1) + if err != nil { + t.Fatal(err) + } + if !worked { + break + } + } + current := f.snapshot(t) + if current.Raw != "4–6V" || current.Selection.Preference != catalog.NormalizedManual || current.Selection.SelectedNormalizedValueID != manual.NormalizedValueID { + t.Fatalf("manual/source changed: %+v", current) + } + state, err := f.store.SpecNormalizationWork(t.Context(), work.ID) + if err != nil || state.Status != "completed" || state.Skipped != 1 || state.Processed != 1 { + t.Fatalf("work: %+v err=%v", state, err) + } +} + +func TestTextSearchProfileInvalidatesNumericContext(t *testing.T) { + f := newNormalizationFixture(t) + c := f.snapshot(t) + p, err := f.store.SpecSearchProfile(t.Context(), c.SpecID) + if err != nil { + t.Fatal(err) + } + p.Profile = catalogfilter.DefaultTextProfile() + if _, err = f.store.ConfigureSpecSearchProfile(t.Context(), f.actor, c.SpecID, p.Revision, p); err != nil { + t.Fatal(err) + } + if _, err = f.store.SpecNormalizationContext(t.Context(), c.SpecValueID); !errors.Is(err, catalog.ErrRevisionConflict) { + t.Fatalf("obsolete numeric meaning remained editable: %v", err) + } +} + +func TestNormalizationWorkReportsUnsupportedRaw(t *testing.T) { + f := newNormalizationFixture(t) + c := f.snapshot(t) + if _, err := f.store.SaveSpecValue(t.Context(), f.actor, c.ProductID, c.SpecID, "62 accuracy", "en-US", c.Expected.ProductRevision); err != nil { + t.Fatal(err) + } + p, err := f.store.SpecSearchProfile(t.Context(), c.SpecID) + if err != nil { + t.Fatal(err) + } + work, err := f.store.StartSpecNormalizationWork(t.Context(), f.actor, c.SpecID, p.Revision) + if err != nil { + t.Fatal(err) + } + for { + worked, err := f.store.ProcessSpecNormalizationWork(t.Context(), 1) + if err != nil { + t.Fatal(err) + } + if !worked { + break + } + } + state, err := f.store.SpecNormalizationWork(t.Context(), work.ID) + if err != nil || state.Failed != 1 { + t.Fatalf("work: %+v err=%v", state, err) + } + current := f.snapshot(t) + if current.Raw != "62 accuracy" || current.Selection.SelectedNormalizedValueID != "" { + t.Fatalf("invented numeric fact: %+v", current) + } +} diff --git a/internal/storage/sqlite/spec_filter_upgrade_test.go b/internal/storage/sqlite/spec_filter_upgrade_test.go new file mode 100644 index 0000000..99e755a --- /dev/null +++ b/internal/storage/sqlite/spec_filter_upgrade_test.go @@ -0,0 +1,50 @@ +package sqlite + +import ( + "prods/internal/catalog" + "prods/internal/catalogfilter" + "reflect" + "testing" +) + +func TestUpgradePreservesExistingSpecSources(t *testing.T) { + f := newNormalizationFixture(t) + f.adopt(t) + before := f.snapshot(t) + values, err := f.store.ProductSpecValues(t.Context(), before.ProductID) + if err != nil { + t.Fatal(err) + } + if _, err = f.store.db.Exec(`DROP TABLE spec_normalization_work_items;DROP TABLE spec_normalization_work;DROP TABLE spec_filter_profile_work;DROP TABLE spec_filter_profiles;DELETE FROM schema_migrations WHERE version=20;UPDATE system_state SET schema_version=19 WHERE singleton=1;`); err != nil { + t.Fatal(err) + } + if err = f.store.Upgrade(t.Context(), "verified-filter-upgrade-backup"); err != nil { + t.Fatal(err) + } + after := f.snapshot(t) + afterValues, err := f.store.ProductSpecValues(t.Context(), before.ProductID) + if err != nil { + t.Fatal(err) + } + if !reflect.DeepEqual(before, after) || !reflect.DeepEqual(values, afterValues) { + t.Fatal("upgrade altered Raw, selected source, manual history or preference") + } + p, err := f.store.SpecSearchProfile(t.Context(), before.SpecID) + if err != nil { + t.Fatal(err) + } + if p.Profile.Kind != "numeric" { + t.Fatal("existing explicit numeric profile was replaced") + } + p.Profile = catalogfilter.DefaultTextProfile() + if _, err = f.store.ConfigureSpecSearchProfile(t.Context(), f.actor, before.SpecID, p.Revision, catalog.SpecSearchProfile{Filterable: true, Profile: p.Profile}); err != nil { + t.Fatal(err) + } + finalValues, err := f.store.ProductSpecValues(t.Context(), before.ProductID) + if err != nil { + t.Fatal(err) + } + if finalValues[0].Value.RawValue != values[0].Value.RawValue || finalValues[0].SourceSelection != values[0].SourceSelection { + t.Fatal("text configuration rewrote source data") + } +} diff --git a/internal/storage/sqlite/spec_filter_work.go b/internal/storage/sqlite/spec_filter_work.go new file mode 100644 index 0000000..5a4d912 --- /dev/null +++ b/internal/storage/sqlite/spec_filter_work.go @@ -0,0 +1,231 @@ +package sqlite + +import ( + "context" + "database/sql" + "errors" + "time" + + "prods/internal/catalog" + "prods/internal/identity" + "prods/internal/specnumeric" +) + +func (s *Store) StartSpecNormalizationWork(ctx context.Context, actorID, specID string, expectedRevision int64) (catalog.SpecNormalizationWork, error) { + id, err := randomID("snw") + if err != nil { + return catalog.SpecNormalizationWork{}, err + } + err = s.withWriteTx(ctx, func(tx *sql.Tx) error { + if err := requireActorCapability(ctx, tx, actorID, identity.CapabilityCatalogEdit); err != nil { + return err + } + p, err := readSpecSearchProfile(ctx, tx, specID) + if err != nil { + return err + } + if p.Revision != expectedRevision { + return catalog.ErrRevisionConflict + } + if p.Profile.Kind != "numeric" { + return catalog.ErrInvalidSpec + } + var profileRevision int64 + if err = tx.QueryRowContext(ctx, `SELECT revision FROM spec_numeric_profiles WHERE spec_id=?`, specID).Scan(&profileRevision); err != nil { + return err + } + var existing string + err = tx.QueryRowContext(ctx, `SELECT id FROM spec_normalization_work WHERE spec_id=? AND profile_revision=? AND spec_semantic_version=? AND status='pending' ORDER BY created_at,id LIMIT 1`, specID, profileRevision, p.SpecSemanticVersion).Scan(&existing) + if err == nil { + id = existing + return nil + } + if !errors.Is(err, sql.ErrNoRows) { + return err + } + return queueSpecNormalizationWorkTx(ctx, tx, actorID, id, specID, profileRevision, p.SpecSemanticVersion, false, time.Now().UTC().Format(time.RFC3339Nano)) + }) + if err != nil { + return catalog.SpecNormalizationWork{}, err + } + return s.SpecNormalizationWork(ctx, id) +} + +func (s *Store) SpecNormalizationWork(ctx context.Context, id string) (catalog.SpecNormalizationWork, error) { + var w catalog.SpecNormalizationWork + err := s.db.QueryRowContext(ctx, `SELECT id,spec_id,status,cursor_spec_value_id,profile_revision,spec_semantic_version,processed,failed,skipped,total,initial_seed FROM spec_normalization_work WHERE id=?`, id).Scan(&w.ID, &w.SpecID, &w.Status, &w.Cursor, &w.ProfileRevision, &w.SemanticVersion, &w.Processed, &w.Failed, &w.Skipped, &w.Total, &w.InitialSeed) + return w, err +} + +func (s *Store) SpecNormalizationWorkItems(ctx context.Context, id string, page, pageSize int) ([]catalog.SpecNormalizationWorkItem, int, error) { + if page < 1 || pageSize < 1 || pageSize > 100 { + return nil, 0, catalog.ErrInvalidSpec + } + tx, err := s.db.BeginTx(ctx, &sql.TxOptions{ReadOnly: true}) + if err != nil { + return nil, 0, err + } + defer tx.Rollback() + var total int + if err = tx.QueryRowContext(ctx, `SELECT COUNT(*) FROM spec_normalization_work_items WHERE work_id=?`, id).Scan(&total); err != nil { + return nil, 0, err + } + rows, err := tx.QueryContext(ctx, `SELECT spec_value_id,status,reason FROM spec_normalization_work_items WHERE work_id=? ORDER BY spec_value_id LIMIT ? OFFSET ?`, id, pageSize, (page-1)*pageSize) + if err != nil { + return nil, 0, err + } + defer rows.Close() + result := []catalog.SpecNormalizationWorkItem{} + for rows.Next() { + var item catalog.SpecNormalizationWorkItem + if err = rows.Scan(&item.SpecValueID, &item.State, &item.Reason); err != nil { + return nil, 0, err + } + result = append(result, item) + } + return result, total, rows.Err() +} + +// Each item uses a frozen parsing context outside admission, then commits the +// controlled result, publication intent, audit and durable progress together. +func (s *Store) ProcessSpecNormalizationWork(ctx context.Context, limit int) (bool, error) { + if limit < 1 || limit > 100 { + limit = 100 + } + var id, actor string + err := s.db.QueryRowContext(ctx, `SELECT id,actor_id FROM spec_normalization_work WHERE status='pending' ORDER BY created_at,id LIMIT 1`).Scan(&id, &actor) + if errors.Is(err, sql.ErrNoRows) { + return false, nil + } + if err != nil { + return false, err + } + work, err := s.SpecNormalizationWork(ctx, id) + if err != nil { + return true, err + } + rows, err := s.db.QueryContext(ctx, `SELECT spec_value_id FROM spec_normalization_work_items WHERE work_id=? AND status='pending' ORDER BY spec_value_id LIMIT ?`, id, limit) + if err != nil { + return true, err + } + var values []string + for rows.Next() { + var value string + if err = rows.Scan(&value); err != nil { + rows.Close() + return true, err + } + values = append(values, value) + } + if err = rows.Err(); err != nil { + rows.Close() + return true, err + } + rows.Close() + for _, valueID := range values { + frozen, contextErr := s.SpecNormalizationContext(ctx, valueID) + state, reason, encoded := "completed", "", "" + if contextErr != nil { + state, reason = "failed", "context_changed" + } else if frozen.Selection.Preference == catalog.NormalizedManual { + state, reason = "skipped", "manual_preference" + } else { + parsed := specnumeric.Normalize(frozen.Raw, frozen.Profile) + reason = string(parsed.Reason) + if parsed.Candidate != nil { + encoded, err = specnumeric.MarshalValue(*parsed.Candidate) + if err != nil { + return true, err + } + } + if reason != "" || encoded == "" { + state = "failed" + } + } + err = s.withWriteTx(ctx, func(tx *sql.Tx) error { + var current bool + if err := tx.QueryRowContext(ctx, `SELECT EXISTS(SELECT 1 FROM spec_normalization_work w JOIN spec_numeric_profiles np ON np.spec_id=w.spec_id JOIN spec_definitions sd ON sd.id=w.spec_id + WHERE w.id=? AND w.status='pending' AND np.revision=w.profile_revision AND np.spec_semantic_version=w.spec_semantic_version AND sd.semantic_version=w.spec_semantic_version)`, id).Scan(¤t); err != nil { + return err + } + if !current { + _, err := tx.ExecContext(ctx, `UPDATE spec_normalization_work SET status='superseded',updated_at=? WHERE id=? AND status='pending'`, time.Now().UTC().Format(time.RFC3339Nano), id) + return err + } + if err := requireActorCapability(ctx, tx, actor, identity.CapabilityCatalogEdit); err != nil { + state, reason = "failed", "permission_changed" + } else if contextErr == nil { + if frozen.Expected.ProfileRevision != work.ProfileRevision || frozen.Expected.SpecSemanticVersion != work.SemanticVersion { + state, reason = "failed", "profile_changed" + } else if err := checkNormalizationContextTx(ctx, tx, actor, frozen, frozen.Expected); err != nil { + state, reason = "failed", "context_changed" + } else if state != "skipped" { + var outcome catalog.NormalizationOutcome + if err := recordControlledNormalizationTx(ctx, tx, actor, frozen, frozen.Expected, encoded, reason, catalog.NormalizedAutomatic, false, &outcome); err != nil { + return err + } + // New installation jobs can supersede older pending revisions before + // the first activation. Every adopted fact and its latest intent remain + // durable; ordinary user work and active Products keep their usual path. + if work.InitialSeed && outcome.ProductRevision > 0 { + if _, err := tx.ExecContext(ctx, `UPDATE publication_intents SET status='superseded',updated_at=? WHERE entity_type='product' AND entity_id=? AND status='pending' AND desired_revision= 20 { + if _, err := store.db.Exec(`DROP TABLE spec_normalization_work_items; DROP TABLE spec_normalization_work; DROP TABLE spec_filter_profile_work; DROP TABLE spec_filter_profiles; DELETE FROM schema_migrations WHERE version>=20;`); err != nil { + t.Fatal(err) + } + } _, err := store.db.Exec(` DROP TABLE public_spec_projection_fields; DROP TABLE public_spec_projection_products; @@ -475,8 +480,8 @@ func TestNumericFreshInstallHasSameSchema(t *testing.T) { if err := store.db.QueryRow(`SELECT schema_version FROM system_state`).Scan(&version); err != nil { t.Fatal(err) } - if version != 19 { - t.Fatalf("fresh schema=%d, want 19", version) + if version != CurrentSchemaVersion { + t.Fatalf("fresh schema=%d, want %d", version, CurrentSchemaVersion) } if err := store.db.QueryRow(`SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name IN ('spec_numeric_profiles','spec_normalization_selections','product_spec_sources','spec_numeric_profile_work','public_spec_projection_products','public_spec_projection_fields')`).Scan(&tables); err != nil { diff --git a/internal/storage/sqlite/spec_seed_work_test.go b/internal/storage/sqlite/spec_seed_work_test.go new file mode 100644 index 0000000..c90831a --- /dev/null +++ b/internal/storage/sqlite/spec_seed_work_test.go @@ -0,0 +1,51 @@ +package sqlite + +import ( + "path/filepath" + "prods/internal/catalog" + "prods/internal/catalogfilter" + "prods/internal/identity" + "strings" + "testing" +) + +func TestSampleNormalizationIsDurableAndCoalescesUnactivatedIntents(t *testing.T) { + s, err := Create(filepath.Join(t.TempDir(), "sample.db")) + if err != nil { + t.Fatal(err) + } + defer s.Close() + hash, err := identity.HashPassword("ownerpass1") + if err != nil { + t.Fatal(err) + } + sample := &InstallationSampleData{Categories: []catalog.Category{{ID: "cat_power", ParentID: "cat_root", Name: "Power", Slug: "power", Status: catalog.EntryActive}}, Version: "v-test", DatasetVersion: "test", SourceURL: "embedded:test", SHA256: strings.Repeat("a", 64), Specs: []catalog.SpecDefinition{{ID: "a", Name: "Voltage A", Filterable: true, SemanticVer: 1}, {ID: "b", Name: "Voltage B", Filterable: true, SemanticVer: 1}}, SpecSearchProfiles: map[string]catalogfilter.Profile{"a": catalogfilter.NumericProfile(numericTestProfile()), "b": catalogfilter.NumericProfile(numericTestProfile())}, SpecSets: []catalog.SpecSet{{ID: "set", Name: "Power", SpecIDs: []string{"a", "b"}}}, CategorySpecSets: []InstallationCategorySpecSet{{CategoryID: "cat_power", SpecSetID: "set"}}, Products: []catalog.Product{{ID: "p", PartNumber: "SAMPLE", CategoryID: "cat_power", Status: catalog.Published}}, SpecValues: []catalog.SpecValue{{ID: "va", ProductID: "p", SpecID: "a", RawValue: "3–5V"}, {ID: "vb", ProductID: "p", SpecID: "b", RawValue: "4–6V"}}} + if _, err = s.CompleteInstallation(t.Context(), Installation{OwnerEmail: "owner@example.test", PasswordHash: hash, DefaultLocale: "en-US", SupportedLocales: []string{"en-US"}, TimeZone: "UTC", SampleData: sample}); err != nil { + t.Fatal(err) + } + var pending, adopted int + if err = s.db.QueryRow(`SELECT COUNT(*) FROM spec_normalization_work WHERE status='pending'`).Scan(&pending); err != nil || pending != 2 { + t.Fatalf("durable initial work=%d %v", pending, err) + } + if err = s.db.QueryRow(`SELECT COUNT(*) FROM spec_normalization_selections`).Scan(&adopted); err != nil || adopted != 0 { + t.Fatalf("installer parsed/adopted before returning: %d %v", adopted, err) + } + for { + worked, err := s.ProcessSpecNormalizationWork(t.Context(), 1) + if err != nil { + t.Fatal(err) + } + if !worked { + break + } + } + for _, id := range []string{"va", "vb"} { + c, err := s.SpecNormalizationContext(t.Context(), id) + if err != nil || c.Selection.Preference != catalog.NormalizedAutomatic { + t.Fatalf("adoption %s: %+v %v", id, c, err) + } + } + if err = s.db.QueryRow(`SELECT COUNT(*) FROM publication_intents WHERE entity_id='p' AND status='pending'`).Scan(&pending); err != nil || pending != 1 { + t.Fatalf("unactivated intents=%d %v", pending, err) + } +} diff --git a/internal/storage/sqlite/store.go b/internal/storage/sqlite/store.go index a7bfa8a..e6acd32 100644 --- a/internal/storage/sqlite/store.go +++ b/internal/storage/sqlite/store.go @@ -17,6 +17,7 @@ import ( "time" "prods/internal/catalog" + "prods/internal/catalogfilter" "prods/internal/identity" "prods/internal/inquiries" "prods/internal/localization" @@ -107,17 +108,18 @@ type Installation struct { } type InstallationSampleData struct { - Version string - DatasetVersion string - SourceURL string - SHA256 string - Dictionaries []catalog.DictionaryEntry - Categories []catalog.Category - Specs []catalog.SpecDefinition - SpecSets []catalog.SpecSet - CategorySpecSets []InstallationCategorySpecSet - Products []catalog.Product - SpecValues []catalog.SpecValue + SpecSearchProfiles map[string]catalogfilter.Profile + Version string + DatasetVersion string + SourceURL string + SHA256 string + Dictionaries []catalog.DictionaryEntry + Categories []catalog.Category + Specs []catalog.SpecDefinition + SpecSets []catalog.SpecSet + CategorySpecSets []InstallationCategorySpecSet + Products []catalog.Product + SpecValues []catalog.SpecValue } type InstallationCategorySpecSet struct { @@ -522,8 +524,18 @@ func (s *Store) CompleteInstallation(ctx context.Context, installation Installat spec.Status, 1, ownerID, ownerID, now, now); err != nil { return identity.User{}, fmt.Errorf("install sample specification %q: %w", spec.ID, err) } + if profile, ok := installation.SampleData.SpecSearchProfiles[spec.ID]; ok { + if err := installSpecSearchProfileTx(ctx, tx, ownerID, spec, profile, now); err != nil { + return identity.User{}, err + } + } seenSpecIDs[spec.ID] = struct{}{} } + for id := range installation.SampleData.SpecSearchProfiles { + if _, ok := seenSpecIDs[id]; !ok { + return identity.User{}, catalog.ErrInvalidSpec + } + } seenSpecSetIDs := make(map[string]struct{}, len(installation.SampleData.SpecSets)) for index := range installation.SampleData.SpecSets { set := installation.SampleData.SpecSets[index] @@ -673,6 +685,17 @@ func (s *Store) CompleteInstallation(ctx context.Context, installation Installat } seenSpecValues[key] = struct{}{} } + for _, spec := range installation.SampleData.Specs { + if profile, ok := installation.SampleData.SpecSearchProfiles[spec.ID]; ok && profile.Kind == "numeric" { + id, err := randomID("snw") + if err != nil { + return identity.User{}, err + } + if err = queueSpecNormalizationWorkTx(ctx, tx, ownerID, id, spec.ID, 1, spec.SemanticVer, true, now); err != nil { + return identity.User{}, err + } + } + } } details := map[string]any{} if installation.SampleData != nil { diff --git a/internal/storage/sqlite/website_store.go b/internal/storage/sqlite/website_store.go index 2399253..5c62fd6 100644 --- a/internal/storage/sqlite/website_store.go +++ b/internal/storage/sqlite/website_store.go @@ -390,3 +390,8 @@ func (s *Store) RestoreWebsiteVersion(ctx context.Context, actorID string, expec } return s.WebsiteState(ctx) } + +func (s *Store) ActiveWebsiteLocalization(ctx context.Context) (site.WebsiteLocalization, error) { + state, err := s.WebsiteState(ctx) + return state.ActiveLocalization, err +} diff --git a/internal/webapp/aggregates_test.go b/internal/webapp/aggregates_test.go index fb2715d..f87ad1e 100644 --- a/internal/webapp/aggregates_test.go +++ b/internal/webapp/aggregates_test.go @@ -113,7 +113,13 @@ func TestCategoryListingProfileActivatesOnlyWithWebsitePublishAndKeepsEmptyCateg t.Fatal(err) } afterBody := responseBody(t, after) - if strings.Index(afterBody, "Output current") < 0 || strings.Index(afterBody, "Input voltage") < 0 || strings.Index(afterBody, "Output current") > strings.Index(afterBody, "Input voltage") { + afterHeader := afterBody + if start := strings.Index(afterBody, `= 0 { + if end := strings.Index(afterBody[start:], ""); end >= 0 { + afterHeader = afterBody[start : start+end] + } + } + if strings.Index(afterHeader, "Output current") < 0 || strings.Index(afterHeader, "Input voltage") < 0 || strings.Index(afterHeader, "Output current") > strings.Index(afterHeader, "Input voltage") { t.Fatalf("published listing profile not active: %s", afterBody) } if strings.Contains(afterBody, ">Name") { diff --git a/internal/webapp/catalog_filters.go b/internal/webapp/catalog_filters.go new file mode 100644 index 0000000..b6dc304 --- /dev/null +++ b/internal/webapp/catalog_filters.go @@ -0,0 +1,300 @@ +package webapp + +import ( + "fmt" + "net/url" + "prods/internal/catalogfilter" + "prods/internal/localization" + "prods/internal/publishing" + "prods/internal/specnumeric" + "slices" + "sort" + "strings" +) + +type catalogFilterControl struct { + Hidden []catalogHiddenField + ClearURL string + Field, Label, Kind, Operator, Value, Lower, Upper, Unit, Error string + Operators []catalogFilterOperator + Options []catalogFilterOption + Selected []string +} +type catalogFilterOperator struct { + Value, Label string + Selected bool +} +type catalogFilterOption struct { + Value, Label string + Selected bool +} +type catalogHiddenField struct{ Name, Value string } + +func filterField(key string) (string, string, bool) { + if !strings.HasPrefix(key, "f.") { + return "", "", false + } + key = strings.TrimPrefix(key, "f.") + separator := strings.LastIndexByte(key, '.') + if separator <= 0 { + return "", "", false + } + return key[:separator], key[separator+1:], true +} +func parseCatalogFilters(values url.Values) ([]catalogfilter.Clause, error) { + grouped := map[string]url.Values{} + invalid := func(field, message string) ([]catalogfilter.Clause, error) { + return nil, &publishing.CatalogFilterError{Field: field, Message: message} + } + for key, value := range values { + if !strings.HasPrefix(key, "f.") { + continue + } + field, property, ok := filterField(key) + if !ok || !slices.Contains([]string{"op", "value", "values", "lower", "upper", "unit"}, property) { + return invalid(field, "unknown filter parameter") + } + if property != "values" && len(value) != 1 { + return invalid(field, "duplicate filter parameter") + } + for _, v := range value { + if len(v) > 512 { + return invalid(field, "value exceeds 512 bytes") + } + } + if grouped[field] == nil { + grouped[field] = url.Values{} + } + grouped[field][property] = value + } + fields := make([]string, 0, len(grouped)) + for field := range grouped { + fields = append(fields, field) + } + sort.Strings(fields) + clauses := []catalogfilter.Clause{} + specs := 0 + for _, field := range fields { + v := grouped[field] + selected := []string{} + for _, value := range append(slices.Clone(v["values"]), v["value"]...) { + if strings.TrimSpace(value) != "" { + selected = append(selected, value) + } + } + if len(v["values"]) > 20 || len(selected) > 20 { + return invalid(field, "at most twenty values are allowed") + } + lower, upper := strings.TrimSpace(v.Get("lower")), strings.TrimSpace(v.Get("upper")) + if len(selected) == 0 && lower == "" && upper == "" { + continue + } + clause := catalogfilter.Clause{Field: field, Operator: v.Get("op"), Values: selected} + if clause.Operator == "" { + return invalid(field, "operator required") + } + if clause.Operator != "equals" && clause.Operator != "contains" { + if !strings.HasPrefix(field, "spec:") { + return invalid(field, "unsupported text operator") + } + predicate := specnumeric.Predicate{SpecID: strings.TrimPrefix(field, "spec:"), Operator: specnumeric.Operator(clause.Operator), Unit: v.Get("unit")} + decimal := func(raw string) (*specnumeric.Decimal, error) { + if raw == "" { + return nil, nil + } + value, err := specnumeric.ParseDecimal(raw) + return &value, err + } + var err error + if len(selected) > 1 { + return invalid(field, "numeric condition requires one operand") + } + if len(selected) == 1 { + predicate.Value, err = decimal(selected[0]) + if err != nil { + return invalid(field, "invalid number") + } + } + predicate.Lower, err = decimal(lower) + if err != nil { + return invalid(field, "invalid lower bound") + } + predicate.Upper, err = decimal(upper) + if err != nil { + return invalid(field, "invalid upper bound") + } + clause.Numeric = &predicate + clause.Values = nil + } else if lower != "" || upper != "" || v.Get("unit") != "" { + return invalid(field, "text condition cannot use numeric operands") + } + if strings.HasPrefix(field, "spec:") { + specs++ + if specs > 16 { + return invalid(field, "at most sixteen specification conditions are allowed") + } + } + clauses = append(clauses, clause) + } + // Preserve the existing stable-ID URL parameters as conditions. + for _, field := range []string{"manufacturer", "brand", "category"} { + if value := strings.TrimSpace(values.Get(field + "_id")); value != "" { + clauses = append(clauses, catalogfilter.Clause{Field: field, Operator: "equals", Values: []string{value}}) + } + } + return clauses, nil +} + +func catalogFilterForm(snapshot publishing.CatalogSnapshot, values url.Values) []catalogFilterControl { + text := localization.For(snapshot.Locale) + controls := []catalogFilterControl{} + labels := map[string]string{"manufacturer": text.Manufacturer, "brand": text.Brand, "category": text.Category, "application": text.Applications, "lifecycle": text.Lifecycle, "package": text.Package} + for _, view := range snapshot.ScopeViews { + for _, spec := range view.ApplicableSpecifications { + labels["spec:"+spec.ID] = spec.Name + } + } + definitions := slices.Clone(snapshot.Definitions) + known := map[string]bool{} + for _, d := range definitions { + known[d.Field] = true + } + unknown := map[string]bool{} + for key := range values { + field, _, ok := filterField(key) + if ok && !known[field] { + unknown[field] = true + } + } + keys := []string{} + for field := range unknown { + keys = append(keys, field) + } + sort.Strings(keys) + for _, field := range keys { + definitions = append(definitions, publishing.PublicFilterDefinition{Field: field, Profile: catalogfilter.DefaultTextProfile()}) + } + for _, d := range definitions { + prefix := "f." + d.Field + "." + control := catalogFilterControl{Field: d.Field, Label: labels[d.Field], Kind: d.Profile.Kind, Operator: values.Get(prefix + "op"), Value: values.Get(prefix + "value"), Lower: values.Get(prefix + "lower"), Upper: values.Get(prefix + "upper"), Unit: values.Get(prefix + "unit"), Selected: slices.Clone(values[prefix+"values"])} + if control.Label == "" { + control.Label = d.Field + } + if slices.Contains([]string{"manufacturer", "brand", "category"}, d.Field) { + if legacy := values.Get(d.Field + "_id"); legacy != "" { + control.Selected = append(control.Selected, legacy) + } + } + if !known[d.Field] { + control.Error = text.FilterUnavailable + } + if control.Operator == "" && len(d.Profile.Operators) > 0 { + control.Operator = d.Profile.Operators[0] + } + operators := slices.Clone(d.Profile.Operators) + if control.Operator != "" && !slices.Contains(operators, control.Operator) { + operators = append(operators, control.Operator) + } + for _, op := range operators { + label := op + switch op { + case "equals": + label = text.FilterEquals + case "contains": + label = text.FilterContains + case "contains_point": + label = text.FilterSupports + case "contains_range": + label = text.FilterCovers + case "between": + label = text.FilterBetween + } + control.Operators = append(control.Operators, catalogFilterOperator{Value: op, Label: label, Selected: op == control.Operator}) + } + if d.Profile.Numeric != nil && control.Unit == "" { + control.Unit = d.Profile.Numeric.CanonicalUnit + } + options := slices.Clone(snapshot.Options[d.Field]) + selected := append(slices.Clone(control.Selected), control.Value) + for _, value := range selected { + if value == "" { + continue + } + found := false + for _, option := range options { + if option.Value == value { + found = true + } + } + if !found { + options = append(options, publishing.CatalogFilterOption{Value: value, Label: value}) + } + } + for _, option := range options { + control.Options = append(control.Options, catalogFilterOption{Value: option.Value, Label: option.Label, Selected: slices.Contains(selected, option.Value)}) + } + for _, hidden := range catalogFilterHiddenFields(values) { + field, _, isFilter := filterField(hidden.Name) + if !(isFilter && field == d.Field) && hidden.Name != d.Field+"_id" { + control.Hidden = append(control.Hidden, hidden) + } + } + clear := url.Values{} + for key, items := range values { + field, _, isFilter := filterField(key) + if key != "page" && !(isFilter && field == d.Field) && key != d.Field+"_id" { + clear[key] = slices.Clone(items) + } + } + control.ClearURL = "?" + clear.Encode() + controls = append(controls, control) + } + return controls +} +func validateCatalogFilterFields(snapshot publishing.CatalogSnapshot, values url.Values) error { + known := map[string]bool{} + for _, d := range snapshot.Definitions { + known[d.Field] = true + } + keys := []string{} + for key := range values { + keys = append(keys, key) + } + sort.Strings(keys) + for _, key := range keys { + if field, _, ok := filterField(key); ok && !known[field] { + return &publishing.CatalogFilterError{Field: field, Message: "field is not applicable with one published meaning in this scope"} + } + } + return nil +} +func catalogFilterHiddenFields(values url.Values) []catalogHiddenField { + active := map[string]bool{} + for key, items := range values { + if field, property, ok := filterField(key); ok && slices.Contains([]string{"value", "values", "lower", "upper"}, property) { + for _, value := range items { + if strings.TrimSpace(value) != "" { + active[field] = true + } + } + } + } + keys := []string{} + for key := range values { + field, _, isFilter := filterField(key) + if (isFilter && active[field]) || slices.Contains([]string{"manufacturer_id", "brand_id", "category_id", "page_size", "sort", "direction"}, key) { + keys = append(keys, key) + } + } + sort.Strings(keys) + result := []catalogHiddenField{} + for _, key := range keys { + for _, value := range values[key] { + result = append(result, catalogHiddenField{Name: key, Value: value}) + } + } + return result +} +func catalogFilterErrorLabel(err error, text localization.Messages) string { + return fmt.Sprintf("%s: %s", text.FilterError, err) +} diff --git a/internal/webapp/catalog_filters_test.go b/internal/webapp/catalog_filters_test.go new file mode 100644 index 0000000..6387567 --- /dev/null +++ b/internal/webapp/catalog_filters_test.go @@ -0,0 +1,199 @@ +package webapp + +import ( + "bytes" + "fmt" + dom "golang.org/x/net/html" + "html" + tmpl "html/template" + "net/http" + "net/http/httptest" + "net/url" + "prods/internal/catalogfilter" + "prods/internal/localization" + "prods/internal/publishing" + "prods/internal/site" + "prods/internal/specnumeric" + "strings" + "testing" +) + +func TestCatalogCustomSpecWithPeriodCanBeSubmitted(t *testing.T) { + v := publishing.PublicView{ID: "p", PartNumber: "ABC", Language: "en-US", SupportedLocales: []string{"en-US"}, ApplicableSpecifications: []publishing.ApplicableSpecification{{ID: "spc.custom", Name: "Custom"}}, Specifications: []publishing.Specification{{ID: "spc.custom", RawValue: "SPI"}}, FilterDefinitions: []publishing.PublicFilterDefinition{{Field: "spec:spc.custom", SemanticVersion: 1, ProfileRevision: 1, Profile: catalogfilter.DefaultTextProfile()}}} + snapshot, err := publishing.AdmitCatalogViews(t.Context(), []publishing.PublicView{v}, site.DefaultConfiguration(), publishing.CatalogQuery{Scope: catalogfilter.Scope{Kind: "all"}}) + if err != nil { + t.Fatal(err) + } + var body bytes.Buffer + template, err := tmpl.New("filters").ParseFS(content, "templates/catalog_filters.tmpl") + if err != nil { + t.Fatal(err) + } + page := catalogPage{publicPage: publicPage{Text: localization.For("en-US"), Language: "en-US"}, FormAction: "/catalog", FilterControls: catalogFilterForm(snapshot, nil)} + if err := template.ExecuteTemplate(&body, "catalog-filter-panel", page); err != nil { + t.Fatal(err) + } + if !strings.Contains(body.String(), `name="f.spec:spc.custom.value"`) { + t.Fatal("custom field missing from rendered form") + } + clauses, err := parseCatalogFilters(url.Values{"f.spec:spc.custom.op": {"contains"}, "f.spec:spc.custom.value": {"SPI"}}) + if err != nil { + t.Fatal(err) + } + result, err := publishing.AdmitCatalogViews(t.Context(), []publishing.PublicView{v}, site.DefaultConfiguration(), publishing.CatalogQuery{Scope: catalogfilter.Scope{Kind: "all"}, Clauses: clauses}) + if err != nil || len(result.Views) != 1 { + t.Fatalf("custom field submission: %+v %v", result.Views, err) + } +} + +func TestCatalogFieldFormPreservesOtherDottedSpec(t *testing.T) { + snapshot := publishing.CatalogSnapshot{Locale: "en-US", Definitions: []publishing.PublicFilterDefinition{{Field: "spec:spc", Profile: catalogfilter.DefaultTextProfile()}, {Field: "spec:spc.custom", Profile: catalogfilter.DefaultTextProfile()}}} + values := url.Values{"f.spec:spc.custom.op": {"contains"}, "f.spec:spc.custom.value": {"SPI"}} + control := catalogFilterForm(snapshot, values)[0] + submission := url.Values{} + for _, hidden := range control.Hidden { + submission.Add(hidden.Name, hidden.Value) + } + if submission.Get("f.spec:spc.custom.value") != "SPI" { + t.Fatalf("other custom condition lost: %v", submission) + } + clear, err := url.Parse(control.ClearURL) + if err != nil || clear.Query().Get("f.spec:spc.custom.value") != "SPI" { + t.Fatalf("clear removed another condition: %s %v", control.ClearURL, err) + } +} + +func TestPublicCatalogFilterFormWorksWithoutJavaScript(t *testing.T) { + f, server, client, _ := numericHTTPFixture(t) + p, err := f.store.Product(t.Context(), f.productID) + if err != nil { + t.Fatal(err) + } + p.PackageFormFactor = "QFN-32" + if _, err = f.store.UpdateProduct(t.Context(), f.actor, p.Revision, p); err != nil { + t.Fatal(err) + } + f.drain(t) + c := f.view(t) + field := "spec:" + c.NumericDefinitions[0].SpecID + values := url.Values{"f.package.op": {"contains"}, "f.package.value": {"QFN"}, "f." + field + ".op": {"contains_point"}, "f." + field + ".value": {"4"}, "f." + field + ".unit": {"V"}, "page_size": {"1"}} + response, err := client.Get(server.URL + "/catalog?" + values.Encode()) + if err != nil { + t.Fatal(err) + } + body := responseBody(t, response) + if response.StatusCode != http.StatusOK || !strings.Contains(body, `name="f.`+field+`.value"`) || !strings.Contains(body, `name="f.package.value"`) || !strings.Contains(body, "NUMERIC-PUBLIC") || !strings.Contains(body, `method="get"`) { + t.Fatalf("no-JS form status=%d body=%s", response.StatusCode, body) + } + values.Set("f."+field+".value", "8") + response, err = client.Get(server.URL + "/catalog?" + values.Encode()) + if err != nil { + t.Fatal(err) + } + body = responseBody(t, response) + if response.StatusCode != http.StatusOK || strings.Contains(body, `data-product-row="`+f.productID+`"`) || !strings.Contains(body, `value="8"`) { + t.Fatalf("numeric condition not applied: %d %s", response.StatusCode, body) + } + req := httptest.NewRequest("GET", "/catalog?"+values.Encode(), nil) + next, err := url.Parse(listingPageURL(req, 2)) + if err != nil { + t.Fatal(err) + } + if next.Query().Get("f."+field+".value") != "8" || next.Query().Get("f.package.value") != "QFN" { + t.Fatalf("pagination lost conditions: %s", next) + } +} + +func TestUnknownCatalogFilterPreservesQuery(t *testing.T) { + _, server, client, _ := numericHTTPFixture(t) + raw := "KEEP & edits" + values := url.Values{"q": {raw}, "f.spec:unknown.op": {"contains"}, "f.spec:unknown.value": {"original"}} + response, err := client.Get(server.URL + "/catalog?" + values.Encode()) + if err != nil { + t.Fatal(err) + } + body := responseBody(t, response) + if response.StatusCode != http.StatusUnprocessableEntity || !strings.Contains(body, html.EscapeString(raw)) || !strings.Contains(body, "spec:unknown") || !strings.Contains(body, "original") { + t.Fatalf("unknown condition lost input: %d %s", response.StatusCode, body) + } +} + +func TestCatalogLargeFieldPanelSubmitsBoundedConditions(t *testing.T) { + snapshot := publishing.CatalogSnapshot{Locale: "en-US"} + var profile specnumeric.Profile + for _, p := range specnumeric.SupportedProfiles() { + if p.Quantity == "voltage" && p.SemanticRole == specnumeric.RoleOperatingSupport { + profile = p + break + } + } + for i := range 34 { + id := fmt.Sprintf("spc_%032d", i) + snapshot.Definitions = append(snapshot.Definitions, publishing.PublicFilterDefinition{Field: "spec:" + id, Profile: catalogfilter.NumericProfile(profile)}) + } + values := url.Values{"q": {"KEEP"}, "f.package.op": {"contains"}, "f.package.value": {"QFN"}, "sort": {"name"}, "direction": {"desc"}, "page_size": {"10"}, "page": {"2"}} + page := catalogPage{publicPage: publicPage{Text: localization.For("en-US"), Language: "en-US"}, Query: "KEEP", FormAction: "/catalog", FilterControls: catalogFilterForm(snapshot, values), FilterHidden: catalogFilterHiddenFields(values)} + template, err := tmpl.New("filters").ParseFS(content, "templates/catalog_filters.tmpl") + if err != nil { + t.Fatal(err) + } + var body bytes.Buffer + if err = template.ExecuteTemplate(&body, "catalog-filter-panel", page); err != nil { + t.Fatal(err) + } + tree, err := dom.Parse(&body) + if err != nil { + t.Fatal(err) + } + attr := func(node *dom.Node, key string) string { + for _, a := range node.Attr { + if a.Key == key { + return a.Val + } + } + return "" + } + var visit func(*dom.Node) + forms := 0 + visit = func(node *dom.Node) { + if node.Type == dom.ElementNode && node.Data == "form" { + forms++ + submission := url.Values{} + var controls func(*dom.Node) + controls = func(n *dom.Node) { + name := attr(n, "name") + if n.Data == "input" && name != "" { + submission.Add(name, attr(n, "value")) + } + if n.Data == "select" && name != "" { + for child := n.FirstChild; child != nil; child = child.NextSibling { + if child.Type == dom.ElementNode && child.Data == "option" { + submission.Add(name, attr(child, "value")) + break + } + } + } + for c := n.FirstChild; c != nil; c = c.NextSibling { + controls(c) + } + } + controls(node) + if len(submission.Encode()) > 8192 { + t.Fatalf("34-field native form exceeds request budget: %d bytes", len(submission.Encode())) + } + if submission.Get("q") != "KEEP" || submission.Get("f.package.value") != "QFN" { + t.Fatalf("form lost existing conditions: %v", submission) + } + if submission.Get("sort") != "name" || submission.Get("direction") != "desc" || submission.Get("page_size") != "10" || submission.Has("page") { + t.Fatalf("form lost sorting or did not reset pagination: %v", submission) + } + } + for c := node.FirstChild; c != nil; c = c.NextSibling { + visit(c) + } + } + visit(tree) + if forms == 0 { + t.Fatal("no usable native forms") + } +} diff --git a/internal/webapp/catalog_listing.go b/internal/webapp/catalog_listing.go index 1699c55..d802b8d 100644 --- a/internal/webapp/catalog_listing.go +++ b/internal/webapp/catalog_listing.go @@ -4,6 +4,7 @@ import ( "crypto/sha256" "database/sql" "encoding/hex" + "encoding/json" "errors" "fmt" "net/http" @@ -13,13 +14,18 @@ import ( "strings" "prods/internal/catalog" + "prods/internal/catalogfilter" "prods/internal/cataloglisting" "prods/internal/publishing" + "prods/internal/site" ) const publicListingPageSize = 24 type catalogPage struct { + FilterControls []catalogFilterControl + FilterError string + FilterHidden []catalogHiddenField publicPage Title string Query string @@ -51,109 +57,147 @@ type publicCategoryLink struct { } func (s *Server) renderCatalogSearch(w http.ResponseWriter, r *http.Request) { - query := r.URL.Query().Get("q") - filters := publicSearchFilters{ - ManufacturerID: strings.TrimSpace(r.URL.Query().Get("manufacturer_id")), - BrandID: strings.TrimSpace(r.URL.Query().Get("brand_id")), - CategoryID: strings.TrimSpace(r.URL.Query().Get("category_id")), - } - allViews, err := s.publicViews(r.Context()) - if err != nil { - s.internalError(w, err) - return - } - views := allViews - if strings.TrimSpace(query) != "" && s.publisher != nil { - views, err = s.publisher.Search(r.Context(), query) - } - if err != nil { - s.internalError(w, err) - return - } - if strings.TrimSpace(query) != "" && s.publisher == nil { - views = fallbackPublicSearch(views, query) - } - views = filterPublicViews(views, filters) - presentation, err := s.currentPublicPage(r, views) - if err != nil { - s.writePublicPageError(w, err) + s.renderFilteredCatalog(w, r, "") +} +func (s *Server) renderCatalogAggregate(w http.ResponseWriter, r *http.Request, kind string) { + s.renderFilteredCatalog(w, r, kind) +} + +func (s *Server) renderFilteredCatalog(w http.ResponseWriter, r *http.Request, kind string) { + if len(r.URL.RawQuery) > 8192 { + http.Error(w, "catalog query exceeds 8192 bytes", http.StatusBadRequest) return } - scope := cataloglisting.Scope{Kind: cataloglisting.ScopeAll} + values := r.URL.Query() + query := values.Get("q") + scope := catalogfilter.Scope{Kind: "all", Query: query} if strings.TrimSpace(query) != "" { - scope = cataloglisting.Scope{Kind: cataloglisting.ScopeSearch, Query: query} + scope.Kind = "search" + } + var categories []catalog.Category + var err error + title := "" + scopeURL := "" + if kind != "" { + scope.Kind = kind + if kind == "category" { + categories, err = s.store.ListCategories(r.Context()) + if err != nil { + s.internalError(w, err) + return + } + urls := categoryURLs(categories) + for _, category := range categories { + if category.Status == catalog.EntryActive && urls[category.ID] == r.URL.Path { + scope.ID = category.ID + title = category.Name + break + } + } + if scope.ID == "" { + http.NotFound(w, r) + return + } + } else { + scopeURL = strings.TrimRight(s.config.BaseURL, "/") + r.URL.Path + } } - listing, err := cataloglisting.Resolve(views, presentation.Site, catalogListingRequest(r, scope, presentation.Language)) - if err != nil { - http.Error(w, "invalid catalog listing request", http.StatusBadRequest) - return + clauses, filterErr := parseCatalogFilters(values) + request := publishing.CatalogQuery{Scope: scope, ScopeURL: scopeURL, Locale: values.Get("lang"), Clauses: clauses} + var snapshot publishing.CatalogSnapshot + if s.publisher != nil { + snapshot, err = s.publisher.AdmitCatalog(r.Context(), request) + } else { + var views []publishing.PublicView + views, err = s.publicViews(r.Context()) + if err == nil { + configuration := site.DefaultConfiguration() + if len(views) > 0 { + configuration = views[0].Site + } + snapshot, err = publishing.AdmitCatalogViews(r.Context(), views, configuration, request) + } } - preparePublicListing(&listing, presentation) - manufacturerOptions, brandOptions, categoryOptions := publicSearchFilterOptions(allViews, filters) - categories, categoryErr := s.store.ListCategories(r.Context()) - if categoryErr != nil && !errors.Is(categoryErr, sql.ErrNoRows) { - s.internalError(w, categoryErr) + var conditionErr *publishing.CatalogFilterError + if errors.As(err, &conditionErr) { + filterErr = err + } else if errors.Is(err, publishing.ErrCatalogScopeNotFound) { + http.NotFound(w, r) + return + } else if err != nil { + s.writePublicPageError(w, err) return } - categoryLinks, _, _, _ := publicCategoryNavigation(categories, allViews, "") - data := catalogPage{ - publicPage: presentation, Title: presentation.Text.Catalog, Query: query, Listing: listing, - NoResults: strings.TrimSpace(query) != "" && listing.Total == 0, - RequestURL: withLanguage("/rfq?query="+url.QueryEscape(query), presentation.Language), - FormAction: r.URL.Path, ShowFilters: true, ManufacturerID: filters.ManufacturerID, BrandID: filters.BrandID, CategoryID: filters.CategoryID, - ManufacturerOptions: manufacturerOptions, BrandOptions: brandOptions, CategoryOptions: categoryOptions, - CategoryLinks: categoryLinks, - } - if strings.TrimSpace(query) != "" || filters.ManufacturerID != "" || filters.BrandID != "" || filters.CategoryID != "" || - strings.TrimSpace(r.URL.Query().Get("sort")) != "" || strings.TrimSpace(r.URL.Query().Get("direction")) != "" || - strings.TrimSpace(r.URL.Query().Get("page")) != "" || strings.TrimSpace(r.URL.Query().Get("page_size")) != "" { - data.ClearURL = withLanguage(r.URL.Path, presentation.Language) + if filterErr == nil { + filterErr = validateCatalogFilterFields(snapshot, values) } - setCatalogPagination(r, &data) - w.Header().Set("Content-Language", presentation.Language) - s.render(w, "catalog-listing", data) -} - -func (s *Server) renderCatalogAggregate(w http.ResponseWriter, r *http.Request, kind string) { - allViews, err := s.publicViews(r.Context()) + presentation, err := s.currentPublicPage(r, []publishing.PublicView{snapshot.Presentation}) if err != nil { - s.internalError(w, err) + s.writePublicPageError(w, err) return } - targetURL := strings.TrimRight(s.config.BaseURL, "/") + r.URL.Path - scope, title, categories, err := s.resolvePublicAggregate(r, kind, targetURL, allViews) - if err != nil { - if errors.Is(err, errPublicAggregateNotFound) { - http.NotFound(w, r) - return + if kind == "" { + title = presentation.Text.Catalog + } else if title == "" && len(snapshot.ScopeViews) > 0 { + v := snapshot.ScopeViews[0] + switch kind { + case "manufacturer": + title = v.Manufacturer + case "brand": + title = v.Brand + case "application": + for _, a := range v.Applications { + if a.ID == snapshot.Scope.ID { + title = a.Name + } + } } - s.internalError(w, err) - return } - presentation, err := s.currentPublicPage(r, allViews) - if err != nil { - s.writePublicPageError(w, err) - return + listingScope := cataloglisting.Scope{Kind: cataloglisting.ScopeKind(snapshot.Scope.Kind), ID: snapshot.Scope.ID, Query: snapshot.Scope.Query} + if filterErr != nil { + snapshot.Views = nil } - listing, err := cataloglisting.Resolve(allViews, presentation.Site, catalogListingRequest(r, scope, presentation.Language)) + listing, err := cataloglisting.ResolveSnapshot(snapshot, catalogListingRequest(r, listingScope, presentation.Language)) if err != nil { http.Error(w, "invalid catalog listing request", http.StatusBadRequest) return } preparePublicListing(&listing, presentation) - etag := aggregateListingETag(targetURL, listing, categories) - w.Header().Set("ETag", etag) - w.Header().Set("Cache-Control", "public, max-age=0, must-revalidate") - if r.Header.Get("If-None-Match") == etag { - w.WriteHeader(http.StatusNotModified) - return + data := catalogPage{publicPage: presentation, Title: title, Query: query, Listing: listing, NoResults: filterErr == nil && strings.TrimSpace(query) != "" && listing.Total == 0, RequestURL: withLanguage("/rfq?query="+url.QueryEscape(query), presentation.Language), FormAction: r.URL.Path, ShowFilters: true, FilterControls: catalogFilterForm(snapshot, values), FilterHidden: catalogFilterHiddenFields(values), ClearURL: withLanguage(r.URL.Path, presentation.Language)} + if kind == "" { + if categories == nil { + categories, err = s.store.ListCategories(r.Context()) + if err != nil && !errors.Is(err, sql.ErrNoRows) { + s.internalError(w, err) + return + } + } + data.CategoryLinks, _, _, _ = publicCategoryNavigation(categories, snapshot.AllViews, "") } - data := catalogPage{publicPage: presentation, Title: title, Listing: listing, FormAction: r.URL.Path} if kind == "category" { - _, data.Breadcrumbs, data.ChildCategories, _ = publicCategoryNavigation(categories, allViews, scope.ID) + _, data.Breadcrumbs, data.ChildCategories, _ = publicCategoryNavigation(categories, snapshot.AllViews, scope.ID) } setCatalogPagination(r, &data) w.Header().Set("Content-Language", presentation.Language) + w.Header().Set("Cache-Control", "public, max-age=0, must-revalidate") + if filterErr != nil { + data.FilterError = catalogFilterErrorLabel(filterErr, presentation.Text) + w.WriteHeader(http.StatusUnprocessableEntity) + } else { + material, _ := json.Marshal(struct { + Query string + Snapshot publishing.CatalogSnapshot + Listing cataloglisting.Result + Categories []catalog.Category + }{r.URL.RawQuery, snapshot, listing, categories}) + sum := sha256.Sum256(material) + etag := `"c-` + hex.EncodeToString(sum[:])[:32] + `"` + w.Header().Set("ETag", etag) + if r.Header.Get("If-None-Match") == etag { + w.WriteHeader(http.StatusNotModified) + return + } + } s.render(w, "catalog-listing", data) } diff --git a/internal/webapp/catalog_query_test.go b/internal/webapp/catalog_query_test.go new file mode 100644 index 0000000..8e5b4dd --- /dev/null +++ b/internal/webapp/catalog_query_test.go @@ -0,0 +1,36 @@ +package webapp + +import ( + "prods/internal/catalogfilter" + "prods/internal/publishing" + "testing" +) + +func TestCatalogRevocationRemovesFacetValues(t *testing.T) { + f := newNumericPublicationFixture(t) + p, err := f.store.Product(t.Context(), f.productID) + if err != nil { + t.Fatal(err) + } + p.PackageFormFactor = "UNIQUE-PACKAGE" + if _, err = f.store.UpdateProduct(t.Context(), f.actor, p.Revision, p); err != nil { + t.Fatal(err) + } + f.drain(t) + request := publishing.CatalogQuery{Scope: catalogfilter.Scope{Kind: "all"}} + before, err := f.engine.AdmitCatalog(t.Context(), request) + if err != nil || len(before.Options["package"]) != 1 { + t.Fatalf("before: %+v %v", before.Options, err) + } + p, err = f.store.Product(t.Context(), f.productID) + if err != nil { + t.Fatal(err) + } + if err = f.engine.Revoke(t.Context(), publishing.RevokeRequest{ActorID: f.actor, ProductID: p.ID, ExpectedRevision: p.Revision}); err != nil { + t.Fatal(err) + } + after, err := f.engine.AdmitCatalog(t.Context(), request) + if err != nil || len(after.Views) != 0 || len(after.Options["package"]) != 0 { + t.Fatalf("revoked rows=%d options=%+v err=%v", len(after.Views), after.Options, err) + } +} diff --git a/internal/webapp/installer.go b/internal/webapp/installer.go index bcdf184..3c3e0a2 100644 --- a/internal/webapp/installer.go +++ b/internal/webapp/installer.go @@ -20,6 +20,7 @@ import ( "golang.org/x/text/language" "prods/internal/catalog" + "prods/internal/catalogfilter" "prods/internal/distribution" "prods/internal/identity" "prods/internal/localization" @@ -327,8 +328,12 @@ func (s *InstallerServer) complete(w http.ResponseWriter, r *http.Request) { SourceLocale: source.SourceLocale, Slug: source.Slug, Status: catalog.EntryStatus(source.Status), }) } + specProfiles := map[string]catalogfilter.Profile{} specs := make([]catalog.SpecDefinition, 0, len(item.Data.Specs)) for _, source := range item.Data.Specs { + if source.SearchProfile != nil { + specProfiles[source.ID] = *source.SearchProfile + } specs = append(specs, catalog.SpecDefinition{ ID: source.ID, Name: source.Name, PreferredUnit: source.PreferredUnit, Filterable: source.Filterable, SemanticVer: source.SemanticVersion, Status: catalog.EntryStatus(source.Status), @@ -368,7 +373,7 @@ func (s *InstallerServer) complete(w http.ResponseWriter, r *http.Request) { sampleInstallation = &sqlite.InstallationSampleData{ Version: item.Data.ReleaseVersion, DatasetVersion: item.Data.DatasetVersion, SourceURL: item.SourceURL, SHA256: item.SHA256, Dictionaries: dictionaries, Categories: categories, - Specs: specs, SpecSets: specSets, CategorySpecSets: categorySpecSets, Products: products, SpecValues: specValues, + SpecSearchProfiles: specProfiles, Specs: specs, SpecSets: specSets, CategorySpecSets: categorySpecSets, Products: products, SpecValues: specValues, } } _, err = s.store.CompleteInstallation(r.Context(), sqlite.Installation{ diff --git a/internal/webapp/jobs.go b/internal/webapp/jobs.go index c2777ea..1fe6a59 100644 --- a/internal/webapp/jobs.go +++ b/internal/webapp/jobs.go @@ -35,11 +35,12 @@ func (s *Server) adminJobs(w http.ResponseWriter, r *http.Request) { limit = parsed } jobs, err := s.store.RecentJobs(r.Context(), sqlite.JobKinds{ - Publication: current.can(identity.CapabilityCatalogPublish), - Import: current.can(identity.CapabilityCatalogImport), - Backup: current.can(identity.CapabilitySystemManage), - SMTP: current.can(identity.CapabilityRFQManage), - Search: current.can(identity.CapabilitySystemManage), + Normalization: current.can(identity.CapabilityCatalogView), + Publication: current.can(identity.CapabilityCatalogPublish), + Import: current.can(identity.CapabilityCatalogImport), + Backup: current.can(identity.CapabilitySystemManage), + SMTP: current.can(identity.CapabilityRFQManage), + Search: current.can(identity.CapabilitySystemManage), }, limit) if err != nil { s.internalAPIError(w, r, err) @@ -49,7 +50,7 @@ func (s *Server) adminJobs(w http.ResponseWriter, r *http.Request) { Jobs: jobs, RetryPolicy: jobRetryPolicy{ SafeKinds: []string{"publication", "search_submission"}, - NewOperation: []string{"backup"}, + NewOperation: []string{"backup", "spec_normalization"}, NeverAutomatic: []string{"import_commit", "smtp_unknown", "restore", "migration"}, }, }) diff --git a/internal/webapp/server.go b/internal/webapp/server.go index 224994b..32c95ad 100644 --- a/internal/webapp/server.go +++ b/internal/webapp/server.go @@ -611,6 +611,12 @@ func (s *Server) routes(static fs.FS) { s.mux.HandleFunc("POST /admin/api/products/{id}/spec-values", s.adminSaveSpecValue) s.mux.HandleFunc("POST /admin/api/spec-values/{id}/normalized", s.adminAdoptSpec) s.mux.HandleFunc("PUT /admin/api/specs/{id}/numeric-profile", s.adminConfigureNumericProfile) + s.mux.HandleFunc("GET /admin/api/spec-search-capabilities", s.adminSpecSearchCapabilities) + s.mux.HandleFunc("GET /admin/api/specs/{id}/search-profile", s.adminSpecSearchProfile) + s.mux.HandleFunc("POST /admin/api/specs/{id}/search-profile", s.adminConfigureSpecSearchProfile) + s.mux.HandleFunc("POST /admin/api/specs/{id}/normalization-work", s.adminStartSpecNormalizationWork) + s.mux.HandleFunc("GET /admin/api/spec-normalization-work/{id}", s.adminSpecNormalizationWork) + s.mux.HandleFunc("GET /admin/api/spec-normalization-work/{id}/items", s.adminSpecNormalizationWorkItems) s.mux.HandleFunc("GET /admin/api/spec-values/{id}/normalization-context", s.adminSpecNormalizationContext) s.mux.HandleFunc("POST /admin/api/spec-values/{id}/normalize", s.adminNormalizeSpec) s.mux.HandleFunc("POST /admin/api/spec-values/{id}/normalization/automatic", s.adminSelectAutomaticSpec) @@ -689,7 +695,10 @@ func (s *Server) currentPublicPage(r *http.Request, views []publishing.PublicVie if len(views) > 0 { configuration = views[0].Site epoch = views[0].SiteEpoch - defaultLocale = views[0].Language + defaultLocale = views[0].DefaultLocale + if defaultLocale == "" { + defaultLocale = views[0].Language + } supportedLocales = append([]string(nil), views[0].SupportedLocales...) } else { website, err := s.store.WebsiteState(ctx) diff --git a/internal/webapp/spec_filter_settings.go b/internal/webapp/spec_filter_settings.go new file mode 100644 index 0000000..0e9fe64 --- /dev/null +++ b/internal/webapp/spec_filter_settings.go @@ -0,0 +1,115 @@ +package webapp + +import ( + "net/http" + "strconv" + + "prods/internal/catalog" + "prods/internal/catalogfilter" + "prods/internal/identity" + "prods/internal/specnumeric" +) + +func (s *Server) adminSpecSearchCapabilities(w http.ResponseWriter, r *http.Request) { + if _, ok := s.requireCapability(w, r, identity.CapabilityCatalogView, false); !ok { + return + } + writeJSON(w, http.StatusOK, map[string]any{"version": 1, "text_rule": catalogfilter.TextRule, "kinds": []string{"text", "choice", "multi_choice", "numeric"}, "numeric_profiles": specnumeric.SupportedProfiles()}) +} +func (s *Server) adminSpecSearchProfile(w http.ResponseWriter, r *http.Request) { + if _, ok := s.requireCapability(w, r, identity.CapabilityCatalogView, false); !ok { + return + } + result, err := s.store.SpecSearchProfile(r.Context(), r.PathValue("id")) + if err != nil { + s.writeCatalogError(w, r, err) + return + } + writeJSON(w, http.StatusOK, result) +} +func (s *Server) adminConfigureSpecSearchProfile(w http.ResponseWriter, r *http.Request) { + current, ok := s.requireCapability(w, r, identity.CapabilityCatalogEdit, true) + if !ok { + return + } + var request struct { + ExpectedRevision int64 `json:"expected_revision"` + Filterable bool `json:"filterable"` + Profile catalogfilter.Profile `json:"profile"` + } + if err := decodeJSON(r.Body, &request); err != nil || request.ExpectedRevision < 1 { + s.writeAPIError(w, r, http.StatusBadRequest, apiCodeInvalidJSON) + return + } + result, err := s.store.ConfigureSpecSearchProfile(r.Context(), current.UserID, r.PathValue("id"), request.ExpectedRevision, catalog.SpecSearchProfile{Filterable: request.Filterable, Profile: request.Profile}) + if err != nil { + s.writeCatalogError(w, r, err) + return + } + if s.publisher != nil { + s.publisher.Wake() + } + writeJSON(w, http.StatusOK, result) +} +func (s *Server) adminStartSpecNormalizationWork(w http.ResponseWriter, r *http.Request) { + current, ok := s.requireCapability(w, r, identity.CapabilityCatalogEdit, true) + if !ok { + return + } + var request struct { + ExpectedRevision int64 `json:"expected_revision"` + } + if err := decodeJSON(r.Body, &request); err != nil || request.ExpectedRevision < 1 { + s.writeAPIError(w, r, http.StatusBadRequest, apiCodeInvalidJSON) + return + } + result, err := s.store.StartSpecNormalizationWork(r.Context(), current.UserID, r.PathValue("id"), request.ExpectedRevision) + if err != nil { + s.writeCatalogError(w, r, err) + return + } + if s.publisher != nil { + s.publisher.Wake() + } + writeJSON(w, http.StatusAccepted, result) +} +func (s *Server) adminSpecNormalizationWork(w http.ResponseWriter, r *http.Request) { + if _, ok := s.requireCapability(w, r, identity.CapabilityCatalogView, false); !ok { + return + } + result, err := s.store.SpecNormalizationWork(r.Context(), r.PathValue("id")) + if err != nil { + s.writeCatalogError(w, r, err) + return + } + writeJSON(w, http.StatusOK, result) +} +func (s *Server) adminSpecNormalizationWorkItems(w http.ResponseWriter, r *http.Request) { + if _, ok := s.requireCapability(w, r, identity.CapabilityCatalogView, false); !ok { + return + } + page, size := 1, 50 + for _, entry := range []struct { + key string + target *int + }{{"page", &page}, {"page_size", &size}} { + if raw := r.URL.Query().Get(entry.key); raw != "" { + v, err := strconv.Atoi(raw) + if err != nil || v < 1 || entry.key == "page_size" && v > 100 { + s.writeAPIError(w, r, http.StatusBadRequest, apiCodeValidationFailed) + return + } + *entry.target = v + } + } + if _, err := s.store.SpecNormalizationWork(r.Context(), r.PathValue("id")); err != nil { + s.writeCatalogError(w, r, err) + return + } + items, total, err := s.store.SpecNormalizationWorkItems(r.Context(), r.PathValue("id"), page, size) + if err != nil { + s.writeCatalogError(w, r, err) + return + } + writeJSON(w, http.StatusOK, map[string]any{"items": items, "total": total, "page": page, "page_size": size}) +} diff --git a/internal/webapp/spec_numeric_test.go b/internal/webapp/spec_numeric_test.go index 24756be..023a59d 100644 --- a/internal/webapp/spec_numeric_test.go +++ b/internal/webapp/spec_numeric_test.go @@ -39,6 +39,18 @@ func TestNumericCommandUsesServerValidatedAdoption(t *testing.T) { t.Fatalf("client trust markers status=%d", response.StatusCode) } } + +func TestSpecSearchSettingsRequireSession(t *testing.T) { + _, server, _, _ := numericHTTPFixture(t) + response, err := http.Get(server.URL + "/admin/api/spec-search-capabilities") + if err != nil { + t.Fatal(err) + } + defer response.Body.Close() + if response.StatusCode != http.StatusUnauthorized { + t.Fatalf("settings without session: %d", response.StatusCode) + } +} func TestNumericCommandAdoptsValidatedValue(t *testing.T) { f, server, client, csrf := numericHTTPFixture(t) response, err := client.Get(server.URL + "/admin/api/spec-values/" + f.valueID + "/normalization-context") diff --git a/internal/webapp/static/admin/admin.js b/internal/webapp/static/admin/admin.js index 282ee73..12e30dd 100644 --- a/internal/webapp/static/admin/admin.js +++ b/internal/webapp/static/admin/admin.js @@ -1,12 +1,12 @@ -var EU = (e, t) => () => { +var MU = (e, t) => () => { try { return t || e((t = { exports: {} }).exports, t), t.exports; } catch (n) { throw t = 0, n; } }; -var sbe = EU((Ci, $i) => { - function RU(e, t) { +var Sbe = MU(($i, wi) => { + function AU(e, t) { for (var n = 0; n < t.length; n++) { const r = t[n]; if (typeof r != "string" && !Array.isArray(r)) { @@ -22,11 +22,11 @@ var sbe = EU((Ci, $i) => { } return Object.freeze(Object.defineProperty(e, Symbol.toStringTag, { value: "Module" })); } - var F_ = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}; + var X_ = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}; function mo(e) { return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e; } - function PU(e) { + function DU(e) { if (Object.prototype.hasOwnProperty.call(e, "__esModule")) return e; var t = e.default; if (typeof t == "function") { @@ -50,11 +50,11 @@ var sbe = EU((Ci, $i) => { }); }), n; } - var LS = { exports: {} }, Ed = {}; - var B_; - function TU() { - if (B_) return Ed; - B_ = 1; + var qS = { exports: {} }, Rd = {}; + var Q_; + function OU() { + if (Q_) return Rd; + Q_ = 1; var e = /* @__PURE__ */ Symbol.for("react.transitional.element"), t = /* @__PURE__ */ Symbol.for("react.fragment"); function n(r, a, s) { var c = null; @@ -71,20 +71,20 @@ var sbe = EU((Ci, $i) => { props: s }; } - return Ed.Fragment = t, Ed.jsx = n, Ed.jsxs = n, Ed; + return Rd.Fragment = t, Rd.jsx = n, Rd.jsxs = n, Rd; } - var H_; - function NU() { - return H_ || (H_ = 1, LS.exports = TU()), LS.exports; + var Y_; + function LU() { + return Y_ || (Y_ = 1, qS.exports = OU()), qS.exports; } - var _ = NU(), kS = { exports: {} }, Ut = {}; - var U_; - function _U() { - if (U_) return Ut; - U_ = 1; + var P = LU(), WS = { exports: {} }, qt = {}; + var Z_; + function kU() { + if (Z_) return qt; + Z_ = 1; var e = /* @__PURE__ */ Symbol.for("react.transitional.element"), t = /* @__PURE__ */ Symbol.for("react.portal"), n = /* @__PURE__ */ Symbol.for("react.fragment"), r = /* @__PURE__ */ Symbol.for("react.strict_mode"), a = /* @__PURE__ */ Symbol.for("react.profiler"), s = /* @__PURE__ */ Symbol.for("react.consumer"), c = /* @__PURE__ */ Symbol.for("react.context"), u = /* @__PURE__ */ Symbol.for("react.forward_ref"), f = /* @__PURE__ */ Symbol.for("react.suspense"), m = /* @__PURE__ */ Symbol.for("react.memo"), p = /* @__PURE__ */ Symbol.for("react.lazy"), g = /* @__PURE__ */ Symbol.for("react.activity"), v = /* @__PURE__ */ Symbol.for("react.view_transition"), y = Symbol.iterator; - function b(k) { - return k === null || typeof k != "object" ? null : (k = y && k[y] || k["@@iterator"], typeof k == "function" ? k : null); + function b(L) { + return L === null || typeof L != "object" ? null : (L = y && L[y] || L["@@iterator"], typeof L == "function" ? L : null); } var S = { isMounted: function() { @@ -97,400 +97,400 @@ var sbe = EU((Ci, $i) => { enqueueSetState: function() { } }, C = Object.assign, E = {}; - function R(k, B, J) { - this.props = k, this.context = B, this.refs = E, this.updater = J || S; + function R(L, j, Q) { + this.props = L, this.context = j, this.refs = E, this.updater = Q || S; } - R.prototype.isReactComponent = {}, R.prototype.setState = function(k, B) { - if (typeof k != "object" && typeof k != "function" && k != null) + R.prototype.isReactComponent = {}, R.prototype.setState = function(L, j) { + if (typeof L != "object" && typeof L != "function" && L != null) throw Error( "takes an object of state variables to update or a function which returns an object of state variables." ); - this.updater.enqueueSetState(this, k, B, "setState"); - }, R.prototype.forceUpdate = function(k) { - this.updater.enqueueForceUpdate(this, k, "forceUpdate"); + this.updater.enqueueSetState(this, L, j, "setState"); + }, R.prototype.forceUpdate = function(L) { + this.updater.enqueueForceUpdate(this, L, "forceUpdate"); }; function $() { } $.prototype = R.prototype; - function M(k, B, J) { - this.props = k, this.context = B, this.refs = E, this.updater = J || S; + function z(L, j, Q) { + this.props = L, this.context = j, this.refs = E, this.updater = Q || S; } - var I = M.prototype = new $(); - I.constructor = M, C(I, R.prototype), I.isPureReactComponent = !0; + var I = z.prototype = new $(); + I.constructor = z, C(I, R.prototype), I.isPureReactComponent = !0; var D = Array.isArray; - function N() { + function _() { } - var P = { H: null, A: null, T: null, S: null }, T = Object.prototype.hasOwnProperty; - function A(k, B, J) { - var re = J.ref; + var T = { H: null, A: null, T: null, S: null }, N = Object.prototype.hasOwnProperty; + function A(L, j, Q) { + var te = Q.ref; return { $$typeof: e, - type: k, - key: B, - ref: re !== void 0 ? re : null, - props: J + type: L, + key: j, + ref: te !== void 0 ? te : null, + props: Q }; } - function z(k, B) { - return A(k.type, B, k.props); + function M(L, j) { + return A(L.type, j, L.props); } - function O(k) { - return typeof k == "object" && k !== null && k.$$typeof === e; + function O(L) { + return typeof L == "object" && L !== null && L.$$typeof === e; } - function L(k) { - var B = { "=": "=0", ":": "=2" }; - return "$" + k.replace(/[=:]/g, function(J) { - return B[J]; + function k(L) { + var j = { "=": "=0", ":": "=2" }; + return "$" + L.replace(/[=:]/g, function(Q) { + return j[Q]; }); } var F = /\/+/g; - function U(k, B) { - return typeof k == "object" && k !== null && k.key != null ? L("" + k.key) : B.toString(36); + function q(L, j) { + return typeof L == "object" && L !== null && L.key != null ? k("" + L.key) : j.toString(36); } - function H(k) { - switch (k.status) { + function U(L) { + switch (L.status) { case "fulfilled": - return k.value; + return L.value; case "rejected": - throw k.reason; + throw L.reason; default: - switch (typeof k.status == "string" ? k.then(N, N) : (k.status = "pending", k.then( - function(B) { - k.status === "pending" && (k.status = "fulfilled", k.value = B); + switch (typeof L.status == "string" ? L.then(_, _) : (L.status = "pending", L.then( + function(j) { + L.status === "pending" && (L.status = "fulfilled", L.value = j); }, - function(B) { - k.status === "pending" && (k.status = "rejected", k.reason = B); + function(j) { + L.status === "pending" && (L.status = "rejected", L.reason = j); } - )), k.status) { + )), L.status) { case "fulfilled": - return k.value; + return L.value; case "rejected": - throw k.reason; + throw L.reason; } } - throw k; + throw L; } - function V(k, B, J, re, le) { - var ie = typeof k; - (ie === "undefined" || ie === "boolean") && (k = null); - var Y = !1; - if (k === null) Y = !0; + function V(L, j, Q, te, ce) { + var ie = typeof L; + (ie === "undefined" || ie === "boolean") && (L = null); + var ae = !1; + if (L === null) ae = !0; else switch (ie) { case "bigint": case "string": case "number": - Y = !0; + ae = !0; break; case "object": - switch (k.$$typeof) { + switch (L.$$typeof) { case e: case t: - Y = !0; + ae = !0; break; case p: - return Y = k._init, V( - Y(k._payload), - B, - J, - re, - le + return ae = L._init, V( + ae(L._payload), + j, + Q, + te, + ce ); } } - if (Y) - return le = le(k), Y = re === "" ? "." + U(k, 0) : re, D(le) ? (J = "", Y != null && (J = Y.replace(F, "$&/") + "/"), V(le, B, J, "", function(de) { - return de; - })) : le != null && (O(le) && (le = z( - le, - J + (le.key == null || k && k.key === le.key ? "" : ("" + le.key).replace( + if (ae) + return ce = ce(L), ae = te === "" ? "." + q(L, 0) : te, D(ce) ? (Q = "", ae != null && (Q = ae.replace(F, "$&/") + "/"), V(ce, j, Q, "", function(me) { + return me; + })) : ce != null && (O(ce) && (ce = M( + ce, + Q + (ce.key == null || L && L.key === ce.key ? "" : ("" + ce.key).replace( F, "$&/" - ) + "/") + Y - )), B.push(le)), 1; - Y = 0; - var q = re === "" ? "." : re + ":"; - if (D(k)) - for (var te = 0; te < k.length; te++) - re = k[te], ie = q + U(re, te), Y += V( - re, - B, - J, + ) + "/") + ae + )), j.push(ce)), 1; + ae = 0; + var X = te === "" ? "." : te + ":"; + if (D(L)) + for (var J = 0; J < L.length; J++) + te = L[J], ie = X + q(te, J), ae += V( + te, + j, + Q, ie, - le + ce ); - else if (te = b(k), typeof te == "function") - for (k = te.call(k), te = 0; !(re = k.next()).done; ) - re = re.value, ie = q + U(re, te++), Y += V( - re, - B, - J, + else if (J = b(L), typeof J == "function") + for (L = J.call(L), J = 0; !(te = L.next()).done; ) + te = te.value, ie = X + q(te, J++), ae += V( + te, + j, + Q, ie, - le + ce ); else if (ie === "object") { - if (typeof k.then == "function") + if (typeof L.then == "function") return V( - H(k), - B, - J, - re, - le + U(L), + j, + Q, + te, + ce ); - throw B = String(k), Error( - "Objects are not valid as a React child (found: " + (B === "[object Object]" ? "object with keys {" + Object.keys(k).join(", ") + "}" : B) + "). If you meant to render a collection of children, use an array instead." + throw j = String(L), Error( + "Objects are not valid as a React child (found: " + (j === "[object Object]" ? "object with keys {" + Object.keys(L).join(", ") + "}" : j) + "). If you meant to render a collection of children, use an array instead." ); } - return Y; - } - function ee(k, B, J) { - if (k == null) return k; - var re = [], le = 0; - return V(k, re, "", "", function(ie) { - return B.call(J, ie, le++); - }), re; - } - function X(k) { - if (k._status === -1) { - var B = k._result, J = B(); - J.then( - function(re) { - (k._status === 0 || k._status === -1) && (k._status = 1, k._result = re, J.status === void 0 && (J.status = "fulfilled", J.value = re)); + return ae; + } + function Z(L, j, Q) { + if (L == null) return L; + var te = [], ce = 0; + return V(L, te, "", "", function(ie) { + return j.call(Q, ie, ce++); + }), te; + } + function G(L) { + if (L._status === -1) { + var j = L._result, Q = j(); + Q.then( + function(te) { + (L._status === 0 || L._status === -1) && (L._status = 1, L._result = te, Q.status === void 0 && (Q.status = "fulfilled", Q.value = te)); }, - function(re) { - (k._status === 0 || k._status === -1) && (k._status = 2, k._result = re, J.status === void 0 && (J.status = "rejected", J.reason = re)); + function(te) { + (L._status === 0 || L._status === -1) && (L._status = 2, L._result = te, Q.status === void 0 && (Q.status = "rejected", Q.reason = te)); } - ), k._status === -1 && (k._status = 0, k._result = J); + ), L._status === -1 && (L._status = 0, L._result = Q); } - if (k._status === 1) return k._result.default; - throw k._result; + if (L._status === 1) return L._result.default; + throw L._result; } - var K = typeof reportError == "function" ? reportError : function(k) { + var K = typeof reportError == "function" ? reportError : function(L) { if (typeof window == "object" && typeof window.ErrorEvent == "function") { - var B = new window.ErrorEvent("error", { + var j = new window.ErrorEvent("error", { bubbles: !0, cancelable: !0, - message: typeof k == "object" && k !== null && typeof k.message == "string" ? String(k.message) : String(k), - error: k + message: typeof L == "object" && L !== null && typeof L.message == "string" ? String(L.message) : String(L), + error: L }); - if (!window.dispatchEvent(B)) return; + if (!window.dispatchEvent(j)) return; } else if (typeof process == "object" && typeof process.emit == "function") { - process.emit("uncaughtException", k); + process.emit("uncaughtException", L); return; } - console.error(k); + console.error(L); }; - function G(k) { - var B = P.T, J = {}; - J.types = B !== null ? B.types : null, P.T = J; + function Y(L) { + var j = T.T, Q = {}; + Q.types = j !== null ? j.types : null, T.T = Q; try { - var re = k(), le = P.S; - le !== null && le(J, re), typeof re == "object" && re !== null && typeof re.then == "function" && re.then(N, K); + var te = L(), ce = T.S; + ce !== null && ce(Q, te), typeof te == "object" && te !== null && typeof te.then == "function" && te.then(_, K); } catch (ie) { K(ie); } finally { - B !== null && J.types !== null && (B.types = J.types), P.T = B; + j !== null && Q.types !== null && (j.types = Q.types), T.T = j; } } - function W(k) { - var B = P.T; - if (B !== null) { - var J = B.types; - J === null ? B.types = [k] : J.indexOf(k) === -1 && J.push(k); - } else G(W.bind(null, k)); + function W(L) { + var j = T.T; + if (j !== null) { + var Q = j.types; + Q === null ? j.types = [L] : Q.indexOf(L) === -1 && Q.push(L); + } else Y(W.bind(null, L)); } - var Q = { - map: ee, - forEach: function(k, B, J) { - ee( - k, + var H = { + map: Z, + forEach: function(L, j, Q) { + Z( + L, function() { - B.apply(this, arguments); + j.apply(this, arguments); }, - J + Q ); }, - count: function(k) { - var B = 0; - return ee(k, function() { - B++; - }), B; + count: function(L) { + var j = 0; + return Z(L, function() { + j++; + }), j; }, - toArray: function(k) { - return ee(k, function(B) { - return B; + toArray: function(L) { + return Z(L, function(j) { + return j; }) || []; }, - only: function(k) { - if (!O(k)) + only: function(L) { + if (!O(L)) throw Error( "React.Children.only expected to receive a single React element child." ); - return k; + return L; } }; - return Ut.Activity = g, Ut.Children = Q, Ut.Component = R, Ut.Fragment = n, Ut.Profiler = a, Ut.PureComponent = M, Ut.StrictMode = r, Ut.Suspense = f, Ut.ViewTransition = v, Ut.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = P, Ut.__COMPILER_RUNTIME = { + return qt.Activity = g, qt.Children = H, qt.Component = R, qt.Fragment = n, qt.Profiler = a, qt.PureComponent = z, qt.StrictMode = r, qt.Suspense = f, qt.ViewTransition = v, qt.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = T, qt.__COMPILER_RUNTIME = { __proto__: null, - c: function(k) { - return P.H.useMemoCache(k); + c: function(L) { + return T.H.useMemoCache(L); } - }, Ut.addTransitionType = W, Ut.cache = function(k) { + }, qt.addTransitionType = W, qt.cache = function(L) { return function() { - return k.apply(null, arguments); + return L.apply(null, arguments); }; - }, Ut.cacheSignal = function() { + }, qt.cacheSignal = function() { return null; - }, Ut.cloneElement = function(k, B, J) { - if (k == null) + }, qt.cloneElement = function(L, j, Q) { + if (L == null) throw Error( - "The argument must be a React element, but you passed " + k + "." + "The argument must be a React element, but you passed " + L + "." ); - var re = C({}, k.props), le = k.key; - if (B != null) - for (ie in B.key !== void 0 && (le = "" + B.key), B) - !T.call(B, ie) || ie === "key" || ie === "__self" || ie === "__source" || ie === "ref" && B.ref === void 0 || (re[ie] = B[ie]); + var te = C({}, L.props), ce = L.key; + if (j != null) + for (ie in j.key !== void 0 && (ce = "" + j.key), j) + !N.call(j, ie) || ie === "key" || ie === "__self" || ie === "__source" || ie === "ref" && j.ref === void 0 || (te[ie] = j[ie]); var ie = arguments.length - 2; - if (ie === 1) re.children = J; + if (ie === 1) te.children = Q; else if (1 < ie) { - for (var Y = Array(ie), q = 0; q < ie; q++) - Y[q] = arguments[q + 2]; - re.children = Y; + for (var ae = Array(ie), X = 0; X < ie; X++) + ae[X] = arguments[X + 2]; + te.children = ae; } - return A(k.type, le, re); - }, Ut.createContext = function(k) { - return k = { + return A(L.type, ce, te); + }, qt.createContext = function(L) { + return L = { $$typeof: c, - _currentValue: k, - _currentValue2: k, + _currentValue: L, + _currentValue2: L, _threadCount: 0, Provider: null, Consumer: null - }, k.Provider = k, k.Consumer = { + }, L.Provider = L, L.Consumer = { $$typeof: s, - _context: k - }, k; - }, Ut.createElement = function(k, B, J) { - var re, le = {}, ie = null; - if (B != null) - for (re in B.key !== void 0 && (ie = "" + B.key), B) - T.call(B, re) && re !== "key" && re !== "__self" && re !== "__source" && (le[re] = B[re]); - var Y = arguments.length - 2; - if (Y === 1) le.children = J; - else if (1 < Y) { - for (var q = Array(Y), te = 0; te < Y; te++) - q[te] = arguments[te + 2]; - le.children = q; - } - if (k && k.defaultProps) - for (re in Y = k.defaultProps, Y) - le[re] === void 0 && (le[re] = Y[re]); - return A(k, ie, le); - }, Ut.createRef = function() { + _context: L + }, L; + }, qt.createElement = function(L, j, Q) { + var te, ce = {}, ie = null; + if (j != null) + for (te in j.key !== void 0 && (ie = "" + j.key), j) + N.call(j, te) && te !== "key" && te !== "__self" && te !== "__source" && (ce[te] = j[te]); + var ae = arguments.length - 2; + if (ae === 1) ce.children = Q; + else if (1 < ae) { + for (var X = Array(ae), J = 0; J < ae; J++) + X[J] = arguments[J + 2]; + ce.children = X; + } + if (L && L.defaultProps) + for (te in ae = L.defaultProps, ae) + ce[te] === void 0 && (ce[te] = ae[te]); + return A(L, ie, ce); + }, qt.createRef = function() { return { current: null }; - }, Ut.forwardRef = function(k) { - return { $$typeof: u, render: k }; - }, Ut.isValidElement = O, Ut.lazy = function(k) { + }, qt.forwardRef = function(L) { + return { $$typeof: u, render: L }; + }, qt.isValidElement = O, qt.lazy = function(L) { return { $$typeof: p, - _payload: { _status: -1, _result: k }, - _init: X + _payload: { _status: -1, _result: L }, + _init: G }; - }, Ut.memo = function(k, B) { + }, qt.memo = function(L, j) { return { $$typeof: m, - type: k, - compare: B === void 0 ? null : B + type: L, + compare: j === void 0 ? null : j }; - }, Ut.startTransition = G, Ut.unstable_useCacheRefresh = function() { - return P.H.useCacheRefresh(); - }, Ut.use = function(k) { - return P.H.use(k); - }, Ut.useActionState = function(k, B, J) { - return P.H.useActionState(k, B, J); - }, Ut.useCallback = function(k, B) { - return P.H.useCallback(k, B); - }, Ut.useContext = function(k) { - return P.H.useContext(k); - }, Ut.useDebugValue = function() { - }, Ut.useDeferredValue = function(k, B) { - return P.H.useDeferredValue(k, B); - }, Ut.useEffect = function(k, B) { - return P.H.useEffect(k, B); - }, Ut.useEffectEvent = function(k) { - return P.H.useEffectEvent(k); - }, Ut.useId = function() { - return P.H.useId(); - }, Ut.useImperativeHandle = function(k, B, J) { - return P.H.useImperativeHandle(k, B, J); - }, Ut.useInsertionEffect = function(k, B) { - return P.H.useInsertionEffect(k, B); - }, Ut.useLayoutEffect = function(k, B) { - return P.H.useLayoutEffect(k, B); - }, Ut.useMemo = function(k, B) { - return P.H.useMemo(k, B); - }, Ut.useOptimistic = function(k, B) { - return P.H.useOptimistic(k, B); - }, Ut.useReducer = function(k, B, J) { - return P.H.useReducer(k, B, J); - }, Ut.useRef = function(k) { - return P.H.useRef(k); - }, Ut.useState = function(k) { - return P.H.useState(k); - }, Ut.useSyncExternalStore = function(k, B, J) { - return P.H.useSyncExternalStore( - k, - B, - J + }, qt.startTransition = Y, qt.unstable_useCacheRefresh = function() { + return T.H.useCacheRefresh(); + }, qt.use = function(L) { + return T.H.use(L); + }, qt.useActionState = function(L, j, Q) { + return T.H.useActionState(L, j, Q); + }, qt.useCallback = function(L, j) { + return T.H.useCallback(L, j); + }, qt.useContext = function(L) { + return T.H.useContext(L); + }, qt.useDebugValue = function() { + }, qt.useDeferredValue = function(L, j) { + return T.H.useDeferredValue(L, j); + }, qt.useEffect = function(L, j) { + return T.H.useEffect(L, j); + }, qt.useEffectEvent = function(L) { + return T.H.useEffectEvent(L); + }, qt.useId = function() { + return T.H.useId(); + }, qt.useImperativeHandle = function(L, j, Q) { + return T.H.useImperativeHandle(L, j, Q); + }, qt.useInsertionEffect = function(L, j) { + return T.H.useInsertionEffect(L, j); + }, qt.useLayoutEffect = function(L, j) { + return T.H.useLayoutEffect(L, j); + }, qt.useMemo = function(L, j) { + return T.H.useMemo(L, j); + }, qt.useOptimistic = function(L, j) { + return T.H.useOptimistic(L, j); + }, qt.useReducer = function(L, j, Q) { + return T.H.useReducer(L, j, Q); + }, qt.useRef = function(L) { + return T.H.useRef(L); + }, qt.useState = function(L) { + return T.H.useState(L); + }, qt.useSyncExternalStore = function(L, j, Q) { + return T.H.useSyncExternalStore( + L, + j, + Q ); - }, Ut.useTransition = function() { - return P.H.useTransition(); - }, Ut.version = "19.3.0", Ut; + }, qt.useTransition = function() { + return T.H.useTransition(); + }, qt.version = "19.3.0", qt; } - var q_; - function xE() { - return q_ || (q_ = 1, kS.exports = _U()), kS.exports; + var J_; + function IE() { + return J_ || (J_ = 1, WS.exports = kU()), WS.exports; } - var l = xE(); - const se = /* @__PURE__ */ mo(l), IU = /* @__PURE__ */ RU({ + var l = IE(); + const se = /* @__PURE__ */ mo(l), jU = /* @__PURE__ */ AU({ __proto__: null, default: se }, [l]); - var jS = { exports: {} }, Rd = {}, FS = { exports: {} }, BS = {}; - var W_; - function MU() { - return W_ || (W_ = 1, (function(e) { - function t(H, V) { - var ee = H.length; - H.push(V); - e: for (; 0 < ee; ) { - var X = ee - 1 >>> 1, K = H[X]; + var VS = { exports: {} }, Pd = {}, KS = { exports: {} }, GS = {}; + var eI; + function FU() { + return eI || (eI = 1, (function(e) { + function t(U, V) { + var Z = U.length; + U.push(V); + e: for (; 0 < Z; ) { + var G = Z - 1 >>> 1, K = U[G]; if (0 < a(K, V)) - H[X] = V, H[ee] = K, ee = X; + U[G] = V, U[Z] = K, Z = G; else break e; } } - function n(H) { - return H.length === 0 ? null : H[0]; - } - function r(H) { - if (H.length === 0) return null; - var V = H[0], ee = H.pop(); - if (ee !== V) { - H[0] = ee; - e: for (var X = 0, K = H.length, G = K >>> 1; X < G; ) { - var W = 2 * (X + 1) - 1, Q = H[W], k = W + 1, B = H[k]; - if (0 > a(Q, ee)) - k < K && 0 > a(B, Q) ? (H[X] = B, H[k] = ee, X = k) : (H[X] = Q, H[W] = ee, X = W); - else if (k < K && 0 > a(B, ee)) - H[X] = B, H[k] = ee, X = k; + function n(U) { + return U.length === 0 ? null : U[0]; + } + function r(U) { + if (U.length === 0) return null; + var V = U[0], Z = U.pop(); + if (Z !== V) { + U[0] = Z; + e: for (var G = 0, K = U.length, Y = K >>> 1; G < Y; ) { + var W = 2 * (G + 1) - 1, H = U[W], L = W + 1, j = U[L]; + if (0 > a(H, Z)) + L < K && 0 > a(j, H) ? (U[G] = j, U[L] = Z, G = L) : (U[G] = H, U[W] = Z, G = W); + else if (L < K && 0 > a(j, Z)) + U[G] = j, U[L] = Z, G = L; else break e; } } return V; } - function a(H, V) { - var ee = H.sortIndex - V.sortIndex; - return ee !== 0 ? ee : H.id - V.id; + function a(U, V) { + var Z = U.sortIndex - V.sortIndex; + return Z !== 0 ? Z : U.id - V.id; } if (e.unstable_now = void 0, typeof performance == "object" && typeof performance.now == "function") { var s = performance; @@ -504,66 +504,66 @@ var sbe = EU((Ci, $i) => { }; } var f = [], m = [], p = 1, g = null, v = 3, y = !1, b = !1, S = !1, C = !1, E = typeof setTimeout == "function" ? setTimeout : null, R = typeof clearTimeout == "function" ? clearTimeout : null, $ = typeof setImmediate < "u" ? setImmediate : null; - function M(H) { + function z(U) { for (var V = n(m); V !== null; ) { if (V.callback === null) r(m); - else if (V.startTime <= H) + else if (V.startTime <= U) r(m), V.sortIndex = V.expirationTime, t(f, V); else break; V = n(m); } } - function I(H) { - if (S = !1, M(H), !b) + function I(U) { + if (S = !1, z(U), !b) if (n(f) !== null) b = !0, D || (D = !0, O()); else { var V = n(m); - V !== null && U(I, V.startTime - H); + V !== null && q(I, V.startTime - U); } } - var D = !1, N = -1, P = 5, T = -1; + var D = !1, _ = -1, T = 5, N = -1; function A() { - return C ? !0 : !(e.unstable_now() - T < P); + return C ? !0 : !(e.unstable_now() - N < T); } - function z() { + function M() { if (C = !1, D) { - var H = e.unstable_now(); - T = H; + var U = e.unstable_now(); + N = U; var V = !0; try { e: { - b = !1, S && (S = !1, R(N), N = -1), y = !0; - var ee = v; + b = !1, S && (S = !1, R(_), _ = -1), y = !0; + var Z = v; try { t: { - for (M(H), g = n(f); g !== null && !(g.expirationTime > H && A()); ) { - var X = g.callback; - if (typeof X == "function") { + for (z(U), g = n(f); g !== null && !(g.expirationTime > U && A()); ) { + var G = g.callback; + if (typeof G == "function") { g.callback = null, v = g.priorityLevel; - var K = X( - g.expirationTime <= H + var K = G( + g.expirationTime <= U ); - if (H = e.unstable_now(), typeof K == "function") { - g.callback = K, M(H), V = !0; + if (U = e.unstable_now(), typeof K == "function") { + g.callback = K, z(U), V = !0; break t; } - g === n(f) && r(f), M(H); + g === n(f) && r(f), z(U); } else r(f); g = n(f); } if (g !== null) V = !0; else { - var G = n(m); - G !== null && U( + var Y = n(m); + Y !== null && q( I, - G.startTime - H + Y.startTime - U ), V = !1; } } break e; } finally { - g = null, v = ee, y = !1; + g = null, v = Z, y = !1; } V = void 0; } @@ -575,31 +575,31 @@ var sbe = EU((Ci, $i) => { var O; if (typeof $ == "function") O = function() { - $(z); + $(M); }; else if (typeof MessageChannel < "u") { - var L = new MessageChannel(), F = L.port2; - L.port1.onmessage = z, O = function() { + var k = new MessageChannel(), F = k.port2; + k.port1.onmessage = M, O = function() { F.postMessage(null); }; } else O = function() { - E(z, 0); + E(M, 0); }; - function U(H, V) { - N = E(function() { - H(e.unstable_now()); + function q(U, V) { + _ = E(function() { + U(e.unstable_now()); }, V); } - e.unstable_IdlePriority = 5, e.unstable_ImmediatePriority = 1, e.unstable_LowPriority = 4, e.unstable_NormalPriority = 3, e.unstable_Profiling = null, e.unstable_UserBlockingPriority = 2, e.unstable_cancelCallback = function(H) { - H.callback = null; - }, e.unstable_forceFrameRate = function(H) { - 0 > H || 125 < H ? console.error( + e.unstable_IdlePriority = 5, e.unstable_ImmediatePriority = 1, e.unstable_LowPriority = 4, e.unstable_NormalPriority = 3, e.unstable_Profiling = null, e.unstable_UserBlockingPriority = 2, e.unstable_cancelCallback = function(U) { + U.callback = null; + }, e.unstable_forceFrameRate = function(U) { + 0 > U || 125 < U ? console.error( "forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported" - ) : P = 0 < H ? Math.floor(1e3 / H) : 5; + ) : T = 0 < U ? Math.floor(1e3 / U) : 5; }, e.unstable_getCurrentPriorityLevel = function() { return v; - }, e.unstable_next = function(H) { + }, e.unstable_next = function(U) { switch (v) { case 1: case 2: @@ -609,17 +609,17 @@ var sbe = EU((Ci, $i) => { default: V = v; } - var ee = v; + var Z = v; v = V; try { - return H(); + return U(); } finally { - v = ee; + v = Z; } }, e.unstable_requestPaint = function() { C = !0; - }, e.unstable_runWithPriority = function(H, V) { - switch (H) { + }, e.unstable_runWithPriority = function(U, V) { + switch (U) { case 1: case 2: case 3: @@ -627,18 +627,18 @@ var sbe = EU((Ci, $i) => { case 5: break; default: - H = 3; + U = 3; } - var ee = v; - v = H; + var Z = v; + v = U; try { return V(); } finally { - v = ee; + v = Z; } - }, e.unstable_scheduleCallback = function(H, V, ee) { - var X = e.unstable_now(); - switch (typeof ee == "object" && ee !== null ? (ee = ee.delay, ee = typeof ee == "number" && 0 < ee ? X + ee : X) : ee = X, H) { + }, e.unstable_scheduleCallback = function(U, V, Z) { + var G = e.unstable_now(); + switch (typeof Z == "object" && Z !== null ? (Z = Z.delay, Z = typeof Z == "number" && 0 < Z ? G + Z : G) : Z = G, U) { case 1: var K = -1; break; @@ -654,38 +654,38 @@ var sbe = EU((Ci, $i) => { default: K = 5e3; } - return K = ee + K, H = { + return K = Z + K, U = { id: p++, callback: V, - priorityLevel: H, - startTime: ee, + priorityLevel: U, + startTime: Z, expirationTime: K, sortIndex: -1 - }, ee > X ? (H.sortIndex = ee, t(m, H), n(f) === null && H === n(m) && (S ? (R(N), N = -1) : S = !0, U(I, ee - X))) : (H.sortIndex = K, t(f, H), b || y || (b = !0, D || (D = !0, O()))), H; - }, e.unstable_shouldYield = A, e.unstable_wrapCallback = function(H) { + }, Z > G ? (U.sortIndex = Z, t(m, U), n(f) === null && U === n(m) && (S ? (R(_), _ = -1) : S = !0, q(I, Z - G))) : (U.sortIndex = K, t(f, U), b || y || (b = !0, D || (D = !0, O()))), U; + }, e.unstable_shouldYield = A, e.unstable_wrapCallback = function(U) { var V = v; return function() { - var ee = v; + var Z = v; v = V; try { - return H.apply(this, arguments); + return U.apply(this, arguments); } finally { - v = ee; + v = Z; } }; }; - })(BS)), BS; - } - var V_; - function zU() { - return V_ || (V_ = 1, FS.exports = MU()), FS.exports; - } - var HS = { exports: {} }, Wr = {}; - var K_; - function AU() { - if (K_) return Wr; - K_ = 1; - var e = xE(); + })(GS)), GS; + } + var tI; + function BU() { + return tI || (tI = 1, KS.exports = FU()), KS.exports; + } + var XS = { exports: {} }, Vr = {}; + var nI; + function HU() { + if (nI) return Vr; + nI = 1; + var e = IE(); function t(p) { var g = "https://react.dev/errors/" + p; if (1 < arguments.length) { @@ -730,25 +730,25 @@ var sbe = EU((Ci, $i) => { if (typeof g == "string") return g === "use-credentials" ? g : ""; } - return Wr.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = r, Wr.browser = function(p) { + return Vr.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = r, Vr.browser = function(p) { return { $$typeof: s, _reason: p }; - }, Wr.createPortal = function(p, g) { + }, Vr.createPortal = function(p, g) { var v = 2 < arguments.length && arguments[2] !== void 0 ? arguments[2] : null; if (!g || g.nodeType !== 1 && g.nodeType !== 9 && g.nodeType !== 11) throw Error(t(299)); return u(p, g, null, v); - }, Wr.flushSync = function(p) { + }, Vr.flushSync = function(p) { var g = f.T, v = r.p; try { if (f.T = null, r.p = 2, p) return p(); } finally { f.T = g, r.p = v, r.d.f(); } - }, Wr.preconnect = function(p, g) { + }, Vr.preconnect = function(p, g) { typeof p == "string" && (g ? (g = g.crossOrigin, g = typeof g == "string" ? g === "use-credentials" ? g : "" : void 0) : g = null, r.d.C(p, g)); - }, Wr.prefetchDNS = function(p) { + }, Vr.prefetchDNS = function(p) { typeof p == "string" && r.d.D(p); - }, Wr.preinit = function(p, g) { + }, Vr.preinit = function(p, g) { if (typeof p == "string" && g && typeof g.as == "string") { var v = g.as, y = m(v, g.crossOrigin), b = typeof g.integrity == "string" ? g.integrity : void 0, S = typeof g.fetchPriority == "string" ? g.fetchPriority : void 0; v === "style" ? r.d.S( @@ -766,7 +766,7 @@ var sbe = EU((Ci, $i) => { nonce: typeof g.nonce == "string" ? g.nonce : void 0 }); } - }, Wr.preinitModule = function(p, g) { + }, Vr.preinitModule = function(p, g) { if (typeof p == "string") if (typeof g == "object" && g !== null) { if (g.as == null || g.as === "script") { @@ -782,7 +782,7 @@ var sbe = EU((Ci, $i) => { }); } } else g == null && r.d.M(p); - }, Wr.preload = function(p, g) { + }, Vr.preload = function(p, g) { if (typeof p == "string" && typeof g == "object" && g !== null && typeof g.as == "string") { var v = g.as, y = m(v, g.crossOrigin); r.d.L(p, v, { @@ -797,7 +797,7 @@ var sbe = EU((Ci, $i) => { media: typeof g.media == "string" ? g.media : void 0 }); } - }, Wr.preloadModule = function(p, g) { + }, Vr.preloadModule = function(p, g) { if (typeof p == "string") if (g) { var v = m(g.as, g.crossOrigin); @@ -809,20 +809,20 @@ var sbe = EU((Ci, $i) => { fetchPriority: typeof g.fetchPriority == "string" ? g.fetchPriority : void 0 }); } else r.d.m(p); - }, Wr.requestFormReset = function(p) { + }, Vr.requestFormReset = function(p) { r.d.r(p); - }, Wr.unstable_batchedUpdates = function(p, g) { + }, Vr.unstable_batchedUpdates = function(p, g) { return p(g); - }, Wr.useFormState = function(p, g, v) { + }, Vr.useFormState = function(p, g, v) { return f.H.useFormState(p, g, v); - }, Wr.useFormStatus = function() { + }, Vr.useFormStatus = function() { return f.H.useHostTransitionStatus(); - }, Wr.version = "19.3.0", Wr; + }, Vr.version = "19.3.0", Vr; } - var G_; - function e2() { - if (G_) return HS.exports; - G_ = 1; + var rI; + function c2() { + if (rI) return XS.exports; + rI = 1; function e() { if (!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ > "u" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE != "function")) try { @@ -831,13 +831,13 @@ var sbe = EU((Ci, $i) => { console.error(t); } } - return e(), HS.exports = AU(), HS.exports; + return e(), XS.exports = HU(), XS.exports; } - var X_; - function DU() { - if (X_) return Rd; - X_ = 1; - var e = zU(), t = xE(), n = e2(); + var oI; + function UU() { + if (oI) return Pd; + oI = 1; + var e = BU(), t = IE(), n = c2(); function r(o) { var i = "https://react.dev/errors/" + o; if (1 < arguments.length) { @@ -901,30 +901,30 @@ var sbe = EU((Ci, $i) => { } if (d.return !== h.return) d = x, h = w; else { - for (var j = !1, ae = x.child; ae; ) { - if (ae === d) { - j = !0, d = x, h = w; + for (var B = !1, oe = x.child; oe; ) { + if (oe === d) { + B = !0, d = x, h = w; break; } - if (ae === h) { - j = !0, h = x, d = w; + if (oe === h) { + B = !0, h = x, d = w; break; } - ae = ae.sibling; + oe = oe.sibling; } - if (!j) { - for (ae = w.child; ae; ) { - if (ae === d) { - j = !0, d = w, h = x; + if (!B) { + for (oe = w.child; oe; ) { + if (oe === d) { + B = !0, d = w, h = x; break; } - if (ae === h) { - j = !0, h = w, d = x; + if (oe === h) { + B = !0, h = w, d = x; break; } - ae = ae.sibling; + oe = oe.sibling; } - if (!j) throw Error(r(189)); + if (!B) throw Error(r(189)); } } if (d.alternate !== h) throw Error(r(190)); @@ -1011,7 +1011,7 @@ var sbe = EU((Ci, $i) => { function $(o, i, d) { return o === d ? !0 : o === i ? (E = o, !0) : !1; } - function M(o, i, d) { + function z(o, i, d) { return o === d ? (R = o, !1) : o === i ? (R !== null && (E = o), !0) : !1; } function I(o) { @@ -1034,44 +1034,44 @@ var sbe = EU((Ci, $i) => { } return null; } - var N = Object.assign, P = /* @__PURE__ */ Symbol.for("react.element"), T = /* @__PURE__ */ Symbol.for("react.transitional.element"), A = /* @__PURE__ */ Symbol.for("react.portal"), z = /* @__PURE__ */ Symbol.for("react.fragment"), O = /* @__PURE__ */ Symbol.for("react.strict_mode"), L = /* @__PURE__ */ Symbol.for("react.profiler"), F = /* @__PURE__ */ Symbol.for("react.consumer"), U = /* @__PURE__ */ Symbol.for("react.context"), H = /* @__PURE__ */ Symbol.for("react.forward_ref"), V = /* @__PURE__ */ Symbol.for("react.suspense"), ee = /* @__PURE__ */ Symbol.for("react.suspense_list"), X = /* @__PURE__ */ Symbol.for("react.memo"), K = /* @__PURE__ */ Symbol.for("react.lazy"), G = /* @__PURE__ */ Symbol.for("react.activity"), W = /* @__PURE__ */ Symbol.for("react.legacy_hidden"), Q = /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel"), k = /* @__PURE__ */ Symbol.for("react.view_transition"), B = /* @__PURE__ */ Symbol.for("react.recoverable"), J = Symbol.iterator; - function re(o) { - return o === null || typeof o != "object" ? null : (o = J && o[J] || o["@@iterator"], typeof o == "function" ? o : null); + var _ = Object.assign, T = /* @__PURE__ */ Symbol.for("react.element"), N = /* @__PURE__ */ Symbol.for("react.transitional.element"), A = /* @__PURE__ */ Symbol.for("react.portal"), M = /* @__PURE__ */ Symbol.for("react.fragment"), O = /* @__PURE__ */ Symbol.for("react.strict_mode"), k = /* @__PURE__ */ Symbol.for("react.profiler"), F = /* @__PURE__ */ Symbol.for("react.consumer"), q = /* @__PURE__ */ Symbol.for("react.context"), U = /* @__PURE__ */ Symbol.for("react.forward_ref"), V = /* @__PURE__ */ Symbol.for("react.suspense"), Z = /* @__PURE__ */ Symbol.for("react.suspense_list"), G = /* @__PURE__ */ Symbol.for("react.memo"), K = /* @__PURE__ */ Symbol.for("react.lazy"), Y = /* @__PURE__ */ Symbol.for("react.activity"), W = /* @__PURE__ */ Symbol.for("react.legacy_hidden"), H = /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel"), L = /* @__PURE__ */ Symbol.for("react.view_transition"), j = /* @__PURE__ */ Symbol.for("react.recoverable"), Q = Symbol.iterator; + function te(o) { + return o === null || typeof o != "object" ? null : (o = Q && o[Q] || o["@@iterator"], typeof o == "function" ? o : null); } - var le = /* @__PURE__ */ Symbol.for("react.client.reference"); + var ce = /* @__PURE__ */ Symbol.for("react.client.reference"); function ie(o) { if (o == null) return null; if (typeof o == "function") - return o.$$typeof === le ? null : o.displayName || o.name || null; + return o.$$typeof === ce ? null : o.displayName || o.name || null; if (typeof o == "string") return o; switch (o) { - case z: + case M: return "Fragment"; - case L: + case k: return "Profiler"; case O: return "StrictMode"; case V: return "Suspense"; - case ee: + case Z: return "SuspenseList"; - case G: + case Y: return "Activity"; - case k: + case L: return "ViewTransition"; } if (typeof o == "object") switch (o.$$typeof) { case A: return "Portal"; - case U: + case q: return o.displayName || "Context"; case F: return (o._context.displayName || "Context") + ".Consumer"; - case H: + case U: var i = o.render; return o = o.displayName, o || (o = i.displayName || i.name || "", o = o !== "" ? "ForwardRef(" + o + ")" : "ForwardRef"), o; - case X: + case G: return i = o.displayName || null, i !== null ? i : ie(o.type) || "Memo"; case K: i = o._payload, o = o._init; @@ -1082,31 +1082,31 @@ var sbe = EU((Ci, $i) => { } return null; } - var Y = Array.isArray, q = t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, te = n.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, de = { + var ae = Array.isArray, X = t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, J = n.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, me = { pending: !1, data: null, method: null, action: null - }, fe = [], pe = -1; - function oe(o) { + }, re = [], fe = -1; + function ne(o) { return { current: o }; } - function ce(o) { - 0 > pe || (o.current = fe[pe], fe[pe] = null, pe--); + function ue(o) { + 0 > fe || (o.current = re[fe], re[fe] = null, fe--); } - function Z(o, i) { - pe++, fe[pe] = o.current, o.current = i; + function le(o, i) { + fe++, re[fe] = o.current, o.current = i; } - var me = oe(null), xe = oe(null), Me = oe(null), ve = oe(null); - function qe(o, i) { - switch (Z(Me, i), Z(xe, o), Z(me, null), i.nodeType) { + var ge = ne(null), pe = ne(null), $e = ne(null), be = ne(null); + function We(o, i) { + switch (le($e, i), le(pe, o), le(ge, null), i.nodeType) { case 9: case 11: - o = (o = i.documentElement) && (o = o.namespaceURI) ? XN(o) : 0; + o = (o = i.documentElement) && (o = o.namespaceURI) ? o_(o) : 0; break; default: if (o = i.tagName, i = i.namespaceURI) - i = XN(i), o = QN(i, o); + i = o_(i), o = a_(i, o); else switch (o) { case "svg": @@ -1119,35 +1119,35 @@ var sbe = EU((Ci, $i) => { o = 0; } } - ce(me), Z(me, o); + ue(ge), le(ge, o); } function ke() { - ce(me), ce(xe), ce(Me); + ue(ge), ue(pe), ue($e); } - function be(o) { + function ye(o) { var i = o.memoizedState; - i !== null && (Tc._currentValue = i.memoizedState, Z(ve, o)), i = me.current; - var d = QN(i, o.type); - i !== d && (Z(xe, o), Z(me, d)); + i !== null && (Nc._currentValue = i.memoizedState, le(be, o)), i = ge.current; + var d = a_(i, o.type); + i !== d && (le(pe, o), le(ge, d)); } - function Ee(o) { - xe.current === o && (ce(me), ce(xe)), ve.current === o && (ce(ve), Tc._currentValue = de); + function Re(o) { + pe.current === o && (ue(ge), ue(pe)), be.current === o && (ue(be), Nc._currentValue = me); } - var Se, et; - function We(o) { - if (Se === void 0) + var xe, et; + function Ve(o) { + if (xe === void 0) try { throw Error(); } catch (d) { var i = d.stack.trim().match(/\n( *(at )?)/); - Se = i && i[1] || "", et = -1 < d.stack.indexOf(` + xe = i && i[1] || "", et = -1 < d.stack.indexOf(` at`) ? " ()" : -1 < d.stack.indexOf("@") ? "@unknown:0:0" : ""; } return ` -` + Se + o + et; +` + xe + o + et; } var it = !1; - function ze(o, i) { + function Me(o, i) { if (!o || it) return ""; it = !0; var d = Error.prepareStackTrace; @@ -1167,15 +1167,15 @@ var sbe = EU((Ci, $i) => { }), typeof Reflect == "object" && Reflect.construct) { try { Reflect.construct(Ye, []); - } catch (ut) { - var Pe = ut; + } catch (dt) { + var Te = dt; } Reflect.construct(o, [], Ye); } else { try { Ye.call(); - } catch (ut) { - Pe = ut; + } catch (dt) { + Te = dt; } Ye = !1; try { @@ -1196,15 +1196,15 @@ var sbe = EU((Ci, $i) => { } else { try { throw Error(); - } catch (ut) { - Pe = ut; + } catch (dt) { + Te = dt; } (Ye = o()) && typeof Ye.catch == "function" && Ye.catch(function() { }); } - } catch (ut) { - if (ut && Pe && typeof ut.stack == "string") - return [ut.stack, Pe.stack]; + } catch (dt) { + if (dt && Te && typeof dt.stack == "string") + return [dt.stack, Te.stack]; } return [null, null]; } @@ -1219,27 +1219,27 @@ var sbe = EU((Ci, $i) => { "name", { value: "DetermineComponentFrameRoot" } ); - var w = h.DetermineComponentFrameRoot(), j = w[0], ae = w[1]; - if (j && ae) { - var ge = j.split(` -`), Ie = ae.split(` + var w = h.DetermineComponentFrameRoot(), B = w[0], oe = w[1]; + if (B && oe) { + var ve = B.split(` +`), ze = oe.split(` `); - for (x = h = 0; h < ge.length && !ge[h].includes("DetermineComponentFrameRoot"); ) + for (x = h = 0; h < ve.length && !ve[h].includes("DetermineComponentFrameRoot"); ) h++; - for (; x < Ie.length && !Ie[x].includes( + for (; x < ze.length && !ze[x].includes( "DetermineComponentFrameRoot" ); ) x++; - if (h === ge.length || x === Ie.length) - for (h = ge.length - 1, x = Ie.length - 1; 1 <= h && 0 <= x && ge[h] !== Ie[x]; ) + if (h === ve.length || x === ze.length) + for (h = ve.length - 1, x = ze.length - 1; 1 <= h && 0 <= x && ve[h] !== ze[x]; ) x--; for (; 1 <= h && 0 <= x; h--, x--) - if (ge[h] !== Ie[x]) { + if (ve[h] !== ze[x]) { if (h !== 1 || x !== 1) do - if (h--, x--, 0 > x || ge[h] !== Ie[x]) { + if (h--, x--, 0 > x || ve[h] !== ze[x]) { var je = ` -` + ge[h].replace(" at new ", " at "); +` + ve[h].replace(" at new ", " at "); return o.displayName && je.includes("") && (je = je.replace("", o.displayName)), je; } while (1 <= h && 0 <= x); @@ -1249,31 +1249,31 @@ var sbe = EU((Ci, $i) => { } finally { it = !1, Error.prepareStackTrace = d; } - return (d = o ? o.displayName || o.name : "") ? We(d) : ""; + return (d = o ? o.displayName || o.name : "") ? Ve(d) : ""; } function Oe(o, i) { switch (o.tag) { case 26: case 27: case 5: - return We(o.type); + return Ve(o.type); case 16: - return We("Lazy"); + return Ve("Lazy"); case 13: - return o.child !== i && i !== null ? We("Suspense Fallback") : We("Suspense"); + return o.child !== i && i !== null ? Ve("Suspense Fallback") : Ve("Suspense"); case 19: - return We("SuspenseList"); + return Ve("SuspenseList"); case 0: case 15: - return ze(o.type, !1); + return Me(o.type, !1); case 11: - return ze(o.type.render, !1); + return Me(o.type.render, !1); case 1: - return ze(o.type, !0); + return Me(o.type, !0); case 31: - return We("Activity"); + return Ve("Activity"); case 30: - return We("ViewTransition"); + return Ve("ViewTransition"); default: return ""; } @@ -1291,19 +1291,19 @@ Error generating stack: ` + h.message + ` ` + h.stack; } } - var Ue = Object.prototype.hasOwnProperty, Ze = e.unstable_scheduleCallback, he = e.unstable_cancelCallback, ye = e.unstable_shouldYield, Qe = e.unstable_requestPaint, Je = e.unstable_now, ot = e.unstable_getCurrentPriorityLevel, nt = e.unstable_ImmediatePriority, St = e.unstable_UserBlockingPriority, ft = e.unstable_NormalPriority, mt = e.unstable_LowPriority, Be = e.unstable_IdlePriority, at = e.log, Te = e.unstable_setDisableYieldValue, He = null, $e = null; - function Re(o) { - if (typeof at == "function" && Te(o), $e && typeof $e.setStrictMode == "function") + var qe = Object.prototype.hasOwnProperty, Ze = e.unstable_scheduleCallback, he = e.unstable_cancelCallback, Se = e.unstable_shouldYield, Qe = e.unstable_requestPaint, Je = e.unstable_now, ot = e.unstable_getCurrentPriorityLevel, nt = e.unstable_ImmediatePriority, Ct = e.unstable_UserBlockingPriority, ft = e.unstable_NormalPriority, mt = e.unstable_LowPriority, Be = e.unstable_IdlePriority, at = e.log, Ne = e.unstable_setDisableYieldValue, Ue = null, Ee = null; + function Pe(o) { + if (typeof at == "function" && Ne(o), Ee && typeof Ee.setStrictMode == "function") try { - $e.setStrictMode(He, o); + Ee.setStrictMode(Ue, o); } catch { } } - var Fe = Math.clz32 ? Math.clz32 : tt, Ne = Math.log, Ke = Math.LN2; + var Fe = Math.clz32 ? Math.clz32 : tt, _e = Math.log, Ke = Math.LN2; function tt(o) { - return o >>>= 0, o === 0 ? 32 : 31 - (Ne(o) / Ke | 0) | 0; + return o >>>= 0, o === 0 ? 32 : 31 - (_e(o) / Ke | 0) | 0; } - var st = 256, xt = 262144, zt = 4194304; + var st = 256, $t = 262144, Dt = 4194304; function Gt(o) { var i = o & 42; if (i !== 0) return i; @@ -1359,15 +1359,15 @@ Error generating stack: ` + h.message + ` return o; } } - function Bt(o, i, d) { + function Ht(o, i, d) { var h = o.pendingLanes; if (h === 0) return 0; - var x = 0, w = o.suspendedLanes, j = o.pingedLanes; + var x = 0, w = o.suspendedLanes, B = o.pingedLanes; o = o.warmLanes; - var ae = h & 134217727; - return ae !== 0 ? (h = ae & ~w, h !== 0 ? x = Gt(h) : (j &= ae, j !== 0 ? x = Gt(j) : d || (d = ae & ~o, d !== 0 && (x = Gt(d))))) : (ae = h & ~w, ae !== 0 ? x = Gt(ae) : j !== 0 ? x = Gt(j) : d || (d = h & ~o, d !== 0 && (x = Gt(d)))), x === 0 ? 0 : i !== 0 && i !== x && (i & w) === 0 && (w = x & -x, d = i & -i, w >= d || w === 32 && (d & 4194048) !== 0) ? i : x; + var oe = h & 134217727; + return oe !== 0 ? (h = oe & ~w, h !== 0 ? x = Gt(h) : (B &= oe, B !== 0 ? x = Gt(B) : d || (d = oe & ~o, d !== 0 && (x = Gt(d))))) : (oe = h & ~w, oe !== 0 ? x = Gt(oe) : B !== 0 ? x = Gt(B) : d || (d = h & ~o, d !== 0 && (x = Gt(d)))), x === 0 ? 0 : i !== 0 && i !== x && (i & w) === 0 && (w = x & -x, d = i & -i, w >= d || w === 32 && (d & 4194048) !== 0) ? i : x; } - function Sn(o, i) { + function Cn(o, i) { return (o.pendingLanes & ~(o.suspendedLanes & ~o.pingedLanes) & i) === 0; } function un(o, i) { @@ -1380,7 +1380,7 @@ Error generating stack: ` + h.message + ` } return i; } - function Nn(o, i) { + function _n(o, i) { switch (o) { case 1: case 2: @@ -1422,34 +1422,34 @@ Error generating stack: ` + h.message + ` } } function ht() { - var o = zt; - return zt <<= 1, (zt & 62914560) === 0 && (zt = 4194304), o; + var o = Dt; + return Dt <<= 1, (Dt & 62914560) === 0 && (Dt = 4194304), o; } - function Dt(o) { + function kt(o) { for (var i = [], d = 0; 31 > d; d++) i.push(o); return i; } - function At(o, i) { + function Ot(o, i) { o.pendingLanes |= i, i !== 268435456 && (o.suspendedLanes = 0, o.pingedLanes = 0, o.warmLanes = 0); } function pt(o, i, d, h, x, w) { - var j = o.pendingLanes; + var B = o.pendingLanes; o.pendingLanes = d, o.suspendedLanes = 0, o.pingedLanes = 0, o.warmLanes = 0, o.expiredLanes &= d, o.entangledLanes &= d, o.errorRecoveryDisabledLanes &= d, o.shellSuspendCounter = 0; - var ae = o.entanglements, ge = o.expirationTimes, Ie = o.hiddenUpdates; - for (d = j & ~d; 0 < d; ) { + var oe = o.entanglements, ve = o.expirationTimes, ze = o.hiddenUpdates; + for (d = B & ~d; 0 < d; ) { var je = 31 - Fe(d), Ye = 1 << je; - ae[je] = 0, ge[je] = -1; - var Pe = Ie[je]; - if (Pe !== null) - for (Ie[je] = null, je = 0; je < Pe.length; je++) { - var Le = Pe[je]; + oe[je] = 0, ve[je] = -1; + var Te = ze[je]; + if (Te !== null) + for (ze[je] = null, je = 0; je < Te.length; je++) { + var Le = Te[je]; Le !== null && (Le.lane &= -536870913); } d &= ~Ye; } - h !== 0 && Et(o, h, 0), w !== 0 && x === 0 && o.tag !== 0 && (o.suspendedLanes |= w & ~(j & ~i)); + h !== 0 && Pt(o, h, 0), w !== 0 && x === 0 && o.tag !== 0 && (o.suspendedLanes |= w & ~(B & ~i)); } - function Et(o, i, d) { + function Pt(o, i, d) { o.pendingLanes |= i, o.suspendedLanes &= ~i; var h = 31 - Fe(i); o.entangledLanes |= i, o.entanglements[h] = o.entanglements[h] | 1073741824 | d & 261930; @@ -1504,34 +1504,34 @@ Error generating stack: ` + h.message + ` } return o; } - function pn(o) { + function hn(o) { return o &= -o, 2 < o ? 8 < o ? (o & 134217727) !== 0 ? 32 : 268435456 : 8 : 2; } - function zn() { - var o = te.p; - return o !== 0 ? o : (o = window.event, o === void 0 ? 32 : z_(o.type)); + function Mn() { + var o = J.p; + return o !== 0 ? o : (o = window.event, o === void 0 ? 32 : H_(o.type)); } - function Qn(o, i) { - var d = te.p; + function Yn(o, i) { + var d = J.p; try { - return te.p = o, i(); + return J.p = o, i(); } finally { - te.p = d; + J.p = d; } } - var Un = Math.random().toString(36).slice(2), bn = "__reactFiber$" + Un, kn = "__reactProps$" + Un, fr = "__reactContainer$" + Un, Yr = "__reactEvents$" + Un, Eo = "__reactListeners$" + Un, rt = "__reactHandles$" + Un, wt = "__reactResources$" + Un, ct = "__reactMarker$" + Un, Ht = "__reactLoad$" + Un; + var Un = Math.random().toString(36).slice(2), yn = "__reactFiber$" + Un, kn = "__reactProps$" + Un, mr = "__reactContainer$" + Un, Zr = "__reactEvents$" + Un, Eo = "__reactListeners$" + Un, rt = "__reactHandles$" + Un, Rt = "__reactResources$" + Un, ct = "__reactMarker$" + Un, Ut = "__reactLoad$" + Un; function nn(o) { - delete o[bn], delete o[kn], delete o[Eo], delete o[rt]; + delete o[yn], delete o[kn], delete o[Eo], delete o[rt]; } function qn(o) { var i; - if (i = o[bn]) return i; + if (i = o[yn]) return i; for (var d = o.parentNode; d; ) { - if (i = d[fr] || d[bn]) { + if (i = d[mr] || d[yn]) { if (d = i.alternate, i.child !== null || d !== null && d.child !== null) - for (o = m_(o); o !== null; ) { - if (d = o[bn]) return d; - o = m_(o); + for (o = C_(o); o !== null; ) { + if (d = o[yn]) return d; + o = C_(o); } return i; } @@ -1540,49 +1540,49 @@ Error generating stack: ` + h.message + ` return null; } function Kn(o) { - if (o = o[bn] || o[fr]) { + if (o = o[yn] || o[mr]) { var i = o.tag; if (i === 5 || i === 6 || i === 13 || i === 31 || i === 26 || i === 27 || i === 3) return o; } return null; } - function wr(o) { + function Er(o) { var i = o.tag; if (i === 5 || i === 26 || i === 27 || i === 6) return o.stateNode; throw Error(r(33)); } - function Er(o) { - var i = o[wt]; - return i || (i = o[wt] = { hoistableStyles: /* @__PURE__ */ new Map(), hoistableScripts: /* @__PURE__ */ new Map() }), i; + function Rr(o) { + var i = o[Rt]; + return i || (i = o[Rt] = { hoistableStyles: /* @__PURE__ */ new Map(), hoistableScripts: /* @__PURE__ */ new Map() }), i; } function Wn(o) { o[ct] = !0; } - function ql(o) { - o[Ht] = void 0; + function Wl(o) { + o[Ut] = void 0; } - var Wl = /* @__PURE__ */ new Set(), gt = {}; + var Vl = /* @__PURE__ */ new Set(), gt = {}; function rn(o, i) { - aa(o, i), aa(o + "Capture", i); + ia(o, i), ia(o + "Capture", i); } - function aa(o, i) { + function ia(o, i) { for (gt[o] = i, o = 0; o < i.length; o++) - Wl.add(i[o]); + Vl.add(i[o]); } - var db = RegExp( + var bb = RegExp( "^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$" - ), Du = {}, Ou = {}; - function fb(o) { - return Ue.call(Ou, o) ? !0 : Ue.call(Du, o) ? !1 : db.test(o) ? Ou[o] = !0 : (Du[o] = !0, !1); + ), Ou = {}, Lu = {}; + function yb(o) { + return qe.call(Lu, o) ? !0 : qe.call(Ou, o) ? !1 : bb.test(o) ? Lu[o] = !0 : (Ou[o] = !0, !1); } var wn = !1; - function D1() { + function q1() { var o = wn; return wn = !1, o; } - function dp(o, i, d) { - if (fb(i)) + function hp(o, i, d) { + if (yb(i)) if (d === null) o.removeAttribute(i); else { switch (typeof d) { @@ -1601,7 +1601,7 @@ Error generating stack: ` + h.message + ` o.setAttribute(i, d); } } - function fp(o, i, d) { + function gp(o, i, d) { if (d === null) o.removeAttribute(i); else { switch (typeof d) { @@ -1615,7 +1615,7 @@ Error generating stack: ` + h.message + ` o.setAttribute(i, d); } } - function ni(o, i, d, h) { + function ri(o, i, d, h) { if (h === null) o.removeAttribute(d); else { switch (typeof h) { @@ -1643,11 +1643,11 @@ Error generating stack: ` + h.message + ` return ""; } } - function O1(o) { + function W1(o) { var i = o.type; return (o = o.nodeName) && o.toLowerCase() === "input" && (i === "checkbox" || i === "radio"); } - function W4(o, i, d) { + function J4(o, i, d) { var h = Object.getOwnPropertyDescriptor( o.constructor.prototype, i @@ -1659,8 +1659,8 @@ Error generating stack: ` + h.message + ` get: function() { return x.call(this); }, - set: function(j) { - d = "" + j, w.call(this, j); + set: function(B) { + d = "" + B, w.call(this, B); } }), Object.defineProperty(o, i, { enumerable: h.enumerable @@ -1668,8 +1668,8 @@ Error generating stack: ` + h.message + ` getValue: function() { return d; }, - setValue: function(j) { - d = "" + j; + setValue: function(B) { + d = "" + B; }, stopTracking: function() { o._valueTracker = null, delete o[i]; @@ -1677,49 +1677,49 @@ Error generating stack: ` + h.message + ` }; } } - function mb(o) { + function Sb(o) { if (!o._valueTracker) { - var i = O1(o) ? "checked" : "value"; - o._valueTracker = W4( + var i = W1(o) ? "checked" : "value"; + o._valueTracker = J4( o, i, "" + o[i] ); } } - function L1(o) { + function V1(o) { if (!o) return !1; var i = o._valueTracker; if (!i) return !0; var d = i.getValue(), h = ""; - return o && (h = O1(o) ? o.checked ? "true" : "false" : o.value), o = h, o !== d ? (i.setValue(o), !0) : !1; + return o && (h = W1(o) ? o.checked ? "true" : "false" : o.value), o = h, o !== d ? (i.setValue(o), !0) : !1; } - var V4 = /[\n"\\]/g; - function Ho(o) { + var e6 = /[\n"\\]/g; + function Uo(o) { return o.replace( - V4, + e6, function(i) { return "\\" + i.charCodeAt(0).toString(16) + " "; } ); } - function pb(o, i, d, h, x, w, j, ae) { - o.name = "", j != null && typeof j != "function" && typeof j != "symbol" && typeof j != "boolean" ? o.type = j : o.removeAttribute("type"), i != null ? j === "number" ? (i === 0 && o.value === "" || o.value != i) && (o.value = "" + Ro(i)) : o.value !== "" + Ro(i) && (o.value = "" + Ro(i)) : j !== "submit" && j !== "reset" || o.removeAttribute("value"), i != null ? j === "number" && o.value == i ? hb(o, Ro(o.value)) : hb(o, Ro(i)) : d != null ? hb(o, Ro(d)) : h != null && o.removeAttribute("value"), x == null && w != null && (o.defaultChecked = !!w), x != null && (o.checked = x && typeof x != "function" && typeof x != "symbol"), ae != null && typeof ae != "function" && typeof ae != "symbol" && typeof ae != "boolean" ? o.name = "" + Ro(ae) : o.removeAttribute("name"); + function xb(o, i, d, h, x, w, B, oe) { + o.name = "", B != null && typeof B != "function" && typeof B != "symbol" && typeof B != "boolean" ? o.type = B : o.removeAttribute("type"), i != null ? B === "number" ? (i === 0 && o.value === "" || o.value != i) && (o.value = "" + Ro(i)) : o.value !== "" + Ro(i) && (o.value = "" + Ro(i)) : B !== "submit" && B !== "reset" || o.removeAttribute("value"), i != null ? B === "number" && o.value == i ? Cb(o, Ro(o.value)) : Cb(o, Ro(i)) : d != null ? Cb(o, Ro(d)) : h != null && o.removeAttribute("value"), x == null && w != null && (o.defaultChecked = !!w), x != null && (o.checked = x && typeof x != "function" && typeof x != "symbol"), oe != null && typeof oe != "function" && typeof oe != "symbol" && typeof oe != "boolean" ? o.name = "" + Ro(oe) : o.removeAttribute("name"); } - function k1(o, i, d, h, x, w, j, ae) { + function K1(o, i, d, h, x, w, B, oe) { if (w != null && typeof w != "function" && typeof w != "symbol" && typeof w != "boolean" && (o.type = w), i != null || d != null) { if (!(w !== "submit" && w !== "reset" || i != null)) { - mb(o); + Sb(o); return; } - d = d != null ? "" + Ro(d) : "", i = i != null ? "" + Ro(i) : d, ae || i === o.value || (o.value = i), o.defaultValue = i; + d = d != null ? "" + Ro(d) : "", i = i != null ? "" + Ro(i) : d, oe || i === o.value || (o.value = i), o.defaultValue = i; } - h = h ?? x, h = typeof h != "function" && typeof h != "symbol" && !!h, o.checked = ae ? o.checked : !!h, o.defaultChecked = !!h, j != null && typeof j != "function" && typeof j != "symbol" && typeof j != "boolean" && (o.name = j), mb(o); + h = h ?? x, h = typeof h != "function" && typeof h != "symbol" && !!h, o.checked = oe ? o.checked : !!h, o.defaultChecked = !!h, B != null && typeof B != "function" && typeof B != "symbol" && typeof B != "boolean" && (o.name = B), Sb(o); } - function hb(o, i) { + function Cb(o, i) { o.defaultValue !== "" + i && (o.defaultValue = "" + i); } - function Vl(o, i, d, h) { + function Kl(o, i, d, h) { if (o = o.options, i) { i = {}; for (var x = 0; x < d.length; x++) @@ -1737,18 +1737,18 @@ Error generating stack: ` + h.message + ` i !== null && (i.selected = !0); } } - function j1(o, i, d) { + function G1(o, i, d) { if (i != null && (i = "" + Ro(i), i !== o.value && (o.value = i), d == null)) { o.defaultValue !== i && (o.defaultValue = i); return; } o.defaultValue = d != null ? "" + Ro(d) : ""; } - function F1(o, i, d, h) { + function X1(o, i, d, h) { if (i == null) { if (h != null) { if (d != null) throw Error(r(92)); - if (Y(h)) { + if (ae(h)) { if (1 < h.length) throw Error(r(93)); h = h[0]; } @@ -1756,9 +1756,9 @@ Error generating stack: ` + h.message + ` } d == null && (d = ""), i = d; } - d = Ro(i), o.defaultValue = d, h = o.textContent, h === d && h !== "" && h !== null && (o.value = h), mb(o); + d = Ro(i), o.defaultValue = d, h = o.textContent, h === d && h !== "" && h !== null && (o.value = h), Sb(o); } - function Kl(o, i) { + function Gl(o, i) { if (i) { var d = o.firstChild; if (d && d === o.lastChild && d.nodeType === 3) { @@ -1768,28 +1768,28 @@ Error generating stack: ` + h.message + ` } o.textContent = i; } - var K4 = new Set( + var t6 = new Set( "animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split( " " ) ); - function B1(o, i, d) { + function Q1(o, i, d) { var h = i.indexOf("--") === 0; - d == null || typeof d == "boolean" || d === "" ? h ? o.setProperty(i, "") : i === "float" ? o.cssFloat = "" : o[i] = "" : h ? o.setProperty(i, d) : typeof d != "number" || d === 0 || K4.has(i) ? i === "float" ? o.cssFloat = d : o[i] = ("" + d).trim() : o[i] = d + "px"; + d == null || typeof d == "boolean" || d === "" ? h ? o.setProperty(i, "") : i === "float" ? o.cssFloat = "" : o[i] = "" : h ? o.setProperty(i, d) : typeof d != "number" || d === 0 || t6.has(i) ? i === "float" ? o.cssFloat = d : o[i] = ("" + d).trim() : o[i] = d + "px"; } - function H1(o, i, d) { + function Y1(o, i, d) { if (i != null && typeof i != "object") throw Error(r(62)); if (o = o.style, d != null) { for (var h in d) !d.hasOwnProperty(h) || i != null && i.hasOwnProperty(h) || (h.indexOf("--") === 0 ? o.setProperty(h, "") : h === "float" ? o.cssFloat = "" : o[h] = "", wn = !0); for (var x in i) - h = i[x], i.hasOwnProperty(x) && d[x] !== h && (B1(o, x, h), wn = !0); + h = i[x], i.hasOwnProperty(x) && d[x] !== h && (Q1(o, x, h), wn = !0); } else for (var w in i) - i.hasOwnProperty(w) && B1(o, w, i[w]); + i.hasOwnProperty(w) && Q1(o, w, i[w]); } - function gb(o) { + function $b(o) { if (o.indexOf("-") === -1) return !1; switch (o) { case "annotation-xml": @@ -1805,7 +1805,7 @@ Error generating stack: ` + h.message + ` return !0; } } - var G4 = /* @__PURE__ */ new Map([ + var n6 = /* @__PURE__ */ new Map([ ["acceptCharset", "accept-charset"], ["htmlFor", "for"], ["httpEquiv", "http-equiv"], @@ -1885,24 +1885,24 @@ Error generating stack: ` + h.message + ` ["writingMode", "writing-mode"], ["xmlnsXlink", "xmlns:xlink"], ["xHeight", "x-height"] - ]), X4 = /^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i; - function mp(o) { - return X4.test("" + o) ? "javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')" : o; + ]), r6 = /^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i; + function vp(o) { + return r6.test("" + o) ? "javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')" : o; } - function Pa() { + function Ta() { } - var vb = null; - function bb(o) { + var wb = null; + function Eb(o) { return o = o.target || o.srcElement || window, o.correspondingUseElement && (o = o.correspondingUseElement), o.nodeType === 3 ? o.parentNode : o; } - var Gl = null, Xl = null; - function U1(o) { + var Xl = null, Ql = null; + function Z1(o) { var i = Kn(o); if (i && (o = i.stateNode)) { var d = o[kn] || null; e: switch (o = i.stateNode, i.type) { case "input": - if (pb( + if (xb( o, d.value, d.defaultValue, @@ -1914,7 +1914,7 @@ Error generating stack: ` + h.message + ` ), i = d.name, d.type === "radio" && i != null) { for (d = o; d.parentNode; ) d = d.parentNode; for (d = d.querySelectorAll( - 'input[name="' + Ho( + 'input[name="' + Uo( "" + i ) + '"][type="radio"]' ), i = 0; i < d.length; i++) { @@ -1922,7 +1922,7 @@ Error generating stack: ` + h.message + ` if (h !== o && h.form === o.form) { var x = h[kn] || null; if (!x) throw Error(r(90)); - pb( + xb( h, x.value, x.defaultValue, @@ -1935,30 +1935,30 @@ Error generating stack: ` + h.message + ` } } for (i = 0; i < d.length; i++) - h = d[i], h.form === o.form && L1(h); + h = d[i], h.form === o.form && V1(h); } break e; case "textarea": - j1(o, d.value, d.defaultValue); + G1(o, d.value, d.defaultValue); break e; case "select": - i = d.value, i != null && Vl(o, !!d.multiple, i, !1); + i = d.value, i != null && Kl(o, !!d.multiple, i, !1); } } } - var yb = !1; - function q1(o, i, d) { - if (yb) return o(i, d); - yb = !0; + var Rb = !1; + function J1(o, i, d) { + if (Rb) return o(i, d); + Rb = !0; try { var h = o(i); return h; } finally { - if (yb = !1, (Gl !== null || Xl !== null) && (mh(), Gl && (i = Gl, o = Xl, Xl = Gl = null, U1(i), o))) - for (i = 0; i < o.length; i++) U1(o[i]); + if (Rb = !1, (Xl !== null || Ql !== null) && (vh(), Xl && (i = Xl, o = Ql, Ql = Xl = null, Z1(i), o))) + for (i = 0; i < o.length; i++) Z1(o[i]); } } - function Lu(o, i) { + function ku(o, i) { var d = o.stateNode; if (d === null) return null; var h = d[kn] || null; @@ -1988,60 +1988,60 @@ Error generating stack: ` + h.message + ` ); return d; } - var ri = !(typeof window > "u" || typeof window.document > "u" || typeof window.document.createElement > "u"), Sb = !1; - if (ri) + var oi = !(typeof window > "u" || typeof window.document > "u" || typeof window.document.createElement > "u"), Pb = !1; + if (oi) try { - var ku = {}; - Object.defineProperty(ku, "passive", { + var ju = {}; + Object.defineProperty(ju, "passive", { get: function() { - Sb = !0; + Pb = !0; } - }), window.addEventListener("test", ku, ku), window.removeEventListener("test", ku, ku); + }), window.addEventListener("test", ju, ju), window.removeEventListener("test", ju, ju); } catch { - Sb = !1; + Pb = !1; } - var Ai = null, xb = null, pp = null; - function W1() { - if (pp) return pp; - var o, i = xb, d = i.length, h, x = "value" in Ai ? Ai.value : Ai.textContent, w = x.length; + var Di = null, Tb = null, bp = null; + function eP() { + if (bp) return bp; + var o, i = Tb, d = i.length, h, x = "value" in Di ? Di.value : Di.textContent, w = x.length; for (o = 0; o < d && i[o] === x[o]; o++) ; - var j = d - o; - for (h = 1; h <= j && i[d - h] === x[w - h]; h++) ; - return pp = x.slice(o, 1 < h ? 1 - h : void 0); + var B = d - o; + for (h = 1; h <= B && i[d - h] === x[w - h]; h++) ; + return bp = x.slice(o, 1 < h ? 1 - h : void 0); } - function hp(o) { + function yp(o) { var i = o.keyCode; return "charCode" in o ? (o = o.charCode, o === 0 && i === 13 && (o = 13)) : o = i, o === 10 && (o = 13), 32 <= o || o === 13 ? o : 0; } - function gp() { + function Sp() { return !0; } - function V1() { + function tP() { return !1; } function io(o) { - function i(d, h, x, w, j) { - this._reactName = d, this._targetInst = x, this.type = h, this.nativeEvent = w, this.target = j, this.currentTarget = null; - for (var ae in o) - o.hasOwnProperty(ae) && (d = o[ae], this[ae] = d ? d(w) : w[ae]); - return this.isDefaultPrevented = (w.defaultPrevented != null ? w.defaultPrevented : w.returnValue === !1) ? gp : V1, this.isPropagationStopped = V1, this; + function i(d, h, x, w, B) { + this._reactName = d, this._targetInst = x, this.type = h, this.nativeEvent = w, this.target = B, this.currentTarget = null; + for (var oe in o) + o.hasOwnProperty(oe) && (d = o[oe], this[oe] = d ? d(w) : w[oe]); + return this.isDefaultPrevented = (w.defaultPrevented != null ? w.defaultPrevented : w.returnValue === !1) ? Sp : tP, this.isPropagationStopped = tP, this; } - return N(i.prototype, { + return _(i.prototype, { preventDefault: function() { this.defaultPrevented = !0; var d = this.nativeEvent; - d && (d.preventDefault ? d.preventDefault() : typeof d.returnValue != "unknown" && (d.returnValue = !1), this.isDefaultPrevented = gp); + d && (d.preventDefault ? d.preventDefault() : typeof d.returnValue != "unknown" && (d.returnValue = !1), this.isDefaultPrevented = Sp); }, stopPropagation: function() { var d = this.nativeEvent; - d && (d.stopPropagation ? d.stopPropagation() : typeof d.cancelBubble != "unknown" && (d.cancelBubble = !0), this.isPropagationStopped = gp); + d && (d.stopPropagation ? d.stopPropagation() : typeof d.cancelBubble != "unknown" && (d.cancelBubble = !0), this.isPropagationStopped = Sp); }, persist: function() { }, - isPersistent: gp + isPersistent: Sp }), i; } - var Di = { + var Oi = { eventPhase: 0, bubbles: 0, cancelable: 0, @@ -2050,7 +2050,7 @@ Error generating stack: ` + h.message + ` }, defaultPrevented: 0, isTrusted: 0 - }, vp = io(Di), ju = N({}, Di, { view: 0, detail: 0 }), Q4 = io(ju), Cb, $b, Fu, bp = N({}, ju, { + }, xp = io(Oi), Fu = _({}, Oi, { view: 0, detail: 0 }), o6 = io(Fu), Nb, _b, Bu, Cp = _({}, Fu, { screenX: 0, screenY: 0, clientX: 0, @@ -2061,27 +2061,27 @@ Error generating stack: ` + h.message + ` shiftKey: 0, altKey: 0, metaKey: 0, - getModifierState: Eb, + getModifierState: zb, button: 0, buttons: 0, relatedTarget: function(o) { return o.relatedTarget === void 0 ? o.fromElement === o.srcElement ? o.toElement : o.fromElement : o.relatedTarget; }, movementX: function(o) { - return "movementX" in o ? o.movementX : (o !== Fu && (Fu && o.type === "mousemove" ? (Cb = o.screenX - Fu.screenX, $b = o.screenY - Fu.screenY) : $b = Cb = 0, Fu = o), Cb); + return "movementX" in o ? o.movementX : (o !== Bu && (Bu && o.type === "mousemove" ? (Nb = o.screenX - Bu.screenX, _b = o.screenY - Bu.screenY) : _b = Nb = 0, Bu = o), Nb); }, movementY: function(o) { - return "movementY" in o ? o.movementY : $b; + return "movementY" in o ? o.movementY : _b; } - }), K1 = io(bp), Y4 = N({}, bp, { dataTransfer: 0 }), Z4 = io(Y4), J4 = N({}, ju, { relatedTarget: 0 }), wb = io(J4), e6 = N({}, Di, { + }), nP = io(Cp), a6 = _({}, Cp, { dataTransfer: 0 }), i6 = io(a6), s6 = _({}, Fu, { relatedTarget: 0 }), Ib = io(s6), l6 = _({}, Oi, { animationName: 0, elapsedTime: 0, pseudoElement: 0 - }), t6 = io(e6), n6 = N({}, Di, { + }), c6 = io(l6), u6 = _({}, Oi, { clipboardData: function(o) { return "clipboardData" in o ? o.clipboardData : window.clipboardData; } - }), r6 = io(n6), o6 = N({}, Di, { data: 0 }), G1 = io(o6), a6 = { + }), d6 = io(u6), f6 = _({}, Oi, { data: 0 }), rP = io(f6), m6 = { Esc: "Escape", Spacebar: " ", Left: "ArrowLeft", @@ -2094,7 +2094,7 @@ Error generating stack: ` + h.message + ` Apps: "ContextMenu", Scroll: "ScrollLock", MozPrintableKey: "Unidentified" - }, i6 = { + }, p6 = { 8: "Backspace", 9: "Tab", 12: "Clear", @@ -2131,26 +2131,26 @@ Error generating stack: ` + h.message + ` 144: "NumLock", 145: "ScrollLock", 224: "Meta" - }, s6 = { + }, h6 = { Alt: "altKey", Control: "ctrlKey", Meta: "metaKey", Shift: "shiftKey" }; - function l6(o) { + function g6(o) { var i = this.nativeEvent; - return i.getModifierState ? i.getModifierState(o) : (o = s6[o]) ? !!i[o] : !1; + return i.getModifierState ? i.getModifierState(o) : (o = h6[o]) ? !!i[o] : !1; } - function Eb() { - return l6; + function zb() { + return g6; } - var c6 = N({}, ju, { + var v6 = _({}, Fu, { key: function(o) { if (o.key) { - var i = a6[o.key] || o.key; + var i = m6[o.key] || o.key; if (i !== "Unidentified") return i; } - return o.type === "keypress" ? (o = hp(o), o === 13 ? "Enter" : String.fromCharCode(o)) : o.type === "keydown" || o.type === "keyup" ? i6[o.keyCode] || "Unidentified" : ""; + return o.type === "keypress" ? (o = yp(o), o === 13 ? "Enter" : String.fromCharCode(o)) : o.type === "keydown" || o.type === "keyup" ? p6[o.keyCode] || "Unidentified" : ""; }, code: 0, location: 0, @@ -2160,17 +2160,17 @@ Error generating stack: ` + h.message + ` metaKey: 0, repeat: 0, locale: 0, - getModifierState: Eb, + getModifierState: zb, charCode: function(o) { - return o.type === "keypress" ? hp(o) : 0; + return o.type === "keypress" ? yp(o) : 0; }, keyCode: function(o) { return o.type === "keydown" || o.type === "keyup" ? o.keyCode : 0; }, which: function(o) { - return o.type === "keypress" ? hp(o) : o.type === "keydown" || o.type === "keyup" ? o.keyCode : 0; + return o.type === "keypress" ? yp(o) : o.type === "keydown" || o.type === "keyup" ? o.keyCode : 0; } - }), u6 = io(c6), d6 = N({}, bp, { + }), b6 = io(v6), y6 = _({}, Cp, { pointerId: 0, width: 0, height: 0, @@ -2181,7 +2181,7 @@ Error generating stack: ` + h.message + ` twist: 0, pointerType: 0, isPrimary: 0 - }), X1 = io(d6), f6 = N({}, Di, { submitter: 0 }), m6 = io(f6), p6 = N({}, ju, { + }), oP = io(y6), S6 = _({}, Oi, { submitter: 0 }), x6 = io(S6), C6 = _({}, Fu, { touches: 0, targetTouches: 0, changedTouches: 0, @@ -2189,12 +2189,12 @@ Error generating stack: ` + h.message + ` metaKey: 0, ctrlKey: 0, shiftKey: 0, - getModifierState: Eb - }), h6 = io(p6), g6 = N({}, Di, { + getModifierState: zb + }), $6 = io(C6), w6 = _({}, Oi, { propertyName: 0, elapsedTime: 0, pseudoElement: 0 - }), v6 = io(g6), b6 = N({}, bp, { + }), E6 = io(w6), R6 = _({}, Cp, { deltaX: function(o) { return "deltaX" in o ? o.deltaX : "wheelDeltaX" in o ? -o.wheelDeltaX : 0; }, @@ -2203,17 +2203,17 @@ Error generating stack: ` + h.message + ` }, deltaZ: 0, deltaMode: 0 - }), y6 = io(b6), S6 = N({}, Di, { + }), P6 = io(R6), T6 = _({}, Oi, { newState: 0, oldState: 0, source: 0 - }), x6 = io(S6), C6 = [9, 13, 27, 32], Rb = ri && "CompositionEvent" in window, Bu = null; - ri && "documentMode" in document && (Bu = document.documentMode); - var $6 = ri && "TextEvent" in window && !Bu, Q1 = ri && (!Rb || Bu && 8 < Bu && 11 >= Bu), Y1 = " ", Z1 = !1; - function J1(o, i) { + }), N6 = io(T6), _6 = [9, 13, 27, 32], Mb = oi && "CompositionEvent" in window, Hu = null; + oi && "documentMode" in document && (Hu = document.documentMode); + var I6 = oi && "TextEvent" in window && !Hu, aP = oi && (!Mb || Hu && 8 < Hu && 11 >= Hu), iP = " ", sP = !1; + function lP(o, i) { switch (o) { case "keyup": - return C6.indexOf(i.keyCode) !== -1; + return _6.indexOf(i.keyCode) !== -1; case "keydown": return i.keyCode !== 229; case "keypress": @@ -2224,25 +2224,25 @@ Error generating stack: ` + h.message + ` return !1; } } - function eP(o) { + function cP(o) { return o = o.detail, typeof o == "object" && "data" in o ? o.data : null; } - var Ql = !1; - function w6(o, i) { + var Yl = !1; + function z6(o, i) { switch (o) { case "compositionend": - return eP(i); + return cP(i); case "keypress": - return i.which !== 32 ? null : (Z1 = !0, Y1); + return i.which !== 32 ? null : (sP = !0, iP); case "textInput": - return o = i.data, o === Y1 && Z1 ? null : o; + return o = i.data, o === iP && sP ? null : o; default: return null; } } - function E6(o, i) { - if (Ql) - return o === "compositionend" || !Rb && J1(o, i) ? (o = W1(), pp = xb = Ai = null, Ql = !1, o) : null; + function M6(o, i) { + if (Yl) + return o === "compositionend" || !Mb && lP(o, i) ? (o = eP(), bp = Tb = Di = null, Yl = !1, o) : null; switch (o) { case "paste": return null; @@ -2254,12 +2254,12 @@ Error generating stack: ` + h.message + ` } return null; case "compositionend": - return Q1 && i.locale !== "ko" ? null : i.data; + return aP && i.locale !== "ko" ? null : i.data; default: return null; } } - var R6 = { + var A6 = { color: !0, date: !0, datetime: !0, @@ -2276,12 +2276,12 @@ Error generating stack: ` + h.message + ` url: !0, week: !0 }; - function tP(o) { + function uP(o) { var i = o && o.nodeName && o.nodeName.toLowerCase(); - return i === "input" ? !!R6[o.type] : i === "textarea"; + return i === "input" ? !!A6[o.type] : i === "textarea"; } - function nP(o, i, d, h) { - Gl ? Xl ? Xl.push(h) : Xl = [h] : Gl = h, i = yh(i, "onChange"), 0 < i.length && (d = new vp( + function dP(o, i, d, h) { + Xl ? Ql ? Ql.push(h) : Ql = [h] : Xl = h, i = $h(i, "onChange"), 0 < i.length && (d = new xp( "onChange", "change", null, @@ -2289,63 +2289,63 @@ Error generating stack: ` + h.message + ` h ), o.push({ event: d, listeners: i })); } - var Hu = null, Uu = null; - function P6(o) { - UN(o, 0); + var Uu = null, qu = null; + function D6(o) { + ZN(o, 0); } - function yp(o) { - var i = wr(o); - if (L1(i)) return o; + function $p(o) { + var i = Er(o); + if (V1(i)) return o; } - function rP(o, i) { + function fP(o, i) { if (o === "change") return i; } - var oP = !1; - if (ri) { - var Pb; - if (ri) { - var Tb = "oninput" in document; - if (!Tb) { - var aP = document.createElement("div"); - aP.setAttribute("oninput", "return;"), Tb = typeof aP.oninput == "function"; + var mP = !1; + if (oi) { + var Ab; + if (oi) { + var Db = "oninput" in document; + if (!Db) { + var pP = document.createElement("div"); + pP.setAttribute("oninput", "return;"), Db = typeof pP.oninput == "function"; } - Pb = Tb; - } else Pb = !1; - oP = Pb && (!document.documentMode || 9 < document.documentMode); + Ab = Db; + } else Ab = !1; + mP = Ab && (!document.documentMode || 9 < document.documentMode); } - function iP() { - Hu && (Hu.detachEvent("onpropertychange", sP), Uu = Hu = null); + function hP() { + Uu && (Uu.detachEvent("onpropertychange", gP), qu = Uu = null); } - function sP(o) { - if (o.propertyName === "value" && yp(Uu)) { + function gP(o) { + if (o.propertyName === "value" && $p(qu)) { var i = []; - nP( + dP( i, - Uu, + qu, o, - bb(o) - ), q1(P6, i); + Eb(o) + ), J1(D6, i); } } - function T6(o, i, d) { - o === "focusin" ? (iP(), Hu = i, Uu = d, Hu.attachEvent("onpropertychange", sP)) : o === "focusout" && iP(); + function O6(o, i, d) { + o === "focusin" ? (hP(), Uu = i, qu = d, Uu.attachEvent("onpropertychange", gP)) : o === "focusout" && hP(); } - function N6(o) { + function L6(o) { if (o === "selectionchange" || o === "keyup" || o === "keydown") - return yp(Uu); + return $p(qu); } - function _6(o, i) { - if (o === "click") return yp(i); + function k6(o, i) { + if (o === "click") return $p(i); } - function I6(o, i) { + function j6(o, i) { if (o === "input" || o === "change") - return yp(i); + return $p(i); } - function M6(o, i) { + function F6(o, i) { return o === i && (o !== 0 || 1 / o === 1 / i) || o !== o && i !== i; } - var Po = typeof Object.is == "function" ? Object.is : M6; - function qu(o, i) { + var Po = typeof Object.is == "function" ? Object.is : F6; + function Wu(o, i) { if (Po(o, i)) return !0; if (typeof o != "object" || o === null || typeof i != "object" || i === null) return !1; @@ -2353,12 +2353,12 @@ Error generating stack: ` + h.message + ` if (d.length !== h.length) return !1; for (h = 0; h < d.length; h++) { var x = d[h]; - if (!Ue.call(i, x) || !Po(o[x], i[x])) + if (!qe.call(i, x) || !Po(o[x], i[x])) return !1; } return !0; } - function Nb(o) { + function Ob(o) { if (o = o || (typeof document < "u" ? document : void 0), typeof o > "u") return null; try { return o.activeElement || o.body; @@ -2366,12 +2366,12 @@ Error generating stack: ` + h.message + ` return o.body; } } - function lP(o) { + function vP(o) { for (; o && o.firstChild; ) o = o.firstChild; return o; } - function cP(o, i) { - var d = lP(o); + function bP(o, i) { + var d = vP(o); o = 0; for (var h; d; ) { if (d.nodeType === 3) { @@ -2389,15 +2389,15 @@ Error generating stack: ` + h.message + ` } d = void 0; } - d = lP(d); + d = vP(d); } } - function uP(o, i) { - return o && i ? o === i ? !0 : o && o.nodeType === 3 ? !1 : i && i.nodeType === 3 ? uP(o, i.parentNode) : "contains" in o ? o.contains(i) : o.compareDocumentPosition ? !!(o.compareDocumentPosition(i) & 16) : !1 : !1; + function yP(o, i) { + return o && i ? o === i ? !0 : o && o.nodeType === 3 ? !1 : i && i.nodeType === 3 ? yP(o, i.parentNode) : "contains" in o ? o.contains(i) : o.compareDocumentPosition ? !!(o.compareDocumentPosition(i) & 16) : !1 : !1; } - function dP(o) { + function SP(o) { o = o != null && o.ownerDocument != null && o.ownerDocument.defaultView != null ? o.ownerDocument.defaultView : window; - for (var i = Nb(o.document); i instanceof o.HTMLIFrameElement; ) { + for (var i = Ob(o.document); i instanceof o.HTMLIFrameElement; ) { try { var d = typeof i.contentWindow.location.href == "string"; } catch { @@ -2405,35 +2405,35 @@ Error generating stack: ` + h.message + ` } if (d) o = i.contentWindow; else break; - i = Nb(o.document); + i = Ob(o.document); } return i; } - function _b(o) { + function Lb(o) { var i = o && o.nodeName && o.nodeName.toLowerCase(); return i && (i === "input" && (o.type === "text" || o.type === "search" || o.type === "tel" || o.type === "url" || o.type === "password") || i === "textarea" || o.contentEditable === "true"); } - var z6 = ri && "documentMode" in document && 11 >= document.documentMode, Yl = null, Ib = null, Wu = null, Mb = !1; - function fP(o, i, d) { + var B6 = oi && "documentMode" in document && 11 >= document.documentMode, Zl = null, kb = null, Vu = null, jb = !1; + function xP(o, i, d) { var h = d.window === d ? d.document : d.nodeType === 9 ? d : d.ownerDocument; - Mb || Yl == null || Yl !== Nb(h) || (h = Yl, "selectionStart" in h && _b(h) ? h = { start: h.selectionStart, end: h.selectionEnd } : (h = (h.ownerDocument && h.ownerDocument.defaultView || window).getSelection(), h = { + jb || Zl == null || Zl !== Ob(h) || (h = Zl, "selectionStart" in h && Lb(h) ? h = { start: h.selectionStart, end: h.selectionEnd } : (h = (h.ownerDocument && h.ownerDocument.defaultView || window).getSelection(), h = { anchorNode: h.anchorNode, anchorOffset: h.anchorOffset, focusNode: h.focusNode, focusOffset: h.focusOffset - }), Wu && qu(Wu, h) || (Wu = h, h = yh(Ib, "onSelect"), 0 < h.length && (i = new vp( + }), Vu && Wu(Vu, h) || (Vu = h, h = $h(kb, "onSelect"), 0 < h.length && (i = new xp( "onSelect", "select", null, i, d - ), o.push({ event: i, listeners: h }), i.target = Yl))); + ), o.push({ event: i, listeners: h }), i.target = Zl))); } function Ms(o, i) { var d = {}; return d[o.toLowerCase()] = i.toLowerCase(), d["Webkit" + o] = "webkit" + i, d["Moz" + o] = "moz" + i, d; } - var Zl = { + var Jl = { animationend: Ms("Animation", "AnimationEnd"), animationiteration: Ms("Animation", "AnimationIteration"), animationstart: Ms("Animation", "AnimationStart"), @@ -2441,36 +2441,36 @@ Error generating stack: ` + h.message + ` transitionstart: Ms("Transition", "TransitionStart"), transitioncancel: Ms("Transition", "TransitionCancel"), transitionend: Ms("Transition", "TransitionEnd") - }, zb = {}, mP = {}; - ri && (mP = document.createElement("div").style, "AnimationEvent" in window || (delete Zl.animationend.animation, delete Zl.animationiteration.animation, delete Zl.animationstart.animation), "TransitionEvent" in window || delete Zl.transitionend.transition); - function zs(o) { - if (zb[o]) return zb[o]; - if (!Zl[o]) return o; - var i = Zl[o], d; + }, Fb = {}, CP = {}; + oi && (CP = document.createElement("div").style, "AnimationEvent" in window || (delete Jl.animationend.animation, delete Jl.animationiteration.animation, delete Jl.animationstart.animation), "TransitionEvent" in window || delete Jl.transitionend.transition); + function As(o) { + if (Fb[o]) return Fb[o]; + if (!Jl[o]) return o; + var i = Jl[o], d; for (d in i) - if (i.hasOwnProperty(d) && d in mP) - return zb[o] = i[d]; + if (i.hasOwnProperty(d) && d in CP) + return Fb[o] = i[d]; return o; } - var pP = zs("animationend"), hP = zs("animationiteration"), gP = zs("animationstart"), A6 = zs("transitionrun"), D6 = zs("transitionstart"), O6 = zs("transitioncancel"), vP = zs("transitionend"), bP = /* @__PURE__ */ new Map(), Ab = "abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error fullscreenChange fullscreenError gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split( + var $P = As("animationend"), wP = As("animationiteration"), EP = As("animationstart"), H6 = As("transitionrun"), U6 = As("transitionstart"), q6 = As("transitioncancel"), RP = As("transitionend"), PP = /* @__PURE__ */ new Map(), Bb = "abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error fullscreenChange fullscreenError gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split( " " ); - Ab.push("scrollEnd"); - function ia(o, i) { - bP.set(o, i), rn(i, [o]); + Bb.push("scrollEnd"); + function sa(o, i) { + PP.set(o, i), rn(i, [o]); } - var L6 = 0; - function oi(o, i) { + var W6 = 0; + function ai(o, i) { if (o.name != null && o.name !== "auto") return o.name; if (i.autoName !== null) return i.autoName; - o = ua.identifierPrefix; - var d = L6++; + o = da.identifierPrefix; + var d = W6++; return o = "_" + o + "t_" + d.toString(32) + "_", i.autoName = o; } - function yP(o) { + function TP(o) { if (o == null || typeof o == "string") return o; - var i = null, d = bc; + var i = null, d = yc; if (d !== null) for (var h = 0; h < d.length; h++) { var x = o[d[h]]; @@ -2481,10 +2481,10 @@ Error generating stack: ` + h.message + ` } return i ?? o.default; } - function ai(o, i) { - return o = yP(o), i = yP(i), i == null ? o === "auto" ? null : o : i === "auto" ? null : i; + function ii(o, i) { + return o = TP(o), i = TP(i), i == null ? o === "auto" ? null : o : i === "auto" ? null : i; } - var Sp = typeof reportError == "function" ? reportError : function(o) { + var wp = typeof reportError == "function" ? reportError : function(o) { if (typeof window == "object" && typeof window.ErrorEvent == "function") { var i = new window.ErrorEvent("error", { bubbles: !0, @@ -2498,33 +2498,33 @@ Error generating stack: ` + h.message + ` return; } console.error(o); - }, Uo = [], Jl = 0, Db = 0; - function xp() { - for (var o = Jl, i = Db = Jl = 0; i < o; ) { - var d = Uo[i]; - Uo[i++] = null; - var h = Uo[i]; - Uo[i++] = null; - var x = Uo[i]; - Uo[i++] = null; - var w = Uo[i]; - if (Uo[i++] = null, h !== null && x !== null) { - var j = h.pending; - j === null ? x.next = x : (x.next = j.next, j.next = x), h.pending = x; + }, qo = [], ec = 0, Hb = 0; + function Ep() { + for (var o = ec, i = Hb = ec = 0; i < o; ) { + var d = qo[i]; + qo[i++] = null; + var h = qo[i]; + qo[i++] = null; + var x = qo[i]; + qo[i++] = null; + var w = qo[i]; + if (qo[i++] = null, h !== null && x !== null) { + var B = h.pending; + B === null ? x.next = x : (x.next = B.next, B.next = x), h.pending = x; } - w !== 0 && SP(d, x, w); + w !== 0 && NP(d, x, w); } } - function Cp(o, i, d, h) { - Uo[Jl++] = o, Uo[Jl++] = i, Uo[Jl++] = d, Uo[Jl++] = h, Db |= h, o.lanes |= h, o = o.alternate, o !== null && (o.lanes |= h); + function Rp(o, i, d, h) { + qo[ec++] = o, qo[ec++] = i, qo[ec++] = d, qo[ec++] = h, Hb |= h, o.lanes |= h, o = o.alternate, o !== null && (o.lanes |= h); } - function Ob(o, i, d, h) { - return Cp(o, i, d, h), $p(o); + function Ub(o, i, d, h) { + return Rp(o, i, d, h), Pp(o); } - function As(o, i) { - return Cp(o, null, null, i), $p(o); + function Ds(o, i) { + return Rp(o, null, null, i), Pp(o); } - function SP(o, i, d) { + function NP(o, i, d) { o.lanes |= d; var h = o.alternate; h !== null && (h.lanes |= d); @@ -2532,24 +2532,24 @@ Error generating stack: ` + h.message + ` w.childLanes |= d, h = w.alternate, h !== null && (h.childLanes |= d), w.tag === 22 && (o = w.stateNode, o === null || o._visibility & 1 || (x = !0)), o = w, w = w.return; return o.tag === 3 ? (w = o.stateNode, x && i !== null && (x = 31 - Fe(d), o = w.hiddenUpdates, h = o[x], h === null ? o[x] = [i] : h.push(i), i.lane = d | 536870912), w) : null; } - function $p(o) { - if (50 < md) - throw md = 0, fh = null, Error(r(185)); + function Pp(o) { + if (50 < pd) + throw pd = 0, gh = null, Error(r(185)); for (var i = o.return; i !== null; ) o = i, i = o.return; return o.tag === 3 ? o.stateNode : null; } - var ec = {}; - function k6(o, i, d, h) { + var tc = {}; + function V6(o, i, d, h) { this.tag = o, this.key = d, this.sibling = this.child = this.return = this.stateNode = this.type = this.elementType = null, this.index = 0, this.refCleanup = this.ref = null, this.pendingProps = i, this.dependencies = this.memoizedState = this.updateQueue = this.memoizedProps = null, this.mode = h, this.subtreeFlags = this.flags = 0, this.deletions = null, this.childLanes = this.lanes = 0, this.alternate = null; } function po(o, i, d, h) { - return new k6(o, i, d, h); + return new V6(o, i, d, h); } - function Lb(o) { + function qb(o) { return o = o.prototype, !(!o || !o.isReactComponent); } - function ii(o, i) { + function si(o, i) { var d = o.alternate; return d === null ? (d = po( o.tag, @@ -2558,7 +2558,7 @@ Error generating stack: ` + h.message + ` o.mode ), d.elementType = o.elementType, d.type = o.type, d.stateNode = o.stateNode, d.alternate = o, o.alternate = d) : (d.pendingProps = i, d.type = o.type, d.flags = 0, d.subtreeFlags = 0, d.deletions = null), d.flags = o.flags & 1206910976, d.childLanes = o.childLanes, d.lanes = o.lanes, d.child = o.child, d.memoizedProps = o.memoizedProps, d.memoizedState = o.memoizedState, d.updateQueue = o.updateQueue, i = o.dependencies, d.dependencies = i === null ? null : { lanes: i.lanes, firstContext: i.firstContext }, d.sibling = o.sibling, d.index = o.index, d.ref = o.ref, d.refCleanup = o.refCleanup, d; } - function xP(o, i) { + function _P(o, i) { o.flags &= 1206910978; var d = o.alternate; return d === null ? (o.childLanes = 0, o.lanes = i, o.child = null, o.subtreeFlags = 0, o.memoizedProps = null, o.memoizedState = null, o.updateQueue = null, o.dependencies = null, o.stateNode = null) : (o.childLanes = d.childLanes, o.lanes = d.lanes, o.child = d.child, o.subtreeFlags = 0, o.deletions = null, o.memoizedProps = d.memoizedProps, o.memoizedState = d.memoizedState, o.updateQueue = d.updateQueue, o.type = d.type, i = d.dependencies, o.dependencies = i === null ? null : { @@ -2566,33 +2566,33 @@ Error generating stack: ` + h.message + ` firstContext: i.firstContext }), o; } - function wp(o, i, d, h, x, w) { - var j = 0; - if (h = o, typeof h == "function") Lb(h) && (j = 1); + function Tp(o, i, d, h, x, w) { + var B = 0; + if (h = o, typeof h == "function") qb(h) && (B = 1); else if (typeof h == "string") - j = fU( + B = SU( o, d, - me.current + ge.current ) ? 26 : o === "html" || o === "head" || o === "body" ? 27 : 5; else e: switch (h) { - case G: - return o = po(31, d, i, x), o.elementType = G, o.lanes = w, o; - case z: - return Ds(d.children, x, w, i); + case Y: + return o = po(31, d, i, x), o.elementType = Y, o.lanes = w, o; + case M: + return Os(d.children, x, w, i); case O: - j = 8, x |= 24; + B = 8, x |= 24; break; - case L: - return o = po(12, d, i, x | 2), o.elementType = L, o.lanes = w, o; + case k: + return o = po(12, d, i, x | 2), o.elementType = k, o.lanes = w, o; case V: return o = po(13, d, i, x), o.elementType = V, o.lanes = w, o; - case ee: - return o = po(19, d, i, x), o.elementType = ee, o.lanes = w, o; + case Z: + return o = po(19, d, i, x), o.elementType = Z, o.lanes = w, o; case W: - case k: - return o = x | 32, o = po(30, d, i, o), o.elementType = k, o.lanes = w, o.stateNode = { + case L: + return o = x | 32, o = po(30, d, i, o), o.elementType = L, o.lanes = w, o.stateNode = { autoName: null, paired: null, clones: null, @@ -2601,39 +2601,39 @@ Error generating stack: ` + h.message + ` default: if (typeof h == "object" && h !== null) switch (h.$$typeof) { - case U: - j = 10; + case q: + B = 10; break e; case F: - j = 9; + B = 9; break e; - case H: - j = 11; + case U: + B = 11; break e; - case X: - j = 14; + case G: + B = 14; break e; case K: - j = 16, h = null; + B = 16, h = null; break e; } - j = 29, d = Error( + B = 29, d = Error( r(130, o === null ? "null" : typeof o, "") ), h = null; } - return i = po(j, d, i, x), i.elementType = o, i.type = h, i.lanes = w, i; + return i = po(B, d, i, x), i.elementType = o, i.type = h, i.lanes = w, i; } - function Ds(o, i, d, h) { + function Os(o, i, d, h) { return o = po(7, o, h, i), o.lanes = d, o; } - function kb(o, i, d) { + function Wb(o, i, d) { return o = po(6, o, null, i), o.lanes = d, o; } - function CP(o) { + function IP(o) { var i = po(18, null, null, 0); return i.stateNode = o, i; } - function jb(o, i, d) { + function Vb(o, i, d) { return i = po( 4, o.children !== null ? o.children : [], @@ -2645,15 +2645,15 @@ Error generating stack: ` + h.message + ` implementation: o.implementation }, i; } - var $P = /* @__PURE__ */ new WeakMap(); - function qo(o, i) { + var zP = /* @__PURE__ */ new WeakMap(); + function Wo(o, i) { if (typeof o == "object" && o !== null) { - var d = $P.get(o); + var d = zP.get(o); return d !== void 0 ? d : (i = { value: o, source: i, stack: Ge(i) - }, $P.set(o, i), i); + }, zP.set(o, i), i); } return { value: o, @@ -2661,37 +2661,37 @@ Error generating stack: ` + h.message + ` stack: Ge(i) }; } - var tc = [], nc = 0, Ep = null, Vu = 0, Wo = [], Vo = 0, Oi = null, Ta = 1, Na = ""; - function si(o, i) { - tc[nc++] = Vu, tc[nc++] = Ep, Ep = o, Vu = i; + var nc = [], rc = 0, Np = null, Ku = 0, Vo = [], Ko = 0, Li = null, Na = 1, _a = ""; + function li(o, i) { + nc[rc++] = Ku, nc[rc++] = Np, Np = o, Ku = i; } - function wP(o, i, d) { - Wo[Vo++] = Ta, Wo[Vo++] = Na, Wo[Vo++] = Oi, Oi = o; - var h = Ta; - o = Na; + function MP(o, i, d) { + Vo[Ko++] = Na, Vo[Ko++] = _a, Vo[Ko++] = Li, Li = o; + var h = Na; + o = _a; var x = 32 - Fe(h) - 1; h &= ~(1 << x), d += 1; var w = 32 - Fe(i) + x; if (30 < w) { - var j = x - x % 5; - w = (h & (1 << j) - 1).toString(32), h >>= j, x -= j, Ta = 1 << 32 - Fe(i) + x | d << x | h, Na = w + o; + var B = x - x % 5; + w = (h & (1 << B) - 1).toString(32), h >>= B, x -= B, Na = 1 << 32 - Fe(i) + x | d << x | h, _a = w + o; } else - Ta = 1 << w | d << x | h, Na = o; + Na = 1 << w | d << x | h, _a = o; } - function Rp(o) { - o.return !== null && (si(o, 1), wP(o, 1, 0)); + function _p(o) { + o.return !== null && (li(o, 1), MP(o, 1, 0)); } - function Fb(o) { - for (; o === Ep; ) - Ep = tc[--nc], tc[nc] = null, Vu = tc[--nc], tc[nc] = null; - for (; o === Oi; ) - Oi = Wo[--Vo], Wo[Vo] = null, Na = Wo[--Vo], Wo[Vo] = null, Ta = Wo[--Vo], Wo[Vo] = null; + function Kb(o) { + for (; o === Np; ) + Np = nc[--rc], nc[rc] = null, Ku = nc[--rc], nc[rc] = null; + for (; o === Li; ) + Li = Vo[--Ko], Vo[Ko] = null, _a = Vo[--Ko], Vo[Ko] = null, Na = Vo[--Ko], Vo[Ko] = null; } - function EP(o, i) { - Wo[Vo++] = Ta, Wo[Vo++] = Na, Wo[Vo++] = Oi, Ta = i.id, Na = i.overflow, Oi = o; + function AP(o, i) { + Vo[Ko++] = Na, Vo[Ko++] = _a, Vo[Ko++] = Li, Na = i.id, _a = i.overflow, Li = o; } - var zr = null, Gn = null, on = !1, Li = null, Ko = !1, Bb = Error(r(519)); - function ki(o) { + var Ar = null, Gn = null, on = !1, ki = null, Go = !1, Gb = Error(r(519)); + function ji(o) { var i = Error( r( 418, @@ -2699,11 +2699,11 @@ Error generating stack: ` + h.message + ` "" ) ); - throw Ku(qo(i, o)), Bb; + throw Gu(Wo(i, o)), Gb; } - function RP(o) { + function DP(o) { var i = o.stateNode, d = o.type, h = o.memoizedProps; - switch (i[bn] = o, i[kn] = h, d) { + switch (i[yn] = o, i[kn] = h, d) { case "dialog": fn("cancel", i), fn("close", i); break; @@ -2714,8 +2714,8 @@ Error generating stack: ` + h.message + ` break; case "video": case "audio": - for (d = 0; d < hd.length; d++) - fn(hd[d], i); + for (d = 0; d < gd.length; d++) + fn(gd[d], i); break; case "source": fn("error", i); @@ -2729,7 +2729,7 @@ Error generating stack: ` + h.message + ` fn("toggle", i); break; case "input": - fn("invalid", i), k1( + fn("invalid", i), K1( i, h.value, h.defaultValue, @@ -2744,114 +2744,114 @@ Error generating stack: ` + h.message + ` fn("invalid", i); break; case "textarea": - fn("invalid", i), F1(i, h.value, h.defaultValue, h.children); + fn("invalid", i), X1(i, h.value, h.defaultValue, h.children); } - d = h.children, typeof d != "string" && typeof d != "number" && typeof d != "bigint" || i.textContent === "" + d || h.suppressHydrationWarning === !0 || KN(i.textContent, d) ? (h.popover != null && (fn("beforetoggle", i), fn("toggle", i)), h.onScroll != null && fn("scroll", i), h.onScrollEnd != null && fn("scrollend", i), h.onClick != null && (i.onclick = Pa), i = !0) : i = !1, i || ki(o, !0); + d = h.children, typeof d != "string" && typeof d != "number" && typeof d != "bigint" || i.textContent === "" + d || h.suppressHydrationWarning === !0 || n_(i.textContent, d) ? (h.popover != null && (fn("beforetoggle", i), fn("toggle", i)), h.onScroll != null && fn("scroll", i), h.onScrollEnd != null && fn("scrollend", i), h.onClick != null && (i.onclick = Ta), i = !0) : i = !1, i || ji(o, !0); } - function Pp(o) { - for (zr = o.return; zr; ) - switch (zr.tag) { + function Ip(o) { + for (Ar = o.return; Ar; ) + switch (Ar.tag) { case 5: case 31: case 13: - Ko = !1; + Go = !1; return; case 27: case 3: - Ko = !0; + Go = !0; return; default: - zr = zr.return; + Ar = Ar.return; } } - function rc(o) { - if (o !== zr) return !1; - if (!on) return Pp(o), on = !0, !1; + function oc(o) { + if (o !== Ar) return !1; + if (!on) return Ip(o), on = !0, !1; var i = o.tag, d; - if ((d = i !== 3 && i !== 27) && ((d = i === 5) && (d = o.type, d = !(d !== "form" && d !== "button") || vS(o.type, o.memoizedProps)), d = !d), d && Gn && ki(o), Pp(o), i === 13) { + if ((d = i !== 3 && i !== 27) && ((d = i === 5) && (d = o.type, d = !(d !== "form" && d !== "button") || wS(o.type, o.memoizedProps)), d = !d), d && Gn && ji(o), Ip(o), i === 13) { if (o = o.memoizedState, o = o !== null ? o.dehydrated : null, !o) throw Error(r(317)); - Gn = f_(o); + Gn = x_(o); } else if (i === 31) { if (o = o.memoizedState, o = o !== null ? o.dehydrated : null, !o) throw Error(r(317)); - Gn = f_(o); + Gn = x_(o); } else - i === 27 ? (i = Gn, es(o.type) ? (o = RS, RS = null, Gn = o) : Gn = i) : Gn = zr ? Xo(o.stateNode.nextSibling) : null; + i === 27 ? (i = Gn, ts(o.type) ? (o = MS, MS = null, Gn = o) : Gn = i) : Gn = Ar ? Qo(o.stateNode.nextSibling) : null; return !0; } - function Os() { - Gn = zr = null, on = !1; + function Ls() { + Gn = Ar = null, on = !1; } - function Hb() { - var o = Li; + function Xb() { + var o = ki; return o !== null && (vo === null ? vo = o : vo.push.apply( vo, o - ), Li = null), o; + ), ki = null), o; } - function Ku(o) { - Li === null ? Li = [o] : Li.push(o); + function Gu(o) { + ki === null ? ki = [o] : ki.push(o); } - var Ub = oe(null), Ls = null, li = null; - function ji(o, i, d) { - Z(Ub, i._currentValue), i._currentValue = d; + var Qb = ne(null), ks = null, ci = null; + function Fi(o, i, d) { + le(Qb, i._currentValue), i._currentValue = d; } - function ci(o) { - o._currentValue = Ub.current, ce(Ub); + function ui(o) { + o._currentValue = Qb.current, ue(Qb); } - function Tp(o, i, d) { + function zp(o, i, d) { for (; o !== null; ) { var h = o.alternate; if ((o.childLanes & i) !== i ? (o.childLanes |= i, h !== null && (h.childLanes |= i)) : h !== null && (h.childLanes & i) !== i && (h.childLanes |= i), o === d) break; o = o.return; } } - function qb(o, i, d, h) { + function Yb(o, i, d, h) { var x = o.child; for (x !== null && (x.return = o); x !== null; ) { var w = x.dependencies; if (w !== null) { - var j = x.child; + var B = x.child; w = w.firstContext; e: for (; w !== null; ) { - var ae = w; + var oe = w; w = x; - for (var ge = 0; ge < i.length; ge++) - if (ae.context === i[ge]) { - w.lanes |= d, ae = w.alternate, ae !== null && (ae.lanes |= d), Tp( + for (var ve = 0; ve < i.length; ve++) + if (oe.context === i[ve]) { + w.lanes |= d, oe = w.alternate, oe !== null && (oe.lanes |= d), zp( w.return, d, o - ), h || (j = null); + ), h || (B = null); break e; } - w = ae.next; + w = oe.next; } } else if (x.tag === 18) { - if (j = x.return, j === null) throw Error(r(341)); - j.lanes |= d, w = j.alternate, w !== null && (w.lanes |= d), Tp(j, d, o), j = null; + if (B = x.return, B === null) throw Error(r(341)); + B.lanes |= d, w = B.alternate, w !== null && (w.lanes |= d), zp(B, d, o), B = null; } else - x.tag === 13 && x.memoizedState !== null && x.memoizedState.dehydrated === null ? (x.lanes |= d, j = x.alternate, j !== null && (j.lanes |= d), Tp( + x.tag === 13 && x.memoizedState !== null && x.memoizedState.dehydrated === null ? (x.lanes |= d, B = x.alternate, B !== null && (B.lanes |= d), zp( x.return, d, o - ), j = x.child, j = j !== null ? j.sibling : null) : j = x.child; - if (j !== null) j.return = x; + ), B = x.child, B = B !== null ? B.sibling : null) : B = x.child; + if (B !== null) B.return = x; else - for (j = x; j !== null; ) { - if (j === o) { - j = null; + for (B = x; B !== null; ) { + if (B === o) { + B = null; break; } - if (x = j.sibling, x !== null) { - x.return = j.return, j = x; + if (x = B.sibling, x !== null) { + x.return = B.return, B = x; break; } - j = j.return; + B = B.return; } - x = j; + x = B; } } - function ks(o, i, d, h) { + function js(o, i, d, h) { o = null; for (var x = i, w = !1; x !== null; ) { if (!w) { @@ -2859,26 +2859,26 @@ Error generating stack: ` + h.message + ` else if ((x.flags & 262144) !== 0) break; } if (x.tag === 10) { - var j = x.alternate; - if (j === null) throw Error(r(387)); - if (j = j.memoizedProps, j !== null) { - var ae = x.type; - Po(x.pendingProps.value, j.value) || (o !== null ? o.push(ae) : o = [ae]); + var B = x.alternate; + if (B === null) throw Error(r(387)); + if (B = B.memoizedProps, B !== null) { + var oe = x.type; + Po(x.pendingProps.value, B.value) || (o !== null ? o.push(oe) : o = [oe]); } - } else if (x === ve.current) { - if (j = x.alternate, j === null) throw Error(r(387)); - j.memoizedState.memoizedState !== x.memoizedState.memoizedState && (o !== null ? o.push(Tc) : o = [Tc]); + } else if (x === be.current) { + if (B = x.alternate, B === null) throw Error(r(387)); + B.memoizedState.memoizedState !== x.memoizedState.memoizedState && (o !== null ? o.push(Nc) : o = [Nc]); } x = x.return; } - return o !== null && qb( + return o !== null && Yb( i, o, d, h ), i.flags |= 262144, o !== null; } - function Np(o) { + function Mp(o) { for (o = o.firstContext; o !== null; ) { if (!Po( o.context._currentValue, @@ -2889,24 +2889,24 @@ Error generating stack: ` + h.message + ` } return !1; } - function js(o) { - Ls = o, li = null, o = o.dependencies, o !== null && (o.firstContext = null); + function Fs(o) { + ks = o, ci = null, o = o.dependencies, o !== null && (o.firstContext = null); } - function Fr(o) { - return PP(Ls, o); + function Br(o) { + return OP(ks, o); } - function _p(o, i) { - return Ls === null && js(o), PP(o, i); + function Ap(o, i) { + return ks === null && Fs(o), OP(o, i); } - function PP(o, i) { + function OP(o, i) { var d = i._currentValue; - if (i = { context: i, memoizedValue: d, next: null }, li === null) { + if (i = { context: i, memoizedValue: d, next: null }, ci === null) { if (o === null) throw Error(r(308)); - li = i, o.dependencies = { lanes: 0, firstContext: i }, o.flags |= 524288; - } else li = li.next = i; + ci = i, o.dependencies = { lanes: 0, firstContext: i }, o.flags |= 524288; + } else ci = ci.next = i; return d; } - var j6 = typeof AbortController < "u" ? AbortController : function() { + var K6 = typeof AbortController < "u" ? AbortController : function() { var o = [], i = this.signal = { aborted: !1, addEventListener: function(d, h) { @@ -2918,27 +2918,27 @@ Error generating stack: ` + h.message + ` return d(); }); }; - }, F6 = e.unstable_scheduleCallback, B6 = e.unstable_NormalPriority, mr = { - $$typeof: U, + }, G6 = e.unstable_scheduleCallback, X6 = e.unstable_NormalPriority, pr = { + $$typeof: q, Consumer: null, Provider: null, _currentValue: null, _currentValue2: null, _threadCount: 0 }; - function Wb() { + function Zb() { return { - controller: new j6(), + controller: new K6(), data: /* @__PURE__ */ new Map(), refCount: 0 }; } - function Gu(o) { - o.refCount--, o.refCount === 0 && F6(B6, function() { + function Xu(o) { + o.refCount--, o.refCount === 0 && G6(X6, function() { o.controller.abort(); }); } - function TP(o, i) { + function LP(o, i) { if ((o.pendingLanes & 4194048) !== 0) { var d = o.transitionTypes; for (d === null && (d = o.transitionTypes = []), o = 0; o < i.length; o++) { @@ -2947,16 +2947,16 @@ Error generating stack: ` + h.message + ` } } } - var Xu = null; - function H6(o) { + var Qu = null; + function Q6(o) { var i = o.transitionTypes; return o.transitionTypes = null, i; } - var Qu = null, Vb = 0, Fs = 0, oc = null; - function U6(o, i) { - if (Qu === null) { - var d = Qu = []; - Vb = 0, Fs = lS(), oc = { + var Yu = null, Jb = 0, Bs = 0, ac = null; + function Y6(o, i) { + if (Yu === null) { + var d = Yu = []; + Jb = 0, Bs = hS(), ac = { status: "pending", value: void 0, then: function(h) { @@ -2964,17 +2964,17 @@ Error generating stack: ` + h.message + ` } }; } - return Vb++, i.then(NP, NP), i; + return Jb++, i.then(kP, kP), i; } - function NP() { - if (--Vb === 0 && (Xu = null, Qu !== null)) { - oc !== null && (oc.status = "fulfilled"); - var o = Qu; - Qu = null, Fs = 0, oc = null; + function kP() { + if (--Jb === 0 && (Qu = null, Yu !== null)) { + ac !== null && (ac.status = "fulfilled"); + var o = Yu; + Yu = null, Bs = 0, ac = null; for (var i = 0; i < o.length; i++) (0, o[i])(); } } - function q6(o, i) { + function Z6(o, i) { var d = [], h = { status: "pending", value: null, @@ -2994,49 +2994,49 @@ Error generating stack: ` + h.message + ` } ), h; } - var _P = q.S; - q.S = function(o, i) { - if (CN = Je(), typeof i == "object" && i !== null && typeof i.then == "function" && U6(o, i), Xu !== null) - for (var d = Cc; d !== null; ) - TP(d, Xu), d = d.next; + var jP = X.S; + X.S = function(o, i) { + if (IN = Je(), typeof i == "object" && i !== null && typeof i.then == "function" && Y6(o, i), Qu !== null) + for (var d = $c; d !== null; ) + LP(d, Qu), d = d.next; if (d = o.types, d !== null) { - for (var h = Cc; h !== null; ) - TP(h, d), h = h.next; - if (Fs !== 0) { - h = Xu, h === null && (h = Xu = []); + for (var h = $c; h !== null; ) + LP(h, d), h = h.next; + if (Bs !== 0) { + h = Qu, h === null && (h = Qu = []); for (var x = 0; x < d.length; x++) { var w = d[x]; h.indexOf(w) === -1 && h.push(w); } } } - _P !== null && _P(o, i); + jP !== null && jP(o, i); }; - var Bs = oe(null); - function Kb() { - var o = Bs.current; + var Hs = ne(null); + function ey() { + var o = Hs.current; return o !== null ? o : Vn.pooledCache; } - function Ip(o, i) { - i === null ? Z(Bs, Bs.current) : Z(Bs, i.pool); + function Dp(o, i) { + i === null ? le(Hs, Hs.current) : le(Hs, i.pool); } - function IP() { - var o = Kb(); - return o === null ? null : { parent: mr._currentValue, pool: o }; + function FP() { + var o = ey(); + return o === null ? null : { parent: pr._currentValue, pool: o }; } - var ac = Error(r(460)), Gb = Error(r(474)), Mp = Error(r(542)), zp = { then: function() { + var ic = Error(r(460)), ty = Error(r(474)), Op = Error(r(542)), Lp = { then: function() { } }; - function MP(o) { + function BP(o) { return o = o.status, o === "fulfilled" || o === "rejected"; } - function zP(o, i, d) { - switch (d = o[d], d === void 0 ? o.push(i) : d !== i && (i.then(Pa, Pa), i = d), i.status) { + function HP(o, i, d) { + switch (d = o[d], d === void 0 ? o.push(i) : d !== i && (i.then(Ta, Ta), i = d), i.status) { case "fulfilled": return i.value; case "rejected": - throw o = i.reason, DP(o), o === void 0 && !("reason" in i) ? Error(r(600)) : o; + throw o = i.reason, qP(o), o === void 0 && !("reason" in i) ? Error(r(600)) : o; default: - if (typeof i.status == "string") i.then(Pa, Pa); + if (typeof i.status == "string") i.then(Ta, Ta); else { if (o = Vn, o !== null && 100 < o.shellSuspendCounter) throw Error(r(482)); @@ -3059,420 +3059,420 @@ Error generating stack: ` + h.message + ` case "fulfilled": return i.value; case "rejected": - throw o = i.reason, DP(o), o; + throw o = i.reason, qP(o), o; } - throw Us = i, ac; + throw qs = i, ic; } } - function Hs(o) { + function Us(o) { try { var i = o._init; return i(o._payload); } catch (d) { - throw d !== null && typeof d == "object" && typeof d.then == "function" ? (Us = d, ac) : d; + throw d !== null && typeof d == "object" && typeof d.then == "function" ? (qs = d, ic) : d; } } - var Us = null; - function AP() { - if (Us === null) throw Error(r(459)); - var o = Us; - return Us = null, o; + var qs = null; + function UP() { + if (qs === null) throw Error(r(459)); + var o = qs; + return qs = null, o; } - function DP(o) { - if (o === ac || o === Mp) + function qP(o) { + if (o === ic || o === Op) throw Error(r(483)); } - var ic = null, Yu = 0; - function Ap(o) { - var i = Yu; - return Yu += 1, ic === null && (ic = []), zP(ic, o, i); + var sc = null, Zu = 0; + function kp(o) { + var i = Zu; + return Zu += 1, sc === null && (sc = []), HP(sc, o, i); } - function Fi(o, i) { + function Bi(o, i) { i = i.props.ref, o.ref = i !== void 0 ? i : null; } - function Dp(o, i) { - throw i.$$typeof === P ? Error(r(525)) : (o = Object.prototype.toString.call(i), Error( + function jp(o, i) { + throw i.$$typeof === T ? Error(r(525)) : (o = Object.prototype.toString.call(i), Error( r( 31, o === "[object Object]" ? "object with keys {" + Object.keys(i).join(", ") + "}" : o ) )); } - function OP(o) { - function i(_e, Ce) { + function WP(o) { + function i(Ie, we) { if (o) { - var Ae = _e.deletions; - Ae === null ? (_e.deletions = [Ce], _e.flags |= 16) : Ae.push(Ce); + var Ae = Ie.deletions; + Ae === null ? (Ie.deletions = [we], Ie.flags |= 16) : Ae.push(we); } } - function d(_e, Ce) { + function d(Ie, we) { if (!o) return null; - for (; Ce !== null; ) - i(_e, Ce), Ce = Ce.sibling; + for (; we !== null; ) + i(Ie, we), we = we.sibling; return null; } - function h(_e) { - for (var Ce = /* @__PURE__ */ new Map(); _e !== null; ) - _e.key === null ? Ce.set(_e.index, _e) : Ce.set(_e.key, _e), _e = _e.sibling; - return Ce; + function h(Ie) { + for (var we = /* @__PURE__ */ new Map(); Ie !== null; ) + Ie.key === null ? we.set(Ie.index, Ie) : we.set(Ie.key, Ie), Ie = Ie.sibling; + return we; } - function x(_e, Ce) { - return _e = ii(_e, Ce), _e.index = 0, _e.sibling = null, _e; + function x(Ie, we) { + return Ie = si(Ie, we), Ie.index = 0, Ie.sibling = null, Ie; } - function w(_e, Ce, Ae) { - return _e.index = Ae, o ? (Ae = _e.alternate, Ae !== null ? (Ae = Ae.index, Ae < Ce ? (_e.flags |= 2, Ce) : Ae) : (_e.flags |= 134217730, Ce)) : (_e.flags |= 1048576, Ce); + function w(Ie, we, Ae) { + return Ie.index = Ae, o ? (Ae = Ie.alternate, Ae !== null ? (Ae = Ae.index, Ae < we ? (Ie.flags |= 2, we) : Ae) : (Ie.flags |= 134217730, we)) : (Ie.flags |= 1048576, we); } - function j(_e) { - return o && _e.alternate === null && (_e.flags |= 134217730), _e; + function B(Ie) { + return o && Ie.alternate === null && (Ie.flags |= 134217730), Ie; } - function ae(_e, Ce, Ae, Xe) { - return Ce === null || Ce.tag !== 6 ? (Ce = kb(Ae, _e.mode, Xe), Ce.return = _e, Ce) : (Ce = x(Ce, Ae), Ce.return = _e, Ce); + function oe(Ie, we, Ae, Xe) { + return we === null || we.tag !== 6 ? (we = Wb(Ae, Ie.mode, Xe), we.return = Ie, we) : (we = x(we, Ae), we.return = Ie, we); } - function ge(_e, Ce, Ae, Xe) { - var bt = Ae.type; - return bt === z ? (_e = je( - _e, - Ce, + function ve(Ie, we, Ae, Xe) { + var St = Ae.type; + return St === M ? (Ie = je( + Ie, + we, Ae.props.children, Xe, Ae.key - ), Fi(_e, Ae), _e) : Ce !== null && (Ce.elementType === bt || typeof bt == "object" && bt !== null && bt.$$typeof === K && Hs(bt) === Ce.type) ? (Ce = x(Ce, Ae.props), Fi(Ce, Ae), Ce.return = _e, Ce) : (Ce = wp( + ), Bi(Ie, Ae), Ie) : we !== null && (we.elementType === St || typeof St == "object" && St !== null && St.$$typeof === K && Us(St) === we.type) ? (we = x(we, Ae.props), Bi(we, Ae), we.return = Ie, we) : (we = Tp( Ae.type, Ae.key, Ae.props, null, - _e.mode, + Ie.mode, Xe - ), Fi(Ce, Ae), Ce.return = _e, Ce); + ), Bi(we, Ae), we.return = Ie, we); } - function Ie(_e, Ce, Ae, Xe) { - return Ce === null || Ce.tag !== 4 || Ce.stateNode.containerInfo !== Ae.containerInfo || Ce.stateNode.implementation !== Ae.implementation ? (Ce = jb(Ae, _e.mode, Xe), Ce.return = _e, Ce) : (Ce = x(Ce, Ae.children || []), Ce.return = _e, Ce); + function ze(Ie, we, Ae, Xe) { + return we === null || we.tag !== 4 || we.stateNode.containerInfo !== Ae.containerInfo || we.stateNode.implementation !== Ae.implementation ? (we = Vb(Ae, Ie.mode, Xe), we.return = Ie, we) : (we = x(we, Ae.children || []), we.return = Ie, we); } - function je(_e, Ce, Ae, Xe, bt) { - return Ce === null || Ce.tag !== 7 ? (Ce = Ds( + function je(Ie, we, Ae, Xe, St) { + return we === null || we.tag !== 7 ? (we = Os( Ae, - _e.mode, + Ie.mode, Xe, - bt - ), Ce.return = _e, Ce) : (Ce = x(Ce, Ae), Ce.return = _e, Ce); - } - function Ye(_e, Ce, Ae) { - if (typeof Ce == "string" && Ce !== "" || typeof Ce == "number" || typeof Ce == "bigint") - return Ce = kb( - "" + Ce, - _e.mode, + St + ), we.return = Ie, we) : (we = x(we, Ae), we.return = Ie, we); + } + function Ye(Ie, we, Ae) { + if (typeof we == "string" && we !== "" || typeof we == "number" || typeof we == "bigint") + return we = Wb( + "" + we, + Ie.mode, Ae - ), Ce.return = _e, Ce; - if (typeof Ce == "object" && Ce !== null) { - switch (Ce.$$typeof) { - case T: - return Ae = wp( - Ce.type, - Ce.key, - Ce.props, + ), we.return = Ie, we; + if (typeof we == "object" && we !== null) { + switch (we.$$typeof) { + case N: + return Ae = Tp( + we.type, + we.key, + we.props, null, - _e.mode, + Ie.mode, Ae - ), Fi(Ae, Ce), Ae.return = _e, Ae; + ), Bi(Ae, we), Ae.return = Ie, Ae; case A: - return Ce = jb( - Ce, - _e.mode, + return we = Vb( + we, + Ie.mode, Ae - ), Ce.return = _e, Ce; + ), we.return = Ie, we; case K: - return Ce = Hs(Ce), Ye(_e, Ce, Ae); + return we = Us(we), Ye(Ie, we, Ae); } - if (Y(Ce) || re(Ce)) - return Ce = Ds( - Ce, - _e.mode, + if (ae(we) || te(we)) + return we = Os( + we, + Ie.mode, Ae, null - ), Ce.return = _e, Ce; - if (typeof Ce.then == "function") - return Ye(_e, Ap(Ce), Ae); - if (Ce.$$typeof === U) + ), we.return = Ie, we; + if (typeof we.then == "function") + return Ye(Ie, kp(we), Ae); + if (we.$$typeof === q) return Ye( - _e, - _p(_e, Ce), + Ie, + Ap(Ie, we), Ae ); - Dp(_e, Ce); + jp(Ie, we); } return null; } - function Pe(_e, Ce, Ae, Xe) { - var bt = Ce !== null ? Ce.key : null; + function Te(Ie, we, Ae, Xe) { + var St = we !== null ? we.key : null; if (typeof Ae == "string" && Ae !== "" || typeof Ae == "number" || typeof Ae == "bigint") - return bt !== null ? null : ae(_e, Ce, "" + Ae, Xe); + return St !== null ? null : oe(Ie, we, "" + Ae, Xe); if (typeof Ae == "object" && Ae !== null) { switch (Ae.$$typeof) { - case T: - return Ae.key === bt ? ge(_e, Ce, Ae, Xe) : null; + case N: + return Ae.key === St ? ve(Ie, we, Ae, Xe) : null; case A: - return Ae.key === bt ? Ie(_e, Ce, Ae, Xe) : null; + return Ae.key === St ? ze(Ie, we, Ae, Xe) : null; case K: - return Ae = Hs(Ae), Pe(_e, Ce, Ae, Xe); + return Ae = Us(Ae), Te(Ie, we, Ae, Xe); } - if (Y(Ae) || re(Ae)) - return bt !== null ? null : je(_e, Ce, Ae, Xe, null); + if (ae(Ae) || te(Ae)) + return St !== null ? null : je(Ie, we, Ae, Xe, null); if (typeof Ae.then == "function") - return Pe( - _e, - Ce, - Ap(Ae), + return Te( + Ie, + we, + kp(Ae), Xe ); - if (Ae.$$typeof === U) - return Pe( - _e, - Ce, - _p(_e, Ae), + if (Ae.$$typeof === q) + return Te( + Ie, + we, + Ap(Ie, Ae), Xe ); - Dp(_e, Ae); + jp(Ie, Ae); } return null; } - function Le(_e, Ce, Ae, Xe, bt) { + function Le(Ie, we, Ae, Xe, St) { if (typeof Xe == "string" && Xe !== "" || typeof Xe == "number" || typeof Xe == "bigint") - return _e = _e.get(Ae) || null, ae(Ce, _e, "" + Xe, bt); + return Ie = Ie.get(Ae) || null, oe(we, Ie, "" + Xe, St); if (typeof Xe == "object" && Xe !== null) { switch (Xe.$$typeof) { - case T: - return _e = _e.get( + case N: + return Ie = Ie.get( Xe.key === null ? Ae : Xe.key - ) || null, ge(Ce, _e, Xe, bt); + ) || null, ve(we, Ie, Xe, St); case A: - return _e = _e.get( + return Ie = Ie.get( Xe.key === null ? Ae : Xe.key - ) || null, Ie(Ce, _e, Xe, bt); + ) || null, ze(we, Ie, Xe, St); case K: - return Xe = Hs(Xe), Le( - _e, - Ce, + return Xe = Us(Xe), Le( + Ie, + we, Ae, Xe, - bt + St ); } - if (Y(Xe) || re(Xe)) - return _e = _e.get(Ae) || null, je(Ce, _e, Xe, bt, null); + if (ae(Xe) || te(Xe)) + return Ie = Ie.get(Ae) || null, je(we, Ie, Xe, St, null); if (typeof Xe.then == "function") return Le( - _e, - Ce, + Ie, + we, Ae, - Ap(Xe), - bt + kp(Xe), + St ); - if (Xe.$$typeof === U) + if (Xe.$$typeof === q) return Le( - _e, - Ce, + Ie, + we, Ae, - _p(Ce, Xe), - bt + Ap(we, Xe), + St ); - Dp(Ce, Xe); + jp(we, Xe); } return null; } - function ut(_e, Ce, Ae, Xe) { - for (var bt = null, gn = null, Mt = Ce, jt = Ce = 0, gr = null; Mt !== null && jt < Ae.length; jt++) { - Mt.index > jt ? (gr = Mt, Mt = null) : gr = Mt.sibling; - var yn = Pe( - _e, + function dt(Ie, we, Ae, Xe) { + for (var St = null, vn = null, Mt = we, jt = we = 0, vr = null; Mt !== null && jt < Ae.length; jt++) { + Mt.index > jt ? (vr = Mt, Mt = null) : vr = Mt.sibling; + var Sn = Te( + Ie, Mt, Ae[jt], Xe ); - if (yn === null) { - Mt === null && (Mt = gr); + if (Sn === null) { + Mt === null && (Mt = vr); break; } - o && Mt && yn.alternate === null && i(_e, Mt), Ce = w(yn, Ce, jt), gn === null ? bt = yn : gn.sibling = yn, gn = yn, Mt = gr; + o && Mt && Sn.alternate === null && i(Ie, Mt), we = w(Sn, we, jt), vn === null ? St = Sn : vn.sibling = Sn, vn = Sn, Mt = vr; } if (jt === Ae.length) - return d(_e, Mt), on && si(_e, jt), bt; + return d(Ie, Mt), on && li(Ie, jt), St; if (Mt === null) { for (; jt < Ae.length; jt++) - Mt = Ye(_e, Ae[jt], Xe), Mt !== null && (Ce = w( + Mt = Ye(Ie, Ae[jt], Xe), Mt !== null && (we = w( Mt, - Ce, + we, jt - ), gn === null ? bt = Mt : gn.sibling = Mt, gn = Mt); - return on && si(_e, jt), bt; + ), vn === null ? St = Mt : vn.sibling = Mt, vn = Mt); + return on && li(Ie, jt), St; } for (Mt = h(Mt); jt < Ae.length; jt++) - gr = Le( + vr = Le( Mt, - _e, + Ie, jt, Ae[jt], Xe - ), gr !== null && (o && (yn = gr.alternate, yn !== null && Mt.delete(yn.key === null ? jt : yn.key)), Ce = w( - gr, - Ce, + ), vr !== null && (o && (Sn = vr.alternate, Sn !== null && Mt.delete(Sn.key === null ? jt : Sn.key)), we = w( + vr, + we, jt - ), gn === null ? bt = gr : gn.sibling = gr, gn = gr); - return o && Mt.forEach(function(as) { - return i(_e, as); - }), on && si(_e, jt), bt; + ), vn === null ? St = vr : vn.sibling = vr, vn = vr); + return o && Mt.forEach(function(is) { + return i(Ie, is); + }), on && li(Ie, jt), St; } - function $t(_e, Ce, Ae, Xe) { + function Et(Ie, we, Ae, Xe) { if (Ae == null) throw Error(r(151)); - for (var bt = null, gn = null, Mt = Ce, jt = Ce = 0, gr = null, yn = Ae.next(); Mt !== null && !yn.done; jt++, yn = Ae.next()) { - Mt.index > jt ? (gr = Mt, Mt = null) : gr = Mt.sibling; - var as = Pe(_e, Mt, yn.value, Xe); - if (as === null) { - Mt === null && (Mt = gr); + for (var St = null, vn = null, Mt = we, jt = we = 0, vr = null, Sn = Ae.next(); Mt !== null && !Sn.done; jt++, Sn = Ae.next()) { + Mt.index > jt ? (vr = Mt, Mt = null) : vr = Mt.sibling; + var is = Te(Ie, Mt, Sn.value, Xe); + if (is === null) { + Mt === null && (Mt = vr); break; } - o && Mt && as.alternate === null && i(_e, Mt), Ce = w(as, Ce, jt), gn === null ? bt = as : gn.sibling = as, gn = as, Mt = gr; + o && Mt && is.alternate === null && i(Ie, Mt), we = w(is, we, jt), vn === null ? St = is : vn.sibling = is, vn = is, Mt = vr; } - if (yn.done) - return d(_e, Mt), on && si(_e, jt), bt; + if (Sn.done) + return d(Ie, Mt), on && li(Ie, jt), St; if (Mt === null) { - for (; !yn.done; jt++, yn = Ae.next()) - yn = Ye(_e, yn.value, Xe), yn !== null && (Ce = w(yn, Ce, jt), gn === null ? bt = yn : gn.sibling = yn, gn = yn); - return on && si(_e, jt), bt; - } - for (Mt = h(Mt); !yn.done; jt++, yn = Ae.next()) - yn = Le(Mt, _e, jt, yn.value, Xe), yn !== null && (o && (gr = yn.alternate, gr !== null && Mt.delete( - gr.key === null ? jt : gr.key - )), Ce = w(yn, Ce, jt), gn === null ? bt = yn : gn.sibling = yn, gn = yn); - return o && Mt.forEach(function(wU) { - return i(_e, wU); - }), on && si(_e, jt), bt; - } - function Yt(_e, Ce, Ae, Xe) { - if (typeof Ae == "object" && Ae !== null && Ae.type === z && Ae.key === null && Ae.props.ref === void 0 && (Ae = Ae.props.children), typeof Ae == "object" && Ae !== null) { + for (; !Sn.done; jt++, Sn = Ae.next()) + Sn = Ye(Ie, Sn.value, Xe), Sn !== null && (we = w(Sn, we, jt), vn === null ? St = Sn : vn.sibling = Sn, vn = Sn); + return on && li(Ie, jt), St; + } + for (Mt = h(Mt); !Sn.done; jt++, Sn = Ae.next()) + Sn = Le(Mt, Ie, jt, Sn.value, Xe), Sn !== null && (o && (vr = Sn.alternate, vr !== null && Mt.delete( + vr.key === null ? jt : vr.key + )), we = w(Sn, we, jt), vn === null ? St = Sn : vn.sibling = Sn, vn = Sn); + return o && Mt.forEach(function(zU) { + return i(Ie, zU); + }), on && li(Ie, jt), St; + } + function Yt(Ie, we, Ae, Xe) { + if (typeof Ae == "object" && Ae !== null && Ae.type === M && Ae.key === null && Ae.props.ref === void 0 && (Ae = Ae.props.children), typeof Ae == "object" && Ae !== null) { switch (Ae.$$typeof) { - case T: + case N: e: { - for (var bt = Ae.key; Ce !== null; ) { - if (Ce.key === bt) { - if (bt = Ae.type, bt === z) { - if (Ce.tag === 7) { + for (var St = Ae.key; we !== null; ) { + if (we.key === St) { + if (St = Ae.type, St === M) { + if (we.tag === 7) { d( - _e, - Ce.sibling + Ie, + we.sibling ), Xe = x( - Ce, + we, Ae.props.children - ), Fi(Xe, Ae), Xe.return = _e, _e = Xe; + ), Bi(Xe, Ae), Xe.return = Ie, Ie = Xe; break e; } - } else if (Ce.elementType === bt || typeof bt == "object" && bt !== null && bt.$$typeof === K && Hs(bt) === Ce.type) { + } else if (we.elementType === St || typeof St == "object" && St !== null && St.$$typeof === K && Us(St) === we.type) { d( - _e, - Ce.sibling - ), Xe = x(Ce, Ae.props), Fi(Xe, Ae), Xe.return = _e, _e = Xe; + Ie, + we.sibling + ), Xe = x(we, Ae.props), Bi(Xe, Ae), Xe.return = Ie, Ie = Xe; break e; } - d(_e, Ce); + d(Ie, we); break; - } else i(_e, Ce); - Ce = Ce.sibling; + } else i(Ie, we); + we = we.sibling; } - Ae.type === z ? (Xe = Ds( + Ae.type === M ? (Xe = Os( Ae.props.children, - _e.mode, + Ie.mode, Xe, Ae.key - ), Fi(Xe, Ae), Xe.return = _e, _e = Xe) : (Xe = wp( + ), Bi(Xe, Ae), Xe.return = Ie, Ie = Xe) : (Xe = Tp( Ae.type, Ae.key, Ae.props, null, - _e.mode, + Ie.mode, Xe - ), Fi(Xe, Ae), Xe.return = _e, _e = Xe); + ), Bi(Xe, Ae), Xe.return = Ie, Ie = Xe); } - return j(_e); + return B(Ie); case A: e: { - for (bt = Ae.key; Ce !== null; ) { - if (Ce.key === bt) - if (Ce.tag === 4 && Ce.stateNode.containerInfo === Ae.containerInfo && Ce.stateNode.implementation === Ae.implementation) { + for (St = Ae.key; we !== null; ) { + if (we.key === St) + if (we.tag === 4 && we.stateNode.containerInfo === Ae.containerInfo && we.stateNode.implementation === Ae.implementation) { d( - _e, - Ce.sibling - ), Xe = x(Ce, Ae.children || []), Xe.return = _e, _e = Xe; + Ie, + we.sibling + ), Xe = x(we, Ae.children || []), Xe.return = Ie, Ie = Xe; break e; } else { - d(_e, Ce); + d(Ie, we); break; } - else i(_e, Ce); - Ce = Ce.sibling; + else i(Ie, we); + we = we.sibling; } - Xe = jb(Ae, _e.mode, Xe), Xe.return = _e, _e = Xe; + Xe = Vb(Ae, Ie.mode, Xe), Xe.return = Ie, Ie = Xe; } - return j(_e); + return B(Ie); case K: - return Ae = Hs(Ae), Yt( - _e, - Ce, + return Ae = Us(Ae), Yt( + Ie, + we, Ae, Xe ); } - if (Y(Ae)) - return ut( - _e, - Ce, + if (ae(Ae)) + return dt( + Ie, + we, Ae, Xe ); - if (re(Ae)) { - if (bt = re(Ae), typeof bt != "function") throw Error(r(150)); - return Ae = bt.call(Ae), $t( - _e, - Ce, + if (te(Ae)) { + if (St = te(Ae), typeof St != "function") throw Error(r(150)); + return Ae = St.call(Ae), Et( + Ie, + we, Ae, Xe ); } if (typeof Ae.then == "function") return Yt( - _e, - Ce, - Ap(Ae), + Ie, + we, + kp(Ae), Xe ); - if (Ae.$$typeof === U) + if (Ae.$$typeof === q) return Yt( - _e, - Ce, - _p(_e, Ae), + Ie, + we, + Ap(Ie, Ae), Xe ); - Dp(_e, Ae); + jp(Ie, Ae); } - return typeof Ae == "string" && Ae !== "" || typeof Ae == "number" || typeof Ae == "bigint" ? (Ae = "" + Ae, Ce !== null && Ce.tag === 6 ? (d(_e, Ce.sibling), Xe = x(Ce, Ae), Xe.return = _e, _e = Xe) : (d(_e, Ce), Xe = kb(Ae, _e.mode, Xe), Xe.return = _e, _e = Xe), j(_e)) : d(_e, Ce); + return typeof Ae == "string" && Ae !== "" || typeof Ae == "number" || typeof Ae == "bigint" ? (Ae = "" + Ae, we !== null && we.tag === 6 ? (d(Ie, we.sibling), Xe = x(we, Ae), Xe.return = Ie, Ie = Xe) : (d(Ie, we), Xe = Wb(Ae, Ie.mode, Xe), Xe.return = Ie, Ie = Xe), B(Ie)) : d(Ie, we); } - return function(_e, Ce, Ae, Xe) { + return function(Ie, we, Ae, Xe) { try { - Yu = 0; - var bt = Yt( - _e, - Ce, + Zu = 0; + var St = Yt( + Ie, + we, Ae, Xe ); - return ic = null, bt; + return sc = null, St; } catch (Mt) { - if (Mt === ac || Mt === Mp) throw Mt; - var gn = po(29, Mt, null, _e.mode); - return gn.lanes = Xe, gn.return = _e, gn; + if (Mt === ic || Mt === Op) throw Mt; + var vn = po(29, Mt, null, Ie.mode); + return vn.lanes = Xe, vn.return = Ie, vn; } }; } - var qs = OP(!0), LP = OP(!1), Bi = !1; - function Xb(o) { + var Ws = WP(!0), VP = WP(!1), Hi = !1; + function ny(o) { o.updateQueue = { baseState: o.memoizedState, firstBaseUpdate: null, @@ -3481,7 +3481,7 @@ Error generating stack: ` + h.message + ` callbacks: null }; } - function Qb(o, i) { + function ry(o, i) { o = o.updateQueue, i.updateQueue === o && (i.updateQueue = { baseState: o.baseState, firstBaseUpdate: o.firstBaseUpdate, @@ -3490,38 +3490,38 @@ Error generating stack: ` + h.message + ` callbacks: null }); } - function Hi(o) { + function Ui(o) { return { lane: o, tag: 0, payload: null, callback: null, next: null }; } - function Ui(o, i, d) { + function qi(o, i, d) { var h = o.updateQueue; if (h === null) return null; if (h = h.shared, (Pn & 2) !== 0) { var x = h.pending; - return x === null ? i.next = i : (i.next = x.next, x.next = i), h.pending = i, i = $p(o), SP(o, null, d), i; + return x === null ? i.next = i : (i.next = x.next, x.next = i), h.pending = i, i = Pp(o), NP(o, null, d), i; } - return Cp(o, h, i, d), $p(o); + return Rp(o, h, i, d), Pp(o); } - function Zu(o, i, d) { + function Ju(o, i, d) { if (i = i.updateQueue, i !== null && (i = i.shared, (d & 4194048) !== 0)) { var h = i.lanes; h &= o.pendingLanes, d |= h, i.lanes = d, Xt(o, d); } } - function Yb(o, i) { + function oy(o, i) { var d = o.updateQueue, h = o.alternate; if (h !== null && (h = h.updateQueue, d === h)) { var x = null, w = null; if (d = d.firstBaseUpdate, d !== null) { do { - var j = { + var B = { lane: d.lane, tag: d.tag, payload: d.payload, callback: null, next: null }; - w === null ? x = w = j : w = w.next = j, d = d.next; + w === null ? x = w = B : w = w.next = B, d = d.next; } while (d !== null); w === null ? x = w = i : w = w.next = i; } else x = w = i; @@ -3536,128 +3536,128 @@ Error generating stack: ` + h.message + ` } o = d.lastBaseUpdate, o === null ? d.firstBaseUpdate = i : o.next = i, d.lastBaseUpdate = i; } - var Zb = !1; - function Ju() { - if (Zb) { - var o = oc; + var ay = !1; + function ed() { + if (ay) { + var o = ac; if (o !== null) throw o; } } - function ed(o, i, d, h) { - Zb = !1; + function td(o, i, d, h) { + ay = !1; var x = o.updateQueue; - Bi = !1; - var w = x.firstBaseUpdate, j = x.lastBaseUpdate, ae = x.shared.pending; - if (ae !== null) { + Hi = !1; + var w = x.firstBaseUpdate, B = x.lastBaseUpdate, oe = x.shared.pending; + if (oe !== null) { x.shared.pending = null; - var ge = ae, Ie = ge.next; - ge.next = null, j === null ? w = Ie : j.next = Ie, j = ge; + var ve = oe, ze = ve.next; + ve.next = null, B === null ? w = ze : B.next = ze, B = ve; var je = o.alternate; - je !== null && (je = je.updateQueue, ae = je.lastBaseUpdate, ae !== j && (ae === null ? je.firstBaseUpdate = Ie : ae.next = Ie, je.lastBaseUpdate = ge)); + je !== null && (je = je.updateQueue, oe = je.lastBaseUpdate, oe !== B && (oe === null ? je.firstBaseUpdate = ze : oe.next = ze, je.lastBaseUpdate = ve)); } if (w !== null) { var Ye = x.baseState; - j = 0, je = Ie = ge = null, ae = w; + B = 0, je = ze = ve = null, oe = w; do { - var Pe = ae.lane & -536870913, Le = Pe !== ae.lane; - if (Le ? (hn & Pe) === Pe : (h & Pe) === Pe) { - Pe !== 0 && Pe === Fs && (Zb = !0), je !== null && (je = je.next = { + var Te = oe.lane & -536870913, Le = Te !== oe.lane; + if (Le ? (gn & Te) === Te : (h & Te) === Te) { + Te !== 0 && Te === Bs && (ay = !0), je !== null && (je = je.next = { lane: 0, - tag: ae.tag, - payload: ae.payload, + tag: oe.tag, + payload: oe.payload, callback: null, next: null }); e: { - var ut = o, $t = ae; - Pe = i; + var dt = o, Et = oe; + Te = i; var Yt = d; - switch ($t.tag) { + switch (Et.tag) { case 1: - if (ut = $t.payload, typeof ut == "function") { - Ye = ut.call(Yt, Ye, Pe); + if (dt = Et.payload, typeof dt == "function") { + Ye = dt.call(Yt, Ye, Te); break e; } - Ye = ut; + Ye = dt; break e; case 3: - ut.flags = ut.flags & -65537 | 128; + dt.flags = dt.flags & -65537 | 128; case 0: - if (ut = $t.payload, Pe = typeof ut == "function" ? ut.call(Yt, Ye, Pe) : ut, Pe == null) break e; - Ye = N({}, Ye, Pe); + if (dt = Et.payload, Te = typeof dt == "function" ? dt.call(Yt, Ye, Te) : dt, Te == null) break e; + Ye = _({}, Ye, Te); break e; case 2: - Bi = !0; + Hi = !0; } } - Pe = ae.callback, Pe !== null && (o.flags |= 64, Le && (o.flags |= 8192), Le = x.callbacks, Le === null ? x.callbacks = [Pe] : Le.push(Pe)); + Te = oe.callback, Te !== null && (o.flags |= 64, Le && (o.flags |= 8192), Le = x.callbacks, Le === null ? x.callbacks = [Te] : Le.push(Te)); } else Le = { - lane: Pe, - tag: ae.tag, - payload: ae.payload, - callback: ae.callback, + lane: Te, + tag: oe.tag, + payload: oe.payload, + callback: oe.callback, next: null - }, je === null ? (Ie = je = Le, ge = Ye) : je = je.next = Le, j |= Pe; - if (ae = ae.next, ae === null) { - if (ae = x.shared.pending, ae === null) + }, je === null ? (ze = je = Le, ve = Ye) : je = je.next = Le, B |= Te; + if (oe = oe.next, oe === null) { + if (oe = x.shared.pending, oe === null) break; - Le = ae, ae = Le.next, Le.next = null, x.lastBaseUpdate = Le, x.shared.pending = null; + Le = oe, oe = Le.next, Le.next = null, x.lastBaseUpdate = Le, x.shared.pending = null; } } while (!0); - je === null && (ge = Ye), x.baseState = ge, x.firstBaseUpdate = Ie, x.lastBaseUpdate = je, w === null && (x.shared.lanes = 0), Qi |= j, o.lanes = j, o.memoizedState = Ye; + je === null && (ve = Ye), x.baseState = ve, x.firstBaseUpdate = ze, x.lastBaseUpdate = je, w === null && (x.shared.lanes = 0), Yi |= B, o.lanes = B, o.memoizedState = Ye; } } - function kP(o, i) { + function KP(o, i) { if (typeof o != "function") throw Error(r(191, o)); o.call(i); } - function jP(o, i) { + function GP(o, i) { var d = o.callbacks; if (d !== null) for (o.callbacks = null, o = 0; o < d.length; o++) - kP(d[o], i); + KP(d[o], i); } - var qi = oe(null), Op = oe(0); - function FP(o, i) { - o = pi, Z(Op, o), Z(qi, i), pi = o | i.baseLanes; + var Wi = ne(null), Fp = ne(0); + function XP(o, i) { + o = hi, le(Fp, o), le(Wi, i), hi = o | i.baseLanes; } - function Jb() { - Z(Op, pi), Z(qi, qi.current); + function iy() { + le(Fp, hi), le(Wi, Wi.current); } - function ey() { - pi = Op.current, ce(qi), ce(Op); + function sy() { + hi = Fp.current, ue(Wi), ue(Fp); } - var Br = oe(null), Zr = null; - function Wi(o) { + var Hr = ne(null), Jr = null; + function Vi(o) { var i = o.alternate; - Z(Hr, Hr.current & 1), Z(Br, o), Zr === null && (i === null || qi.current !== null || i.memoizedState !== null) && (Zr = o); + le(Ur, Ur.current & 1), le(Hr, o), Jr === null && (i === null || Wi.current !== null || i.memoizedState !== null) && (Jr = o); } - function ty(o) { - Z(Hr, Hr.current), Z(Br, o), Zr === null && (Zr = o); + function ly(o) { + le(Ur, Ur.current), le(Hr, o), Jr === null && (Jr = o); } - function BP(o) { - o.tag === 22 ? (Z(Hr, Hr.current), Z(Br, o), Zr === null && (Zr = o)) : Vi(); + function QP(o) { + o.tag === 22 ? (le(Ur, Ur.current), le(Hr, o), Jr === null && (Jr = o)) : Ki(); } - function Vi() { - Z(Hr, Hr.current), Z(Br, Br.current); + function Ki() { + le(Ur, Ur.current), le(Hr, Hr.current); } function To(o) { - ce(Br), Zr === o && (Zr = null), ce(Hr); + ue(Hr), Jr === o && (Jr = null), ue(Ur); } - var Hr = oe(0); - function td(o, i) { - Z(Br, Br.current), Z(Hr, i); + var Ur = ne(0); + function nd(o, i) { + le(Hr, Hr.current), le(Ur, i); } - function ny(o) { - ce(Hr), ce(Br), Zr === o && (Zr = null); + function cy(o) { + ue(Ur), ue(Hr), Jr === o && (Jr = null); } - function Lp(o) { + function Bp(o) { for (var i = o; i !== null; ) { if (i.tag === 13) { var d = i.memoizedState; - if (d !== null && (d = d.dehydrated, d === null || wS(d) || ES(d))) + if (d !== null && (d = d.dehydrated, d === null || IS(d) || zS(d))) return i; } else if (i.tag === 19 && i.memoizedProps.revealOrder !== "independent") { if ((i.flags & 128) !== 0) return i; @@ -3674,63 +3674,63 @@ Error generating stack: ` + h.message + ` } return null; } - var ui = 0, Qt = null, jn = null, pr = null, kp = !1, sc = !1, Ws = !1, jp = 0, nd = 0, lc = null, W6 = 0; + var di = 0, Qt = null, jn = null, hr = null, Hp = !1, lc = !1, Vs = !1, Up = 0, rd = 0, cc = null, J6 = 0; function or() { throw Error(r(321)); } - function ry(o, i) { + function uy(o, i) { if (i === null) return !1; for (var d = 0; d < i.length && d < o.length; d++) if (!Po(o[d], i[d])) return !1; return !0; } - function oy(o, i, d, h, x, w) { - return ui = w, Qt = i, i.memoizedState = null, i.updateQueue = null, i.lanes = 0, q.H = o === null || o.memoizedState === null ? wT : ET, Ws = !1, w = d(h, x), Ws = !1, sc && (w = UP( + function dy(o, i, d, h, x, w) { + return di = w, Qt = i, i.memoizedState = null, i.updateQueue = null, i.lanes = 0, X.H = o === null || o.memoizedState === null ? MT : AT, Vs = !1, w = d(h, x), Vs = !1, lc && (w = ZP( i, d, h, x - )), HP(o), w; + )), YP(o), w; } - function HP(o) { - q.H = Vp; + function YP(o) { + X.H = Qp; var i = jn !== null && jn.next !== null; - if (ui = 0, pr = jn = Qt = null, kp = !1, nd = 0, lc = null, i) throw Error(r(300)); - o === null || hr || (o = o.dependencies, o !== null && Np(o) && (hr = !0)); + if (di = 0, hr = jn = Qt = null, Hp = !1, rd = 0, cc = null, i) throw Error(r(300)); + o === null || gr || (o = o.dependencies, o !== null && Mp(o) && (gr = !0)); } - function UP(o, i, d, h) { + function ZP(o, i, d, h) { Qt = o; var x = 0; do { - if (sc && (lc = null), nd = 0, sc = !1, 25 <= x) throw Error(r(301)); - if (x += 1, pr = jn = null, o.updateQueue != null) { + if (lc && (cc = null), rd = 0, lc = !1, 25 <= x) throw Error(r(301)); + if (x += 1, hr = jn = null, o.updateQueue != null) { var w = o.updateQueue; w.lastEffect = null, w.events = null, w.stores = null, w.memoCache != null && (w.memoCache.index = 0); } - q.H = J6, w = i(d, h); - } while (sc); + X.H = s5, w = i(d, h); + } while (lc); return w; } - function V6() { - var o = q.H, i = o.useState()[0]; - return i = typeof i.then == "function" ? rd(i) : i, o = o.useState()[0], (jn !== null ? jn.memoizedState : null) !== o && (Qt.flags |= 1024), i; + function e5() { + var o = X.H, i = o.useState()[0]; + return i = typeof i.then == "function" ? od(i) : i, o = o.useState()[0], (jn !== null ? jn.memoizedState : null) !== o && (Qt.flags |= 1024), i; } - function ay() { - var o = jp !== 0; - return jp = 0, o; + function fy() { + var o = Up !== 0; + return Up = 0, o; } - function iy(o, i, d) { + function my(o, i, d) { i.updateQueue = o.updateQueue, i.flags &= -2053, o.lanes &= ~d; } - function sy(o) { - if (kp) { + function py(o) { + if (Hp) { for (o = o.memoizedState; o !== null; ) { var i = o.queue; i !== null && (i.pending = null), o = o.next; } - kp = !1; + Hp = !1; } - ui = 0, pr = jn = Qt = null, sc = !1, nd = jp = 0, lc = null; + di = 0, hr = jn = Qt = null, lc = !1, rd = Up = 0, cc = null; } function so() { var o = { @@ -3740,16 +3740,16 @@ Error generating stack: ` + h.message + ` queue: null, next: null }; - return pr === null ? Qt.memoizedState = pr = o : pr = pr.next = o, pr; + return hr === null ? Qt.memoizedState = hr = o : hr = hr.next = o, hr; } - function cr() { + function ur() { if (jn === null) { var o = Qt.alternate; o = o !== null ? o.memoizedState : null; } else o = jn.next; - var i = pr === null ? Qt.memoizedState : pr.next; + var i = hr === null ? Qt.memoizedState : hr.next; if (i !== null) - pr = i, jn = o; + hr = i, jn = o; else { if (o === null) throw Qt.alternate === null ? Error(r(467)) : Error(r(310)); @@ -3759,26 +3759,26 @@ Error generating stack: ` + h.message + ` baseQueue: jn.baseQueue, queue: jn.queue, next: null - }, pr === null ? Qt.memoizedState = pr = o : pr = pr.next = o; + }, hr === null ? Qt.memoizedState = hr = o : hr = hr.next = o; } - return pr; + return hr; } - function Fp() { + function qp() { return { lastEffect: null, events: null, stores: null, memoCache: null }; } - function rd(o) { - var i = nd; - return nd += 1, lc === null && (lc = []), o = zP(lc, o, i), i = Qt, (pr === null ? i.memoizedState : pr.next) === null && (i = i.alternate, q.H = i === null || i.memoizedState === null ? wT : ET), o; + function od(o) { + var i = rd; + return rd += 1, cc === null && (cc = []), o = HP(cc, o, i), i = Qt, (hr === null ? i.memoizedState : hr.next) === null && (i = i.alternate, X.H = i === null || i.memoizedState === null ? MT : AT), o; } - function Bp(o) { + function Wp(o) { if (o !== null && typeof o == "object") { - if (typeof o.then == "function") return rd(o); - if (o.$$typeof === B) return; - if (o.$$typeof === U) return Fr(o); + if (typeof o.then == "function") return od(o); + if (o.$$typeof === j) return; + if (o.$$typeof === q) return Br(o); } throw Error(r(438, String(o))); } - function ly(o) { + function hy(o) { var i = null, d = Qt.updateQueue; if (d !== null && (i = d.memoCache), i == null) { var h = Qt.alternate; @@ -3789,130 +3789,130 @@ Error generating stack: ` + h.message + ` index: 0 }))); } - if (i == null && (i = { data: [], index: 0 }), d === null && (d = Fp(), Qt.updateQueue = d), d.memoCache = i, d = i.data[i.index], d === void 0) + if (i == null && (i = { data: [], index: 0 }), d === null && (d = qp(), Qt.updateQueue = d), d.memoCache = i, d = i.data[i.index], d === void 0) for (d = i.data[i.index] = Array(o), h = 0; h < o; h++) - d[h] = Q; + d[h] = H; return i.index++, d; } - function di(o, i) { + function fi(o, i) { return typeof i == "function" ? i(o) : i; } - function Hp(o) { - var i = cr(); - return cy(i, jn, o); + function Vp(o) { + var i = ur(); + return gy(i, jn, o); } - function cy(o, i, d) { + function gy(o, i, d) { var h = o.queue; if (h === null) throw Error(r(311)); h.lastRenderedReducer = d; var x = o.baseQueue, w = h.pending; if (w !== null) { if (x !== null) { - var j = x.next; - x.next = w.next, w.next = j; + var B = x.next; + x.next = w.next, w.next = B; } i.baseQueue = x = w, h.pending = null; } if (w = o.baseState, x === null) o.memoizedState = w; else { i = x.next; - var ae = j = null, ge = null, Ie = i, je = !1; + var oe = B = null, ve = null, ze = i, je = !1; do { - var Ye = Ie.lane & -536870913; - if (Ye !== Ie.lane ? (hn & Ye) === Ye : (ui & Ye) === Ye) { - var Pe = Ie.revertLane; - if (Pe === 0) - ge !== null && (ge = ge.next = { + var Ye = ze.lane & -536870913; + if (Ye !== ze.lane ? (gn & Ye) === Ye : (di & Ye) === Ye) { + var Te = ze.revertLane; + if (Te === 0) + ve !== null && (ve = ve.next = { lane: 0, revertLane: 0, gesture: null, - action: Ie.action, - hasEagerState: Ie.hasEagerState, - eagerState: Ie.eagerState, + action: ze.action, + hasEagerState: ze.hasEagerState, + eagerState: ze.eagerState, next: null - }), Ye === Fs && (je = !0); - else if ((ui & Pe) === Pe) { - Ie = Ie.next, Pe === Fs && (je = !0); + }), Ye === Bs && (je = !0); + else if ((di & Te) === Te) { + ze = ze.next, Te === Bs && (je = !0); continue; } else Ye = { lane: 0, - revertLane: Ie.revertLane, + revertLane: ze.revertLane, gesture: null, - action: Ie.action, - hasEagerState: Ie.hasEagerState, - eagerState: Ie.eagerState, + action: ze.action, + hasEagerState: ze.hasEagerState, + eagerState: ze.eagerState, next: null - }, ge === null ? (ae = ge = Ye, j = w) : ge = ge.next = Ye, Qt.lanes |= Pe, Qi |= Pe; - Ye = Ie.action, Ws && d(w, Ye), w = Ie.hasEagerState ? Ie.eagerState : d(w, Ye); + }, ve === null ? (oe = ve = Ye, B = w) : ve = ve.next = Ye, Qt.lanes |= Te, Yi |= Te; + Ye = ze.action, Vs && d(w, Ye), w = ze.hasEagerState ? ze.eagerState : d(w, Ye); } else - Pe = { + Te = { lane: Ye, - revertLane: Ie.revertLane, - gesture: Ie.gesture, - action: Ie.action, - hasEagerState: Ie.hasEagerState, - eagerState: Ie.eagerState, + revertLane: ze.revertLane, + gesture: ze.gesture, + action: ze.action, + hasEagerState: ze.hasEagerState, + eagerState: ze.eagerState, next: null - }, ge === null ? (ae = ge = Pe, j = w) : ge = ge.next = Pe, Qt.lanes |= Ye, Qi |= Ye; - Ie = Ie.next; - } while (Ie !== null && Ie !== i); - if (ge === null ? j = w : ge.next = ae, !Po(w, o.memoizedState) && (hr = !0, je && (d = oc, d !== null))) + }, ve === null ? (oe = ve = Te, B = w) : ve = ve.next = Te, Qt.lanes |= Ye, Yi |= Ye; + ze = ze.next; + } while (ze !== null && ze !== i); + if (ve === null ? B = w : ve.next = oe, !Po(w, o.memoizedState) && (gr = !0, je && (d = ac, d !== null))) throw d; - o.memoizedState = w, o.baseState = j, o.baseQueue = ge, h.lastRenderedState = w; + o.memoizedState = w, o.baseState = B, o.baseQueue = ve, h.lastRenderedState = w; } return x === null && (h.lanes = 0), [o.memoizedState, h.dispatch]; } - function uy(o) { - var i = cr(), d = i.queue; + function vy(o) { + var i = ur(), d = i.queue; if (d === null) throw Error(r(311)); d.lastRenderedReducer = o; var h = d.dispatch, x = d.pending, w = i.memoizedState; if (x !== null) { d.pending = null; - var j = x = x.next; + var B = x = x.next; do - w = o(w, j.action), j = j.next; - while (j !== x); - Po(w, i.memoizedState) || (hr = !0), i.memoizedState = w, i.baseQueue === null && (i.baseState = w), d.lastRenderedState = w; + w = o(w, B.action), B = B.next; + while (B !== x); + Po(w, i.memoizedState) || (gr = !0), i.memoizedState = w, i.baseQueue === null && (i.baseState = w), d.lastRenderedState = w; } return [w, h]; } - function qP(o, i, d) { - var h = Qt, x = cr(), w = on; + function JP(o, i, d) { + var h = Qt, x = ur(), w = on; if (w) { if (d === void 0) throw Error(r(407)); d = d(); } else d = i(); - var j = !Po( + var B = !Po( (jn || x).memoizedState, d ); - if (j && (x.memoizedState = d, hr = !0), x = x.queue, my(KP.bind(null, h, x, o), [ + if (B && (x.memoizedState = d, gr = !0), x = x.queue, Sy(nT.bind(null, h, x, o), [ o - ]), o = x.getSnapshot !== i || j || pr !== null && (pr.memoizedState.tag & 1) !== 0, cc( + ]), o = x.getSnapshot !== i || B || hr !== null && (hr.memoizedState.tag & 1) !== 0, uc( o ? 9 : 8, { destroy: void 0 }, - VP.bind(null, h, x, d, i), + tT.bind(null, h, x, d, i), null ), o) { if (h.flags |= 2048, Vn === null) throw Error(r(349)); - w || (ui & 127) !== 0 || WP(h, i, d); + w || (di & 127) !== 0 || eT(h, i, d); } return d; } - function WP(o, i, d) { - o.flags |= 16384, o = { getSnapshot: i, value: d }, i = Qt.updateQueue, i === null ? (i = Fp(), Qt.updateQueue = i, i.stores = [o]) : (d = i.stores, d === null ? i.stores = [o] : d.push(o)); + function eT(o, i, d) { + o.flags |= 16384, o = { getSnapshot: i, value: d }, i = Qt.updateQueue, i === null ? (i = qp(), Qt.updateQueue = i, i.stores = [o]) : (d = i.stores, d === null ? i.stores = [o] : d.push(o)); } - function VP(o, i, d, h) { - i.value = d, i.getSnapshot = h, GP(i) && XP(o); + function tT(o, i, d, h) { + i.value = d, i.getSnapshot = h, rT(i) && oT(o); } - function KP(o, i, d) { + function nT(o, i, d) { return d(function() { - GP(i) && XP(o); + rT(i) && oT(o); }); } - function GP(o) { + function rT(o) { var i = o.getSnapshot; o = o.value; try { @@ -3922,20 +3922,20 @@ Error generating stack: ` + h.message + ` return !0; } } - function XP(o) { - var i = As(o, 2); + function oT(o) { + var i = Ds(o, 2); i !== null && bo(i, o, 2); } - function dy(o) { + function by(o) { var i = so(); if (typeof o == "function") { var d = o; - if (o = d(), Ws) { - Re(!0); + if (o = d(), Vs) { + Pe(!0); try { d(); } finally { - Re(!1); + Pe(!1); } } } @@ -3943,19 +3943,19 @@ Error generating stack: ` + h.message + ` pending: null, lanes: 0, dispatch: null, - lastRenderedReducer: di, + lastRenderedReducer: fi, lastRenderedState: o }, i; } - function QP(o, i, d, h) { - return o.baseState = d, cy( + function aT(o, i, d, h) { + return o.baseState = d, gy( o, jn, - typeof h == "function" ? h : di + typeof h == "function" ? h : fi ); } - function K6(o, i, d, h, x) { - if (Wp(o)) throw Error(r(485)); + function t5(o, i, d, h, x) { + if (Xp(o)) throw Error(r(485)); if (o = i.action, o !== null) { var w = { payload: x, @@ -3966,64 +3966,64 @@ Error generating stack: ` + h.message + ` value: null, reason: null, listeners: [], - then: function(j) { - w.listeners.push(j); + then: function(B) { + w.listeners.push(B); } }; - q.T !== null ? d(!0) : w.isTransition = !1, h(w), d = i.pending, d === null ? (w.next = i.pending = w, YP(i, w)) : (w.next = d.next, i.pending = d.next = w); + X.T !== null ? d(!0) : w.isTransition = !1, h(w), d = i.pending, d === null ? (w.next = i.pending = w, iT(i, w)) : (w.next = d.next, i.pending = d.next = w); } } - function YP(o, i) { + function iT(o, i) { var d = i.action, h = i.payload, x = o.state; if (i.isTransition) { - var w = q.T, j = {}; - j.types = w !== null ? w.types : null, q.T = j; + var w = X.T, B = {}; + B.types = w !== null ? w.types : null, X.T = B; try { - var ae = d(x, h), ge = q.S; - ge !== null && ge(j, ae), ZP(o, i, ae); - } catch (Ie) { - fy(o, i, Ie); + var oe = d(x, h), ve = X.S; + ve !== null && ve(B, oe), sT(o, i, oe); + } catch (ze) { + yy(o, i, ze); } finally { - w !== null && j.types !== null && (w.types = j.types), q.T = w; + w !== null && B.types !== null && (w.types = B.types), X.T = w; } } else try { - w = d(x, h), ZP(o, i, w); - } catch (Ie) { - fy(o, i, Ie); + w = d(x, h), sT(o, i, w); + } catch (ze) { + yy(o, i, ze); } } - function ZP(o, i, d) { + function sT(o, i, d) { d !== null && typeof d == "object" && typeof d.then == "function" ? d.then( function(h) { - JP(o, i, h); + lT(o, i, h); }, function(h) { - return fy(o, i, h); + return yy(o, i, h); } - ) : JP(o, i, d); + ) : lT(o, i, d); } - function JP(o, i, d) { - i.status = "fulfilled", i.value = d, eT(i), o.state = d, i = o.pending, i !== null && (d = i.next, d === i ? o.pending = null : (d = d.next, i.next = d, YP(o, d))); + function lT(o, i, d) { + i.status = "fulfilled", i.value = d, cT(i), o.state = d, i = o.pending, i !== null && (d = i.next, d === i ? o.pending = null : (d = d.next, i.next = d, iT(o, d))); } - function fy(o, i, d) { + function yy(o, i, d) { var h = o.pending; if (o.pending = null, h !== null) { h = h.next; do - i.status = "rejected", i.reason = d, eT(i), i = i.next; + i.status = "rejected", i.reason = d, cT(i), i = i.next; while (i !== h); } o.action = null; } - function eT(o) { + function cT(o) { o = o.listeners; for (var i = 0; i < o.length; i++) (0, o[i])(); } - function tT(o, i) { + function uT(o, i) { return i; } - function nT(o, i) { + function dT(o, i) { if (on) { var d = Vn.formState; if (d !== null) { @@ -4032,12 +4032,12 @@ Error generating stack: ` + h.message + ` if (on) { if (Gn) { t: { - for (var x = Gn, w = Ko; x.nodeType !== 8; ) { + for (var x = Gn, w = Go; x.nodeType !== 8; ) { if (!w) { x = null; break t; } - if (x = Xo( + if (x = Qo( x.nextSibling ), x === null) { x = null; @@ -4047,13 +4047,13 @@ Error generating stack: ` + h.message + ` w = x.data, x = w === "F!" || w === "F" ? x : null; } if (x) { - Gn = Xo( + Gn = Qo( x.nextSibling ), h = x.data === "F!"; break e; } } - ki(h); + ji(h); } h = !1; } @@ -4064,13 +4064,13 @@ Error generating stack: ` + h.message + ` pending: null, lanes: 0, dispatch: null, - lastRenderedReducer: tT, + lastRenderedReducer: uT, lastRenderedState: i - }, d.queue = h, d = xT.bind( + }, d.queue = h, d = _T.bind( null, Qt, h - ), h.dispatch = d, h = dy(!1), w = by.bind( + ), h.dispatch = d, h = by(!1), w = Ey.bind( null, Qt, !1, @@ -4080,7 +4080,7 @@ Error generating stack: ` + h.message + ` dispatch: null, action: o, pending: null - }, h.queue = x, d = K6.bind( + }, h.queue = x, d = t5.bind( null, Qt, x, @@ -4088,98 +4088,98 @@ Error generating stack: ` + h.message + ` d ), x.dispatch = d, h.memoizedState = o, [i, d, !1]; } - function rT(o) { - var i = cr(); - return oT(i, jn, o); + function fT(o) { + var i = ur(); + return mT(i, jn, o); } - function oT(o, i, d) { - if (i = cy( + function mT(o, i, d) { + if (i = gy( o, i, - tT - )[0], o = Hp(di)[0], typeof i == "object" && i !== null && typeof i.then == "function") + uT + )[0], o = Vp(fi)[0], typeof i == "object" && i !== null && typeof i.then == "function") try { - var h = rd(i); - } catch (j) { - throw j === ac ? Mp : j; + var h = od(i); + } catch (B) { + throw B === ic ? Op : B; } else h = i; - i = cr(); + i = ur(); var x = i.queue, w = x.dispatch; - return d !== i.memoizedState && (Qt.flags |= 2048, cc( + return d !== i.memoizedState && (Qt.flags |= 2048, uc( 9, { destroy: void 0 }, - G6.bind(null, x, d), + n5.bind(null, x, d), null )), [h, w, o]; } - function G6(o, i) { + function n5(o, i) { o.action = i; } - function aT(o) { - var i = cr(), d = jn; + function pT(o) { + var i = ur(), d = jn; if (d !== null) - return oT(i, d, o); - cr(), i = i.memoizedState, d = cr(); + return mT(i, d, o); + ur(), i = i.memoizedState, d = ur(); var h = d.queue.dispatch; return d.memoizedState = o, [i, h, !1]; } - function cc(o, i, d, h) { - return o = { tag: o, create: d, deps: h, inst: i, next: null }, i = Qt.updateQueue, i === null && (i = Fp(), Qt.updateQueue = i), d = i.lastEffect, d === null ? i.lastEffect = o.next = o : (h = d.next, d.next = o, o.next = h, i.lastEffect = o), o; + function uc(o, i, d, h) { + return o = { tag: o, create: d, deps: h, inst: i, next: null }, i = Qt.updateQueue, i === null && (i = qp(), Qt.updateQueue = i), d = i.lastEffect, d === null ? i.lastEffect = o.next = o : (h = d.next, d.next = o, o.next = h, i.lastEffect = o), o; } - function iT() { - return cr().memoizedState; + function hT() { + return ur().memoizedState; } - function Up(o, i, d, h) { + function Kp(o, i, d, h) { var x = so(); - Qt.flags |= o, x.memoizedState = cc( + Qt.flags |= o, x.memoizedState = uc( 1 | i, { destroy: void 0 }, d, h === void 0 ? null : h ); } - function qp(o, i, d, h) { - var x = cr(); + function Gp(o, i, d, h) { + var x = ur(); h = h === void 0 ? null : h; var w = x.memoizedState.inst; - jn !== null && h !== null && ry(h, jn.memoizedState.deps) ? x.memoizedState = cc(i, w, d, h) : (Qt.flags |= o, x.memoizedState = cc( + jn !== null && h !== null && uy(h, jn.memoizedState.deps) ? x.memoizedState = uc(i, w, d, h) : (Qt.flags |= o, x.memoizedState = uc( 1 | i, w, d, h )); } - function sT(o, i) { - Up(8390656, 8, o, i); + function gT(o, i) { + Kp(8390656, 8, o, i); } - function my(o, i) { - qp(2048, 8, o, i); + function Sy(o, i) { + Gp(2048, 8, o, i); } - function X6(o) { + function r5(o) { Qt.flags |= 4; var i = Qt.updateQueue; if (i === null) - i = Fp(), Qt.updateQueue = i, i.events = [o]; + i = qp(), Qt.updateQueue = i, i.events = [o]; else { var d = i.events; d === null ? i.events = [o] : d.push(o); } } - function lT(o) { - var i = cr().memoizedState; - return X6({ ref: i, nextImpl: o }), function() { + function vT(o) { + var i = ur().memoizedState; + return r5({ ref: i, nextImpl: o }), function() { if ((Pn & 2) !== 0) throw Error(r(440)); return i.impl.apply(void 0, arguments); }; } - function cT(o, i) { - return qp(4, 2, o, i); + function bT(o, i) { + return Gp(4, 2, o, i); } - function uT(o, i) { - return qp(4, 4, o, i); + function yT(o, i) { + return Gp(4, 4, o, i); } - function dT(o, i) { + function ST(o, i) { if (typeof i == "function") { o = o(); var d = i(o); @@ -4192,104 +4192,104 @@ Error generating stack: ` + h.message + ` i.current = null; }; } - function fT(o, i, d) { - d = d != null ? d.concat([o]) : null, qp(4, 4, dT.bind(null, i, o), d); + function xT(o, i, d) { + d = d != null ? d.concat([o]) : null, Gp(4, 4, ST.bind(null, i, o), d); } - function py() { + function xy() { } - function mT(o, i) { - var d = cr(); + function CT(o, i) { + var d = ur(); i = i === void 0 ? null : i; var h = d.memoizedState; - return i !== null && ry(i, h[1]) ? h[0] : (d.memoizedState = [o, i], o); + return i !== null && uy(i, h[1]) ? h[0] : (d.memoizedState = [o, i], o); } - function pT(o, i) { - var d = cr(); + function $T(o, i) { + var d = ur(); i = i === void 0 ? null : i; var h = d.memoizedState; - if (i !== null && ry(i, h[1])) + if (i !== null && uy(i, h[1])) return h[0]; - if (h = o(), Ws) { - Re(!0); + if (h = o(), Vs) { + Pe(!0); try { o(); } finally { - Re(!1); + Pe(!1); } } return d.memoizedState = [h, i], h; } - function hy(o, i, d) { - return d === void 0 || (ui & 1073741824) !== 0 && (hn & 261930) === 0 ? o.memoizedState = i : (o.memoizedState = d, o = wN(), Qt.lanes |= o, Qi |= o, d); + function Cy(o, i, d) { + return d === void 0 || (di & 1073741824) !== 0 && (gn & 261930) === 0 ? o.memoizedState = i : (o.memoizedState = d, o = MN(), Qt.lanes |= o, Yi |= o, d); } - function hT(o, i, d, h) { - return Po(d, i) ? d : qi.current !== null ? (o = hy(o, d, h), Po(o, i) || (hr = !0), o) : (ui & 106) === 0 || (ui & 1073741824) !== 0 && (hn & 261930) === 0 ? (hr = !0, o.memoizedState = d) : (o = wN(), Qt.lanes |= o, Qi |= o, i); + function wT(o, i, d, h) { + return Po(d, i) ? d : Wi.current !== null ? (o = Cy(o, d, h), Po(o, i) || (gr = !0), o) : (di & 106) === 0 || (di & 1073741824) !== 0 && (gn & 261930) === 0 ? (gr = !0, o.memoizedState = d) : (o = MN(), Qt.lanes |= o, Yi |= o, i); } - function gT(o, i, d, h, x) { - var w = te.p; - te.p = w !== 0 && 8 > w ? w : 8; - var j = q.T, ae = {}; - ae.types = j !== null ? j.types : null, q.T = ae, by(o, !1, i, d); + function ET(o, i, d, h, x) { + var w = J.p; + J.p = w !== 0 && 8 > w ? w : 8; + var B = X.T, oe = {}; + oe.types = B !== null ? B.types : null, X.T = oe, Ey(o, !1, i, d); try { - var ge = x(), Ie = q.S; - if (Ie !== null && Ie(ae, ge), ge !== null && typeof ge == "object" && typeof ge.then == "function") { - var je = q6( - ge, + var ve = x(), ze = X.S; + if (ze !== null && ze(oe, ve), ve !== null && typeof ve == "object" && typeof ve.then == "function") { + var je = Z6( + ve, h ); - od( + ad( o, i, je, - Mo(o) + zo(o) ); } else - od( + ad( o, i, h, - Mo(o) + zo(o) ); } catch (Ye) { - od( + ad( o, i, { then: function() { }, status: "rejected", reason: Ye }, - Mo() + zo() ); } finally { - te.p = w, j !== null && ae.types !== null && (j.types = ae.types), q.T = j; + J.p = w, B !== null && oe.types !== null && (B.types = oe.types), X.T = B; } } - function Q6() { + function o5() { } - function gy(o, i, d, h) { + function $y(o, i, d, h) { if (o.tag !== 5) throw Error(r(476)); - var x = vT(o).queue; - gT( + var x = RT(o).queue; + ET( o, x, i, - de, - d === null ? Q6 : function() { - return bT(o), d(h); + me, + d === null ? o5 : function() { + return PT(o), d(h); } ); } - function vT(o) { + function RT(o) { var i = o.memoizedState; if (i !== null) return i; i = { - memoizedState: de, - baseState: de, + memoizedState: me, + baseState: me, baseQueue: null, queue: { pending: null, lanes: 0, dispatch: null, - lastRenderedReducer: di, - lastRenderedState: de + lastRenderedReducer: fi, + lastRenderedState: me }, next: null }; @@ -4302,46 +4302,46 @@ Error generating stack: ` + h.message + ` pending: null, lanes: 0, dispatch: null, - lastRenderedReducer: di, + lastRenderedReducer: fi, lastRenderedState: d }, next: null }, o.memoizedState = i, o = o.alternate, o !== null && (o.memoizedState = i), i; } - function bT(o) { - var i = vT(o); - i.next === null && (i = o.alternate.memoizedState), od( + function PT(o) { + var i = RT(o); + i.next === null && (i = o.alternate.memoizedState), ad( o, i.next.queue, {}, - Mo() + zo() ); } - function vy() { - return Fr(Tc); + function wy() { + return Br(Nc); } - function yT() { - return cr().memoizedState; + function TT() { + return ur().memoizedState; } - function ST() { - return cr().memoizedState; + function NT() { + return ur().memoizedState; } - function Y6(o) { + function a5(o) { for (var i = o.return; i !== null; ) { switch (i.tag) { case 24: case 3: - var d = Mo(); - o = Hi(d); - var h = Ui(i, o, d); - h !== null && (bo(h, i, d), Zu(h, i, d)), i = { cache: Wb() }, o.payload = i; + var d = zo(); + o = Ui(d); + var h = qi(i, o, d); + h !== null && (bo(h, i, d), Ju(h, i, d)), i = { cache: Zb() }, o.payload = i; return; } i = i.return; } } - function Z6(o, i, d) { - var h = Mo(); + function i5(o, i, d) { + var h = zo(); d = { lane: h, revertLane: 0, @@ -4350,13 +4350,13 @@ Error generating stack: ` + h.message + ` hasEagerState: !1, eagerState: null, next: null - }, Wp(o) ? CT(i, d) : (d = Ob(o, i, d, h), d !== null && (bo(d, o, h), $T(d, i, h))); + }, Xp(o) ? IT(i, d) : (d = Ub(o, i, d, h), d !== null && (bo(d, o, h), zT(d, i, h))); } - function xT(o, i, d) { - var h = Mo(); - od(o, i, d, h); + function _T(o, i, d) { + var h = zo(); + ad(o, i, d, h); } - function od(o, i, d, h) { + function ad(o, i, d, h) { var x = { lane: h, revertLane: 0, @@ -4366,58 +4366,58 @@ Error generating stack: ` + h.message + ` eagerState: null, next: null }; - if (Wp(o)) CT(i, x); + if (Xp(o)) IT(i, x); else { var w = o.alternate; if (o.lanes === 0 && (w === null || w.lanes === 0) && (w = i.lastRenderedReducer, w !== null)) try { - var j = i.lastRenderedState, ae = w(j, d); - if (x.hasEagerState = !0, x.eagerState = ae, Po(ae, j)) - return Cp(o, i, x, 0), Vn === null && xp(), !1; + var B = i.lastRenderedState, oe = w(B, d); + if (x.hasEagerState = !0, x.eagerState = oe, Po(oe, B)) + return Rp(o, i, x, 0), Vn === null && Ep(), !1; } catch { } - if (d = Ob(o, i, x, h), d !== null) - return bo(d, o, h), $T(d, i, h), !0; + if (d = Ub(o, i, x, h), d !== null) + return bo(d, o, h), zT(d, i, h), !0; } return !1; } - function by(o, i, d, h) { + function Ey(o, i, d, h) { if (h = { lane: 2, - revertLane: lS(), + revertLane: hS(), gesture: null, action: h, hasEagerState: !1, eagerState: null, next: null - }, Wp(o)) { + }, Xp(o)) { if (i) throw Error(r(479)); } else - i = Ob( + i = Ub( o, d, h, 2 ), i !== null && bo(i, o, 2); } - function Wp(o) { + function Xp(o) { var i = o.alternate; return o === Qt || i !== null && i === Qt; } - function CT(o, i) { - sc = kp = !0; + function IT(o, i) { + lc = Hp = !0; var d = o.pending; d === null ? i.next = i : (i.next = d.next, d.next = i), o.pending = i; } - function $T(o, i, d) { + function zT(o, i, d) { if ((d & 4194048) !== 0) { var h = i.lanes; h &= o.pendingLanes, d |= h, i.lanes = d, Xt(o, d); } } - var Vp = { - readContext: Fr, - use: Bp, + var Qp = { + readContext: Br, + use: Wp, useCallback: or, useContext: or, useEffect: or, @@ -4440,41 +4440,41 @@ Error generating stack: ` + h.message + ` useMemoCache: or, useCacheRefresh: or, useEffectEvent: or - }, wT = { - readContext: Fr, - use: Bp, + }, MT = { + readContext: Br, + use: Wp, useCallback: function(o, i) { return so().memoizedState = [ o, i === void 0 ? null : i ], o; }, - useContext: Fr, - useEffect: sT, + useContext: Br, + useEffect: gT, useImperativeHandle: function(o, i, d) { - d = d != null ? d.concat([o]) : null, Up( + d = d != null ? d.concat([o]) : null, Kp( 4194308, 4, - dT.bind(null, i, o), + ST.bind(null, i, o), d ); }, useLayoutEffect: function(o, i) { - return Up(4194308, 4, o, i); + return Kp(4194308, 4, o, i); }, useInsertionEffect: function(o, i) { - Up(4, 2, o, i); + Kp(4, 2, o, i); }, useMemo: function(o, i) { var d = so(); i = i === void 0 ? null : i; var h = o(); - if (Ws) { - Re(!0); + if (Vs) { + Pe(!0); try { o(); } finally { - Re(!1); + Pe(!1); } } return d.memoizedState = [h, i], h; @@ -4483,12 +4483,12 @@ Error generating stack: ` + h.message + ` var h = so(); if (d !== void 0) { var x = d(i); - if (Ws) { - Re(!0); + if (Vs) { + Pe(!0); try { d(i); } finally { - Re(!1); + Pe(!1); } } } else x = i; @@ -4498,7 +4498,7 @@ Error generating stack: ` + h.message + ` dispatch: null, lastRenderedReducer: o, lastRenderedState: x - }, h.queue = o, o = o.dispatch = Z6.bind( + }, h.queue = o, o = o.dispatch = i5.bind( null, Qt, o @@ -4509,18 +4509,18 @@ Error generating stack: ` + h.message + ` return o = { current: o }, i.memoizedState = o; }, useState: function(o) { - o = dy(o); - var i = o.queue, d = xT.bind(null, Qt, i); + o = by(o); + var i = o.queue, d = _T.bind(null, Qt, i); return i.dispatch = d, [o.memoizedState, d]; }, - useDebugValue: py, + useDebugValue: xy, useDeferredValue: function(o, i) { var d = so(); - return hy(d, o, i); + return Cy(d, o, i); }, useTransition: function() { - var o = dy(!1); - return o = gT.bind( + var o = by(!1); + return o = ET.bind( null, Qt, o.queue, @@ -4537,16 +4537,16 @@ Error generating stack: ` + h.message + ` } else { if (d = i(), Vn === null) throw Error(r(349)); - (hn & 127) !== 0 || WP(h, i, d); + (gn & 127) !== 0 || eT(h, i, d); } x.memoizedState = d; var w = { value: d, getSnapshot: i }; - return x.queue = w, sT(KP.bind(null, h, w, o), [ + return x.queue = w, gT(nT.bind(null, h, w, o), [ o - ]), h.flags |= 2048, cc( + ]), h.flags |= 2048, uc( 9, { destroy: void 0 }, - VP.bind( + tT.bind( null, h, w, @@ -4559,15 +4559,15 @@ Error generating stack: ` + h.message + ` useId: function() { var o = so(), i = Vn.identifierPrefix; if (on) { - var d = Na, h = Ta; - d = (h & ~(1 << 32 - Fe(h) - 1)).toString(32) + d, i = "_" + i + "R_" + d, d = jp++, 0 < d && (i += "H" + d.toString(32)), i += "_"; + var d = _a, h = Na; + d = (h & ~(1 << 32 - Fe(h) - 1)).toString(32) + d, i = "_" + i + "R_" + d, d = Up++, 0 < d && (i += "H" + d.toString(32)), i += "_"; } else - d = W6++, i = "_" + i + "r_" + d.toString(32) + "_"; + d = J6++, i = "_" + i + "r_" + d.toString(32) + "_"; return o.memoizedState = i; }, - useHostTransitionStatus: vy, - useFormState: nT, - useActionState: nT, + useHostTransitionStatus: wy, + useFormState: dT, + useActionState: dT, useOptimistic: function(o) { var i = so(); i.memoizedState = i.baseState = o; @@ -4578,16 +4578,16 @@ Error generating stack: ` + h.message + ` lastRenderedReducer: null, lastRenderedState: null }; - return i.queue = d, i = by.bind( + return i.queue = d, i = Ey.bind( null, Qt, !0, d ), d.dispatch = i, [o, i]; }, - useMemoCache: ly, + useMemoCache: hy, useCacheRefresh: function() { - return so().memoizedState = Y6.bind( + return so().memoizedState = a5.bind( null, Qt ); @@ -4600,25 +4600,25 @@ Error generating stack: ` + h.message + ` return d.impl.apply(void 0, arguments); }; } - }, ET = { - readContext: Fr, - use: Bp, - useCallback: mT, - useContext: Fr, - useEffect: my, - useImperativeHandle: fT, - useInsertionEffect: cT, - useLayoutEffect: uT, - useMemo: pT, - useReducer: Hp, - useRef: iT, + }, AT = { + readContext: Br, + use: Wp, + useCallback: CT, + useContext: Br, + useEffect: Sy, + useImperativeHandle: xT, + useInsertionEffect: bT, + useLayoutEffect: yT, + useMemo: $T, + useReducer: Vp, + useRef: hT, useState: function() { - return Hp(di); + return Vp(fi); }, - useDebugValue: py, + useDebugValue: xy, useDeferredValue: function(o, i) { - var d = cr(); - return hT( + var d = ur(); + return wT( d, jn.memoizedState, o, @@ -4626,43 +4626,43 @@ Error generating stack: ` + h.message + ` ); }, useTransition: function() { - var o = Hp(di)[0], i = cr().memoizedState; + var o = Vp(fi)[0], i = ur().memoizedState; return [ - typeof o == "boolean" ? o : rd(o), + typeof o == "boolean" ? o : od(o), i ]; }, - useSyncExternalStore: qP, - useId: yT, - useHostTransitionStatus: vy, - useFormState: rT, - useActionState: rT, + useSyncExternalStore: JP, + useId: TT, + useHostTransitionStatus: wy, + useFormState: fT, + useActionState: fT, useOptimistic: function(o, i) { - var d = cr(); - return QP(d, jn, o, i); - }, - useMemoCache: ly, - useCacheRefresh: ST, - useEffectEvent: lT - }, J6 = { - readContext: Fr, - use: Bp, - useCallback: mT, - useContext: Fr, - useEffect: my, - useImperativeHandle: fT, - useInsertionEffect: cT, - useLayoutEffect: uT, - useMemo: pT, - useReducer: uy, - useRef: iT, + var d = ur(); + return aT(d, jn, o, i); + }, + useMemoCache: hy, + useCacheRefresh: NT, + useEffectEvent: vT + }, s5 = { + readContext: Br, + use: Wp, + useCallback: CT, + useContext: Br, + useEffect: Sy, + useImperativeHandle: xT, + useInsertionEffect: bT, + useLayoutEffect: yT, + useMemo: $T, + useReducer: vy, + useRef: hT, useState: function() { - return uy(di); + return vy(fi); }, - useDebugValue: py, + useDebugValue: xy, useDeferredValue: function(o, i) { - var d = cr(); - return jn === null ? hy(d, o, i) : hT( + var d = ur(); + return jn === null ? Cy(d, o, i) : wT( d, jn.memoizedState, o, @@ -4670,52 +4670,52 @@ Error generating stack: ` + h.message + ` ); }, useTransition: function() { - var o = uy(di)[0], i = cr().memoizedState; + var o = vy(fi)[0], i = ur().memoizedState; return [ - typeof o == "boolean" ? o : rd(o), + typeof o == "boolean" ? o : od(o), i ]; }, - useSyncExternalStore: qP, - useId: yT, - useHostTransitionStatus: vy, - useFormState: aT, - useActionState: aT, + useSyncExternalStore: JP, + useId: TT, + useHostTransitionStatus: wy, + useFormState: pT, + useActionState: pT, useOptimistic: function(o, i) { - var d = cr(); - return jn !== null ? QP(d, jn, o, i) : (d.baseState = o, [o, d.queue.dispatch]); + var d = ur(); + return jn !== null ? aT(d, jn, o, i) : (d.baseState = o, [o, d.queue.dispatch]); }, - useMemoCache: ly, - useCacheRefresh: ST, - useEffectEvent: lT + useMemoCache: hy, + useCacheRefresh: NT, + useEffectEvent: vT }; - function yy(o, i, d, h) { - i = o.memoizedState, d = d(h, i), d = d == null ? i : N({}, i, d), o.memoizedState = d, o.lanes === 0 && (o.updateQueue.baseState = d); + function Ry(o, i, d, h) { + i = o.memoizedState, d = d(h, i), d = d == null ? i : _({}, i, d), o.memoizedState = d, o.lanes === 0 && (o.updateQueue.baseState = d); } - var Sy = { + var Py = { enqueueSetState: function(o, i, d) { o = o._reactInternals; - var h = Mo(), x = Hi(h); - x.payload = i, d != null && (x.callback = d), i = Ui(o, x, h), i !== null && (bo(i, o, h), Zu(i, o, h)); + var h = zo(), x = Ui(h); + x.payload = i, d != null && (x.callback = d), i = qi(o, x, h), i !== null && (bo(i, o, h), Ju(i, o, h)); }, enqueueReplaceState: function(o, i, d) { o = o._reactInternals; - var h = Mo(), x = Hi(h); - x.tag = 1, x.payload = i, d != null && (x.callback = d), i = Ui(o, x, h), i !== null && (bo(i, o, h), Zu(i, o, h)); + var h = zo(), x = Ui(h); + x.tag = 1, x.payload = i, d != null && (x.callback = d), i = qi(o, x, h), i !== null && (bo(i, o, h), Ju(i, o, h)); }, enqueueForceUpdate: function(o, i) { o = o._reactInternals; - var d = Mo(), h = Hi(d); - h.tag = 2, i != null && (h.callback = i), i = Ui(o, h, d), i !== null && (bo(i, o, d), Zu(i, o, d)); + var d = zo(), h = Ui(d); + h.tag = 2, i != null && (h.callback = i), i = qi(o, h, d), i !== null && (bo(i, o, d), Ju(i, o, d)); } }; - function RT(o, i, d, h, x, w, j) { - return o = o.stateNode, typeof o.shouldComponentUpdate == "function" ? o.shouldComponentUpdate(h, w, j) : i.prototype && i.prototype.isPureReactComponent ? !qu(d, h) || !qu(x, w) : !0; + function DT(o, i, d, h, x, w, B) { + return o = o.stateNode, typeof o.shouldComponentUpdate == "function" ? o.shouldComponentUpdate(h, w, B) : i.prototype && i.prototype.isPureReactComponent ? !Wu(d, h) || !Wu(x, w) : !0; } - function PT(o, i, d, h) { - o = i.state, typeof i.componentWillReceiveProps == "function" && i.componentWillReceiveProps(d, h), typeof i.UNSAFE_componentWillReceiveProps == "function" && i.UNSAFE_componentWillReceiveProps(d, h), i.state !== o && Sy.enqueueReplaceState(i, i.state, null); + function OT(o, i, d, h) { + o = i.state, typeof i.componentWillReceiveProps == "function" && i.componentWillReceiveProps(d, h), typeof i.UNSAFE_componentWillReceiveProps == "function" && i.UNSAFE_componentWillReceiveProps(d, h), i.state !== o && Py.enqueueReplaceState(i, i.state, null); } - function Vs(o, i) { + function Ks(o, i) { var d = i; if ("ref" in i) { d = {}; @@ -4723,22 +4723,22 @@ Error generating stack: ` + h.message + ` h !== "ref" && (d[h] = i[h]); } if (o = o.defaultProps) { - d === i && (d = N({}, d)); + d === i && (d = _({}, d)); for (var x in o) d[x] === void 0 && (d[x] = o[x]); } return d; } - function TT(o) { - Sp(o); + function LT(o) { + wp(o); } - function NT(o) { + function kT(o) { console.error(o); } - function _T(o) { - Sp(o); + function jT(o) { + wp(o); } - function Kp(o, i) { + function Yp(o, i) { try { var d = o.onUncaughtError; d(i.value, { componentStack: i.stack }); @@ -4748,7 +4748,7 @@ Error generating stack: ` + h.message + ` }); } } - function IT(o, i, d) { + function FT(o, i, d) { try { var h = o.onCaughtError; h(d.value, { @@ -4761,82 +4761,82 @@ Error generating stack: ` + h.message + ` }); } } - function xy(o, i, d) { - return d = Hi(d), d.tag = 3, d.payload = { element: null }, d.callback = function() { - Kp(o, i); + function Ty(o, i, d) { + return d = Ui(d), d.tag = 3, d.payload = { element: null }, d.callback = function() { + Yp(o, i); }, d; } - function MT(o) { - return o = Hi(o), o.tag = 3, o; + function BT(o) { + return o = Ui(o), o.tag = 3, o; } - function zT(o, i, d, h) { + function HT(o, i, d, h) { var x = d.type.getDerivedStateFromError; if (typeof x == "function") { var w = h.value; o.payload = function() { return x(w); }, o.callback = function() { - IT(i, d, h); + FT(i, d, h); }; } - var j = d.stateNode; - j !== null && typeof j.componentDidCatch == "function" && (o.callback = function() { - IT(i, d, h), typeof x != "function" && (Yi === null ? Yi = /* @__PURE__ */ new Set([this]) : Yi.add(this)); - var ae = h.stack; + var B = d.stateNode; + B !== null && typeof B.componentDidCatch == "function" && (o.callback = function() { + FT(i, d, h), typeof x != "function" && (Zi === null ? Zi = /* @__PURE__ */ new Set([this]) : Zi.add(this)); + var oe = h.stack; this.componentDidCatch(h.value, { - componentStack: ae !== null ? ae : "" + componentStack: oe !== null ? oe : "" }); }); } - function e5(o, i, d, h, x) { + function l5(o, i, d, h, x) { if (d.flags |= 32768, h !== null && typeof h == "object" && typeof h.then == "function") { - if (i = d.alternate, i !== null && ks( + if (i = d.alternate, i !== null && js( i, d, x, !0 - ), d = Br.current, d !== null) { + ), d = Hr.current, d !== null) { switch (d.tag) { case 31: case 13: case 19: - return Zr === null ? ph() : d.alternate === null && ar === 0 && (ar = 3), d.flags &= -257, d.flags |= 65536, d.lanes = x, h === zp ? d.flags |= 16384 : (i = d.updateQueue, i === null ? d.updateQueue = /* @__PURE__ */ new Set([h]) : i.add(h), aS(o, h, x)), !1; + return Jr === null ? bh() : d.alternate === null && ar === 0 && (ar = 3), d.flags &= -257, d.flags |= 65536, d.lanes = x, h === Lp ? d.flags |= 16384 : (i = d.updateQueue, i === null ? d.updateQueue = /* @__PURE__ */ new Set([h]) : i.add(h), fS(o, h, x)), !1; case 22: - return d.flags |= 65536, h === zp ? d.flags |= 16384 : (i = d.updateQueue, i === null ? (i = { + return d.flags |= 65536, h === Lp ? d.flags |= 16384 : (i = d.updateQueue, i === null ? (i = { transitions: null, markerInstances: null, retryQueue: /* @__PURE__ */ new Set([h]) - }, d.updateQueue = i) : (d = i.retryQueue, d === null ? i.retryQueue = /* @__PURE__ */ new Set([h]) : d.add(h)), aS(o, h, x)), !1; + }, d.updateQueue = i) : (d = i.retryQueue, d === null ? i.retryQueue = /* @__PURE__ */ new Set([h]) : d.add(h)), fS(o, h, x)), !1; } throw Error(r(435, d.tag)); } - return aS(o, h, x), ph(), !1; + return fS(o, h, x), bh(), !1; } if (on) - return i = Br.current, i !== null ? ((i.flags & 65536) === 0 && (i.flags |= 256), i.flags |= 65536, i.lanes = x, h !== Bb && (o = Error(r(422), { cause: h }), Ku(qo(o, d)))) : (h !== Bb && (i = Error(r(423), { + return i = Hr.current, i !== null ? ((i.flags & 65536) === 0 && (i.flags |= 256), i.flags |= 65536, i.lanes = x, h !== Gb && (o = Error(r(422), { cause: h }), Gu(Wo(o, d)))) : (h !== Gb && (i = Error(r(423), { cause: h - }), Ku( - qo(i, d) - )), o = o.current.alternate, o.flags |= 65536, x &= -x, o.lanes |= x, h = qo(h, d), x = xy( + }), Gu( + Wo(i, d) + )), o = o.current.alternate, o.flags |= 65536, x &= -x, o.lanes |= x, h = Wo(h, d), x = Ty( o.stateNode, h, x - ), Yb(o, x), ar !== 4 && (ar = 2)), !1; + ), oy(o, x), ar !== 4 && (ar = 2)), !1; var w = Error(r(520), { cause: h }); - if (w = qo(w, d), fd === null ? fd = [w] : fd.push(w), ar !== 4 && (ar = 2), i === null) return !0; - h = qo(h, d), d = i; + if (w = Wo(w, d), md === null ? md = [w] : md.push(w), ar !== 4 && (ar = 2), i === null) return !0; + h = Wo(h, d), d = i; do { switch (d.tag) { case 3: - return d.flags |= 65536, o = x & -x, d.lanes |= o, o = xy(d.stateNode, h, o), Yb(d, o), !1; + return d.flags |= 65536, o = x & -x, d.lanes |= o, o = Ty(d.stateNode, h, o), oy(d, o), !1; case 1: - if (i = d.type, w = d.stateNode, (d.flags & 128) === 0 && (typeof i.getDerivedStateFromError == "function" || w !== null && typeof w.componentDidCatch == "function" && (Yi === null || !Yi.has(w)))) - return d.flags |= 65536, x &= -x, d.lanes |= x, x = MT(x), zT( + if (i = d.type, w = d.stateNode, (d.flags & 128) === 0 && (typeof i.getDerivedStateFromError == "function" || w !== null && typeof w.componentDidCatch == "function" && (Zi === null || !Zi.has(w)))) + return d.flags |= 65536, x &= -x, d.lanes |= x, x = BT(x), HT( x, o, d, h - ), Yb(d, x), !1; + ), oy(d, x), !1; break; case 22: if (d.memoizedState !== null) @@ -4846,42 +4846,42 @@ Error generating stack: ` + h.message + ` } while (d !== null); return !1; } - var Cy = Error(r(461)), hr = !1; - function Rr(o, i, d, h) { - i.child = o === null ? LP(i, null, d, h) : qs( + var Ny = Error(r(461)), gr = !1; + function Pr(o, i, d, h) { + i.child = o === null ? VP(i, null, d, h) : Ws( i, o.child, d, h ); } - function AT(o, i, d, h, x) { + function UT(o, i, d, h, x) { d = d.render; var w = i.ref; if ("ref" in h) { - var j = {}; - for (var ae in h) - ae !== "ref" && (j[ae] = h[ae]); - } else j = h; - return js(i), h = oy( + var B = {}; + for (var oe in h) + oe !== "ref" && (B[oe] = h[oe]); + } else B = h; + return Fs(i), h = dy( o, i, d, - j, + B, w, x - ), ae = ay(), o !== null && !hr ? (iy(o, i, x), fi(o, i, x)) : (on && ae && Rp(i), i.flags |= 1, Rr(o, i, h, x), i.child); + ), oe = fy(), o !== null && !gr ? (my(o, i, x), mi(o, i, x)) : (on && oe && _p(i), i.flags |= 1, Pr(o, i, h, x), i.child); } - function DT(o, i, d, h, x) { + function qT(o, i, d, h, x) { if (o === null) { var w = d.type; - return typeof w == "function" && !Lb(w) && w.defaultProps === void 0 && d.compare === null ? (i.tag = 15, i.type = w, OT( + return typeof w == "function" && !qb(w) && w.defaultProps === void 0 && d.compare === null ? (i.tag = 15, i.type = w, WT( o, i, w, h, x - )) : (o = wp( + )) : (o = Tp( d.type, null, h, @@ -4890,23 +4890,23 @@ Error generating stack: ` + h.message + ` x ), o.ref = i.ref, o.return = i, i.child = o); } - if (w = o.child, !_y(o, x)) { - var j = w.memoizedProps; - if (d = d.compare, d = d !== null ? d : qu, d(j, h) && o.ref === i.ref) - return fi(o, i, x); + if (w = o.child, !Ly(o, x)) { + var B = w.memoizedProps; + if (d = d.compare, d = d !== null ? d : Wu, d(B, h) && o.ref === i.ref) + return mi(o, i, x); } - return i.flags |= 1, o = ii(w, h), o.ref = i.ref, o.return = i, i.child = o; + return i.flags |= 1, o = si(w, h), o.ref = i.ref, o.return = i, i.child = o; } - function OT(o, i, d, h, x) { + function WT(o, i, d, h, x) { if (o !== null) { var w = o.memoizedProps; - if (qu(w, h) && o.ref === i.ref) - if (hr = !1, i.pendingProps = h = w, _y(o, x)) - (o.flags & 131072) !== 0 && (hr = !0); + if (Wu(w, h) && o.ref === i.ref) + if (gr = !1, i.pendingProps = h = w, Ly(o, x)) + (o.flags & 131072) !== 0 && (gr = !0); else - return i.lanes = o.lanes, fi(o, i, x); + return i.lanes = o.lanes, mi(o, i, x); } - return $y( + return _y( o, i, d, @@ -4914,7 +4914,7 @@ Error generating stack: ` + h.message + ` x ); } - function LT(o, i, d, h) { + function VT(o, i, d, h) { var x = h.children, w = o !== null ? o.memoizedState : null; if (o === null && i.stateNode === null && (i.stateNode = { _visibility: 1, @@ -4928,7 +4928,7 @@ Error generating stack: ` + h.message + ` x = x | h.lanes | h.childLanes, h = h.sibling; h = x & ~w; } else h = 0, i.child = null; - return kT( + return KT( o, i, w, @@ -4937,12 +4937,12 @@ Error generating stack: ` + h.message + ` ); } if ((d & 536870912) !== 0) - i.memoizedState = { baseLanes: 0, cachePool: null }, o !== null && Ip( + i.memoizedState = { baseLanes: 0, cachePool: null }, o !== null && Dp( i, w !== null ? w.cachePool : null - ), w !== null ? FP(i, w) : Jb(), BP(i); + ), w !== null ? XP(i, w) : iy(), QP(i); else - return h = i.lanes = 536870912, kT( + return h = i.lanes = 536870912, KT( o, i, w !== null ? w.baseLanes | d : d, @@ -4950,10 +4950,10 @@ Error generating stack: ` + h.message + ` h ); } else - w !== null ? (Ip(i, w.cachePool), FP(i, w), Vi(), i.memoizedState = null) : (o !== null && Ip(i, null), Jb(), Vi()); - return Rr(o, i, x, d), i.child; + w !== null ? (Dp(i, w.cachePool), XP(i, w), Ki(), i.memoizedState = null) : (o !== null && Dp(i, null), iy(), Ki()); + return Pr(o, i, x, d), i.child; } - function ad(o, i) { + function id(o, i) { return o !== null && o.tag === 22 || i.stateNode !== null || (i.stateNode = { _visibility: 1, _pendingMarkers: null, @@ -4961,47 +4961,47 @@ Error generating stack: ` + h.message + ` _transitions: null }), i.sibling; } - function kT(o, i, d, h, x) { - var w = Kb(); - return w = w === null ? null : { parent: mr._currentValue, pool: w }, i.memoizedState = { + function KT(o, i, d, h, x) { + var w = ey(); + return w = w === null ? null : { parent: pr._currentValue, pool: w }, i.memoizedState = { baseLanes: d, cachePool: w - }, o !== null && Ip(i, null), Jb(), BP(i), o !== null && ks(o, i, h, !0), i.childLanes = x, null; + }, o !== null && Dp(i, null), iy(), QP(i), o !== null && js(o, i, h, !0), i.childLanes = x, null; } - function Gp(o, i) { - return i = Xp( + function Zp(o, i) { + return i = Jp( { mode: i.mode, children: i.children }, o.mode ), i.ref = o.ref, o.child = i, i.return = o, i; } - function jT(o, i, d) { - return qs(i, o.child, null, d), o = Gp(i, i.pendingProps), o.flags |= 2, To(i), i.memoizedState = null, o; + function GT(o, i, d) { + return Ws(i, o.child, null, d), o = Zp(i, i.pendingProps), o.flags |= 2, To(i), i.memoizedState = null, o; } - function t5(o, i, d) { + function c5(o, i, d) { var h = i.pendingProps, x = (i.flags & 128) !== 0; if (i.flags &= -129, o === null) { if (on) { if (h.mode === "hidden") - return o = Gp(i, h), i.lanes = 536870912, o.memoizedState = { baseLanes: 0, cachePool: null }, ad(null, o); - if (ty(i), (o = Gn) ? (o = d_( + return o = Zp(i, h), i.lanes = 536870912, o.memoizedState = { baseLanes: 0, cachePool: null }, id(null, o); + if (ly(i), (o = Gn) ? (o = S_( o, - Ko + Go ), o = o !== null && o.data === "&" ? o : null, o !== null && (i.memoizedState = { dehydrated: o, - treeContext: Oi !== null ? { id: Ta, overflow: Na } : null, + treeContext: Li !== null ? { id: Na, overflow: _a } : null, retryLane: 536870912, hydrationErrors: null - }, d = CP(o), d.return = i, i.child = d, zr = i, Gn = null)) : o = null, o === null) throw ki(i); + }, d = IP(o), d.return = i, i.child = d, Ar = i, Gn = null)) : o = null, o === null) throw ji(i); return i.lanes = 536870912, null; } - return Gp(i, h); + return Zp(i, h); } var w = o.memoizedState; if (w !== null) { - var j = w.dehydrated; - if (ty(i), x) + var B = w.dehydrated; + if (ly(i), x) if (i.flags & 256) - i.flags &= -257, i = jT( + i.flags &= -257, i = GT( o, i, d @@ -5009,27 +5009,27 @@ Error generating stack: ` + h.message + ` else if (i.memoizedState !== null) i.child = o.child, i.flags |= 128, i = null; else throw Error(r(558)); - else if (hr || ks(o, i, d, !1), x = (d & o.childLanes) !== 0, hr || x) { - if (qi.current === null) { - if (h = Vn, h !== null && (j = $n(h, d), j !== 0 && j !== w.retryLane)) - throw w.retryLane = j, As(o, j), bo(h, o, j), Cy; - ph(); + else if (gr || js(o, i, d, !1), x = (d & o.childLanes) !== 0, gr || x) { + if (Wi.current === null) { + if (h = Vn, h !== null && (B = $n(h, d), B !== 0 && B !== w.retryLane)) + throw w.retryLane = B, Ds(o, B), bo(h, o, B), Ny; + bh(); } - i = jT( + i = GT( o, i, d ); } else - o = w.treeContext, Gn = Xo(j.nextSibling), zr = i, on = !0, Li = null, Ko = !1, o !== null && EP(i, o), i = Gp(i, h), i.flags |= 134221824; + o = w.treeContext, Gn = Qo(B.nextSibling), Ar = i, on = !0, ki = null, Go = !1, o !== null && AP(i, o), i = Zp(i, h), i.flags |= 134221824; return i; } - return o = ii(o.child, { + return o = si(o.child, { mode: h.mode, children: h.children }), o.ref = i.ref, i.child = o, o.return = i, o; } - function uc(o, i) { + function dc(o, i) { var d = i.ref; if (d === null) o !== null && o.ref !== null && (i.flags |= 4194816); @@ -5039,263 +5039,263 @@ Error generating stack: ` + h.message + ` (o === null || o.ref !== d) && (i.flags |= 4194816); } } - function $y(o, i, d, h, x) { - return js(i), d = oy( + function _y(o, i, d, h, x) { + return Fs(i), d = dy( o, i, d, h, void 0, x - ), h = ay(), o !== null && !hr ? (iy(o, i, x), fi(o, i, x)) : (on && h && Rp(i), i.flags |= 1, Rr(o, i, d, x), i.child); + ), h = fy(), o !== null && !gr ? (my(o, i, x), mi(o, i, x)) : (on && h && _p(i), i.flags |= 1, Pr(o, i, d, x), i.child); } - function FT(o, i, d, h, x, w) { - return js(i), i.updateQueue = null, d = UP( + function XT(o, i, d, h, x, w) { + return Fs(i), i.updateQueue = null, d = ZP( i, h, d, x - ), HP(o), h = ay(), o !== null && !hr ? (iy(o, i, w), fi(o, i, w)) : (on && h && Rp(i), i.flags |= 1, Rr(o, i, d, w), i.child); + ), YP(o), h = fy(), o !== null && !gr ? (my(o, i, w), mi(o, i, w)) : (on && h && _p(i), i.flags |= 1, Pr(o, i, d, w), i.child); } - function BT(o, i, d, h, x) { - if (js(i), i.stateNode === null) { - var w = ec, j = d.contextType; - typeof j == "object" && j !== null && (w = Fr(j)), w = new d(h, w), i.memoizedState = w.state !== null && w.state !== void 0 ? w.state : null, w.updater = Sy, i.stateNode = w, w._reactInternals = i, w = i.stateNode, w.props = h, w.state = i.memoizedState, w.refs = {}, Xb(i), j = d.contextType, w.context = typeof j == "object" && j !== null ? Fr(j) : ec, w.state = i.memoizedState, j = d.getDerivedStateFromProps, typeof j == "function" && (yy( + function QT(o, i, d, h, x) { + if (Fs(i), i.stateNode === null) { + var w = tc, B = d.contextType; + typeof B == "object" && B !== null && (w = Br(B)), w = new d(h, w), i.memoizedState = w.state !== null && w.state !== void 0 ? w.state : null, w.updater = Py, i.stateNode = w, w._reactInternals = i, w = i.stateNode, w.props = h, w.state = i.memoizedState, w.refs = {}, ny(i), B = d.contextType, w.context = typeof B == "object" && B !== null ? Br(B) : tc, w.state = i.memoizedState, B = d.getDerivedStateFromProps, typeof B == "function" && (Ry( i, d, - j, + B, h - ), w.state = i.memoizedState), typeof d.getDerivedStateFromProps == "function" || typeof w.getSnapshotBeforeUpdate == "function" || typeof w.UNSAFE_componentWillMount != "function" && typeof w.componentWillMount != "function" || (j = w.state, typeof w.componentWillMount == "function" && w.componentWillMount(), typeof w.UNSAFE_componentWillMount == "function" && w.UNSAFE_componentWillMount(), j !== w.state && Sy.enqueueReplaceState(w, w.state, null), ed(i, h, w, x), Ju(), w.state = i.memoizedState), typeof w.componentDidMount == "function" && (i.flags |= 4194308), h = !0; + ), w.state = i.memoizedState), typeof d.getDerivedStateFromProps == "function" || typeof w.getSnapshotBeforeUpdate == "function" || typeof w.UNSAFE_componentWillMount != "function" && typeof w.componentWillMount != "function" || (B = w.state, typeof w.componentWillMount == "function" && w.componentWillMount(), typeof w.UNSAFE_componentWillMount == "function" && w.UNSAFE_componentWillMount(), B !== w.state && Py.enqueueReplaceState(w, w.state, null), td(i, h, w, x), ed(), w.state = i.memoizedState), typeof w.componentDidMount == "function" && (i.flags |= 4194308), h = !0; } else if (o === null) { w = i.stateNode; - var ae = i.memoizedProps, ge = Vs(d, ae); - w.props = ge; - var Ie = w.context, je = d.contextType; - j = ec, typeof je == "object" && je !== null && (j = Fr(je)); + var oe = i.memoizedProps, ve = Ks(d, oe); + w.props = ve; + var ze = w.context, je = d.contextType; + B = tc, typeof je == "object" && je !== null && (B = Br(je)); var Ye = d.getDerivedStateFromProps; - je = typeof Ye == "function" || typeof w.getSnapshotBeforeUpdate == "function", ae = i.pendingProps !== ae, je || typeof w.UNSAFE_componentWillReceiveProps != "function" && typeof w.componentWillReceiveProps != "function" || (ae || Ie !== j) && PT( + je = typeof Ye == "function" || typeof w.getSnapshotBeforeUpdate == "function", oe = i.pendingProps !== oe, je || typeof w.UNSAFE_componentWillReceiveProps != "function" && typeof w.componentWillReceiveProps != "function" || (oe || ze !== B) && OT( i, w, h, - j - ), Bi = !1; - var Pe = i.memoizedState; - w.state = Pe, ed(i, h, w, x), Ju(), Ie = i.memoizedState, ae || Pe !== Ie || Bi ? (typeof Ye == "function" && (yy( + B + ), Hi = !1; + var Te = i.memoizedState; + w.state = Te, td(i, h, w, x), ed(), ze = i.memoizedState, oe || Te !== ze || Hi ? (typeof Ye == "function" && (Ry( i, d, Ye, h - ), Ie = i.memoizedState), (ge = Bi || RT( + ), ze = i.memoizedState), (ve = Hi || DT( i, d, - ge, + ve, h, - Pe, - Ie, - j - )) ? (je || typeof w.UNSAFE_componentWillMount != "function" && typeof w.componentWillMount != "function" || (typeof w.componentWillMount == "function" && w.componentWillMount(), typeof w.UNSAFE_componentWillMount == "function" && w.UNSAFE_componentWillMount()), typeof w.componentDidMount == "function" && (i.flags |= 4194308)) : (typeof w.componentDidMount == "function" && (i.flags |= 4194308), i.memoizedProps = h, i.memoizedState = Ie), w.props = h, w.state = Ie, w.context = j, h = ge) : (typeof w.componentDidMount == "function" && (i.flags |= 4194308), h = !1); + Te, + ze, + B + )) ? (je || typeof w.UNSAFE_componentWillMount != "function" && typeof w.componentWillMount != "function" || (typeof w.componentWillMount == "function" && w.componentWillMount(), typeof w.UNSAFE_componentWillMount == "function" && w.UNSAFE_componentWillMount()), typeof w.componentDidMount == "function" && (i.flags |= 4194308)) : (typeof w.componentDidMount == "function" && (i.flags |= 4194308), i.memoizedProps = h, i.memoizedState = ze), w.props = h, w.state = ze, w.context = B, h = ve) : (typeof w.componentDidMount == "function" && (i.flags |= 4194308), h = !1); } else { - w = i.stateNode, Qb(o, i), j = i.memoizedProps, je = Vs(d, j), w.props = je, Ye = i.pendingProps, Pe = w.context, Ie = d.contextType, ge = ec, typeof Ie == "object" && Ie !== null && (ge = Fr(Ie)), ae = d.getDerivedStateFromProps, (Ie = typeof ae == "function" || typeof w.getSnapshotBeforeUpdate == "function") || typeof w.UNSAFE_componentWillReceiveProps != "function" && typeof w.componentWillReceiveProps != "function" || (j !== Ye || Pe !== ge) && PT( + w = i.stateNode, ry(o, i), B = i.memoizedProps, je = Ks(d, B), w.props = je, Ye = i.pendingProps, Te = w.context, ze = d.contextType, ve = tc, typeof ze == "object" && ze !== null && (ve = Br(ze)), oe = d.getDerivedStateFromProps, (ze = typeof oe == "function" || typeof w.getSnapshotBeforeUpdate == "function") || typeof w.UNSAFE_componentWillReceiveProps != "function" && typeof w.componentWillReceiveProps != "function" || (B !== Ye || Te !== ve) && OT( i, w, h, - ge - ), Bi = !1, Pe = i.memoizedState, w.state = Pe, ed(i, h, w, x), Ju(); + ve + ), Hi = !1, Te = i.memoizedState, w.state = Te, td(i, h, w, x), ed(); var Le = i.memoizedState; - j !== Ye || Pe !== Le || Bi || o !== null && o.dependencies !== null && Np(o.dependencies) ? (typeof ae == "function" && (yy( + B !== Ye || Te !== Le || Hi || o !== null && o.dependencies !== null && Mp(o.dependencies) ? (typeof oe == "function" && (Ry( i, d, - ae, + oe, h - ), Le = i.memoizedState), (je = Bi || RT( + ), Le = i.memoizedState), (je = Hi || DT( i, d, je, h, - Pe, + Te, Le, - ge - ) || o !== null && o.dependencies !== null && Np(o.dependencies)) ? (Ie || typeof w.UNSAFE_componentWillUpdate != "function" && typeof w.componentWillUpdate != "function" || (typeof w.componentWillUpdate == "function" && w.componentWillUpdate(h, Le, ge), typeof w.UNSAFE_componentWillUpdate == "function" && w.UNSAFE_componentWillUpdate( + ve + ) || o !== null && o.dependencies !== null && Mp(o.dependencies)) ? (ze || typeof w.UNSAFE_componentWillUpdate != "function" && typeof w.componentWillUpdate != "function" || (typeof w.componentWillUpdate == "function" && w.componentWillUpdate(h, Le, ve), typeof w.UNSAFE_componentWillUpdate == "function" && w.UNSAFE_componentWillUpdate( h, Le, - ge - )), typeof w.componentDidUpdate == "function" && (i.flags |= 4), typeof w.getSnapshotBeforeUpdate == "function" && (i.flags |= 1024)) : (typeof w.componentDidUpdate != "function" || j === o.memoizedProps && Pe === o.memoizedState || (i.flags |= 4), typeof w.getSnapshotBeforeUpdate != "function" || j === o.memoizedProps && Pe === o.memoizedState || (i.flags |= 1024), i.memoizedProps = h, i.memoizedState = Le), w.props = h, w.state = Le, w.context = ge, h = je) : (typeof w.componentDidUpdate != "function" || j === o.memoizedProps && Pe === o.memoizedState || (i.flags |= 4), typeof w.getSnapshotBeforeUpdate != "function" || j === o.memoizedProps && Pe === o.memoizedState || (i.flags |= 1024), h = !1); + ve + )), typeof w.componentDidUpdate == "function" && (i.flags |= 4), typeof w.getSnapshotBeforeUpdate == "function" && (i.flags |= 1024)) : (typeof w.componentDidUpdate != "function" || B === o.memoizedProps && Te === o.memoizedState || (i.flags |= 4), typeof w.getSnapshotBeforeUpdate != "function" || B === o.memoizedProps && Te === o.memoizedState || (i.flags |= 1024), i.memoizedProps = h, i.memoizedState = Le), w.props = h, w.state = Le, w.context = ve, h = je) : (typeof w.componentDidUpdate != "function" || B === o.memoizedProps && Te === o.memoizedState || (i.flags |= 4), typeof w.getSnapshotBeforeUpdate != "function" || B === o.memoizedProps && Te === o.memoizedState || (i.flags |= 1024), h = !1); } - return w = h, uc(o, i), h = (i.flags & 128) !== 0, w || h ? (w = i.stateNode, d = h && typeof d.getDerivedStateFromError != "function" ? null : w.render(), i.flags |= 1, o !== null && h ? (i.child = qs( + return w = h, dc(o, i), h = (i.flags & 128) !== 0, w || h ? (w = i.stateNode, d = h && typeof d.getDerivedStateFromError != "function" ? null : w.render(), i.flags |= 1, o !== null && h ? (i.child = Ws( i, o.child, null, x - ), i.child = qs( + ), i.child = Ws( i, null, d, x - )) : Rr(o, i, d, x), i.memoizedState = w.state, o = i.child) : o = fi( + )) : Pr(o, i, d, x), i.memoizedState = w.state, o = i.child) : o = mi( o, i, x ), o; } - function HT(o, i, d, h) { - return Os(), i.flags |= 256, Rr(o, i, d, h), i.child; + function YT(o, i, d, h) { + return Ls(), i.flags |= 256, Pr(o, i, d, h), i.child; } - var wy = { + var Iy = { dehydrated: null, treeContext: null, retryLane: 0, hydrationErrors: null }; - function Ey(o) { - return { baseLanes: o, cachePool: IP() }; + function zy(o) { + return { baseLanes: o, cachePool: FP() }; } - function Ry(o, i, d) { + function My(o, i, d) { return o = o !== null ? o.childLanes & ~d : 0, i && (o |= Io), o; } - function UT(o, i, d) { - var h = i.pendingProps, x = !1, w = (i.flags & 128) !== 0, j; - if ((j = w) || (j = o !== null && o.memoizedState === null ? !1 : (Hr.current & 2) !== 0), j && (x = !0, i.flags &= -129), j = (i.flags & 32) !== 0, i.flags &= -33, o === null) { + function ZT(o, i, d) { + var h = i.pendingProps, x = !1, w = (i.flags & 128) !== 0, B; + if ((B = w) || (B = o !== null && o.memoizedState === null ? !1 : (Ur.current & 2) !== 0), B && (x = !0, i.flags &= -129), B = (i.flags & 32) !== 0, i.flags &= -33, o === null) { if (on) { - if (x ? Wi(i) : Vi(), (o = Gn) ? (o = d_( + if (x ? Vi(i) : Ki(), (o = Gn) ? (o = S_( o, - Ko + Go ), o = o !== null && o.data !== "&" ? o : null, o !== null && (i.memoizedState = { dehydrated: o, - treeContext: Oi !== null ? { id: Ta, overflow: Na } : null, + treeContext: Li !== null ? { id: Na, overflow: _a } : null, retryLane: 536870912, hydrationErrors: null - }, d = CP(o), d.return = i, i.child = d, zr = i, Gn = null)) : o = null, o === null) throw ki(i); - return ES(o) ? i.lanes = 32 : i.lanes = 536870912, null; + }, d = IP(o), d.return = i, i.child = d, Ar = i, Gn = null)) : o = null, o === null) throw ji(i); + return zS(o) ? i.lanes = 32 : i.lanes = 536870912, null; } - return w = h.children, h = h.fallback, x ? (Vi(), x = i.mode, w = Xp( + return w = h.children, h = h.fallback, x ? (Ki(), x = i.mode, w = Jp( { mode: "hidden", children: w }, x - ), h = Ds( + ), h = Os( h, x, d, null - ), w.return = i, h.return = i, w.sibling = h, i.child = w, h = i.child, h.memoizedState = Ey(d), h.childLanes = Ry( + ), w.return = i, h.return = i, w.sibling = h, i.child = w, h = i.child, h.memoizedState = zy(d), h.childLanes = My( o, - j, + B, d - ), i.memoizedState = wy, ad(null, h)) : (Wi(i), Py(i, w)); + ), i.memoizedState = Iy, id(null, h)) : (Vi(i), Ay(i, w)); } - var ae = o.memoizedState; - if (ae !== null) { - var ge = ae.dehydrated; - if (ge !== null) - return n5( + var oe = o.memoizedState; + if (oe !== null) { + var ve = oe.dehydrated; + if (ve !== null) + return u5( o, i, w, - j, + B, h, - ge, - ae, + ve, + oe, d ); } - return x ? (Vi(), x = h.fallback, w = i.mode, ae = o.child, ge = ae.sibling, h = ii(ae, { + return x ? (Ki(), x = h.fallback, w = i.mode, oe = o.child, ve = oe.sibling, h = si(oe, { mode: "hidden", children: h.children - }), h.subtreeFlags = ae.subtreeFlags & 1206910976, ge !== null ? x = ii(ge, x) : (x = Ds( + }), h.subtreeFlags = oe.subtreeFlags & 1206910976, ve !== null ? x = si(ve, x) : (x = Os( x, w, d, null - ), x.flags |= 2), x.return = i, h.return = i, h.sibling = x, i.child = h, ad(null, h), h = i.child, x = o.child.memoizedState, x === null ? x = Ey(d) : (w = x.cachePool, w !== null ? (ae = mr._currentValue, w = w.parent !== ae ? { parent: ae, pool: ae } : w) : w = IP(), x = { + ), x.flags |= 2), x.return = i, h.return = i, h.sibling = x, i.child = h, id(null, h), h = i.child, x = o.child.memoizedState, x === null ? x = zy(d) : (w = x.cachePool, w !== null ? (oe = pr._currentValue, w = w.parent !== oe ? { parent: oe, pool: oe } : w) : w = FP(), x = { baseLanes: x.baseLanes | d, cachePool: w - }), h.memoizedState = x, h.childLanes = Ry( + }), h.memoizedState = x, h.childLanes = My( o, - j, + B, d - ), i.memoizedState = wy, ad(o.child, h)) : (Wi(i), d = o.child, o = d.sibling, d = ii(d, { + ), i.memoizedState = Iy, id(o.child, h)) : (Vi(i), d = o.child, o = d.sibling, d = si(d, { mode: "visible", children: h.children - }), d.return = i, d.sibling = null, o !== null && (j = i.deletions, j === null ? (i.deletions = [o], i.flags |= 16) : j.push(o)), i.child = d, i.memoizedState = null, d); + }), d.return = i, d.sibling = null, o !== null && (B = i.deletions, B === null ? (i.deletions = [o], i.flags |= 16) : B.push(o)), i.child = d, i.memoizedState = null, d); } - function Py(o, i) { - return i = Xp( + function Ay(o, i) { + return i = Jp( { mode: "visible", children: i }, o.mode ), i.return = o, o.child = i; } - function Xp(o, i) { + function Jp(o, i) { return o = po(22, o, null, i), o.lanes = 0, o; } - function Qp(o, i, d) { - return qs(i, o.child, null, d), o = Py( + function eh(o, i, d) { + return Ws(i, o.child, null, d), o = Ay( i, i.pendingProps.children ), o.flags |= 2, i.memoizedState = null, o; } - function n5(o, i, d, h, x, w, j, ae) { + function u5(o, i, d, h, x, w, B, oe) { if (d) - return i.flags & 256 ? (Wi(i), i.flags &= -257, Qp( + return i.flags & 256 ? (Vi(i), i.flags &= -257, eh( o, i, - ae - )) : i.memoizedState !== null ? (Vi(), i.child = o.child, i.flags |= 128, null) : (Vi(), w = x.fallback, j = i.mode, x = Xp( + oe + )) : i.memoizedState !== null ? (Ki(), i.child = o.child, i.flags |= 128, null) : (Ki(), w = x.fallback, B = i.mode, x = Jp( { mode: "visible", children: x.children }, - j - ), w = Ds( + B + ), w = Os( w, - j, - ae, + B, + oe, null - ), w.flags |= 2, x.return = i, w.return = i, x.sibling = w, i.child = x, qs(i, o.child, null, ae), x = i.child, x.memoizedState = Ey(ae), x.childLanes = Ry( + ), w.flags |= 2, x.return = i, w.return = i, x.sibling = w, i.child = x, Ws(i, o.child, null, oe), x = i.child, x.memoizedState = zy(oe), x.childLanes = My( o, h, - ae - ), i.memoizedState = wy, ad(null, x)); - if (Wi(i), ES(w)) { - if (h = w.nextSibling && w.nextSibling.dataset, h) var ge = h.dgst; - return h = ge, h !== "" && (x = Error(r(419)), x.stack = "", x.digest = h, Ku({ value: x, source: null, stack: null })), Qp( + oe + ), i.memoizedState = Iy, id(null, x)); + if (Vi(i), zS(w)) { + if (h = w.nextSibling && w.nextSibling.dataset, h) var ve = h.dgst; + return h = ve, h !== "" && (x = Error(r(419)), x.stack = "", x.digest = h, Gu({ value: x, source: null, stack: null })), eh( o, i, - ae + oe ); } - if (hr || ks(o, i, ae, !1), h = (ae & o.childLanes) !== 0, hr || h) { - if (qi.current !== null) - return Qp( + if (gr || js(o, i, oe, !1), h = (oe & o.childLanes) !== 0, gr || h) { + if (Wi.current !== null) + return eh( o, i, - ae + oe ); if (h = Vn, h !== null && (x = $n( h, - ae - ), x !== 0 && x !== j.retryLane)) - throw j.retryLane = x, As(o, x), bo(h, o, x), Cy; - return wS(w) || ph(), Qp( + oe + ), x !== 0 && x !== B.retryLane)) + throw B.retryLane = x, Ds(o, x), bo(h, o, x), Ny; + return IS(w) || bh(), eh( o, i, - ae + oe ); } - return wS(w) ? (i.flags |= 192, i.child = o.child, null) : (o = j.treeContext, Gn = Xo(w.nextSibling), zr = i, on = !0, Li = null, Ko = !1, o !== null && EP(i, o), i = Py( + return IS(w) ? (i.flags |= 192, i.child = o.child, null) : (o = B.treeContext, Gn = Qo(w.nextSibling), Ar = i, on = !0, ki = null, Go = !1, o !== null && AP(i, o), i = Ay( i, x.children ), i.flags |= 134221824, i); } - function qT(o, i, d) { + function JT(o, i, d) { o.lanes |= i; var h = o.alternate; - h !== null && (h.lanes |= i), Tp(o.return, i, d); + h !== null && (h.lanes |= i), zp(o.return, i, d); } - function WT(o) { + function eN(o) { for (var i = null; o !== null; ) { var d = o.alternate; - d !== null && Lp(d) === null && (i = o), o = o.sibling; + d !== null && Bp(d) === null && (i = o), o = o.sibling; } return i; } - function Yp(o, i, d, h, x, w) { - var j = o.memoizedState; - j === null ? o.memoizedState = { + function th(o, i, d, h, x, w) { + var B = o.memoizedState; + B === null ? o.memoizedState = { isBackwards: i, rendering: null, renderingStartTime: 0, @@ -5303,28 +5303,28 @@ Error generating stack: ` + h.message + ` tail: d, tailMode: x, treeForkCount: w - } : (j.isBackwards = i, j.rendering = null, j.renderingStartTime = 0, j.last = h, j.tail = d, j.tailMode = x, j.treeForkCount = w); + } : (B.isBackwards = i, B.rendering = null, B.renderingStartTime = 0, B.last = h, B.tail = d, B.tailMode = x, B.treeForkCount = w); } - function Ty(o) { + function Dy(o) { var i = o.child; for (o.child = null; i !== null; ) { var d = i.sibling; i.sibling = o.child, o.child = i, i = d; } } - function Ny(o, i, d) { + function Oy(o, i, d) { var h = i.pendingProps, x = h.revealOrder, w = h.tail; h = h.children; - var j = Hr.current; + var B = Ur.current; if (i.flags & 128) - return td(i, j), null; - var ae = (j & 2) !== 0; - if (ae ? (j = j & 1 | 2, i.flags |= 128) : j &= 1, td(i, j), x === "backwards" && o !== null ? (Ty(o), Rr(o, i, h, d), Ty(o)) : Rr(o, i, h, d), h = on ? Vu : 0, !ae && o !== null && (o.flags & 128) !== 0) + return nd(i, B), null; + var oe = (B & 2) !== 0; + if (oe ? (B = B & 1 | 2, i.flags |= 128) : B &= 1, nd(i, B), x === "backwards" && o !== null ? (Dy(o), Pr(o, i, h, d), Dy(o)) : Pr(o, i, h, d), h = on ? Ku : 0, !oe && o !== null && (o.flags & 128) !== 0) e: for (o = i.child; o !== null; ) { if (o.tag === 13) - o.memoizedState !== null && qT(o, d, i); + o.memoizedState !== null && JT(o, d, i); else if (o.tag === 19) - qT(o, d, i); + JT(o, d, i); else if (o.child !== null) { o.child.return = o, o = o.child; continue; @@ -5339,7 +5339,7 @@ Error generating stack: ` + h.message + ` } switch (x) { case "backwards": - d = WT(i.child), d === null ? (x = i.child, i.child = null) : (x = d.sibling, d.sibling = null, Ty(i)), Yp( + d = eN(i.child), d === null ? (x = i.child, i.child = null) : (x = d.sibling, d.sibling = null, Dy(i)), th( i, !0, x, @@ -5350,13 +5350,13 @@ Error generating stack: ` + h.message + ` break; case "unstable_legacy-backwards": for (d = null, x = i.child, i.child = null; x !== null; ) { - if (o = x.alternate, o !== null && Lp(o) === null) { + if (o = x.alternate, o !== null && Bp(o) === null) { i.child = x; break; } o = x.sibling, x.sibling = d, d = x, x = o; } - Yp( + th( i, !0, d, @@ -5366,7 +5366,7 @@ Error generating stack: ` + h.message + ` ); break; case "together": - Yp( + th( i, !1, null, @@ -5379,7 +5379,7 @@ Error generating stack: ` + h.message + ` i.memoizedState = null; break; default: - d = WT(i.child), d === null ? (x = i.child, i.child = null) : (x = d.sibling, d.sibling = null), Yp( + d = eN(i.child), d === null ? (x = i.child, i.child = null) : (x = d.sibling, d.sibling = null), th( i, !1, x, @@ -5390,14 +5390,14 @@ Error generating stack: ` + h.message + ` } return i.child; } - function VT(o, i, d) { + function tN(o, i, d) { var h = i.pendingProps; - return ji(i, i.type, h.value), Rr(o, i, h.children, d), i.child; + return Fi(i, i.type, h.value), Pr(o, i, h.children, d), i.child; } - function fi(o, i, d) { - if (o !== null && (i.dependencies = o.dependencies), Qi |= i.lanes, (d & i.childLanes) === 0) + function mi(o, i, d) { + if (o !== null && (i.dependencies = o.dependencies), Yi |= i.lanes, (d & i.childLanes) === 0) if (o !== null) { - if (ks( + if (js( o, i, d, @@ -5408,29 +5408,29 @@ Error generating stack: ` + h.message + ` if (o !== null && i.child !== o.child) throw Error(r(153)); if (i.child !== null) { - for (o = i.child, d = ii(o, o.pendingProps), i.child = d, d.return = i; o.sibling !== null; ) - o = o.sibling, d = d.sibling = ii(o, o.pendingProps), d.return = i; + for (o = i.child, d = si(o, o.pendingProps), i.child = d, d.return = i; o.sibling !== null; ) + o = o.sibling, d = d.sibling = si(o, o.pendingProps), d.return = i; d.sibling = null; } return i.child; } - function _y(o, i) { - return (o.lanes & i) !== 0 ? !0 : (o = o.dependencies, !!(o !== null && Np(o))); + function Ly(o, i) { + return (o.lanes & i) !== 0 ? !0 : (o = o.dependencies, !!(o !== null && Mp(o))); } - function r5(o, i, d) { + function d5(o, i, d) { switch (i.tag) { case 3: - qe(i, i.stateNode.containerInfo), ji(i, mr, o.memoizedState.cache), Os(); + We(i, i.stateNode.containerInfo), Fi(i, pr, o.memoizedState.cache), Ls(); break; case 27: case 5: - be(i); + ye(i); break; case 4: - qe(i, i.stateNode.containerInfo); + We(i, i.stateNode.containerInfo); break; case 10: - ji( + Fi( i, i.type, i.memoizedProps.value @@ -5438,90 +5438,90 @@ Error generating stack: ` + h.message + ` break; case 31: if (i.memoizedState !== null) - return i.flags |= 128, ty(i), null; + return i.flags |= 128, ly(i), null; break; case 13: var h = i.memoizedState; if (h !== null) { if (h.dehydrated !== null) - return Wi(i), i.flags |= 128, null; - h = ks( + return Vi(i), i.flags |= 128, null; + h = js( o, i, d, !1 ); var x = i.child.childLanes; - return h || (d & x) !== 0 ? UT(o, i, d) : (Wi(i), o = fi( + return h || (d & x) !== 0 ? ZT(o, i, d) : (Vi(i), o = mi( o, i, d ), o !== null ? o.sibling : null); } - Wi(i); + Vi(i); break; case 19: if (i.flags & 128) - return Ny( + return Oy( o, i, d ); - if (x = (o.flags & 128) !== 0, h = (d & i.childLanes) !== 0, h || (ks( + if (x = (o.flags & 128) !== 0, h = (d & i.childLanes) !== 0, h || (js( o, i, d, !1 ), h = (d & i.childLanes) !== 0), x) { if (h) - return Ny( + return Oy( o, i, d ); i.flags |= 128; } - if (x = i.memoizedState, x !== null && (x.rendering = null, x.tail = null, x.lastEffect = null), td(i, Hr.current), h) break; + if (x = i.memoizedState, x !== null && (x.rendering = null, x.tail = null, x.lastEffect = null), nd(i, Ur.current), h) break; return null; case 22: - return i.lanes = 0, LT( + return i.lanes = 0, VT( o, i, d, i.pendingProps ); case 24: - ji(i, mr, o.memoizedState.cache); + Fi(i, pr, o.memoizedState.cache); } - return fi(o, i, d); + return mi(o, i, d); } - function KT(o, i, d) { + function nN(o, i, d) { if (o !== null) if (o.memoizedProps !== i.pendingProps) - hr = !0; + gr = !0; else { - if (!_y(o, d) && (i.flags & 128) === 0) - return hr = !1, r5( + if (!Ly(o, d) && (i.flags & 128) === 0) + return gr = !1, d5( o, i, d ); - hr = (o.flags & 131072) !== 0; + gr = (o.flags & 131072) !== 0; } else - hr = !1, on && (i.flags & 1048576) !== 0 && wP(i, Vu, i.index); + gr = !1, on && (i.flags & 1048576) !== 0 && MP(i, Ku, i.index); switch (i.lanes = 0, i.tag) { case 16: e: { var h = i.pendingProps; - if (o = Hs(i.elementType), i.type = o, typeof o == "function") - Lb(o) ? (h = Vs(o, h), i.tag = 1, i = BT( + if (o = Us(i.elementType), i.type = o, typeof o == "function") + qb(o) ? (h = Ks(o, h), i.tag = 1, i = QT( null, i, o, h, d - )) : (i.tag = 0, i = $y( + )) : (i.tag = 0, i = _y( null, i, o, @@ -5531,8 +5531,8 @@ Error generating stack: ` + h.message + ` else { if (o != null) { var x = o.$$typeof; - if (x === H) { - i.tag = 11, i = AT( + if (x === U) { + i.tag = 11, i = UT( null, i, o, @@ -5540,8 +5540,8 @@ Error generating stack: ` + h.message + ` d ); break e; - } else if (x === X) { - i.tag = 14, i = DT( + } else if (x === G) { + i.tag = 14, i = qT( null, i, o, @@ -5549,8 +5549,8 @@ Error generating stack: ` + h.message + ` d ); break e; - } else if (x === U) { - i.tag = 10, i.type = o, i = VT( + } else if (x === q) { + i.tag = 10, i.type = o, i = tN( null, i, d @@ -5563,7 +5563,7 @@ Error generating stack: ` + h.message + ` } return i; case 0: - return $y( + return _y( o, i, i.type, @@ -5571,10 +5571,10 @@ Error generating stack: ` + h.message + ` d ); case 1: - return h = i.type, x = Vs( + return h = i.type, x = Ks( h, i.pendingProps - ), BT( + ), QT( o, i, h, @@ -5583,26 +5583,26 @@ Error generating stack: ` + h.message + ` ); case 3: e: { - if (qe( + if (We( i, i.stateNode.containerInfo ), o === null) throw Error(r(387)); h = i.pendingProps; var w = i.memoizedState; - x = w.element, Qb(o, i), ed(i, h, null, d); - var j = i.memoizedState; - if (h = j.cache, ji(i, mr, h), h !== w.cache && qb( + x = w.element, ry(o, i), td(i, h, null, d); + var B = i.memoizedState; + if (h = B.cache, Fi(i, pr, h), h !== w.cache && Yb( i, - [mr], + [pr], d, !0 - ), Ju(), h = j.element, w.isDehydrated) + ), ed(), h = B.element, w.isDehydrated) if (w = { element: h, isDehydrated: !1, - cache: j.cache + cache: B.cache }, i.updateQueue.baseState = w, i.memoizedState = w, i.flags & 256) { - i = HT( + i = YT( o, i, h, @@ -5610,10 +5610,10 @@ Error generating stack: ` + h.message + ` ); break e; } else if (h !== x) { - x = qo( + x = Wo( Error(r(424)), i - ), Ku(x), i = HT( + ), Gu(x), i = YT( o, i, h, @@ -5621,7 +5621,7 @@ Error generating stack: ` + h.message + ` ); break e; } else - for (o = i.stateNode.containerInfo, o.nodeType === 9 ? o = o.body : o = o.nodeName === "HTML" ? o.ownerDocument.body : o, Gn = Xo(o.firstChild), zr = i, on = !0, Li = null, Ko = !0, d = LP( + for (o = i.stateNode.containerInfo, o.nodeType === 9 ? o = o.body : o = o.nodeName === "HTML" ? o.ownerDocument.body : o, Gn = Qo(o.firstChild), Ar = i, on = !0, ki = null, Go = !0, d = VP( i, null, h, @@ -5629,81 +5629,81 @@ Error generating stack: ` + h.message + ` ), i.child = d; d; ) d.flags = d.flags & -3 | 134221824, d = d.sibling; else { - if (Os(), h === x) { - i = fi( + if (Ls(), h === x) { + i = mi( o, i, d ); break e; } - Rr(o, i, h, d); + Pr(o, i, h, d); } i = i.child; } return i; case 26: - return uc(o, i), o === null ? (d = b_( + return dc(o, i), o === null ? (d = P_( i.type, null, i.pendingProps, null - )) ? i.memoizedState = d : on || (i.stateNode = YN( + )) ? i.memoizedState = d : on || (i.stateNode = i_( i.type, i.pendingProps, - Me.current, + $e.current, i - )) : i.memoizedState = b_( + )) : i.memoizedState = P_( i.type, o.memoizedProps, i.pendingProps, o.memoizedState ), null; case 27: - return be(i), o === null && on && (h = i.stateNode = p_( + return ye(i), o === null && on && (h = i.stateNode = $_( i.type, i.pendingProps, - Me.current - ), zr = i, Ko = !0, x = Gn, es(i.type) ? (RS = x, Gn = Xo(h.firstChild)) : Gn = x), Rr( + $e.current + ), Ar = i, Go = !0, x = Gn, ts(i.type) ? (MS = x, Gn = Qo(h.firstChild)) : Gn = x), Pr( o, i, i.pendingProps.children, d - ), uc(o, i), o === null && (i.flags |= 4194304), i.child; + ), dc(o, i), o === null && (i.flags |= 4194304), i.child; case 5: - return o === null && on && ((x = h = Gn) && (h = Y5( + return o === null && on && ((x = h = Gn) && (h = aU( h, i.type, i.pendingProps, - Ko - ), h !== null ? (i.stateNode = h, zr = i, Gn = Xo(h.firstChild), Ko = !1, x = !0) : x = !1), x || ki(i)), be(i), x = i.type, w = i.pendingProps, j = o !== null ? o.memoizedProps : null, h = w.children, vS(x, w) ? h = null : j !== null && vS(x, j) && (i.flags |= 32), i.memoizedState !== null && (x = oy( + Go + ), h !== null ? (i.stateNode = h, Ar = i, Gn = Qo(h.firstChild), Go = !1, x = !0) : x = !1), x || ji(i)), ye(i), x = i.type, w = i.pendingProps, B = o !== null ? o.memoizedProps : null, h = w.children, wS(x, w) ? h = null : B !== null && wS(x, B) && (i.flags |= 32), i.memoizedState !== null && (x = dy( o, i, - V6, + e5, null, null, d - ), Tc._currentValue = x), uc(o, i), Rr(o, i, h, d), i.child; + ), Nc._currentValue = x), dc(o, i), Pr(o, i, h, d), i.child; case 6: - return o === null && on && ((o = d = Gn) && (d = Z5( + return o === null && on && ((o = d = Gn) && (d = iU( d, i.pendingProps, - Ko - ), d !== null ? (i.stateNode = d, zr = i, Gn = null, o = !0) : o = !1), o || ki(i)), null; + Go + ), d !== null ? (i.stateNode = d, Ar = i, Gn = null, o = !0) : o = !1), o || ji(i)), null; case 13: - return UT(o, i, d); + return ZT(o, i, d); case 4: - return qe( + return We( i, i.stateNode.containerInfo - ), h = i.pendingProps, o === null ? i.child = qs( + ), h = i.pendingProps, o === null ? i.child = Ws( i, null, h, d - ) : Rr(o, i, h, d), i.child; + ) : Pr(o, i, h, d), i.child; case 11: - return AT( + return UT( o, i, i.type, @@ -5711,27 +5711,27 @@ Error generating stack: ` + h.message + ` d ); case 7: - return h = i.pendingProps, uc(o, i), Rr(o, i, h, d), i.child; + return h = i.pendingProps, dc(o, i), Pr(o, i, h, d), i.child; case 8: - return Rr( + return Pr( o, i, i.pendingProps.children, d ), i.child; case 12: - return Rr( + return Pr( o, i, i.pendingProps.children, d ), i.child; case 10: - return VT(o, i, d); + return tN(o, i, d); case 9: - return x = i.type._context, h = i.pendingProps.children, js(i), x = Fr(x), h = h(x), i.flags |= 1, Rr(o, i, h, d), i.child; + return x = i.type._context, h = i.pendingProps.children, Fs(i), x = Br(x), h = h(x), i.flags |= 1, Pr(o, i, h, d), i.child; case 14: - return DT( + return qT( o, i, i.type, @@ -5739,7 +5739,7 @@ Error generating stack: ` + h.message + ` d ); case 15: - return OT( + return WT( o, i, i.type, @@ -5747,23 +5747,23 @@ Error generating stack: ` + h.message + ` d ); case 19: - return Ny(o, i, d); + return Oy(o, i, d); case 31: - return t5(o, i, d); + return c5(o, i, d); case 22: - return LT( + return VT( o, i, d, i.pendingProps ); case 24: - return js(i), h = Fr(mr), o === null ? (x = Kb(), x === null && (x = Vn, w = Wb(), x.pooledCache = w, w.refCount++, w !== null && (x.pooledCacheLanes |= d), x = w), i.memoizedState = { parent: h, cache: x }, Xb(i), ji(i, mr, x)) : ((o.lanes & d) !== 0 && (Qb(o, i), ed(i, null, null, d), Ju()), x = o.memoizedState, w = i.memoizedState, x.parent !== h ? (x = { parent: h, cache: h }, i.memoizedState = x, i.lanes === 0 && (i.memoizedState = i.updateQueue.baseState = x), ji(i, mr, h)) : (h = w.cache, ji(i, mr, h), h !== x.cache && qb( + return Fs(i), h = Br(pr), o === null ? (x = ey(), x === null && (x = Vn, w = Zb(), x.pooledCache = w, w.refCount++, w !== null && (x.pooledCacheLanes |= d), x = w), i.memoizedState = { parent: h, cache: x }, ny(i), Fi(i, pr, x)) : ((o.lanes & d) !== 0 && (ry(o, i), td(i, null, null, d), ed()), x = o.memoizedState, w = i.memoizedState, x.parent !== h ? (x = { parent: h, cache: h }, i.memoizedState = x, i.lanes === 0 && (i.memoizedState = i.updateQueue.baseState = x), Fi(i, pr, h)) : (h = w.cache, Fi(i, pr, h), h !== x.cache && Yb( i, - [mr], + [pr], d, !0 - ))), Rr( + ))), Pr( o, i, i.pendingProps.children, @@ -5775,37 +5775,37 @@ Error generating stack: ` + h.message + ` paired: null, clones: null, ref: null - }), h = i.pendingProps, h.name != null && h.name !== "auto" ? i.flags |= o === null ? 18882560 : 18874368 : on && Rp(i), o !== null && o.memoizedProps.name !== h.name ? i.flags |= 4194816 : uc(o, i), Rr(o, i, h.children, d), i.child; + }), h = i.pendingProps, h.name != null && h.name !== "auto" ? i.flags |= o === null ? 18882560 : 18874368 : on && _p(i), o !== null && o.memoizedProps.name !== h.name ? i.flags |= 4194816 : dc(o, i), Pr(o, i, h.children, d), i.child; case 29: throw i.pendingProps; } throw Error(r(156, i.tag)); } - function mi(o) { + function pi(o) { o.flags |= 4; } - function Iy(o, i, d, h, x) { + function ky(o, i, d, h, x) { var w; - if ((w = (o.mode & 32) !== 0) && (w = d === null ? C_(i, h) : C_(i, h) && (h.src !== d.src || h.srcSet !== d.srcSet)), w) { + if ((w = (o.mode & 32) !== 0) && (w = d === null ? I_(i, h) : I_(i, h) && (h.src !== d.src || h.srcSet !== d.srcSet)), w) { if (o.flags |= 16777216, (x & 335544128) === x) if (o.stateNode.complete) o.flags |= 8192; - else if (TN()) o.flags |= 8192; + else if (LN()) o.flags |= 8192; else - throw Us = zp, Gb; + throw qs = Lp, ty; } else o.flags &= -16777217; } - function GT(o, i) { + function rN(o, i) { if (i.type !== "stylesheet" || (i.state.loading & 4) !== 0) o.flags &= -16777217; - else if (o.flags |= 16777216, !$_(i)) - if (TN()) o.flags |= 8192; + else if (o.flags |= 16777216, !z_(i)) + if (LN()) o.flags |= 8192; else - throw Us = zp, Gb; + throw qs = Lp, ty; } - function Zp(o, i) { - i !== null && (o.flags |= 4), o.flags & 16384 && (i = o.tag !== 22 ? ht() : 536870912, o.lanes |= i, hc |= i); + function nh(o, i) { + i !== null && (o.flags |= 4), o.flags & 16384 && (i = o.tag !== 22 ? ht() : 536870912, o.lanes |= i, gc |= i); } - function id(o, i) { + function sd(o, i) { if (!on) switch (o.tailMode) { case "visible": @@ -5831,9 +5831,9 @@ Error generating stack: ` + h.message + ` d |= x.lanes | x.childLanes, h |= x.subtreeFlags, h |= x.flags, x.return = o, x = x.sibling; return o.subtreeFlags |= h, o.childLanes = d, i; } - function o5(o, i, d) { + function f5(o, i, d) { var h = i.pendingProps; - switch (Fb(i), i.tag) { + switch (Kb(i), i.tag) { case 16: case 15: case 0: @@ -5847,16 +5847,16 @@ Error generating stack: ` + h.message + ` case 1: return Xn(i), null; case 3: - return d = i.stateNode, h = null, o !== null && (h = o.memoizedState.cache), i.memoizedState.cache !== h && (i.flags |= 2048), ci(mr), ke(), d.pendingContext && (d.context = d.pendingContext, d.pendingContext = null), (o === null || o.child === null) && (rc(i) ? mi(i) : o === null || o.memoizedState.isDehydrated && (i.flags & 256) === 0 || (i.flags |= 1024, Hb())), Xn(i), null; + return d = i.stateNode, h = null, o !== null && (h = o.memoizedState.cache), i.memoizedState.cache !== h && (i.flags |= 2048), ui(pr), ke(), d.pendingContext && (d.context = d.pendingContext, d.pendingContext = null), (o === null || o.child === null) && (oc(i) ? pi(i) : o === null || o.memoizedState.isDehydrated && (i.flags & 256) === 0 || (i.flags |= 1024, Xb())), Xn(i), null; case 26: var x = i.type, w = i.memoizedState; - return o === null ? (mi(i), w !== null ? (Xn(i), GT(i, w)) : (Xn(i), Iy( + return o === null ? (pi(i), w !== null ? (Xn(i), rN(i, w)) : (Xn(i), ky( i, x, null, h, d - ))) : w ? w !== o.memoizedState ? (mi(i), Xn(i), GT(i, w)) : (Xn(i), i.flags &= -16777217) : (o = o.memoizedProps, o !== h && mi(i), Xn(i), Iy( + ))) : w ? w !== o.memoizedState ? (pi(i), Xn(i), rN(i, w)) : (Xn(i), i.flags &= -16777217) : (o = o.memoizedProps, o !== h && pi(i), Xn(i), ky( i, x, o, @@ -5864,41 +5864,41 @@ Error generating stack: ` + h.message + ` d )), null; case 27: - if (Ee(i), d = Me.current, x = i.type, o !== null && i.stateNode != null) - o.memoizedProps !== h && mi(i); + if (Re(i), d = $e.current, x = i.type, o !== null && i.stateNode != null) + o.memoizedProps !== h && pi(i); else { if (!h) { if (i.stateNode === null) throw Error(r(166)); return Xn(i), i.subtreeFlags &= -33554433, null; } - o = me.current, rc(i) ? RP(i) : (o = p_(x, h, d), i.stateNode = o, mi(i)); + o = ge.current, oc(i) ? DP(i) : (o = $_(x, h, d), i.stateNode = o, pi(i)); } return Xn(i), i.subtreeFlags &= -33554433, null; case 5: - if (Ee(i), x = i.type, o !== null && i.stateNode != null) - o.memoizedProps !== h && mi(i); + if (Re(i), x = i.type, o !== null && i.stateNode != null) + o.memoizedProps !== h && pi(i); else { if (!h) { if (i.stateNode === null) throw Error(r(166)); return Xn(i), i.subtreeFlags &= -33554433, null; } - if (w = me.current, rc(i)) - RP(i); + if (w = ge.current, oc(i)) + DP(i); else { - var j = vd( - Me.current + var B = bd( + $e.current ); switch (w) { case 1: - w = j.createElementNS( + w = B.createElementNS( "http://www.w3.org/2000/svg", x ); break; case 2: - w = j.createElementNS( + w = B.createElementNS( "http://www.w3.org/1998/Math/MathML", x ); @@ -5906,49 +5906,49 @@ Error generating stack: ` + h.message + ` default: switch (x) { case "svg": - w = j.createElementNS( + w = B.createElementNS( "http://www.w3.org/2000/svg", x ); break; case "math": - w = j.createElementNS( + w = B.createElementNS( "http://www.w3.org/1998/Math/MathML", x ); break; case "script": - w = j.createElement("div"), w.innerHTML = "{{else}}

{{.Text.NoProducts}}

This category is available but has no published products.

{{end}} {{end}} -{{template "public-footer" .}}{{end}} +{{template "public-footer" .}}{{end}} {{define "product"}}{{template "public-header" .}}
diff --git a/sample-data/prods-sample-data-v1.json b/sample-data/prods-sample-data-v1.json index cfc81e2..cc1b941 100644 --- a/sample-data/prods-sample-data-v1.json +++ b/sample-data/prods-sample-data-v1.json @@ -1,7 +1,7 @@ { "schema_version": 1, "release_version": "v0.7.0", - "dataset_version": "a01-r1", + "dataset_version": "a01-r2", "seed": 20260916, "source_statement": "Deterministic synthetic electronic-component data; no customer records, third-party catalog copy, or production assets.", "dictionaries": [ @@ -1108,6 +1108,35 @@ ], "specs": [ { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "contains_point", + "contains_range", + "overlaps_range" + ], + "numeric": { + "quantity": "voltage", + "semantic_role": "operating_support", + "allowed_shapes": [ + "scalar", + "discrete_set", + "interval_set" + ], + "allowed_operators": [ + "contains_point", + "contains_range", + "overlaps_range" + ], + "canonical_unit": "V", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_input_voltage", "name": "Input voltage range", "preferred_unit": "V", @@ -1116,6 +1145,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "voltage", + "semantic_role": "nominal", + "allowed_shapes": [ + "scalar", + "tolerance" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "V", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_output_voltage", "name": "Output voltage", "preferred_unit": "V", @@ -1124,6 +1187,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "current", + "semantic_role": "maximum_limit", + "allowed_shapes": [ + "scalar", + "bound_claim" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "A", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_output_current", "name": "Output current", "preferred_unit": "A", @@ -1132,6 +1229,39 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "current", + "semantic_role": "typical", + "allowed_shapes": [ + "scalar" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "A", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_quiescent_current", "name": "Quiescent current", "preferred_unit": "uA", @@ -1140,6 +1270,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "voltage", + "semantic_role": "maximum_limit", + "allowed_shapes": [ + "scalar", + "bound_claim" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "V", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_dropout", "name": "Dropout voltage", "preferred_unit": "mV", @@ -1148,6 +1312,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "frequency", + "semantic_role": "nominal", + "allowed_shapes": [ + "scalar", + "tolerance" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "Hz", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_switching_frequency", "name": "Switching frequency", "preferred_unit": "kHz", @@ -1156,6 +1354,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "ratio", + "semantic_role": "nominal", + "allowed_shapes": [ + "scalar", + "tolerance" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "%", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_efficiency", "name": "Efficiency", "preferred_unit": "%", @@ -1164,6 +1396,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "log_gain", + "semantic_role": "nominal", + "allowed_shapes": [ + "scalar", + "tolerance" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "dB", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_gain", "name": "Gain", "preferred_unit": "dB", @@ -1172,6 +1438,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "frequency", + "semantic_role": "nominal", + "allowed_shapes": [ + "scalar", + "tolerance" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "Hz", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_bandwidth", "name": "Bandwidth", "preferred_unit": "MHz", @@ -1180,6 +1480,14 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "choice", + "text_rule": "unicode-fold-space-1", + "operators": [ + "equals" + ] + }, "id": "spc_logic_family", "name": "Logic family", "filterable": true, @@ -1187,6 +1495,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "memory", + "semantic_role": "nominal", + "allowed_shapes": [ + "scalar", + "tolerance" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "bit", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_memory_density", "name": "Memory density", "preferred_unit": "Mbit", @@ -1195,6 +1537,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "resistance", + "semantic_role": "maximum_limit", + "allowed_shapes": [ + "scalar", + "bound_claim" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "Ω", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_rds_on", "name": "On resistance", "preferred_unit": "mOhm", @@ -1203,6 +1579,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "voltage", + "semantic_role": "maximum_limit", + "allowed_shapes": [ + "scalar", + "bound_claim" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "V", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_reverse_voltage", "name": "Reverse voltage", "preferred_unit": "V", @@ -1211,6 +1621,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "power", + "semantic_role": "nominal", + "allowed_shapes": [ + "scalar", + "tolerance" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "W", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_power", "name": "Rated power", "preferred_unit": "W", @@ -1219,6 +1663,15 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "text", + "text_rule": "unicode-fold-space-1", + "operators": [ + "equals", + "contains" + ] + }, "id": "spc_measurement_range", "name": "Measurement range", "filterable": true, @@ -1226,6 +1679,15 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "multi_choice", + "text_rule": "unicode-fold-space-1", + "delimiter": ";", + "operators": [ + "equals" + ] + }, "id": "spc_interface", "name": "Interface", "filterable": true, @@ -1233,6 +1695,31 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "\u003c", + "\u003c=" + ], + "numeric": { + "quantity": "ratio", + "semantic_role": "error_magnitude", + "allowed_shapes": [ + "bound_claim" + ], + "allowed_operators": [ + "\u003c", + "\u003c=" + ], + "canonical_unit": "%", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_accuracy", "name": "Accuracy", "preferred_unit": "%", @@ -1241,6 +1728,39 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "count", + "semantic_role": "nominal", + "allowed_shapes": [ + "scalar" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "1", + "declared_input_unit": "1", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_positions", "name": "Positions", "filterable": true, @@ -1248,6 +1768,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "length", + "semantic_role": "nominal", + "allowed_shapes": [ + "scalar", + "tolerance" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "m", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_pitch", "name": "Pitch", "preferred_unit": "mm", @@ -1256,6 +1810,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "current", + "semantic_role": "maximum_limit", + "allowed_shapes": [ + "scalar", + "bound_claim" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "A", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_rated_contact_current", "name": "Rated contact current", "preferred_unit": "A", @@ -1264,6 +1852,14 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "choice", + "text_rule": "unicode-fold-space-1", + "operators": [ + "equals" + ] + }, "id": "spc_mounting", "name": "Mounting style", "filterable": true, @@ -1271,6 +1867,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "resistance", + "semantic_role": "nominal", + "allowed_shapes": [ + "scalar", + "tolerance" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "Ω", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_resistance", "name": "Resistance", "preferred_unit": "ohm", @@ -1279,6 +1909,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "capacitance", + "semantic_role": "nominal", + "allowed_shapes": [ + "scalar", + "tolerance" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "F", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_capacitance", "name": "Capacitance", "preferred_unit": "uF", @@ -1287,6 +1951,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "inductance", + "semantic_role": "nominal", + "allowed_shapes": [ + "scalar", + "tolerance" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "H", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_inductance", "name": "Inductance", "preferred_unit": "uH", @@ -1295,6 +1993,31 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "\u003c", + "\u003c=" + ], + "numeric": { + "quantity": "ratio", + "semantic_role": "error_magnitude", + "allowed_shapes": [ + "bound_claim" + ], + "allowed_operators": [ + "\u003c", + "\u003c=" + ], + "canonical_unit": "%", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_tolerance", "name": "Tolerance", "preferred_unit": "%", @@ -1303,6 +2026,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "length", + "semantic_role": "nominal", + "allowed_shapes": [ + "scalar", + "tolerance" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "m", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_wavelength", "name": "Wavelength", "preferred_unit": "nm", @@ -1311,6 +2068,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "luminous_intensity", + "semantic_role": "nominal", + "allowed_shapes": [ + "scalar", + "tolerance" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "cd", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_luminous_intensity", "name": "Luminous intensity", "preferred_unit": "mcd", @@ -1319,6 +2110,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "voltage", + "semantic_role": "nominal", + "allowed_shapes": [ + "scalar", + "tolerance" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "V", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_coil_voltage", "name": "Coil voltage", "preferred_unit": "V", @@ -1327,6 +2152,15 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "text", + "text_rule": "unicode-fold-space-1", + "operators": [ + "equals", + "contains" + ] + }, "id": "spc_contact_rating", "name": "Contact rating", "preferred_unit": "A", @@ -1335,6 +2169,14 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "choice", + "text_rule": "unicode-fold-space-1", + "operators": [ + "equals" + ] + }, "id": "spc_core", "name": "Processor core", "filterable": true, @@ -1342,6 +2184,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "frequency", + "semantic_role": "nominal", + "allowed_shapes": [ + "scalar", + "tolerance" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "Hz", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_clock", "name": "Clock frequency", "preferred_unit": "MHz", @@ -1350,6 +2226,15 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "multi_choice", + "text_rule": "unicode-fold-space-1", + "delimiter": ";", + "operators": [ + "equals" + ] + }, "id": "spc_wireless_standard", "name": "Wireless standard", "filterable": true, @@ -1357,6 +2242,40 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "numeric", + "operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "numeric": { + "quantity": "voltage", + "semantic_role": "minimum_limit", + "allowed_shapes": [ + "scalar", + "bound_claim" + ], + "allowed_operators": [ + "=", + "\u003c", + "\u003c=", + "\u003e", + "\u003e=", + "between" + ], + "canonical_unit": "V", + "declared_input_unit": "", + "numeric_format": "decimal-dot", + "schema_version": 1, + "parser_version": "catalog-parser-2", + "unit_registry_version": "catalog-units-2" + } + }, "id": "spc_breakdown_voltage", "name": "Breakdown voltage", "preferred_unit": "V", @@ -1365,6 +2284,15 @@ "status": "active" }, { + "search_profile": { + "version": 1, + "kind": "text", + "text_rule": "unicode-fold-space-1", + "operators": [ + "equals", + "contains" + ] + }, "id": "spc_package", "name": "Package", "filterable": false, @@ -1932,17 +2860,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–10 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "3 logic_family", + "raw_value": "4000B", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" } ] @@ -1968,17 +2896,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–11 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "4 logic_family", + "raw_value": "74HC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -2001,17 +2929,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–12 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "5 logic_family", + "raw_value": "74LVC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -2042,17 +2970,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–13 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "6 logic_family", + "raw_value": "4000B", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -2083,17 +3011,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–14 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "7 logic_family", + "raw_value": "74HC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -2126,17 +3054,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–15 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "8 logic_family", + "raw_value": "74LVC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -2164,17 +3092,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–16 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "9 logic_family", + "raw_value": "4000B", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -2205,17 +3133,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "10 logic_family", + "raw_value": "74HC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -2247,17 +3175,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–18 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "11 logic_family", + "raw_value": "74LVC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -2299,17 +3227,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–20 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "13 logic_family", + "raw_value": "74HC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -2332,17 +3260,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–21 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "14 logic_family", + "raw_value": "74LVC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -2369,17 +3297,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–22 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "15 logic_family", + "raw_value": "4000B", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -2412,17 +3340,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–23 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "16 logic_family", + "raw_value": "74HC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -2450,17 +3378,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–24 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "17 logic_family", + "raw_value": "74LVC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -2485,12 +3413,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–8 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "18 logic_family", + "raw_value": "4000B", "source_locale": "en-US" }, { @@ -2521,12 +3449,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -2559,12 +3487,12 @@ "spec_values": [ { "spec_id": "spc_logic_family", - "raw_value": "20 logic_family", + "raw_value": "74LVC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -2592,22 +3520,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–11 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "21 gain", + "raw_value": "40 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "21 bandwidth", + "raw_value": "100 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "21 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { @@ -2652,17 +3580,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–13 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "23 gain", + "raw_value": "20 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "23 bandwidth", + "raw_value": "10 MHz", "source_locale": "en-US" } ] @@ -2688,17 +3616,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–14 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "24 gain", + "raw_value": "40 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "24 bandwidth", + "raw_value": "100 MHz", "source_locale": "en-US" } ] @@ -2720,22 +3648,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–15 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "25 gain", + "raw_value": "10 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "25 bandwidth", + "raw_value": "1 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "25 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { @@ -2766,22 +3694,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–16 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "26 gain", + "raw_value": "20 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "26 bandwidth", + "raw_value": "10 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "26 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { @@ -2812,22 +3740,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–17 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "27 gain", + "raw_value": "40 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "27 bandwidth", + "raw_value": "100 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "27 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { @@ -2860,22 +3788,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "28 gain", + "raw_value": "10 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "28 bandwidth", + "raw_value": "1 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "28 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { @@ -2903,22 +3831,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–19 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "29 gain", + "raw_value": "20 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "29 bandwidth", + "raw_value": "10 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "29 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { @@ -2949,22 +3877,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–20 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "30 gain", + "raw_value": "40 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "30 bandwidth", + "raw_value": "100 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "30 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { @@ -2995,22 +3923,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–21 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "31 gain", + "raw_value": "10 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "31 bandwidth", + "raw_value": "1 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "31 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { @@ -3053,17 +3981,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–23 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "33 gain", + "raw_value": "40 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "33 bandwidth", + "raw_value": "100 MHz", "source_locale": "en-US" } ] @@ -3087,17 +4015,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–24 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "34 gain", + "raw_value": "10 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "34 bandwidth", + "raw_value": "1 MHz", "source_locale": "en-US" } ] @@ -3123,22 +4051,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–8 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "35 gain", + "raw_value": "20 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "35 bandwidth", + "raw_value": "10 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "35 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" } ] @@ -3166,17 +4094,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–9 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "36 gain", + "raw_value": "40 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "36 bandwidth", + "raw_value": "100 MHz", "source_locale": "en-US" }, { @@ -3208,12 +4136,12 @@ }, { "spec_id": "spc_gain", - "raw_value": "37 gain", + "raw_value": "10 dB", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "37 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { @@ -3244,17 +4172,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–11 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "38 bandwidth", + "raw_value": "10 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "38 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { @@ -3286,17 +4214,17 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "39 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "39 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -3328,22 +4256,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–13 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "40 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "40 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -3371,22 +4299,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–14 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "41 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "41 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -3430,17 +4358,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–16 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "43 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "43 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" } ] @@ -3466,17 +4394,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–17 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "44 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "44 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" } ] @@ -3499,22 +4427,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–18 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "45 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "45 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -3545,22 +4473,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "46 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "46 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -3592,22 +4520,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–20 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "47 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "47 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -3640,22 +4568,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–21 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "48 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "48 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -3682,22 +4610,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–22 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "49 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "49 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -3728,22 +4656,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–23 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "50 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "50 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -3775,22 +4703,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–24 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "51 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "51 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -3831,17 +4759,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–9 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "53 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "53 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" } ] @@ -3865,17 +4793,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–10 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "54 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "54 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" } ] @@ -3901,17 +4829,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "55 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "55 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { @@ -3944,17 +4872,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–12 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "56 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -3982,22 +4910,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–13 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "57 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "57 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -4033,17 +4961,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "58 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "58 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -4075,7 +5003,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–15 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -4085,17 +5013,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "59 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "59 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -4128,7 +5056,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–16 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -4138,17 +5066,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "60 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "60 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -4175,7 +5103,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–17 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -4185,17 +5113,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "61 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "61 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -4240,7 +5168,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–19 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -4250,7 +5178,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" } ] @@ -4276,7 +5204,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -4286,7 +5214,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -4309,7 +5237,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–21 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -4319,17 +5247,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "65 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "65 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -4359,7 +5287,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–22 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -4369,17 +5297,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "66 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "66 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -4410,7 +5338,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–23 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -4420,17 +5348,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "67 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "67 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -4463,7 +5391,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–24 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -4473,17 +5401,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "68 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "68 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -4510,7 +5438,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–8 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -4520,17 +5448,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "69 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "69 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -4561,7 +5489,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–9 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -4571,17 +5499,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "70 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "70 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -4613,7 +5541,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–10 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -4623,17 +5551,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "71 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "71 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -4685,7 +5613,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -4709,7 +5637,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–13 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -4719,7 +5647,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -4746,7 +5674,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–14 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -4756,12 +5684,12 @@ }, { "spec_id": "spc_quiescent_current", - "raw_value": "75 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "75 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -4794,22 +5722,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–15 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "76 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "76 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -4842,17 +5770,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "77 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "77 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -4883,7 +5811,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–17 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -4893,17 +5821,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "78 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "78 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -4933,7 +5861,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–18 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -4943,17 +5871,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "79 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "79 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -4986,7 +5914,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–19 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -4996,17 +5924,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "80 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "80 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -5034,7 +5962,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–20 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -5044,17 +5972,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "81 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "81 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -5099,7 +6027,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–22 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -5109,7 +6037,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" } ] @@ -5135,7 +6063,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–23 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -5145,7 +6073,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -5167,7 +6095,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–24 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -5177,17 +6105,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "85 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "85 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -5217,7 +6145,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–8 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -5227,17 +6155,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "86 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "86 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -5269,7 +6197,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–9 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -5279,17 +6207,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "87 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "87 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -5322,7 +6250,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–10 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -5332,17 +6260,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "88 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "88 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -5370,7 +6298,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–11 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -5380,17 +6308,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "89 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "89 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -5421,7 +6349,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–12 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -5431,17 +6359,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "90 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "90 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -5472,7 +6400,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -5482,17 +6410,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "91 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "91 dropout", + "raw_value": "100 mV", "source_locale": "en-US" } ] @@ -5529,7 +6457,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–15 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -5539,7 +6467,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -5563,7 +6491,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–16 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -5595,22 +6523,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–17 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "95 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "95 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -5648,17 +6576,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "96 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "96 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -5685,7 +6613,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–19 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -5695,17 +6623,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "97 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "97 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -5736,7 +6664,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–20 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -5746,17 +6674,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "1 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "1 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -5788,7 +6716,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–21 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -5798,17 +6726,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "2 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "2 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -5841,7 +6769,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -5851,17 +6779,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "3 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "3 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -5889,7 +6817,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–23 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -5899,17 +6827,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "4 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "4 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -5952,7 +6880,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–8 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -5962,7 +6890,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" } ] @@ -5988,7 +6916,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–9 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -5998,7 +6926,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -6020,7 +6948,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–10 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -6030,17 +6958,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "8 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "8 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -6071,7 +6999,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–11 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -6081,17 +7009,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "9 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "9 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -6123,7 +7051,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–12 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -6133,17 +7061,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "10 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "10 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -6176,7 +7104,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–13 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -6186,17 +7114,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "11 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "11 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -6233,17 +7161,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "12 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "12 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -6274,7 +7202,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–15 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -6284,17 +7212,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "13 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "13 dropout", + "raw_value": "200 mV", "source_locale": "en-US" } ] @@ -6321,7 +7249,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–16 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -6331,12 +7259,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "14 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { @@ -6379,7 +7307,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–18 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -6408,12 +7336,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–19 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -6444,17 +7372,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "18 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "18 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -6487,7 +7415,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–21 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -6497,17 +7425,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "19 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "19 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -6535,7 +7463,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–22 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -6545,17 +7473,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "20 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "20 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -6585,7 +7513,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -6595,17 +7523,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "21 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "21 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -6637,7 +7565,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–24 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -6647,17 +7575,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "22 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "22 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -6689,7 +7617,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–8 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -6699,17 +7627,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "23 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "23 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -6736,7 +7664,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–9 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -6746,17 +7674,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "24 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "24 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -6801,7 +7729,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–11 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -6811,7 +7739,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" } ] @@ -6837,7 +7765,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–12 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -6847,7 +7775,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -6870,7 +7798,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–13 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -6880,17 +7808,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "28 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "28 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -6921,7 +7849,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–14 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -6931,17 +7859,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "29 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "29 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -6972,7 +7900,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -6982,17 +7910,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "30 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "30 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -7025,7 +7953,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–16 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -7035,17 +7963,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "31 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "31 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -7073,7 +8001,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–17 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -7083,17 +8011,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "32 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "32 dropout", + "raw_value": "300 mV", "source_locale": "en-US" } ] @@ -7119,7 +8047,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–18 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -7129,12 +8057,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "33 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { @@ -7165,7 +8093,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–19 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -7175,12 +8103,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "34 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -7222,12 +8150,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–21 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -7256,7 +8184,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -7283,7 +8211,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–23 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -7293,17 +8221,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "38 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "38 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -7336,7 +8264,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -7346,17 +8274,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "39 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "39 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -7383,7 +8311,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–8 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -7393,17 +8321,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "40 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "40 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -7434,7 +8362,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–9 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -7444,17 +8372,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "41 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "41 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -7485,7 +8413,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–10 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -7495,17 +8423,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "42 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "42 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -7538,7 +8466,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–11 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -7548,17 +8476,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "43 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "43 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -7586,7 +8514,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–12 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -7596,17 +8524,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "44 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "44 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -7651,7 +8579,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–14 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -7661,7 +8589,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" } ] @@ -7686,7 +8614,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–15 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -7696,7 +8624,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -7728,17 +8656,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "48 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "48 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -7769,7 +8697,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–17 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -7779,17 +8707,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "49 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "49 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -7821,7 +8749,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–18 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -7831,17 +8759,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "50 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "50 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -7874,7 +8802,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–19 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -7884,17 +8812,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "51 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "51 dropout", + "raw_value": "100 mV", "source_locale": "en-US" } ] @@ -7917,7 +8845,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–20 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -7927,12 +8855,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "52 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { @@ -7963,7 +8891,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–21 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -7973,12 +8901,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "53 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -8009,7 +8937,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–22 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -8019,12 +8947,12 @@ }, { "spec_id": "spc_quiescent_current", - "raw_value": "54 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "54 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -8072,7 +9000,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -8095,7 +9023,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -8105,7 +9033,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -8132,7 +9060,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–9 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -8142,17 +9070,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "58 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "58 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -8185,7 +9113,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–10 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -8195,17 +9123,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "59 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "59 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -8231,7 +9159,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–11 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -8241,17 +9169,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "60 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "60 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -8282,7 +9210,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–12 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -8292,17 +9220,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "61 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "61 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -8334,7 +9262,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–13 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -8344,17 +9272,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "62 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "62 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -8387,7 +9315,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–14 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -8397,17 +9325,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "63 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "63 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -8435,7 +9363,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–15 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -8445,17 +9373,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "64 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "64 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -8499,7 +9427,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -8509,7 +9437,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" } ] @@ -8535,7 +9463,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–18 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -8545,7 +9473,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -8568,7 +9496,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–19 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -8578,17 +9506,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "68 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "68 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -8619,7 +9547,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–20 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -8629,17 +9557,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "69 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "69 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -8671,7 +9599,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–21 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -8681,17 +9609,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "70 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "70 dropout", + "raw_value": "200 mV", "source_locale": "en-US" } ] @@ -8719,7 +9647,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–22 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -8729,12 +9657,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "71 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { @@ -8761,7 +9689,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–23 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -8771,12 +9699,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "72 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -8806,7 +9734,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–24 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -8816,12 +9744,12 @@ }, { "spec_id": "spc_quiescent_current", - "raw_value": "73 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "73 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -8852,22 +9780,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–8 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "74 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "74 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -8910,7 +9838,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–10 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -8920,7 +9848,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -8944,7 +9872,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–11 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -8954,7 +9882,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -8980,7 +9908,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–12 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -8990,17 +9918,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "78 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "78 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -9033,7 +9961,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–13 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -9043,17 +9971,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "79 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "79 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -9081,7 +10009,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–14 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -9091,17 +10019,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "80 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "80 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -9132,7 +10060,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–15 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -9142,17 +10070,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "81 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "81 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -9184,7 +10112,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–16 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -9194,17 +10122,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "82 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "82 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -9237,7 +10165,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–17 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -9247,17 +10175,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "83 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "83 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -9294,17 +10222,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "84 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "84 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -9348,7 +10276,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–20 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -9358,7 +10286,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" } ] @@ -9384,7 +10312,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–21 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -9394,7 +10322,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -9417,7 +10345,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–22 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -9427,17 +10355,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "88 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "88 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -9468,7 +10396,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–23 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -9478,17 +10406,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "89 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "89 dropout", + "raw_value": "300 mV", "source_locale": "en-US" } ] @@ -9514,7 +10442,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–24 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -9524,12 +10452,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "90 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { @@ -9561,7 +10489,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–8 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -9571,12 +10499,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "91 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -9604,7 +10532,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–9 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -9614,12 +10542,12 @@ }, { "spec_id": "spc_quiescent_current", - "raw_value": "92 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "92 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -9650,22 +10578,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "93 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "93 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -9702,17 +10630,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "94 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "94 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -9754,7 +10682,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–13 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -9764,7 +10692,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -9788,7 +10716,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–14 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -9798,7 +10726,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -9825,7 +10753,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–15 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -9835,17 +10763,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "1 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "1 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -9877,7 +10805,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–16 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -9887,17 +10815,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "2 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "2 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -9925,7 +10853,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–17 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -9935,17 +10863,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "3 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "3 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -9976,7 +10904,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–18 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -9986,17 +10914,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "4 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "4 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -10027,7 +10955,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -10037,17 +10965,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "5 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "5 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -10080,7 +11008,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–20 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -10090,17 +11018,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "6 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "6 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -10128,7 +11056,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–21 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -10138,17 +11066,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "7 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "7 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -10193,7 +11121,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–23 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -10203,7 +11131,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" } ] @@ -10229,7 +11157,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–24 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -10239,7 +11167,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -10260,7 +11188,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–8 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -10270,17 +11198,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "11 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "11 dropout", + "raw_value": "100 mV", "source_locale": "en-US" } ] @@ -10306,7 +11234,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–9 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -10316,12 +11244,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "12 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { @@ -10353,7 +11281,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–10 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -10363,12 +11291,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "13 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -10401,7 +11329,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -10411,12 +11339,12 @@ }, { "spec_id": "spc_quiescent_current", - "raw_value": "14 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "14 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -10443,22 +11371,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–12 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "15 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "15 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -10494,17 +11422,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "16 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "16 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -10535,7 +11463,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–14 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -10545,17 +11473,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "17 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "17 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -10598,7 +11526,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–16 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -10608,7 +11536,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -10632,7 +11560,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–17 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -10642,7 +11570,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -10669,7 +11597,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–18 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -10679,17 +11607,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "21 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "21 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -10722,7 +11650,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–19 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -10732,17 +11660,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "22 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "22 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -10779,17 +11707,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "23 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "23 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -10820,7 +11748,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–21 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -10830,17 +11758,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "24 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "24 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -10872,7 +11800,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–22 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -10882,17 +11810,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "25 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "25 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -10925,7 +11853,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–23 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -10935,17 +11863,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "26 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "26 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -10973,7 +11901,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–24 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -10983,17 +11911,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "27 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "27 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -11035,7 +11963,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–9 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -11045,7 +11973,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" } ] @@ -11071,7 +11999,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–10 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -11081,7 +12009,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -11104,7 +12032,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–11 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -11114,12 +12042,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "31 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { @@ -11150,7 +12078,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -11160,12 +12088,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "32 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -11197,7 +12125,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–13 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -11207,12 +12135,12 @@ }, { "spec_id": "spc_quiescent_current", - "raw_value": "33 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "33 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -11245,22 +12173,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–14 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "34 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "34 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -11292,17 +12220,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "35 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "35 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -11333,7 +12261,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–16 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -11343,17 +12271,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "36 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "36 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -11385,7 +12313,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–17 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -11395,17 +12323,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "37 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "37 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -11448,7 +12376,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–19 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -11458,7 +12386,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -11482,7 +12410,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–20 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -11492,7 +12420,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -11517,7 +12445,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -11527,17 +12455,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "41 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "41 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -11570,7 +12498,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–22 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -11580,17 +12508,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "42 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "42 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -11618,7 +12546,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–23 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -11628,17 +12556,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "43 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "43 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -11669,7 +12597,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–24 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -11679,17 +12607,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "44 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "44 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -11720,7 +12648,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–8 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -11730,17 +12658,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "45 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "45 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -11773,7 +12701,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–9 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -11783,17 +12711,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "46 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "46 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -11820,7 +12748,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–10 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -11830,17 +12758,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "47 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "47 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -11885,7 +12813,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–12 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -11895,7 +12823,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" } ] @@ -11921,7 +12849,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -11931,7 +12859,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -11954,7 +12882,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–14 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -11964,12 +12892,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "51 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -12000,7 +12928,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–15 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -12010,12 +12938,12 @@ }, { "spec_id": "spc_quiescent_current", - "raw_value": "52 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "52 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -12046,22 +12974,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–16 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "53 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "53 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -12098,17 +13026,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "54 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "54 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -12136,7 +13064,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–18 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -12146,17 +13074,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "55 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "55 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -12187,7 +13115,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–19 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -12197,17 +13125,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "56 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "56 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -12239,7 +13167,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–20 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -12249,17 +13177,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "57 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "57 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -12311,7 +13239,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -12335,7 +13263,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–23 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -12345,7 +13273,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -12372,7 +13300,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–24 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -12382,17 +13310,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "61 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "61 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -12424,7 +13352,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–8 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -12434,17 +13362,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "62 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "62 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -12472,7 +13400,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–9 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -12482,17 +13410,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "63 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "63 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -12523,7 +13451,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–10 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -12533,17 +13461,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "64 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "64 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -12574,7 +13502,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–11 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -12584,17 +13512,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "65 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "65 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -12627,7 +13555,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–12 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -12637,17 +13565,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "66 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "66 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -12674,7 +13602,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–13 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -12684,17 +13612,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "67 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "67 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -12739,7 +13667,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–15 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -12749,7 +13677,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" } ] @@ -12775,7 +13703,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–16 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -12785,7 +13713,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -12807,7 +13735,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–17 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -12817,12 +13745,12 @@ }, { "spec_id": "spc_quiescent_current", - "raw_value": "71 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "71 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -12853,22 +13781,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–18 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "72 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "72 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -12905,17 +13833,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "73 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "73 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -12948,7 +13876,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–20 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -12958,17 +13886,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "74 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "74 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -12996,7 +13924,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–21 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -13006,17 +13934,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "75 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "75 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -13047,7 +13975,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–22 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -13057,17 +13985,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "76 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "76 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -13098,7 +14026,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -13108,17 +14036,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "77 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "77 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -13160,7 +14088,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–8 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -13170,7 +14098,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -13193,7 +14121,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–9 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -13203,7 +14131,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -13230,7 +14158,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–10 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -13240,17 +14168,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "81 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "81 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -13283,7 +14211,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–11 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -13293,17 +14221,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "82 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "82 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -13330,7 +14258,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–12 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -13340,17 +14268,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "83 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "83 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -13381,7 +14309,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–13 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -13391,17 +14319,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "84 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "84 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -13433,7 +14361,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–14 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -13443,17 +14371,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "85 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "85 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -13486,7 +14414,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -13496,17 +14424,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "86 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "86 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -13534,7 +14462,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–16 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -13544,17 +14472,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "87 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "87 dropout", + "raw_value": "200 mV", "source_locale": "en-US" } ] @@ -13603,7 +14531,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" } ] @@ -13629,7 +14557,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–19 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -13657,22 +14585,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–20 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "91 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "91 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -13708,17 +14636,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "92 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "92 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -13749,7 +14677,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–22 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -13759,17 +14687,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "93 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "93 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -13802,7 +14730,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–23 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -13812,17 +14740,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "94 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "94 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -13859,17 +14787,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "95 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "95 dropout", + "raw_value": "100 mV", "source_locale": "en-US" }, { @@ -13899,7 +14827,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–8 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -13909,17 +14837,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "96 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "96 dropout", + "raw_value": "200 mV", "source_locale": "en-US" }, { @@ -13951,7 +14879,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–9 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -13961,17 +14889,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "97 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { "spec_id": "spc_dropout", - "raw_value": "97 dropout", + "raw_value": "300 mV", "source_locale": "en-US" }, { @@ -14014,7 +14942,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–11 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -14024,7 +14952,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -14048,7 +14976,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–12 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -14058,7 +14986,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -14084,7 +15012,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–13 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -14094,17 +15022,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "4 switching_frequency", + "raw_value": "400 kHz", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "4 efficiency", + "raw_value": "85 %", "source_locale": "en-US" }, { @@ -14137,7 +15065,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–14 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -14147,17 +15075,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "5 switching_frequency", + "raw_value": "800 kHz", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "5 efficiency", + "raw_value": "92 %", "source_locale": "en-US" }, { @@ -14185,7 +15113,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–15 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -14195,17 +15123,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "6 switching_frequency", + "raw_value": "1.2 MHz", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "6 efficiency", + "raw_value": "96 %", "source_locale": "en-US" }, { @@ -14236,7 +15164,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -14246,17 +15174,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "7 switching_frequency", + "raw_value": "400 kHz", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "7 efficiency", + "raw_value": "85 %", "source_locale": "en-US" }, { @@ -14288,7 +15216,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–17 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -14298,17 +15226,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "8 switching_frequency", + "raw_value": "800 kHz", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "8 efficiency", + "raw_value": "92 %", "source_locale": "en-US" }, { @@ -14340,7 +15268,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–18 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -14350,17 +15278,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "9 switching_frequency", + "raw_value": "1.2 MHz", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "9 efficiency", + "raw_value": "96 %", "source_locale": "en-US" } ] @@ -14382,7 +15310,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–19 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -14392,12 +15320,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "10 switching_frequency", + "raw_value": "400 kHz", "source_locale": "en-US" }, { @@ -14442,7 +15370,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–21 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -14473,12 +15401,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–22 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -14506,17 +15434,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "14 switching_frequency", + "raw_value": "800 kHz", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "14 efficiency", + "raw_value": "92 %", "source_locale": "en-US" }, { @@ -14547,7 +15475,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–24 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -14557,17 +15485,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "15 switching_frequency", + "raw_value": "1.2 MHz", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "15 efficiency", + "raw_value": "96 %", "source_locale": "en-US" }, { @@ -14597,7 +15525,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -14607,17 +15535,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "16 switching_frequency", + "raw_value": "400 kHz", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "16 efficiency", + "raw_value": "85 %", "source_locale": "en-US" }, { @@ -14650,7 +15578,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–9 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -14660,17 +15588,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "17 switching_frequency", + "raw_value": "800 kHz", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "17 efficiency", + "raw_value": "92 %", "source_locale": "en-US" }, { @@ -14698,7 +15626,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–10 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -14708,17 +15636,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "18 switching_frequency", + "raw_value": "1.2 MHz", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "18 efficiency", + "raw_value": "96 %", "source_locale": "en-US" }, { @@ -14749,7 +15677,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–11 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -14759,17 +15687,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "19 switching_frequency", + "raw_value": "400 kHz", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "19 efficiency", + "raw_value": "85 %", "source_locale": "en-US" }, { @@ -14801,7 +15729,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–12 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -14811,17 +15739,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "20 switching_frequency", + "raw_value": "800 kHz", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "20 efficiency", + "raw_value": "92 %", "source_locale": "en-US" }, { @@ -14862,17 +15790,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–14 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "22 gain", + "raw_value": "10 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "22 bandwidth", + "raw_value": "1 MHz", "source_locale": "en-US" } ] @@ -14896,17 +15824,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–15 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "23 gain", + "raw_value": "20 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "23 bandwidth", + "raw_value": "10 MHz", "source_locale": "en-US" } ] @@ -14933,22 +15861,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–16 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "24 gain", + "raw_value": "40 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "24 bandwidth", + "raw_value": "100 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "24 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { @@ -14981,22 +15909,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "25 gain", + "raw_value": "10 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "25 bandwidth", + "raw_value": "1 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "25 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { @@ -15024,22 +15952,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–18 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "26 gain", + "raw_value": "20 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "26 bandwidth", + "raw_value": "10 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "26 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { @@ -15070,22 +15998,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–19 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "27 gain", + "raw_value": "40 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "27 bandwidth", + "raw_value": "100 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "27 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { @@ -15116,22 +16044,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–20 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "28 gain", + "raw_value": "10 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "28 bandwidth", + "raw_value": "1 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "28 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { @@ -15164,22 +16092,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–21 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "29 gain", + "raw_value": "20 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "29 bandwidth", + "raw_value": "10 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "29 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" } ] @@ -15202,17 +16130,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–22 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "30 gain", + "raw_value": "40 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "30 bandwidth", + "raw_value": "100 MHz", "source_locale": "en-US" }, { @@ -15257,12 +16185,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–24 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "32 bandwidth", + "raw_value": "10 MHz", "source_locale": "en-US" } ] @@ -15287,12 +16215,12 @@ "spec_values": [ { "spec_id": "spc_gain", - "raw_value": "33 gain", + "raw_value": "40 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "33 bandwidth", + "raw_value": "100 MHz", "source_locale": "en-US" } ] @@ -15319,17 +16247,17 @@ }, { "spec_id": "spc_gain", - "raw_value": "34 gain", + "raw_value": "10 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "34 bandwidth", + "raw_value": "1 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "34 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { @@ -15359,22 +16287,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–10 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "35 gain", + "raw_value": "20 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "35 bandwidth", + "raw_value": "10 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "35 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { @@ -15406,22 +16334,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–11 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "36 gain", + "raw_value": "40 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "36 bandwidth", + "raw_value": "100 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "36 quiescent_current", + "raw_value": "50 uA", "source_locale": "en-US" }, { @@ -15454,22 +16382,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–12 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "37 gain", + "raw_value": "10 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "37 bandwidth", + "raw_value": "1 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "37 quiescent_current", + "raw_value": "100 uA", "source_locale": "en-US" }, { @@ -15497,22 +16425,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–13 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "38 gain", + "raw_value": "20 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "38 bandwidth", + "raw_value": "10 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "38 quiescent_current", + "raw_value": "5 uA", "source_locale": "en-US" }, { @@ -15543,22 +16471,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–14 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_gain", - "raw_value": "39 gain", + "raw_value": "40 dB", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "39 bandwidth", + "raw_value": "100 MHz", "source_locale": "en-US" }, { "spec_id": "spc_quiescent_current", - "raw_value": "39 quiescent_current", + "raw_value": "15 uA", "source_locale": "en-US" }, { @@ -15589,17 +16517,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–15 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "40 logic_family", + "raw_value": "74HC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -15642,17 +16570,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–17 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "42 logic_family", + "raw_value": "4000B", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -15676,17 +16604,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "43 logic_family", + "raw_value": "74HC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -15713,17 +16641,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–19 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "44 logic_family", + "raw_value": "74LVC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -15756,17 +16684,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–20 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "45 logic_family", + "raw_value": "4000B", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -15793,17 +16721,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–21 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "46 logic_family", + "raw_value": "74HC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -15834,17 +16762,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–22 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "47 logic_family", + "raw_value": "74LVC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -15875,17 +16803,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–23 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "48 logic_family", + "raw_value": "4000B", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -15918,17 +16846,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–24 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "49 logic_family", + "raw_value": "74HC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -15950,12 +16878,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–8 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "50 logic_family", + "raw_value": "74LVC", "source_locale": "en-US" }, { @@ -15999,12 +16927,12 @@ "spec_values": [ { "spec_id": "spc_logic_family", - "raw_value": "52 logic_family", + "raw_value": "74HC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" } ] @@ -16030,17 +16958,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–11 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "53 logic_family", + "raw_value": "74LVC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -16063,17 +16991,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–12 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "54 logic_family", + "raw_value": "4000B", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -16104,17 +17032,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–13 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "55 logic_family", + "raw_value": "74HC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -16146,17 +17074,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–14 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "56 logic_family", + "raw_value": "74LVC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -16189,17 +17117,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–15 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "57 logic_family", + "raw_value": "4000B", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -16226,17 +17154,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–16 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "58 logic_family", + "raw_value": "74HC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -16267,17 +17195,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–17 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "59 logic_family", + "raw_value": "74LVC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -16309,17 +17237,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–18 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "60 logic_family", + "raw_value": "4000B", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -16361,17 +17289,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–20 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "62 logic_family", + "raw_value": "74LVC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -16395,17 +17323,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–21 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "63 logic_family", + "raw_value": "4000B", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -16431,17 +17359,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–22 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "64 logic_family", + "raw_value": "74HC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -16474,17 +17402,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–23 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "65 logic_family", + "raw_value": "74LVC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -16512,17 +17440,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–24 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "66 logic_family", + "raw_value": "4000B", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -16552,17 +17480,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–8 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "67 logic_family", + "raw_value": "74HC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -16594,17 +17522,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–9 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "68 logic_family", + "raw_value": "74LVC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" } ] @@ -16632,12 +17560,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–10 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "69 logic_family", + "raw_value": "4000B", "source_locale": "en-US" }, { @@ -16669,7 +17597,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -16714,17 +17642,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–13 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "72 logic_family", + "raw_value": "4000B", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" } ] @@ -16750,17 +17678,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–14 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "73 logic_family", + "raw_value": "74HC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -16782,17 +17710,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–15 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "74 logic_family", + "raw_value": "74LVC", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -16823,17 +17751,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–16 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_logic_family", - "raw_value": "75 logic_family", + "raw_value": "4000B", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -16864,12 +17792,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–17 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "76 memory_density", + "raw_value": "256 kbit", "source_locale": "en-US" }, { @@ -16879,7 +17807,7 @@ }, { "spec_id": "spc_clock", - "raw_value": "76 clock", + "raw_value": "16 MHz", "source_locale": "en-US" }, { @@ -16912,22 +17840,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–18 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "77 memory_density", + "raw_value": "1 Mbit", "source_locale": "en-US" }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "77 clock", + "raw_value": "48 MHz", "source_locale": "en-US" }, { @@ -16955,12 +17883,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–19 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "78 memory_density", + "raw_value": "8 Mbit", "source_locale": "en-US" }, { @@ -16970,7 +17898,7 @@ }, { "spec_id": "spc_clock", - "raw_value": "78 clock", + "raw_value": "120 MHz", "source_locale": "en-US" }, { @@ -17001,12 +17929,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "79 memory_density", + "raw_value": "256 kbit", "source_locale": "en-US" }, { @@ -17016,7 +17944,7 @@ }, { "spec_id": "spc_clock", - "raw_value": "79 clock", + "raw_value": "16 MHz", "source_locale": "en-US" }, { @@ -17048,12 +17976,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–21 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "80 memory_density", + "raw_value": "1 Mbit", "source_locale": "en-US" }, { @@ -17063,7 +17991,7 @@ }, { "spec_id": "spc_clock", - "raw_value": "80 clock", + "raw_value": "48 MHz", "source_locale": "en-US" }, { @@ -17105,12 +18033,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–23 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "82 memory_density", + "raw_value": "256 kbit", "source_locale": "en-US" }, { @@ -17139,12 +18067,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–24 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "83 memory_density", + "raw_value": "1 Mbit", "source_locale": "en-US" }, { @@ -17175,12 +18103,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–8 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "84 memory_density", + "raw_value": "8 Mbit", "source_locale": "en-US" }, { @@ -17190,7 +18118,7 @@ }, { "spec_id": "spc_clock", - "raw_value": "84 clock", + "raw_value": "120 MHz", "source_locale": "en-US" }, { @@ -17223,22 +18151,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–9 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "85 memory_density", + "raw_value": "256 kbit", "source_locale": "en-US" }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "85 clock", + "raw_value": "16 MHz", "source_locale": "en-US" }, { @@ -17266,12 +18194,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–10 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "86 memory_density", + "raw_value": "1 Mbit", "source_locale": "en-US" }, { @@ -17281,7 +18209,7 @@ }, { "spec_id": "spc_clock", - "raw_value": "86 clock", + "raw_value": "48 MHz", "source_locale": "en-US" } ] @@ -17306,12 +18234,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–11 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "87 memory_density", + "raw_value": "8 Mbit", "source_locale": "en-US" }, { @@ -17347,17 +18275,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "88 memory_density", + "raw_value": "256 kbit", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "88 clock", + "raw_value": "16 MHz", "source_locale": "en-US" }, { @@ -17390,17 +18318,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–13 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "89 clock", + "raw_value": "48 MHz", "source_locale": "en-US" }, { @@ -17428,7 +18356,7 @@ "spec_values": [ { "spec_id": "spc_memory_density", - "raw_value": "90 memory_density", + "raw_value": "8 Mbit", "source_locale": "en-US" }, { @@ -17438,7 +18366,7 @@ }, { "spec_id": "spc_clock", - "raw_value": "90 clock", + "raw_value": "120 MHz", "source_locale": "en-US" }, { @@ -17483,12 +18411,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–16 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "92 memory_density", + "raw_value": "1 Mbit", "source_locale": "en-US" }, { @@ -17519,17 +18447,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–17 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "93 memory_density", + "raw_value": "8 Mbit", "source_locale": "en-US" }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" } ] @@ -17551,22 +18479,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–18 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "94 rds_on", + "raw_value": "10 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "94 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -17597,22 +18525,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–19 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "95 rds_on", + "raw_value": "25 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "95 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -17644,22 +18572,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–20 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "96 rds_on", + "raw_value": "100 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "96 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -17692,22 +18620,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "97 rds_on", + "raw_value": "10 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "97 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -17735,22 +18663,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–22 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "1 rds_on", + "raw_value": "25 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "1 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -17781,22 +18709,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–23 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "2 rds_on", + "raw_value": "100 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "2 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -17826,22 +18754,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–24 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "3 rds_on", + "raw_value": "10 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "3 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -17883,17 +18811,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–9 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "5 rds_on", + "raw_value": "100 mOhm", "source_locale": "en-US" } ] @@ -17917,17 +18845,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–10 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "6 rds_on", + "raw_value": "10 mOhm", "source_locale": "en-US" } ] @@ -17954,22 +18882,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–11 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "7 rds_on", + "raw_value": "25 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "7 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -18002,22 +18930,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–12 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "8 rds_on", + "raw_value": "100 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "8 power", + "raw_value": "1 W", "source_locale": "en-US" } ] @@ -18044,12 +18972,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "9 rds_on", + "raw_value": "10 mOhm", "source_locale": "en-US" }, { @@ -18080,17 +19008,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–14 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "10 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -18122,17 +19050,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–15 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "11 rds_on", + "raw_value": "100 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "11 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -18165,17 +19093,17 @@ "spec_values": [ { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "12 rds_on", + "raw_value": "10 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "12 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -18203,22 +19131,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–17 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "13 rds_on", + "raw_value": "25 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "13 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -18262,17 +19190,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–19 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "15 rds_on", + "raw_value": "10 mOhm", "source_locale": "en-US" } ] @@ -18297,17 +19225,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–20 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "16 rds_on", + "raw_value": "25 mOhm", "source_locale": "en-US" } ] @@ -18330,22 +19258,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–21 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "17 rds_on", + "raw_value": "100 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "17 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -18376,22 +19304,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "18 rds_on", + "raw_value": "10 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "18 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -18423,22 +19351,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–23 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "19 rds_on", + "raw_value": "25 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "19 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -18471,22 +19399,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–24 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "20 rds_on", + "raw_value": "100 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "20 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -18512,22 +19440,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–8 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "21 rds_on", + "raw_value": "10 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "21 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -18558,22 +19486,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–9 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "22 rds_on", + "raw_value": "25 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "22 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -18605,22 +19533,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–10 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "23 rds_on", + "raw_value": "100 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "23 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -18663,17 +19591,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–12 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "25 rds_on", + "raw_value": "25 mOhm", "source_locale": "en-US" } ] @@ -18697,17 +19625,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–13 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "26 rds_on", + "raw_value": "100 mOhm", "source_locale": "en-US" } ] @@ -18733,22 +19661,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "27 rds_on", + "raw_value": "10 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "27 power", + "raw_value": "0.125 W", "source_locale": "en-US" } ] @@ -18776,17 +19704,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–15 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "28 rds_on", + "raw_value": "25 mOhm", "source_locale": "en-US" }, { @@ -18813,17 +19741,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–16 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "29 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -18854,17 +19782,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–17 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "30 rds_on", + "raw_value": "10 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "30 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -18896,17 +19824,17 @@ "spec_values": [ { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "31 rds_on", + "raw_value": "25 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "31 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -18939,22 +19867,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–19 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_rds_on", - "raw_value": "32 rds_on", + "raw_value": "100 mOhm", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "32 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -18981,17 +19909,17 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "33 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "33 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -19036,17 +19964,17 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "35 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "35 power", + "raw_value": "1 W", "source_locale": "en-US" } ] @@ -19072,17 +20000,17 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "36 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "36 power", + "raw_value": "0.125 W", "source_locale": "en-US" } ] @@ -19105,17 +20033,17 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "37 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "37 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -19145,17 +20073,17 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "38 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "38 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -19186,17 +20114,17 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "39 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "39 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -19229,17 +20157,17 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "40 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "40 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -19267,17 +20195,17 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "41 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "41 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -19307,17 +20235,17 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "42 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "42 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -19349,17 +20277,17 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "43 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "43 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -19401,17 +20329,17 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "45 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "45 power", + "raw_value": "0.125 W", "source_locale": "en-US" } ] @@ -19435,17 +20363,17 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "46 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "46 power", + "raw_value": "0.25 W", "source_locale": "en-US" } ] @@ -19472,17 +20400,17 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "47 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "47 power", + "raw_value": "1 W", "source_locale": "en-US" } ] @@ -19510,12 +20438,12 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "48 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -19543,12 +20471,12 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "49 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "49 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -19579,12 +20507,12 @@ "spec_values": [ { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "50 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -19615,17 +20543,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–21 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "51 switching_frequency", + "raw_value": "400 kHz", "source_locale": "en-US" }, { @@ -19658,17 +20586,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–22 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "52 switching_frequency", + "raw_value": "800 kHz", "source_locale": "en-US" }, { @@ -19696,17 +20624,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–23 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "53 switching_frequency", + "raw_value": "1.2 MHz", "source_locale": "en-US" }, { @@ -19749,17 +20677,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–8 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "55 switching_frequency", + "raw_value": "800 kHz", "source_locale": "en-US" } ] @@ -19785,17 +20713,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–9 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "56 switching_frequency", + "raw_value": "1.2 MHz", "source_locale": "en-US" } ] @@ -19817,17 +20745,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–10 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "57 switching_frequency", + "raw_value": "400 kHz", "source_locale": "en-US" }, { @@ -19858,17 +20786,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–11 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "58 switching_frequency", + "raw_value": "800 kHz", "source_locale": "en-US" }, { @@ -19900,17 +20828,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–12 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "59 switching_frequency", + "raw_value": "1.2 MHz", "source_locale": "en-US" }, { @@ -19943,17 +20871,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–13 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "60 switching_frequency", + "raw_value": "400 kHz", "source_locale": "en-US" }, { @@ -19981,17 +20909,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–14 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "61 switching_frequency", + "raw_value": "800 kHz", "source_locale": "en-US" }, { @@ -20022,17 +20950,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–15 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "62 switching_frequency", + "raw_value": "1.2 MHz", "source_locale": "en-US" }, { @@ -20063,17 +20991,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "63 switching_frequency", + "raw_value": "400 kHz", "source_locale": "en-US" }, { @@ -20116,17 +21044,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–18 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "65 switching_frequency", + "raw_value": "1.2 MHz", "source_locale": "en-US" } ] @@ -20150,17 +21078,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–19 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "66 switching_frequency", + "raw_value": "400 kHz", "source_locale": "en-US" } ] @@ -20187,12 +21115,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–20 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -20224,12 +21152,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–21 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "68 switching_frequency", + "raw_value": "1.2 MHz", "source_locale": "en-US" }, { @@ -20261,17 +21189,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "69 efficiency", + "raw_value": "85 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "69 power", + "raw_value": "0.125 W", "source_locale": "en-US" } ] @@ -20297,7 +21225,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–23 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -20307,17 +21235,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "70 efficiency", + "raw_value": "92 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "70 power", + "raw_value": "0.25 W", "source_locale": "en-US" } ] @@ -20344,7 +21272,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–24 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -20354,17 +21282,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "71 efficiency", + "raw_value": "96 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "71 power", + "raw_value": "1 W", "source_locale": "en-US" } ] @@ -20391,7 +21319,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -20401,17 +21329,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "72 efficiency", + "raw_value": "85 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "72 power", + "raw_value": "0.125 W", "source_locale": "en-US" } ] @@ -20434,7 +21362,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–9 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -20444,17 +21372,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "73 efficiency", + "raw_value": "92 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "73 power", + "raw_value": "0.25 W", "source_locale": "en-US" } ] @@ -20493,7 +21421,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–11 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -20503,7 +21431,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" } ] @@ -20529,7 +21457,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–12 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -20539,7 +21467,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -20562,7 +21490,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–13 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -20572,17 +21500,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "77 efficiency", + "raw_value": "96 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "77 power", + "raw_value": "1 W", "source_locale": "en-US" } ] @@ -20608,7 +21536,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–14 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -20618,17 +21546,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "78 efficiency", + "raw_value": "85 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "78 power", + "raw_value": "0.125 W", "source_locale": "en-US" } ] @@ -20655,7 +21583,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–15 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -20665,17 +21593,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "79 efficiency", + "raw_value": "92 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "79 power", + "raw_value": "0.25 W", "source_locale": "en-US" } ] @@ -20703,7 +21631,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–16 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -20713,17 +21641,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "80 efficiency", + "raw_value": "96 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "80 power", + "raw_value": "1 W", "source_locale": "en-US" } ] @@ -20754,17 +21682,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "81 efficiency", + "raw_value": "85 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "81 power", + "raw_value": "0.125 W", "source_locale": "en-US" } ] @@ -20790,7 +21718,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–18 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -20800,17 +21728,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "82 efficiency", + "raw_value": "92 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "82 power", + "raw_value": "0.25 W", "source_locale": "en-US" } ] @@ -20837,7 +21765,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–19 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -20847,17 +21775,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "83 efficiency", + "raw_value": "96 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "83 power", + "raw_value": "1 W", "source_locale": "en-US" } ] @@ -20895,7 +21823,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–21 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -20905,7 +21833,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -20929,7 +21857,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–22 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -20960,22 +21888,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–23 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "87 efficiency", + "raw_value": "85 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "87 power", + "raw_value": "0.125 W", "source_locale": "en-US" } ] @@ -21008,17 +21936,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "88 efficiency", + "raw_value": "92 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "88 power", + "raw_value": "0.25 W", "source_locale": "en-US" } ] @@ -21040,7 +21968,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–8 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -21050,17 +21978,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "89 efficiency", + "raw_value": "96 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "89 power", + "raw_value": "1 W", "source_locale": "en-US" } ] @@ -21086,7 +22014,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -21096,17 +22024,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "90 efficiency", + "raw_value": "85 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "90 power", + "raw_value": "0.125 W", "source_locale": "en-US" } ] @@ -21133,7 +22061,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–10 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -21143,17 +22071,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "91 efficiency", + "raw_value": "92 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "91 power", + "raw_value": "0.25 W", "source_locale": "en-US" } ] @@ -21181,7 +22109,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–11 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -21191,17 +22119,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "92 efficiency", + "raw_value": "96 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "92 power", + "raw_value": "1 W", "source_locale": "en-US" } ] @@ -21223,7 +22151,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–12 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -21233,17 +22161,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "93 efficiency", + "raw_value": "85 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "93 power", + "raw_value": "0.125 W", "source_locale": "en-US" } ] @@ -21282,7 +22210,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–14 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -21292,7 +22220,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" } ] @@ -21318,7 +22246,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–15 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -21328,7 +22256,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -21351,7 +22279,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–16 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -21361,17 +22289,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "97 efficiency", + "raw_value": "92 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "97 power", + "raw_value": "0.25 W", "source_locale": "en-US" } ] @@ -21397,7 +22325,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–17 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -21407,17 +22335,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "1 efficiency", + "raw_value": "96 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "1 power", + "raw_value": "1 W", "source_locale": "en-US" } ] @@ -21443,7 +22371,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -21453,17 +22381,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "2 efficiency", + "raw_value": "85 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "2 power", + "raw_value": "0.125 W", "source_locale": "en-US" } ] @@ -21491,7 +22419,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–19 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -21501,17 +22429,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "3 efficiency", + "raw_value": "92 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "3 power", + "raw_value": "0.25 W", "source_locale": "en-US" } ] @@ -21534,7 +22462,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–20 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -21544,17 +22472,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "4 efficiency", + "raw_value": "96 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "4 power", + "raw_value": "1 W", "source_locale": "en-US" } ] @@ -21580,7 +22508,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–21 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -21590,17 +22518,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "5 efficiency", + "raw_value": "85 %", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "5 power", + "raw_value": "0.125 W", "source_locale": "en-US" } ] @@ -21627,7 +22555,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–22 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -21637,12 +22565,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "6 efficiency", + "raw_value": "92 %", "source_locale": "en-US" } ] @@ -21679,7 +22607,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–24 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -21707,12 +22635,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–8 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -21743,12 +22671,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "10 efficiency", + "raw_value": "96 %", "source_locale": "en-US" }, { @@ -21781,7 +22709,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -21791,12 +22719,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "11 efficiency", + "raw_value": "85 %", "source_locale": "en-US" }, { @@ -21824,7 +22752,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–11 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -21834,12 +22762,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "12 efficiency", + "raw_value": "92 %", "source_locale": "en-US" }, { @@ -21870,7 +22798,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–12 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -21880,12 +22808,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "13 efficiency", + "raw_value": "96 %", "source_locale": "en-US" }, { @@ -21916,7 +22844,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–13 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -21926,12 +22854,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "14 efficiency", + "raw_value": "85 %", "source_locale": "en-US" }, { @@ -21964,7 +22892,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–14 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -21974,12 +22902,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "15 efficiency", + "raw_value": "92 %", "source_locale": "en-US" }, { @@ -22007,7 +22935,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–15 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -22017,12 +22945,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "16 efficiency", + "raw_value": "96 %", "source_locale": "en-US" }, { @@ -22067,7 +22995,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–17 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -22077,7 +23005,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" } ] @@ -22103,7 +23031,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–18 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -22113,7 +23041,7 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -22145,12 +23073,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "20 efficiency", + "raw_value": "85 %", "source_locale": "en-US" }, { @@ -22181,7 +23109,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–20 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -22191,12 +23119,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "21 efficiency", + "raw_value": "92 %", "source_locale": "en-US" }, { @@ -22228,7 +23156,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–21 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -22238,12 +23166,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "22 efficiency", + "raw_value": "96 %", "source_locale": "en-US" }, { @@ -22275,7 +23203,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–22 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -22285,12 +23213,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "23 efficiency", + "raw_value": "85 %", "source_locale": "en-US" }, { @@ -22318,7 +23246,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–23 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -22328,12 +23256,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "24 efficiency", + "raw_value": "92 %", "source_locale": "en-US" }, { @@ -22364,7 +23292,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–24 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -22374,12 +23302,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_efficiency", - "raw_value": "25 efficiency", + "raw_value": "96 %", "source_locale": "en-US" } ] @@ -22404,12 +23332,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–8 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -22452,7 +23380,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–10 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -22481,7 +23409,7 @@ "spec_values": [ { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -22513,12 +23441,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–12 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -22556,17 +23484,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–13 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { @@ -22593,12 +23521,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–14 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -22634,12 +23562,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–15 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -22676,12 +23604,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–16 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -22719,17 +23647,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–17 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { @@ -22756,12 +23684,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–18 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -22810,12 +23738,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -22846,17 +23774,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–21 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" } ] @@ -22879,12 +23807,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–22 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -22920,12 +23848,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–23 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -22962,12 +23890,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–24 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -23004,17 +23932,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–8 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { @@ -23041,17 +23969,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–9 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "44 switching_frequency", + "raw_value": "400 kHz", "source_locale": "en-US" }, { @@ -23082,17 +24010,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–10 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "45 switching_frequency", + "raw_value": "800 kHz", "source_locale": "en-US" } ] @@ -23119,12 +24047,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–11 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -23167,12 +24095,12 @@ "spec_values": [ { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "48 switching_frequency", + "raw_value": "800 kHz", "source_locale": "en-US" } ] @@ -23195,17 +24123,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–14 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "49 switching_frequency", + "raw_value": "1.2 MHz", "source_locale": "en-US" } ] @@ -23231,17 +24159,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–15 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "50 switching_frequency", + "raw_value": "400 kHz", "source_locale": "en-US" }, { @@ -23274,17 +24202,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–16 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "51 switching_frequency", + "raw_value": "800 kHz", "source_locale": "en-US" }, { @@ -23312,17 +24240,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–17 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "52 switching_frequency", + "raw_value": "1.2 MHz", "source_locale": "en-US" }, { @@ -23353,17 +24281,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–18 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "53 switching_frequency", + "raw_value": "400 kHz", "source_locale": "en-US" }, { @@ -23395,17 +24323,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–19 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "54 switching_frequency", + "raw_value": "800 kHz", "source_locale": "en-US" }, { @@ -23438,17 +24366,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–20 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "55 switching_frequency", + "raw_value": "1.2 MHz", "source_locale": "en-US" }, { @@ -23480,12 +24408,12 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "56 switching_frequency", + "raw_value": "400 kHz", "source_locale": "en-US" }, { @@ -23530,17 +24458,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–23 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "58 switching_frequency", + "raw_value": "1.2 MHz", "source_locale": "en-US" } ] @@ -23566,17 +24494,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–24 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "59 switching_frequency", + "raw_value": "400 kHz", "source_locale": "en-US" } ] @@ -23598,17 +24526,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–8 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "60 switching_frequency", + "raw_value": "800 kHz", "source_locale": "en-US" }, { @@ -23639,17 +24567,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–9 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_switching_frequency", - "raw_value": "61 switching_frequency", + "raw_value": "1.2 MHz", "source_locale": "en-US" }, { @@ -23679,7 +24607,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–10 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -23694,7 +24622,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "62 accuracy", + "raw_value": "±0.1 %", "source_locale": "en-US" }, { @@ -23727,7 +24655,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–11 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -23737,12 +24665,12 @@ }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_accuracy", - "raw_value": "63 accuracy", + "raw_value": "±0.5 %", "source_locale": "en-US" } ] @@ -23765,7 +24693,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–12 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -23806,7 +24734,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -23816,7 +24744,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "65 accuracy", + "raw_value": "±0.1 %", "source_locale": "en-US" }, { @@ -23848,7 +24776,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–14 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -23858,7 +24786,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "66 accuracy", + "raw_value": "±0.5 %", "source_locale": "en-US" }, { @@ -23900,7 +24828,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–16 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -23934,7 +24862,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–17 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -23971,7 +24899,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–18 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -23986,7 +24914,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "70 accuracy", + "raw_value": "±1 %", "source_locale": "en-US" }, { @@ -24019,7 +24947,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–19 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -24029,12 +24957,12 @@ }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_accuracy", - "raw_value": "71 accuracy", + "raw_value": "±0.1 %", "source_locale": "en-US" }, { @@ -24062,7 +24990,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–20 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -24077,7 +25005,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "72 accuracy", + "raw_value": "±0.5 %", "source_locale": "en-US" }, { @@ -24108,7 +25036,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–21 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -24123,7 +25051,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "73 accuracy", + "raw_value": "±1 %", "source_locale": "en-US" }, { @@ -24154,7 +25082,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -24169,7 +25097,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "74 accuracy", + "raw_value": "±0.1 %", "source_locale": "en-US" }, { @@ -24201,7 +25129,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–23 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -24211,12 +25139,12 @@ }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_accuracy", - "raw_value": "75 accuracy", + "raw_value": "±0.5 %", "source_locale": "en-US" }, { @@ -24244,7 +25172,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–24 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -24259,7 +25187,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "76 accuracy", + "raw_value": "±1 %", "source_locale": "en-US" }, { @@ -24303,7 +25231,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–9 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -24339,7 +25267,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–10 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -24349,7 +25277,7 @@ }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" } ] @@ -24371,7 +25299,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–11 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -24386,7 +25314,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "80 accuracy", + "raw_value": "±0.1 %", "source_locale": "en-US" }, { @@ -24432,7 +25360,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "81 accuracy", + "raw_value": "±0.5 %", "source_locale": "en-US" }, { @@ -24464,7 +25392,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–13 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -24479,7 +25407,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "82 accuracy", + "raw_value": "±1 %", "source_locale": "en-US" } ] @@ -24507,7 +25435,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -24517,7 +25445,7 @@ }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { @@ -24545,7 +25473,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–15 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -24555,7 +25483,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "84 accuracy", + "raw_value": "±0.5 %", "source_locale": "en-US" }, { @@ -24586,7 +25514,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–16 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -24596,7 +25524,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "85 accuracy", + "raw_value": "±1 %", "source_locale": "en-US" }, { @@ -24637,7 +25565,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "86 accuracy", + "raw_value": "±0.1 %", "source_locale": "en-US" }, { @@ -24679,7 +25607,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–19 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -24713,7 +25641,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–20 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -24750,7 +25678,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–21 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -24765,7 +25693,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "90 accuracy", + "raw_value": "±0.5 %", "source_locale": "en-US" }, { @@ -24798,7 +25726,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–22 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -24808,12 +25736,12 @@ }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_accuracy", - "raw_value": "91 accuracy", + "raw_value": "±1 %", "source_locale": "en-US" }, { @@ -24855,7 +25783,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "92 accuracy", + "raw_value": "±0.1 %", "source_locale": "en-US" }, { @@ -24886,7 +25814,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–24 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -24901,7 +25829,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "93 accuracy", + "raw_value": "±0.5 %", "source_locale": "en-US" }, { @@ -24932,7 +25860,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–8 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -24947,7 +25875,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "94 accuracy", + "raw_value": "±1 %", "source_locale": "en-US" }, { @@ -24980,7 +25908,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–9 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -24990,12 +25918,12 @@ }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_accuracy", - "raw_value": "95 accuracy", + "raw_value": "±0.1 %", "source_locale": "en-US" }, { @@ -25023,7 +25951,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–10 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -25038,7 +25966,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "96 accuracy", + "raw_value": "±0.5 %", "source_locale": "en-US" }, { @@ -25082,7 +26010,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–12 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -25118,7 +26046,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–13 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -25128,7 +26056,7 @@ }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" } ] @@ -25151,7 +26079,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–14 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -25166,7 +26094,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "3 accuracy", + "raw_value": "±1 %", "source_locale": "en-US" }, { @@ -25196,7 +26124,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -25211,7 +26139,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "4 accuracy", + "raw_value": "±0.1 %", "source_locale": "en-US" } ] @@ -25238,7 +26166,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–16 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -25281,7 +26209,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–17 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -25291,7 +26219,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "6 accuracy", + "raw_value": "±1 %", "source_locale": "en-US" }, { @@ -25318,7 +26246,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–18 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -25328,7 +26256,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "7 accuracy", + "raw_value": "±0.1 %", "source_locale": "en-US" }, { @@ -25369,7 +26297,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "8 accuracy", + "raw_value": "±0.5 %", "source_locale": "en-US" }, { @@ -25401,7 +26329,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–20 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -25416,7 +26344,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "9 accuracy", + "raw_value": "±1 %", "source_locale": "en-US" }, { @@ -25459,7 +26387,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–22 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -25493,7 +26421,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–23 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -25529,7 +26457,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -25544,7 +26472,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "13 accuracy", + "raw_value": "±0.1 %", "source_locale": "en-US" }, { @@ -25576,7 +26504,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–8 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -25586,12 +26514,12 @@ }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_accuracy", - "raw_value": "14 accuracy", + "raw_value": "±0.5 %", "source_locale": "en-US" }, { @@ -25619,7 +26547,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–9 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -25634,7 +26562,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "15 accuracy", + "raw_value": "±1 %", "source_locale": "en-US" }, { @@ -25665,7 +26593,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–10 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -25680,7 +26608,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "16 accuracy", + "raw_value": "±0.1 %", "source_locale": "en-US" }, { @@ -25711,7 +26639,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–11 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -25726,7 +26654,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "17 accuracy", + "raw_value": "±0.5 %", "source_locale": "en-US" }, { @@ -25759,7 +26687,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–12 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -25769,12 +26697,12 @@ }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_accuracy", - "raw_value": "18 accuracy", + "raw_value": "±1 %", "source_locale": "en-US" }, { @@ -25801,7 +26729,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–13 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -25816,7 +26744,7 @@ }, { "spec_id": "spc_bandwidth", - "raw_value": "19 bandwidth", + "raw_value": "1 MHz", "source_locale": "en-US" }, { @@ -25861,7 +26789,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–15 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -25897,7 +26825,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -25907,7 +26835,7 @@ }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" } ] @@ -25930,7 +26858,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–17 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -25945,7 +26873,7 @@ }, { "spec_id": "spc_bandwidth", - "raw_value": "23 bandwidth", + "raw_value": "10 MHz", "source_locale": "en-US" } ] @@ -25971,7 +26899,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–18 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -26012,7 +26940,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–19 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -26022,7 +26950,7 @@ }, { "spec_id": "spc_bandwidth", - "raw_value": "25 bandwidth", + "raw_value": "1 MHz", "source_locale": "en-US" }, { @@ -26055,17 +26983,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–20 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "26 bandwidth", + "raw_value": "10 MHz", "source_locale": "en-US" }, { @@ -26103,7 +27031,7 @@ }, { "spec_id": "spc_bandwidth", - "raw_value": "27 bandwidth", + "raw_value": "100 MHz", "source_locale": "en-US" }, { @@ -26134,7 +27062,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–22 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -26149,7 +27077,7 @@ }, { "spec_id": "spc_bandwidth", - "raw_value": "28 bandwidth", + "raw_value": "1 MHz", "source_locale": "en-US" }, { @@ -26181,7 +27109,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–23 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -26196,7 +27124,7 @@ }, { "spec_id": "spc_bandwidth", - "raw_value": "29 bandwidth", + "raw_value": "10 MHz", "source_locale": "en-US" }, { @@ -26270,7 +27198,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–9 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -26307,7 +27235,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–10 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -26322,7 +27250,7 @@ }, { "spec_id": "spc_bandwidth", - "raw_value": "33 bandwidth", + "raw_value": "100 MHz", "source_locale": "en-US" }, { @@ -26355,7 +27283,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–11 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -26365,12 +27293,12 @@ }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "34 bandwidth", + "raw_value": "1 MHz", "source_locale": "en-US" }, { @@ -26398,7 +27326,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–12 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -26413,7 +27341,7 @@ }, { "spec_id": "spc_bandwidth", - "raw_value": "35 bandwidth", + "raw_value": "10 MHz", "source_locale": "en-US" }, { @@ -26444,7 +27372,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–13 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -26459,7 +27387,7 @@ }, { "spec_id": "spc_bandwidth", - "raw_value": "36 bandwidth", + "raw_value": "100 MHz", "source_locale": "en-US" }, { @@ -26490,7 +27418,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–14 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -26505,7 +27433,7 @@ }, { "spec_id": "spc_bandwidth", - "raw_value": "37 bandwidth", + "raw_value": "1 MHz", "source_locale": "en-US" }, { @@ -26538,7 +27466,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–15 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -26548,12 +27476,12 @@ }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "38 bandwidth", + "raw_value": "10 MHz", "source_locale": "en-US" }, { @@ -26581,7 +27509,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–16 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -26596,7 +27524,7 @@ }, { "spec_id": "spc_bandwidth", - "raw_value": "39 bandwidth", + "raw_value": "100 MHz", "source_locale": "en-US" }, { @@ -26677,7 +27605,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–19 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -26687,7 +27615,7 @@ }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" } ] @@ -26708,7 +27636,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–20 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -26749,7 +27677,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–21 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -26759,7 +27687,7 @@ }, { "spec_id": "spc_bandwidth", - "raw_value": "44 bandwidth", + "raw_value": "10 MHz", "source_locale": "en-US" }, { @@ -26791,7 +27719,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–22 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -26801,7 +27729,7 @@ }, { "spec_id": "spc_bandwidth", - "raw_value": "45 bandwidth", + "raw_value": "100 MHz", "source_locale": "en-US" }, { @@ -26839,12 +27767,12 @@ }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "46 bandwidth", + "raw_value": "1 MHz", "source_locale": "en-US" }, { @@ -26872,7 +27800,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–24 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -26887,7 +27815,7 @@ }, { "spec_id": "spc_bandwidth", - "raw_value": "47 bandwidth", + "raw_value": "10 MHz", "source_locale": "en-US" }, { @@ -26917,7 +27845,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–8 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -26932,7 +27860,7 @@ }, { "spec_id": "spc_bandwidth", - "raw_value": "48 bandwidth", + "raw_value": "100 MHz", "source_locale": "en-US" }, { @@ -26963,7 +27891,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -26978,7 +27906,7 @@ }, { "spec_id": "spc_bandwidth", - "raw_value": "49 bandwidth", + "raw_value": "1 MHz", "source_locale": "en-US" }, { @@ -27021,7 +27949,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–11 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -27055,7 +27983,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–12 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -27092,7 +28020,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–13 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -27107,7 +28035,7 @@ }, { "spec_id": "spc_bandwidth", - "raw_value": "53 bandwidth", + "raw_value": "10 MHz", "source_locale": "en-US" }, { @@ -27140,7 +28068,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–14 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -27150,12 +28078,12 @@ }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_bandwidth", - "raw_value": "54 bandwidth", + "raw_value": "100 MHz", "source_locale": "en-US" }, { @@ -27182,7 +28110,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–15 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -27197,7 +28125,7 @@ }, { "spec_id": "spc_bandwidth", - "raw_value": "55 bandwidth", + "raw_value": "1 MHz", "source_locale": "en-US" }, { @@ -27227,7 +28155,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–16 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -27242,7 +28170,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "56 accuracy", + "raw_value": "±0.5 %", "source_locale": "en-US" }, { @@ -27274,7 +28202,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–17 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -27289,7 +28217,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "57 accuracy", + "raw_value": "±1 %", "source_locale": "en-US" }, { @@ -27322,7 +28250,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -27332,12 +28260,12 @@ }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_accuracy", - "raw_value": "58 accuracy", + "raw_value": "±0.1 %", "source_locale": "en-US" }, { @@ -27365,7 +28293,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–19 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -27380,7 +28308,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "59 accuracy", + "raw_value": "±0.5 %", "source_locale": "en-US" }, { @@ -27424,7 +28352,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–21 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -27460,7 +28388,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–22 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -27470,7 +28398,7 @@ }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" } ] @@ -27493,7 +28421,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–23 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -27503,7 +28431,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "63 accuracy", + "raw_value": "±1 %", "source_locale": "en-US" }, { @@ -27534,7 +28462,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–24 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -27544,7 +28472,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "64 accuracy", + "raw_value": "±0.1 %", "source_locale": "en-US" }, { @@ -27585,7 +28513,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "65 accuracy", + "raw_value": "±0.5 %", "source_locale": "en-US" }, { @@ -27618,7 +28546,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–9 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { @@ -27628,12 +28556,12 @@ }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_accuracy", - "raw_value": "66 accuracy", + "raw_value": "±1 %", "source_locale": "en-US" }, { @@ -27675,7 +28603,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "67 accuracy", + "raw_value": "±0.1 %", "source_locale": "en-US" }, { @@ -27706,7 +28634,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–11 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -27721,7 +28649,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "68 accuracy", + "raw_value": "±0.5 %", "source_locale": "en-US" }, { @@ -27752,7 +28680,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–12 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -27767,7 +28695,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "69 accuracy", + "raw_value": "±1 %", "source_locale": "en-US" }, { @@ -27810,7 +28738,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–14 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { @@ -27844,7 +28772,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–15 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { @@ -27880,7 +28808,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–16 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -27895,7 +28823,7 @@ }, { "spec_id": "spc_accuracy", - "raw_value": "73 accuracy", + "raw_value": "±0.1 %", "source_locale": "en-US" }, { @@ -27938,12 +28866,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "74 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -27981,12 +28909,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "1.6 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "75 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -28027,12 +28955,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "2.7 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "76 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -28074,12 +29002,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "3.8 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "77 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -28122,12 +29050,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "78 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -28164,12 +29092,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "79 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -28224,7 +29152,7 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "2.2 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -28281,12 +29209,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.4 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "83 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -28322,12 +29250,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "84 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -28368,12 +29296,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "85 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -28416,12 +29344,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "86 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -28459,12 +29387,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "3.8 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "87 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -28505,12 +29433,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.9 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "88 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -28552,12 +29480,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "0.0 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "89 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -28609,7 +29537,7 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -28643,7 +29571,7 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -28680,12 +29608,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.4 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "93 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -28733,7 +29661,7 @@ }, { "spec_id": "spc_mounting", - "raw_value": "94 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -28770,12 +29698,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "1.6 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "95 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -28816,12 +29744,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "96 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -28862,12 +29790,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "97 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -28910,12 +29838,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "1 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -28952,12 +29880,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "0.0 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "2 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" } ] @@ -29033,7 +29961,7 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -29060,12 +29988,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "6 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -29106,12 +30034,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "7 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -29153,12 +30081,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "1.6 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "8 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -29201,12 +30129,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "2.7 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "9 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -29244,12 +30172,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "3.8 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "10 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -29289,12 +30217,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "11 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -29335,12 +30263,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "12 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -29393,7 +30321,7 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "2.2 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -29427,7 +30355,7 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "3.3 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -29464,12 +30392,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.4 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "16 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -29512,12 +30440,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "17 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -29554,12 +30482,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "18 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -29599,12 +30527,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "19 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -29646,12 +30574,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "3.8 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "20 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -29694,12 +30622,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.9 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "21 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" } ] @@ -29732,7 +30660,7 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "0.0 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -29780,7 +30708,7 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -29811,7 +30739,7 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -29844,12 +30772,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.4 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "26 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -29895,7 +30823,7 @@ }, { "spec_id": "spc_mounting", - "raw_value": "27 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -29937,12 +30865,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "1.6 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "28 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -29985,12 +30913,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "29 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -30027,12 +30955,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "30 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -30073,12 +31001,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "31 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -30120,12 +31048,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "0.0 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "32 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -30178,7 +31106,7 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "2.2 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -30212,7 +31140,7 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -30247,12 +31175,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "36 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -30294,12 +31222,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "37 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -30337,12 +31265,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "1.6 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "38 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -30383,12 +31311,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "2.7 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "39 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -30430,12 +31358,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "3.8 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "40 mounting", + "raw_value": "Through hole", "source_locale": "en-US" } ] @@ -30473,7 +31401,7 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -30510,7 +31438,7 @@ }, { "spec_id": "spc_mounting", - "raw_value": "42 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -30560,7 +31488,7 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "2.2 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -30596,7 +31524,7 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "3.3 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -30629,12 +31557,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.4 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "46 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -30675,12 +31603,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "47 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -30721,12 +31649,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "48 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -30759,17 +31687,17 @@ "spec_values": [ { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_rated_contact_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "49 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -30801,12 +31729,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "3.8 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "50 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -30842,12 +31770,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.9 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "51 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -30884,12 +31812,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "0.0 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "52 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -30935,12 +31863,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "54 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" } ] @@ -30969,12 +31897,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "55 mounting", + "raw_value": "Through hole", "source_locale": "en-US" } ] @@ -31006,12 +31934,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.4 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "56 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -31044,7 +31972,7 @@ "spec_values": [ { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { @@ -31054,7 +31982,7 @@ }, { "spec_id": "spc_mounting", - "raw_value": "57 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -31087,12 +32015,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "1.6 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "58 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -31128,12 +32056,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "59 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -31169,12 +32097,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "60 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" } ] @@ -31202,12 +32130,12 @@ "spec_values": [ { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -31240,7 +32168,7 @@ }, { "spec_id": "spc_mounting", - "raw_value": "62 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -31289,12 +32217,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "2.2 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "64 mounting", + "raw_value": "Through hole", "source_locale": "en-US" } ] @@ -31320,17 +32248,17 @@ "spec_values": [ { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_rated_contact_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "65 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" } ] @@ -31357,12 +32285,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "66 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -31393,17 +32321,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "67 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "67 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "67 inductance", + "raw_value": "10 uH", "source_locale": "en-US" }, { @@ -31413,7 +32341,7 @@ }, { "spec_id": "spc_power", - "raw_value": "67 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -31445,17 +32373,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "68 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "68 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "68 inductance", + "raw_value": "100 uH", "source_locale": "en-US" }, { @@ -31465,7 +32393,7 @@ }, { "spec_id": "spc_power", - "raw_value": "68 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -31498,17 +32426,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "69 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "69 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "69 inductance", + "raw_value": "1 uH", "source_locale": "en-US" }, { @@ -31518,7 +32446,7 @@ }, { "spec_id": "spc_power", - "raw_value": "69 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -31545,17 +32473,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "70 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "70 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "70 inductance", + "raw_value": "10 uH", "source_locale": "en-US" }, { @@ -31565,7 +32493,7 @@ }, { "spec_id": "spc_power", - "raw_value": "70 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -31596,17 +32524,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "71 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "71 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "71 inductance", + "raw_value": "100 uH", "source_locale": "en-US" }, { @@ -31616,7 +32544,7 @@ }, { "spec_id": "spc_power", - "raw_value": "71 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -31647,17 +32575,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "72 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "72 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "72 inductance", + "raw_value": "1 uH", "source_locale": "en-US" }, { @@ -31667,7 +32595,7 @@ }, { "spec_id": "spc_power", - "raw_value": "72 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -31710,17 +32638,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "74 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "74 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "74 inductance", + "raw_value": "100 uH", "source_locale": "en-US" } ] @@ -31744,17 +32672,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "75 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "75 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "75 inductance", + "raw_value": "1 uH", "source_locale": "en-US" } ] @@ -31780,17 +32708,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "76 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "76 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "76 inductance", + "raw_value": "10 uH", "source_locale": "en-US" }, { @@ -31800,7 +32728,7 @@ }, { "spec_id": "spc_power", - "raw_value": "76 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -31833,17 +32761,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "77 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "77 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "77 inductance", + "raw_value": "100 uH", "source_locale": "en-US" }, { @@ -31853,7 +32781,7 @@ }, { "spec_id": "spc_power", - "raw_value": "77 power", + "raw_value": "1 W", "source_locale": "en-US" } ] @@ -31875,17 +32803,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "78 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "78 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "78 inductance", + "raw_value": "1 uH", "source_locale": "en-US" }, { @@ -31921,22 +32849,22 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "79 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "79 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "79 inductance", + "raw_value": "10 uH", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "79 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -31968,12 +32896,12 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "80 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "80 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { @@ -31983,7 +32911,7 @@ }, { "spec_id": "spc_power", - "raw_value": "80 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -32016,12 +32944,12 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "81 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "81 inductance", + "raw_value": "1 uH", "source_locale": "en-US" }, { @@ -32031,7 +32959,7 @@ }, { "spec_id": "spc_power", - "raw_value": "81 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -32059,12 +32987,12 @@ "spec_values": [ { "spec_id": "spc_capacitance", - "raw_value": "82 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "82 inductance", + "raw_value": "10 uH", "source_locale": "en-US" }, { @@ -32074,7 +33002,7 @@ }, { "spec_id": "spc_power", - "raw_value": "82 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -32118,17 +33046,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "84 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "84 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "84 inductance", + "raw_value": "1 uH", "source_locale": "en-US" } ] @@ -32154,17 +33082,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "85 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "85 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "85 inductance", + "raw_value": "10 uH", "source_locale": "en-US" } ] @@ -32187,17 +33115,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "86 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "86 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "86 inductance", + "raw_value": "100 uH", "source_locale": "en-US" }, { @@ -32207,7 +33135,7 @@ }, { "spec_id": "spc_power", - "raw_value": "86 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -32237,17 +33165,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "87 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "87 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "87 inductance", + "raw_value": "1 uH", "source_locale": "en-US" }, { @@ -32257,7 +33185,7 @@ }, { "spec_id": "spc_power", - "raw_value": "87 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -32289,17 +33217,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "88 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "88 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "88 inductance", + "raw_value": "10 uH", "source_locale": "en-US" }, { @@ -32309,7 +33237,7 @@ }, { "spec_id": "spc_power", - "raw_value": "88 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -32341,17 +33269,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "89 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "89 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "89 inductance", + "raw_value": "100 uH", "source_locale": "en-US" }, { @@ -32361,7 +33289,7 @@ }, { "spec_id": "spc_power", - "raw_value": "89 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -32388,17 +33316,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "90 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "90 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "90 inductance", + "raw_value": "1 uH", "source_locale": "en-US" }, { @@ -32408,7 +33336,7 @@ }, { "spec_id": "spc_power", - "raw_value": "90 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -32439,17 +33367,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "91 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "91 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "91 inductance", + "raw_value": "10 uH", "source_locale": "en-US" }, { @@ -32459,7 +33387,7 @@ }, { "spec_id": "spc_power", - "raw_value": "91 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -32491,17 +33419,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "92 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "92 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "92 inductance", + "raw_value": "100 uH", "source_locale": "en-US" }, { @@ -32511,7 +33439,7 @@ }, { "spec_id": "spc_power", - "raw_value": "92 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -32554,17 +33482,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "94 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "94 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "94 inductance", + "raw_value": "10 uH", "source_locale": "en-US" } ] @@ -32588,17 +33516,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "95 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "95 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "95 inductance", + "raw_value": "100 uH", "source_locale": "en-US" } ] @@ -32624,17 +33552,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "96 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "96 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "96 inductance", + "raw_value": "1 uH", "source_locale": "en-US" }, { @@ -32644,7 +33572,7 @@ }, { "spec_id": "spc_power", - "raw_value": "96 power", + "raw_value": "0.125 W", "source_locale": "en-US" } ] @@ -32672,17 +33600,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "97 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "97 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "97 inductance", + "raw_value": "10 uH", "source_locale": "en-US" }, { @@ -32715,22 +33643,22 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "1 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "1 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "1 inductance", + "raw_value": "100 uH", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "1 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -32761,12 +33689,12 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "2 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "2 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { @@ -32776,7 +33704,7 @@ }, { "spec_id": "spc_power", - "raw_value": "2 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -32808,12 +33736,12 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "3 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "3 inductance", + "raw_value": "10 uH", "source_locale": "en-US" }, { @@ -32823,7 +33751,7 @@ }, { "spec_id": "spc_power", - "raw_value": "3 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -32856,12 +33784,12 @@ "spec_values": [ { "spec_id": "spc_capacitance", - "raw_value": "4 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "4 inductance", + "raw_value": "100 uH", "source_locale": "en-US" }, { @@ -32871,7 +33799,7 @@ }, { "spec_id": "spc_power", - "raw_value": "4 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -32897,17 +33825,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "5 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "5 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "5 inductance", + "raw_value": "1 uH", "source_locale": "en-US" }, { @@ -32917,7 +33845,7 @@ }, { "spec_id": "spc_power", - "raw_value": "5 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -32961,17 +33889,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "7 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "7 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "7 inductance", + "raw_value": "100 uH", "source_locale": "en-US" } ] @@ -32997,17 +33925,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "8 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "8 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "8 inductance", + "raw_value": "1 uH", "source_locale": "en-US" } ] @@ -33030,17 +33958,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "9 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "9 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "9 inductance", + "raw_value": "10 uH", "source_locale": "en-US" }, { @@ -33050,7 +33978,7 @@ }, { "spec_id": "spc_power", - "raw_value": "9 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -33081,17 +34009,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "10 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "10 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "10 inductance", + "raw_value": "100 uH", "source_locale": "en-US" }, { @@ -33101,7 +34029,7 @@ }, { "spec_id": "spc_power", - "raw_value": "10 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -33132,17 +34060,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "11 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "11 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "11 inductance", + "raw_value": "1 uH", "source_locale": "en-US" }, { @@ -33152,7 +34080,7 @@ }, { "spec_id": "spc_power", - "raw_value": "11 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -33185,17 +34113,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "12 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "12 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "12 inductance", + "raw_value": "10 uH", "source_locale": "en-US" }, { @@ -33205,7 +34133,7 @@ }, { "spec_id": "spc_power", - "raw_value": "12 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -33233,17 +34161,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "13 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "13 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "13 inductance", + "raw_value": "100 uH", "source_locale": "en-US" }, { @@ -33253,7 +34181,7 @@ }, { "spec_id": "spc_power", - "raw_value": "13 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -33284,17 +34212,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "14 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "14 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "14 inductance", + "raw_value": "1 uH", "source_locale": "en-US" }, { @@ -33304,7 +34232,7 @@ }, { "spec_id": "spc_power", - "raw_value": "14 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -33336,17 +34264,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "15 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "15 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "15 inductance", + "raw_value": "10 uH", "source_locale": "en-US" }, { @@ -33356,7 +34284,7 @@ }, { "spec_id": "spc_power", - "raw_value": "15 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -33398,17 +34326,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "17 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "17 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "17 inductance", + "raw_value": "1 uH", "source_locale": "en-US" } ] @@ -33431,17 +34359,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "18 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "18 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "18 inductance", + "raw_value": "10 uH", "source_locale": "en-US" } ] @@ -33468,17 +34396,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "19 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "19 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "19 inductance", + "raw_value": "100 uH", "source_locale": "en-US" }, { @@ -33516,22 +34444,22 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "20 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "20 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "20 inductance", + "raw_value": "1 uH", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "20 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -33559,12 +34487,12 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "21 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "21 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { @@ -33574,7 +34502,7 @@ }, { "spec_id": "spc_power", - "raw_value": "21 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -33605,12 +34533,12 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "22 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "22 inductance", + "raw_value": "100 uH", "source_locale": "en-US" }, { @@ -33620,7 +34548,7 @@ }, { "spec_id": "spc_power", - "raw_value": "22 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -33651,12 +34579,12 @@ "spec_values": [ { "spec_id": "spc_capacitance", - "raw_value": "23 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "23 inductance", + "raw_value": "1 uH", "source_locale": "en-US" }, { @@ -33666,7 +34594,7 @@ }, { "spec_id": "spc_power", - "raw_value": "23 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -33698,17 +34626,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "24 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "24 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "24 inductance", + "raw_value": "10 uH", "source_locale": "en-US" }, { @@ -33718,7 +34646,7 @@ }, { "spec_id": "spc_power", - "raw_value": "24 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -33746,17 +34674,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "25 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "25 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "25 inductance", + "raw_value": "100 uH", "source_locale": "en-US" }, { @@ -33766,7 +34694,7 @@ }, { "spec_id": "spc_power", - "raw_value": "25 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -33811,17 +34739,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "27 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "27 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "27 inductance", + "raw_value": "10 uH", "source_locale": "en-US" } ] @@ -33847,17 +34775,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "28 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "28 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "28 inductance", + "raw_value": "100 uH", "source_locale": "en-US" } ] @@ -33879,17 +34807,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "29 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "29 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "29 inductance", + "raw_value": "1 uH", "source_locale": "en-US" }, { @@ -33899,7 +34827,7 @@ }, { "spec_id": "spc_power", - "raw_value": "29 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -33930,17 +34858,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "30 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "30 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "30 inductance", + "raw_value": "10 uH", "source_locale": "en-US" }, { @@ -33950,7 +34878,7 @@ }, { "spec_id": "spc_power", - "raw_value": "30 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -33981,17 +34909,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "31 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "31 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "31 inductance", + "raw_value": "100 uH", "source_locale": "en-US" }, { @@ -34001,7 +34929,7 @@ }, { "spec_id": "spc_power", - "raw_value": "31 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -34034,17 +34962,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "32 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "32 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "32 inductance", + "raw_value": "1 uH", "source_locale": "en-US" }, { @@ -34054,7 +34982,7 @@ }, { "spec_id": "spc_power", - "raw_value": "32 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -34082,17 +35010,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "33 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "33 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "33 inductance", + "raw_value": "10 uH", "source_locale": "en-US" }, { @@ -34102,7 +35030,7 @@ }, { "spec_id": "spc_power", - "raw_value": "33 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -34133,17 +35061,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "34 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "34 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "34 inductance", + "raw_value": "100 uH", "source_locale": "en-US" }, { @@ -34153,7 +35081,7 @@ }, { "spec_id": "spc_power", - "raw_value": "34 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -34184,17 +35112,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "35 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "35 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "35 inductance", + "raw_value": "1 uH", "source_locale": "en-US" }, { @@ -34204,7 +35132,7 @@ }, { "spec_id": "spc_power", - "raw_value": "35 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -34247,17 +35175,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "37 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "37 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "37 inductance", + "raw_value": "100 uH", "source_locale": "en-US" } ] @@ -34281,17 +35209,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "38 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "38 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "38 inductance", + "raw_value": "1 uH", "source_locale": "en-US" } ] @@ -34318,22 +35246,22 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "39 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "39 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "39 inductance", + "raw_value": "10 uH", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "39 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -34366,12 +35294,12 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "40 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "40 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { @@ -34381,7 +35309,7 @@ }, { "spec_id": "spc_power", - "raw_value": "40 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -34407,12 +35335,12 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "41 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "41 inductance", + "raw_value": "1 uH", "source_locale": "en-US" }, { @@ -34422,7 +35350,7 @@ }, { "spec_id": "spc_power", - "raw_value": "41 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -34453,12 +35381,12 @@ "spec_values": [ { "spec_id": "spc_capacitance", - "raw_value": "42 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "42 inductance", + "raw_value": "10 uH", "source_locale": "en-US" }, { @@ -34468,7 +35396,7 @@ }, { "spec_id": "spc_power", - "raw_value": "42 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -34500,17 +35428,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "43 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "43 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "43 inductance", + "raw_value": "100 uH", "source_locale": "en-US" }, { @@ -34520,7 +35448,7 @@ }, { "spec_id": "spc_power", - "raw_value": "43 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -34552,17 +35480,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "44 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "44 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "44 inductance", + "raw_value": "1 uH", "source_locale": "en-US" }, { @@ -34572,7 +35500,7 @@ }, { "spec_id": "spc_power", - "raw_value": "44 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -34600,17 +35528,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "45 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "45 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "45 inductance", + "raw_value": "10 uH", "source_locale": "en-US" }, { @@ -34620,7 +35548,7 @@ }, { "spec_id": "spc_power", - "raw_value": "45 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -34664,17 +35592,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "47 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "47 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "47 inductance", + "raw_value": "1 uH", "source_locale": "en-US" } ] @@ -34700,17 +35628,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "48 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "48 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "48 inductance", + "raw_value": "10 uH", "source_locale": "en-US" } ] @@ -34733,17 +35661,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "49 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "49 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "49 inductance", + "raw_value": "100 uH", "source_locale": "en-US" }, { @@ -34753,7 +35681,7 @@ }, { "spec_id": "spc_power", - "raw_value": "49 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -34784,17 +35712,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "50 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "50 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "50 inductance", + "raw_value": "1 uH", "source_locale": "en-US" }, { @@ -34804,7 +35732,7 @@ }, { "spec_id": "spc_power", - "raw_value": "50 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -34836,17 +35764,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "51 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "51 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "51 inductance", + "raw_value": "10 uH", "source_locale": "en-US" }, { @@ -34856,7 +35784,7 @@ }, { "spec_id": "spc_power", - "raw_value": "51 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -34889,17 +35817,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "52 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "52 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "52 inductance", + "raw_value": "100 uH", "source_locale": "en-US" }, { @@ -34909,7 +35837,7 @@ }, { "spec_id": "spc_power", - "raw_value": "52 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -34936,17 +35864,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "53 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "53 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "53 inductance", + "raw_value": "1 uH", "source_locale": "en-US" }, { @@ -34956,7 +35884,7 @@ }, { "spec_id": "spc_power", - "raw_value": "53 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -34987,17 +35915,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "54 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "54 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "54 inductance", + "raw_value": "10 uH", "source_locale": "en-US" }, { @@ -35007,7 +35935,7 @@ }, { "spec_id": "spc_power", - "raw_value": "54 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -35039,17 +35967,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "55 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "55 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "55 inductance", + "raw_value": "100 uH", "source_locale": "en-US" }, { @@ -35059,7 +35987,7 @@ }, { "spec_id": "spc_power", - "raw_value": "55 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -35101,17 +36029,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "57 resistance", + "raw_value": "4.7 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "57 capacitance", + "raw_value": "1 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "57 inductance", + "raw_value": "10 uH", "source_locale": "en-US" } ] @@ -35134,17 +36062,17 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "58 resistance", + "raw_value": "10 kOhm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "58 capacitance", + "raw_value": "10 uF", "source_locale": "en-US" }, { "spec_id": "spc_inductance", - "raw_value": "58 inductance", + "raw_value": "100 uH", "source_locale": "en-US" } ] @@ -35170,12 +36098,12 @@ "spec_values": [ { "spec_id": "spc_resistance", - "raw_value": "59 resistance", + "raw_value": "100 Ohm", "source_locale": "en-US" }, { "spec_id": "spc_capacitance", - "raw_value": "59 capacitance", + "raw_value": "100 nF", "source_locale": "en-US" }, { @@ -35185,7 +36113,7 @@ }, { "spec_id": "spc_power", - "raw_value": "59 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -35218,17 +36146,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–10 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "60 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "60 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" }, { @@ -35256,17 +36184,17 @@ "spec_values": [ { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "61 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "61 luminous_intensity", + "raw_value": "1 cd", "source_locale": "en-US" }, { @@ -35297,22 +36225,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "62 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "62 luminous_intensity", + "raw_value": "100 mcd", "source_locale": "en-US" }, { @@ -35344,22 +36272,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–13 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "63 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "63 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" }, { @@ -35392,22 +36320,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–14 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "64 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "64 luminous_intensity", + "raw_value": "1 cd", "source_locale": "en-US" }, { @@ -35434,22 +36362,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–15 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "65 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "65 luminous_intensity", + "raw_value": "100 mcd", "source_locale": "en-US" }, { @@ -35494,17 +36422,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–17 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "67 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" } ] @@ -35530,17 +36458,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–18 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "68 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" } ] @@ -35563,22 +36491,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–19 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "69 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "69 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" }, { @@ -35608,22 +36536,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–20 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "70 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "70 luminous_intensity", + "raw_value": "1 cd", "source_locale": "en-US" }, { @@ -35654,22 +36582,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "71 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "71 luminous_intensity", + "raw_value": "100 mcd", "source_locale": "en-US" }, { @@ -35702,22 +36630,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–22 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "72 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "72 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" }, { @@ -35745,22 +36673,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–23 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "73 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "73 luminous_intensity", + "raw_value": "1 cd", "source_locale": "en-US" }, { @@ -35791,22 +36719,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–24 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "74 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "74 luminous_intensity", + "raw_value": "100 mcd", "source_locale": "en-US" }, { @@ -35837,22 +36765,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–8 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "75 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "75 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" }, { @@ -35894,17 +36822,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–10 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "77 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" } ] @@ -35928,12 +36856,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–11 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -35960,17 +36888,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–12 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "79 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "79 luminous_intensity", + "raw_value": "1 cd", "source_locale": "en-US" }, { @@ -36003,17 +36931,17 @@ "spec_values": [ { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "80 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "80 luminous_intensity", + "raw_value": "100 mcd", "source_locale": "en-US" }, { @@ -36041,22 +36969,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–14 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "81 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "81 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" }, { @@ -36087,22 +37015,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–15 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "82 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "82 luminous_intensity", + "raw_value": "1 cd", "source_locale": "en-US" }, { @@ -36132,22 +37060,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–16 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "83 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "83 luminous_intensity", + "raw_value": "100 mcd", "source_locale": "en-US" }, { @@ -36180,22 +37108,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–17 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "84 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "84 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" }, { @@ -36223,22 +37151,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–18 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "85 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "85 luminous_intensity", + "raw_value": "1 cd", "source_locale": "en-US" }, { @@ -36283,17 +37211,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–20 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "87 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" } ] @@ -36319,17 +37247,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–21 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "88 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" } ] @@ -36356,17 +37284,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "89 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "89 luminous_intensity", + "raw_value": "100 mcd", "source_locale": "en-US" }, { @@ -36397,22 +37325,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–23 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "90 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "90 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" }, { @@ -36444,22 +37372,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–24 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "91 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "91 luminous_intensity", + "raw_value": "1 cd", "source_locale": "en-US" }, { @@ -36491,22 +37419,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–8 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "92 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "92 luminous_intensity", + "raw_value": "100 mcd", "source_locale": "en-US" }, { @@ -36534,22 +37462,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–9 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "93 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "93 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" }, { @@ -36580,22 +37508,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–10 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "94 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "94 luminous_intensity", + "raw_value": "1 cd", "source_locale": "en-US" }, { @@ -36626,22 +37554,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–11 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "95 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "95 luminous_intensity", + "raw_value": "100 mcd", "source_locale": "en-US" } ] @@ -36678,12 +37606,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–13 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -36707,12 +37635,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "1 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" } ] @@ -36739,17 +37667,17 @@ "spec_values": [ { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "2 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "2 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" }, { @@ -36782,22 +37710,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–16 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "3 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "3 luminous_intensity", + "raw_value": "1 cd", "source_locale": "en-US" }, { @@ -36824,22 +37752,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–17 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "4 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "4 luminous_intensity", + "raw_value": "100 mcd", "source_locale": "en-US" }, { @@ -36870,22 +37798,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–18 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "5 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "5 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" }, { @@ -36917,22 +37845,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–19 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "6 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "6 luminous_intensity", + "raw_value": "1 cd", "source_locale": "en-US" }, { @@ -36965,22 +37893,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–20 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "7 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "7 luminous_intensity", + "raw_value": "100 mcd", "source_locale": "en-US" }, { @@ -37008,22 +37936,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–21 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "8 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "8 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" }, { @@ -37067,17 +37995,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "10 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" } ] @@ -37103,17 +38031,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–24 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "11 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" } ] @@ -37134,22 +38062,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–8 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "12 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "12 luminous_intensity", + "raw_value": "1 cd", "source_locale": "en-US" }, { @@ -37180,22 +38108,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–9 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "13 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "13 luminous_intensity", + "raw_value": "100 mcd", "source_locale": "en-US" }, { @@ -37227,22 +38155,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–10 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "14 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "14 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" }, { @@ -37275,22 +38203,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–11 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "15 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "15 luminous_intensity", + "raw_value": "1 cd", "source_locale": "en-US" }, { @@ -37317,22 +38245,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–12 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "16 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "16 luminous_intensity", + "raw_value": "100 mcd", "source_locale": "en-US" }, { @@ -37363,22 +38291,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–13 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "17 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "17 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" } ] @@ -37405,17 +38333,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–14 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "18 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { @@ -37458,12 +38386,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–16 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "20 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" } ] @@ -37487,12 +38415,12 @@ "spec_values": [ { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "21 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" } ] @@ -37518,22 +38446,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–18 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "22 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "22 luminous_intensity", + "raw_value": "100 mcd", "source_locale": "en-US" }, { @@ -37566,22 +38494,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–19 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "23 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "23 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" }, { @@ -37609,22 +38537,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–20 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "24 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "24 luminous_intensity", + "raw_value": "1 cd", "source_locale": "en-US" }, { @@ -37654,22 +38582,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–21 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "25 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "25 luminous_intensity", + "raw_value": "100 mcd", "source_locale": "en-US" }, { @@ -37701,22 +38629,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–22 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "26 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "26 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" }, { @@ -37749,22 +38677,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–23 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "27 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "27 luminous_intensity", + "raw_value": "1 cd", "source_locale": "en-US" }, { @@ -37796,17 +38724,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "28 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "28 luminous_intensity", + "raw_value": "100 mcd", "source_locale": "en-US" }, { @@ -37850,17 +38778,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–9 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "30 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" } ] @@ -37886,17 +38814,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–10 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "31 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" } ] @@ -37919,22 +38847,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–11 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "32 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "32 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" }, { @@ -37970,17 +38898,17 @@ }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "33 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "33 luminous_intensity", + "raw_value": "1 cd", "source_locale": "en-US" }, { @@ -38011,22 +38939,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–13 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "34 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "34 luminous_intensity", + "raw_value": "100 mcd", "source_locale": "en-US" }, { @@ -38059,22 +38987,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–14 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "35 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "35 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" }, { @@ -38102,22 +39030,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–15 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "36 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "36 luminous_intensity", + "raw_value": "1 cd", "source_locale": "en-US" } ] @@ -38143,17 +39071,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "37 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { @@ -38184,17 +39112,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–17 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "38 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" }, { @@ -38236,12 +39164,12 @@ "spec_values": [ { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "40 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" } ] @@ -38265,17 +39193,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–20 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "41 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" } ] @@ -38302,22 +39230,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–21 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "42 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "42 luminous_intensity", + "raw_value": "1 cd", "source_locale": "en-US" }, { @@ -38350,22 +39278,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–22 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "43 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "43 luminous_intensity", + "raw_value": "100 mcd", "source_locale": "en-US" }, { @@ -38393,22 +39321,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–23 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "44 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "44 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" }, { @@ -38439,22 +39367,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–24 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "45 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "45 luminous_intensity", + "raw_value": "1 cd", "source_locale": "en-US" }, { @@ -38484,22 +39412,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "46 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "46 luminous_intensity", + "raw_value": "100 mcd", "source_locale": "en-US" }, { @@ -38532,22 +39460,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–9 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "47 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "47 luminous_intensity", + "raw_value": "500 mcd", "source_locale": "en-US" }, { @@ -38575,22 +39503,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–10 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "48 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "48 luminous_intensity", + "raw_value": "1 cd", "source_locale": "en-US" }, { @@ -38635,17 +39563,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–12 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.2 A", + "raw_value": "2 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "50 wavelength", + "raw_value": "525 nm", "source_locale": "en-US" } ] @@ -38670,17 +39598,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–13 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "51 wavelength", + "raw_value": "630 nm", "source_locale": "en-US" } ] @@ -38702,22 +39630,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–14 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_wavelength", - "raw_value": "52 wavelength", + "raw_value": "470 nm", "source_locale": "en-US" }, { "spec_id": "spc_luminous_intensity", - "raw_value": "52 luminous_intensity", + "raw_value": "100 mcd", "source_locale": "en-US" }, { @@ -38748,22 +39676,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–15 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "53 coil_voltage", + "raw_value": "5 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "53 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "53 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -38795,22 +39723,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–16 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "54 coil_voltage", + "raw_value": "12 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "54 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "54 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -38843,22 +39771,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "55 coil_voltage", + "raw_value": "24 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "55 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "55 power", + "raw_value": "0.125 W", "source_locale": "en-US" } ] @@ -38881,17 +39809,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–18 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "56 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "56 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" }, { @@ -38922,17 +39850,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–19 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "57 coil_voltage", + "raw_value": "5 V", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "57 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -38963,17 +39891,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–20 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "58 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "58 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -39016,17 +39944,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–22 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "60 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "60 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" } ] @@ -39050,17 +39978,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–23 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "61 coil_voltage", + "raw_value": "5 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "61 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" } ] @@ -39087,22 +40015,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–24 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "62 coil_voltage", + "raw_value": "12 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "62 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "62 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -39134,22 +40062,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–8 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "63 coil_voltage", + "raw_value": "24 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "63 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "63 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -39180,17 +40108,17 @@ }, { "spec_id": "spc_coil_voltage", - "raw_value": "64 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "64 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "64 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -39221,22 +40149,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–10 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "65 coil_voltage", + "raw_value": "5 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "65 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "65 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -39268,22 +40196,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–11 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "66 coil_voltage", + "raw_value": "12 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "66 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "66 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -39316,22 +40244,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–12 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "67 coil_voltage", + "raw_value": "24 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "67 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "67 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -39359,22 +40287,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–13 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "68 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "68 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "68 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -39418,17 +40346,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–15 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "70 coil_voltage", + "raw_value": "12 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "70 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" } ] @@ -39454,17 +40382,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–16 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "71 coil_voltage", + "raw_value": "24 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "71 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" } ] @@ -39487,22 +40415,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–17 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "72 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "72 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "72 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -39533,22 +40461,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "73 coil_voltage", + "raw_value": "5 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "73 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "73 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -39580,22 +40508,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–19 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "74 coil_voltage", + "raw_value": "12 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "74 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "74 power", + "raw_value": "0.25 W", "source_locale": "en-US" } ] @@ -39623,17 +40551,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–20 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "75 coil_voltage", + "raw_value": "24 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "75 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" }, { @@ -39660,17 +40588,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–21 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "76 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "76 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -39700,17 +40628,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–22 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "77 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "77 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -39742,17 +40670,17 @@ "spec_values": [ { "spec_id": "spc_coil_voltage", - "raw_value": "78 coil_voltage", + "raw_value": "12 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "78 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "78 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -39794,17 +40722,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–8 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "80 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "80 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" } ] @@ -39828,17 +40756,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–9 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "81 coil_voltage", + "raw_value": "5 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "81 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" } ] @@ -39864,22 +40792,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "82 coil_voltage", + "raw_value": "12 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "82 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "82 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -39912,22 +40840,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–11 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "83 coil_voltage", + "raw_value": "24 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "83 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "83 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -39955,22 +40883,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–12 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "84 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "84 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "84 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -40001,22 +40929,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–13 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "85 coil_voltage", + "raw_value": "5 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "85 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "85 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -40048,22 +40976,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–14 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "86 coil_voltage", + "raw_value": "12 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "86 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "86 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -40096,22 +41024,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–15 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "87 coil_voltage", + "raw_value": "24 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "87 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "87 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -40138,22 +41066,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–16 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "88 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "88 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "88 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -40202,12 +41130,12 @@ }, { "spec_id": "spc_coil_voltage", - "raw_value": "90 coil_voltage", + "raw_value": "12 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "90 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" } ] @@ -40233,17 +41161,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "91 coil_voltage", + "raw_value": "24 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "91 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" } ] @@ -40266,22 +41194,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–20 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "92 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "92 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "92 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -40312,22 +41240,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–21 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "93 coil_voltage", + "raw_value": "5 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "93 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "93 power", + "raw_value": "1 W", "source_locale": "en-US" } ] @@ -40353,17 +41281,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–22 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "94 coil_voltage", + "raw_value": "12 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "94 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" }, { @@ -40396,17 +41324,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–23 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "95 coil_voltage", + "raw_value": "24 V", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "95 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -40434,17 +41362,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–24 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "96 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "96 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -40474,17 +41402,17 @@ "spec_values": [ { "spec_id": "spc_coil_voltage", - "raw_value": "97 coil_voltage", + "raw_value": "5 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "97 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "97 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -40516,22 +41444,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–9 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "1 coil_voltage", + "raw_value": "12 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "1 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "1 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -40578,12 +41506,12 @@ }, { "spec_id": "spc_coil_voltage", - "raw_value": "3 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "3 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" } ] @@ -40607,17 +41535,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–12 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "4 coil_voltage", + "raw_value": "5 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "4 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" } ] @@ -40644,22 +41572,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–13 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "5 coil_voltage", + "raw_value": "12 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "5 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "5 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -40691,22 +41619,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–14 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "6 coil_voltage", + "raw_value": "24 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "6 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "6 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -40734,22 +41662,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–15 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "7 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "7 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "7 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -40780,22 +41708,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–16 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "8 coil_voltage", + "raw_value": "5 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "8 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "8 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -40826,22 +41754,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–17 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "9 coil_voltage", + "raw_value": "12 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "9 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "9 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -40874,22 +41802,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–18 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "10 coil_voltage", + "raw_value": "24 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "10 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "10 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -40917,22 +41845,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–19 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "11 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "11 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "11 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -40977,17 +41905,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–21 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "13 coil_voltage", + "raw_value": "12 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "13 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" } ] @@ -41013,17 +41941,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–22 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "14 coil_voltage", + "raw_value": "24 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "14 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" } ] @@ -41045,22 +41973,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–23 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "15 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "15 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "15 power", + "raw_value": "0.125 W", "source_locale": "en-US" } ] @@ -41086,17 +42014,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–24 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "16 coil_voltage", + "raw_value": "5 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "16 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" }, { @@ -41127,17 +42055,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–8 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "17 coil_voltage", + "raw_value": "12 V", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "17 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -41170,17 +42098,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–9 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "18 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "18 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -41207,17 +42135,17 @@ "spec_values": [ { "spec_id": "spc_coil_voltage", - "raw_value": "19 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "19 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "19 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -41248,22 +42176,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–11 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "20 coil_voltage", + "raw_value": "5 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "20 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "20 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -41294,22 +42222,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "21 coil_voltage", + "raw_value": "12 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "21 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "21 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -41352,17 +42280,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–14 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "23 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "23 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" } ] @@ -41386,17 +42314,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–15 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "24 coil_voltage", + "raw_value": "5 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "24 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" } ] @@ -41423,22 +42351,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–16 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "25 coil_voltage", + "raw_value": "12 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "25 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "25 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -41471,22 +42399,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–17 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "26 coil_voltage", + "raw_value": "24 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "26 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "26 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -41513,22 +42441,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–18 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "27 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "27 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "27 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -41559,22 +42487,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–19 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "28 coil_voltage", + "raw_value": "5 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "28 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "28 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -41606,22 +42534,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–20 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "29 coil_voltage", + "raw_value": "12 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "29 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "29 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -41654,22 +42582,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "30 coil_voltage", + "raw_value": "24 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "30 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "30 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -41697,22 +42625,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–22 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "31 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "31 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "31 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -41755,17 +42683,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–24 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "33 coil_voltage", + "raw_value": "12 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "33 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" } ] @@ -41790,17 +42718,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–8 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "34 coil_voltage", + "raw_value": "24 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "34 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" } ] @@ -41823,17 +42751,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–9 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "35 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "35 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" }, { @@ -41864,17 +42792,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–10 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "36 coil_voltage", + "raw_value": "5 V", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "36 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -41906,17 +42834,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–11 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "37 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "37 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -41949,17 +42877,17 @@ "spec_values": [ { "spec_id": "spc_coil_voltage", - "raw_value": "38 coil_voltage", + "raw_value": "24 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "38 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "38 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -41991,17 +42919,17 @@ }, { "spec_id": "spc_coil_voltage", - "raw_value": "39 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "39 contact_rating", + "raw_value": "1 A at 30 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "39 power", + "raw_value": "0.125 W", "source_locale": "en-US" }, { @@ -42032,22 +42960,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–14 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "40 coil_voltage", + "raw_value": "5 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "40 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "40 power", + "raw_value": "0.25 W", "source_locale": "en-US" }, { @@ -42079,22 +43007,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–15 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "41 coil_voltage", + "raw_value": "12 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "41 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" }, { "spec_id": "spc_power", - "raw_value": "41 power", + "raw_value": "1 W", "source_locale": "en-US" }, { @@ -42137,17 +43065,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–17 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "43 coil_voltage", + "raw_value": "3 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "43 contact_rating", + "raw_value": "3 A at 250 V AC", "source_locale": "en-US" } ] @@ -42171,17 +43099,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–18 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_coil_voltage", - "raw_value": "44 coil_voltage", + "raw_value": "5 V", "source_locale": "en-US" }, { "spec_id": "spc_contact_rating", - "raw_value": "44 contact_rating", + "raw_value": "5 A resistive at 24 V DC", "source_locale": "en-US" } ] @@ -42206,17 +43134,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–19 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "45 core", + "raw_value": "Cortex-M0+", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "45 clock", + "raw_value": "16 MHz", "source_locale": "en-US" }, { @@ -42226,7 +43154,7 @@ }, { "spec_id": "spc_wireless_standard", - "raw_value": "45 wireless_standard", + "raw_value": "IEEE 802.11n", "source_locale": "en-US" }, { @@ -42259,27 +43187,27 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–20 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "46 core", + "raw_value": "Cortex-M4", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "46 clock", + "raw_value": "48 MHz", "source_locale": "en-US" }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_wireless_standard", - "raw_value": "46 wireless_standard", + "raw_value": "Bluetooth LE 5.3", "source_locale": "en-US" }, { @@ -42307,17 +43235,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–21 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "47 core", + "raw_value": "RISC-V RV32IM", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "47 clock", + "raw_value": "120 MHz", "source_locale": "en-US" }, { @@ -42327,7 +43255,7 @@ }, { "spec_id": "spc_wireless_standard", - "raw_value": "47 wireless_standard", + "raw_value": "IEEE 802.15.4; Bluetooth LE 5.3", "source_locale": "en-US" }, { @@ -42358,17 +43286,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "48 core", + "raw_value": "Cortex-M0+", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "48 clock", + "raw_value": "16 MHz", "source_locale": "en-US" }, { @@ -42378,7 +43306,7 @@ }, { "spec_id": "spc_wireless_standard", - "raw_value": "48 wireless_standard", + "raw_value": "IEEE 802.11n", "source_locale": "en-US" }, { @@ -42410,17 +43338,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–23 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "49 core", + "raw_value": "Cortex-M4", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "49 clock", + "raw_value": "48 MHz", "source_locale": "en-US" }, { @@ -42430,7 +43358,7 @@ }, { "spec_id": "spc_wireless_standard", - "raw_value": "49 wireless_standard", + "raw_value": "Bluetooth LE 5.3", "source_locale": "en-US" }, { @@ -42463,27 +43391,27 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–24 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "50 core", + "raw_value": "RISC-V RV32IM", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "50 clock", + "raw_value": "120 MHz", "source_locale": "en-US" }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_wireless_standard", - "raw_value": "50 wireless_standard", + "raw_value": "IEEE 802.15.4; Bluetooth LE 5.3", "source_locale": "en-US" }, { @@ -42509,17 +43437,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–8 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "51 core", + "raw_value": "Cortex-M0+", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "51 clock", + "raw_value": "16 MHz", "source_locale": "en-US" }, { @@ -42529,7 +43457,7 @@ }, { "spec_id": "spc_wireless_standard", - "raw_value": "51 wireless_standard", + "raw_value": "IEEE 802.11n", "source_locale": "en-US" }, { @@ -42574,17 +43502,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–10 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "53 core", + "raw_value": "RISC-V RV32IM", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "53 clock", + "raw_value": "120 MHz", "source_locale": "en-US" } ] @@ -42610,17 +43538,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–11 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "54 core", + "raw_value": "Cortex-M0+", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "54 clock", + "raw_value": "16 MHz", "source_locale": "en-US" } ] @@ -42643,12 +43571,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–12 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "55 core", + "raw_value": "Cortex-M4", "source_locale": "en-US" }, { @@ -42658,7 +43586,7 @@ }, { "spec_id": "spc_wireless_standard", - "raw_value": "55 wireless_standard", + "raw_value": "Bluetooth LE 5.3", "source_locale": "en-US" }, { @@ -42689,12 +43617,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–13 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "56 clock", + "raw_value": "120 MHz", "source_locale": "en-US" }, { @@ -42704,7 +43632,7 @@ }, { "spec_id": "spc_wireless_standard", - "raw_value": "56 wireless_standard", + "raw_value": "IEEE 802.15.4; Bluetooth LE 5.3", "source_locale": "en-US" }, { @@ -42735,12 +43663,12 @@ "spec_values": [ { "spec_id": "spc_core", - "raw_value": "57 core", + "raw_value": "Cortex-M0+", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "57 clock", + "raw_value": "16 MHz", "source_locale": "en-US" }, { @@ -42750,7 +43678,7 @@ }, { "spec_id": "spc_wireless_standard", - "raw_value": "57 wireless_standard", + "raw_value": "IEEE 802.11n", "source_locale": "en-US" }, { @@ -42782,27 +43710,27 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–15 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "58 core", + "raw_value": "Cortex-M4", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "58 clock", + "raw_value": "48 MHz", "source_locale": "en-US" }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_wireless_standard", - "raw_value": "58 wireless_standard", + "raw_value": "Bluetooth LE 5.3", "source_locale": "en-US" }, { @@ -42830,17 +43758,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–16 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "59 core", + "raw_value": "RISC-V RV32IM", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "59 clock", + "raw_value": "120 MHz", "source_locale": "en-US" }, { @@ -42850,7 +43778,7 @@ }, { "spec_id": "spc_wireless_standard", - "raw_value": "59 wireless_standard", + "raw_value": "IEEE 802.15.4; Bluetooth LE 5.3", "source_locale": "en-US" }, { @@ -42881,17 +43809,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–17 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "60 core", + "raw_value": "Cortex-M0+", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "60 clock", + "raw_value": "16 MHz", "source_locale": "en-US" }, { @@ -42901,7 +43829,7 @@ }, { "spec_id": "spc_wireless_standard", - "raw_value": "60 wireless_standard", + "raw_value": "IEEE 802.11n", "source_locale": "en-US" }, { @@ -42933,17 +43861,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–18 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "61 core", + "raw_value": "Cortex-M4", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "61 clock", + "raw_value": "48 MHz", "source_locale": "en-US" }, { @@ -42953,7 +43881,7 @@ }, { "spec_id": "spc_wireless_standard", - "raw_value": "61 wireless_standard", + "raw_value": "Bluetooth LE 5.3", "source_locale": "en-US" }, { @@ -42995,17 +43923,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–20 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "63 core", + "raw_value": "Cortex-M0+", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "63 clock", + "raw_value": "16 MHz", "source_locale": "en-US" } ] @@ -43029,17 +43957,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–21 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "64 core", + "raw_value": "Cortex-M4", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "64 clock", + "raw_value": "48 MHz", "source_locale": "en-US" } ] @@ -43066,22 +43994,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–22 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "65 core", + "raw_value": "RISC-V RV32IM", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "65 clock", + "raw_value": "120 MHz", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "65 memory_density", + "raw_value": "8 Mbit", "source_locale": "en-US" }, { @@ -43119,27 +44047,27 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "66 core", + "raw_value": "Cortex-M0+", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "66 clock", + "raw_value": "16 MHz", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "66 memory_density", + "raw_value": "256 kbit", "source_locale": "en-US" }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { @@ -43167,22 +44095,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–24 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "67 core", + "raw_value": "Cortex-M4", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "67 clock", + "raw_value": "48 MHz", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "67 memory_density", + "raw_value": "1 Mbit", "source_locale": "en-US" }, { @@ -43217,22 +44145,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–8 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "68 core", + "raw_value": "RISC-V RV32IM", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "68 clock", + "raw_value": "120 MHz", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "68 memory_density", + "raw_value": "8 Mbit", "source_locale": "en-US" }, { @@ -43268,22 +44196,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–9 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "69 core", + "raw_value": "Cortex-M0+", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "69 clock", + "raw_value": "16 MHz", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "69 memory_density", + "raw_value": "256 kbit", "source_locale": "en-US" }, { @@ -43321,27 +44249,27 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–10 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "70 core", + "raw_value": "Cortex-M4", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "70 clock", + "raw_value": "48 MHz", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "70 memory_density", + "raw_value": "1 Mbit", "source_locale": "en-US" }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { @@ -43368,22 +44296,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–11 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "71 core", + "raw_value": "RISC-V RV32IM", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "71 clock", + "raw_value": "120 MHz", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "71 memory_density", + "raw_value": "8 Mbit", "source_locale": "en-US" }, { @@ -43428,17 +44356,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–13 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "73 core", + "raw_value": "Cortex-M4", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "73 clock", + "raw_value": "48 MHz", "source_locale": "en-US" } ] @@ -43464,12 +44392,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–14 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "74 core", + "raw_value": "RISC-V RV32IM", "source_locale": "en-US" } ] @@ -43496,12 +44424,12 @@ }, { "spec_id": "spc_clock", - "raw_value": "75 clock", + "raw_value": "16 MHz", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "75 memory_density", + "raw_value": "256 kbit", "source_locale": "en-US" }, { @@ -43537,17 +44465,17 @@ "spec_values": [ { "spec_id": "spc_core", - "raw_value": "76 core", + "raw_value": "Cortex-M4", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "76 clock", + "raw_value": "48 MHz", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "76 memory_density", + "raw_value": "1 Mbit", "source_locale": "en-US" }, { @@ -43584,22 +44512,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–17 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "77 core", + "raw_value": "RISC-V RV32IM", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "77 clock", + "raw_value": "120 MHz", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "77 memory_density", + "raw_value": "8 Mbit", "source_locale": "en-US" }, { @@ -43637,27 +44565,27 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–18 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "78 core", + "raw_value": "Cortex-M0+", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "78 clock", + "raw_value": "16 MHz", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "78 memory_density", + "raw_value": "256 kbit", "source_locale": "en-US" }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { @@ -43685,17 +44613,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–19 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "79 core", + "raw_value": "Cortex-M4", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "79 clock", + "raw_value": "48 MHz", "source_locale": "en-US" }, { @@ -43705,7 +44633,7 @@ }, { "spec_id": "spc_wireless_standard", - "raw_value": "79 wireless_standard", + "raw_value": "Bluetooth LE 5.3", "source_locale": "en-US" }, { @@ -43736,17 +44664,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–20 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "80 core", + "raw_value": "RISC-V RV32IM", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "80 clock", + "raw_value": "120 MHz", "source_locale": "en-US" }, { @@ -43756,7 +44684,7 @@ }, { "spec_id": "spc_wireless_standard", - "raw_value": "80 wireless_standard", + "raw_value": "IEEE 802.15.4; Bluetooth LE 5.3", "source_locale": "en-US" }, { @@ -43787,17 +44715,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–21 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "81 core", + "raw_value": "Cortex-M0+", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "81 clock", + "raw_value": "16 MHz", "source_locale": "en-US" }, { @@ -43807,7 +44735,7 @@ }, { "spec_id": "spc_wireless_standard", - "raw_value": "81 wireless_standard", + "raw_value": "IEEE 802.11n", "source_locale": "en-US" }, { @@ -43850,17 +44778,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–23 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "83 core", + "raw_value": "RISC-V RV32IM", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "83 clock", + "raw_value": "120 MHz", "source_locale": "en-US" } ] @@ -43883,17 +44811,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "84 core", + "raw_value": "Cortex-M0+", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "84 clock", + "raw_value": "16 MHz", "source_locale": "en-US" } ] @@ -43919,17 +44847,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–8 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "85 core", + "raw_value": "Cortex-M4", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "85 clock", + "raw_value": "48 MHz", "source_locale": "en-US" }, { @@ -43939,7 +44867,7 @@ }, { "spec_id": "spc_wireless_standard", - "raw_value": "85 wireless_standard", + "raw_value": "Bluetooth LE 5.3", "source_locale": "en-US" }, { @@ -43972,27 +44900,27 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–9 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "86 core", + "raw_value": "RISC-V RV32IM", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "86 clock", + "raw_value": "120 MHz", "source_locale": "en-US" }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_wireless_standard", - "raw_value": "86 wireless_standard", + "raw_value": "IEEE 802.15.4; Bluetooth LE 5.3", "source_locale": "en-US" }, { @@ -44019,17 +44947,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–10 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "87 core", + "raw_value": "Cortex-M0+", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "87 clock", + "raw_value": "16 MHz", "source_locale": "en-US" }, { @@ -44039,7 +44967,7 @@ }, { "spec_id": "spc_wireless_standard", - "raw_value": "87 wireless_standard", + "raw_value": "IEEE 802.11n", "source_locale": "en-US" }, { @@ -44070,17 +44998,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–11 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "88 core", + "raw_value": "Cortex-M4", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "88 clock", + "raw_value": "48 MHz", "source_locale": "en-US" }, { @@ -44090,7 +45018,7 @@ }, { "spec_id": "spc_wireless_standard", - "raw_value": "88 wireless_standard", + "raw_value": "Bluetooth LE 5.3", "source_locale": "en-US" }, { @@ -44122,17 +45050,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–12 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "89 core", + "raw_value": "RISC-V RV32IM", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "89 clock", + "raw_value": "120 MHz", "source_locale": "en-US" }, { @@ -44142,7 +45070,7 @@ }, { "spec_id": "spc_wireless_standard", - "raw_value": "89 wireless_standard", + "raw_value": "IEEE 802.15.4; Bluetooth LE 5.3", "source_locale": "en-US" }, { @@ -44175,27 +45103,27 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–13 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "90 core", + "raw_value": "Cortex-M0+", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "90 clock", + "raw_value": "16 MHz", "source_locale": "en-US" }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_wireless_standard", - "raw_value": "90 wireless_standard", + "raw_value": "IEEE 802.11n", "source_locale": "en-US" } ] @@ -44218,17 +45146,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–14 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "91 core", + "raw_value": "Cortex-M4", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "91 clock", + "raw_value": "48 MHz", "source_locale": "en-US" }, { @@ -44277,12 +45205,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_core", - "raw_value": "93 core", + "raw_value": "Cortex-M0+", "source_locale": "en-US" } ] @@ -44308,12 +45236,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–17 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "94 clock", + "raw_value": "48 MHz", "source_locale": "en-US" } ] @@ -44336,12 +45264,12 @@ "spec_values": [ { "spec_id": "spc_core", - "raw_value": "95 core", + "raw_value": "RISC-V RV32IM", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "95 clock", + "raw_value": "120 MHz", "source_locale": "en-US" }, { @@ -44351,7 +45279,7 @@ }, { "spec_id": "spc_wireless_standard", - "raw_value": "95 wireless_standard", + "raw_value": "IEEE 802.15.4; Bluetooth LE 5.3", "source_locale": "en-US" }, { @@ -44397,7 +45325,7 @@ }, { "spec_id": "spc_mounting", - "raw_value": "96 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -44438,12 +45366,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "1.6 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "97 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -44486,12 +45414,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "1 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -44528,12 +45456,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "2 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -44574,12 +45502,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "3 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -44621,12 +45549,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "0.0 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "4 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -44678,7 +45606,7 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "2.2 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -44712,7 +45640,7 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "3.3 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -44748,12 +45676,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "8 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -44796,12 +45724,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "9 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -44839,12 +45767,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "1.6 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "10 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" }, { @@ -44885,12 +45813,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "2.7 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "11 mounting", + "raw_value": "Surface mount", "source_locale": "en-US" }, { @@ -44932,12 +45860,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "3.8 A", + "raw_value": "1 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "12 mounting", + "raw_value": "Through hole", "source_locale": "en-US" }, { @@ -44979,12 +45907,12 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { "spec_id": "spc_mounting", - "raw_value": "13 mounting", + "raw_value": "Panel mount", "source_locale": "en-US" } ] @@ -45016,7 +45944,7 @@ }, { "spec_id": "spc_rated_contact_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -45061,7 +45989,7 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–19 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { @@ -45092,12 +46020,12 @@ "spec_values": [ { "spec_id": "spc_memory_density", - "raw_value": "17 memory_density", + "raw_value": "256 kbit", "source_locale": "en-US" }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" } ] @@ -45120,12 +46048,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–21 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "18 memory_density", + "raw_value": "1 Mbit", "source_locale": "en-US" }, { @@ -45135,7 +46063,7 @@ }, { "spec_id": "spc_clock", - "raw_value": "18 clock", + "raw_value": "48 MHz", "source_locale": "en-US" }, { @@ -45166,12 +46094,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–22 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "19 memory_density", + "raw_value": "8 Mbit", "source_locale": "en-US" }, { @@ -45181,7 +46109,7 @@ }, { "spec_id": "spc_clock", - "raw_value": "19 clock", + "raw_value": "120 MHz", "source_locale": "en-US" }, { @@ -45212,12 +46140,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–23 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "20 memory_density", + "raw_value": "256 kbit", "source_locale": "en-US" }, { @@ -45227,7 +46155,7 @@ }, { "spec_id": "spc_clock", - "raw_value": "20 clock", + "raw_value": "16 MHz", "source_locale": "en-US" }, { @@ -45260,22 +46188,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–24 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "21 memory_density", + "raw_value": "1 Mbit", "source_locale": "en-US" }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "21 clock", + "raw_value": "48 MHz", "source_locale": "en-US" }, { @@ -45302,12 +46230,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–8 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "22 memory_density", + "raw_value": "8 Mbit", "source_locale": "en-US" }, { @@ -45317,7 +46245,7 @@ }, { "spec_id": "spc_clock", - "raw_value": "22 clock", + "raw_value": "120 MHz", "source_locale": "en-US" }, { @@ -45348,12 +46276,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "23 memory_density", + "raw_value": "256 kbit", "source_locale": "en-US" }, { @@ -45363,7 +46291,7 @@ }, { "spec_id": "spc_clock", - "raw_value": "23 clock", + "raw_value": "16 MHz", "source_locale": "en-US" }, { @@ -45395,12 +46323,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–10 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "24 memory_density", + "raw_value": "1 Mbit", "source_locale": "en-US" }, { @@ -45410,7 +46338,7 @@ }, { "spec_id": "spc_clock", - "raw_value": "24 clock", + "raw_value": "48 MHz", "source_locale": "en-US" }, { @@ -45451,12 +46379,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–12 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "26 memory_density", + "raw_value": "256 kbit", "source_locale": "en-US" }, { @@ -45485,12 +46413,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–13 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "27 memory_density", + "raw_value": "1 Mbit", "source_locale": "en-US" }, { @@ -45522,12 +46450,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–14 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "28 memory_density", + "raw_value": "8 Mbit", "source_locale": "en-US" }, { @@ -45537,7 +46465,7 @@ }, { "spec_id": "spc_clock", - "raw_value": "28 clock", + "raw_value": "120 MHz", "source_locale": "en-US" }, { @@ -45570,22 +46498,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–15 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "29 memory_density", + "raw_value": "256 kbit", "source_locale": "en-US" }, { "spec_id": "spc_interface", - "raw_value": "Analog", + "raw_value": "I²C; SPI", "source_locale": "en-US" }, { "spec_id": "spc_clock", - "raw_value": "29 clock", + "raw_value": "16 MHz", "source_locale": "en-US" }, { @@ -45613,12 +46541,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–16 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "30 memory_density", + "raw_value": "1 Mbit", "source_locale": "en-US" }, { @@ -45628,7 +46556,7 @@ }, { "spec_id": "spc_clock", - "raw_value": "30 clock", + "raw_value": "48 MHz", "source_locale": "en-US" }, { @@ -45659,12 +46587,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–17 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "31 memory_density", + "raw_value": "8 Mbit", "source_locale": "en-US" }, { @@ -45674,7 +46602,7 @@ }, { "spec_id": "spc_clock", - "raw_value": "31 clock", + "raw_value": "120 MHz", "source_locale": "en-US" }, { @@ -45705,12 +46633,12 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_memory_density", - "raw_value": "32 memory_density", + "raw_value": "256 kbit", "source_locale": "en-US" }, { @@ -45720,7 +46648,7 @@ }, { "spec_id": "spc_clock", - "raw_value": "32 clock", + "raw_value": "16 MHz", "source_locale": "en-US" } ] @@ -45748,17 +46676,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–19 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "33 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "33 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { @@ -45786,17 +46714,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–20 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "34 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -45841,12 +46769,12 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "36 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "36 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" } ] @@ -45872,17 +46800,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–23 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "37 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "37 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" } ] @@ -45904,22 +46832,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–24 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "38 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "38 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -45948,22 +46876,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–8 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "39 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "39 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -45995,22 +46923,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–9 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "40 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "40 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -46043,22 +46971,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "41 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "41 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -46086,22 +47014,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–11 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "42 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "42 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -46132,22 +47060,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–12 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "43 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "43 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -46178,22 +47106,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–13 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "44 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "44 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -46236,17 +47164,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–15 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "46 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "46 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" } ] @@ -46270,17 +47198,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–16 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "47 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "47 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" } ] @@ -46307,22 +47235,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–17 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "48 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "48 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -46355,22 +47283,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–18 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "49 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "49 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -46402,17 +47330,17 @@ }, { "spec_id": "spc_reverse_voltage", - "raw_value": "50 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "50 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -46443,22 +47371,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–20 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "51 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "51 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" } ] @@ -46484,17 +47412,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–21 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "52 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "52 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { @@ -46527,17 +47455,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–22 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "53 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -46565,17 +47493,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–23 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "54 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -46618,17 +47546,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–8 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "56 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "56 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" } ] @@ -46654,17 +47582,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–9 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "57 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "57 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" } ] @@ -46687,22 +47615,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–10 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "58 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "58 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -46733,22 +47661,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "59 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "59 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -46780,22 +47708,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–12 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "60 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "60 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -46828,22 +47756,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–13 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "61 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "61 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -46870,22 +47798,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–14 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "62 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "62 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -46916,22 +47844,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–15 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "63 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "63 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -46963,22 +47891,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–16 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "64 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "64 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -47020,17 +47948,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–18 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "66 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "66 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" } ] @@ -47054,17 +47982,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–19 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "67 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "67 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" } ] @@ -47090,22 +48018,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "68 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "68 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -47138,22 +48066,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–21 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "69 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "69 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -47181,22 +48109,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–22 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "70 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "70 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" } ] @@ -47222,17 +48150,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–23 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "71 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "71 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { @@ -47264,17 +48192,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–24 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "72 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -47306,17 +48234,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–8 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "73 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -47343,17 +48271,17 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "74 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "74 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -47398,17 +48326,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–11 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "76 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "76 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" } ] @@ -47434,17 +48362,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "77 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "77 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" } ] @@ -47466,22 +48394,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–13 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "78 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "78 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -47512,22 +48440,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–14 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "79 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "79 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -47558,22 +48486,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–15 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "80 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "80 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -47606,22 +48534,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–16 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "81 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "81 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -47649,22 +48577,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–17 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "82 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "82 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -47695,22 +48623,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–18 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "83 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "83 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -47742,22 +48670,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–19 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "84 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "84 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -47804,12 +48732,12 @@ }, { "spec_id": "spc_reverse_voltage", - "raw_value": "86 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "86 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" } ] @@ -47833,17 +48761,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–22 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "87 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "87 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" } ] @@ -47870,22 +48798,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–23 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "88 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "88 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -47918,22 +48846,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–24 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "89 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "89 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" } ] @@ -47955,17 +48883,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–8 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "90 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "90 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { @@ -47995,17 +48923,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–9 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "91 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -48036,17 +48964,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–10 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "92 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -48079,17 +49007,17 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "93 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "93 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -48117,22 +49045,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–12 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "94 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "94 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -48177,17 +49105,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–14 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "96 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "96 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" } ] @@ -48213,17 +49141,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–15 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "97 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "97 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" } ] @@ -48245,22 +49173,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–16 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "1 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "1 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -48291,22 +49219,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–17 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "2 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "2 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -48338,22 +49266,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–18 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "3 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "3 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -48386,22 +49314,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–19 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "4 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "4 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -48429,22 +49357,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–20 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "5 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "5 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -48475,22 +49403,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–21 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "6 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "6 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -48520,22 +49448,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "7 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "7 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -48578,17 +49506,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–24 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "9 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "9 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" } ] @@ -48611,17 +49539,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–8 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "10 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "10 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" } ] @@ -48648,22 +49576,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–9 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "11 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "11 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "2 A", "source_locale": "en-US" } ] @@ -48691,17 +49619,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–10 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "12 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "12 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { @@ -48728,17 +49656,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–11 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "13 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -48769,17 +49697,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–12 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "14 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -48811,17 +49739,17 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "15 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "15 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -48854,22 +49782,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3.0–3.6 V, 4.5–5.5 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "16 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "16 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -48897,22 +49825,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–15 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "17 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "17 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -48956,17 +49884,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–17 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "19 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "19 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" } ] @@ -48991,17 +49919,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–18 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "20 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "20 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" } ] @@ -49024,22 +49952,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–19 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "21 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "21 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.4 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -49070,22 +49998,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–20 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "22 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "22 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -49117,22 +50045,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–21 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "23 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "23 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -49165,22 +50093,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–22 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "24 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "24 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -49212,17 +50140,17 @@ }, { "spec_id": "spc_reverse_voltage", - "raw_value": "25 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "25 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -49253,22 +50181,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–24 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "26 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "26 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -49299,22 +50227,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–8 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "27 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "27 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -49357,17 +50285,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "4–10 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "29 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "29 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" } ] @@ -49391,17 +50319,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–11 V", + "raw_value": "2–12 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "30 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "30 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" } ] @@ -49427,17 +50355,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–12 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "31 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "31 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { @@ -49470,17 +50398,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–13 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "32 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.5 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -49507,17 +50435,17 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "3–14 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "33 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "1.6 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { @@ -49548,17 +50476,17 @@ "spec_values": [ { "spec_id": "spc_reverse_voltage", - "raw_value": "34 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "34 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "2.7 A", + "raw_value": "1 A", "source_locale": "en-US" }, { @@ -49590,22 +50518,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "5–16 V", + "raw_value": "4–18 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "35 reverse_voltage", + "raw_value": "40 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "35 breakdown_voltage", + "raw_value": "60 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "3.8 A", + "raw_value": "2 A", "source_locale": "en-US" }, { @@ -49638,22 +50566,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "6–17 V", + "raw_value": "3–24 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "36 reverse_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "36 breakdown_voltage", + "raw_value": "100 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "4.9 A", + "raw_value": "3 A", "source_locale": "en-US" }, { @@ -49680,22 +50608,22 @@ "spec_values": [ { "spec_id": "spc_input_voltage", - "raw_value": "2–18 V", + "raw_value": "3.0–3.6 V, 4.5–5.5 V", "source_locale": "en-US" }, { "spec_id": "spc_reverse_voltage", - "raw_value": "37 reverse_voltage", + "raw_value": "20 V", "source_locale": "en-US" }, { "spec_id": "spc_breakdown_voltage", - "raw_value": "37 breakdown_voltage", + "raw_value": "30 V", "source_locale": "en-US" }, { "spec_id": "spc_output_current", - "raw_value": "0.0 A", + "raw_value": "0.5 A", "source_locale": "en-US" }, { diff --git a/sample-data/prods-sample-data-v1.json.sha256 b/sample-data/prods-sample-data-v1.json.sha256 index 1d32eef..81d6626 100644 --- a/sample-data/prods-sample-data-v1.json.sha256 +++ b/sample-data/prods-sample-data-v1.json.sha256 @@ -1,2 +1,2 @@ -b03ae8b133f4d6fe1e81e2f7d178a11c322249ca5e7a78258cafc40d179fd072 prods-sample-data-v1.json -dd7dd1c05202094b2af71665bb7fee339e51754f88ca32259a1fdbda610f4d6d schema-v1.json +5212b519bca1ec3969e6e0bb4d3e84da2fc48b813733ead05d749ac9b7ad1ee1 prods-sample-data-v1.json +81bd96e4f9b46a2c738bf7d2e51acc7c3e51e6548c6b067df30e3e36bf18cd50 schema-v1.json diff --git a/sample-data/schema-v1.json b/sample-data/schema-v1.json index 017881a..03aeb50 100644 --- a/sample-data/schema-v1.json +++ b/sample-data/schema-v1.json @@ -18,117 +18,438 @@ "products" ], "properties": { - "schema_version": { "const": 1 }, - "release_version": { "type": "string", "minLength": 1 }, - "dataset_version": { "type": "string", "minLength": 1 }, - "seed": { "type": "integer" }, - "source_statement": { "type": "string", "minLength": 1 }, - "dictionaries": { "type": "array", "items": { "$ref": "#/$defs/dictionary" } }, - "categories": { "type": "array", "items": { "$ref": "#/$defs/category" } }, - "specs": { "type": "array", "items": { "$ref": "#/$defs/spec" } }, - "spec_sets": { "type": "array", "items": { "$ref": "#/$defs/specSet" } }, - "category_spec_sets": { "type": "array", "items": { "$ref": "#/$defs/categorySpecSet" } }, - "products": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/product" } } + "schema_version": { + "const": 1 + }, + "release_version": { + "type": "string", + "minLength": 1 + }, + "dataset_version": { + "type": "string", + "minLength": 1 + }, + "seed": { + "type": "integer" + }, + "source_statement": { + "type": "string", + "minLength": 1 + }, + "dictionaries": { + "type": "array", + "items": { + "$ref": "#/$defs/dictionary" + } + }, + "categories": { + "type": "array", + "items": { + "$ref": "#/$defs/category" + } + }, + "specs": { + "type": "array", + "items": { + "$ref": "#/$defs/spec" + } + }, + "spec_sets": { + "type": "array", + "items": { + "$ref": "#/$defs/specSet" + } + }, + "category_spec_sets": { + "type": "array", + "items": { + "$ref": "#/$defs/categorySpecSet" + } + }, + "products": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/$defs/product" + } + } }, "$defs": { - "id": { "type": "string", "pattern": "^[A-Za-z0-9._-]{1,120}$" }, - "locale": { "type": "string", "minLength": 2, "maxLength": 35 }, - "entryStatus": { "enum": ["active", "disabled"] }, + "id": { + "type": "string", + "pattern": "^[A-Za-z0-9._-]{1,120}$" + }, + "locale": { + "type": "string", + "minLength": 2, + "maxLength": 35 + }, + "entryStatus": { + "enum": [ + "active", + "disabled" + ] + }, "dictionary": { "type": "object", "additionalProperties": false, - "required": ["id", "kind", "name"], + "required": [ + "id", + "kind", + "name" + ], "properties": { - "id": { "$ref": "#/$defs/id" }, - "kind": { "enum": ["manufacturer", "brand", "application", "lifecycle"] }, - "name": { "type": "string", "minLength": 1, "maxLength": 500 }, - "description": { "type": "string", "maxLength": 4000 }, - "source_locale": { "$ref": "#/$defs/locale" }, - "slug": { "$ref": "#/$defs/id" }, - "status": { "$ref": "#/$defs/entryStatus" } + "id": { + "$ref": "#/$defs/id" + }, + "kind": { + "enum": [ + "manufacturer", + "brand", + "application", + "lifecycle" + ] + }, + "name": { + "type": "string", + "minLength": 1, + "maxLength": 500 + }, + "description": { + "type": "string", + "maxLength": 4000 + }, + "source_locale": { + "$ref": "#/$defs/locale" + }, + "slug": { + "$ref": "#/$defs/id" + }, + "status": { + "$ref": "#/$defs/entryStatus" + } } }, "category": { "type": "object", "additionalProperties": false, - "required": ["id", "name", "slug"], + "required": [ + "id", + "name", + "slug" + ], "properties": { - "id": { "$ref": "#/$defs/id" }, - "parent_id": { "$ref": "#/$defs/id" }, - "name": { "type": "string", "minLength": 1, "maxLength": 240 }, - "description": { "type": "string", "maxLength": 4000 }, - "source_locale": { "$ref": "#/$defs/locale" }, - "slug": { "$ref": "#/$defs/id" }, - "status": { "$ref": "#/$defs/entryStatus" } + "id": { + "$ref": "#/$defs/id" + }, + "parent_id": { + "$ref": "#/$defs/id" + }, + "name": { + "type": "string", + "minLength": 1, + "maxLength": 240 + }, + "description": { + "type": "string", + "maxLength": 4000 + }, + "source_locale": { + "$ref": "#/$defs/locale" + }, + "slug": { + "$ref": "#/$defs/id" + }, + "status": { + "$ref": "#/$defs/entryStatus" + } } }, "spec": { "type": "object", "additionalProperties": false, - "required": ["id", "name", "filterable", "semantic_version"], + "required": [ + "id", + "name", + "filterable", + "semantic_version" + ], "properties": { - "id": { "$ref": "#/$defs/id" }, - "name": { "type": "string", "minLength": 1, "maxLength": 500 }, - "preferred_unit": { "type": "string", "maxLength": 120 }, - "filterable": { "type": "boolean" }, - "semantic_version": { "type": "integer", "minimum": 1 }, - "status": { "$ref": "#/$defs/entryStatus" } + "id": { + "$ref": "#/$defs/id" + }, + "name": { + "type": "string", + "minLength": 1, + "maxLength": 500 + }, + "preferred_unit": { + "type": "string", + "maxLength": 120 + }, + "filterable": { + "type": "boolean" + }, + "semantic_version": { + "type": "integer", + "minimum": 1 + }, + "status": { + "$ref": "#/$defs/entryStatus" + }, + "search_profile": { + "$ref": "#/$defs/searchProfile" + } } }, "specSet": { "type": "object", "additionalProperties": false, - "required": ["id", "name", "spec_ids"], + "required": [ + "id", + "name", + "spec_ids" + ], "properties": { - "id": { "$ref": "#/$defs/id" }, - "name": { "type": "string", "minLength": 1, "maxLength": 500 }, - "status": { "$ref": "#/$defs/entryStatus" }, - "spec_ids": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/id" } } + "id": { + "$ref": "#/$defs/id" + }, + "name": { + "type": "string", + "minLength": 1, + "maxLength": 500 + }, + "status": { + "$ref": "#/$defs/entryStatus" + }, + "spec_ids": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "$ref": "#/$defs/id" + } + } } }, "categorySpecSet": { "type": "object", "additionalProperties": false, - "required": ["category_id", "spec_set_id"], + "required": [ + "category_id", + "spec_set_id" + ], "properties": { - "category_id": { "$ref": "#/$defs/id" }, - "spec_set_id": { "$ref": "#/$defs/id" } + "category_id": { + "$ref": "#/$defs/id" + }, + "spec_set_id": { + "$ref": "#/$defs/id" + } } }, "specValue": { "type": "object", "additionalProperties": false, - "required": ["spec_id", "raw_value"], + "required": [ + "spec_id", + "raw_value" + ], "properties": { - "spec_id": { "$ref": "#/$defs/id" }, - "raw_value": { "type": "string", "minLength": 1, "maxLength": 20000 }, - "source_locale": { "$ref": "#/$defs/locale" } + "spec_id": { + "$ref": "#/$defs/id" + }, + "raw_value": { + "type": "string", + "minLength": 1, + "maxLength": 20000 + }, + "source_locale": { + "$ref": "#/$defs/locale" + } } }, "product": { "type": "object", "additionalProperties": false, - "required": ["id", "part_number"], + "required": [ + "id", + "part_number" + ], + "properties": { + "id": { + "$ref": "#/$defs/id" + }, + "part_number": { + "type": "string", + "minLength": 1, + "maxLength": 240 + }, + "name": { + "type": "string", + "maxLength": 500 + }, + "source_locale": { + "$ref": "#/$defs/locale" + }, + "manufacturer_id": { + "$ref": "#/$defs/id" + }, + "manufacturer": { + "type": "string", + "maxLength": 500 + }, + "brand_id": { + "$ref": "#/$defs/id" + }, + "brand": { + "type": "string", + "maxLength": 500 + }, + "lifecycle_id": { + "$ref": "#/$defs/id" + }, + "application_ids": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/$defs/id" + } + }, + "category_id": { + "$ref": "#/$defs/id" + }, + "package_form_factor": { + "type": "string", + "maxLength": 500 + }, + "description": { + "type": "string", + "maxLength": 20000 + }, + "features": { + "type": "string", + "maxLength": 20000 + }, + "specification": { + "type": "string", + "maxLength": 20000 + }, + "document_url": { + "type": "string", + "format": "uri", + "maxLength": 2000 + }, + "status": { + "enum": [ + "hidden", + "published" + ] + }, + "record_state": { + "enum": [ + "current", + "archived" + ] + }, + "spec_values": { + "type": "array", + "items": { + "$ref": "#/$defs/specValue" + } + } + } + }, + "searchProfile": { + "type": "object", + "additionalProperties": false, + "required": [ + "version", + "kind", + "operators" + ], "properties": { - "id": { "$ref": "#/$defs/id" }, - "part_number": { "type": "string", "minLength": 1, "maxLength": 240 }, - "name": { "type": "string", "maxLength": 500 }, - "source_locale": { "$ref": "#/$defs/locale" }, - "manufacturer_id": { "$ref": "#/$defs/id" }, - "manufacturer": { "type": "string", "maxLength": 500 }, - "brand_id": { "$ref": "#/$defs/id" }, - "brand": { "type": "string", "maxLength": 500 }, - "lifecycle_id": { "$ref": "#/$defs/id" }, - "application_ids": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/id" } }, - "category_id": { "$ref": "#/$defs/id" }, - "package_form_factor": { "type": "string", "maxLength": 500 }, - "description": { "type": "string", "maxLength": 20000 }, - "features": { "type": "string", "maxLength": 20000 }, - "specification": { "type": "string", "maxLength": 20000 }, - "document_url": { "type": "string", "format": "uri", "maxLength": 2000 }, - "status": { "enum": ["hidden", "published"] }, - "record_state": { "enum": ["current", "archived"] }, - "spec_values": { "type": "array", "items": { "$ref": "#/$defs/specValue" } } + "version": { + "const": 1 + }, + "kind": { + "enum": [ + "text", + "choice", + "multi_choice", + "numeric" + ] + }, + "text_rule": { + "const": "unicode-fold-space-1" + }, + "delimiter": { + "type": "string", + "maxLength": 8 + }, + "operators": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "numeric": { + "type": "object", + "additionalProperties": false, + "required": [ + "quantity", + "semantic_role", + "allowed_shapes", + "allowed_operators", + "canonical_unit", + "numeric_format", + "schema_version", + "parser_version", + "unit_registry_version" + ], + "properties": { + "quantity": { + "type": "string" + }, + "semantic_role": { + "type": "string" + }, + "canonical_unit": { + "type": "string" + }, + "declared_input_unit": { + "type": "string" + }, + "numeric_format": { + "type": "string" + }, + "parser_version": { + "type": "string" + }, + "unit_registry_version": { + "type": "string" + }, + "schema_version": { + "const": 1 + }, + "allowed_shapes": { + "type": "array", + "minItems": 1, + "items": { + "type": "string" + } + }, + "allowed_operators": { + "type": "array", + "minItems": 1, + "items": { + "type": "string" + } + } + } + } } } } diff --git a/web/ui/src/admin/ProductDataModal.tsx b/web/ui/src/admin/ProductDataModal.tsx index a344e3e..69fc49f 100644 --- a/web/ui/src/admin/ProductDataModal.tsx +++ b/web/ui/src/admin/ProductDataModal.tsx @@ -1,3 +1,6 @@ +import {SpecNormalizationPanel} from "./SpecNormalizationPanel"; +import {specMessages} from "./locales"; +import {useAdminIdentity} from "./AdminProviders"; import { useEffect, useMemo, useState } from "react"; import { Alert, Button, Card, Checkbox, Form, Input, InputNumber, List, Modal, Popconfirm, Radio, Select, Space, Tag, Typography, Upload } from "antd"; import { api, APIError, clientID, postJSON, putJSON } from "./api"; @@ -219,6 +222,9 @@ const labels = { export function ProductDataModal({ locale, product, open, onClose, onChanged, onError, onMessage }: Props) { const text = labels[locale]; + const {capabilities}=useAdminIdentity(); + const canEdit=Boolean(capabilities["catalog.edit"]); + const [normalizationSpec,setNormalizationSpec]=useState(); const [current, setCurrent] = useState(); const [specs, setSpecs] = useState([]); const [specSet, setSpecSet] = useState(); @@ -287,7 +293,6 @@ export function ProductDataModal({ locale, product, open, onClose, onChanged, on await onChanged(); } catch (error) { onError(error); - await load(); } }; @@ -412,6 +417,8 @@ export function ProductDataModal({ locale, product, open, onClose, onChanged, on }; return ( + <> + {normalizationSpec&¤t&&d.value.spec_id===normalizationSpec.id)} productID={current.id} productRevision={current.revision} locale={locale} canEdit={canEdit} onClose={()=>setNormalizationSpec(undefined)} onChanged={async()=>{await load();await onChanged();}}/>} {!specSet && } @@ -420,7 +427,7 @@ export function ProductDataModal({ locale, product, open, onClose, onChanged, on dataSource={values} locale={{ emptyText: text.noValues }} renderItem={(detail) => ( - + setNormalizationSpec(specs.find(spec=>spec.id===detail.value.spec_id))}>{specMessages(locale).normalization}]}> spec.id === detail.value.spec_id)?.name ?? detail.value.spec_id} description={ @@ -538,5 +545,6 @@ export function ProductDataModal({ locale, product, open, onClose, onChanged, on + ); } diff --git a/web/ui/src/admin/SpecNormalizationPanel.tsx b/web/ui/src/admin/SpecNormalizationPanel.tsx new file mode 100644 index 0000000..4fa68dd --- /dev/null +++ b/web/ui/src/admin/SpecNormalizationPanel.tsx @@ -0,0 +1,55 @@ +import {useEffect,useState} from 'react'; +import {Alert,Button,Card,Checkbox,Form,Input,Modal,Select,Space,Tag,Typography} from 'antd'; +import {APIError} from './api'; +import {specMessages,type AdminLocale} from './locales'; +import {specCommands,type NormalizationContext,type NormalizationOutcome,type SpecSearchProfile} from './specCommands'; +import {manualValue,factLabel,type ManualFields} from './specManualValue'; +import type {SpecDefinition,SpecValueDetail} from './types'; +export function SpecNormalizationPanel({spec,details,productID,productRevision,locale,canEdit,onClose,onChanged}:{spec:SpecDefinition;details:SpecValueDetail[];productID:string;productRevision:number;locale:AdminLocale;canEdit:boolean;onClose:()=>void;onChanged:()=>Promise}) { + const text=specMessages(locale);const [form]=Form.useForm(); + const [sources,setSources]=useState(details); + const [selected,setSelected]=useState(details.find(d=>d.source_selection.spec_value_id===d.value.id)?.value.id??details[0]?.value.id); + const [captured,setCaptured]=useState();const [profile,setProfile]=useState();const [busy,setBusy]=useState(false);const [conflict,setConflict]=useState(false);const [error,setError]=useState('');const [message,setMessage]=useState('');const [candidate,setCandidate]=useState(); + const [sourceExpected,setSourceExpected]=useState({product:productRevision,revision:details[0]?.source_selection.revision??0}); + const shape=Form.useWatch('shape',form);const detail=sources.find(d=>d.value.id===selected); + const load=async()=>{if(!selected)return;setBusy(true);try{const [p,fresh]=await Promise.all([specCommands.searchProfile(spec.id),specCommands.sourceState(productID)]);setSources(fresh.values.filter(d=>d.value.spec_id===spec.id));setProfile(p);const c=p.profile.kind==='numeric'?await specCommands.context(selected):undefined;setCaptured(c);setConflict(false);setError('');setSourceExpected({product:c?.expected.product_revision??fresh.product.revision,revision:c?.source_selection.revision??fresh.values.find(d=>d.value.spec_id===spec.id)?.source_selection.revision??0});if(c&&!form.getFieldValue('shape'))form.setFieldValue('shape',c.profile.allowed_shapes[0]);}catch(e){setError(String(e));}finally{setBusy(false);}}; + useEffect(()=>{void load();},[selected]); + const fail=(e:unknown)=>{if(e instanceof APIError&&e.status===409){setConflict(true);setError(text.conflict);}else{setError(String(e));}}; + const commit=async(operation:()=>Promise)=>{setBusy(true);setError('');let result:unknown;try{result=await operation();}catch(e){fail(e);setBusy(false);return;} + const outcome=result as Partial;setMessage(outcome.reason_code?`${text.reason}: ${outcome.reason_code}`:text.saved); + try{await onChanged();await load();}catch{setError(text.refreshFailed);}finally{setBusy(false);} + }; + const adopt=(fields:ManualFields)=>{if(!captured)return;let value:Record;try{value=manualValue(captured.profile,fields);}catch(e){setError(String(e));return;}void commit(()=>specCommands.adoptManual(captured.spec_value_id,captured.expected,value));}; + const chooseSource=()=>{if(!detail)return;void commit(()=>specCommands.selectSource(productID,{spec_id:spec.id,spec_value_id:detail.value.id,expected_product_revision:sourceExpected.product,expected_source_revision:detail.value.source_revision,expected_source_selection_revision:sourceExpected.revision}));}; + const automatic=(detail?.normalized??[]).filter(n=>n.source==='automatic'&&n.status==='current'); + const active=(detail?.normalized??[]).find(n=>n.id===captured?.selection.selected_normalized_value_id); + return {text.close}} width={820}> + {error&&}{message&&} + + {text.source}({value:n.id,label:factLabel(n.value_json)}))}/>{canEdit&&}} + +
+ } + {shape==='discrete_set'&&} + {shape==='interval_set'&&{(fields,{add,remove})=><>{fields.map(field=>{text.lower} · {text.inclusive}{text.upper} · {text.inclusive}{canEdit&&})}{canEdit&&}}} + {shape==='bound_claim'&& + {canEdit&&} +
+ } + {profile?.profile.kind!=='numeric'&&{profile?.profile.kind}} + +
; +} diff --git a/web/ui/src/admin/SpecSearchSettings.tsx b/web/ui/src/admin/SpecSearchSettings.tsx new file mode 100644 index 0000000..b0bc0f7 --- /dev/null +++ b/web/ui/src/admin/SpecSearchSettings.tsx @@ -0,0 +1,43 @@ +import {useEffect,useState} from 'react'; +import {Alert,Button,Checkbox,Descriptions,Form,Input,Modal,Pagination,Progress,Select,Space,Table,Typography} from 'antd'; +import {APIError} from './api'; +import {specMessages,type AdminLocale} from './locales'; +import {specCommands,type NumericProfile,type SpecCapabilities,type SpecSearchProfile,type NormalizationWork,type WorkItem,type SearchProfile} from './specCommands'; +import type {SpecDefinition} from './types'; +type Fields={filterable:boolean;kind:SearchProfile['kind'];operators:string[];delimiter?:string;template?:number}; +export function SpecSearchSettings({spec,locale,canEdit,onClose,onChanged}:{spec:SpecDefinition;locale:AdminLocale;canEdit:boolean;onClose:()=>void;onChanged:()=>Promise}) { + const text=specMessages(locale);const [form]=Form.useForm(); + const [captured,setCaptured]=useState();const [capabilities,setCapabilities]=useState(); + const [profiles,setProfiles]=useState([]);const [busy,setBusy]=useState(false);const [error,setError]=useState('');const [conflict,setConflict]=useState(false);const [message,setMessage]=useState('');const [dirty,setDirty]=useState(false); + const [work,setWork]=useState();const [items,setItems]=useState([]);const [total,setTotal]=useState(0);const [page,setPage]=useState(1); + const kind=Form.useWatch('kind',form);const template=Form.useWatch('template',form); + const load=async(preserve=false)=>{setBusy(true);try {const [next,caps]=await Promise.all([specCommands.searchProfile(spec.id),specCommands.capabilities()]);const choices=next.profile.numeric?[next.profile.numeric,...caps.numeric_profiles]:caps.numeric_profiles;setCaptured(next);setCapabilities(caps);setProfiles(choices);setConflict(false);setError('');if(!preserve){form.setFieldsValue({filterable:next.filterable,kind:next.profile.kind,operators:next.profile.operators,delimiter:next.profile.delimiter,template:0});setDirty(false);}}catch(e){setError(String(e));}finally{setBusy(false);}}; + useEffect(()=>{void load();},[spec.id]); + const refreshWork=async()=>{if(!work)return;try{const [next,list]=await Promise.all([specCommands.normalizationWork(work.id),specCommands.workItems(work.id,page)]);setWork(next);setItems(list.items);setTotal(list.total);}catch(e){setError(String(e));}}; + useEffect(()=>{if(!work)return;void refreshWork();if(work.status!=='pending')return;const timer=setInterval(()=>void refreshWork(),2500);return()=>clearInterval(timer);},[work?.id,work?.status,page]); + const failure=(e:unknown)=>{if(e instanceof APIError&&e.status===409){setConflict(true);setError(text.conflict);}else{setError(String(e));}}; + const save=async(values:Fields)=>{if(!captured)return;setBusy(true);setError('');let result:SpecSearchProfile;try { + let profile:SearchProfile={version:1,kind:values.kind,text_rule:capabilities?.text_rule,operators:values.operators}; + if(values.kind==='multi_choice')profile.delimiter=values.delimiter; + if(values.kind==='numeric'){const numeric=profiles[values.template??0];profile={version:1,kind:'numeric',operators:values.operators,numeric:{...numeric,allowed_operators:values.operators}};} + result=await specCommands.configureSearchProfile(spec.id,captured.revision,{filterable:values.filterable,profile}); + }catch(e){failure(e);setBusy(false);return;} + setCaptured(result);setDirty(false);setMessage(text.saved);setConflict(false); + try{await onChanged();}catch{setError(text.refreshFailed);}finally{setBusy(false);}}; + const start=async()=>{if(!captured)return;setBusy(true);setError('');try{setWork(await specCommands.startNormalizationWork(spec.id,captured.revision));setPage(1);}catch(e){failure(e);}finally{setBusy(false);}}; + const allowed=kind==='numeric'?(profiles[template??0]?.allowed_operators??[]):kind==='text'?['equals','contains']:['equals']; + return {text.close}} width={760}> + {error&&}{message&&} + +
void save(v)} onValuesChange={changed=>{setDirty(true);if(changed.kind){form.setFieldsValue({operators:changed.kind==='text'?['equals','contains']:changed.kind==='numeric'?(profiles[template??0]?.allowed_operators??[]):['equals']});}if(changed.template!==undefined)form.setFieldsValue({operators:profiles[changed.template]?.allowed_operators});}}> + {text.filterable} + } + {kind==='numeric'&&<>({value,label:value}))}/> + {canEdit&&}{canEdit&&kind==='numeric'&&} + + {kind==='numeric'&&{text.manualPreserved}} + {work&&
{text.progress}: {work.status}{work.processed}/{work.total} · {text.failures}: {work.failed} · {text.manual}: {work.skipped}
} + ; +} diff --git a/web/ui/src/admin/TaxonomyPanel.tsx b/web/ui/src/admin/TaxonomyPanel.tsx index bc84fd4..317a552 100644 --- a/web/ui/src/admin/TaxonomyPanel.tsx +++ b/web/ui/src/admin/TaxonomyPanel.tsx @@ -1,3 +1,5 @@ +import {SpecSearchSettings} from "./SpecSearchSettings"; +import {specMessages} from "./locales"; import { useEffect, useState } from "react"; import { Button, Card, Checkbox, Form, Input, InputNumber, Modal, Popconfirm, Select, Space, Table, Tabs, Tag } from "antd"; import { useInvalidate, useList } from "@refinedev/core"; @@ -250,7 +252,8 @@ export function TaxonomyPanel({ locale, onError, onMessage }: Feedback & { local const { capabilities } = useAdminIdentity(); const canEdit = Boolean(capabilities["catalog.edit"]); const invalidate = useInvalidate(); - const [kind, setKind] = useState("manufacturer"); + const [searchSpec,setSearchSpec]=useState(); + const [kind, setKind] = useState("manufacturer"); const categoriesList = useList({ resource: "categories", pagination: { mode: "off" }, queryOptions: { retry: false } }); const dictionaryList = useList({ resource: "dictionary-entries", pagination: { mode: "off" }, meta: { kind }, queryOptions: { retry: false } }); const specsList = useList({ resource: "spec-definitions", pagination: { mode: "off" }, queryOptions: { retry: false } }); @@ -566,6 +569,7 @@ export function TaxonomyPanel({ locale, onError, onMessage }: Feedback & { local { title: text.unit, dataIndex: "preferred_unit", render: (value: string) => value || "—" }, { title: text.semanticVersion, dataIndex: "semantic_version" }, { title: text.filterable, dataIndex: "filterable", render: (value: boolean) => value ? text.yes : text.no }, + {title:specMessages(locale).settings,render:(_,row)=>}, { title: text.status, dataIndex: "status", render: (value: string) => value === "active" ? text.active : text.disabled }, ]} /> @@ -588,6 +592,7 @@ export function TaxonomyPanel({ locale, onError, onMessage }: Feedback & { local }, ]} /> + {searchSpec&&setSearchSpec(undefined)} onChanged={async()=>{await loadSpecs();}}/>} value); @@ -160,3 +160,5 @@ describe("Admin locale resources", () => { } }); }); + +it("spec workflow labels cover the ten built-in locales",()=>{const expected=Object.keys(specMessages("en-US"));for(const locale of ADMIN_LOCALE_OPTIONS){const messages=specMessages(locale.value);expect(Object.keys(messages)).toEqual(expected);for(const value of Object.values(messages))expect(value.trim().length).toBeGreaterThan(0);}}); diff --git a/web/ui/src/admin/locales.ts b/web/ui/src/admin/locales.ts index 9c9a4e1..1d621bc 100644 --- a/web/ui/src/admin/locales.ts +++ b/web/ui/src/admin/locales.ts @@ -65,3 +65,5 @@ export function antDesignLocale(locale: AdminLocale) { default: return enUS; } } + +export {specMessages} from "./specLocale"; diff --git a/web/ui/src/admin/specCommands.test.ts b/web/ui/src/admin/specCommands.test.ts new file mode 100644 index 0000000..7405116 --- /dev/null +++ b/web/ui/src/admin/specCommands.test.ts @@ -0,0 +1,12 @@ +import {afterEach,beforeEach,expect,it,vi} from 'vitest'; +vi.mock('./locales',()=>({normalizeAdminLocale:(locale:string)=>locale})); +beforeEach(()=>{vi.resetModules();vi.stubGlobal('document',{documentElement:{lang:'en-US'},querySelector:()=>({content:'csrf'})});}); +afterEach(()=>vi.unstubAllGlobals()); +it('configureSearchProfile preserves the captured revision and propagates 409 without retry',async()=>{ + const fetch=vi.fn().mockResolvedValue(new Response('{"error":"revision conflict"}',{status:409}));vi.stubGlobal('fetch',fetch); + const {specCommands}=await import('./specCommands'); + const profile={version:1,kind:'text' as const,text_rule:'unicode-fold-space-1',operators:['equals','contains']}; + await expect(specCommands.configureSearchProfile('spec/opaque',7,{filterable:true,profile})).rejects.toMatchObject({status:409}); + expect(fetch).toHaveBeenCalledTimes(1); + const [url,init]=fetch.mock.calls[0];expect(url).toBe('/admin/api/specs/spec%2Fopaque/search-profile');expect(JSON.parse(init.body)).toEqual({expected_revision:7,filterable:true,profile}); +}); diff --git a/web/ui/src/admin/specCommands.ts b/web/ui/src/admin/specCommands.ts new file mode 100644 index 0000000..3213cf2 --- /dev/null +++ b/web/ui/src/admin/specCommands.ts @@ -0,0 +1,27 @@ +import {api,postJSON} from './api'; +export type NumericProfile={quantity:string;semantic_role:string;allowed_shapes:string[];allowed_operators:string[];canonical_unit:string;declared_input_unit:string;numeric_format:string;schema_version:number;parser_version:string;unit_registry_version:string}; +export type SearchProfile={version:number;kind:'text'|'choice'|'multi_choice'|'numeric';text_rule?:string;delimiter?:string;operators:string[];numeric?:NumericProfile}; +export type SpecSearchProfile={spec_id:string;spec_semantic_version:number;revision:number;filterable:boolean;profile:SearchProfile}; +export type SpecCapabilities={version:number;text_rule:string;kinds:SearchProfile['kind'][];numeric_profiles:NumericProfile[]}; +export type NormalizationExpectation={product_revision:number;source_revision:number;spec_semantic_version:number;profile_revision:number;selection_revision:number}; +export type SourceSelection={product_id:string;spec_id:string;spec_value_id:string;revision:number}; +export type NormalizationContext={spec_value_id:string;product_id:string;spec_id:string;raw:string;source_locale:string;profile:NumericProfile;expected:NormalizationExpectation;source_selection:SourceSelection;selection:{selected_normalized_value_id:string;preference:string;revision:number}}; +export type NormalizationOutcome={normalized_value_id:string;reason_code?:string;product_revision:number;selection_revision:number;publication_pending:boolean}; +export type NormalizationWork={id:string;spec_id:string;status:string;profile_revision:number;semantic_version:number;processed:number;failed:number;skipped:number;total:number}; +export type WorkItem={spec_value_id:string;state:string;reason:string}; +const specPath=(id:string)=>`/admin/api/specs/${encodeURIComponent(id)}`; +const valuePath=(id:string)=>`/admin/api/spec-values/${encodeURIComponent(id)}`; +export const specCommands={ + sourceState:async(productID:string)=>{const path=`/admin/api/products/${encodeURIComponent(productID)}`;const [product,values]=await Promise.all([api<{revision:number}>(path),api(`${path}/spec-values`)]);return {product,values};}, + capabilities:()=>api('/admin/api/spec-search-capabilities'), + searchProfile:(id:string)=>api(`${specPath(id)}/search-profile`), + configureSearchProfile:(id:string,expectedRevision:number,desired:Pick)=>postJSON(`${specPath(id)}/search-profile`,{expected_revision:expectedRevision,...desired}), + startNormalizationWork:(id:string,expectedRevision:number)=>postJSON(`${specPath(id)}/normalization-work`,{expected_revision:expectedRevision}), + normalizationWork:(id:string)=>api(`/admin/api/spec-normalization-work/${encodeURIComponent(id)}`), + workItems:(id:string,page:number)=>api<{items:WorkItem[];total:number}>(`/admin/api/spec-normalization-work/${encodeURIComponent(id)}/items?page=${page}&page_size=20`), + context:(id:string)=>api(`${valuePath(id)}/normalization-context`), + normalize:(id:string,expected:NormalizationExpectation)=>postJSON(`${valuePath(id)}/normalize`,{expected}), + adoptManual:(id:string,expected:NormalizationExpectation,value:unknown)=>postJSON(`${valuePath(id)}/normalized`,{expected,value_json:JSON.stringify(value)}), + selectAutomatic:(id:string,expected:NormalizationExpectation,candidateID:string)=>postJSON(`${valuePath(id)}/normalization/automatic`,{expected,candidate_id:candidateID}), + selectSource:(productID:string,input:{spec_id:string;spec_value_id:string;expected_product_revision:number;expected_source_revision:number;expected_source_selection_revision:number})=>postJSON(`/admin/api/products/${encodeURIComponent(productID)}/spec-source`,input), +}; diff --git a/web/ui/src/admin/specLocale.ts b/web/ui/src/admin/specLocale.ts new file mode 100644 index 0000000..eb2b072 --- /dev/null +++ b/web/ui/src/admin/specLocale.ts @@ -0,0 +1,4 @@ +import type {AdminLocale} from "./locales"; +const keys=["settings", "filterable", "kind", "operators", "delimiter", "profile", "save", "saved", "conflict", "refresh", "refreshFailed", "start", "progress", "failures", "manualPreserved", "normalization", "source", "normalize", "manual", "automatic", "shape", "value", "lower", "upper", "add", "remove", "inclusive", "unit", "condition", "selected", "reason", "close", "recheck", "nominal", "amount"] as const; +const resources:Record={"en-US": ["Search settings", "Filterable", "Data type", "Operators", "Literal separator", "Quantity and purpose", "Save", "Saved; awaiting public generation.", "Revision conflict. Your inputs are preserved. Recheck before saving.", "Refresh", "Saved, but refresh failed. Check the saved record.", "Process selected sources", "Progress", "Items and reasons", "Manual preferences are preserved, including stale ones.", "Normalization and adoption", "Raw source", "Normalize", "Adopt manual value", "Select automatic candidate", "Value shape", "Value", "Lower bound", "Upper bound", "Add interval", "Remove", "Inclusive", "Unit", "Condition (optional)", "Selected", "Reason", "Close", "Recheck revisions", "Nominal value", "Tolerance amount"], "zh-TW": ["搜尋設定", "可篩選", "資料類型", "運算子", "固定分隔符", "量綱與用途", "儲存", "已儲存,等待公開生成。", "版本衝突;輸入已保留。請重新檢查後再儲存。", "重新整理", "已儲存,但重新整理失敗;請檢查已存記錄。", "處理已選來源", "處理進度", "項目與原因", "人工偏好會保留,包括已過期的人工值。", "正規化與採用", "原始值來源", "正規化", "採用人工值", "選擇自動候選", "數值形狀", "數值", "下限", "上限", "新增區間", "移除", "包含端點", "單位", "條件(選填)", "已選擇", "原因", "關閉", "重新檢查版本", "標稱值", "容差幅度"], "zh-CN": ["搜索设置", "可筛选", "数据类型", "运算符", "固定分隔符", "量纲与用途", "保存", "已保存,等待公开生成。", "版本冲突;输入已保留。请重新检查后再保存。", "刷新", "已保存,但刷新失败;请检查已存记录。", "处理已选来源", "处理进度", "项目与原因", "保留人工偏好,包括已过期的人工值。", "规范化与采用", "原始值来源", "规范化", "采用人工值", "选择自动候选", "数值形状", "数值", "下限", "上限", "新增区间", "移除", "包含端点", "单位", "条件(可选)", "已选择", "原因", "关闭", "重新检查版本", "标称值", "容差幅度"], "ja-JP": ["検索設定", "絞り込み可能", "データ型", "演算子", "固定区切り文字", "物理量と用途", "保存", "保存済み。公開生成を待っています。", "リビジョンが競合しています。入力は保持されています。再確認してください。", "更新", "保存済みですが更新に失敗しました。保存内容を確認してください。", "選択したソースを処理", "進捗", "項目と理由", "期限切れを含め手動の選択を保持します。", "正規化と採用", "元の値のソース", "正規化", "手動値を採用", "自動候補を選択", "値の形式", "値", "下限", "上限", "区間を追加", "削除", "端点を含む", "単位", "条件(任意)", "選択済み", "理由", "閉じる", "リビジョンを再確認", "公称値", "許容差"], "ko-KR": ["검색 설정", "필터 가능", "데이터 유형", "연산자", "고정 구분자", "물리량 및 용도", "저장", "저장됨. 공개 생성 대기 중입니다.", "버전 충돌입니다. 입력은 유지됩니다. 다시 확인하세요.", "새로 고침", "저장했지만 새로 고침에 실패했습니다. 저장된 기록을 확인하세요.", "선택된 소스 처리", "진행 상황", "항목 및 사유", "오래된 수동 값을 포함한 수동 선택을 유지합니다.", "정규화 및 채택", "원본 값 소스", "정규화", "수동 값 채택", "자동 후보 선택", "값 형식", "값", "하한", "상한", "구간 추가", "제거", "끝점 포함", "단위", "조건 (선택)", "선택됨", "사유", "닫기", "버전 다시 확인", "공칭 값", "허용 오차"], "de-DE": ["Sucheinstellungen", "Filterbar", "Datentyp", "Operatoren", "Festes Trennzeichen", "Größe und Zweck", "Speichern", "Gespeichert; öffentliche Generierung steht aus.", "Versionskonflikt. Eingaben bleiben erhalten. Bitte erneut prüfen.", "Aktualisieren", "Gespeichert, aber Aktualisierung fehlgeschlagen. Datensatz prüfen.", "Ausgewählte Quellen verarbeiten", "Fortschritt", "Einträge und Gründe", "Manuelle Auswahl bleibt auch bei veralteten Werten erhalten.", "Normalisierung und Übernahme", "Rohwertquelle", "Normalisieren", "Manuellen Wert übernehmen", "Automatischen Kandidaten wählen", "Wertform", "Wert", "Untergrenze", "Obergrenze", "Intervall hinzufügen", "Entfernen", "Endpunkt einschließen", "Einheit", "Bedingung (optional)", "Ausgewählt", "Grund", "Schließen", "Versionen erneut prüfen", "Nennwert", "Toleranzbetrag"], "fr-FR": ["Paramètres de recherche", "Filtrable", "Type de données", "Opérateurs", "Séparateur fixe", "Grandeur et usage", "Enregistrer", "Enregistré ; génération publique en attente.", "Conflit de version. Vos saisies sont conservées. Vérifiez à nouveau.", "Actualiser", "Enregistré, mais actualisation échouée. Vérifiez la fiche.", "Traiter les sources sélectionnées", "Progression", "Éléments et motifs", "Les préférences manuelles sont conservées, même obsolètes.", "Normalisation et adoption", "Source de la valeur brute", "Normaliser", "Adopter la valeur manuelle", "Choisir un candidat automatique", "Forme de valeur", "Valeur", "Borne inférieure", "Borne supérieure", "Ajouter une plage", "Retirer", "Inclure la borne", "Unité", "Condition (facultative)", "Sélectionné", "Motif", "Fermer", "Revérifier les versions", "Valeur nominale", "Tolérance"], "it-IT": ["Impostazioni ricerca", "Filtrabile", "Tipo di dati", "Operatori", "Separatore fisso", "Grandezza e scopo", "Salva", "Salvato; generazione pubblica in attesa.", "Conflitto di versione. I dati inseriti sono conservati. Ricontrolla.", "Aggiorna", "Salvato, ma aggiornamento non riuscito. Controlla il record.", "Elabora le fonti selezionate", "Avanzamento", "Elementi e motivi", "Le preferenze manuali sono conservate anche se obsolete.", "Normalizzazione e adozione", "Fonte del valore originale", "Normalizza", "Adotta valore manuale", "Seleziona candidato automatico", "Forma del valore", "Valore", "Limite inferiore", "Limite superiore", "Aggiungi intervallo", "Rimuovi", "Includi estremo", "Unità", "Condizione (facoltativa)", "Selezionato", "Motivo", "Chiudi", "Ricontrolla versioni", "Valore nominale", "Tolleranza"], "es-ES": ["Configuración de búsqueda", "Filtrable", "Tipo de datos", "Operadores", "Separador fijo", "Magnitud y propósito", "Guardar", "Guardado; generación pública pendiente.", "Conflicto de versión. Se conservan las entradas. Comprueba de nuevo.", "Actualizar", "Guardado, pero falló la actualización. Comprueba el registro.", "Procesar fuentes seleccionadas", "Progreso", "Elementos y motivos", "Se conservan las preferencias manuales, incluso obsoletas.", "Normalización y adopción", "Fuente del valor original", "Normalizar", "Adoptar valor manual", "Elegir candidato automático", "Forma del valor", "Valor", "Límite inferior", "Límite superior", "Añadir intervalo", "Quitar", "Incluir extremo", "Unidad", "Condición (opcional)", "Seleccionado", "Motivo", "Cerrar", "Revisar versiones", "Valor nominal", "Tolerancia"], "pt-BR": ["Configurações de pesquisa", "Filtrável", "Tipo de dados", "Operadores", "Separador fixo", "Grandeza e finalidade", "Salvar", "Salvo; geração pública pendente.", "Conflito de versão. Suas entradas foram preservadas. Confira novamente.", "Atualizar", "Salvo, mas a atualização falhou. Confira o registro.", "Processar fontes selecionadas", "Progresso", "Itens e motivos", "As preferências manuais são preservadas, mesmo obsoletas.", "Normalização e adoção", "Fonte do valor original", "Normalizar", "Adotar valor manual", "Selecionar candidato automático", "Formato do valor", "Valor", "Limite inferior", "Limite superior", "Adicionar intervalo", "Remover", "Incluir extremo", "Unidade", "Condição (opcional)", "Selecionado", "Motivo", "Fechar", "Rever versões", "Valor nominal", "Tolerância"]}; +export function specMessages(locale:AdminLocale):Record<(typeof keys)[number],string>{return Object.fromEntries(keys.map((key,index)=>[key,resources[locale][index]])) as Record<(typeof keys)[number],string>;} diff --git a/web/ui/src/admin/specManualValue.test.ts b/web/ui/src/admin/specManualValue.test.ts new file mode 100644 index 0000000..41b0024 --- /dev/null +++ b/web/ui/src/admin/specManualValue.test.ts @@ -0,0 +1,6 @@ +import {expect,it} from 'vitest'; +import {manualValue} from './specManualValue'; +import type {NumericProfile} from './specCommands'; +const profile:NumericProfile={quantity:'voltage',semantic_role:'nominal',allowed_shapes:['tolerance','interval_set'],allowed_operators:['='],canonical_unit:'V',declared_input_unit:'V',numeric_format:'decimal-dot',schema_version:1,parser_version:'catalog-parser-2',unit_registry_version:'catalog-units-2'}; +it('manual tolerance uses exact decimal arithmetic',()=>{expect(manualValue(profile,{shape:'tolerance',nominal:'0.1',amount:'10',tolerance_type:'relative'})).toMatchObject({tolerance:{interval:{lower:'0.09',upper:'0.11'}}});}); +it('manual interval sets retain the gap',()=>{expect(manualValue(profile,{shape:'interval_set',intervals:[{lower:'3',upper:'4',lower_inclusive:true,upper_inclusive:false},{lower:'5',upper:'6',lower_inclusive:true,upper_inclusive:true}]})).toMatchObject({intervals:[{lower:'3',upper:'4',upper_inclusive:false},{lower:'5',upper:'6'}]});}); diff --git a/web/ui/src/admin/specManualValue.ts b/web/ui/src/admin/specManualValue.ts new file mode 100644 index 0000000..d46ce25 --- /dev/null +++ b/web/ui/src/admin/specManualValue.ts @@ -0,0 +1,31 @@ +import type {NumericProfile} from './specCommands'; +export type ManualInterval={lower:string;upper:string;lower_inclusive:boolean;upper_inclusive:boolean}; +export type ManualFields={shape:string;value?:string;values?:string;intervals?:ManualInterval[];nominal?:string;amount?:string;tolerance_type?:'relative'|'absolute';direction?:'lower'|'upper';inclusive?:boolean;condition?:string}; +function decimal(raw:string|undefined):{n:bigint;s:number} { + if(!raw||raw.length>128||!/^[-+]?\d+(\.\d+)?$/.test(raw.trim()))throw new Error('Invalid decimal'); + const [whole,fraction='']=raw.trim().split('.');return {n:BigInt(whole+fraction),s:fraction.length}; +} +function render(n:bigint,s:number):string {const sign=n<0n?'-':'';let digits=(n<0n?-n:n).toString().padStart(s+1,'0');if(s)digits=digits.slice(0,-s)+'.'+digits.slice(-s);if(digits.includes('.'))digits=digits.replace(/0+$/,'').replace(/\.$/,'');return sign+digits;} +function exact(raw:string|undefined):string{const d=decimal(raw);return render(d.n,d.s);} +export function manualValue(profile:NumericProfile,fields:ManualFields):Record { + if(!profile.allowed_shapes.includes(fields.shape))throw new Error('Unsupported shape'); + const result:Record={schema_version:profile.schema_version,quantity:profile.quantity,semantic_role:profile.semantic_role,shape:fields.shape,unit:profile.canonical_unit,unit_registry_version:profile.unit_registry_version,context:fields.condition?.trim()?{kind:'conditional',raw:fields.condition.trim()}:{kind:'unconditional'}}; + switch(fields.shape){ + case 'scalar':result.scalar=exact(fields.value);break; + case 'discrete_set':result.values=(fields.values??'').split(',').map(exact);break; + case 'interval_set':result.intervals=(fields.intervals??[]).map(i=>({...i,lower:exact(i.lower),upper:exact(i.upper)}));break; + case 'bound_claim':result.bound={direction:profile.semantic_role==='error_magnitude'?'upper':fields.direction??'upper',value:exact(fields.value),inclusive:fields.inclusive??true};break; + case 'tolerance':{ + const nominal=decimal(fields.nominal),amount=decimal(fields.amount); + let offset=amount; + if(fields.tolerance_type==='relative')offset={n:(nominal.n<0n?-nominal.n:nominal.n)*amount.n,s:nominal.s+amount.s+2}; + const scale=Math.max(nominal.s,offset.s),n=nominal.n*10n**BigInt(scale-nominal.s),delta=offset.n*10n**BigInt(scale-offset.s); + result.tolerance={nominal:render(nominal.n,nominal.s),amount:render(amount.n,amount.s),type:fields.tolerance_type??'absolute',interval:{lower:render(n-delta,scale),upper:render(n+delta,scale),lower_inclusive:true,upper_inclusive:true}};break; + } + default:throw new Error('Unsupported shape'); + } + return result; +} +export function factLabel(encoded:string|undefined):string { + if(!encoded)return '—';try{const v=JSON.parse(encoded);const payload=v.scalar??v.values?.join(', ')??v.intervals?.map((i:ManualInterval)=>`${i.lower_inclusive?'[':'('}${i.lower}, ${i.upper}${i.upper_inclusive?']':')'}`).join(' ∪ ')??(v.bound?`${v.bound.direction==='upper'?(v.bound.inclusive?'≤':'<'):(v.bound.inclusive?'≥':'>')} ${v.bound.value}`:v.tolerance?`${v.tolerance.nominal} ± ${v.tolerance.amount}${v.tolerance.type==='relative'?' %':''}`:'—');return `${payload} ${v.unit}${v.context?.kind==='conditional'?` (${v.context.raw})`:''}`;}catch{return '—';} +} diff --git a/web/ui/src/admin/types.ts b/web/ui/src/admin/types.ts index 927feec..bc0ba9e 100644 --- a/web/ui/src/admin/types.ts +++ b/web/ui/src/admin/types.ts @@ -146,6 +146,7 @@ export type NormalizedValue = { failure_reason?: string; }; export type SpecValueDetail = { + source_selection: import("./specCommands").SourceSelection; value: SpecValue; normalized: NormalizedValue[]; }; diff --git a/web/ui/src/public/style.css b/web/ui/src/public/style.css index 33f5ade..2afb710 100644 --- a/web/ui/src/public/style.css +++ b/web/ui/src/public/style.css @@ -464,3 +464,23 @@ code { .row-more-control { display: inline-flex; } .rfq-selection-tray { align-items: stretch; flex-direction: column; width: 100%; } } + +/* The semantic GET form remains usable without enhancement. */ +.catalog-workspace { display: grid; grid-template-columns: minmax(14rem, 18rem) minmax(0, 1fr); gap: 1.5rem; align-items: start; } +.catalog-results, .catalog-filter-sidebar { min-width: 0; } +.catalog-filter-sidebar .catalog-filters { display: grid; gap: 1rem; margin: 0; padding: 1rem; } +.catalog-filter-sidebar summary { display: list-item; cursor: pointer; font-weight: 700; padding: .75rem; } +.catalog-filter-field { min-width: 0; margin: 0; padding: .65rem; border: 1px solid #c9d8df; border-radius: .4rem; } +.catalog-filter-field legend { padding-inline: .25rem; font-weight: 600; overflow-wrap: anywhere; } +.catalog-filter-field label { display: block; margin-block: .4rem; font-size: .9rem; } +.catalog-filter-sidebar input, .catalog-filter-sidebar select { width: 100%; min-width: 0; max-width: 100%; box-sizing: border-box; } +.catalog-filter-sidebar select[multiple] { min-height: 5rem; } +.filter-range { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: .5rem; } +.filter-help { font-size: .8rem; line-height: 1.5; color: #4c6170; } +.filter-error { color: #9b231c; padding: .65rem; border: 1px solid currentColor; overflow-wrap: anywhere; } +.catalog-filter-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; } +.catalog-filter-sidebar :is(input, select, button, a):focus-visible { outline: 3px solid #147985; outline-offset: 2px; } +@media (max-width: 1024px) { .catalog-workspace { grid-template-columns: minmax(0, 1fr); } .catalog-filter-sidebar .catalog-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); } .catalog-filter-actions { grid-column: 1 / -1; } } +@media (max-width: 640px) { .catalog-filter-sidebar .catalog-filters { grid-template-columns: minmax(0, 1fr); } } + +.catalog-query-form, .catalog-field-form { display: grid; min-width: 0; gap: .5rem; align-content: start; }