diff --git a/.gitignore b/.gitignore index 2e145c0..703311f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ .rscons* -/i686-elf-gcc/ +/x86_64-elf-gcc/ /build/ diff --git a/Rsconscript b/Rsconscript index 8934915..311dec6 100644 --- a/Rsconscript +++ b/Rsconscript @@ -1,98 +1,29 @@ -path_prepend "i686-elf-gcc/bin" +project_name "HOS" +path_prepend "x86_64-elf-gcc/bin" configure do - rscons "i686-elf-gcc.rb", "-b", "#{build_dir}/i686-elf-gcc" - check_c_compiler "i686-elf-gcc" - check_program "genext2fs" - check_program "grub-mkstandalone" + rscons "x86_64-elf-gcc.rb", "-b", "#{build_dir}/x86_64-elf-gcc" + check_program "ldc2" + check_program "x86_64-w64-mingw32-gcc" + check_program "x86_64-elf-gcc" + check_c_compiler check_program "mformat", on_fail: "Install the mtools package" - check_program "xorriso" check_cfg package: "freetype2", on_fail: "Install libfreetype-dev", use: "freetype" + sh %w[git submodule update --init] end -require "tmpdir" - -# EFI (w/ GRUB) partition size (MiB) -EFI_PART_SIZE = 8 -# HOS partition size (MiB) -HOS_PART_SIZE = 4 -# Kernel default font size +# Kernel default font size. KFONT_SIZE = 15 -class BiosImage < Builder +class Image < Builder def run(options) unless @cache.up_to_date?(@target, nil, @sources, @env) - print_run_message("Generating BIOS boot image #{@target}", nil) - Dir.mktmpdir do |tmpdir| - # Create iso directory. - FileUtils.mkdir_p("#{tmpdir}/iso/boot/grub") - File.open("#{tmpdir}/iso/boot/grub/grub.cfg", "wb") do |fh| - fh.write(<#{@target}", nil) + File.binwrite(@target, "\0" * (1440 * 1024)) + system(*%W[mformat -i #{@target} -f 1440 ::]) + system(*%W[mmd -i #{@target} ::/EFI]) + system(*%W[mmd -i #{@target} ::/EFI/BOOT]) + system(*%W[mcopy -i #{@target} #{@sources.first} ::/EFI/BOOT]) @cache.register_build(@target, nil, @sources, @env) end true @@ -112,55 +43,33 @@ class FontGen < Builder end end -class Size < Builder - def run(options) - if @command - finalize_command - else - @vars["_SOURCES"] = @sources - @vars["_TARGET"] = @target - command = @env.build_command(%w[${SIZE} ${_SOURCES}], @vars) - standard_command("Size #{@target}", command, stdout: @target) - end - end -end - # FontGen Environment fontgen_env = env "fontgen", use: "freetype" do |env| - env["CC"] = "gcc" - env.Program("^/fontgen.bin", glob("fontgen/**/*.c")) + env.Program("^/fontgen", glob("src/fontgen/**/*.c")) end -# Kernel Environment -kernel_env = env "kernel" do |env| - env.add_builder(EfiImage) - env.add_builder(BiosImage) - env.add_builder(FontGen) - env.add_builder(Size) - env["OBJDUMP"] = "i686-elf-objdump" - env["SIZE"] = "i686-elf-size" - env["CCFLAGS"] += %w[-ffreestanding -Wall -O2] - env["LDFLAGS"] += %w[-ffreestanding -nostdlib -T src/link.ld] - env["LDFLAGS"] += %W[-Wl,-Map,${_TARGET}.map] - env["LIBS"] += %w[gcc] - env.FontGen("^/kfont/kfont.c", "font/Hack-Regular.ttf", - "fontgen" => fontgen_env.expand("^/fontgen.bin")) - env.barrier - env["CPPPATH"] += ["#{env.build_root}/kfont"] - env.Program("^/hos.elf", glob("src/**/*.{S,c}") + ["^/kfont/kfont.c"]) - env.depends("#{env.build_root}/hos.elf", "src/link.ld") - env.Disassemble("^/hos.elf.txt", "^/hos.elf") - env.Size("^/hos.elf.size", "^/hos.elf") - env.EfiImage("^/hos-efi.img", %w[^/hos.elf]) - env.BiosImage("^/hos.img", %w[^/hos.elf]) -end +## Kernel Environment +#kernel_env = env "kernel" do |env| +# env.add_builder(Image) +# env.add_builder(FontGen) +# env["OBJDUMP"] = "x86_64-elf-objdump" +# env["SIZE"] = "x86_64-elf-size" +# env["CCFLAGS"] += %w[-ffreestanding -Wall -O2] +# env["LDFLAGS"] += %w[-ffreestanding -nostdlib -T src/link.ld] +# env["LDFLAGS"] += %W[-Wl,-Map,${_TARGET}.map] +# env["LIBS"] += %w[gcc] +# env.FontGen("^/kfont/kfont.c", "font/Hack-Regular.ttf", +# "fontgen" => fontgen_env.expand("^/fontgen")) +# env.barrier +# env["CPPPATH"] += ["#{env.build_root}/kfont"] +# env.Program("^/hos.elf", glob("src/**/*.{S,c}") + ["^/kfont/kfont.c"]) +# env.depends("#{env.build_root}/hos.elf", "src/link.ld") +# env.Disassemble("^/hos.elf.txt", "^/hos.elf") +# env.Size("^/hos.elf.size", "^/hos.elf") +# env.Image("^/hos.img", %w[^/hos.elf]) +#end task "run", desc: "Run HOS in QEMU" do img = kernel_env.expand("^/hos.img") - sh %W[qemu-system-x86_64 -hda #{img}] -end - -task "run-efi", desc: "Run HOS EFI in QEMU" do - img = kernel_env.expand("^/hos-efi.img") sh %W[qemu-system-x86_64 -bios OVMF.fd -hda #{img}] end diff --git a/rscons b/rscons index 6a79b5d..b28bb98 100755 --- a/rscons +++ b/rscons @@ -1,9 +1,9 @@ #!/usr/bin/env ruby # Copyright (c) 2013-2022 Josh Holtrop -# +# # MIT License -# +# # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including @@ -11,10 +11,10 @@ # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: -# +# # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. -# +# # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -24,7 +24,7 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -script = File.join(File.dirname(__FILE__), ".rscons-3.0.0-077c0388ca4d1d902141299abcc4b8f6.rb") +script = File.join(File.dirname(__FILE__), ".rscons-3.0.1-13a1b3c9a72a5509fb3c3f5fd576e58b.rb") unless File.exists?(script) if File.read(__FILE__, mode: "rb") =~ /^#==>(.*)/ require "zlib" @@ -43,4 +43,4 @@ load script if __FILE__ == $0 Rscons::Cli.new.run(ARGV) end -#==>eJztfWt3G0eO6Pf8inbbiUmZouzMndlzGCuSLMmJ9sqWryRnPUszHIpsSj0mu7ndpGStzP3tt4B6AVXVTcqP3Oye6zkTseuJQqFQKBQKePhga1EWWxdptpVk11GxuLj9rkj+Y5EWSRRnyXzraj6fxTZplF4m5Tz+bpqPFpMkOi2HeVZ+F0Xqey8rU/EVRcPJoCyj58+jMpmMMSWKTg/PDs+j7Sh+n3SfTmOVOkrG0U2RzpNGmreijWlSloPLpKlyRX7eH+aTvBAVZW/twWw2SYeDeZpnbZE7EH3KIqZOOjbV2lk62TEZrDlVd0d0bLtLspH5nS/mAG4capc0OVwURZLNLZgwTtplUgrcjSrz1ZDbyWB4JdqPPk0/kVzsddpOy/5gp3E2L9Lsssmyo2iSZkkpGp62S4GZeSN+n8WtaPNZsBx2079J51f9NBslH7FHyGlF6SenAvYNedEDhgeWz4cvCrLxBupIxD5Zp6CL2lU16Ox53cFAvNxQDTGoNHqu0FWm/5lEm9GzNQfvTq4HRXWBVXS01iBh7tcYpJuSTEoXN8NBmURTJ/HmKsmijpiCn2iqS+G4wn/6y7OpC4qsflkkSfbTyuo/VlS/TSaT/OanVdX/UlH9YrJIKPQV1f9XRfWpWKrZfPDTiup/rag+vB1ka/T+t4rqN1eCU65G3b9UjT2fjOjkhao/q544qE4nr6J61cRBdTp5FdUrJ05Up5NXUb1q4qA6nbyK6lUTB9Xp5FVUr5o4qE4nr6J63cStIpuqWSuSMpnX0EyIz3j8gX3zr/XYYAX7o005TOiL90XV5XTNkdDfad6WQoloQzdr82dFej2Ya1hBggnKEgLA07cv/t5/c7x3/vLk9FW0/V/R1lQAevNpWt6WWwSOxuHr37rx+eHpq7gXbYv5/DhPimncjH74Ifr+pjtOx3k0vBoUg6FIP5slw3Qw6bXTbDhZjBLotV3OB/P2eH47I7KTg1BRaj6/3QkMWP+Sf+G/8H8j9Qn68UU+KeLtWWEMWxjM50W/SAajpIg6Atr0OulfD4p0kM1LW2AwHIrJFaTSuVikk1F/lBahTF+6cwpk/fkVdFb6fZfDIp3NQ5XKdCJpNRunl4siCZW5ToqLXCEP5lfISulc4FwIAwplu24zYiXNi4XJNgMT6Ti5p2f7J6/P+i/eHh0f9A+OTsVEf/oUxVhOL1xRsD1KJokgPL+8ntddM2rR9Nt5OhFVgFqEuNLnCBFlFe77l0W+mEGFbo/MtBzcfFB+6Ccfk+ECprE/uxI7v6aS3VCm10KxyBoFEgZivYVNipWZjfozQbTTshWVV/lNH5Nb0WAy0T+TbHAxEcxI04ge5L5Y9IkgcEHW2TDpxuNBOkGeNZ2KVktYJXooAki3FZHpJn1n1qRfGIRbWGkPXLDtCovNPMdsgQ8Bzn6gf3cAuj4ulf5oMB/EvW7sVox7ZL2GhhXur2ZJA6XipIjKZ/ijnSU3PKs9yQcjOoGW5UE/ARza2TRdY5KsLnMaZpotxopkviiy6KkHJBzqbrG0Qn3DnYtmHUXyxZeOPQJsJ9MZ5X0Ci0PRVZHDihf4vE6LPJsmFJeilXPRShub6saCzgeLyZzNEOSTnLZsVcKWhCaFMmQfRL3R4QizwVScyWTWJ7dPU2KNPs2vp966Dc/vIpsIpES7Jl3TG0WNT5zuGTH5KPi/mJgHjQAhi53w98b7J582m1t02w5QvFdZn3JbMa1ZwqY4Tnndu2VN2xbfHA1cyuB5FPCdRnuj+WgrVHqUlvC3FWn2C1Ml4Hn0rBU9+pHV8OHu0ko9w8p0o4jnTYZoLtLA+V6DC6MLDgvWsNezZXcqpdtBGFzByuQqlAKQ1eNQjfQ4oiYlsGIgkTUaHw/c8+l6YpxPwpxR2LJqFYX4Kl0wyORgL9JyQxQ5O1OA9Xt7V7hmUDOjMplyBrRsSjx9VM5HQkRt4Zm8FcUvsclI1YoaD+/S6En0bLn18M7tDRQby2YnbqkTQgt1B3aqVdPt2UIsJRQzVNX+PO+XDfXhCscUWcNJMsg0fgEnHm5opuCzxWUyLxs42U3KDSHdDl+WLpJpLmRLmdmQfyzwL8VYAeayXUz7YyebzDo2JYS0ZDjPizQxnQshcB7dfRq0ootP0YVUAj3f/jkaSLRZ4HTd2wr4TH7D/LJQZsnHuea2ALGB5HYnVFwsmMZBWrTFLoWw2iLRZtR93H7cih632497TXeziyKoVkxFBVpJTPtwkURZOqndNuR4kN68KRY8ab7+NJOCbIKKccPKy03WLdQpfMrC1col+CppReF3PXnMNDki+zzsdkpQGizmOZQhqHWhqD5XUdhrJA+z/aoyYtEG5ZNDm9jt0c3smrJ68dlWDVWwyHA3YUbJBuIMfJjDxOvEkxnImY1dLlBeJJdpZvtWWDUtCa6iSyrilMfNw6IAVcXPkUXyMBe0IY5oasVaCXOQCnHQZ/CfK4+HJJDvHBAAUU0PP4sMe5tMKEGvxwKxwS/jgB5vST6KtVrueAWRv8en0FiaXUYP72SBZQx0T8/B8O+z+aoc0f80turhztQNo+/bMWJFmg15ashnQNVSAtYDBS4WUsjAvwcP3Kz2WMggYqq08BhxYQ7OzPBDy9fsYAM9cb2DjzmWH2RMdgzqV3tESqo0Aw5C4+cSGVK3Mk7mw6tGRx3aWpFdvKzmh+Q2UEuktrArW8Md6mRQCixpPPbgElQ1UsNLdRsKXiOA92lfqyX7dByYJ9oUmQF1FPfE7VoStIJ4CHrEQGNDMIWyFf1wMcmHHwj1QbIgq6KcV2ht1SEJy5WTdJg8aDz1eYulC9sgaNLMWc/VedkJaE8Twa9wjXQiuVL0PHWibo/AirAbwPDLaJtC84dSu26r4Q29cuHJ3Spm1cU6z7J8LvZK8WsC4jxkp1k0EKlXScE7k8DFHppWL8L1+46y3CAKhptmySjQ4zwp+teXMDOTwfRiNEAalamqMqNUliP3AkGtLtClVbni5DqYFJ3xdsS5ZMYPlXz2KhphvJcfNh2Iuj7cPbLe7R5Wde6uXnEcj7wjcYzTB2r3KL3GUdifpW63xzXB9FLDyqkVoo9HWs6gZfonAolsZpgvQInCOQbFnixQgb51eBVT8aruto3CEf6peyW4NXtN6ForCMZC0tRMFsGjqpZ07IKObJbNh24fbuOFSBAqD9LfTOz+y2o1jlydRPxFcdozj6k/a9Ad4zNnrnKm6uj8Nk0mo4h3vArWNfTHUtwCBWjZ0ZhDdWgPJcugAhV+MrYDCe1RInsSuwLsHaYnV7b7vhuJKSzF2sjm40b8/eaP/1LGslG5NS9RYOYtLik9YKar4MVvquHlTEJsbP05CLGg6dt8eGeLL/kVrxgO5omDw4dE7KnFpcNLTEtAjNu0pfZiBhYeToPuva9BgouGvwIa4od3uoNljKiQ0FThYhVv0iff+n3rvhSs6eZ99htd1uGVGe2IRfs4nLd8HEedKI6XHYq0z1ogGqbIMgjdCUkw0isA1VBfTQVEFeuoX2Xr37OsdT1BGrLDI4k1JC/40mSRUKRoahZk715yyNa6thHOct3iZTLvk04aFZ2zmwdXwxxmwPHb7EOW32SyGbh3jdiq0owdtxGASPEHtXqb95w0fRUfvnx/MSjTIVEDmVm2t9WN0FEQVpBAkUgTK+IswRvBhmy70zk4fLn39vi8D7fP56dv98+PTl73f9s7Pdp7cXx4ppuAG8O+r0N5oPtj5SxByM1IkHH5wCPNbq8hjlcOjF04h3lFL8X8ivxA+baXxbvYbuARTkx/qCOUTCahRSM+G0gzpdthIJNtwR9nsIZE4SIZN+SflkidFwNIVLKnblSmMFHGlHRNWRUAdWIrwCfPPLaZkOwg5XXYP9BEIMmuO2i5i+cjcTaC//YIiO3wqEgzHBGCFAdlXyyXq3ykbT7MzUaHNWYQNwPw++PJ4LJs4H/JeQq/5V3cA+cWTmUJcSKZTBqPnvkHyOKa3gze5AVe2pxBefxQ94usz/JDOnPuoWTZ0J0N5LALG7hsEw2QyQm0B/9AcxWUaSWR8ZOVwBcSMmWhxTUcEsCyhJhH0IwnlsLdPq7EJEyS1X2gDDxBaoxQVp746h0gk4loCpHUxTsozrEVAoiK2QVHdxTBRRacSSs6kqjpIqTiv5PeaokDmwbQ0PRjc1AMrzwhvxZ61We8v//yeO+XMyEKdVUziK1euPTxwerSHAMhLMmbUwk9LICHd5rlxftv3gju/eb08OXROyGPeffTcoa7qtzR60OA5REZG20bMKPug78CcnRLXzpihKq8LYs8n38NsHRTa89bTY0vmruj1/trTdybvfNfa2bNafX46MXx0ev/vbplUbCOGPxmD45O12p1Bbwwn9Ms3xzeXt6kzHQ9MF9QhWE8MENOGa8v0csovylDPa3fykxa2X1bcAHnm/82aHnY1c3snelmHj0jRjF1rU2qW7NArd3arLo1QalrNwe2q8Ucd9GdRrzJhOTVaK1q58k921lzepJQBbl4vNKBI25x7UmIRNB5wKUOLctUikIo24Uy8MPrqb64lGVmg7TArV/LyVyMEUIhE7GVKn+vKAa3TdyqYZumiZQlitpSznbFEI5XW65KWgkdbUeLqRaxpOjbvxqUV9G2kYTnef/KL9AWHZWoP+pf3DZ+6IB1S5Md3pkyrF/OC6nA1LcYt9OLfNIUZ3RMk+e/CGVmUy9osQOvCVq6SWKFA/fcqATQEKLkZk6WxEgnhIV1D2ZSk7m+pSoU5jYR6gZNn2LgTzfu69TYWVmT2yBUtJHwKzzRk7mUW5Ts4I8E1mC5ZObEp6d7F2kMXqfBelh1ZW4Odx/1u6+JCfVD+0j1qmVYxiSCYXUGtSX9U0+qj7G8JZlGmqI8glQINij5EmsPk0hztghTBYm0Em//mJqOMkJaaF11tzzzOZZpmNgfTkf8XI3JAmwj05z9enh8zPYMgMQrAVtD3ASlcUM1IQQC0XoMSrqtISrnNoesnS4WbGF7lXuJetwKnQkJc55M+1grMPKjk/YsFxPT6G6YsbW0yV+vKW/dcsK28zYIK6t4RrWSxijZV+vXrbZbatjupwBEvh8rhToqzDpc+d2Tm6Guu5IstPrMvGQZp5NkAfYrlU+YX4ByIinKn1QTStMmU7Hp0NtmqekBFctsML/y1gpks+v3cjFLCi0WdeImWg1UzJDzNEXa3IRyynxRiN+hLDQdCWUk2XUoGRZssIt0lPST8VhsRDXPeQT5zgxx+bpIYskPQ7FWFl01OPOuQ42IllBJpoi2qjIFMIG8DLmmmeLTZCm+ZfKokmuXDhS0Q4l9NkFXDplUFI2QNtomlYknCTDTsrEhtpFCbJMziwew0dPZCimtyC3HRMZCEKvAQmODwmk4Hkmz64+k2jVHEvtSDYcm0giR/G6QIsToBQoUyWVawnUyKdIItUjqMbzCGgoUr+FU8NDIoSJlxnB+lZaR0jBOFyWaMOTXSVGko1GSRWA+IVbdBU5QHEBoms37ovW+umEVzB0kQnKTZVgsmzZZ8UKyB94A6k9XNcMGp/GpStTAEDbx0gbaNM/u1nYJoQRqdyKnmiggNyD1DUz3TlToeC0snZmK1sPjroPIm0E674/zorEv0/E6wgxU4tGBseljD8TX0aAYfTb2NFjwykr+0uupmguBHLBL+a40vJGWeosZmMoLmS7Zsct61w5MVmshIdklQq1uqYigLkeVnDC7yrNbZftpWqdCh4Jh+mGUFv1ZQ9tBAmsyxWl5x7LTa5EKtusQ6q6L67pDyzjNcIcwDYbm537TsKvtRRWouETXngYzCczIS9MpWGPZw7M8hdC0te7uJMuggoWzW2qmguXFfqC/tXmd+mS2ZruskkAV+3YLqfse+ukWwdZJGWsYx7ZBsWA37LWPCwcu6I1dPgBtJrgbGMg9ECh25uh59Ks4JlfisC/31iQbpjDPwS0T5LEGh55V0yhgiRXCgickUVQ9f64n1vQNUq9KUxbgzgVOsITYPC8I8dA+rBRW9otkOhAIyS5JW2JVgPjQeCoPC0VSoiVsQy8O1W7ZtIKCLBM9MXnUMC+0pOEgA9dZZm8UrBB2b2XiLqBLxdEFM8kJTxTCJMAiAIpWyNYE3oJmIQMJyRKotjDVzOJJ1AjMZteiGew+QTM0YA22B5PJjrRET5gpyYOKAdinc6ICHA9JHYX02hKMhnjRutOvtGhSSCOnMI4sgZ4Nr5DK9FBHD8lssqOfmRccm+eY6gbVefpZe/22ghbJlKqdkaJQpYF5KvWNFfMRNnbdzxcTeZuIlDUAgRLNanSv7ehNXpYppAzTYriYDIrIUM4tWnU8vEMoUG2IGFu6trAVh0/pPGtrOvprHDyRmrR/lnkWr3C/8Nvh6dnRyWswEftL+2n7aVzDKvfN6e/Nryev/96XFzdQtYMJyp6p6mDrPFURxKpTkE1J/aF9VB7iBp77BJvgG4LIN+6AGFUYhZd/5mnWCLgAMw/HWlHcVm/YoYE4ZP7BLEawWNjAhBqKWDshUkNqpgNCgn2w5slUdlzNdbAADfXRCrdcTPtYWetjdid5/kGIlzqXiPpMYDFPRQzssTgSlQJtqEpRNESxjIolC6jA6U0sd4nxleVY4yt8Ftr417OT123Quzdk8806IY+Kw2rREokcuC64g7gOC+dKyJLVVj2N6osZUoo78+1xnjp52hen13lJhTNKzlmj5GJx6aqXtQ0raj7MYyshQSWjUnBAzb/E8XU4WAiWlYI1tNjIgGdhx1GewbPLD/WGm4qXugYmVfYQ2vJSEYnCc9xrXw1KwN5OwyCSjnfFaO87VnjdIEYMg5UTOZJsWawTwXinuN6RBafzGsPp0MgDY73fxHuY6RqEwLNRtQ6l8x5ncf5hdCLmSnwmGXgKyi4F8hSlCIEUePVFguVFxXkE6sY/hIA4muRil1g6wN2w03l18Nf2VfJRbo762K9vu74tsZl38uJbCBK5pjaJSoXFL6A0ScN9JaHW4wYKxUogDTXQH8PR3biAkYnt6WAW3QkhdfgpGg27MZYRrVi3F1zvU6TDOVbs+RQuodwO9PltCRfmgYKmmgc2cJleJ5kU8kQhsFjNxxE7lRnWKJiD2BGg2KxIrtN8UYbKfznJ8yyFuoa2oUVtbbSp1cUNH5fNwCvSb4NUwUkH4v8CjK+MArrqtYoavZRc4+2VSdN8L0zTtGr9yjAlq5aHKeCtEZOzeqGoqSRg+a346+Eb8CRFttDppnGqws4gQgYpvxKHohQqzsrugImgJT6lMPUpyDr6agrrd0JSUM3AN94VHbTBC20PhGUVLr9wedhfQW2io5n8ZhKx/DZzQG7Bnd3BKiB6YNe7pnwUOU6f3GcUw8EETtHzpE4eogj0mUFQjsdbCdKEES7AfGY92aLFqmvChfoOzlhB5ERQyPCVgJooYrBhPUltqmLLzWXdB5ZNk9fgfq1GDEDLL6Gtxgq+3PwzDkE5zsCWHjwwJKqSe7asewNFF5h2pqFq2TM3foJjsgfcQYd/+imTCRhzGXO48NrqGniR6fFGBUSA4cYPHdQV+UoJfUMDhgPhlT4bFHNpBji/UjYDW933799v9bZYEWnAZ98hkBcI6BJDWuzMy24qfYzadVsuLqBx0YdVtWzIsk9bkTSm9k7O7CysWgjfKOkhBgppnBNfIWLFq4I9nCRv+mt4LbtwJ+5H7k0DDB6PDkZ9VYuoofum0XuTQJ0nF58oA5rUQGM1HlLCY1TNOqV1y+7r8BBPZs4qwPlt9Q7CijpqyScRKQOqeeM4g3tPNGVqaMBVsBGDEdRdoeNLJGQwkaIaOuOVxVyhsyOuMv6EeyfuMi0pCukyLf63QQH3Lh0hdNh2l9ENCBt5USxm8za4S5qDt6XO++zhnW7ZextuYL7zb9w9+kCdrHWGEZrrcJGQ3adTcj21o8v7qcbTa6ILuSjYByQFW5Prh2sKVndRpXKw0y81ntN8lHSiuLiILRHE1GSk/l5yn9gOMI/E9F6DZQzdGsTeaj6YL0LejaWFBrPecvKo0xmWL98uBJaItblQoN7TTmLXu1LSGRZcdntvUntOQc/3j2eT4rO9RWbWxrW+2aYd70Rd8tmLOvYkqRp1a2koSE1jEkNqqyz9eHJD99+KNhQH1MYrykmrwOuGtT/YoL0bRMhJgpfQ+KONx/jcbtjYZ2OD9B1WvddZQJo0UPr/pcrDN/HoFqIZ7t9t9yYvPiiv1/HDu7rrmuWWdeCnWZ0vMpgGyeq+7I+NqIL3FaInU265JVsVrP0SXBTcXBhb3NUO2Fb4ma5jlNveRhEYfND1OPxL0abvn2AFp7wgKdd4NJWITaEHBbGeKTgAx+aBAW2BvDJot9vM3adzcGPeP1nLqj1R325QoUOvMq80WJG+ku2U9zyvGEF/GJ+BzAr0nCXzufTShsbEYgCIJQxoobpt451elUdUekpFa3fte4zU9dBQik036ctH2NaQnl/0gQ/BcoFM3yFz6WDQI33rrWgdml7t6hLoTfa/Tk05b1irYlKV8TdtrMJvnfLkCQtuJuazaGwMh0ONBE2EcibjfSgLMwhXQPuRroITqauETR9Fm2hhHZTabBUopqwZNgMPx1VDrifx4VBU/f6meyl+CJaZGaWVrYlFoK6xZxkOySlSSCEUBRYBpAWRifK5aGoneir2n2dmd1ZP/NUMasvLjugwYCapEP7x42eg/MmTPx/SASZA+pMnn4d2iog/APEjivbRWmg/uBfSR+shfbQS6SMf6SONdPFjMhr+6GMcS0BVg/GRi3GCgVEdvkfr43tUQ+jjy6AxKepChh+kHzAjZKokq2EI77N0dnQrj8mOK5PINvKYzZx8sSr20Uvp7MZ2L5PW7f4x2+ShZnWXxEJbdgsHu3j24XJTMm+9lysp1oCEQimczsS0b24O5YvUzc1JemFkVXsc6BowlHGnxqfjlU8Ppd+K5AEHnE6IvQ2di+OqVGbAjqF4OjblqUs3ucXig7GGbrrC6JjQl2zJKRnamq7w3NSQf/rVDlZV+dlMqdK6YpfugQGifZpCS2jjw+/WpbT9SIJA550BVTH3lXLy+BKQ3R5qMbnKzCd6/nzz8OQlka8eKgNFkPEJCMwnVZrBrWyaNeCHIIdhCyMYRRvwcS0G7uiXdWiQn0iq1RHb/n0J0xSKjw9QZRw/utvfX8ZWTRz3z07enu4fnsnsKjSQ8ud7p78cntcUz1nxg8M3L4+OD2vKT8emwtIsA0X7z0IUZOVilUC9KcI52vX+REzwJAeX1Qg6RT3rQwIfYctLJFUyLOna5Q03Ccx3TwMRvf/qYBlLT0G2hf79V3fl+q4YjV746vHrnRkZTAIf2NJjCO4oo+hCnLM/BDDwBaxDyBZ/GuYh5KRvxD4+fvwfyUDevbs3BwFM/H8eYgquz0Pevfv/TKTywJBOZ3kxb+gfdfxDl+mv4CKs3L15yUEka1NOYqH7TDYyuj8TUVA8vNOdL+nSN+zj2/KJg3sLGqM/C5NgVEAsfWjyfRkGq+yyjYP+0as3J6fnfZd5sFqfxUIO/iAxpGp8Hh/hY7XchA/1/w1PEae3hvh/HScR2St4iCpxb+4h6hWD4pYyD4Tljzu9/KlOJug7CrK6Agu9b3pkST4m67IGNbmWKaiE+7IDVc1lBNovHGEBquRnLf7jgz9m8fuj8Za9Hpld8HpgX2ep16pAKBSEqPyeP591KA1Pw2h6gqaJq7VmSgt1DxWWYkcYiQ60i+o2FR7vaWia7qCwzrpaRJwlf9x1ZBMevhPkSt3k4IOpWFkHoFGIMkdEa6tYDJS6h9ZokxYlhIpP4K62PRzMBE9K/tLYsO/Y56NU3tFwRw1pRky3ODCHH9O5ahkAkr/A4ialoOg6ckIlYDW5Alyb2w2PQ6sOlXXFYVFkeadz+Prk8LUNDt6NgbWL/z/78V/qYq+4N2zhSZGlFGOWH4C63PMnYgsaP1vcCsY4s/J95VF3RoF2/JeDdSMyjqW/6pC0w6/PGlM6DraF4wp6Alwklb4Aq9pRvgG519RkrZpexVr7QKo2Rr32V8SycoPmPOMPFHj+vMJXYz1jjiKHfTFTGZ4l44yP80VmrNvByiFUk6bLavhUmlat2ICCHg7V1bqQRhyQluxenVmhJ/AKCCIM9bwpVwuCui/GPS5UuRcSJBghlVfwFhyDuVbYxNvHj4gYbvXOcMa8ALsW8A9WDI4LOhMIdMiA28HgrmIL69wmk0l+U4tzbABRTueyGt95hp30KkJycUOQhleN2Y/UtPumyIe0Vb/ccBB0dqejjWtskDYqAjTsU5sFFWM3aMTh8gTXxLX6Wv4bnUnGC3kkgeAE4SMIuLjeiH5c/yBiBefv/60rRI7hMtocRpt5FFY1hJOHmlpxGwPmGO/v49IT7amsz5C1a0VZuZ3jf+3crQhIWneh/0202PNE8GhBMs/nt6JlsNs6/5lkn+OMnv/55vPjx8CMvnv3Z53SoMXAt9MnDgWw7ak4DLjaRJjNL9cNdDuXo6HYHNGAgtpJIGapJwN4vyZTTeLNVZJF0ADpzqGJ0WfRBItCZ6niQK7z0XDpgADQkxris59f/LNcjMfpR1Hz9O2Lv/ffHO+dvzw5fYXuwqdiX7n5NC1vyy3wlNoWpdFXajuP1xjLOAj1wzvW73KNoa2htiDjZ1NtkdFy0/dfSfWO1HLiZ08+Of2UfIqSdrm4aGz9vpk/2hJEKUYjznpOG6jCsG3Iz3u2cXBw+OaXw9dSKIo34a3X9qM7rTJexr1WkEjVeLvxyYt/PXv7Elz6o9Urw2041N7X1bDUsInIiaOwhmAfFtJdb9IAA3/Oad9YMO97pWTwVa8nPUfSLIe+YvGaxrmzfrOrJMM6Q88VBpvSdzc/8a1VpauG7dQNm5i75uOiNRVsYQVD+CSDP0AYgVk67Guv96T+jjhECWYBNkjjN0f7gOn6MFVm8cZ7p1IjOiiU7lOk6KUm2nt0t3e6jOC/6PMffipFKv5UOthlz9SVoQFU7WJYmpwzX8ErEnlXZ5o1s172zuTChd8mDMgS0uVdpCyjAirIDwusByF02ZHPfZyev2K3KkQCgwCSSVyQJX7qhlggEplFYSacCyb51auDaPPVy4hwL1vWzkDXJupwE3oONNgxKWEUs7IAgmbzFetTILTPdNtK1I0vh1rdHu/vs2kVEx6a1v39MH73LXr3CXb37a/96unFrr3pRQi+Qfdfd5o1ROtMs47TwaY5mOYoA3i6ClGDE7h5ENs8towRE6b0Un9Co0vSnqEf2kmfkQK8YXxzeiLwdNbHSTmMeKKeE3e21pghnxYckh2aDCXLx5dPnsQ2jRPtu3dhqn337n508+7deoSL/fuUi2B8Gxi+MvVqoNYiXwWRQy7v3rlTNozaw9ksgjNZ1N7XBQ80zxkZnnPAec5BmOcchPHGLqOxXPVEHQQ5zEGAw9y/s687Iwfrz4f6JtiPraFEfBCYq4Ojs72zV3x1CwH54O2rNzgmmV2DRlLAQLg5SstBWSZT8C+5uSmdlJoaDm2MTIZnSmCgtFHDJIs70kNS981ZOjEJbCjHB/58ft3ZOQ5h9fhQQTqeJB9jm+gMfRK1jZsHyObTIBKwd5GuAHZH4s2GKeuAQ+OYSQwexzaPhE6TmROS6U+GvXWlKZTkBrq+oiSZLA5Z4EOR5DnoyHV7Yhf5heQxCTnG+32MDaxKn/2qZRcmlEIywyckfA0JRrRDf9dsBgoEj8soSL4RGGe/fl0KN41TQUx2AAYz5ixji7ulVWFbQG/czP5UZrhT9pX2b2xp/WkL7+IanG8HyzeYO7pFa1nEnZDARgyJzlxUbMa1m6KoVYfo8C6suvrcfr4+Eg8cFB7Ukb+3J0GSg8rQvlQJtsioBBzz6kA/dmE3nWyWV4MiGZGiNduE04+7UWA2yeIsG9n1JL1gpasZ/AhcIoHOtMxNjaN/V8ag4BWbpnLEigTEivhbQ3Y6l+9if9/T+8hFCp6pSbKzUd1G7dtbWo1v3JACHWPOulu3LWzEKDk1y9WODdBztv0yIZ6rfB0QlXD0PBxePeQk23HaAT7F0+wS3Eywqvq5t2igDx4UjCZul5Qs+xe32gcAUdaxItQnAXl7qdzypMSXWjpCzd1TlvJkmzhy301dVSp3T9dgwUk4GAIL2gMJ/INo5dl123FVEBxcVxfsSZu+Gs2ucd2tkJLRm/jUiatV1R12ZTtxIqXTKmvomENeXYLRsJLhVV5Row8xhEN1sr50/RFw3GJG6rjg0JE0eCSQ1ARRkDE4GGlANEBRSQVLCN/9XwzKRFMiFnYd/TM00tJx0n54JwDwHOOjoVE6yOZgVgFkHHLoPhjO0+ukr0qWrps6lc6CckJCt2M8uUuXW/zN6a6CrWsAbUUbFJqeMsTbDLywtrgCaFxHH+sF0KT+FgzsKizBG+lTwwSusmXF1zgXzGsoiAC9VwwyyqV8BMtIJl6kNUlTlKfs6hWejPrBeCe2ZE0wNBLqRTBbxplU3A3lmIo1SJ2/2lQSrsJJ7F/l+QdMnxUJuN5pRbO8nMMvZy5spLeP+MBMhx8hHo/1zcGLt0fHB4enZ9bImQWtQRqhDhHd0Do6UmAbKHjeB9dtfgPNygbEYg8HpdBelGSxh3d+o+yZ3GA00oPk/dfZvADTE8yJh8S0uBNZ9DarIkOa/ARW8HVSXOSMxTIfV6ouy8cIUgGAdy23XMelkGA7DEG7hp3CHZRflXNbFsTPbICQRq4PbQQk+EcvkQP7vmLBlktC5S4k9e7RhHX3ErruHE7yrGITWIfN13J4Mw8reaHnsqs9WuhwzAghtTPEBDQw7FizL11KsBcMxihDkLbsFqt/Sm7Qwwd9ss52VTtOoUz88EtJV93w3TTFQ2arMkP5STRQNfnSqWA7fAmhULZrxAPwz3mjHYjhfOxEyrkQ8TNmygixi5uyu5128LbcTuI1lwQwGpdujZCKGriOPWRHaMU/E/TH45lyR1VflG2CpBfgUfXcCStJc08VvbsZgtBQyapRSJJxByJTwe9G0nNGhFkyJFnlYLBM4we3fPgJi9Oj2L3u2SVUuXe/HKNaRDEBfmHPbnQsk2wRhvl1WR5x8vd5HC8yxwTK+yo3P8EJQY7MMzoMFpOOcUPYjYPZMri7yyx5UWbcUSElqD+49uQ+1OloAaLTOUvB2PuF9roo15IzALZjBuEI+EIlS9Z4K/NDAgYxqqnMDy9Ilw2GoQvGBAzTbE1rsCSqm4PjiyyPXqgb8u5EfrQiaaTU4mMjU29jM3tY88I2R7x0LIQKmxA40oD9oZVSlqy0qIsPlqaDD4k4x00GeLSBLDBbpGNYgpE8WrHBQ6D2JZh7xe/fgxXjViCU1azIibs2fgJp14aOUjXRmlqcMLjIrjNxDmBZQszLiJtImULaSSIWgsIyxF+4QYVzKMoFfKdEGWrFBjSMrDKDpKLXTnoOqYhwSIpUhzaE3HZdCEU79fyl180VhBjgcOhYdcBg9CmMJ67ApilMtgRdxcTZNnRe0TmYVPIsKRFKB18yWwNH01bBFirrzGMo3IkDpRc/0H0WqT0vu6S7um0ajW096vWqUFDoZlRSl5POAqSB12yddYcxLS+Bnr1iUj/hPuVwtQ+eB9MQBUEXT7bBv+VbcQL9h+JS2k+twIRyVdsXjCnafPkPCI50nSY3GKFE9mBsdSf5ZTQu8imPviNDKeWzRKpBQr5Cq55wCODcAwg/7wB3U2qFkBKCTCGtJ4OD96dpWYrpbshP5aqMbBVWxjXPf2RR3OeJ5boKsmniB8uHehtipubqmGTK4usxx/xSUQO+vCPO+oAnkLTfBhDhli4NpTR4myUfwU04ToSY/GKB0kKkRTuIIwOPOmVbnktxOgtyJKCIlRHf3fgcNvCyfNGsvq1KTiZQoVWmgCiIP1TQWjT9lQlydC/cs0CkYZDFmEjbHovtc55YfmvdTVshh0xVD4mJNC2B6OiZ88AV5yY9mSQPd8+Os8xajEFcd2SUcpIIaO8479E9/uyxL65L0xF++yS15myhWwX3j250YFtKLxwTAtd11h053/zRHGgXa9amVCGWJpLwhg0lZFeYzKwiAUONqpj84zHTMNGyNUq1jDwSFBDtYsTetS5G1TS5AFW6KMBAcXYGCcVi5KtOrLaThB2m0o2fvx01AqlPIhKYaZGl/6GlEJzXwRiUVRrxDt7pHPnFwVNjkeA9WSk2LoNAq7rlwYZUNqtjCtW1tCpKUTUPqtdWM8Ry9bQDpoWAJlPWha45bVY1VfCWBeismkMrrkjjVFWjpqm0qzVHLxY9baFGH+AcJUBWJos2FCG9foJc4RuizCa+kojJ3SS+NDmUiSJ6PAQBZk9G37YG4iCk8E8+y6pBQE1EaINqJcPMebQxZzOlmDQhvQhYDfLbYItdqMBdsv0OHny92E2VrKMaJhsKjUUc0wKMPUNLOSZ4ks4X89liLg+s0XbFmXzFaRwVkX0xz0LQ7HOlTVv5RyS9WPDoXvrZ3GD9hUSBCIzew7NcFvJoTx3ZVMXB4c5uiPpBeQcG7ztB1wmYozcx7pMnqoSi8hW8jCm1uGh8X9z9/l78r7Gz3YXQUuCvpu6upUlq0TpEFdIMajHCTEhxFfHH8Fg6FvVb0ECRjGWpkE4kzeZGWBJnOf38XVNZK8JrJjHnMrqCGJCJt2eU/PDskqrm5XtH9/4qHeuKVQ4urHsF92xV+m/i5KTzFv23+LbJwHWafCfPR7dGS16dAMVIFPArupoWohAoHv9Nx7oNKwTk88GkH1LryE+uaZ1fpSUpDJAgBYwb8feCWbtt4TF4Cc+CFTUQHQ9ZXeBJKEHNbdwVrfA+QJ/nNbzs2WNVyCXDhpr/SV4ICPrTQfFhMQP1n+4L3q1qRw1xk0edCK0VTeHjvAhuw66I7zcgllFqo/Osd+iocpNQdURREpO+X6vnvC2+J/prG2N9JR/nBPF8zEgCxrKJ7YCCEVRcPvmUgHtGdWfIHZTC0MgscIfRsA5jcLUgOzBkIWtYeQhVTvNkSll3WFXaVV9h0XZ1LTGdujN2phXDCKQj6Oc2PpTpRSkHu7pO6Nioqu87rIlBWaUyDoOJ7b3wuvFezxqVSJEM88tMrLKRtZtAoWJplAXqwT70BOoR3WtARVKl+kOo+JthX6kuBhS/lHoyE1fcgqTi1poIOtgke+GsS9JVYemHpFIScrSQToRZUqmFRrhoR4OKCyqA8stjHB0DQt1/B8Tar3Th6eaha5i6a2OrEFexD2FS3QqMaD6DYNCzFFCMWssuvVScrDywNMEZlh1cwLDTDbzzUwsXScmOULK4ue52m0fqwiJq3vwCjrMdWdpXTYXhVK16s1NzsRNQTa08oLrXHSY8GnoCFP9JSwhcLZMblIBB36RCqKUTeVXRcC5itiNrJURvZNglGFFQ1faNjKHpc4a6GzUmFM05+w3RkCxiO1lk2HpitmFynhZCgkGLU027GDOXBSBuaU4v/9ozuMGZDj/qNJaO/faU+LnvSrvhUXnVaQW/beN1Qk0vd/1m9OtVFdkGsvIOBYjWb8mVwtmEr9gKvDnzNgX5z9FkVN9HERLi9P2ckPdat3refREhj5V1vcs8Q1Eaa6JYL3CEYQOtvjRbcb2ouDWV+SqrGlh9na2SoAXLSSdK2AfjW7s+9AUzeAumN8xqXbSi/OKfTe+O2bK+wLqs0nRXXuvSteffhWDZ7tNem0uzIkMOvxEeY8Bgta2cHypLLGV0RjMZ3/dsRNbb9tfe+F1VamDKa4SFmoVCUVrJt1c4rAruCVmeuWaZOsnnr2CLbt1CyVSKpweK3w0m6XWyExohlXTw7AmgU4LbYJ2tedQM7yIEiXrLqOL6Xrmae6aKbch3PMONycjbmpBHGmmTdYYqCWxHJvwyyS8Gk4NSm5zVRjgFcRgTIh2j0yMseyoepVbGqVOmBZu4FGBBFPa5EOGp02jzngk0YyCr2g1DF67iTirfve6QqW3QyN6k86udRry1sRHTFWeaRquBrapDkjWmgWDLRRuHoGo2K5WWUfRGjQQ1BaiSdDSHTbzTzzDL9aXE98N2abVUHJ+j/CbDeN+LQpx9RklZEUqDGOsKNOILzP4knaZKofxXInbxJwe6dMI8jgkEo6+65KM4jO00oN9m9MMPxOXp1eDHv/6tXEx7DCeino5Xffbr3o9uwOqLNMPliO01wbp5VYMBWcKdvbBsIUZapKDHPD0C3BG5s0z6ZTmBy9FiAnJVMdcEdDWfz8rO1lZM6bacCfgSZt4Jd+9CChIEUggWY5WKsSUxOepom6ODqkG4GVYUvU5EqV/Pz99ImATQafsqh/mGXzJMiYK9o3/IhQJgc9K0fgYlxYR9CnojhIZg58W+YcWCSzTxW1aFN0FuZXRMKFWHkN30shUehAwB+U524oih1fOqfG6fIdrR6Aa9ztE1HHasKsvqVSQj6QJOlnAqTtpWg1l1stToURuEmaVTtW6IsauqUbkQHc9xlTDrpiOsJyAAQX8k9S2BkTCe56uZpKBh+IgeTzcWO7m0cuo5jEXJShz8TvW4NsFPveUjShdTJfuwJSqZURWOz3h44c+Z5uqJDXCeCg4XPdhWdGz52WqQqK2TMmqN8qwWLs76k+w6/EAmuC2rEFpeXGlY147TyKpWw++i5oPyg7Ksg5eBs6tBmVAdS9LmZr3ObAeHhvGWG/KqVEWvng8+JBhOHolRX8BY4CBoc6fzBoNWwxjuUdnte36FvlnzjD2dPXz9WzeWAT7apRi+3LJElyKpf3b4Zu907/zktKZNcWrAtx/+JSm+WOiqDdW560SvAxykmj7U85KKLpx2RMtVndZ0AQ3BOxveB0j/KrHq7lDnw1api6L1Zx0eObWQOSCtBGEtkFJxOI45ZKTyNDAeCh495bgLlfFGjyUki8uLW/cqnAWURWioGCOqgaUNs9bnfJrUjjfHMQq9elx+SxoWtF+oDkDjCHGxYD3w3FBih+0aHGFOwWDbBGBSGYjZVZHIC24JOPxXMNO4HQOrVV8e7kEIn92QQxh6Po5lPx3BzYTgBSzezEb0WEL8OJaGUKpDKj3Iu6/ytpwnUxJ/ZHglynWgparejpPB9b06s3ua6HP1NvGS2SV3otii0AZZWb1ZlFdmVN6RgDtlIFf2lTG3WdRtrYF0I2+7BJHN02xBXkyaR4c6y9W7ymZBiSEko2dAESoRFEAVTMbSnS1bRfxrPfJ1QfmZuJkw1LCGMURA9MKqATCr5SH3TODRq/eEMsEET+TS8vJc1BoUo6DETM4tIApfDIYf5sVgmHR/7LnSsYsvOZ9ssI4RAcbNAUmxpfshMZLYa4DKq1HPwl62s1qu5CsD5JcqiQfntboAb0j5XWg4m02IykIlg431kwzs3kc767daUSXc/GWRL2b3kCLXqMc7gpOz8XrRWKMHCb2pUle0rm0LRdc00RmOWuTjapp73/1TliLOC+43LzFjH/1Jwb/pJ17ETCYkZZKxj37pfBLb+870g9hD3O8+7X56TT7E9ki+iin76I/5Z+F88mze7zxfDK/0N1GCyycK9vgvI8L0ZbJ6ayLVBIpoNjY+3FDyoZoD2PFh6ZXWpJI9bPFr122A+q/Ui57ns+PkOgHNaPQ8qCWdSb8lfSk9kQ9PW9qmuWgrbT+Dq2GwmOdwBGvoH36TOgde26iftSQNGkQyPyMhyrlp5tBHy0nP7LX0ucicNG++HXcioUmXmKMz7883clhSHLWhZq7vO8M6Vk5SPcWeIrxlvdP0c2I5Jx3PeMpyWhhFDftZO1nyDG4if7S8LBLnxcsc1dQbX/ppKkx7sJOKLBPw2M2AYKZumo5t+BWJg5mOUay6jED7OuKbYtUWP1yU83wq3w43jLjh0pUOCiWFFC39PBGnERqxUb/9Z+BVRfJz3GB5/MHJZwue06nqYJewB3JpR5gaikLo3cV6RkggJM8oNyPA9RYjmyDBVhW6yqE4ZJyiCYO61x8U83Q8AKv+xsVijs8KmDeoptuIBrIjDUKatO+wcgpACUq8ClSN6wpwzZJXzzURzSugcnJR5STOc12pe4pnhaBXDJ+0tSiLLVCGTsQXIF2kncG7P8kcZUguWTxqKL7aiWytZtwkIcXkgAybXgf/9mgJJxuG+i/GvAGkBvtqoBWgHslcjXUwByGevgJIil1kmH2mooe3On/NmV09atPjGpuKDJc64Eq1QJul4MzZ3GpY+QqVWwjkzpWzQ1Rr4G2X1OUI6TMRgy0uDH7WWNUNp12tGHrmGxsbwBqhrW44wisvuneaPsObo02DWRR1QQNLPMIZh3C8YFs6ACF2nzKBxIgSoJBRfkyGDd5Ey20Sl2wfdb2+jxT/er36Fh2GQCQJ7hDzXh4bU3mwxBef5YfS8dWoaZ8krHnIjQFEUDGhPefjyIayrDz38oYRnJU7pvETBsX5egULfIFz7XiFDMM/V9uOdvGzLuKORjqq8FWJsKdIJ91/j8Gyje6fZto9l1rYOaLhve4ftCtGRge7WDlyQ7jumsYQgRw+kU2fnWxH1e9NmJihx6vWVyCDShe1GAyjnaXK7bIiXS3FgBijcKrUVJ57z7B0s+v4cLSPjDmi7AV8YDJ2JcTcSwsBlmUoHNK+YN2F3ecJVpKObxvBMVEGLHiH7JCeJTEFbRARvK4toTtW+uIZWRY1YULZu0+sA2YIwDBsy8vH3kscBxkeGPxVG3rR0PXU54jPGZhQOefXe11LVhbVJmwB97ZkMJRi7E5jX4va3QZ3LZvRU93wQXL7Oklc2xHZ6+rgDggG/KFFaKwOQrgd2cotVCxKTOnK7ZtObUgbHhJ5QmhQpKhnnNjpBbEVIBpTx5CNV7JuObFAxtYbXkCbQjiJubHXab6X6WCrwFxIi5zXmEYhee0G0Y8Ea5Mwtifa2QBpGysEbmOD7UsWYpt3WpPZvSbxFgAp/LkW4UJmi+esBx47z/uEpBq2tCI1aba+0lCV24pKR9uONUK113E5y4pPo4+AfMjlfn1S52IXuAx0DRJqBSbaCYe4fgEFsdQnWOozLKXjNfaCiOJXz0yfChdrMPRAvXrZWH2DRrZWOB5clPkE/CvBGcS9AYf7trr4qQTj8pr5vyJ4h93Y6by/6TR38Cn2smqO5INvaqq3tYYBjft61btAsq95EdrfG+2NnWbjeff3n3tPfm6Kr+YjBjceb+F0MjL+AgSyHz1rRY9+FP//CymLjxWhIElDA674uTRh/5m/mICioq3OVACTMUM5VUt6FKioNbwdZH4VvG6rqIF5FQskirp8qBsuJuXYmz11xdsXiLz7dP0pusZtM66cx65Cd90mpeeu7rJV39hipNno0/BTNOzGUdyDgBNCFBoqS9zHoN55/F78eyxEIrix70TDaGnv1YNdj0CimoIu03W0jBSDNiqnZxDCs//6/NfTw72DMzBXQQJ6P3rCaUaZ3z16BjrvNDBs/9IXSef0Qh7VOx3R0cujX7ox2IL28zLuuRO9NUmzxcctNs2qW6uDiLeAKW4NZ4s0G+dxs10OB1lj63fFKvPifbnR2WriHbjXwbS8SbNP4cWMOPnHzTQdRqJxeIUcvV5ML5LiZHycXwp5Z/JGd1FGm8iS/oHIqiy1jVjkfVQi0kWmBnk0KFR0Vg6ogH44n0SbWXR1084ExBKYL+vSt1QNTvSzILlJpwPjvJgO5shZpVETd8GFKdZWwmGNyjNi1aqDV/u21DJqPNEJ2OBm9GzZDFn5cDjxkYiU6uAGt8FvzJSGpCsYcw/eI8qP9+/jkFU5RD3ZkQ2gylNZAOmmd5y2yVw4WpiabR1t2QQrLeSZ8n7WfW4D9mmLSb395NKWsp7CONJYDN6fEITZqtJZrmssrYbIzMTcQa5n8qCIKZkMZiU86EmnSUN92E6vxIaC0SxUTrQVNf72NNqI/va02XS4lSqxua1qQSH8jykimMNCOtQi7YmWKhvSFVgrZSJEEnR7r0q2hwmxujd2XMTQXiBewsR9RdonHYL6scDyKgqbstEWwLu7hqymQVVkOa1okhVWg1oSSzpmHMbnLuB01xO0agUxQotKxHp/0+ygMLNkdBX3H949erYU//mROxDw43xLflHtZsBfeitpdAbP8qh/J2AKjelYeiqyw1Gu8IiUj5cmC7iXffzYJNqdzjSB56C+2BwTXLnww3lDhHla8msKMaHceMQ3Ad2XmMnH4n9PxGZQhymvOPTg8gkDP3Tc/b3Te/K+8f7syfsmbMFCAu2oNEhsvvd2JUSIEM4fcTs16UyHtd3e6ESeEAv/BIoUWp1GVOsCfFVE8UoxGHwJ1fihUwqGOOOsy33GEZygaqM36CdIInh7xBSKqMQLGq7X6Ww+T2vjsAhyCdIOq/xRbV6v3Qhq63Wr1qq9ujaHqX7Q6ZjfJfaNhnS92D+yeOzfarD7GGmK+KAR6mqdJyCV9wve+0/HxT/xOxDw/KCcZbzOdRG4t8TXsKLJMNP+j0WCh+7/A3/ZUy3Ti3EE6T1wPVfuGpIbT0nhiPe2QTyHOCuJOWgmcLVni/LK81/gDqEazaqRgP2Kc9qyPpTd05ZADXvyGLKrb7bZ1tUHF8vGnps/grStxu0tcWaTn8uY+EBAw1mQKN1K3iCofyfFPNYRw2wyoaqSlBbQTQbTi9Eg+AaUCLO4B4eF2VoD/ZpzntSg4NFLxVOkRzB6Hql4niBH6VALHZr9aMPTKTh4ssJggmhFaJhG9VXZPKlhZeaAuGweXqiziWwLPJXJH7FTGlMBYvgbBhbR0GioknRw4J7aKQr/bFGwfzallxiS+L51BGHeu87FYB43JdEwouviUwqvparzgb8B17AEX1ILToKFks4EgQCQXQd0le60/n5eOg7H4s69ovLmYB88705v+yZRpw3zgU40AqN6MmU9Pjh3dh8SQ8Nw+aOatWp3km977dKwfezuRoNgNwud4gifpmC4J683vClOZn0hWTV0XcwIHpRDgHrEQH7XR+sCbxyitT8zrtS4GWa+eNzd3jb0hEYCLuHpSRFZXr0QmKsRRr10hPFkWGoITyuQVH+bYVYJyHTWBGjwwEKv5L2wi3+VCUac8OBn8KDpg6/tJMpATKdLjOmkSzbF0cl8BFFiV79ZFBx2O1xzi8FuIfEBTT6/Qvczlq2QIUvHMZEbhYzlVkan0sC3yOwJIJu8tsI6gsGZk+B6g1IZ00Yy9Fwr6iDUZgzcv6z801LyCguThhplma9SUEkqPaxSaUSWIUfiR+/vGt3flz1xEF1W3oeIWjSgUdWViDKh3Hbg1q1QuI1RBOb50r2oCiavblOaTSmAmkFkUITotUuQwn1gKrwoOCrepFmI5IXEp+vrT7qKTJh9wj12+fDu+prETFouvfAQHqVXNI+eWKEHr80aSYDMeiuSUcK0xas0mWU+LtYee9VQEeZq0PxRskG5tesknErfmh8yISpWxBqZ384SFWwEcIsLfBk1MCoMpuJJR7tMhNdzD+9cCjPZzTV1Y2wV0pIB4pNljQeaJJsHvGZr79LZvILaEy8IiSSDVdPv8wu4ovku3L38090gEPSC8IQ9Wq45TYANPU0mwZuB0PYmTp5aaDZKZLNx6M3E7PCGYyuPRLIK90rk78BMmhFHz7TAClp+WDDtI3slXCvWQAFPAHQMMKrlm6CmmYsqiD5VAvDUpkm0qNxg+4N5Y4O64ELfX5pIxYcdJmycXR7gmjXqemUmm6/2oKclJmcLsFO0yMqrdDz3JjF8QghhwCAVvN/RHVN812yXIpdEiw0sXyigLqgFw7ZT14yWtBK8vGZ1FNEJmYQ76fsgyKhJaUjTBqeMplciJALSZWjHud5ZzY1FDactrNbZBzVES/1Wb5b11+xW/TzQWgrzXYolnUwvTNUj+ixNf7nVjtOLYmC+Ti7g4YD6eFMk6l7bJJCnTJ2zq4HAMa8v01grZ+LcCT+BeuXxlNhjRs+j00UGN2v4+ZNCmW86o4RrrXd2yNvPiViiQO0ejfxMlJK0WLvvvSQihkJuJ5T4eXwH7pidhTyiQUXdo6F8pt4vrxLz4mIXP8Ae3ADsKkJRQyeLMS2b91IsrEONS+kdKAbNytEJ6DaTrNFVjwpjjBSuiyiPcmnu+69Kc7w2auO9hpPr6lWcu335j98a+NX4lzYgOfv18Pg47qHyhyWAe4wYky1+urSEGNvm0NHKrygg74YkcZPA7zEz2IqbNSZbUtluAYrLqzgEiAClKisg73Xj4XSET7C8wvXyXUUnoU2Q2bwqNbfScZtYAm46I9svxJyccOIg8w73SNg1sdars7+fbS1XUrtoxtJ4nGTXsaJx+EvI/A6InBP1ElWPuoy3AGRr7jSuQfq1Fw9wkd71bctdTG83qGbFmwdXu7LCglF53ZcaA5X2Kv2YZlqHoNIOkhlo7Q28yrwF2ad2EoyGhnAHykqa++hdFXSPz7R1t1PuyBjg3bh/cPjm5dHxYewo6vRNK/qgCN+G17bA0b+LEf9c7/m7OlzSrvEggre6EIdNJIqJpy0yX/6fp8ClcQ/4uxEhqicFxNGY6FbuPW1yGdqFKYVmbzZD5qt6llWdUeMDje4k/2GSfYjcST6KI5PA2D6kv0JNzFo3mgpaWs2BQggn16kZsZlCk8xD7fmTzV5w+Vetke0ALaftU556wB2Vu98wDaQI/6QrWHOtTPRkBgCrsqSF+Tas15KO72s8um4Ahbb5SZM20+1I5YDY8nCpVPocNAIXrc35Gz+KptlsAY9syPnTgXJV6A3CzoRsNBMH8CTaZl2CQhgXeEfe27ksmI9UuVxUba7cWnnlcC0OrR8RadtpxSsBvmXhcTZ4LRCbH0XFLl3wXks0M+y+ScXACRAhoC3kw35dBu4hS3PZ873TXw7P0fPcrhcI0RY7O3l7un94Jsv5uwAydujSKEMDRBw/ulM8/ezty5dH75YxDxXHezTs3yGgAAnBhDxQ0HODeUHAAIcNdLbcil1FXiRhdSPkmV2EjaxF1rvbUIAgZch5FS4AnGCSpgLXvXxu1e6mnOI0mP87f5Pk0JA4ABYBKrHhrVHNSVgTOFATv3HFvr5qWTO3W/6qW24dpxn4bo+0yb+Kcx2wE9bk11wqW39QUur3BRbbwYcAgSlaBdnnQFSnthWIVf7JzHwY5x0h/2q1lq9fVUCUksaBNUxzwlLmmC+DWwbjReLgkLbRdCLAArqCB5y8+Fe7/sX38dEL/d0LEKLZgapDWEckWjXZRzUo7jqVJVfRBUJfHZJzNxyTU++UaiAVgTVDdPEHTrRSDHnbjrLA+5x9p2Hicu9KMuFCo4veyahyi3h4N8HPJZBHgC2BBetIvrhxZ0z1bKUvmRBQf7AoHIZBqkB9spa/TZi+TbQNR773/7HDBcFH5hf30+oNXBQ0MlaS2AArkILwKv8tLpTehvMFMoHCfaigmVEs6cBQu1FRcth/dVBBER4/jc1mUrkrGF7biuop9yuvSuXMC/by6LkTMK9yGYYXobsELZzOU891ZnVNOc+xP0NV/r0OMsDvD99pfu8KLVM0jBQFOBWTLfqXJEvA2lZM7iT5mBTxl0Lz9739/XpwoMQ68KA2o6h9U+CctySo8sBVedQC011FMIrtVB++Vi8mMaZlv2op+QvJRjuN8Ib4q0tnAZnnKy4zhY7/jgttxUxWTaGYX5Reo23dkygphPaz/dicW6ENSkNBh8lEpMcmzs4PTt6eOxpTGzYAncz1Kjd120IQak7FITLU41qux9O9mV1FVIFIPfehs9ltkMiIXslx6seVSrvKcRcJCkjNr/SDB3Un6F751xC0xFA/LZUrcrM825Mku5xfgePnpqCLoPAC/9D8Wat2GYNavxq/X8Pg7BIaDt2OXi1Rh/t69xoAhtmH44Dr4ps1GDpD2LCsxdA7QRCgI5HvDM4ESYLHbcVwubWxsbUhaE6+qHz5+lX/4OT81d75/q/Ntpg8cBqHoWd8JBED+rGnQ8hGBMjFBRTzWxAZyoiZvU1Q5YPPEXjBYthsutGZOG67qrGePBjLOQMradX3Su1F4Ehl2y6GXrsyVJKQL3DOAcJ666dqPmy7ofTaMwQXYArKYb8Q5O3ezq84daOMhGQImYCFi1LdLGbwuGQ0mCc7KiaRNAmIEAP+XYT1i8ShcfDIVBYyBO63VZvoeAYQuE91bpUWzGdcFTK9g9B9lF0YOKulvS52PHbJu7d+lsEptKxcUWA4a5hZbOF1jZDgrhPAjBtZeZ2Lp6opXgt02kHD5YwhfqrZpJveFOUB+qgTjFyr/8qtS/u5fI6b2E+fLWoZO5U/cB80fd5jQww8GvK2F/dOEO0IgqgmVaojAcgwTZ3oH3aRPY4GE7gjvI1ki+o1DPo4G1jPqHF19ADn1abzwMVbrPG+6G7OI3rUCVLOmnYWp9F9rbUi17pgdeiRkpP5/SXUaYyt/ujDwBfK+QdHZ3tnr+5xYrND/Sra9Bq1CYr8nchbC1/v/KaM1bwp03fgUrfZ6XiKa4fneFMrHaB7yVoBJGYjqPQ+YYrB9bjNGiRUrzt1edHXOXH66rpVlLh3uj4RvtBRmCGAdzqMJmoiB8XwSoilX6yX+3okJqd0TQqrOzeCfLgAoeI+B0drsrkSAm7v8YUUF74ldogLmrISNNpwlZ+icrVKbf/dO3vBo0wUuK3XbNYfgopCFnbkfAHWZZKZ3IPDN78cvq731UHb269rbj/UGpfs1Gp5c3r45vRErJez/v4+rhnspL6kbD2WpsnQ7VdZq/6uEbgjh6OAuWe+x907Q8VKrdObN9Vb0frXxT7DsAvhm9wBf1Mto7pNu/8u5Rbg13Jhgy5Y+HCCN84yNqZ5wQ4q6gTJj9NGUScR02t243aVLk8VASs9kyaooedTlCD7Xyw5mcIw9TVGezQKKRYN2wwo89P6wXqcwDXWqr+/+cMlBd9jQ+BqjnMxDqu8DLNFjw/CD4DuT8bsfcCfhZiF4GAeUK4gxrNfj49eCF68khrXWyDMjsiA0axfMtteUrtcXDxooEOq9sZWc6fR/X2r96T5aAlHuvfPHt6Zppfv3/9Y6e7+D13WiMlvtq7pm5P/pqubDuHz1/jZr2uvcjEjX3md31/urVvEycd5Meg7Pjrifold1TlZ/OxBpNPZJFEZ3iiqAiys8NoPChOQQgghhMIfVBGNrg5Uo35WnhQdLRiPC6IjhO26AH051v7zv5v+4+zo3w/XP3fKAX4z6fELlB5ydjodPSt6adngCzYWrjhrn6kxc/tnm6c4KxSRdmcqy3Jtz5BRlNgziiGx0fgQMc78J4KrDqL9/WqIMC8MkTX5+Cw8AOuu7lflfkbPtSN9965mqJhZ0SM9jlOLNZ37BViog0lnfw5UWPf+ODqomZWD6jk5qIHkYP/z0VMHjsq9P0BQEUDSgf3K22yoL9iMNkowczRH8pVRymJhIj2p6UfN0rP3/unRm3N42Pz9TVdWwEUakd/t4kKKc3rbEHzQXGHCb1Eb/pBH4vxhX/IxneP+OM/FDn6dTFgLKoLzCXKGN2hQ1ekcZddiyxmdqPcZP0ep9TWo7lraGHU6zdvuhSnLX7AshOTHINf2H+nLp2rgtlE952jImF0UeJJLLRNursB2C5GiYm0/pXssZHSfKlfqm5vg/3Sn2djpbIPnmeYO9z0TjrZgfM94RWU2PKxyLmAJrCuiKNip1cHQnzarNv0LIXTVRZJg/TJ8cxyXfeleERHtophmrotn5XFUZoLnBJZDW8Q4YAoPK2ecj4s24w2umuTJQqPRnsRGeSOR4dgiwDVbKF1FyDaxo6nHaLqglLvO6JNgEuRNGny186wRb+7hI+NNsDRygg7Sriuu9WhDF7IhGe/x4Og0bpI3cYLxUcOJgLNaU868pKJWPeEuE9mlwcFvZ6pTncKcyfgYu3YjdIe7GUeo1Wz6Jj58OkM+b2g7LyW4MNeb40E6AWe2qwM9Immo4rRr6Qzu6Yo+5RvyzatkMnP7CnDJtZv9Z2TiQki0mDgSK6bZlAPy17+rA0fYHgs5EAzTEb06OdDzgQl9iDzJHMXJ2CQ6i+TIwCH5eMwvDkJxRXOxxMu0L7t0TYR0S+KsMUzu3ZbDoMOqDTr8czl8XI/uRDLmscZKvVbLJiku8nIdElQl12sd2i0hrmuI3GLZeqTKRA/vtLD12+Hp2dHJ65AzzhAxgulcXojd/sGqLWONjUZszGQlm96oFk4bg5By9HTKJI94f5CBcQfQthghqRIa3bPQ6JgLKcZkQkKcfQMz9nz3asDHdcdX66wpgAZnbDw+HwQrptLjPNdx0tpxRQvHef4hGYGlO7w5Do5HRq8RVEpvrBx8Wdi5zBmgXxBdychaHpm0yBpq2Y2v5W0ajuhKveUIUdXOWbWBUNI2tnRhcx93fFSuoNz6+fPDk5ffvYUUwOOjp8uoe4mB4rWWqxd1lYCDf2xyu93ufffdL6xwRzS7udeKUBTALs4ESgAXEltRQwgzmZhvYASgKBfHERrXs2xGaSZFr4mguHb0VpRT0yKQ9M9FJp2eQVWkms1zkK4WGCPtO+j8IkJvSwACCgDb+ClBSeZeIGkbpxpzmrKRRAgB0IKesO3fzrCFQ5xICNsySkv8qUu0RQ0wxxpIxc9mmQBNQDRIGEeUj3VJNRvS83N0NMZRSMfHSIGlHFu8GWOOqgVNqy5lKGlgCrn21onJprHxQmAbe2UNPokBbtVuFomDDLrgB5fVIgFbMkLN/GowF3hNdNvRxa3WSMPPPJvcyiy4ejXYgA/dFPQv6ln0nIDrzpsUnOfJEcuGwXGoRU6JKCyjyxSoRKsKB9mtLQA8QzUOAGqktKNz0apqTTdOWv1OrrdpArGUgG/A0xTce0mgdOjdhuyWpCDFNqwOtAgfACE932K5l0AvVCiz1A8JycjoLSf5pexenNOv03xR6ujyIg8PmI1RnqiB5mKaMRdbUzuG7PAKOgSJzHYkuVMEifWt8ZaEGAZtZUqO2n5tVkuGoacApVreamAk98isGr31hsWzpeqhiPZPjk9OoReUXbbx03Qj5RkQsaKGkKlaGMe8FaFQpFo4h7o2kjIO17AJHKyJ8VqSscOQS2fM0QtDzNgWUrPkTrhSBpQhIZFJepPMaHPvHLankrM1QUlA39ie+HEbXQ2uE6clCPaUK2q5Ru4iBSKsdLrIIvU9uQViBlIcLMpEkxp0ikaado3LYWmyWpS4TiVLAINz/eIUO9TylEcsWoZak15gt7D7iVZVC9Gn34el0e+Dte0jkLW0SLY/SeH4iNvn3ukvvzWxxv8FotAAOA== +#==>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 diff --git a/src/boot.S b/src-old/boot.S similarity index 100% rename from src/boot.S rename to src-old/boot.S diff --git a/src/fb.c b/src-old/fb.c similarity index 100% rename from src/fb.c rename to src-old/fb.c diff --git a/src/fb.h b/src-old/fb.h similarity index 100% rename from src/fb.h rename to src-old/fb.h diff --git a/src/fb_text.c b/src-old/fb_text.c similarity index 100% rename from src/fb_text.c rename to src-old/fb_text.c diff --git a/src/fb_text.h b/src-old/fb_text.h similarity index 100% rename from src/fb_text.h rename to src-old/fb_text.h diff --git a/src/gdt.S b/src-old/gdt.S similarity index 100% rename from src/gdt.S rename to src-old/gdt.S diff --git a/src/gdt.c b/src-old/gdt.c similarity index 100% rename from src/gdt.c rename to src-old/gdt.c diff --git a/src/gdt.h b/src-old/gdt.h similarity index 100% rename from src/gdt.h rename to src-old/gdt.h diff --git a/src/hos_main.c b/src-old/hos_main.c similarity index 100% rename from src/hos_main.c rename to src-old/hos_main.c diff --git a/src/hos_printf.c b/src-old/hos_printf.c similarity index 100% rename from src/hos_printf.c rename to src-old/hos_printf.c diff --git a/src/hos_printf.h b/src-old/hos_printf.h similarity index 100% rename from src/hos_printf.h rename to src-old/hos_printf.h diff --git a/src/klog.c b/src-old/klog.c similarity index 100% rename from src/klog.c rename to src-old/klog.c diff --git a/src/klog.h b/src-old/klog.h similarity index 100% rename from src/klog.h rename to src-old/klog.h diff --git a/src/link.ld b/src-old/link.ld similarity index 100% rename from src/link.ld rename to src-old/link.ld diff --git a/src/mbinfo.c b/src-old/mbinfo.c similarity index 100% rename from src/mbinfo.c rename to src-old/mbinfo.c diff --git a/src/mbinfo.h b/src-old/mbinfo.h similarity index 100% rename from src/mbinfo.h rename to src-old/mbinfo.h diff --git a/src/mem.h b/src-old/mem.h similarity index 100% rename from src/mem.h rename to src-old/mem.h diff --git a/src/mm.c b/src-old/mm.c similarity index 100% rename from src/mm.c rename to src-old/mm.c diff --git a/src/mm.h b/src-old/mm.h similarity index 100% rename from src/mm.h rename to src-old/mm.h diff --git a/src/multiboot2.h b/src-old/multiboot2.h similarity index 100% rename from src/multiboot2.h rename to src-old/multiboot2.h diff --git a/src/multiboot_header.c b/src-old/multiboot_header.c similarity index 100% rename from src/multiboot_header.c rename to src-old/multiboot_header.c diff --git a/src/stream.h b/src-old/stream.h similarity index 100% rename from src/stream.h rename to src-old/stream.h diff --git a/src/string.h b/src-old/string.h similarity index 100% rename from src/string.h rename to src-old/string.h diff --git a/fontgen/fontgen.c b/src/fontgen/fontgen.c similarity index 100% rename from fontgen/fontgen.c rename to src/fontgen/fontgen.c diff --git a/i686-elf-gcc.rb b/x86_64-elf-gcc.rb similarity index 94% rename from i686-elf-gcc.rb rename to x86_64-elf-gcc.rb index d5c4cd3..8dc4ebd 100644 --- a/i686-elf-gcc.rb +++ b/x86_64-elf-gcc.rb @@ -1,9 +1,10 @@ +project_name "x86_64-elf-gcc" binutils_version = "2.35" binutils_checksum = "1b11659fb49e20e18db460d44485f09442c8c56d5df165de9461eb09c8302f85" gcc_version = "10.2.0" gcc_checksum = "b8dd4368bb9c7f0b98188317ee0254dd8cc99d1e3a18d0ff146c855fe16c1d8c" -install_path = File.expand_path("i686-elf-gcc") -target = "i686-elf" +install_path = File.expand_path("x86_64-elf-gcc") +target = "x86_64-elf" path_prepend "#{install_path}/bin" configure do @@ -53,7 +54,7 @@ default do cd "#{build_dir}/build-gcc" do sh %W[../gcc-#{gcc_version}/configure --target=#{target} --prefix=#{install_path} --disable-nls - --enable-languages=c,c++ --without-headers] + --enable-languages=c --without-headers] sh "make all-gcc" sh "make all-target-libgcc" sh "make install-gcc"