From be9beff0b49c4dcf701c005711ad63fccfb36978 Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 27 Apr 2015 15:39:36 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E8=A7=A3=E5=86=B3Roles=E6=9C=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/layouts/_join_exit_project.html.erb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/views/layouts/_join_exit_project.html.erb b/app/views/layouts/_join_exit_project.html.erb index 1d302babf..50c319328 100644 --- a/app/views/layouts/_join_exit_project.html.erb +++ b/app/views/layouts/_join_exit_project.html.erb @@ -1,19 +1,23 @@
- <% if ( !(User.current.member_of? @project) && User.current.login?) %> + <% if ( !(User.current.member_of? @project) && User.current.login?) && !User.current.admin %> <%= watcher_link_for_project(@project, User.current) %> <% end %> - <% if ( !(User.current.member_of? @project) && User.current.login?) %> + <% if ( !(User.current.member_of? @project) && User.current.login?) && !User.current.admin %> <%= join_in_project_link(@project, User.current) %> <% end %> - + <% if User.current.admin? || User.current.allowed_to?({:controller => 'projects', :action => 'settings'}, @project) %> <%= link_to "#{l(:button_configure)}".html_safe, settings_project_path(@project), :class => "pr_join_a" %> <% end %> - <% if Member.where(:user_id => User.current.id, :project_id=>@project.id).first.roles.first.to_s.include?("Manager") || User.current.admin? %> + + <% if Member.where(:project_id => @project.id).first.roles.first.to_s.include?("Manager") || User.current.admin? %> <%= link_to "#{text}".html_safe,"javascript:void(0)" ,:onClick => "show_window();", :class => "pr_join_a",:id => "setting_project_type"%> - <% else %> + <% end %> + + <% if (User.current.member_of? @project) && User.current.login? && + Member.where(:user_id => User.current.id, :project_id=>@project.id).first.roles.first.to_s != "Manager" %> <%= exit_project_link(@project) %> <% end %>
From e7d85aad2717849125f9140c31ac6a277534762d Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 27 Apr 2015 16:54:46 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E3=80=81=E5=85=B3=E6=B3=A8=E3=80=81=E5=8A=A0?= =?UTF-8?q?=E5=85=A5=E3=80=81=E7=B1=BB=E5=9E=8B=E7=AD=89=E4=B8=8D=E5=90=8C?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/layouts/_join_exit_project.html.erb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/views/layouts/_join_exit_project.html.erb b/app/views/layouts/_join_exit_project.html.erb index 50c319328..9cd376c60 100644 --- a/app/views/layouts/_join_exit_project.html.erb +++ b/app/views/layouts/_join_exit_project.html.erb @@ -1,10 +1,10 @@
- - <% if ( !(User.current.member_of? @project) && User.current.login?) && !User.current.admin %> + + <% if !User.current.member_of?(@project) && User.current.login? && !User.current.admin %> <%= watcher_link_for_project(@project, User.current) %> <% end %> - <% if ( !(User.current.member_of? @project) && User.current.login?) && !User.current.admin %> + <% if !User.current.member_of?(@project) && User.current.login? && !User.current.admin %> <%= join_in_project_link(@project, User.current) %> <% end %> @@ -12,12 +12,13 @@ <%= link_to "#{l(:button_configure)}".html_safe, settings_project_path(@project), :class => "pr_join_a" %> <% end %> - <% if Member.where(:project_id => @project.id).first.roles.first.to_s.include?("Manager") || User.current.admin? %> + <% if (User.current.login? && User.current.member_of?(@project) && Member.where(:user_id => User.current.id, :project_id => @project.id).first.roles.first.to_s.include?("Manager")) || User.current.admin? %> <%= link_to "#{text}".html_safe,"javascript:void(0)" ,:onClick => "show_window();", :class => "pr_join_a",:id => "setting_project_type"%> <% end %> <% if (User.current.member_of? @project) && User.current.login? && - Member.where(:user_id => User.current.id, :project_id=>@project.id).first.roles.first.to_s != "Manager" %> + Member.where(:user_id => User.current.id, :project_id => @project.id).first.roles.first.to_s != "Manager" %> <%= exit_project_link(@project) %> <% end %> +
From 40fdda0ee2a9133179df41dfb0458bb1f132117e Mon Sep 17 00:00:00 2001 From: whimlex Date: Mon, 27 Apr 2015 16:58:16 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=BA=93git=E5=B8=AE?= =?UTF-8?q?=E5=8A=A9=E6=96=87=E6=A1=A3=E7=9A=84=E6=98=BE=E7=A4=BA=E4=B8=8E?= =?UTF-8?q?=E9=9A=90=E8=97=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/issues/_action_menu.html.erb | 2 +- app/views/repositories/show.html.erb | 231 ++++++++++++++----------- public/javascripts/project.js | 52 ++++-- public/stylesheets/project.css | 2 +- 4 files changed, 166 insertions(+), 121 deletions(-) diff --git a/app/views/issues/_action_menu.html.erb b/app/views/issues/_action_menu.html.erb index 94f1c6556..ff498f100 100644 --- a/app/views/issues/_action_menu.html.erb +++ b/app/views/issues/_action_menu.html.erb @@ -4,5 +4,5 @@ <%= link_to l(:button_delete), issue_path(@issue.id), :data => {:confirm => issues_destroy_confirmation_message(@issue)}, :method => :delete, :class => 'talk_edit fr' if User.current.allowed_to?(:delete_issues, @project) %> - <%= link_to l(:button_edit), edit_issue_path(@issue), :onclick => 'showAndScrollTo("all_attributes", "issue_notes"); return false;', :class => 'talk_edit fr', :accesskey => accesskey(:edit) if @issue.editable? && User.current.allowed_to?(:edit_issues, @project) %> + <%= link_to l(:button_edit), edit_issue_path(@issue), :onclick => 'showAndScrollTo("all_attributes"); return false;', :class => 'talk_edit fr', :accesskey => accesskey(:edit) if @issue.editable? && User.current.allowed_to?(:edit_issues, @project) %> <%= link_to l(:label_user_newfeedback), edit_issue_path(@issue), :onclick => 'showAndScrollTo("update", "issue_notes"); return false;', :class => 'talk_edit fr', :accesskey => accesskey(:edit) if @issue.editable? && User.current.allowed_to?(:add_issue_notes, @project) %> diff --git a/app/views/repositories/show.html.erb b/app/views/repositories/show.html.erb index 5ddea4e60..c3931cc9e 100644 --- a/app/views/repositories/show.html.erb +++ b/app/views/repositories/show.html.erb @@ -1,131 +1,162 @@ -<%= call_hook(:view_repositories_show_contextual, { :repository => @repository, :project => @project }) %> +<%= call_hook(:view_repositories_show_contextual, {:repository => @repository, :project => @project}) %>

