-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     # frozen_string_literal: true

module Gem
  module SafeMarshal
    module Elements
      class Element
      end

      class Symbol < Element
        def initialize(name)
          @name = name
        end
        attr_reader :name
      end

      class UserDefined < Element
        def initialize(name, binary_string)
          @name = name
          @binary_string = binary_string
        end

        attr_reader :name, :binary_string
      end

      class UserMarshal < Element
        def initialize(name, data)
          @name = name
          @data = data
        end

        attr_reader :name, :data
      end

      class String < Element
        def initialize(str)
          @str = str
        end

        attr_reader :str
      end

      class Hash < Element
        def initialize(pairs)
          @pairs = pairs
        end

        attr_reader :pairs
      end

      class HashWithDefaultValue < Hash
        def initialize(pairs, default)
          super(pairs)
          @default = default
        end

        attr_reader :default
      end

      class Array < Element
        def initialize(elements)
          @elements = elements
        end

        attr_reader :elements
      end

      class Integer < Element
        def initialize(int)
          @int = int
        end

        attr_reader :int
      end

      class True < Element
        def initialize
        end
        TRUE = new.freeze
      end

      class False < Element
        def initialize
        end

        FALSE = new.freeze
      end

      class WithIvars < Element
        def initialize(object, ivars)
          @object = object
          @ivars = ivars
        end

        attr_reader :object, :ivars
      end

      class Object < Element
        def initialize(name)
          @name = name
        end
        attr_reader :name
      end

      class Nil < Element
        NIL = new.freeze
      end

      class ObjectLink < Element
        def initialize(offset)
          @offset = offset
        end
        attr_reader :offset
      end

      class SymbolLink < Element
        def initialize(offset)
          @offset = offset
        end
        attr_reader :offset
      end

      class Float < Element
        def initialize(string)
          @string = string
        end
        attr_reader :string
      end

      class Bignum < Element # rubocop:disable Lint/UnifiedInteger
        def initialize(sign, data)
          @sign = sign
          @data = data
        end
        attr_reader :sign, :data
      end

      class UserClass < Element
        def initialize(name, wrapped_object)
          @name = name
          @wrapped_object = wrapped_object
        end
        attr_reader :name, :wrapped_object
      end
    end
  end
end
