norbert-braid 0.4.13 → 0.5.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.
@@ -86,7 +86,7 @@ module Braid
86
86
  def diff
87
87
  remote_hash = git.rev_parse("#{base_revision}:")
88
88
  local_hash = git.tree_hash(path)
89
- remote_hash != local_hash ? git.diff_tree(remote_hash, local_hash, path) : ""
89
+ remote_hash != local_hash ? git.diff_tree(remote_hash, local_hash) : ""
90
90
  end
91
91
 
92
92
  def fetch
@@ -1,6 +1,7 @@
1
1
  require 'singleton'
2
2
  require 'rubygems'
3
3
  require 'open4'
4
+ require 'tempfile'
4
5
 
5
6
  module Braid
6
7
  module Operations
@@ -118,13 +119,13 @@ module Braid
118
119
  def sh(cmd, message = nil)
119
120
  message ||= "could not fetch" if cmd =~ /fetch/
120
121
  log(cmd)
121
- system(cmd)
122
- raise ShellExecutionError, message unless $? == 0
122
+ `#{cmd}`
123
+ raise ShellExecutionError, message unless $?.exitstatus == 0
123
124
  true
124
125
  end
125
126
 
126
127
  def msg(str)
127
- puts str
128
+ puts "Braid: #{str}"
128
129
  end
129
130
 
130
131
  def log(cmd)
@@ -138,7 +139,16 @@ module Braid
138
139
 
139
140
  class Git < Proxy
140
141
  def commit(message, *args)
141
- status, out, err = exec("git commit -m #{message.inspect} --no-verify #{args.join(' ')}")
142
+ cmd = "git commit --no-verify"
143
+ if message # allow nil
144
+ message_file = Tempfile.new("braid_commit")
145
+ message_file.print(message)
146
+ message_file.flush
147
+ cmd << " -F #{message_file.path}"
148
+ end
149
+ cmd << " #{args.join(' ')}" unless args.empty?
150
+ status, out, err = exec(cmd)
151
+ message_file.unlink if message_file
142
152
 
143
153
  if status == 0
144
154
  true
@@ -149,10 +159,10 @@ module Braid
149
159
  end
150
160
  end
151
161
 
152
- def fetch(remote = nil)
153
- args = remote && "-n #{remote}"
162
+ def fetch(remote = nil, *args)
163
+ args.unshift "-n #{remote}" if remote
154
164
  # open4 messes with the pipes of index-pack
155
- sh("git fetch #{args} 2>&1 >/dev/null")
165
+ sh("git fetch #{args.join(' ')} 2>&1 >/dev/null")
156
166
  end
157
167
 
158
168
  def checkout(treeish)
@@ -0,0 +1,13 @@
1
+ require 'yaml'
2
+
3
+ class Hash
4
+ def to_yaml(opts = {})
5
+ YAML::quick_emit(object_id, opts) do |out|
6
+ out.map(taguri, to_yaml_style) do |map|
7
+ sort.each do |k,v|
8
+ map.add(k, v)
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: norbert-braid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.13
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cristi Balan
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2008-10-23 00:00:00 -07:00
13
+ date: 2008-10-29 00:00:00 -07:00
14
14
  default_executable: braid
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -37,14 +37,18 @@ executables:
37
37
  - braid
38
38
  extensions: []
39
39
 
40
- extra_rdoc_files:
41
- - README.rdoc
40
+ extra_rdoc_files: []
41
+
42
42
  files:
43
- - bin/braid
43
+ - LICENSE
44
+ - Rakefile
45
+ - README.textile
44
46
  - braid.gemspec
47
+ - bin/braid
45
48
  - lib/braid/command.rb
46
49
  - lib/braid/commands/add.rb
47
50
  - lib/braid/commands/diff.rb
51
+ - lib/braid/commands/push.rb
48
52
  - lib/braid/commands/remove.rb
49
53
  - lib/braid/commands/setup.rb
50
54
  - lib/braid/commands/update.rb
@@ -52,23 +56,13 @@ files:
52
56
  - lib/braid/mirror.rb
