# coding: utf-8

"""
    Pdf4me

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

    OpenAPI spec version: v1
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six

from pdf4me.model.key_value_pair_string_object import KeyValuePairStringObject  # noqa: F401,E501
from pdf4me.model.value_type import ValueType  # noqa: F401,E501


class ScanBarcode(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'barcode_data_type': 'str',
        'barcode_type': 'str',
        'barcode_data_len': 'int',
        'angle': 'float',
        'border_end_x1': 'int',
        'border_end_x2': 'int',
        'border_end_y1': 'int',
        'border_end_y2': 'int',
        'border_start_x1': 'int',
        'border_start_x2': 'int',
        'border_start_y1': 'int',
        'border_start_y2': 'int',
        'top': 'int',
        'left': 'int',
        'right': 'int',
        'bottom': 'int',
        'bounding_rectangle': 'ValueType',
        'checksum': 'int',
        'rss_expanded_stacked': 'int',
        'type': 'str',
        'threshold': 'int',
        'page': 'int',
        'orientation_string': 'str',
        'orientation': 'str',
        'barcode_info_string': 'str',
        'barcode_data': 'str',
        'qr_version': 'int',
        'num_errors_corrected': 'int',
        'dim2': 'int',
        'dim1': 'int',
        'data_matrix_num_errors_corrected': 'int',
        'data_matrix_dim2': 'int',
        'data_matrix_dim1': 'int',
        'error_correction_level': 'int',
        'barcode_string': 'str',
        'properties': 'list[KeyValuePairStringObject]'
    }

    attribute_map = {
        'barcode_data_type': 'barcodeDataType',
        'barcode_type': 'barcodeType',
        'barcode_data_len': 'barcodeDataLen',
        'angle': 'angle',
        'border_end_x1': 'borderEndX1',
        'border_end_x2': 'borderEndX2',
        'border_end_y1': 'borderEndY1',
        'border_end_y2': 'borderEndY2',
        'border_start_x1': 'borderStartX1',
        'border_start_x2': 'borderStartX2',
        'border_start_y1': 'borderStartY1',
        'border_start_y2': 'borderStartY2',
        'top': 'top',
        'left': 'left',
        'right': 'right',
        'bottom': 'bottom',
        'bounding_rectangle': 'boundingRectangle',
        'checksum': 'checksum',
        'rss_expanded_stacked': 'rssExpandedStacked',
        'type': 'type',
        'threshold': 'threshold',
        'page': 'page',
        'orientation_string': 'orientationString',
        'orientation': 'orientation',
        'barcode_info_string': 'barcodeInfoString',
        'barcode_data': 'barcodeData',
        'qr_version': 'qrVersion',
        'num_errors_corrected': 'numErrorsCorrected',
        'dim2': 'dim2',
        'dim1': 'dim1',
        'data_matrix_num_errors_corrected': 'dataMatrix_NumErrorsCorrected',
        'data_matrix_dim2': 'dataMatrix_Dim2',
        'data_matrix_dim1': 'dataMatrix_Dim1',
        'error_correction_level': 'errorCorrectionLevel',
        'barcode_string': 'barcodeString',
        'properties': 'properties'
    }

    def __init__(self, barcode_data_type=None, barcode_type=None, barcode_data_len=None, angle=None, border_end_x1=None, border_end_x2=None, border_end_y1=None, border_end_y2=None, border_start_x1=None, border_start_x2=None, border_start_y1=None, border_start_y2=None, top=None, left=None, right=None, bottom=None, bounding_rectangle=None, checksum=None, rss_expanded_stacked=None, type=None, threshold=None, page=None, orientation_string=None, orientation=None, barcode_info_string=None, barcode_data=None, qr_version=None, num_errors_corrected=None, dim2=None, dim1=None, data_matrix_num_errors_corrected=None, data_matrix_dim2=None, data_matrix_dim1=None, error_correction_level=None, barcode_string=None, properties=None):  # noqa: E501
        """ScanBarcode - a model defined in Swagger"""  # noqa: E501

        self._barcode_data_type = None
        self._barcode_type = None
        self._barcode_data_len = None
        self._angle = None
        self._border_end_x1 = None
        self._border_end_x2 = None
        self._border_end_y1 = None
        self._border_end_y2 = None
        self._border_start_x1 = None
        self._border_start_x2 = None
        self._border_start_y1 = None
        self._border_start_y2 = None
        self._top = None
        self._left = None
        self._right = None
        self._bottom = None
        self._bounding_rectangle = None
        self._checksum = None
        self._rss_expanded_stacked = None
        self._type = None
        self._threshold = None
        self._page = None
        self._orientation_string = None
        self._orientation = None
        self._barcode_info_string = None
        self._barcode_data = None
        self._qr_version = None
        self._num_errors_corrected = None
        self._dim2 = None
        self._dim1 = None
        self._data_matrix_num_errors_corrected = None
        self._data_matrix_dim2 = None
        self._data_matrix_dim1 = None
        self._error_correction_level = None
        self._barcode_string = None
        self._properties = None
        self.discriminator = None

        if barcode_data_type is not None:
            self.barcode_data_type = barcode_data_type
        if barcode_type is not None:
            self.barcode_type = barcode_type
        if barcode_data_len is not None:
            self.barcode_data_len = barcode_data_len
        if angle is not None:
            self.angle = angle
        if border_end_x1 is not None:
            self.border_end_x1 = border_end_x1
        if border_end_x2 is not None:
            self.border_end_x2 = border_end_x2
        if border_end_y1 is not None:
            self.border_end_y1 = border_end_y1
        if border_end_y2 is not None:
            self.border_end_y2 = border_end_y2
        if border_start_x1 is not None:
            self.border_start_x1 = border_start_x1
        if border_start_x2 is not None:
            self.border_start_x2 = border_start_x2
        if border_start_y1 is not None:
            self.border_start_y1 = border_start_y1
        if border_start_y2 is not None:
            self.border_start_y2 = border_start_y2
        if top is not None:
            self.top = top
        if left is not None:
            self.left = left
        if right is not None:
            self.right = right
        if bottom is not None:
            self.bottom = bottom
        if bounding_rectangle is not None:
            self.bounding_rectangle = bounding_rectangle
        if checksum is not None:
            self.checksum = checksum
        if rss_expanded_stacked is not None:
            self.rss_expanded_stacked = rss_expanded_stacked
        if type is not None:
            self.type = type
        if threshold is not None:
            self.threshold = threshold
        if page is not None:
            self.page = page
        if orientation_string is not None:
            self.orientation_string = orientation_string
        if orientation is not None:
            self.orientation = orientation
        if barcode_info_string is not None:
            self.barcode_info_string = barcode_info_string
        if barcode_data is not None:
            self.barcode_data = barcode_data
        if qr_version is not None:
            self.qr_version = qr_version
        if num_errors_corrected is not None:
            self.num_errors_corrected = num_errors_corrected
        if dim2 is not None:
            self.dim2 = dim2
        if dim1 is not None:
            self.dim1 = dim1
        if data_matrix_num_errors_corrected is not None:
            self.data_matrix_num_errors_corrected = data_matrix_num_errors_corrected
        if data_matrix_dim2 is not None:
            self.data_matrix_dim2 = data_matrix_dim2
        if data_matrix_dim1 is not None:
            self.data_matrix_dim1 = data_matrix_dim1
        if error_correction_level is not None:
            self.error_correction_level = error_correction_level
        if barcode_string is not None:
            self.barcode_string = barcode_string
        if properties is not None:
            self.properties = properties

    @property
    def barcode_data_type(self):
        """Gets the barcode_data_type of this ScanBarcode.  # noqa: E501


        :return: The barcode_data_type of this ScanBarcode.  # noqa: E501
        :rtype: str
        """
        return self._barcode_data_type

    @barcode_data_type.setter
    def barcode_data_type(self, barcode_data_type):
        """Sets the barcode_data_type of this ScanBarcode.


        :param barcode_data_type: The barcode_data_type of this ScanBarcode.  # noqa: E501
        :type: str
        """

        self._barcode_data_type = barcode_data_type

    @property
    def barcode_type(self):
        """Gets the barcode_type of this ScanBarcode.  # noqa: E501


        :return: The barcode_type of this ScanBarcode.  # noqa: E501
        :rtype: str
        """
        return self._barcode_type

    @barcode_type.setter
    def barcode_type(self, barcode_type):
        """Sets the barcode_type of this ScanBarcode.


        :param barcode_type: The barcode_type of this ScanBarcode.  # noqa: E501
        :type: str
        """
        allowed_values = ["all", "unknown", "code11", "code39", "code93", "code128", "codabar", "inter2of5", "patchCode", "ean8", "upce", "ean13", "upca", "plus2", "plus5", "pdf417", "dataMatrix", "qrCode", "postnet", "planet", "rm4SCC", "australiaPost", "intelligentMail", "code39Extended", "microQRCode", "all_2D", "pharmaCode", "ucc128", "rss14", "rssLimited", "rssExpanded", "all_1D"]  # noqa: E501
        if barcode_type not in allowed_values:
            raise ValueError(
                "Invalid value for `barcode_type` ({0}), must be one of {1}"  # noqa: E501
                .format(barcode_type, allowed_values)
            )

        self._barcode_type = barcode_type

    @property
    def barcode_data_len(self):
        """Gets the barcode_data_len of this ScanBarcode.  # noqa: E501


        :return: The barcode_data_len of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._barcode_data_len

    @barcode_data_len.setter
    def barcode_data_len(self, barcode_data_len):
        """Sets the barcode_data_len of this ScanBarcode.


        :param barcode_data_len: The barcode_data_len of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._barcode_data_len = barcode_data_len

    @property
    def angle(self):
        """Gets the angle of this ScanBarcode.  # noqa: E501


        :return: The angle of this ScanBarcode.  # noqa: E501
        :rtype: float
        """
        return self._angle

    @angle.setter
    def angle(self, angle):
        """Sets the angle of this ScanBarcode.


        :param angle: The angle of this ScanBarcode.  # noqa: E501
        :type: float
        """

        self._angle = angle

    @property
    def border_end_x1(self):
        """Gets the border_end_x1 of this ScanBarcode.  # noqa: E501


        :return: The border_end_x1 of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._border_end_x1

    @border_end_x1.setter
    def border_end_x1(self, border_end_x1):
        """Sets the border_end_x1 of this ScanBarcode.


        :param border_end_x1: The border_end_x1 of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._border_end_x1 = border_end_x1

    @property
    def border_end_x2(self):
        """Gets the border_end_x2 of this ScanBarcode.  # noqa: E501


        :return: The border_end_x2 of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._border_end_x2

    @border_end_x2.setter
    def border_end_x2(self, border_end_x2):
        """Sets the border_end_x2 of this ScanBarcode.


        :param border_end_x2: The border_end_x2 of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._border_end_x2 = border_end_x2

    @property
    def border_end_y1(self):
        """Gets the border_end_y1 of this ScanBarcode.  # noqa: E501


        :return: The border_end_y1 of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._border_end_y1

    @border_end_y1.setter
    def border_end_y1(self, border_end_y1):
        """Sets the border_end_y1 of this ScanBarcode.


        :param border_end_y1: The border_end_y1 of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._border_end_y1 = border_end_y1

    @property
    def border_end_y2(self):
        """Gets the border_end_y2 of this ScanBarcode.  # noqa: E501


        :return: The border_end_y2 of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._border_end_y2

    @border_end_y2.setter
    def border_end_y2(self, border_end_y2):
        """Sets the border_end_y2 of this ScanBarcode.


        :param border_end_y2: The border_end_y2 of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._border_end_y2 = border_end_y2

    @property
    def border_start_x1(self):
        """Gets the border_start_x1 of this ScanBarcode.  # noqa: E501


        :return: The border_start_x1 of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._border_start_x1

    @border_start_x1.setter
    def border_start_x1(self, border_start_x1):
        """Sets the border_start_x1 of this ScanBarcode.


        :param border_start_x1: The border_start_x1 of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._border_start_x1 = border_start_x1

    @property
    def border_start_x2(self):
        """Gets the border_start_x2 of this ScanBarcode.  # noqa: E501


        :return: The border_start_x2 of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._border_start_x2

    @border_start_x2.setter
    def border_start_x2(self, border_start_x2):
        """Sets the border_start_x2 of this ScanBarcode.


        :param border_start_x2: The border_start_x2 of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._border_start_x2 = border_start_x2

    @property
    def border_start_y1(self):
        """Gets the border_start_y1 of this ScanBarcode.  # noqa: E501


        :return: The border_start_y1 of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._border_start_y1

    @border_start_y1.setter
    def border_start_y1(self, border_start_y1):
        """Sets the border_start_y1 of this ScanBarcode.


        :param border_start_y1: The border_start_y1 of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._border_start_y1 = border_start_y1

    @property
    def border_start_y2(self):
        """Gets the border_start_y2 of this ScanBarcode.  # noqa: E501


        :return: The border_start_y2 of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._border_start_y2

    @border_start_y2.setter
    def border_start_y2(self, border_start_y2):
        """Sets the border_start_y2 of this ScanBarcode.


        :param border_start_y2: The border_start_y2 of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._border_start_y2 = border_start_y2

    @property
    def top(self):
        """Gets the top of this ScanBarcode.  # noqa: E501


        :return: The top of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._top

    @top.setter
    def top(self, top):
        """Sets the top of this ScanBarcode.


        :param top: The top of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._top = top

    @property
    def left(self):
        """Gets the left of this ScanBarcode.  # noqa: E501


        :return: The left of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._left

    @left.setter
    def left(self, left):
        """Sets the left of this ScanBarcode.


        :param left: The left of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._left = left

    @property
    def right(self):
        """Gets the right of this ScanBarcode.  # noqa: E501


        :return: The right of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._right

    @right.setter
    def right(self, right):
        """Sets the right of this ScanBarcode.


        :param right: The right of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._right = right

    @property
    def bottom(self):
        """Gets the bottom of this ScanBarcode.  # noqa: E501


        :return: The bottom of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._bottom

    @bottom.setter
    def bottom(self, bottom):
        """Sets the bottom of this ScanBarcode.


        :param bottom: The bottom of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._bottom = bottom

    @property
    def bounding_rectangle(self):
        """Gets the bounding_rectangle of this ScanBarcode.  # noqa: E501


        :return: The bounding_rectangle of this ScanBarcode.  # noqa: E501
        :rtype: ValueType
        """
        return self._bounding_rectangle

    @bounding_rectangle.setter
    def bounding_rectangle(self, bounding_rectangle):
        """Sets the bounding_rectangle of this ScanBarcode.


        :param bounding_rectangle: The bounding_rectangle of this ScanBarcode.  # noqa: E501
        :type: ValueType
        """

        self._bounding_rectangle = bounding_rectangle

    @property
    def checksum(self):
        """Gets the checksum of this ScanBarcode.  # noqa: E501


        :return: The checksum of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._checksum

    @checksum.setter
    def checksum(self, checksum):
        """Sets the checksum of this ScanBarcode.


        :param checksum: The checksum of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._checksum = checksum

    @property
    def rss_expanded_stacked(self):
        """Gets the rss_expanded_stacked of this ScanBarcode.  # noqa: E501


        :return: The rss_expanded_stacked of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._rss_expanded_stacked

    @rss_expanded_stacked.setter
    def rss_expanded_stacked(self, rss_expanded_stacked):
        """Sets the rss_expanded_stacked of this ScanBarcode.


        :param rss_expanded_stacked: The rss_expanded_stacked of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._rss_expanded_stacked = rss_expanded_stacked

    @property
    def type(self):
        """Gets the type of this ScanBarcode.  # noqa: E501


        :return: The type of this ScanBarcode.  # noqa: E501
        :rtype: str
        """
        return self._type

    @type.setter
    def type(self, type):
        """Sets the type of this ScanBarcode.


        :param type: The type of this ScanBarcode.  # noqa: E501
        :type: str
        """
        allowed_values = ["all", "unknown", "code11", "code39", "code93", "code128", "codabar", "inter2of5", "patchCode", "ean8", "upce", "ean13", "upca", "plus2", "plus5", "pdf417", "dataMatrix", "qrCode", "postnet", "planet", "rm4SCC", "australiaPost", "intelligentMail", "code39Extended", "microQRCode", "all_2D", "pharmaCode", "ucc128", "rss14", "rssLimited", "rssExpanded", "all_1D"]  # noqa: E501
        if type not in allowed_values:
            raise ValueError(
                "Invalid value for `type` ({0}), must be one of {1}"  # noqa: E501
                .format(type, allowed_values)
            )

        self._type = type

    @property
    def threshold(self):
        """Gets the threshold of this ScanBarcode.  # noqa: E501


        :return: The threshold of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._threshold

    @threshold.setter
    def threshold(self, threshold):
        """Sets the threshold of this ScanBarcode.


        :param threshold: The threshold of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._threshold = threshold

    @property
    def page(self):
        """Gets the page of this ScanBarcode.  # noqa: E501


        :return: The page of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._page

    @page.setter
    def page(self, page):
        """Sets the page of this ScanBarcode.


        :param page: The page of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._page = page

    @property
    def orientation_string(self):
        """Gets the orientation_string of this ScanBarcode.  # noqa: E501


        :return: The orientation_string of this ScanBarcode.  # noqa: E501
        :rtype: str
        """
        return self._orientation_string

    @orientation_string.setter
    def orientation_string(self, orientation_string):
        """Sets the orientation_string of this ScanBarcode.


        :param orientation_string: The orientation_string of this ScanBarcode.  # noqa: E501
        :type: str
        """

        self._orientation_string = orientation_string

    @property
    def orientation(self):
        """Gets the orientation of this ScanBarcode.  # noqa: E501


        :return: The orientation of this ScanBarcode.  # noqa: E501
        :rtype: str
        """
        return self._orientation

    @orientation.setter
    def orientation(self, orientation):
        """Sets the orientation of this ScanBarcode.


        :param orientation: The orientation of this ScanBarcode.  # noqa: E501
        :type: str
        """
        allowed_values = ["unknown", "leftToRight", "rightToLeft", "topToBottom", "bottomToTop", "all"]  # noqa: E501
        if orientation not in allowed_values:
            raise ValueError(
                "Invalid value for `orientation` ({0}), must be one of {1}"  # noqa: E501
                .format(orientation, allowed_values)
            )

        self._orientation = orientation

    @property
    def barcode_info_string(self):
        """Gets the barcode_info_string of this ScanBarcode.  # noqa: E501


        :return: The barcode_info_string of this ScanBarcode.  # noqa: E501
        :rtype: str
        """
        return self._barcode_info_string

    @barcode_info_string.setter
    def barcode_info_string(self, barcode_info_string):
        """Sets the barcode_info_string of this ScanBarcode.


        :param barcode_info_string: The barcode_info_string of this ScanBarcode.  # noqa: E501
        :type: str
        """

        self._barcode_info_string = barcode_info_string

    @property
    def barcode_data(self):
        """Gets the barcode_data of this ScanBarcode.  # noqa: E501


        :return: The barcode_data of this ScanBarcode.  # noqa: E501
        :rtype: str
        """
        return self._barcode_data

    @barcode_data.setter
    def barcode_data(self, barcode_data):
        """Sets the barcode_data of this ScanBarcode.


        :param barcode_data: The barcode_data of this ScanBarcode.  # noqa: E501
        :type: str
        """
        if barcode_data is not None and not re.search(r'^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$', barcode_data):  # noqa: E501
            raise ValueError(r"Invalid value for `barcode_data`, must be a follow pattern or equal to `/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/`")  # noqa: E501

        self._barcode_data = barcode_data

    @property
    def qr_version(self):
        """Gets the qr_version of this ScanBarcode.  # noqa: E501


        :return: The qr_version of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._qr_version

    @qr_version.setter
    def qr_version(self, qr_version):
        """Sets the qr_version of this ScanBarcode.


        :param qr_version: The qr_version of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._qr_version = qr_version

    @property
    def num_errors_corrected(self):
        """Gets the num_errors_corrected of this ScanBarcode.  # noqa: E501


        :return: The num_errors_corrected of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._num_errors_corrected

    @num_errors_corrected.setter
    def num_errors_corrected(self, num_errors_corrected):
        """Sets the num_errors_corrected of this ScanBarcode.


        :param num_errors_corrected: The num_errors_corrected of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._num_errors_corrected = num_errors_corrected

    @property
    def dim2(self):
        """Gets the dim2 of this ScanBarcode.  # noqa: E501


        :return: The dim2 of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._dim2

    @dim2.setter
    def dim2(self, dim2):
        """Sets the dim2 of this ScanBarcode.


        :param dim2: The dim2 of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._dim2 = dim2

    @property
    def dim1(self):
        """Gets the dim1 of this ScanBarcode.  # noqa: E501


        :return: The dim1 of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._dim1

    @dim1.setter
    def dim1(self, dim1):
        """Sets the dim1 of this ScanBarcode.


        :param dim1: The dim1 of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._dim1 = dim1

    @property
    def data_matrix_num_errors_corrected(self):
        """Gets the data_matrix_num_errors_corrected of this ScanBarcode.  # noqa: E501


        :return: The data_matrix_num_errors_corrected of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._data_matrix_num_errors_corrected

    @data_matrix_num_errors_corrected.setter
    def data_matrix_num_errors_corrected(self, data_matrix_num_errors_corrected):
        """Sets the data_matrix_num_errors_corrected of this ScanBarcode.


        :param data_matrix_num_errors_corrected: The data_matrix_num_errors_corrected of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._data_matrix_num_errors_corrected = data_matrix_num_errors_corrected

    @property
    def data_matrix_dim2(self):
        """Gets the data_matrix_dim2 of this ScanBarcode.  # noqa: E501


        :return: The data_matrix_dim2 of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._data_matrix_dim2

    @data_matrix_dim2.setter
    def data_matrix_dim2(self, data_matrix_dim2):
        """Sets the data_matrix_dim2 of this ScanBarcode.


        :param data_matrix_dim2: The data_matrix_dim2 of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._data_matrix_dim2 = data_matrix_dim2

    @property
    def data_matrix_dim1(self):
        """Gets the data_matrix_dim1 of this ScanBarcode.  # noqa: E501


        :return: The data_matrix_dim1 of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._data_matrix_dim1

    @data_matrix_dim1.setter
    def data_matrix_dim1(self, data_matrix_dim1):
        """Sets the data_matrix_dim1 of this ScanBarcode.


        :param data_matrix_dim1: The data_matrix_dim1 of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._data_matrix_dim1 = data_matrix_dim1

    @property
    def error_correction_level(self):
        """Gets the error_correction_level of this ScanBarcode.  # noqa: E501


        :return: The error_correction_level of this ScanBarcode.  # noqa: E501
        :rtype: int
        """
        return self._error_correction_level

    @error_correction_level.setter
    def error_correction_level(self, error_correction_level):
        """Sets the error_correction_level of this ScanBarcode.


        :param error_correction_level: The error_correction_level of this ScanBarcode.  # noqa: E501
        :type: int
        """

        self._error_correction_level = error_correction_level

    @property
    def barcode_string(self):
        """Gets the barcode_string of this ScanBarcode.  # noqa: E501


        :return: The barcode_string of this ScanBarcode.  # noqa: E501
        :rtype: str
        """
        return self._barcode_string

    @barcode_string.setter
    def barcode_string(self, barcode_string):
        """Sets the barcode_string of this ScanBarcode.


        :param barcode_string: The barcode_string of this ScanBarcode.  # noqa: E501
        :type: str
        """

        self._barcode_string = barcode_string

    @property
    def properties(self):
        """Gets the properties of this ScanBarcode.  # noqa: E501


        :return: The properties of this ScanBarcode.  # noqa: E501
        :rtype: list[KeyValuePairStringObject]
        """
        return self._properties

    @properties.setter
    def properties(self, properties):
        """Sets the properties of this ScanBarcode.


        :param properties: The properties of this ScanBarcode.  # noqa: E501
        :type: list[KeyValuePairStringObject]
        """

        self._properties = properties

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(ScanBarcode, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, ScanBarcode):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
