code: def forward(self, x, cond_embeds):
      x_res = x
  
      x = self.depthwise(x)
  
      x = x.permute(0, 2, 3, 1)
      x = self.norm(x)
  
      x = self.channelwise_linear_1(x)
      x = self.channelwise_act(x)
      x = self.channelwise_norm(x)
      x = self.channelwise_linear_2(x)
      x = self.channelwise_dropout(x)
  
      x = x.permute(0, 3, 1, 2)
  
      x = x + x_res
  
      scale, shift = self.cond_embeds_mapper(F.silu(cond_embeds)).chunk(
          2, dim=1
      )
      x = x * (1 + scale[:, :, None, None]) + shift[:, :, None, None]
  
      return x
  
imports: from typing import Dict, Union
  import torch
  import torch.nn.functional
  from torch import nn
  from torch.utils.checkpoint import checkpoint
  from ..configuration_utils import ConfigMixin, register_to_config
  from ..loaders import PeftAdapterMixin
  from .attention import BasicTransformerBlock, SkipFFTransformerBlock
  from .attention_processor import ADDED_KV_ATTENTION_PROCESSORS, CROSS_ATTENTION_PROCESSORS, AttentionProcessor, AttnAddedKVProcessor, AttnProcessor
  from .embeddings import TimestepEmbedding, get_timestep_embedding
  from .modeling_utils import ModelMixin
  from .normalization import GlobalResponseNorm, RMSNorm
  from .resnet import Downsample2D, Upsample2D
label_desc: Use image node_id 2 for calling the ConvNextBlock obj's underlying member method code with example usage: obj.forward(x, cond_embeds) and returns: x