From 84ebc8306b550891cf73a7366946ae3bec5a19fc Mon Sep 17 00:00:00 2001 From: Matthew Fu Date: Wed, 16 Nov 2011 15:21:31 +0800 Subject: [PATCH 1/2] APP zip package placed in lib now can be unzip into vendor APP zip package placed in lib now can be unzip into vendor,however server can not restart --- Gemfile | 1 - app/controllers/admin/purchases_controller.rb | 66 ++++++++++++++++++ app/models/app_module.rb | 13 ++++ config/routes.rb | 3 + lib/NewBlog.zip | Bin 0 -> 53263 bytes .../NewBlog}/NewBlog/.gitignore | 0 .../plugins => lib/NewBlog}/NewBlog/Gemfile | 0 .../NewBlog}/NewBlog/Gemfile.lock | 0 .../NewBlog}/NewBlog/MIT-LICENSE | 0 .../NewBlog}/NewBlog/NewBlog.gemspec | 0 lib/NewBlog/NewBlog/NewBlog.json | 9 +++ .../NewBlog}/NewBlog/README.rdoc | 0 .../plugins => lib/NewBlog}/NewBlog/Rakefile | 0 .../app/assets/images/NewBlog/.gitkeep | 0 .../app/assets/javascripts/NewBlog/.gitkeep | 0 .../app/assets/stylesheets/NewBlog/.gitkeep | 0 .../stylesheets/NewBlog/application.css | 0 .../assets/stylesheets/NewBlog/production.css | 0 .../NewBlog}/NewBlog/app/controllers/.gitkeep | 0 .../app/controllers/application_controller.rb | 0 .../panel/blog/comments_controller.rb | 0 .../panel/blog/posts_controller.rb | 0 .../NewBlog}/NewBlog/app/helpers/.gitkeep | 0 .../NewBlog/app/helpers/application_helper.rb | 0 .../NewBlog}/NewBlog/app/mailers/.gitkeep | 0 .../NewBlog}/NewBlog/app/models/.gitkeep | 0 .../NewBlog}/NewBlog/app/models/comment.rb | 0 .../NewBlog}/NewBlog/app/models/post.rb | 0 .../NewBlog}/NewBlog/app/views/.gitkeep | 0 .../app/views/layouts/application.html.erb | 0 .../app/views/layouts/edit_view.html.erb | 0 .../app/views/layouts/production.html.erb | 0 .../app/views/panel/blog/posts/_form.html.erb | 0 .../app/views/panel/blog/posts/edit.html.erb | 0 .../app/views/panel/blog/posts/index.html.erb | 0 .../panel/blog/posts/latest_post.html.erb | 0 .../app/views/panel/blog/posts/new.html.erb | 0 .../app/views/panel/blog/posts/show.html.erb | 0 .../panel/blog/posts/widget_index.html.erb | 0 .../blog/posts/widget_latest_post.html.erb | 0 .../NewBlog}/NewBlog/config/routes.rb | 0 .../NewBlog}/NewBlog/lib/NewBlog.rb | 0 .../NewBlog}/NewBlog/lib/NewBlog/engine.rb | 0 .../NewBlog}/NewBlog/lib/NewBlog/version.rb | 0 .../NewBlog/lib/tasks/NewBlog_tasks.rake | 0 .../NewBlog}/NewBlog/script/rails | 0 .../NewBlog}/NewBlog/test/NewBlog_test.rb | 0 .../NewBlog}/NewBlog/test/dummy/Rakefile | 0 .../app/assets/javascripts/application.js | 0 .../app/assets/stylesheets/application.css | 0 .../app/controllers/application_controller.rb | 0 .../dummy/app/helpers/application_helper.rb | 0 .../NewBlog/test/dummy/app/mailers/.gitkeep | 0 .../NewBlog/test/dummy/app/models/.gitkeep | 0 .../app/views/layouts/application.html.erb | 0 .../NewBlog}/NewBlog/test/dummy/config.ru | 0 .../NewBlog/test/dummy/config/application.rb | 0 .../NewBlog/test/dummy/config/boot.rb | 0 .../NewBlog/test/dummy/config/database.yml | 0 .../NewBlog/test/dummy/config/environment.rb | 0 .../dummy/config/environments/development.rb | 0 .../dummy/config/environments/production.rb | 0 .../test/dummy/config/environments/test.rb | 0 .../initializers/backtrace_silencers.rb | 0 .../dummy/config/initializers/inflections.rb | 0 .../dummy/config/initializers/mime_types.rb | 0 .../dummy/config/initializers/secret_token.rb | 0 .../config/initializers/session_store.rb | 0 .../config/initializers/wrap_parameters.rb | 0 .../NewBlog/test/dummy/config/locales/en.yml | 0 .../NewBlog/test/dummy/config/mongoid.yml | 0 .../NewBlog/test/dummy/config/routes.rb | 0 .../NewBlog/test/dummy/lib/assets/.gitkeep | 0 .../NewBlog}/NewBlog/test/dummy/log/.gitkeep | 0 .../NewBlog/test/dummy/public/404.html | 0 .../NewBlog/test/dummy/public/422.html | 0 .../NewBlog/test/dummy/public/500.html | 0 .../NewBlog/test/dummy/public/favicon.ico | 0 .../NewBlog}/NewBlog/test/dummy/script/rails | 0 .../test/integration/navigation_test.rb | 0 .../NewBlog}/NewBlog/test/test_helper.rb | 0 vendor/plugins/new_blog_old_bak.tar.bz2 | Bin 10337 -> 0 bytes 82 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 app/models/app_module.rb create mode 100644 lib/NewBlog.zip rename {vendor/plugins => lib/NewBlog}/NewBlog/.gitignore (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/Gemfile (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/Gemfile.lock (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/MIT-LICENSE (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/NewBlog.gemspec (100%) create mode 100755 lib/NewBlog/NewBlog/NewBlog.json rename {vendor/plugins => lib/NewBlog}/NewBlog/README.rdoc (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/Rakefile (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/assets/images/NewBlog/.gitkeep (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/assets/javascripts/NewBlog/.gitkeep (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/assets/stylesheets/NewBlog/.gitkeep (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/assets/stylesheets/NewBlog/application.css (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/assets/stylesheets/NewBlog/production.css (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/controllers/.gitkeep (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/controllers/application_controller.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/controllers/panel/blog/comments_controller.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/controllers/panel/blog/posts_controller.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/helpers/.gitkeep (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/helpers/application_helper.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/mailers/.gitkeep (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/models/.gitkeep (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/models/comment.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/models/post.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/views/.gitkeep (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/views/layouts/application.html.erb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/views/layouts/edit_view.html.erb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/views/layouts/production.html.erb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/views/panel/blog/posts/_form.html.erb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/views/panel/blog/posts/edit.html.erb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/views/panel/blog/posts/index.html.erb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/views/panel/blog/posts/latest_post.html.erb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/views/panel/blog/posts/new.html.erb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/views/panel/blog/posts/show.html.erb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/views/panel/blog/posts/widget_index.html.erb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/app/views/panel/blog/posts/widget_latest_post.html.erb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/config/routes.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/lib/NewBlog.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/lib/NewBlog/engine.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/lib/NewBlog/version.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/lib/tasks/NewBlog_tasks.rake (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/script/rails (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/NewBlog_test.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/Rakefile (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/app/assets/javascripts/application.js (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/app/assets/stylesheets/application.css (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/app/controllers/application_controller.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/app/helpers/application_helper.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/app/mailers/.gitkeep (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/app/models/.gitkeep (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/app/views/layouts/application.html.erb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/config.ru (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/config/application.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/config/boot.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/config/database.yml (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/config/environment.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/config/environments/development.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/config/environments/production.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/config/environments/test.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/config/initializers/backtrace_silencers.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/config/initializers/inflections.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/config/initializers/mime_types.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/config/initializers/secret_token.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/config/initializers/session_store.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/config/initializers/wrap_parameters.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/config/locales/en.yml (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/config/mongoid.yml (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/config/routes.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/lib/assets/.gitkeep (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/log/.gitkeep (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/public/404.html (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/public/422.html (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/public/500.html (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/public/favicon.ico (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/dummy/script/rails (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/integration/navigation_test.rb (100%) rename {vendor/plugins => lib/NewBlog}/NewBlog/test/test_helper.rb (100%) delete mode 100644 vendor/plugins/new_blog_old_bak.tar.bz2 diff --git a/Gemfile b/Gemfile index 92c415bc..c2fad117 100644 --- a/Gemfile +++ b/Gemfile @@ -1,5 +1,4 @@ source 'http://rubygems.org' - gem 'rails' gem 'yajl-ruby', :require => 'yajl' diff --git a/app/controllers/admin/purchases_controller.rb b/app/controllers/admin/purchases_controller.rb index e5357fbe..99ab4124 100644 --- a/app/controllers/admin/purchases_controller.rb +++ b/app/controllers/admin/purchases_controller.rb @@ -17,6 +17,12 @@ class Admin::PurchasesController < ApplicationController redirect_to admin_purchases_url end + def install_app + unzip_app + redirect_to admin_purchases_url + + end + protected def download_purchase(purchase, url) @@ -77,6 +83,62 @@ class Admin::PurchasesController < ApplicationController end end + def unzip_app + zip_name = "NewBlog" + file = "#{Rails.root}/lib/NewBlog.zip" + destination = "#{Rails.root}/vendor/plugins" + + Zip::ZipFile.open(file) do |zip_file| + # encrypted = {} + # ['encrypted_data', 'encrypted_key', 'encrypted_iv'].each do |e| + # encrypted.merge!(e => zip_file.read(e)) + # end + # orig_file = decrypt_data(encrypted['encrypted_data'], encrypted['encrypted_key'], encrypted['encrypted_iv']) + orig_file = file + + temp_file = Tempfile.new("temp_file_zip") + # debugger + temp_file.binmode + temp_file.write orig_file + temp_file.rewind + + + # Zip::ZipFile.open(temp_file) { |orig_zip| + app = AppModule.new.from_json(zip_file.read("#{zip_name}/#{zip_name}/#{zip_name}.json")) + + zip_file.each { |f| + + if (f.to_s=~/^#{zip_name}\/#{zip_name}\/*/) + # debugger + f_path=File.join(destination, f.name.gsub(/^#{zip_name}\//, '')) + FileUtils.mkdir_p(File.dirname(f_path)) + zip_file.extract(f, f_path) unless File.exist?(f_path) + end + } + + # unzip_file(file, "#{Rails.root}/vendor/plugins") + + # Dir.mktmpdir('f_path') { |dir| + # + # build_file(orig_zip, zip_name, dir) + + # build_file(orig_zip, zip_name, dir, design.default_css) if design.default_css + # build_file(orig_zip, zip_name, dir, design.reset_css) if design.reset_css + + # ['themes', 'javascripts', 'images'].each do |type| + # design.send(type).each do |object| + # build_file(orig_zip, zip_name, dir, object, type) + # end + # end + # } + # temp_file.close + # temp_file.unlink + # # design.save + # } + + end + end + def build_file(orig_zip, zip_name, dir, object, type = nil) title = object.file_filename temp = File.new(dir + '/' + title, 'w+') @@ -85,4 +147,8 @@ class Admin::PurchasesController < ApplicationController object.to_save = true end + def unzip_file (file, destination) + + end + end \ No newline at end of file diff --git a/app/models/app_module.rb b/app/models/app_module.rb new file mode 100644 index 00000000..d25f1891 --- /dev/null +++ b/app/models/app_module.rb @@ -0,0 +1,13 @@ +class AppModule + include Mongoid::Document + include Mongoid::Timestamps + + field :name_of_app + field :version + field :organization + field :author + field :intro + field :update_info + field :create_date + +end diff --git a/config/routes.rb b/config/routes.rb index 2118919c..55b5b29f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -36,6 +36,9 @@ PrototypeR4::Application.routes.draw do end resources :page_parts resources :purchases do + collection do + get 'install_app' + end member do get 'download' end diff --git a/lib/NewBlog.zip b/lib/NewBlog.zip new file mode 100644 index 0000000000000000000000000000000000000000..f21f2eb22613d1c35e68db8690af47f24e3d43da GIT binary patch literal 53263 zcmd441yq$=)HX^=3Me4mAl)q>-O`P8Bi)U(be9TB3rLrw(%s!DEg_Al+`Uzf$l0Rj z`|khWd(PnO<8ZuluQlg0pBZb-7g^6o8g0UaPVgQX$VIaMY59Fes&X{Ms{1gu%(oK8M!4uvWE>=z=TwGSh zH^3Maid(@rz$p3^vjkMoB=8spRTGPBZo+UUK5qReku~&1J=#I!;KQc{4%ln~qpkh@ z2PQ}%-V|R(QWge`ER?^Hm3-~jur=q!#QSnXO(yS6p|%`4nO0J{X4h+@+F-NOS9SkL z;ho#(;y83AIVDg236`>@4nddnqruLuLKdz-F&?S1!_OnVZ&f`z7@MZ_j7Mw>KHPi3 zg&dYj7bQk|Zec>Kz&1T=Bt{zTAjZOLl5ubSkwVl4mZ^CdGWm#@!{A63@dV=_W{yCo zIIDcJeR&RxDG}}c$nDTF0emi>%Jxcgz7WI_ZTu;ZzhLP zj6TwJEm#I)e+(y9%kEJMhR z1Ym4Dv#^uBlbJq8ThmS@ztpVon6ii3nF};k%0a$qCDZz*h2T-#o2l1SPh9sFMCBv0 zP=k&ndQZ@WbI3*8}dPmFBpH}RC9ed_Zh?8quWnsXq z0*pKivct#iB~jv?^fvi68GF-bjfJ98UCRnMgUM0~!waK2IHRHzLsW844&^$jiqIYT z@4zo`&qy^aRdhuaKUj=6{~YC|pW7Vf74|TR1); z`Rd2JWOV`~INIc@MzCp|WMPDjqc=4H`GLP8Myjapf$`b6ZoIy*V}Mq}XpNfRbDdSb z7fKSOw}XU;0bm1utoP2zO2WWyOIqNSL4tunF@SxefbYaXrS>avzyT;gTU&}BfG*W< z%%M%$Bn|wzU=Gla0h!~U$1W4k)yF{-4=$+3>9l{#LHauA`o=nXI=fO2ly{Mp17*D+ zA~7M!QEBzz>l6zHfl!%Dz!9QQzhD1Bp}a z()Pcv-_O(P7rMm)@$|nIPl4U|O^aIzGSZEFXipvs;+V%a(`h=ci=bM`Mm-W6hOT6r zl!ue2y)|qRv5?B)1+xn_%QsghlQ~pv4c%}|)|3!Cx5*uF&<7^F)z$z$4`D4kJ}X3v z6ajzJF(hDcRVxdGiI3`epHRNxi+R571jZCbVW}T z_HIEWrAO3fyE5liP@*qkZPg|a9kO)0B@LD|2X>B(=F4rRh$3)g8EnC;?!@7{4UZAs z8#d#!mxSRGN(Dm8K=Tv$GH5}#*BlV7+u%x1_Y=PcU+bI+%UFd;h zn24>?(#GI-Rz+L>*a=(39*)YYHU$k86G&5rZssqO(N~_wFZMiHe2Ts!i)O_W+jew* z5Cgq1r-N>LxX*jyaZV50h@JjH`rT0LaX^ZX=cp@7!CQFQbK-inFBG#4GNbxuAM%Q7 zVPP9fPN0AQSz?zj4h07|2IggeTy+efiT{Q0%SZu@^s7iAy-o}W#9x5se}nk%m@NvH z`~|bvpfGD}YHw<6`6KEBv7ZDV`wg^1l2kpC9pWRaogFe`V}p><8qgE#pESsFTF5?8 zW>!_jeWDcS3tDVU>W)^_H?Z+TB5jDChVc02ff%#-z8nDWQ~bpPucj<$Al9R6ZGBDp zlI-{JmmT5#M#8^5krFfKyC){{Ao=j2_|FkClCnKi-$t)(XkCM=_2M0ml1<@>Tir7e zI693X3{u4OAeeB6W`<|SqaVT*hc?~ zbg|%wM%$SCS&+4K#9+x!5AbKqgAReuH)ANqj?P(KS058KBkQj}Dpg-(M6ow<%eNYh zXB>0W>*FU3;ze9_ZgsiW?@)#WDG=Il6Nu^caUR4`fV!{8G*Dr`#q@>lLF4+W?kWBx z3Iw(<%<#X#_IEbFiY1)iAVJs8&d}cOKR^oTt`|;z@d;GS4?%x{Ea;$~_;@#Ht0G2M z2znhfRD|2`MMdd*8u(J}_s=2js+%5obnK#cBldsT2CFwZbBE^u!%DMhCd5h?6?hn0 z(RK&jamyjZwNfRbz;Rl6gd@c{yKwK3LS9!%5ynF}B0rQx=*nWFrM|ZTD2oW|qcAcs z)j@2tGHV9~tpfnCp;~lHuEqA6h`QbDmtw)7UE0-kFR>9|1pK-75D2hzim|P81n%T> ze-z%(%>8BefK9&s^eHnB9O{)MI)51?2=ULl91XO6L*ABY4wxv5s7c^JgtZn-am@Y^ zVb{{#B}D>@jK2dK{hxq#VVZwu5C8As?JAcNUk?*g3teNwpRl{&)SubNRe4l@CGP@| z7X{v*!@p|Z)<9O$p`-|6ln2_tzLXyg3e{3 z7k~Zt8e#wM!vCz6t90}Swbb%e82&eEVz_?gmxW$OQ}B(z0NCsW{+yQf7=Bg< zZgSEYd>~MY&_B?Es&9GV!T2h2vsVt92LYmX)YF-ai3vEcu80;yYcM9ErO*U}P$W1D z#%HV&isKkhEUI#}3P)1&@$`f6q}yL^z8;*_07O7P6i6N4p1Uu<$G{igW1#zs{&j`0 z?=dj(QVhfg#=y$b?-Ygj$$;oC!bc7H0%feBfeghW(<3+WM}`8b@!A;pgHJB&^Y7V;>wh5q|7xWC zgL7Tp^;PG(+)w%*hOg4tADj!6@avrGdmh^^tN2UScmMDG;9>^=_Aocq*R?mbvZT|u zvjdtF*x|zTdHF3ZREm(YY$ik$Ip%D66N2WzM7~B_y`F1ZZ%T73MaL+1YD~5#?KaNm z{n^zsCf!qxj7I#03<@rl7CP@#m~~u;Y}0$owt6W4TCCL^^s-$s+4R8Ex5v%{2#>bwhu1ZsVB|5xq_!w-gsF#nU&BKU9 z9Vqu7eRe|oYUc z_qb|1@&CoQ&}sj{jK5DSZMXnU0xqmTh;Skze%ZTXZHR=*LJEz6C>T<`eIs2`59m7k zq-exxMWyIxf7wk74K5#vOrtqxZJMC-|rES zz^Hl0aVocY9d`km@k?ZKl4vpoCwK0^a9%@W|M4lN6l$cqEJDJjZOjb>}{>g%?)k;OV$OfVJcE=&6}KV4lT=U+&@gkmlO2Ez+bP}zDl6k3MVu!;b+1;Xf;f#!qj2orm?HNAjv*OPSrl9#@AM6>u zaJrv?F4XU*6Nc8|{N|8O*os!9(pRJ)v)U8Q51lXYe(Hnd@UQ)*1Tdj>Q}l-J-7|p$S(H_64VCNh{HNY~%s3d6DDH4(XuHkxB_Rvp zzL=5lO;s3$QZ;THlL;0>_jlM^#kr{5EAJ63R1;cPkf8d?mGj_BG^r7x9u@1^xjY5!ODTCl2#owca3;t-LNVT4g~n}0TofM z|Fu%Uw8WIkmie3A2-$c3tdv>(Bc~8R^KEz{Si}IBW9}FByc#Kf7v+C?iyi%U^LFC@Lrn@8wyQuqAq0&Y%x(_{=l<(|sx9$$MvN)W&78Ci8giG?J9?D}Krr zpAo%0qb=;0b(&A)v*kiH>&Mn0vTNRt+3Vsu{ z7l*_hOUj%RFZ3I5&uU)^JOcYn#?r|c`Dvl&%&6y8B#!v$xp%C}7?*c=wPUJE4O4ee zccno9?N*`UZcRtWi1YMN2&ZaD;|O!AG!LV$Y&h}@b+0ELZePb#+WlWwjYhzf@9_1! zJzv{O?5!jb(2acdSq-nE{k~^xp&mZ}?JoSH@WYlpb!*)sYd=1Oeypfvdm%rbcqNf= z$oluUSsBtq*JHje%Z#MY!!X4q+{%W^KT(Wdq@awRjLagMjl@U`vczVE~S z`pl#DkjuxYo0DWO7^z2hr`Cmjm>Pcy0l@%Q{>y4y#iy;~m+oJfzOdCLALZjU-`lpW zE)1Q;by6Ir6lY#9v$HDn7(E-CEFKH3n3p|JTZNddk~uEgv@yde%b9qX$OEe}(=ghK zkXlcR0&jH7p4-sB`dtQ2PBgA96rH(v2+1ohjQD5F;=^cT)H=aVUKAtF=)(M~aPOak zJvUoA^I3wF&>V~*^PJ+88XJDeHB7LDAv2UpuaKNheWw}S1cyPJt7y)AW;dUD{LLK) z;zEHZ5jSq049D%yuL>nd+i180= zyPN@i{}vG0Pgjo&WskU$H4R03#{+4aj_$sFu^vh>+C_;T$pwgSXAMol8x;fqE#du- zG-aV{`X6(~-)ZVX(sh~wZN=a9t}Uz#49)*bI!p2!mH!ZQ-O50p7?E8s@JAK`!fp<| zjKIu8WTEcWE;xrbnW~PVPu-)XcX64`;Tvc(-XB6QE;XmtugY1W~sZUzp^YeCyP zJ=gR@BfE5e=TnTRC+_ zP_8d$DPQ#&*fUIgE6s3(@gy7pPHTAt-p1H1zmBXce`bB#C`{IJ_ zH*WlWeHZdB5i*^Ly@ffQ;lHa<;odr+Uqj9F$lMC(or&tG??Z${P%yat=4K`BBaMt& z9@F&Tj?o!*+z-8DLtkua)}&q8;41{z!UnNPVPiP=#sxILlI0`alh6ysi&8~unu4!z zjp(kPY({v8IfHgzuW8=-NHOx&4deKe1Ul)kEpcmT&VXt}uhq2}xkvnzC})}77D1)z zV_(0SnfhbUa>ylr0G$#5la7n%c=7qu%op1?G%&T-25RJAo4-)7a0C~UF9RZdPv;YWv{nWuC5F7bQ+w7`$pn38N-WdzPunq39z2C5nqbm( zNqZZA`l4_o55?QKv7fMnc*+A!kT#r;v_z~{*Ds~cABXt!NcB|jJr={W@Gzwz9;xu#>N>mh`GL%wu zfIzKKvLr8CBv-DK-Tk0PTu!!psbm0#s%+_d)D~d&5dmCF0;B)2M9}FXFrZz_J3l@3 zDv^N}2&~`#Lf{1^exG(;RVLqm6AZ{Ue|GwQr`P{~kml7+#qT*&mhk`6{JBi?prhdL`g*?+tZigvYw<5Kx#%&4b@Kxb z;sCkCmn34e>T);JRVuO}aY;f4!l1M_PH1J0a@Nli&Jn;oxa!@BN79xgj4C7faRjp! zR&XBp7zr{ni(Bf|dERaif-pA5$mM^DRy{YfzP-dX^+L-;W#pvrg@h;WVz%F00tq(x zs%0er?^tQuRWyTzCs?pxX zc@sRZkcEfROGh@qk~naGRv62=X%0U?w2Z+Pc94=9r7#he$;zU~zQ~#5K#scy4qdKF zSQyhMbfR5CVR%rl)H9xKVV%{){Q!qkB!#bXVpy&fMFVX!SeO%J|-^>1E&3$>vKYMB49OEjhf`*FV ze_s7}%+P6Hi<)cr?|)NmH#cI_M8-T#fPeo?&2Hp-I6_o@8DtDF{6)D9dY}K108A|n z44r@L6PeKsj{wC)z>W*NrT{kV&AJ=xTh9|Sl#La}kitc<-Y=N77@9rB@=qo`edFmN zM{`hsv5aq`5H|YQJpZYXC2OHE* z%VAWl^@L=&SeCPk)`KbBG#YdR`{>g7zG{*NrrDkCh;d5!HW=bxpL>peRUWzdz*ms^ z)MO?m>Bb;V@5UQ*Su8!A@V%E>@U*wT-W=g`+S@j7L_hk{*XDkM+gjgAcu=c&l&t1e zhv}xx`Wjjx$LKl{njT_*0q=YExTdKkXx5??tco>97@%{xw`9Sr1N7_qqhk+Rze4|G z99^&K|3g4(yf_yOMZ9R+9Lu-kU2fZa-{;l*p7*~|tGTYdp`HEr(&}oiaFLsmb@9V{ z5u)%7)V+$Vw-DHrOM|qBF2+{GRZ=2GU$V87t3-003-HfSv+ShzwOAV*n@^lva=cjKs z4jD}b1Ub8c8uwSW+L|LnYP~QI>MHQY=rR&=AVug3Q)Yuw2nf^O7$ll2vfb)}m-K4F zQ|eE~lpdvL^A1kz3^22QUwmEns%OWj(Pi~LG7!BdRU^oO zfQ^@4yZQeZFzrmN{#|NZ?A}3sD%h6+&AmX|1|@?w(BA`%y5_@I(e~x+RK{B|gPLn? zR=4%X1dhoBjCzxv2K7M6C)rsfy-$22WfLGR#}#=iKa)qDVseG0Ty69OGDSCP3CS(% zfi@$F=TTd`?k&1r$Xc1!YFHOS$)TpHAwu@0z{v@g4|08!gKO~0Vy9q@^~rO-v11W; zm2n_CFsosFL zKB>=fpt@fOjicd8)CuH$jIOxWhj51u%GQ>;Y1rs+E*;oG4~A)@s--fXOclt-ruy7# zrXo78tZwLbSzF^&R^j~Ym=TlR-00aNu1DmHA&I|$K>Kp}ea65!wZhy06PEe5BRF;j zN_IkK^8o(Fu7*%B6HgM_^V}CT2h~TNBJ1uHM5Ax_#ztB#V7GIY{^-M|2vS2J0)&lHdgtzSz{|MMVst);KwrvEFQk?#z3^_&w} z&RisY7oXQ8e@>LSRJXLpMW zY_r0pS7kfvkM=j8o&~+U~Ea&)k}-t95>WH&___vQoD5HsP6c5t+8Lh*}NM&bNgj> zj+e*BkFm<`8=4!>$|`2=F(qzdD2wYuxeaR+NXg@4yWu?QpsAdJ)AVYCwp3Tb#0CG< z@oLKeEPh$L_ThbFhPanVU$|2UfSWh;&y{llY(DM>HGWTTuWlX##O49#Fn}8%|CC=B zyZISht_lHFc>WM#3uuTL+Fj~9UP!YDAAkcSSwiQ`{?_L_d?|Qo2v8$;avCZ^Gb6+2 z66d3%y&~uFU)7KYP~4FWYDm4&Td|i$I;x`4un$%w)hZ<4e=8K4xdrd@dSSa=0ytG^ zV>aS3Ok!i2EyBc5o4s_Sqyy*-xt&DUx-+7SD!Tax z4_S*L?tU&25(pDRe8xfHXw`Yr>FitLT%Ve^dYnfvW_*f`M;Mz%g{Bnzdb=J@nR71-iQRcyVj?y1?OS) zo!GGw3(uxebpMCPW`o^T2)7l~+Lg@autH5RQ2j`GKgQI3?JdLep<}LmHu6XsG2*Ty zN(Mx-KU>u2WC?}cqXG?~XD;0$1osZ@1N`w$!l%1FQA<=kenTZ&7u(0=f^9cBG?#;W7jv&RH50pBmA zf7J}24%mK}fzI4Y-|VU_@|C3`CK*ubR#lv>)N&G`P!Pmw1}h|aGw6i3W~r?;ti>1G z9n}Y#z8-zzV)KR^oYgVn_VnDJt^f3K*$x7%2_4-TJmqsYPUwk%Czy`^`CIyRqztTX z9naVLCC-8pNP}ZA3;|US7+C70qGh^PQwFpGjTmuD9NnfDf(1Jrn<|fQzzJ+h95o_l zRL9iRXFR)k&+7nRh*GJr5Wk@~Bw)Gj{$tVI>6Cr z3snkRkF|*3f9=5HI}}dtFV<=szQV*2Zi{YVrt8)t-3!;P`DpT{AA4vT zW!Un($Ec|&rapU#?=#6E{iDJJ`#ycB zqzc3Z_D1XI5a`KxpUtw-v=&vwdLQ>C0&BYo8ym)(M@UK;nZ>H)z)cE z_0yvcb%I!`eD=hxV}jHfGG~_$7pHp*$F|V4f#FVB@kh9%iP46jg4(pha1kq;z8Ll! za+;#>{&l+vRwp@wUlkAu8=Z6e#hZ5%1 zBcutTjyNrBMrv2r>DRmqjWa#KG~VqMMF`G&e^*P>tuwD;FKEhY#rejn7X7F9sy99~ z=&(jKYMM^xE`%;Fv?9WFK#5s}YL+uM%t|Xwemrx~LZngj_l=V~qErIB0kGDC zy?lM(YMTrV1SgxD>it8=m-}JgS^aOE11RAlVE{S@unTxmqx_`ytCB!<0WV83v@|xg zG`z&`7b2y)8h~9isD8J1dTZ>?@NROuxq}20HaHT5Gc-NHC&vYA4NbU40dG$C7#f6M zkncNymDoV_8jcW)C92W}zO9?{3cz81iePm+ZlCvtWevMkA=Qxgn(AxQl`O5mf-}vj z=~sLbn2$|9NOUr}?|r-YD11^PZVe#t&>tZWbS(?&_SxkvIReh-fwz(Wea7mQc7w1^AE zQcKX%^w3Bs$?kn$#+XcxWM8+W(&FM`=l3&tFA3|+l}u~!ZwE1`w`pHf1C~JdV;P{k zT-Q#YU0@G%%jxQluINFC#6MJ1dv!ADt7Zu`9XSynf z<~PRvF6W0m{&Q{m#pM2s%vVyXhIIXm@tZhC;yLfkZSGS}JMV}ar97Tti5`{QT zud-N&46X8_e1LV{XZfyV+r1(0G(I9|XhVOLNb7sDVFDtLsATB5@tss06XfGD2DJK~*MTqitpIU^oJi2`AXdI`whg&bv$*17FXONY8Q&Iv`fuq_=zNOL>sMJ>4I>`z4#lrr?N(8Lq?}&Q`Z2=ICzq;^Jd3+aEAM!7Up?Nb31;YyK#;JSI6j!ygHH(Eu~DwMMYA zqO@TFUwuc@_~CosS%-v}rvf->vkl>`O$iK`CD}WHEn}pE&mEz-h@N|okylPKR7!eH zoG?t$*&1*Rhb7#1b@ssD>X=0*=FU8dI#^`nKX}^Ead?Dsez)bG_EGwwpol9@&T)cQ z!hJ1AqhN~ek3Bu}Jscu8Lf$HjIysr%P-^GAgT0MTHnTY|{W3;J_(>OcYR0;P#*;X* z7Tzp`D6(*ZX^v`Y5y6g}H;hr|;(@KN9CyAxi(Rf5?tm_HEk(hw_MF@J(t%9tI)`IR zjp$H3dnA~|*?Hy_@@D+YM34B+c_MQ5J0sbyxLNrYuQ6H5({2RidY@5eErX(ES6ZB# z9I4s;T#?i%dNA)QDVQ2PRf0!Y#h~34;*!v@tfLa78d^|kZjomML|avg$kP(R&*pFl zP6wMOc8)n`NNU;Eb?LN}2PRRIX3ENCy3EEZ@{eRoj3O>05NFKmWy<ZdJKyP^2;-klQp+w1ztfssK_Ha;_|dLz50 zBpkQ+}!&*kNDviORZ+)y>TMmsj;eXIf@(@Jd*vREWDPI5?!u8;vkx%ek)qrQv@olgkZ zs>_R-S3-PY%A_B)FokR?t3xq0v}u=XA;k!!F^j6GakeF+3ecmdj&Q4HI4zjV!YRfH zwUx|`Gq5qMcKGL2A~Py3kig#T+vbF{R{VH_$b;8WO8ix3uejuGefE|SbCzU#SgS7* z4-+D}Y?fEI(brj*&KPVFB430As_rb%-dv z=JY9Sa)V_y@0j4EuUfcUew^u{%@~IKZ-uvV*EU98eEb z{!$NIeQ5-!df>v;kL;{0fp!MIJmTU760BiA4!&&Rnao&QGP%OcFb=_>rcBAe17!P! z^cPLJ6UlF7OMhKCKaO@Og61%k8zhW7E?Ty3o|^54m2BN_KyS+EKp)I&d7Q~W^=gOe ztL*boM}5%>_!RkC+3fjxw}bs$O+>|3yq9H%H%>WuKh@51mPWZ35=(3aY$Uf67iJF9 z>7)u%Dh4X`X5E4q-~U#G8b;ZG924u=L-jt?LL(vxElokzBva^V55q9*|G#5^NFfH6AVo77b?4EF7h?s>s>jjn6kY8 zX6&V}I>$x>pCgAaK2c&qj^@*IQDGt20dNN(3* zGQpw0ruIikC>@a62XBj5yBoSOu~M+-&%x@4(;E;t;ll-?MYg(2<6=}-npR~rU_v5u zYo!+@EQZl_v<|6Rz`j-tFR3X{D`Mmk0G}DLCwXn$#hZ9DV)3t}?(W((*Runk9 z8N`a}OWi2esuB~9he`PCv(~I{y#yArp28*I@{F@_iHOv4zeh}tHfwpn7+A0wQPWhc zqD`>MGh0k%>~|_|5h(F&Yf}Q2viT7tMLCcAkwiWh#^C`0 z^zzTN?xTNU*&?#o5|Rip;F!DRoncU;R*v9Ej^-54p7;7K8*A{GgW0zM6>91o0y=qp zFD(#fS7lTARVkqRl;#Bu+8>le+(KBx_lLT*GbKdoRqMyla0; zYzSUumOYGhk852_@ascH%fzZ(a0OJT2wL_^cRtML3KR<99kS0$vUy8(3TGE0thArC zlE7;}+p~GgLN~>mqkt2Ad>|fdd02V&ZKO)*-KQnsL|or5uJJ#&_T@qCzqdB1AvVy~ zzAXQ;wJ*(PUw}&~f*&}WEqrVj{O;RqcH%?(A*E$6=3*f)pQmz`+JdYh5`?;Mzswz5 zywz!4r9*dwg%O^pq+)|ZoDqM8!Y4JvPZch}K{VjMf~BkqlfHpfx!wH;NhX@_b&mwg z0Cydlq1BbKq zytv@cSspIb*p7eoFwxd)Fns&vo8=Dlo${stq^9+Y<*r`o1~zbhn~8l>G0;j^TPL8q zFxOrWzhthzmw4@~fG$bA;Jd$D=e2`KSEODdzP}UB^+$z%=X&6h|I_;*uKL`A|J@h; zcIN%UJ+4W#|F4`MgHCcl-NC$KvdeQ=e@`*MD?&dCu7CQ>*9gAEE!U6ADz!5r)f2*k z)hDa$A`P`15w*&iKR`h&Iyg>tTZ%e>&2#I@crkRqB*lKqk-KQ{odl;F1EJ*`gHE<- zWtLcVI?}TJ#oM2$=s}n*)M+JM}Zz>%LnEcd&}%Xj6kY65gp_!nuyuc9x(^|#k49m2m&oCzN%5i4#?Blyw8V%@lt z)lM3Kom2rBOqqU>r6gLb>UpmAX{BFF`pwy49#@cg+ysU|k%SouX=p{Ves|VHxX)&~ zbTpR26N>Pha}MtWtt=lKgFQl)gSY~xvzyvto@sKphc8yWHk$~hUahYa!=q86TRzK= zc0nY1m>C=g#~Eua&R(l(cK+=gZe++F6?oD=_6rwWEjB<6`&_c!m1`20%Y^URz1ocg z^_HlA%e$=7pGQy^?MVkEDJvXylsZ6nlEQ?PY!F_AE=LycHWxTN8twdedjss9;cc<5 zL`ln2T{XD9xwG~!k&Bfu;I}#5nfF)fqLv@~mOUWITudT(nEE;m{p|~>efM(KRv8RM zG=lTbn}TxPrQJshsB*5R_Hx);`EtQqo$xue?>p!jZ_<4|{_2g;)eH4-kNMWe=6r50 zZ7A9=%(n{4vucfZTDe^L-&C_mHBH78W|EMx4)v;5hg%=qednBPxZ_(Ot2|4RjB>ux zC@_ z6nPLEZ`1a*%KH``1+%L6!44e;_~U6>ONkm?nbYD0*+yM1$SyCcd=V?omLH)i3cLB5 z&-Np^za)=Ok%lLGSM0zuYAY^4*|~Luwq>@E0|ArCek2BA5I8U8i%aGckrA3**;$Ie z#KbWjPERTeILOD7IRU4X6HQG|hqFhqAq=R%vlK#o$XYRm{v26F+&^5)YVA#5DaPE{ zLj>WksvpzeH1<3Z_&VTWV*(zVTa+*vbw^5OK5Y{TZ3-TDhv=SEX|NM9g$zodtOadF z(x)Wk!#ooH%>Lrpc`z~*SbI5J3q`2l=wN<*ktMi0jgc9m!Z}{#GdELls?%9{aHttt*|GUgf%jO-b%9cvzh?XDSbjtj6AJlCX$OhsB;)0<#3xq0ipp>vTY z-2FY&)_~DW3VzJJE&rKdo~F57$0WMmeoK>JqWfHM$(9C9r|ggkH#79QqjqB=hb-iU zVm&sz*6+nd4i^d8@NH@9-Tl}gd*aY?v8A@4ZBlnj3zl9OwOrW3hnf z^|&7H9h5Q!(-eyCM)EqW8fzLbXDb`?;kD8MEncO&^s^i82ZCiyab-@XTcphIwZn!> zP3@Xryf_;FxcU0C+mmzsdwq43(+S4bXLo|%Lc^vk4$OQBSYT;SRWqlGIgttvtXRAe zUmvi2$9x=ro%p=YEKP>>?L?tDaqk5dqhs%~ zHG_>R-Qk^h{H^6R#7C3>Xm|0#T-Wjf9*4U9$A8$5v~yT?^;{gKhrcRL~LT53%;g_6>CH zb@g=Z4C!1f%z=Rsc&X|ltqzM~RPbX!@jv?<%r2`z#?&+}yE(40v=-{XfRGSHnn>gH zX-AU-c`ZY-#Oj^LS@hE3vdL5HtVHwO>|m=n$hG!{PtDakQEy$N6scZP%iIr(swb~L zR912DNgZ`%8Vr2NAi^DEW+8*HyDNH+LeO}lX};YqAI##Q9&OVQO^0PuggjUG*;!bv zDw!axM;HueG2kLjyrf#Z#7f=fTK>+X+MphsM;~9IGG#Sm(J3F9!J=i-L0e^T4r+>O zy-#^mW^pY__=~t2QD7Sw0cMb@&$DRLdfi?cQ_&c2T3R7Q#>9`l z%LwqSYEv3vwY9PYzPaYo zm4geFD=6=F$UOLd%q-E}O{pyQbLxMI>c@Qq>#lC`5y^ZCKpQrQUW}%rUv_M0NK`(% zARUEZXJvf}o1n0xB{OgSX@Xkx)5I9HxZoz8gu&@)32JIlzeugS8WF@8-+=UPX{X>3 z07SoDT)Y~b|Bz+=0Mey>{XD4ucci|mG*Isc`*)=NMYw^XqoKK#^=~w27|m!k4VX_q z{tOR+$J8=|+%8Kf=?y{qY&$?Y%_5a)IeHK4c;}3CE>n7`p@?j6X^BL8)aC69Y3+D2 z;T?(Y!BZMRTopt3Q|~p@I$KIP5t4`FZA7*yK{j->ldHy`Nws}hEc+A z<@IfQjqMAjd!qZL-q7Y)HZ-Dawhelg>7l)!Yv1n1QV)?L5)6frLM%z*ouZQTRc%5- z^uSCYGP4%z-Z&I{g@JdM6lKo#-aoAsBQa z&^5QA)a+Oa!>q(X?1^c%&n}XZE8yv+db{SD{!ZE@T~~NTOVFi5Jv0dleqfrDpRQTA z5vF_>!J%BVSES3R+XhwM8%%3Zj$BuN+JesO z5I69Sal72CE+EME_;m$XJEBy;x^7tKt*NgyZ_aA)M%vy1L&FE{I?XeHtG>VXG~^Fu zA}B~-npORoD_*#593WSm;s9QG?9QTC)X|4=dx+UivsR_Gj0=upq8}`D%lkJVG@!?{x2^_ejBjX(4#+CTmjZp+_1^ zNky`uplIu6j6-;ds~$Fq8QTX|g_DM;Jx0>In>l(juc6(!HPDBh8VE_Fke?FQq##-& zC&_fpDU6EgWCNDWG6HOp~Kafc5Qr{0`^%uwrlHSp^LwY>rSFNC`4bUXZ)xzxMA?l7&#Z^GWZ zxW#ybInJAg@wJQ@N+)jRJ-z$6^#txVzH6eeuy_;vhe_LDo&k>Gh~mmV36ooTnAVjg zJ=7bj&Lu(>sv>G=j@>TPb8~&ctH!LM;lih5<$3Q??u>&yA~p;~XQ1(#P=CIRbVfHq zt77!53tjwl{>{thZk2f-QbT;fJB(QSsvbHnhTJNSpPw*@qX526Id+37SGMddN7&W$;4rz65fAzgK1*R33fw z#>pEcfr(@qvF(%tg&E|RUr&aHjOt-XhzPm)!$wxW);=KY@FGEY!6CTkSjs%fxoh97 zBG90?n@KI`#qDvLm~u$>V3x))6WuRCZ`7!H9I*?93Xw2xrQ|m8@h)<+ReJ|PA7ef* zc!~EbxjRjkLEsAr51igYd>WAfI(rv{Afz3@(G7m&fuMW6*Ur2DJJtZRpug*%0*9Th zZ%BXdpMs(jP~QSNj}!f0e9JE*_W!1>|F8R|pf?QaO&$L>(=RCj@UKB+Qyz+vGB}LD z3vyWp^_k{TREH=*kp3ib>M2iND2F>mm+wx75Wt=7oQ2iF;Y0?bL^!Xwb#KxkH8qlPzhc*G(l_AU#OtCHeFqA}QKtO3cQKSDttBx121QcZMM#=QovC9b%IM3^9mgOo&!t;A?D$1LYArU8w z;wcXDbW``NmVJzFM9`8ih-t6Gs-hO#1E;#JN|vo^H_2S{44nMd2dDms$IUOCpk+9g zBkEsz$!(6BWV%_FD>2$;m`M=X<Q@@dn@ErGj^l~cCz26=;r6>OvU^|6u!gFI*Uxh_ecS>PmBt5xO_?U)6J8VcqkB` zA~HrqV-&+P7H_m$rSyBN%ZKl*jWDPqN`9_~MNSXZM%69TBz&LE_neVA%_#CT+P~1NyYsI%K)sFz; zm19;-0aNa4UX!_{oioEZKeM(x0k@gp^XMj>HFTQR7AaP)FB6iRR~&~) zWm4Z85w9M|T#hh}h_y7nO0ZN_b1J2W+d|QM%@_|~?;|Wxe~B*Dwk$52t{+P6VAO4H zGF@ISdoNc}s%8Xl8P=+m^yS-i0-gjXU3>t8M%=i3o#1Mc{&y9CsU_gosOXxTy8iC1 zYoOg-_^-YLfy>gpS6+W}^QEcF3j2+I2-cr1Z$s&aa{h>lglNxn8nV!vt7 ze%k_dK!(4Q(Jza~Efbq@G82I)deLo;Yr#L|HHxiIq!9@gSv~|=Rg}&{iVAQ6TW<9C z{^+P~8#UX0Z>o##HgY@}7&p74|5{5^R8pSzuJ@{3D1&JoEAQg!qc>D-SWC|q z+vU*6>mr9+)Js;LFYs&CBp?g?!do2z8fr2I6vh>xUnC&*l)oe`*MqPSFDU95czjZG z9L4vt+6ov7olG+AfWzgnKaNmA>-z7itzUF)YH4I{`0Z`XpmeMh*#j8hNAcV74E8P? z518+NZMBuZswK%Eq+HH78XSk#7Wt%bxDsvdX!UurF0wO8GmT#}O0c+iW2YL5cmb*E z-8~1dr{%2Fg9ap_4lFD^;Dzc5?TMh$iHO!bcxtB?XgE0)~~_c&Jp8g{-`!+%#<{GwqCQwu|Fdl&0phW9Qi3yUxwWFI~h zAvez!D0N?+e_!t@m~~SXQ*!rn4q<{GBX4<6QUW(C)DREp zd{Rfln%K{7bhI?)qo*^+vo)g5MC}Pevc#mF&RapKc0Q z5+_%^sSn4*V;t*4?wyWi7qZ6-@3$ZoW^F#3HN?Mj!Ssi|+o+LJpd8|tCA(--#O~W1 z!LfshGP>7fC_slB(^JpGF?O_a^Qslskh9(zlhm#MBZKeKJfSQj^a+tU6iw~O!Q z@oe+_=c0Gyr!+S2N$xj{;!`PzlaQsFDlVgx$0pyFP*s%gR2DaPvo9Ewa0vVGsRBca zUQES9lWPEzT#UnFz(F%Tu3YsvEKWVKV%xz3B{wElkVu$ps>ypHc^JODKdW4+Zszkh zU=yvfo+<)By?ZUNLA|fxkM^_!j`wKW0e_(;2!alaWCRklFo2**um&M=kmvJ-3;QQz zNhgVkCB4O3cDJY})@MJWYDYxeTM8j0LuDa~$?gcIjYCZRoDn*rU=B&s@v)4b2jMQ# zu+xl_TD%43eS(PkQHodNQ)uKb+=!yEMF$iIe5KZV?K7yi%WhVN7S!Qu_ehQ9J<+2#UZTu4@8g?##|NC`Bc?-q$jLVy3r`#OwJV}^tp&8%~HRgd#Rtd z7t{KH&Cm(4MjJ@e3f$MIBVJMt;Hy8Q+(S?L0Dq<$1Oy!x@CFW+ki|Cv`CcZ!a*o9;XyO#@fHzoGw zh)#?WQ4GHLf*Ua%LLynS4dipZ0LHtIo@p=@Y<}1AL@Lf)Z z(4<3OHpi+;i($@3n?&w5g}{%I6!p5kd?W=Oldbf}4mTx>qtGRbUHN++kMr_W?5?;& zGWjLGt`un>G~vPUI-)j449Q#r*Gs&sG~AZ$u1J-%MLjOr{L8cu$nyK#xBy zx-Chq(GWPi5k~1`4s!##e82Dik&?oJnel^j*(GQr0)dl=cn}6;zUXb|jS@Q3C z#ust{vG$U* z_iOeLJGd#Lp_5ULr8cjeC4`Mri3DkIXZkKQl};4ejoTl>mP_jMvN`zmn~ zp-ZLT-ktW@Ywh+qXCLqHkJr83&Hea%zw3F{v!3;=>3Pn_jgdG}pL4ED%GKkj&BOZl zqLl?-9EyhjwuxDDa--COj97(xUX!c3jyw;zJY~`9n1k8R&X~+RH!R_R6?Cu&7{qhiByw=(R1?iqee=6t}E$8l$FY?xiSI<;i~3`@DQ_DddrN%rKZz6nm#-QxPjGnaIo z3MiO<`q{Miezw6yGbY>Qoqcg{kI4$nJ+D8uCX2S8{9{F8RO>FcP??M=&Nizr&tt58 zBpJVQ$k{w*b*N-Ah7GTBqcR%kRIRlfH44sQZOgipGhQCMPG4P9 zf1}`V!S%f_?t3~m__WL{E|w8t?UcKc8J*ns*OQdjp-La4=ahAMZ*18-Iqgma`Mi+^?`)eI+t!K+`T(8mCYMi3_!ZPk={>7%sQ%igPY3X_1@VQ4z zq1bk%ne_!pH@}K)7amHQPVmfDuWR|C7g(-$qByfd-zPpt|ERigu1b#O$eazykuN@p ze!L-U*!N{_+sNi1on#T2bp`FBX>Svkif2@pU)B(RtrT44?G^eh>tEea`IwYv>lUn8 zGxmBz{F_mpqf|#W)wnF5yJ*2TpHL^&pCa}yJJ&UtFMUwk+!3C0LM!i4@~Ef-%pI3K<2VY}DQaCRzh@=p5u_Qzd0?zggiLtmYnxp7ChW69M9 z@u$6&XWD(*vnutxm#=oHUFOAH=3muhw6@4=x@g~uzWyMf!gNi}P4wAM&%i>Edi{WH z%?PmLrL~;vp!wh2dcv-S^7TMk>%zz%piInP$`|Gu-U1*d22%D~enDN7>hmQ4& zyd2L`^-A%1)i}qvx2N(dqq_vH6f(LlZNbF3;|sjI=gjSh*uG(!&7NV*#B`;x!{wUq zX!?%v+2ycF)_G`4dTrj9?P^DMABYcJ9r$wOyYH@h@8=-XQao5gt_N#9z0_rrxvFenCUo0crcB-Sz z?iwBG>s`z4hi`LHdBMzbTARWeVRY;Ge$zRhtbNX*5AhlTT|T|~)5=YwDSvupaO2ba z*Wa|i@6wJxJ^9t6@~RKAWnY!Dzlk18n4|D~vYUmrVrf&-MkPC)D$_q2j)hOU=WyYp za%;}~+qb5@+^m*zEhIqV%?jbr)_0-u?FJh@ooduK{f+FRwAd}R3Nbj6g67> zPt}F4uaRjG%b553{^b@$PCMjRTjpI`X!1_+ft2y^KNFK4f4WwBvUA7AvaskyA&X|b zShn=5p~m%~=l{mn2VLzRrR|w`zT3>Z@rLIm3#rG)q9u3#Ruf_9-=_b-J74v2wNc!s zTFbQ>S}9hM-}DZOdrD`%**hb`qUllFUv8I77GVnm) zgm+iE-rdPqSh%G!G-qS-*OM1tnT2kdJ}Uq7f>yb=QVt0(lFoHV4=tGIRrqSw%k9z; zZKoeddIhQ&Nj3kh8PeCEi@{k-f9?@9dVL1H+9X>lO(U2!i_!>oIo?dFL36rv&G0R> z_-pH-D{dMFcfSptATeQ6edbELH$y6t01`X zKH0{9_igSAzB#w3{({Ayk1fsiWY@i4rd^%?K5RtV1d&)N@#eGs*)Kd~T_dmL9fQNhTn;^mesO!p zcfb2StUEC4$B&!PKzab zK7Q@@`c-ZnY3Zm1RQx|!fPsz<9}8#<-!`6Uvv=wh$A$py68SMRl#*=cS}h9ua3{P$ ze8$fsq0cW4)jAyTu=9{%r|-Q(cFX6@i|YF!@A=_Dkh9lV$4!RA?%jF(s9o{ppB5pF zySuW+pqCQLk^*;1)hFzYSQpi8Fa7ae&l0PD#x0(o&}_cD)AFHi?)(GOhi4t0^eN`I z+U~l-*jiUsVyEJZ**2HTzUH}|yJGodiF^=i+2H(DP~ZiGwXyb{3ns=RS>oox1b!*S;-A%U)@g9nXGTVrI$Q@#eu< z0~?0`?`Mv64k;3wlhf1hte*F$_TKvsGY_ZU{p7D<=o)uAX_!LVJGps|LhfSm_dYkaAsZUu56Vt zug&e9tz%49j;r-Ls#C=}KGj8KPD`e|>U*8q{nm`^2kRqG7-)8AW19?4`+Gi|1{?zQ zyv^rw^T4d&>mBZoE`YSq|6mitoV{tB>tWm%RLZ==C~l9B7bX=34MiVlMn;z{kXDhr z7&(VIe6;$~EhXum4@(p3^O{Fph@Kp*ruOlDYfz)djC%2$q%R}ob63p{5gwBEY}V~U zi?Vf^B_dLyGL|vQ+m?!sZI@3OS=ZTCpL*eag1YaqQB_v0OE)M_(=x~`_mi+6_C!=O z#80Bcxj8X)v9#-oDJ6;*n;yvrgZ3SmElalnNjlNkfrS-uyKvOc{_1#UyKFm{z1x7nuPBtdl zT>Q{^>h8{4-C-3{RnoJJ-d5|(@wSz;_sCo*vg$_Z=y2D~dRjB{maR1u^L;jP?8fq= zreD8Y&X@MhD|;CcmD{jH(r@1Tiu+7V@zZ%KUWuD^`Uh=T?MJG{2!?>vYa%^5a6#xW^6RhjxSY#bwdpSG?!NT= zu4s|7Vny?B$J{P0y`6O8iGK2l{GOgENp{tYo3R<1?%#u~w%5C`DD-+RY zb@pn0>SDXla#gYQHep@kPprS{tdpkesEjnA08DJq3=v+`0#YKB6p+^({od;798*ITDs-`v%0eE0ohjR~P{Gq?PiYrONh ze%Pjiq7xr^ik+&h8-gedNw+iTOLFh{e0!;d&DJ)GfsM^9Ege%!&4mo z@9H?I9k@yMzqx|t>UuG=Th8^J)54@m>>N+%HYh3?1|BA9m&yMF28f|lP3dUVLbhtasSIN3(l*pWpQ9>u{4qb6*`?=_~ ze&K)aI}c0B6HZeIee_m&@9eDm3D1>BTgcjGIeyv{yRTjD>@o4bWA)4A)aEaD-d^PL z{8QWYFJWod!wdf2p8L7WrS5W0OHPq_;7FreCyPs#JC9xVt^bHS!SLlj*z1$2{Z3)X zP?=%u`H+0gRai(2{agLN%u5jLi|+(1brJ5*;fCF2wYSC)*keQo-M?(N4xE^e9-t3L z3wcNY2u#Lo00AgPF5G{``Z@=S-5By)*UY4FR^M7YP9& zK*3-rLa@(e|0=1WA~>Qy6M)t*8M#zYQ2B0Z8OfPd#sR1-M0W(CaIk&Yh5?pI22}jk zEx~5ZhK_lOXqOI`6B3dKkeG~M3Zy|Dpr%kd07L@$_eIsk7S{vF&QY%OA~ z1huFFwelb@ND6Hd4JI74Y~#6DBeZ{<&>sZ|T^UV#h_?^_VjB_uenIG29B$Cq7F#)>^Q))S%Xe@`I)5F>=Gn+EoM?SV$krfcF&s#oEi+JL9h8^79Qw zjRQ)Cjm%P%C#b->2GM(w1k_>j)HTp{Ix5!&6vAXYr-@EO^W?pdsQ?iR2^Qz6B>zBf zzy32lb_bBh3>jMk!Y-zTjrTV`lK64V0yvlq*)eq5k8=>)k-|b44?nKy02d31;LQam zNTH`Nu-940efk8rM0B-g2uQ+YsE_5THBb_qh@a}n0~}Ue5^q8<8wf5DIpDy2l)l{q zhx&oRt^-NbOrJpDfe$kEA{r9(20mFPI!?d@k}2UAm}ocza!<4YI=m>?O3M-Jay;n6%uo$m!F1RqKFXQp8Xci1awFmxc# z%0>WhFM>!5ZZM!~sSF2`w5KBSpVg?O*U%p;fRV{K{a-Lr?q(<>=NCMk?H^A~%f7}C#@XLsduNMjaCAjB z*eQTWETn}y_J(!A0RvTp>G^#)z%r2K+G-9mKikLJJ}g7!6qW?a6x|9p2HMVK?4-c} z7&|#t3flts&6d*uN){q1&tE8ZIWydUknzd&A7()KzO?ZN$_KK0hOj4MDbcn?G;l9! zQLoS+1R!BDiUlJXsE53spZ*AU1y*{8-PL0Sy80tZwo&u)b64ts$i2vCw2n5I!L3jozw!skVD{3o*mA;uLCU<*b zW0O-9f!OG>mnSxnUW(mrVm2dG4weC*4XJ#>G+w&Eu>lv;fBw&|d`>nXHXkMnSYI2Q zahMFn>2&z0N{zGG$kJhDromF#29R{K&`oOG&EsFp-NV_lfWVrl9?7P|DtLp@HF@3! zy+$umi_-C&;0OzYXHV*(2gY;g<|SIiga$a?WrHIRcK2Wk14p1aq_AkgNT4Ug{B%d2 zL*dnfzXq?aB7z+Jjv&}8zwRBm@F0b%L`wlktW-An@vgT2+69VoJ__ZR3N;8_!m% z9~+<8;AG=tN&yS!O#+OT$(U%)6CYR}5^A9iL*QEiOca-^55oJ9YLdp93%WKix?wUt z@`L4ED&x^|%wKbC1pN)Xuq{QXHG&t&BkzO|y$F_|n+a)I#DW**Kwm<|@~Ha~YdKgg z4BW(FGD;{|pyGDapqR$Nx>S>)rbjLu-1LD4YjMhsQCl{49SJM}1r0}r?_%!2>{?I4 zoFZ53bqZV47%Etn2|NR4GMp@V*d1XUya+HQgC&3DAbpIt8r*E+x;3?iF+{Lz58Q2v z))a_f;UF?7d;F2D81(QgB%1=1bK#l034_IN;O=VY4meN?h`O2Nb)O8NO%^iRX0Yu2 zufB0-Ox{2u!-1+~AxpTy;U#sb=M6F_I09HmDsNCMxZ&1Xavy=dorS#N4-DMzp<1(( z@xf~=EM&GV7v&BrIsx9rz-1xNBN!K000s{G(te2x)g4rVhuVaAOQ~W{S4!|&0WT@R zVkz)R-PT{?0;L2Foe2d~PpIHT-HS9j@NjILAp_5-)VT0ww1y);Tw?6dK?e_=dy&mF z(eXhpcsy z?U9EVygQeKUVp^{PW;<%a)cuxpVz|PiVzj7TmtV$vbX2@xTMfxlm6Ib*4=KiYD+`BrMh;{;Yx?OM=6X$>^X@!0-HqY=iJ*X|s&4{(xgM z*!-viCU8@e$v93MUr;%~^&$)D<wM!;rv>P34P!=rZD?4f-*2jc9 z0P6_A3)wMVbeK4$6Uc!PK>=pYhb>xsIUNePJOOteFq1v3v@I*>@BrClfu%XwNt3%C zbT%x+*;_y+EKw9WO zrC@>OB&S&AP79{qga>DAh`_X@yrbM%!32@;1rQ9Pwz;9rX?s78d+b2 zR|C^`fg2%A2C|ukQ2m+7$mrCz1#cp%Me#((PekYh{P4Ocj6X22?Lh}0jw0{U#us#5 z1S?2&3vUJWCk-QSTvKZvTmmy0>-Yl;+H!b7Qo);mlT3`b{8FGxLSG(6^VG_q z#A0OABsjnfMli<&1}zRw-YV`KU|JlQV^S;~4k9xWnS;8c!KE*gp}CC?2b69{n3HY? zJYm9|ADCeVyr0NqB=Dx;eilS618hs@;&{qH;{*rH&;kww7NeIIHqXNxasa9X#Dy$m zS^}5G!)af*j{`7KiXH&XWQ5Uyrb+=rHY8#|fN4zNnZSKJ7dbcwwcNsV0v(*!z%ZT3 z(AdFmUgI275{Xf`ivcFzfDLunPA+0#s|+wv2?#!7Bo;yBp#R*MFC=7=i2dpR09yKj AS^xk5 literal 0 HcmV?d00001 diff --git a/vendor/plugins/NewBlog/.gitignore b/lib/NewBlog/NewBlog/.gitignore similarity index 100% rename from vendor/plugins/NewBlog/.gitignore rename to lib/NewBlog/NewBlog/.gitignore diff --git a/vendor/plugins/NewBlog/Gemfile b/lib/NewBlog/NewBlog/Gemfile similarity index 100% rename from vendor/plugins/NewBlog/Gemfile rename to lib/NewBlog/NewBlog/Gemfile diff --git a/vendor/plugins/NewBlog/Gemfile.lock b/lib/NewBlog/NewBlog/Gemfile.lock similarity index 100% rename from vendor/plugins/NewBlog/Gemfile.lock rename to lib/NewBlog/NewBlog/Gemfile.lock diff --git a/vendor/plugins/NewBlog/MIT-LICENSE b/lib/NewBlog/NewBlog/MIT-LICENSE similarity index 100% rename from vendor/plugins/NewBlog/MIT-LICENSE rename to lib/NewBlog/NewBlog/MIT-LICENSE diff --git a/vendor/plugins/NewBlog/NewBlog.gemspec b/lib/NewBlog/NewBlog/NewBlog.gemspec similarity index 100% rename from vendor/plugins/NewBlog/NewBlog.gemspec rename to lib/NewBlog/NewBlog/NewBlog.gemspec diff --git a/lib/NewBlog/NewBlog/NewBlog.json b/lib/NewBlog/NewBlog/NewBlog.json new file mode 100755 index 00000000..0197b9d0 --- /dev/null +++ b/lib/NewBlog/NewBlog/NewBlog.json @@ -0,0 +1,9 @@ +{ + "name_of_app": "NewBlog", + "version": "0.1", + "organization": "Rulingcom", + "author": "RD dep", + "intro": "A simple blog……", + "update_info": "Some info", + "create_date": "11-11-2011" +} \ No newline at end of file diff --git a/vendor/plugins/NewBlog/README.rdoc b/lib/NewBlog/NewBlog/README.rdoc similarity index 100% rename from vendor/plugins/NewBlog/README.rdoc rename to lib/NewBlog/NewBlog/README.rdoc diff --git a/vendor/plugins/NewBlog/Rakefile b/lib/NewBlog/NewBlog/Rakefile similarity index 100% rename from vendor/plugins/NewBlog/Rakefile rename to lib/NewBlog/NewBlog/Rakefile diff --git a/vendor/plugins/NewBlog/app/assets/images/NewBlog/.gitkeep b/lib/NewBlog/NewBlog/app/assets/images/NewBlog/.gitkeep similarity index 100% rename from vendor/plugins/NewBlog/app/assets/images/NewBlog/.gitkeep rename to lib/NewBlog/NewBlog/app/assets/images/NewBlog/.gitkeep diff --git a/vendor/plugins/NewBlog/app/assets/javascripts/NewBlog/.gitkeep b/lib/NewBlog/NewBlog/app/assets/javascripts/NewBlog/.gitkeep similarity index 100% rename from vendor/plugins/NewBlog/app/assets/javascripts/NewBlog/.gitkeep rename to lib/NewBlog/NewBlog/app/assets/javascripts/NewBlog/.gitkeep diff --git a/vendor/plugins/NewBlog/app/assets/stylesheets/NewBlog/.gitkeep b/lib/NewBlog/NewBlog/app/assets/stylesheets/NewBlog/.gitkeep similarity index 100% rename from vendor/plugins/NewBlog/app/assets/stylesheets/NewBlog/.gitkeep rename to lib/NewBlog/NewBlog/app/assets/stylesheets/NewBlog/.gitkeep diff --git a/vendor/plugins/NewBlog/app/assets/stylesheets/NewBlog/application.css b/lib/NewBlog/NewBlog/app/assets/stylesheets/NewBlog/application.css similarity index 100% rename from vendor/plugins/NewBlog/app/assets/stylesheets/NewBlog/application.css rename to lib/NewBlog/NewBlog/app/assets/stylesheets/NewBlog/application.css diff --git a/vendor/plugins/NewBlog/app/assets/stylesheets/NewBlog/production.css b/lib/NewBlog/NewBlog/app/assets/stylesheets/NewBlog/production.css similarity index 100% rename from vendor/plugins/NewBlog/app/assets/stylesheets/NewBlog/production.css rename to lib/NewBlog/NewBlog/app/assets/stylesheets/NewBlog/production.css diff --git a/vendor/plugins/NewBlog/app/controllers/.gitkeep b/lib/NewBlog/NewBlog/app/controllers/.gitkeep similarity index 100% rename from vendor/plugins/NewBlog/app/controllers/.gitkeep rename to lib/NewBlog/NewBlog/app/controllers/.gitkeep diff --git a/vendor/plugins/NewBlog/app/controllers/application_controller.rb b/lib/NewBlog/NewBlog/app/controllers/application_controller.rb similarity index 100% rename from vendor/plugins/NewBlog/app/controllers/application_controller.rb rename to lib/NewBlog/NewBlog/app/controllers/application_controller.rb diff --git a/vendor/plugins/NewBlog/app/controllers/panel/blog/comments_controller.rb b/lib/NewBlog/NewBlog/app/controllers/panel/blog/comments_controller.rb similarity index 100% rename from vendor/plugins/NewBlog/app/controllers/panel/blog/comments_controller.rb rename to lib/NewBlog/NewBlog/app/controllers/panel/blog/comments_controller.rb diff --git a/vendor/plugins/NewBlog/app/controllers/panel/blog/posts_controller.rb b/lib/NewBlog/NewBlog/app/controllers/panel/blog/posts_controller.rb similarity index 100% rename from vendor/plugins/NewBlog/app/controllers/panel/blog/posts_controller.rb rename to lib/NewBlog/NewBlog/app/controllers/panel/blog/posts_controller.rb diff --git a/vendor/plugins/NewBlog/app/helpers/.gitkeep b/lib/NewBlog/NewBlog/app/helpers/.gitkeep similarity index 100% rename from vendor/plugins/NewBlog/app/helpers/.gitkeep rename to lib/NewBlog/NewBlog/app/helpers/.gitkeep diff --git a/vendor/plugins/NewBlog/app/helpers/application_helper.rb b/lib/NewBlog/NewBlog/app/helpers/application_helper.rb similarity index 100% rename from vendor/plugins/NewBlog/app/helpers/application_helper.rb rename to lib/NewBlog/NewBlog/app/helpers/application_helper.rb diff --git a/vendor/plugins/NewBlog/app/mailers/.gitkeep b/lib/NewBlog/NewBlog/app/mailers/.gitkeep similarity index 100% rename from vendor/plugins/NewBlog/app/mailers/.gitkeep rename to lib/NewBlog/NewBlog/app/mailers/.gitkeep diff --git a/vendor/plugins/NewBlog/app/models/.gitkeep b/lib/NewBlog/NewBlog/app/models/.gitkeep similarity index 100% rename from vendor/plugins/NewBlog/app/models/.gitkeep rename to lib/NewBlog/NewBlog/app/models/.gitkeep diff --git a/vendor/plugins/NewBlog/app/models/comment.rb b/lib/NewBlog/NewBlog/app/models/comment.rb similarity index 100% rename from vendor/plugins/NewBlog/app/models/comment.rb rename to lib/NewBlog/NewBlog/app/models/comment.rb diff --git a/vendor/plugins/NewBlog/app/models/post.rb b/lib/NewBlog/NewBlog/app/models/post.rb similarity index 100% rename from vendor/plugins/NewBlog/app/models/post.rb rename to lib/NewBlog/NewBlog/app/models/post.rb diff --git a/vendor/plugins/NewBlog/app/views/.gitkeep b/lib/NewBlog/NewBlog/app/views/.gitkeep similarity index 100% rename from vendor/plugins/NewBlog/app/views/.gitkeep rename to lib/NewBlog/NewBlog/app/views/.gitkeep diff --git a/vendor/plugins/NewBlog/app/views/layouts/application.html.erb b/lib/NewBlog/NewBlog/app/views/layouts/application.html.erb similarity index 100% rename from vendor/plugins/NewBlog/app/views/layouts/application.html.erb rename to lib/NewBlog/NewBlog/app/views/layouts/application.html.erb diff --git a/vendor/plugins/NewBlog/app/views/layouts/edit_view.html.erb b/lib/NewBlog/NewBlog/app/views/layouts/edit_view.html.erb similarity index 100% rename from vendor/plugins/NewBlog/app/views/layouts/edit_view.html.erb rename to lib/NewBlog/NewBlog/app/views/layouts/edit_view.html.erb diff --git a/vendor/plugins/NewBlog/app/views/layouts/production.html.erb b/lib/NewBlog/NewBlog/app/views/layouts/production.html.erb similarity index 100% rename from vendor/plugins/NewBlog/app/views/layouts/production.html.erb rename to lib/NewBlog/NewBlog/app/views/layouts/production.html.erb diff --git a/vendor/plugins/NewBlog/app/views/panel/blog/posts/_form.html.erb b/lib/NewBlog/NewBlog/app/views/panel/blog/posts/_form.html.erb similarity index 100% rename from vendor/plugins/NewBlog/app/views/panel/blog/posts/_form.html.erb rename to lib/NewBlog/NewBlog/app/views/panel/blog/posts/_form.html.erb diff --git a/vendor/plugins/NewBlog/app/views/panel/blog/posts/edit.html.erb b/lib/NewBlog/NewBlog/app/views/panel/blog/posts/edit.html.erb similarity index 100% rename from vendor/plugins/NewBlog/app/views/panel/blog/posts/edit.html.erb rename to lib/NewBlog/NewBlog/app/views/panel/blog/posts/edit.html.erb diff --git a/vendor/plugins/NewBlog/app/views/panel/blog/posts/index.html.erb b/lib/NewBlog/NewBlog/app/views/panel/blog/posts/index.html.erb similarity index 100% rename from vendor/plugins/NewBlog/app/views/panel/blog/posts/index.html.erb rename to lib/NewBlog/NewBlog/app/views/panel/blog/posts/index.html.erb diff --git a/vendor/plugins/NewBlog/app/views/panel/blog/posts/latest_post.html.erb b/lib/NewBlog/NewBlog/app/views/panel/blog/posts/latest_post.html.erb similarity index 100% rename from vendor/plugins/NewBlog/app/views/panel/blog/posts/latest_post.html.erb rename to lib/NewBlog/NewBlog/app/views/panel/blog/posts/latest_post.html.erb diff --git a/vendor/plugins/NewBlog/app/views/panel/blog/posts/new.html.erb b/lib/NewBlog/NewBlog/app/views/panel/blog/posts/new.html.erb similarity index 100% rename from vendor/plugins/NewBlog/app/views/panel/blog/posts/new.html.erb rename to lib/NewBlog/NewBlog/app/views/panel/blog/posts/new.html.erb diff --git a/vendor/plugins/NewBlog/app/views/panel/blog/posts/show.html.erb b/lib/NewBlog/NewBlog/app/views/panel/blog/posts/show.html.erb similarity index 100% rename from vendor/plugins/NewBlog/app/views/panel/blog/posts/show.html.erb rename to lib/NewBlog/NewBlog/app/views/panel/blog/posts/show.html.erb diff --git a/vendor/plugins/NewBlog/app/views/panel/blog/posts/widget_index.html.erb b/lib/NewBlog/NewBlog/app/views/panel/blog/posts/widget_index.html.erb similarity index 100% rename from vendor/plugins/NewBlog/app/views/panel/blog/posts/widget_index.html.erb rename to lib/NewBlog/NewBlog/app/views/panel/blog/posts/widget_index.html.erb diff --git a/vendor/plugins/NewBlog/app/views/panel/blog/posts/widget_latest_post.html.erb b/lib/NewBlog/NewBlog/app/views/panel/blog/posts/widget_latest_post.html.erb similarity index 100% rename from vendor/plugins/NewBlog/app/views/panel/blog/posts/widget_latest_post.html.erb rename to lib/NewBlog/NewBlog/app/views/panel/blog/posts/widget_latest_post.html.erb diff --git a/vendor/plugins/NewBlog/config/routes.rb b/lib/NewBlog/NewBlog/config/routes.rb similarity index 100% rename from vendor/plugins/NewBlog/config/routes.rb rename to lib/NewBlog/NewBlog/config/routes.rb diff --git a/vendor/plugins/NewBlog/lib/NewBlog.rb b/lib/NewBlog/NewBlog/lib/NewBlog.rb similarity index 100% rename from vendor/plugins/NewBlog/lib/NewBlog.rb rename to lib/NewBlog/NewBlog/lib/NewBlog.rb diff --git a/vendor/plugins/NewBlog/lib/NewBlog/engine.rb b/lib/NewBlog/NewBlog/lib/NewBlog/engine.rb similarity index 100% rename from vendor/plugins/NewBlog/lib/NewBlog/engine.rb rename to lib/NewBlog/NewBlog/lib/NewBlog/engine.rb diff --git a/vendor/plugins/NewBlog/lib/NewBlog/version.rb b/lib/NewBlog/NewBlog/lib/NewBlog/version.rb similarity index 100% rename from vendor/plugins/NewBlog/lib/NewBlog/version.rb rename to lib/NewBlog/NewBlog/lib/NewBlog/version.rb diff --git a/vendor/plugins/NewBlog/lib/tasks/NewBlog_tasks.rake b/lib/NewBlog/NewBlog/lib/tasks/NewBlog_tasks.rake similarity index 100% rename from vendor/plugins/NewBlog/lib/tasks/NewBlog_tasks.rake rename to lib/NewBlog/NewBlog/lib/tasks/NewBlog_tasks.rake diff --git a/vendor/plugins/NewBlog/script/rails b/lib/NewBlog/NewBlog/script/rails similarity index 100% rename from vendor/plugins/NewBlog/script/rails rename to lib/NewBlog/NewBlog/script/rails diff --git a/vendor/plugins/NewBlog/test/NewBlog_test.rb b/lib/NewBlog/NewBlog/test/NewBlog_test.rb similarity index 100% rename from vendor/plugins/NewBlog/test/NewBlog_test.rb rename to lib/NewBlog/NewBlog/test/NewBlog_test.rb diff --git a/vendor/plugins/NewBlog/test/dummy/Rakefile b/lib/NewBlog/NewBlog/test/dummy/Rakefile similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/Rakefile rename to lib/NewBlog/NewBlog/test/dummy/Rakefile diff --git a/vendor/plugins/NewBlog/test/dummy/app/assets/javascripts/application.js b/lib/NewBlog/NewBlog/test/dummy/app/assets/javascripts/application.js similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/app/assets/javascripts/application.js rename to lib/NewBlog/NewBlog/test/dummy/app/assets/javascripts/application.js diff --git a/vendor/plugins/NewBlog/test/dummy/app/assets/stylesheets/application.css b/lib/NewBlog/NewBlog/test/dummy/app/assets/stylesheets/application.css similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/app/assets/stylesheets/application.css rename to lib/NewBlog/NewBlog/test/dummy/app/assets/stylesheets/application.css diff --git a/vendor/plugins/NewBlog/test/dummy/app/controllers/application_controller.rb b/lib/NewBlog/NewBlog/test/dummy/app/controllers/application_controller.rb similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/app/controllers/application_controller.rb rename to lib/NewBlog/NewBlog/test/dummy/app/controllers/application_controller.rb diff --git a/vendor/plugins/NewBlog/test/dummy/app/helpers/application_helper.rb b/lib/NewBlog/NewBlog/test/dummy/app/helpers/application_helper.rb similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/app/helpers/application_helper.rb rename to lib/NewBlog/NewBlog/test/dummy/app/helpers/application_helper.rb diff --git a/vendor/plugins/NewBlog/test/dummy/app/mailers/.gitkeep b/lib/NewBlog/NewBlog/test/dummy/app/mailers/.gitkeep similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/app/mailers/.gitkeep rename to lib/NewBlog/NewBlog/test/dummy/app/mailers/.gitkeep diff --git a/vendor/plugins/NewBlog/test/dummy/app/models/.gitkeep b/lib/NewBlog/NewBlog/test/dummy/app/models/.gitkeep similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/app/models/.gitkeep rename to lib/NewBlog/NewBlog/test/dummy/app/models/.gitkeep diff --git a/vendor/plugins/NewBlog/test/dummy/app/views/layouts/application.html.erb b/lib/NewBlog/NewBlog/test/dummy/app/views/layouts/application.html.erb similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/app/views/layouts/application.html.erb rename to lib/NewBlog/NewBlog/test/dummy/app/views/layouts/application.html.erb diff --git a/vendor/plugins/NewBlog/test/dummy/config.ru b/lib/NewBlog/NewBlog/test/dummy/config.ru similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/config.ru rename to lib/NewBlog/NewBlog/test/dummy/config.ru diff --git a/vendor/plugins/NewBlog/test/dummy/config/application.rb b/lib/NewBlog/NewBlog/test/dummy/config/application.rb similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/config/application.rb rename to lib/NewBlog/NewBlog/test/dummy/config/application.rb diff --git a/vendor/plugins/NewBlog/test/dummy/config/boot.rb b/lib/NewBlog/NewBlog/test/dummy/config/boot.rb similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/config/boot.rb rename to lib/NewBlog/NewBlog/test/dummy/config/boot.rb diff --git a/vendor/plugins/NewBlog/test/dummy/config/database.yml b/lib/NewBlog/NewBlog/test/dummy/config/database.yml similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/config/database.yml rename to lib/NewBlog/NewBlog/test/dummy/config/database.yml diff --git a/vendor/plugins/NewBlog/test/dummy/config/environment.rb b/lib/NewBlog/NewBlog/test/dummy/config/environment.rb similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/config/environment.rb rename to lib/NewBlog/NewBlog/test/dummy/config/environment.rb diff --git a/vendor/plugins/NewBlog/test/dummy/config/environments/development.rb b/lib/NewBlog/NewBlog/test/dummy/config/environments/development.rb similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/config/environments/development.rb rename to lib/NewBlog/NewBlog/test/dummy/config/environments/development.rb diff --git a/vendor/plugins/NewBlog/test/dummy/config/environments/production.rb b/lib/NewBlog/NewBlog/test/dummy/config/environments/production.rb similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/config/environments/production.rb rename to lib/NewBlog/NewBlog/test/dummy/config/environments/production.rb diff --git a/vendor/plugins/NewBlog/test/dummy/config/environments/test.rb b/lib/NewBlog/NewBlog/test/dummy/config/environments/test.rb similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/config/environments/test.rb rename to lib/NewBlog/NewBlog/test/dummy/config/environments/test.rb diff --git a/vendor/plugins/NewBlog/test/dummy/config/initializers/backtrace_silencers.rb b/lib/NewBlog/NewBlog/test/dummy/config/initializers/backtrace_silencers.rb similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/config/initializers/backtrace_silencers.rb rename to lib/NewBlog/NewBlog/test/dummy/config/initializers/backtrace_silencers.rb diff --git a/vendor/plugins/NewBlog/test/dummy/config/initializers/inflections.rb b/lib/NewBlog/NewBlog/test/dummy/config/initializers/inflections.rb similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/config/initializers/inflections.rb rename to lib/NewBlog/NewBlog/test/dummy/config/initializers/inflections.rb diff --git a/vendor/plugins/NewBlog/test/dummy/config/initializers/mime_types.rb b/lib/NewBlog/NewBlog/test/dummy/config/initializers/mime_types.rb similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/config/initializers/mime_types.rb rename to lib/NewBlog/NewBlog/test/dummy/config/initializers/mime_types.rb diff --git a/vendor/plugins/NewBlog/test/dummy/config/initializers/secret_token.rb b/lib/NewBlog/NewBlog/test/dummy/config/initializers/secret_token.rb similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/config/initializers/secret_token.rb rename to lib/NewBlog/NewBlog/test/dummy/config/initializers/secret_token.rb diff --git a/vendor/plugins/NewBlog/test/dummy/config/initializers/session_store.rb b/lib/NewBlog/NewBlog/test/dummy/config/initializers/session_store.rb similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/config/initializers/session_store.rb rename to lib/NewBlog/NewBlog/test/dummy/config/initializers/session_store.rb diff --git a/vendor/plugins/NewBlog/test/dummy/config/initializers/wrap_parameters.rb b/lib/NewBlog/NewBlog/test/dummy/config/initializers/wrap_parameters.rb similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/config/initializers/wrap_parameters.rb rename to lib/NewBlog/NewBlog/test/dummy/config/initializers/wrap_parameters.rb diff --git a/vendor/plugins/NewBlog/test/dummy/config/locales/en.yml b/lib/NewBlog/NewBlog/test/dummy/config/locales/en.yml similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/config/locales/en.yml rename to lib/NewBlog/NewBlog/test/dummy/config/locales/en.yml diff --git a/vendor/plugins/NewBlog/test/dummy/config/mongoid.yml b/lib/NewBlog/NewBlog/test/dummy/config/mongoid.yml similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/config/mongoid.yml rename to lib/NewBlog/NewBlog/test/dummy/config/mongoid.yml diff --git a/vendor/plugins/NewBlog/test/dummy/config/routes.rb b/lib/NewBlog/NewBlog/test/dummy/config/routes.rb similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/config/routes.rb rename to lib/NewBlog/NewBlog/test/dummy/config/routes.rb diff --git a/vendor/plugins/NewBlog/test/dummy/lib/assets/.gitkeep b/lib/NewBlog/NewBlog/test/dummy/lib/assets/.gitkeep similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/lib/assets/.gitkeep rename to lib/NewBlog/NewBlog/test/dummy/lib/assets/.gitkeep diff --git a/vendor/plugins/NewBlog/test/dummy/log/.gitkeep b/lib/NewBlog/NewBlog/test/dummy/log/.gitkeep similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/log/.gitkeep rename to lib/NewBlog/NewBlog/test/dummy/log/.gitkeep diff --git a/vendor/plugins/NewBlog/test/dummy/public/404.html b/lib/NewBlog/NewBlog/test/dummy/public/404.html similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/public/404.html rename to lib/NewBlog/NewBlog/test/dummy/public/404.html diff --git a/vendor/plugins/NewBlog/test/dummy/public/422.html b/lib/NewBlog/NewBlog/test/dummy/public/422.html similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/public/422.html rename to lib/NewBlog/NewBlog/test/dummy/public/422.html diff --git a/vendor/plugins/NewBlog/test/dummy/public/500.html b/lib/NewBlog/NewBlog/test/dummy/public/500.html similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/public/500.html rename to lib/NewBlog/NewBlog/test/dummy/public/500.html diff --git a/vendor/plugins/NewBlog/test/dummy/public/favicon.ico b/lib/NewBlog/NewBlog/test/dummy/public/favicon.ico similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/public/favicon.ico rename to lib/NewBlog/NewBlog/test/dummy/public/favicon.ico diff --git a/vendor/plugins/NewBlog/test/dummy/script/rails b/lib/NewBlog/NewBlog/test/dummy/script/rails similarity index 100% rename from vendor/plugins/NewBlog/test/dummy/script/rails rename to lib/NewBlog/NewBlog/test/dummy/script/rails diff --git a/vendor/plugins/NewBlog/test/integration/navigation_test.rb b/lib/NewBlog/NewBlog/test/integration/navigation_test.rb similarity index 100% rename from vendor/plugins/NewBlog/test/integration/navigation_test.rb rename to lib/NewBlog/NewBlog/test/integration/navigation_test.rb diff --git a/vendor/plugins/NewBlog/test/test_helper.rb b/lib/NewBlog/NewBlog/test/test_helper.rb similarity index 100% rename from vendor/plugins/NewBlog/test/test_helper.rb rename to lib/NewBlog/NewBlog/test/test_helper.rb diff --git a/vendor/plugins/new_blog_old_bak.tar.bz2 b/vendor/plugins/new_blog_old_bak.tar.bz2 deleted file mode 100644 index 516f1e4730b0d8c314b0d5270ead9125037954a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10337 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 From 5c3ae104f02a55fdba1c2d7ff8ed600f964677f8 Mon Sep 17 00:00:00 2001 From: Matthew Fu Date: Wed, 16 Nov 2011 17:01:44 +0800 Subject: [PATCH 2/2] Add log info for asking restart after app module installed --- app/controllers/admin/purchases_controller.rb | 52 +++++-------------- 1 file changed, 13 insertions(+), 39 deletions(-) diff --git a/app/controllers/admin/purchases_controller.rb b/app/controllers/admin/purchases_controller.rb index 99ab4124..d6431ebe 100644 --- a/app/controllers/admin/purchases_controller.rb +++ b/app/controllers/admin/purchases_controller.rb @@ -89,53 +89,27 @@ class Admin::PurchasesController < ApplicationController destination = "#{Rails.root}/vendor/plugins" Zip::ZipFile.open(file) do |zip_file| - # encrypted = {} - # ['encrypted_data', 'encrypted_key', 'encrypted_iv'].each do |e| - # encrypted.merge!(e => zip_file.read(e)) - # end - # orig_file = decrypt_data(encrypted['encrypted_data'], encrypted['encrypted_key'], encrypted['encrypted_iv']) orig_file = file temp_file = Tempfile.new("temp_file_zip") - # debugger temp_file.binmode temp_file.write orig_file temp_file.rewind + + app = AppModule.new.from_json(zip_file.read("#{zip_name}/#{zip_name}/#{zip_name}.json")) + zip_file.each do |f| + if (f.to_s=~/^#{zip_name}\/#{zip_name}\/*/) + f_path=File.join(destination, f.name.gsub(/^#{zip_name}\//, '')) + FileUtils.mkdir_p(File.dirname(f_path)) + zip_file.extract(f, f_path) unless File.exist?(f_path) + end + end + log = Logger.new(STDOUT) + log.level = Logger::WARN + log.warn("App unzip procress is finished,please restart the server to apply effect") - # Zip::ZipFile.open(temp_file) { |orig_zip| - app = AppModule.new.from_json(zip_file.read("#{zip_name}/#{zip_name}/#{zip_name}.json")) - - zip_file.each { |f| - - if (f.to_s=~/^#{zip_name}\/#{zip_name}\/*/) - # debugger - f_path=File.join(destination, f.name.gsub(/^#{zip_name}\//, '')) - FileUtils.mkdir_p(File.dirname(f_path)) - zip_file.extract(f, f_path) unless File.exist?(f_path) - end - } - - # unzip_file(file, "#{Rails.root}/vendor/plugins") - - # Dir.mktmpdir('f_path') { |dir| - # - # build_file(orig_zip, zip_name, dir) - - # build_file(orig_zip, zip_name, dir, design.default_css) if design.default_css - # build_file(orig_zip, zip_name, dir, design.reset_css) if design.reset_css - - # ['themes', 'javascripts', 'images'].each do |type| - # design.send(type).each do |object| - # build_file(orig_zip, zip_name, dir, object, type) - # end - # end - # } - # temp_file.close - # temp_file.unlink - # # design.save - # } - + #TODO Perform touch tmp/restart to restart in production env end end