

from ...configuration_utils import PretrainedConfig
from ...utils import is_detectrona_available, logging


UpperCamelCase__					: Any								=      logging.get_logger(__name__)

UpperCamelCase__					: Dict								=      {
    "layoutlmv2-base-uncased": "https://huggingface.co/microsoft/layoutlmv2-base-uncased/resolve/main/config.json",
    "layoutlmv2-large-uncased": "https://huggingface.co/microsoft/layoutlmv2-large-uncased/resolve/main/config.json",
    # See all LayoutLMv2 models at https://huggingface.co/models?filter=layoutlmv2
}

# soft dependency
if is_detectrona_available():
       import detectrona



class  __snake_case					(      lowerCAmelCase__    ):
  __lowerCAmelCase       :		Dict  	=					'layoutlmv2'

  def __init__(   self  ,						_A=30522  ,						_A=768  ,						_A=12  ,						_A=12  ,						_A=3072  ,						_A="gelu"  ,						_A=0.1  ,						_A=0.1  ,						_A=512  ,						_A=2  ,						_A=0.0_2  ,						_A=1E-12  ,						_A=0  ,						_A=1024  ,						_A=128  ,						_A=32  ,						_A=True  ,						_A=256  ,						_A=64  ,						_A=True  ,						_A=[7, 7, 256]  ,						_A=128  ,						_A=128  ,						_A=True  ,						_A=True  ,						_A=False  ,						_A=None  ,						**_A  ,						):
      super().__init__(
          vocab_size=_A  ,						hidden_size=_A  ,						num_hidden_layers=_A  ,						num_attention_heads=_A  ,						intermediate_size=_A  ,						hidden_act=_A  ,						hidden_dropout_prob=_A  ,						attention_probs_dropout_prob=_A  ,						max_position_embeddings=_A  ,						type_vocab_size=_A  ,						initializer_range=_A  ,						layer_norm_eps=_A  ,						pad_token_id=_A  ,						**_A  ,						)
      SCREAMING_SNAKE_CASE_													=  max_ad_position_embeddings
      SCREAMING_SNAKE_CASE_													=  max_rel_pos
      SCREAMING_SNAKE_CASE_													=  rel_pos_bins
      SCREAMING_SNAKE_CASE_													=  fast_qkv
      SCREAMING_SNAKE_CASE_													=  max_rel_ad_pos
      SCREAMING_SNAKE_CASE_													=  rel_ad_pos_bins
      SCREAMING_SNAKE_CASE_													=  convert_sync_batchnorm
      SCREAMING_SNAKE_CASE_													=  image_feature_pool_shape
      SCREAMING_SNAKE_CASE_													=  coordinate_size
      SCREAMING_SNAKE_CASE_													=  shape_size
      SCREAMING_SNAKE_CASE_													=  has_relative_attention_bias
      SCREAMING_SNAKE_CASE_													=  has_spatial_attention_bias
      SCREAMING_SNAKE_CASE_													=  has_visual_segment_embedding
      SCREAMING_SNAKE_CASE_													=  (
          detectrona_config_args if detectrona_config_args is not None else self.get_default_detectrona_config()
      )

  @classmethod
  def   lowerCAmelCase__       (   self):
      return {
          "MODEL.MASK_ON": True,
          "MODEL.PIXEL_STD": [5_7.3_7_5, 5_7.1_2_0, 5_8.3_9_5],
          "MODEL.BACKBONE.NAME": "build_resnet_fpn_backbone",
          "MODEL.FPN.IN_FEATURES": ["res2", "res3", "res4", "res5"],
          "MODEL.ANCHOR_GENERATOR.SIZES": [[32], [64], [128], [256], [512]],
          "MODEL.RPN.IN_FEATURES": ["p2", "p3", "p4", "p5", "p6"],
          "MODEL.RPN.PRE_NMS_TOPK_TRAIN": 2000,
          "MODEL.RPN.PRE_NMS_TOPK_TEST": 1000,
          "MODEL.RPN.POST_NMS_TOPK_TRAIN": 1000,
          "MODEL.POST_NMS_TOPK_TEST": 1000,
          "MODEL.ROI_HEADS.NAME": "StandardROIHeads",
          "MODEL.ROI_HEADS.NUM_CLASSES": 5,
          "MODEL.ROI_HEADS.IN_FEATURES": ["p2", "p3", "p4", "p5"],
          "MODEL.ROI_BOX_HEAD.NAME": "FastRCNNConvFCHead",
          "MODEL.ROI_BOX_HEAD.NUM_FC": 2,
          "MODEL.ROI_BOX_HEAD.POOLER_RESOLUTION": 14,
          "MODEL.ROI_MASK_HEAD.NAME": "MaskRCNNConvUpsampleHead",
          "MODEL.ROI_MASK_HEAD.NUM_CONV": 4,
          "MODEL.ROI_MASK_HEAD.POOLER_RESOLUTION": 7,
          "MODEL.RESNETS.DEPTH": 101,
          "MODEL.RESNETS.SIZES": [[32], [64], [128], [256], [512]],
          "MODEL.RESNETS.ASPECT_RATIOS": [[0.5, 1.0, 2.0]],
          "MODEL.RESNETS.OUT_FEATURES": ["res2", "res3", "res4", "res5"],
          "MODEL.RESNETS.NUM_GROUPS": 32,
          "MODEL.RESNETS.WIDTH_PER_GROUP": 8,
          "MODEL.RESNETS.STRIDE_IN_1X1": False,
      }


  def   lowerCAmelCase__       (   self):
      SCREAMING_SNAKE_CASE_													=  detectrona.config.get_cfg()
      for k, v in self.detectrona_config_args.items():
          SCREAMING_SNAKE_CASE_													=  k.split('.')
          SCREAMING_SNAKE_CASE_													=  detectrona_config
          for attribute in attributes[:-1]:
              SCREAMING_SNAKE_CASE_													=  getattr(_A  ,						_A)
          setattr(_A  ,						attributes[-1]  ,						_A)

      return detectrona_config





def    _UpperCAmelCase    (					_SCREAMING_SNAKE_CASE   :						int	,				_SCREAMING_SNAKE_CASE   :						int	,				_SCREAMING_SNAKE_CASE   :						int    ):





    """simple docstring"""


    if power < 0:
        return -1
    base %= mod
    SCREAMING_SNAKE_CASE_													=  1

    while power > 0:
        if power & 1:
            SCREAMING_SNAKE_CASE_													=  (result * base) % mod
        SCREAMING_SNAKE_CASE_													=  power >> 1
        SCREAMING_SNAKE_CASE_													=  (base * base) % mod

    return result


def    _UpperCAmelCase    (					):





    """simple docstring"""


    print(modular_exponential(3	,				200	,				13    )    )


if __name__ == "__main__":
       import doctest

       doctest.testmod()

       main()


