code: def _add_encoded(self, encoded):
          
          if self.public_key != encoded.public_key:
              raise ValueError("Attempted to add numbers encoded against "
                               "different public keys!")
  
          # In order to add two numbers, their exponents must match.
          a, b = self, encoded
          if a.exponent > b.exponent:
              a = self.decrease_exponent_to(b.exponent)
          elif a.exponent < b.exponent:
              b = b.decrease_exponent_to(a.exponent)
  
          # Don't bother to salt/obfuscate in a basic operation, do it
          # just before leaving the computer.
          encrypted_scalar = a.public_key.raw_encrypt(b.encoding, 1)
  
          sum_ciphertext = a._raw_add(a.ciphertext(False), encrypted_scalar)
          return EncryptedNumber(a.public_key, sum_ciphertext, a.exponent)
docs: Returns E(a + b), given self=E(a) and b.
  
          Args:
            encoded (EncodedNumber): an :class:`EncodedNumber` to be added
              to `self`.
  
          Returns:
            EncryptedNumber: E(a + b), calculated by encrypting b and
              taking the product of E(a) and E(b) modulo
              :attr:`~PaillierPublicKey.n` ** 2.
  
          Raises:
            ValueError: if scalar is out of range or precision.