thinreports 0.10.2 → 0.10.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +22 -6
  4. data/CHANGELOG.md +6 -0
  5. data/Gemfile +1 -1
  6. data/README.md +5 -6
  7. data/Rakefile +11 -25
  8. data/lib/thinreports/generator/pdf/document/draw_shape.rb +1 -1
  9. data/lib/thinreports/generator/pdf/document/draw_template_items.rb +1 -1
  10. data/lib/thinreports/layout/legacy_schema.rb +1 -0
  11. data/lib/thinreports/version.rb +1 -1
  12. data/test/features/dynamic_style/expect.pdf +3714 -0
  13. data/{examples → test/features}/dynamic_style/image.png +0 -0
  14. data/{examples/dynamic_style/dynamic_style.tlf → test/features/dynamic_style/templates/styles.tlf} +0 -0
  15. data/{examples/dynamic_style/dynamic_style_in_list.tlf → test/features/dynamic_style/templates/styles_in_list.tlf} +0 -0
  16. data/test/features/dynamic_style/test_dynamic_style.rb +152 -0
  17. data/{examples → test/features}/eudc/eudc.ttf +0 -0
  18. data/test/features/eudc/expect.pdf +0 -0
  19. data/{examples/eudc/eudc.tlf → test/features/eudc/template.tlf} +0 -0
  20. data/test/features/eudc/test_eudc.rb +27 -0
  21. data/test/features/feature_test.rb +58 -0
  22. data/test/features/graphics/expect.pdf +475 -0
  23. data/test/features/graphics/template.tlf +309 -0
  24. data/test/features/graphics/test_graphics.rb +12 -0
  25. data/test/features/hidden_item/expect.pdf +0 -0
  26. data/{examples/hidden_shapes/hidden_shapes.tlf → test/features/hidden_item/template.tlf} +0 -0
  27. data/test/features/hidden_item/test_hidden_item.rb +12 -0
  28. data/test/features/image_block/expect.pdf +0 -0
  29. data/{examples/dynamic_image → test/features/image_block}/img200x100.png +0 -0
  30. data/{examples/dynamic_image → test/features/image_block}/img50x50.png +0 -0
  31. data/{examples/dynamic_image/dynamic_image.tlf → test/features/image_block/template.tlf} +0 -0
  32. data/test/features/image_block/test_image_block.rb +35 -0
  33. data/test/features/list_events/expect.pdf +659 -0
  34. data/{examples/list_events/list_events.tlf → test/features/list_events/template.tlf} +0 -0
  35. data/{examples/list_events/list_events.rb → test/features/list_events/test_list_events.rb} +7 -3
  36. data/test/features/list_manually/expect.pdf +599 -0
  37. data/{examples/list_manual_generation/list_manual_generation.tlf → test/features/list_manually/template.tlf} +0 -0
  38. data/test/features/list_manually/test_list_manually.rb +25 -0
  39. data/test/features/page_number/expect.pdf +400 -0
  40. data/{examples/page_number/page_number.tlf → test/features/page_number/template.tlf} +0 -0
  41. data/test/features/page_number/test_page_number.rb +24 -0
  42. data/test/features/page_number_with_list/expect.pdf +721 -0
  43. data/{examples/list_page_number/list_page_number.tlf → test/features/page_number_with_list/template.tlf} +0 -0
  44. data/test/features/page_number_with_list/test_page_number_with_list.rb +21 -0
  45. data/test/features/palleted_png/expect.pdf +0 -0
  46. data/{examples → test/features}/palleted_png/palleted_png.png +0 -0
  47. data/{examples/palleted_png/palleted_png.tlf → test/features/palleted_png/template.tlf} +0 -0
  48. data/test/features/palleted_png/test_palleted_png.rb +14 -0
  49. data/test/features/report_callbacks/expect.pdf +169 -0
  50. data/{examples/report_callbacks/report_callbacks.tlf → test/features/report_callbacks/template.tlf} +0 -0
  51. data/test/features/report_callbacks/test_report_callbacks.rb +18 -0
  52. data/test/features/text_align/expect.pdf +0 -0
  53. data/{examples/text_align/text_align.tlf → test/features/text_align/template.tlf} +0 -0
  54. data/test/features/text_align/test_text_align.rb +12 -0
  55. data/test/features/text_block_overflow/expect.pdf +0 -0
  56. data/{examples/tblock_overflow/tblock_overflow.tlf → test/features/text_block_overflow/template.tlf} +0 -0
  57. data/test/features/text_block_overflow/test_text_block_overflow.rb +25 -0
  58. data/test/features/text_block_singleline/expect.pdf +0 -0
  59. data/{examples/single_line_tblock/single_line_tblock.tlf → test/features/text_block_singleline/template.tlf} +0 -0
  60. data/test/features/text_block_singleline/test_text_block_singleline.rb +15 -0
  61. data/test/features/text_block_style/expect.pdf +1390 -1
  62. data/{examples/tblock_styles/tblock_styles.tlf → test/features/text_block_style/templates/basic_styles.tlf} +0 -0
  63. data/{examples/tblock_styles → test/features/text_block_style/templates}/font_size.tlf +0 -0
  64. data/{examples/tblock_styles/tblock_styles.rb → test/features/text_block_style/test_text_block_style.rb} +9 -5
  65. data/test/features/text_character_spacing/expect.pdf +0 -0
  66. data/{examples/character_spacing/character_spacing.tlf → test/features/text_character_spacing/template.tlf} +0 -0
  67. data/test/features/text_character_spacing/test_text_character_spacing.rb +12 -0
  68. data/test/features/text_word_wrap/expect.pdf +0 -0
  69. data/{examples/word_wrap/word_wrap.tlf → test/features/text_word_wrap/template.tlf} +0 -0
  70. data/test/features/text_word_wrap/test_text_word_wrap.rb +30 -0
  71. data/test/test_helper.rb +1 -10
  72. data/test/{unit → units}/core/format/test_base.rb +0 -0
  73. data/test/{unit → units}/core/shape/base/test_internal.rb +0 -0
  74. data/test/{unit → units}/core/shape/basic/test_block_format.rb +0 -0
  75. data/test/{unit → units}/core/shape/basic/test_block_interface.rb +0 -0
  76. data/test/{unit → units}/core/shape/basic/test_block_internal.rb +0 -0
  77. data/test/{unit → units}/core/shape/basic/test_format.rb +0 -0
  78. data/test/{unit → units}/core/shape/basic/test_interface.rb +0 -0
  79. data/test/{unit → units}/core/shape/basic/test_internal.rb +0 -0
  80. data/test/{unit → units}/core/shape/image_block/test_interface.rb +0 -0
  81. data/test/{unit → units}/core/shape/image_block/test_internal.rb +0 -0
  82. data/test/{unit → units}/core/shape/list/test_format.rb +0 -0
  83. data/test/{unit → units}/core/shape/list/test_manager.rb +0 -0
  84. data/test/{unit → units}/core/shape/list/test_page.rb +0 -0
  85. data/test/{unit → units}/core/shape/list/test_page_state.rb +0 -0
  86. data/test/{unit → units}/core/shape/list/test_section_format.rb +0 -0
  87. data/test/{unit → units}/core/shape/list/test_section_interface.rb +0 -0
  88. data/test/{unit → units}/core/shape/list/test_section_internal.rb +0 -0
  89. data/test/{unit → units}/core/shape/manager/test_format.rb +0 -0
  90. data/test/{unit → units}/core/shape/manager/test_internal.rb +0 -0
  91. data/test/{unit → units}/core/shape/manager/test_target.rb +0 -0
  92. data/test/{unit → units}/core/shape/page_number/test_format.rb +0 -0
  93. data/test/{unit → units}/core/shape/page_number/test_interface.rb +0 -0
  94. data/test/{unit → units}/core/shape/page_number/test_internal.rb +0 -0
  95. data/test/{unit → units}/core/shape/styles/test_base.rb +0 -0
  96. data/test/{unit → units}/core/shape/styles/test_basic.rb +0 -0
  97. data/test/{unit → units}/core/shape/styles/test_graphic.rb +0 -0
  98. data/test/{unit → units}/core/shape/styles/test_text.rb +0 -0
  99. data/test/{unit → units}/core/shape/text/test_format.rb +0 -0
  100. data/test/{unit → units}/core/shape/text/test_internal.rb +0 -0
  101. data/test/{unit → units}/core/shape/text_block/formatter/test_basic.rb +0 -0
  102. data/test/{unit → units}/core/shape/text_block/formatter/test_datetime.rb +0 -0
  103. data/test/{unit → units}/core/shape/text_block/formatter/test_number.rb +0 -0
  104. data/test/{unit → units}/core/shape/text_block/formatter/test_padding.rb +0 -0
  105. data/test/{unit → units}/core/shape/text_block/test_format.rb +0 -0
  106. data/test/{unit → units}/core/shape/text_block/test_formatter.rb +0 -0
  107. data/test/{unit → units}/core/shape/text_block/test_interface.rb +0 -0
  108. data/test/{unit → units}/core/shape/text_block/test_internal.rb +0 -0
  109. data/test/{unit → units}/core/test_shape.rb +0 -0
  110. data/test/{unit → units}/core/test_utils.rb +0 -0
  111. data/test/{unit → units}/generator/pdf/document/graphics/test_attributes.rb +0 -0
  112. data/test/{unit → units}/generator/pdf/document/graphics/test_basic.rb +0 -0
  113. data/test/{unit → units}/generator/pdf/document/graphics/test_image.rb +0 -0
  114. data/test/{unit → units}/generator/pdf/document/graphics/test_text.rb +0 -0
  115. data/test/{unit → units}/generator/pdf/document/test_font.rb +0 -0
  116. data/test/{unit → units}/generator/pdf/document/test_graphics.rb +0 -0
  117. data/test/{unit → units}/generator/pdf/document/test_page.rb +0 -0
  118. data/test/{unit → units}/generator/pdf/document/test_parse_color.rb +0 -0
  119. data/test/{unit → units}/generator/pdf/prawn_ext/test_calc_image_dimensions.rb +0 -0
  120. data/test/{unit → units}/generator/pdf/prawn_ext/test_width_of.rb +0 -0
  121. data/test/{unit → units}/generator/pdf/test_document.rb +0 -0
  122. data/test/{unit → units}/generator/test_pdf.rb +0 -0
  123. data/test/{unit → units}/layout/test_base.rb +0 -0
  124. data/test/{unit → units}/layout/test_format.rb +0 -0
  125. data/test/{unit → units}/layout/test_legacy_schema.rb +3 -1
  126. data/test/{unit → units}/layout/test_version.rb +0 -0
  127. data/test/{unit → units}/report/test_base.rb +0 -0
  128. data/test/{unit → units}/report/test_internal.rb +0 -0
  129. data/test/{unit → units}/test_config.rb +0 -0
  130. data/test/{unit → units}/test_layout.rb +0 -0
  131. data/test/{unit → units}/test_report.rb +0 -0
  132. data/thinreports.gemspec +0 -1
  133. metadata +122 -123
  134. data/examples/character_spacing/character_spacing.rb +0 -8
  135. data/examples/dynamic_image/dynamic_image.rb +0 -31
  136. data/examples/dynamic_style/dynamic_style.rb +0 -150
  137. data/examples/eudc/eudc.rb +0 -20
  138. data/examples/helper.rb +0 -50
  139. data/examples/hidden_shapes/hidden_shapes.rb +0 -9
  140. data/examples/list_manual_generation/list_manual_generation.rb +0 -22
  141. data/examples/list_page_number/list_page_number.rb +0 -17
  142. data/examples/page_number/page_number.rb +0 -33
  143. data/examples/palleted_png/palleted_png.rb +0 -9
  144. data/examples/password_setting/password_setting.rb +0 -10
  145. data/examples/password_setting/password_setting.tlf +0 -45
  146. data/examples/report_callbacks/report_callbacks.rb +0 -14
  147. data/examples/single_line_tblock/single_line_tblock.rb +0 -13
  148. data/examples/tblock_overflow/tblock_overflow.rb +0 -20
  149. data/examples/text_align/text_align.rb +0 -8
  150. data/examples/typeB_page_size/B4_ISO.tlf +0 -45
  151. data/examples/typeB_page_size/B4_JIS.tlf +0 -45
  152. data/examples/typeB_page_size/typeB_page_size.rb +0 -17
  153. data/examples/word_wrap/word_wrap.rb +0 -26
  154. data/test/tmp/.gitkeep +0 -0
