```ruby
module PDFRavager
  module Strategies
    class Smart
      def initialize(stamper)
        @acro_form = Strategies::AcroForm.new(stamper)
        @xfa       = Strategies::XFA.new(stamper)
      end

      def set_field_values(template)
        parsed_fields = @acro_form.set_field_values(template)
        unparsed_fields = template.fields - parsed_fields
        if unparsed_fields.any?
          @xfa.set_field_values(Template.new{|t| t.fields = unparsed_fields })
        end
      end

      def set_read_only
        [@acro_form, @xfa].each(&:set_read_only)
      end
    end
  end
end
```

Fix Smart strategy not setting XFA read-only properly
user
```ruby
module PDFRavager
  module Strategies
    class Smart
      def initialize(stamper)
        @acro_form = Strategies::AcroForm.new(stamper)
        @xfa       = Strategies::XFA.new(stamper)
        afields    = stamper.getAcroFields
        @type = if afields.getXfa.isXfaPresent
          if afields.getFields.empty?
            :dynamic_xfa
          else
            :static_xfa
          end
        else
          :acro_form
        end
      end

      def set_field_values(template)
        parsed_fields = @acro_form.set_field_values(template)
        unparsed_fields = template.fields - parsed_fields
        if unparsed_fields.any?
          @xfa.set_field_values(Template.new{|t| t.fields = unparsed_fields })
        end
      end

      def set_read_only
        case @type
        when :acro_form, :static_xfa
          @acro_form.set_read_only
        when :dynamic_xfa
          @xfa.set_read_only
        end
      end
    end
  end
end
```
assistant