版本库

-
+
<%= render :partial => 'breadcrumbs', - :locals => { :path => @path, :kind => 'dir', :revision => @rev } %> + :locals => {:path => @path, :kind => 'dir', :revision => @rev} %> <%= render :partial => 'navigation' %> -
+
+
-

<%if @repository.type.to_s=="Repository::Git"%> - <%= @repos_url%> - <%else %> - <%=h @repository.url %> +

+ <% if @repository.type.to_s=="Repository::Git" %> + <%= @repos_url %> + <% else %> + <%= h @repository.url %> <% end %>

-

- (<%= l(:label_all_revisions) %><%= @repositories.sort.collect {|repo| + +

+ (<%= l(:label_all_revisions) %><%= @repositories.sort.collect { |repo| link_to h(repo.name), {:controller => 'repositories', :action => 'show', :id => @project, :repository_id => repo.identifier_param, :rev => nil, :path => nil}, - :class => 'repository' + (repo == @repository ? ' selected' : '') , - :class => "mb10 word_break c_orange"}.join(' | ').html_safe %>) + :class => 'repository' + (repo == @repository ? ' selected' : ''), + :class => "mb10 break_word c_orange" }.join(' | ').html_safe %>)

-

项目代码请设置好正确的编码方式(utf-8),否则中文会出现乱码