@@ -0,0 +1,152 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'feature_test'
4
+
5
+ class TestDynamicStyle < FeatureTest
6
+ feature :dynamic_style do
7
+ image = path_of('image.png')
8
+ setup_values = Proc.new do |page|
9
+ # The Basic Style
10
+ page.values(basic_show5: 'TextBlock',
11
+ basic_show6: image,
12
+ basic_hide5: 'TextBlock',
13
+ basic_hide6: image)
14
+ # The Text Style
15
+ page.values(text_b3: 'To bold',
16
+ text_b4: 'To normal',
17
+ text_i3: 'To italic',
18
+ text_i4: 'To normal',
19
+ text_u3: 'To underline',
20
+ text_u4: 'To none',
21
+ text_l3: 'To line-through',
22
+ text_l4: 'To none')
23
+ page.values(text_a2: 'To right align',
24
+ text_a3: "To right align\n右寄せ",
25
+ text_va2: "To bottom align\n下揃え",
26
+ text_color2: '赤色')
27
+ end
28
+
29
+ report = Thinreports::Report.new layout: template_path('templates/styles.tlf')
30
+
31
+ # Create raw-page.
32
+ report.start_new_page
33
+ report.page.item(:title).value('Original Page')
34
+
35
+ setup_values.call(report.page)
36
+
37
+ # Create styled-page.
38
+ report.start_new_page
39
+
40
+ setup_values.call(report.page)
41
+ report.page.item(:title).value('Styled Page')
42
+
43
+ # The Basic Style
44
+ 6.times do |i|
45
+ report.page.item("basic_show#{i + 1}").style(:visible, true)
46
+ report.page.item("basic_hide#{i + 1}").style(:visible, false)
47
+ end
48
+
49
+ # The Graphic Style
50
+ report.page.item(:graphic_bcolor1).style(:border_color, '#ff0000')
51
+ report.page[:graphic_bcolor2].style(:border_color, 'red')
52
+ # nil or 'none'.
53
+ report.page.item(:graphic_bcolor4).style(:border_color, nil)
54
+
55
+ report.page.item(:graphic_bwidth1).style(:border_width, 5)
56
+ report.page.item(:graphic_bwidth2).style(:border_width, 5)
57
+ report.page.item(:graphic_bwidth3).style(:border_width, 5)
58
+ report.page.item(:graphic_bwidth4).style(:border_width, 2)
59
+ report.page.item(:graphic_bwidth5).style(:border_width, 0)
60
+
61
+ report.page.item(:graphic_fcolor1).style(:fill_color, '#ff0000')
62
+ # nil or 'none'
63
+ report.page.item(:graphic_fcolor3).style(:fill_color, 'none')
64
+ report.page.item(:graphic_fcolor4).style(:fill_color, 'ff0000')
65
+
66
+ # The Text Style
67
+ [1, 3].each do |i|
68
+ report.page["text_b#{i}"].style(:bold, true)
69
+ report.page.item("text_i#{i}").style(:italic, true)
70
+ report.page.item("text_u#{i}").style(:underline, true)
71
+ report.page.item("text_l#{i}").style(:linethrough, true)
72
+ end
73
+ [2, 4].each do |i|
74
+ report.page.item("text_b#{i}").style(:bold, false)
75
+ report.page.item("text_i#{i}").style(:italic, false)
76
+ report.page.item("text_u#{i}").style(:underline, false)
77
+ report.page.item("text_l#{i}").style(:linethrough, false)
78
+ end
79
+
80
+ 3.times do |i|
81
+ report.page.item("text_a#{i + 1}").style(:align, :right)
82
+ end
83
+ 2.times do |i|
84
+ report.page.item("text_va#{i + 1}").style(:valign, :bottom)
85
+ end
86
+
87
+ 2.times do |i|
88
+ report.page["text_color#{i + 1}"].style(:color, 'ff0000')
89
+ end
90
+
91
+ report.start_new_page(layout: template_path('templates/styles_in_list.tlf'))
92
+
93
+ # Settings for Header.
94
+ report.page.list(:list).header do |header|
95
+ header.item(:rect).styles(border_color: nil,
96
+ fill_color: 'ff00ff')
97
+ header.item(:text).styles(align: :center,
98
+ valign: :middle,
99
+ bold: true)
100
+ header[:tblock].styles(align: :center,
101
+ valign: :middle,
102
+ color: 'red',
103
+ linethrough: true)
104
+ end
105
+
106
+ 1.step(10, 1) do |i|
107
+ # Flag of overflowed list-page.
108
+ is_overflowed = report.page.list(:list).overflow?
109
+
110
+ # Add details.
111
+ report.page.list(:list).add_row do |row|
112
+ case
113
+ when i % 2 == 0
114
+ row.item(:rect).styles(border_color: 'ff0000',
115
+ border_width: 3,
116
+ fill_color: '0000ff')
117
+ row.item(:text).styles(color: 'red',
118
+ align: :left,
119
+ valign: :middle)
120
+ row.item(:tblock).styles(color: 'blue',
121
+ align: :left,
122
+ valign: :middle)
123
+ when i % 3 == 0
124
+ row.item(:rect).style(:visible, false)
125
+ row.item(:text).styles(color: '0000ff',
126
+ align: :right,
127
+ valign: :bottom)
128
+ row.item(:tblock).styles(color: 'ff0000',
129
+ align: :right,
130
+ valign: :bottom)
131
+ end
132
+ end
133
+
134
+ # Change header styles when list-page was overflowed.
135
+ if is_overflowed
136
+ report.page.list(:list).header do |header|
137
+ header.item(:rect).styles(border_color: 'black',
138
+ fill_color: '#ffffff')
139
+ header.item(:text).styles(align: :left,
140
+ valign: :top,
141
+ bold: false)
142
+ header.item(:tblock).styles(align: :left,
143
+ valign: :top,
144
+ color: '#000000',
145
+ linethrough: false)
146
+ end
147
+ end
148
+ end
149
+
150
+ assert_pdf report.generate
151
+ end
152
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'feature_test'
4
+
5
+ class TestEudc < FeatureTest
6
+ feature :eudc do
7
+ Thinreports.configure do |config|
8
+ config.fallback_fonts = path_of('eudc.ttf')
9
+ end
10
+
11
+ report = Thinreports::Report.new layout: template_path
12
+ report.start_new_page do |page|
13
+ page.item(:eudc).value('日本で生まれ世界が育てた言語 Ruby')
14
+ page.values(
15
+ eudc_bold: '太字',
16
+ eudc_italic: '斜体',
17
+ eudc_bold_italic: '太字斜体'
18
+ )
19
+ end
20
+
21
+ assert_pdf report.generate
22
+ end
23
+
24
+ def teardown
25
+ Thinreports.config.fallback_fonts = []
26
+ end
27
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'minitest/autorun'
4
+ require 'minitest/unit'
5
+ require 'pathname'
6
+ require 'thinreports'
7
+
8
+ class FeatureTest < Minitest::Test
9
+ class << self
10
+ attr_reader :name, :desc
11
+
12
+ def feature(name, desc = nil, &block)
13
+ @name = name
14
+ @desc = desc
15
+ define_method(:test_feature, &block)
16
+ end
17
+ end
18
+
19
+ def dir
20
+ @dir ||= Pathname.new(__dir__).join(feature_name.to_s)
21
+ end
22
+
23
+ def path_of(filename)
24
+ dir.join(filename).to_path
25
+ end
26
+
27
+ def assert_pdf(actual)
28
+ actual_pdf.binwrite(actual)
29
+
30
+ if expect_pdf.exist?
31
+ assert match_expect_pdf?, 'Does not match expect.pdf. Check diff.pdf for details.'
32
+ else
33
+ flunk 'expect.pdf does not exist.'
34
+ end
35
+ end
36
+
37
+ def template_path(filename = 'template.tlf')
38
+ dir.join(filename).to_path
39
+ end
40
+
41
+ private
42
+
43
+ def feature_name
44
+ self.class.name
45
+ end
46
+
47
+ def match_expect_pdf?
48
+ system("diff-pdf --output-diff=#{path_of('diff.pdf')} #{expect_pdf} #{actual_pdf}")
49
+ end
50
+
51
+ def actual_pdf
52
+ dir.join('actual.pdf')
53
+ end
54
+
55
+ def expect_pdf
56
+ dir.join('expect.pdf')
57
+ end
58
+ end
@@ -0,0 +1,475 @@
1
+ %PDF-1.3
2
+ %����
3
+ 1 0 obj
4
+ << /CreationDate (D:20181106102142+09'00')
5
+ /Creator <feff005400680069006e007200650070006f007200740073002000470065006e0065007200610074006f007200200066006f00720020005200750062007900200030002e00310030002e0032>
6
+ /Title <feff>
7
+ /Producer <feff0050007200610077006e>
8
+ >>
9
+ endobj
10
+ 2 0 obj
11
+ << /Type /Catalog
12
+ /Pages 3 0 R
13
+ >>
14
+ endobj
15
+ 3 0 obj
16
+ << /Type /Pages
17
+ /Count 1
18
+ /Kids [7 0 R]
19
+ >>
20
+ endobj
21
+ 4 0 obj
22
+ << /Length 8
23
+ >>
24
+ stream
25
+ q
26
+ 0.9 w
27
+
28
+ endstream
29
+ endobj
30
+ 5 0 obj
31
+ << /Type /Page
32
+ /Parent 3 0 R
33
+ /MediaBox [0 0 612.0 792.0]
34
+ /CropBox [0 0 612.0 792.0]
35
+ /BleedBox [0 0 612.0 792.0]
36
+ /TrimBox [0 0 612.0 792.0]
37
+ /ArtBox [0 0 612.0 792.0]
38
+ /Contents 4 0 R
39
+ /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
40
+ >>
41
+ >>
42
+ endobj
43
+ 6 0 obj
44
+ << /Length 98
45
+ >>
46
+ stream
47
+ q
48
+ 0.9 w
49
+ /Stamp1 Do
50
+ /Stamp2 Do
51
+ /Stamp3 Do
52
+ /Stamp4 Do
53
+ /Stamp5 Do
54
+ /Stamp6 Do
55
+ /Stamp7 Do
56
+ /Stamp8 Do
57
+ Q
58
+
59
+ endstream
60
+ endobj
61
+ 7 0 obj
62
+ << /Type /Page
63
+ /Parent 3 0 R
64
+ /MediaBox [0 0 595.28 841.89]
65
+ /CropBox [0 0 595.28 841.89]
66
+ /BleedBox [0 0 595.28 841.89]
67
+ /TrimBox [0 0 595.28 841.89]
68
+ /ArtBox [0 0 595.28 841.89]
69
+ /Contents 6 0 R
70
+ /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
71
+ /XObject << /Stamp1 8 0 R
72
+ /Stamp2 10 0 R
73
+ /Stamp3 11 0 R
74
+ /Stamp4 12 0 R
75
+ /Stamp5 13 0 R
76
+ /Stamp6 14 0 R
77
+ /Stamp7 15 0 R
78
+ /Stamp8 16 0 R
79
+ >>
80
+ >>
81
+ >>
82
+ endobj
83
+ 8 0 obj
84
+ << /Type /XObject
85
+ /Subtype /Form
86
+ /BBox [0 0 595.28 841.89]
87
+ /Resources << /Font << /F1.0 9 0 R
88
+ >>
89
+ >>
90
+ /Length 1659
91
+ >>
92
+ stream
93
+ q
94
+ /DeviceRGB cs
95
+ 0.0 0.0 0.0 scn
96
+ /DeviceRGB CS
97
+ 0.0 0.0 0.0 SCN
98
+ 0.9 w
99
+ 0 J
100
+ 0 j
101
+ [] 0 d
102
+ q
103
+ 0.9 w
104
+ /DeviceRGB cs
105
+ 1.0 1.0 1.0 scn
106
+ /DeviceRGB CS
107
+ 0.0 0.0 0.0 SCN
108
+ 20.0 720.89 120.1 62.0 re
109
+ b
110
+ Q
111
+ q
112
+ 0.9 w
113
+ /DeviceRGB cs
114
+ 1.0 1.0 1.0 scn
115
+ /DeviceRGB CS
116
+ 0.0 0.0 0.0 SCN
117
+ 165.0 782.89 m
118
+ 265.1 782.89 l
119
+ 270.6228 782.89 275.1 778.4128 275.1 772.89 c
120
+ 275.1 730.89 l
121
+ 275.1 725.3672 270.6228 720.89 265.1 720.89 c
122
+ 165.0 720.89 l
123
+ 159.4772 720.89 155.0 725.3672 155.0 730.89 c
124
+ 155.0 772.89 l
125
+ 155.0 778.4128 159.4772 782.89 165.0 782.89 c
126
+ h
127
+ b
128
+ Q
129
+ q
130
+ /DeviceRGB cs
131
+ 0.0 0.0 0.0 scn
132
+
133
+ BT
134
+ 20.0 808.966 Td
135
+ /F1.0 18 Tf
136
+ [<52656374a02873746174696329>] TJ
137
+ ET
138
+
139
+ Q
140
+ q
141
+ [2.0 2.0] 0.0 d
142
+ 0.9 w
143
+ /DeviceRGB cs
144
+ 1.0 1.0 1.0 scn
145
+ /DeviceRGB CS
146
+ 0.0 0.0 0.0 SCN
147
+ 300.0 782.89 m
148
+ 400.1 782.89 l
149
+ 405.6228 782.89 410.1 778.4128 410.1 772.89 c
150
+ 410.1 730.89 l
151
+ 410.1 725.3672 405.6228 720.89 400.1 720.89 c
152
+ 300.0 720.89 l
153
+ 294.4772 720.89 290.0 725.3672 290.0 730.89 c
154
+ 290.0 772.89 l
155
+ 290.0 778.4128 294.4772 782.89 300.0 782.89 c
156
+ h
157
+ b
158
+ Q
159
+ q
160
+ [1.0 2.0] 0.0 d
161
+ 0.9 w
162
+ /DeviceRGB cs
163
+ 1.0 1.0 1.0 scn
164
+ /DeviceRGB CS
165
+ 0.0 0.0 0.0 SCN
166
+ 435.0 782.89 m
167
+ 535.1 782.89 l
168
+ 540.6228 782.89 545.1 778.4128 545.1 772.89 c
169
+ 545.1 730.89 l
170
+ 545.1 725.3672 540.6228 720.89 535.1 720.89 c
171
+ 435.0 720.89 l
172
+ 429.4772 720.89 425.0 725.3672 425.0 730.89 c
173
+ 425.0 772.89 l
174
+ 425.0 778.4128 429.4772 782.89 435.0 782.89 c
175
+ h
176
+ b
177
+ Q
178
+ q
179
+ 0.9 w
180
+ /DeviceRGB cs
181
+ 1.0 1.0 1.0 scn
182
+ /DeviceRGB CS
183
+ 1.0 0.0 0.0 SCN
184
+ 20.0 639.89 120.1 62.0 re
185
+ b
186
+ Q
187
+ q
188
+ /DeviceRGB cs
189
+ 1.0 0.0 0.0 scn
190
+ 155.0 639.89 120.1 62.0 re
191
+ f
192
+ Q
193
+ q
194
+ 0.9 w
195
+ /DeviceRGB CS
196
+ 0.0 0.4392 0.7529 SCN
197
+ 250.0 658.89 97.1 43.0 re
198
+ S
199
+ Q
200
+ q
201
+ /DeviceRGB cs
202
+ 0.0 0.0 0.0 scn
203
+
204
+ BT
205
+ 20.0 603.966 Td
206
+ /F1.0 18 Tf
207
+ [<52656374a02864796e616d696329>] TJ
208
+ ET
209
+
210
+ Q
211
+ Q
212
+
213
+ endstream
214
+ endobj
215
+ 9 0 obj
216
+ << /Type /Font
217
+ /Subtype /Type1
218
+ /BaseFont /Helvetica
219
+ /Encoding /WinAnsiEncoding
220
+ >>
221
+ endobj
222
+ 10 0 obj
223
+ << /Type /XObject
224
+ /Subtype /Form
225
+ /BBox [0 0 595.28 841.89]
226
+ /Length 183
227
+ >>
228
+ stream
229
+ q
230
+ /DeviceRGB cs
231
+ 0.0 0.0 0.0 scn
232
+ /DeviceRGB CS
233
+ 0.0 0.0 0.0 SCN
234
+ 0.9 w
235
+ 0 J
236
+ 0 j
237
+ [] 0 d
238
+ q
239
+ 0.9 w
240
+ /DeviceRGB cs
241
+ 1.0 1.0 1.0 scn
242
+ /DeviceRGB CS
243
+ 0.0 0.0 0.0 SCN
244
+ 20.0 514.89 120.1 62.0 re
245
+ b
246
+ Q
247
+ Q
248
+
249
+ endstream
250
+ endobj
251
+ 11 0 obj
252
+ << /Type /XObject
253
+ /Subtype /Form
254
+ /BBox [0 0 595.28 841.89]
255
+ /Length 418
256
+ >>
257
+ stream
258
+ q
259
+ /DeviceRGB cs
260
+ 0.0 0.0 0.0 scn
261
+ /DeviceRGB CS
262
+ 0.0 0.0 0.0 SCN
263
+ 0.9 w
264
+ 0 J
265
+ 0 j
266
+ [] 0 d
267
+ q
268
+ 0.9 w
269
+ /DeviceRGB cs
270
+ 1.0 1.0 1.0 scn
271
+ /DeviceRGB CS
272
+ 0.0 0.0 0.0 SCN
273
+ 165.0 576.89 m
274
+ 265.1 576.89 l
275
+ 270.6228 576.89 275.1 572.4128 275.1 566.89 c
276
+ 275.1 524.89 l
277
+ 275.1 519.3672 270.6228 514.89 265.1 514.89 c
278
+ 165.0 514.89 l
279
+ 159.4772 514.89 155.0 519.3672 155.0 524.89 c
280
+ 155.0 566.89 l
281
+ 155.0 572.4128 159.4772 576.89 165.0 576.89 c
282
+ h
283
+ b
284
+ Q
285
+ Q
286
+
287
+ endstream
288
+ endobj
289
+ 12 0 obj
290
+ << /Type /XObject
291
+ /Subtype /Form
292
+ /BBox [0 0 595.28 841.89]
293
+ /Length 434
294
+ >>
295
+ stream
296
+ q
297
+ /DeviceRGB cs
298
+ 0.0 0.0 0.0 scn
299
+ /DeviceRGB CS
300
+ 0.0 0.0 0.0 SCN
301
+ 0.9 w
302
+ 0 J
303
+ 0 j
304
+ [] 0 d
305
+ q
306
+ [2.0 2.0] 0.0 d
307
+ 0.9 w
308
+ /DeviceRGB cs
309
+ 1.0 1.0 1.0 scn
310
+ /DeviceRGB CS
311
+ 0.0 0.0 0.0 SCN
312
+ 300.0 576.89 m
313
+ 400.1 576.89 l
314
+ 405.6228 576.89 410.1 572.4128 410.1 566.89 c
315
+ 410.1 524.89 l
316
+ 410.1 519.3672 405.6228 514.89 400.1 514.89 c
317
+ 300.0 514.89 l
318
+ 294.4772 514.89 290.0 519.3672 290.0 524.89 c
319
+ 290.0 566.89 l
320
+ 290.0 572.4128 294.4772 576.89 300.0 576.89 c
321
+ h
322
+ b
323
+ Q
324
+ Q
325
+
326
+ endstream
327
+ endobj
328
+ 13 0 obj
329
+ << /Type /XObject
330
+ /Subtype /Form
331
+ /BBox [0 0 595.28 841.89]
332
+ /Length 434
333
+ >>
334
+ stream
335
+ q
336
+ /DeviceRGB cs
337
+ 0.0 0.0 0.0 scn
338
+ /DeviceRGB CS
339
+ 0.0 0.0 0.0 SCN
340
+ 0.9 w
341
+ 0 J
342
+ 0 j
343
+ [] 0 d
344
+ q
345
+ [1.0 2.0] 0.0 d
346
+ 0.9 w
347
+ /DeviceRGB cs
348
+ 1.0 1.0 1.0 scn
349
+ /DeviceRGB CS
350
+ 0.0 0.0 0.0 SCN
351
+ 435.0 576.89 m
352
+ 535.1 576.89 l
353
+ 540.6228 576.89 545.1 572.4128 545.1 566.89 c
354
+ 545.1 524.89 l
355
+ 545.1 519.3672 540.6228 514.89 535.1 514.89 c
356
+ 435.0 514.89 l
357
+ 429.4772 514.89 425.0 519.3672 425.0 524.89 c
358
+ 425.0 566.89 l
359
+ 425.0 572.4128 429.4772 576.89 435.0 576.89 c
360
+ h
361
+ b
362
+ Q
363
+ Q
364
+
365
+ endstream
366
+ endobj
367
+ 14 0 obj
368
+ << /Type /XObject
369
+ /Subtype /Form
370
+ /BBox [0 0 595.28 841.89]
371
+ /Length 183
372
+ >>
373
+ stream
374
+ q
375
+ /DeviceRGB cs
376
+ 0.0 0.0 0.0 scn
377
+ /DeviceRGB CS
378
+ 0.0 0.0 0.0 SCN
379
+ 0.9 w
380
+ 0 J
381
+ 0 j
382
+ [] 0 d
383
+ q
384
+ 0.9 w
385
+ /DeviceRGB cs
386
+ 1.0 1.0 1.0 scn
387
+ /DeviceRGB CS
388
+ 1.0 0.0 0.0 SCN
389
+ 20.0 433.89 120.1 62.0 re
390
+ b
391
+ Q
392
+ Q
393
+
394
+ endstream
395
+ endobj
396
+ 15 0 obj
397
+ << /Type /XObject
398
+ /Subtype /Form
399
+ /BBox [0 0 595.28 841.89]
400
+ /Length 148
401
+ >>
402
+ stream
403
+ q
404
+ /DeviceRGB cs
405
+ 0.0 0.0 0.0 scn
406
+ /DeviceRGB CS
407
+ 0.0 0.0 0.0 SCN
408
+ 0.9 w
409
+ 0 J
410
+ 0 j
411
+ [] 0 d
412
+ q
413
+ /DeviceRGB cs
414
+ 1.0 0.0 0.0 scn
415
+ 155.0 433.89 120.1 62.0 re
416
+ f
417
+ Q
418
+ Q
419
+
420
+ endstream
421
+ endobj
422
+ 16 0 obj
423
+ << /Type /XObject
424
+ /Subtype /Form
425
+ /BBox [0 0 595.28 841.89]
426
+ /Length 159
427
+ >>
428
+ stream
429
+ q
430
+ /DeviceRGB cs
431
+ 0.0 0.0 0.0 scn
432
+ /DeviceRGB CS
433
+ 0.0 0.0 0.0 SCN
434
+ 0.9 w
435
+ 0 J
436
+ 0 j
437
+ [] 0 d
438
+ q
439
+ 0.9 w
440
+ /DeviceRGB CS
441
+ 0.0 0.4392 0.7529 SCN
442
+ 250.0 452.89 97.1 43.0 re
443
+ S
444
+ Q
445
+ Q
446
+
447
+ endstream
448
+ endobj
449
+ xref
450
+ 0 17
451
+ 0000000000 65535 f
452
+ 0000000015 00000 n
453
+ 0000000291 00000 n
454
+ 0000000340 00000 n
455
+ 0000000397 00000 n
456
+ 0000000454 00000 n
457
+ 0000000716 00000 n
458
+ 0000000864 00000 n
459
+ 0000001270 00000 n
460
+ 0000003078 00000 n
461
+ 0000003175 00000 n
462
+ 0000003466 00000 n
463
+ 0000003992 00000 n
464
+ 0000004534 00000 n
465
+ 0000005076 00000 n
466
+ 0000005367 00000 n
467
+ 0000005623 00000 n
468
+ trailer
469
+ << /Size 17
470
+ /Root 2 0 R
471
+ /Info 1 0 R
472
+ >>
473
+ startxref
474
+ 5890
475
+ %%EOF