code: def geometric_progression_for_stepsize(
      x, update, dist, decision_function, current_iteration
  ):
      """Geometric progression to search for stepsize.
      Keep decreasing stepsize by half until reaching
      the desired side of the boundary.
      """
      epsilon = dist / np.sqrt(current_iteration)
      while True:
          updated = x + epsilon * update
          success = decision_function(updated[None])[0]
          if success:
              break
          else:
              epsilon = epsilon / 2.0
  
      return epsilon
  
imports: import logging
  import numpy
  import tensorflow
  from warnings import warn
  from cleverhans.attacks import Attack
  from cleverhans.model import CallableModelWrapper, Model, wrapper_warning_logits
  from cleverhans import utils, utils_tf
label_desc: Use image node_id 9 for calling a global function with example usage: geometric_progression_for_stepsize(x, update, dist, decision_function, current_iteration) and returns: epsilon