code: def get_classical_addresses_from_program(program) -> Dict[str, List[int]]:
      
      addresses: Dict[str, List[int]] = defaultdict(list)
      flattened_addresses = {}
  
      # Required to use the `classical_reg.address` int attribute.
      # See https://github.com/rigetti/pyquil/issues/388.
      for instr in program:
          if isinstance(instr, Measurement) and instr.classical_reg:
              addresses[instr.classical_reg.name].append(instr.classical_reg.offset)
  
      # flatten duplicates
      for k, v in addresses.items():
          reduced_list = list(set(v))
          reduced_list.sort()
          flattened_addresses[k] = reduced_list
  
      return flattened_addresses
docs: Returns a sorted list of classical addresses found in the MEASURE instructions in the program.
  
      :param Program program: The program from which to get the classical addresses.
      :return: A mapping from memory region names to lists of offsets appearing in the program.