53
57
  - lib/braid/operations.rb
54
58
  - lib/braid.rb
55
- - LICENSE
56
- - Rakefile
57
- - README.rdoc
59
+ - lib/core_ext.rb
58
60
  - test/braid_test.rb
59
61
  - test/config_test.rb
60
- - test/fixtures/shiny/README
61
- - test/fixtures/skit1/layouts/layout.liquid
62
- - test/fixtures/skit1/preview.png
63
- - test/fixtures/skit1.1/layouts/layout.liquid
64
- - test/fixtures/skit1.2/layouts/layout.liquid
65
- - test/integration/adding_test.rb
66
- - test/integration/updating_test.rb
67
- - test/integration_helper.rb
68
62
  - test/mirror_test.rb
69
63
  - test/operations_test.rb
70
64
  - test/test_helper.rb
71
- has_rdoc: true
65
+ has_rdoc: false
72
66
  homepage: http://evil.che.lu/projects/braid
73
67
  post_install_message:
74
68
  rdoc_options:
@@ -77,7 +71,6 @@ rdoc_options:
77
71
  - --title
78
72
  - braid
79
73
  - --main
80
- - README.rdoc
81
74
  require_paths:
82
75
  - lib
83
76
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -1,27 +0,0 @@
1
- = braid
2
- A simple tool for tracking vendor branches in git.
3
-
4
- http://evil.che.lu/projects/braid/
5
-
6
- == Requirements
7
-
8
- You will need git 1.5.4.5 or higher to run this version.
9
-
10
- == Installation
11
-
12
- git clone git://github.com/evilchelu/braid.git
13
- cd braid
14
- gem build braid.gemspec
15
- sudo gem install braid-x.y.z.gem
16
-
17
- == Usage
18
-
19
- braid help
20
- braid help COMMANDNAME
21
-
22
- For more usage examples and documentation check the project wiki at http://github.com/evilchelu/braid/wikis.
23
- Also see the bug tracker at http://evilchelu.lighthouseapp.com/projects/10600-braid for current issues and future plans.
24
-
25
- == Contributing
26
-
27
- If you want to send a patch please fork the project on GitHub and send a pull request.
@@ -1,3 +0,0 @@
1
- shiny app
2
-
3
- it uses braid to pull in a bunch of stuff!
@@ -1,219 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
3
- {{ '/feed/atom.xml' | assign_to: 'global_feed' }}
4
- {{ '/feed/all_comments.xml' | assign_to: 'global_comments_feed' }}
5
- <head>
6
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
- <title>
8
- {{ site.title }}
9
- {% if site.current_section %}
10
- - {{ site.current_section.name }}
11
- {% endif %}
12
- {% if article %}
13
- - {{ article.title }}
14
- {% endif %}
15
- </title>
16
- <link rel="alternate" type="application/atom+xml" title="{{ site.title }} feed" href="{{ global_feed }}"/>
17
- <link rel="alternate" type="application/atom+xml" title="{{ site.title }} comments feed" href="{{ global_comments_feed }}"/>
18
- {{ 'base' | stylesheet }}
19
- {{ 'app' | javascript }}
20
- <!--[if IE]>
21
- {{ 'base_ie' | stylesheet }}
22
- <![endif]-->
23
- </head>
24
-
25
- <body class="fixed green">
26
- <script type="text/javascript">loadPreferences()</script>
27
-
28
- <div id="wrapper">
29
-
30
- <div id="header" class="clearfix">
31
- <div id="title" class="clearfix">
32
- <h1><a href="/">{{ site.title }}</a></h1>
33
- </div>
34
- <h2>Sections</h2>
35
- <ul id="menu">
36
- {% for section in site.sections %}
37
- {% if section.articles_count > 0 %}
38
- {% if section.is_home %}
39
- <li{% if section.current %} class="selected"{% endif %}>{{ section | link_to_section }}</li>
40
- {% else %}
41
- {% if section.is_paged %}
42
- <li{% if section.current %} class="selected"{% endif %}>{{ section | link_to_section }}</li>
43
- {% endif %}
44
- {% endif %}
45
- {% endif %}
46
- {% endfor %}
47
- </ul>
48
- </div>
49
-
50
- <div id="contentwrapper" class="clearfix">
51
-
52
- <div id="content">
53
-
54
- <div id="innerwrapper">
55
-
56
- <div class="article">
57
- <div class="body">
58
- <h2>Skittlish Tips'n'Tricks</h2>
59
- <ul>
60
- <li>Change the classes for the body tag to set your default site style. also change these in the app.js file (line 66).</li>
61
- <li>Remove the scripts and the #options div if you don't want the option switcher.</li>
62
- <li>The top menu shows the home section and the sections that are not blogs.</li>
63
- <li>Email me at <a href="mailto:evil@che.lu">evil@che.lu</a> if you have any questions.</li>
64
- <li>Happy hacking!</li>
65
- </ul>
66
- </div>
67
- </div>
68
-
69
- {{ content_for_layout }}
70
-
71
- </div>
72
-
73
- </div>
74
-
75
- <div id="sidebar">
76
-
77
- <div class="boxy short">
78
- <h3>boxy short</h3>
79
-
80
- <p>You can have, boxes with a short, tall or no background shade, just change the class of the containing div.</p>
81
-
82
- <p>Have boxes with smaller text with the class "minor". See the "Recent" boxy below.</p>
83
-
84
- </div>
85
-
86
- <div id="search" class="boxy short">
87
- <h3>Search</h3>
88
- <form method="get" action="/search">
89
- <fieldset>
90
- <input class="text" type="text" id="q" value="" name="q"/>
91
- </fieldset>
92
- </form>
93
- </div>
94
-
95
- <div class="boxy tall minor">
96
- <h3>Recent</h3>
97
-
98
- <dl>
99
- <dt>Articles <a class="feed" href="{{ global_feed }}"><span>feed</span></a></dt>
100
- <dd>
101
- <ul>
102
- {% for article in site.latest_articles %}
103
- <li>{{ article | link_to_article }} <em>({{ article.published_at | format_date: 'stub', true }})</em></li>
104
- {% endfor %}
105
- </ul>
106
- </dd>
107
-
108
- <dt>Comments <a class="feed" href="{{ global_comments_feed }}"><span>feed</span></a></dt>
109
- <dd>
110
- <ul>
111
- {% for comment in site.latest_comments %}
112
- <li>{{ comment.author_link }} on <a href="{{ comment.url }}#comment-{{ comment.id }}">{{ comment.title }}</a></li>
113
- {% endfor %}
114
- </ul>
115
- </dd>
116
- </dl>
117
- </div>
118
-
119
- <div class="boxy short">
120
- <h3>Archives</h3>
121
- <p>This would be much nicer with jamis' month_drop thingy.</p>
122
- {{ '' | section | months | assign_to: 'home_section' }}
123
- <ul>
124
- {% for month in home_section.months %}
125
- {{ home_section | monthly_articles: month | size | assign_to: 'articles_count' }}
126
- {% if articles_count > 0 %}
127
- <li>{{ home_section | link_to_month: month }} ({{ articles_count }})</li>
128
- {% endif %}
129
- {% endfor %}
130
- </ul>
131
- </div>
132
-
133
- {% if site.blog_sections.size > 1 %}
134
- <div class="boxy short">
135
- <h3>Categories</h3>
136
- <p>Lists only blog type categories with at least one article.</p>
137
- <p>This list uses an ul. You could use a dl with only dd's in it for the same effect. Wouldn't be semantic tho.</p>
138
- <ul class="sections">
139
- {% for section in site.blog_sections %}
140
- {% if section.articles_count > 0 %}
141
- {% unless section.is_home %}
142
- <li>{{ section | link_to_section }} ({{ section.articles_count }})</li>
143
- {% endunless %}
144
- {% endif %}
145
- {% endfor %}
146
- </ul>
147
- </div>
148
-
149
- {% endif %}
150
- {% unless site.tags == empty %}
151
- <div class="boxy short">
152
- <p>This would be nicer if we could get the number of articles for each tag.</p>
153
- <h3>tags: </h3>
154
- <ul>
155
- {% for tag in site.tags %}
156
- <li>{{ tag | link_to_tag }}</li>
157
- {% endfor %}
158
- </ul>
159
- </div>
160
-
161
- {% endunless %}
162
- <div class="boxy tall">
163
- <h3>boxy tall</h3>
164
- <p>When using a tall box, make sure it's got plenty of content or that it's immediately followed by a short boxy. It might look a bit chopped off otherwise.</p>
165
- <dl>
166
- <dt>thing 1</dt>
167
- <dd><a href="#">value 1</a></dd>
168
- <dd><a href="#">value 2</a></dd>
169
- <dd><a href="#">value 3</a></dd>
170
- <dd><a href="#">value 4</a></dd>
171
- <dd><a href="#">value 5</a></dd>
172
- <dd><a href="#">value 6</a></dd>
173
- <dd><a href="#">value 6</a></dd>
174
-
175
- <dt>thing 1</dt>
176
- <dd><a href="#">value 1</a></dd>
177
- <dd><a href="#">value 2</a></dd>
178
- <dd><a href="#">value 3</a></dd>
179
- <dd>value 4</dd>
180
- <dd>value 5</dd>
181
- <dd><a href="#">value 6</a></dd>
182
- <dd><a href="#">value 6</a></dd>
183
-
184
- </dl>
185
- </div>
186
-
187
- </div>
188
-
189
- </div>
190
-
191
- <div id="options">
192
- <h2>Options:</h2>
193
- <h3>Size</h3>
194
- <ul id="option_size">
195
- <li id="option_size_fixed" class="fixed" ><a><span>fixed </span></a></li>
196
- <li id="option_size_fluid" class="fluid" ><a><span>fluid </span></a></li>
197
- </ul>
198
- <h3>Colors</h3>
199
- <ul id="option_color">
200
- <li id="option_color_orange" class="orange"><a><span>orange</span></a></li>
201
- <li id="option_color_blue" class="blue" ><a><span>blue </span></a></li>
202
- <li id="option_color_green" class="green" ><a><span>green </span></a></li>
203
- <li id="option_color_pink" class="pink" ><a><span>pink </span></a></li>
204
- <li id="option_color_cyan" class="cyan" ><a><span>cyan </span></a></li>
205
- <li id="option_color_red" class="red" ><a><span>red </span></a></li>
206
- <li id="option_color_violet" class="violet"><a><span>violet</span></a></li>
207
- </ul>
208
- </div>
209
-
210
- <div id="footer">
211
- <p>Copyright &copy; 2006, Your Name. Valid <a href="http://validator.w3.org/check/referer">XHTML</a> and <a href="http://jigsaw.w3.org/css-validator/check/referer">CSS</a>.</p>
212
- <p>Using <a href="http://evil.che.lu/projects/skittlish">skittlish</a> on <a href="http://publishwithimpunity.com/">mephisto</a>.</p>
213
- </div>
214
-
215
- </div>
216
-
217
- </body>
218
-
219
- </html>
@@ -1,221 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
3
- {{ '/feed/atom.xml' | assign_to: 'global_feed' }}
4
- {{ '/feed/all_comments.xml' | assign_to: 'global_comments_feed' }}
5
- <head>
6
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
- <title>
8
- {{ site.title }}
9
- {% if site.current_section %}
10
- - {{ site.current_section.name }}
11
- {% endif %}
12
- {% if article %}
13
- - {{ article.title }}
14
- {% endif %}
15
- </title>
16
- <link rel="alternate" type="application/atom+xml" title="{{ site.title }} feed" href="{{ global_feed }}"/>
17
- <link rel="alternate" type="application/atom+xml" title="{{ site.title }} comments feed" href="{{ global_comments_feed }}"/>
18
- {{ 'base' | stylesheet }}
19
- {{ 'app' | javascript }}
20
- <!--[if IE]>
21
- {{ 'base_ie' | stylesheet }}
22
- <![endif]-->
23
- </head>
24
-
25
- <body class="fixed green">
26
- <script type="text/javascript">loadPreferences()</script>
27
-
28
- <div id="wrapper">
29
-
30
- <div id="header" class="clearfix">
31
- <div id="title" class="clearfix">
32
- <h1><a href="/">{{ site.title }}</a></h1>
33
- </div>
34
- <h2>Sections</h2>
35
- <ul id="menu">
36
- {% for section in site.sections %}
37
- {% if section.articles_count > 0 %}
38
- {% if section.is_home %}
39
- <li{% if section.current %} class="selected"{% endif %}>{{ section | link_to_section }}</li>
40
- {% else %}
41
- {% if section.is_paged %}
42
- <li{% if section.current %} class="selected"{% endif %}>{{ section | link_to_section }}</li>
43
- {% endif %}
44
- {% endif %}
45
- {% endif %}
46
- {% endfor %}
47
- </ul>
48
- </div>
49
-
50
- <div id="contentwrapper" class="clearfix">
51
-
52
- <div id="content">
53
-
54
- <div id="innerwrapper">
55
-
56
- <div class="article">
57
- <div class="body">
58
- <h2>Skittlish Tips'n'Tricks</h2>
59
- <ul>
60
- <li>Change the classes for the body tag to set your default site style. also change these in the app.js file (line 66).</li>
61
- <li>Remove the scripts and the #options div if you don't want the option switcher.</li>
62
- <li>The top menu shows the home section and the sections that are not blogs.</li>
63
- <li>Email me at <a href="mailto:evil@che.lu">evil@che.lu</a> if you have any questions.</li>
64
- <li>Happy hacking!</li>
65
- </ul>
66
- </div>
67
- </div>
68
-
69
- {{ content_for_layout }}
70
-
71
- </div>
72
-
73
- </div>
74
-
75
- <div id="sidebar">
76
-
77
- <div class="boxy short">
78
- <h3>boxy short</h3>
79
-
80
- <p>You can have, boxes with a short, tall or no background shade, just change the class of the containing div.</p>
81
-
82
- <p>Have boxes with smaller text with the class "minor". See the "Recent" boxy below.</p>
83
-
84
- <p>Happy boxying!</p>
85
-
86
- </div>
87
-
88
- <div id="search" class="boxy short">
89
- <h3>Search</h3>
90
- <form method="get" action="/search">
91
- <fieldset>
92
- <input class="text" type="text" id="q" value="" name="q"/>
93
- </fieldset>
94
- </form>
95
- </div>
96
-
97
- <div class="boxy tall minor">
98
- <h3>Recent</h3>
99
-
100
- <dl>
101
- <dt>Articles <a class="feed" href="{{ global_feed }}"><span>feed</span></a></dt>
102
- <dd>
103
- <ul>
104
- {% for article in site.latest_articles %}
105
- <li>{{ article | link_to_article }} <em>({{ article.published_at | format_date: 'stub', true }})</em></li>
106
- {% endfor %}
107
- </ul>
108
- </dd>
109
-
110
- <dt>Comments <a class="feed" href="{{ global_comments_feed }}"><span>feed</span></a></dt>
111
- <dd>
112
- <ul>
113
- {% for comment in site.latest_comments %}
114
- <li>{{ comment.author_link }} on <a href="{{ comment.url }}#comment-{{ comment.id }}">{{ comment.title }}</a></li>
115
- {% endfor %}
116
- </ul>
117
- </dd>
118
- </dl>
119
- </div>
120
-
121
- <div class="boxy short">
122
- <h3>Archives</h3>
123
- <p>This would be much nicer with jamis' month_drop thingy.</p>
124
- {{ '' | section | months | assign_to: 'home_section' }}
125
- <ul>
126
- {% for month in home_section.months %}
127
- {{ home_section | monthly_articles: month | size | assign_to: 'articles_count' }}
128
- {% if articles_count > 0 %}
129
- <li>{{ home_section | link_to_month: month }} ({{ articles_count }})</li>
130
- {% endif %}
131
- {% endfor %}
132
- </ul>
133
- </div>
134
-
135
- {% if site.blog_sections.size > 1 %}
136
- <div class="boxy short">
137
- <h3>Categories</h3>
138
- <p>Lists only blog type categories with at least one article.</p>
139
- <p>This list uses an ul. You could use a dl with only dd's in it for the same effect. Wouldn't be semantic tho.</p>
140
- <ul class="sections">
141
- {% for section in site.blog_sections %}
142
- {% if section.articles_count > 0 %}
143
- {% unless section.is_home %}
144
- <li>{{ section | link_to_section }} ({{ section.articles_count }})</li>
145
- {% endunless %}
146
- {% endif %}
147
- {% endfor %}
148
- </ul>
149
- </div>
150
-
151
- {% endif %}
152
- {% unless site.tags == empty %}
153
- <div class="boxy short">
154
- <p>This would be nicer if we could get the number of articles for each tag.</p>
155
- <h3>tags: </h3>
156
- <ul>
157
- {% for tag in site.tags %}
158
- <li>{{ tag | link_to_tag }}</li>
159
- {% endfor %}
160
- </ul>
161
- </div>
162
-
163
- {% endunless %}
164
- <div class="boxy tall">
165
- <h3>boxy tall</h3>
166
- <p>When using a tall box, make sure it's got plenty of content or that it's immediately followed by a short boxy. It might look a bit chopped off otherwise.</p>
167
- <dl>
168
- <dt>thing 1</dt>
169
- <dd><a href="#">value 1</a></dd>
170
- <dd><a href="#">value 2</a></dd>
171
- <dd><a href="#">value 3</a></dd>
172
- <dd><a href="#">value 4</a></dd>
173
- <dd><a href="#">value 5</a></dd>
174
- <dd><a href="#">value 6</a></dd>
175
- <dd><a href="#">value 6</a></dd>
176
-
177
- <dt>thing 1</dt>
178
- <dd><a href="#">value 1</a></dd>
179
- <dd><a href="#">value 2</a></dd>
180
- <dd><a href="#">value 3</a></dd>
181
- <dd>value 4</dd>
182
- <dd>value 5</dd>
183
- <dd><a href="#">value 6</a></dd>
184
- <dd><a href="#">value 6</a></dd>
185
-
186
- </dl>
187
- </div>
188
-
189
- </div>
190
-
191
- </div>
192
-
193
- <div id="options">
194
- <h2>Options:</h2>
195
- <h3>Size</h3>
196
- <ul id="option_size">
197
- <li id="option_size_fixed" class="fixed" ><a><span>fixed </span></a></li>
198
- <li id="option_size_fluid" class="fluid" ><a><span>fluid </span></a></li>
199
- </ul>
200
- <h3>Colors</h3>
201
- <ul id="option_color">
202
- <li id="option_color_orange" class="orange"><a><span>orange</span></a></li>
203
- <li id="option_color_blue" class="blue" ><a><span>blue </span></a></li>
204
- <li id="option_color_green" class="green" ><a><span>green </span></a></li>
205
- <li id="option_color_pink" class="pink" ><a><span>pink </span></a></li>
206
- <li id="option_color_cyan" class="cyan" ><a><span>cyan </span></a></li>
207
- <li id="option_color_red" class="red" ><a><span>red </span></a></li>
208
- <li id="option_color_violet" class="violet"><a><span>violet</span></a></li>
209
- </ul>
210
- </div>
211
-
212
- <div id="footer">
213
- <p>Copyright &copy; 2006, Your Name. Valid <a href="http://validator.w3.org/check/referer">XHTML</a> and <a href="http://jigsaw.w3.org/css-validator/check/referer">CSS</a>.</p>
214
- <p>Using <a href="http://evil.che.lu/projects/skittlish">skittlish</a> on <a href="http://publishwithimpunity.com/">mephisto</a>.</p>
215
- </div>
216
-
217
- </div>
218
-
219
- </body>
220
-
221
- </html>