-

建立版本库文件夹,打开命令行执行如下:

-
-
-

git init

-

git add *

-

git commit -m "first commit"

-

git remote add origin - http://xianbo_trustie2@repository.trustie.net/xianbo/trustie2.git -

-

git config http.postBuffer 524288000 #设置本地post缓存为500MB

-

git push -u origin master:master

-
-
-

已经有本地库,还没有配置远程地址,打开命令行执行如下:

-
-
-

git remote add origin http://xianbo_trustie2@repository.trustie.net/xianbo/trustie2.git

-

git add .

-

git commit -m "first commit"

-

git config http.postBuffer 524288000 #设置本地post缓存为500MB

-

git push -u origin master:master

-
-
-

已有远程地址,创建一个远程分支,并切换到该分支,打开命令行执行如下:

-
-
-

git clone http://xianbo_trustie2@repository.trustie.net/xianbo/trustie2.git

-

git push

-

git checkout -b branch_name

-

git push origin branch_name

-
-
-

从网上获取别人的开源版本库,转交到trustie网站上,打开命令行执行如下:

-
-
-

git remote add trustie - http://xianbo_trustie2@repository.trustie.net/xianbo/trustie2.git -

-

git add .

-

git commit -m "first commit"

-

git config http.postBuffer 524288000 #设置本地post缓存为500MB

-

git push -u trustie master:master

-

李海提供

+
+ + + <% if !@entries.nil? && authorize_for('repositories', 'browse') %> + <%= render :partial => 'dir_list' %> <% end %> -

- <% has_branches = (!@repository.branches.nil? && @repository.branches.length > 0) - sep = '' %> - <% if @repository.supports_all_revisions? && @path.blank? %> - <%= link_to l(:label_view_all_revisions), {:action => 'revisions', :id => @project, - :repository_id => @repository.identifier_param}, - :class => "orange_u_btn" %> - <% sep = '|' %> + + <%= render_properties(@properties) %> + <% if authorize_for('repositories', 'revisions') %> + <% if @changesets && !@changesets.empty? %> +

+ <%= l(:label_latest_revision_plural) %> +

+ <%= render :partial => 'revisions', + :locals => {:project => @project, :path => @path, + :revisions => @changesets, :entry => nil} %> <% end %> - <% if @repository.supports_directory_revisions? && ( has_branches || !@path.blank? || !@rev.blank? ) %> - <%= sep %> - <%= link_to l(:label_view_revisions), - {:action => 'changes', - :path => to_path_param(@path), - :id => @project, - :repository_id => @repository.identifier_param, - :rev => @rev}, - :class => "orange_u_btn" %> +

+ <% has_branches = (!@repository.branches.nil? && @repository.branches.length > 0) + sep = '' %> + <% if @repository.supports_all_revisions? && @path.blank? %> + <%= link_to l(:label_view_all_revisions), {:action => 'revisions', :id => @project, + :repository_id => @repository.identifier_param}, + :class => "orange_u_btn" %> + <% sep = '|' %> + <% end %> + <% if @repository.supports_directory_revisions? && (has_branches || !@path.blank? || !@rev.blank?) %> + <%= sep %> + <%= link_to l(:label_view_revisions), + {:action => 'changes', + :path => to_path_param(@path), + :id => @project, + :repository_id => @repository.identifier_param, + :rev => @rev}, + :class => "orange_u_btn" %> + <% end %> +

