{
  "name": "TAF",
  "version": "1.0.0",
  "description": "TAF: Terminal Aerodrome Forecast",
  "identifier": "TAF",
  "tokens": {
    "identifier": {
      "pattern": "^TAF$",
      "category": "keyword",
      "description": "Forecast type identifier"
    },
    "amendment": {
      "pattern": "^AMD$",
      "category": "keyword",
      "description": "Amendment indicator for amended forecast"
    },
    "correction": {
      "pattern": "^COR$",
      "category": "keyword",
      "description": "Correction indicator for corrected forecast"
    },
    "icao": {
      "pattern": "^[A-Z]{4}$",
      "category": "location",
      "description": "ICAO location indicator CCCC",
      "placeholder": {
        "value": "AAAA",
        "editable": [
          {
            "start": 0,
            "end": 4
          }
        ]
      }
    },
    "issueTime": {
      "pattern": "^\\d{6}Z$",
      "category": "datetime",
      "description": "Day and time of issue in 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 forecast indicator"
    },
    "validityPeriod": {
      "pattern": "^\\d{4}\\/\\d{4}$",
      "category": "datetime",
      "description": "Validity period Y1Y1G1G1/Y2Y2G2G2 (day+hour start/end)",
      "validator": "DDHH/DDHH",
      "placeholder": {
        "value": "0000/0000",
        "editable": [
          {
            "start": 0,
            "end": 2
          },
          {
            "start": 2,
            "end": 4
          },
          {
            "start": 5,
            "end": 7
          },
          {
            "start": 7,
            "end": 9
          }
        ]
      }
    },
    "cnl": {
      "pattern": "^CNL$",
      "category": "keyword",
      "description": "Cancelled forecast indicator"
    },
    "wind": {
      "pattern": "^(VRB|\\d{3})(\\d{2,3}|P(99|49))(G\\d{2,3})?(KT|MPS)$|^00000(KT|MPS)$",
      "category": "measurement",
      "description": "Surface wind dddff[Gfmfm]{KT|MPS}, P99/P49 for speeds >99kt/>49mps"
    },
    "cavok": {
      "pattern": "^CAVOK$",
      "category": "status",
      "description": "Ceiling And Visibility OK - vis >=10km, no cloud <1500m/MSA, no CB/TCU, no sig wx"
    },
    "visibility": {
      "pattern": "^\\d{4}$|^9999$|^0000$",
      "category": "measurement",
      "description": "Prevailing visibility VVVV in metres",
      "placeholder": {
        "value": "0000",
        "editable": [
          {
            "start": 0,
            "end": 4
          }
        ]
      }
    },
    "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": "Forecast weather w'w' - intensity/proximity + descriptor + phenomena (Code table 4678)"
    },
    "nsw": {
      "pattern": "^NSW$",
      "category": "phenomenon",
      "description": "No Significant Weather - end of weather phenomena in change group"
    },
    "cloud": {
      "pattern": "^(FEW|SCT|BKN|OVC)(\\d{3})(CB|TCU)?$",
      "category": "measurement",
      "description": "Cloud layer NsNsNshshshs - amount + height in 100s ft + type",
      "appendToPrevious": true
    },
    "verticalVisibility": {
      "pattern": "^VV(\\d{3}|\\/\\/\\/)$",
      "category": "measurement",
      "description": "Vertical visibility VVhshshs 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"
    },
    "skyClear": {
      "pattern": "^(SKC|CLR)$",
      "category": "status",
      "description": "Sky Clear (regional usage)"
    },
    "temperatureMax": {
      "pattern": "^TXM?\\d{2}\\/\\d{4}Z$",
      "category": "measurement",
      "description": "Maximum temperature TXTFTF/YFYFGFGFZ (optional, regional)"
    },
    "temperatureMin": {
      "pattern": "^TNM?\\d{2}\\/\\d{4}Z$",
      "category": "measurement",
      "description": "Minimum temperature TNTFTF/YFYFGFGFZ (optional, regional)"
    },
    "prob": {
      "pattern": "^PROB(30|40)$",
      "category": "trend",
      "description": "Probability indicator PROB30 or PROB40"
    },
    "tempo": {
      "pattern": "^TEMPO$",
      "category": "trend",
      "description": "Temporary fluctuations - changes <1h each, <50% of period"
    },
    "becmg": {
      "pattern": "^BECMG$",
      "category": "trend",
      "description": "Becoming - change expected at regular/irregular rate"
    },
    "fm": {
      "pattern": "^FM\\d{6}$",
      "category": "trend",
      "description": "From - new self-contained forecast period"
    },
    "changeTime": {
      "pattern": "^\\d{4}\\/\\d{4}$",
      "category": "datetime",
      "description": "Change group time period YYGG/YeYeGeGe",
      "placeholder": {
        "value": "0000/0000",
        "editable": [
          {
            "start": 0,
            "end": 2
          },
          {
            "start": 2,
            "end": 4
          },
          {
            "start": 5,
            "end": 7
          },
          {
            "start": 7,
            "end": 9
          }
        ]
      }
    }
  },
  "structure": [
    {
      "id": "identifier",
      "cardinality": [
        1,
        1
      ]
    },
    {
      "id": "modifierGroup",
      "cardinality": [
        1,
        1
      ],
      "oneOf": [
        {
          "id": "amendment",
          "cardinality": [
            0,
            1
          ]
        },
        {
          "id": "correction",
          "cardinality": [
            0,
            1
          ]
        }
      ]
    },
    {
      "id": "icao",
      "cardinality": [
        1,
        1
      ]
    },
    {
      "id": "issueTime",
      "cardinality": [
        1,
        1
      ]
    },
    {
      "id": "mainContent",
      "cardinality": [
        1,
        1
      ],
      "oneOf": [
        {
          "id": "nil",
          "terminal": true,
          "cardinality": [
            1,
            1
          ]
        },
        {
          "id": "forecastBody",
          "cardinality": [
            1,
            1
          ],
          "sequence": [
            {
              "id": "validityPeriod",
              "cardinality": [
                1,
                1
              ]
            },
            {
              "id": "forecastContent",
              "cardinality": [
                1,
                1
              ],
              "oneOf": [
                {
                  "id": "cnl",
                  "terminal": true,
                  "cardinality": [
                    1,
                    1
                  ]
                },
                {
                  "id": "fullForecast",
                  "cardinality": [
                    1,
                    1
                  ],
                  "sequence": [
                    {
                      "id": "wind",
                      "cardinality": [
                        1,
                        1
                      ]
                    },
                    {
                      "id": "visibilityGroup",
                      "cardinality": [
                        1,
                        1
                      ],
                      "oneOf": [
                        {
                          "id": "cavok",
                          "cardinality": [
                            1,
                            1
                          ]
                        },
                        {
                          "id": "visibilityDetails",
                          "cardinality": [
                            1,
                            1
                          ],
                          "sequence": [
                            {
                              "id": "visibility",
                              "cardinality": [
                                1,
                                1
                              ]
                            },
                            {
                              "id": "weather",
                              "cardinality": [
                                0,
                                3
                              ]
                            },
                            {
                              "id": "cloudGroup",
                              "cardinality": [
                                1,
                                1
                              ],
                              "oneOf": [
                                {
                                  "id": "nsc",
                                  "cardinality": [
                                    1,
                                    1
                                  ]
                                },
                                {
                                  "id": "skyClear",
                                  "cardinality": [
                                    1,
                                    1
                                  ]
                                },
                                {
                                  "id": "verticalVisibility",
                                  "cardinality": [
                                    1,
                                    1
                                  ]
                                },
                                {
                                  "id": "cloud",
                                  "cardinality": [
                                    1,
                                    4
                                  ]
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "id": "temperatureMax",
                      "cardinality": [
                        0,
                        1
                      ]
                    },
                    {
                      "id": "temperatureMin",
                      "cardinality": [
                        0,
                        1
                      ]
                    },
                    {
                      "id": "changeGroups",
                      "cardinality": [
                        0,
                        null
                      ],
                      "oneOf": [
                        {
                          "id": "tempoGroup",
                          "cardinality": [
                            1,
                            1
                          ],
                          "sequence": [
                            {
                              "id": "prob",
                              "cardinality": [
                                0,
                                1
                              ]
                            },
                            {
                              "id": "tempo",
                              "cardinality": [
                                1,
                                1
                              ]
                            },
                            {
                              "id": "changeTime",
                              "cardinality": [
                                1,
                                1
                              ]
                            },
                            {
                              "id": "wind",
                              "cardinality": [
                                0,
                                1
                              ]
                            },
                            {
                              "id": "tempoVisGroup",
                              "cardinality": [
                                0,
                                1
                              ],
                              "oneOf": [
                                {
                                  "id": "cavok",
                                  "cardinality": [
                                    1,
                                    1
                                  ]
                                },
                                {
                                  "id": "tempoVisDetails",
                                  "cardinality": [
                                    1,
                                    1
                                  ],
                                  "sequence": [
                                    {
                                      "id": "visibility",
                                      "cardinality": [
                                        0,
                                        1
                                      ]
                                    },
                                    {
                                      "id": "tempoWeatherGroup",
                                      "cardinality": [
                                        0,
                                        1
                                      ],
                                      "oneOf": [
                                        {
                                          "id": "weather",
                                          "cardinality": [
                                            1,
                                            3
                                          ]
                                        },
                                        {
                                          "id": "nsw",
                                          "cardinality": [
                                            1,
                                            1
                                          ]
                                        }
                                      ]
                                    },
                                    {
                                      "id": "tempoCloudGroup",
                                      "cardinality": [
                                        0,
                                        1
                                      ],
                                      "oneOf": [
                                        {
                                          "id": "nsc",
                                          "cardinality": [
                                            1,
                                            1
                                          ]
                                        },
                                        {
                                          "id": "verticalVisibility",
                                          "cardinality": [
                                            1,
                                            1
                                          ]
                                        },
                                        {
                                          "id": "cloud",
                                          "cardinality": [
                                            1,
                                            4
                                          ]
                                        }
                                      ]
                                    }
                                  ]
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "id": "becmgGroup",
                          "cardinality": [
                            1,
                            1
                          ],
                          "sequence": [
                            {
                              "id": "becmg",
                              "cardinality": [
                                1,
                                1
                              ]
                            },
                            {
                              "id": "changeTime",
                              "cardinality": [
                                1,
                                1
                              ]
                            },
                            {
                              "id": "wind",
                              "cardinality": [
                                0,
                                1
                              ]
                            },
                            {
                              "id": "becmgVisGroup",
                              "cardinality": [
                                0,
                                1
                              ],
                              "oneOf": [
                                {
                                  "id": "cavok",
                                  "cardinality": [
                                    1,
                                    1
                                  ]
                                },
                                {
                                  "id": "becmgVisDetails",
                                  "cardinality": [
                                    1,
                                    1
                                  ],
                                  "sequence": [
                                    {
                                      "id": "visibility",
                                      "cardinality": [
                                        0,
                                        1
                                      ]
                                    },
                                    {
                                      "id": "becmgWeatherGroup",
                                      "cardinality": [
                                        0,
                                        1
                                      ],
                                      "oneOf": [
                                        {
                                          "id": "weather",
                                          "cardinality": [
                                            1,
                                            3
                                          ]
                                        },
                                        {
                                          "id": "nsw",
                                          "cardinality": [
                                            1,
                                            1
                                          ]
                                        }
                                      ]
                                    },
                                    {
                                      "id": "becmgCloudGroup",
                                      "cardinality": [
                                        0,
                                        1
                                      ],
                                      "oneOf": [
                                        {
                                          "id": "nsc",
                                          "cardinality": [
                                            1,
                                            1
                                          ]
                                        },
                                        {
                                          "id": "verticalVisibility",
                                          "cardinality": [
                                            1,
                                            1
                                          ]
                                        },
                                        {
                                          "id": "cloud",
                                          "cardinality": [
                                            1,
                                            4
                                          ]
                                        }
                                      ]
                                    }
                                  ]
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "id": "fmGroup",
                          "cardinality": [
                            1,
                            1
                          ],
                          "sequence": [
                            {
                              "id": "fm",
                              "cardinality": [
                                1,
                                1
                              ]
                            },
                            {
                              "id": "wind",
                              "cardinality": [
                                1,
                                1
                              ]
                            },
                            {
                              "id": "fmVisGroup",
                              "cardinality": [
                                1,
                                1
                              ],
                              "oneOf": [
                                {
                                  "id": "cavok",
                                  "cardinality": [
                                    1,
                                    1
                                  ]
                                },
                                {
                                  "id": "fmVisDetails",
                                  "cardinality": [
                                    1,
                                    1
                                  ],
                                  "sequence": [
                                    {
                                      "id": "visibility",
                                      "cardinality": [
                                        1,
                                        1
                                      ]
                                    },
                                    {
                                      "id": "weather",
                                      "cardinality": [
                                        0,
                                        3
                                      ]
                                    },
                                    {
                                      "id": "fmCloudGroup",
                                      "cardinality": [
                                        1,
                                        1
                                      ],
                                      "oneOf": [
                                        {
                                          "id": "nsc",
                                          "cardinality": [
                                            1,
                                            1
                                          ]
                                        },
                                        {
                                          "id": "verticalVisibility",
                                          "cardinality": [
                                            1,
                                            1
                                          ]
                                        },
                                        {
                                          "id": "cloud",
                                          "cardinality": [
                                            1,
                                            4
                                          ]
                                        }
                                      ]
                                    }
                                  ]
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "id": "probGroup",
                          "cardinality": [
                            1,
                            1
                          ],
                          "sequence": [
                            {
                              "id": "prob",
                              "cardinality": [
                                1,
                                1
                              ]
                            },
                            {
                              "id": "changeTime",
                              "cardinality": [
                                1,
                                1
                              ]
                            },
                            {
                              "id": "wind",
                              "cardinality": [
                                0,
                                1
                              ]
                            },
                            {
                              "id": "probVisGroup",
                              "cardinality": [
                                0,
                                1
                              ],
                              "oneOf": [
                                {
                                  "id": "cavok",
                                  "cardinality": [
                                    1,
                                    1
                                  ]
                                },
                                {
                                  "id": "probVisDetails",
                                  "cardinality": [
                                    1,
                                    1
                                  ],
                                  "sequence": [
                                    {
                                      "id": "visibility",
                                      "cardinality": [
                                        0,
                                        1
                                      ]
                                    },
                                    {
                                      "id": "probWeatherGroup",
                                      "cardinality": [
                                        0,
                                        1
                                      ],
                                      "oneOf": [
                                        {
                                          "id": "weather",
                                          "cardinality": [
                                            1,
                                            3
                                          ]
                                        },
                                        {
                                          "id": "nsw",
                                          "cardinality": [
                                            1,
                                            1
                                          ]
                                        }
                                      ]
                                    },
                                    {
                                      "id": "probCloudGroup",
                                      "cardinality": [
                                        0,
                                        1
                                      ],
                                      "oneOf": [
                                        {
                                          "id": "nsc",
                                          "cardinality": [
                                            1,
                                            1
                                          ]
                                        },
                                        {
                                          "id": "verticalVisibility",
                                          "cardinality": [
                                            1,
                                            1
                                          ]
                                        },
                                        {
                                          "id": "cloud",
                                          "cardinality": [
                                            1,
                                            4
                                          ]
                                        }
                                      ]
                                    }
                                  ]
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "suggestions": {
    "items": {
      "identifier": [
        {
          "text": "AMD",
          "description": "Amendment"
        },
        {
          "text": "COR",
          "description": "Correction"
        }
      ],
      "taf_short": [
        {
          "type": "switchGrammar",
          "text": "TAF Short (≤12h) ▶",
          "description": "Short-term forecast",
          "target": "fc"
        }
      ],
      "taf_long": [
        {
          "type": "switchGrammar",
          "text": "TAF Long (12-30h) ▶",
          "description": "Long-term forecast",
          "target": "ft"
        }
      ],
      "icao": [],
      "nil": [
        {
          "text": "NIL",
          "description": "Missing forecast"
        }
      ],
      "cnl": [
        {
          "text": "CNL",
          "description": "Cancelled forecast"
        }
      ],
      "issueTime": [],
      "validityPeriod": [],
      "changeTime": [],
      "wind": [
        { "text": "VRB02KT", "description": "Variable wind 2 kt" },
        { "text": "VRB01MPS", "description": "Variable wind 1 m/s" },
        { "text": "00000KT", "description": "Calm wind" },
        { "text": "KT", "description": "Knots" },
        { "text": "MPS", "description": "Metres per second" }
      ],
      "cavok": [
        { "text": "CAVOK", "description": "Ceiling And Visibility OK" },
        { "text": "9999", "description": "10km or more" },
        { "text": "3000", "description": "3000m visibility" }
      ],
      "cloud": [
        { "text": "NSC", "description": "No significant cloud" },
        { "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" }
      ],
      "weather": [
        {
          "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": "-SN",
          "description": "Light snow"
        },
        {
          "text": "SN",
          "description": "Moderate snow"
        },
        {
          "text": "+SN",
          "description": "Heavy snow"
        },
        {
          "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": "TS",
          "description": "Thunderstorm"
        },
        {
          "text": "TSRA",
          "description": "Thunderstorm with rain"
        },
        {
          "text": "+TSRA",
          "description": "Heavy thunderstorm with rain"
        },
        {
          "text": "TSSN",
          "description": "Thunderstorm with snow"
        },
        {
          "text": "TSGR",
          "description": "Thunderstorm with hail"
        },
        {
          "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": "-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": "BLSN",
          "description": "Blowing snow"
        },
        {
          "text": "BLDU",
          "description": "Blowing dust"
        },
        {
          "text": "BLSA",
          "description": "Blowing sand"
        },
        {
          "text": "SS",
          "description": "Sandstorm"
        },
        {
          "text": "DS",
          "description": "Duststorm"
        },
        {
          "text": "SQ",
          "description": "Squalls"
        },
        {
          "text": "FC",
          "description": "Funnel cloud"
        },
        {
          "type": "category",
          "text": "Forecast 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": "-SN",
              "description": "Light snow"
            },
            {
              "text": "SN",
              "description": "Moderate snow"
            },
            {
              "text": "+SN",
              "description": "Heavy snow"
            },
            {
              "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": "TS",
              "description": "Thunderstorm"
            },
            {
              "text": "TSRA",
              "description": "Thunderstorm with rain"
            },
            {
              "text": "+TSRA",
              "description": "Heavy thunderstorm with rain"
            },
            {
              "text": "TSSN",
              "description": "Thunderstorm with snow"
            },
            {
              "text": "TSGR",
              "description": "Thunderstorm with hail"
            },
            {
              "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": "-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": "BLSN",
              "description": "Blowing snow"
            },
            {
              "text": "BLDU",
              "description": "Blowing dust"
            },
            {
              "text": "BLSA",
              "description": "Blowing sand"
            },
            {
              "text": "SS",
              "description": "Sandstorm"
            },
            {
              "text": "DS",
              "description": "Duststorm"
            },
            {
              "text": "SQ",
              "description": "Squalls"
            },
            {
              "text": "FC",
              "description": "Funnel cloud"
            }
          ]
        },
        {
          "text": "NSW",
          "description": "No Significant Weather"
        },
        {
          "type": "category",
          "text": "Weather Change",
          "description": "Weather phenomena",
          "children": [
            {
              "text": "-RA",
              "description": "Light rain"
            },
            {
              "text": "RA",
              "description": "Moderate rain"
            },
            {
              "text": "+RA",
              "description": "Heavy rain"
            },
            {
              "text": "-SHRA",
              "description": "Light rain showers"
            },
            {
              "text": "SHRA",
              "description": "Rain showers"
            },
            {
              "text": "+SHRA",
              "description": "Heavy rain showers"
            },
            {
              "text": "TSRA",
              "description": "Thunderstorm with rain"
            },
            {
              "text": "+TSRA",
              "description": "Heavy thunderstorm with rain"
            },
            {
              "text": "-SN",
              "description": "Light snow"
            },
            {
              "text": "SN",
              "description": "Moderate snow"
            },
            {
              "text": "+SN",
              "description": "Heavy snow"
            },
            {
              "text": "FG",
              "description": "Fog (vis <1000m)"
            },
            {
              "text": "BCFG",
              "description": "Patches of fog"
            },
            {
              "text": "BR",
              "description": "Mist (vis 1000-5000m)"
            },
            {
              "text": "HZ",
              "description": "Haze"
            }
          ]
        }
      ],
      "temperatureMax": [
        {
          "text": "TX25/0612Z",
          "description": "Max temperature"
        },
        {
          "text": "TN18/0700Z",
          "description": "Min temperature"
        }
      ],
      "prob": [
        {
          "text": "BECMG",
          "description": "Becoming"
        },
        {
          "text": "TEMPO",
          "description": "Temporary fluctuations"
        },
        {
          "text": "PROB30",
          "description": "Probability 30%"
        },
        {
          "text": "PROB40",
          "description": "Probability 40%"
        },
        {
          "text": "FM061200",
          "description": "From (new period)"
        }
      ]
    },
    "after": {
      "identifier": [
        "identifier",
        "icao"
      ],
      "amendment": [
        "icao"
      ],
      "correction": [
        "icao"
      ],
      "icao": [
        "issueTime"
      ],
      "issueTime": [
        "nil",
        "taf_short",
        "taf_long"
      ],
      "validityPeriod": [
        "cnl",
        "wind"
      ],
      "wind": [
        "cavok"
      ],
      "visibility": [
        "cloud",
        "weather"
      ],
      "weather": [
        "cloud"
      ],
      "cloud": [
        "cloud",
        "temperatureMax",
        "prob"
      ],
      "nsc": [
        "temperatureMax",
        "prob"
      ],
      "verticalVisibility": [
        "temperatureMax",
        "prob"
      ],
      "cavok": [
        "temperatureMax",
        "prob"
      ],
      "temperatureMax": [
        "temperatureMax",
        "prob"
      ],
      "temperatureMin": [
        "prob"
      ],
      "prob": [
        "prob",
        "changeTime"
      ],
      "tempo": [
        "changeTime"
      ],
      "becmg": [
        "changeTime"
      ],
      "fm": [
        "wind"
      ],
      "changeTime": [
        "wind",
        "cavok",
        "weather",
        "cloud"
      ],
      "nsw": [
        "cloud",
        "prob"
      ]
    }
  },
  "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)",
      "UP": "Unknown precipitation"
    },
    "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",
      "SS": "Sandstorm",
      "DS": "Duststorm"
    }
  },
  "examples": [
    "TAF LFPG 160500Z 1606/1712 24008KT 9999 FEW040",
    "TAF AMD LFPG 160800Z 1609/1712 27015KT 9999 SCT030 BECMG 1612/1614 BKN020",
    "TAF LFPG 160500Z 1606/1712 24008KT 9999 FEW040 TEMPO 1612/1618 4000 TSRA BKN025CB",
    "TAF LFPG 160500Z 1606/1712 24008KT 9999 SCT040 PROB30 1618/1624 2000 +TSRA",
    "TAF LFPG 160500Z 1606/1712 24008KT 9999 SCT040 PROB40 TEMPO 1612/1620 3000 SHRA BKN015",
    "TAF EGLL 160600Z 1606/1706 18012KT CAVOK FM161200 22015G25KT 9999 SCT040",
    "TAF KJFK 160530Z 1606/1712 32015KT P6SM FEW250 TX25/1618Z TN15/1610Z",
    "TAF LFPG 160500Z 1606/1712 VRB02KT 0400 FG VV002 BECMG 1608/1610 4000 BR BKN010",
    "TAF LFPG 160500Z 1606/1712 27020G35KT 8000 -SHRA BKN025 TEMPO 1610/1615 4000 +SHRA BKN015CB",
    "TAF LFPG 160500Z NIL",
    "TAF LFPG 160500Z 1606/1712 CNL"
  ]
}
