def from_dict(cls, d, encoding='base64'):
        '''
        Construct a ``Report`` object from dictionary.

        :type d: dictionary
        :param d: dictionary representing the report
        :param encoding: encoding of strings in the dictionary (default: 'base64')
        :return: Report object
        '''
        report = Report(Report._decode(d['name'], encoding))
        report.set_status(Report._decode(d['status'], encoding))
        sub_reports = Report._decode(d['sub_reports'], encoding)
        del d['sub_reports']
        for k, v in d.items():
            if k in sub_reports:
                report.add(k, Report.from_dict(v))
            else:
                if k.lower() == 'status':
                    report.set_status(Report._decode(v, encoding))
                else:
                    report.add(k, Report._decode(v, encoding))

        return report
Construct a ``Report`` object from dictionary.

        :type d: dictionary
        :param d: dictionary representing the report
        :param encoding: encoding of strings in the dictionary (default: 'base64')
        :return: Report object