+ <% if @repository.supports_all_revisions? %> + <% content_for :header_tags do %> + <%= auto_discovery_link_tag( + :atom, params.merge( + {:format => 'atom', :action => 'revisions', + :id => @project, :page => nil, :key => User.current.rss_key})) %> + <% end %> <% end %> -

- <% if @repository.supports_all_revisions? %> - <% content_for :header_tags do %> - <%= auto_discovery_link_tag( - :atom, params.merge( - {:format => 'atom', :action => 'revisions', - :id => @project, :page => nil, :key => User.current.rss_key})) %> - <% end %> <% end %> -<% end %> - -

查看如何提交代码: - <%= link_to(l(:label_how_commit_code_chinese), ch_usage_path, :class => "c_blue") %> - <%= link_to('English', en_usage_path, :class => "c_blue") %> -

+ +

查看如何提交代码: + <%= link_to(l(:label_how_commit_code_chinese), ch_usage_path, :class => "c_blue") %> + <%= link_to('English', en_usage_path, :class => "c_blue") %> + +

<% content_for :header_tags do %> - <%= stylesheet_link_tag "scm" %> + <%= stylesheet_link_tag "scm" %> <% end %> <% html_title(l(:label_repository)) -%> diff --git a/public/javascripts/project.js b/public/javascripts/project.js index 0aef464f8..4d10df1c2 100644 --- a/public/javascripts/project.js +++ b/public/javascripts/project.js @@ -59,6 +59,27 @@ function show_more_msg() { } } +function showhelpAndScrollTo(id, focus) { + var information = $("#showgithelp"); + var val = information.attr("value"); + if (val == "show_help") { + $("#showgithelp").text("收起Git操作指南"); + information.attr("value", "hide_help"); + $('#' + id).show(); + if (focus !== null) { + $('#' + focus).focus(); + } + $('html, body').animate({scrollTop: $('#' + id).offset().top}, 400); + } + else { + $("#showgithelp").text("显示Git操作指南"); + information.attr("value", "show_help"); + $('#' + id).hide(); + } +} + + + /////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////项目讨论区 function regexSubject() { @@ -191,27 +212,22 @@ function project_setting(n) { } //配置-验证项目名称 -function regex_project_name() -{ +function regex_project_name() { var name = $.trim($("#project_name").val()); - if(name.length == 0) - { + if (name.length == 0) { $("#project_name_notice").show(); return false; } - else - { + else { $("#project_name_notice").hide(); return true; } } //配置-信息提交 -function submit_edit_project(id) -{ - if(regex_project_name()) - { - $("#edit_project_"+id).submit(); +function submit_edit_project(id) { + if (regex_project_name()) { + $("#edit_project_" + id).submit(); } } @@ -233,12 +249,13 @@ $(document).ready(function () { //issue_project_id }); -function showAndScrollTo(id, focus) { - $('#' + id).show(); - if (focus !== null) { + function showAndScrollTo(id, focus) { + $('#' + id).show(); + if (focus !== null) { $('#' + focus).focus(); + } + $('html, body').animate({scrollTop: $('#' + id).offset().top}, 400); } - $('html, body').animate({scrollTop: $('#' + id).offset().top}, 400); /*缺陷完成度决定缺陷状态*/ @@ -287,7 +304,4 @@ function showAndScrollTo(id, focus) { $("pre").addClass("break_word"); } - }); - - -} \ No newline at end of file + }); \ No newline at end of file diff --git a/public/stylesheets/project.css b/public/stylesheets/project.css index 6894e3382..b1d2bb021 100644 --- a/public/stylesheets/project.css +++ b/public/stylesheets/project.css @@ -177,7 +177,7 @@ a:hover.upload_btn_grey{background:#8a8a8a;} a.link_file{ background:url(../images/pic_file.png) 0 2px no-repeat; padding-left:20px; color:#64bdd9; } a:hover.link_file{ background:url(../images/pic_file.png) 0 -25px no-repeat; color:#3ca5c6;} .r_txt_tit{width:510px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;color:#15bccf; float:left; color:#09658c; font-size:14px;} - +.repos_more{height:23px; width:100%; border:1px solid #CCC; background:#F6F6F6; text-align:center; font-size:12px; padding-top:2px;} /* 弹框 新样式还没设计出来,暂时用的课程那边的样式 */ .alert .close{width:26px;height:26px;overflow:hidden;position:absolute;top:-10px;right:-502px;background:url(images/close.png) no-repeat;cursor:pointer;} From 8b6369a84f8c12d70bb9948b359ddde576fb0bc4 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Mon, 27 Apr 2015 17:01:52 +0800 Subject: [PATCH 4/8] =?UTF-8?q?kindeditor=E5=A2=9E=E5=8A=A0=E6=9B=B4?= =?UTF-8?q?=E5=A4=9A=E5=8A=9F=E8=83=BD=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/kindeditor/kindeditor.js | 50 ++++++++++++++++--- public/assets/kindeditor/lang/zh_CN.js | 1 + public/assets/kindeditor/plugins/more/more.js | 15 ++++++ .../kindeditor/themes/default/default.css | 5 ++ 4 files changed, 64 insertions(+), 7 deletions(-) create mode 100644 public/assets/kindeditor/plugins/more/more.js diff --git a/public/assets/kindeditor/kindeditor.js b/public/assets/kindeditor/kindeditor.js index ea6a5b1c7..1abc92ead 100644 --- a/public/assets/kindeditor/kindeditor.js +++ b/public/assets/kindeditor/kindeditor.js @@ -260,7 +260,7 @@ K.options = { items : [ 'emoticons', 'source','plainpaste', 'wordpaste', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist', '|', 'formatblock', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', - 'italic', 'underline', 'removeformat', '|','imagedirectupload','table', 'link' + 'italic', 'underline', 'removeformat', '|','imagedirectupload','table', 'link', 'fullscreen',"more" ], noDisableItems : ['source', 'fullscreen'], colorTable : [ @@ -3909,10 +3909,15 @@ _extend(KToolbar, KWidget, { }); }, get : function(name) { - if (this._itemMap[name]) { - return this._itemMap[name]; - } - return (this._itemMap[name] = K('span.ke-icon-' + name, this.div).parent()); +// if (this._itemMap[name]) { +// return this._itemMap[name]; +// } + if($("#define").css('display') == 'block'){ + pdiv = $("#define") + }else if($("#full").css('display') == 'block'){ + pdiv = $("#full") + } + return (this._itemMap[name] = K('span.ke-icon-' + name, pdiv).parent()); }, select : function(name) { _selectToolbar.call(this, name, function(knode) { @@ -4915,6 +4920,7 @@ KEditor.prototype = { self.srcElement.before(container); } var toolbarDiv = K('.toolbar', container), + toolBarDivFull = K('.toolbar', container), editDiv = K('.edit', container), statusbar = self.statusbar = K('.statusbar', container); container.removeClass('container') @@ -4959,9 +4965,36 @@ KEditor.prototype = { htmlList.push(''); } }); + htmlList.unshift('
') + htmlList.push('
') + var htmlListFull = []; + var fullItems = [ + 'emoticons', + 'source','plainpaste', 'wordpaste', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist', '|', + 'formatblock', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', + 'italic', 'underline', 'removeformat', '|','imagedirectupload','table', 'link', 'fullscreen',"more", + '/', + 'undo', 'redo', '|', 'preview', 'print', 'template', 'code', 'cut', 'plainpaste', + 'justifyfull', 'insertunorderedlist', 'indent', 'outdent', 'subscript', + 'superscript', 'clearhtml', 'quickformat', 'selectall', 'fontname', + 'strikethrough', 'lineheight', '|', 'imagedirectupload', 'hr', 'pagebreak', + 'anchor', 'unlink' + ] + K.each(fullItems, function(i, name) { + if (name == '|') { + htmlListFull.push(''); + } else if (name == '/') { + htmlListFull.push('
'); + } else { + htmlListFull.push(''); + htmlListFull.push(''); + } + }); + htmlListFull.unshift('') var toolbar = self.toolbar = _toolbar({ src : toolbarDiv, - html : htmlList.join(''), + html : htmlList.join('')+htmlListFull.join(''), noDisableItems : self.noDisableItems, click : function(e, name) { e.stop(); @@ -4975,6 +5008,7 @@ KEditor.prototype = { self.clickToolbar(name); } }); + var editHeight = _removeUnit(height) - toolbar.div.height(); var edit = self.edit = _edit({ height : editHeight > 0 && _removeUnit(height) > self.minHeight ? editHeight : self.minHeight, @@ -5306,8 +5340,9 @@ KEditor.prototype = { createMenu : function(options) { var self = this, name = options.name, - knode = self.toolbar.get(name), + knode = self.toolbar.get(name), pos = knode.pos(); + options.x = pos.x; options.y = pos.y + knode.height(); options.z = self.options.zIndex; @@ -5992,4 +6027,5 @@ _plugin('core', function(K) { }); }); }); + })(window); diff --git a/public/assets/kindeditor/lang/zh_CN.js b/public/assets/kindeditor/lang/zh_CN.js index f2b474351..a2e1010ea 100644 --- a/public/assets/kindeditor/lang/zh_CN.js +++ b/public/assets/kindeditor/lang/zh_CN.js @@ -9,6 +9,7 @@ KindEditor.lang({ imagedirectupload:'本地图片', + more: '更多功能', source : 'HTML代码', preview : '预览', undo : '后退(Ctrl+Z)', diff --git a/public/assets/kindeditor/plugins/more/more.js b/public/assets/kindeditor/plugins/more/more.js new file mode 100644 index 000000000..31eb8567f --- /dev/null +++ b/public/assets/kindeditor/plugins/more/more.js @@ -0,0 +1,15 @@ +KindEditor.plugin('more', function(K) { + var self = this, name = 'more'; + self.plugin.more = { + click : function(){ + if($("#define").css('display') == 'block'){ + $("#define").css('display','none') + $("#full").css('display','block') + }else if($("#full").css('display') == 'block'){ + $("#full").css('display','none') + $("#define").css('display','block') + } + } + } + self.clickToolbar(name,self.plugin.more.click) +}); \ No newline at end of file diff --git a/public/assets/kindeditor/themes/default/default.css b/public/assets/kindeditor/themes/default/default.css index fcadd4fa6..d8085582e 100644 --- a/public/assets/kindeditor/themes/default/default.css +++ b/public/assets/kindeditor/themes/default/default.css @@ -243,6 +243,11 @@ width: 16px; height: 16px; } +.ke-icon-more { + background-position: 0px -672px; + width: 16px; + height: 16px; +} .ke-icon-plainpaste { background-position: 0px -704px; width: 16px; From f3fb0115e417bcbec73b64208e9ed20c76d408a5 Mon Sep 17 00:00:00 2001 From: whimlex Date: Mon, 27 Apr 2015 17:15:21 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=BA=93git=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=96=87=E6=A1=A3=E9=BB=98=E8=AE=A4=E5=B1=95=E5=BC=80?= =?UTF-8?q?=EF=BC=8C=E6=A0=B7=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/repositories/show.html.erb | 4 ++-- public/javascripts/project.js | 2 ++ public/stylesheets/project.css | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/views/repositories/show.html.erb b/app/views/repositories/show.html.erb index c3931cc9e..077bccdad 100644 --- a/app/views/repositories/show.html.erb +++ b/app/views/repositories/show.html.erb @@ -30,8 +30,8 @@

- -