code: def convert_MaxPoolingND(
      func, opset_version, input_names, output_names, context
  ):
      pad = list(func.pad[:])
      attrs = {}
      if func.cover_all:
          if opset_version < 11:
              # Supports cover_all by setting extra padding
              # NOTE: onnxruntime may not run when "k <= p + s - 1".
              pad.extend([p + s - 1 for p, s in zip(pad, func.stride)])
          else:
              pad = pad * 2
              attrs["ceil_mode"] = 1
      else:
          pad = pad * 2
  
      if opset_version == 1:
          return (
              onnx_helper.make_node(
                  "MaxPool",
                  input_names,
                  output_names,
                  kernel_shape=func.ksize,
                  pads=pad,
                  strides=func.stride,
              ),
          )
      elif opset_version >= 8:
          return (
              onnx_helper.make_node(
                  "MaxPool",
                  input_names,
                  output_names,
                  kernel_shape=func.ksize,
                  pads=pad,
                  strides=func.stride,
                  storage_order=0,  # row major
                  **attrs,
              ),
          )
  
file_path: chainer/onnx_chainer/functions/pooling.py
imports: import warnings
  from chainer.utils import conv
  import numpy
  from onnx_chainer.functions.opset_version import support
  from onnx_chainer import onnx_helper
label_desc: Use image node_id 4 for calling a global function with example usage: convert_MaxPoolingND(func, opset_version, input_names, output_names, context) and returns: onnx_helper, onnx_helper