<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def decompose_locale(locale, strict=True):
 """ Return the decomposition of the specified locale into a language code and a country code. @param locale: a string representation of a locale, i.e., a ISO 639-3 alpha-3 code (or alpha-2 code), optionally followed by a dash character ``-`` and a ISO 3166-1 alpha-2 code. If ``None`` passed, the function returns the default locale, i.e., standard English ``('eng', None)``. @param strict: indicate whether the string representation of a locale has to be strictly compliant with RFC 4646, or whether a Java- style locale (character ``_`` instead of ``-``) is accepted. @return: a tuple ``(language_code, country_code)``, where the first code represents a ISO 639-3 alpha-3 code (or alpha-2 code), and the second code a ISO 3166-1 alpha-2 code. """

        if locale is None:
            return ('eng', None)

        match = REGEX_LOCALE.match(locale)
        if match is None:
            if strict == True:
                raise Locale.MalformedLocaleException()
            match = REGEX_JAVA_LOCALE.match(locale)
            if match is None:
                raise Locale.MalformedLocaleException()

        (_, locale_language_code, locale_country_code, language_code) =  match.groups()
        return (locale_language_code, locale_country_code) if language_code is None \
            else (language_code, None)