code: def percolate_declares(program: Program) -> Program:
      
      declare_program = Program()
      instrs_program = Program()
  
      for instr in program:
          if isinstance(instr, Declare):
              declare_program += instr
          else:
              instrs_program += instr
  
      p = declare_program + instrs_program
      p._defined_gates = program._defined_gates
  
      return p
docs: Move all the DECLARE statements to the top of the program. Return a fresh obejct.
  
      :param program: Perhaps jumbled program.
      :return: Program with DECLAREs all at the top and otherwise the same sorted contents.