)]}'
{"monasca_agent/collector/checks_d/libvirt.py":[{"author":{"_account_id":11670,"name":"Alok Kumar Maurya","email":"alok.maurya88@gmail.com","username":"alokmaurya"},"change_message_id":"eb4031dcbee8ee4a76745e7c0cacb736c767ac0d","unresolved":false,"context_lines":[{"line_number":301,"context_line":"                if vnic[0].name in metric_cache[inst_name][metric_name]:"},{"line_number":302,"context_line":"                    cache_time \u003d metric_cache[inst_name][metric_name][vnic[0].name][\u0027timestamp\u0027]"},{"line_number":303,"context_line":"                    time_diff \u003d sample_time - float(cache_time)"},{"line_number":304,"context_line":"                    val_diff \u003d value - metric_cache[inst_name][metric_name][vnic[0].name][\u0027value\u0027] / time_diff"},{"line_number":305,"context_line":"                    if val_diff \u003c 0:"},{"line_number":306,"context_line":"                        # Bad value, save current reading and skip"},{"line_number":307,"context_line":"                        self.log.warn(\"Ignoring negative network sample for: \""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_afe01c97","line":304,"updated":"2016-06-24 13:32:48.000000000","message":"Please  handle  ZeroDivisionError","commit_id":"6c72e560cf4b70a1d55532337941e102cf027970"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"c8abec46ea8423bac78a80861f3edb35c84a9d5f","unresolved":false,"context_lines":[{"line_number":301,"context_line":"                if vnic[0].name in metric_cache[inst_name][metric_name]:"},{"line_number":302,"context_line":"                    cache_time \u003d metric_cache[inst_name][metric_name][vnic[0].name][\u0027timestamp\u0027]"},{"line_number":303,"context_line":"                    time_diff \u003d sample_time - float(cache_time)"},{"line_number":304,"context_line":"                    val_diff \u003d value - metric_cache[inst_name][metric_name][vnic[0].name][\u0027value\u0027] / time_diff"},{"line_number":305,"context_line":"                    if val_diff \u003c 0:"},{"line_number":306,"context_line":"                        # Bad value, save current reading and skip"},{"line_number":307,"context_line":"                        self.log.warn(\"Ignoring negative network sample for: \""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_6812aa58","line":304,"in_reply_to":"3aaa91ec_afe01c97","updated":"2016-06-24 14:11:43.000000000","message":"Done","commit_id":"6c72e560cf4b70a1d55532337941e102cf027970"},{"author":{"_account_id":11670,"name":"Alok Kumar Maurya","email":"alok.maurya88@gmail.com","username":"alokmaurya"},"change_message_id":"eb4031dcbee8ee4a76745e7c0cacb736c767ac0d","unresolved":false,"context_lines":[{"line_number":458,"context_line":"                    rate_name][\u0027timestamp\u0027]"},{"line_number":459,"context_line":"                time_diff \u003d sample_time - float(last_update_time)"},{"line_number":460,"context_line":"                val_diff \u003d metric_aggregate[metric] - metric_cache[inst_name]["},{"line_number":461,"context_line":"                    rate_name][\u0027value\u0027] / time_diff"},{"line_number":462,"context_line":"                if val_diff \u003c 0:"},{"line_number":463,"context_line":"                    # Bad value, save current reading and skip"},{"line_number":464,"context_line":"                    self.log.warn(\"Ignoring negative disk sample for: \""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_4fe6d8b0","line":461,"updated":"2016-06-24 13:32:48.000000000","message":"Please  handle  ZeroDivisionError","commit_id":"6c72e560cf4b70a1d55532337941e102cf027970"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"c8abec46ea8423bac78a80861f3edb35c84a9d5f","unresolved":false,"context_lines":[{"line_number":458,"context_line":"                    rate_name][\u0027timestamp\u0027]"},{"line_number":459,"context_line":"                time_diff \u003d sample_time - float(last_update_time)"},{"line_number":460,"context_line":"                val_diff \u003d metric_aggregate[metric] - metric_cache[inst_name]["},{"line_number":461,"context_line":"                    rate_name][\u0027value\u0027] / time_diff"},{"line_number":462,"context_line":"                if val_diff \u003c 0:"},{"line_number":463,"context_line":"                    # Bad value, save current reading and skip"},{"line_number":464,"context_line":"                    self.log.warn(\"Ignoring negative disk sample for: \""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_a8181276","line":461,"in_reply_to":"3aaa91ec_4fe6d8b0","updated":"2016-06-24 14:11:43.000000000","message":"Done","commit_id":"6c72e560cf4b70a1d55532337941e102cf027970"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"9062af691b22c428d2290f52a3e28c24622bd1e0","unresolved":false,"context_lines":[{"line_number":462,"context_line":"                val_diff \u003d self._calculate_rate(metric_aggregate[metric],"},{"line_number":463,"context_line":"                                                metric_cache[inst_name][rate_name][\u0027value\u0027],"},{"line_number":464,"context_line":"                                                time_diff)"},{"line_number":465,"context_line":"                if val_diff \u003c 0:"},{"line_number":466,"context_line":"                    # Bad value, save current reading and skip"},{"line_number":467,"context_line":"                    self.log.warn(\"Ignoring negative disk sample for: \""},{"line_number":468,"context_line":"                                  \"{0} new value: {1} old value: {2}\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_34ad9888","line":465,"range":{"start_line":465,"start_character":19,"end_line":465,"end_character":31},"updated":"2016-06-24 15:09:23.000000000","message":"Do we need two separate warnings about: 1. current_value - cache_value \u003c0 2. time_diff \u003d 0 (zero division error) ?","commit_id":"7beb27cb700aac3500005a73264ef0ab1fd0453b"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"26e9a9d7e42c0d012924689e9bdb97e7c94c90a5","unresolved":false,"context_lines":[{"line_number":462,"context_line":"                val_diff \u003d self._calculate_rate(metric_aggregate[metric],"},{"line_number":463,"context_line":"                                                metric_cache[inst_name][rate_name][\u0027value\u0027],"},{"line_number":464,"context_line":"                                                time_diff)"},{"line_number":465,"context_line":"                if val_diff \u003c 0:"},{"line_number":466,"context_line":"                    # Bad value, save current reading and skip"},{"line_number":467,"context_line":"                    self.log.warn(\"Ignoring negative disk sample for: \""},{"line_number":468,"context_line":"                                  \"{0} new value: {1} old value: {2}\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_ddcc378b","line":465,"range":{"start_line":465,"start_character":19,"end_line":465,"end_character":31},"in_reply_to":"3aaa91ec_34ad9888","updated":"2016-06-24 16:06:17.000000000","message":"Yes we are already logging the warning at 467 , 422 309 for the value_diff is \u003c 0 .\nFor the time_diff \u003d0 , we are not logging warning instead we are catching the ZeroDivisionError at 714.\nDo you want me to add self.log.error at 714?","commit_id":"7beb27cb700aac3500005a73264ef0ab1fd0453b"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"be5dd7257f9b8316c877a708a50df3315185b8b6","unresolved":false,"context_lines":[{"line_number":462,"context_line":"                val_diff \u003d self._calculate_rate(metric_aggregate[metric],"},{"line_number":463,"context_line":"                                                metric_cache[inst_name][rate_name][\u0027value\u0027],"},{"line_number":464,"context_line":"                                                time_diff)"},{"line_number":465,"context_line":"                if val_diff \u003c 0:"},{"line_number":466,"context_line":"                    # Bad value, save current reading and skip"},{"line_number":467,"context_line":"                    self.log.warn(\"Ignoring negative disk sample for: \""},{"line_number":468,"context_line":"                                  \"{0} new value: {1} old value: {2}\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_08eb1fe0","line":465,"range":{"start_line":465,"start_character":19,"end_line":465,"end_character":31},"in_reply_to":"3aaa91ec_3df29b9a","updated":"2016-06-24 16:21:01.000000000","message":"Done","commit_id":"7beb27cb700aac3500005a73264ef0ab1fd0453b"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"ddbb543faf390f1bf2975a5cba054bde00c849f1","unresolved":false,"context_lines":[{"line_number":462,"context_line":"                val_diff \u003d self._calculate_rate(metric_aggregate[metric],"},{"line_number":463,"context_line":"                                                metric_cache[inst_name][rate_name][\u0027value\u0027],"},{"line_number":464,"context_line":"                                                time_diff)"},{"line_number":465,"context_line":"                if val_diff \u003c 0:"},{"line_number":466,"context_line":"                    # Bad value, save current reading and skip"},{"line_number":467,"context_line":"                    self.log.warn(\"Ignoring negative disk sample for: \""},{"line_number":468,"context_line":"                                  \"{0} new value: {1} old value: {2}\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_3df29b9a","line":465,"range":{"start_line":465,"start_character":19,"end_line":465,"end_character":31},"in_reply_to":"3aaa91ec_ddcc378b","updated":"2016-06-24 16:08:37.000000000","message":"Yes please. I think adding self.log.error is better :-) Thanks!","commit_id":"7beb27cb700aac3500005a73264ef0ab1fd0453b"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"00750c55a6b4cc06cb7c1658d8d1044678d63223","unresolved":false,"context_lines":[{"line_number":301,"context_line":"                if vnic[0].name in metric_cache[inst_name][metric_name]:"},{"line_number":302,"context_line":"                    cache_time \u003d metric_cache[inst_name][metric_name][vnic[0].name][\u0027timestamp\u0027]"},{"line_number":303,"context_line":"                    time_diff \u003d sample_time - float(cache_time)"},{"line_number":304,"context_line":"                    val_diff \u003d self._calculate_rate(value,"},{"line_number":305,"context_line":"                                                    metric_cache[inst_name][metric_name][vnic[0].name][\u0027value\u0027],"},{"line_number":306,"context_line":"                                                    time_diff)"},{"line_number":307,"context_line":"                    if val_diff \u003c 0:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_1e7b52c2","line":304,"range":{"start_line":304,"start_character":20,"end_line":304,"end_character":28},"updated":"2016-06-24 18:30:01.000000000","message":"This is actually the rate now. Let\u0027s name it correctly since you fixed the calculation","commit_id":"0f162548235afd2273819d822ca8857a654929ca"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"1a17df54fe204716090a8af53ea21fef8b411f79","unresolved":false,"context_lines":[{"line_number":301,"context_line":"                if vnic[0].name in metric_cache[inst_name][metric_name]:"},{"line_number":302,"context_line":"                    cache_time \u003d metric_cache[inst_name][metric_name][vnic[0].name][\u0027timestamp\u0027]"},{"line_number":303,"context_line":"                    time_diff \u003d sample_time - float(cache_time)"},{"line_number":304,"context_line":"                    val_diff \u003d self._calculate_rate(value,"},{"line_number":305,"context_line":"                                                    metric_cache[inst_name][metric_name][vnic[0].name][\u0027value\u0027],"},{"line_number":306,"context_line":"                                                    time_diff)"},{"line_number":307,"context_line":"                    if val_diff \u003c 0:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_ed9970c5","line":304,"range":{"start_line":304,"start_character":20,"end_line":304,"end_character":28},"in_reply_to":"3aaa91ec_1e7b52c2","updated":"2016-06-25 04:06:24.000000000","message":"Done","commit_id":"0f162548235afd2273819d822ca8857a654929ca"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"00750c55a6b4cc06cb7c1658d8d1044678d63223","unresolved":false,"context_lines":[{"line_number":416,"context_line":"                    last_update_time \u003d metric_cache[inst_name][metric_name][disk["},{"line_number":417,"context_line":"                        0].device][\u0027timestamp\u0027]"},{"line_number":418,"context_line":"                    time_diff \u003d sample_time - float(last_update_time)"},{"line_number":419,"context_line":"                    val_diff \u003d self._calculate_rate(value, cached_val, time_diff)"},{"line_number":420,"context_line":"                    if val_diff \u003c 0:"},{"line_number":421,"context_line":"                        # Bad value, save current reading and skip"},{"line_number":422,"context_line":"                        self.log.warn(\"Ignoring negative disk sample for: \""}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_deb54a7e","line":419,"range":{"start_line":419,"start_character":20,"end_line":419,"end_character":28},"updated":"2016-06-24 18:30:01.000000000","message":"This is actually the rate now. Let\u0027s name it correctly since you fixed the calculation","commit_id":"0f162548235afd2273819d822ca8857a654929ca"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"1a17df54fe204716090a8af53ea21fef8b411f79","unresolved":false,"context_lines":[{"line_number":416,"context_line":"                    last_update_time \u003d metric_cache[inst_name][metric_name][disk["},{"line_number":417,"context_line":"                        0].device][\u0027timestamp\u0027]"},{"line_number":418,"context_line":"                    time_diff \u003d sample_time - float(last_update_time)"},{"line_number":419,"context_line":"                    val_diff \u003d self._calculate_rate(value, cached_val, time_diff)"},{"line_number":420,"context_line":"                    if val_diff \u003c 0:"},{"line_number":421,"context_line":"                        # Bad value, save current reading and skip"},{"line_number":422,"context_line":"                        self.log.warn(\"Ignoring negative disk sample for: \""}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_cd94748c","line":419,"range":{"start_line":419,"start_character":20,"end_line":419,"end_character":28},"in_reply_to":"3aaa91ec_deb54a7e","updated":"2016-06-25 04:06:24.000000000","message":"Done","commit_id":"0f162548235afd2273819d822ca8857a654929ca"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"00750c55a6b4cc06cb7c1658d8d1044678d63223","unresolved":false,"context_lines":[{"line_number":710,"context_line":"    def _calculate_rate(self, current_value, cache_value, time_diff):"},{"line_number":711,"context_line":"        \"\"\"Calculate rate based on current, cache value and time_diff.\"\"\""},{"line_number":712,"context_line":"        try:"},{"line_number":713,"context_line":"            val_diff \u003d (current_value - cache_value) / time_diff"},{"line_number":714,"context_line":"        except ZeroDivisionError as e:"},{"line_number":715,"context_line":"            self.log.error(\"Time difference between current time and \""},{"line_number":716,"context_line":"                           \"last_update time is 0 . {0}\".format(e))"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_9e98e21d","line":713,"range":{"start_line":713,"start_character":12,"end_line":713,"end_character":20},"updated":"2016-06-24 18:30:01.000000000","message":"This is really rate not difference in values","commit_id":"0f162548235afd2273819d822ca8857a654929ca"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"1a17df54fe204716090a8af53ea21fef8b411f79","unresolved":false,"context_lines":[{"line_number":710,"context_line":"    def _calculate_rate(self, current_value, cache_value, time_diff):"},{"line_number":711,"context_line":"        \"\"\"Calculate rate based on current, cache value and time_diff.\"\"\""},{"line_number":712,"context_line":"        try:"},{"line_number":713,"context_line":"            val_diff \u003d (current_value - cache_value) / time_diff"},{"line_number":714,"context_line":"        except ZeroDivisionError as e:"},{"line_number":715,"context_line":"            self.log.error(\"Time difference between current time and \""},{"line_number":716,"context_line":"                           \"last_update time is 0 . {0}\".format(e))"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_4defe41d","line":713,"range":{"start_line":713,"start_character":12,"end_line":713,"end_character":20},"in_reply_to":"3aaa91ec_9e98e21d","updated":"2016-06-25 04:06:24.000000000","message":"Done","commit_id":"0f162548235afd2273819d822ca8857a654929ca"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"501bdb200a3dd3c9e22911f348e62345f1ce246f","unresolved":false,"context_lines":[{"line_number":299,"context_line":""},{"line_number":300,"context_line":"                value \u003d int(vnic[1].__getattribute__(metric))"},{"line_number":301,"context_line":"                if vnic[0].name in metric_cache[inst_name][metric_name]:"},{"line_number":302,"context_line":"                    cache_time \u003d metric_cache[inst_name][metric_name][vnic[0].name][\u0027timestamp\u0027]"},{"line_number":303,"context_line":"                    time_diff \u003d sample_time - float(cache_time)"},{"line_number":304,"context_line":"                    rate_value \u003d self._calculate_rate(value,"},{"line_number":305,"context_line":"                                                      metric_cache[inst_name][metric_name][vnic[0].name][\u0027value\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_df396bda","line":302,"range":{"start_line":302,"start_character":20,"end_line":302,"end_character":30},"updated":"2016-06-27 23:01:33.000000000","message":"Elsewhere you called the data from the cache last_update_time.  That\u0027s more clear to me than cache_time.","commit_id":"db66563255992ce9c675802e6e7fce4135fd8ef0"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"1713c527e467271b90fc58e6b4767d7b6bfa12b7","unresolved":false,"context_lines":[{"line_number":299,"context_line":""},{"line_number":300,"context_line":"                value \u003d int(vnic[1].__getattribute__(metric))"},{"line_number":301,"context_line":"                if vnic[0].name in metric_cache[inst_name][metric_name]:"},{"line_number":302,"context_line":"                    cache_time \u003d metric_cache[inst_name][metric_name][vnic[0].name][\u0027timestamp\u0027]"},{"line_number":303,"context_line":"                    time_diff \u003d sample_time - float(cache_time)"},{"line_number":304,"context_line":"                    rate_value \u003d self._calculate_rate(value,"},{"line_number":305,"context_line":"                                                      metric_cache[inst_name][metric_name][vnic[0].name][\u0027value\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_fc80aa8d","line":302,"range":{"start_line":302,"start_character":20,"end_line":302,"end_character":30},"in_reply_to":"3aaa91ec_df396bda","updated":"2016-06-28 06:05:00.000000000","message":"Done","commit_id":"db66563255992ce9c675802e6e7fce4135fd8ef0"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"da7245383abaf23d4747298358dacb632fecf4d5","unresolved":false,"context_lines":[{"line_number":299,"context_line":""},{"line_number":300,"context_line":"                value \u003d int(vnic[1].__getattribute__(metric))"},{"line_number":301,"context_line":"                if vnic[0].name in metric_cache[inst_name][metric_name]:"},{"line_number":302,"context_line":"                    cache_time \u003d metric_cache[inst_name][metric_name][vnic[0].name][\u0027timestamp\u0027]"},{"line_number":303,"context_line":"                    time_diff \u003d sample_time - float(cache_time)"},{"line_number":304,"context_line":"                    rate_value \u003d self._calculate_rate(value,"},{"line_number":305,"context_line":"                                                      metric_cache[inst_name][metric_name][vnic[0].name][\u0027value\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_0120b1f6","line":302,"range":{"start_line":302,"start_character":20,"end_line":302,"end_character":30},"in_reply_to":"3aaa91ec_df396bda","updated":"2016-06-28 05:10:58.000000000","message":"I agree too.","commit_id":"db66563255992ce9c675802e6e7fce4135fd8ef0"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"cfe23ae61d42f5e521dd36a2dfc3ec26797e4028","unresolved":false,"context_lines":[{"line_number":471,"context_line":"                                              \u0027value\u0027]))"},{"line_number":472,"context_line":"                    metric_cache[inst_name][rate_name] \u003d {"},{"line_number":473,"context_line":"                        \u0027timestamp\u0027: sample_time,"},{"line_number":474,"context_line":"                        \u0027value\u0027: metric_aggregate[metric]}"},{"line_number":475,"context_line":"                self.gauge(rate_name, rate_value,"},{"line_number":476,"context_line":"                           dimensions\u003dthis_dimensions)"},{"line_number":477,"context_line":"            self.gauge(\"vm.{0}_total\".format(metric), metric_aggregate["}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_65a43708","line":474,"range":{"start_line":474,"start_character":24,"end_line":474,"end_character":57},"updated":"2016-06-27 18:16:00.000000000","message":"All of the other places that check for a rate_value \u003c 0 don\u0027t actually send the metric, but this one does. I realize you didn\u0027t introduce that problem, but can you fix it?","commit_id":"db66563255992ce9c675802e6e7fce4135fd8ef0"},{"author":{"_account_id":10781,"name":"selvakumar","email":"selvakumar.s2@hpe.com","username":"selvakumar"},"change_message_id":"1713c527e467271b90fc58e6b4767d7b6bfa12b7","unresolved":false,"context_lines":[{"line_number":471,"context_line":"                                              \u0027value\u0027]))"},{"line_number":472,"context_line":"                    metric_cache[inst_name][rate_name] \u003d {"},{"line_number":473,"context_line":"                        \u0027timestamp\u0027: sample_time,"},{"line_number":474,"context_line":"                        \u0027value\u0027: metric_aggregate[metric]}"},{"line_number":475,"context_line":"                self.gauge(rate_name, rate_value,"},{"line_number":476,"context_line":"                           dimensions\u003dthis_dimensions)"},{"line_number":477,"context_line":"            self.gauge(\"vm.{0}_total\".format(metric), metric_aggregate["}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_1c35b6f6","line":474,"range":{"start_line":474,"start_character":24,"end_line":474,"end_character":57},"in_reply_to":"3aaa91ec_65a43708","updated":"2016-06-28 06:05:00.000000000","message":"Yes Bryant . This was missing in the original code . I have fixed in the latest patch. kindly have a look at it .","commit_id":"db66563255992ce9c675802e6e7fce4135fd8ef0"}]}
