{
  "name": "METAR/SPECI (US)",
  "version": "2.0.0",
  "description": "METAR/SPECI: US (NOAA) variant with altimeter in inches (A) and visibility in statute miles (SM)",
  "tokens": {
    "identifier": {
      "pattern": "^(METAR|SPECI)$",
      "category": "keyword",
      "description": "Message type identifier"
    },
    "correction": {
      "pattern": "^COR$",
      "category": "keyword",
      "description": "Correction indicator for corrected report"
    },
    "icao": {
      "pattern": "^[A-Z]{4}$",
      "category": "location",
      "description": "ICAO location indicator",
      "placeholder": { "value": "AAAA", "editable": [{ "start": 0, "end": 4 }] }
    },
    "datetime": {
      "pattern": "^\\d{6}Z$",
      "category": "datetime",
      "description": "Day and time UTC",
      "validator": "DDHHmmZ",
      "placeholder": {
        "value": "000000Z",
        "editable": [
          {
            "start": 0,
            "end": 2
          },
          {
            "start": 2,
            "end": 4
          },
          {
            "start": 4,
            "end": 6
          }
        ]
      }
    },
    "nil": {
      "pattern": "^NIL$",
      "category": "keyword",
      "description": "Missing report indicator"
    },
    "auto": {
      "pattern": "^AUTO$",
      "category": "keyword",
      "description": "Fully automated observation without human intervention"
    },
    "windDirection": {
      "pattern": "^(VRB|\\d{3})$",
      "category": "input",
      "description": "Wind direction"
    },
    "windDirectionSpeed": {
      "pattern": "^(VRB|\\d{3})P?\\d{2,3}$",
      "category": "input",
      "description": "Wind direction + speed",
      "appendToPrevious": true
    },
    "windDirectionSpeedGust": {
      "pattern": "^(VRB|\\d{3})P?\\d{2,3}GP?\\d{2,3}$",
      "category": "input",
      "description": "Wind direction + speed + gust",
      "appendToPrevious": true,
      "placeholder": {
        "value": "G00",
        "editable": [
          {
            "start": 1,
            "end": 3
          }
        ]
      }
    },
    "wind": {
      "pattern": "^(VRB|\\d{3})P?\\d{2,3}(GP?\\d{2,3})?(KT|MPS)$",
      "category": "measurement",
      "description": "Complete wind group"
    },
    "windNotAvailable": {
      "pattern": "^\\/{5}(KT|MPS)$",
      "category": "unavailable",
      "description": "Wind not available from automatic system (AUTO)"
    },
    "windVariation": {
      "pattern": "^\\d{3}V\\d{3}$",
      "category": "measurement",
      "description": "Significant direction variations",
      "placeholder": {
        "value": "000V000",
        "editable": [
          { "start": 0, "end": 3, "hint": "Min direction (°)" },
          { "start": 4, "end": 7, "hint": "Max direction (°)" }
        ]
      },
      "excludeWhen": { "hasToken": "^VRB\\d+" }
    },
    "cavok": {
      "pattern": "^CAVOK$",
      "category": "status",
      "description": "Ceiling And Visibility OK - vis ≥10km, no cloud <1500m/MSA, no CB/TCU, no sig wx",
      "appendToPrevious": true
    },
    "visibility": {
      "pattern": "^\\d{4}$",
      "category": "measurement",
      "description": "Prevailing visibility in metres",
      "placeholder": {
        "value": "0000",
        "editable": [
          {
            "start": 0,
            "end": 4
          }
        ]
      }
    },
    "visibilityNotAvailable": {
      "pattern": "^\\/{4}$",
      "category": "unavailable",
      "description": "Visibility not available from automatic system (AUTO)"
    },
    "visibilitySM": {
      "pattern": "^(M?\\d+(\\/\\d+)?|\\d+\\/\\d+)SM$",
      "category": "measurement",
      "description": "Visibility in statute miles (regional - North America)"
    },
    "visibilitySMNotAvailable": {
      "pattern": "^\\/{4}SM$",
      "category": "unavailable",
      "description": "Visibility in statute miles not available (AUTO - North America)"
    },
    "directionalVisibility": {
      "pattern": "^\\d{4}(N|NE|E|SE|S|SW|W|NW)$",
      "category": "measurement",
      "description": "Minimum visibility with direction"
    },
    "rvr": {
      "pattern": "^R\\d{2}[LCR]?\\/[PM]?\\d{4}(V[PM]?\\d{4})?[UDN]?$",
      "category": "measurement",
      "description": "Runway Visual Range with P/M prefix and U/D/N tendency",
      "placeholder": {
        "value": "R00/0000",
        "editable": [
          {
            "start": 1,
            "end": 3
          },
          {
            "start": 4,
            "end": 8
          }
        ]
      }
    },
    "weather": {
      "pattern": "^[-+]?(VC)?(MI|PR|BC|DR|BL|SH|TS|FZ)?(DZ|RA|SN|SG|IC|PL|GR|GS|UP)*(BR|FG|FU|VA|DU|SA|HZ|PY)?(PO|SQ|FC|SS|DS)?$",
      "category": "phenomenon",
      "description": "Present weather - intensity/proximity + descriptor + phenomena",
      "excludeWhen": [
        { "maxCount": 3, "countTypes": ["weather", "weatherSpecial"] },
        { "noDuplicates": true }
      ]
    },
    "weatherSpecial": {
      "pattern": "^(VCSH|VCTS|VCFG|VCPO|VCFC|VCDS|VCSS|VCBLDU|VCBLSA|VCBLSN|VCVA)$",
      "category": "phenomenon",
      "description": "Weather phenomena in vicinity",
      "excludeWhen": [
        { "maxCount": 3, "countTypes": ["weather", "weatherSpecial"] },
        { "noDuplicates": true }
      ]
    },
    "noWeather": {
      "pattern": "^\\/{2}$",
      "category": "phenomenon",
      "description": "Present weather not observable by automatic system"
    },
    "cloudAmount": {
      "pattern": "^(FEW|SCT|BKN|OVC)$",
      "category": "measurement",
      "description": "Cloud amount (partial - awaiting height)",
      "excludeWhen": { "maxCount": 4, "countTypes": ["cloudBase", "cloud", "cloudUnknown"] }
    },
    "cloudBase": {
      "pattern": "^(FEW|SCT|BKN|OVC)(\\d{3})$",
      "category": "measurement",
      "description": "Cloud layer - amount + height without type",
      "appendToPrevious": true,
      "placeholder": {
        "value": "000",
        "editable": [
          {
            "start": 0,
            "end": 3
          }
        ]
      }
    },
    "cloud": {
      "pattern": "^(FEW|SCT|BKN|OVC)(\\d{3})(CB|TCU|\\/\\/\\/)$",
      "category": "measurement",
      "description": "Cloud layer - amount + height in 100s ft + type",
      "appendToPrevious": true
    },
    "cloudUnknown": {
      "pattern": "^(FEW|SCT|BKN|OVC)\\/\\/\\/(CB|TCU|\\/\\/\\/)?$",
      "category": "unavailable",
      "description": "Cloud layer with unknown height (AUTO)"
    },
    "verticalVisibility": {
      "pattern": "^VV(\\d{3}|\\/\\/\\/)$",
      "category": "measurement",
      "description": "Vertical visibility in 100s ft when sky obscured",
      "placeholder": {
        "value": "VV000",
        "editable": [
          {
            "start": 2,
            "end": 5
          }
        ]
      }
    },
    "nsc": {
      "pattern": "^NSC$",
      "category": "status",
      "description": "No Significant Cloud - no cloud <1500m/MSA, no CB/TCU"
    },
    "ncd": {
      "pattern": "^NCD$",
      "category": "status",
      "description": "No Cloud Detected by automatic observing system"
    },
    "skyClear": {
      "pattern": "^(SKC|CLR)$",
      "category": "status",
      "description": "Sky Clear (regional usage)"
    },
    "temperature": {
      "pattern": "^M?\\d{2}\\/M?\\d{2}$",
      "category": "measurement",
      "description": "Temperature/Dewpoint in °C, M for minus",
      "placeholder": {
        "value": "00/00",
        "editable": [
          { "start": 0, "end": 2, "hint": "Air temp" },
          { "start": 3, "end": 5, "hint": "Dew point" }
        ]
      }
    },
    "temperatureDewpointMissing": {
      "pattern": "^M?\\d{2}\\/{3}$",
      "category": "unavailable",
      "description": "Temperature with missing dewpoint (dewpoint not available)"
    },
    "temperatureNotAvailable": {
      "pattern": "^\\/{5}$",
      "category": "unavailable",
      "description": "Temperature/Dewpoint not available from automatic system (AUTO)"
    },
    "pressureInches": {
      "pattern": "^A\\d{4}$",
      "category": "measurement",
      "description": "Altimeter setting in inches of mercury (inHg)",
      "placeholder": { "value": "A0000", "editable": [{ "start": 1, "end": 5 }] }
    },
    "pressureInchesNotAvailable": {
      "pattern": "^A\\/{4}$",
      "category": "unavailable",
      "description": "Altimeter setting not available (AUTO)"
    },
    "recentWeather": {
      "pattern": "^RE(RASN|FZDZ|FZRA|DZ|SHRA|RA|SHSN|SN|SG|SHGR|SHGS|BLSN|SS|DS|TSRA|TSSN|TSGR|TSGS|TS|FC|VA|PL|UP|FZUP|TSUP|SHUP|//)$",
      "category": "phenomenon",
      "description": "Recent weather since last report or last hour",
      "excludeWhen": [
        { "maxCount": 3 },
        { "noDuplicates": true }
      ]
    },
    "windshear": {
      "pattern": "^WS$",
      "category": "status",
      "description": "Wind shear indicator"
    },
    "windshearRunway": {
      "pattern": "^R\\d{2}[LCR]?$",
      "category": "status",
      "description": "Wind shear runway designator",
      "placeholder": {
        "value": "R00",
        "editable": [
          {
            "start": 1,
            "end": 3
          }
        ]
      }
    },
    "windshearAllRwy": {
      "pattern": "^ALL$",
      "category": "status",
      "description": "Wind shear ALL RWY indicator"
    },
    "rwy": {
      "pattern": "^RWY$",
      "category": "status",
      "description": "RWY keyword for WS ALL RWY"
    },
    "seaTemp": {
      "pattern": "^W(M?\\d{2}\\/|\\/\\/\\/)$",
      "category": "measurement",
      "description": "Sea-surface temperature"
    },
    "seaStateValue": {
      "pattern": "^S[0-9/]$",
      "category": "measurement",
      "description": "State of the sea",
      "appendToPrevious": true
    },
    "waveHeightValue": {
      "pattern": "^H(\\d{1,3}|\\/\\/\\/)$",
      "category": "measurement",
      "description": "Significant wave height",
      "appendToPrevious": true
    },
    "seaState": {
      "pattern": "^W(M?\\d{2}\\/|\\/\\/\\/)(S[0-9/]|H(\\d{1,3}|\\/\\/\\/))$",
      "category": "measurement",
      "description": "Sea-surface temperature and state of sea or wave height"
    },
    "waveHeight": {
      "pattern": "^W(M?\\d{2}\\/|\\/\\/\\/)H\\d{1,3}$",
      "category": "measurement",
      "description": "Sea-surface temperature and significant wave height",
      "placeholder": { "value": "W00/H00", "editable": [{ "start": 1, "end": 3, "hint": "Sea temp" }, { "start": 5, "end": 7, "hint": "Wave ht" }] }
    },
    "runwayState": {
      "pattern": "^R\\d{2}[LCR]?\\/([0-9\\/]{6}|CLRD\\/\\/|SNOCLO)$",
      "category": "measurement",
      "description": "Runway state"
    },
    "nosig": {
      "pattern": "^NOSIG$",
      "category": "trend",
      "description": "No significant change expected in next 2 hours"
    },
    "becmg": {
      "pattern": "^BECMG$",
      "category": "trend",
      "description": "Becoming - change expected at regular/irregular rate"
    },
    "tempo": {
      "pattern": "^TEMPO$",
      "category": "trend",
      "description": "Temporary fluctuations <1h each, <50% of period"
    },
    "trendTimeFM": {
      "pattern": "^FM\\d{4}$",
      "category": "datetime",
      "description": "Trend time indicator FM (From)",
      "placeholder": {
        "value": "FM0000",
        "editable": [
          {
            "start": 2,
            "end": 6
          }
        ]
      }
    },
    "trendTimeTL": {
      "pattern": "^TL\\d{4}$",
      "category": "datetime",
      "description": "Trend time indicator TL (Until)",
      "placeholder": {
        "value": "TL0000",
        "editable": [
          {
            "start": 2,
            "end": 6
          }
        ]
      }
    },
    "trendTimeAT": {
      "pattern": "^AT\\d{4}$",
      "category": "datetime",
      "description": "Trend time indicator AT (At)",
      "placeholder": {
        "value": "AT0000",
        "editable": [
          {
            "start": 2,
            "end": 6
          }
        ]
      }
    },
    "trendWindDirectionKT": { "pattern": "^\\d{3}$", "category": "trend", "description": "Trend wind direction (KT)" },
    "trendWindDirectionMPS": { "pattern": "^\\d{3}$", "category": "trend", "description": "Trend wind direction (MPS)" },
    "trendWindDirectionSpeedKT": { "pattern": "^\\d{3}P?\\d{2,3}$", "category": "trend", "description": "Trend wind direction + speed (KT)", "appendToPrevious": true },
    "trendWindDirectionSpeedMPS": { "pattern": "^\\d{3}P?\\d{2,3}$", "category": "trend", "description": "Trend wind direction + speed (MPS)", "appendToPrevious": true },
    "trendWindKT": { "pattern": "^\\d{3}P?\\d{2,3}(GP?\\d{2,3})?KT$", "category": "trend", "description": "Complete trend wind (KT)", "appendToPrevious": true },
    "trendWindMPS": { "pattern": "^\\d{3}P?\\d{2,3}(GP?\\d{2,3})?MPS$", "category": "trend", "description": "Complete trend wind (MPS)", "appendToPrevious": true },
    "trendWind": { "pattern": "^\\d{3}P?\\d{2,3}(GP?\\d{2,3})?(KT|MPS)$", "category": "trend", "description": "Trend forecast wind (no VRB allowed)" },
    "trendCavok": { "pattern": "^CAVOK$", "category": "trend", "description": "Trend CAVOK - Ceiling And Visibility OK" },
    "trendVisibility": { "pattern": "^\\d{4}$", "category": "trend", "description": "Trend forecast visibility", "placeholder": { "value": "0000", "editable": [{ "start": 0, "end": 4 }] } },
    "trendWeather": { "pattern": "^[-+]?(VC)?(MI|PR|BC|DR|BL|SH|TS|FZ)?(DZ|RA|SN|SG|IC|PL|GR|GS|UP)*(BR|FG|FU|VA|DU|SA|HZ|PY)?(PO|SQ|FC|SS|DS)?$", "category": "trend", "description": "Trend forecast weather" },
    "trendNsw": { "pattern": "^NSW$", "category": "trend", "description": "No Significant Weather - end of weather phenomena in trend" },
    "trendCloud": { "pattern": "^(FEW|SCT|BKN|OVC)(\\d{3})(CB|TCU)?$|^VV(\\d{3}|\\/\\/\\/)$|^NSC$", "category": "trend", "description": "Trend forecast cloud" },
    "remark": {
      "pattern": "^RMK$",
      "category": "free-text",
      "description": "Remarks section indicator"
    },
    "remarkContent": {
      "pattern": "^[A-Z0-9\\/]+$",
      "category": "free-text",
      "description": "Remark content (national use)"
    }
  },
  "structure": [
    {
      "id": "identifier",
      "cardinality": [
        1,
        1
      ]
    },
    {
      "id": "correction",
      "cardinality": [
        0,
        1
      ]
    },
    {
      "id": "icao",
      "cardinality": [
        1,
        1
      ]
    },
    {
      "id": "datetime",
      "cardinality": [
        1,
        1
      ]
    },
    {
      "id": "mainContent",
      "cardinality": [
        1,
        1
      ],
      "oneOf": [
        {
          "id": "nil",
          "terminal": true,
          "cardinality": [
            1,
            1
          ]
        },
        {
          "id": "body",
          "cardinality": [
            1,
            1
          ],
          "sequence": [
            {
              "id": "auto",
              "cardinality": [
                0,
                1
              ]
            },
            {
              "id": "windGroup",
              "cardinality": [
                1,
                1
              ],
              "oneOf": [
                {
                  "id": "windNotAvailable",
                  "cardinality": [
                    1,
                    1
                  ]
                },
                {
                  "id": "wind",
                  "cardinality": [
                    1,
                    1
                  ]
                },
                {
                  "id": "windDirectionSpeedGust",
                  "cardinality": [
                    1,
                    1
                  ]
                },
                {
                  "id": "windDirectionSpeed",
                  "cardinality": [
                    1,
                    1
                  ]
                },
                {
                  "id": "windDirection",
                  "cardinality": [
                    1,
                    1
                  ]
                }
              ]
            },
            {
              "id": "windVariation",
              "cardinality": [
                0,
                1
              ]
            },
            {
              "id": "visibilityGroup",
              "cardinality": [
                1,
                1
              ],
              "oneOf": [
                {
                  "id": "cavok",
                  "cardinality": [
                    1,
                    1
                  ]
                },
                {
                  "id": "visibilityDetails",
                  "cardinality": [
                    1,
                    1
                  ],
                  "sequence": [
                    {
                      "id": "visibility",
                      "cardinality": [
                        1,
                        1
                      ]
                    },
                    {
                      "id": "directionalVisibility",
                      "cardinality": [
                        0,
                        1
                      ]
                    },
                    {
                      "id": "rvr",
                      "cardinality": [
                        0,
                        4
                      ]
                    },
                    {
                      "id": "weatherGroup",
                      "cardinality": [
                        1,
                        1
                      ],
                      "oneOf": [
                        {
                          "id": "weather",
                          "cardinality": [
                            0,
                            3
                          ]
                        },
                        {
                          "id": "weatherSpecial",
                          "cardinality": [
                            0,
                            3
                          ]
                        },
                        {
                          "id": "noWeather",
                          "cardinality": [
                            0,
                            1
                          ]
                        }
                      ]
                    },
                    {
                      "id": "cloudGroup",
                      "cardinality": [
                        1,
                        1
                      ],
                      "oneOf": [
                        {
                          "id": "nsc",
                          "cardinality": [
                            1,
                            1
                          ]
                        },
                        {
                          "id": "ncd",
                          "cardinality": [
                            1,
                            1
                          ]
                        },
                        {
                          "id": "skyClear",
                          "cardinality": [
                            1,
                            1
                          ]
                        },
                        {
                          "id": "verticalVisibility",
                          "cardinality": [
                            1,
                            1
                          ]
                        },
                        {
                          "id": "cloudBase",
                          "cardinality": [
                            1,
                            4
                          ]
                        },
                        {
                          "id": "cloud",
                          "cardinality": [
                            1,
                            4
                          ]
                        },
                        {
                          "id": "cloudUnknown",
                          "cardinality": [
                            1,
                            4
                          ]
                        },
                        {
                          "id": "cloudAmount",
                          "cardinality": [
                            1,
                            4
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "id": "temperature",
              "cardinality": [
                1,
                1
              ]
            },
            {
              "id": "pressureGroup",
              "cardinality": [
                1,
                1
              ],
              "oneOf": [
                {
                  "id": "pressureInches",
                  "cardinality": [
                    1,
                    1
                  ]
                },
                {
                  "id": "pressureInchesNotAvailable",
                  "cardinality": [
                    1,
                    1
                  ]
                }
              ]
            },
            {
              "id": "recentWeather",
              "cardinality": [
                0,
                3
              ]
            },
            {
              "id": "windshearGroup",
              "cardinality": [
                0,
                1
              ],
              "sequence": [
                {
                  "id": "windshear",
                  "cardinality": [
                    0,
                    1
                  ]
                },
                {
                  "id": "windshearTarget",
                  "cardinality": [
                    1,
                    1
                  ],
                  "oneOf": [
                    {
                      "id": "windshearRunway",
                      "cardinality": [
                        1,
                        1
                      ]
                    },
                    {
                      "id": "windshearAll",
                      "cardinality": [
                        1,
                        1
                      ],
                      "sequence": [
                        {
                          "id": "windshearAllRwy",
                          "cardinality": [
                            1,
                            1
                          ]
                        },
                        {
                          "id": "rwy",
                          "cardinality": [
                            1,
                            1
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "id": "seaTemp",
              "cardinality": [
                0,
                1
              ]
            },
            {
              "id": "runwayState",
              "cardinality": [
                0,
                null
              ]
            },
            {
              "id": "trendGroup",
              "cardinality": [
                0,
                1
              ],
              "oneOf": [
                {
                  "id": "nosig",
                  "cardinality": [
                    1,
                    1
                  ]
                },
                {
                  "id": "trendChanges",
                  "cardinality": [
                    1,
                    null
                  ],
                  "sequence": [
                    {
                      "id": "trendType",
                      "cardinality": [
                        1,
                        1
                      ],
                      "oneOf": [
                        {
                          "id": "becmg",
                          "cardinality": [
                            1,
                            1
                          ]
                        },
                        {
                          "id": "tempo",
                          "cardinality": [
                            1,
                            1
                          ]
                        }
                      ]
                    },
                    {
                      "id": "trendTimeFM",
                      "cardinality": [
                        0,
                        1
                      ]
                    },
                    {
                      "id": "trendTimeTL",
                      "cardinality": [
                        0,
                        1
                      ]
                    },
                    {
                      "id": "trendWindGroup",
                      "cardinality": [0, 1],
                      "oneOf": [
                        { "id": "trendWind", "cardinality": [1, 1] },
                        { "id": "trendWindKT", "cardinality": [1, 1] },
                        { "id": "trendWindMPS", "cardinality": [1, 1] },
                        { "id": "trendWindDirectionSpeedKT", "cardinality": [1, 1] },
                        { "id": "trendWindDirectionSpeedMPS", "cardinality": [1, 1] },
                        { "id": "trendWindDirectionKT", "cardinality": [1, 1] },
                        { "id": "trendWindDirectionMPS", "cardinality": [1, 1] }
                      ]
                    },
                    {
                      "id": "trendConditions",
                      "cardinality": [0, 1],
                      "oneOf": [
                        { "id": "trendCavok", "cardinality": [1, 1] },
                        {
                          "id": "trendConditionsDetail",
                          "cardinality": [1, 1],
                          "sequence": [
                            { "id": "trendVisibility", "cardinality": [0, 1] },
                            {
                              "id": "trendWeatherGroup",
                              "cardinality": [1, 1],
                              "oneOf": [
                                { "id": "trendWeather", "cardinality": [0, 3] },
                                { "id": "trendNsw", "cardinality": [0, 1] }
                              ]
                            },
                            { "id": "trendCloud", "cardinality": [0, 4] }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "id": "remarkGroup",
              "cardinality": [
                0,
                1
              ],
              "sequence": [
                {
                  "id": "remark",
                  "cardinality": [
                    1,
                    1
                  ]
                },
                {
                  "id": "remarkContent",
                  "cardinality": [
                    0,
                    null
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "suggestions": {
    "items": {
      "identifier": [
        {
          "text": "COR",
          "description": "Correction"
        },
        {
          "text": "NIL",
          "description": "Missing report"
        },
        {
          "text": "AUTO",
          "description": "Automated observation",
          "auto": true
        }
      ],
      "icao": [],
      "datetime": [],
      "windDirection": [],
      "windDirectionSpeed": [],
      "windDirectionSpeedGust": [],
      "wind": [
        {
          "text": "Wind (KT)",
          "description": "Wind in knots",
          "type": "category",
          "children": [
            { "text": "00000KT", "description": "Direction + speed", "placeholder": "00000KT", "editable": [{ "start": 0, "end": 3 }, { "start": 3, "end": 5 }] },
            { "text": "VRB00KT", "description": "Variable direction", "placeholder": "VRB00KT", "editable": [{ "start": 3, "end": 5 }] },
            { "text": "00000G00KT", "description": "Direction + speed + gust", "placeholder": "00000G00KT", "editable": [{ "start": 0, "end": 3 }, { "start": 3, "end": 5 }, { "start": 6, "end": 8 }] },
            { "text": "VRB00G00KT", "description": "Variable + speed + gust", "placeholder": "VRB00G00KT", "editable": [{ "start": 3, "end": 5 }, { "start": 6, "end": 8 }] }
          ]
        },
        {
          "text": "Wind (MPS)",
          "description": "Wind in metres/second",
          "type": "category",
          "children": [
            { "text": "00000MPS", "description": "Direction + speed", "placeholder": "00000MPS", "editable": [{ "start": 0, "end": 3 }, { "start": 3, "end": 5 }] },
            { "text": "VRB00MPS", "description": "Variable direction", "placeholder": "VRB00MPS", "editable": [{ "start": 3, "end": 5 }] },
            { "text": "00000G00MPS", "description": "Direction + speed + gust", "placeholder": "00000G00MPS", "editable": [{ "start": 0, "end": 3 }, { "start": 3, "end": 5 }, { "start": 6, "end": 8 }] },
            { "text": "VRB00G00MPS", "description": "Variable + speed + gust", "placeholder": "VRB00G00MPS", "editable": [{ "start": 3, "end": 5 }, { "start": 6, "end": 8 }] }
          ]
        }
      ],
      "windNotAvailable": [
        {
          "text": "/////KT",
          "description": "Wind not available (AUTO)",
          "auto": true
        },
        {
          "text": "/////MPS",
          "description": "Wind not available (AUTO)",
          "auto": true
        }
      ],
      "cavok": [
        {
          "text": "CAVOK",
          "description": "Ceiling And Visibility OK"
        }
      ],
      "visibility": [],
      "directionalVisibility": [
        { "type": "skip", "description": "No directional visibility" }
      ],
      "visibilityNotAvailable": [
        {
          "text": "////",
          "description": "Visibility not available (AUTO)",
          "auto": true
        }
      ],
      "rvr": [],
      "cloud": [
        { "type": "skip", "description": "Continue without CB/TCU" },
        { "text": "NCD", "description": "No cloud detected (AUTO)", "auto": true },
        { "text": "NSC", "description": "No significant cloud" },
        { "text": "CLR", "description": "Clear sky" },
        { "text": "SKC", "description": "Sky clear" },
        { "text": "FEW", "description": "Few clouds (1-2 oktas)" },
        { "text": "SCT", "description": "Scattered (3-4 oktas)" },
        { "text": "BKN", "description": "Broken (5-7 oktas)" },
        { "text": "OVC", "description": "Overcast (8 oktas)" },
        { "text": "CB", "description": "Cumulonimbus" },
        { "text": "TCU", "description": "Towering Cumulus" },
        { "text": "///", "description": "Cloud type not detected (AUTO)", "auto": true }
      ],
      "weather": [
        {
          "text": "//",
          "description": "Weather not observed (AUTO)",
          "auto": true
        },
        {
          "text": "-RA",
          "description": "Light rain"
        },
        {
          "text": "RA",
          "description": "Moderate rain"
        },
        {
          "text": "+RA",
          "description": "Heavy rain"
        },
        {
          "text": "-DZ",
          "description": "Light drizzle"
        },
        {
          "text": "DZ",
          "description": "Moderate drizzle"
        },
        {
          "text": "+DZ",
          "description": "Heavy drizzle"
        },
        {
          "text": "-SN",
          "description": "Light snow"
        },
        {
          "text": "SN",
          "description": "Moderate snow"
        },
        {
          "text": "+SN",
          "description": "Heavy snow"
        },
        {
          "text": "-SG",
          "description": "Light snow grains"
        },
        {
          "text": "SG",
          "description": "Snow grains"
        },
        {
          "text": "-PL",
          "description": "Light ice pellets"
        },
        {
          "text": "PL",
          "description": "Ice pellets"
        },
        {
          "text": "+PL",
          "description": "Heavy ice pellets"
        },
        {
          "text": "-GR",
          "description": "Light hail"
        },
        {
          "text": "GR",
          "description": "Hail"
        },
        {
          "text": "+GR",
          "description": "Heavy hail"
        },
        {
          "text": "-GS",
          "description": "Light small hail"
        },
        {
          "text": "GS",
          "description": "Small hail"
        },
        {
          "text": "IC",
          "description": "Ice crystals"
        },
        {
          "text": "BR",
          "description": "Mist (vis 1000-5000m)"
        },
        {
          "text": "FG",
          "description": "Fog (vis <1000m)"
        },
        {
          "text": "BCFG",
          "description": "Patches of fog"
        },
        {
          "text": "PRFG",
          "description": "Partial fog"
        },
        {
          "text": "MIFG",
          "description": "Shallow fog"
        },
        {
          "text": "FZFG",
          "description": "Freezing fog"
        },
        {
          "text": "HZ",
          "description": "Haze"
        },
        {
          "text": "FU",
          "description": "Smoke"
        },
        {
          "text": "VA",
          "description": "Volcanic ash"
        },
        {
          "text": "DU",
          "description": "Widespread dust"
        },
        {
          "text": "SA",
          "description": "Sand"
        },
        {
          "text": "PY",
          "description": "Spray"
        },
        {
          "text": "TS",
          "description": "Thunderstorm"
        },
        {
          "text": "TSRA",
          "description": "Thunderstorm with rain"
        },
        {
          "text": "TSSN",
          "description": "Thunderstorm with snow"
        },
        {
          "text": "TSPL",
          "description": "Thunderstorm with ice pellets"
        },
        {
          "text": "TSGR",
          "description": "Thunderstorm with hail"
        },
        {
          "text": "TSGS",
          "description": "Thunderstorm with small hail"
        },
        {
          "text": "-SHRA",
          "description": "Light rain showers"
        },
        {
          "text": "SHRA",
          "description": "Rain showers"
        },
        {
          "text": "+SHRA",
          "description": "Heavy rain showers"
        },
        {
          "text": "-SHSN",
          "description": "Light snow showers"
        },
        {
          "text": "SHSN",
          "description": "Snow showers"
        },
        {
          "text": "+SHSN",
          "description": "Heavy snow showers"
        },
        {
          "text": "SHGR",
          "description": "Hail showers"
        },
        {
          "text": "SHGS",
          "description": "Small hail showers"
        },
        {
          "text": "-FZRA",
          "description": "Light freezing rain"
        },
        {
          "text": "FZRA",
          "description": "Freezing rain"
        },
        {
          "text": "+FZRA",
          "description": "Heavy freezing rain"
        },
        {
          "text": "-FZDZ",
          "description": "Light freezing drizzle"
        },
        {
          "text": "FZDZ",
          "description": "Freezing drizzle"
        },
        {
          "text": "+FZDZ",
          "description": "Heavy freezing drizzle"
        },
        {
          "text": "BLSN",
          "description": "Blowing snow"
        },
        {
          "text": "BLDU",
          "description": "Blowing dust"
        },
        {
          "text": "BLSA",
          "description": "Blowing sand"
        },
        {
          "text": "DRSN",
          "description": "Drifting snow"
        },
        {
          "text": "DRDU",
          "description": "Drifting dust"
        },
        {
          "text": "DRSA",
          "description": "Drifting sand"
        },
        {
          "text": "PO",
          "description": "Dust/sand whirls"
        },
        {
          "text": "SQ",
          "description": "Squalls"
        },
        {
          "text": "FC",
          "description": "Funnel cloud/tornado"
        },
        {
          "text": "+FC",
          "description": "Tornado/waterspout"
        },
        {
          "text": "SS",
          "description": "Sandstorm"
        },
        {
          "text": "+SS",
          "description": "Heavy sandstorm"
        },
        {
          "text": "DS",
          "description": "Duststorm"
        },
        {
          "text": "+DS",
          "description": "Heavy duststorm"
        },
        {
          "text": "VCSH",
          "description": "Showers in vicinity"
        },
        {
          "text": "VCTS",
          "description": "Thunderstorm in vicinity"
        },
        {
          "text": "VCFG",
          "description": "Fog in vicinity"
        },
        {
          "text": "//",
          "description": "Weather not observed (AUTO)",
          "auto": true
        },
        {
          "type": "category",
          "text": "Present Weather",
          "description": "Weather phenomena (optional)",
          "children": [
            {
              "text": "-RA",
              "description": "Light rain"
            },
            {
              "text": "RA",
              "description": "Moderate rain"
            },
            {
              "text": "+RA",
              "description": "Heavy rain"
            },
            {
              "text": "-DZ",
              "description": "Light drizzle"
            },
            {
              "text": "DZ",
              "description": "Moderate drizzle"
            },
            {
              "text": "+DZ",
              "description": "Heavy drizzle"
            },
            {
              "text": "-SN",
              "description": "Light snow"
            },
            {
              "text": "SN",
              "description": "Moderate snow"
            },
            {
              "text": "+SN",
              "description": "Heavy snow"
            },
            {
              "text": "-SG",
              "description": "Light snow grains"
            },
            {
              "text": "SG",
              "description": "Snow grains"
            },
            {
              "text": "-PL",
              "description": "Light ice pellets"
            },
            {
              "text": "PL",
              "description": "Ice pellets"
            },
            {
              "text": "+PL",
              "description": "Heavy ice pellets"
            },
            {
              "text": "-GR",
              "description": "Light hail"
            },
            {
              "text": "GR",
              "description": "Hail"
            },
            {
              "text": "+GR",
              "description": "Heavy hail"
            },
            {
              "text": "-GS",
              "description": "Light small hail"
            },
            {
              "text": "GS",
              "description": "Small hail"
            },
            {
              "text": "IC",
              "description": "Ice crystals"
            },
            {
              "text": "BR",
              "description": "Mist (vis 1000-5000m)"
            },
            {
              "text": "FG",
              "description": "Fog (vis <1000m)"
            },
            {
              "text": "BCFG",
              "description": "Patches of fog"
            },
            {
              "text": "PRFG",
              "description": "Partial fog"
            },
            {
              "text": "MIFG",
              "description": "Shallow fog"
            },
            {
              "text": "FZFG",
              "description": "Freezing fog"
            },
            {
              "text": "HZ",
              "description": "Haze"
            },
            {
              "text": "FU",
              "description": "Smoke"
            },
            {
              "text": "VA",
              "description": "Volcanic ash"
            },
            {
              "text": "DU",
              "description": "Widespread dust"
            },
            {
              "text": "SA",
              "description": "Sand"
            },
            {
              "text": "PY",
              "description": "Spray"
            },
            {
              "text": "TS",
              "description": "Thunderstorm"
            },
            {
              "text": "TSRA",
              "description": "Thunderstorm with rain"
            },
            {
              "text": "TSSN",
              "description": "Thunderstorm with snow"
            },
            {
              "text": "TSPL",
              "description": "Thunderstorm with ice pellets"
            },
            {
              "text": "TSGR",
              "description": "Thunderstorm with hail"
            },
            {
              "text": "TSGS",
              "description": "Thunderstorm with small hail"
            },
            {
              "text": "-SHRA",
              "description": "Light rain showers"
            },
            {
              "text": "SHRA",
              "description": "Rain showers"
            },
            {
              "text": "+SHRA",
              "description": "Heavy rain showers"
            },
            {
              "text": "-SHSN",
              "description": "Light snow showers"
            },
            {
              "text": "SHSN",
              "description": "Snow showers"
            },
            {
              "text": "+SHSN",
              "description": "Heavy snow showers"
            },
            {
              "text": "SHGR",
              "description": "Hail showers"
            },
            {
              "text": "SHGS",
              "description": "Small hail showers"
            },
            {
              "text": "-FZRA",
              "description": "Light freezing rain"
            },
            {
              "text": "FZRA",
              "description": "Freezing rain"
            },
            {
              "text": "+FZRA",
              "description": "Heavy freezing rain"
            },
            {
              "text": "-FZDZ",
              "description": "Light freezing drizzle"
            },
            {
              "text": "FZDZ",
              "description": "Freezing drizzle"
            },
            {
              "text": "+FZDZ",
              "description": "Heavy freezing drizzle"
            },
            {
              "text": "BLSN",
              "description": "Blowing snow"
            },
            {
              "text": "BLDU",
              "description": "Blowing dust"
            },
            {
              "text": "BLSA",
              "description": "Blowing sand"
            },
            {
              "text": "DRSN",
              "description": "Drifting snow"
            },
            {
              "text": "DRDU",
              "description": "Drifting dust"
            },
            {
              "text": "DRSA",
              "description": "Drifting sand"
            },
            {
              "text": "PO",
              "description": "Dust/sand whirls"
            },
            {
              "text": "SQ",
              "description": "Squalls"
            },
            {
              "text": "FC",
              "description": "Funnel cloud/tornado"
            },
            {
              "text": "+FC",
              "description": "Tornado/waterspout"
            },
            {
              "text": "SS",
              "description": "Sandstorm"
            },
            {
              "text": "+SS",
              "description": "Heavy sandstorm"
            },
            {
              "text": "DS",
              "description": "Duststorm"
            },
            {
              "text": "+DS",
              "description": "Heavy duststorm"
            },
            {
              "text": "VCSH",
              "description": "Showers in vicinity"
            },
            {
              "text": "VCTS",
              "description": "Thunderstorm in vicinity"
            },
            {
              "text": "VCFG",
              "description": "Fog in vicinity"
            },
            {
              "text": "//",
              "description": "Weather not observed (AUTO)",
              "auto": true
            }
          ]
        },
        {
          "text": "RE",
          "description": "Recent weather"
        },
        {
          "text": "NSW",
          "description": "No Significant Weather"
        }
      ],
      "temperature": [],
      "pressureInches": [],
      "pressureInchesNotAvailable": [
        {
          "text": "A////",
          "description": "Altimeter not available (AUTO)",
          "auto": true
        }
      ],
      "recentWeather": [
        {
          "text": "Recent Weather",
          "description": "Weather since last report",
          "type": "category",
          "children": [
            { "text": "RERASN", "description": "Recent rain and snow" },
            { "text": "REFZDZ", "description": "Recent freezing drizzle" },
            { "text": "REFZRA", "description": "Recent freezing rain" },
            { "text": "REDZ", "description": "Recent drizzle" },
            { "text": "RESHRA", "description": "Recent showery rain" },
            { "text": "RERA", "description": "Recent rain" },
            { "text": "RESHSN", "description": "Recent showery snow" },
            { "text": "RESN", "description": "Recent snow" },
            { "text": "RESG", "description": "Recent snow grains" },
            { "text": "RESHGR", "description": "Recent showery hail" },
            { "text": "RESHGS", "description": "Recent showery snow pellets" },
            { "text": "REBLSN", "description": "Recent blowing snow" },
            { "text": "RESS", "description": "Recent sandstorm" },
            { "text": "REDS", "description": "Recent duststorm" },
            { "text": "RETSRA", "description": "Recent thunderstorm with rain" },
            { "text": "RETSSN", "description": "Recent thunderstorm with snow" },
            { "text": "RETSGR", "description": "Recent thunderstorm with hail" },
            { "text": "RETSGS", "description": "Recent thunderstorm with snow pellets" },
            { "text": "RETS", "description": "Recent thunderstorm" },
            { "text": "REFC", "description": "Recent funnel cloud" },
            { "text": "REVA", "description": "Recent volcanic ash" },
            { "text": "REPL", "description": "Recent ice pellets" },
            { "text": "REUP", "description": "Recent unidentified precipitation" },
            { "text": "REFZUP", "description": "Recent unidentified freezing precip" },
            { "text": "RETSUP", "description": "Recent TS with unidentified precip" },
            { "text": "RESHUP", "description": "Recent showery unidentified precip" },
            { "text": "RE//", "description": "Recent weather not available" }
          ]
        }
      ],
      "nosig": [
        { "text": "NOSIG", "description": "No significant change" }
      ],
      "becmg": [
        { "text": "Trend Forecast", "description": "Change expected (max 3)", "type": "category", "children": [
          { "text": "BECMG", "description": "Becoming - change at regular/irregular rate" },
          { "text": "TEMPO", "description": "Temporary fluctuations <1h each, <50% of period" }
        ]}
      ],
      "tempo": [],
      "windshear": [
        {
          "text": "Wind Shear",
          "description": "Wind shear on runway",
          "type": "category",
          "children": [
            { "text": "WS R00", "description": "Wind shear on runway", "placeholder": "WS R00", "editable": [{ "start": 4, "end": 6 }] },
            { "text": "WS R00L", "description": "Wind shear on left runway", "placeholder": "WS R00L", "editable": [{ "start": 4, "end": 6 }] },
            { "text": "WS R00C", "description": "Wind shear on center runway", "placeholder": "WS R00C", "editable": [{ "start": 4, "end": 6 }] },
            { "text": "WS R00R", "description": "Wind shear on right runway", "placeholder": "WS R00R", "editable": [{ "start": 4, "end": 6 }] },
            { "text": "WS ALL RWY", "description": "Wind shear on all runways" }
          ]
        }
      ],
      "seaTemp": [
        {
          "text": "Sea Information",
          "description": "Sea-surface temperature",
          "type": "category",
          "serie": true,
          "children": [
            { "text": "W00/", "description": "Positive temperature (°C)", "placeholder": "W00/", "editable": [{ "start": 1, "end": 3, "hint": "Sea temp" }] },
            { "text": "WM00/", "description": "Negative temperature (°C)", "placeholder": "WM00/", "editable": [{ "start": 2, "end": 4, "hint": "Sea temp" }] },
            { "text": "W///", "description": "Temperature not available" }
          ]
        }
      ],
      "seaStateValue": [
        {
          "text": "State of the Sea",
          "description": "Sea state (0-9)",
          "type": "category",
          "serie": true,
          "children": [
            { "text": "S0", "description": "State 0 - Calm (glassy)", "placeholder": "S0", "editable": [{ "start": 1, "end": 2, "hint": "Sea state" }] },
            { "text": "S/", "description": "State not available" }
          ]
        }
      ],
      "waveHeightValue": [
        {
          "text": "Significant Wave Height",
          "description": "Wave height in decimetres",
          "type": "category",
          "serie": true,
          "children": [
            { "text": "H0", "description": "Height 0-9 dm", "placeholder": "H0", "editable": [{ "start": 1, "end": 2, "hint": "Wave ht" }] },
            { "text": "H00", "description": "Height 00-99 dm", "placeholder": "H00", "editable": [{ "start": 1, "end": 3, "hint": "Wave ht" }] },
            { "text": "H000", "description": "Height 000-999 dm", "placeholder": "H000", "editable": [{ "start": 1, "end": 4, "hint": "Wave ht" }] },
            { "text": "H///", "description": "Height not available" }
          ]
        }
      ],
      "seaState": [
        { "text": "W///S/", "description": "Sea info not available" }
      ],
      "remark": [
        {
          "text": "RMK",
          "description": "Remarks"
        },
        {
          "text": "AO2",
          "description": "Remark content"
        }
      ],
      "trendTimeFM": [
        { "text": "Period of change", "description": "Time period", "type": "category", "children": [
          { "text": "FM0000", "description": "From time", "placeholder": "FM0000", "editable": [{ "start": 2, "end": 6 }] },
          { "text": "TL0000", "description": "Until time", "placeholder": "TL0000", "editable": [{ "start": 2, "end": 6 }] },
          { "text": "AT0000", "description": "At time", "placeholder": "AT0000", "editable": [{ "start": 2, "end": 6 }] }
        ]}
      ],
      "trendTimeTL": [],
      "trendTimeAT": [],
      "trendWindDirectionKT": [
        { "text": "Trend Wind (KT)", "description": "Trend wind in knots (no VRB)", "type": "category", "serie": true, "children": [
          { "text": "000", "description": "Direction (3 digits)", "placeholder": "000", "editable": [{ "start": 0, "end": 3 }] }
        ]}
      ],
      "trendWindDirectionMPS": [
        { "text": "Trend Wind (MPS)", "description": "Trend wind in m/s (no VRB)", "type": "category", "serie": true, "children": [
          { "text": "000", "description": "Direction (3 digits)", "placeholder": "000", "editable": [{ "start": 0, "end": 3 }] }
        ]}
      ],
      "trendWindDirectionSpeedKT": [
        { "text": "00", "description": "Speed (2 digits)", "placeholder": "00", "editable": [{ "start": 0, "end": 2 }] },
        { "text": "000", "description": "Speed (3 digits)", "placeholder": "000", "editable": [{ "start": 0, "end": 3 }] },
        { "text": "P00", "description": "Speed >99 (2 digits)", "placeholder": "P00", "editable": [{ "start": 1, "end": 3 }] },
        { "text": "P000", "description": "Speed >99 (3 digits)", "placeholder": "P000", "editable": [{ "start": 1, "end": 4 }] }
      ],
      "trendWindDirectionSpeedMPS": [
        { "text": "00", "description": "Speed (2 digits)", "placeholder": "00", "editable": [{ "start": 0, "end": 2 }] },
        { "text": "000", "description": "Speed (3 digits)", "placeholder": "000", "editable": [{ "start": 0, "end": 3 }] },
        { "text": "P00", "description": "Speed >99 (2 digits)", "placeholder": "P00", "editable": [{ "start": 1, "end": 3 }] },
        { "text": "P000", "description": "Speed >99 (3 digits)", "placeholder": "P000", "editable": [{ "start": 1, "end": 4 }] }
      ],
      "trendWindKT": [
        { "text": "KT", "label": "No gust", "description": "" },
        { "text": "G00KT", "label": "G00", "description": "Gust 2 digits", "placeholder": "G00KT", "editable": [{ "start": 1, "end": 3 }] },
        { "text": "GP00KT", "label": "GP00", "description": "Gust >99 (2 digits)", "placeholder": "GP00KT", "editable": [{ "start": 2, "end": 4 }] },
        { "text": "G000KT", "label": "G000", "description": "Gust 3 digits", "placeholder": "G000KT", "editable": [{ "start": 1, "end": 4 }] },
        { "text": "GP000KT", "label": "GP000", "description": "Gust >99 (3 digits)", "placeholder": "GP000KT", "editable": [{ "start": 2, "end": 5 }] }
      ],
      "trendWindMPS": [
        { "text": "MPS", "label": "No gust", "description": "" },
        { "text": "G00MPS", "label": "G00", "description": "Gust 2 digits", "placeholder": "G00MPS", "editable": [{ "start": 1, "end": 3 }] },
        { "text": "GP00MPS", "label": "GP00", "description": "Gust >99 (2 digits)", "placeholder": "GP00MPS", "editable": [{ "start": 2, "end": 4 }] },
        { "text": "G000MPS", "label": "G000", "description": "Gust 3 digits", "placeholder": "G000MPS", "editable": [{ "start": 1, "end": 4 }] },
        { "text": "GP000MPS", "label": "GP000", "description": "Gust >99 (3 digits)", "placeholder": "GP000MPS", "editable": [{ "start": 2, "end": 5 }] }
      ],
      "trendWind": [],
      "trendCavok": [
        { "text": "CAVOK", "description": "Ceiling And Visibility OK (trend)" }
      ],
      "trendVisibility": [],
      "trendWeather": [
        { "text": "Trend Weather", "description": "Forecast weather phenomena", "type": "category", "children": [
          { "text": "Precipitation", "description": "Rain, drizzle, snow", "type": "category", "children": [
            { "text": "-DZ", "description": "Light drizzle" }, { "text": "DZ", "description": "Drizzle" }, { "text": "+DZ", "description": "Heavy drizzle" },
            { "text": "-RA", "description": "Light rain" }, { "text": "RA", "description": "Rain" }, { "text": "+RA", "description": "Heavy rain" },
            { "text": "-SN", "description": "Light snow" }, { "text": "SN", "description": "Snow" }, { "text": "+SN", "description": "Heavy snow" },
            { "text": "-SG", "description": "Light snow grains" }, { "text": "SG", "description": "Snow grains" }, { "text": "+SG", "description": "Heavy snow grains" },
            { "text": "-PL", "description": "Light ice pellets" }, { "text": "PL", "description": "Ice pellets" }, { "text": "+PL", "description": "Heavy ice pellets" },
            { "text": "-DS", "description": "Light duststorm" }, { "text": "DS", "description": "Duststorm" }, { "text": "+DS", "description": "Heavy duststorm" },
            { "text": "-SS", "description": "Light sandstorm" }, { "text": "SS", "description": "Sandstorm" }, { "text": "+SS", "description": "Heavy sandstorm" }
          ]},
          { "text": "Freezing", "description": "Freezing precipitation", "type": "category", "children": [
            { "text": "-FZDZ", "description": "Light freezing drizzle" }, { "text": "FZDZ", "description": "Freezing drizzle" }, { "text": "+FZDZ", "description": "Heavy freezing drizzle" },
            { "text": "-FZRA", "description": "Light freezing rain" }, { "text": "FZRA", "description": "Freezing rain" }, { "text": "+FZRA", "description": "Heavy freezing rain" }
          ]},
          { "text": "Showers", "description": "Shower precipitation", "type": "category", "children": [
            { "text": "-SHRA", "description": "Light rain showers" }, { "text": "SHRA", "description": "Rain showers" }, { "text": "+SHRA", "description": "Heavy rain showers" },
            { "text": "-SHSN", "description": "Light snow showers" }, { "text": "SHSN", "description": "Snow showers" }, { "text": "+SHSN", "description": "Heavy snow showers" },
            { "text": "-SHGR", "description": "Light hail showers" }, { "text": "SHGR", "description": "Hail showers" }, { "text": "+SHGR", "description": "Heavy hail showers" },
            { "text": "-SHGS", "description": "Light small hail showers" }, { "text": "SHGS", "description": "Small hail showers" }, { "text": "+SHGS", "description": "Heavy small hail showers" }
          ]},
          { "text": "Thunderstorm", "description": "TS with precipitation", "type": "category", "children": [
            { "text": "-TS", "description": "Light thunderstorm" }, { "text": "TS", "description": "Thunderstorm" }, { "text": "+TS", "description": "Heavy thunderstorm" },
            { "text": "-TSRA", "description": "Light TS with rain" }, { "text": "TSRA", "description": "TS with rain" }, { "text": "+TSRA", "description": "Heavy TS with rain" },
            { "text": "-TSSN", "description": "Light TS with snow" }, { "text": "TSSN", "description": "TS with snow" }, { "text": "+TSSN", "description": "Heavy TS with snow" },
            { "text": "-TSGR", "description": "Light TS with hail" }, { "text": "TSGR", "description": "TS with hail" }, { "text": "+TSGR", "description": "Heavy TS with hail" },
            { "text": "-TSGS", "description": "Light TS with small hail" }, { "text": "TSGS", "description": "TS with small hail" }, { "text": "+TSGS", "description": "Heavy TS with small hail" }
          ]},
          { "text": "Obscuration", "description": "Fog, mist, haze", "type": "category", "children": [
            { "text": "FG", "description": "Fog" }, { "text": "BR", "description": "Mist" }, { "text": "HZ", "description": "Haze" },
            { "text": "FU", "description": "Smoke" }, { "text": "VA", "description": "Volcanic ash" },
            { "text": "SA", "description": "Sand" }, { "text": "DU", "description": "Dust" },
            { "text": "BCFG", "description": "Patches of fog" }, { "text": "PRFG", "description": "Partial fog" }, { "text": "MIFG", "description": "Shallow fog" }, { "text": "FZFG", "description": "Freezing fog" },
            { "text": "BLDU", "description": "Blowing dust" }, { "text": "BLSA", "description": "Blowing sand" }, { "text": "BLSN", "description": "Blowing snow" },
            { "text": "DRDU", "description": "Drifting dust" }, { "text": "DRSA", "description": "Drifting sand" }, { "text": "DRSN", "description": "Drifting snow" }
          ]},
          { "text": "Other", "description": "Other phenomena", "type": "category", "children": [
            { "text": "SQ", "description": "Squall" }, { "text": "PO", "description": "Dust/sand whirls" }, { "text": "FC", "description": "Funnel cloud" }
          ]}
        ]}
      ],
      "trendNsw": [
        { "text": "NSW", "description": "No significant weather" }
      ],
      "trendCloud": [
        { "text": "Trend Cloud", "description": "Forecast cloud", "type": "category", "children": [
          { "text": "FEW000", "description": "Few clouds", "placeholder": "FEW000", "editable": [{ "start": 3, "end": 6 }] },
          { "text": "SCT000", "description": "Scattered", "placeholder": "SCT000", "editable": [{ "start": 3, "end": 6 }] },
          { "text": "BKN000", "description": "Broken", "placeholder": "BKN000", "editable": [{ "start": 3, "end": 6 }] },
          { "text": "OVC000", "description": "Overcast", "placeholder": "OVC000", "editable": [{ "start": 3, "end": 6 }] },
          { "text": "VV000", "description": "Vertical visibility", "placeholder": "VV000", "editable": [{ "start": 2, "end": 5 }] },
          { "text": "NSC", "description": "No significant cloud" }
        ]}
      ],
      "cloudAmount": [
        {
          "text": "Cloud",
          "description": "Cloud or sky condition",
          "type": "category",
          "children": [
            {
              "text": "Cloud layer",
              "description": "Cloud amount + height",
              "type": "category",
              "serie": true,
              "children": [
                { "text": "FEW", "description": "Few clouds (1-2 oktas)" },
                { "text": "SCT", "description": "Scattered clouds (3-4 oktas)" },
                { "text": "BKN", "description": "Broken clouds (5-7 oktas)" },
                { "text": "OVC", "description": "Overcast (8 oktas)" }
              ]
            },
            { "text": "VV000", "description": "Vertical Visibility", "placeholder": "VV000", "editable": [{ "start": 2, "end": 5 }] },
            { "text": "VV///", "description": "Vertical Visibility not available", "auto": true },
            { "text": "NSC", "description": "No Significant Cloud" },
            { "text": "NCD", "description": "No Cloud Detected" },
            { "text": "CLR", "description": "Clear sky (no clouds below 12000 ft)" },
            { "text": "SKC", "description": "Sky clear" }
          ]
        }
      ],
      "nsc": [],
      "ncd": [],
      "skyClear": [],
      "verticalVisibility": [],
      "cloudBase": []
    },
    "after": {
      "identifier": [
        "identifier",
        "icao"
      ],
      "correction": [
        "icao"
      ],
      "icao": [
        "datetime"
      ],
      "datetime": [
        "nil",
        "auto",
        "wind",
        "windNotAvailable"
      ],
      "auto": [
        "wind",
        "windNotAvailable"
      ],
      "windDirection": [
        "windDirectionSpeed"
      ],
      "windDirectionSpeed": [
        "wind"
      ],
      "windDirectionSpeedGust": [
        "wind"
      ],
      "wind": [
        "windVariation",
        "cavok",
        "visibility",
        "directionalVisibility",
        "visibilityNotAvailable",
        "rvr"
      ],
      "windNotAvailable": [
        "windVariation",
        "cavok",
        "visibility",
        "directionalVisibility",
        "visibilityNotAvailable",
        "rvr"
      ],
      "windVariation": [
        "cavok",
        "visibility",
        "directionalVisibility",
        "visibilityNotAvailable",
        "rvr"
      ],
      "visibility": [
        "directionalVisibility",
        "rvr",
        "weather",
        "cloudAmount"
      ],
      "visibilityNotAvailable": [
        "rvr",
        "weather",
        "cloudAmount"
      ],
      "directionalVisibility": [
        "rvr",
        "weather",
        "cloudAmount"
      ],
      "rvr": [
        "rvr",
        "weather",
        "cloudAmount"
      ],
      "weather": [
        "weather",
        "cloudAmount"
      ],
      "noWeather": [
        "cloudAmount"
      ],
      "cloudAmount": [
        "cloudBase"
      ],
      "cloudBase": [
        "cloud"
      ],
      "cloud": [
        "cloudAmount",
        "temperature"
      ],
      "nsc": [
        "temperature"
      ],
      "ncd": [
        "temperature"
      ],
      "verticalVisibility": [
        "temperature"
      ],
      "skyClear": [
        "temperature"
      ],
      "cavok": [
        "temperature"
      ],
      "temperature": [
        "pressureInches",
        "pressureInchesNotAvailable"
      ],
      "pressureInches": ["recentWeather", "windshear", "seaTemp", "nosig", "becmg"],
      "pressureInchesNotAvailable": ["recentWeather", "windshear", "seaTemp", "nosig", "becmg"],
      "seaTemp": ["seaStateValue", "waveHeightValue"],
      "seaStateValue": ["nosig", "becmg"],
      "waveHeightValue": ["nosig", "becmg"],
      "seaState": ["nosig", "becmg"],
      "waveHeight": ["nosig", "becmg"],
      "recentWeather": ["recentWeather", "windshear", "seaTemp", "nosig", "becmg"],
      "windshear": ["seaTemp", "nosig", "becmg"],
      "windshearAllRwy": ["seaTemp", "nosig", "becmg"],
      "windshearRunway": ["seaTemp", "nosig", "becmg"],
      "nosig": [],
      "becmg": ["trendTimeFM", "trendWindDirectionKT", "trendWindDirectionMPS", "trendCavok", "trendVisibility", "trendWeather", "trendNsw", "trendCloud"],
      "tempo": ["trendTimeFM", "trendWindDirectionKT", "trendWindDirectionMPS", "trendCavok", "trendVisibility", "trendWeather", "trendNsw", "trendCloud"],
      "trendTimeFM": ["trendTimeTL", "trendWindDirectionKT", "trendWindDirectionMPS", "trendCavok", "trendVisibility", "trendWeather", "trendNsw", "trendCloud"],
      "trendTimeTL": ["trendWindDirectionKT", "trendWindDirectionMPS", "trendCavok", "trendVisibility", "trendWeather", "trendNsw", "trendCloud"],
      "trendWindDirectionKT": ["trendWindDirectionSpeedKT"],
      "trendWindDirectionMPS": ["trendWindDirectionSpeedMPS"],
      "trendWindDirectionSpeedKT": ["trendWindKT"],
      "trendWindDirectionSpeedMPS": ["trendWindMPS"],
      "trendWindKT": ["trendCavok", "trendVisibility", "trendWeather", "trendNsw", "trendCloud"],
      "trendWindMPS": ["trendCavok", "trendVisibility", "trendWeather", "trendNsw", "trendCloud"],
      "trendWind": ["trendCavok", "trendVisibility", "trendWeather", "trendNsw", "trendCloud"],
      "trendCavok": ["becmg", "remark"],
      "trendVisibility": ["trendWeather", "trendNsw", "trendCloud"],
      "trendWeather": ["trendNsw", "trendCloud"],
      "trendNsw": ["trendCloud"],
      "trendCloud": ["trendCloud", "becmg", "remark"],
      "remark": [
        "remark"
      ]
    }
  },
  "codeTable4678": {
    "intensity": {
      "-": "Light",
      "": "Moderate",
      "+": "Heavy"
    },
    "proximity": {
      "VC": "In the vicinity (8-16 km)"
    },
    "descriptor": {
      "MI": "Shallow",
      "PR": "Partial",
      "BC": "Patches",
      "DR": "Low drifting",
      "BL": "Blowing",
      "SH": "Showers",
      "TS": "Thunderstorm",
      "FZ": "Freezing"
    },
    "precipitation": {
      "DZ": "Drizzle",
      "RA": "Rain",
      "SN": "Snow",
      "SG": "Snow grains",
      "IC": "Ice crystals",
      "PL": "Ice pellets",
      "GR": "Hail (≥5mm)",
      "GS": "Small hail (<5mm) and/or snow pellets",
      "UP": "Unknown precipitation (AUTO)"
    },
    "obscuration": {
      "BR": "Mist (vis 1000-5000m)",
      "FG": "Fog (vis <1000m)",
      "FU": "Smoke",
      "VA": "Volcanic ash",
      "DU": "Widespread dust",
      "SA": "Sand",
      "HZ": "Haze",
      "PY": "Spray"
    },
    "other": {
      "PO": "Dust/sand whirls",
      "SQ": "Squall",
      "FC": "Funnel cloud (tornado/waterspout)",
      "SS": "Sandstorm",
      "DS": "Duststorm"
    }
  },
  "examples": [
    "METAR KJFK 281056Z 32008KT 10SM SCT250 M02/M14 A3042 RMK AO2",
    "METAR KLAX 281053Z 25010KT 6SM HZ SCT015 BKN025 18/12 A2998 RMK AO2",
    "METAR KORD 281051Z 36012G18KT 1/2SM +SN FG VV008 M05/M07 A2985 RMK AO2",
    "SPECI KATL 281045Z 18015G25KT 3SM TSRA BR BKN020CB OVC050 22/20 A2978",
    "METAR KSFO 281056Z 29012KT 10SM FEW020 SCT200 15/08 A3012 NOSIG",
    "METAR KDEN 281053Z 18008KT 10SM CLR 22/M04 A3025 RMK AO2",
    "METAR KMIA 281050Z 09015G22KT 8SM -RA SCT025 BKN045 OVC080 26/23 A2992"
  ]
}
