              return False
  
          loss = self.consoleregex["loss"].findall(string)
          if len(loss) != 2 or not all(len(itm) == 3 for itm in loss):
              logger.trace("Not loss message. Returning False")
              return False
  
          message = f"Total Iterations: {int(loss[0][0])} | "
          message += "  ".join([f"{itm[1]}: {itm[2]}" for itm in loss])
          if not message:
 
</s> remove         loss = self.consoleregex["loss"].findall(string)
 </s> add         loss = self._consoleregex["loss"].findall(string) </s> remove             logger.trace("Error creating loss message. Returning False")
 </s> add             logger.trace(  # type:ignore[attr-defined]
                "Error creating loss message. Returning False") </s> remove             logger.trace("Not loss message. Returning False")
 </s> add             logger.trace("Not loss message. Returning False")  # type:ignore[attr-defined] </s> remove             logger.trace("Not ffmpeg message. Returning False")
 </s> add             logger.trace("Not ffmpeg message. Returning False")  # type:ignore[attr-defined] </s> remove             logger.trace("Error creating ffmpeg message. Returning False")
 </s> add             logger.trace(  # type:ignore[attr-defined]
                "Error creating ffmpeg message. Returning False")
            logger.trace("Not loss message. Returning False")  # type:ignore[attr-defined]
              return False
  
          loss = self.consoleregex["loss"].findall(string)
          if len(loss) != 2 or not all(len(itm) == 3 for itm in loss):
            logger.trace("Not loss message. Returning False")  # type:ignore[attr-defined]
              return False
  
          message = f"Total Iterations: {int(loss[0][0])} | "
          message += "  ".join([f"{itm[1]}: {itm[2]}" for itm in loss])
          if not message:
keep keep keep keep replace keep keep keep keep keep
 bugfix: GUI force stdout/stderr reading to utf-8 
lib/gui/wrapper.py