system: You are an expert security code reviewer. You will be shown a source code file along with a multi-select question listing several CWE (Common Weakness Enumeration) categories. Your task is to identify which of the listed CWEs are present in the code.

OUTPUT FORMAT: Respond with the letter(s) of all correct options, sorted alphabetically and comma-separated, wrapped in a single \boxed{...}. Examples: `\boxed{A}` for one correct, `\boxed{A,C}` for two, `\boxed{A,C,E}` for three. Output the boxed answer ONLY -- no explanation, no other text.

user: ```python
'''
docomo API
 - Powered by アドバンスト・メディア
 - Powered by NTTテクノクロス
 - Powered by goo
 - Powered by Jetrun
'''

import requests
import json
import datetime

try:
    APIKEY = open('config/docomo-token').read().split('\n')
    if '' in APIKEY: APIKEY.remove('')
except:
    print('Configuration file does not exist')
    exit(0)


def reading(text):
    ## -----*----- カタカナ化 -----*----- ##
    url = "https://api.apigw.smt.docomo.ne.jp/gooLanguageAnalysis/v1/hiragana?APIKEY={}"
    header = { 'Content-Type': 'application/json' }
    data = { 'sentence': text, 'output_type': 'katakana' }

    for key in APIKEY:
        res = requests.post(url.format(key), headers=header, data=json.dumps(data))
        if check_health(res): return res

    return res


def sensitive(text):
    ## -----*----- センシティブ分析  -----*----- ##
    url = 'https://api.apigw.smt.docomo.ne.jp/truetext/v1/sensitivecheck?APIKEY={}'
    header = { 'Content-Type': 'application/x-www-form-urlencoded' }
    body = { 'text': text }

    for key in APIKEY:
        res = requests.post(url.format(key), headers=header, data=body)
        if check_health(res): return res

    return res


def category(text):
    ## -----*----- カテゴリ分析 -----*----- ##
    url = 'https://api.apigw.smt.docomo.ne.jp/truetext/v1/clusteranalytics?APIKEY={}'
    header = { 'Content-Type': 'application/x-www-form-urlencoded' }
    body = { 'text': text }

    for key in APIKEY:
        res = requests.post(url.format(key), headers=header, data=body)
        if check_health(res): return res

    return res


def speech_recognition(wav_path):
    ## -----*----- 音声認識 -----*----- ##
    url = 'https://api.apigw.smt.docomo.ne.jp/amiVoice/v1/recognize?APIKEY={}'
    file = {'a': open(wav_path, 'rb'), 'v':'on'}

    for key in APIKEY:
        res = requests.post(url.format(key), files=file)
        if check_health(res): return res

    return res


def check_health(res):
    ## -----*----- ステータスチェック -----*----- ##
    code = res.status_code
    try:
        assert code == requests.codes.ok
    except:
        return False

    return True


if __name__ == '__main__':
    print(category('私の名前は阿部です。').json())

```

Which of the following CWE vulnerability categories are present in this code? Multiple options may be correct.

  A) CWE-776: Improper Restriction of Recursive Entity References in DTDs ('XML Entity Expansion')
  B) CWE-312: Cleartext Storage of Sensitive Information
  C) CWE-614: Sensitive Cookie in HTTPS Session Without 'Secure' Attribute
  D) CWE-215: Insertion of Sensitive Information Into Debugging Code
  E) CWE-732: Incorrect Permission Assignment for Critical Resource
  F) CWE-116: Improper Encoding or Escaping of Output
Answer: B