paperclip-phantom_svg 0.0.1
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.
- checksums.yaml +7 -0
- data/.gitignore +5 -0
- data/.rspec +2 -0
- data/.rubocop.yml +15 -0
- data/.travis.yml +8 -0
- data/Gemfile +10 -0
- data/Guardfile +26 -0
- data/README.md +4 -0
- data/lib/paperclip-phantom_svg.rb +2 -0
- data/lib/paperclip_processors/phantom_processor.rb +49 -0
- data/paperclip-phantom_svg.gemspec +27 -0
- data/spec/fixtures/apngasm.png +0 -0
- data/spec/fixtures/compiled.svg +437 -0
- data/spec/paperclip-phantom_svg_spec.rb +78 -0
- data/spec/spec_helper.rb +27 -0
- metadata +149 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9efdd038a6daecb6203d76e224b785829405b4bb
|
4
|
+
data.tar.gz: 2df4de80642c5d9d2f3c2ffabe7d3539d69caf2f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 664b0ad911a3610819d70c82269cef16a53053a674e449ebd90d7bbbbce82646964677c960f8d012ff9bcba2eb7cc8ec45463f62a7d59ebb6e599275c7986478
|
7
|
+
data.tar.gz: 5dce0b4bebf5c8bfc912220939095fdfef986d4d8d1631ac654ba72748c41817170bfe1861ac34ee3d876c8513de42077190159ee25bca2cc07f2da15537da12
|
data/.rspec
ADDED
data/.rubocop.yml
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Guardfile
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
guard :rubocop do
|
2
|
+
watch(%r{.+\.rb$})
|
3
|
+
watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
|
4
|
+
end
|
5
|
+
|
6
|
+
guard :rspec, cmd: 'bundle exec rspec' do
|
7
|
+
watch(%r{^spec/.+_spec\.rb$})
|
8
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
9
|
+
watch('spec/spec_helper.rb') { "spec" }
|
10
|
+
|
11
|
+
# Rails example
|
12
|
+
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
13
|
+
watch(%r{^app/(.*)(\.erb|\.haml|\.slim)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
|
14
|
+
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
|
15
|
+
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
|
16
|
+
watch('config/routes.rb') { "spec/routing" }
|
17
|
+
watch('app/controllers/application_controller.rb') { "spec/controllers" }
|
18
|
+
watch('spec/rails_helper.rb') { "spec" }
|
19
|
+
|
20
|
+
# Capybara features specs
|
21
|
+
watch(%r{^app/views/(.+)/.*\.(erb|haml|slim)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
|
22
|
+
|
23
|
+
# Turnip features and steps
|
24
|
+
watch(%r{^spec/acceptance/(.+)\.feature$})
|
25
|
+
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
|
26
|
+
end
|
data/README.md
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'phantom_svg'
|
2
|
+
require 'paperclip'
|
3
|
+
|
4
|
+
module Paperclip
|
5
|
+
# Phantom SVG processor for Paperclip
|
6
|
+
class PhantomProcessor < Processor
|
7
|
+
attr_accessor :format, :height, :width, :dst
|
8
|
+
def initialize(file, options = {}, attachment = nil)
|
9
|
+
super
|
10
|
+
@src = file
|
11
|
+
@options = options
|
12
|
+
@format = options[:format] || :svg
|
13
|
+
@height = options[:height] || 64
|
14
|
+
@width = options[:width] || 64
|
15
|
+
@attachment = attachment
|
16
|
+
@base_name = File.basename(@file.path, '.*')
|
17
|
+
@ouput_name = options[:output_name] || @base_name
|
18
|
+
@svg = Phantom::SVG::Base.new(@file.path)
|
19
|
+
end
|
20
|
+
|
21
|
+
def make
|
22
|
+
Paperclip.log "[PhantomSVG] Making #{@output_name}" if @whiny
|
23
|
+
case @format
|
24
|
+
when :svg
|
25
|
+
return _create_svg
|
26
|
+
when :png
|
27
|
+
return _create_png
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def _create_svg
|
34
|
+
@dst = Tempfile.new([@output_name, '.svg'])
|
35
|
+
Paperclip.log "[PhantomSVG] Creating SVG #{@output_name}" if @whiny
|
36
|
+
@svg.save_svg(dst.path)
|
37
|
+
@dst
|
38
|
+
end
|
39
|
+
|
40
|
+
def _create_png
|
41
|
+
@dst = Tempfile.new([@output_name, '.png'])
|
42
|
+
Paperclip.log "[PhantomSVG] Creating SVG #{@output_name} @ #{@height}x#{@width}" if @whiny
|
43
|
+
@svg.height = @height if @height
|
44
|
+
@svg.width = @width if @width
|
45
|
+
@svg.save_apng(@dst.path)
|
46
|
+
@dst
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.platform = Gem::Platform::RUBY
|
3
|
+
s.name = 'paperclip-phantom_svg'
|
4
|
+
s.version = '0.0.1'
|
5
|
+
s.license = 'LGPL-3.0'
|
6
|
+
s.summary = 'SVG and Raster (primarily PNG) conerters for Paperclip' \
|
7
|
+
' that don\'t suck so much.'
|
8
|
+
s.description = 'Hight end SVG conversion suite for Paperclip. ' \
|
9
|
+
'Default PaperClip SVG conversion is awful. Using Phantom SVG we can ' \
|
10
|
+
'cross-convert between SVG and PNG with cleaner results and animation ' \
|
11
|
+
'support.'
|
12
|
+
s.authors = ['Rei Kagetsuki']
|
13
|
+
s.email = 'info@genshin.org'
|
14
|
+
s.homepage = 'http://github.com/Genshin/phantom_svg-paperclip-processor'
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split($RS)
|
17
|
+
s.test_files = s.files.grep(/^spec\//)
|
18
|
+
s.require_paths = ['lib']
|
19
|
+
|
20
|
+
s.add_dependency 'paperclip'
|
21
|
+
s.add_dependency 'phantom_svg'
|
22
|
+
|
23
|
+
s.add_development_dependency 'bundler'
|
24
|
+
s.add_development_dependency 'rspec'
|
25
|
+
s.add_development_dependency 'activerecord'
|
26
|
+
s.add_development_dependency 'sqlite3'
|
27
|
+
end
|
Binary file
|
@@ -0,0 +1,437 @@
|
|
1
|
+
<?xml version='1.0' encoding='UTF-8'?>
|
2
|
+
<!-- Generated by phantom_svg. -->
|
3
|
+
<svg id='phantom_svg' width='64px' height='64px' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1'>
|
4
|
+
<defs>
|
5
|
+
<!-- Images. -->
|
6
|
+
<svg id='frame0' width='64px' height='64px' viewBox='0 0 64 64' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:cc='http://creativecommons.org/ns#' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'>
|
7
|
+
<defs id='defs2987'>
|
8
|
+
<marker inkscape:stockid='Arrow1Lstart' orient='auto' refY='0.0' refX='0.0' id='Arrow1Lstart' style='overflow:visible'>
|
9
|
+
<path id='path3787' d='M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z ' style='fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt' transform='scale(0.8) translate(12.5,0)'/>
|
10
|
+
</marker>
|
11
|
+
<linearGradient inkscape:collect='always' id='linearGradient3771'>
|
12
|
+
<stop style='stop-color:#000000;stop-opacity:1;' offset='0' id='stop3773'/>
|
13
|
+
<stop style='stop-color:#000000;stop-opacity:0;' offset='1' id='stop3775'/>
|
14
|
+
</linearGradient>
|
15
|
+
<linearGradient inkscape:collect='always' id='linearGradient3763'>
|
16
|
+
<stop style='stop-color:#008080;stop-opacity:1;' offset='0' id='stop3765'/>
|
17
|
+
<stop style='stop-color:#008080;stop-opacity:0;' offset='1' id='stop3767'/>
|
18
|
+
</linearGradient>
|
19
|
+
<linearGradient inkscape:collect='always' xlink:href='#linearGradient3763' id='linearGradient3769' x1='1.6449966' y1='13.354995' x2='39.282725' y2='13.354995' gradientUnits='userSpaceOnUse'/>
|
20
|
+
<radialGradient inkscape:collect='always' xlink:href='#linearGradient3771' id='radialGradient3781' cx='20.463861' cy='13.354995' fx='20.463861' fy='13.354995' r='18.818865' gradientTransform='matrix(1,0,0,0.90774142,0,1.2321129)' gradientUnits='userSpaceOnUse'/>
|
21
|
+
</defs>
|
22
|
+
<sodipodi:namedview id='base' pagecolor='#ffffff' bordercolor='#666666' borderopacity='1.0' inkscape:pageopacity='0.0' inkscape:pageshadow='2' inkscape:zoom='5.5' inkscape:cx='-4.2727273' inkscape:cy='32' inkscape:current-layer='layer1' showgrid='true' inkscape:document-units='px' inkscape:grid-bbox='true' inkscape:window-width='1366' inkscape:window-height='715' inkscape:window-x='0' inkscape:window-y='27' inkscape:window-maximized='1'/>
|
23
|
+
<metadata id='metadata2990'>
|
24
|
+
<rdf:RDF>
|
25
|
+
<cc:Work rdf:about=''>
|
26
|
+
<dc:format>
|
27
|
+
image/svg+xml
|
28
|
+
</dc:format>
|
29
|
+
<dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
|
30
|
+
<dc:title/>
|
31
|
+
</cc:Work>
|
32
|
+
</rdf:RDF>
|
33
|
+
</metadata>
|
34
|
+
<g id='layer1' inkscape:label='Layer 1' inkscape:groupmode='layer'>
|
35
|
+
<path sodipodi:type='spiral' style='fill:url(#linearGradient3769);stroke:url(#radialGradient3781);stroke-width:1.00024381999999989;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-start:url(#Arrow1Lstart)' id='path2993' sodipodi:cx='18.727272' sodipodi:cy='15.090909' sodipodi:expansion='1' sodipodi:revolution='3' sodipodi:radius='20.959623' sodipodi:argument='-18.082561' sodipodi:t0='0' d='m 18.727272,15.090909 c 0.756635,0.729285 -0.609765,1.379732 -1.21212,1.257577 -1.632345,-0.331034 -1.932014,-2.408544 -1.303034,-3.681817 1.125098,-2.277587 4.1497,-2.59765 6.151514,-1.348491 2.937743,1.833192 3.282497,5.91429 1.393948,8.621211 -2.517139,3.607901 -7.687172,3.975497 -11.090909,1.439404 C 8.3834171,18.187379 7.9939626,11.914792 11.181811,7.8181883 15.042722,2.8566527 22.424864,2.4458299 27.212113,6.2878708 32.85372,10.815583 33.285651,19.31136 28.787887,24.78787 23.595041,31.110717 13.983037,31.563609 7.818191,26.409101 0.81330178,20.552222 0.33953751,9.8222402 6.1515031,2.9697079 12.67165,-4.7177977 24.520848,-5.2123787 32.060593,1.2575632 40.431139,8.4404251 40.946501,21.409749 33.818195,29.63635' transform='matrix(1.632315,0,0,1.6711074,-1.3941512,10.128274)'/>
|
36
|
+
<path sodipodi:type='arc' style='color:#000000;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.65199995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate' id='path4246' sodipodi:cx='30.454546' sodipodi:cy='19.454546' sodipodi:rx='30.454546' sodipodi:ry='11.272727' d='m 60.909092,19.454546 a 30.454546,11.272727 0 1 1 -60.909092,0 30.454546,11.272727 0 1 1 60.909092,0 z' transform='translate(1.6363636,0)'/>
|
37
|
+
</g>
|
38
|
+
</svg>
|
39
|
+
<svg id='frame1' width='64px' height='64px' viewBox='0 0 64 64' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:cc='http://creativecommons.org/ns#' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'>
|
40
|
+
<defs id='defs2987'>
|
41
|
+
<marker inkscape:stockid='Arrow1Lstart' orient='auto' refY='0.0' refX='0.0' id='Arrow1Lstart' style='overflow:visible'>
|
42
|
+
<path id='path3787' d='M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z ' style='fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt' transform='scale(0.8) translate(12.5,0)'/>
|
43
|
+
</marker>
|
44
|
+
<linearGradient inkscape:collect='always' id='linearGradient3771'>
|
45
|
+
<stop style='stop-color:#000000;stop-opacity:1;' offset='0' id='stop3773'/>
|
46
|
+
<stop style='stop-color:#000000;stop-opacity:0;' offset='1' id='stop3775'/>
|
47
|
+
</linearGradient>
|
48
|
+
<linearGradient inkscape:collect='always' id='linearGradient3763'>
|
49
|
+
<stop style='stop-color:#008080;stop-opacity:1;' offset='0' id='stop3765'/>
|
50
|
+
<stop style='stop-color:#008080;stop-opacity:0;' offset='1' id='stop3767'/>
|
51
|
+
</linearGradient>
|
52
|
+
<linearGradient inkscape:collect='always' xlink:href='#linearGradient3763' id='linearGradient3769' x1='1.6449966' y1='13.354995' x2='39.282725' y2='13.354995' gradientUnits='userSpaceOnUse'/>
|
53
|
+
<radialGradient inkscape:collect='always' xlink:href='#linearGradient3771' id='radialGradient3781' cx='20.463861' cy='13.354995' fx='20.463861' fy='13.354995' r='18.818865' gradientTransform='matrix(1,0,0,0.90774142,0,1.2321129)' gradientUnits='userSpaceOnUse'/>
|
54
|
+
</defs>
|
55
|
+
<sodipodi:namedview id='base' pagecolor='#ffffff' bordercolor='#666666' borderopacity='1.0' inkscape:pageopacity='0.0' inkscape:pageshadow='2' inkscape:zoom='5.5' inkscape:cx='-4.4545455' inkscape:cy='32' inkscape:current-layer='layer1' showgrid='true' inkscape:document-units='px' inkscape:grid-bbox='true' inkscape:window-width='1366' inkscape:window-height='715' inkscape:window-x='0' inkscape:window-y='27' inkscape:window-maximized='1'/>
|
56
|
+
<metadata id='metadata2990'>
|
57
|
+
<rdf:RDF>
|
58
|
+
<cc:Work rdf:about=''>
|
59
|
+
<dc:format>
|
60
|
+
image/svg+xml
|
61
|
+
</dc:format>
|
62
|
+
<dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
|
63
|
+
<dc:title/>
|
64
|
+
</cc:Work>
|
65
|
+
</rdf:RDF>
|
66
|
+
</metadata>
|
67
|
+
<g id='layer1' inkscape:label='Layer 1' inkscape:groupmode='layer'>
|
68
|
+
<path sodipodi:type='spiral' style='fill:url(#linearGradient3769);stroke:url(#radialGradient3781);stroke-width:1.00024381999999989;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-start:url(#Arrow1Lstart)' id='path2993' sodipodi:cx='18.727272' sodipodi:cy='15.090909' sodipodi:expansion='1' sodipodi:revolution='3' sodipodi:radius='20.959623' sodipodi:argument='-18.082561' sodipodi:t0='0' d='m 18.727272,15.090909 c 0.756635,0.729285 -0.609765,1.379732 -1.21212,1.257577 -1.632345,-0.331034 -1.932014,-2.408544 -1.303034,-3.681817 1.125098,-2.277587 4.1497,-2.59765 6.151514,-1.348491 2.937743,1.833192 3.282497,5.91429 1.393948,8.621211 -2.517139,3.607901 -7.687172,3.975497 -11.090909,1.439404 C 8.3834171,18.187379 7.9939626,11.914792 11.181811,7.8181883 15.042722,2.8566527 22.424864,2.4458299 27.212113,6.2878708 32.85372,10.815583 33.285651,19.31136 28.787887,24.78787 23.595041,31.110717 13.983037,31.563609 7.818191,26.409101 0.81330178,20.552222 0.33953751,9.8222402 6.1515031,2.9697079 12.67165,-4.7177977 24.520848,-5.2123787 32.060593,1.2575632 40.431139,8.4404251 40.946501,21.409749 33.818195,29.63635' transform='matrix(1.632315,0,0,1.6711074,-1.3941512,10.128274)'/>
|
69
|
+
</g>
|
70
|
+
</svg>
|
71
|
+
<svg id='frame2' width='64px' height='64px' viewBox='0 0 64 64' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:cc='http://creativecommons.org/ns#' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'>
|
72
|
+
<defs id='defs2987'>
|
73
|
+
<marker inkscape:stockid='Arrow1Lstart' orient='auto' refY='0.0' refX='0.0' id='Arrow1Lstart' style='overflow:visible'>
|
74
|
+
<path id='path3787' d='M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z ' style='fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt' transform='scale(0.8) translate(12.5,0)'/>
|
75
|
+
</marker>
|
76
|
+
<linearGradient inkscape:collect='always' id='linearGradient3771'>
|
77
|
+
<stop style='stop-color:#000000;stop-opacity:1;' offset='0' id='stop3773'/>
|
78
|
+
<stop style='stop-color:#000000;stop-opacity:0;' offset='1' id='stop3775'/>
|
79
|
+
</linearGradient>
|
80
|
+
<linearGradient inkscape:collect='always' id='linearGradient3763'>
|
81
|
+
<stop style='stop-color:#008080;stop-opacity:1;' offset='0' id='stop3765'/>
|
82
|
+
<stop style='stop-color:#008080;stop-opacity:0;' offset='1' id='stop3767'/>
|
83
|
+
</linearGradient>
|
84
|
+
<linearGradient inkscape:collect='always' xlink:href='#linearGradient3763' id='linearGradient3769' x1='1.6449966' y1='13.354995' x2='39.282725' y2='13.354995' gradientUnits='userSpaceOnUse'/>
|
85
|
+
<radialGradient inkscape:collect='always' xlink:href='#linearGradient3771' id='radialGradient3781' cx='20.463861' cy='13.354995' fx='20.463861' fy='13.354995' r='18.818865' gradientTransform='matrix(1,0,0,0.90774142,0,1.2321129)' gradientUnits='userSpaceOnUse'/>
|
86
|
+
</defs>
|
87
|
+
<sodipodi:namedview id='base' pagecolor='#ffffff' bordercolor='#666666' borderopacity='1.0' inkscape:pageopacity='0.0' inkscape:pageshadow='2' inkscape:zoom='5.5' inkscape:cx='-4.4545455' inkscape:cy='32' inkscape:current-layer='layer1' showgrid='true' inkscape:document-units='px' inkscape:grid-bbox='true' inkscape:window-width='1366' inkscape:window-height='715' inkscape:window-x='0' inkscape:window-y='27' inkscape:window-maximized='1'/>
|
88
|
+
<metadata id='metadata2990'>
|
89
|
+
<rdf:RDF>
|
90
|
+
<cc:Work rdf:about=''>
|
91
|
+
<dc:format>
|
92
|
+
image/svg+xml
|
93
|
+
</dc:format>
|
94
|
+
<dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
|
95
|
+
<dc:title/>
|
96
|
+
</cc:Work>
|
97
|
+
</rdf:RDF>
|
98
|
+
</metadata>
|
99
|
+
<g id='layer1' inkscape:label='Layer 1' inkscape:groupmode='layer'>
|
100
|
+
<path sodipodi:type='spiral' style='fill:url(#linearGradient3769);fill-opacity:1;stroke:url(#radialGradient3781);stroke-width:1.00024378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart)' id='path2993' sodipodi:cx='18.727272' sodipodi:cy='15.090909' sodipodi:expansion='1' sodipodi:revolution='3' sodipodi:radius='20.959623' sodipodi:argument='-18.082561' sodipodi:t0='0' d='m 18.727272,15.090909 c 0.756635,0.729285 -0.609765,1.379732 -1.21212,1.257577 -1.632345,-0.331034 -1.932014,-2.408544 -1.303034,-3.681817 1.125098,-2.277587 4.1497,-2.59765 6.151514,-1.348491 2.937743,1.833192 3.282497,5.91429 1.393948,8.621211 -2.517139,3.607901 -7.687172,3.975497 -11.090909,1.439404 C 8.3834171,18.187379 7.9939626,11.914792 11.181811,7.8181883 15.042722,2.8566527 22.424864,2.4458299 27.212113,6.2878708 32.85372,10.815583 33.285651,19.31136 28.787887,24.78787 23.595041,31.110717 13.983037,31.563609 7.818191,26.409101 0.81330178,20.552222 0.33953751,9.8222402 6.1515031,2.9697079 12.67165,-4.7177977 24.520848,-5.2123787 32.060593,1.2575632 40.431139,8.4404251 40.946501,21.409749 33.818195,29.63635' transform='matrix(1.3842816,-0.86499516,0.885552,1.4171794,-8.1449735,31.220621)'/>
|
101
|
+
</g>
|
102
|
+
</svg>
|
103
|
+
<svg id='frame3' width='64px' height='64px' viewBox='0 0 64 64' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:cc='http://creativecommons.org/ns#' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'>
|
104
|
+
<defs id='defs2987'>
|
105
|
+
<marker inkscape:stockid='Arrow1Lstart' orient='auto' refY='0.0' refX='0.0' id='Arrow1Lstart' style='overflow:visible'>
|
106
|
+
<path id='path3787' d='M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z ' style='fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt' transform='scale(0.8) translate(12.5,0)'/>
|
107
|
+
</marker>
|
108
|
+
<linearGradient inkscape:collect='always' id='linearGradient3771'>
|
109
|
+
<stop style='stop-color:#000000;stop-opacity:1;' offset='0' id='stop3773'/>
|
110
|
+
<stop style='stop-color:#000000;stop-opacity:0;' offset='1' id='stop3775'/>
|
111
|
+
</linearGradient>
|
112
|
+
<linearGradient inkscape:collect='always' id='linearGradient3763'>
|
113
|
+
<stop style='stop-color:#008080;stop-opacity:1;' offset='0' id='stop3765'/>
|
114
|
+
<stop style='stop-color:#008080;stop-opacity:0;' offset='1' id='stop3767'/>
|
115
|
+
</linearGradient>
|
116
|
+
<linearGradient inkscape:collect='always' xlink:href='#linearGradient3763' id='linearGradient3769' x1='1.6449966' y1='13.354995' x2='39.282725' y2='13.354995' gradientUnits='userSpaceOnUse'/>
|
117
|
+
<radialGradient inkscape:collect='always' xlink:href='#linearGradient3771' id='radialGradient3781' cx='20.463861' cy='13.354995' fx='20.463861' fy='13.354995' r='18.818865' gradientTransform='matrix(1,0,0,0.90774142,0,1.2321129)' gradientUnits='userSpaceOnUse'/>
|
118
|
+
</defs>
|
119
|
+
<sodipodi:namedview id='base' pagecolor='#ffffff' bordercolor='#666666' borderopacity='1.0' inkscape:pageopacity='0.0' inkscape:pageshadow='2' inkscape:zoom='5.5' inkscape:cx='-4.4545455' inkscape:cy='32' inkscape:current-layer='layer1' showgrid='true' inkscape:document-units='px' inkscape:grid-bbox='true' inkscape:window-width='1366' inkscape:window-height='715' inkscape:window-x='0' inkscape:window-y='27' inkscape:window-maximized='1'/>
|
120
|
+
<metadata id='metadata2990'>
|
121
|
+
<rdf:RDF>
|
122
|
+
<cc:Work rdf:about=''>
|
123
|
+
<dc:format>
|
124
|
+
image/svg+xml
|
125
|
+
</dc:format>
|
126
|
+
<dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
|
127
|
+
<dc:title/>
|
128
|
+
</cc:Work>
|
129
|
+
</rdf:RDF>
|
130
|
+
</metadata>
|
131
|
+
<g id='layer1' inkscape:label='Layer 1' inkscape:groupmode='layer'>
|
132
|
+
<path sodipodi:type='spiral' style='fill:url(#linearGradient3769);fill-opacity:1;stroke:url(#radialGradient3781);stroke-width:1.00024378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart)' id='path2993' sodipodi:cx='18.727272' sodipodi:cy='15.090909' sodipodi:expansion='1' sodipodi:revolution='3' sodipodi:radius='20.959623' sodipodi:argument='-18.082561' sodipodi:t0='0' d='m 18.727272,15.090909 c 0.756635,0.729285 -0.609765,1.379732 -1.21212,1.257577 -1.632345,-0.331034 -1.932014,-2.408544 -1.303034,-3.681817 1.125098,-2.277587 4.1497,-2.59765 6.151514,-1.348491 2.937743,1.833192 3.282497,5.91429 1.393948,8.621211 -2.517139,3.607901 -7.687172,3.975497 -11.090909,1.439404 C 8.3834171,18.187379 7.9939626,11.914792 11.181811,7.8181883 15.042722,2.8566527 22.424864,2.4458299 27.212113,6.2878708 32.85372,10.815583 33.285651,19.31136 28.787887,24.78787 23.595041,31.110717 13.983037,31.563609 7.818191,26.409101 0.81330178,20.552222 0.33953751,9.8222402 6.1515031,2.9697079 12.67165,-4.7177977 24.520848,-5.2123787 32.060593,1.2575632 40.431139,8.4404251 40.946501,21.409749 33.818195,29.63635' transform='matrix(0.71555978,-1.467115,1.5019814,0.73256523,-2.9565128,53.906236)'/>
|
133
|
+
</g>
|
134
|
+
</svg>
|
135
|
+
<svg id='frame4' width='64px' height='64px' viewBox='0 0 64 64' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:cc='http://creativecommons.org/ns#' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'>
|
136
|
+
<defs id='defs2987'>
|
137
|
+
<marker inkscape:stockid='Arrow1Lstart' orient='auto' refY='0.0' refX='0.0' id='Arrow1Lstart' style='overflow:visible'>
|
138
|
+
<path id='path3787' d='M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z ' style='fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt' transform='scale(0.8) translate(12.5,0)'/>
|
139
|
+
</marker>
|
140
|
+
<linearGradient inkscape:collect='always' id='linearGradient3771'>
|
141
|
+
<stop style='stop-color:#000000;stop-opacity:1;' offset='0' id='stop3773'/>
|
142
|
+
<stop style='stop-color:#000000;stop-opacity:0;' offset='1' id='stop3775'/>
|
143
|
+
</linearGradient>
|
144
|
+
<linearGradient inkscape:collect='always' id='linearGradient3763'>
|
145
|
+
<stop style='stop-color:#008080;stop-opacity:1;' offset='0' id='stop3765'/>
|
146
|
+
<stop style='stop-color:#008080;stop-opacity:0;' offset='1' id='stop3767'/>
|
147
|
+
</linearGradient>
|
148
|
+
<linearGradient inkscape:collect='always' xlink:href='#linearGradient3763' id='linearGradient3769' x1='1.6449966' y1='13.354995' x2='39.282725' y2='13.354995' gradientUnits='userSpaceOnUse'/>
|
149
|
+
<radialGradient inkscape:collect='always' xlink:href='#linearGradient3771' id='radialGradient3781' cx='20.463861' cy='13.354995' fx='20.463861' fy='13.354995' r='18.818865' gradientTransform='matrix(1,0,0,0.90774142,0,1.2321129)' gradientUnits='userSpaceOnUse'/>
|
150
|
+
</defs>
|
151
|
+
<sodipodi:namedview id='base' pagecolor='#ffffff' bordercolor='#666666' borderopacity='1.0' inkscape:pageopacity='0.0' inkscape:pageshadow='2' inkscape:zoom='5.5' inkscape:cx='-4.4545455' inkscape:cy='32' inkscape:current-layer='layer1' showgrid='true' inkscape:document-units='px' inkscape:grid-bbox='true' inkscape:window-width='1366' inkscape:window-height='715' inkscape:window-x='0' inkscape:window-y='27' inkscape:window-maximized='1'/>
|
152
|
+
<metadata id='metadata2990'>
|
153
|
+
<rdf:RDF>
|
154
|
+
<cc:Work rdf:about=''>
|
155
|
+
<dc:format>
|
156
|
+
image/svg+xml
|
157
|
+
</dc:format>
|
158
|
+
<dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
|
159
|
+
<dc:title/>
|
160
|
+
</cc:Work>
|
161
|
+
</rdf:RDF>
|
162
|
+
</metadata>
|
163
|
+
<g id='layer1' inkscape:label='Layer 1' inkscape:groupmode='layer'>
|
164
|
+
<path sodipodi:type='spiral' style='fill:url(#linearGradient3769);fill-opacity:1;stroke:url(#radialGradient3781);stroke-width:1.00024378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart)' id='path2993' sodipodi:cx='18.727272' sodipodi:cy='15.090909' sodipodi:expansion='1' sodipodi:revolution='3' sodipodi:radius='20.959623' sodipodi:argument='-18.082561' sodipodi:t0='0' d='m 18.727272,15.090909 c 0.756635,0.729285 -0.609765,1.379732 -1.21212,1.257577 -1.632345,-0.331034 -1.932014,-2.408544 -1.303034,-3.681817 1.125098,-2.277587 4.1497,-2.59765 6.151514,-1.348491 2.937743,1.833192 3.282497,5.91429 1.393948,8.621211 -2.517139,3.607901 -7.687172,3.975497 -11.090909,1.439404 C 8.3834171,18.187379 7.9939626,11.914792 11.181811,7.8181883 15.042722,2.8566527 22.424864,2.4458299 27.212113,6.2878708 32.85372,10.815583 33.285651,19.31136 28.787887,24.78787 23.595041,31.110717 13.983037,31.563609 7.818191,26.409101 0.81330178,20.552222 0.33953751,9.8222402 6.1515031,2.9697079 12.67165,-4.7177977 24.520848,-5.2123787 32.060593,1.2575632 40.431139,8.4404251 40.946501,21.409749 33.818195,29.63635' transform='matrix(-0.17062339,-1.623373,1.6619529,-0.17467833,12.958606,70.860369)'/>
|
165
|
+
</g>
|
166
|
+
</svg>
|
167
|
+
<svg id='frame5' width='64px' height='64px' viewBox='0 0 64 64' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:cc='http://creativecommons.org/ns#' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'>
|
168
|
+
<defs id='defs2987'>
|
169
|
+
<marker inkscape:stockid='Arrow1Lstart' orient='auto' refY='0.0' refX='0.0' id='Arrow1Lstart' style='overflow:visible'>
|
170
|
+
<path id='path3787' d='M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z ' style='fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt' transform='scale(0.8) translate(12.5,0)'/>
|
171
|
+
</marker>
|
172
|
+
<linearGradient inkscape:collect='always' id='linearGradient3771'>
|
173
|
+
<stop style='stop-color:#000000;stop-opacity:1;' offset='0' id='stop3773'/>
|
174
|
+
<stop style='stop-color:#000000;stop-opacity:0;' offset='1' id='stop3775'/>
|
175
|
+
</linearGradient>
|
176
|
+
<linearGradient inkscape:collect='always' id='linearGradient3763'>
|
177
|
+
<stop style='stop-color:#008080;stop-opacity:1;' offset='0' id='stop3765'/>
|
178
|
+
<stop style='stop-color:#008080;stop-opacity:0;' offset='1' id='stop3767'/>
|
179
|
+
</linearGradient>
|
180
|
+
<linearGradient inkscape:collect='always' xlink:href='#linearGradient3763' id='linearGradient3769' x1='1.6449966' y1='13.354995' x2='39.282725' y2='13.354995' gradientUnits='userSpaceOnUse'/>
|
181
|
+
<radialGradient inkscape:collect='always' xlink:href='#linearGradient3771' id='radialGradient3781' cx='20.463861' cy='13.354995' fx='20.463861' fy='13.354995' r='18.818865' gradientTransform='matrix(1,0,0,0.90774142,0,1.2321129)' gradientUnits='userSpaceOnUse'/>
|
182
|
+
</defs>
|
183
|
+
<sodipodi:namedview id='base' pagecolor='#ffffff' bordercolor='#666666' borderopacity='1.0' inkscape:pageopacity='0.0' inkscape:pageshadow='2' inkscape:zoom='5.5' inkscape:cx='-4.4545455' inkscape:cy='32' inkscape:current-layer='layer1' showgrid='true' inkscape:document-units='px' inkscape:grid-bbox='true' inkscape:window-width='1366' inkscape:window-height='715' inkscape:window-x='0' inkscape:window-y='27' inkscape:window-maximized='1'/>
|
184
|
+
<metadata id='metadata2990'>
|
185
|
+
<rdf:RDF>
|
186
|
+
<cc:Work rdf:about=''>
|
187
|
+
<dc:format>
|
188
|
+
image/svg+xml
|
189
|
+
</dc:format>
|
190
|
+
<dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
|
191
|
+
<dc:title/>
|
192
|
+
</cc:Work>
|
193
|
+
</rdf:RDF>
|
194
|
+
</metadata>
|
195
|
+
<g id='layer1' inkscape:label='Layer 1' inkscape:groupmode='layer'>
|
196
|
+
<path sodipodi:type='spiral' style='fill:url(#linearGradient3769);fill-opacity:1;stroke:url(#radialGradient3781);stroke-width:1.00024378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart)' id='path2993' sodipodi:cx='18.727272' sodipodi:cy='15.090909' sodipodi:expansion='1' sodipodi:revolution='3' sodipodi:radius='20.959623' sodipodi:argument='-18.082561' sodipodi:t0='0' d='m 18.727272,15.090909 c 0.756635,0.729285 -0.609765,1.379732 -1.21212,1.257577 -1.632345,-0.331034 -1.932014,-2.408544 -1.303034,-3.681817 1.125098,-2.277587 4.1497,-2.59765 6.151514,-1.348491 2.937743,1.833192 3.282497,5.91429 1.393948,8.621211 -2.517139,3.607901 -7.687172,3.975497 -11.090909,1.439404 C 8.3834171,18.187379 7.9939626,11.914792 11.181811,7.8181883 15.042722,2.8566527 22.424864,2.4458299 27.212113,6.2878708 32.85372,10.815583 33.285651,19.31136 28.787887,24.78787 23.595041,31.110717 13.983037,31.563609 7.818191,26.409101 0.81330178,20.552222 0.33953751,9.8222402 6.1515031,2.9697079 12.67165,-4.7177977 24.520848,-5.2123787 32.060593,1.2575632 40.431139,8.4404251 40.946501,21.409749 33.818195,29.63635' transform='matrix(-1.0049535,-1.2862818,1.3168506,-1.0288365,34.853384,75.469381)'/>
|
197
|
+
</g>
|
198
|
+
</svg>
|
199
|
+
<svg id='frame6' width='64px' height='64px' viewBox='0 0 64 64' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:cc='http://creativecommons.org/ns#' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'>
|
200
|
+
<defs id='defs2987'>
|
201
|
+
<marker inkscape:stockid='Arrow1Lstart' orient='auto' refY='0.0' refX='0.0' id='Arrow1Lstart' style='overflow:visible'>
|
202
|
+
<path id='path3787' d='M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z ' style='fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt' transform='scale(0.8) translate(12.5,0)'/>
|
203
|
+
</marker>
|
204
|
+
<linearGradient inkscape:collect='always' id='linearGradient3771'>
|
205
|
+
<stop style='stop-color:#000000;stop-opacity:1;' offset='0' id='stop3773'/>
|
206
|
+
<stop style='stop-color:#000000;stop-opacity:0;' offset='1' id='stop3775'/>
|
207
|
+
</linearGradient>
|
208
|
+
<linearGradient inkscape:collect='always' id='linearGradient3763'>
|
209
|
+
<stop style='stop-color:#008080;stop-opacity:1;' offset='0' id='stop3765'/>
|
210
|
+
<stop style='stop-color:#008080;stop-opacity:0;' offset='1' id='stop3767'/>
|
211
|
+
</linearGradient>
|
212
|
+
<linearGradient inkscape:collect='always' xlink:href='#linearGradient3763' id='linearGradient3769' x1='1.6449966' y1='13.354995' x2='39.282725' y2='13.354995' gradientUnits='userSpaceOnUse'/>
|
213
|
+
<radialGradient inkscape:collect='always' xlink:href='#linearGradient3771' id='radialGradient3781' cx='20.463861' cy='13.354995' fx='20.463861' fy='13.354995' r='18.818865' gradientTransform='matrix(1,0,0,0.90774142,0,1.2321129)' gradientUnits='userSpaceOnUse'/>
|
214
|
+
</defs>
|
215
|
+
<sodipodi:namedview id='base' pagecolor='#ffffff' bordercolor='#666666' borderopacity='1.0' inkscape:pageopacity='0.0' inkscape:pageshadow='2' inkscape:zoom='5.5' inkscape:cx='-4.4545455' inkscape:cy='32' inkscape:current-layer='layer1' showgrid='true' inkscape:document-units='px' inkscape:grid-bbox='true' inkscape:window-width='1366' inkscape:window-height='715' inkscape:window-x='0' inkscape:window-y='27' inkscape:window-maximized='1'/>
|
216
|
+
<metadata id='metadata2990'>
|
217
|
+
<rdf:RDF>
|
218
|
+
<cc:Work rdf:about=''>
|
219
|
+
<dc:format>
|
220
|
+
image/svg+xml
|
221
|
+
</dc:format>
|
222
|
+
<dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
|
223
|
+
<dc:title/>
|
224
|
+
</cc:Work>
|
225
|
+
</rdf:RDF>
|
226
|
+
</metadata>
|
227
|
+
<g id='layer1' inkscape:label='Layer 1' inkscape:groupmode='layer'>
|
228
|
+
<path sodipodi:type='spiral' style='fill:url(#linearGradient3769);fill-opacity:1;stroke:url(#radialGradient3781);stroke-width:1.00024378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart)' id='path2993' sodipodi:cx='18.727272' sodipodi:cy='15.090909' sodipodi:expansion='1' sodipodi:revolution='3' sodipodi:radius='20.959623' sodipodi:argument='-18.082561' sodipodi:t0='0' d='m 18.727272,15.090909 c 0.756635,0.729285 -0.609765,1.379732 -1.21212,1.257577 -1.632345,-0.331034 -1.932014,-2.408544 -1.303034,-3.681817 1.125098,-2.277587 4.1497,-2.59765 6.151514,-1.348491 2.937743,1.833192 3.282497,5.91429 1.393948,8.621211 -2.517139,3.607901 -7.687172,3.975497 -11.090909,1.439404 C 8.3834171,18.187379 7.9939626,11.914792 11.181811,7.8181883 15.042722,2.8566527 22.424864,2.4458299 27.212113,6.2878708 32.85372,10.815583 33.285651,19.31136 28.787887,24.78787 23.595041,31.110717 13.983037,31.563609 7.818191,26.409101 0.81330178,20.552222 0.33953751,9.8222402 6.1515031,2.9697079 12.67165,-4.7177977 24.520848,-5.2123787 32.060593,1.2575632 40.431139,8.4404251 40.946501,21.409749 33.818195,29.63635' transform='matrix(-1.5338744,-0.55828461,0.57155236,-1.5703273,57.089001,68.041399)'/>
|
229
|
+
</g>
|
230
|
+
</svg>
|
231
|
+
<svg id='frame7' width='64px' height='64px' viewBox='0 0 64 64' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:cc='http://creativecommons.org/ns#' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'>
|
232
|
+
<defs id='defs2987'>
|
233
|
+
<marker inkscape:stockid='Arrow1Lstart' orient='auto' refY='0.0' refX='0.0' id='Arrow1Lstart' style='overflow:visible'>
|
234
|
+
<path id='path3787' d='M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z ' style='fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt' transform='scale(0.8) translate(12.5,0)'/>
|
235
|
+
</marker>
|
236
|
+
<linearGradient inkscape:collect='always' id='linearGradient3771'>
|
237
|
+
<stop style='stop-color:#000000;stop-opacity:1;' offset='0' id='stop3773'/>
|
238
|
+
<stop style='stop-color:#000000;stop-opacity:0;' offset='1' id='stop3775'/>
|
239
|
+
</linearGradient>
|
240
|
+
<linearGradient inkscape:collect='always' id='linearGradient3763'>
|
241
|
+
<stop style='stop-color:#008080;stop-opacity:1;' offset='0' id='stop3765'/>
|
242
|
+
<stop style='stop-color:#008080;stop-opacity:0;' offset='1' id='stop3767'/>
|
243
|
+
</linearGradient>
|
244
|
+
<linearGradient inkscape:collect='always' xlink:href='#linearGradient3763' id='linearGradient3769' x1='1.6449966' y1='13.354995' x2='39.282725' y2='13.354995' gradientUnits='userSpaceOnUse'/>
|
245
|
+
<radialGradient inkscape:collect='always' xlink:href='#linearGradient3771' id='radialGradient3781' cx='20.463861' cy='13.354995' fx='20.463861' fy='13.354995' r='18.818865' gradientTransform='matrix(1,0,0,0.90774142,0,1.2321129)' gradientUnits='userSpaceOnUse'/>
|
246
|
+
</defs>
|
247
|
+
<sodipodi:namedview id='base' pagecolor='#ffffff' bordercolor='#666666' borderopacity='1.0' inkscape:pageopacity='0.0' inkscape:pageshadow='2' inkscape:zoom='5.5' inkscape:cx='-4.4545455' inkscape:cy='32' inkscape:current-layer='layer1' showgrid='true' inkscape:document-units='px' inkscape:grid-bbox='true' inkscape:window-width='1366' inkscape:window-height='715' inkscape:window-x='0' inkscape:window-y='27' inkscape:window-maximized='1'/>
|
248
|
+
<metadata id='metadata2990'>
|
249
|
+
<rdf:RDF>
|
250
|
+
<cc:Work rdf:about=''>
|
251
|
+
<dc:format>
|
252
|
+
image/svg+xml
|
253
|
+
</dc:format>
|
254
|
+
<dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
|
255
|
+
<dc:title/>
|
256
|
+
</cc:Work>
|
257
|
+
</rdf:RDF>
|
258
|
+
</metadata>
|
259
|
+
<g id='layer1' inkscape:label='Layer 1' inkscape:groupmode='layer'>
|
260
|
+
<path sodipodi:type='spiral' style='fill:url(#linearGradient3769);fill-opacity:1;stroke:url(#radialGradient3781);stroke-width:1.00024378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart)' id='path2993' sodipodi:cx='18.727272' sodipodi:cy='15.090909' sodipodi:expansion='1' sodipodi:revolution='3' sodipodi:radius='20.959623' sodipodi:argument='-18.082561' sodipodi:t0='0' d='m 18.727272,15.090909 c 0.756635,0.729285 -0.609765,1.379732 -1.21212,1.257577 -1.632345,-0.331034 -1.932014,-2.408544 -1.303034,-3.681817 1.125098,-2.277587 4.1497,-2.59765 6.151514,-1.348491 2.937743,1.833192 3.282497,5.91429 1.393948,8.621211 -2.517139,3.607901 -7.687172,3.975497 -11.090909,1.439404 C 8.3834171,18.187379 7.9939626,11.914792 11.181811,7.8181883 15.042722,2.8566527 22.424864,2.4458299 27.212113,6.2878708 32.85372,10.815583 33.285651,19.31136 28.787887,24.78787 23.595041,31.110717 13.983037,31.563609 7.818191,26.409101 0.81330178,20.552222 0.33953751,9.8222402 6.1515031,2.9697079 12.67165,-4.7177977 24.520848,-5.2123787 32.060593,1.2575632 40.431139,8.4404251 40.946501,21.409749 33.818195,29.63635' transform='matrix(-1.596645,0.33937739,-0.3474428,-1.6345897,72.047901,50.592159)'/>
|
261
|
+
</g>
|
262
|
+
</svg>
|
263
|
+
<svg id='frame8' width='64px' height='64px' viewBox='0 0 64 64' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:cc='http://creativecommons.org/ns#' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'>
|
264
|
+
<defs id='defs2987'>
|
265
|
+
<marker inkscape:stockid='Arrow1Lstart' orient='auto' refY='0.0' refX='0.0' id='Arrow1Lstart' style='overflow:visible'>
|
266
|
+
<path id='path3787' d='M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z ' style='fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt' transform='scale(0.8) translate(12.5,0)'/>
|
267
|
+
</marker>
|
268
|
+
<linearGradient inkscape:collect='always' id='linearGradient3771'>
|
269
|
+
<stop style='stop-color:#000000;stop-opacity:1;' offset='0' id='stop3773'/>
|
270
|
+
<stop style='stop-color:#000000;stop-opacity:0;' offset='1' id='stop3775'/>
|
271
|
+
</linearGradient>
|
272
|
+
<linearGradient inkscape:collect='always' id='linearGradient3763'>
|
273
|
+
<stop style='stop-color:#008080;stop-opacity:1;' offset='0' id='stop3765'/>
|
274
|
+
<stop style='stop-color:#008080;stop-opacity:0;' offset='1' id='stop3767'/>
|
275
|
+
</linearGradient>
|
276
|
+
<linearGradient inkscape:collect='always' xlink:href='#linearGradient3763' id='linearGradient3769' x1='1.6449966' y1='13.354995' x2='39.282725' y2='13.354995' gradientUnits='userSpaceOnUse'/>
|
277
|
+
<radialGradient inkscape:collect='always' xlink:href='#linearGradient3771' id='radialGradient3781' cx='20.463861' cy='13.354995' fx='20.463861' fy='13.354995' r='18.818865' gradientTransform='matrix(1,0,0,0.90774142,0,1.2321129)' gradientUnits='userSpaceOnUse'/>
|
278
|
+
</defs>
|
279
|
+
<sodipodi:namedview id='base' pagecolor='#ffffff' bordercolor='#666666' borderopacity='1.0' inkscape:pageopacity='0.0' inkscape:pageshadow='2' inkscape:zoom='5.5' inkscape:cx='-4.4545455' inkscape:cy='32' inkscape:current-layer='layer1' showgrid='true' inkscape:document-units='px' inkscape:grid-bbox='true' inkscape:window-width='1366' inkscape:window-height='715' inkscape:window-x='0' inkscape:window-y='27' inkscape:window-maximized='1'/>
|
280
|
+
<metadata id='metadata2990'>
|
281
|
+
<rdf:RDF>
|
282
|
+
<cc:Work rdf:about=''>
|
283
|
+
<dc:format>
|
284
|
+
image/svg+xml
|
285
|
+
</dc:format>
|
286
|
+
<dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
|
287
|
+
<dc:title/>
|
288
|
+
</cc:Work>
|
289
|
+
</rdf:RDF>
|
290
|
+
</metadata>
|
291
|
+
<g id='layer1' inkscape:label='Layer 1' inkscape:groupmode='layer'>
|
292
|
+
<path sodipodi:type='spiral' style='fill:url(#linearGradient3769);fill-opacity:1;stroke:url(#radialGradient3781);stroke-width:1.00024378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart)' id='path2993' sodipodi:cx='18.727272' sodipodi:cy='15.090909' sodipodi:expansion='1' sodipodi:revolution='3' sodipodi:radius='20.959623' sodipodi:argument='-18.082561' sodipodi:t0='0' d='m 18.727272,15.090909 c 0.756635,0.729285 -0.609765,1.379732 -1.21212,1.257577 -1.632345,-0.331034 -1.932014,-2.408544 -1.303034,-3.681817 1.125098,-2.277587 4.1497,-2.59765 6.151514,-1.348491 2.937743,1.833192 3.282497,5.91429 1.393948,8.621211 -2.517139,3.607901 -7.687172,3.975497 -11.090909,1.439404 C 8.3834171,18.187379 7.9939626,11.914792 11.181811,7.8181883 15.042722,2.8566527 22.424864,2.4458299 27.212113,6.2878708 32.85372,10.815583 33.285651,19.31136 28.787887,24.78787 23.595041,31.110717 13.983037,31.563609 7.818191,26.409101 0.81330178,20.552222 0.33953751,9.8222402 6.1515031,2.9697079 12.67165,-4.7177977 24.520848,-5.2123787 32.060593,1.2575632 40.431139,8.4404251 40.946501,21.409749 33.818195,29.63635' transform='matrix(-1.1741891,1.1339013,-1.1608488,-1.2020941,74.442988,28.121856)'/>
|
293
|
+
</g>
|
294
|
+
</svg>
|
295
|
+
<svg id='frame9' width='64px' height='64px' viewBox='0 0 64 64' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:cc='http://creativecommons.org/ns#' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'>
|
296
|
+
<defs id='defs2987'>
|
297
|
+
<marker inkscape:stockid='Arrow1Lstart' orient='auto' refY='0.0' refX='0.0' id='Arrow1Lstart' style='overflow:visible'>
|
298
|
+
<path id='path3787' d='M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z ' style='fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt' transform='scale(0.8) translate(12.5,0)'/>
|
299
|
+
</marker>
|
300
|
+
<linearGradient inkscape:collect='always' id='linearGradient3771'>
|
301
|
+
<stop style='stop-color:#000000;stop-opacity:1;' offset='0' id='stop3773'/>
|
302
|
+
<stop style='stop-color:#000000;stop-opacity:0;' offset='1' id='stop3775'/>
|
303
|
+
</linearGradient>
|
304
|
+
<linearGradient inkscape:collect='always' id='linearGradient3763'>
|
305
|
+
<stop style='stop-color:#008080;stop-opacity:1;' offset='0' id='stop3765'/>
|
306
|
+
<stop style='stop-color:#008080;stop-opacity:0;' offset='1' id='stop3767'/>
|
307
|
+
</linearGradient>
|
308
|
+
<linearGradient inkscape:collect='always' xlink:href='#linearGradient3763' id='linearGradient3769' x1='1.6449966' y1='13.354995' x2='39.282725' y2='13.354995' gradientUnits='userSpaceOnUse'/>
|
309
|
+
<radialGradient inkscape:collect='always' xlink:href='#linearGradient3771' id='radialGradient3781' cx='20.463861' cy='13.354995' fx='20.463861' fy='13.354995' r='18.818865' gradientTransform='matrix(1,0,0,0.90774142,0,1.2321129)' gradientUnits='userSpaceOnUse'/>
|
310
|
+
</defs>
|
311
|
+
<sodipodi:namedview id='base' pagecolor='#ffffff' bordercolor='#666666' borderopacity='1.0' inkscape:pageopacity='0.0' inkscape:pageshadow='2' inkscape:zoom='5.5' inkscape:cx='-4.4545455' inkscape:cy='32' inkscape:current-layer='layer1' showgrid='true' inkscape:document-units='px' inkscape:grid-bbox='true' inkscape:window-width='1366' inkscape:window-height='715' inkscape:window-x='0' inkscape:window-y='27' inkscape:window-maximized='1'/>
|
312
|
+
<metadata id='metadata2990'>
|
313
|
+
<rdf:RDF>
|
314
|
+
<cc:Work rdf:about=''>
|
315
|
+
<dc:format>
|
316
|
+
image/svg+xml
|
317
|
+
</dc:format>
|
318
|
+
<dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
|
319
|
+
<dc:title/>
|
320
|
+
</cc:Work>
|
321
|
+
</rdf:RDF>
|
322
|
+
</metadata>
|
323
|
+
<g id='layer1' inkscape:label='Layer 1' inkscape:groupmode='layer'>
|
324
|
+
<path sodipodi:type='spiral' style='fill:url(#linearGradient3769);fill-opacity:1;stroke:url(#radialGradient3781);stroke-width:1.00024378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart)' id='path2993' sodipodi:cx='18.727272' sodipodi:cy='15.090909' sodipodi:expansion='1' sodipodi:revolution='3' sodipodi:radius='20.959623' sodipodi:argument='-18.082561' sodipodi:t0='0' d='m 18.727272,15.090909 c 0.756635,0.729285 -0.609765,1.379732 -1.21212,1.257577 -1.632345,-0.331034 -1.932014,-2.408544 -1.303034,-3.681817 1.125098,-2.277587 4.1497,-2.59765 6.151514,-1.348491 2.937743,1.833192 3.282497,5.91429 1.393948,8.621211 -2.517139,3.607901 -7.687172,3.975497 -11.090909,1.439404 C 8.3834171,18.187379 7.9939626,11.914792 11.181811,7.8181883 15.042722,2.8566527 22.424864,2.4458299 27.212113,6.2878708 32.85372,10.815583 33.285651,19.31136 28.787887,24.78787 23.595041,31.110717 13.983037,31.563609 7.818191,26.409101 0.81330178,20.552222 0.33953751,9.8222402 6.1515031,2.9697079 12.67165,-4.7177977 24.520848,-5.2123787 32.060593,1.2575632 40.431139,8.4404251 40.946501,21.409749 33.818195,29.63635' transform='matrix(-0.39489269,1.5838283,-1.6214684,-0.40427747,64.841842,6.5878521)'/>
|
325
|
+
</g>
|
326
|
+
</svg>
|
327
|
+
<svg id='frame10' width='64px' height='64px' viewBox='0 0 64 64' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:cc='http://creativecommons.org/ns#' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'>
|
328
|
+
<defs id='defs2987'>
|
329
|
+
<marker inkscape:stockid='Arrow1Lstart' orient='auto' refY='0.0' refX='0.0' id='Arrow1Lstart' style='overflow:visible'>
|
330
|
+
<path id='path3787' d='M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z ' style='fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt' transform='scale(0.8) translate(12.5,0)'/>
|
331
|
+
</marker>
|
332
|
+
<linearGradient inkscape:collect='always' id='linearGradient3771'>
|
333
|
+
<stop style='stop-color:#000000;stop-opacity:1;' offset='0' id='stop3773'/>
|
334
|
+
<stop style='stop-color:#000000;stop-opacity:0;' offset='1' id='stop3775'/>
|
335
|
+
</linearGradient>
|
336
|
+
<linearGradient inkscape:collect='always' id='linearGradient3763'>
|
337
|
+
<stop style='stop-color:#008080;stop-opacity:1;' offset='0' id='stop3765'/>
|
338
|
+
<stop style='stop-color:#008080;stop-opacity:0;' offset='1' id='stop3767'/>
|
339
|
+
</linearGradient>
|
340
|
+
<linearGradient inkscape:collect='always' xlink:href='#linearGradient3763' id='linearGradient3769' x1='1.6449966' y1='13.354995' x2='39.282725' y2='13.354995' gradientUnits='userSpaceOnUse'/>
|
341
|
+
<radialGradient inkscape:collect='always' xlink:href='#linearGradient3771' id='radialGradient3781' cx='20.463861' cy='13.354995' fx='20.463861' fy='13.354995' r='18.818865' gradientTransform='matrix(1,0,0,0.90774142,0,1.2321129)' gradientUnits='userSpaceOnUse'/>
|
342
|
+
</defs>
|
343
|
+
<sodipodi:namedview id='base' pagecolor='#ffffff' bordercolor='#666666' borderopacity='1.0' inkscape:pageopacity='0.0' inkscape:pageshadow='2' inkscape:zoom='5.5' inkscape:cx='-4.4545455' inkscape:cy='32' inkscape:current-layer='layer1' showgrid='true' inkscape:document-units='px' inkscape:grid-bbox='true' inkscape:window-width='1366' inkscape:window-height='715' inkscape:window-x='0' inkscape:window-y='27' inkscape:window-maximized='1'/>
|
344
|
+
<metadata id='metadata2990'>
|
345
|
+
<rdf:RDF>
|
346
|
+
<cc:Work rdf:about=''>
|
347
|
+
<dc:format>
|
348
|
+
image/svg+xml
|
349
|
+
</dc:format>
|
350
|
+
<dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
|
351
|
+
<dc:title/>
|
352
|
+
</cc:Work>
|
353
|
+
</rdf:RDF>
|
354
|
+
</metadata>
|
355
|
+
<g id='layer1' inkscape:label='Layer 1' inkscape:groupmode='layer'>
|
356
|
+
<path sodipodi:type='spiral' style='fill:url(#linearGradient3769);fill-opacity:1;stroke:url(#radialGradient3781);stroke-width:1.00024378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart)' id='path2993' sodipodi:cx='18.727272' sodipodi:cy='15.090909' sodipodi:expansion='1' sodipodi:revolution='3' sodipodi:radius='20.959623' sodipodi:argument='-18.082561' sodipodi:t0='0' d='m 18.727272,15.090909 c 0.756635,0.729285 -0.609765,1.379732 -1.21212,1.257577 -1.632345,-0.331034 -1.932014,-2.408544 -1.303034,-3.681817 1.125098,-2.277587 4.1497,-2.59765 6.151514,-1.348491 2.937743,1.833192 3.282497,5.91429 1.393948,8.621211 -2.517139,3.607901 -7.687172,3.975497 -11.090909,1.439404 C 8.3834171,18.187379 7.9939626,11.914792 11.181811,7.8181883 15.042722,2.8566527 22.424864,2.4458299 27.212113,6.2878708 32.85372,10.815583 33.285651,19.31136 28.787887,24.78787 23.595041,31.110717 13.983037,31.563609 7.818191,26.409101 0.81330178,20.552222 0.33953751,9.8222402 6.1515031,2.9697079 12.67165,-4.7177977 24.520848,-5.2123787 32.060593,1.2575632 40.431139,8.4404251 40.946501,21.409749 33.818195,29.63635' transform='matrix(0.50441313,1.5524238,-1.5893176,0.5164006,46.056531,-6.1230106)'/>
|
357
|
+
</g>
|
358
|
+
</svg>
|
359
|
+
<svg id='frame11' width='64px' height='64px' viewBox='0 0 64 64' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:cc='http://creativecommons.org/ns#' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'>
|
360
|
+
<defs id='defs2987'>
|
361
|
+
<marker inkscape:stockid='Arrow1Lstart' orient='auto' refY='0.0' refX='0.0' id='Arrow1Lstart' style='overflow:visible'>
|
362
|
+
<path id='path3787' d='M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z ' style='fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt' transform='scale(0.8) translate(12.5,0)'/>
|
363
|
+
</marker>
|
364
|
+
<linearGradient inkscape:collect='always' id='linearGradient3771'>
|
365
|
+
<stop style='stop-color:#000000;stop-opacity:1;' offset='0' id='stop3773'/>
|
366
|
+
<stop style='stop-color:#000000;stop-opacity:0;' offset='1' id='stop3775'/>
|
367
|
+
</linearGradient>
|
368
|
+
<linearGradient inkscape:collect='always' id='linearGradient3763'>
|
369
|
+
<stop style='stop-color:#008080;stop-opacity:1;' offset='0' id='stop3765'/>
|
370
|
+
<stop style='stop-color:#008080;stop-opacity:0;' offset='1' id='stop3767'/>
|
371
|
+
</linearGradient>
|
372
|
+
<linearGradient inkscape:collect='always' xlink:href='#linearGradient3763' id='linearGradient3769' x1='1.6449966' y1='13.354995' x2='39.282725' y2='13.354995' gradientUnits='userSpaceOnUse'/>
|
373
|
+
<radialGradient inkscape:collect='always' xlink:href='#linearGradient3771' id='radialGradient3781' cx='20.463861' cy='13.354995' fx='20.463861' fy='13.354995' r='18.818865' gradientTransform='matrix(1,0,0,0.90774142,0,1.2321129)' gradientUnits='userSpaceOnUse'/>
|
374
|
+
</defs>
|
375
|
+
<sodipodi:namedview id='base' pagecolor='#ffffff' bordercolor='#666666' borderopacity='1.0' inkscape:pageopacity='0.0' inkscape:pageshadow='2' inkscape:zoom='5.5' inkscape:cx='-4.4545455' inkscape:cy='32' inkscape:current-layer='layer1' showgrid='true' inkscape:document-units='px' inkscape:grid-bbox='true' inkscape:window-width='1366' inkscape:window-height='715' inkscape:window-x='0' inkscape:window-y='27' inkscape:window-maximized='1'/>
|
376
|
+
<metadata id='metadata2990'>
|
377
|
+
<rdf:RDF>
|
378
|
+
<cc:Work rdf:about=''>
|
379
|
+
<dc:format>
|
380
|
+
image/svg+xml
|
381
|
+
</dc:format>
|
382
|
+
<dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
|
383
|
+
<dc:title/>
|
384
|
+
</cc:Work>
|
385
|
+
</rdf:RDF>
|
386
|
+
</metadata>
|
387
|
+
<g id='layer1' inkscape:label='Layer 1' inkscape:groupmode='layer'>
|
388
|
+
<path sodipodi:type='spiral' style='fill:url(#linearGradient3769);fill-opacity:1;stroke:url(#radialGradient3781);stroke-width:1.00024378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart)' id='path2993' sodipodi:cx='18.727272' sodipodi:cy='15.090909' sodipodi:expansion='1' sodipodi:revolution='3' sodipodi:radius='20.959623' sodipodi:argument='-18.082561' sodipodi:t0='0' d='m 18.727272,15.090909 c 0.756635,0.729285 -0.609765,1.379732 -1.21212,1.257577 -1.632345,-0.331034 -1.932014,-2.408544 -1.303034,-3.681817 1.125098,-2.277587 4.1497,-2.59765 6.151514,-1.348491 2.937743,1.833192 3.282497,5.91429 1.393948,8.621211 -2.517139,3.607901 -7.687172,3.975497 -11.090909,1.439404 C 8.3834171,18.187379 7.9939626,11.914792 11.181811,7.8181883 15.042722,2.8566527 22.424864,2.4458299 27.212113,6.2878708 32.85372,10.815583 33.285651,19.31136 28.787887,24.78787 23.595041,31.110717 13.983037,31.563609 7.818191,26.409101 0.81330178,20.552222 0.33953751,9.8222402 6.1515031,2.9697079 12.67165,-4.7177977 24.520848,-5.2123787 32.060593,1.2575632 40.431139,8.4404251 40.946501,21.409749 33.818195,29.63635' transform='matrix(1.2504259,1.0492318,-1.0741671,1.2801426,23.244087,-6.2564708)'/>
|
389
|
+
</g>
|
390
|
+
</svg>
|
391
|
+
<!-- Animation. -->
|
392
|
+
<symbol id='animation'>
|
393
|
+
<use xlink:href='#frame0' visibility='hidden'>
|
394
|
+
<set id='frame0_anim' attributeName='visibility' to='visible' begin='0s;frame11_anim.end' dur='1.0s'/>
|
395
|
+
</use>
|
396
|
+
<use xlink:href='#frame1' visibility='hidden'>
|
397
|
+
<set id='frame1_anim' attributeName='visibility' to='visible' begin='frame0_anim.end' dur='0.1s'/>
|
398
|
+
</use>
|
399
|
+
<use xlink:href='#frame2' visibility='hidden'>
|
400
|
+
<set id='frame2_anim' attributeName='visibility' to='visible' begin='frame1_anim.end' dur='0.1s'/>
|
401
|
+
</use>
|
402
|
+
<use xlink:href='#frame3' visibility='hidden'>
|
403
|
+
<set id='frame3_anim' attributeName='visibility' to='visible' begin='frame2_anim.end' dur='0.1s'/>
|
404
|
+
</use>
|
405
|
+
<use xlink:href='#frame4' visibility='hidden'>
|
406
|
+
<set id='frame4_anim' attributeName='visibility' to='visible' begin='frame3_anim.end' dur='0.1s'/>
|
407
|
+
</use>
|
408
|
+
<use xlink:href='#frame5' visibility='hidden'>
|
409
|
+
<set id='frame5_anim' attributeName='visibility' to='visible' begin='frame4_anim.end' dur='0.1s'/>
|
410
|
+
</use>
|
411
|
+
<use xlink:href='#frame6' visibility='hidden'>
|
412
|
+
<set id='frame6_anim' attributeName='visibility' to='visible' begin='frame5_anim.end' dur='0.1s'/>
|
413
|
+
</use>
|
414
|
+
<use xlink:href='#frame7' visibility='hidden'>
|
415
|
+
<set id='frame7_anim' attributeName='visibility' to='visible' begin='frame6_anim.end' dur='0.1s'/>
|
416
|
+
</use>
|
417
|
+
<use xlink:href='#frame8' visibility='hidden'>
|
418
|
+
<set id='frame8_anim' attributeName='visibility' to='visible' begin='frame7_anim.end' dur='0.1s'/>
|
419
|
+
</use>
|
420
|
+
<use xlink:href='#frame9' visibility='hidden'>
|
421
|
+
<set id='frame9_anim' attributeName='visibility' to='visible' begin='frame8_anim.end' dur='0.1s'/>
|
422
|
+
</use>
|
423
|
+
<use xlink:href='#frame10' visibility='hidden'>
|
424
|
+
<set id='frame10_anim' attributeName='visibility' to='visible' begin='frame9_anim.end' dur='0.1s'/>
|
425
|
+
</use>
|
426
|
+
<use xlink:href='#frame11' visibility='hidden'>
|
427
|
+
<set id='frame11_anim' attributeName='visibility' to='visible' begin='frame10_anim.end' dur='2.0s'/>
|
428
|
+
</use>
|
429
|
+
</symbol>
|
430
|
+
</defs>
|
431
|
+
<!-- Main control. -->
|
432
|
+
<animate id='controller' begin='0s' dur='4.000000000000001s' repeatCount='indefinite'/>
|
433
|
+
<use xlink:href='#frame0'>
|
434
|
+
<set attributeName='xlink:href' to='#animation' begin='controller.begin'/>
|
435
|
+
<set attributeName='xlink:href' to='#frame11' begin='controller.end'/>
|
436
|
+
</use>
|
437
|
+
</svg>
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Paperclip::PhantomProcessor do
|
4
|
+
before(:all) do
|
5
|
+
clear_tmp
|
6
|
+
end
|
7
|
+
|
8
|
+
let(:svg_source) { File.new(fixture_file('compiled.svg')) }
|
9
|
+
let(:png_source) { File.new(fixture_file('apngasm.png')) }
|
10
|
+
let(:test_options_svg) { { output_name: 'test_svg', format: :svg } }
|
11
|
+
let(:test_options_png) { { output_name: 'test_png', format: :png, height: 128, width: 128 } }
|
12
|
+
let(:test_options_png_h) { { output_name: 'test_png_h', format: :png, height: 64 } }
|
13
|
+
|
14
|
+
describe '.new' do
|
15
|
+
let(:test_instance) { Paperclip::PhantomProcessor.new(svg_source, test_options_png) }
|
16
|
+
|
17
|
+
it 'properly instantiates' do
|
18
|
+
expect(test_instance).to be_an_instance_of(Paperclip::PhantomProcessor)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'properly parses format and size options' do
|
22
|
+
expect(test_instance.format).to be(:png)
|
23
|
+
expect(test_instance.height).to be(128)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'with an animated SVG source' do
|
28
|
+
describe '.make({format: :svg})' do
|
29
|
+
it 'saves an SVG from an SVG' do
|
30
|
+
processor = Paperclip::PhantomProcessor.new(svg_source, test_options_svg)
|
31
|
+
expect(processor.make).to be_an_instance_of(Paperclip::Tempfile)
|
32
|
+
expect(File).to exist(processor.dst.path)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '.make({format: :png, height: 128, width: 128})' do
|
37
|
+
it 'saves a PNG from an SVG' do
|
38
|
+
processor = Paperclip::PhantomProcessor.new(svg_source, test_options_png)
|
39
|
+
expect(processor.make).to be_an_instance_of(Paperclip::Tempfile)
|
40
|
+
expect(File).to exist(processor.dst.path)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '.make({format: :png, height: 64})' do
|
45
|
+
it 'saves a PNG from an SVG' do
|
46
|
+
processor = Paperclip::PhantomProcessor.new(svg_source, test_options_png_h)
|
47
|
+
expect(processor.make).to be_an_instance_of(Paperclip::Tempfile)
|
48
|
+
expect(File).to exist(processor.dst.path)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
context 'with an animated PNG source' do
|
54
|
+
describe '.make({format: :svg})' do
|
55
|
+
it 'saves an SVG from an SVG' do
|
56
|
+
processor = Paperclip::PhantomProcessor.new(png_source, test_options_svg)
|
57
|
+
expect(processor.make).to be_an_instance_of(Paperclip::Tempfile)
|
58
|
+
expect(File).to exist(processor.dst.path)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe '.make({format: :png, height: 128, width: 128})' do
|
63
|
+
it 'saves a PNG from an SVG' do
|
64
|
+
processor = Paperclip::PhantomProcessor.new(png_source, test_options_png)
|
65
|
+
expect(processor.make).to be_an_instance_of(Paperclip::Tempfile)
|
66
|
+
expect(File).to exist(processor.dst.path)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe '.make({format: :png, height: 64})' do
|
71
|
+
it 'saves a PNG from an SVG' do
|
72
|
+
processor = Paperclip::PhantomProcessor.new(png_source, test_options_png_h)
|
73
|
+
expect(processor.make).to be_an_instance_of(Paperclip::Tempfile)
|
74
|
+
expect(File).to exist(processor.dst.path)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
require 'paperclip-phantom_svg'
|
3
|
+
require 'active_record'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
def attachment(options={})
|
7
|
+
Paperclip::Attachment.new(:phantom, DummyPhantom.new, options)
|
8
|
+
end
|
9
|
+
|
10
|
+
def fixture_file(filename)
|
11
|
+
File.join(File.dirname(__FILE__), 'fixtures', filename)
|
12
|
+
end
|
13
|
+
|
14
|
+
def tmp_dir_path
|
15
|
+
File.dirname(__FILE__) + '/out'
|
16
|
+
end
|
17
|
+
|
18
|
+
def tmp_dir
|
19
|
+
unless File.directory?(tmp_dir_path)
|
20
|
+
FileUtils.mkdir_p(tmp_dir_path)
|
21
|
+
end
|
22
|
+
tmp_dir_path
|
23
|
+
end
|
24
|
+
|
25
|
+
def clear_tmp
|
26
|
+
FileUtils.rm_rf(tmp_dir)
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,149 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: paperclip-phantom_svg
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Rei Kagetsuki
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-09-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: paperclip
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: phantom_svg
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: activerecord
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: sqlite3
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
description: Hight end SVG conversion suite for Paperclip. Default PaperClip SVG conversion
|
98
|
+
is awful. Using Phantom SVG we can cross-convert between SVG and PNG with cleaner
|
99
|
+
results and animation support.
|
100
|
+
email: info@genshin.org
|
101
|
+
executables: []
|
102
|
+
extensions: []
|
103
|
+
extra_rdoc_files: []
|
104
|
+
files:
|
105
|
+
- ".gitignore"
|
106
|
+
- ".rspec"
|
107
|
+
- ".rubocop.yml"
|
108
|
+
- ".travis.yml"
|
109
|
+
- Gemfile
|
110
|
+
- Guardfile
|
111
|
+
- README.md
|
112
|
+
- lib/paperclip-phantom_svg.rb
|
113
|
+
- lib/paperclip_processors/phantom_processor.rb
|
114
|
+
- paperclip-phantom_svg.gemspec
|
115
|
+
- spec/fixtures/apngasm.png
|
116
|
+
- spec/fixtures/compiled.svg
|
117
|
+
- spec/paperclip-phantom_svg_spec.rb
|
118
|
+
- spec/spec_helper.rb
|
119
|
+
homepage: http://github.com/Genshin/phantom_svg-paperclip-processor
|
120
|
+
licenses:
|
121
|
+
- LGPL-3.0
|
122
|
+
metadata: {}
|
123
|
+
post_install_message:
|
124
|
+
rdoc_options: []
|
125
|
+
require_paths:
|
126
|
+
- lib
|
127
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - ">="
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '0'
|
137
|
+
requirements: []
|
138
|
+
rubyforge_project:
|
139
|
+
rubygems_version: 2.2.2
|
140
|
+
signing_key:
|
141
|
+
specification_version: 4
|
142
|
+
summary: SVG and Raster (primarily PNG) conerters for Paperclip that don't suck so
|
143
|
+
much.
|
144
|
+
test_files:
|
145
|
+
- spec/fixtures/apngasm.png
|
146
|
+
- spec/fixtures/compiled.svg
|
147
|
+
- spec/paperclip-phantom_svg_spec.rb
|
148
|
+
- spec/spec_helper.rb
|
149
|
+
has_rdoc:
|